如果从阵列中删除组件HDD,它将进入“忙碌的盒子”
shell,在“(initramfs)”下面说类似于“无法挂载根设备”,因为RAID1阵列变为“非活动”.
可以使用以下命令启动它:
(initramfs): mdadm --run /dev/md0 (initramfs): exit
之后,它通常使用已启动的RAID1(文件系统在RAID1阵列上)启动,并将继续正常启动,直到您删除另一个驱动器(在这种情况下,它将完全相同).
Google使用“BOOT_DEGRADED = true”吐出了大量关于UBUNTU的帖子,但这对DEBIAN不起作用.
还有a post about using “md-mod.start_dirty_degraded=1” as a boot argument to the kernel image.我试过在GRUB菜单选项中传递它,但没有用.
可能有something that explains it,但我是新手了解:(
有任何想法吗?
解决方法
initramfs执行/ scripts / local-top / mdadm来处理raid.在该脚本中是声明
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
使用Debian Jessie的mdadm版本,与–scan一起使用时,– run参数似乎被忽略.根据手册页,它应该激活所有阵列,即使它们已降级.但相反,任何降级的阵列都标记为“非活动”.如果根文件系统位于其中一个非活动阵列上,则会暂停引导过程.
可以修改此脚本,然后使用命令update-initramfs -u重建initramfs.
>将脚本复制到本地覆盖目录
>如果第一次尝试失败,请使用一些额外的行修补脚本以在每个阵列上单独运行mdadm –run.
>更新initramfs.
以下命令将执行前面的步骤.在复制之前,请确认您还没有/ 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缺少驱动器时,可以在没有干预的情况下启动.