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

Замена и тестирование неисправного диска в RAID1

5 min read Системное администрирование Обновлено 28 Sep 2025
Восстановление RAID1: замена диска и тестирование
Восстановление RAID1: замена диска и тестирование

О чём эта инструкция

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

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

Предварительные требования

  • Доступ к консоли/SSH с правами root или sudo.
  • mdadm установлен и конфигурирован для управления программным RAID.
  • Наличие свободного порта/разъёма для нового жёсткого диска (если физическая замена).
  • Знание, какой диск в системе — /dev/sda или /dev/sdb.

Коротко о терминах: RAID1 — зеркалирование данных на двух и более дисках; mdadm — утилита управления программным RAID; sfdisk — утилита для работы с таблицами разделов; grub — загрузчик.

1. Эмуляция отказа диска (тестирование)

Вы можете сделать это физически (выключить сервер и извлечь диск) или программно (пометить разделы как упавшие и удалить их из массива). В примере считается, что отказал /dev/sdb.

Для программной симуляции выполнения на машине:

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

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

Затем можно выключить систему и физически заменить диск:

shutdown -h now

Примечание: если вы симулировали отказ /dev/sda, то при замене физического носителя новый накопитель должен быть подключён в то же место, где раньше был /dev/sda, а старый — как /dev/sdb, чтобы избежать путаницы с порядком дисков.

2. Проверка состояния массива после перезагрузки

После установки нового диска и загрузки выполните:

cat /proc/mdstat

В примере ожидаемый вывод покажет деградированный массив (один диск отсутствует):

