Восстановление программного RAID1 в CentOS

В случае, если после смерти и замены одного из винчестеров в 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

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

This entry was posted in Разное and tagged . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>