Linux Volume Manager (LVM) - это очень мощная система управления томами с данными для Linux. Она позволяет создавать поверх физических разделов (или даже неразбитых винчестеров) логические тома, которые в самой системе будут видны как обычные блочные устройства с данными (т.е. как обычные разделы). Основные преимущества LVM в том, что во-первых одну группу логических томов можно создавать поверх любого количества физических разделов, а во-вторых размер логических томов можно легко менять прямо во время работы. Кроме того, LVM поддерживает механизм снапшотов, копирование разделов «на лету» и зеркалирование, подобное RAID-1.
Если планируются большие работы с LVM, то можно запустить специальную «оболочку» командой
Команда help
покажет список команд.
Создание
Создание простых томовБ
Как уже отмечалось, LVM строится на основе разделов жёсткого диска и/или целых жёстких дисков. На каждом из дисков/разделов должен быть создан физический том (physical volume). К примеру, мы используем для LVM диск sda и раздел sdb2:
На этих физических томах создаём группу томов, которая будет называться, скажем, vg1
:
Посмотрим информацию о нашей группе томов:
Групп можно создать несколько, каждая со своим набором томов. Но обычно это не требуется.
Теперь в группе томов можно создать логические тома lv1
и lv2
размером 20 Гбайт и 30 Гбайт соответствено:
Теперь у нас есть блочные устройства /dev/vg1/lv1
и /dev/vg1/lv2
.
При создании линейного тома из физических томов группы выделяются свободные экстенты. Обычно логические тома используют все доступное пространство. Изменения в логических томах ведут к освобождению или переорганизации пространства физических томов.
Следующая команда создаст логический том размером 10 Гб и в группе vg1
.
Приведенная далее команда создаст линейный логический том testlv
размером 1500 Мбайт в группе томов testvg
. При этом будет создано блочное устройство /dev/testvg/testlv
.
Следующая команда создаст логический том gfslv
размером 50 Гбайт, используя свободные экстенты в логической группе vg0
.
Опция -l
команды mylv
, использующий 60% общего объема группы томов testvol
.
С помощью опции -l
можно также указать процент свободного пространства группы, которое будет занято логическим томом. Например, команда, создающая логический том yourlv
, который займет все свободное пространство группы testvol
будет выглядеть так:
You can use -l
argument of the lvcreate
command to create a logical volume that uses the entire volume group. Another way to create a logical volume that uses the entire volume group is to use the vgdisplay
command to find the "Total PE" size and to use those results as input to the the lvcreate
command.
Пример команд создания логического тома mylv
, который займет весь объем группы testvg
:
The underlying physical volumes used to create a logical volume can be important if the physical volume needs to be removed, so you may need to consider this possibility when you create the logical volume. For information on removing a physical volume from a volume group, see Удаление физических томов из группы.
Чтобы создать логический том на основе определенных физических томов, необходимо их указать в командной строке lvcreate
. Так, следующая команда создаст логический том testlv
на основе физического тома /dev/sdg1 в группе testvg
.
Можно указать, какие экстенты физического тома будут использованы для образования логического тома. В следующем примере будет создан линейный логический том, в состав которого войдут экстенты физического тома /dev/sda1
с 0 по 25 и /dev/sdb1
c 50 по 125. Оба физических тома входят в состав группы testvg
.
Следующий пример демонстрирует создание линейного логического тома на основе экстентов с 0 по 25 физического тома /dev/sda1
и затем продолжит, начиная с экстента 100.
The default policy for how the extents of a logical volume are allocated is inherit
, which applies the same policy as for the volume group. These policies can be changed using the lvchange
command. For information on allocation policies, see Создание групп томов.
Создание томов с чередованием
For large sequential reads and writes, creating a striped logical volume can improve the efficiency of the data I/O. For general information about striped volumes, see Логические тома с чередованием.
При создании логического тома с чередованием число сегментов задается с помощью опции -i
команды lvcreate
, что определяет число физических томов, используемых при чередовании. Это значение не может превышать число физических томов в группе (за исключением использования опции --alloc anywhere
).
Если размеры физических устройств, на основе которых создан логический том, различаются, то максимальный объем тома с чередованием будет определяться размером наименьшего устройства. Например, если для организации чередования используются два физических тома, то максимальный размер логического тома будет равен удвоенному размеру наименьшего устройства. Если же используются три тома, максимальный размер будет равен утроенному размеру наименьшего устройства.
Следующая команда создаст логический том с чередованием на основе двух физических томов в составе группы vg0
, при этом размер сегмента будет равен 64 Кб. Самому логическому тому будет присвоено имя gfslv
, его размер будет равен 50 Гб.
Так же как и в случае с линейными томами, можно специально указать определенные экстенты физического тома, которые будут заняты сегментами. В приведенном далее примере будет создан том с чередованием (с именем stripelv
) на основе двух физических томов, размер которого будет составлять 100 экстентов. Новый том будет входить в состав группы testvg
и занимать секторы 0-50 тома /dev/sda1
и 50-100 тома /dev/sdb1
.
Создание зеркальных томов
При создании зеркального логического тома необходимо указать число копий, для чего служит опция -m
команды lvcreate
. Так, если указать -m1
, будет создано одно зеркало, что, в сущности, создаст две копии данных в файловой системе — линейный логический том и его копию. Аналогичным образом, если указать -m2
, будут созданы два зеркала (всего три копии).
Ниже приведен пример создания зеркального логического тома размером 50 Гб с одним зеркалом. Ему будет присвоено имя mirrorlv
, пространство для его создания будет выделено из группы vg0
.
Зеркало LVM разбивает копируемое устройство на регионы, размер которых по умолчанию равен 512 Кб. Чтобы задать другой размер (в мегабайтах), используйте опцию -R
. LVM поддерживает краткий журнал синхронизации регионов с зеркалами. По умолчанию журнал хранится на диске, поэтому он не теряется при перезагрузке. Если же вы хотите, чтобы журнал находился в памяти, используйте опцию --corelog
, что отменяет необходимость в устройстве журналирования, но в то же время требует, чтобы зеркало полностью синхронизировалось при каждой перезагрузке.
Приведенная ниже команда создаст логический том ondiskmirvol
с одним зеркалом в группе bigvg
. Размер тома равен 12 Мбайт, а журнал зеркала хранится в памяти.
Журнал зеркала будет создан на отдельном устройстве. Возможно создание журнала на том же устройстве, что и секция зеркала, — для этого служит ключ --alloc anywhere
команды vgcreate
. Это может отрицательно сказаться на производительности, но позволит создать зеркало, даже если в основу положено всего лишь два устройства.
Ниже приведен пример создания зеркального логического тома mirrorlv
размером 50 Мбайт с одним зеркалом на основе группы томов vg0
. При этом журнал зеркала расположен на том же устройстве, что и составляющая зеркала. В этом примере группа томов vg0
состоит из двух устройств.
В момент создания зеркала выполняется синхронизация регионов зеркала. Если компоненты зеркала достаточно велики, процесс синхронизации может занять некоторое время. Если вы создаете новое зеркало, синхронизация которого необязательна, укажите опцию nosync
.
Можно задать, на каких устройствах будут сохраняться журналы и какие экстенты устройств будут использоваться зеркалом. Чтобы ограничить журналирование определенным диском, укажите ТОЛЬКО один экстент на том диске, где должен располагаться журнал. LVM игнорирует порядок, в котором перечислены устройства. Если в списке присутствуют физические устройства, то только они и будут использоваться для выделения пространства; уже занятые физические будут проигнорированы.
Далее приведен пример команды создания зеркального логического тома mirrorlv
размером 500 Мбайт с одним зеркалом. Том будет создан в составе группы vg0
. Одна часть зеркала будет располагаться на устройстве /dev/sda1
, вторая — на /dev/sdb1
, а журнал будет храниться на /dev/sdc1
.
Следующая команда создаст логический том mirrorlv
размером 500 Мбайт с одним зеркалом. Том будет создан в составе группы vg0
. Одна часть зеркала будет занимать экстенты с 0 по 499 устройства /dev/sda1
, вторая — экстенты с 0 по 499 устройства /dev/sdb1
, а журнал будет храниться на /dev/sdc1
, начиная с нулевого экстента. Размер экстента равен 1 Мбайт. Если заданные физические экстенты уже заняты, они будут просто проигнорированы.
Создание файловой системы
Осталось создать на них файловую систему. Тут различий с обычными разделами нет:
Удаление LVM (или отдельных его частей, например, логических томов или групп томов) происходит в обратном порядке - сначала нужно отмонтировать разделы, затем удалить логические тома (lvremove
), после этого можно удалить группы томов (vgremove
) и ненужные физические тома (pvremove
).
Добавление физических томов
Чтобы добавить новый винчестер sdc
в группу томов, создадим физический том:
И добавим его в нашу группу:
Теперь можно создать ещё один логический диск (lvcreate
) или увеличить размер существующего (lvresize
).
Удаление физических томов
Чтобы убрать из работающей группы томов винчестер sda
сначала перенесём все данные с него на другие диски:
Затем удалим его из группы томов:
И, наконец, удалим физический том:
Вообще-то, последняя команда просто убирает отметку о том, что диск является членом lvm
, и особой пользы не приносит. После удаления из LVM для дальнейшего использования диск придётся переразбивать/переформатировать.
Изменение конфигурации зеркальных томов
С помощью команды lvconvert
можно преобразовать тип логического тома из зеркального в линейный или из линейного в зеркальный. Эту команду также можно использовать для изменения параметров зеркала существующих логических томов (например, corelog
).
При преобразовании логического тома в зеркальный, в сущности, вы просто создаете составляющие зеркала для уже существующего тома. Это значит, что группа томов должна иметь достаточно пространства и устройств для организации зеркал и хранения журнала.
If you lose a leg of a mirror, LVM converts the volume to a linear volume so that you still have access to the volume, without the mirror redundancy. After you replace the leg, you can use the lvconvert
command to restore the mirror. This procedure is provided in Восстановление после сбоя зеркала LVM.
Следующая команда преобразует линейный логический том vg00/lvol1
в зеркальный.
Команда преобразования зеркального логического тома vg00/lvol1
в линейный с удалением зеркального компонента будет выглядеть так:
Изменение размеров
LVM позволяет легко изменять размер логических томов. Для этого нужно сначала изменить сам логический том:
Перед выполнением работ по уменьшению размера группы томов необходимо обязательно сделать резервное копирование всех данных, так как в результате сбоев или некорректных операций данные могут быть утеряны, повреждены или нарушена работоспособность всей системы.
Рассмотрим пример, когда у нас в системе имеется один жесткий диск, который разбит на два раздела: sda1
и sda2
В разделе /dev/sda2
соответственно создан один физический том, группа томов vg_testvas
и несколько логических томов:
/dev/vg_testvas/LogVol00
— раздел /root/dev/vg_testvas/LogVol01,
; — раздел /u01/dev/vg_testvas/LogVol03
— раздел /space
Нам необходимо создать новую группу томов. Для этого следует последовательно уменьшить размер файловой системы, логического тома, физического тома и создать новый раздел.
Текущее состояние системы мы можем увидеть с помощью команд pvdisplay
, vgdisplay
, lvdisplay
.
Если выполнить команду pvdisplay
с ключом —maps
, то можно увидеть сколько физических экстентов занимает каждый логический том:
И вывод соответственно vgdisplay
и lvdisplay
:
/write
LV Creation host, timetest, 2013-09-22 01:03:09 +0300
- currently
setto 256
Block device 253:3
Логический том /dev/vg_testvas/LogVol03
, который соответствует /space
является самым большим, находится в конце раздела и в нем много свободного места. Поэтому удобнее всего уменьшать его размер.
Для начала размонтируем раздел:
Для безопасности проверим целостность файловой системы:
Перед уменьшением размера логического тома необходимо соответственно уменьшить размер файловой системы. Произвести это можно двумя способами: с помощью команды resize2fs
или используя опцию «-r
» команды lvresize
, в последнем случае размер файловой системы будет автоматически уменьшен одновременно с логическим томом:
Результат выполнения операции мы можем проверить с помощью команд pvdisplay
—maps, lvdisplay
или таким способом:
В случае, если физические экстенты находятся в конце раздела, который мы собираемся уменьшать, то нужно переместить их в начало раздела. Выполнить это можно с помощью команды:
Теперь можно уменьшить размер физического тома и соответственно группы томов до желаемого размера:
После этого с помощью утилиты fdisk удаляем старый раздел /dev/sda2, на его месте создаем раздел sda2
согласно размеру нашего нового физического тома. Во избежания проблем рекомендуется этот раздел сделать на несколько мегабайт больше, чем наш физический том.
На физическом диске появилась неразмеченная область. Создаем новый раздел /dev/sda3
с помощью утилиты fdisk
:
Создаем физический том в группу томов vg_new:
После выполнения всех операций в новой группе томов мы можем создать необходимое количество логических томов.
а затем файловую систему на нём:
Снапшоты
Одна из важнейших особенностей LVM - это поддержка механизма снапшотов. Снапшоты позволяют сделать мгновенный снимок логического тома и использовать его в дальнейшем для работы с данными.
Примеры использования
LVM активно используется, когда необходим механизм снапшотов. Например, этот механизм крайне важен при бекапе постоянно меняющихся файлов. LVM позволяет заморозить некоторое состояние ФС и скопировать с неё все нужные данные, при этом на оригинальной ФС останавливать запись не нужно.
Также снапшоты можно применить для организации поддержки файловым сервером с Samba
механизма архивных копий, об этом в соответствующей статье:
LVM с LiveCD
Если у вас возникла необходимость работать с LVM с LiveCD Ubuntu, то вам придётся выполнить несколько дополнительных действий, поскольку по умолчанию утилит для работы с LVM нет.
Сначала вам нужно установить эти утилиты:
Далее посмотрите командами
доступность ваших групп томов. Ну а дальше запустите все группы командой
Эта команда должна сообщить о том, что все ваши логические тома активированы. Теперь можно работать с ними обычным образом.
Подключение в автомате (добавка в fstab):
Источник: http://help.ubuntu.ru/wiki/lvm
Очень хороший сайт
И вот еще