MD RAID 1 com bitmap externo não é totalmente sincronizado novamente

2

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.

    
por user64744 27.12.2010 / 01:42

1 resposta

0

Espero não ofendê-lo com esse palpite, mas você monitorou o arquivo /proc/mdstat para garantir que --build terminou antes de verificar mdadm -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

A segunda coisa a verificar é se / var / local é ext2 / ext3, citando man:

Note: external bitmaps are only known to work on ext2 and ext3. Storing bitmap files on other filesystems may result in serious problems.

    
por 27.12.2010 / 16:22

Tags