- Введение
- Архитектура и терминология LVM
- Что такое диапазоны в LVM
- Примеры использования
- Обозначение физических устройств как физических томов
- Добавление физических томов в группу томов
- Создание логических томов из пула группы томов
- Форматирование и монтирование логических томов
- Добавление физического тома к группе томов
- Увеличение размера логического тома
- Уменьшение размера LVM
- Удаление тома LVM
- Удаление группы LVM
- Удаление физического тома из 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.