Гид по технологиям

Замена сбойного диска в RAID1 и тестирование восстановления

3 min read Системное администрирование Обновлено 09 Oct 2025
RAID1: замена диска и проверка
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 может привести к проблемам; проверьте совместимость.

Ссылки

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Исправление ошибки SCCM 0x87D00607
SCCM

Исправление ошибки SCCM 0x87D00607

Скачивание торрентов через Terminal на Mac
Руководство

Скачивание торрентов через Terminal на Mac

Как изменить яркость экрана на iPhone или iPad
Гаджеты

Как изменить яркость экрана на iPhone или iPad

Airbnb Style Guide и ESLint: настройка для JavaScript
JavaScript

Airbnb Style Guide и ESLint: настройка для JavaScript

Валидация данных в Google Sheets
Электронные таблицы

Валидация данных в Google Sheets

Письма попадают в корзину Gmail — как исправить
Email

Письма попадают в корзину Gmail — как исправить