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

Пример №1 — Разметка дисков с помощью LVM
Пример №2 — Уменьшение размера логического тома
Пример №3 — Увеличение размера логического тома
Пример №4 — Удаление логического тома
Пример №5 — Добавление нового диска к группе томов
Пример №6 — Удаление физического диска из группы томов
Пример №7 — Расширение корневого раздела типа LVM

Пример №1 — Разметка дисков с помощью LVM

Предположим, что мы имеем два неразмеченных диска подключенных к компьютеру. Теперь попробуем разметить их с помощью LVM и создать структуру как на схеме 1.

Выполним команду:

[user@localhost ~]$ sudo fdisk -l
[sudo] пароль для user:
Диск /dev/sda: 32 GiB, 34359738368 байт, 67108864 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0xfa2fa11b
Устр-во Загрузочный начало Конец Секторы Размер Идентификатор Тип
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 67108863 65009664 31G 8e Linux LVM
Диск /dev/sdb: 10 GiB, 10737418240 байт, 20971520 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Диск /dev/sdc: 10 GiB, 10737418240 байт, 20971520 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Диск /dev/mapper/ro-root: 28 GiB, 30056382464 байт, 58703872 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Диск /dev/mapper/ro-swap: 3 GiB, 3221225472 байт, 6291456 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт

Команда показывает диски и их разделы. Среди остальных дисков мы видим 2 диска по 10 Гб. Диск /dev/sdb: 10 GiB и Диск /dev/sdc: 10 GiB.

Создание физических томов
Сначала необходимо создать физические тома в окружении LVM из /dev/sdb и /dev/sdc
Для этого используем следующую команду:

[user@localhost ~]$ sudo pvcreate /dev/sdb /dev/sdc
[sudo] пароль для user:
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.

Посмотрим, что у нас получилось с помощью команды pvs, которая покажет информацию о физических томах:

[user@localhost ~]$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 ro lvm2 a-- <31,00g 4,00m
/dev/sdb lvm2 --- 10,00g 10,00g
/dev/sdc lvm2 --- 10,00g 10,00g

Основные столбцы которые нам интересны:

PV — здесь указываются физические тома
VG — принадлежность к логической группе
Fmt — формат тома
PSize — размер физического том
/dev/sda2 — это физический том, который был создан при установке РЕД ОС и на нем располагается система, но также видим, что создались два новых физических тома — /dev/sdb и /dev/sdc размером 10 Гб и формат их LVM2. Можем также заметить, что пока наши тома не включены ни в какую логическую группу, в отличии от /dev/sda2 который находится в логической группе ro.

Более подробную информацию о физических томах выводит команды: pvdisplay

Создание группы логических томов
Итак, физические тома созданы, приступим к созданию логической группы, для этого выполняем команду:

[user@localhost ~]$ sudo vgcreate vgdata /dev/sdb /dev/sdc
[sudo] пароль для user:
Volume group "vgdata" successfully created

здесь vgdata — имя логической группы, /dev/sdb и /dev/sdc — физические тома,

таким образом мы создали логическую группу vgdata из двух физических томов.

Давайте посмотрим информацию о созданной логической группе vgdata

[user@localhost ~]$ sudo vgdisplay vgdata
--- Volume group ---
VG Name vgdata
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 19,99 GiB
PE Size 4,00 MiB
Total PE 5118
Alloc PE / Size 0 / 0
Free PE / Size 5118 / 19,99 GiB
VG UUID rmdGbk-Sy5Y-bPns-ufg4-vyV2-Zvez-8v1ayB

Обратите внимание, что размер vgdata стал суммарно равен двум физическим томам, на это указывает поле VG Size.

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

Следующий уровень абстракции это логические тома, которые создаются на логической группе томов.
Создадим три тома как на схеме 1 — mydocs, films и music

[user@localhost ~]$ sudo lvcreate -L 5G -n mydocs vgdata

В данной команде:

-L 5G — указывает на размер логического тома;
-n — задает имя тома;
vgdata — указываем на какой группе создавать логический том.

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

