LVM – это система управления дисковым пространством, находящаяся поверх логических разделов. Она даёт возможность более гибко использовать дисковое пространство. Основная область применения LVM – файловые хранилища, базы данных. Также её можно использовать на рабочих станциях и домашних персональных компьютерах.
Существует 2 версии LVM (Logical Volume Manager):
Иерархия LVM
Система, обычно используемая в Linux:
Помимо них LVM включает в себя элементы:
Преимущества
Создание LVM
Подготовка разделов
Создание разделов
Для примера создадим с чистого диска:
# /sbin/fdisk /dev/sdb
Command (m for help): p
Disk /dev/sdb: 2684 MB, 2684354560 bytes
255 heads, 63 sectors/track, 326 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
Чистая таблица разделов. Создадим два раздела: на 1Gb и оставшиеся 1.6Gb:
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-326, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-326, default 326): +1G
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (124-326, default 124):
Using default value 124
Last cylinder or +size or +sizeM or +sizeK (124-326, default 326):
Using default value 326
Command (m for help): p
Disk /dev/sdb: 2684 MB, 2684354560 bytes
255 heads, 63 sectors/track, 326 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 123 987966 83 Linux
/dev/sdb2 124 326 1630597+ 83 Linux
Изменение типа разделов
Измените тип раздела, сейчас используется Linux (Id 83),
Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): L
Если нажать L, то можно увидеть весь перечень доступных ID, но нам важен номер того, который называется Linux LVM (8E)
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
Сохранение изменений
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Устройство или ресурс занято.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
Откат изменений
Если Вы где-то ошиблись – вместо w нажмите q.
Перезагрузка
# reboot
Инициализация PV
# /usr/sbin/pvcreate /dev/sdb1 /dev/sdb2
Physical volume "/dev/sdb1" successfully created
Physical volume "/dev/sdb2" successfully created
При инициализации целого диска – таблица разделов должна быть предварительно стёрта:
# dd if=/dev/zero of=/dev/sdb bs=512 count=1
# /usr/sbin/pvcreate /dev/sdb
Инициализация VG
Просмотр существующих групп
# /usr/sbin/vgscan
Создание группы
# /usr/sbin/vgcreate vg00 /dev/sdb1 /dev/sdb2
Volume group "vg00" successfully created
Создание LV
# /usr/sbin/lvcreate -n music -L 2G vg00
создаст LV объемом 2Gb в группе томов vg00.
Имена устройств
# /dev/mapper/VG-LV
где:
Использование LV
Форматирование и монтирование раздела на LVM
Далее с полученным устройством можно делать то же, что и с обычными логическими дисками: форматировать и монтировать как файловую систему:
# mkfs.ext3 /dev/vg00/music
# mkdir -p /media/music
# mount -t ext3 o user,rw /dev/vg00/music /media/music
# df -h /media/music
Файловая система Разм Исп Дост Исп% смонтирована на
/dev/mapper/vg00-music
2,0G 68M 1,9G 4% /media/music
Изменение размера раздела
Определение количества свободного места в VG
# /usr/sbin/vgdisplay vg00
....
Free PE / Size 127 / 508,00 MB
....
где
Изменение размера раздела
# umount /media/music
# /usr/sbin/lvresize -L +508M /dev/vg00/music
# /sbin/e2fsck -f /dev/vg00/music
# /sbin/resize2fs /dev/vg00/music
# mount /media/music
# df -h /media/music
Удаление LV из группы томов
# umount /dev/vg00/music
# /usr/sbin/lvremove /dev/vg00/music
Do you really want to remove active logical volume "music"? [y/n]: y
Logical volume "music" successfully removed
Список команд для работы с LVM
Physical Volume
Volume Group
Logical Volume
Взято отсюда.
Существует 2 версии LVM (Logical Volume Manager):
- LVM 1 – использовалась с ядрами версии 2.4.
- LVM 2 – новая и улучшенная версия, использует драйвер device mapper, поддерживаемый в ядрах 2.6 и в 2.4 (с патчами).
Иерархия LVM
Система, обычно используемая в Linux:
- жесткие диски: /dev/hda,/dev/sda,/dev/cciss/c0d0идр.
- логические разделы: /dev/hda1,/dev/sda2,/dev/cciss/c0d0p3идр., которые форматируются и монтируются в дерево каталогов.
Помимо них LVM включает в себя элементы:
- PV(PhisycalVolume) – диски или разделы жёсткого диска, имеющие тип 8E (LVM), входят в состав VG.
- VG(VolumeGroup) – группы томов, объединяют пространство PV и могут быть нарезаны на один или несколько LV.
- LV(LogicalVolume) – логический том, представляется блоковым устройством, который можно использовать в операционной системе как логический раздел диска.
- PE(PhysicalExtent) – каждый PV разбивается на фрагменты. Аналог сектора для жесткого диска. Они имеют одинаковый размер с LE в составе своей группы томов.
- LE(LogicalExtent) – фрагмент VG, каждому такому логическому екстенду (LE) соответствует PE на PV. Далее из них собирается логические тома (LV).
Преимущества
- В отличии от логических разделов объекты VG и LV могут принимать осмысленные имена: VG home содержат LV vasya, petya. При этом home/vasya можно отформатировать в ext3, а home/petya – в reiserfs и, соответственно, cмонтировать в их домашние каталоги.
- Гибкость изменения размера: после изменения размера логического раздела /dev/hda1 с помощью fdisk требуется перезагрузка операционной системы. Изменение размера в LVM происходит «на лету». Для серверных систем это огромное преимущество.
- Использование нескольких дисков как один раздел. В теории можно использовать LVM, но практика показывает, что для большей скорости и надёжности лучше использовать RAID (md-software или hardware).
Создание LVM
Подготовка разделов
Создание разделов
Для примера создадим с чистого диска:
# /sbin/fdisk /dev/sdb
Command (m for help): p
Disk /dev/sdb: 2684 MB, 2684354560 bytes
255 heads, 63 sectors/track, 326 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
Чистая таблица разделов. Создадим два раздела: на 1Gb и оставшиеся 1.6Gb:
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-326, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-326, default 326): +1G
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (124-326, default 124):
Using default value 124
Last cylinder or +size or +sizeM or +sizeK (124-326, default 326):
Using default value 326
Command (m for help): p
Disk /dev/sdb: 2684 MB, 2684354560 bytes
255 heads, 63 sectors/track, 326 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 123 987966 83 Linux
/dev/sdb2 124 326 1630597+ 83 Linux
Изменение типа разделов
Измените тип раздела, сейчас используется Linux (Id 83),
Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): L
Если нажать L, то можно увидеть весь перечень доступных ID, но нам важен номер того, который называется Linux LVM (8E)
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
Сохранение изменений
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Устройство или ресурс занято.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
Откат изменений
Если Вы где-то ошиблись – вместо w нажмите q.
Перезагрузка
# reboot
Инициализация PV
# /usr/sbin/pvcreate /dev/sdb1 /dev/sdb2
Physical volume "/dev/sdb1" successfully created
Physical volume "/dev/sdb2" successfully created
При инициализации целого диска – таблица разделов должна быть предварительно стёрта:
# dd if=/dev/zero of=/dev/sdb bs=512 count=1
# /usr/sbin/pvcreate /dev/sdb
Инициализация VG
Просмотр существующих групп
# /usr/sbin/vgscan
Создание группы
# /usr/sbin/vgcreate vg00 /dev/sdb1 /dev/sdb2
Volume group "vg00" successfully created
Создание LV
# /usr/sbin/lvcreate -n music -L 2G vg00
создаст LV объемом 2Gb в группе томов vg00.
Имена устройств
# /dev/mapper/VG-LV
где:
- VG – имя группы томов
- LV – имя тома.
Использование LV
Форматирование и монтирование раздела на LVM
Далее с полученным устройством можно делать то же, что и с обычными логическими дисками: форматировать и монтировать как файловую систему:
# mkfs.ext3 /dev/vg00/music
# mkdir -p /media/music
# mount -t ext3 o user,rw /dev/vg00/music /media/music
# df -h /media/music
Файловая система Разм Исп Дост Исп% смонтирована на
/dev/mapper/vg00-music
2,0G 68M 1,9G 4% /media/music
Изменение размера раздела
Определение количества свободного места в VG
# /usr/sbin/vgdisplay vg00
....
Free PE / Size 127 / 508,00 MB
....
где
- 127 – количество PE, а 508,00 – размер LV в MB.
Изменение размера раздела
# umount /media/music
# /usr/sbin/lvresize -L +508M /dev/vg00/music
# /sbin/e2fsck -f /dev/vg00/music
# /sbin/resize2fs /dev/vg00/music
# mount /media/music
# df -h /media/music
Удаление LV из группы томов
# umount /dev/vg00/music
# /usr/sbin/lvremove /dev/vg00/music
Do you really want to remove active logical volume "music"? [y/n]: y
Logical volume "music" successfully removed
Список команд для работы с LVM
- dmsetup – низкоуровневая работа с драйвером device-mapper
- lvm – инструмент для настройки LVM
- lvmdiskscan – сканирует доступные диски, показывает их размер и принадлежность к PV LVM
Physical Volume
- pvcreate – инициализация устройства как PV
- pvchange – изменение атрибутов PV
- pvremove – удаление неиспользуемого PV
- pvmove – перемещение PV между различными устройствами
- pvresize – изменение размера PV занятой VG
- pvscan – сканирование дисков на предмет PV
- pvs – вывод информации о PV
- pvdisplay – вывод атрибутов PV
Volume Group
- vgcfgbackup – резервное копирование области описания VG в файл
- vgcfgrestore – восстановление области описания VG из файла
- vgconvert – конвертация метаданных из LVM1 в LVM2
- vgcreate – создание VG
- vgremove – удаление VG
- vgchange – изменение параметров VG
- vgrename – переименовывание VG
- vgmerge – склеивание двух VG
- vgsplit – разделение одной VG на две
- vgscan – сканирование дисков на наличие VG
- vgdisplay – вывод атрибутов VG
- vgs – вывод информации о VG
- vgexport – отключение VG
- vgimport – подключение VG
- vgextend – добавление PV в VG
- vgreduce – удаление неиспользуемых PV из VG
- vgck – проверка целостности метаданных VG.
- vgmknodes – пересоздание файлов для VG в каталоге /dev
Logical Volume
- lvcreate – создание LV
- lvremove – удаление LV
- lvrename – переименовывание LV
- lvchange – изменение параметров LV
- lvresize – изменение размера LV
- lvextend – увеличение размера LV
- lvreduce – уменьшение размера LV
- lvscan – поиск LV в VG
- lvdisplay – вывод атрибутов LV
- lvs – вывод информации о LV
Взято отсюда.