- Управление жесткими дисками с помощью LVM
Общие сведения об LVM#
Logical Volume Manager (менеджер логических томов, LVM) — это механизм для управления разделами дисков в Linux. Добавляя логический уровень между дисками и файловыми системами, LVM скрывает структуру дисковых разделов от файловых систем, позволяя более гибко управлять разделами.
Процедура управления диском через LVM следующая.
- Создание для диска физических томов.
- Объединение нескольких физических томов в группу томов.
- Создание в группе логических томов.
- Создание файловых систем на логических томах.
При управлении дисками с помощью LVM файловые системы распределяются по нескольким дискам и могут быть легко увеличены или уменьшены по мере необходимости. Таким образом, размер файловой системы больше не ограничивается емкостью диска.
Основные понятия#
-
Физический накопитель. Это физические устройства хранения в системе, такие как жесткие диски (/dev/hda и /dev/sda). В системе хранения это единица самого низкого уровня.
-
Физический том (Physical volume, PV). Это раздел диска либо устройство (например, RAID), имеющее те же логические функции, что раздел диска. Тома PV — это базовые логические блоки хранения LVM. Том PV содержит специальную метку, которая по умолчанию хранится во втором 512-байтовом секторе. Она также может храниться в одном из первых четырех секторов. Эта метка содержит универсальный уникальный идентификатор (UUID) физического тома, размер блочного устройства и место хранения метаданных LVM на устройстве.
-
Группа томов (Volume group, VG). Группа VG состоит из физических томов и скрывает детали об их устройстве. Вы можете создавать в VG логические тома, не принимая во внимание характеристики физических.
-
Логический том (Logical volume, LV). Группу томов нельзя использовать напрямую. Ее можно использовать только после разделения на логические тома. Тома LV можно форматировать в разных файловых системах и непосредственно использовать после монтирования.
-
Физический диапазон (Physical extent, PE). Диапазон PE — это небольшая единица хранения на физическом томе. Размер PE совпадает с размером логического диапазона в группе томов.
-
Логический диапазон (Logical extent, LE). Диапазон LE — это небольшая единица хранения на логическом томе. В одной группе VG логические диапазоны имеют одинаковый размер на всех LV-томах.
Установка LVM#
ПРИМЕЧАНИЕ.
Средство LVM установлено в ОС openEuler по умолчанию. Вы можете запустить команду rpm -qa | grep lvm2, чтобы проверить его установку. Если вывод команды содержит lvm2, то LVM установлено. В этом случае пропустите этот раздел. Если никакой информации не выводится, то средство LVM не установлено. Установите его, как описано в этом разделе.
-
Настройте локальный источник yum. Подробнее см. в разделе Настройка сервера репозитория .
-
Очистите кэш.
$ dnf clean all
-
Создайте кэш.
$ dnf makecache
-
Установите LVM от имени пользователя root.
# dnf install lvm2
-
Проверьте установленный пакет RPM.
$ rpm -qa | grep lvm2
Управление физическими томами#
Создание физического тома#
Чтобы создать PV-том, выполните команду pvcreate от имени пользователя root.
pvcreate [option] devname ...
В представленных выше данных:
-
option — параметры команды. Основные параметры следующие.
- -f — принудительно создает PV без подтверждения пользователя.
- -u — задает UUID устройства.
- -y — отвечает “да” на все вопросы.
-
devname — задает имя устройства для создаваемого PV. При необходимости создания нескольких PV в пакетном режиме указывайте в этом параметре имена через пробел.
Пример 1. Создание томов PV на основе /dev/sdb и /dev/sdc.
# pvcreate /dev/sdb /dev/sdc
Пример 2. Создание томов PV на основе /dev/sdb1 и /dev/sdb2.
# pvcreate /dev/sdb1 /dev/sdb2
Просмотр физического тома#
Выполните команду pvdisplay от имени пользователя root, чтобы просмотреть информацию о PV-томе, включая имя PV, группу томов, к которой принадлежит PV, размер PV, размер диапазона PE, общее количество PE, число доступных PE, число выделенных PE и UUID.
pvdisplay [option] devname
В представленных выше данных:
-
option — параметры команды. Основные параметры следующие.
- -s — выводит информацию в кратком формате.
- -m — отображает сопоставление диапазонов PE с LE.
-
devname — указывает устройство, соответствующее просматриваемому тому PV. Если PV не указаны, отображается информация обо всех PV.
Пример. Запустите следующую команду, чтобы отобразить основные сведения о PV-томе /dev/sdb: xample: Run the following command to display the basic information about the PV /dev/sdb:
# pvdisplay /dev/sdb
Изменение атрибутов физического тома#
Чтобы изменить атрибуты PV, выполните от имени пользователя root команду pvchange.
pvchange [option] pvname ...
В представленных выше данных:
-
option — параметры команды. Основные параметры следующие.
- -u — генерирует новый идентификатор UUID.
- -x — указывает, разрешено ли выделение PE-диапазонов.
-
pvname — указывает имя устройства, соответствующего изменяемому PV. При необходимости изменения нескольких PV в пакетном режиме указывайте в этом параметре имена через пробел.
Пример. Запустите следующую команду, чтобы запретить выделение PE-диапазонов на физическом томе /dev/sdb.
# pvchange -x n /dev/sdb
Удаление физического тома#
Чтобы удалить PV-том, выполните команду pvremove от имени пользователя root.
pvremove [option] pvname ...
В представленных выше данных:
-
option — параметры команды. Основные параметры следующие.
- -f — принудительно удаляет PV без подтверждения пользователя.
- -y — отвечает “да” на все вопросы.
-
pvname — указывает имя устройства, соответствующего удаляемому PV. При необходимости удаления нескольких PV в пакетном режиме указывайте в этом параметре имена через пробел.
Пример. Выполните следующую команду, чтобы удалить физический том /dev/sdb:
# pvremove /dev/sdb
Управление группами томов#
Создание группы томов#
Чтобы создать VG-группу, выполните от имени пользователя root команду vgcreate.
vgcreate [option] vgname pvname ...
В представленных выше данных:
-
option — параметры команды. Основные параметры следующие.
- -l — указывает максимальное количество томов LV, которое можно создать в VG.
- -p — указывает максимальное количество томов PV, которое можно добавить в VG.
- -s — указывает размер диапазона PE для физического тома в VG.
-
vgname — имя создаваемой группы VG.
-
pvname — имя тома PV, который будет добавлен в VG.
Пример. Запустите следующую команду, чтобы создать группу томов vg1 и добавить в нее физические тома /dev/sdb и /dev/sdc.
# vgcreate vg1 /dev/sdb /dev/sdc
Просмотр группы томов#
От имени пользователя root выполните команду vgdisplay, чтобы просмотреть информацию о VG-группе.
vgdisplay [option] [vgname]
В представленных выше данных:
-
option — параметры команды. Основные параметры следующие.
- -s — выводит информацию в кратком формате.
- -A — отображает только атрибуты активных VG.
-
vgname — имя VG для просмотра. Если VG не указаны, отображается информация обо всех VG.
Пример. Запустите следующую команду, чтобы отобразить основные сведения информацию о группе томов vg1:
# vgdisplay vg1
Изменение атрибутов группы томов#
Для изменения атрибутов VG-группы выполните команду vgchange от имени пользователя root.
vgchange [option] vgname
В представленных выше данных:
-
option — параметры команды. Основные параметры следующие.
- -a — устанавливает активный статус VG.
-
vgname — имя группы VG, атрибуты которой нужно изменить.
Пример. Запустите следующую команду, чтобы изменить статус vg1 на активный.
# vgchange -ay vg1
Расширение группы томов#
Выполните команду vgextend от имени пользователя root, чтобы динамически расширить VG-группу. В этом случае размер VG увеличивается за счет добавления в нее PV-томов.
vgextend [option] vgname pvname ...
В представленных выше данных:
-
option — параметры команды. Основные параметры следующие.
- dev — режим отладки.
- -t — только тестирование.
-
vgname — имя группы VG, размер которой необходимо увеличить.
-
pvname — имя тома PV, который будет добавлен в VG.
Пример. Запустите следующую команду, чтобы добавить PV-том /dev/sdb в группу vg1:
# vgextend vg1 /dev/sdb
Уменьшение группы томов#
Чтобы удалить тома PV из группы и уменьшить ее размер, выполните от имени пользователя root команду vgreduce. VG-группа должна содержать хотя бы один PV.
vgreduce [option] vgname pvname ...
В представленных выше данных:
-
option — параметры команды. Основные параметры следующие.
- -а — если в команде не указаны тома PV, все пустые PV удаляются.
- –removemissing — удаляет потерянные тома PV в VG-группе, чтобы восстановить ее нормальное состояние.
-
vgname: имя группы VG, которую необходимо уменьшить.
-
pvname: имя тома PV, который нужно удалить из VG.
Пример. Запустите следующую команду, чтобы удалить PV-том /dev/sdb2 из группы vg1:
# vgreduce vg1 /dev/sdb2
Удаление группы томов#
Чтобы удалить VG-группу, выполните команду vgremove от имени пользователя root.
vgremove [option] vgname
В представленных выше данных:
-
option — параметры команды. Основные параметры следующие.
- -f — принудительно удаляет VG без подтверждения пользователя.
-
vgname: имя группы VG, которую необходимо удалить.
Пример. Запустите следующую команду, чтобы удалить группу vg1.
# vgremove vg1
Управление логическими томами#
Создание логического тома#
Выполните команду lvcreate от имени пользователя root, чтобы создать LV-том.
lvcreate [option] vgname
В представленных выше данных:
-
option — параметры команды. Основные параметры следующие.
- -L — задает размер LV в kKmMgGtT.
- -l — задает размер LV по числу LE-диапазонов.
- -n — задает имя создаваемого тома LV.
- -s — создает моментальный снимок.
-
vgname — имя создаваемой группы VG.
Пример 1. Запустите следующую команду, чтобы создать том LV размером 10 ГБ в группе vg1.
# lvcreate -L 10G vg1
Пример 2. Запустите следующую команду, чтобы создать том LV размером 200 МБ в группе vg1 и назвать его lv1.
# lvcreate -L 200M -n lv1 vg1
Просмотр логического тома#
Выполните команду lvdisplay от имени пользователя root, чтобы просмотреть сведения об LV-томе, включая размер LV, его состояние чтения и записи, а также информацию о моментальных снимках.
lvdisplay [option] [lvname]
В представленных выше данных:
-
option — параметры команды. Основные параметры следующие.
-
-v — отображает сопоставление диапазонов LE с PE.
-
lvname — файл устройства, соответствующий LV-тому, атрибуты которого нужно отобразить. Если этот параметр не задан, отображаются атрибуты всех LV.
ПРИМЕЧАНИЕ.
Файлы устройств, соответствующие томам LV, хранятся в каталоге VG-группы. Например, если том lv1 создается в группе vg1, соответствующим файлом устройства lv1 будет /dev/vg1/lv1.
Пример. Запустите следующую команду, чтобы отобразить основные сведения о томе lv1:
# lvdisplay /dev/vg1/lv1
Изменение размера логического тома#
Чтобы увеличить или уменьшить размер LV-тома в LVM, от имени пользователя root выполните команду lvresize. При этом возможна потеря данных, поэтому будьте осторожны при выполнении этой команды.
lvresize [option] vgname
В представленных выше данных:
-
option — параметры команды. Основные параметры следующие.
- -L — задает размер LV в kKmMgGtT.
- -l — задает размер LV по числу LE-диапазонов.
- -f — принудительно изменяет размер LV без подтверждения пользователя.
-
lvname — имя изменяемого LV-тома.
Пример 1. Запустите следующую команду, чтобы увеличить размер тома /dev/vg1/lv1 на 200 МБ.
# lvresize -L +200 /dev/vg1/lv1
Пример 2. Запустите следующую команду, чтобы уменьшить размер тома /dev/vg1/lv1 на 200 МБ.
# lvresize -L -200 /dev/vg1/lv1
Расширение логического тома#
Выполните команду lvextend от имени пользователя root, чтобы оперативно расширить размер тома LV, не прерывая к нему доступ для приложений.
lvextend [option] lvname
В представленных выше данных:
-
option — параметры команды. Основные параметры следующие.
- -L — задает размер LV в kKmMgGtT.
- -l — задает размер LV по числу LE-диапазонов.
- -f — принудительно изменяет размер LV без подтверждения пользователя.
-
lvname — файл устройства для тома LV, размер которого необходимо увеличить.
Пример. Запустите следующую команду, чтобы увеличить размер тома /dev/vg1/lv1 на 100 МБ.
# lvextend -L +100M /dev/vg1/lv1
Уменьшение логического тома#
Чтобы уменьшить размер LV-тома, выполните команду lvreduce от имени пользователя root. Это может привести к удалению имеющихся на LV данных. Поэтому проверьте, можно ли удалить эти данные, перед запуском команды.
lvreduce [option] lvname
В представленных выше данных:
-
option — параметры команды. Основные параметры следующие.
- -L — задает размер LV в kKmMgGtT.
- -l — задает размер LV по числу LE-диапазонов.
- -f — принудительно изменяет размер LV без подтверждения пользователя.
-
lvname — файл устройства для тома LV, размер которого необходимо увеличить.
Пример. Запустите следующую команду, чтобы уменьшить место на томе /dev/vg1/lvl на 100 МБ:
# lvreduce -L -100M /dev/vg1/lv1
Удаление логического тома#
Чтобы удалить LV-том, выполните от имени пользователя root команду lvremove. Если том был смонтирован командой mount, необходимо запустить команду umount, чтобы размонтировать LV, прежде чем выполнять lvremove.
lvremove [option] vgname
В представленных выше данных:
-
option — параметры команды. Основные параметры следующие.
- -f — принудительно удаляет LV без подтверждения пользователя.
-
vgname — имя удаляемого LV-тома.
Пример. Запустите следующую команду, чтобы удалить том /dev/vg1/lv1.
# lvremove /dev/vg1/lv1
Создание и монтирование файловой системы#
После создания тома LV необходимо создать на нем файловую систему и смонтировать ее в соответствующий каталог.
Создание файловой системы#
Для создания файловой системы выполните команду mkfs от имени пользователя root.
mkfs [option] lvname
В представленных выше данных:
-
option — параметры команды. Основные параметры следующие.
- -t — задает тип создаваемой системы Linux, например ext2, ext3 или ext4. Тип по умолчанию — ext2.
-
lvname — имя файла устройства для LV, соответствующего создаваемой файловой системе.
Пример. Запустите следующую команду, чтобы создать файловую систему ext4 на томе /dev/vg1/lv1:
# mkfs -t ext4 /dev/vg1/lv1
Монтирование файловой системы вручную#
Файловая система, монтируемая вручную, действительна лишь на кратковременной основе. После перезапуска ОС она больше не существует.
Выполните команду mount от имени пользователя root, чтобы смонтировать файловую систему.
mount lvname mntpath
В представленных выше данных:
- lvname — имя файла устройства для LV, соответствующего монтируемой файловой системе.
- mntpath — путь монтирования.
Пример. Запустите следующую команду, чтобы смонтировать том /dev/vg1/lv1 в каталоге /mnt/data.
# mount /dev/vg1/lv1 /mnt/data
Автоматическое монтирование файловой системы#
Автоматически монтируемая файловая система не существует после перезапуска ОС. Вам потребуется еще раз смонтировать файловую систему вручную. Если после монтирования файловой системы вручную выполнить от имени пользователя root следующие действия, файловая система может быть смонтирована автоматически после перезапуска ОС.
-
Запустите команду blkid, чтобы запросить UUID тома LV. В следующем примере используется том /dev/vg1/lv1:
# blkid /dev/vg1/lv1
Проверьте вывод команды. Он содержит следующую информацию, в которой uuidnumber — это строка цифр, указывающая UUID, а fstype указывает тип файловой системы.
/dev/vg1/lv1: UUID=" uuidnumber " TYPE=" fstype "
-
Выполните команду vi /etc/fstab для редактирования файла fstab и добавьте в конец файла следующее содержимое:
UUID=uuidnumber mntpath fstype defaults 0 0
В представленных выше данных:
- Столбец 1 — указывает UUID. Введите номер uuidnumber, полученный в пункте 1 .
- Столбец 2 — указывает каталог монтирования файловой системы. Замените mntpath фактическим значением.
- Столбец 3 — указывает формат файловой системы. Введите тип fstype, полученный в пункте 1 .
- Столбец 4 — указывает параметры монтирования. В этом примере используются defaults (значения по умолчанию).
- Столбец 5 — указывает вариант резервного копирования. Введите либо 1 (система автоматически создает резервную копию файловой системы), либо 0 (система не создает резервную копию файловой системы). В этом примере используется 0.
- Столбец 6 — указывает вариант сканирования. Введите либо 1 (система автоматически сканирует файловую систему при запуске), либо 0 (система не сканирует файловую систему). В этом примере используется 0.
-
Проверьте функцию автоматического монтирования.
-
Выполните команду umount, чтобы размонтировать файловую систему. В следующем примере используется том /dev/vg1/lv1:
# umount /dev/vg1/lv1
-
Выполните следующую команду, чтобы перезагрузить все содержимое в файле /etc/fstab:
# mount -a
-
Выполните следующую команду, чтобы запросить сведения о монтировании файловой системы (в качестве примера используется /mnt/data):
# mount | grep /mnt/data
Проверьте вывод команды. Если вывод содержит следующую информацию, функция автоматического монтирования будет работать:
/dev/vg1/lv1 on /mnt/data
-