[user@localhost ~]$ sudo lvdisplay
--- Logical volume ---
LV Path /dev/ro/swap
LV Name swap
VG Name ro
LV UUID O0Y4pj-Xseg-NeCQ-H1yk-nKif-as6R-zR1zKf
LV Write Access read/write
LV Creation host, time localhost, 2020-06-22 10:46:11 +0300
LV Status available
# open 2
LV Size 3,00 GiB
Current LE 768
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 254:1
--- Logical volume ---
LV Path /dev/ro/root
LV Name root
VG Name ro
LV UUID 9rPYsg-MKbM-DpLK-L1NN-PvcY-RrSm-2aNrV1
LV Write Access read/write
LV Creation host, time localhost, 2020-06-22 10:46:12 +0300
LV Status available
# open 1
LV Size 27,99 GiB
Current LE 7166
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 254:0
--- Logical volume ---
LV Path /dev/vgdata/mydocs
LV Name mydocs
VG Name vgdata
LV UUID A6q4tK-3KEO-UGla-bj3t-0cZB-3Had-1bBdBH
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-08-07 14:31:14 +0300
LV Status available
# open 0
LV Size 5,00 GiB
Current LE 1280
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 254:2

Видим три логических тома: /dev/ro/swap — том файла подкчачки , /dev/ro/root — системный корневой раздел и наш только что созданный том /dev/vgdata/mydocs

Создадим второй логический том films:

[user@localhost ~]$ sudo lvcreate -L 10G -n films vgdata

Для третьего тома music, используем все оставшееся свободное пространство, для этого в команде укажем параметр -l 100%FREE:

[user@localhost ~]$ sudo lvcreate -l 100%FREE -n music vgdata

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

[user@localhost ~]$ sudo lvs
LV VG Attr LSize
root ro -wi-ao---- 27,99g
swap ro -wi-ao---- 3,00g
films vgdata -wi-a----- 10,00g 
music vgdata -wi-a----- 4,99g 
mydocs vgdata -wi-a----- 5,00g

Из вывода команды видно, что все три логические тома films, music и mydoc входят в группу vgdata.
Более подробный вывод показывает команда lvdisplay.

Создание файловой системы и монтирование
Следующим шагом будет создание файловой системы на логических томах и в дальнейшем ее монтирование. Приступим к созданию файловой системы ext4 на логических томах.
Для этого выполним команды:

[user@localhost ~]$ sudo mkfs.ext4 /dev/vgdata/mydocs
[user@localhost ~]$ sudo mkfs.ext4 /dev/vgdata/films
[user@localhost ~]$ sudo mkfs.ext4 /dev/vgdata/music

А теперь смонтируем созданные разделы mydocs, films и music
Но, предварительно создадим для них одноименные каталоги, в качестве точки монтирования.

[user@localhost ~]$ sudo mkdir /media/mydocs /media/films /media/music

Теперь выполним команды монтирования:

[user@localhost ~]$ sudo mount /dev/vgdata/mydocs /media/mydocs/
[user@localhost ~]$ sudo mount /dev/vgdata/films /media/films/
[user@localhost ~]$ sudo mount /dev/vgdata/music /media/music/

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

Пример №2 — Уменьшение размера логического тома

Представим, что нам потребовалось уменьшить раздел films (/dev/vgdata/films), пусть новый размер раздела будет 2 Гб.
Посмотрим размеры смонтированных дисков перед уменьшением:

[user@localhost ~]$ sudo df -H
Файловая система Размер Испол Дост Испол%
/dev/mapper/vgdata-mydocs 5,2G 21M 4,9G 1% /media/mydocs
/dev/mapper/vgdata-films 11G 38M 9,9G 1% /media/films
/dev/mapper/vgdata-music 5,2G 21M 4,9G 1% /media/music

Перед уменьшением необходимо отмонтировать устройства /dev/vgdata/films:

[user@localhost ~]$ sudo umount /dev/vgdata/films

Теперь выполним команду уменьшения размера файловой системы до 2 Гб:

[user@localhost ~]$ sudo resize2fs /dev/vgdata/films 2G
resize2fs 1.42.9 (28-Dec-2013)
Please run 'e2fsck -f /dev/vgdata/films' first.

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

[user@localhost ~]$ sudo e2fsck -f /dev/vgdata/films
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vgdata/films: 11/655360 files (0.0% non-contiguous), 83137/2621440 blocks

Пробуем еще раз запустить уменьшение:

[user@localhost ~]$ sudo resize2fs /dev/vgdata/films 2G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vgdata/films to 524288 (4k) blocks.
The filesystem on /dev/vgdata/films is now 524288 blocks long.

А теперь изменяем размер логического тома:

[user@localhost ~]$ sudo lvreduce -L 2G /dev/vgdata/films
WARNING: Reducing active logical volume to 2,00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vgdata/films? [y/n]: y
Size of logical volume vgdata/films changed from 10,00 GiB (2560 extents) to 2,00 GiB (512 extents).
Logical volume vgdata/films successfully resized.

Примонтирум раздел и посмотрим размер файловой системы:

