Замена отказавшего диска в RAID1 — тестирование и восстановление
Краткое объяснение
RAID1 — зеркальный массив: данные хранятся одновременно на двух дисках. Если один диск выходит из строя, массив остаётся доступным, но деградированным. Цель этой инструкции — безопасно заменить отказавший диск и восстановить зеркалирование.
Важно: команды нужно запускать от root. Термины: mdadm — инструмент для управления программными RAID в Linux; sfdisk — копирование таблиц разделов.
1. Моделирование отказа диска
В примере предполагается, что отказал /dev/sdb. Это несущественно — при необходимости замените диски по именам.
Вы можете физически вынуть диск после выключения, либо «мягко» пометить его как упавший и удалить:
mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --manage /dev/md1 --fail /dev/sdb5mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm --manage /dev/md1 --remove /dev/sdb5Если вы выключаете систему для замены, используйте:
shutdown -h nowПосле установки нового диска в слот и загрузки система должна стартовать нормально.
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:~# Также удобно посмотреть таблицу дисков:
fdisk -lЕсли новый диск не содержит таблицы разделов, его вывод покажет сообщение вроде “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Пример вывода показывает успешную запись новой таблицы разделов и рекомендации по обнулению первых 512 байт для новых логических разделов.
Примечание: сообщение “sector 0 does not have an msdos signature” обычно появляется для пустых дисков и считать его ошибкой необязательно, если в конце виден «Successfully wrote the new partition table».
4. Очистка остатков RAID и добавление диска в массив
Удалите старые суперблоки 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 = 31.1% (1556160/4988032) finish=0.6min speed=81903K/sec
md0 : active raid1 sdb1[1] sda1[0]
248896 blocks [2/2] [UU]
unused devices:
server1:~# Дождитесь состояния [2/2] и метки [UU]:
cat /proc/mdstatВы увидите оба массива полностью синхронизированными.
5. Установка загрузчика на оба диска
Чтобы система могла загружаться при выходе из строя любого диска, установите GRUB на оба диска. Запустите grub и выполните команды (интерактивно):
grubВнутри GRUB выполните:
root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
quitВажно: номера hd0/hd1 зависят от порядка загрузки BIOS/UEFI. Проверьте соответствие устройств перед установкой.
Критерии приёмки
- cat /proc/mdstat показывает [UU] для всех RAID1-массивов.
- Система загружается с любого из дисков после отключения другого.
- Разделы на новом диске совпадают по размерам и типам с рабочим диском.
Типичные ошибки и способы решения
- sfdisk: если вы видите ошибку msdos signature, но в конце таблица успешно записана — это нормально для пустого диска.
- mdadm не добавляет раздел: проверьте, что раздел помечен как Linux raid (Id fd) и используйте –zero-superblock перед добавлением.
- Синхронизация идёт медленно: проверьте нагрузку дисков, скорость и возможные ошибки I/O в dmesg.
Альтернативные подходы
- Горячая замена (hot-swap): если сервер и дисковый отсек поддерживают hot-swap, можно физически заменить диск без выключения. Тогда достаточно выполнить mdadm –fail/–remove и вставить новый диск.
- Использование dd для копирования полного диска: подходит для восстановления точной копии, но требует равных по размеру дисков и занимает больше времени.
Контрольный список ролей
- Оператор: смоделировать отказ, пометить диск как failed, проверить /proc/mdstat.
- Системный администратор: заменить диск, скопировать таблицу, очистить суперблоки, добавить в массив, контролировать синхронизацию.
- Тестировщик: проверить загрузку с каждого диска, проверить целостность данных.
Рекомендации по безопасности и рискам
- Перед операциями сделайте резервную копию критичных данных.
- Работайте в консоли с root-доступом; будьте внимательны с командами sfdisk и dd — они перезаписывают таблицы.
- При установке GRUB убедитесь в правильном выборе дисков, чтобы не потерять загрузчик.
Сводка
Вы заменили отказавший диск в 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: персонализированная новостная лента