Linux md配列のどのブロックが一致しませんか?

Linux md配列のどのブロックが一致しませんか?

これは今後ServerFaultについて質問しました。活動不足により自動的に削除されます。ここでより良い幸運がありますように

Linuxで冗長性のあるmdソフトウェアRAIDアレイに対して「検査」(書き込み)を実行した後、checkサブシステムは一致しないブロックに含まれるセクタの数で仮想ファイルを更新します。/sys/class/block/md0/md/sync_actionmd/sys/class/block/md0/md/mismatch_cnt

残念ながら、どのブロックまたはセクタであるかは不明です。

2つのドライブ(sdaやsdbのmd0など)を持つRAID 1アレイでは、次のことができます。

blockdev --flushbufs /dev/md0 /dev/sda /dev/sdb
cmp -l /dev/sda /dev/sdb > sda-sdb.diff

どのバイトが異なるかを確認し、セクタと追加情報(ファイルシステムが存在する場合はどのファイルが影響を受けるか)をエクスポートします。

しかし、他のRAIDレベルについても同じ情報を取得する方法はありますか?たとえば、このRAID10アレイの場合:

$ cat /sys/class/block/md0/md/mismatch_cnt
4608
$ cat /proc/mdstat
[...]
md0 : active raid10 sdd1[4] sdc1[3] sdb1[1] sda1[0]
      3906763776 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]

矛盾があるかどうかはどうすればわかりますか/dev/md0

この特定の例では、アルゴリズムはそれほど複雑ではない。これを使用して、mdadm -Eデバイス上のデータの開始場所を見つけることができます。次に、sda1 は sdb1 に等しく、sdc1 は sdd1 に等しくなり、/dev/md0 の最初のブロック sda1 と sda2 は最初のブロックで見つかり、2 番目のブロックは sdc1 と sdd1 の最初のブロックで見つかります.デバイスでバイト差のオフセットが与えられると、そのオフセットを見つけることは難しくありません。私はmdデバイスですが、アルゴリズムを手動で実行するのを避ける方法があることを望みました。

ベストアンサー1

おすすめ記事