Я уже десятки раз заменял вышедшие из строя диски и никогда не имел с mdadm проблем (постучал по дереву). Буквально вчера утром получил уведомление с одного из серверов о выходе из строя диска (картинка с ошибкой и данными из мониторинга внизу) и вечером заказал замену у техподдержки дедика. В этот раз собрал практически все возможные проблемы, так что оформлю в короткую шпаргалку.
Вышел из строя диск
/dev/sda , который входит в состав RAID1 из двух дисков. Это первый диск, с которого грузился загрузчик. Перед заменой обязательно проверяем, что есть загрузчик на втором диске:# dpkg-reconfigure grub-pc Я получил ошибку:
grub-pc: Running grub-install ...Installing for i386-pc platform.grub-install.real: error: disk `mduuid/fe51668460b267542c1d5c1adb4e7680' not found. grub-install failure for /dev/sdbВ данном случае в тексте ошибки присутствует uuid одного из разделов оставшегося диска
/dev/sdb, который входит в массив mdadm, который из-за выхода из строя диска /dev/sda находится в состоянии Degraded. Я точно знал, что ранее на /dev/sdb уже ставил загрузчик, но решил перестраховаться. Чтобы исправить ошибку выше, надо вывести из состава массивов разделы диска
/dev/sda:# mdadm /dev/md126 --fail /dev/sda1# mdadm /dev/md126 --remove /dev/sda1Так для всех массивов. В моём случае их было 3:
/, /boot и swap. Я swap никогда в раздел не выношу, храню в файле, но это был шаблон от хостера. Там такая разбивка по умолчанию. Теперь команда
dpkg-reconfigure grub-pc отработала без ошибок, поставила загрузчик на /dev/sdb.После этого сервер можно выключить и написать в техподдержку, чтобы выполнили замену. Внимательно укажите серийный номер сбойного диска. У меня он всегда в Zabbix остаётся. Отдельно не веду каталог дисков. Просто настраиваю мониторинг. Обычно этого достаточно.
После того, как поддержка заменит диск и включит сервер, можно добавлять новый диск в массив. Проверяем его:
# smartctl -i /dev/sda# fdisk -l | grep /dev/sdaУбеждаемся, что диск подходящего размера и он чистый, без разметки. У меня на подобных серверах обычно mbr разметка, так как SSD диски не очень большие. Разделы с работающего диска на новый копирую так:
# sfdisk -d /dev/sdb | sfdisk /dev/sdaСкопировали с
/dev/sdb на /dev/sda. Не перепутайте диски и не обнулите разметку старого диска. Убеждаемся, что разметка на /dev/sda идентична /dev/sdb:# fdisk -lТеперь добавляем разделы нового диска в массив:
# mdadm --add /dev/md126 /dev/sda1Наблюдаем синхронизацию в режиме реального времени:
# watch cat /proc/mdstatОдин из массивов у меня был остановлен:
md127 : inactive sdb3[1](S)Не получалось к нему добавить недостающий раздел. Перед этим его пришлось запустить:
# mdadm --run /dev/md127mdadm: started array /dev/md/installrescue:43После этого благополучно добавил недостающий раздел:
# mdadm --add /dev/md127 /dev/sda3mdadm: added /dev/sda3Не знаю, с чем связано то, что иногда массивы останавливаются. Хорошо, что в данном случае это был не корневой или загрузочный раздел. Как-то раз у меня остановился корневой раздел. Пришлюсь грузиться с livecd, запускать массив и добавлять в него раздел. После этого нормально загрузилась система. Случается такое редко. Добавляет некоторую нервозность ко всему процессу замены диска. Всегда есть шанс, что понадобится livecd или доступ к консоли сервера.
После замены диска не забываем установить загрузчик на новый диск
/dev/sda:# dpkg-reconfigure grub-pcОбязательно убедитесь, что ошибок нет. Если есть, сразу их решайте, не откладывайте на потом.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#mdadm

