Разбираем как работать с LVM (Logical Volume Manager). Создание, изменение, замена физических, логических и групп томов LVM.

Logical Volume Manager (LVM) — это очень мощная система управления томами с данными для Linux. Она позволяет создавать поверх физических разделов (или даже неразбитых винчестеров) логические тома, которые в самой системе будут видны как обычные блочные устройства с данными (т.е. как обычные разделы). Основные преимущества LVM в том, что во-первых одну группу логических томов можно создавать поверх любого количества физических разделов, а во-вторых размер логических томов можно легко менять прямо во время работы. Кроме того, LVM поддерживает механизм снапшотов, копирование разделов «на лету» и зеркалирование, подобное RAID-1.

 

Разберем как пользоваться LVM в Ubuntu Server 14.04.

 

Тестовый стенд — ОС Ubuntu Server 14.04 LTS, 2х HDD — 450Gb

 

Подготовка системы

Перед началом установки обновляем систему до актуального состояния:

sudo apt-get update && sudo apt-get upgrade -y

Устанавливаем поддержку LVM в системе:

sudo apt-get install lvm2

 

Инициализация жестких дисков

Для того чтобы начать работу с LVM, необходимо жесткие диски сделать понятными для LVM, перевести их в LVM — 8E Linux LMV.

 

Вывод имеющихся жестких дисков в системе:

sudo fdisk -l

Диск /dev/sdb: 483.2 Гб, 483183820800 байт
255 головок, 63 секторов/треков, 58743 цилиндров, всего 943718400 секторов
Units = секторы of 1 * 512 = 512 bytes
Размер сектора (логического/физического): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
Идентификатор диска: 0x00000000
На диске /dev/sdb отсутствует верная таблица разделов
 
Диск /dev/sdc: 483.2 Гб, 483183820800 байт
255 головок, 63 секторов/треков, 58743 цилиндров, всего 943718400 секторов
Units = секторы of 1 * 512 = 512 bytes
Размер сектора (логического/физического): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
Идентификатор диска: 0x00000000
На диске /dev/sdc отсутствует верная таблица разделов

Жесткие диски /dev/sdb, /dev/sdc переводим в формат LVM (pvcreate):

sudo pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created

sudo pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created

 

Отобразить физические LVM разделы, можно командой (pvscan):

sudo pvscan

PV /dev/sdb lvm2 [400,00 GiB]
PV /dev/sdc lvm2 [450,00 GiB]
Total: 2 [850,00 GiB] / in use: 0 [0 ] / in no VG: 2 [850,00 GiB]

Отобразить физические LVM разделы с подробными сведениями, можно командой (pvdisplay):

sudo pvdisplay

--- Physical volume ---
PV Name /dev/sda6
VG Name
PV Size 1.86 GB / not usable 2.12 MB
Allocatable yes
PE Size (KByte) 4096
Total PE 476
Free PE 456
Allocated PE 20
PV UUID m67TXf-EY6w-6LuX-NNB6-kU4L-wnk8-NjjZfv

--- Physical volume ---
PV Name /dev/sda7
VG Name
PV Size 1.86 GB / not usable 2.12 MB
Allocatable yes
PE Size (KByte) 4096
Total PE 476
Free PE 476
Allocated PE 0
PV UUID b031x0-6rej-BcBu-bE2C-eCXG-jObu-0Boo0x

 

Создание группы томов

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

 

Создаем из физических томов /dev/sdb, /dev/sdc группу томов с названием (прим. jakonda):

sudo vgcreate jakonda /dev/sdb /dev/sdc
Volume group "jakonda" successfully created

 

Отобразить имеющиеся группы томов, можно командой (vgdisplay):

sudo vgdisplay

--- Volume group ---
VG Name jakonda
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 899,99 GiB
PE Size 4,00 MiB
Total PE 230398
Alloc PE / Size 0 / 0
Free PE / Size 230398 / 899,99 GiB
VG UUID 6e6XZ0-6wf1-Fuxj-mc7n-kilP-MyZF-oSCpN0
VG Size — Общий размер дискового пространства группового тома.
Alloc PE / Size — Сколько уже выделено для создания логических томов.
Free PE / Size — Свободное, еще не распределенное дисковое пространство.

 

