![如何在 Debian 8.0.0 启动时自动启动降级软件 RAID1?](https://linux22.com/image/657439/%E5%A6%82%E4%BD%95%E5%9C%A8%20Debian%208.0.0%20%E5%90%AF%E5%8A%A8%E6%97%B6%E8%87%AA%E5%8A%A8%E5%90%AF%E5%8A%A8%E9%99%8D%E7%BA%A7%E8%BD%AF%E4%BB%B6%20RAID1%EF%BC%9F.png)
如果你从阵列中移除一个组件 HDD,它会进入“(initramfs)”下的“忙框”shell,并显示类似于“无法挂载根设备”的内容,因为 RAID1 阵列变为“非活动”状态。
可以使用以下命令启动它:
(initramfs): mdadm --run /dev/md0
(initramfs): exit
之后,它使用启动的 RAID1(文件系统位于 RAID1 阵列上)正常启动,并且将继续正常启动,直到您移除另一个驱动器(在这种情况下它将执行完全相同的操作)。
谷歌发布了一堆关于 UBUNTU 的帖子,使用“BOOT_DEGRADED=true“但这对于 DEBIAN 不起作用。
还有关于使用“md-mod.start_dirty_degraded=1“作为内核映像的启动参数。我尝试将其传递到 GRUB 菜单选项中,但没有成功。
可能会有可以解释的事情,但我还是个新手,不太明白 :(
有任何想法吗?
答案1
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 版本,--run 参数在与 --scan 结合使用时似乎会被忽略。根据手册页,它应该激活所有阵列,即使它们已降级。但实际上,任何已降级的阵列都标记为“非活动”。如果根文件系统位于其中一个非活动阵列上,则启动过程将停止。
可以修改该脚本,然后使用命令重建 initramfs update-initramfs -u
。
- 将脚本复制到本地覆盖目录
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 缺少驱动器时,可以无需干预进行启动。