Введение
В этой лабораторной работе вы изучите фундаментальный процесс создания и управления хранилищем 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. Каждая строка в этом файле имеет шесть полей:
- Device (Устройство): Устройство для монтирования. В нашем случае,
/dev/my_vg/my_lv. - Mount Point (Точка монтирования): Каталог для монтирования. Здесь это
/data. - Filesystem Type (Тип файловой системы): Тип файловой системы, который равен
xfs. - Mount Options (Параметры монтирования): Параметры для монтирования.
defaults— это стандартный набор параметров, подходящий для большинства случаев. - Dump: Используется утилитой
dumpдля определения необходимости резервного копирования файловой системы.0означает отключение. - 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, чтобы сделать дополнительное пространство для хранения пригодным для использования операционной системой, завершив сквозной процесс динамического управления хранилищем.



