2013-07-08

Небольшой опыт работы с LVM

Менеджер логических томов (англ. Logical Volume Manager) - менеджер логических томов операционных систем Linux и OS/2. LVM - это метод распределения пространства жёсткого диска по логическим томам, размер которых можно легко менять, в отличие от разделов.

Уже давно, когда приходится устанавливать Linux, даже если кажется, что раздел будет один, использую разбивку диска с LVM, ведь все может поменяться. Да и home в отдельном разделе - это удобно.
Базовые понятия LVM:
  • Физический том (англ. physical volume [PV]) - физический жесткий диск или раздел.
  • Группа томов (англ. volume group [VG]) - группа физических томов.
  • Логический том (англ. logical volume [LV]) - аналогичен разделу (hda1, sdb3, etc) на не-LVM системах. По привычке, ниже буду называть тома разделами.
Логические разделы можно перемещать по дискам, менять размеры, расширять один раздел на несколько физических дисков (лично мне особенно нравится такая возможность). Так же, пишут, что с LVM проще делать бекапы, но я с этим еще не разбирался. Полная свобода и масса возможностей по сравнению с обычными разделами.
Раньше устанавливал LVM с заделом на будущее и вот этот час настал. Понадобилось увеличить место на системном разделе в Linux. К сожалению, на данный момент, такие операции не поддерживаются для примонтированных дисков. А это значит, что нужно либо загрузиться в режиме восстановления и войти в root-сессию, либо загрузить Linux live-версию со съемного носителя.
Что имеем:
  • Ubuntu 12.04 LTS.
  • HDD с LVM. /, /usr, /var, /tmp и /home примонтированы на отдельные логические разделы.
Проблема возникла, когда закончилось место в корневом разделе. Странно, что Ubuntu при установке выделила под него порядка 300 МБ.
Итак, аккуратно начинаем увеличивать системный раздел. Перед этим нужно "откусить" местечко от другого раздела. То есть сначала уменьшаем один раздел, затем увеличиваем другой.
Первое - изменяемый раздел должен быть отмонтирован.
Далее, нужно проверить на наличие ошибок:
> fsck РАЗДЕЛ
Затем, изменяем размер файловой системы и уже потом урезаем сам раздел.
Изменение размера файловой системы (здесь - ext4):
> resize2fs РАЗДЕЛ НОВЫЙ_РАЗМЕР
Уменьшение раздела:
> lvreduce -L НОВЫЙ_РАЗМЕР РАЗДЕЛ
Другой вариант, для одновременного изменения размеров и файловой системы и раздела (просто добавляем опцию "-r"):
> lvreduce -r -L НОВЫЙ_РАЗМЕР РАЗДЕЛ
Для увеличения разделов используется команда lvextend.
Из root-консоли у меня получилось только уменьшить размер файловой системы, а изменение раздела выбрасывало ошибку (статус 5). Ладно, хорошо, что хоть ничего не поломал.
Решил загрузиться с live-usb. Там в систему установил графическое средство для работы с LVM (system-config-lvm). С ним уже все прошло гладко - откуда надо "отрезал", куда надо "пришил".
Потерь данных обнаружено не было. Система опять заработала как новенькая.