LVM - шпаргалка

  • Михаил
  • 12 мин. на прочтение
  • 128
  • 05 Feb 2014
  • 05 Sep 2023

Logical Volume Manager (LVM) - это очень мощная система управления томами с данными для Linux. Она позволяет создавать поверх физических разделов (или даже неразбитых винчестеров) логические тома, которые в самой системе будут видны как обычные блочные устройства с данными (т.е. как обычные разделы). LVM - это менеджер логических томов (англ. logical volume manager) — подсистема, позволяющая использовать разные области одного или нескольких жёстких дисков как один логический том. Работа LVM основана на Device Mapper - это подсистема ядра Linux, которая позволяет создавать виртуальные блочные устройства. В совокупности всё это позволяет нам абстрагироватся от физических устройств и устаревших разделов жестких дисков и создать удобную логическую структуру томов, а так же:

  • объединять их в группы
  • изменять размер
  • перемещать данные
  • делать снапшоты
  • зеркалировать
  • шифровать

… и многое другое. И всё это не останавливая работу системы.

Чтобы проиллюстрировать работу LVM приведу одну простую картинку.

Следующими командами можно увидеть какие блочные устройства доступны системе.

ls -l /dev/sd*

и

ls -l /dev/disk/by-id/

вывод этих команд показан на снимке и может отличаться в вашем случае

Физический том (Physical volume, PV)

Физический том - это раздел диска или весь диск. Создать физический том - означает пометить раздел (или диск) как используемый для структуры LVM.

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

В нашем случае у нас для LVM используется устройство /dev/sda2. И мы собираемся использовать всё его пространство. Пометим его как устройство LVM - то есть создадим из него физический том LVM.

Выполняем команду для создания physical volume, указывая какой диск мы помечаем как устройство LVM:

pvcreate /dev/sda2

Чтобы увидеть созданный physical volume используйте команду pvdisplay

pvdisplay

Группа томов (Volume Group, VG)

Физические тома объединяются в группы, что позволяет создать единое дисковое пространство, из которого будет выделяться место для логических томов.

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

Логическому тому будут выделяться логические экстенты, размер которых равен размеру физических экстентов. То есть размер экстентов всегда один и тот же для всех логических томов в группе. Группа томов определяет соответствие логических экстентов физическим.

Когда физические тома используются для создания группы томов, ее дисковое пространство по умолчанию делится на экстенты размером 4 МБ. Этот размер является минимальным, на которую логический том может быть увеличен или уменьшен в размере. Большое количество экстентов не повлияет на производительность ввода-вывода логического тома.

Для создания группы томов используется следующая команда:

vgcreate vg0 /dev/sda2

где vg0 - это название группы.

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

vgdisplay

Логический Том (Logical Volume, LV)

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

Линейный том

Объединяет несколько физических томов. Например, при наличии двух дисков размером 60 гигабайт можно создать логический том размером 120 гигабайт.

Том с чередованием

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

Зеркальный том

Зеркало содержит устройства с идентичными копиями данных. При записи данных на одно устройство их копия также записывается на другое, что облегчает восстановление в случае выхода из строя одного из устройств. В случае сбоя одной составляющей зеркала логический том будет преобразован в линейный и продолжит работу.

Нам требуется создать два логических тома: root и swap.

Последовательно выполняем две команды:

lvcreate -L1G -n swap vg0

где -L1G - размер тома, -n имя тома, а vg0 название ранее созданной группы, в которую мы помещаем том.

lvcreate -l 100%FREE -n root vg0

где -l 100%FREE означает, что мы занимаем всё оставшееся свободное место.

Теперь мы сделали Всё, что необходимо для установки ОС. Мы создали две партиции - загрузочную и LVM. На LVM разместили логические тома swap и root, при этом объединили их одной группой. Можно возвращаться в установщик заканчивать инсталяцию ОС. Но сделать это нужно правильно. Читайте дальше как именно.

lvdisplay

Краткая информация

pvs
vgs
lvs

Порядок создания

pvcreate /dev/sda /dev/sdb

*инициализирует диски /dev/sda /dev/sdb для LVM

vgcreate vg01 /dev/sda /dev/sdb

*создаст группу томов vg01 на /dev/sda /dev/sdb

lvcreate -L 1G -n lv01 vg01

*создаст логический том lv01 на 1Гб

lvcreate -l 40%VG -n lv01 vg01

*создаст логический том lv01 на 40% от места в vg01

lvcreate -l 100%FREE -n lv01 vg01

*создаст логический том lv01 на 100% от свободного места в vg01

mkfs.ext4 /dev/vg01/lv01

*создать файловую систему на lv01

mount /dev/vg01/lv01 /mnt

*примонтировать lv01 к /mnt

Увеличение томов

2 способа: Добавление нового диска к группе томов или Увеличение логического раздела, далее увеличение размера файловой системы.

1) Добавление нового диска к группе томов

pvcreate /dev/sdd
vgextend vg01 /dev/sdd

*расширить vg01 за счет добавления диска sdd

2) Увеличение логического раздела

lvextend -l +100%FREE /dev/vg01/lv01

*расширит lv01 на все доступное свободное пространство из vg01

Увеличение размера файловой системы

resize2fs /dev/vg01/lv01

*расширит файловую систему на lv01 до максимума, работает только на ext2/ext3/ext4

Уменьшение томов

Перед уменьшением надо отмонтировать, а для системного раздела грузиться с LiveCD.

Уменьшение файловой системы

umount /mnt

*отмонтирует /mnt

e2fsck -fy /dev/vg01/lv01

*проверка lv01 на ошибки файловой системы

resize2fs /dev/vg01/lv01 200M

*указывается итоговый размер lv01, минус 40Мб

Уменьшение размера тома

lvreduce -L-50mb /dev/vg01/lv01

*вырежет 50 мегабайт

lvreduce -l-50%FREE /dev/vg01/lv01

*вырежет 50% свободного места

lvreduce -L 50mb /dev/vg01/lv01

*сделает логический том равный 50 мегабайт

Удаление томов

umount /mnt
nano /etc/fstab

Закомментировать строчку с монтированием тома

#/dev/vg01/lv01 /mnt ext4 defaults 1 2

lvremove /dev/vg01/lv01

Остальное

lvmdiskscan

*поиск всех устройств, имеющих отношение к LVM

resize2fs -P /dev/sda1

*покажет минимальный размер файловой системы