Создание и расширение логических томов LVM в RHEL

Red Hat Enterprise LinuxBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы изучите фундаментальный процесс создания и управления хранилищем LVM (Logical Volume Manager) в системе Red Hat Enterprise Linux. Вы начнете с подготовки физического диска, его разбиения на разделы с помощью parted и инициализации в качестве физического тома (PV, Physical Volume) LVM с использованием pvcreate. После этого вы объедините этот PV в группу томов (VG, Volume Group) с помощью vgcreate, а затем создадите гибкий логический том (LV, Logical Volume) из этой группы, используя lvcreate. Начальная настройка завершается форматированием нового LV с файловой системой XFS и постоянным монтированием для использования системой.

Основываясь на первоначальной конфигурации, вы затем изучите одно из ключевых преимуществ LVM: возможность динамического изменения размера хранилища. Вы узнаете, как расширить существующую группу томов, добавив новый физический том с помощью vgextend. Впоследствии вы расширите логический том, чтобы использовать это новое пространство, используя lvextend, и измените размер файловой системы XFS в режиме онлайн с помощью xfs_growfs, чтобы сделать дополнительную емкость немедленно доступной операционной системе без простоя.

Подготовка физических томов с помощью parted и pvcreate

На этом этапе вы начнете управлять хранилищем, подготовив физический диск для использования с Logical Volume Manager (LVM). Это включает в себя два основных этапа: во-первых, разбиение диска на разделы с помощью утилиты parted, и во-вторых, инициализация этих разделов в качестве физических томов (PV, Physical Volumes) LVM с помощью команды pvcreate.

Обзор Logical Volume Manager (LVM)

LVM — это мощный инструмент управления хранилищем в Linux, который предоставляет гибкий уровень над физическими устройствами хранения. Вместо прямого использования дисков и разделов, LVM позволяет создавать абстрактные "группы томов" из одного или нескольких физических устройств, а затем выделять "логические тома" из этого объединенного пространства. Это значительно упрощает изменение размера хранилища, замену дисков и управление хранилищем вашей системы без простоя.

Самым фундаментальным компонентом в LVM является Physical Volume (PV). PV — это физическое устройство хранения, такое как раздел жесткого диска или целый диск, который был инициализирован для использования LVM.

1. Создание раздела для LVM

Прежде чем диск можно будет использовать с LVM, необходимо создать на нем раздел и установить для него тип "LVM". Мы будем использовать устройство /dev/vdb для этого упражнения. Вам потребуются привилегии sudo для изменения разделов диска.

Сначала создайте новую таблицу разделов GUID (GPT, GUID Partition Table) на устройстве /dev/vdb. GPT — это современный стандарт для структуры таблицы разделов на физическом устройстве хранения.

sudo parted /dev/vdb mklabel gpt

Затем создайте один раздел размером 512 MiB. Мы назовем этот раздел lvm-part1.

sudo parted /dev/vdb mkpart lvm-part1 1MiB 513MiB

Теперь установите тип раздела на lvm. Этот флаг сообщает системе, что этот раздел предназначен для использования с Logical Volume Manager.

sudo parted /dev/vdb set 1 lvm on

Чтобы ядро немедленно распознало новый раздел, выполните команду udevadm settle. Эта команда ожидает, пока демон udev обработает все события устройств, гарантируя, что новый раздел /dev/vdb1 будет доступен.

sudo udevadm settle

Наконец, убедитесь, что раздел был создан правильно, распечатав таблицу разделов.

sudo parted /dev/vdb print

Вы должны увидеть вывод, аналогичный следующему, показывающий один раздел с включенным флагом lvm.

Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End    Size   File system  Name       Flags
 1      1049kB  538MB  537MB               lvm-part1  lvm

2. Инициализация раздела как физического тома

После создания и правильного указания типа раздела следующим шагом является его инициализация в качестве физического тома LVM с помощью команды pvcreate. Эта команда записывает метаданные LVM на раздел, формально делая его частью системы LVM.

Выполните следующую команду, чтобы инициализировать /dev/vdb1:

sudo pvcreate /dev/vdb1

Успешная операция выдаст следующее сообщение:

  Physical volume "/dev/vdb1" successfully created.
  Creating devices file /etc/lvm/devices/system.devices

