如何在16.04LTS中启用降级的RAID1引导?


14

在以前的ubuntu版本中,添加BOOT_DEGRADED=true/etc/initramfs-tools/conf.d/mdadm允许系统在根文件系统位于降级阵列上时自动启动。在16.04 LTS中似乎不再起作用。

该文档(https://help.ubuntu.com/lts/serverguide/advanced-installation.html)似乎已经过时;sudo dpkg-reconfigure mdadm不再要求允许降级的启动,并且bootdegraded=true内核参数也似乎不再起作用。当根文件系统阵列降级时,系统始终启动到initramfs中。从那里开始,mdadm -IRs允许系统启动。

当根文件系统位于16.04LTS中降级的RAID1阵列上时,如何启用自动引导?


实际的配置错误似乎已修复,但根据bugs.launchpad.net/serverguide/+bug/1310162,文档仍然不正确据我所知,到目前为止,不再需要额外的配置即可使用降级RAID进行启动(18.04)。
迭戈

Answers:


9

提到的错误出现在mdadm 3.3-2ubuntu7中,并已在3.4-2中修复。

yakkety(16.10)3.4-4的最新mdadm版本已包含此修复程序,可用于16.10,但尚未(尚未?)适用于16.04LTS。

因此,我手动升级了16.04LTS的mdadm:

wget http://launchpadlibrarian.net/275652884/mdadm_3.4-4_amd64.deb
sudo dpkg -i mdadm_3.4-4_amd64.deb

验证我

  • 关闭电脑
  • 拔出其中一张磁盘/ ssd
  • 打开电脑

观察控制台:从降级的RAID阵列启动有效

错误:https//bugs.launchpad.net/ubuntu/+source/mdadm/+bug/1635049 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=784070


您刚刚解决了我1周的搜索工作,谢谢。
Fahad Ahammed'1

该错误是令人沮丧的阅读。
凯文·利达

1

似乎根本原因是/usr/share/initramfs-tools/scripts/local-top/mdadm脚本缺失-在Debian-8上,它包含在mdadm软件包中,但在Ubuntu-16.04的同一软件包中丢失了;-(

因此,在我创建了肮脏的版本并重新创建之后initramfs,我的测试Ubuntu-16.04 LTS服务器能够使用RAID1阵列中仅有的第二个HDD完全启动。

#!/bin/sh
# 2016-07-13 andrey@kopeyko.ru - missed mdadm script for Ubuntu-16.04
# see debian8_host:/usr/share/initramfs-tools/scripts/local-top/mdadm for full version

MDADM=/sbin/mdadm 
. /scripts/functions

echo "===>"
cat /proc/mdstat
echo "===>"
log_begin_msg "Assembling all MD arrays"
if $MDADM --assemble --scan --run --auto=yes
then
  log_success_msg "assembled all arrays."
else
  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
      log_success_msg "started $dev"
    else
      log_failure_msg "failed to start $dev"
    fi
  done
fi
log_end_msg
echo "===>"
cat /proc/mdstat
echo "===>"

sleep 5

# TODO: run mdadm --readwrite /dev/mdN
# if array is in 'auto-read-only' mode

1
您放入此脚本/usr/share/initramfs-tools/scripts/local-top/mdadm,然后使用进行安装update-initramfs -k all -u。但是,它将生成警告。禁用行case ${1:-} in prereqs) echo "multipath"; exit 0;; esac前的警告. /scripts/functions
凯文·莱达

是的,它会生成警告-但是此警告是无害的。我认为黑客入侵functions不是一个好主意,因为可能会有副作用。因此,我只是忽略了此警告。
安德烈·科佩科

0

我在16.04中遇到了同样的问题,简单的raid数组拒绝以降级模式激活。

这是一个简单的解决方法:

  1. 创建新文件:/ etc / initramfs-tools / scripts / init-premount / delay_mounting (记住要设置+ x)

睡20(或您喜欢的任何秒数)

  1. 创建新文件:/ etc / initramfs-tools / scripts / local-top / mdadm(请记住要设置+ x)

添加以下内容(强制启动数组,如果您具有/ dev / md0,/ dev / md1和/ dev / md2)

mdadm --run / dev / md0
mdadm --run / dev / md1
mdadm --run / dev / md2

然后

update-initramfs -k all -u,则一切就绪

请注意,对于14.04,仅需要1),但是同时执行这两个步骤并没有什么不利。除了您可能会看到一些警告消息,例如:

mdadm:无法运行阵列/ dev / md0:设备或资源繁忙

这是无害的,因为它只说因为/ dev / md0是活动的,所以您可以肯定地编写更聪明的脚本,仅在需要时执行--run。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.