Работа с LVM (Logical Volume Manager): Создание, изменение и замена томов.
LVM (Logical Volume Manager) — это мощный инструмент для управления дисковым пространством в Linux. Он позволяет гибко управлять разделами дисков, создавая логические тома, которые можно легко изменять, расширять или перемещать.
В этой статье мы разберём основные команды и шаги для работы с LVM, используя актуальные примеры.
Для примера у будет два диска:
/dev/sdb
— 50 ГБ/dev/sdc
— 150 ГБ
Установка LVM
Для работы с LVM требуется пакет lvm2
, устанавливаем его:
sudo apt-get install lvm2 -y
Физические тома (PV)
Проверим какие диски и разделы доступны на вашей системе:
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 512M 0 part /boot
└─sda2 8:2 0 99.5G 0 part /
sdb 8:16 0 50G 0 disk
sdc 8:32 0 150G 0 disk
Здесь видно, что у нас есть два дополнительных диска: /dev/sdb
(50 ГБ) и /dev/sdc
(150 ГБ).
Преобразуем оба диска в физические тома (Physical Volume, PV)
sudo pvcreate /dev/sdb
sudo pvcreate /dev/sdc
Проверим созданные физические тома:
sudo pvdisplay
--- Physical volume ---
PV Name /dev/sdb
VG Name (none)
PV Size 50.00 GiB
Allocatable NO
PE Size 4.00 MiB
Total PE 12799
Free PE 12799
Allocated PE 0
--- Physical volume ---
PV Name /dev/sdc
VG Name (none)
PV Size 150.00 GiB
Allocatable NO
PE Size 4.00 MiB
Total PE 38399
Free PE 38399
Allocated PE 0
Теперь оба диска готовы к использованию в LVM.
Группы томов (VG)
Создание
Создадим группу томов (прим. vg__datastore_1
) и добавим в неё первый диск /dev/sdb
:
sudo vgcreate vg__datastore_1 /dev/sdb
Проверим созданную группу томов:
sudo vgdisplay
--- Volume group ---
VG Name vg__datastore_1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 50.00 GiB
PE Size 4.00 MiB
Total PE 12799
Alloc PE / Size 0 / 0
Free PE / Size 12799 / 50.00 GiB
Группа томов vg__datastore_1
создана, и она содержит только первый диск /dev/sdb
.
Расширение
Теперь добавим второй диск /dev/sdc
в группу томов:
sudo vgextend vg__datastore_1 /dev/sdc
Проверим, что второй диск добавлен в группу томов:
sudo vgdisplay
--- Volume group ---
VG Name vg__datastore_1
VG Size 200.00 GiB
PE Size 4.00 MiB
Total PE 51199
Alloc PE / Size 5120 / 20.00 GiB
Free PE / Size 46079 / 180.00 GiB
Теперь группа томов содержит оба диска: /dev/sdb
(50 ГБ) и /dev/sdc
(150 ГБ).
Уменьшение
Если вы хотите освободить место в группе томов, удалите физический том из группы. Перед удалением диска из группы томов убедитесь, что на этом диске нет данных, используемых логическими томами. Если данные есть, их нужно переместить на другие диски в группе томов.
Проверьте распределение данных в группе томов:
sudo pvs -o+pv_used
PV VG Fmt Attr PSize PFree Used
/dev/sdb vg__datastore_1 lvm2 a-- <50,00g <50,00g 0
/dev/sdc vg__datastore_1 lvm2 a-- <100,00g <100,00g 0
Освободить физический том от данных, можно несколькими путями:
- Путем автоматического распределения данных на другие физические тома этого логического тома
pvmove /dev/sdс
- Путем указания на какой физический том переместить данные
pvmove /dev/sdс /dev/sdb
Переместите данные с диска /dev/sdc
на другие диски:
sudo pvmove /dev/sdc
Удалите диск из группы томов:
sudo vgreduce vg__datastore_1 /dev/sdc
Убедитесь, что диск больше не является частью группы томов:
sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sdb vg__datastore_1 lvm2 a-- <50,00g <50,00g
/dev/sdc lvm2 --- 100,00g 100,00g
Удаление
Если группа томов больше не нужна, её можно удалить. Перед удалением убедитесь что все логические тома удалены.
Удалите группу томов:
sudo vgremove vg__datastore_1
Полное удаление дисков из LVM
После удаления группы томов можно удалить физические тома.
Удалите метаданные LVM с дисков:
sudo pvremove /dev/sdb
sudo pvremove /dev/sdc
Логические тома (LV)
Создадим логический том lv__logical_1
внутри группы томов vg__datastore_1
.
Создание
Создадим логический том с фиксированным
размером размером 20 ГБ:
sudo lvcreate -L 20G -n lv__logical_1 vg__datastore_1
Где:
-L 20G
: указывает размер тома (20 ГБ). Можно использовать суффиксы:K
,M
,G
,T
.-n
: задаёт имя томаvg__datastore_1
: имя группы томов.
/dev/vg__datastore_1/lv__logical_1
, вместо использования ключа -n
.Если вы хотите, чтобы логический том занял всё доступное пространство
в группе томов, используйте флаг -l 100%FREE
:
sudo lvcreate -l 100%FREE -n lv__logical_1 vg__datastore_1
Где:
-l 100%FREE
: указывает, что нужно использовать всё свободное место в группе томов.
Также можете указать процент от общего пространства
группы томов. Например, создадим логический том, занимающий 50% от доступного пространства:
sudo lvcreate -l 50%VG -n lv__logical_1 vg__datastore_1
Где:
-l 50%VG
: указывает, что нужно использовать 50% от общего пространства группы томов.
Создание файловой системы и монтирование
Теперь, когда логический том создан, можно создать на нём файловую систему и смонтировать её. Создайте файловую систему:
sudo mkfs.ext4 /dev/vg__datastore_1/lv__logical_1
Создайте точку монтирования:
sudo mkdir /mnt/mount_point
Смонтируйте том:
sudo mount /dev/vg__datastore_1/lv__logical_1 /mnt/mount_point
Проверьте монтирование:
df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/mapper/vg__datastore_1-lv__logical_1 20G 45M 19G 1% /mnt/mount_point
Увеличение
Увеличим размер логический том, чтобы он занял всё доступное пространство в группе томов:
sudo lvextend -l +100%FREE /dev/vg__datastore_1/lv__logical_1
Дополнительно
Если вы хотите увеличить размер логического тома до конкретного значения, например, 50 ГБ:
sudo lvextend -L 50G /dev/vg__datastore_1/lv__logical_1
Где:
-L 50G
— указывает новый размер тома (50 ГБ)./dev/vg__datastore_1/lv__logical_1
— путь к логическому тому, который нужно расширить.
Если вы хотите добавить 10 ГБ к текущему размеру логического тома:
sudo lvextend -L +10G /dev/vg__datastore_1/lv__logical_1
Где:
-L +10G
— добавляет 10 ГБ к текущему размеру указанного тома.
Расширение файловой системы
После расширения логического тома расширим файловую систему:
sudo resize2fs /dev/vg__datastore_1/lv__logical_1
Если у вас используется файловая система XFS
, то расширить файловую систему командой xfs_growfs
:
sudo xfs_growfs /dev/vg__datastore_1/lv__logical_1
Проверим, что логический том теперь занимает всё доступное пространство:
df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/mapper/vg__datastore_1-lv__logical_1 200G 45M 190G 1% /mnt/mount_point
Теперь логический том занимает всё доступное пространство (200 ГБ).
Уменьшение
Операция по уменьшению размера логического тома, возможно только на размонтированном логическом томе, в ином состоянии уменьшить размер логического тома нельзя.
Размонтируйте том:
sudo umount /mnt/mount_point
Проверьте файловую систему:
sudo e2fsck -f /dev/vg__datastore_1/lv__logical_1
Уменьшите файловую систему до нового размера (например, 10 ГБ):
sudo resize2fs /dev/vg__datastore_1/lv__logical_1 10G
Уменьшите логический том:
sudo lvreduce -L 10G /dev/vg__datastore_1/lv__logical_1
Снова проверьте файловую систему:
sudo e2fsck -f /dev/vg__datastore_1/lv__logical_1
Смонтируйте том обратно:
sudo mount /dev/vg__datastore_1/lv__logical_1 /mnt/mount_point
Удаление
Если логический том больше не нужен, его можно удалить.
Размонтируйте том:
sudo umount /mnt/mount_point
Удалите логический том:
sudo lvremove /dev/vg__datastore_1/lv__logical_1
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
а зачем везде перед командами писать sudo?
мне на тот момент было так удобней, а по сути можно перейти на уровень выше и не вводить каждый раз, тут дело каждого. Суть, дела не меняет.