[user@localhost ~]$ sudo mount /dev/vgdata/films /media/films/
[user@localhost ~]$ sudo df -H
/dev/mapper/vgdata-mydocs 5,2G 21M 4,9G 1% /media/mydocs
/dev/mapper/vgdata-music 5,2G 21M 4,9G 1% /media/music
/dev/mapper/vgdata-films 2,0G 26M 1,9G 2% /media/films

Как видим новый размер тома films стал 2Гб.

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

Перед увеличением размера тома посмотрим свободное место в логической группе:

[user@localhost ~]$ sudo vgdisplay vgdata
--- Volume group ---
VG Name vgdata
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 11
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 2
Act PV 2
VG Size 19,99 GiB
PE Size 4,00 MiB
Total PE 5118
Alloc PE / Size 3070 / 11,99 GiB
Free PE / Size 2048 / 8,00 GiB
VG UUID rmdGbk-Sy5Y-bPns-ufg4-vyV2-Zvez-8v1ayB

Видно что в группе свободно 8 Гб, это тот размер который освободился от тома /dev/vgdata/films

Возьмем их и добавим к /dev/vgdata/music, тем самым увеличив размер тома music на 8 Гб.
В отличие от уменьшения, увеличение размера логического тома происходит “на лету” без необходимости размонтирования файловой системы.
Выполняем команду:

[user@localhost ~]$ sudo lvextend -L +8G /dev/vgdata/music
Size of logical volume vgdata/music changed from 4,99 GiB (1278 extents) to 8,00 GiB (2048 extents).
Logical volume vgdata/music successfully resized.

Теперь необходимо расширить файловую систему на этом логическом томе:

[user@localhost ~]$ sudo resize2fs /dev/vgdata/music
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vgdata/music is mounted on /media/music; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/vgdata/music is now 3405824 blocks long.

Смотрим получившейся размер размдела music:

[user@localhost ~]$ sudo df -h
Файловая система Размер Использовано Дост Использовано%
/dev/mapper/vgdata-mydocs 4,8G 20M 4,6G 1% /media/mydocs
/dev/mapper/vgdata-music 13G 25M 13G  1% /media/music
/dev/mapper/vgdata-films 1,9G 25M 1,8G 2% /media/films

Пример №4 — Удаление логического тома

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

[user@localhost ~]$ sudo umount /dev/vgdata/films

Команда удаления:

[user@localhost ~]$ sudo lvremove /dev/vgdata/films
Do you really want to remove active logical volume vgdata/films? [y/n]: y
Logical volume "films" successfully removed

В результате на логической группе освободится место.

Пример №5 — Добавление нового диска к группе томов

Для эксперимента мы подключили диск размером 2 Гб к нашей тестовой системе и попробуем включить его в логическую группу LVM — /dev/vgdata

Выведем текущую информацию о дисках:

[user@localhost ~]$ sudo lvmdiskscan
/dev/ro/root [ 27,99 GiB]
/dev/sda1 [ 1,00 GiB]
/dev/ro/swap [ 3,00 GiB]
/dev/sda2 [ <31,00 GiB] LVM physical volume
/dev/vgdata/mydocs [ 5,00 GiB]
/dev/vgdata/music [ 12,99 GiB]
/dev/sdb [ 10,00 GiB] LVM physical volume
/dev/sdc [ 10,00 GiB] LVM physical volume
/dev/sdd [ 2,00 GiB]

Новый диск — это /dev/sdd, размер его 2 Гб, но как можем видеть тип его не является LVM physical volume.

А размер группы vgdata равен 20 Гб

[user@localhost ~]$ sudo vgs vgdata
VG #PV #LV #SN Attr VSize VFree
vgdata 2 2 0 wz--n- 19,99g 2,00g

после добавления размер группы должен стать 22 Гб.
Для начала, как и в первой первом примере про разбивку диска с помощью LVM, нам нужно создать из /dev/sdd физический том.
На данный момент мы видим только существующие физические тома куда не входит /dev/sdd

[user@localhost ~]$ sudo lvmdiskscan -l
WARNING: only considering LVM devices
/dev/sda2 [ <31,00 GiB] LVM physical volume
/dev/sdb [ 10,00 GiB] LVM physical volume
/dev/sdc [ 10,00 GiB] LVM physical volume
2 LVM physical volume whole disks
1 LVM physical volume

Выполняем команду создания физического тома:

[user@localhost ~]$ sudo pvcreate /dev/sdd
Physical volume "/dev/sdd" successfully created.

Добавляем физический том в группу vgdata:

[user@localhost ~]$ sudo vgextend vgdata /dev/sdd
Volume group "vgdata" successfully extended

