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

Замена сбойного диска в RAID1

3 min read Системное администрирование Обновлено 29 Oct 2025
Замена сбойного диска в RAID1
Замена сбойного диска в RAID1

Тестирование

Ниже описаны шаги для имитации отказа диска и его замены в RAID1. В примере предполагается, что вышел из строя /dev/sdb. То же самое применимо к /dev/sda — измените названия устройств по ситуации.

Важно: перед выполнением команд убедитесь, что у вас есть актуальные бэкапы и доступ к консоли хоста.

Шаг 1 — симулируем отказ диска

Можно физически вынуть диск после выключения системы или аккуратно пометить разделы как отказавшие в работающей системе:

mdadm --manage /dev/md0 --fail /dev/sdb1  
mdadm --manage /dev/md1 --fail /dev/sdb2  
mdadm --manage /dev/md2 --fail /dev/sdb3

Затем удалим их из массива (soft-remove):

mdadm --manage /dev/md0 --remove /dev/sdb1  
mdadm --manage /dev/md1 --remove /dev/sdb2  
mdadm --manage /dev/md2 --remove /dev/sdb3

При необходимости остановите систему:

shutdown -h now

Вставьте новый жёсткий диск в место старого (или замените устройство, если вы симулировали отказ /dev/sda, корректно подключите новый диск как /dev/sdb) и загрузите систему. Система должна стартовать в обычном режиме.

Запросите состояние массива:

cat /proc/mdstat

Пример вывода для деградированного массива:

server1:~# cat /proc/mdstat  
Personalities : [raid1]  
md2 : active raid1 sda3[0]  
      4594496 blocks [2/1] [U_]  
  
md1 : active raid1 sda2[0]  
      497920 blocks [2/1] [U_]  
  
md0 : active raid1 sda1[0]  
      144448 blocks [2/1] [U_]  
  
unused devices:   
server1:~#

И проверьте таблицу разделов:

fdisk -l

Пример вывода, где у /dev/sdb нет валидной таблицы разделов:

server1:~# fdisk -l  
  
Disk /dev/sda: 5368 MB, 5368709120 bytes  
255 heads, 63 sectors/track, 652 cylinders  
Units = cylinders of 16065 * 512 = 8225280 bytes  
  
   Device Boot      Start         End      Blocks   Id  System  
/dev/sda1   *           1          18      144553+  fd  Linux raid autodetect  
/dev/sda2             19          80      498015   fd  Linux raid autodetect  
/dev/sda3             81         652     4594590   fd  Linux raid autodetect  
  
Disk /dev/sdb: 5368 MB, 5368709120 bytes  
255 heads, 63 sectors/track, 652 cylinders  
Units = cylinders of 16065 * 512 = 8225280 bytes  
  
Disk /dev/sdb doesn't contain a valid partition table  
  
Disk /dev/md0: 147 MB, 147914752 bytes  
2 heads, 4 sectors/track, 36112 cylinders  
Units = cylinders of 8 * 512 = 4096 bytes  
  
Disk /dev/md0 doesn't contain a valid partition table  
  
Disk /dev/md1: 509 MB, 509870080 bytes  
2 heads, 4 sectors/track, 124480 cylinders  
Units = cylinders of 8 * 512 = 4096 bytes  
  
Disk /dev/md1 doesn't contain a valid partition table  
  
Disk /dev/md2: 4704 MB, 4704763904 bytes  
2 heads, 4 sectors/track, 1148624 cylinders  
Units = cylinders of 8 * 512 = 4096 bytes  
  
Disk /dev/md2 doesn't contain a valid partition table  
server1:~#

Шаг 2 — копируем таблицу разделов

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

sfdisk -d /dev/sda | sfdisk /dev/sdb

Если sfdisk жалуется, попробуйте принудительный режим:

sfdisk -d /dev/sda | sfdisk --force /dev/sdb

Пример успешного результата:

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    289169     289107  fd  Linux raid autodetect  
/dev/sdb2        289170   1285199     996030  fd  Linux raid autodetect  
/dev/sdb3       1285200  10474379    9189180  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).)  
server1:~#

Шаг 3 — очистка метаданных RAID и добавление диска

Удалите следы прежних метаданных RAID на новом диске:

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

Пример восстановления:

server1:~# cat /proc/mdstat  
Personalities : [raid1]  
md2 : active raid1 sdb3[2] sda3[0]  
      4594496 blocks [2/1] [U_]  
      [======>..............]  recovery = 30.8% (1416256/4594496) finish=0.6min speed=83309K/sec  
  
