Настройка и управление LVM разделами в Linux

LVM (Logical Volume Manager) – подсистема операционных систем Linux , позволяющая использовать разные области физического жесткого диска или разных жестких дисков как один логический том. LVM встроена в ядро Linux и реализуется на базе device mapper.

Главные преимущества LVM – высокий уровень абстракции от физических дисков, гибкость и масштабируемость. Вы можете на лету изменять размер логического тома, добавлять (и удалять) новые диски. Для LVM томов поддерживается зекалирование, снапшоты (persistent snapshot) и striping (расслоение данных между несколькими дисками с целью увеличения производительности).

В данной статье мы рассмотрим использование LVM разделов на примере Linux CentOS 8 , покажем процесс объединения двух дисков в одну группу LVM, посмотрим как создавать группы, тома, монтировать, расширять и уменьшать размер LVM разделов.

Прежде всего нужно разобраться с уровнями дисковых абстракций LVM.

  • Physical Volume (PV) – физический уровень. Физические диски инициализируются для использования в LVM.
  • Volume Group (VG) – уровень группы томов. Инициализированные диски объединяются в логические группы с именем.
  • Logical Volume (LV) — создается логический том на группе томов, на котором размещается файловая система и данные.

архитектура и уровни абстрации LVM в Linux

Установка утилиты lvm2

Чтобы начать работу с LVM , нужно установить утилиту lvm2 . Выполним следующие команды:

apt-get install lvm2 — для Ubuntu, Mint, Debian

yum install lvm2 – для Centos, Red-Hat, Fedora

установка lvm2

В разных версиях Linux отличается только способ установки утилиты lvm2 (установка через yum /dnf или apt-get), дальнейшие команды для работы с LVM , одинаковы.

Создание LVM разделов

Итак, у нас имеется виртуальная машина KVM , к которой подключены два дополнительных диска. Проверим, что они доступны в системе, используя команду:

fdisk -l

fdisk - определение физических дисков в lunux под LVM

Как вы видите, у меня доступны два диска /dev/vdb и /dev/vdc .

При настройке LVM на своем виртуальном или физическом сервере, используйте свою маркировку дисков.

Чтобы диски были доступны для LVM , их нужно пометить (инициализировать) утилитой pvcreate:

pvcreate /dev/vdb /dev/vdc

pvcreate - инициализация дисков под LVM в Linux

Теперь, чтобы убедиться, что данные диски можно использовать для LVM , введите команду pvdisplay :

pvdisplay

Как видим, оба диска отображаются. Разберем информацию из вывода команды:

  • PV Name – имя диска или раздела
  • VG Name – группа томов, в которую данный диск входит (мы пока группу не создали)
  • PV Size – размер диска или размера
  • Allocatable – распределение по группам. В нашем случае распределения не было, поэтому указано NO
  • PE Size – размер физического фрагмента. Если диск не добавлен ни в одну группу, значение всегда будет 0
  • Total PE – количество физических фрагментов
  • Free PE — количество свободных физических фрагментов
  • Allocated PE – распределенные фрагменты
  • PV UUID – идентификатор раздела

С помощью команды pvscan вы можете просканировать диски на предмет PV.

Следующий этап – создание группы томов. Для создания групп томов используется команда vgcreate . Чтобы объединить ранее помеченные диски, воспользуемся командой:
# vgcreate test /dev/vdb /dev/vdc

Volume group "test" successfully created

Чтобы проверить результат введите vgdisplay :

vgdisplay - создание LVM группы

Как видим, диски объединены в группу test и VG Size показывает общий размер дисков.

Разберем информацию из листинга команды vgdisplay :

  • VG Name – группа томов, в которую данный диск входит.
  • Format – версия подсистемы lvm, которая используется для создание группы (в нашем случае версия 2)
  • Metadata Areas – область метаданных
  • VG Access – уровень доступа к группе логических томов
  • VG Size – общий объем дисков, которые входят в группу
  • PE Size — размер физического фрагмента
  • Alloc PE / Size – распределенное пространство(количество и объем фрагментов)
  • VG UUID – идентификатор группы

После того, как мы создали общую группу для дисков, мы можем создать логический том на этой группы. При создании тома, используется команда lvcreate .

Чтобы в вашей группе создать логический том определенного размера и именем, используйте команду:

# lvcreate -L 5G test

Logical volume "lvol0" created.

Как видим из листинга, в группе test был создан логический том с именем lvol0 и размером 5G.

Если вы хотите сами задать имя, используйте флаг -n :

# lvcreate -L 5G -n test1 test

Logical volume "test1" created

Несколько примеров для создания логических томов с разными размерами:

lvcreate -l 40%VG test – 40% от дискового пространства группы test

lvcreate -l 100%FREE test – использовать все свободное пространство группы test

Чтобы вывести информацию о логическом томе, используйте lvdisplay :

lvdisplay - создание логического раздела LVM

Так же разберем листинг данной команды:

  • LV Path – путь к устройству логического тома (к диску или разделу)
  • LV Name – имя логического тома
  • VG Name – имя группы томов
  • LV UUID – идентификатор логического тома
  • LV Write Access – уровень доступа к логическому тому
  • LV Creation host, time — информация о хосте, дата когда был создан логический том
  • LV Size – размер диска, доступный для использования логическому тому
  • Current LE – количество логических фрагментов

