外部ビットマップを使用したMD RAID 1は完全に再同期されない

外部ビットマップを使用したMD RAID 1は完全に再同期されない

私は興味深い構成を持っています。Windows と Linux の両方で表示する必要がある RAID 1 を備えたデュアル ブート システムです。Windows のインストールは Win 7 Enterprise で、Linux のインストールは Kubuntu 10.04 です。RAID を動作させるために、Windows の「ダイナミック ディスク」RAID 1 を使用してセットアップし、永続的なスーパーブロックのない MD と別のパーティションの書き込みインテント ビットマップを使用して Linux で起動しました。(このビットマップがないと、MD はアレイが同期されていることを認識できず、アレイが起動するたびに完全な再同期を実行します。) アレイは次のように組み立てられます。

mdadm --build /dev/md1 -l 1 -n 2 -b /var/local/md1.bitmap /dev/sdb2 /dev/sdc2

このコマンドを初めて実行したとき、アレイが再同期され、ダーティチャンクのないビットマップが書き​​出され、すべてがうまくいくだろうと予想していました。しかし、そうではありませんでした。再同期が完了した後、ビットマップはたいていきれいになったが、約5%の汚れたブロックが残っていることがわかった。

mdadm -X /var/local/md1.bitmap

/dev/md1 にファイルシステムをマウントしたり、他の方法で変更したりはしていません。

その後、アレイを停止して再起動すると次のようになることがわかりました。

mdadm --stop /dev/md1
mdadm --build /dev/md1 -l 1 -n 2 -b /var/local/md1.bitmap /dev/sdb2 /dev/sdc2

確かにビットマップを読み取り、その後の再同期は、ほとんどのブロックがクリーンとしてマークされていたため、すぐに完了しました。混乱を招くのは、この再同期によってダーティ ブロックの数はさらに減りましたが、まだすべてが削除されたわけではないことです。停止と再起動を繰り返すことで、ダーティ ブロック数を徐々に 0.6% 程度まで減らすことができ、そこで安定しているように見えました。

何が原因なのか、何か考えはありますか? どこかで競合状態が発生し、同期中にブロックがスキップされたり、ビットマップから適切にクリアされなかったりしているような気がしますが、これを証明する証拠はまったくありません。両方のドライブが新しく、smartctl -a で読み取りエラーがゼロでセクターが再割り当てされていると報告されているため、ハードウェアの問題ではないようです。

答え1

この素早い推測で気分を害さないように願っていますが、確認する前に操作が完了したこと/proc/mdstatを確認するためにファイルを監視しましたか?--buildmdadm -X

# cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 nbd0[3] sda10[0]
      53246315 blocks super 1.2 [3/1] [U__]
      [>....................]  recovery =  1.0% (537088/53246315) finish=203.0min speed=4326K/sec
      bitmap: 1/1 pages [4KB], 65536KB chunk

次に確認するのは、/var/local が ext2/ext3 であるかどうかです。man を引用します。

注意: 外部ビットマップは ext2 および ext3 でのみ動作することが分かっています。ビットマップ ファイルを他のファイルシステムに保存すると、深刻な問題が発生する可能性があります。

関連情報