LVM (Logical Volume Manager) — это система управления логическими томами в операционных системах семейства Unix, включая Linux. По сути логический том — это абстракция физических дисков, которая позволяет легко управлять их разделами, объединяя в группы и создавая тома произвольного размера.
Например с помощью LVM вы можете объединить несколько физических дисков в один логический том, а затем разделить его на несколько томов меньшего объема.
Выглядит это примерно так
Physical volume — /dev/sdb1 и /dev/sdc1 // физические тома (разделы и диски)
Volume group — vg1 // группа томов с общим пространством
Logical volume — lv1 и lv2 // разделы внутри группы томов (логические тома)
Добавим 2 новых диска в нашу виртуальную машину, чтобы всего их было 3, на одном сама система и 2 абсолютно новых. У меня например система стоит на /dev/sdb, и свободные диски сейчас это /dev/sda и /dev/sdc. У вас это может быть по-другому.
sudo fdisk -l
Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Disk model: QEMU HARDDISK
Disk /dev/sda: 2 GiB, 2147483648 bytes, 4194304 sectors
Disk model: QEMU HARDDISK
Disk /dev/sdc: 2 GiB, 2147483648 bytes, 4194304 sectors
Disk model: QEMU HARDDISK
Выполним
sudo fdisk /dev/sda
g
n
enter
enter
+200M // создадим раздел на 200МБ
n
2
enter
+400M
p
w
Создадим Physical volume
sudo pvcreate /dev/sda1
Посмотрим
sudo pvdisplay
Создадим Volume group
sudo vgcreate vg1 /dev/sda1
Проверим
sudo vgdisplay
Создадим Logical volume
sudo lvcreate vg1 -n lv1 -l 100%FREE // при создании отдадим все свободное место
Если нужно указать конкретно объем
sudo lvcreate vg1 -n lv1 -L 196M
Проверим
sudo lvdisplay
Создадим файловую систему
sudo mkfs.ext4 /dev/vg1/lv1
sudo mkdir /mnt/newlv
Добавим в /etc/fstab
sudo nano /etc/fstab
/dev/mapper/vg1-lv1 /mnt/newlv ext4 defaults 0 0
Примонтируем и проверим
sudo mount - a
df -h
Допустим мы хотим увеличить место и возьмем второй диск
sudo pvcreate /dev/sdc
Полезная команда, на случай если на диске уже есть таблица разделов, но вы уверены, что хотите его добавить (АККУРАТНЕЕ С ДАННОЙ КОМАНДОЙ)
sudo wipefs -a /dev/sdc
Расширим Volume group и добавим новый диск
sudo vgextend vg1 /dev/sdc
sudo vgdisplay
sudo lvextend vg1/lv1 -L +500M
Если мы сейчас посмотрим размер с помощью команд
sudo lvdisplay
и
df -h
Мы увидим, что нам нужно сообщить ФС об изменениях
sudo resize2fs /dev/vg1/lv1
Проверяем
df -h
Все успешно
Все это можно было сделать и сразу
sudo lvextend vg1/lv1 -L +500M -r // -r в конце
Если нужно удалить, что сначала необходимо отмонтировать сами логические тома, а затем
lvremove — vgremove — pvremove
Поработаем со снапшотами
sudo nano /mnt/newlv/snapfile
Файл до изменений
sudo lvcreate -s -n newsnap -L 100M vg1/lv1
sudo lvs
lv1 vg1 owi-aos--- <1.17g
newsnap vg1 swi-a-s--- 100.00m lv1 0.01 // запомним значение
sudo nano /mnt/newlv/snapfile
Файл после изменений
sudo lvs
lv1 vg1 owi-aos--- <1.17g
newsnap vg1 swi-a-s--- 100.00m lv1 0.04 // видим что изменилось
sudo mount /dev/vg1/newsnap /mnt/newsnap/
sudo cat /mnt/newsnap/snapfile
Файл до изменений
sudo cat /mnt/newlv/snapfile
Файл после изменений
sudo umount /mnt/newlv /mnt/newsnap
Можно удалить снапшот
sudo lvremove /dev/vg1/newsnap
или
sudo lvconvert --merge vg1/newsnap
sudo mount /mnt/newlv
sudo cat /mnt/newlv/snapfile
Файл до изменений
sudo lvs