SCROLL
Среднее время на прочтение: 3 мин.

Работа с 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

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

2 комментариев
  • а зачем везде перед командами писать sudo?

    • Это ответ на комментарий Qasd

      мне на тот момент было так удобней, а по сути можно перейти на уровень выше и не вводить каждый раз, тут дело каждого. Суть, дела не меняет.