Thursday, July 31, 2014

Linux LVM

Немного теории для понимания:
LVM (Logical Volume Manager), менеджер логических томов - это система управления дисковым пространством, абстрагирующаяся от физических устройств. Она позволяет эффективно использовать и легко управлять дисковым пространством. Другими словами - это слой абстракции от железа, который позволяет собрать различные диски в один массив и управлять им.
PV, Physical volume, физический том. Как правило, это раздел на диске или весь жесткий диск. В том числе, устройства программного и аппаратного RAID (которые уже могут включать в себя несколько физических дисков). Физические тома входят в состав группы томов(VG).
VG, Volume group, группа томов. Это самый верхний уровень абстрактной модели, используемой системой LVM. С одной стороны группа томов состоит из физических томов, с другой -- из логических и представляет собой единую административную единицу.
LV, Logical volume, логический том. Раздел группы томов, эквивалентен разделу диска в не-LVM системе. Представляет собой блочное устройство и, как следствие, может содержать файловую систему.

Ознакомимся со всеми командами, которые понадобятся в администрировании LVM
1. Посмотрим, что у нас имеется с помощью: vgdisplay
Volume group состоит из одного или нескольких физических томов (PV).
Volume group можно представить, как отдельный диск, который можно расширять или наоборот уменьшать(!).

Интересные поля VG size, Alloc Size и Free Size
В данном случае VG состоит из одного физического тома (PV) и 2-х логичесских томов. 
2. Посмотрим физический том: pvdisplay


3. Посмотрим логические тома: lvdisplay

4. Добавим физический том (подключим отдельный диск!).
Вот он - чистенький! =)
С помощью Fdisk загоним его в LVM.

Для создания физических томов используется команда pvcreate

Для расширения Volume Group используется команда vgextend

И далее, смотрим:

или так:

5. Теперь создадим логический том.
Для начала посмотрим какие тома уже есть:
lvdisplay 
Создаем том

При указании размера тома можно использовать размер extents. Например:
lvcreate --name data3 --extents 2003 /dev/datavg

Теперь создадим точку монтирования и файловую систему:
Создание файловой системы:
mke2fs -t ext4 /dev/datavg/data2
Создание точки монтирования

mkdir data2
Монтирование 
mount /dev/datavg/data2 /data2



Для просмотра типа файловой системы воспользуемся командой df -T

6. Для удаления физического тома используется команда vgreduce
vgreduce <vg_name> <device>

7. Увеличение (уменьшение) логического тома:
Смотрим, что есть:

Увеличим данный том на 1Гб.
Аналогично делается и для уменьшения размера логического тома.

8. Удалим логический том с помощью lvremove
Перед тем, как удалить логический том из LVM нужно его отмонтировать
(перенести все данные, если нужно).




Поэтому отмонтируем файловую систему и  удалим логический том. 
Синтаксис команды такой: 
lvremove</dev/vg_name/lv_name>
9. Была ситуация, когда все 3 логические партиции перешли в состояние NOT Available.
Соответственно, были недоступны.
Для того, чтобы вернуть логические тома в состоянии Active
 
10. Несколько полезных и коротких команд.
pvs
vgs
lvs
pvscan
vgscan
vgchange -ay
lvscan


Troubleshooting
В случае увеличения файловой системы после расширения логического тома 
resize2fs /dev/centos/root
получаем ошибку 
resize2fs: Bad magic number in super-block while trying to open /dev/centos/root
Couldn't find valid filesystem superblock.

Ошибка означает, что resize2fs умеет работать только с файловыми система типа ext2-4
Для исправления воспользуемся xfs_growfs 
Например, увеличим root корневую LVM.
xfs_growfs /dev/centos/root

Успехов!