3. Отображение информации о физическом томе

Теперь вы можете проверить вновь созданный физический том. Команда pvs предоставляет краткую сводку всех PV в системе, а pvdisplay предлагает более подробный вид.

Используйте pvs, чтобы увидеть краткую сводку:

sudo pvs

Вывод перечислит ваш новый PV. Обратите внимание, что он еще не принадлежит ни одной группе томов (VG).

  PV         VG Fmt  Attr PSize   PFree
  /dev/vdb1     lvm2 ---  512.00m 512.00m

Для получения более подробной информации используйте pvdisplay:

sudo pvdisplay /dev/vdb1

Эта команда показывает подробную информацию, включая имя PV, размер и уникальный идентификатор (UUID).

  "/dev/vdb1" is a new physical volume of "512.00 MiB"
  --- NEW Physical volume ---
  PV Name               /dev/vdb1
  VG Name
  PV Size               512.00 MiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Теперь вы успешно подготовили физический раздел для LVM. На следующем шаге вы будете использовать этот PV для создания группы томов.

Создание группы томов из физических томов с помощью vgcreate

На этом этапе вы будете использовать физический том (PV), подготовленный на предыдущем шаге, для создания группы томов (VG). Группа томов является центральным компонентом LVM, действуя как единый, управляемый пул дискового пространства, из которого вы можете создавать логические тома.

Понимание групп томов и физических экстентов

Volume Group (VG) объединяет один или несколько физических томов в единый пул хранилища. Представьте себе, что вы объединяете несколько небольших емкостей с водой в один большой резервуар. Эта абстракция и придает LVM его гибкость.

Этот пул хранилища делится на небольшие фрагменты фиксированного размера, называемые Physical Extents (PEs). По умолчанию PE составляет 4 MiB. Когда вы создаете логический том позже, вы, по сути, выделяете определенное количество этих PE из группы томов.

1. Создание группы томов

Теперь вы создадите группу томов с именем my_vg, используя физический том /dev/vdb1. Команда для этого — vgcreate.

sudo vgcreate my_vg /dev/vdb1

Если команда выполнена успешно, вы увидите подтверждающее сообщение:

  Volume group "my_vg" successfully created

Эта команда создала новый пул хранилища с именем my_vg, который содержит все доступное пространство с /dev/vdb1.

2. Отображение информации о группе томов

Так же, как вы делали с физическими томами, вы можете отобразить информацию о вашей новой группе томов. Команда vgs предоставляет сводку, а vgdisplay предоставляет подробный вид.

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

sudo vgs

Вывод покажет вашу новую VG, ее размер и объем свободного пространства.

  VG    #PV #LV #SN Attr   VSize   VFree
  my_vg   1   0   0 wz--n- 508.00m 508.00m

Для получения более подробного отчета о вашей конкретной группе томов используйте vgdisplay:

sudo vgdisplay my_vg

Этот вывод предоставляет исчерпывающую информацию, включая размер PE, общее количество PE и количество свободных.

  --- Volume group ---
  VG Name               my_vg
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               508.00 MiB
  PE Size               4.00 MiB
  Total PE              127
  Alloc PE / Size       0 / 0
  Free  PE / Size       127 / 508.00 MiB
  VG UUID               xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Обратите внимание, что PE Size составляет 4.00 MiB, и у вас 127 Free PE, что соответствует общему доступному пространству в группе томов. Теперь вы успешно создали группу томов, и она готова к созданию логических томов из нее.

Создание и форматирование логического тома с помощью lvcreate и mkfs.xfs

На этом этапе вы выделите используемое блочное устройство, известное как Logical Volume (LV), из созданной вами группы томов. После создания LV, это все еще просто необработанное пространство для хранения. Чтобы хранить на нем файлы, вы должны отформатировать его с помощью файловой системы.

Понимание логических томов и файловых систем

Logical Volume (LV) — это эквивалент LVM традиционного раздела диска. Он создается из свободного пространства внутри группы томов и представляется операционной системе как стандартное блочное устройство. Вы можете создавать файловые системы на LV, монтировать их и использовать для хранения данных. Ключевым преимуществом является то, что размеры LV можно легко изменять, что гораздо сложнее с физическими разделами.

