В своём блоге несколько лет назад я делал памятку по системе Logical Volume Management (LVM) в операционной системе HP-UX. Четыре части статьи можно найти по тегу LVM.
К счастью, LVM в Linux очень похож на LVM в HP-UX (рис. 1).
Все понятия идентичны. На физических дисках или разделах дисков создаются физические тома (Physical Volumes). Эти тома объединяются в группы томов (Volume Groups). Один физический том может принадлежать только одной группе томов. Внутри группы томов пространство разбивается на логические тома (Logical Volumes). Соответствие между логическими и физическими томами происходит через единицу выделения пространства - Physical Extent, который равен по размеру Logical Extent. Карта распределения и соответствия LE и PE произвольная. Размер PE определяется в момент создания Volume Group и фиксирован во всё время существования группы (по-умолчанию, 4 Мб). Внутри логического тома можно создать файловую систему и смонтировать её в дереве общей файловой системы Linux.
Краткая последовательность создания:
Они отображают информацию по всем физическим томам, группам томов и логическим томам в системе, соответственно (рис. 2).
Есть возможно указать конкретные поля, которые необходимо вывести, например:
# lvs -o lv_name,lv_size,device
Информация по всем столбцам по команде вида:
# lvs -o help
Есть у LVM в Linux расширенные возможности:
Есть команды vgexport/vgimport, которые позволяют переносить группы томов с одного сервера на другой или при настройке кластерной конфигурации.
В отличии от HP-UX, в Linux LVM реализуется через Device Mapper, который генерирует реальные имена устройств вида /dev/dm-X. А файлы вида /dev/VGname/LVname по сути являются символьными линками на эти файлы. Но рекомендуется работать именно с линками, так как Device Mapper не гарантирует соответствие файлов устройств /dev/dm-X самим устройствам после перезагрузки.
Не воспрещается использовать графические утилиты для конфигурации LVM. Хотя по мне, это не так изящно. В SLES это yast2 (модуль disk или Partitioner) (рис. 3), в RHEL - gnome-disk-utility.
Дополнительно можно почитать хорошую Wiki-статью по LVM.
P.S. Поздравляю всех причастных с прошедшим днём системного администратора или просто сисадмина! :)
Автор: Шиболов Вячеслав Анатольевич
К счастью, LVM в Linux очень похож на LVM в HP-UX (рис. 1).
Рис. 1. Концепция LVM в Linux. |
Все понятия идентичны. На физических дисках или разделах дисков создаются физические тома (Physical Volumes). Эти тома объединяются в группы томов (Volume Groups). Один физический том может принадлежать только одной группе томов. Внутри группы томов пространство разбивается на логические тома (Logical Volumes). Соответствие между логическими и физическими томами происходит через единицу выделения пространства - Physical Extent, который равен по размеру Logical Extent. Карта распределения и соответствия LE и PE произвольная. Размер PE определяется в момент создания Volume Group и фиксирован во всё время существования группы (по-умолчанию, 4 Мб). Внутри логического тома можно создать файловую систему и смонтировать её в дереве общей файловой системы Linux.
Краткая последовательность создания:
- Для создания разделов можно использовать команды gdisk (GPT формат) или fdisk (MBR формат). При создании раздела указать тип LVM (код 8E или 8E00).
- На разделах создать физические тома (Physical Volumes) командой вида:
# pvcreate /dev/sdaX /dev/sdbY - Создать группу томов (Volume Group) командой вида:
# vgcreate -s размер_PE VGname /dev/sdaX /dev/sdbY - Создать необходимое количество логических томов (Logical Volumes) командами вида:
# lvcreate -l/-L размер -n LVname VGname - Активировать группу томов командой вида:
# vgchange -a y VGname
или
# lvm vgchange -a y VGname - Создать файловые системы и смонтировать их, например командами:
# mkfs -t xfs /dev/VGname/LVname
# mount /dev/VGname/LVname /mount/XXX
Если необходимо расширить файловую систему, то последовательность следующая:
- Расширить группу томов, создав и добавив физический том, если это необходимо:
# pvcreate /dev/sdbZ
# vgextend VGname /dev/sdbZ - Расширить логический том и файловую систему командами вида:
# lvextend -L размер /dev/VGname/LVname
# resize2fs /dev/VGname/LVname
Можно сместить Physical Extents одного физического тома на другой (sdaX -> sdcZ). Например, для вывода его из состава группы томов. Использовать команду вида:
# pvmove /dev/sdaX /dev/sdcZ
Второй аргумент можно не указывать, тогда команда "разбросает" PE на то свободное место, которое есть в группе томов.
В Linux есть дополнительные команды просмотра информации по LVM:
# pvs
# vgs
# lvs
Они отображают информацию по всем физическим томам, группам томов и логическим томам в системе, соответственно (рис. 2).
Рис. 2. Пример вывода информации по LVM разделам в системе. |
Есть возможно указать конкретные поля, которые необходимо вывести, например:
# lvs -o lv_name,lv_size,device
Информация по всем столбцам по команде вида:
# lvs -o help
Есть у LVM в Linux расширенные возможности:
- Создание snapshots, которые очень полезны при резервировании файловой системы с гарантией от изменений во время процесса. Смотрите справку на опцию -s команды lvcreate.
- Поддержка программного RAID 0/1/5/6/10.
- Создание кэш разделов на основе, например, SSD, для медленных и больших разделов.
- Поддержка кластерных конфигураций.
Есть команды vgexport/vgimport, которые позволяют переносить группы томов с одного сервера на другой или при настройке кластерной конфигурации.
В отличии от HP-UX, в Linux LVM реализуется через Device Mapper, который генерирует реальные имена устройств вида /dev/dm-X. А файлы вида /dev/VGname/LVname по сути являются символьными линками на эти файлы. Но рекомендуется работать именно с линками, так как Device Mapper не гарантирует соответствие файлов устройств /dev/dm-X самим устройствам после перезагрузки.
Не воспрещается использовать графические утилиты для конфигурации LVM. Хотя по мне, это не так изящно. В SLES это yast2 (модуль disk или Partitioner) (рис. 3), в RHEL - gnome-disk-utility.
Рис. 3. Раздел Partitioner утилиты Yast. |
Дополнительно можно почитать хорошую Wiki-статью по LVM.
P.S. Поздравляю всех причастных с прошедшим днём системного администратора или просто сисадмина! :)
Автор: Шиболов Вячеслав Анатольевич
От себя добавлю:
ОтветитьУдалитьLVM 2 Caveat
The single command
# e2fsadm -L+1G /dev/myvg/homevol
is equivalent to the two commands:
# lvextend -L+1G /dev/myvg/homevol
# resize2fs /dev/myvg/homevol
Спасибо Виктор за дополнение
УдалитьВ Redhat 6 есть GUI утилита system-config-lvm (System - Administration - Logical Volume Management), а вот в Redhat 7 нету GUI утилит для управления LVM.
УдалитьПоэтому знать базовые команды, рассматривать GUI только как бонус.
Удалить