Бесшовное горизонтальное расширение диска LVM на базе Linux

Linux

окружающая обстановка

имя Атрибуты
CPU x5650
ОЗУ 4G
диск 20G+4TB

На данный момент мы предполагаем, что на сервере уже есть следующее:

  • Parted установлен (yum install parted)

  • Емкость раздела была успешной, и компания добавила к серверу жесткий диск 4T, чтобы увеличить емкость!

  • За исключением раздела /boot, остальные являются расширенными логическими разделами в режиме LVM.

Установка программного обеспечения и просмотр информации

Сначала проверьте, установлено ли программное обеспечение:

[root@Candy ~]# rpm -qa | grep lvm
lvm2-libs-2.02.118-2.el6.x86_64
lvm2-2.02.118-2.el6.x86_64
[root@Candy ~]# lv
lvchange     lvextend     lvmdiskscan  lvmsar       lvresize
lvconvert    lvm          lvmdump      lvreduce     lvs
lvcreate     lvmchange    lvmetad      lvremove     lvscan
lvdisplay    lvmconf      lvmsadc      lvrename
[root@Candy ~]# rpm -qa | grep parted
parted-2.1-29.el6.x86_64

После того, как программное обеспечение будет готово, проверьте оборудование ВМ, кстати:

[root@Candy ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_candy-root
                      7.3G  231M  6.7G   4% /
tmpfs                 1.9G     0  1.9G   0% /dev/shm
/dev/sda1             477M   30M  422M   7% /boot
/dev/mapper/vg_candy-home
                      3.9G  8.0M  3.7G   1% /home
/dev/mapper/vg_candy-usr
                      3.9G  382M  3.3G  11% /usr
/dev/mapper/vg_candy-var
                      3.9G   63M  3.6G   2% /var
[root@Candy ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x0006e71c
   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        2611    20458496   8e  Linux LVM
Disk /dev/sdb: 4398.0 GB, 4398046511104 bytes
255 heads, 63 sectors/track, 534698 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_candy-root: 8061 MB, 8061452288 bytes
255 heads, 63 sectors/track, 980 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_candy-usr: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 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_candy-var: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 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_candy-home: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 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
[root@Candy ~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb

В это время мы видим, что Centos уже знает, что есть sdb диск, но он не смонтирован и не разбит на разделы.


Используйте Parted для раздела перед расширением

Предположим теперь, что все разделы, кроме /boot, заполнены!

[root@Candy ~]# parted /dev/sdb
GNU Parted 2.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel
新的磁盘标签类型? gpt
(parted) mkpart
分区名称?  []?
文件系统类型?  [ext2]? ext4
起始点? 0T
结束点? 4T
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 4398GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number  Start   End     Size    File system  Name  标志
 1      1049kB  4398GB  4398GB
(parted)set 1 lvm on
(parted)p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 4398GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number  Start   End     Size    File system  Name  标志
1      1049kB  4398GB  4398GB                      lvm
(parted)q
[root@Candy ~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdb1

Теперь давайте объясним операцию:

  1. mklabel преобразует диск в раздел gpt, так как разделы MBR не могут поддерживать жесткие диски уровня TB (пожалуйста, проверьте подробности, parted также поддерживает операции ниже уровня TB)

  2. mkpart разбивает преобразованный gpt-диск на разделы, и вам необходимо указать тип файловой системы, начальную и конечную точки.

  3. Введите p, чтобы распечатать только что созданные разделы.

  4. установить 1 lvm на, чтобы установить раздел с num как 1 и tager как LVM, чтобы его можно было добавить в группу томов vm

Далее мы смотрим, как называется наша группа LVM:

[root@Candy ~]# vgs
  VG       #PV #LV #SN Attr   VSize  VFree
  vg_candy   1   4   0 wz--n- 19.51g    0
  
[root@Candy ~]# vgdisplay
  --- Volume group ---
  VG Name               vg_candy
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                4
  Open LV               4
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               19.51 GiB
  PE Size               4.00 MiB
  Total PE              4994
  Alloc PE / Size       4994 / 19.51 GiB
  Free  PE / Size       0 / 0
  VG UUID               Gcm5Ml-fc88-Xk5q-xuPC-Kj7Y-alfK-i770Gc
[root@Candy ~]# lvscan
  ACTIVE            '/dev/vg_candy/usr' [4.00 GiB] inherit
  ACTIVE            '/dev/vg_candy/var' [4.00 GiB] inherit
  ACTIVE            '/dev/vg_candy/home' [4.00 GiB] inherit
  ACTIVE            '/dev/vg_candy/root' [7.51 GiB] inherit
[root@Candy ~]#

Зная, что группа томов lvm называется «vg_candy», мы используем vgextend для добавления участников в группу томов lvm «vg_candy».

[root@Candy ~]# vgextend vag_candy /dev/sdb1
Physical volume "/dev/sdb1" successfully created
Volume group "vg_candy" successfully extended

Теперь воспользуемся командой vgs, чтобы увидеть количество pv:

[root@Candy ~]# vgs
VG       #PV #LV #SN Attr   VSize VFree
vg_candy   2   4   0 wz--n- 4.02t 4.00t

Вы видели, что количество PV изменилось с 1 на 2 при сравнении vgs, когда он не был добавлен!

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

[root@Candy ~]# vgdisplay
  --- Volume group ---
  VG Name               vg_candy
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  6
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                4
  Open LV               4
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               4.02 TiB
  PE Size               4.00 MiB
  Total PE              1053569
  Alloc PE / Size       4994 / 19.51 GiB
  Free  PE / Size       1048575 / 4.00 TiB
  VG UUID               Gcm5Ml-fc88-Xk5q-xuPC-Kj7Y-alfK-i770Gc

При повторном сравнении недобавленной команды vgdiplay обнаруживается, что значение FreePE изменилось с 0 / 0 до 1048575 / 4,00 ТиБ Это показывает, что Candy успешно добавила раздел lvm объемом 4 ТБ в группу логических томов vg_candy.

Теперь, прежде чем мы расширим все логические разделы, df -h чтобы увидеть, какие разделы есть.

[root@Candy ~]# df -h
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/vg_candy-root  7.3G  231M  6.7G   4%  /
 tmpfs                     1.9G     0  1.9G   0%  /dev/shm
/dev/sda1                  477M   30M  422M   7%  /boot
/dev/mapper/vg_candy-home  3.9G  8.0M  3.7G   1%  /home                 
/dev/mapper/vg_candy-usr   3.9G  382M  3.3G  11%  /usr
/dev/mapper/vg_candy-var   3.9G   63M  3.6G   2%  /var

Теперь, когда проблема устранена, осталось только расширить раздел.


Развернуть диск

Предположение: Нам нужно добавить емкость 500G к этим разделам:/,/home,/usr,/var

[root@Candy ~]# lvextend -L +500G /dev/mapper/vg_candy-root
  Size of logical volume vg_candy/root changed from 7.51 GiB (1922 extents) to 507.51 GiB (129922 extents).
  Logical volume root successfully resized
  
[root@Candy ~]# lvextend -L +500G /dev/mapper/vg_candy-home
  Size of logical volume vg_candy/home changed from 4.00 GiB (1024 extents) to 504.00 GiB (129024 extents).
  Logical volume home successfully resized
  
[root@Candy ~]# lvextend -L +500G /dev/mapper/vg_candy-usr
  Size of logical volume vg_candy/usr changed from 4.00 GiB (1024 extents) to 504.00 GiB (129024 extents).
  Logical volume usr successfully resized
  
[root@Candy ~]# lvextend -L +500G /dev/mapper/vg_candy-var
  Size of logical volume vg_candy/var changed from 4.00 GiB (1024 extents) to 504.00 GiB (129024 extents).
  Logical volume var successfully resized

Обратите внимание, что этот шаг необратим! Если вы введете неправильное имя раздела, ничего страшного! Если он добавляется к другим разделам, его нужно повторить N раз, чтобы уменьшить емкость, что более хлопотно! Рекомендуется внимательно проверить указанную выше файловую систему. Помните, помните....

Быстрое расширение прошло успешно! Давайте снова просмотрим информацию LVM с помощью приведенной выше команды:

[root@Candy ~]# vgs
  VG       #PV #LV #SN Attr   VSize VFree
  vg_candy   2   4   0 wz--n- 4.02t 2.05t 
  
[root@Candy ~]# lvscan
  ACTIVE            '/dev/vg_candy/usr' [504.00 GiB] inherit
  ACTIVE            '/dev/vg_candy/var' [504.00 GiB] inherit
  ACTIVE            '/dev/vg_candy/home' [504.00 GiB] inherit
  ACTIVE            '/dev/vg_candy/root' [507.51 GiB] inherit
  
[root@Candy ~]# vgdisplay
  --- Volume group ---
  VG Name               vg_candy
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  10
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                4
  Open LV               4
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               4.02 TiB
  PE Size               4.00 MiB
  Total PE              1053569
  Alloc PE / Size       516994 / 1.97 TiB
  Free  PE / Size       536575 / 2.05 TiB
  VG UUID               Gcm5Ml-fc88-Xk5q-xuPC-Kj7Y-alfK-i770Gc
  
[root@Candy ~]# df -h
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/vg_candy-root  7.3G  231M  6.7G   4%  /
 tmpfs                     1.9G     0  1.9G   0%  /dev/shm
/dev/sda1                  477M   30M  422M   7%  /boot
/dev/mapper/vg_candy-home  3.9G  8.0M  3.7G   1%  /home                 
/dev/mapper/vg_candy-usr   3.9G  382M  3.3G  11%  /usr
/dev/mapper/vg_candy-var   3.9G   63M  3.6G   2%  /var

Вы можете быть удивлены, увидев здесь! Почему df -h не изменился?


Сбросить информацию о диске и записать

Нам нужно изменить размер раздела с помощью resize2fs, чтобы df -h также работал.

Время, необходимое для resize2fs, линейно накладывается на мощность, которую вы предоставляете, то есть чем больше мощности вы предоставляете, тем больше времени требуется resize2fs.

[root@Candy ~]# resize2fs /dev//mapper/vg_candy-root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev//mapper/vg_candy-root is mounted on /; on-line resizing required old desc_blocks = 1, new_desc_blocks = 32
Performing an on-line resize of /dev//mapper/vg_candy-root to 133040128 (4k) blocks.
The filesystem on /dev//mapper/vg_candy-root is now 133040128 blocks long.

[root@Candy ~]# resize2fs /dev//mapper/vg_candy-usr
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev//mapper/vg_candy-usr is mounted on /usr; on-line resizing required old desc_blocks = 1, new_desc_blocks = 32
Performing an on-line resize of /dev//mapper/vg_candy-usr to 132120576 (4k) blocks.
The filesystem on /dev//mapper/vg_candy-usr is now 132120576 blocks long.

[root@Candy ~]# resize2fs /dev//mapper/vg_candy-var
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev//mapper/vg_candy-var is mounted on /var; on-line resizing required old desc_blocks = 1, new_desc_blocks = 32
Performing an on-line resize of /dev//mapper/vg_candy-var to 132120576 (4k) blocks.
The filesystem on /dev//mapper/vg_candy-var is now 132120576 blocks long.

[root@Candy ~]# resize2fs /dev//mapper/vg_candy-home
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev//mapper/vg_candy-home is mounted on /home; on-line resizing required old desc_blocks = 1, new_desc_blocks = 32
Performing an on-line resize of /dev//mapper/vg_candy-home to 132120576 (4k) blocks.
The filesystem on /dev//mapper/vg_candy-home is now 132120576 blocks long.

[root@Candy ~]# df -h
Filesystem                    Size  Used Avail Use%  Mounted on
/dev/mapper/vg_candy-root     500G  245M  474G   1%  /
tmpfs                         1.9G     0  1.9G   0%  /dev/shm
/dev/sda1                     477M   30M  422M   7%  /boot
/dev/mapper/vg_candy-home     496G   16M  471G   1%  /home
/dev/mapper/vg_candy-usr      496G  390M  471G   1%  /usr
/dev/mapper/vg_candy-var      496G   71M  471G   1%  /var

заключительные замечания

Кстати, покажу фото системы, автоматически монтирующейся после перезагрузки!

Система Linux все еще относительно умна, ее можно использовать как с перезагрузкой, так и без нее, просто для демонстрации эффекта после перезагрузки.

Надеюсь, эта статья поможет вам плавно расширяться по горизонтали!