web-dev-qa-db-ja.com

マルチディスクmdadmRAID1のどのディスクが再構築をトリガーしたかを確認するにはどうすればよいですか?

いくつかのRAID1ミラーにmdadmを使用しています。 md7は、3つの回転ディスク(すべて書き込みフラグが付いています)とSSDで構成されるNウェイミラーです。

md7 : active raid1 sdd1[0] sde5[3](W) sdf5[4](W) sdc1[1](W)
      234428416 blocks [4/4] [UUUU]

md6 : active raid1 sdf6[0] sde6[1]
      1220988096 blocks [2/2] [UU]

md2 : active raid1 sdb6[0] sda6[1]
      282229824 blocks [2/2] [UU]

md1 : active raid1 sdb2[0] sda2[1]
      19534976 blocks [2/2] [UU]

md0 : active raid1 sdb1[0] sda1[1]
      192640 blocks [2/2] [UU]

システム全体が過去2週間に3回ハングし、ハードリセットが必要です。とりあえず、システムのハングは私のmdの問題とは無関係であると想定しますが、その可能性を完全に無視することはできません。再起動するたびに、md7で再構築が必要になりましたが、どのディスクが再構築をトリガーしたかをログから判断する方法がわかりません。 RAIDがまだ再構築されている間、iostatが私を助けることができるかもしれないと思いました:

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda              43.39      1038.34       558.83     223108     120075
sdb              66.88      1445.47       648.86     310588     139420
sdc              36.42        12.99     22256.81       2792    4782320
sdd             190.75     23227.78       331.14    4990954      71152
md0               2.11        21.39         0.23       4596         50
md1             173.72      1855.87       522.14     398770     112192
md2              11.68        65.84        27.59      14146       5928
md6              27.42       149.83        69.51      32194      14936
sde              75.83        70.81     22326.91      15214    4797384
sdf              79.31        99.41     22326.91      21360    4797384
sr0               0.04         2.61         0.00        560          0
md7             202.31      1287.41       331.07     276626      71136

...しかし、md7がsddを使用してそのRAID内の他のすべてのディスクを再構築しているように見えます。おそらくこれは、sddがSSDであり、他のすべてのディスクが書き込みとしてマークされているためだと思いましたが、その場合は、同期していない1つのディスクのみを再構築する必要があります(回転しているすべてのディスクがたまたま切れている場合を除く)同期の、それは私にはありそうもないようです)。

私が持っている別の理論は、SSDの書き込みが非常に高速で、他のディスクがまだ書き込みをしている間にブロックの書き込みを完了する時間があり、システムがたまたまロックアップするため、再起動時にすべての回転ディスクが常に同期していないというものです他のディスクがそのブロックの書き込みを完了する前に?

では、どのディスクが再同期をトリガーしたかをどのように知ることができますか? SSDとスピニングディスクが混在するn-wayミラーがあるという事実は、これらのフリーズの1つ後にすべてのスピニングディスクが常に再構築されるという事実の原因である可能性がありますか、またはmdドライバーはブロックが書き込まれたと見なされないことを保証しますかすべてのディスクに正常に書き込まれるまで、1つのディスクに?

2
rob

Michaelが上記で指摘したように、ハングとその結果としての nclean shutdown が、RAIDの再構築が表示される理由です。カーネルmdドライバーは、クリーンでないアレイを再構築して、それらが本当に同期していることを確認します。ハング、クラッシュ、またはパワーロスは、どの書き込みが実際にディスクにフラッシュされるかを保証しないためです。

ここで、sddが使用される理由について、最初に理解する必要があるのは、クリーンでないシャットダウンでは、個々のメンバーデバイスではなく、実際のアレイがダーティとしてマークされることです。上でリンクしたマンページでは、RAID-1について次のように述べられています。

Mdドライバーは、起動時に配列がダーティであると検出した場合、不整合の可能性がある場合は修正を行います。 RAID1の場合、これには、最初のドライブの内容を他のすべてのドライブにコピーすることが含まれます。

あなたの例では、md7配列はドライブsdcsddsdesdfにパーティションを持っていますが、mdstat出力を見ると:

md7:アクティブraid1 sdd1 [0] sde53 sdf54 sdc11

[0]でマークされた最初のパーティションがsdd、つまりsdd1にどのようにあるかに注意してください。これがsddが使用されている理由です。これはmd7の最初のドライブです。

1
kiko

(少なくともLinuxの)RAIDは、これらの目的でファイルシステムのように機能することを理解しています。使用中にシステムがクラッシュした場合は、再起動時にチェックする必要があります。したがって、システムのクラッシュの原因は、アレイ内のanyディスクではない可能性があります。

1
Michael Slade