いくつかの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つのディスクに?
Michaelが上記で指摘したように、ハングとその結果としての nclean shutdown が、RAIDの再構築が表示される理由です。カーネルmdドライバーは、クリーンでないアレイを再構築して、それらが本当に同期していることを確認します。ハング、クラッシュ、またはパワーロスは、どの書き込みが実際にディスクにフラッシュされるかを保証しないためです。
ここで、sdd
が使用される理由について、最初に理解する必要があるのは、クリーンでないシャットダウンでは、個々のメンバーデバイスではなく、実際のアレイがダーティとしてマークされることです。上でリンクしたマンページでは、RAID-1について次のように述べられています。
Mdドライバーは、起動時に配列がダーティであると検出した場合、不整合の可能性がある場合は修正を行います。 RAID1の場合、これには、最初のドライブの内容を他のすべてのドライブにコピーすることが含まれます。
あなたの例では、md7
配列はドライブsdc
、sdd
、sde
&sdf
にパーティションを持っていますが、mdstat
出力を見ると:
md7:アクティブraid1 sdd1 [0] sde53 sdf54 sdc11
[0]
でマークされた最初のパーティションがsdd
、つまりsdd1
にどのようにあるかに注意してください。これがsdd
が使用されている理由です。これはmd7
の最初のドライブです。
(少なくともLinuxの)RAIDは、これらの目的でファイルシステムのように機能することを理解しています。使用中にシステムがクラッシュした場合は、再起動時にチェックする必要があります。したがって、システムのクラッシュの原因は、アレイ内のanyディスクではない可能性があります。