Наглядная схема работы LVM для понимания:
sda1 sda2 sdb sdc <-- PV | | | | | | | | +--------+- VG00 -+-------+ <-- VG | +-------+-------+---------+ | | | | root usr home var <-- LV | | | | ext3 reiserfs reiserfs xfs <-- Файловые системы
PV – физические диски или логические разделы
VG – физические диски или логические разделы, объединенные в группу
LV – логические разделы из группы томов, на которых уже создается конечная файловая система.
На работающей и свежеустановленной системе (CentOS 7) уже использовался LVM, но нужно было докинуть один диск на 200 Гб и примонтировать в раздел /home.
Итак, алгоритм действий следующий:
Во многих мануалах рунета пишут, что при создании PV нужно использовать физический диск, а не раздел. Это допустимо, но не совсем правильно! Есть рекомендации и пояснения
(кликабельно) в виде TL;DR , например, почему так лучше не делать, т.к. использование всего диска вместо раздела может вызвать проблемы в дальнейшем при администрировании.
Для начала посмотреть физический диск через fdisk -l и убедиться, что он действительно виден системой, пусть это будет /dev/xvdb
Для использования раздела в LVM, нужно снова воспользоваться fdisk:
fdisk /dev/xvdb
n > default > default > default
t > 8e
w
При использовании LVM2, команда t > 8e не обязательна, т.к. LVM распознает PV посредством подписи, генерируемой при его создании.
Теперь, когда раздел типа 8e создан, можно создавать PV:
pvcreate /dev/xvdb1
Далее надо создать группу томов VG (Volume Group) с именем vg01:
vgcreate vg01 /dev/xvdb1
Теперь осталось создать логический том LV (Logical Volume) с именем lv01, отдав ему всё свободное пространство в группе томов VG vg01:
lvcreate -l100%FREE vg01 -n lv01
Теперь, если запустить fdisk -l , диск должен быть виден примерно как /dev/mapper/lv01-vg01
Для работы осталось создать файловую систему (ext4 или xfs, я предпочитаю второй вариант) уже на логическом томе:
mkfs.xfs /dev/vg01/lv01
Хочу заметить, что файловая система создается поверх устройства LVM в /dev/vg_name/lv_name, а не в /dev/mapper/vg_name-lv_name. См. официальную документацию
Узнать UUID созданного LV:
blkid
/dev/mapper/vg_lv01: UUID="e5c06451-d134-416c-9b82-83dc9155bce1" TYPE="xfs"
После прописать в /etc/fstab , чтобы не приходилось монтировать каждый раз, перезагрузить и проверить:
UUID=e5c06451-d134-416c-9b82-83dc9155bce1 /mnt/u01 xfs defaults 0 0
mount -a
shutdown -r now
Увеличение раздела
Если необходимо увеличить дисковое пространство в LVM-группе томов, то сначала к серверу добавляется физический диск (при необходимости форматируется через fdisk). После аналогично создается pv:
pvcreate /dev/xvdc1
Созданный pv добавляется в уже существующую группу vg:
vgextend vg_lv01 /dev/xvdc1
И существующий lv расширяется на всё доступное пространство (при необходимости добавляется выборочное количество доступного дискового пространства):
lvextend -l +100%FREE /dev/vg01/lv01
Если используется файловая система xfs, то её расширение делается командой:
xfs_growfs /dev/vg01/lv01