[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[0]
104320 blocks [2/1] [U_]

md1 : active raid1 sda2[0]
10377920 blocks [2/1] [U_]

unused devices: 
[root@server1 ~]#

Также проверьте таблицу разделов и устройства:

fdisk -l

В примере вывод показывает, что /dev/sdb не содержит таблицу разделов:

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
Disk /dev/sdb doesn't contain a valid partition table

3. Копирование таблицы разделов с рабочего диска на новый

Скопируйте таблицу разделов с исправного диска (/dev/sda) на новый (/dev/sdb):

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

Если возникнет ошибка, попробуйте с опцией –force:

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: 1305 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  20964824   20755980  fd  Linux raid autodetect
/dev/sdb3             0         -          0   0  Empty
/dev/sdb4             0         -          0   0  Empty
Successfully wrote the new partition table

Re-reading the partition table ...
[root@server1 ~]#

Важно: если новый диск меньше по ёмкости, чем старый, копирование таблицы может не сработать. Всегда проверяйте физический объём дисков перед операциями. Если размеры отличаются незначительно, возможно потребуется вручную отредактировать sfdisk-вывод.

4. Очистка предыдущих метаданных RAID и добавление диска в массив

Перед добавлением убедитесь, что на новых разделах нет старых superblock mdadm. Очистите их:

mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb2

Добавьте разделы в массивы:

mdadm -a /dev/md0 /dev/sdb1
mdadm -a /dev/md1 /dev/sdb2

Проверьте состояние синхронизации:

cat /proc/mdstat

Ожидаемый частичный вывод при начале ресинхронизации:

md1 : active raid1 sdb2[2] sda2[0]
10377920 blocks [2/1] [U_]
[======>..............]  recovery = 32.3% (3360768/10377920) finish=1.5min speed=74238K/sec

Дождитесь завершения восстановления. В конце оба массива должны быть в состоянии [UU]:

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

md1 : active raid1 sdb2[1] sda2[0]
10377920 blocks [2/2] [UU]

5. Установка загрузчика (grub) на оба диска

Чтобы система могла загрузиться с любого физического диска, установите загрузчик GRUB на оба устройства. Запустите grub в интерактивном режиме и выполните команды:

grub

Затем в консоли grub выполните (пример):

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

Важно: синтаксис grub зависит от версии (grub-legacy vs grub2). Приведённый пример относится к grub (legacy). Для grub2 команды другие: используйте grub-install /dev/sda и grub-install /dev/sdb.

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

  • /proc/mdstat показывает [UU] для всех зеркал.
  • fdisk -l показывает корректные разделы на новом диске.
  • GRUB установлен на обоих физических дисках (проверяется grub-install или вывод grub).
  • Сервер загружается с любого из дисков (опционально протестировать путем отключения одного из дисков и перезагрузки).

Чек-лист действий (SOP)

  1. Сделать резервную копию конфигурации и данных (если возможно).
  2. Уведомить заинтересованные стороны о предстоящих работах.
  3. Пометить раздел как упавший через mdadm или выключить и заменить диск физически.
  4. После замены загрузить систему и проверить cat /proc/mdstat.
  5. Скопировать таблицу разделов: sfdisk -d /dev/sda | sfdisk /dev/sdb.
  6. Очистить superblock: mdadm –zero-superblock /dev/sdb1 и /dev/sdb2.
  7. Добавить разделы в массив: mdadm -a /dev/md0 /dev/sdb1 и mdadm -a /dev/md1 /dev/sdb2.
  8. Дождаться окончания синхронизации.
  9. Установить загрузчик на оба диска.
  10. Провести финальную проверку и закрыть инцидент.

Типичные ошибки и способы их устранения

  • sfdisk выдаёт ошибку msdos signature: попробуйте –force или проверьте, не повреждён ли сектор 0.
  • Новый диск меньше по размеру: вручную отредактируйте таблицу разделов или используйте диск не меньше, чем оригинал.
  • После добавления диск не входит в массив: проверьте вывод mdadm –examine /dev/sdb1 и убедитесь, что superblock отсутствует до добавления.
  • GRUB не устанавливается: используйте grub-install и проверяйте /boot/grub/*, а также syslog на предмет ошибок.

Решения в альтернативных сценариях

  • Если у вас LVM над RAID: после ресинхронизации проверьте pvscan и vgchange -ay.
  • Если массив оказался полностью мёртв (оба диска): восстановление сложнее, может потребоваться использование mdadm –assemble –force с осторожностью.

Быстрая памятка команд (cheat sheet)

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

Для grub2 используйте:

grub-install /dev/sda
grub-install /dev/sdb
update-grub

Модель принятия решения (простое дерево)

flowchart TD
  A[Диск вышел из RAID] --> B{Есть физический доступ?}
  B -- Да --> C[Выключить сервер, заменить диск физически]
  B -- Нет --> D[Симулировать отказ mdadm --fail и --remove]
  C --> E[Загрузить с новым диском]
  D --> E
  E --> F[Скопировать таблицу sfdisk]
  F --> G[Очистить superblock и добавить разделы]
  G --> H[Дождаться синхронизации]
  H --> I[Установить GRUB на оба диска]
  I --> J[Проверка: cat /proc/mdstat и перезагрузка тест]

Роли и ответственность

  • Системный администратор: выполняет замену, следит за синхронизацией, устанавливает GRUB.
  • Оператор/инженер поддержки: уведомляет о простоях, координирует тестовую перезагрузку.
  • Дев/владелец сервиса: согласует временные окна и проверяет целостность приложения после восстановления.

Критерии окончания работ

  • Массив в статусе [UU].
  • GRUB установлен и система корректно загружается при отключении одного из дисков.
  • Все наблюдения и команды задокументированы в инциденте.

Полезные ссылки

Часто задаваемые вопросы

Q: Нужно ли устанавливать GRUB на оба диска?
A: Да. Это повышает отказоустойчивость: при выходе из строя одного носителя система сможет загрузиться с другого.

Q: Можно ли копировать таблицу sfdisk, если диски чуть-чуть разных размеров?
A: Это зависит от различия в размере. Если новый диск меньше, копирование может не пройти. Если размер примерно одинаковый, sfdisk может записать таблицу, но лучше проверить и, при необходимости, отредактировать значения вручную.


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

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

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

Как вернуть счётчик дизлайков на YouTube
Руководство

Как вернуть счётчик дизлайков на YouTube

Добавить форум на Tumblr — пошаговое руководство
Tumblr

Добавить форум на Tumblr — пошаговое руководство

Dropbox на Android: настройка и советы
Android.

Dropbox на Android: настройка и советы

Отключить память чатов Gemini и управлять историей
Конфиденциальность

Отключить память чатов Gemini и управлять историей

Almowafir — купоны и скидки в Дубае
Покупки

Almowafir — купоны и скидки в Дубае

Восстановление RAID1: замена диска и тестирование
Системное администрирование

Восстановление RAID1: замена диска и тестирование