Замена сбойного диска в RAID1 на Linux (software RAID)
Кому полезно
- Системным администраторам и инженерам DevOps, которые поддерживают серверы с программными RAID1.
- Любому, кто хочет заменить физический диск без потери данных.
Основные шаги (коротко)
- Определить, что диск сбойный (логи, /proc/mdstat).
- Пометить разделы сбойного диска как failed и удалить их из md-томов.
- Выключить сервер и физически заменить диск.
- Скопировать таблицу разделов с рабочего диска на новый диск (sgdisk).
- Добавить новые разделы в массивы md и дождаться синхронизации.
1 Предисловие
В примере используются два диска: /dev/sda и /dev/sdb. Разделы /dev/sda1 и /dev/sdb1 образуют RAID1 /dev/md0. Разделы /dev/sda2 и /dev/sdb2 образуют RAID1 /dev/md1. /dev/sdb вышел из строя — мы его заменяем.
2 Как понять, что диск сбойный
Ищите сообщения об ошибках в /var/log/messages или /var/log/syslog. Также выполните:
cat /proc/mdstatЕсли массив деградирован, вместо [UU] вы увидите [U_].
Важно: проверяйте SMART-данные (smartctl) на подозрительных дисках, если у вас есть доступ к ним.
3 Удаление сбойного диска из массива
Сначала отметьте разделы сбойного диска как failed, затем удалите их из соответствующих md-томов.
Пример: пометить /dev/sdb1 как failed в /dev/md0
mdadm --manage /dev/md0 --fail /dev/sdb1Проверка состояния:
cat /proc/mdstatОжидаемый выход (пример):
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[2](F)
24418688 blocks [2/1] [U_]
md1 : active raid1 sda2[0] sdb2[1]
24418688 blocks [2/2] [UU]
unused devices: Удаляем /dev/sdb1 из /dev/md0:
mdadm --manage /dev/md0 --remove /dev/sdb1Повторите те же шаги для /dev/sdb2 (часть /dev/md1):
mdadm --manage /dev/md1 --fail /dev/sdb2
mdadm --manage /dev/md1 --remove /dev/sdb2После удаления всех частей выключите систему:
shutdown -h nowЗамените физический диск на новый (он должен быть не меньше по ёмкости; даже небольшое уменьшение может помешать восстановлению).
4 Добавление нового диска
После установки нового диска загрузите систему.
- Установите gdisk, если он не установлен:
apt-get install gdiskДля RHEL/CentOS возможно:
yum install gdiskДля openSUSE:
yast install gdisk- (Опционально) Создайте резервные копии таблиц разделов перед внесением изменений:
sgdisk --backup=/root/sda.partitiontable /dev/sda
sgdisk --backup=/root/sdb.partitiontable /dev/sdb- Скопируйте схему разделов с /dev/sda на /dev/sdb:
sgdisk -R /dev/sdb /dev/sda- Сгенерируйте новый GUID для копии, чтобы избежать одинаковых идентификаторов:
sgdisk -G /dev/sdb- Проверка:
sgdisk -p /dev/sda
sgdisk -p /dev/sdb- Добавьте разделы нового диска в массивы md:
mdadm --manage /dev/md0 --add /dev/sdb1
mdadm --manage /dev/md1 --add /dev/sdb2Пример вывода для добавления:
server1:~# mdadm --manage /dev/md0 --add /dev/sdb1
mdadm: re-added /dev/sdb1- Наблюдайте за синхронизацией:
cat /proc/mdstatВо время синхронизации вы увидите прогресс. По окончании оба массива должны показывать [UU].
server1:~# cat /proc/mdstat
md0 : active raid1 sda1[0] sdb1[1]
24418688 blocks [2/2] [UU]
md1 : active raid1 sda2[0] sdb2[1]
24418688 blocks [2/2] [UU]
unused devices: Поздравляем — диск успешно заменён.
Советы по безопасности и совместимости
- Новый диск должен иметь ≥ объёма старого диска. Если диск чуть меньше — восстановление может не пройти.
- Если используется LVM поверх md, убедитесь, что PV/PV UUID не конфликтуют.
- Проверьте GRUB/загрузочную конфигурацию, если диск, заменённый, содержал загрузочную запись.
Когда этот способ не сработает
- Если таблица разделов /dev/sda нестандартная (скриптовые метки, специфичные UUID), простой копии может быть недостаточно.
- Если после физической поломки диск оставляет «битые» сектора и mdadm не может корректно пометить устройство как removed — может потребоваться принудительное удаление и ручная правка метаданных.
- На оборудовании с аппаратным RAID контроллером процедуры отличаются; не применяйте mdadm-инструкции к hardware RAID.
Альтернативные подходы
- sfdisk или parted можно использовать для копирования таблиц MBR/parted. Для GPT предпочтительнее sgdisk.
- Клонирование разделов dd или ddrescue — вариант при необходимости точной побитовой копии, но требует аккуратности и времени.
- Восстановление из резервных копий: если есть бекапы, можно пересоздать массив и восстановить данные.
Ментальные модели и эвристики
- Модель «потерянный узел» — RAID1 выдерживает потерю одного члена; действуйте быстро, чтобы не оставаться в деградированном состоянии долго.
- Всегда иметь резервную копию таблицы разделов перед изменением: это минимальный страховочный шаг.
Пошаговый чеклист для инженера (SOP)
- Проверить логи и /proc/mdstat
- Пометить разделы сбойного диска как failed
- Удалить разделы из md-томов
- Выключить и физически заменить диск
- Скопировать таблицу разделов sgdisk -R
- Сгенерировать новый GUID для диска sgdisk -G
- Добавить разделы в mdadm
- Мониторить /proc/mdstat до [UU]
- Проверить целостность данных и сервисов
Критерии приёмки
- Оба массива md возвращаются в состояние [UU].
- Все сервисы, использующие массивы, работают нормально.
- Ведутся мониторинговые метрики (SMART, mdadm alerts) и нет новых ошибок в логах.
Команды-справочник
- Просмотр состояния RAID: cat /proc/mdstat
- Пометить как failed: mdadm –manage /dev/mdX –fail /dev/sdYn
- Удалить из массива: mdadm –manage /dev/mdX –remove /dev/sdYn
- Добавить в массив: mdadm –manage /dev/mdX –add /dev/sdYn
- Копия GPT: sgdisk -R /dev/target /dev/source
- Сгенерировать GUID: sgdisk -G /dev/target
- Резервная копия таблицы: sgdisk –backup=/path/file /dev/disk
Частые ошибки и как их избежать
- Ошибка: новый диск чуть меньше. Решение: заранее проверить точный размер в секторах (fdisk -l).
- Ошибка: забыли сгенерировать новый GUID — два диска имеют одинаковые GUID. Решение: выполнить sgdisk -G.
- Ошибка: забыли добавить новые разделы в md — массив останется деградированным.
Короткое резюме
Заменить сбойный диск в программном RAID1 можно без потери данных, если правильно пометить разделы как failed, удалить их из массивов, физически заменить диск, скопировать таблицу разделов с рабочего диска (sgdisk) и добавить новые разделы в md. Внимательность к размерам дисков, резервным копиям таблиц и мониторингу синхронизации сводит риск к минимуму.
Важно: тестируйте процедуру на несущестующих в проде системах и поддерживайте актуальные бэкапы.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента