Работа с LVM
Теория.
LVM (Logical Volume Manager), менеджер логических томов - это система управления дисковым пространством, абстрагирующаяся от физических устройств.
У LVM есть 3 уровня абстракции:
-
PV (Physical Volume) — раздел на диске, весь диск или же устройства программного и аппаратного RAID.
-
VG (Volume Group) — группа томов, объединяемые физические тома (PV) в группу или же создание единого диска, который можно дальше разбивать так, как нам хочется.
-
LV (Logical Volume) — логические разделы, раздел нашей новой группы томов (VG), который мы потом форматируем и используем как обычный раздел, обычного жёсткого диска.
Для наглядности рассмотрим следующую диаграмму:
sda1 sda2 sdb sdc <-- PV
| | | |
| | | |
+-------+- VG00 -+-------+ <-- VG
|
+-------+--------+-------+
| | | |
root usr home var <-- LV
| | | |
ext3 reiserfs reiserfs xfs <-- Файловые системы
Практика.
Кратка справка по командам.
Physical Volumes.
- pvcreate [device] — инициализация физического тома для использования в LVM.
- pvdisplay — отображение информации о физических томах.
- pvs — вывод всех физических томов с краткой информацией. Объем доступного и используемого пространства.
- pvscan — сканирование всех дисков на наличие физических томов.
- pvresize [device] — изменение размера физического то ма.
Volume Groups.
- vgcreate [volume-group] [physical-volume] — создание группы томов из одного или нескольких физических томов.
- vgextend [volume-group] [physical-volume] — добавление физического тома в существующую группу томов.
- vgreduce [volume-group] [physical-volume] — удаление физического тома из группы.
- vgdisplay — отображение информации о группах томов.
- vgs — вывод всех групп томов с краткой информацией.
- vgscan — сканирование всех дисков для обнаружения групп томов.
- vgremove [volume-group] — удаление группы томов (должна быть пустой).
- vgrename [old-name] [new-name] — переименование группы томов.
Logical Volumes.
- lvcreate -L [size] -n [name] [volume-group] — создание логического тома в группе.
- lvextend -L [size] [logical-volume] — увеличение размера логического тома.
- lvreduce -L [size] [logical-volume] — уменьшение размера логического тома.
- lvresize -L [size] [logical-volume] — изменение размера логического тома до заданного значения.
- lvdisplay — отображение информации о логических томах.
- lvs — вывод всех логических томов с краткой информацией.
- lvscan — сканирование всех дисков для обнаружения логических томов.
- lvrename [volume-group] [old-name] [new-name] — переименование логического тома.
Создание разделов.
Для начала нам нужно установить утилиту:
dnf install lvm2
Рассмотрим пример создания томов из дисков sdb и sdc с помощью LVM.
1. Инициализация.
Помечаем диски, что они будут использоваться для LVM:
pvcreate /dev/sdb /dev/sdc
напомним, что в качестве примера нами используются диски sdb и sdc.
Посмотреть, что диск может использоваться LVM можно командой:
pvdisplay
В нашем случае мы увидим:
"/dev/sdb" is a new physical volume of "1,00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb
VG Name
PV Size 1,00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID rR8qya-eJes-7AC5-wuxv-CT7a-o30m-bnUrWa
"/dev/sdc" is a new physical volume of "1,00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc
VG Name
PV Size 1,00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 2jIgFd-gQvH-cYkf-9K7N-M7cB-WWGE-9dzHIY
Где:
- PV Name — имя диска.
- VG Name — группа томов, в которую входит данный диск (в нашем случае пусто, так как мы еще не добавили его в группу).
- PV Size — размер диска.
- Allocatable — распределение по группам. Если NO, то диск еще не задействован и его необходимо для использования включить в группу.
- PE Size — размер физического фрагмента (экстента). Пока диск не добавлен в группу, значение будет 0.
- Total PE — количество физических экстентов.
- Free PE — количество свободных физических экстентов.
- Allocated PE — распределенные экстенты.
- PV UUID — идентификатор физического раздела.
2. Создание групп томов.
Инициализированные на первом этапе диски должны быть объединены в группы.
Группа может быть создана:
vgcreate vg01 /dev/sdb /dev/sdc
Где vg01 — произвольное имя создаваемой группы, а /dev/sdс и /dev/sdc — наши диски.
Просмотреть информацию о созданных группах можно командой:
vgdisplay
На что мы получим следующее:
--- Volume group ---
VG Name vg01
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 1,99 GiB
PE Size 4,00 MiB
Total PE 510
Alloc PE / Size 0 / 0
Free PE / Size 510 / 1,99 GiB
VG UUID b0FAUz-wlXt-Hzqz-Sxs4-oEgZ-aquZ-jLzfKz
Где:
- VG Name — имя группы.
- Format — версия подсистемы, используемая для создания группы.
- Metadata Areas — область размещения метаданных. Увеличивается на единицу с созданием каждой группы.
- VG Access — уровень доступа к группе томов.
- VG Size — суммарный объем всех дисков, которые входят в группу.
- PE Size — размер физического фрагмента (экстента).
- Total PE — количество физических экстентов.
- Alloc PE / Size — распределенное пространство: колическтво экстентов / объем.
- Free PE / Size — свободное пространство: колическтво экстентов / объем.
- VG UUID — идентификатор группы.
3. Создание логических томов.
Последний этап — создание логического раздела из группы томов ко мандой lvcreate. Ее синтаксис:
lvcreate [опции] [имя группы томов]
Примеры создания логических томов:
Cоздание тома на 1 Гб из группы vg01:
lvcreate -L 1G vg01
Cоздание тома с именем lv01 на 50 Мб из группы vg01:
lvcreate -L50 -n lv01 vg01
При создании тома используется 40% от дискового пространства группы vg01:
lvcreate -l 40%VG vg01
Использовать все свободное пространство группы vg01 при создании логического тома:
lvcreate -l 100%FREE -n lv01 vg01
также можно использовать %PVS — процент места от физического тома (PV); %ORIGIN — размер оригинального тома (применяется для снапшотов).
Посмотрим информацию о созданном томе:
lvdisplay
После выполнение команды увидим следующие:
--- Logical volume ---
LV Path /dev/vg01/lv01
LV Name lv01
VG Name vg01
LV UUID 4nQ2rp-7AcZ-ePEQ-AdUr-qcR7-i4rq-vDISfD
LV Write Access read/write
LV Creation host, time vln.dmosk.local, 2019-03-18 20:01:14 +0300
LV Status available
# open 0
LV Size 52,00 MiB
Current LE 13
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
Где:
- LV Path — путь к устройству логического тома.
- LV Name — имя логического тома.
- VG Name — имя группы томов.
- LV UUID — идентификатор.
- LV Write Access — уровень доступа.
- LV Creation host, time — имя компьютера и дата, когда был создан том.
- LV Size — объем дискового пространства, доступный для использования.
- Current LE — количество логических экстентов.
Создание файловой системы и монтирование тома.
Чтобы начать использовать созданный том, необходимо его отформатировать, создав файловую систему и примонтировать раздел в каталог.
1. Файловая система.
Процесс создания файловой системы на томах LVM ничем не отличается от работы с любыми другими разделами.
Например, для создания файловой системы ext4 вводим:
mkfs.ext4 /dev/vg01/lv01
Где vg01 — наша группа томов, lv01 — логический том.
Для создания, например, файловой системы xfs вводим:
mkfs.xfs /dev/vg01/lv01
2. Монтирование.
Как и в случае с файловой системой, процесс монтирования не сильно отличается от разделов, созданных другими методами.
Для разового монтирования пользуемся командой:
mount /dev/vg01/lv01 /mnt
Где /dev/vg01/lv01 — созданный нами логический том, /mnt — раздел, в который мы хотим примонтировать раздел.
Для постоянного монтирования раздела добавляем строку в /etc/fstab любым удобным методом:
/dev/vg01/lv01 /mnt ext4 defaults 1 2
В данном примере мы монтируем при загрузке системы том /dev/vg01/lv01 в каталог /mnt где используется файловая система ext4.
Проверяем настройку fstab, смонтировав раздел:
mount -a
Проверяем, чт о диск примонтирован:
df -hT
3. Просмотр информации.
Разберемся, как получить информацию о дисковых накопителях в системе:
- Для общего представления дисков, разделов и томов вводим:
lsblk
Мы получим следующие:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
sda1 8:1 0 1G 0 part /boot
sda2 8:2 0 29G 0 part
sys-root 253:0 0 27G 0 lvm /
sys-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 1G 0 disk
vg01-lv01-real 253:3 0 1G 0 lvm
vg01-lv01 253:2 0 1G 0 lvm /mnt
vg01-sn01 253:5 0 1G 0 lvm
sdc 8:32 0 1G 0 disk
vg01-lv01-real 253:3 0 1G 0 lvm
vg01-lv01 253:2 0 1G 0 lvm /mnt
vg01-sn01 253:5 0 1G 0 lvm
vg01-sn01-cow 253:4 0 500M 0 lvm
vg01-sn01 253:5 0 1G 0 lvm
sdd 8:48 0 1G 0 disk
Как видим, коман да отображает корневое блочное устройство, какие разделы из него сделаны и в какие логические тома организованы из некоторых из разделов.
- Получить информацию о проинициализированных для LVM дисков можно двумя способами:
Кратко:
pvs
Подробно:
pvdisplay