Linux: LVM — разделить /root и добавить /home

Автор: | 03/12/2017
 

Имеется машина с одним диском, который разбит на два LVM-раздела — root и swap:

root@ubuntu:/# lvdisplay -c
  /dev/ubuntu-vg/root:ubuntu-vg:3:1:-1:1:59809792:7301:-1:0:-1:252:0
  /dev/ubuntu-vg/swap_1:ubuntu-vg:3:1:-1:2:2097152:256:-1:0:-1:252:1

Задача: уменьшить root, создать home в отдельном разделе.

Загружаемся с любого LiveCD (тут Arch), логинимся, проверяем разделы:

root@archiso ~ # 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  28.5G  0 lvm
└─ubuntu--vg-swap_1 254:1    0     1G  0 lvm
sr0                    11:0    1   476M  0 rom  /run/archiso/bootmnt

Далее:

  1. уменьшим файловую систему на /root
  2. уменьшим раздел ubuntu--vg-root до 10 гиг
  3. создадим раздел ubuntu--vg-home на всё свободное место
  4. отформатируем его и перенесём данные из старого /home на разделе vg-root в новый хомик
  5. обновим fstab

Устанавливаем lvm2:

pacman -S lvm2

Проверяем:

lvscan
ACTIVE            '/dev/ubuntu-vg/root' [28.52 GiB] inherit
ACTIVE            '/dev/ubuntu-vg/swap_1' [1.00 GiB] inherit
ls -l /dev/mapper/
total 0
crw------- 1 root root 10, 236 Feb 27 09:30 control
lrwxrwxrwx 1 root root       7 Feb 27 09:30 ubuntu--vg-root -> ../dm-0
lrwxrwxrwx 1 root root       7 Feb 27 09:30 ubuntu--vg-swap_1 -> ../dm-1

Если разделы не активны — дёргаем vgchange:

vgchange -a y

vg-root находится на устройстве /dev/dm-0:

[root@archiso ~]# file /dev/dm-0
/dev/dm-0: block special (254/0)

Выполняем проверку целостности файловой системы (без этого resize2fs не даст выполнить изменения):

[root@archiso ~]# e2fsck -f /dev/dm-0
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/dm-0: 130010/1872304 files (0.3% non-contiguous), 670621/7476224 blocks

Уменьшаем ФС:

[root@archiso ~]# resize2fs /dev/mapper/ubuntu--vg-root 10G

(resize2fs по памяти сюда записал, но вроде верно)

С помощью lvreduce — уменьшаем root:

[root@archiso ~]# lvreduce -L 10G /dev/mapper/ubuntu--vg-root
WARNING: Reducing active logical volume to 10.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 28.52 GiB (7301 extents) to 10.00 GiB (2560 extents).
Logical volume ubuntu-vg/root successfully resized.

Собственно — тут можно смонтировать раздел, и убедиться что всё на месте:

[root@archiso ~]# mount /dev/mapper/ubuntu--vg-root /mnt/
[root@archiso ~]# ls -l /mnt/
total 104
drwxr-xr-x  2 root root  4096 Feb 27 10:25 bin
drwxr-xr-x  2 root root  4096 Feb 27 10:25 boot
drwxr-xr-x  4 root root  4096 Feb 27 10:25 dev
drwxr-xr-x 89 root root  4096 Feb 27 10:25 etc
drwxr-xr-x  3 root root  4096 Feb 27 10:25 home
lrwxrwxrwx  1 root root    32 Mar  8  2017 initrd.img -> boot/initrd.img-4.4.0-66-generic
lrwxrwxrwx  1 root root    32 Feb 25 02:01 initrd.img.old -> boot/initrd.img-4.4.0-64-generic
drwxr-xr-x 22 root root  4096 Feb 27 10:25 lib
drwxr-xr-x  2 root root  4096 Feb 27 10:25 lib64
drwx------  2 root root 16384 Feb 24 14:27 lost+found
...

Размер раздела:

[root@archiso ~]# df -h
Filesystem                   Size  Used Avail Use% Mounted on
dev                          479M     0  479M   0% /dev
run                          499M   89M  411M  18% /run
/dev/sr0                     476M  476M     0 100% /run/archiso/bootmnt
cowspace                     256M  101M  156M  40% /run/archiso/cowspace
/dev/loop0                   366M  366M     0 100% /run/archiso/sfs/airootfs
airootfs                     256M  101M  156M  40% /
tmpfs                        499M     0  499M   0% /dev/shm
tmpfs                        499M     0  499M   0% /sys/fs/cgroup
tmpfs                        499M     0  499M   0% /tmp
tmpfs                        499M  1.3M  498M   1% /etc/pacman.d/gnupg
tmpfs                        100M     0  100M   0% /run/user/0
/dev/mapper/ubuntu--vg-root  9.8G  2.0G  7.3G  22% /mnt

Проверяем разделы:

