Logical Volume Manager (LVM) - это очень мощная система управления томами с данными для Linux. Она позволяет создавать поверх физических разделов (или даже неразбитых винчестеров) логические тома, которые в самой системе будут видны как обычные блочные устройства с данными (т.е. как обычные разделы). Основные преимущества LVM в том, что во-первых одну группу логических томов можно создавать поверх любого количества физических разделов, а во-вторых размер логических томов можно легко менять прямо во время работы. Кроме того, LVM поддерживает механизм снапшотов, копирование разделов «на лету» и зеркалирование, подобное RAID-1.

Если планируются большие работы с LVM, то можно запустить специальную «оболочку» командой sudo lvm. Команда help покажет список команд.

Создание и удаление

Большинство команд требуют прав суперпользователя.

Как уже отмечалось, LVM строится на основе разделов жёсткого диска и/или целых жёстких дисков. На каждом из дисков/разделов должен быть создан физический том (physical volume). К примеру, мы используем для LVM диск sda и раздел sdb2:

pvcreate /dev/sda
pvcreate /dev/sdb2

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

vgcreate -s 32M vg1 /dev/sda /dev/sdb2

Посмотрим информацию о нашей группе томов:

vgdisplay vg1

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

Теперь в группе томов можно создать логические тома lv1 и lv2 размером 20 Гбайт и 30 Гбайт соответствено:

lvcreate -n lv1 -L 20G vg1
lvcreate -n lv2 -L 30G vg1

Теперь у нас есть блочные устройства /dev/vg1/lv1 и /dev/vg1/lv2.

Осталось создать на них файловую систему. Тут различий с обычными разделами нет:

mkfs.ext4 /dev/vg1/lv1
mkfs.reiserfs /dev/vg1/lv2

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

Добавление физических томов

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

pvcreate /dev/sdc

И добавим его в нашу группу:

vgextend vg1 /dev/sdc

Теперь можно создать ещё один логический диск (lvcreate) или увеличить размер существующего (lvresize).

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

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

pvmove /dev/sda

Затем удалим его из группы томов:

vgreduce vg1 /dev/sda

И, наконец, удалим физический том:

pvremove /dev/sda

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

Изменение размеров

LVM позволяет легко изменять размер логических томов. Для этого нужно сначала изменить сам логический том:

lvresize -L 40G vg1/lv2

а затем файловую систему на нём:

resize2fs /dev/vg1/lv2
resize_reiserfs /dev/vg1/lv2
Изменение размеров физического тома - задача весьма сложная и обычно не применяется. Целесообразнее и безопаснее удалить физический том, изменить размер раздела и создать том заново.

Как просто попробовать

Если LVM устанавливается не для дальнейшего использования, а «напосмотреть», то диски и разделы можно заменить файлами. Не понадобятся ни дополнительные диски, ни виртуальные машины. Мы создадим виртуальные накопители и будем с ними работать. Например, можно создать 4 диска по 1 Гбайт, но можно создать другое количество большего или меньшего размера как вам хочется. Создаем сами файлы, имитирующие устройства:

mkdir /mnt/sdc1/lvm
cd /mnt/sdc1/lvm
dd if=/dev/zero of=./d01 count=1 bs=1G
dd if=/dev/zero of=./d02 count=1 bs=1G
dd if=/dev/zero of=./d03 count=1 bs=1G
dd if=/dev/zero of=./d04 count=1 bs=1G

Создаем loopback устройства из файлов:

losetup -f --show ./d01
losetup -f --show ./d02
losetup -f --show ./d03
losetup -f --show ./d04

Дальше поступаем так же, как если бы ми создавали LVM на реальных дисках. Обратите внимание на названия loop-устройств — они могут отличаться от приведённых здесь.

pvcreate /dev/loop0
pvcreate /dev/loop1
pvcreate /dev/loop2
pvcreate /dev/loop3
vgcreate -s 32M vg /dev/loop0 /dev/loop1 /dev/loop2 /dev/loop3
lvcreate -n first -L 2G vg
lvcreate -n second -L 400M vg
...

Снапшоты

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

Примеры использования

LVM активно используется, когда необходим механизм снапшотов. Например, этот механизм крайне важен при бекапе постоянно меняющихся файлов. LVM позволяет заморозить некоторое состояние ФС и скопировать с неё все нужные данные, при этом на оригинальной ФС останавливать запись не нужно.

Также снапшоты можно применить для организации поддержки файловым сервером с Samba механизма архивных копий, об этом в соответствующей статье:

LVM с LiveCD

Если у вас возникла необходимость работать с LVM с LiveCD Ubuntu, то вам придётся выполнить несколько дополнительных действий, поскольку по умолчанию утилит для работы с LVM нет.

Сначала вам нужно установить эти утилиты:

sudo apt-get install lvm2

Далее посмотрите командами

sudo vgscan
sudo vgdisplay YOUR_VGNAME

доступность ваших групп томов. Ну а дальше запустите все группы командой

sudo vgchange -a y

Эта команда должна сообщить о том, что все ваши логические тома активированы. Теперь можно работать с ними обычным образом.

Ссылки