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

如果从阵列中删除组件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缺少驱动器时,可以在没有干预的情况下启动.

相关文章

Linux中的ARP防火墙主要用于防御ARP欺骗攻击,其效果取决于多...
insmod和modprobe加-f参数导致Invalid module format错误 这...
将ArchLinux安装到U盘 几个月前入门Arch的时候上网搜了不少安...
1、安装Apache。 1)执行如下命令,安装Apache服务及其扩展包...
一、先说一下用ansible批量采集机器信息的实现办法: 1、先把...
安装配置 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | ...