вторник, 14 сентября 2010 г.

Основы создания и управления LVM

Менеджер логических томов (LVM – англ. Logical Volume Manager) — предоставляет собой дополнительный уровень абстракции между физическими/логическими дисками (привычными разделами, с которыми работает fdisk и аналогичные программы) и файловой системой. Это достигается путём разбивки изначальных разделов на небольшие блоки (экстенты, обычно 4—32 МБайт) и объединения их в единый виртуальный том, точнее группу томов (volume group), которая далее разбивается на логические тома (logical volume). Для файловой системы логический том представлен как обычное блочное устройство, хотя отдельные экстенты тома могут находиться на разных физических устройствах (и даже сам экстент может быть распределён подобно RAID). LVM увеличивает гибкость файловой системы, однако, являясь просто промежуточным слоем, не отменяет ограничения и использование других слоёв и усложняет работу. То есть, по-прежнему нужно создавать и изменять разделы, форматировать их.

Установим утилиты для управления LVM:
aptitude install lvm2
Перед созданием LVM на диске необходимо указать тип раздела LVM – **0×8e** в любом из редакторов, типа fdisk/cfdisk.

Создание

создание физического тома (physical volume):
pvcreate /dev/sdb1 /dev/sdb2
создание группы томов (volume group):
create volgroup00 /dev/sdb1
добавление нового раздела в группу томов:
vgextend volgroup00 /dev/sdb2
отображение атрибутов физического тома:
pvdisplay /dev/sdb2
создание логического тома с именем test размером 20Гб:
lvcreate -L 20G -n test01 volgroup00
Размер тома можно создавать по количеству экстентов, их число в группе томов определяется через vgdsplay:
vgdisplay | grep “Total PE”
Таким образом можно создать логический том, с размером меньше или равному количеству экстентов:
lvcreate -l 10000 volgroup00 -n test02

Теперь, когда логический том создан, над ним можно выполнять те же действия, что и с обычным разделом, т.е. его можно форматировать, монтировать, переносить информацию и проч.
форматирование логического тома под ReiserFS:
mkreiserfs /dev/volgroup00/test01
монтирование логического тома:
mount /dev/volgroup00/test01 /mnt/lvmtest
копирование:
cp -a /etc/ /mnt/lvmtest

Сопровождение LVM

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

После увеличения логического тома, необходимо увеличить размер файловой системы. Для каждой ФС свой метод. Причем в каждом случае есть свои нюансы:
  • Перед изменением размера ФС Ext2 необходимо отмонтировать раздел (размер Ext3/Ext4 изменяется на лету).
  • Ext4 увеличивается только средством resize2fs. В fsadm поддержка Ext4 вероятно добавится позже.
  • Увеличивать размер файловых систем Reiserfs можно как в смонтированном, так и в размонтированном состоянии.
  • Размер файловой системы XFS можно увеличить только в смонтированном состоянии. Кроме того, утилите в качестве параметра нужно передать точку монтирования, а не имя устройства.

увеличение логического тома на 4Гб:
lvextend -L+4G /dev/volgroup00/test01
расширение Ext2/Ext3/Ext4:
resize2fs /dev/volgroup00/ext
расширение ReiserFS:
resize_reiserfs -f /dev/volgroup00/reiser
расширение XFS:
xfs_growfs /mnt/lvm/xfs
расширение Btrfs:
btrfsctl -r +2g /mnt/lvm/btrfs
или:
btrfsctl -r +2g -A /dev/volgroup00/btrfs

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

Логические тома также могут быть уменьшены в размере. В первую очередь необходимо уменьшить размер файловой системы, и только после этого уменьшать размер логического тома. В обратной последовательности можно потерять данные. Также есть некоторые нюансы:
  • Перед изменением размера файловую систему необходимо отмонтировать.
  • При изменении размера Ext2/Ext3 resize2fs’у указывается ее новый размер.
  • Уменьшить XFS и JFS невозможно.
  • Уменьшить Btrfs можно на лету, но лучше не рисковать.
указание нового размера для ФС Ext2/Ext3:
resize2fs /dev/volgroup00/ext2 500m
уменььшение ФС Reiserfs:
resize_reiserfs -s-1G /dev/volgroup00/reiserfs
уменьшение ФС Btrfs
btrfsctl -r -2g -A /dev/volgroup00/btrfs
уменьшение логического тома:
lvreduce -L-1G /dev/volgroup00/test01

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

lvrename /dev/volgroup00/volume-oldname /dev/volgroup00/volume-newname

Переименование группы томов

vgrename volgroup_oldname volgroup_newname

Слияние групп томов

отключение логических томов в группе-жертве:
vgchange -a n /dev/volgroup02
поглощение группы volgroup02 группой volgroup01:
vgmerge volgroup01 volgroup02

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

выделение новой группы томов volgroup02 которая разместится на физическом томе /dev/sdb1:
vgsplit volgroup01 volgroup02 /dev/sdb1

Изменение размера физического тома

Есть несколько нюансов:
  • Увеличение размера физического тома LVM, производится после увеличения раздела программами типа cfdisk/fdisk
  • Уменьшение тома следует проводить после уменьшения файловых систем и логических томов, иначе возможна порча данных

увеличение физического тома:
pvresize /dev/sda1
уменьшение физического тома:
pvresize –setphysicalvolumesize 40G /dev/sda1

Создание снимков (Snapshots)

Снимок это доступная только для чтения копия другого тома. При создании снимков необходимо убедиться что запущен dmeventd. При создании снимков с XFS ее предвариетльно надо заморозить – xfs_freeze.
создание тома var-backup, как копии тома var:
lvcreate -L600M -s -n var-backups /dev/volgroup00/var
последующее монтирование снимка:
mount /dev/volgroup00/var-backup /mnt/backup

Создание зеркала (Mirrors)

Зеркала используются для повышения отказоустойчивости и повышения уровня сохранности информации. Для создания зеркала необходимо 3 физических тома, 2 для зеркала и 1 для журнала. Рекомендуется использовать физические тома размещенные на разных носителях. Использование физических томов с одного носителя сводит на ноль целесообразность использования зеркала, т.к. в случае аппаратного сбоя зеркало оказывается бесполезным. При создании зеркал необходимо убедиться что запущен dmeventd

создаем физический том:
pvcreate /dev/sda5 /dev/sdb1 /dev/sdc1
создаем группу mirror00:
vgcreate mirror00 /dev/sda5 /dev/sdb1 /dev/sdc/
создаем зеркальный том volume00:
lvcreate -L 5G -n volume00 -m 1 mirror00

просмотр информации о логических томах, процент Copy должен достигнуть 100%:
# lvs

LV       VG         Attr   LSize   Origin Snap%  Move Log           Copy%  Convert
volume00 mirror00   mwi-a-   5.00G                    volume00_mlog   6.17
проверка использования устройств в созданном зеркале:
# lvs -a -o +devices

LV                  VG         Attr   LSize   Origin Snap%  Move Log           Copy%  Convert Devices
volume00            mirror00   mwi-a-   5.00G                    volume00_mlog 100.00         volume00_mimage_0(0),volume00_mimage_1(0)
[volume00_mimage_0] mirror00   iwi-ao   5.00G                                                 /dev/sda5(0)
[volume00_mimage_1] mirror00   iwi-ao   5.00G                                                 /dev/sdb1(0)
[volume00_mlog]     mirror00   lwi-ao   4.00M                                                 /dev/sdc1(0)
форматирование:
mkreiserfs /dev/mirror00/volume00
монтирование:
mount /dev/mirror00/volume00 /var/data

Преобразование логического тома в зеркальный

добавление новых физических томов в группу:
vgextend volgroup01 /dev/sdc1 /dev/sdd1
преобразование обычного тома в зеркальный:
lvconvert -m 1 /dev/volgroup01/volume-new

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


Логические тома перед удалением должны быть отмонтированы.
удаление физического тома из группы:
vgreduce volgroup00 /dev/sdb1
удаление логического тома:
lvremove /dev/volgroup00/test01
удаление группы томов:
vgremove volgroup00
удаление физического тома:
pvremove /dev/sdc1

Команды LVM2

  • pvs отчетная информация о физических томах
  • vgs отчетная информация о группах томов
  • lvs отчетная информация о логических томах
  • pvck проверка метаданных на физических томах
  • vgck проверка метаданных в группах томов
  • pvscan сканирование устройств на наличие физических томов
  • pvcreate создание физического тома
  • pvdisplay показ атрибутов физического тома
  • pvchange смена атрибутов физического тома
  • pvresize изменение размера физического тома
  • pvremove удаление физического тома
  • pvmove перенос физических экстентов
  • vgscan сканирование дисков на наличие групп томов
  • vgcreate создание группы томов
  • vgdisplay показ атрибутов группы томов
  • vgchange смена атрибутов группы томов
  • vgextend добавление физического тома в группу томов
  • vgreduce уменьшение группы томов
  • vgmerge слияние двух групп томов в одну
  • vgsplit разделение одной группы томов на две
  • vgrename переименование группы томов
  • vgexport делает группу неузнаваемой для системы, для дальнейшего переноса в другую систему
  • vgimport делает экспортированную группу томов узнаваемой
  • vgcfgbackup резервное копирование области дескрипторов группы томов
  • vgcfgrestore восстанавливает область дескрипторов группы томов
  • vgremove удаление группы томов
  • lvscan сканирование дисков на наличие логических томов
  • lvcreate создание логического тома
  • lvdisplay показ атрибутов логических тома
  • lvchange смена атрибутов логического тома
  • lvextend увеличение рамера логического тома
  • lvreduce уменьшение размералогического тома
  • lvrename переименование логического тома
  • lvresize изменение размера логического тома
  • lvconvert преобразует логический том с обычного в зеркальный или cнимок
  • lvremove удаление логического тома
  • vgmknodes заново создает каталог группы томов и специальные файлы логических томов
  • vgconvert смена формата метаданных в группе томов (метаданные формата LVM1 в формат LVM2)
  • lvmdump создание дампы для диагностических целей
  • lvmsadc собирает данные об активности
  • lvmsar создает отчет об активности
  • lvmdiskscan сканирование всех устройств видимых LVM

Всё собирал по частям из этих мест:

http://tldp.org/HOWTO/LVM-HOWTO/
http://xgu.ru/wiki/LVM
http://www.opennet.ru/docs/RUS/linux_lvm/

1 комментарий:

  1. звучит неплохо, пока физически не улетает диск. Вы не сталкивались с такой ситуацией?

    ОтветитьУдалить