Saturday, October 18, 2014

ИСПОЛЬЗОВАНИЕ ЛОГИЧЕСКИХ ТОМОВ LVM


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-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

No comments: