LINUX.ORG.RU
решено ФорумAdmin

Загрузка системы с raid1 mdadm.

 mdadm grub


1

3

Дано: CentOS 5.6, корневая фс на raid1 через mdadm. Требуется: заменить оба диска на большие. На материнской плате всего 2 разъема sata. Поэтому решено было сделать так: вытащить на ходу хард, вставить другой, создать разделы, синхронизировать рейд. Повторить для второго харда. Вытащил один хард, оказалось, что это был sda. Проверил cat /proc/mdstat - показывает, что один диск failed. Вставил новый. Перед последующими действиями решил перезагрузиться. Система с одним родным и одним не родным диском не стартует вообще. Втыкаем старый диск - стартует, но /proc/mdstat показывает теперь, что в рейде только sdb (я так понимаю, нарушилась целостность, нужно пересобрать массив?). Лезу в /boot, вижу grub (старый). Смотрю в grub.conf, написано что-то типа root hd(0,0) kernel /boot/vmlinuz... ro root=/dev/md0

Я решил, что старта нет, потому, что указан первый хард, а я вставил новый чистый хард на это место, поэтому там пусто и успокоился. Сделал grub-install /dev/sda, cоздал разделы, добавил их в рейд, пошла синхронизация. На всякий случай я забрал с собой вытащенный хард и уехал, завтра предстоит ставить второй новый хард. Дело в том, что я не уверен, стартанет ли теперь сервер после перезагрузки. Воткнув вытащенный хард в другой комп, я вижу ошибку grub hard disk error почему она возникает, я не понимаю. Сегодня нужно разобраться в проблеме, чтобы завтра не уронить сервер. Доступ к харду есть, я могу, загрузившись с livecd, смонтировать корневую фс, собрав массив из одного диска.


Загрузился с livecd с тем самым вытащенным из сервера хардом, собрал рэйд. Во-первых, сменил количество девайсов на 1 вместо 2, во-вторых, установил grub вот так:

# grub
grub> root (hd0,0)
root (hd0,0)
grub> setup (hd0)
Теперь новые дрова. Появляется меню grub, видит ядро centos, начинает грузить, вываливает kernel panic
Trying to resume from LABEL=SWAP-sdb2
Unable to access resume device (LABEL=SWAP-sdb2)2
....
Kernel panic - not syncing: Attempted to kill init!
На каждом харде по 3 раздела
sda1 + sdb1 = md0 = /
sda2, sdb2 = swap
sda3 + sdb3 = md1 = /home
sda1+sdb1 = md0
SWAP-sdb2 - метка свопа на недостающем диске, откуда он его хочет взять, ума не приложу.

Необходим алгоритм работы в случае, если завтра сервер откажется грузится с рейда.

infd
() автор топика
Ответ на: комментарий от infd

Почитал здесь, решил добавить своп с такой меткой. вставил второй жесткий диск, создал своп, при попытке загрузки тоже самое. Я понял, это не смертельно и ОС должна грузиться, kernel panic возникает на другом месте. Скопипастить не могу, напишу предполагаемую причину.

Creating root device.
Mounting root filesystem.
EXT3-fs: unable to read superblock
mount: error mounting /dev/root on /sysroot as ext3: invalid argument.
При этом фс рабочая, с livecd я её смонтировать могу.

infd
() автор топика

Система с одним родным и одним не родным диском не стартует вообще

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

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Может и так. Загрузился с livecd, собрал массивы, сделал chroot в систему, пересоздал mdadm.conf через mdadm --examine --scan, пересоздал initrd, на всякий случай сделал fsck раздела, опять не грузится (та же ошибка). Ехать не буду, пока не разберусь, а сделать это нужно в кратчайшие сроки.

infd
() автор топика
Ответ на: комментарий от infd

Полдня бьюсь, опять ничего не получается. Решил убрать / с рэйда. Вставил usb-диск, создал раздел ext3, примонтировал старый диск, сделал дамп на usb. Cделал chroot на usb, установил grub, исправил fstab, перезагружаюсь - с usb грузится. Форматнул sda1 в ext3, слил обратно дамп с usb, установил grub, не грузится.

Could not find filesystem '/dev/root'

При загрузке с usb после waiting for driver initialization вижу сообщения, что найдено usb оборудование, модель харда и что он определил его, как sda. При загрузке с sata не вижу ничего. Походу ядро не определяет хард. Что делать, ума не приложу.

infd
() автор топика
Ответ на: комментарий от infd

Догадался, что нужно включить какой-нибудь модуль в initrd. Просмотрел загруженные модули на livecd, обратил внимание на sata_via. Перебрал initrd с этим модулем, стартануло. На той машине, если не найдёт изкоробки, буду искать так же. Я думаю, дальше справлюсь.

infd
() автор топика
Ответ на: комментарий от infd

Возможно, все проблемы на локальном компе и были из-за того, что в initrd и ядре изначально не было модуля под другое железо.

infd
() автор топика

Алгоритм довольно прост: уйти в singlemod, пометить второй диск как failed, вынуть второй диск, вставить новый диск, сделать на нём нужные массивы с raid1 и первым диском missing, скопировать данные со старого однокрылого raid1 на новый однокрылый raid1, поставить загрузчик на второй диск (тут на всякий пожарный надо иметь с собой загрузочный cd/dvd, если нет ip-kvm), загрузиться со второго диска, вынуть первый старый диск, вставить вместо него первый новый диск, добавить его в новое зеркало, поставить загрузчик на первый новый диск, (опционально, но крайне желательно) дождаться полной синхронизации, перегрузиться для проверки.

Deleted
()

Можно ещё, воткнув временно вместо второго диска бэкапный и сделав резервную копию, просто переехать на диски большего размера и сделать grow необходимым увеличившимся массивам.

Deleted
()
Ответ на: комментарий от Deleted

Все уже сделано. Примерно так и хотел делать. Меня смутило, что ни один из дисков рэйда поодиночке не грузился. Один я вытащил, увез с собой и все вышеописанные эксперименты проводил с ним на другом железе, а в дополнение к первому диску воткнул новый и добавил его в рейд. Приехав, увидел, что корневая фс не может синхронизироваться, сыпятся ошибки io (похоже, бэды), /home синхронизировался. Я просто форматнул корневой раздел на новом харде, сделал туда дамп того, что у меня получилось после экспериментов, вытащил старый винт, добавил второй новый, увеличил размер рейда, поставил онлайн-увеличение ext3.

infd
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.