LVM — увеличение пространства корневого раздела на лету

Имеем один диск в виртуальной машине размером 40GB. ВМ работает под OS Ubuntu 16.04. Нужно увеличить корневой раздел на 10G при этом не останавливая виртуальную машину.

Disk /dev/sda: 40 GiB, 42949672960 bytes, 83886080 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 87245036-2212-4699-9BA4-420AEE9FDF9A
Device       Start      End  Sectors  Size Type
/dev/sda1     2048  1050623  1048576  512M EFI System
/dev/sda2  1050624  2050047   999424  488M Linux filesystem
/dev/sda3  2050048 83884031 81833984   39G Linux LVM

Здесь sda1 файлы UEFI, sda2 это /boot, а на sda3 создан LVM том.

root@mail:~# vgdisplay
  --- Volume group ---
  VG Name               ubuntu-vg
  System ID            
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               39.02 GiB
  PE Size               4.00 MiB
  Total PE              9989
  Alloc PE / Size       9989 / 39.02 GiB
  Free  PE / Size       0 / 0  
  VG UUID               k8gsGL-x03z-MfY4-24EU-yFyD-7jUM-djPvSE

Как видим у нас одна группа ubuntu-vg и нет свободного места, что бы ее расширить (Free PE / Size 0 / 0)

Посмотрим логические тома:

root@mail:~# lvdisplay
  --- Logical volume ---
  LV Path                /dev/ubuntu-vg/root
  LV Name                root
  VG Name                ubuntu-vg
  LV UUID                nBK0Sf-pu53-i7p6-kPdR-a5RU-TGEa-w0jsyH
  LV Write Access        read/write
  LV Creation host, time ubuntu, 2016-10-07 14:10:07 +0300
  LV Status              available
  # open                 1
  LV Size                31.52 GiB
  Current LE             8069
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0
  
  --- Logical volume ---
  LV Path                /dev/ubuntu-vg/swap_1
  LV Name                swap_1
  VG Name                ubuntu-vg
  LV UUID                3y99hr-GmH8-RkqC-59Jn-ftfC-EtR8-KvJj4p
  LV Write Access        read/write
  LV Creation host, time ubuntu, 2016-10-07 14:10:07 +0300
  LV Status              available
  # open                 2
  LV Size                7.50 GiB
  Current LE             1920
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1

Имеем два логических тома, одна под swap, вторая под корень.

root@mail:~# df -h
Filesystem                   Size  Used Avail Use% Mounted on                                                                                               
udev                         346M     0  346M   0% /dev                                                                                                     
tmpfs                         73M  2.5M   71M   4% /run                                                                                                     
/dev/mapper/ubuntu--vg-root   31G  1.7G   28G   6% /
tmpfs                        365M     0  365M   0% /dev/shm
tmpfs                        5.0M     0  5.0M   0% /run/lock
tmpfs                        365M     0  365M   0% /sys/fs/cgroup
/dev/sda2                    473M  118M  331M  27% /boot
/dev/sda1                    511M  7.1M  504M   2% /boot/efi
tmpfs                         73M     0   73M   0% /run/user/0

Как видим под корень у нас выделено 31GB.

Необходимо увеличить место в корневом разделе. Идем сначала в parted

root@mail:~# parted
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p                                                               
Model: Msft Virtual Disk (scsi)
Disk /dev/sda: 42.9GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number  Start   End     Size    File system  Name  Flags
 1      1049kB  538MB   537MB   fat32              boot, esp
 2      538MB   1050MB  512MB   ext2
 3      1050MB  42.9GB  41.9GB                     lvm
(parted) 

Теперь запустим просмотр лога и увеличим размер диска в гипервизоре на 10GB

root@mail:~# journalctl -af
Nov 29 14:49:39 konovalov1001 kernel: sd 0:0:0:0: [storvsc] Sense Key : Unit Attention [current]
Nov 29 14:49:39 konovalov1001 kernel: sd 0:0:0:0: [storvsc] Add. Sense: Capacity data has changed
Nov 29 14:49:39 konovalov1001 kernel: sd 0:0:0:0: [sda] 104857600 512-byte logical blocks: (53.7 GB/50.0 GiB)
Nov 29 14:49:39 konovalov1001 kernel: sd 0:0:0:0: [sda] 4096-byte physical blocks
Nov 29 14:49:39 konovalov1001 kernel: sda: detected capacity change from 42949672960 to 53687091200

В логе видим изменение размера диска, идем снова в parted

root@mail:~# parted
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p                                                               
Model: Msft Virtual Disk (scsi)
Disk /dev/sda: 53.7GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number  Start   End     Size    File system  Name  Flags
 1      1049kB  538MB   537MB   fat32              boot, esp
 2      538MB   1050MB  512MB   ext2
 3      1050MB  42.9GB  41.9GB                     lvm

Видим изменение размера

Переключаемся в режим просмотра секторов