Файловая система — это структура данных, которую операционная система использует для управления тем, как данные хранятся и извлекаются. Она организует необработанное пространство устройства, такого как LV, в файлы и каталоги. Для этой лабораторной работы мы будем использовать XFS, которая является высокопроизводительной журналируемой файловой системой, используемой по умолчанию в Red Hat Enterprise Linux.

1. Создание логического тома

Теперь вы создадите логический том размером 256 MiB с именем my_lv из группы томов my_vg. Команда для этого — lvcreate.

  • -n my_lv: Указывает имя для нового LV.
  • -L 256M: Устанавливает размер LV на 256 мегабайт.
  • my_vg: Имя группы томов, из которой нужно создать LV.

Выполните следующую команду:

sudo lvcreate -n my_lv -L 256M my_vg

Успешная команда выдаст следующий вывод:

  Logical volume "my_lv" created.

2. Проверка создания логического тома

Вы можете проверить свой новый LV с помощью команд lvs и lvdisplay.

Чтобы увидеть сводку всех LV, выполните:

sudo lvs

Вывод покажет ваш новый LV, my_lv, в группе my_vg.

  LV    VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  my_lv my_vg -wi-a----- 256.00m

Для подробного просмотра вы можете указать полный путь к LV. Путь к LV обычно имеет вид /dev/VG_NAME/LV_NAME.

sudo lvdisplay /dev/my_vg/my_lv

Это предоставляет подробную информацию, включая путь к LV, который вам понадобится на следующем шаге.

  --- Logical volume ---
  LV Path                /dev/my_vg/my_lv
  LV Name                my_lv
  VG Name                my_vg
  LV UUID                xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  LV Write Access        read/write
  LV Creation host, time host, 2023-10-27 10:30:00 +0000
  LV Status              available
  ## open                 0
  LV Size                256.00 MiB
  Current LE             64
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

3. Форматирование логического тома с помощью файловой системы XFS

Теперь вы отформатируете логический том my_lv с помощью файловой системы XFS, используя команду mkfs.xfs. Это подготовит том для хранения файлов.

sudo mkfs.xfs /dev/my_vg/my_lv

Команда выведет подробности о создаваемой файловой системе.

meta-data=/dev/my_vg/my_lv       isize=512    agcount=4, agsize=16384 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=65536, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

Ваш логический том теперь отформатирован и готов к монтированию и использованию. Вы сделаете это на следующем шаге.

Постоянное монтирование логического тома с использованием /etc/fstab

На этом этапе вы сделаете созданный и отформатированный логический том доступным для системы. Это включает в себя два действия: создание каталога, который будет служить «точкой монтирования», а затем настройку системы для автоматического подключения логического тома к этому каталогу при каждой загрузке.

Понимание монтирования и /etc/fstab

Отформатированное блочное устройство, такое как ваш логический том my_lv, нельзя использовать напрямую, пока оно не будет смонтировано. Монтирование — это процесс прикрепления файловой системы к определенному каталогу в основном дереве файловой системы. После монтирования вы можете перейти в этот каталог для чтения и записи файлов на устройстве.

Чтобы обеспечить автоматическое монтирование файловой системы после перезагрузки, вы должны добавить для нее запись в файл /etc/fstab (таблица файловых систем). Этот файл содержит список всех дисков и разделов, которые система должна монтировать при загрузке.

1. Создание точки монтирования

Точка монтирования — это просто пустой каталог, который будет служить корнем вашей новой файловой системы. Мы создадим каталог с именем /data для этой цели.

sudo mkdir /data

2. Добавление записи в /etc/fstab для постоянного монтирования

Теперь вам нужно указать системе автоматически монтировать ваш LV в каталог /data. Вы добавите новую строку в файл /etc/fstab. Каждая строка в этом файле имеет шесть полей:

  1. Device (Устройство): Устройство для монтирования. В нашем случае, /dev/my_vg/my_lv.
  2. Mount Point (Точка монтирования): Каталог для монтирования. Здесь это /data.
  3. Filesystem Type (Тип файловой системы): Тип файловой системы, который равен xfs.
  4. Mount Options (Параметры монтирования): Параметры для монтирования. defaults — это стандартный набор параметров, подходящий для большинства случаев.
  5. Dump: Используется утилитой dump для определения необходимости резервного копирования файловой системы. 0 означает отключение.
  6. Pass: Используется fsck для определения порядка проверки файловых систем при загрузке. 0 означает не проверять.

