Работа с LVM

LVM, это система управление дисковым пространством с дополнительной степенью абстракции от физического уровня. Она позволяет гибко и эффективно управлять дисковым пространством, отказоустойчивостью данных а так же помогает в решении различных задач по резервному копированию данных, развертыванию систем хранения для сред виртуализации и прочее.

В этой статье мы рассмотрим, как установить и использовать LVM в Linux.

Установка

LVM обычно устанавливается вместе с операционной системой Linux, но если его нет, вы можете установить его с помощью менеджера пакетов вашего дистрибутива Linux. Для большинства дистрибутивов команда для установки LVM будет выглядеть следующим образом:

Для Debian или Ubuntu:

sudo apt-get install lvm2

Для CentOS, Fedora и RHEL: 

sudo yum install lvm2

Создание физических томов

Перед созданием логических томов, необходимо создать физические тома (pv). Физический том - это виртуальное устройство, такое как жесткий диск или раздел диска, который используется LVM для создания логических томов.

Рекомендуется создавать физические тома поверх жесткого диска без
использования разметки на разделы, т.к в противном случае в перспективе
усложняется процесс динамического изменения размера lvm.

Чтобы создать физический том, выполните следующие шаги:

  1. Используйте команду pvcreate для создания физического тома:
sudo pvcreate /dev/sdb

Где /dev/sdb - это путь к физическому устройству.

 2. Проверьте созданный физический том, используя команду pvdisplay:

sudo pvdisplay

В выводе вы увидите информацию о созданном физическом томе.

Создание группы физических томов

Группа физических томов (physical volume group, vg) - это логический контейнер, который может объединть несколько физических томов в одну общую группу. Однако ничто не мешает использовать его в рамках одного физческого тома. Чтобы создать группу физических томов, выполните следующие шаги:

 1. Используйте команду vgcreate для создания группы физических томов:

sudo vgcreate vg0 /dev/sdb
# либо для нескольких pv
sudo vgcreate vg0 /dev/sdb /dev/sdc

Создание логического тома

Теперь можно создавать логические тома которые можно условно представить как разделы на жестком диске.

 1. Создайте логический том в группе физических томов с помощью команды lvcreate:

sudo lvcreate -n lv0 -L 10G vg0   # Создание логического тома lv0 размером 10 ГБ в группе физических томов vg0

Где -n - имя логического тома, -L - размер логического тома.

 2. Проверьте созданный логический том, используя команду lvdisplay:

sudo lvdisplay

Вы увидите информацию о созданном логическом томе.

 3. Создайте файловую систему на логическом томе, используя команду mkfs:

sudo mkfs.ext4 /dev/vg0/lv0

 4. Создайте точку монтирования для новой файловой системы, используя команду mkdir:

sudo mkdir /mnt/lv0

 5. Смонтируйте новую файловую систему в точке монтирования, используя команду mount:

sudo mount /dev/vg0/lv0 /mnt/lv0

Теперь вы можете использовать новую файловую систему, находящуюся на логическом томе.

Использование LVM

LVM предоставляет множество команд для управления физическими томами, группами физических томов и логическими томами. Некоторые из наиболее часто используемых команд перечислены ниже:

  • pvcreate: Создает новый физический том.
  • pvdisplay: Отображает информацию о физических томах.
  • vgcreate: Создает новую группу физических томов.
  • vgextend: Добавляет физический том в группу физических томов.
  • vgdisplay: Отображает информацию о группах физических томов.
  • lvcreate: Создает новый логический том.
  • lvextend: Увеличивает размер логического тома.
  • lvdisplay: Отображает информацию о логических томах.

LVM также позволяет использоволяет увеличивать размеры физических томов, групп физических томов и логических томов во время работы системы. Для этого существуют соответствующие команды:

  • pvresize: Изменяет размер физического тома.
  • vgresize: Изменяет размер группы физических томов.
  • lvresize: Изменяет размер логического тома.
выполнив любую из вышеперечисленных команд с параметром --help вы сможете ознакомиться с дополнительными параметрами аргументами команды.

Управление размером логического тома:

Например, чтобы увеличить размер логического тома lv0 в группе физических томов vg0 на 5 ГБ, используйте команду:

sudo lvresize -L +5G /dev/vg0/lv0

либо на все оставшееся свободное место на физическом томе:

