Замена сбойного диска в RAID1 и тестирование восстановления
Кратко
Краткое руководство по симуляции сбоя диска в RAID1, замене диска и проверке восстановления массива. Содержит точные команды, выводы команд и контрольные чек‑пойнты для администратора.
Что делает эта инструкция
- Показывает, как смоделировать отказ диска (/dev/sda или /dev/sdb).
- Описывает восстановление: копирование таблицы разделов, очистку меток RAID, добавление нового диска и синхронизацию.
- Даёт проверки состояния и установку загрузчика GRUB на оба диска.
Важно: выполняйте операции с правами root и убедитесь, что у вас есть резервные копии критичных данных перед тестами.
Шаг 1 — Симуляция сбоя диска
Не важно, какой диск вы пометите как сбойный — /dev/sda или /dev/sdb. В примере предполагается, что отказал /dev/sdb.
Можно физически извлечь диск после выключения системы или мягко пометить его как отказавший:
mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --manage /dev/md1 --fail /dev/sdb2
mdadm --manage /dev/md2 --fail /dev/sdb3
Затем удалите из массива:
mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm --manage /dev/md1 --remove /dev/sdb2
mdadm --manage /dev/md2 --remove /dev/sdb3
Выключите систему, если планируете физическую замену диска:
shutdown -h now
После установки нового диска загрузите систему — система должна стартовать нормально.
Шаг 2 — Проверка состояния массива
Проверьте текущее состояние:
cat /proc/mdstat
Ожидаемый пример вывода при деградации:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid1 sda1[0]
104320 blocks [2/1] [U_]
md1 : active raid1 sda2[0]
513984 blocks [2/1] [U_]
md2 : active raid1 sda3[0]
4618560 blocks [2/1] [U_]
unused devices:
[root@server1 ~]#
Проверьте таблицы разделов:
fdisk -l
(В исходном примере показаны диски /dev/sda и /dev/sdb, где /dev/sdb ещё не содержит таблицы разделов.)
Шаг 3 — Копирование таблицы разделов
Скопируйте таблицу разделов с рабочего диска на новый диск:
sfdisk -d /dev/sda | sfdisk /dev/sdb
Если появится ошибка с сигнатурой, попробуйте принудительный режим:
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Пример вывода успешной записи таблицы:
[root@server1 ~]# sfdisk -d /dev/sda | sfdisk /dev/sdb
Checking that no-one is using this disk right now ...
OK
Disk /dev/sdb: 652 cylinders, 255 heads, 63 sectors/track
sfdisk: ERROR: sector 0 does not have an msdos signature
/dev/sdb: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
/dev/sdb1 * 63 208844 208782 fd Linux raid autodetect
/dev/sdb2 208845 1237004 1028160 fd Linux raid autodetect
/dev/sdb3 1237005 10474379 9237375 fd Linux raid autodetect
/dev/sdb4 0 - 0 0 Empty
Successfully wrote the new partition table
Re-reading the partition table ...
If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
[root@server1 ~]#
Шаг 4 — Очистка меток старого RAID и добавление нового диска
Удалите остатки старых superblock’ов на новом диске:
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb2
mdadm --zero-superblock /dev/sdb3
Добавьте разделы нового диска в массивы:
mdadm -a /dev/md0 /dev/sdb1
mdadm -a /dev/md1 /dev/sdb2
mdadm -a /dev/md2 /dev/sdb3
Проверка статуса восстановления:
cat /proc/mdstat
Ожидаемый вывод во время синхронизации:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid1 sdb1[1] sda1[0]
104320 blocks [2/2] [UU]
md1 : active raid1 sdb2[1] sda2[0]
513984 blocks [2/2] [UU]
md2 : active raid1 sdb3[2] sda3[0]
4618560 blocks [2/1] [U_]
[===>.................] recovery = 15.4% (715584/4618560) finish=4.9min speed=13222K/sec
unused devices:
[root@server1 ~]#
Подождите, пока восстановление завершится; затем /proc/mdstat покажет все устройства [UU].
Шаг 5 — Установка загрузчика GRUB на оба диска
Запустите grub и установите загрузчик на оба HDD:
grub
В интерактивной сессии grub выполните:
root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
quit
После этого система загрузится с любого диска, если другой выйдет из строя.
Быстрая проверка и отладка
- Если /proc/mdstat показывает [U_], значит один из членов отсутствует — проверьте sfdisk, udev и dmesg на предмет ошибок.
- Убедитесь, что partition UUID и метки совпадают, особенно если используются конфигурации с UUID в /etc/fstab.
- Если sfdisk жалуется на сигнатуру, –force обычно помогает, но внимательно проверьте новую таблицу перед применением.
Чек‑лист для администратора
- Сделать резервную копию важных данных.
- Смоделировать отказ (mdadm –fail).
- Проверить /proc/mdstat и fdisk -l.
- Копировать таблицу разделов: sfdisk -d /dev/sda | sfdisk /dev/sdb.
- mdadm –zero-superblock для новых разделов.
- mdadm -a для добавления в массив.
- Дождаться завершения синхронизации.
- Установить GRUB на оба диска.
Критерии приёмки
- Все md устройства в /proc/mdstat имеют статус [UU].
- Загрузчик установлен на обоих дисках; при отключении одного диск будет загружать систему.
- Нет ошибок при чтении таблиц разделов и при добавлении членов массива.
Краткое глоссарий (1‑строчно)
- mdadm — утилита для управления программными RAID в Linux.
- sfdisk — утилита для работы с таблицами разделов (скриптовая).
- superblock — метаданные RAID, хранящиеся в начале раздела.
Когда этот подход не подходит
- Если используется аппаратный RAID-контроллер — управление делается через контроллер, а не mdadm.
- Если диски имеют разные размеры/структуры разделов — простая копия sfdisk может привести к проблемам; проверьте совместимость.
Ссылки
- The Software-RAID Howto: http://tldp.org/HOWTO/Software-RAID-HOWTO.html
- Fedora: http://fedoraproject.org
Похожие материалы

Исправить задержку камеры на Android

Как сделать удалённые файлы невосстановимыми
Настройка MySQL-слейва через SSL

Удаление Explorer Patcher в Windows 11

Потеря пакетов в Sea of Thieves — как исправить
