понедельник, 18 июля 2016 г.

LVM RHEL/CentOS/Fedora

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


Взято отсюда.