Если вы удалите компонентный жесткий диск из массива, он попадет в оболочку «занято» под «(initramfs)», говоря что-то вроде «не удается смонтировать корневое устройство», поскольку массив RAID1 становится «неактивным».
Его можно запустить с помощью:
(initramfs): mdadm --run /dev/md0
(initramfs): exit
после чего он загружается нормально, используя запущенный RAID1 (файловая система находится в массиве RAID1), и будет продолжать нормально загружаться, пока вы не удалите другой диск (в этом случае он будет делать то же самое).
Google выплюнул кучу сообщений об использовании UBUNTU "BOOT_DEGRADED = правда"но это не работает для ДЕБИАНА.
А также есть сообщение об использовании "md-mod.start_dirty_degraded = 1"в качестве аргумента загрузки образа ядра. Я попытался передать его в меню GRUB, но безрезультатно.
Там может быть что-то, что это объясняет, но я новичок в понимании :(
Любые идеи?
Initramfs выполняет / scripts / local-top / mdadm для обработки рейда. В этом сценарии есть утверждение
if $MDADM --assemble --scan --run --auto=yes${extra_args:+ $extra_args};
then
verbose && log_success_msg "assembled all arrays."
else
log_failure_msg "failed to assemble all arrays."
fi
В версии mdadm, поставляемой с Debian Jessie, параметр --run, похоже, игнорируется при использовании вместе с --scan. Согласно странице руководства предполагается активировать все массивы, даже если они деградировали. Но вместо этого все ухудшенные массивы помечаются как «неактивные». Если корневая файловая система находится в одном из этих неактивных массивов, процесс загрузки останавливается.
Можно изменить этот сценарий, а затем пересобрать initramfs с помощью команды update-initramfs -u
.
mdadm --run
для каждого массива индивидуально, если первая попытка не удалась.Следующие команды выполнят предыдущие шаги. Перед копированием поверх него убедитесь, что у вас еще нет файла / etc / initramfs-tools / scripts / local-top / mdadm.
cd /etc/initramfs-tools/scripts/local-top
cp /usr/share/initramfs-tools/scripts/local-top/mdadm .
patch --verbose --ignore-whitespace <<'EndOfPatch'
--- mdadm
+++ mdadm
@@ -76,7 +76,15 @@
if $MDADM --assemble --scan --run --auto=yes${extra_args:+ $extra_args}; then
verbose && log_success_msg "assembled all arrays."
else
- log_failure_msg "failed to assemble all arrays."
+ log_warning_msg "failed to assemble all arrays...attempting individual starts"
+ for dev in $(cat /proc/mdstat | grep md | cut -d ' ' -f 1); do
+ log_begin_msg "attempting mdadm --run $dev"
+ if $MDADM --run $dev; then
+ verbose && log_success_msg "started $dev"
+ else
+ log_failure_msg "failed to start $dev"
+ fi
+ done
fi
verbose && log_end_msg
EndOfPatch
update-initramfs -u
С помощью этого обновленного initramfs можно загружаться без вмешательства, когда на RAID1, содержащем корневую файловую систему, отсутствует диск.