Увеличить размер группы томов

Увеличить размер группы томов, можно путем добавления в него предварительно инициализированного физического тома (прим. /dev/sdd), командой (vgextend):

sudo vgextend jakonda /dev/sdd
Volume group "jakonda" successfully extended

 

Уменьшить размер группы томов

Уменьшить размер группы томов, можно путем вывода из него физических томов (прим. /dev/sdb). Перед тем как выводить физический том из группы томов, необходимо убедится что что физический том не используется никакими логическими томами.

 

Если физический том (прим. /dev/sdb) не используется никакими логическими томами, вывести его можно командой (vgreduce):

sudo vgreduce jakonda /dev/sdb
Removed "/dev/sdb" from volume group "jakonda"

 

Если физический том (прим. /dev/sdb) используется какими либо логическими томами, то перед тем как выводить его из группы томов, необходимо освободить его от имеющихся на нем данных.

Важный фактор вывода физического тома из группы томов является то, чтобы в группе томов было достаточно свободного места для размещения данных из выводимого физического тома.

 

Освободить физический том (прим. /dev/sdb) от данных, можно несколькими путями:

  • Путем автоматического распределения данных на другие физические тома этого логического тома (pvmove /dev/sdb)
  • Путем указания на какой физический том переместить данные (pvmove /dev/sdb /dev/sdd)
sudo pvmove /dev/sdb
pvmove -- moving physical extents in active volume group "dev"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- 249 extents of physical volume "/dev/sdb" successfully moved

 

Освобожденный от данных физический том (прим. /dev/sdb), можно выводить из группы томов, командой (vgreduce):

sudo vgreduce jakonda /dev/sdb 
Removed "/dev/sdb" from volume group "jakonda"
Выводить физические тома из группы томов,можно без остановки работы системы.

 

Физический перенос группы томов

Физический перенос группы томов с имеющимся в них логических томами, на другую систему выполняется командами (vgexport, vgimport).

 

Размонтируем все логические тома (прим. datastore1), входящие в группы томов (прим. jakonda) и деактивируем группу томов (прим. jakonda):

sudo unmount /mnt/jakonda/datastore1
sudo vgchange -an jakonda
vgchange -- volume group "jakonda" successfully deactivated

Экспортируем группу томов (прим. jakonda), командой (vgexport):

sudo vgexport jakonda
vgexport -- volume group "jakonda" sucessfully exported
Процедура экспорта группы томов запрещает доступ к ней на данной системе и готовит ее к удалению.

 

Выключаем машину, демонтируем диски (составляющие переносимую группу томов) и подключаем их к новой системе. Проверяем видит ли их система, командой (pvscan):

sudo pvscan 
pvscan -- reading all physical volumes (this may take a while...) 
pvscan -- inactive PV "/dev/sdb" is in EXPORTED VG "jakonda" [400 MB / 400 MB free] 
pvscan -- inactive PV "/dev/sdс" is in EXPORTED VG "jakonda" [450 MB / 244 MB free] 
pvscan -- total: 2 [1.95 GB] / in use: 2 [1.95 GB] / in no VG: 0 [0]

 

Импортируем группу томов (прим. jakonda), командой (vgimport):

sudo vgimport jakonda/dev/sdb /dev/sdс
vgimport -- doing automatic backup of volume group "jakonda"
vgimport -- volume group "jakonda" successfully imported and activated

Монтируем логические тома (прим. datastore1) в систему:

sudo mkdir -p /mnt/jakonda/datastore1 
sudo mount /dev/jakonda/datastore1 /mnt/jakonda/datastore1

 

Резервирование/Восстановление конфигурации группы томов

Резервирование и восстановление конфигурации определенной группы томов, выполняется командами (vgcfgbackup, vgcfgrestore). Файлы резервных копий находятся (/etc/lvm/backup).

 

