среда, 30 января 2013 г.

Не загружался сервер с программным RAID1 на MD

Вчера ночью на одном из серверов вылетел жесткий диск из программного RAID1. Один из вариантов решения проблемы - программно отключить сбойный диск и затем вернуть его обратно, запустив поиск на SATA шине. Я уже как-то описывал этот способ тут.

Недостаток этого способа в том, что не всегда удается надолго вернуть в строй диск подобным способом. Более надежным будет отключить питание от диска и затем подключить его обратно. Поскольку у того сервера нет hot-swap корзины и была возможность отключить сервер, то я выключил и включил сервер (просто перезагрузить или нажать reset может быть недостаточно).

Однако после меню grub'а не последовала загрузка системы, а вместо этого меню ждала ошибка вида VolGroup00/swap not found. Через несколько секунд вывалилось приглашение initramfs и появилась возможность посмотреть причину сбоя.

Поскольку VolGroup00/swap - логический том поверх RAID1В /proc/mdstat не было ни одного массива (на сервере их два: md0 и md1). Смотрю в /etc/mdadm/mdadm.conf - нужные массивы на месте. Пробую запустить их вручную:

initramfs> mdadm -A /dev/md0
initramfs> mdadm -A /dev/md1

После этого нужные массивы появились в /proc/mdstat. Последним штрихом была активация томов LVM2

initramfs> vgchange -ay

Далее выхожу из initramfs (Ctrl+D) и система продолжает нормальную загрузку. После добавления сбойного диска обратно в массив и окончания ребилда, пробую снова перезагрузить сервер и спотыкаюсь о ту же ошибку.

После перепроверки всех настроек, пересборки initramfs я решил сравнить вывод mdadm --detail --scan и соответствующих секций в /etc/mdadm/mdadm.conf. И вот тут нашлось различие:

# mdadm --detail --scan
ARRAY /dev/md0 metadata=1.2 name=finnix:0 UUID=d5824c5a:ecf39d9a:89c3b877:ec43e0c0
ARRAY /dev/md1 metadata=1.2 name=finnix:1 UUID=4c287c75:edef1139:07ca6e74:b0fcb0e6

# grep ^ARRAY /etc/mdadm/mdadm.conf
ARRAY /dev/md0 metadata=1.2 name=0 UUID=d5824c5a:ecf39d9a:89c3b877:ec43e0c0
ARRAY /dev/md1 metadata=1.2 name=1 UUID=4c287c75:edef1139:07ca6e74:b0fcb0e6

Различие в значении параметров name=. Заменяю описание актуальным и пересобираю initramfs.

# sed -i -e '/^ARRAY/d' /etc/mdadm/mdadm.conf
# mdadm --detail --scan >> /etc/mdadm/mdadm.conf
# update-initramfs -u

После всех манипуляция перезагрузка прошла без проблем.

Комментариев нет:

Отправить комментарий