LVM: перераспределение разделов

Уменьшить root, увеличить home

Задача: уменьшить ubuntu–vg-root, а на освободившееся место увеличить ubuntu–vg-home.
Чтобы проверить всю схему, надо сначала выполнить на ВМ.

Смотрим, что у нас имеется:

# lsblk 
NAME                  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0                   7:0    0 365.4M  1 loop /run/archiso/sfs/airootfs
sda                     8:0    0    30G  0 disk 
├─sda1                  8:1    0   487M  0 part 
├─sda2                  8:2    0     1K  0 part 
└─sda5                  8:5    0  29.5G  0 part 
  ├─ubuntu--vg-root   254:0    0    10G  0 lvm  
  ├─ubuntu--vg-swap_1 254:1    0     1G  0 lvm  
  └─ubuntu--vg-home   254:2    0  18.5G  0 lvm  
sr0                    11:0    1   476M  0 rom  /run/archiso/bootmnt

Есть три раздела LVM.

Проверяем разделы, все должны быть ACTIVE:

# lvscan
ACTIVE      '/dev/ubuntu-vg/root' [10.00 GiB] inherit
ACTIVE      '/dev/ubuntu-vg/swap_1' [1.00 GiB] inherit
ACTIVE      '/dev/ubuntu-vg/home' [18.52 GiB] inherit

Начнём с root.

Порядок действий:

  1. уменьшить размер файловой системы
  2. уменьшить раздел logical volume

Проверяем целостность ФС:

# e2fsck -f /dev/ubuntu-vg/root
e2fsck 1.43.4 (31-Jan-2017)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/ubuntu-vg/root: 97684/654080 files (0.2% non-contiguous), 506679/2621440 blocks

Уменьшаем размер файловой системы до 5 GB:

i# resize2fs /dev/ubuntu-vg/root 5G
resize2fs 1.43.4 (31-Jan-2017)
Resizing the filesystem on /dev/ubuntu-vg/root to 1310720 (4k) blocks.
The filesystem on /dev/ubuntu-vg/root is now 1310720 (4k) blocks long.

Уменьшаем размер тома до 5 Gb:

# lvreduce -L 5G /dev/ubuntu-vg/root
WARNING: Reducing active logical volume to 5.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce ubuntu-vg/root? [y/n]: y
Size of logical volume ubuntu-vg/root changed from 10.00 GiB (2560 extents) to 5.00 GiB (1280 extents).
Logical volume ubuntu-vg/root successfully resized.

Проверяем:

# lsblk /dev/sda5
NAME        MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda5         8:5  0 29.5G 0 part
├─ubuntu--vg-root  254:0  0  5G 0 lvm
├─ubuntu--vg-swap_1 254:1  0  1G 0 lvm
└─ubuntu--vg-home  254:2  0 18.5G 0 lvm

Теперь приступаем к изменению раздела /home.
С помощью lvextend — увеличиваем размер ubuntu--vg-home на 5G:

# lvextend -L +5G /dev/ubuntu-vg/home
Size of logical volume ubuntu-vg/home changed from 18.52 GiB (4741 extents) to 23.52 GiB (6021 extents).
Logical volume ubuntu-vg/home successfully resized.

Проверяем ФС:

# e2fsck -f /dev/ubuntu-vg/home
e2fsck 1.43.4 (31-Jan-2017)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/ubuntu-vg/home: 11/1215840 files (0.0% non-contiguous), 120370/4854784 blocks

Не указываем размер, что бы занять 100% свободного места:

# resize2fs -p /dev/ubuntu-vg/home
resize2fs 1.43.4 (31-Jan-2017)
Resizing the filesystem on /dev/ubuntu-vg/home to 6165504 (4k) blocks.
Begin pass 1 (max = 40)
Extending the inode table   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-
The filesystem on /dev/ubuntu-vg/home is now 6165504 (4k) blocks long.

Проверяем:

# /dev/sda5
NAME        MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda5         8:5  0 29.5G 0 part
├─ubuntu--vg-root  254:0  0  5G 0 lvm
├─ubuntu--vg-swap_1 254:1  0  1G 0 lvm
└─ubuntu--vg-home  254:2  0 23.5G 0 lvm

Перезагружаем сервер и смотрим:

$ lsblk /dev/sda5
NAME        MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda5         8:5  0 29.5G 0 part
├─ubuntu--vg-root  252:0  0  5G 0 lvm /
├─ubuntu--vg-swap_1 252:1  0  1G 0 lvm [SWAP]
└─ubuntu--vg-home  252:2  0 23.5G 0 lvm /home

Готово.

Уменьшить home, увеличить swap

План действий:

  1. уменьшить файловую систему home до 400 гб
  2. уменьшить home logical volume до 400 гб
  3. увеличить logical volume swap на 100% освободившегося места.
  4. увеличить файловую систему swap на 100% освободившегося места.

Начинаем с /dev/vg_arch/home:

# e2fsck -f /dev/vg_arch/home
e2fsck 1.43.4 (31-Jan-2017)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg_arch/home: 869974/28696576 files (0.3% non-contiguous), 49206901/114755584 blocks

Уменьшаем размер до 400 гб:

# resize2fs /dev/vg_arch/home 400G
resize2fs 1.43.4 (31-Jan-2017)
Resizing the filesystem on /dev/vg_arch/home to 104857600 (4k) blocks.
The filesystem on /dev/vg_arch/home is now 104857600 (4k) blocks long.

Уменьшаем размер LV до 400 гб:

# lvreduce -L 400G /dev/vg_arch/home
WARNING: Reducing active logical volume to 400.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg_arch/home? [y/n]: y
Size of logical volume vg_arch/home changed from 437.76 GiB (112066 extents) to 400.00 GiB (102400 extents).
Logical volume vg_arch/home successfully resized.

Монтируем, проверяем:

# mount /dev/vg_arch/home /mnt/
# ls -l /mnt
....
total 88

Всё на месте. Переходим к root:

# e2fsck -f /dev/vg_arch/root
e2fsck 1.43.4 (31-Jan-2017)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
/lost+found not found. Create<y>? yes
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg_arch/root: ***** FILE SYSTEM WAS MODIFIED *****

Увеличиваем LV на 100%:

# lvextend -l +100%FREE /dev/vg_arch/root
Size of logical volume vg_arch/root changed from 10.00 GiB (2560 extents) to 47.76 GiB (12226 extents).
Logical volume vg_arch/root successfully resized.

Проверяем:

# lvdisplay /dev/vg_arch/root
--- Logical volume ---
LV Path        /dev/vg_arch/root
LV Name        root
VG Name        vg_arch
LV UUID        hOB0M9-dFy4-C0wI-Brwe-faqp-5wZr-tzkQFk
LV Write Access    read/write
LV Creation host, time archiso, 2016-12-21 09:29:33 +0000
LV Status       available
open         0
LV Size        47.76 GiB

Увеличиваем ФС root на 100%. Для этого не надо указывать размер в команде resize2fs

# resize2fs -p /dev/vg_arch/root
resize2fs 1.43.4 (31-Jan-2017)
Resizing the filesystem on /dev/vg_arch/root to 12519424 (4k) blocks.
Begin pass 1 (max = 303)
Extending the inode table   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/vg_arch/root is now 12519424 (4k) blocks long.

Демонтируем home, монтируем root, проверяем:

# umount /dev/vg_arch/home
# mount /dev/vg_arch/root /mnt/
# ls -l /mnt/
...
total 60

Перезагружаемся, проверяем:

# umount /dev/vg_arch/root
# reboot

Готово.

Опубликовано: 21.01.2021