3.7.1.8 Примеры использования LVM
Скачать документ Пример №1 - Разметка дисков с помощью LVM
Пример №2 - Уменьшение размера логического тома
Пример №3 - Увеличение размера логического тома
Пример №4 - Удаление логического тома
Пример №5 - Добавление нового диска к группе томов
Пример №6 - Удаление физического диска из группы томов
Пример №7 - Расширение корневого раздела типа LVM
Вы можете подробнее ознакомиться с информацией по использованию LVM, просмотрев наши обучающие видео:
на RuTube — Работа с LVM в РЕД ОС;
в Яндекс.Дзен — Работа с LVM в РЕД ОС;
в VK Видео — Работа с LVM в РЕД ОС.
На наших каналах вы также сможете найти много другой полезной информации.
Пример №1 - Разметка дисков с помощью LVM
Предположим, что мы имеем два неразмеченных диска подключенных к компьютеру. Теперь попробуем разметить их с помощью LVM и создать структуру, как на схеме.
Выполним команду:
[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 vgdataSystem 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/swapLV 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/rootLV 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/mydocsLV 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 0LV Size 5,00 GiBCurrent 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,00gfilms 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 GiBFree PE / Size 2048 / 8,00 GiBVG 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 ГБ.
Дата последнего изменения: 08.11.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.