DOC / 1494 anikin.pw

Замена диска в Linux RAID 1: последовательность восстановления mdadm

Замена накопителя в программном RAID 1 состоит из трёх отдельных задач: вывести неисправные разделы из массивов, восстановить на новом диске разметку и данные, затем обеспечить загрузку системы. Успешная синхронизация mdadm сама по себе не подтверждает, что сервер сможет загрузиться с нового накопителя.

Пример конфигурации и границы инструкции

Рассмотрим два диска: исправный /dev/sda и заменяемый /dev/sdb. В примере отдельные RAID 1 используются для /boot, swap и корневой файловой системы:

МассивИсправный участникЗаменяемый участникНазначение
/dev/md0/dev/sda2/dev/sdb2/boot
/dev/md1/dev/sda3/dev/sdb3swap
/dev/md2/dev/sda4/dev/sdb4/

Подставляйте фактические имена устройств своей системы. Эта схема не описывает все варианты LVM, шифрования LUKS, ZFS и аппаратного RAID. Перед записью разметки или удалением участника убедитесь по серийному номеру, что выбран именно заменяемый накопитель. Резервную копию важных данных подготовьте до начала работы.

1. Проверить массивы и идентифицировать диски

Команды ниже только показывают состояние:

cat /proc/mdstat
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL,SERIAL
mdadm --detail /dev/md0
mdadm --detail /dev/md1
mdadm --detail /dev/md2

В /proc/mdstat отметка [UU] обычно показывает двух активных участников RAID 1; [U_] или [_U] — отсутствие одного из них. Сопоставьте каждый массив с его разделами по mdadm --detail. Проверьте, что оставшийся накопитель действительно содержит актуальные данные.

Если имена sda/sdb изменились после перезагрузки, ориентируйтесь на модель, серийный номер и ссылки /dev/disk/by-id/, а не на букву устройства. Сохраните вывод диагностики и разметку исправного диска.

2. Вывести неисправный диск из всех массивов

Если раздел ещё считается активным, сначала пометьте его неисправным. Затем удалите из состава массива. Для нашей схемы:

mdadm --manage /dev/md0 --fail /dev/sdb2
mdadm --manage /dev/md0 --remove /dev/sdb2
mdadm --manage /dev/md1 --fail /dev/sdb3
mdadm --manage /dev/md1 --remove /dev/sdb3
mdadm --manage /dev/md2 --fail /dev/sdb4
mdadm --manage /dev/md2 --remove /dev/sdb4

Если участник уже помечен failed, повторная операция --fail не нужна. Если устройство физически исчезло, проверьте обозначение отсутствующего участника в выводе mdadm; приведённые имена могут больше не существовать. Не помечайте исправную половину degraded-массива как неисправную.

Проверьте состав массивов повторно и замените накопитель способом, поддерживаемым сервером. Горячая замена допустима только при поддержке соответствующим оборудованием. Управление участниками массивов в справке mdadm.

3. Восстановить разметку нового диска

Новый диск должен вмещать исходную разметку; сравнивайте реальную ёмкость, а не только номинальную надпись на накопителе. Проверьте также совместимость размеров секторов:

lsblk -o NAME,SIZE,LOG-SEC,PHY-SEC,MODEL,SERIAL
fdisk -l /dev/sda
fdisk -l /dev/sdb

Далее выбирается только один вариант — GPT или MBR. Все команды записи адресуются новому пустому /dev/sdb. Если на нём есть нужные данные, выполнять перенос разметки нельзя.

Вариант GPT: sgdisk

Сначала сохраните таблицу исправного диска в файл, затем перенесите её на новый:

sgdisk --backup=/root/sda-gpt-backup.bin /dev/sda
sgdisk --replicate=/dev/sdb /dev/sda
sgdisk --randomize-guids /dev/sdb
sgdisk --verify /dev/sdb

В команде --replicate=/dev/sdb устройство после знака равенства является получателем, а последний аргумент /dev/sda — источником. Перестановка дисков способна уничтожить разметку рабочей копии.

Репликация переносит GUID диска и разделов. Параметр --randomize-guids назначает новые идентификаторы копии; UUID файловых систем и массивов — другое понятие. Если конфигурация использует PARTUUID, проверьте соответствующие ссылки после изменения GUID. Документация автора GPT fdisk/sgdisk.

Вариант MBR: sfdisk

Сохраните текстовое описание таблицы и примените его к новому диску:

sfdisk --dump /dev/sda > /root/sda-partitions.dump
sfdisk /dev/sdb < /root/sda-partitions.dump

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

Перечитать таблицу разделов

blockdev --rereadpt /dev/sdb
udevadm settle
lsblk -o NAME,SIZE,TYPE,FSTYPE /dev/sdb

