Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
Общая информация
В настоящей статье рассматриваются общие приемы работы с программными (soft) RAID с использованием драйвера MD (инструмента командной строки mdadm) и с использованием инструментов командной строки LVM.
Некоторые термины:
- RAID (англ. Redundant Array of Independent Disks — избыточный массив независимых (самостоятельных) накопителей данных) — технология объединения нескольких накопителей данных в логический модуль для повышения отказоустойчивости и (или) производительности. Поддерживает уровни RAID 0, 1, 4, 5, 6, 10. Подробнее см. статью RAID.
- LVM (англ. Logical Volume Manager) — менеджер логических томов, подсистема операционной системы, позволяющая использовать разные области одного жесткого диска и/или области с разных жестких дисков как один логический том.
- Линейный носитель (диск, дисковый раздел) — носитель, не входящий в состав RAID.
При эксплуатации, особенно при эксплуатации серверных систем, рекомендуется использовать аппаратные реализации RAID. Допустимость использования и применимость программных RAID должна определяться информационной политикой компании. Выбор между реализации RAID MD и RAID LVM зависит от приоритетов удобства администрирования, надежности и эффективности, однако при установке новых ОС следует отдавать предпочтение установке с использованием LVM, что обеспечивает большие возможности дальнейшей настройки (см. также Рекомендации по установке Astra Linux Special Edition x.7 на клиентские компьютеры). Возможно также одновременное использование технологий LVM и MD, например развертывание структуры LVM на RAID, созданном с использованием MD. Пример такого развертывания приведен в главе про перенос ОС с линейного носителя на RAID.
В инструментах LVM поддерживается два варианта RAID:
- ранняя Ранняя собственная реализация LVM, поддерживающая RAID с чередованием (stripe, аналог RAID 0) и с зеркалированием (mirror, аналог RAID 1);.
- более Более поздняя реализация с использованием драйвера MD, поддерживающая все варианты уровни RAID, поддерживаемые этим драйвером. Для RAID уровней 5 и 6 поддерживается тонкая настройка конфигурации (левый, правый, симметричный, асимметричный и пр.). Рассмотрение таких настроек в настоящую статью не входит.
Далее в статье рассматривается реализация LVM с использованием драйвера MD.
В качестве накопителей для RAID могут использоваться как физические устройства (например, накопители на жестких магнитных дисках), так и логические устройства (дисковые разделы). Далее для обозначения таких устройств используется термин накопитель.
Для упрощения изложения в статье используются диски одинакового размера. На практике диски могут быть разного размера, при этом LVM автоматически использует минимально необходимые объемы дискового пространства, при использовании MD расход дискового пространства следует контролировать вручную.
Особенности стенда
При подготовке статьи использовалась виртуальная машина, поэтому имена накопителей на дисках имеют вид /dev/vdX, например /dev/vdb. При использовании физической машины имена накопителей могут иметь вид /dev/sdX (имена накопителей также могут зависеть от типа используемых носителей). При использовании дисковых разделов имена будут иметь вид /dev/vdXN (для физических машин — /dev/sdXN), например /dev/vdb1.
В примерах работы с дисковыми разделами предполагается, что используется таблица разделов в формате GPT. Если Astra Linux был установлен с использованием таблицы разделов формата MBR, то таблицу может понадобиться конвертировать в формат GPT.
Установка пакетов
Инструмент командной строки mdadm предоставляется пакетом mdadm. Пакет может быть установлен из основного репозитория Astra Linux с помощью графического менеджера пакетов synaptic или из командной строки командой:
Command |
---|
sudo apt install mdadm |
LVM предоставляется пакетом lvm2:
Command |
---|
sudo apt install lvm2 |
Общие действия
Предотвращение возможной потери данных
Предупреждение |
---|
Перед выполнением любых манипуляций с дисковыми разделами находящимися в эксплуатации для предотвращения защиты от возможной потери данных необходимо:
|
Подготовка новых накопителей
Если накопители, которые предполагается включить в RAID, использовались ранее, то перед дальнейшим их использованием рекомендуется выполнять их очиcтку:
- Удалить информацию о предыдущем использовании диска в RAID:
Если в результате выполнения команды выдается сообщение:Command sudo mdadm --zero-superblock --force <имя_накопителя>
то информация об использовании носителя в RAID не обнаружена и можно переходить к следующему шагу.Блок кода mdadm: Unrecognised md component device - <имя_накопителя>
- Очистить сигнатуры данных на носителе:
wipefs --all --force /dev/sd{b,c}Command sudo wipefs <имя_накопителя>
ipefs --all --force /dev/sd{b,c}
Особенности использования драйвера MD
Обновление конфигурации после внесения изменений
После создания RAID с использованием драйвера MD для полного сохранения его параметров следует обновить образ системы:
Command |
---|
sudo update-initramfs -uk all |
Если это не сделать, то при следующей загрузке ОС конфигурация RAID будет обнаружена, восстановлена и подключена автоматически, но при этом может измениться имя устройства RAID, что создаст сложности в его использовании.
Зафиксировать имя устройства RAID можно также создав конфигурационный файл, см. ниже.
Создание конфигурационного файла
Настройки программного RAID хранятся в конфигурационном файле /etc/mdadm/mdadm.conf. Пример минимальной конфигурации:
Блок кода |
---|
DEVICE partitions ARRAY <имя_устройства_RAID> level=<уровень_RAID> num-devices=<количество_устройств_в_RAID> metadata=1.2 name=<имя_RAID> UUID=<идентификатор_устройства_RAID> |
Значение уровень_RAID и количество_устройств задаются в команде создания RAID, остальные значения могут генерироваться автоматически при создании RAID. Состав параметров также зависит от используемой конфигурации RAID, например может быть указано количество резервных накопителей (spares). Актуальную конфигурацию RAID после его создания можно получить командой:
Command |
---|
sudo mdadm --detail --scan |
Блок кода |
---|
ARRAY /dev/md0 level=raid5 num-devices=5 metadata=1.2 spares=1 name=se1801-18057:0 UUID=20fe193f:40373760:085344c8:b781ca1a |
Действия после создания RAID
После создания или изменения конфигурации RAID может потребоваться некоторое время для синхронизации данных. При использовании RAID LVM состояние синхронизации можно проверить командой:
Command |
---|
sudo lvs -a -o name,copy_percent,devices |
Пример вывода команды (два логических тома lvol_root и lvol1, использующих RAID уровня 1, синхронизированных на 100%):
Блок кода |
---|
LV Cpy%Sync Devices lv_root 100,00 lv_root_rimage_0(0),lv_root_rimage_1(0) [lv_root_rimage_0] /dev/vda3(256) [lv_root_rimage_1] /dev/vdb3(1) [lv_root_rmeta_0] /dev/vda3(7165) [lv_root_rmeta_1] /dev/vdb3(0) lv_swap /dev/vda3(0) lvol1 100,00 lvol1_rimage_0(0),lvol1_rimage_1(0) [lvol1_rimage_0] /dev/vdc(1) [lvol1_rimage_1] /dev/vdd(1) [lvol1_rmeta_0] /dev/vdc(0) [lvol1_rmeta_1] /dev/vdd(0) |
Информация |
---|
При создании каждого логического тома RAID LVM создается два служебный тома: _rmeta_ — метаданные RAID, _rimage_ – данные RAID. |
Проверить состояние RAID не использующего LVM можно следующими командами:
- Команда:
Пример вывода команды (RAID 5 с одним резервным диском в состоянии синхронизации 6%):Command sudo mdadm --detail /dev/md127 Блок кода collapse true sudo mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Thu Jan 9 10:35:56 2025 Raid Level : raid5 Array Size : 125759488 (119.93 GiB 128.78 GB) Used Dev Size : 31439872 (29.98 GiB 32.19 GB) Raid Devices : 5 Total Devices : 5 Persistence : Superblock is persistent Update Time : Thu Jan 9 10:36:10 2025 State : clean, degraded, recovering Active Devices : 4 Working Devices : 5 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Rebuild Status : 6% complete Name : se1801-18057:0 (local to host se1801-18057) UUID : e2f96455:b85dd5cf:2f58836e:77ebb77d Events : 2 Number Major Minor RaidDevice State 0 252 16 0 active sync /dev/vdb 1 252 32 1 active sync /dev/vdc 2 252 48 2 active sync /dev/vdd 3 252 64 3 active sync /dev/vde 5 252 80 4 spare rebuilding /dev/vdf
- Команда:
Пример вывода команды (массив RAID уровня 1 из устройств /dev/vdc и /dev/vdb в состоянии синхронизации 22.9%) :Command cat /proc/mdstat Блок кода Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 vdc[1] vdb[0] 31439872 blocks super 1.2 [2/2] [UU] [====>................] resync = 22.9% (7201664/31439872) finish=1.9min speed=205761K/sec unused devices: <none>
После создания RAID он становится доступен как обычное блочное устройство (накопитель), и к нему можно применять обычные операции работы с накопителями. Получить отчет о составе накопителей и массивов RAID можно командой:
Command |
---|
lsblk |
Пример вывода команды:
Блок кода |
---|
vda 252:0 0 30G 0 disk ├─vda1 252:1 0 2M 0 part ├─vda2 252:2 0 1G 0 part /boot ├─vda3 252:3 0 28G 0 part │ ├─VG-lv_swap 253:0 0 1G 0 lvm [SWAP] │ └─VG-lv_root 253:1 0 27G 0 lvm / └─vda4 252:4 0 1G 0 part /boot/efi vdb 252:16 0 20G 0 disk └─md0 9:0 0 20G 0 raid1 vdc 252:32 0 20G 0 disk └─md0 9:0 0 20G 0 raid1 vdd 252:48 0 20G 0 disk vde 252:64 0 20G 0 disk vdf 252:80 0 20G 0 disk |
В приведенном примере:
- операционная система размещена на накопителе /dev/vda на логическом томе LVM lv_root в группе томов LVM VG;
- накопители /dev/vdb и /dev/vdc входят в RAID /dev/md0, накопители /dev/vdd, /dev/vde, /dev/vdf не используются.
После создания устройства RAID с ним можно работать используя его имя (/dev/md0) так же, как с обычным дисковым разделом. Например:
- Отформатировать:
Command sudo mkfs.ext4 /dev/md0 - Примонтировать:
Command sudo mount /dev/md0 /mnt - Скопировать в него домашние каталоги пользователей:
Информация Для примера используется упрощенный вариант команды. Подробнее см. Архивирование и восстановление файлов с сохранением мандатных атрибутов. Command sudo cp -R /home/* /mnt - Отмонтировать:
Command sudo umount /dev/md0 - Внести в файл /etc/fstab запись для автоматического монтирования, например:
Подробнее см. man fstab.Блок кода /dev/md0 /home ext4 defaults 0 2
Обслуживание RAID
При эксплуатации RAID необходимо периодически проверять состояние массива данных. Процедура детальной проверки обозначается термином чистка (scrubbing).
Scrubbing при использовании LVM
При использовании RAID LVM проверку состояния RAID можно запустить командой:
Command |
---|
sudo lvchange --syncaction check <имя_группы_физических_томов_LVM>/<имя_логического_тома_LVM> |
Аналогично запускается процедура восстановления:
Command |
---|
sudo lvchange --syncaction repair <имя_группы_физических_томов_LVM>/<имя_логического_тома_LVM> |
Проверить статус RAID можно командой:
Command |
---|
sudo lvs -o +raid_sync_action,raid_mismatch_count <имя_группы_физических_томов_LVM>/<имя_логического_тома_LVM> |
Пример вывода команды:
Command | ||
---|---|---|
| ||
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert SyncAction Mismatches |
Scrubbing при использовании MD
При установке пакета mdadm автоматически создается файл /etc/cron.d/mdadm который по расписанию (в первую субботу каждого месяца) выполняет команду проверки:
Command |
---|
/usr/share/mdadm/checkarray --cron --all --idle --quiet |
и направляет отчет суперпользователю (root).
Простое создание RAID
Постановка задачи
После установки операционной системы к компьютеру подключены два (или более) новых накопителя. Требуется объединить эти накопители в массив RAID и перенести на них файловые ресурсы. В качестве примера файлового ресурса используется каталог /home, содержащий домашние каталоги пользователей. Далее предполагается, что добавлены накопители /dev/vdc и /dev/vdd.
Решение c использованием LVM
- Создать на добавленных накопителях физические тома, например, :
Command sudo pvcreate /dev/vd{b,c,d,e,f}
- Получить список групп логических томов:
Далее для примера используется группа логических томов VG.Command sudo pvs - Включить добавленные накопители в группу логических томов:
Command sudo vgextend VG /dev/vd{b,c,d,e,f}
- Создать на добавленных носителях логический том. Создать том можно сразу с указанием требуемого уровня RAID. Размещение компонентов RAID на накопителях при этом будет выполняться автоматически. Например:
- Создать RAID уровня 0 с общим объемом 500МБ на трех накопителях. Это линейный RAID. Количество накопителей для таких RAID задается опцией -i, с помощью которой указывается количество накопителей с данными:
При этом на каждом логическом томе будет выделена 1/3 (168МБ) общего выделенного объема (с учетом округления выделено 504МБ):Command sudo lvcreate --type raid0 -L 500M -i 3 -n my_lv0 VG
Command Title lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
...
vdb 252:16 0 30G 0 disk
└─VG-my_lv0_rimage_0 253:2 0 168M 0 lvm
└─VG-my_lv0 253:5 0 504M 0 lvm
vdc 252:32 0 30G 0 disk
└─VG-my_lv0_rimage_1 253:3 0 168M 0 lvm
└─VG-my_lv0 253:5 0 504M 0 lvm
vdd 252:48 0 30G 0 disk
└─VG-my_lv0_rimage_2 253:4 0 168M 0 lvm
└─VG-my_lv0 253:5 0 504M 0 lvmИнформация Для создания RAID, занимающего весь свободный объем, можно использовать опцию -l 100%FREE: Command sudo lvcreate --type raid0 -l 100%FREE -i 3 -n my_lv0 VG
- Создать RAID уровня 1 на четырех накопителях. Это RAID с зеркалированием, и для таких RAID указывается количество зеркал, т. е. количество на единицу меньшее количества накопителей входящих в RAID. Для этого используется опция -m:
В данном примере задано использование трех зеркал, то есть всего используется четыре накопителя, на каждом из которых выделяется полный объем RAID:Command sudo lvcreate --type raid1 -L 500M -m 3 -n my_lv1 VG
Command Title lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
...
vdb 252:16 0 30G 0 disk
├─VG-my_lv1_rmeta_0 253:2 0 4M 0 lvm
│ └─VG-my_lv1 253:10 0 500M 0 lvm
└─VG-my_lv1_rimage_0 253:3 0 500M 0 lvm
└─VG-my_lv1 253:10 0 500M 0 lvm
vdc 252:32 0 30G 0 disk
├─VG-my_lv1_rmeta_1 253:4 0 4M 0 lvm
│ └─VG-my_lv1 253:10 0 500M 0 lvm
└─VG-my_lv1_rimage_1 253:5 0 500M 0 lvm
└─VG-my_lv1 253:10 0 500M 0 lvm
vdd 252:48 0 30G 0 disk
├─VG-my_lv1_rmeta_2 253:6 0 4M 0 lvm
│ └─VG-my_lv1 253:10 0 500M 0 lvm
└─VG-my_lv1_rimage_2 253:7 0 500M 0 lvm
└─VG-my_lv1 253:10 0 500M 0 lvm
vde 252:64 0 30G 0 disk
├─VG-my_lv1_rmeta_3 253:8 0 4M 0 lvm
│ └─VG-my_lv1 253:10 0 500M 0 lvm
└─VG-my_lv1_rimage_3 253:9 0 500M 0 lvm
└─VG-my_lv1 253:10 0 500M 0 lvm - Создать RAID уровня 5 на четырех накопителях. Это RAID с чередованием и контрольной суммой. Для создания таких RAID с помощью опции -i указывается количество накопителей с данными. Объем еще одного накопителя требуется для размещения контрольных сумм:
Структура RAID:Command sudo lvcreate --type raid5 -L 500M -i 3 -n my_lv1 VG
Command Title lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
...
vdb 252:16 0 30G 0 disk
├─VG-my_lv1_rmeta_0 253:2 0 4M 0 lvm
│ └─VG-my_lv1 253:10 0 504M 0 lvm
└─VG-my_lv1_rimage_0 253:3 0 168M 0 lvm
└─VG-my_lv1 253:10 0 504M 0 lvm
vdc 252:32 0 30G 0 disk
├─VG-my_lv1_rmeta_1 253:4 0 4M 0 lvm
│ └─VG-my_lv1 253:10 0 504M 0 lvm
└─VG-my_lv1_rimage_1 253:5 0 168M 0 lvm
└─VG-my_lv1 253:10 0 504M 0 lvm
vdd 252:48 0 30G 0 disk
├─VG-my_lv1_rmeta_2 253:6 0 4M 0 lvm
│ └─VG-my_lv1 253:10 0 504M 0 lvm
└─VG-my_lv1_rimage_2 253:7 0 168M 0 lvm
└─VG-my_lv1 253:10 0 504M 0 lvm
vde 252:64 0 30G 0 disk
├─VG-my_lv1_rmeta_3 253:8 0 4M 0 lvm
│ └─VG-my_lv1 253:10 0 504M 0 lvm
└─VG-my_lv1_rimage_3 253:9 0 168M 0 lvm
└─VG-my_lv1 253:10 0 504M 0 lvm
- Создать RAID уровня 0 с общим объемом 500МБ на трех накопителях. Это линейный RAID. Количество накопителей для таких RAID задается опцией -i, с помощью которой указывается количество накопителей с данными:
Далее с созданным дисковым разделом RAID можно работать как с обычным дисковым разделом.
Решение с использованием MD
При наличии свободных дисков массив RAID из свободных носителей создается одной командой с указанием имени и уровня RAID, количества накопителей и их имен. Общий формат команды:
Command |
---|
sudo mdadm --create <имя_устройства_RAID> -l <уровень_RAID> -n <количество_накопителей> <имя_накопителя>... |
Пример создания RAID 1:
Command |
---|
sudo mdadm --create /dev/md0 -l 1 -n 2 /dev/vdb /dev/vdc |
Для подтверждения создания RAID требуется ввести символ y.
Пример вывода команды:
Блок кода |
---|
mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. |
Аналогичным образом создаются RAID других уровней.mkfs.ext4 /dev/md0 mkfs.ext4 /dev/md0
Добавление, замена, удаление накопителей в RAID
Постановка задачи
- Настроено использование RAID.
- Добавлен новый накопитель.
- Требуется:
- добавить новый накопитель в состав ранее настроенного RAID;
- заменить накопитель из состава RAID на новый;
- удалить накопитель из состава ранее настроенного RAID
Решение с использованием LVM
При использовании LVM добавляемый накопитель достаточно просто включить в группу томов LVM. Добавление накопителя (точнее, выделение места и создание нового логического тома на физическом томе) выполняются вручную (по умолчанию) или автоматически при отказе ранее включенного в RAID накопителя. По умолчанию отказ накопителя регистрируется в журнале, но никаких действий по восстановлению RAID не предпринимается.
Для включения автоматического добавления:
- В конфигурационном файле /etc/lvm/lvm.conf:
- Раскомментировать параметр raid_fault_policy и присвоить ему значение "allocate":
Этот параметр включает автоматическое выделение замены для RAID с уровнями больше 1.Command raid_fault_policy = "allocate" - Раскомментировать параметр mirror_image_fault_policy и присвоить ему значение "allocate":
Этот параметр включает автоматическое выделение замены для RAID 1 (зеркало).Command mirror_image_fault_policy = "allocate"
- Раскомментировать параметр raid_fault_policy и присвоить ему значение "allocate":
- Перезагрузить ОС.
Для добавления вручную используется команда lvconvert, например:
Command |
---|
sudo lvconvert --repair <имя_группы_томов>/<имя_логического_тома_RAID> |
С помощью команды lvconvert также можно заменить накопитель в составе RAID:
Command |
---|
sudo lvconvert --replace <имя_заменяемого_накопителя> <имя_группы_томов>/<имя_логического_тома_RAID> <имя_заменяющего_накопителя> |
Имя заменяющего накопителя можно не указывать, тогда поиск подходящей замены будет выполнен автоматически. Пример команды:
Command |
---|
sudo lvconvert --replace /dev/sdb1 vg00/my_raid1 /dev/sdf1 |
Решение с использованием MD
При использовании драйвера MD накопители в состав RAID могут быть добавлены как основные (используемые для хранения данных) и как резервные (spare). Резервные накопители используютcя при выходе из строя одного из основных накопителей. Максимальное количество основных накопителей в составе RAID задается при его создании, и может быть изменено позднее. Если в составе RAID накопителей меньше, чем максимальное количество, то накопители, добавляемые как резервные, будут сразу задействованы как недостающие основные накопители (при этом сразу начнется синхронизация данных). Если в составе RAID имеется полный комплект основных накопителей, то накопители будут добавляться как резервные независимо от способа добавления.
Для удаления используемого носителя этот носитель сначала должен быть помечен как неисправный (failed).
- Добавление основного накопителя:
Command sudo mdadm /dev/md0 --manage --add /dev/vde - Добавление резервного накопителя:
Command sudo mdadm /dev/md0 --manage --add-spare /dev/vde - Удаление накопителя:
- Пометить носитель как сбойный:
Command sudo mdadm /dev/md0 --manage --fail /dev/vde - Удалить накопитель:
Command sudo mdadm /dev/md0 --manage --remove /dev/vde
- Пометить носитель как сбойный:
Изменение уровня RAID
Постановка задачи
Имеется настроенный RAID.
Требуется изменить его уровень.
Решение с использованием LVM
Для внесения изменений в конфигурацию RAID LVM используется команда lvconvert. В общем случае достаточно указать целевой уровень RAID и имя конвертируемого логического тома. Например:
Command |
---|
sudo lvconvert --type raid6 <имя_группы_томов>/<имя_логического_тома_RAID> |
Подробное описание особенностей и возможностей конвертации см. в справочной системе:
Command |
---|
man lvmraid |
Решение с использованием MD
Инструмент MD поддерживает конвертацию зеркала (RAID 1) в RAID 5. При этом в исходном RAID должно быть не более одного зеркала (т.е. не более двух накопителей).
В общем случае для конвертации следует:
- Вывести из состава RAID все зеркала, кроме последнего, последовательно повторяя команды:
В составе RAID должно остаться два накопителя. При этом RAID сохранит работоспособность.Command sudo mdadm <имя_RAID> --fail <имя_накопителя>
sudo mdadm <имя_RAID> --remove <имя_накопителя> - Уменьшить количество носителей в RAID до 2:
Command sudo mdadm --grow <имя_RAID> -n 2
- Выполнить команду конвертации уровня RAID:
Command sudo mdadm --grow <имя_RAID> --level=5 - Для восстановления корректной минимальной конфигурации RAID добавить в RAID третий накопитель:
Command sudo mdadm --grow <имя_RAID> --add <имя_накопителя> -n 3
Установка ОС на RAID
См. статью Копия Установка Astra Linux на программный (soft) RAID.
Перенос установленной ОС на RAID
Постановка задачи
ОС установлена на линейный диск (на линейные дисковые разделы).
После установки ОС добавлен второй диск.
Для обеспечения отказоустойчивости требуется перенести ОС на RAID 1.
Решение с использованием LVM
Если операционная система установлена с использованием LVM, то в самом простом варианте для переноса ОС в RAID 1:
- Создать на новом на добавленном носителе (например, на диске /dev/vdb) физический том LVM:
Command sudo pvcreate /dev/vdb - Включить созданный физический том LVM в состав группы физических томов, включающей логический том с корневой файловой системой. Далее используется группа физических томов VG:
Command sudo vgextend VG /dev/vdb - Конвертировать имеющийся линейный том LVM с корневой файловой системой в RAID 1. Например, том lv_root в группе томов VG:
Command sudo lvconvert --type raid1 VG/lv_root - Перезагрузить ОС.
В более сложных вариантах можно предварительно создать на добавленном носителе структуру дисковых разделов исходного носителя, скопировать содержимое загрузочных дисковых разделов (/boot и /boot/efi) и использовать для создания физического тома и далее для создания RAID дисковый раздел, а не весь диск.
Обратные операции
Возможна также обратная операция: конвертация RAID 1 в раздельные образы. Для этого требуется явно указать новое имя логического тома для отделяемого зеркала, например, lv_new:
Command |
---|
sudo lvconvert --splitmirrors 1 -n lv_new VG/lv_root |
Перезагрузка ОС при этом не требуется.
Далее можно:
- Удалить логический том:
Command sudo lvremove VG/lv_new - Исключить физический том из группы физических томов:
Command sudo vgreduce VG /dev/vdb - Удалить физический том:
Command sudo pvremove /dev/vdb
Решение с использованием MD
Далее в примере рассматривается конструкция LVM поверх MD (рекомендованный вариант установки Astra Linux Special Edition). Вариант без использования LVM в целом отличается только способом копирования корневого раздела.
При использовании RAID LVM в процессе конвертации линейного логического тома в RAID 1 автоматически используется минимально необходимое дисковое пространство. При использовании MD такой возможности нет. При конвертации в RAID 1 будет задействован весь носитель, часть пространства которого просто не будет использоваться. Поэтому для эффективного использования дискового пространства актуальной становится работа с дисковыми разделами, а не с дисковыми носителями.
Исходная структура дисковых разделов:
Command | ||
---|---|---|
| ||
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS |
- Первым шагом можно скопировать структуру дисковых разделов основного диска (dev/vda) на добавленный диск (/dev/vdb):
В итоге получится следующая структура разделов:Command sudo sfdisk -d /dev/vda | sudo sfdisk /dev/vdb Command NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
vda 252:0 0 30G 0 disk
├─vda1 252:1 0 2M 0 part
├─vda2 252:2 0 1G 0 part /boot
├─vda3 252:3 0 28G 0 part
│ ├─VG-lv_swap 253:0 0 1G 0 lvm [SWAP]
│ └─VG-lv_root 253:5 0 27G 0 lvm /
└─vda4 252:4 0 1G 0 part /boot/efi
vdb 252:16 0 30G 0 disk
├─vdb1 252:17 0 2M 0 part
├─vdb2 252:18 0 1G 0 part
├─vdb3 252:19 0 28G 0 part
└─vdb4 252:20 0 1G 0 part - Создать деградировавшее зеркало (RAID 1), содержащее только один носитель. Для указания отсутствующего носителя использовать вместо имени носителя специальное имя missing:
Структура дисковых разделов:Command sudo mdadm --create /dev/md0 -l 1 -n 2 missing /dev/vdb3
В состав дисковых разделов добавлен раздел /dev/md0.Command Title lsblk AME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
vda 252:0 0 30G 0 disk
├─vda1 252:1 0 2M 0 part
├─vda2 252:2 0 1G 0 part /boot
├─vda3 252:3 0 28G 0 part
│ ├─VG-lv_swap 253:0 0 1G 0 lvm [SWAP]
│ └─VG-lv_root 253:5 0 27G 0 lvm /
└─vda4 252:4 0 1G 0 part /boot/efi
vdb 252:16 0 30G 0 disk
├─vdb1 252:17 0 2M 0 part
├─vdb2 252:18 0 1G 0 part
├─vdb3 252:19 0 28G 0 part
│ └─md0 9:0 0 28G 0 raid1
└─vdb4 252:20 0 1G 0 part - Создать на RAID физический том LVM:
Command sudo pvcreate /dev/md0 - Добавить созданный физический том LVM в состав группы томов (для примера — группа VG):
Command sudo vgextend VG /dev/md0 - Перенести на созданный физический том LVM существующий физический том с корневой файловой системой:
- При использовании LVM:
- При использовании LVM можно использовать предоставляемую LVM возможность перемещения томов между физическими носителями (команда pvmove). Однако напрямую это может быть невозможно, так как при одинаковых дисках созданный на RAID том будет чуть меньше, чем том на линейном носителе:
Для устранения этой проблемы можно временно отключить подкачку (swap) и удалить предназначенный для этого логический том LVM:Command Title sudo pvmove /dev/vda3 /dev/md0 Insufficient free space: 7165 extents needed, but only 7162 available
Unable to allocate mirror extents for VG/pvmove0.
Failed to convert pvmove LV to mirrored.
Если вытеснение было отключено, то:Command sudo swapoff -a
sudo lvremove VG/lv_swap- Удалить (закомментировать) указание UUID тома подкачки в файле /etc/initramfs-tools/conf.d/resume.
- Удалить (закомментировать) указание UUID тома подкачки в файле /etc/fstab.
- Исключить освободившийся физический том LVM (/dev/vda3) из состава группы томов (VG):
Command sudo vgreduce VG /dev/vda3 - Уладить освободившийся физический том LVM (/dev/vda3):
Command sudo pvremove /dev/vda3
- При использовании LVM можно использовать предоставляемую LVM возможность перемещения томов между физическими носителями (команда pvmove). Однако напрямую это может быть невозможно, так как при одинаковых дисках созданный на RAID том будет чуть меньше, чем том на линейном носителе:
- Если LVM не используется совсем (или используется LVM, но не используется возможность перемещения физических томов LVM), то можно:
- Если используется LVM - то создать логический том LVM достаточного для размещения корневой файловой системы размера.
- Отформатировать дисковый раздел/логический том LVM, создав в нем файловую систему.
- Примонтировать созданную файловую систему, например, в каталог /mnt.
- Скопировать в созданную файловую систему исходную файловую систему, используя, например, команды (потребуется установить пакет rsync):
Подробнее см. Архивирование и восстановление файлов с сохранением мандатных атрибутов.Command echo 1 | sudo tee /parsecfs/unsecure_setxattr
sudo /usr/sbin/execaps -c 0x1000 -- sudo rsync -a --xattrs --acls --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/parsecfs / /mnt
echo 0 | sudo tee /parsecfs/unsecure_setxattr
Также можно выполнить копирование загрузившись с Live-CD или иным удобным способом.
- При использовании LVM:
- Обновить загрузчик:
Command sudo update-initramfs -uk all
sudo update-grub - Перезагрузить ОС:
Command sudo reboot - Восстановить целостность RAID, добавив старый дисковый раздел в качестве резервного носителя:
После добавления резервного носителя он автоматически будет использован для замены отсутствующего носителя, и начнется процесс синхронизации:Command sudo mdadm /dev/md0 --add-spare /dev/vda3 Command Title sudo mdadm --detail /dev/md0 /dev/md0:
Version : 1.2
Creation Time : Sat Jan 11 11:18:59 2025
Raid Level : raid1
Array Size : 29338624 (27.98 GiB 30.04 GB)
Used Dev Size : 29338624 (27.98 GiB 30.04 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistentUpdate Time : Mon Jan 13 11:46:10 2025
State : clean, degraded, recovering
Active Devices : 1
Working Devices : 2
Failed Devices : 0
Spare Devices : 1Consistency Policy : resync
Rebuild Status : 5% complete
Name : se1801-18057:0 (local to host se1801-18057)
UUID : 874454a3:ebd4d617:0474a594:a2f391d4
Events : 479Number Major Minor RaidDevice State
2 252 3 0 spare rebuilding /dev/vda3
1 252 19 1 active sync /dev/vdb3
l - После завершения синхронизации RAID будет полностью готов к работе.
- При необходимости можно включить подкачку любым удобным способом, подробнее см. Область подкачки (swap): особенности применения и обеспечения безопасности.