Назад | Перейти на главную страницу

Не могу загрузить недавно созданный программный рейд mdadm в Debian linux squeeze

Здравствуйте, у меня очень странная проблема с созданием swraid в Debian Squeeze Linux. Я начал создавать RAID1 из существующей стандартной установки Debian на одном диске. Итак, я купил новый диск и начал следовать этому руководству:
http://www.howtoforge.com/how-to-set-up-software-raid1-on-a-running-system-incl-grub2-configuration-debian-squeeze

Все прошло нормально, я создал начальный рейд с нового диска. Затем я успешно загрузил этот новый диск и добавил свой старый в этот массив. Старый диск успешно синхронизирован с рейдом. И после всех настроек я был готов к последней перезагрузке в мой новый массив Raid1.
Но внезапно дисковый массив требует загрузки. Grub запускается очень долго (выводит сообщения об ошибке чтения fd0). Когда я выбираю из меню, debian начинает загружаться очень медленно и останавливается с сообщением, что md0 не найден. В оболочке grub я обнаружил, что есть только / dev / md, но нет / dev / md0 или / dev / md1.

После многих часов испытаний мне наконец удалось заставить Raid работать. Используя ugky hack.

Пришлось добавить:

mdadm -A --auto=md /dev/md0

В нужном месте в:

/usr/share/initramfs-tools/init

и пересобрать initrd.img моего ядра

Эта команда запускает мой Raid и создает / dev / md0 и / dev / md1.

Но это тихий уродливый хак, и я не думаю, что он очень стабильный. Также он может сломаться в будущем с некоторым обновлением. Итак, мой вопрос: зачем мне это изменение в сценарии инициализации? Что-то не так с моим массивом? Как это исправить?

Спасибо за все подсказки. Я в полном отчаянии, теперь это заняло у меня всю ночь (12 часов). к

Итак, я нашел решение моей проблемы с загрузкой с mdadm Raid1. Мне очень стыдно, что мне потребовалось столько времени, чтобы понять это, потому что это довольно простая ошибка.

В /etc/default/mdadm был раздел:

# INITRDSTART:
#   list of arrays (or 'all') to start automatically when the initial ramdisk
#   loads. This list *must* include the array holding your root filesystem. Use
#   'none' to prevent any array from being started from the initial ramdisk.
INITRDSTART='none'

Мне пришлось изменить его на:

INITRDSTART='all'

А затем я мог удалить свою настраиваемую команду из / usr / share / initramfs-tools / init и Linux без проблем загрузился из моего рейда 1.

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

Другой трюк, который вы можете использовать, заключается в том, что при запуске большинство процессов инициализации монтируют корневой раздел только для чтения, поэтому вы можете указать его на / dev / sda1 или любой другой указатель, связанный с одним из подходящих разделов для загрузки, но когда вы поворачиваете ваш корень, укажите его на устройство mdadm. Вот как я поступил, когда у меня был набор дисков с программным рейдом.