[root@archiso ~]# pvdisplay
--- Physical volume ---
PV Name               /dev/sda5
VG Name               ubuntu-vg
PV Size               29.52 GiB / not usable 2.00 MiB
Allocatable           yes
PE Size               4.00 MiB
Total PE              7557
Free PE               4741
Allocated PE          2816
PV UUID               lznlIM-pUlN-l0Hc-rERJ-TT8p-uxV2-F19F8H
[root@archiso ~]# fdisk /dev/sda
Welcome to fdisk (util-linux 2.29.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/sda: 30 GiB, 32212254720 bytes, 62914560 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x05bb6332
Device     Boot   Start      End  Sectors  Size Id Type
/dev/sda1  *       2048   999423   997376  487M 83 Linux
/dev/sda2       1001470 62912511 61911042 29.5G  5 Extended
/dev/sda5       1001472 62912511 61911040 29.5G 8e Linux LVM

Тут /dev/sda5 — наш physical volume, который содержит volume group ubuntu-vg:

[root@archiso ~]# lvdisplay ubuntu-vg
--- Logical volume ---
LV Path                /dev/ubuntu-vg/root
LV Name                root
VG Name                ubuntu-vg
LV UUID                05GNA5-V6Wk-kywP-IrZX-Ek7v-8CvV-1ZqOwR
LV Write Access        read/write
LV Creation host, time ubuntu, 2017-02-24 14:27:07 +0000
LV Status              available
open                 1
LV Size                10.00 GiB
Current LE             2560
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           254:0
--- Logical volume ---
LV Path                /dev/ubuntu-vg/swap_1
LV Name                swap_1
VG Name                ubuntu-vg
LV UUID                KHyywu-k8UI-MVFf-Z6Wq-h2Ra-fWdo-RCRqSC
LV Write Access        read/write
LV Creation host, time ubuntu, 2017-02-24 14:27:07 +0000
LV Status              available
open                 0
LV Size                1.00 GiB
Current LE             256
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           254:1

В группе ubuntu-vg создаём logical volume для будущего home:

[root@archiso ~]# lvcreate -l 100%FREE -n home ubuntu-vg
Logical volume "home" created.

Проверяем:

[root@archiso ~]# lvdisplay -c
/dev/ubuntu-vg/root:ubuntu-vg:3:1:-1:1:20971520:2560:-1:0:-1:254:0
/dev/ubuntu-vg/swap_1:ubuntu-vg:3:1:-1:0:2097152:256:-1:0:-1:254:1
/dev/ubuntu-vg/home:ubuntu-vg:3:1:-1:0:38838272:4741:-1:0:-1:254:2

Создаём ФС:

[root@archiso ~]# mkfs.ext4 /dev/ubuntu-vg/home
mke2fs 1.43.4 (31-Jan-2017)
Creating filesystem with 4854784 4k blocks and 1215840 inodes
Filesystem UUID: 62b8a624-9b90-4c68-aaa6-15f274c25eff
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

Отмонтируем root, и монтируем два раздела обратно:

umount /dev/mapper/ubuntu--vg-root
[root@archiso ~]# mkdir /mnt/home
[root@archiso ~]# mount /dev/ubuntu-vg/root /mnt/
[root@archiso ~]# mount /dev/ubuntu-vg/home /mnt/home/

Упс… А данные переносить?

Монтируем home  в другой каталог:

[root@archiso ~]# umount /dev/ubuntu-vg/home
[root@archiso ~]# ls -l /mnt/home/
total 4
drwxr-xr-x 3 1000 1000 4096 Feb 27 10:25 jageradmin
[root@archiso ~]# mkdir /homenew
[root@archiso ~]# mount /dev/ubuntu-vg/home /homenew/

Копируем данные:

[root@archiso ~]# cp -r /mnt/home/* /homenew/
[root@archiso ~]# ls -l /homenew/
total 20
drwxr-xr-x 3 root root  4096 Feb 27 10:47 jageradmin
drwx------ 2 root root 16384 Feb 27 10:42 lost+found

Перемонтируем заново:

[root@archiso ~]# umount /dev/ubuntu-vg/home
[root@archiso ~]# mount /dev/ubuntu-vg/home /mnt/home/
[root@archiso ~]# ls -l /mnt/home/
total 20
drwxr-xr-x 3 root root  4096 Feb 27 10:47 jageradmin
drwx------ 2 root root 16384 Feb 27 10:42 lost+found

Последний шаг — обновить /etc/fstab на старом разделе, что бы он примонтировал home с другого раздела.

Сейчас он выглядит так:

[root@archiso ~]# cat /mnt/etc/fstab  | grep -v \#
/dev/mapper/ubuntu--vg-root /               ext4    errors=remount-ro 0       1
UUID=802aaac0-73a7-48e5-9e56-0debc61e0ca6 /boot           ext2    defaults        0       2
/dev/mapper/ubuntu--vg-swap_1 none            swap    sw              0       0

В конец файла добавляем:

...
# new home
/dev/mapper/ubuntu--vg-home /home               ext4    errors=remount-ro 0       2

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

setevoy@ubuntu:/$ ls -l /home/
total 20
drwxr-xr-x 3 root root  4096 Feb 27 12:47 jageradmin
drwx------ 2 root root 16384 Feb 27 12:42 lost+found
setevoy@ubuntu:/$ ls -l /home/jageradmin/
total 0
setevoy@ubuntu:/$ mount | grep vg
/dev/mapper/ubuntu--vg-root on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/mapper/ubuntu--vg-home on /home type ext4 (rw,relatime,errors=remount-ro,data=ordered)

Готово.