A ressincronização RAID1 não mantém discos sincronizados quando um dispositivo foi alterado manualmente

0

Depois de uma falha em um RAID1, fiz algumas investigações e testes.

Fazendo o seguinte:

# dd if=/dev/zero of=1 bs=1M count=256
# dd if=/dev/zero of=2 bs=1M count=256
# losetup /dev/loop1 1
# losetup /dev/loop2 2
# mdadm --create /dev/md0 -l 1 -n 2 /dev/loop1 /dev/loop2
# mdadm --stop /dev/md0
# dd if=/dev/urandom of=/dev/loop2

O que deve acontecer quando o array é montado novamente? Eu esperaria 1) algum aviso en /proc/mdstat , ou 2) as informações em bom disco foram sincronizadas com o disco randomizado, ou 3) o disco "ruim" randomizado foi sincronizado com o bom.

Somente o seguinte é mostrado no buffer de anel do kernel:

md/raid1:md0: not clean -- starting background reconstruction
md/raid1:md0: active with 2 out of 2 mirrors
md0: detected capacity change from 0 to 268107776
md: resync of RAID array md0
md: md0: resync done.

O que é isso resync? Nem a primeira unidade nem a segunda foram alteradas após essa ressincronização.

Quando a matriz for remontada, /proc/mdstat mostrará "resync" e segundos depois que tudo estiver OK com /proc/mdstat :

md0 : active raid1 loop2[1] loop1[0]
      261824 blocks super 1.2 [2/2] [UU]

Também forçar a gravação de ressincronização em /sys/devices/virtual/block/md0/md faz qualquer alteração.

Esse é o comportamento esperado?

Eu fiz os testes depois que um RAID1 passou por um disco fisicamente defeituoso, e o disco bom não tinha nenhuma informação, mas apenas 0x00 e 0x55 bytes.

    
por Emilio Lazo 03.03.2018 / 04:48

0 respostas