Замена сбойного диска в RAID1 — тестирование и восстановление
Кратко
Коротко: этот документ пошагово показывает, как симулировать отказ жёсткого диска в RAID1, перенести таблицу разделов на новый диск, добавить его в массив и дождаться синхронизации. Приведены команды, проверочные выводы, план действий, чек-листы и рекомендации по устранению ошибок.
Важно: команды выполняются от root. Перед работой сделайте резервную копию важных данных и убедитесь, что у вас есть физический доступ к серверам для замены диска.
Обзор задачи
Задача: заменить сбойный диск в зеркальном массиве (RAID1) и восстановить работоспособность массива. Процесс включает:
- симуляцию отказа диска,
- удаление/замену физического устройства,
- копирование таблицы разделов на новый диск,
- очистку метаданных RAID и добавление нового устройства в массив,
- контроль процесса синхронизации,
- переустановку загрузчика на оба диска.
Требования: знание командной строки Linux, доступ к mdadm, sfdisk, grub и правам root.
Тестирование (эмуляция отказа и восстановление)
В примерах ниже принято, что отказал /dev/sdb (аналогично работает для /dev/sda).
- Эмулируем отказ — безопасный (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Можно также выключить систему, физически вынуть диск и затем вставить новый. Если вы симулировали отказ /dev/sda — при замене смонтируйте новый диск в позицию /dev/sda, а старый подключите как /dev/sdb и т.д.
Выключаем систему (если выбрали физическую замену):
shutdown -h nowВставляем новый диск в слот и загружаемся. Система должна стартовать нормально.
Проверяем состояние массива:
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:~# - Вывод 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:~#- Копируем таблицу разделов с рабочего диска (/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:~#- Удаляем остатки предыдущих метаданных RAID на новом диске:
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb5- Добавляем разделы нового диска в массив:
mdadm -a /dev/md0 /dev/sdb1
mdadm -a /dev/md1 /dev/sdb5- Проверяем статус синхронизации:
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:~# - Переустанавливаем загрузчик 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- Перезагрузите систему и проверьте работоспособность.
Критерии приёмки
- mdstat показывает [UU] для всех зеркал.
- sfdisk/fdisk распознают таблицу разделов на новом диске.
- Загрузчик установлен на обоих дисках; сервер успешно загружается с любого из них.
- Нет ошибок в системных логах, связанных с RAID или дисками после замены.
Пошаговый план (SOP)
- Оповестить заинтересованные стороны и подготовить окно обслуживания.
- Снять бэкап критичных данных (если применимо).
- Эмулировать отказ или извлечь диск.
- Заменить диск на новый; подключить и убедиться, что kernel видит диск.
- Клонировать таблицу разделов: sfdisk -d /dev/sda | sfdisk /dev/sdb.
- Очистить superblock: mdadm –zero-superblock …
- Добавить разделы в массив: mdadm -a …
- Мониторить /proc/mdstat до 100%.
- Установить загрузчик на оба диска.
- Провести тест загрузки и мониторинг.
Чек-лист для ролей
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, восстановили таблицу разделов на новом диске, добавили его в массив и дождались синхронизации. Завершите процедуру установкой загрузчика и мониторингом системы.
Ссылки
- The Software-RAID Howto: http://tldp.org/HOWTO/Software-RAID-HOWTO.html
- Debian: http://www.debian.org
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента