вторник, 21 апреля 2009 г.

LVM

Описание

LVM (свежая версия LVM2) - это система управления дисковым пространством, абстрагирующаяся от физических устройств. Она позволяет эффективно использовать и легко управлять дисковым пространством. LVM обладает хорошей масштабируемостью, уменьшает общую сложность системы. У логических томов, созданных с помощью LVM, можно легко изменить размер, зашифровать, скопировать, переместить, а их названия могут нести большую смысловую нагрузку, в отличие от традиционных /dev/sda, /dev/hda...

Как это выглядит

LVM позволяет объединить несколько физических партиций в единую группу томов (или несколько групп). Внутри этой группы, независимо от количества входящих в нее физических партиций, можно создавать логические тома (logical volumes).

Проще говоря внутри LVM-партиций (pv), объединенных в одну группу (vg) вы можете создать сколько нужно логических томов (lv), причем размер их можно будет менять динамически внутри группы даже не отмонтируя тома!

Наглядно эту цепочку можно представить так:

Жесткий диск -> Физические партиции -> Группа томов -> Логическая партиция -> Файловая система

Жесткий диск разбивается на Физические партиции (hda3, hd5), они помечаются как pv (команда pvcreate), потом они все объединяются в логическую Группу томов vg (volume group) и все их место становится доступным местом внутри этой группы. Далее в группе уже создаются логические тома lv (logical volume), разделяющие между собой пространство внутри vg (Группы томов), они будут представлять собой устройства монтирования для /home, /usr и т.п. Затем Логическая партиция форматируется в конечную файловую систему (reiserfs, ext3), и монтируется в систему. Эти логические тома можно изменять в размере внутри группы, а можно расширить место в самой группе, добавив туда еще несколько физических партиций. Также потом эти тома можно зеркалировать, переносить, делать бекапы, шифровать и многое другое.

Зачем это нужно

Позже по мере работы можно добавлять новые физические партиции (отформатированные под LVM). То есть к примеру при покупке нового винчестера или создании нового раздела на старом - его можно будет отформатировать под LVM и подключить к уже существующим томам. Место для этих томов увеличится и размер любого из томов (или сразу нескольких) можно будет изменить.

Разбиение на много логических томов полезно как для защиты от переполнения (при переполнении одного раздела - вся система не становится, а продолжает работать), так и для безопасности (к примеру /tmp подмонтировать как noexec, а /etc к примеру как ro).

Более того, при LVM вы совершенно можете не заботиться о размере раздела, т.к. его можно изменить в любое время, а еще можно подключать новое "свободное место" для этих разделов даже с другого физического носителя по типу RAID-систем. А внутри создавать уже логические тома на любимой для вас файловой системе(ext2, ext3, reiserfs и пр.).

Пример работы с LVM

Загрузка модуля

modprobe dm-mod

Подготовка партиций

Подготовка физических партиций hda3 и hda6 для работы в LVM2:

pvcreate /dev/hda3 /dev/hda6

(физические разделы должны существовать и иметь тип 8E)

Создание Группы томов

Создаем группу томов с именем vg, и включаем туда физическую партицию hda3

vgcreate vg /dev/hda3

Теперь группа vg содержит ровно столько места, сколько имеет hda3

Расширение группы томов

Добавить физическую партицию hda6 к примеру к уже существующей группе vg можно так:

vgextend vg /dev/hda6

Теперь группа vg содержит уже суммарное место разделов hda3 и hda6.

Вообще авторы LVM не советуют подключать и расширять группы без надобности. Они советуют разбить винчестер на много небольших партиций (к примеру 160ГБ на 8 разделов по 20ГБ). И подключать их в группы по мере необходимости в увеличении тома, т.к. увеличить раздел всегда проще чем уменьшить его. Посему и логические тома (logical volumes) лучше начинать с малых размеров, а при необходимости - подключать новые партиции и увеличивать размер томов.

Создание логических томов

Создать логические тома для разделов к примеру:

/home 2G
/opt 2G
/tmp 1G

можно командами:

lvcreate -L2G -nhome vg
lvcreate -L2G -nopt vg
lvcreate -L1G -ntmp vg

В результате позже появятся устройства /dev/vg/home, /dev/vg/opt, /dev/vg/tmp, которые можно будет уже форматировать в файловые системы.

Увеличение размера

Увеличение размера тома

Увеличить к примеру раздел /var можно будет командой

lvextend -L+1G /dev/vg/var

если конечно вам позволяет место. Узнать о свободном месте можно командами pvs, vgs. Увеличение размера уже после отформатирования можно будет делать даже неотмонтируя устройства. Для этого надо будет собрать пакет для работы с reiserfs (или reiser4).

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

После увеличения размера логического тома, следует увеличить размер файловой системы:

для ext3:
resize2fs -f /dev/vg/var

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

Уменьшить размер значительно сложнее чем увеличить. По этому-то и рекомендуется изначально делать все разделы маленькими, а потом их увеличивать.

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

Тут нет online-изменения, как при увеличении. Для уменьшения размера придется файловую систему отмонтировать:

umount /dev/vg/usr

Внимание! Ни в коем случае не используйте umount -f или umount -l, если система говорит что раздел занят! Это может повредить данные при изменении размера. Лучше подождите пока он освободиться, переведите систему в readonly (mount -o remount,rw /dev/vg/var), или даже перезагрузитесь.

Затем необходимо уменьшить саму файловую систему (рекомендуется сделать бекап, обеспечить бесперебойное питание, и точно знать что свободного места больше, чем размер желаемого уменьшения).

resize_reiserfs -s-2G /dev/vg/usr

Этот процесс достаточно долгий, зависит от размера и количества файлов на файловой системе.

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

Теперь уменьшаем сам том:

lvreduce -L-2G /dev/vg/usr

Все. Файловую систему можно примонтировать обратно:

mount -treiserfs /dev/vg/usr /usr

После уменьшения размера рекомендуется делать проверку fsck файловой системы.

Поиск существующих томов

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

vgscan
vgchange -a y
vgmknodes vg


успешно скопировано с : http://belgorod.lug.ru/wiki/index.php/LVM

Комментариев нет: