私は現在、HDDとSSDの上に構築されたLinux上のソフトウェアRAID-1アレイを使用しています。 SSDが故障していると強く感じています。
SSDの動作がどれほど悪いかを確認したいと思います。 echo check > /sys/block/md1/md/sync_action
を使用して配列のチェックを実行し、終了したら、/sys/block/md1/md/mismatch_cnt
の内容を確認しました。 3回続けて実行したところ、256、128、384の3つの異なる結果が得られました。私が困惑しているのは、2回目の実行で最初の実行よりも低い結果が得られたことです。不一致は修正されましたか?
検出された不一致についてより詳細に知る方法はありますか?不一致のブロックが変化するかどうか、または常に同じであるかどうかを確認するのは興味深いかもしれません。また、不一致のブロックの内容を調べて、どれが正しいかを確認できるかどうかを確認したいと思います。 (たとえば、SSDが一部のブロックをゼロにした場合、再読み取りできませんでした。)
さらに、MD配列をrepair
するオプションがあるようです。しかし、私は少し疑わしいです。カーネルは、不一致のブロックのどれが正しいかをどのように推測できますか?
ええと…Linux4.9.88のprocess_checks
ファイルにあるdrivers/md/raid1.c
関数のソースコードを正しく読んだら、次のようになります。
したがって、どの不一致ブロックが正しいかは推測できません。最初のものが正しいと見なされます。 (読んでいると、3つのコンポーネントがあり、2番目と3番目が同じ内容であっても。)