アレイからコンポーネント HDD を削除すると、RAID1 アレイが「非アクティブ」になるため、「(initramfs)」の下の「ビジー ボックス」シェルにドロップされ、「ルート デバイスをマウントできません」と表示されます。
以下を使用して起動できます:
(initramfs): mdadm --run /dev/md0
(initramfs): exit
その後、開始した RAID1 (ファイルシステムは RAID1 アレイ上にあります) を使用して正常に起動し、別のドライブを削除するまで正常に起動し続けます (その場合もまったく同じ動作になります)。
Googleは「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 と組み合わせて使用した場合無視されるようです。マニュアル ページによると、アレイが劣化していてもすべてのアレイをアクティブ化するはずです。しかし、代わりに、劣化したアレイはすべて「非アクティブ」としてマークされます。ルート ファイル システムがこれらの非アクティブなアレイの 1 つにある場合、ブート プロセスは停止します。
このスクリプトを変更し、コマンドを使用して 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 にドライブがない場合でも、介入なしで起動できるようになります。