Теперь мы видим, что размер группы увеличился на 2 Гб и свободно 4 Гб,

[user@localhost ~]$ sudo vgs vgdata
VG #PV #LV #SN Attr VSize VFree
vgdata 3 2 0 wz--n- <21,99g <4,00g

которые мы можем передать какому либо логическому разделу, тем самым увеличив его. Это мы учились делать в предыдущих примерах.

Пример №6 — Удаление физического диска из группы томов

Рассмотрим следующий пример.
Представим, что системному администратору потребовалась заменить жесткий диск на другой. При этом данный диск входит в логическую группу LVM. Поэтому первым шагом необходимо убрать из работающей группы томов этот диск, в нашем случае пусть это будет /dev/sdd

Смотрим текущие состояние /dev/sdd и видим что он входит в группу vgdata и имеет размер 2 Гб.

[user@localhost ~]$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 ro lvm2 a-- <31,00g 4,00m
/dev/sdb vgdata lvm2 a-- <10,00g 0
/dev/sdc vgdata lvm2 a-- <10,00g 2,00g
/dev/sdd vgdata lvm2 a-- <2,00g <2,00g

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

[user@localhost ~]$ sudo pvmove /dev/sdd
No data to move for vgdata.

Но, поскольку у нас тестовый стенд и данных на дисках нет, то и команда нам сообщает, что данных для переноса нет.
Выполняем следующую команду — это удаление из логической группы диск:

[user@localhost ~]$ sudo vgreduce vgdata /dev/sdd
Removed "/dev/sdd" from volume group "vgdata"

Удаляем физический диск:

[user@localhost ~]$ sudo pvremove /dev/sdd
Labels on physical volume "/dev/sdd" successfully wiped.

Теперь видим, что диск удалился:

[user@localhost ~]$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 ro lvm2 a-- <31,00g 4,00m
/dev/sdb vgdata lvm2 a-- <10,00g 0
/dev/sdc vgdata lvm2 a-- <10,00g 2,00g

А значит его можно заменить другим. Как добавить новый диск мы рассмотрели в примере “Пример №5 — Добавление нового диска к группе томов”.

Пример №7 — Расширение корневого раздела типа LVM

Для того чтобы увеличить корневой раздел, используя всё свободное пространство диска sda, необходимо выполнить следующие действия:
1. Проверить состояние файловой системы, доступные разделы и свободное место, используя команду:

fdisk –l

В выводе команды видно, что диск /dev/sda имеет размер 300 ГБ, а раздел /dev/sda2 имеет размер 99 ГБ. На разделе /dev/sda2 расположены lvm-разделы:
• корневой(ro-root) — 50 ГБ;
• swap (ro-swap) — 7.9 ГБ;
• домашний (ro-home) — 41.1 ГБ.

2. Далее необходимо создать новый раздел, воспользовавшись командой:

fdisk /dev/sda

Для создания нового раздела требуется ввести нужную команду («n») и нажать клавишу «Enter». Далее предлагается выбрать тип, который будет установлен для создаваемого раздела, основной («p») или расширенный («е»). В данном случае следует выбрать основной тип – «р». А также необходимо выбрать порядковый номер, который будет присвоен новому разделу, в данном случае – «3».
Для секторов можно оставить значения по умолчанию, нажав клавишу «Enter».
Затем остаётся внести изменения в таблицу разделов командой «w». После этого терминал сообщает, что изменения в таблицу разделов внесены, а это означает, что новый раздел создан.

Требуется перезагрузка компьютера, чтобы изменения вступили в силу.
После перезагрузки следует проверить разделы ещё раз, чтобы убедиться, что внесённые изменения применены, используя команду:

fdisk –l

В выводе команды видно, что появился новый раздел /dev/sda3 размером 200 ГБ.

3. Следующим шагом нужно создать LVM физический том из раздела sda3, набрав команду:

pvcreate /dev/sda3

4. Следует проверить существующую логическую группу, чтобы затем добавить в неё новый физический том. Для этого используются команды:

vgs

vgextend ro /dev/sda3

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

lvdisplay

В выводе команды видно, что корневой раздел — это /dev/ro/root, его и следует расширить.
Для этого используется команда:

lvextend -l +100%FREE /dev/ro/root

После расширения раздела, необходимо изменить размер файловой системы.

6. Для изменения размера файловой системы необходимо выполнить команду:

resize2fs /dev/ro/root

Для просмотра размеров разделов используется команда:

df -h

Как видно из вывода команды, корневой раздел ro-root расширился и имеет размер памяти 246 ГБ.

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

Print Friendly, PDF & Email