Имеется машина с одним диском, который разбит на два 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
Далее:
- уменьшим файловую систему на
/root
- уменьшим раздел
ubuntu--vg-root
до 10 гиг
- создадим раздел
ubuntu--vg-home
на всё свободное место
- отформатируем его и перенесём данные из старого
/home
на разделе vg-root в новый хомик
- обновим fstab
Устанавливаем 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
:
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)
Готово.