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

LVM — (Logical Volume Manager — менеджер логических дисков) средство гибкого управления дисковым пространством. Позволяет динамически менять размер логических разделов на лету, создавать снимки (снапшоты) и т.д.

Дисклеймер/отмазка

LVM это очень(!!!) мощный инструмент, который требует аккуратного с собой обращения. Любая самодеятельность с ним может обернуться потерей всей(!!!) информации на диске. Поэтому прежде, чем использовать LVM на рабочих машинах (и уж тем более на «боевых» серверах), следует потренироваться на кошках. Лучше всего это делать на виртуальных машинах. Начинать использовать LVM следует только (и только!!!) тогда, как почувствуете уверенность и понимание принципов его работы.

Зачем нужен LVM

Установка системы прямо на разделы диска зачастую приводит к следующей проблеме.

Нужно каким-то образом «правильно» разбить жесткий диск. Слово «правильно» стоит в кавычках, потому что «правильного» разбиения диска для всех возможных ситуаций и применений не существует. В сети есть много советов по данному поводу, но они не учитывают потребностей конкретного пользователя (в случае настольной системы) или конкретного администратора (в случае сервера). Обычно рекомендуют разделы /home, /var, /usr, какие-то еще выносить на отдельные разделы диска. Но если разбивающий ошибется в размерах этих разделов, возникает очень не хорошая ситуация — на одних разделах место подходит к концу, в то время как на остальных места еще много. Приехали! Дисковое пространство нужно переразмечать. Для этого есть много способов:

1. Тотальный backup, затем переустановка системы с переразбиением диска.
2. Переразметка с помощью parted с риском потерять данные.
3. Изначальная установка системы на LVM, который позволяет изменять размеры своих разделов прямо на работающей системе.
Терминология
LVM предусматривает три логических уровня работы с дисковым пространством:
1. Самый нижний — физические тома (physical volumes). Это собственно физические диски. Это могут быть диски целиком (/dev/sda, /dev/sdb и т.д.) или отдельные разделы (/dev/sda1, /dev/sdb5 и т.п.).
2. Группы томов — volume groups. В группы томов объединяются физические тома. Таким образом группы томов представляют собой пул дискового пространства, необходимый для следующего уровня. Группы томов могут иметь человеческие названия, говорящие администратору системы об их предназначении: system, sales, database и т.д.
3. Логические тома (logical volumes) — это аналог разделов физического диска и то, ради чего вообще существуют диски — именно на них хранятся данные. Пользователи (и процессы) системы работают только с логическими томами. Таким образом LVM создает для них всех слой абстракции, скрывая, с какими именно физическими дисками они в данный момент работают. Администратор системы может добавлять физические тома в LVM и удалять их из него (см. ниже), но процессы (и пользователи) об этом знать не будут.
Примечание по названиям утилит LVM
Следует запомнить сразу — названия утилит для работы с разными уровнями LVM совпадают. Различие только в первых двух буквах этого названия. Это:
  • pv* — для работы с физическими томами;
  • vg* — для работы с группами томов;
  • lv* — для работы с логическими томами.
Не стоит также пытаться зазубрить названия этих утилит и их ключи. Действовать стоит так:
1. Думаете, с каким уровнем LVM надо работать — физические тома, группы томов или логические тома.
2. Выбираете в зависимости от этого первые буквы названия: pv, vg или lv, соответственно.
3. Набираете их в консоли и нажимаете два раза TAB. Срабатывает автодополнение, которое показывает команды, начинающиеся с указанных букв.
4
. Выбираете команду по ее названию, например,
pvcreate для создания физических томов. Если вы ее запустите с ключом —help , она вам покажет все возможные ключи. За более подробной информацией стоит залезть в man конкретной команды.
По мере набора опыта работы с LVM нужда в такой последовательности отпадет. Необходимые команды и их опции запомнятся сами собой.
Создание
Я буду рассматривать создание LVM на уже установленной системе. Знание терминологии и принципов работы с ним в дальнейшем позволит найти в инсталляторе нужные пункты для создания логических томов на этапе установки системы.
Первый этап — это создание правильных разделов. Это такие разделы, которые LVM признает за свои и сможет при загрузке их корректно инициализировать. «Родной» тип разделов для LVM — 8E Linux LVM. Все, что будет дальше, не будет работать, если при создании разделов не указать приведенный корректный тип. Итак, создаем несколько разделов типа 8E с помощью любимого средства разбиения диска:
[root@localhost ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 1 61 489951 8e Linux LVM
/dev/sdb2 62 261 1606500 5 Extended
/dev/sdb5 62 122 489951 8e Linux LVM
/dev/sdb6 123 261 1116486 8e Linux LVM
Еще раз. Пример я привожу с виртуальной машины, чего и вам советую на этапе обучения.
Я создал три раздела для работы с LVM. Сколько их создавать и какого размера решает сам администратор. Например, никто не мешает отдать целиком весь диск (/dev/sdb в данном случае) под власть LVM. В том, как это сейчас сделал я, смысла искать не стоит :). Мой пример преследует только цели демонстрации работы с LVM.
ВНИМАНИЕ! Форматировать созданные разделы НЕ надо!
Следующее, что мы должны сделать — это инициализировать созданные разделы как физические тома:
[root@localhost ~]# pvcreate /dev/sdb1
Physical volume «/dev/sdb1» successfully created
[root@localhost ~]# pvcreate /dev/sdb5
Physical volume «/dev/sdb5» successfully created
[root@localhost ~]# pvcreate /dev/sdb6
Physical volume «/dev/sdb6» successfully created
Если нет сообщений об ошибках, можно смело шагать вперед.

Следующий шаг — это создание группы томов. Делается это командой vgcreate (еще раз подчеркиваю похожесть назв