Мы будем использовать команду echo в сочетании с sudo tee -a, чтобы добавить правильную строку в /etc/fstab без необходимости использования текстового редактора.

echo '/dev/my_vg/my_lv /data xfs defaults 0 0' | sudo tee -a /etc/fstab

Вы можете убедиться, что строка была добавлена правильно, просмотрев содержимое файла:

cat /etc/fstab

3. Монтирование файловой системы

Теперь, когда запись существует в /etc/fstab, вы можете использовать команду mount, чтобы немедленно смонтировать ее. Поскольку точка монтирования /data указана в /etc/fstab, вам нужно только указать имя каталога.

sudo mount /data

Система прочитает /etc/fstab, найдет запись для /data и смонтирует соответствующее устройство.

4. Проверка монтирования

Чтобы убедиться, что файловая система успешно смонтирована, вы можете использовать команду df (disk free) с опцией -h (human-readable).

df -h /data

Вывод должен показать ваш логический том, смонтированный на /data, с его общим размером и доступным пространством.

Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/my_vg-my_lv     251M   28M  224M  11% /data

Вы также можете создать тестовый файл, чтобы убедиться, что у вас есть доступ на запись:

echo "My LVM is working!" | sudo tee /data/test.txt

Затем прочтите файл обратно, чтобы убедиться, что он был записан:

cat /data/test.txt
My LVM is working!

Ваш логический том теперь смонтирован и будет доступен автоматически при каждом запуске системы.

Расширение группы томов и логического тома с помощью vgextend и lvextend

На этом этапе вы познакомитесь с одной из самых мощных функций LVM: возможностью динамически увеличивать размер вашего хранилища. Вы добавите новый раздел физического диска в существующую группу томов, чтобы увеличить ее общую емкость, а затем расширите свой логический том, чтобы использовать часть этого нового пространства.

Понимание расширения хранилища

Основная причина использования LVM — его гибкость. Когда у вас заканчивается место, вам не нужно выполнять сложную миграцию данных. Вместо этого вы можете просто добавить еще один физический диск (или раздел) в группу томов, а затем увеличивать свои логические тома по мере необходимости. Все это можно сделать в режиме онлайн, не отключая файловую систему.

  • vgextend: Эта команда добавляет один или несколько физических томов в существующую группу томов, увеличивая ее общий размер.
  • lvextend: Эта команда увеличивает размер логического тома, используя пространство из свободных экстентов в пределах его группы томов.

1. Подготовка нового физического тома

Чтобы расширить группу томов, вам сначала понадобится новый физический том. Мы создадим второй раздел на устройстве /dev/vdb, как вы это сделали на первом шаге.

Сначала создайте новый раздел размером 512 MiB. Мы разместим его сразу после первого.

sudo parted /dev/vdb mkpart lvm-part2 513MiB 1025MiB

Затем установите тип раздела на lvm.

sudo parted /dev/vdb set 2 lvm on

Убедитесь, что ядро распознает новый раздел, /dev/vdb2.

sudo udevadm settle

Наконец, инициализируйте этот новый раздел как физический том.

sudo pvcreate /dev/vdb2

Вы должны увидеть сообщение об успехе:

  Physical volume "/dev/vdb2" successfully created.

2. Расширение группы томов

Теперь добавьте новый физический том (/dev/vdb2) в существующую группу томов (my_vg) с помощью команды vgextend.

sudo vgextend my_vg /dev/vdb2

Сообщение подтверждения укажет на успех:

  Volume group "my_vg" successfully extended

Вы можете проверить изменение с помощью команды vgs. Обратите внимание, что VSize и VFree значительно увеличились.

sudo vgs my_vg
  VG    #PV #LV #SN Attr   VSize    VFree
  my_vg   2   1   0 wz--n- 1022.00m 766.00m

Группа томов my_vg теперь охватывает два физических раздела и имеет больше свободного места.

3. Расширение логического тома

С большим количеством доступного места в группе томов вы теперь можете расширить свой логический том. Давайте увеличим размер my_lv с 256 MiB до нового общего размера 400 MiB.

