RAID1アレイが「非アクティブ」になると、アレイからコンポーネントHDDを削除すると、「(initramfs)」の下の「ビジーボックス」シェルにドロップされ、「ルートデバイスをマウントできません」と同様のメッセージが表示されます。
それを使用してそれを開始することが可能です:
(initramfs): mdadm --run /dev/md0
(initramfs): exit
その後、起動したRAID1(ファイルシステムはRAID1アレイ上にあります)を使用して通常どおりに起動し、別のドライブを削除するまで(通常はまったく同じように)正常に起動し続けます。
グーグルは「BOOT_DEGRADED = true」を使用してUBUNTUに関するたくさんの投稿を吐き出しましたが、それはDEBIANでは機能しません。
カーネルイメージへのブート引数として「md-mod.start_dirty_degraded = 1」の使用に関する投稿 もあります。私はそれをGRUBメニューオプションで渡してみましたが、役に立ちませんでした。
それを説明する何か があるかもしれませんが、私は理解するのが初心者です:(
何か案は?
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
を実行するために、いくつかの追加の行でスクリプトにパッチを適用します。次のコマンドは、前の手順を実行します。/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にドライブがない場合でも、介入なしで起動できます。