В старых инструкциях встречается sfdisk -R. Эта опция удалена начиная с util-linux 2.26; документация предлагает blockdev --rereadpt. Если ядро сообщает, что устройство занято, выясните, кто использует новый диск, прежде чем продолжать. Справка sfdisk и замечания о перечитывании таблицы.

4. Добавить новые разделы в массивы

После проверки разметки добавьте каждому массиву соответствующий раздел:

mdadm --manage /dev/md0 --add /dev/sdb2
mdadm --manage /dev/md1 --add /dev/sdb3
mdadm --manage /dev/md2 --add /dev/sdb4

Не создавайте файловую систему командой mkfs на разделах, добавляемых в RAID: данные на них должен восстановить массив. Форматирование участника не является частью пересборки зеркала.

5. Дождаться синхронизации

watch -n 2 cat /proc/mdstat
mdadm --detail /dev/md0
mdadm --detail /dev/md1
mdadm --detail /dev/md2

Наблюдайте за recovery/resync и числом активных участников. Пока восстановление не завершилось, избыточность ещё не восстановлена полностью. Если новый раздел не принимается, проверьте его размер, выбранный массив и сообщение mdadm, а не удаляйте метаданные наугад.

6. Подготовить загрузку с нового диска

Сначала определите режим загрузки текущего сеанса:

test -d /sys/firmware/efi && echo UEFI || echo BIOS

Legacy BIOS

Для системы с GRUB под BIOS установите загрузчик на весь новый диск, а не на раздел:

grub-install --target=i386-pc /dev/sdb
update-grub

update-grub — команда Debian/Ubuntu; в другом дистрибутиве используйте его способ формирования конфигурации. При BIOS-загрузке с GPT нужен подходящий BIOS Boot Partition: копирование таблицы сохраняет его, если он был на исходном диске. Не подменяйте его EFI-разделом.

UEFI

Для UEFI требуется отдельный работоспособный EFI System Partition на новом диске. Обычный ESP не восстанавливается перечисленными выше командами добавления разделов в mdadm.

Подготовьте и смонтируйте ESP нового диска согласно схеме дистрибутива. Например, если он уже подготовлен и смонтирован в /mnt/efi-new, установка использует этот путь:

grub-install --efi-directory=/mnt/efi-new

Проверьте наличие нужных EFI-файлов и запись загрузки в прошивке. Для Secure Boot используйте подписанные shim/GRUB и процедуру своего дистрибутива. Команда grub-install с одним /dev/sdb не является универсальной инструкцией для UEFI. Установка GRUB в руководстве GNU.

7. Восстановление из rescue через chroot

Если установленная система не загружается, используйте rescue/live-среду. Для примера с /dev/md2 как корнем и /dev/md0 как /boot:

mount /dev/md2 /mnt
mount /dev/md0 /mnt/boot
mount --rbind /dev /mnt/dev
mount --make-rslave /mnt/dev
mount --rbind /proc /mnt/proc
mount --make-rslave /mnt/proc
mount --rbind /sys /mnt/sys
mount --make-rslave /mnt/sys
mount --rbind /run /mnt/run
mount --make-rslave /mnt/run

Для UEFI загрузите саму rescue-среду в режиме UEFI и смонтируйте подготовленный ESP нового диска перед входом в chroot. В нашем примере это /dev/sdb1, но тип и номер сначала нужно проверить:

mount /dev/sdb1 /mnt/boot/efi
chroot /mnt

Для BIOS шаг монтирования ESP пропускается. Внутри chroot выполните соответствующую вашему режиму установку загрузчика и обновление конфигурации. Затем выйдите командой exit, корректно размонтируйте файловые системы и перезагрузитесь. Если корень зашифрован или расположен в LVM, его сначала нужно открыть или активировать. Пример восстановления GRUB UEFI у Debian.

Итоговая проверка

  • Все ожидаемые массивы имеют по два исправных участника, recovery/resync завершён.
  • Имена, размеры и серийные номера дисков соответствуют плану замены.
  • На новом диске подготовлен загрузчик нужного типа; для UEFI проверен ESP.
  • После завершения синхронизации в согласованное окно проверена самостоятельная загрузка с нового накопителя.
  • Резервная копия и результаты диагностики доступны.

Источник первоначального материала: Аникин — «Замена диска в программном RAID1 в Linux». Инструкция расширена самостоятельно с учётом справок mdadm, sgdisk, util-linux и GRUB; актуальность команд проверена 10 октября 2026 года.

ORIGINAL / ATTRIBUTION

Источник материала

Материал переработан для SYSADM.VIP. Оригинальный источник указан ниже.

Оригинал статьи на anikin.pw ↗

https://anikin.pw/all/zamena-dika-v-programnom-raid1-v-linux/

Материал проверен 10.10.2026. При изменении программного обеспечения сверяйтесь с актуальной документацией.
← Вернуться в базу знаний