LINUX.ORG.RU

История изменений

Исправление firkax, (текущая версия) :

Так, ну эта команда работает значит (и можешь проверить - массив теперь можно монтировать и делать с ним что угодно, больше mdadm запускать не требуется, надпись про read-only исчезнет сама), а её initramfs должен запускать перед тем как сказать про таймаут. Давай узнаем почему он её не делает.

Хотя для начала ещё одна проверка. Ребутнись ещё раз в emergency чтобы массив опять был inactive (думаю достаточно просто reboot сделать) и введи там команду

echo mdadm --run /dev/md?*
(посмотри что напишет)

а потом

mdadm --run /dev/md?*
после неё тоже всё починится? Если да - то см. ниже

-----------------------------------------------------

Запусти нормально систему (с двумя дисками).

Файлы есть такие?

/etc/initramfs-tools/scripts/local-block/mdadm
/usr/share/initramfs-tools/scripts/local-block/mdadm

скорее всего первого нет, а второй есть (если не так - то что дальше написано не делай а найди отличия)

Если первого нет, а второй есть - скопируй второй в первый, пролистай в конец, там будут нужные строки:

mdadm -q --assemble --scan --no-degraded || true

и чуть ниже

mdadm -q --run /dev/md?*

Первая отвечает за первоначальный старт полных массивов (когда все диски на месте), вторая - спустя сколько-то там секунд (вроде не меньше 30, кстати у тебя в начале работы системы, ещё до основного запуска, при вытащеном диске появляется эта задержка?) - стартует оставшиеся с теми дисками что удалось найти.

Допиши туда перед и после каждого отладочные echo и убери -q, как-то так:

echo begin: mdadm --assemble --scan --no-degraded
mdadm --assemble --scan --no-degraded || true
echo end: mdadm --assemble --scan --no-degraded

и чуть ниже

echo begin: mdadm --run /dev/md?*
mdadm --run /dev/md?*
echo end: mdadm --run /dev/md?*

А ещё чуть выше там есть такая строка:

echo $COUNT > /run/count.mdadm.initrd

добавь рядом ещё одну:

echo mdadm count = $COUNT

Напомню - все правки - в копии файла в /etc, а не в оригинале в /usr/share

После чего пересобери initramfs, ребутнись без второго диска и посмотри что он напишет. Надеюсь эти надписи там нормально повисеть успеют перед тем как их затрёт дальнейший процесс.

Исходная версия firkax, :

Так, ну эта команда работает значит (и можешь проверить - массив теперь можно монтировать и делать с ним что угодно, больше mdadm запускать не требуется, надпись про read-only исчезнет сама), а её initramfs должен запускать перед тем как сказать про таймаут. Давай узнаем почему он её не делает.

Хотя для начала ещё одна проверка. Ребутнись ещё раз в emergency чтобы массив опять был inactive (думаю достаточно просто reboot сделать) и введи там команду

echo mdadm --run /dev/md?*
(посмотри что напишет)

а потом

mdadm --run /dev/md?*
после неё тоже всё починится? Если да - то см. ниже

----------------------------------------------------- Запусти нормально систему (с двумя дисками).

Файлы есть такие?

/etc/initramfs-tools/scripts/local-block/mdadm
/usr/share/initramfs-tools/scripts/local-block/mdadm

скорее всего первого нет, а второй есть (если не так - то что дальше написано не делай а найди отличия)

Если первого нет, а второй есть - скопируй второй в первый, пролистай в конец, там будут нужные строки:

mdadm -q --assemble --scan --no-degraded || true

и чуть ниже

mdadm -q --run /dev/md?*

Первая отвечает за первоначальный старт полных массивов (когда все диски на месте), вторая - спустя сколько-то там секунд (вроде не меньше 30, кстати у тебя в начале работы системы, ещё до основного запуска, при вытащеном диске появляется эта задержка?) - стартует оставшиеся с теми дисками что удалось найти.

Допиши туда перед и после каждого отладочные echo и убери -q, как-то так:

echo begin: mdadm --assemble --scan --no-degraded
mdadm --assemble --scan --no-degraded || true
echo end: mdadm --assemble --scan --no-degraded

и чуть ниже

echo begin: mdadm --run /dev/md?*
mdadm --run /dev/md?*
echo end: mdadm --run /dev/md?*

А ещё чуть выше там есть такая строка:

echo $COUNT > /run/count.mdadm.initrd

добавь рядом ещё одну:

echo mdadm count = $COUNT

Напомню - все правки - в копии файла в /etc, а не в оригинале в /usr/share

После чего пересобери initramfs, ребутнись без второго диска и посмотри что он напишет. Надеюсь эти надписи там нормально повисеть успеют перед тем как их затрёт дальнейший процесс.