LVM - это система управления дисковым пространством, находящаяся поверх логических разделов. Она даёт возможность более гибко использовать дисковое пространство. Основная область применения LVM - файловые хранилища, базы данных. Также её можно использовать на рабочих станциях и домашних персональных компьютерах.
Существует 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-mapperlvm
- инструмент для настройки LVMlvmdiskscan
- сканирует доступные диски, показывает их размер и принадлежность к PV LVM
Physical Volume
pvcreate
- инициализация устройства как PVpvchange
- изменение атрибутов PVpvremove
- удаление неиспользуемого PVpvmove
- перемещение PV между различными устройствамиpvresize
- изменение размера PV занятой VGpvscan
- сканирование дисков на предмет PVpvs
- вывод информации о PVpvdisplay
- вывод атрибутов PV
Volume Group
vgcfgbackup
- резервное копирование области описания VG в файлvgcfgrestore
- восстановление области описания VG из файлаvgconvert
- конвертация метаданных из LVM1 в LVM2vgcreate
- создание VGvgremove
- удаление VGvgchange
- изменение параметров VGvgrename
- переименовывание VGvgmerge
- склеивание двух VGvgsplit
- разделение одной VG на двеvgscan
- сканирование дисков на наличие VGvgdisplay
- вывод атрибутов VGvgs
- вывод информации о VGvgexport
- отключение VGvgimport
- подключение VGvgextend
- добавление PV в VGvgreduce
- удаление неиспользуемых PV из VGvgck
- проверка целостности метаданных VG.vgmknodes
- пересоздание файлов для VG в каталоге /dev
Logical Volume
lvcreate
- создание LVlvremove
- удаление LVlvrename
- переименовывание LVlvchange
- изменение параметров LVlvresize
- изменение размера LVlvextend
- увеличение размера LVlvreduce
- уменьшение размера LVlvscan
- поиск LV в VGlvdisplay
- вывод атрибутов LVlvs
- вывод информации о LV
No comments:
Post a Comment