Команда lvextend с опцией -L устанавливает новый абсолютный размер тома.

sudo lvextend -L 400M /dev/my_vg/my_lv

Вывод подтвердит операцию изменения размера.

  Size of logical volume my_vg/my_lv changed from 256.00 MiB (64 extents) to 400.00 MiB (100 extents).
  Logical volume my_vg/my_lv successfully resized.

Проверьте новый размер логического тома с помощью lvs:

sudo lvs /dev/my_vg/my_lv
  LV    VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  my_lv my_vg -wi-ao---- 400.00m

Важно: Вы успешно расширили логический том (блочное устройство), но файловая система XFS, находящаяся на нем, еще не знает об этом новом пространстве. Если вы проверите размер смонтированной файловой системы, она по-прежнему сообщит старый размер.

df -h /data
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/my_vg-my_lv     251M   28M  224M  11% /data

На следующем шаге вы измените размер файловой системы, чтобы заполнить вновь доступное пространство в логическом томе.

Изменение размера файловой системы XFS с помощью xfs_growfs

На этом заключительном этапе вы завершите процесс расширения хранилища, изменив размер файловой системы XFS, чтобы она знала о дополнительном пространстве, которое вы выделили ее базовому логическому тому. Это решающий последний шаг, который делает новое пространство пригодным для хранения файлов.

Понимание изменения размера файловой системы

Когда вы расширяете логический том, вы только увеличиваете размер контейнера (блочного устройства). Файловая система внутри этого контейнера остается в своем первоначальном размере и не знает о новом, неиспользованном пространстве в конце устройства.

Для файловой системы XFS команда xfs_growfs используется для расширения файловой системы, чтобы заполнить базовое устройство. Основным преимуществом XFS является то, что эта операция может выполняться в режиме онлайн, пока файловая система смонтирована и используется, без необходимости простоя.

1. Увеличение файловой системы XFS

Команда xfs_growfs принимает точку монтирования файловой системы в качестве своего аргумента. В вашем случае точка монтирования — /data.

Выполните следующую команду, чтобы расширить файловую систему:

sudo xfs_growfs /data

Команда выведет информацию об изменении, указывающую старое и новое количество блоков данных.

meta-data=/dev/mapper/my_vg-my_lv isize=512    agcount=4, agsize=16384 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=65536, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 65536 to 102400

Ключевая строка — data blocks changed from 65536 to 102400, которая подтверждает, что файловая система увеличилась.

2. Проверка нового размера файловой системы

Теперь снова запустите команду df -h, чтобы убедиться, что размер файловой системы отражает изменение.

df -h /data

Вывод теперь должен показывать новый, больший размер, который составляет примерно 400 MiB.

Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/my_vg-my_lv     395M   29M  367M   8% /data

Вы также можете проверить, что тестовый файл, который вы создали ранее, все еще нетронут:

cat /data/test.txt
My LVM is working!

Поздравляем! Вы успешно завершили весь рабочий процесс LVM: от разбиения физического диска и создания физических томов до построения группы томов, создания логического тома, форматирования и монтирования его и, наконец, динамического расширения его в режиме онлайн без потери данных.

Резюме

В этой лабораторной работе вы изучили основной рабочий процесс настройки хранилища с использованием Logical Volume Manager (LVM) в RHEL. Вы начали с подготовки физического диска, используя parted для создания раздела с установленным флагом lvm, а затем инициализировали его как Physical Volume (PV) с помощью pvcreate. После этого вы объединили PV в новую Volume Group (VG) с помощью vgcreate. Из этой VG вы выделили Logical Volume (LV) с помощью lvcreate, отформатировали его с файловой системой XFS, используя mkfs.xfs, и настроили его для постоянного монтирования, добавив запись в /etc/fstab.

Лабораторная работа также продемонстрировала гибкость LVM, проведя вас через процесс расширения существующего логического тома. Это включало в себя подготовку нового физического тома, добавление его в группу томов с помощью vgextend для увеличения общего доступного пространства, а затем расширение самого логического тома с помощью lvextend. Наконец, вы изменили размер файловой системы XFS в режиме онлайн, используя xfs_growfs, чтобы сделать дополнительное пространство для хранения пригодным для использования операционной системой, завершив сквозной процесс динамического управления хранилищем.