在以前的 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 阵列上时,如何启用自动引导?
提到的错误出现在 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
Run Code Online (Sandbox Code Playgroud)
为了验证我
观察控制台:从降级的raid阵列启动工作!
错误:https : //bugs.launchpad.net/ubuntu/+source/mdadm/+bug/1635049 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=784070
小智 1
看来根本原因是/usr/share/initramfs-tools/scripts/local-top/mdadm脚本缺失 - 在 Debian-8 上它包含在mdadm软件包中,但在 Ubuntu-16.04 的同一软件包中丢失了;-(
因此,在我创建了其 dirty-hack 版本并重新创建后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
Run Code Online (Sandbox Code Playgroud)
小智 0
我在 16.04 中遇到了同样的问题,简单的 raid 阵列拒绝在降级模式下激活。
这是一个简单的解决方法:
添加
睡眠 20 秒(或您喜欢的任何秒数)
添加以下内容(强制启动阵列,如果有 /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 。
| 归档时间: |
|
| 查看次数: |
11644 次 |
| 最近记录: |