md raid5:md内部セクター番号をオフセットに変換します
TL; DRの要約:mdセクター番号を/dev/mdXデバイス内のオフセットに変換し、それをで調査する方法xfs_db。セクター番号はからのものsh->sectorですlinux/drivers/md/raid5.c:handle_parity_checks5()。 MDの内部がわからないので、printk追加したログからの出力をどうするか正確にわかりません。 コンポーネントデバイス(ddまたはhexエディター/ビューアー)へのオフセットも興味深いでしょう。 Linux-raidメーリングリストでこれを尋ねるべきだと思います。サブスクライバーのみですか、またはサブスクライブせずに投稿できますか? 私のデスクトップでは、4つのディスクのMD RAID5の上に直接xfsがあります(LVMなし)。最近のスクラブでゼロ以外が検出されましたmismatch_cnt(mdは一度に4kiBページで動作するため、実際には8)。 これはRAID5であり、通常の動作中に!= 0が発生する可能性があるmismatch_cnt RAID1 / RAID10 ではありません。(このWikiページの下部にある他のリンクは、一部の人々にとって役立つかもしれません。) 私は盲目的にできましたrepairが、どのファイルを再構築するかを選択する機会を失う以外に、破損の可能性をチェックするファイルがわかりません。 同様の質問に対するFrostschutzの回答は、ファイルシステムの違いを追跡するために私が見つけた唯一の提案です。面倒で遅いので、最初にいくつかのファイルに絞り込むために、より良いものを使用したいと思います。 ロギングを追加するカーネルパッチ 奇妙なことに、mdのチェック機能は、エラーが見つかった場所を報告しません。 私は追加printkログインするには、MD / raid5.cにsh->sectorにif増加することを支店mddev->resync_mismatches内handle_parity_checks5()(小さなパッチgithubの上で公開され、もともとkernel.orgから4.5-RC4に基づいて、。)これは一般的な使用のためにOKであるために、それはおそらくする必要があります不一致が多い修理でログが殺到しないようにします(たぶん、新しい値がresync_mismatches1000未満の場合にのみログを記録しますか?)。また、ログのみでログはないかもしれcheckませんrepair。 同じ関数がそのセクター番号をのエラー処理の場合にswitch出力するので、(MDの内部を知らなくても)何か有用なものをログに記録していると確信しています。 変更したカーネルをコンパイルして起動し、チェックを再実行しました。 [ 399.957203] md: data-check of RAID array md125 ... [ 399.957215] md: using 128k window, over a total of 2441757696k. ... [21369.258985] md/raid:md125: check found mismatch at sector …