sudo lvresize -l +100%FREE /dev/vg0/lv0
Обратите внимание что в последнем примере применяется прописная литера l, а в предыдущем - прописная L.
В таком формате вы можете гибко задавать в процентном соотношении сколько свободного пространства от оставшегося на физическом томе добавить к логическому тому.

После этого можно изменить размер файловой системы "на лету", используя команду resize2fs:

sudo resize2fs /dev/vg0/lv0

LVM Snaphots

LVM в Linux поддерживает механизм снимков (snapshot), который позволяет создавать точные копии логических томов в определенный момент времени. Это полезная функция, которая позволяет сохранять состояние данных в определенный момент времени и восстанавливаться к этому состоянию, если это необходимо.

Технология снимков LVM работает следующим образом: снимок создается путем сохранения состояния логического тома в момент времени, когда снимок создается. После создания снимка все изменения, которые происходят в исходном логическом томе, сохраняются в дополнительном дифференциальном дисковом пространстве. Это может помочь в создании резервных копий и восстановлению данных на момент создания снимка.

Давайте рассмотрим, как создавать и использовать механизм снимков LVM.

 Создание снимка LVM

Создание снимка LVM происходит с помощью команды lvcreate. Например, чтобы создать снимок логического тома myvolume в группе томов myvg, используйте следующую команду:

sudo lvcreate --snapshot --name myvolume_snap --size 1G /dev/myvg/myvolume

Эта команда создаст снимок логического тома myvolume с именем myvolume_snap размером 1 ГБ.

Обратите внимание, что для создания снимка необходимо указать размер снимка.

Использование снимка LVM

После создания снимка можно использовать его для выполнения различных задач. Например, можно использовать снимок для восстановления данных или для создания бэкапа. Для монтирования снимка в файловой системе используйте следующую команду:

sudo mount /dev/myvg/myvolume_snap /mnt/snapshot

Здесь /mnt/snapshot - это точка монтирования, куда будет смонтирован снимок. После монтирования снимка можно скопировать данные с него или использовать их для восстановления данных.

Удаление снимка LVM

После использования снимка его можно удалить. Для удаления снимка используйте команду lvremove. Например, чтобы удалить снимок myvolume_snap в группе томов myvg, используйте следующую команду:

sudo lvremove /dev/myvg/myvolume_snap
Обратите внимание, что при удалении снимка все данные, которые были изменены после создания снимка, будут потеряны.

Thin pools

Thin pool - это механизм LVM, который позволяет создавать логический том, использующий только ту часть физических дисковых устройств, которая фактически содержит данные. Это позволяет снизить потребление дискового пространства и более эффективно управлять им. Наибольшее распространение это свойство LVM приобрело в системах виртуализации, как удобное и экономной решение для выделения дискового пространства для виртуальых машин и контейнеров. Давайте рассмотрим, как создавать thin pool в LVM.

Создание thin pool LVM

Thin pool создается с помощью уже знакомой нам команды lvcreate. Например, чтобы создать thin pool mythinpool в группе томов myvg на физических томах /dev/sdb и /dev/sdc, используйте следующую команду:

sudo lvcreate -L 50G -T myvg/mythinpool /dev/sdb /dev/sdc

Здесь -L определяет размер thin pool в гигабайтах, а -T указывает, что мы создаем thin pool. После выполнения этой команды будет создан thin pool mythinpool размером 50 ГБ.

Создание thin volume LVM

Thin volume - это логический том, который создается внутри thin pool. Thin volume может быть создан с помощью команды lvcreate. Например, чтобы создать thin volume mythinvolume размером 10 ГБ в thin pool mythinpool в группе томов myvg, используйте следующую команду:

sudo lvcreate -V 10G -T myvg/mythinpool -n mythinvolume

Здесь -V определяет размер thin volume в гигабайтах, а -n указывает имя thin volume. После выполнения этой команды будет создан thin volume mythinvolume размером 10 ГБ внутри thin pool mythinpool.

Использование thin volume LVM

Thin volume может быть использован как обычный логический том. Например, чтобы создать файловую систему ext4 на thin volume mythinvolume, используйте следующую команду:

sudo mkfs.ext4 /dev/myvg/mythinvolume

После создания файловой системы thin volume можно монтировать и использовать как обычный логический том.

Thin pool позволяет создавать более гибкие и эффективные конфигурации хранения данных в Linux. Thin pool используется в сочетании с thin volume для оптимального использования дискового пространства.