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

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

• 5 min read • Серверы • Обновлено 23 Nov 2025
RAID1: замена диска и восстановление
RAID1: замена диска и восстановление

Кратко

Коротко: этот документ пошагово показывает, как симулировать отказ жёсткого диска в RAID1, перенести таблицу разделов на новый диск, добавить его в массив и дождаться синхронизации. Приведены команды, проверочные выводы, план действий, чек-листы и рекомендации по устранению ошибок.

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

Обзор задачи

Задача: заменить сбойный диск в зеркальном массиве (RAID1) и восстановить работоспособность массива. Процесс включает:

  • симуляцию отказа диска,
  • удаление/замену физического устройства,
  • копирование таблицы разделов на новый диск,
  • очистку метаданных RAID и добавление нового устройства в массив,
  • контроль процесса синхронизации,
  • переустановку загрузчика на оба диска.

Требования: знание командной строки Linux, доступ к mdadm, sfdisk, grub и правам root.

Тестирование (эмуляция отказа и восстановление)

В примерах ниже принято, что отказал /dev/sdb (аналогично работает для /dev/sda).

  1. Эмулируем отказ — безопасный (soft) способ без физической замены:
mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --manage /dev/md1 --fail /dev/sdb5

mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm --manage /dev/md1 --remove /dev/sdb5
  1. Можно также выключить систему, физически вынуть диск и затем вставить новый. Если вы симулировали отказ /dev/sda — при замене смонтируйте новый диск в позицию /dev/sda, а старый подключите как /dev/sdb и т.д.

  2. Выключаем систему (если выбрали физическую замену):

shutdown -h now
  1. Вставляем новый диск в слот и загружаемся. Система должна стартовать нормально.

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

cat /proc/mdstat

Ожидаемый вывод при деградированном массиве (пример):

server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda5[0]
4988032 blocks [2/1] [U_]

md0 : active raid1 sda1[0]
248896 blocks [2/1] [U_]

unused devices: 
server1:~#
  1. Вывод fdisk -l поможет убедиться в отсутствии таблицы разделов на новом диске:
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          31      248976   fd  Linux raid autodetect
/dev/sda2             32         652     4988182+   5  Extended
/dev/sda5             32         652     4988151   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: 254 MB, 254869504 bytes
2 heads, 4 sectors/track, 62224 cylinders
Units = cylinders of 8 * 512 = 4096 bytes

Disk /dev/md0 doesn't contain a valid partition table

Disk /dev/md1: 5107 MB, 5107744768 bytes
2 heads, 4 sectors/track, 1247008 cylinders
Units = cylinders of 8 * 512 = 4096 bytes

Disk /dev/md1 doesn't contain a valid partition table

Disk /dev/dm-0: 4827 MB, 4827643904 bytes
255 heads, 63 sectors/track, 586 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/dm-0 doesn't contain a valid partition table

Disk /dev/dm-1: 276 MB, 276824064 bytes
255 heads, 63 sectors/track, 33 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/dm-1 doesn't contain a valid partition table
server1:~#
  1. Копируем таблицу разделов с рабочего диска (/dev/sda) на новый (/dev/sdb):
sfdisk -d /dev/sda | sfdisk /dev/sdb

Если sfdisk жалуется на подпись MBR, можно попробовать с опцией –force:

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    498014     497952  fd  Linux raid autodetect
/dev/sdb2        498015  10474379    9976365   5  Extended
/dev/sdb3             0         -          0   0  Empty
/dev/sdb4             0         -          0   0  Empty
/dev/sdb5        498078  10474379    9976302  fd  Linux raid autodetect
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:~#
  1. Удаляем остатки предыдущих метаданных RAID на новом диске:
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb5
  1. Добавляем разделы нового диска в массив:
mdadm -a /dev/md0 /dev/sdb1
mdadm -a /dev/md1 /dev/sdb5
  1. Проверяем статус синхронизации:
cat /proc/mdstat

Пример прогресса пересборки:

server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb5[2] sda5[0]
4988032 blocks [2/1] [U_]
[==================>..]  recovery = 91.9% (4586880/4988032) finish=0.1min speed=41410K/sec

md0 : active raid1 sdb1[1] sda1[0]
248896 blocks [2/2] [UU]

unused devices: 
server1:~#

Ждём полного завершения синхронизации — в конце оба массива должны иметь статус [UU]:

server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb5[1] sda5[0]
4988032 blocks [2/2] [UU]

md0 : active raid1 sdb1[1] sda1[0]
248896 blocks [2/2] [UU]

unused devices: 
server1:~#
  1. Переустанавливаем загрузчик GRUB на оба диска, чтобы система могла загрузиться с любого из них. Запускаем grub (в старых системах) или grub-install (в новых) — пример для интерактивного grub:
grub
root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
quit

В современных дистрибутивах рекомендуется использовать grub-install для каждого диска, например:

grub-install /dev/sda
grub-install /dev/sdb
  1. Перезагрузите систему и проверьте работоспособность.

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

  • mdstat показывает [UU] для всех зеркал.
  • sfdisk/fdisk распознают таблицу разделов на новом диске.
  • Загрузчик установлен на обоих дисках; сервер успешно загружается с любого из них.
  • Нет ошибок в системных логах, связанных с RAID или дисками после замены.

