Управление и настройка LVM в Linux. Понятие LVM

Введение

LVM, или Logical Volume Management (управление логическими томами), — это технология управления устройствами хранения, предоставляющая пользователям возможность объединять и распределять физическое пространство устройств хранения для более простого и гибкого администрирования. Используя модуль отображения устройств ядра Linux (Device mapper) LVM может группировать устройства хранения и выделять из объединенного пространства необходимые логические структуры.

Основные преимущества LVM — высокий уровень абстрактности, гибкости и контроля. Логическим томам можно присваивать информативные имена, например «databases» или «root-backup». Можно динамически менять их размер при изменении требований к объему дискового пространства, переносить между физическими устройствами в рамках пула текущей системы и легко экспортировать. Кроме того, в LVM есть функции создания образов (snapshotting), «расслоения» (striping) и зеркального отображения (mirroring).

Данное руководство посвящено обзору принципов работы LVM и базовым командам, необходимым в работе.

Архитектура и терминология LVM

Перед непосредственным рассмотрением команд администрирования LVM важно разобраться с базовыми принципами организации устройств хранения в LVM и некоторыми используемыми терминами.
Структуры управления пространством LVM
Работа LVM основана на надстройке нескольких уровней логической структуры над физическими устройствами хранения. Вот основные уровни структуры LVM, начиная с самых простых.
Физические тома:
∙ Обозначение: pv…
∙ Описание: физические блочные устройства или другие дисковые устройства (например, другие устройства, созданные при помощи модуля отображения устройств, типа RAID-           массивов). Используются LVM в качестве базовых элементов для построения более высоких уровней логической структуры. Физические тома — это обычные устройства                           хранения. Для управления LVM присваивает устройству заголовок.
Группы томов:
∙ Обозначение: vg…
∙ Описание: LVM объединяет физические тома в пулы пространства, называемые группами томов. Группы томов не учитывают характеристики лежащих в их основе устройств и           работают как унифицированные логические устройства с суммарным объемом пространства объедиенных физических томов.
Логические тома:
∙ Обозначение: lv…
∙ Описание: Группу томов можно разделить на любое количество логических томов. Логические тома функционально эквивалентны разделам на физическом диске, но                            предоставляют большую гибкость. Это основной компонент, с которым взаимодействуют пользователи и приложения.

Таким образом, LVM можно использовать для объединения физических томов в группы для унификации дискового пространства системы. Затем администраторы могут разделить группу томов на произвольные логические тома, которые работают как гибкие разделы.

Что такое диапазоны в LVM

Каждый том в группе разделен на маленькие элементы фиксированного размера, называемые диапазонами. Размер диапазонов определяется группой томов (для всех томов в группе согласовывается единый размер диапазона).
Диапазоны физических томов называются физическими диапазонами, а логических томов — логическими диапазонами. Логический том — это просто соответствие, установленное LVM между логическими и физическими диапазонами. Благодаря этой связи размер одного диапазона является минимальным объемом пространства, который моно выделить при помощи LVM.

Диапазоны — основа силы и гибкости LVM. Логические диапазоны, представленные при помощи LVM в виде унифицированного устройства, не обязательно должны соответствовать непрерывно расположенным физическим диапазонам. LVM может незаметно для пользователя осуществлять копирование и реорганизацию физических диапазонов, составляющих логический том. Также логические тома можно легко увеличить или уменьшить, просто добавив или удалив диапазоны.

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

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

Обозначение физических устройств как физических томов

Первый шаг — сканирование системы на наличие блочных устройств, которые видимы и управляемы с помощью LVM. Это осуществляется следующей командой:

sudo lvmdiskscan

На выходе будут отображены все доступные блочные устройства, с которыми может работать LVM:

/dev/ram0 [ 64.00 MiB]
/dev/sda [ 200.00 GiB]
/dev/ram1 [ 64.00 MiB]
. . .

/dev/ram15 [ 64.00 MiB]
/dev/sdb [ 100.00 GiB]
2 disks
17 partitions
0 LVM physical volume whole disks
0 LVM physical volumes

Мы видим, что на данный момент в системе есть два диска и 17 разделов. Разделы представляют собой главным образом разделы типа /dev/ram*, используемые системой как RAM-диски для повышения производительности. Диски в данном примере — это /dev/sda объемом 200 Гб и /dev/sdb объемом 100 Гб.

Важно: Убедитесь, что устройства, которые вы планируете использовать с LVM, не содержат важных данных, так как использование LVM уничтожит все ранее имеющееся содержимое. Если на вашем сервере уже есть важные данные, создайте резервную копию.

Теперь, выбрав физические устройства для использования, можно отметить их как физические тома при помощи команды pvcreate:

sudo pvcreate /dev/sda /dev/sdb

Physical volume "/dev/sda" successfully created
Physical volume "/dev/sdb" successfully created

Устройствам будут присвоены заголовки LVM, после чего их можно будет добавить к группе томов. При помощи команды pvs можно быстро убедиться, что LVM зарегистрировала физические тома:

sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sda lvm2 --- 200.00g 200.00g
/dev/sdb lvm2 --- 100.00g 100.00g

Оба устройства располагаются в столбце PV, обозначающем физические тома (Physical Volume).

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

Создав физические тома, можно создать группу томов. Нужно выбрать имя группы томов, которое должно быть уникальным. Как правило, большую часть времени в системе используется только одна группа томов для гибкости распределения пространства. Для простоты назовем нашу группу LVMVolGroup. Чтобы создать группу томов и добавить в нее оба физических тома, нужно выполнить следующую команду:

sudo vgcreate LVMVolGroup /dev/sda /dev/sdb
Volume group "LVMVolGroup" successfully created

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

sudo pvs

PV VG Fmt Attr PSize PFree
/dev/sda LVMVolGroup lvm2 a-- 200.00g 200.00g
/dev/sdb LVMVolGroup lvm2 a-- 100.00g 100.00g

Следующая команда позволяет получить краткую информацию о самой группе томов:

sudo vgs

VG #PV #LV #SN Attr VSize VFree
LVMVolGroup 2 0 0 wz--n- 299.99g 299.99g

Группа томов содержит два физических тома и ни одного логического тома, а ее объем равен суммарному объему входящих в нее устройств.

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

Теперь мы можем использовать группу томов в качестве пула для выделения логических томов. В отличие от обычных разделов при работе с логическими томами вам не нужно знать структуру тома, так как LVM занимается ей самостоятельно. От вас требуется только указать размер и имя тома. Создадим в нашей группе четыре отдельных логических тома:

  • том «projects» на 10 Гб
  • том «www» на 5 Гб для веб-контента
  • том «db» на 20 Гб для базы данных
  • том «workspace», занимающий все оставшееся пространство

Логические тома создаются командой lvcreate. Опция -n указывает группу томов, в которой мы будем создавать том. Для непосредственного задания размера можно воспользоваться опцией -L. Если вы хотите указать размер в диапазонах, воспользуйтесь опцией -l.

Создадим первые три логических тома с опцией -L:

sudo lvcreate -L 10G -n projects LVMVolGroup
sudo lvcreate -L 5G -n www LVMVolGroup
sudo lvcreate -L 20G -n db LVMVolGroup
Logical volume "projects" created.
Logical volume "www" created.
Logical volume "db" created.

Логические тома и их связь с группой томов можно просматривать, настроив вывод команды vgs:

sudo vgs -o +lv_size,lv_name

VG #PV #LV #SN Attr VSize VFree LSize LV LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 10.00g projects
LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 5.00g www
LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 20.00g db

В двух последних столбцах результата видно, какой объем пространства выделен на логические тома.

Теперь можно выделить остальное пространство группы тому «workspace» при помощи флага -l, который работает с диапазонами. Также можно задать пространство в процентах. Нам нужно все оставшееся свободное пространство, поэтому мы укажем 100%FREE:

sudo lvcreate -l 100%FREE -n workspace LVMVolGroup
Logical volume "workspace" created.

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

sudo vgs -o +lv_size,lv_name

VG #PV #LV #SN Attr VSize VFree LSize LV
LVMVolGroup 2 4 0 wz--n- 299.99g 0 10.00g projects LVMVolGroup 2 4 0 wz--n- 299.99g 0 5.00g www
LVMVolGroup 2 4 0 wz--n- 299.99g 0 20.00g db
LVMVolGroup 2 4 0 wz--n- 299.99g 0 264.99g workspace

После создания тома «workspace» группа «LVMVolGroup» полностью распределена.

Форматирование и монтирование логических томов

Теперь мы можем пользоваться логическими томами как нормальными блочными устройствами. Логические устройства доступны в директории /dev как любые другие устройства хранения. Их можно найти в двух местах:

/dev/volume_group_name/logical_volume_name
/dev/mapper/volume_group_name-logical_volume_name

Поэтому для их форматирования в файловой системе Ext4 можно выполнить следующие команды:

sudo mkfs.ext4 /dev/LVMVolGroup/projects
sudo mkfs.ext4 /dev/LVMVolGroup/www
sudo mkfs.ext4 /dev/LVMVolGroup/db
sudo mkfs.ext4 /dev/LVMVolGroup/workspace

либо такие команды:

sudo mkfs.ext4 /dev/mapper/LVMVolGroup-projects
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-www
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-db
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-workspace

После форматирования можно создать точки монтирования:

sudo mkdir -p /mnt/{projects,www,db,workspace}

Затем можно смонтировать логические тома в соответствующее месторасположение:

sudo mount /dev/LVMVolGroup/projects /mnt/projects
sudo mount /dev/LVMVolGroup/www /mnt/www
sudo mount /dev/LVMVolGroup/db /mnt/db
sudo mount /dev/LVMVolGroup/workspace /mnt/workspace

Для постоянного монтирования добавьте устройства в /etc/fstab как обычные блочные устройства:

