Внимание! Прочитайте, пожалуйста, текст в правой колонке (внизу).
Внимание! Прочитайте, пожалуйста, текст в правой колонке (внизу). Внимание! Прочитайте, пожалуйста, текст в правой колонке (внизу). Homepage Карта сайта Версия для печати

Джентльменский набор Web-разработчика   Ларри Уолл о Perl6   Наблы Система Orphus
 

60. Тривиальное: заменяем первый (загрузочный) диск в RAID-1

[15 февраля 2012 г.] обсудить статью в форуме

Лирическое отступление 
Сегодня произошел один случай, с которым лично мне раньше не приходилось сталкиваться. Возможно, данная выжимка команд сэкономит кому-то время на поиски информации в интернете и последующее объединение советов из разных источников в набор команд.

Сервер, где работает сайт denwer.ru, располагается в датацентре ServerLoft. На нем 2 диска (/dev/sda и /dev/sdb) по 250Г, объединенные в программный RAID-1. Все настройки RAID-1 выполнялись самим ServerLoft-ом (там можно при инициализации новой машины выбирать, какую ОС ставить и какой RAID на ней должен быть с самого начала). Конфигурация разделов была следующая:

  • RAID-массив /dev/md0 — объединение /dev/sda1 и /dev/sdb1.
  • RAID-массив /dev/md1 — объединение /dev/sda3 и /dev/sdb3.
  • Разделы /dev/sda2 и /dev/sdb2 отданы под SWAP.

В один прекрасный момент диск /dev/sda (первый, с которого на самом раннем этапе загружается система) сломался — /proc/mdstat при этом выглядел примерно так:

md1 : active raid1 sda3[0](F) sdb3[2]
231787968 blocks [2/1] [_U]
resync=DELAYED

md0 : active raid1 sda1[0] sdb1[1]
97536 blocks [2/2] [UU]

По запросу в техподдержку диск заменили, однако возникло осложнение: машина не хотела загружаться даже после того, как RAID синхронизировался. Насколько я понял причину — на новом /dev/sda отсутствовал правильный загрузочный сектор.

Вот полный перечень команд, который позволил вернуть машине работоспособность.

# Вначале загружаемся в Recovery Mode из админки ServerLoft. В этом
# режиме сервер загружается с пре-инициализированного RAM-диска, и
# на него можно зайти по SSH.

# Подключаем RAID-массивы (/dev/md0 и /dev/md1), чтобы они были
# видны в Recovery Mode.
mdadm --assemble --run /dev/md0
mdadm --assemble --run /dev/md1

# Делаем новый /dev/sda идентичным по структуре /dev/sdb.
# ВНИМАНИЕ: ЗДЕСЬ КОПИРУЕМ sdb -> sda, не перепутайте!
sfdisk -d /dev/sdb | sfdisk --force /dev/sda
# Или, если диск был разбит при помощи GNU parted:
#   sgdisk -R=/dev/sda /dev/sdb

# Добавляем в RAID-массив разделы нового диска.
mdadm --manage /dev/md0 --add /dev/sda1
mdadm --manage /dev/md1 --add /dev/sda3

# Ждем, пока все отсинкается (наверное, можно было и не ждать -
# но я не проверял и честно ждал).
watch cat /proc/mdstat

# Временно подключаем диск сервера, т.к. только на нем есть grub.
mount /dev/md1 /mnt

# Теперь делает новый диск загрузочным (а заодно и старый).
# Без этого ничего не загружалось.
/mnt/usr/sbin/grub
grub> root (hd0,0)
grub> setup (hd0)
grub> root (hd1,0)
grub> setup (hd1)
grub> quit

# Или, если у вас более новая версия ОС:
#   mount -t none -o bind /dev /mnt/dev
#   mount -t proc -o bind /proc /mnt/pro/perlcomment
#   mount -t sysfs -o bind /sys /mnt/sys
#   chroot /mnt
#   grub-install /dev/sda
#   grub-install /dev/sdb
#   exit

# Больше нам диск не потребуется.
umount /mnt

# В конце - выключаем Recovery Mode в админке ServerLoft.

После данной последовательности команд сервер успешно загрузился.

Чайник 

Нужно заметить, что если бы заменяли второй диск (/dev/sdb), а не первый, то никаких проблем не возникло бы — и это подтверждается моим опытом. Сложность ситуации (если это можно назвать сложностью) была именно в сбойном первом, загрузочном диске.

обсудить статью в форуме

 
Рекламный блок
   

Важное объявление:
    автор категорически против копирования и распространения в Интернете всех статей «Куроводства» с возрастом, меньшим 6 месяцев. Печальный опыт «расползания» чрезвычайно устаревших ошибочных версий статьи про Apache действительно объясняет такое решение.

Орфография на «Куроводстве»:
    если вы заметили орфографическую, стилистическую или другую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Выделенный текст будет немедленно отослан вебмастеру, а Вы даже ничего и не заметите — настолько быстро все произойдет.

На заметку:
    если вы уже вскипели насчет дизайна этой страницы, то присмотритесь повнимательнее к названию, почитайте FAQ, сходите по лебедевским местам, как это уже предлагалось выше. Можно ли считать пародию плагиатом? Надеюсь, что нет.

Параметры этой страницы
   
GZip

Ссылки от спонсоров
    Совсем недорого новости экономики для всех желающих. Срочно.


Дмитрий Котеров | 15 февраля 2012 г. ©1999-2016 | Генеральный спонсор: Хостинг «Джино» | Контакт Вернуться к оглавлению