В случае, если после смерти и замены одного из винчестеров в RAID1 система внезапно отказывается загружаться и зависает на “Verifying DMI pool data… Update success!”, либо вовсе пишет “Hard drive error”, то данная краткая инструкция по восстановлению поможет вернуть сервер к жизни.
Необходимые ингредиенты:
1. Загрузочная флешка или CD с дистрибутивом CentOS-minimal (или аналог);
2. Сервер с одним работоспособным и вторым сломанным винчестерами;
3. Новый винчестер.
Итак, заменяем сломанный диск на новый и загружаемся с флешки или CD, при загрузке выбирая режим восстановления (Rescue Mode). Соглашаемся со всем, что нам предложит автоматизированный загрузчик – к сожалению, разделов установленной системы на дисках сам он не найдет. Выходим в shell.
На этот момент загруженной аварийной системе ничего не известно о существовании каких-либо RAID-массивов. Создаем mdadm.conf следующей командой:
# mdadm --examine --scan > /etc/mdadm.conf
Проверьте его содержимое, в нем должны прописаться существовавшие на старом диске массивы /dev/md0, …, /dev/mdN.
Далее собираем массивы:
# mdadm --assemble --scan /dev/md0 # mdadm --assemble --scan /dev/md1 ... # mdadm --assemble --scan /dev/mdN
Можно убедиться в их состоянии при помощи cat /proc/mdstat.
Теперь необходимо добавить к массивам новый диск, но сначала нам необходимо создать на нем копию таблицы разделов, совпадающую с первым диском. Это можно сделать либо вручную, либо если второй диск аппаратно полностью аналогичен первому, то можно воспользоваться командой sfdisk:
# sfdisk -d /dev/sdb | sfdisk /dev/sdc
В данном примере таблица разделов с /dev/sdb (существующий диск) копируется в /dev/sdc (новый диск). Важно не ошибиться с именами винчестеров, иначе можно потерять данные. В отдельных случаях sfdisk не нравятся существующие разделы, и тогда он может отказаться копировать их. Данная проблема решается ключом –force:
# sfdisk -d /dev/sdb | sfdisk --force /dev/sdc
С этим он не сможет поспорить.
Далее добавляем в RAID-массивы разделы нового диска:
# mdadm /dev/md0 --add /dev/sdc1 # mdadm /dev/md1 --add /dev/sdc2 ... # mdadm /dev/mdN --add /dev/sdcK
Соотнести, какой раздел диска к какому массиву должен относиться, можно глядя на /proc/mdstat.
После выполнения этих команд сразу же начнется процесс пересборки массива. Отследить прогресс выполнения можно опять же при помощи cat /proc/mdstat.
По завершении пересборки массивов можно отправлять систему в перезагрузку – теперь запуск с винчестеров должен происходить успешно.
PS: В случае, если система при отмирании одного из винчестеров осталась работоспособной, то можно обойтись и без загрузочного диска восстановления. В этом случае необходимо удалить изо всех RAID-массивов все разделы дефективного диска, что реализуется командами вида:
# mdadm /dev/md0 --fail /dev/sdc1 --remove /dev/sdc1
Затем необходимо подключить новый диск и следовать описанной ранее инструкции, начиная с создания на новом диске копии таблицы разделов.