LVM: создание файловой системы, монтирование логического тома

Чтобы создать файловую систему на логическом томе, воспользуйтесь утилитой mkfs :

Создадим файловую систему ext4 на LVM томе:

mkfs.ext4 /dev/test/test1

файловая система на LVM томе mkfs.ext4

Файловая система была создана без ошибок.

Теперь создадим тестовую директорию и примонтируем логический том к данной директории:

# mkdir /var/www/home
# mount /dev/test/test1 /var/www/home/

монтирование LVM тома

Как видите, все прошло без ошибок и теперь директория /var/www/home существует как отдельный раздел.

Чтобы логический том монтировался при загрузке системы, нужно добавить его в fstab и назначить директорию для монтирования.

Откроем файл:
nano /etc/fstab

И добавим в него следующую информацию:

/dev/test/test1 /var/www/home ext4 defaults 1 2

fstab - автомоннтирование тома LVM

После чего примонтировать том можно будет через mount -a :

# mount -a
# df -h

Filesystem Size Used Avail Use% Mounted on_x000D_devtmpfs 485M 0 485M 0% /dev_x000D_tmpfs 496M 0 496M 0% /dev/shm_x000D_tmpfs 496M 6.7M 489M 2% /run_x000D_tmpfs 496M 0 496M 0% /sys/fs/cgroup_x000D_/dev/vda2 20G 1.3G 19G 7% /_x000D_/dev/vda1 488M 100M 353M 23% /boot_x000D_tmpfs 100M 0 100M 0% /run/user/0_x000D_/dev/mapper/test-test1 4.8G 20M 4.6G 1% /var/www/home_x000D_

Чтобы проверить общую информацию по дискам, разделам и томам, введите команду lsblk :

lsblk - информация о дисках ДМЬ

Как видим, наш созданный том отображается, и указана директория к которой он примонтирован.

Команда lvmdiskscan позволяет просканировать доступные диски, показывает их размер и принадлежность к LVM.

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

Чтобы добавить дополнительный диск к группе томов, нужно воспользоваться уже знакомой схемой:

pvcreate /dev/нашдиск — инициализация диска для lvm

vgextend test /dev/нашдиск — добавление диска в группу томов

Чтобы расширить логический том, воспользуйтесь следующей схемой:

lvextend -L10G /dev/test/test1

Данным способом вы расширите раздел на 10 Гб.

текущий размер LVM тома

Еще несколько примеров расширения LVM раздела:

lvextend -L+10G /dev/test/test1 — добавите 10 Гб к вашему тому

lvextend -l +100%FREE /dev/test/test1 — выделите все нераспределенное пространство в группе test

Осталось увеличить раздел файловой системы:

resize2fs /dev/test/test1 – для ext4

xfs_growfs /dev/test/test1 – для xfs

Уменьшение LVM томов

LVM позволяют уменьшать размер тома. Но для безопасности умеьшения размера раздела его нужно отключить.

Отмонтируем том от директории:

umount /var/www/home/

Выполним проверку диска:

e2fsck -fy /dev/test/test1

уменьшить размер LVM в Linux

Уменьшим раздел файловой системы на 4 Гб:

# resize2fs /dev/test/test1 4G

resize2fs 1.42.9 (28-Dec-2013)_x000D_Resizing the filesystem on /dev/test/test1 to 1048576 (4k) blocks._x000D_The filesystem on /dev/test/test1 is now 1048576 blocks long._x000D_

# lvreduce -L-4G /dev/test/test1

WARNING: Reducing active logical volume to 6.00 GiB._x000D_THIS MAY DESTROY YOUR DATA (filesystem etc.)_x000D_Do you really want to reduce test/test1? [y/n]: y_x000D_Size of logical volume test/test1 changed from 10.00 GiB (2560 extents) to 6.00 GiB (1536 extents)._x000D_Logical volume test/test1 successfully resized.

Теперь уменьшим размер самого LVM тома:

lvreduce -L-4G /dev/test/test1

После чего, нужно примонтировать том обратно и проверить текущий размер:

монтирование LVM после уменьшения размера

Как видим, размер уменьшился до 4 Гб.

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

Для удаления LVM томов, используется команда lvremove :

lvremove /dev/test/test1

lvremove удаление LVM тома

Чтобы удалить группу логических томов, используйте:

# vgremove test

Volume group "test" successfully removed

Убрать метки с LVM дисков:

# pvremove /dev/vdb /dev/vdc

Labels on physical volume "/dev/vdb" successfully wiped._x000D_Labels on physical volume "/dev/vdc" successfully wiped._x000D_

Создание зеркальных томов LVM

LVM позволяет создать зеркальные тома для повышения отказоустойчивости хранения данных. В LVM зеркале данные одновременно хранятся на двух (или более) физических дисках (подобие RAID-1). Процедура создания зеркального тома в LVM.

  1. Инициализация дисков: pvcreate /dev/sd{b,c}
  2. Создаем LVM группу: vgcreate mirror1 /dev/sd{b,c}
  3. Создадим зеркальный LVM том: lvcreate -L 5g -m1 -n lvMirr1 VGmirror1

Инструменты LVM очень удобны для работы, с помощью них можно легко управлять томами, нарезать их на нужные вам размеры и с легкостью использовать под свои нужды. В данной статье я постарался затронуть все основные моменты в работе с LVM .

EnglishRussianUkrainian