1

У меня есть Lite Centos 6 в моей системе. Я собираюсь изменить размер одного из его разделов. Вот файловая система этой системы:

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_hadoop1-lv_root
                      5.5G  3.7G  1.6G  71% /
tmpfs                 937M     0  937M   0% /dev/shm
/dev/sda1             485M   32M  428M   7% /boot
/dev/sdb1             5.0G  139M  4.6G   3% /disk1
cm_processes          937M     0  937M   0% /var/run/cloudera-scm-agent/process

Я хочу изменить размер /disk1 до 1G и изменить размер / до 9,5G. Но проблема в том, что / и /disk1 находятся на двух разных устройствах! Возможно ли изменить размер / без форматирования?

К вашему сведению, вот вывод команды fdisk -l:

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0008d752

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        1306     9972736   8e  Linux LVM

Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x8376205b

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         652     5237158+  83  Linux

Disk /dev/mapper/vg_hadoop1-lv_root: 5981 MB, 5981077504 bytes
255 heads, 63 sectors/track, 727 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/mapper/vg_hadoop1-lv_swap: 4227 MB, 4227858432 bytes
255 heads, 63 sectors/track, 514 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Вывод vgscan:

Found volume group "vg_hadoop1" using metadata type lvm2

Также, пожалуйста, обратите внимание, что эта машина находится внутри vmware esx в качестве гостевой ОС, хотя я думаю, что этот факт не меняет процесс.

С уважением.

1 ответ1

2

Поскольку / находится на логическом томе, можно увеличивать / dev / mapper / vg_hadoop1-lv_root без переформатирования. Эта операция будет очень безопасной, если не будет удара молнии.

Поскольку /dev /sdb1 (/disk1) не является логическим томом, его все еще можно сжать - однако всегда есть вероятность этого сбоя. У меня никогда не было проблемы с изменением размера раздела, если было достаточно места; но это не значит, что это невозможно! Многие инструменты, которые вы могли бы использовать для сокращения раздела, предупреждают вас об этом факте. Еще раз, несмотря на это: я не нашел ни у кого никогда проблемы с этим.

Теперь, если у вас есть резервная копия /disk1, или вы не против, чтобы она была потеряна, продолжайте!


Итак, чтобы продолжить разворот данных, мы сначала сжимаем /disk1, поэтому у нас позже будет достаточно места для роста /. Во-первых, мы должны убедиться, что он не подключен - вы не можете (безопасно) уменьшить размер подключенного тома.

# umount /dev/sdb1

инструменты

[примечание для других читателей: это работает только с файловыми системами ext {2,3,4}]. Мы можем использовать resize2fs + fdisk или gparted. fdisk не для слабонервных. Если вы хотите использовать графический интерфейс для сокращения вашего раздела, вы можете следовать этому руководству: http://gparted.org/display-doc.php?name=help-manual#gparted-resize-partition ,

Во-первых, давайте изменим границы (раздел), чтобы убедиться, что в конце нашего раздела нет данных.

# resize2fs /dev/sdb1 1G

Теперь для fdisk мы можем сделать:

# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help):  

Помните, что разделы - это просто границы для данных. Удаление раздела не приведет к удалению базовых данных. Они как указатели на языке программирования без сбора мусора. К счастью, благодаря вашему выводу из fdisk -l у нас есть границы (расположение указателей) для вашего раздела!

Это где есть возможность потери данных. Я не несу ответственности за удаление очень важных вещей с /disk1 без резервного копирования. Перед выполнением этого шага сделайте резервную копию всего, что вам нужно, в двух местах

Давайте удалим ваш раздел

Command (m for help): d
Partition number (1-4, default 4): 1
Partition 1 is deleted

Command (m for help): 

И воссоздать его с (сокращенными) границами

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default e): p
Selected partition 1
First sector (1-5368, default 1): <hit enter>
Last sector, +sectors or +size{K,M,G} (2-5368, default 5368): +1G
Partition 1 of type Linux and of size 1 GiB is set

Command (m for help): 

А затем мы создадим еще один раздел, который мы сможем использовать позже со всем нашим новым свободным пространством, которое мы сделали

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default e): p
Selected partition 2
First sector (1025-5368, default 1025): <hit enter>
Last sector, +sectors or +size{K,M,G} (1026-5368, default 5368): <hit enter>
Partition 2 of type Linux and of size <remaining> is set

Command (m for help): 

Наши новые разделы настроены, и мы можем перейти к следующему шагу


Здорово! Сложная часть сделана. Ваш вопрос - одна из замечательных особенностей LVM, и почему он так часто используется (объединение разделов даже на отдельных дисках!)

Итак, что мы пытаемся сделать, это увеличить логический том, который является /dev /mapper /vg_hadoop1-lv_root. Для этого нам нужно достаточно места в нашей группе томов, чтобы расти! Мы можем сделать это, добавив физический том в нашу группу томов.

Итак, сначала мы создадим физический том из нашего нового раздела, чтобы он мог быть распознан LVM, а затем добавлен в группу томов. Мы делаем это с ...

# /sbin/pvcreate /dev/sdb2

LVM может добавлять любые физические тома в любые группы томов, поэтому мы добавим их в наш hadoop, который мы нашли из вывода

# /sbin/vgscan 

Итак, мы знаем, что хотим vg_hadoop1. Мы добавим наш новый физический том в эту группу томов с ...

# /sbin/vgextend vg_hadoop1 /dev/sdb2

Теперь, когда он добавлен, мы запускаем быструю команду для изменения размера текущего логического тома.

# /sbin/lvextend -L +4.0G /dev/mapper/vg_hadoop1-lv_root 

Параметр -L для lvextend довольно полезен и может принимать различные данные. Мы используем + почти как двоичный оператор + = во многих языках программирования. Мы говорим "новый размер = текущий размер + 4,5G"

Теперь, когда все сказано и сделано, у нас есть две файловые системы, размер которых не совпадает с объемом, на котором они находятся. Для файловой системы ext2/3/4fs [наиболее распространенной] (которую я обновлю, когда у нас будет вывод fdisk -l, чтобы сообщить нам, какую файловую систему вы используете), мы можем изменить файловую систему, чтобы она соответствовала размеру раздела :

# /sbin/resize2fs /dev/mapper/vg_hadoop1-lv_root
# /sbin/resize2fs /dev/sdb1

Возможно, вам придется перемонтировать root, чтобы увидеть новый размер. Мы могли бы также смонтировать /disk1 обратно. сделать это с:

# mount -o remount /
# mount /dev/sdb1 /disk1

Давайте удостоверимся, что все работает, используя df (без диска), и что все имеет правильный размер.

# df -H

Как только я получу вывод этих двух команд, я обновлю этот вопрос, так что вы можете быть вдвойне уверены, что все правильно, прежде чем выполнять.

Удачи!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .