以前のバージョンの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
私を確認するには
コンソールの観察:劣化したRAIDアレイからのブートは機能します!
バグ: https://bugs.launchpad.net/ubuntu/+source/mdadm/+bug/1635049https://bugs.debian.org/cgi-bin/bugreport。 cgi?bug = 78407
根本的な原因は/usr/share/initramfs-tools/scripts/local-top/mdadm
スクリプトがないことです。Debian-8ではmdadm
パッケージに含まれていますが、Ubuntu-16.04の同じパッケージでは失われました;-(
そのため、ダーティハックバージョンを作成してinitramfs
を再作成した後、テスト用のUbuntu-16.04 LTSサーバーは、RAID1アレイの2番目のHDDのみを使用して完全に起動できました。
#!/bin/sh
# 2016-07-13 [email protected] - 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
16.04でも同じ問題が発生しました。レイドアレイは、劣化モードでアクティブになるのを単純に拒否しました。
ここに簡単な回避策があります:
追加
sleep 2(または好きな秒数)
以下を追加します(/ dev/md0、/ dev/md1、および/ dev/md2がある場合、強制的に配列を開始します)
mdadm --run/dev/md0
mdadm --run/dev/md1
mdadm --run/dev/md2
それから
pdate-initramfs -k all -の場合、すべて設定されています。
14.04には1)のみが必要ですが、両方を実行しても害はないことに注意してください。以下のような警告メッセージが表示される場合があります。
mdadm:アレイ/ dev/md0の実行に失敗しました:デバイスまたはリソースがビジーです
これは無害です。/dev/md0がアクティブであるため、必要なときにのみ--runを実行するだけで、よりスマートなスクリプトを確実に記述できるからです。
ここの他の回答には問題を解決するための回避策がありますが、これはUbuntuのバグであり、修正する必要があります。バグは次のとおりです。 https://bugs.launchpad.net/ubuntu/+source/mdadm/+bug/1635049
以前に修正されました: https://wiki.ubuntu.com/ReliableRaid