Eu tenho uma configuração interessante: sistema de inicialização dupla com um RAID 1 que precisa estar visível no Windows e no Linux. A instalação do Windows é o Win 7 Enterprise, e a instalação do Linux é o Kubuntu 10.04. Para fazer o RAID funcionar, eu o configurei usando o RAID 1 de "Discos Dinâmicos" do Windows, e o atualizei no Linux usando MD sem superbloco persistente, e um bitmap de intenção de gravação em outra partição. (Sem esse bitmap, o MD não tinha como saber se o array estava em sincronia e faria uma ressíncrona completa toda vez que o array fosse iniciado.) O array é montado da seguinte forma:
mdadm --build /dev/md1 -l 1 -n 2 -b /var/local/md1.bitmap /dev/sdb2 /dev/sdc2
Eu esperava que na primeira vez que eu executasse este comando, ele iria ressincronizar o array, escrever um bitmap sem partes sujas e tudo seria bom. Este não foi o caso: depois de completar a ressincronização, o bitmap estava principalmente limpo, mas cerca de 5% de blocos sujos permaneceram, como revelado por
mdadm -X /var/local/md1.bitmap
Eu não montei o sistema de arquivos em / dev / md1 ou toquei nele de outra maneira.
Descobri então que parando e reiniciando o array:
mdadm --stop /dev/md1
mdadm --build /dev/md1 -l 1 -n 2 -b /var/local/md1.bitmap /dev/sdb2 /dev/sdc2
De fato, o
leu no bitmap, com uma ressincronização resultante que passou rapidamente porque a maioria dos blocos estava marcada como limpa. A parte confusa é que essa ressincronização reduziu ainda mais o número de blocos sujos, mas ainda não removeu todos eles. Parando e reiniciando repetidamente, eu poderia lentamente trazer a contagem de blocos sujos para cerca de 0,6%, onde parecia nivelar.
Alguma idéia do que poderia estar causando isso? Cheira-me a uma condição de corrida em algum lugar que leva a bloqueios sendo ignorados durante a sincronização ou não devidamente limpos do bitmap, mas realmente não tenho provas para provar isso. Ele não se parece com problemas de hardware, pois as duas unidades são novas e possuem zero de erros de leitura e realocação de setores relatados pelo smartctl -a.