Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8)
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
- Astra Linux Special Edition РУСБ.10015-17
- Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
- Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6)
- Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
Общая информация
В настоящей статье рассматриваются общие приемы работы с программными (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 или из командной строки командой:
LVM предоставляется пакетом lvm2:
Общие действия
Предотвращение возможной потери данных
Перед выполнением любых манипуляций с дисковыми разделами находящимися в эксплуатации для предотвращения защиты от возможной потери данных необходимо:
- Провести отработку предполагаемых действий на тестовом стенде.
- Обеспечить резервное копирование всех данных, которые могут быть затронуты манипуляциями.
- Обеспечить резервирование электропитания.
Подготовка новых накопителей
Если накопители, которые предполагается включить в RAID, использовались ранее, то перед дальнейшим их использованием рекомендуется выполнять их очиcтку:
- Удалить информацию о предыдущем использовании диска в RAID:sudo mdadm --zero-superblock --force <имя_накопителя>Если в результате выполнения команды выдается сообщение:то информация об использовании носителя в RAID не обнаружена и можно переходить к следующему шагу.
mdadm: Unrecognised md component device - <имя_накопителя>
- Очистить сигнатуры данных на носителе:sudo wipefs <имя_накопителя>wipefs --all --force /dev/sd{b,c}
ipefs --all --force /dev/sd{b,c}
Особенности использования драйвера MD
Обновление конфигурации после внесения изменений
После создания RAID с использованием драйвера MD для полного сохранения его параметров следует обновить образ системы:
Если это не сделать, то при следующей загрузке ОС конфигурация 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 после его создания можно получить командой:
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.
- Выполнить команду:sudo update-initramfs -uk all
- Перезагрузить ОС.
Действия после создания RAID
Проверка состояния RAID
После создания или изменения конфигурации RAID может потребоваться некоторое время для синхронизации данных. При использовании RAID LVM состояние синхронизации можно проверить командой:
Пример вывода команды (два логических тома 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 можно следующими командами:
- Команда:sudo mdadm --detail /dev/md127Пример вывода команды (RAID 5 с одним резервным диском в состоянии синхронизации 6%):
- Команда:cat /proc/mdstatПример вывода команды (массив RAID уровня 1 из устройств /dev/vdc и /dev/vdb в состоянии синхронизации 22.9%) :
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 он становится доступен как обычное блочное устройство (накопитель), и к нему можно применять обычные операции работы с накопителями. Получить отчет о составе накопителей и массивов RAID можно командой:
Пример вывода команды:
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) так же, как с обычным дисковым разделом. Например:
- Отформатировать:sudo mkfs.ext4 /dev/md0
- Примонтировать:sudo mount /dev/md0 /mnt
- Скопировать в него домашние каталоги пользователей:Для примера используется упрощенный вариант команды. Подробнее см. Архивирование и восстановление файлов с сохранением мандатных атрибутов.sudo cp -R /home/* /mnt
- Отмонтировать:sudo umount /dev/md0
- Внести в файл /etc/fstab запись для автоматического монтирования, например:Подробнее см. man fstab.
/dev/md0 /home ext4 defaults 0 2
Обслуживание RAID
При эксплуатации RAID необходимо периодически проверять состояние массива данных. Процедура детальной проверки обозначается термином чистка (scrubbing).
Scrubbing при использовании LVM
При использовании RAID LVM проверку состояния RAID можно запустить командой:
Аналогично запускается процедура восстановления:
Проверить статус RAID можно командой:
Пример вывода команды:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert SyncAction Mismatches
lvol0 VG rwi-a-r--- 500,00m 100,00 idle 0
Scrubbing при использовании MD
При установке пакета mdadm автоматически создается файл /etc/cron.d/mdadm который по расписанию (в первую субботу каждого месяца) выполняет команду проверки:
и направляет отчет суперпользователю (root).
Простое создание RAID
Постановка задачи
После установки операционной системы к компьютеру подключены два (или более) новых накопителя. Требуется объединить эти накопители в массив RAID и перенести на них файловые ресурсы. В качестве примера файлового ресурса используется каталог /home, содержащий домашние каталоги пользователей. Далее предполагается, что добавлены накопители /dev/vdc и /dev/vdd.
Решение c использованием LVM
- Создать на добавленных накопителях физические тома, например, :sudo pvcreate /dev/vd{b,c,d,e,f}
- Получить список групп логических томов:sudo pvsДалее для примера используется группа логических томов VG.
- Включить добавленные накопители в группу логических томов:sudo vgextend VG /dev/vd{b,c,d,e,f}
- Создать на добавленных носителях логический том. Создать том можно сразу с указанием требуемого уровня RAID. Размещение компонентов RAID на накопителях при этом будет выполняться автоматически. Например:
- Создать RAID уровня 0 с общим объемом 500МБ на трех накопителях. Это линейный RAID. Количество накопителей для таких RAID задается опцией -i, с помощью которой указывается количество накопителей с данными:sudo lvcreate --type raid0 -L 500M -i 3 -n my_lv0 VGПри этом на каждом логическом томе будет выделена 1/3 (168МБ) общего выделенного объема (с учетом округления выделено 504МБ):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:sudo lvcreate --type raid0 -l 100%FREE -i 3 -n my_lv0 VG - Создать RAID уровня 1 на четырех накопителях. Это RAID с зеркалированием, и для таких RAID указывается количество зеркал, т. е. количество на единицу меньшее количества накопителей входящих в RAID. Для этого используется опция -m:sudo lvcreate --type raid1 -L 500M -m 3 -n my_lv1 VGВ данном примере задано использование трех зеркал, то есть всего используется четыре накопителя, на каждом из которых выделяется полный объем RAID: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 указывается количество накопителей с данными. Объем еще одного накопителя требуется для размещения контрольных сумм:sudo lvcreate --type raid5 -L 500M -i 3 -n my_lv1 VGСтруктура RAID: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, количества накопителей и их имен. Общий формат команды:
Пример создания RAID 1:
Для подтверждения создания 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_fault_policy = "allocate"Этот параметр включает автоматическое выделение замены для RAID с уровнями больше 1.
- Раскомментировать параметр mirror_image_fault_policy и присвоить ему значение "allocate":mirror_image_fault_policy = "allocate"Этот параметр включает автоматическое выделение замены для RAID 1 (зеркало).
- Раскомментировать параметр raid_fault_policy и присвоить ему значение "allocate":
- Перезагрузить ОС.
Для добавления вручную используется команда lvconvert, например:
С помощью команды lvconvert также можно заменить накопитель в составе RAID:
Имя заменяющего накопителя можно не указывать, тогда поиск подходящей замены будет выполнен автоматически. Пример команды:
Решение с использованием MD
При использовании драйвера MD накопители в состав RAID могут быть добавлены как основные (используемые для хранения данных) и как резервные (spare). Резервные накопители используютcя при выходе из строя одного из основных накопителей. Максимальное количество основных накопителей в составе RAID задается при его создании, и может быть изменено позднее. Если в составе RAID накопителей меньше, чем максимальное количество, то накопители, добавляемые как резервные, будут сразу задействованы как недостающие основные накопители (при этом сразу начнется синхронизация данных). Если в составе RAID имеется полный комплект основных накопителей, то накопители будут добавляться как резервные независимо от способа добавления.
Для удаления используемого носителя этот носитель сначала должен быть помечен как неисправный (failed).
- Добавление основного накопителя:sudo mdadm /dev/md0 --manage --add /dev/vde
- Добавление резервного накопителя:sudo mdadm /dev/md0 --manage --add-spare /dev/vde
- Удаление накопителя:
- Пометить носитель как сбойный:sudo mdadm /dev/md0 --manage --fail /dev/vde
- Удалить накопитель:sudo mdadm /dev/md0 --manage --remove /dev/vde
- Пометить носитель как сбойный:
Изменение уровня RAID
Постановка задачи
Имеется настроенный RAID.
Требуется изменить его уровень.
Решение с использованием LVM
Для внесения изменений в конфигурацию RAID LVM используется команда lvconvert. В общем случае достаточно указать целевой уровень RAID и имя конвертируемого логического тома. Например:
Подробное описание особенностей и возможностей конвертации см. в справочной системе:
Решение с использованием MD
Инструмент MD поддерживает конвертацию зеркала (RAID 1) в RAID 5. При этом в исходном RAID должно быть не более одного зеркала (т.е. не более двух накопителей).
В общем случае для конвертации следует:
- Вывести из состава RAID все зеркала, кроме последнего, последовательно повторяя команды:sudo mdadm <имя_RAID> --fail <имя_накопителя>В составе RAID должно остаться два накопителя. При этом RAID сохранит работоспособность.
sudo mdadm <имя_RAID> --remove <имя_накопителя> - Уменьшить количество носителей в RAID до 2:sudo mdadm --grow <имя_RAID> -n 2
- Выполнить команду конвертации уровня RAID:sudo mdadm --grow <имя_RAID> --level=5
- Для восстановления корректной минимальной конфигурации RAID добавить в RAID третий накопитель:sudo mdadm --grow <имя_RAID> --add <имя_накопителя> -n 3
Установка ОС на RAID
См. статью Установка Astra Linux на программный (soft) RAID.
Перенос установленной ОС на RAID
Постановка задачи
ОС установлена на линейный диск (на линейные дисковые разделы).
После установки ОС добавлен второй диск.
Для обеспечения отказоустойчивости требуется перенести ОС на RAID 1.
Решение с использованием LVM
Если операционная система установлена с использованием LVM, то в самом простом варианте для переноса ОС в RAID 1:
- Создать на новом на добавленном носителе (например, на диске /dev/vdb) физический том LVM:sudo pvcreate /dev/vdb
- Включить созданный физический том LVM в состав группы физических томов, включающей логический том с корневой файловой системой. Далее используется группа физических томов VG:sudo vgextend VG /dev/vdb
- Конвертировать имеющийся линейный том LVM с корневой файловой системой в RAID 1. Например, том lv_root в группе томов VG:sudo lvconvert --type raid1 VG/lv_root
- Перезагрузить ОС.
В более сложных вариантах можно предварительно создать на добавленном носителе структуру дисковых разделов исходного носителя, скопировать содержимое загрузочных дисковых разделов (/boot и /boot/efi) и использовать для создания физического тома и далее для создания RAID дисковый раздел, а не весь диск.
Обратные операции
Возможна также обратная операция: конвертация RAID 1 в раздельные образы. Для этого требуется явно указать новое имя логического тома для отделяемого зеркала, например, lv_new:
Перезагрузка ОС при этом не требуется.
Далее можно:
- Удалить логический том:sudo lvremove VG/lv_new
- Исключить физический том из группы физических томов:sudo vgreduce VG /dev/vdb
- Удалить физический том:sudo pvremove /dev/vdb
Решение с использованием MD
Далее в примере рассматривается конструкция LVM поверх MD (рекомендованный вариант установки Astra Linux Special Edition). Вариант без использования LVM в целом отличается только способом копирования корневого раздела.
При использовании RAID LVM в процессе конвертации линейного логического тома в RAID 1 автоматически используется минимально необходимое дисковое пространство. При использовании MD такой возможности нет. При конвертации в RAID 1 будет задействован весь носитель, часть пространства которого просто не будет использоваться. Поэтому для эффективного использования дискового пространства актуальной становится работа с дисковыми разделами, а не с дисковыми носителями.
Исходная структура дисковых разделов:
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
- Первым шагом можно скопировать структуру дисковых разделов основного диска (dev/vda) на добавленный диск (/dev/vdb):sudo sfdisk -d /dev/vda | sudo sfdisk /dev/vdbВ итоге получится следующая структура разделов: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:sudo mdadm --create /dev/md0 -l 1 -n 2 missing /dev/vdb3Структура дисковых разделов:lsblkВ состав дисковых разделов добавлен раздел /dev/md0.
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:sudo pvcreate /dev/md0
- Добавить созданный физический том LVM в состав группы томов (для примера — группа VG):sudo vgextend VG /dev/md0
- Перенести на созданный физический том LVM существующий физический том с корневой файловой системой:
- При использовании LVM:
- При использовании LVM можно использовать предоставляемую LVM возможность перемещения томов между физическими носителями (команда pvmove). Однако напрямую это может быть невозможно, так как при одинаковых дисках созданный на RAID том будет чуть меньше, чем том на линейном носителе:sudo pvmove /dev/vda3 /dev/md0Для устранения этой проблемы можно временно отключить подкачку (swap) и удалить предназначенный для этого логический том LVM:
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.sudo swapoff -aЕсли вытеснение было отключено, то:
sudo lvremove VG/lv_swap- Удалить (закомментировать) указание UUID тома подкачки в файле /etc/initramfs-tools/conf.d/resume.
- Удалить (закомментировать) указание UUID тома подкачки в файле /etc/fstab.
- Исключить освободившийся физический том LVM (/dev/vda3) из состава группы томов (VG):sudo vgreduce VG /dev/vda3
- Уладить освободившийся физический том LVM (/dev/vda3):sudo pvremove /dev/vda3
- При использовании LVM можно использовать предоставляемую LVM возможность перемещения томов между физическими носителями (команда pvmove). Однако напрямую это может быть невозможно, так как при одинаковых дисках созданный на RAID том будет чуть меньше, чем том на линейном носителе:
- Если LVM не используется совсем (или используется LVM, но не используется возможность перемещения физических томов LVM), то можно:
- Если используется LVM - то создать логический том LVM достаточного для размещения корневой файловой системы размера.
- Отформатировать дисковый раздел/логический том LVM, создав в нем файловую систему.
- Примонтировать созданную файловую систему, например, в каталог /mnt.
- Скопировать в созданную файловую систему исходную файловую систему, используя, например, команды (потребуется установить пакет rsync):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:
- Обновить загрузчик:sudo update-initramfs -uk all
sudo update-grub - Перезагрузить ОС:sudo reboot
- Восстановить целостность RAID, добавив старый дисковый раздел в качестве резервного носителя:sudo mdadm /dev/md0 --add-spare /dev/vda3После добавления резервного носителя он автоматически будет использован для замены отсутствующего носителя, и начнется процесс синхронизации: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): особенности применения и обеспечения безопасности.