Внимание! Прочитайте, пожалуйста, текст в правой колонке (внизу).
Внимание! Прочитайте, пожалуйста, текст в правой колонке (внизу). Внимание! Прочитайте, пожалуйста, текст в правой колонке (внизу). 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-2017 | Генеральный спонсор: Хостинг «Джино» | Контакт Вернуться к оглавлению