Пошаговый план (SOP)

  1. Оповестить заинтересованные стороны и подготовить окно обслуживания.
  2. Снять бэкап критичных данных (если применимо).
  3. Эмулировать отказ или извлечь диск.
  4. Заменить диск на новый; подключить и убедиться, что kernel видит диск.
  5. Клонировать таблицу разделов: sfdisk -d /dev/sda | sfdisk /dev/sdb.
  6. Очистить superblock: mdadm –zero-superblock …
  7. Добавить разделы в массив: mdadm -a …
  8. Мониторить /proc/mdstat до 100%.
  9. Установить загрузчик на оба диска.
  10. Провести тест загрузки и мониторинг.

Чек-лист для ролей

Sysadmin:

  • Проверить доступ к физическим слотам дисков.
  • Иметь под рукой запасной диск совместимого размера/интерфейса.
  • Выполнить sfdisk и mdadm-операции.

Оператор дата-центра или техник:

  • Физически заменить диск в шасси.
  • Обеспечить правильное подключение и питание.

DevOps / QA:

  • Проверить, что сервисы работают после восстановления.
  • Запустить тестовые запросы и мониторинг.

Устранение неполадок и распространённые ошибки

  • sfdisk выдаёт «sector 0 does not have an msdos signature»: можно использовать –force, но сначала убедитесь, что вы пишете таблицу с правильного диска.
  • mdadm не принимает диск: проверьте, что на разделе действительно очищен superblock (mdadm –zero-superblock). Если раздела нет — пересоздайте раздел с теми же границами.
  • Синхронизация идёт очень медленно: проверьте скорость I/O, фоновые нагрузки, SMART-статус дисков и параметры mdadm (например, /proc/sys/dev/raid/speed_limit_min и speed_limit_max).
  • После установки GRUB система не загружается: повторно выполните grub-install, проверьте устройство, где расположен /boot, и UUID в /etc/fstab.

Когда этот подход не подходит (ограничения)

  • RAID1 с шифрованием LUKS: потребуется расшифровать/монтировать LUKS-контейнеры для корректного копирования таблиц и установки загрузчика.
  • При несовместимости размеров дисков: новый диск должен быть не меньшего размера; иначе разделы могут не совпасть.
  • Если используется GPT + BIOS boot или UEFI: используйте соответствующие утилиты (gdisk, efibootmgr, grub-install с –target=x86_64-efi).

Альтернативные подходы

  • Использование hot-spare: заранее добавленный в массив диск автоматически поднимется при отказе.
  • Восстановление из резервной копии вместо синхронизации массива, если данные критичны и массив нарушен.
  • Миграция на LVM поверх RAID для гибкого управления томами.

Мини-методология (контроль качества)

  • Перед заменой: мониторинг SMART и логи, чтобы подтвердить отказ диска.
  • Во время замены: поэтапное отслеживание статусов и логов.
  • После замены: контроль на 24–72 часа за SMART, I/O и целостностью приложений.

Краткая справка по командам (cheat sheet)

  • mdadm –manage /dev/mdX –fail /dev/sdY#: отметить раздел как упавший.
  • mdadm –manage /dev/mdX –remove /dev/sdY#: удалить из массива.
  • mdadm -a /dev/mdX /dev/sdY#: добавить раздел в массив.
  • mdadm –zero-superblock /dev/sdY#: очистить метаданные RAID на разделе.
  • sfdisk -d /dev/sdX | sfdisk /dev/sdY: клонировать таблицу разделов.
  • cat /proc/mdstat: посмотреть статус RAID.
  • fdisk -l / sfdisk -l: показать таблицы разделов и диски.
  • grub-install /dev/sdX: установить загрузчик на диск.

Риск-матрица и смягчение рисков

  • Риск: потеря данных при ошибочной записи таблицы разделов. Смягчение: создавать резервную копию таблицы sfdisk -d и проверять перед применением.
  • Риск: новый диск несовместим по размеру. Смягчение: заранее проверить размеры и при необходимости выбрать диск большей емкости.
  • Риск: долгий ресинк при высокой нагрузке. Смягчение: планировать окно обслуживания, временно снижать нагрузку.

1‑строчный глоссарий

  • RAID1: зеркало — два (или более) диска хранят одинаковые данные для отказоустойчивости.
  • mdadm: утилита для управления программным RAID в Linux.
  • sfdisk: утилита для работы с таблицами разделов.
  • superblock: метаданные RAID, хранящие конфигурацию массива на разделе.

Факт-бокс

  • Команды, которые вы увидите чаще всего: mdadm, sfdisk, cat /proc/mdstat, grub-install.
  • Ключевая проверка: статус массива в /proc/mdstat должен оканчиваться [UU].

Краткое резюме

Вы успешно заменили сбойный диск в RAID1, восстановили таблицу разделов на новом диске, добавили его в массив и дождались синхронизации. Завершите процедуру установкой загрузчика и мониторингом системы.

Ссылки

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

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро