Введение в концепции, терминологию и операции LVM
Введение
LVM, или управление логическими томами, представляет собой технологию управления устройствами хранения, которая дает пользователям возможность объединять и абстрагировать физическое расположение компонентов устройств хранения для гибкого администрирования. Используя структуру ядра Linux для сопоставления устройств, текущая итерация LVM2 может использоваться для объединения существующих устройств хранения в группы и выделения логических единиц из объединенного пространства по мере необходимости.
Основными преимуществами LVM являются повышенная абстракция, гибкость и контроль. Логические тома могут иметь осмысленные имена, такие как «базы данных» или «корневая резервная копия». Размер томов также можно динамически изменять по мере изменения требований к пространству и мигрировать между физическими устройствами в пуле в работающей системе или экспортировать. LVM также предлагает расширенные функции, такие как моментальные снимки, чередование и зеркалирование.
В этом руководстве вы узнаете, как работает LVM, и попрактикуетесь в основных командах, чтобы быстро приступить к работе на «голом железе».
Архитектура и терминология LVM
Прежде чем углубляться в административные команды LVM, важно иметь базовое представление о том, как LVM организует устройства хранения, и некоторую используемую терминологию.
Структуры управления хранилищем LVM
LVM функционирует путем наложения абстракций поверх физических устройств хранения. Основные уровни, которые использует LVM, начиная с самого примитивного:
- Физические тома: Префикс утилиты LVM для физических томов —
pv...
. Это физически блокирует устройства или другие дисковые устройства (например, другие устройства, созданные устройством отображения устройств, такие как массивы RAID) и используются LVM в качестве исходного строительного материала для более высоких уровней абстракции. Физические тома — это обычные устройства хранения. LVM записывает заголовок в устройство, чтобы выделить его для управления. - Группы томов: Префикс утилиты LVM для групп томов —
vg...
. LVM объединяет физические тома в пулы хранения, известные как группы томов. Группы томов абстрагируются от характеристик базовых устройств и функционируют как унифицированное логическое устройство с объединенной емкостью хранения компонентов физических томов. - Логические тома: Префикс утилиты LVM для логических томов —
lv...
, общие утилиты LVM могут начинаться сlvm...
. Группа томов может быть разделена на любое количество логических томов. Логические тома функционально эквивалентны разделам на физическом диске, но обладают гораздо большей гибкостью. Логические тома — это основной компонент, с которым будут взаимодействовать пользователи и приложения.
LVM можно использовать для объединения физических томов в группы томов для унификации пространства хранения, доступного в системе. После этого администраторы могут сегментировать группу томов на произвольные логические тома, которые действуют как гибкие разделы.
Понимание экстентов
Каждый том в группе томов сегментирован на небольшие фрагменты фиксированного размера, называемые экстентами. Размер экстентов определяется группой томов. Все тома в группе соответствуют одному и тому же размеру экстента.
Экстенты физического тома называются физическими экстентами, а экстенты логического тома называются логическими экстентами. Логический том — это сопоставление, которое LVM поддерживает между логическими и физическими экстентами. Из-за этой взаимосвязи размер экстента представляет наименьший объем пространства, который может быть выделен LVM.
Экстенты лежат в основе большей части гибкости и мощности LVM. Логические экстенты, представленные LVM как единое устройство, не должны сопоставляться с непрерывными физическими экстентами. LVM может копировать и реорганизовывать физические экстенты, составляющие логический том, не отвлекая пользователей. Логические тома также можно расширять или уменьшать, добавляя или удаляя экстенты тома.
Общие случаи использования
Теперь, когда вы знакомы с некоторыми терминами и структурами, которые использует LVM, вы можете изучить некоторые распространенные способы использования LVM. Вы начнете с процедуры, которая будет использовать два физических диска для формирования четырех логических томов.
Пометка физических устройств как физических томов
Начните со сканирования системы на наличие блочных устройств, к которым LVM может получить доступ и которыми может управлять. Вы можете сделать это с помощью следующей команды:
- sudo lvmdiskscan
Вывод вернет все доступные блочные устройства, с которыми может взаимодействовать LVM:
Output /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 перезапишет текущее содержимое. Если у вас есть важные данные на вашем сервере, сделайте резервные копии, прежде чем продолжить.
Теперь, когда вы знаете, какие физические устройства вы хотите использовать, пометьте их как физические тома в LVM с помощью команды pvcreate
:
- sudo pvcreate /dev/sda /dev/sdb
Output Physical volume "/dev/sda" successfully created
Physical volume "/dev/sdb" successfully created
Это запишет заголовок LVM на устройства, чтобы указать, что они готовы к добавлению в группу томов.
Убедитесь, что LVM зарегистрировал физические тома, запустив pvs
:
- sudo pvs
Output PV VG Fmt Attr PSize PFree
/dev/sda lvm2 --- 200.00g 200.00g
/dev/sdb lvm2 --- 100.00g 100.00g
Обратите внимание, что оба устройства указаны в столбце PV
, что означает физический том.
Добавление физических томов в группу томов
Теперь, когда вы создали физические тома из своих устройств, вы можете создать группу томов. В большинстве случаев у вас есть только одна группа томов на систему для максимальной гибкости в распределении. Следующий пример группы томов называется LVMVolGroup
. Вы можете назвать свою группу томов как угодно.
Чтобы создать группу томов и добавить в нее оба физических тома, выполните:
- sudo vgcreate LVMVolGroup /dev/sda /dev/sdb
Output Volume group "LVMVolGroup" successfully created
Повторная проверка вывода pvs
покажет, что ваши физические тома теперь связаны с новой группой томов:
- sudo pvs
Output PV VG Fmt Attr PSize PFree
/dev/sda LVMVolGroup lvm2 a-- 200.00g 200.00g
/dev/sdb LVMVolGroup lvm2 a-- 100.00g 100.00g
Перечислите краткую информацию о группе томов с помощью vgs
:
- sudo vgs
Output VG #PV #LV #SN Attr VSize VFree
LVMVolGroup 2 0 0 wz--n- 299.99g 299.99g
Ваша группа томов в настоящее время состоит из двух физических томов, ноль логических томов и имеет общую емкость базовых устройств.
Создание логических томов из пула групп томов
Теперь, когда у вас есть доступная группа томов, вы можете использовать ее в качестве пула для выделения логических томов. В отличие от обычного разбиения на разделы, при работе с логическими томами вам не нужно знать структуру тома, поскольку LVM сопоставляет и обрабатывает ее за вас. Вам нужно только указать размер тома и имя.
В следующем примере вы создадите четыре отдельных логических тома из группы томов:
- Объем «проектов»: 10 ГБ
- Громкость 5G \www для веб-контента
- Объем 20G \db для базы данных
- Объем \рабочей области, который заполнит оставшееся пространство
Чтобы создать логические тома, используйте команду 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
Output Logical volume "projects" created.
Logical volume "www" created.
Logical volume "db" created.
Вы можете просмотреть логические тома и их отношение к группе томов, выбрав пользовательский вывод из команды vgs
:
- sudo vgs -o +lv_size,lv_name
Output 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
Output Logical volume "workspace" created.
Проверяя информацию о группе томов с помощью пользовательской команды vgs
, обратите внимание, что вы использовали все доступное пространство:
- sudo vgs -o +lv_size,lv_name
Output 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/имя_группы_томов/имя_логического_тома
/dev/mapper/имя_группы_томов-имя_логического_тома
Чтобы отформатировать четыре логических тома в файловой системе 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
в предпочитаемом вами текстовом редакторе. В следующем примере используется nano
:
- 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
После редактирования файла сохраните и выйдите. Если вы используете nano
, нажмите CTRL+c
, затем y
, затем ENTER
.
Теперь операционная система должна автоматически монтировать логические тома LVM при загрузке.
Заключение
Теперь у вас есть представление о различных компонентах, которыми LVM управляет для создания гибкой системы хранения, и о том, как настроить и запустить устройства хранения в настройке LVM.
Чтобы узнать больше о работе с LVM, ознакомьтесь с нашим руководством по использованию LVM с Ubuntu 18.04.