md1 : active raid1 sdb2[1] sda2[0]  
      497920 blocks [2/2] [UU]  
  
md0 : active raid1 sdb1[1] sda1[0]  
      144448 blocks [2/2] [UU]  
  
unused devices:   
server1:~#

Дождитесь завершения синхронизации. Окончательный вывод должен показывать [UU]:

server1:~# cat /proc/mdstat  
Personalities : [raid1]  
md2 : active raid1 sdb3[1] sda3[0]  
      4594496 blocks [2/2] [UU]  
  
md1 : active raid1 sdb2[1] sda2[0]  
      497920 blocks [2/2] [UU]  
  
md0 : active raid1 sdb1[1] sda1[0]  
      144448 blocks [2/2] [UU]  
  
unused devices:   
server1:~#

Шаг 4 — установка загрузчика на оба диска

Запустите grub и установите загрузчик на оба физических диска, чтобы система загружалась при отказе одного из них:

grub

В интерактивной сессии grub выполните:

root (hd0,0)  
setup (hd0)  
root (hd1,0)  
setup (hd1)  
quit

Готово — вы успешно заменили сбойный диск в RAID1.

Чек-лист: быстрое руководство

  • Сделать бэкап важных данных.
  • Симулировать отказ (fail/remove) соответствующих разделов.
  • Выключить и физически заменить диск (если требуется).
  • Скопировать таблицу разделов: sfdisk -d /dev/sda | sfdisk /dev/sdb.
  • Очистить superblock: mdadm –zero-superblock /dev/sdbX.
  • Добавить разделы в массив: mdadm -a /dev/mdX /dev/sdbX.
  • Проверить /proc/mdstat и дождаться [UU].
  • Установить grub на оба диска.

Runbook при инциденте (пошагово)

  1. Оповестите команду и зафиксируйте время инцидента.
  2. Переведите деградировавший диск в состояние fail и remove (если не вынут физически).
  3. Подготовьте заменяющий диск — проверьте модель и ёмкость.
  4. Скопируйте таблицу разделов и очистите superblock.
  5. Добавьте диск в массив и контролируйте восстановление.
  6. После успешной синхронизации установите загрузчик на оба диска.
  7. Проведите тестовую перезагрузку на случай отказа одного из дисков.
  8. Задокументируйте шаги и время восстановления.

Критерии приёмки

  • /proc/mdstat показывает для всех md‑томов состояние [UU].
  • fdisk -l отображает корректные разделы на замене/старом диске.
  • Система корректно загружается при отключении одного из дисков.
  • Нет ошибок mdadm в логах (dmesg, /var/log/syslog).

Чит‑лист команд (полезно сохранить)

  • Показать состояние RAID: cat /proc/mdstat
  • Отметить раздел как failed: mdadm –manage /dev/mdX –fail /dev/sdXY
  • Удалить раздел из массива: mdadm –manage /dev/mdX –remove /dev/sdXY
  • Обнулить superblock: mdadm –zero-superblock /dev/sdXY
  • Добавить в массив: mdadm -a /dev/mdX /dev/sdXY
  • Копировать таблицу разделов: sfdisk -d /dev/sdA | sfdisk /dev/sdB
  • Установить grub: grub -> root (hdN,0) -> setup (hdN) -> quit

1‑строчная терминология

RAID1 — зеркалирование двух или более дисков для отказоустойчивости; данные записываются одновременно на все зеркала.

Ссылки

Важно: всегда проверяйте команды на тестовой системе и имейте актуальные бэкапы перед изменением разделов или метаданных дисков.

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

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

Троян Herodotus: как он работает и как защититься
Кибербезопасность

Троян Herodotus: как он работает и как защититься

Включить новое меню «Пуск» в Windows 11
Windows руководство

Включить новое меню «Пуск» в Windows 11

Панель полей сводной таблицы в Excel — руководство
Excel

Панель полей сводной таблицы в Excel — руководство

Включить новое меню «Пуск» в Windows 11
Windows 11

Включить новое меню «Пуск» в Windows 11

Дубликаты Диспетчера задач в Windows 11 — как исправить
Windows

Дубликаты Диспетчера задач в Windows 11 — как исправить

История просмотров Reels в Instagram — как найти
Instagram

История просмотров Reels в Instagram — как найти