MD RAID 1 con mapa de bits externo no se resincroniza completamente

MD RAID 1 con mapa de bits externo no se resincroniza completamente

Tengo una configuración interesante: sistema de arranque dual con RAID 1 que debe ser visible tanto en Windows como en Linux. La instalación de Windows es Win 7 Enterprise y la instalación de Linux es Kubuntu 10.04. Para que el RAID funcione, lo configuré usando el RAID 1 de "Discos dinámicos" de Windows y lo abrí en Linux usando MD sin superbloque persistente y un mapa de bits con intención de escritura en otra partición. (Sin este mapa de bits, MD no tenía forma de saber que la matriz estaba sincronizada y realizaría una resincronización completa cada vez que se iniciara la matriz). La matriz se ensambla de esta manera:

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

Esperaba que la primera vez que ejecutara este comando, resincronizaría la matriz, escribiría un mapa de bits sin fragmentos sucios y todo estaría bien. Este no fue el caso: después de completar la resincronización, el mapa de bits fueprincipalmentelimpios, pero alrededor del 5% de los bloques sucios quedaron, como lo reveló

mdadm -X /var/local/md1.bitmap

No monté el sistema de archivos en /dev/md1 ni lo toqué de ninguna otra manera.

Luego descubrí que detener y reiniciar la matriz:

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

De hecho, leyó el mapa de bits, con una posterior resincronización que se realizó rápidamente porque la mayoría de los bloques estaban marcados como limpios. La parte confusa es que esta resincronización redujo aún más la cantidad de bloques sucios, pero aún así no los eliminó todos. Al parar y reiniciar repetidamente, pude reducir lentamente la cuenta de bloques sucios a alrededor del 0,6%, donde pareció estabilizarse.

¿Alguna idea de que puede estar causando esto? Me huele a una condición de carrera en algún lugar que hace que los bloques se omitan durante la sincronización o no se borren correctamente del mapa de bits, pero realmente no tengo evidencia para demostrarlo. No parecen problemas de hardware ya que ambas unidades son nuevas y no tienen errores de lectura ni sectores reasignados informados por smartctl -a.

Respuesta1

Espero no ofenderte con esta suposición rápida, pero ¿has supervisado el /proc/mdstatarchivo para asegurarte de que --buildla operación haya finalizado antes de comprobarlo 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

Lo segundo que hay que comprobar es si /var/local es ext2/ext3, citando a man:

Nota: se sabe que los mapas de bits externos solo funcionan en ext2 y ext3. El almacenamiento de archivos de mapa de bits en otros sistemas de archivos puede provocar problemas graves.

información relacionada