Резервное копирование конфигурации группы томов (прим. jakonda), командой (vgcfgbackup):

sudo vgcfgbackup jakonda
Volume group "zoneminder" successfully backed up.

 

Восстановление конфигурации группы томов (прим. jakonda), командой (vgcfgrestore):

sudo vgcfgrestore jakonda
Restored volume group zoneminder

 

Удаление группы томов

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

 

Деактивируем группу томов (прим. jakonda), командой (vgchange):

sudo vgchange -a n jakonda

Удаляем группу томов (прим. jakonda), командой (vgremove):

sudo vgremove jakonda
Volume group "jakonda" successfully removed

 

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

Создадим логический том (прим. datastore1), размером 50G, командой (lvcreate):

sudo lvcreate -L 50G -n datastore1 jakonda
Logical volume "datastore1" created
Ключи:

-L — размер логического тома. Используются суффиксы: K (килобайты), M (мегабайты), G (гигабайты), T (терабайты).
-n — название логического тома и принадлежность его к группе томов

 

Форматируем логический том (прим. datastore1) в формат ext4:

sudo mkfs.ext4 /dev/jakonda/datastore1

Монтируем логический том (прим. datastore1) в систему:

sudo mkdir -p /mnt/jakonda/datastore1 
sudo mount /dev/jakonda/datastore1 /mnt/jakonda/datastore1

 

Отобразить информацию по логическим томам, можно командой (lvdisplay):

 --- Logical volume ---
 LV Path /dev/jakonda/datastore1
 LV Name datastore1
 VG Name jakonda
 LV UUID P1rdwe-Cpu5-6Dnj-RWPd-OZOn-NeNi-HeRuAY
 LV Write Access read/write
 LV Creation host, time srv-zm, 2018-02-14 09:02:05 +0300
 LV Status available
 # open 0
 LV Size 50,00 GiB
 Current LE 256
 Segments 1
 Allocation inherit
 Read ahead sectors auto
 - currently set to 256
 Block device 252:0

 

Увеличение логического тома

Увеличим размер логического тома (прим. datastore1), на 10Gb, командой (vlextend):

sudo lvextend -L +10G /dev/jakonda/datastore1
Extending logical volume datastore1 to 60,00 GiB
Logical volume datastore1 successfully resized

После увеличения размера логического тома, необходимо увеличить размер файловой системы:

sudo resize2fs /dev/jakonda/datastore1

resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/jakonda/datastore1 is mounted on /mnt/jakonda/datastore1; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 4
The filesystem on /dev/jakonda/datastore1 is now 15728640 blocks long.
Операцию по увеличению объема логического тома, можно производить на горячую, без остановки системы.

 

Уменьшение логического тома

Операция по уменьшению размера логического тома, возможно только на размонтированном состоянии логического тома. На горячую выполнять уменьшение размера, нельзя.

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

 

Размонтируем логический том (прим. datastore1):

sudo umount /dev/jakonda/datastore1

Выполняем проверку на ошибки логического тома:

sudo e2fsck -ff /dev/jakonda/datastore1

Уменьшаем размер файловой системы:

sudo resize2fs /dev/jakonda/datastore1 10GB

Уменьшаем размер логического тома, командой (lvreduce):

sudo lvreduce -L -10G /dev/jakonda/datastore1

Rounding size to boundary between physical extents: 12,00 MiB
WARNING: Reducing active logical volume to 12,00 MiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce datastore1? [y/n]: y
Reducing logical volume datastore1 to 12,00 MiB
Logical volume datastore1 successfully resized

 

Монтируем логический том (прим. datastore1) в систему:

sudo mount /dev/jakonda/datastore1 /mnt/jakonda/datastore1

 

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

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

sudo umount /dev/zoneminder/datastore1
sudo lvremove /dev/zoneminder/datastore1
Do you really want to remove and DISCARD active logical volume datastore1? [y/n]: y
 Logical volume "datastore1" successfully removed

 

Понравилась или оказалась полезной статья, поблагодари автора

 

БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
Загрузка...

Оставить ответ

13 + пять =