sudo nano /etc/fstab
. . .
/dev/LVMVolGroup/projects /mnt/projects ext4 defaults,nofail 0 0
/dev/LVMVolGroup/www /mnt/www ext4 defaults,nofail 0 0
/dev/LVMVolGroup/db /mnt/db ext4 defaults,nofail 0 0
/dev/LVMVolGroup/workspace /mnt/workspace ext4 defaults,nofail 0 0

Теперь операционная система должна автоматически монтировать логические тома LVM при загрузке.

Добавление физического тома к группе томов

Для расширения группы томов дополнительными физическими томами используется команда vgextend с аргументами названий группы томов и физических томов. Можно указать несколько устройств:

sudo vgextend имя_группы_томов /dev/sdc

Физический том будет добавлен к группе, расширяя объем доступного пространства.

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

Одно из главных преимуществ LVM — гибкость в работе с логическими томами. Можно легко менять их размер и количество, не останавливая систему.

Для увеличения размера логического тома используется команда lvresize. Флаг -L применяется для задания нового размера. При помощи символа «+» можно также указать относительный размер, тогда LVM увеличит размер логического тома на указанную величину. Для автоматического изменения размера файловой системы используйте флаг —resizefs.

Для корректного задания имени нужно сначала указать группу томов, а затем имя логического тома через слэш:

sudo lvresize -L +5G --resizefs LVMVolGroup/test

Размер логического тома test в группе LVMVolGroup и его файловой системы будут увеличены на 5 Гб

Можно не указывать опцию —resizefs и воспользоваться стандартными средствами файловой системы, например, для Ext4 следующие команды позволят добиться того же результата:

sudo lvresize -L +5G LVMVolGroup/test
sudo resize2fs /dev/LVMVolGroup/test

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

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

Для уменьшения логического тома прежде всего требуется выполнить резервное копирование данных. После этого нужно проверить объем используемого пространства, чтобы оценить, до какого размера можно уменьшить логический том. В данном случае используется чуть больше 521 Мб:

df -h
Filesystem Size Used Avail Use% Mounted on
. . .
/dev/mapper/LVMVolGroup-test 4.8G 521M 4.1G 12% /mnt/test

Затем нужно размонтировать файловую систему командой umount, в отличие от расширения при снижении размера это обязательно:

cd ~
sudo umount /dev/LVMVolGroup/test

Теперь нужно проверить файловую систему командой fsck , указав ее тип с опцией -t. Для дополнительной проверки можно воспользоваться опцией -f:

sudo fsck -t ext4 -f /dev/LVMVolGroup/test

После проверки файловой системы нужно внутренними средствами уменьшить ее размер. Наиболее безопасный вариант для исключения потери данных — оставить достаточный запас. В нашем случае новый размер — 3 Гб.

sudo resize2fs -p /dev/LVMVolGroup/test 3G

После завершения указанных операций можно изменить размер логического тома до той же величины при помощи команды lvresize с флагом -L:

sudo lvresize -L 3G LVMVolGroup/test

Вы увидите предупреждение о возможности потери данных. После удаления логического тома снова проверьте файловую систему:

sudo fsck -t ext4 -f /dev/LVMVolGroup/test

Если все работает корректно, можно снова ее смонтировать обычной командой mount:

sudo mount /dev/LVMVolGroup/test /mnt/test

Теперь ваш логический том будет уменьшен до нужной величины.

Удаление тома LVM

Для удаления логического тома используется команда lvremove. Если он смонтирован, то его нужно предварительно размонтировать:

cd ~
sudo umount /dev/LVMVolGroup/test
sudo lvremove LVMVolGroup/test

Будет запрошено подтверждение процедуры, если вы уверены, введите Y.

Удаление группы LVM

Для удаления целой группы томов со всеми логическими томами используется команда vgremove. Перед этим нужно удалить все логические тома, как минимум размонтировать их:

sudo umount /dev/LVMVolGroup/www
sudo umount /dev/LVMVolGroup/projects
sudo umount /dev/LVMVolGroup/db

После этого можно удалить всю группу, указав ее имя команде vgremove:

sudo vgremove LVMVolGroup

Будет запрошено подтверждение удаления. Если в группе ещё остались логические тома, нужно будет подтвердить удаление каждого из них.

Удаление физического тома из LVM

Процедура удаления физического тома из LVM зависит от того, используется ли устройство. Если да, то нужно будет перенести его физические диапазоны в другое месторасположение. Это требует достаточного количества других физических томов в группе.

При наличии достаточного объема физических томов для переноса данных перенесите их из удаляемого тома командой pvmove:

sudo pvmove /dev/sda

В зависимости от размера томов и объема переносимых данных этот процесс может потребовать некоторого времени.

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

sudo vgreduce LVMVolGroup /dev/sda

После этого при помощи команды pvremove можно удалить маркер физического тома и использовать устройство для других целей или совсем удалить его из системы:

sudo pvremove /dev/sda

Заключение

Мы рассмотрели различные компоненты, используемые LVM для создания гибкой системы дискового пространства, а также разобрались, как управлять ими и настроить работу устройств хранения в LVM.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

ИТ Проффи

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: