起動時に別のmdadm配列を使用するmdadm配列を自動的にアセンブルします。

起動時に別のmdadm配列を使用するmdadm配列を自動的にアセンブルします。

私のシステムには2つのmdadm配列があります。

alex@fileserver:~$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid5 sdc1[0] md0[3] sde1[1]
      7759197184 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

md0 : active raid0 sdd1[1] sdb1[0]
      3907019776 blocks super 1.2 512k chunks

unused devices: <none>

詳しく見ると、配列でmd1使用されていることがわかります。md0(4TBディスク2個と2TBディスク2個がありますが、これが連携する方法です...)

これは、起動時を除いて、うまく機能します。私のものにもmdadm.conf次の行があります。

ARRAY /dev/md/0 metadata=1.2 UUID=ba271258:3f18f660:1d5d19aa:2bd0d8e3 name=fileserver:0
ARRAY /dev/md/1 metadata=1.2 UUID=262a6823:3fafb521:75e315ab:f2de4329 name=fileserver:1

それはよく結合されましたが、md0その配列の中で迷子md1になり、md0最終的にはスペアのsdc1ようにそこに座るようになりました。sde1mdadmが配列を並列に組み立てようとしていると思いますか?

起動後にこれを行うと、mdadm --stop /dev/md1アレイmdadm --assemble --scanが正しく結合されます。

私のシナリオは標準ではないかもしれませんが、この問題に対する簡単な解決策はありますか?たとえば、mdadm.confにこれを知らせる方法は何md1ですかmd0? mdadmの後に停止/アセンブリコマンドを実行する小さなinitスクリプトをいつでも作成できますが、適切な解決策が存在する場合は、これらのハッキングを避けることをお勧めします。特に、md1システムサービスを適切に操作するための存在とインストールに依存関係があるためです。

答え1

これは12.04(カーネル〜3.2.0.40)に表示され、16.04で修正されるまで存在していたUbuntuのバグです。 Debian バージョンでは同じ問題は発生しません。

Ubuntuでの会話バグトラッカー:

(タラントがユーザー):

[Debian] Wheezyはmdのudevを無効にし、rcスクリプトを使用して起動時にアセンブルするため、起動後にアレイを自動的にアセンブルしません。 Trustyは起動中および起動後に物理デバイスを組み立てますが、/dev/md0などの仮想デバイスは無視しているようです。

Tarantogaはudevルールファイルに1行を追加して簡単な解決策を見つけました。

/etc/udev/rules.d/85-mdadm.rules:

SUBSYSTEM=="block", ACTION=="add|change", ENV{ID_FS_TYPE}=="linux_raid_member", DEVPATH=="*/virtual/*", RUN+="/sbin/mdadm --incremental $tempnode"

このソリューションは私にとって効果的です。 2つの縞模様のミラーがありますが、起動時に縞模様のみが組み立てられます。このルールを適用すると、すべてが正しく組み立てられます。

(はい、ストライプミラーがストライプミラーよりも優れている特定のユースケースがあります:-))

関連情報