(parted) unit s                                                          
(parted) p                                                               
Model: Msft Virtual Disk (scsi)
Disk /dev/sda: 104857600s
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number  Start     End        Size       File system  Name  Flags
 1      2048s     1050623s   1048576s   fat32              boot, esp
 2      1050624s  2050047s   999424s    ext2
 3      2050048s  83884031s  81833984s                     lvm
(parted)

Тут обычно расширяют размер командой resize, но это уже выпилили,

(parted) resize 3                                                        
Error: The resize command has been removed in parted 3.0

Поэтому удалим раздел и создадим его заново, бояться не нужно, надо только запомнить стартовый сектор, в данном случае 2050048s.

Удаляем третий раздел

(parted) rm 3                                                            
Error: Partition(s) 3 on /dev/sda have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use.  As a
result, the old partition(s) will remain in use.  You should reboot now before making further changes.
Ignore/Cancel? I                                                         
(parted) p                                                               
Model: Msft Virtual Disk (scsi)
Disk /dev/sda: 104857600s
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number  Start     End       Size      File system  Name  Flags
 1      2048s     1050623s  1048576s  fat32              boot, esp
 2      1050624s  2050047s  999424s   ext2
(parted)  

Игнорируем ошибку и смотрим разделы, раздел успешно удален, все нормально, теперь создаем новый раздел со стартовым сектором 2050048s и указываем -1 в качестве конечного сектора, это значит до конца диска.

(parted) mkpart name 2050048s -1
Warning: You requested a partition from 2050048s to 104857599s (sectors 2050048..104857599).
The closest location we can manage is 2050048s to 104857566s (sectors 2050048..104857566).
Is this still acceptable to you?
Yes/No? Yes                                                              
(parted) p                                                               
Model: Msft Virtual Disk (scsi)
Disk /dev/sda: 104857600s
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number  Start     End         Size        File system  Name  Flags
 1      2048s     1050623s    1048576s    fat32              boot, esp
 2      1050624s  2050047s    999424s     ext2
 3      2050048s  104857566s  102807519s               name
(parted)  

выходим из parted через q.

Теперь расширяем физический том

root@mail:~# pvresize /dev/sda3
  Physical volume "/dev/sda3" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized

Проверяем

root@mail:~# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               ubuntu-vg
  PV Size               49.02 GiB / not usable 1.98 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              12549
  Free PE               2560
  Allocated PE          9989
  PV UUID               Bm77kO-pZTZ-Azw5-sPgD-3vKO-Gsii-KvnY3l

Смотрим группу

root@mail:~# vgdisplay
  --- Volume group ---
  VG Name               ubuntu-vg
  System ID            
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               49.02 GiB
  PE Size               4.00 MiB
  Total PE              12549
  Alloc PE / Size       9989 / 39.02 GiB
  Free  PE / Size       2560 / 10.00 GiB
  VG UUID               k8gsGL-x03z-MfY4-24EU-yFyD-7jUM-djPvSE

Видим, что появилось пространство, которое сможем использовать для расширения логического тома (Free PE / Size 2560 / 10.00 GiB)

Расширяем логический том используя все доступное пространство

root@mail:~# lvextend /dev/ubuntu-vg/root -l +100%FREE
  Size of logical volume ubuntu-vg/root changed from 31.52 GiB (8069 extents) to 41.52 GiB (10629 extents).
  Logical volume root successfully resized.

Проверяем

root@mail:~# lvdisplay
  --- Logical volume ---
  LV Path                /dev/ubuntu-vg/root
  LV Name                root
  VG Name                ubuntu-vg
  LV UUID                nBK0Sf-pu53-i7p6-kPdR-a5RU-TGEa-w0jsyH
  LV Write Access        read/write
  LV Creation host, time ubuntu, 2016-10-07 14:10:07 +0300
  LV Status              available
  # open                 1
  LV Size                41.52 GiB
  Current LE             10629
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

Видим, что размер увеличился и стал: 41.52 GiB

Осталось только расширить файловую систему, вот так:

root@mail:~# resize2fs /dev/ubuntu-vg/root
resize2fs 1.42.13 (17-May-2015)
Filesystem at /dev/ubuntu-vg/root is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/ubuntu-vg/root is now 10884096 (4k) blocks long.

Смотрим вывод df:

root@mail:~# df -h
Filesystem                   Size  Used Avail Use% Mounted on
udev                         346M     0  346M   0% /dev
tmpfs                         73M  2.5M   71M   4% /run
/dev/mapper/ubuntu--vg-root   41G  1.7G   38G   5% /
tmpfs                        365M     0  365M   0% /dev/shm
tmpfs                        5.0M     0  5.0M   0% /run/lock
tmpfs                        365M     0  365M   0% /sys/fs/cgroup
/dev/sda2                    473M  118M  331M  27% /boot
/dev/sda1                    511M  7.1M  504M   2% /boot/efi
tmpfs                         73M     0   73M   0% /run/user/0

Успешно увеличилили системный раздел на лету на 10 GB.

Оцените статью
( 1 оценка, среднее 5 из 5 )