Замена накопителя в программном RAID 1 состоит из трёх отдельных задач: вывести неисправные разделы из массивов, восстановить на новом диске разметку и данные, затем обеспечить загрузку системы. Успешная синхронизация mdadm сама по себе не подтверждает, что сервер сможет загрузиться с нового накопителя.
Пример конфигурации и границы инструкции
Рассмотрим два диска: исправный /dev/sda и заменяемый /dev/sdb. В примере отдельные RAID 1 используются для /boot, swap и корневой файловой системы:
| Массив | Исправный участник | Заменяемый участник | Назначение |
|---|---|---|---|
| /dev/md0 | /dev/sda2 | /dev/sdb2 | /boot |
| /dev/md1 | /dev/sda3 | /dev/sdb3 | swap |
| /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 года.