如何在启动时在Debian 8.0.0下自动启动Degraded Software RAID1?

如果您从arrays中移除组件硬盘,则会在“(initramfs)”下面放入一个“busy box”shell,说明类似于“无法装入根设备”的内容,因为RAID1arrays变为“非活动”。

可以使用以下命令启动它:

(initramfs): mdadm --run /dev/md0 (initramfs): exit 

之后,它通常使用启动的RAID1(文件系统位于RAID1arrays上)启动,并且将保持正常启动,直到您移除另一个驱动器(在这种情况下,它将完全相同)。

Google使用“ BOOT_DEGRADED = true ”吐出一大堆关于UBUNTU的post,但是这对DEBIAN不起作用。

还有一篇关于使用“ md-mod.start_dirty_degraded = 1 ”作为内核映像的引导参数的文章 。 我曾尝试将它传递给GRUB菜单选项,但没有用。

有可能是解释它的东西 ,但我是一个新手理解:(

有任何想法吗?

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参数似乎被忽略。 根据手册页,它应该激活所有arrays,即使它们被降级。 但相反,任何降级的arrays都被标记为“无效”。 如果根文件系统位于其中一个非活动arrays上,则启动进程将暂停。

可以修改此脚本,然后使用update-initramfs -u命令重buildupdate-initramfs -u

  1. 将脚本复制到本地覆盖目录
  2. 如果第一次尝试失败,则使用一些其他行修补脚本以对每个arrays单独运行mdadm --run
  3. 更新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缺less一个驱动器时,可以在无需干预的情况下启动。