mdadm raid1 falha ao ressincronizar

mdadm raid1 falha ao ressincronizar

Estou tentando resolver esse problema que estou tendo com um mdadm raid1.

Eu tenho um servidor Ubuntu 9.04 rodando em um software raid1 de 2 unidades com mdadm. Ontem, uma das unidades falhou e substituí-a por uma unidade nova do mesmo tamanho. Eu removi a unidade defeituosa, copiei a partição da unidade restante para a nova unidade e adicionei-a ao ataque. Ele sincronizou novamente e o sistema funcionou bem, até que a unidade que não falhou também foi rotulada como falha.

Agora eu tinha o ataque rodando apenas na nova unidade. Então comprei outra unidade e repeti o procedimento acima. Então agora eu tinha duas unidades novas e o ataque estava sincronizando. No entanto, depois de alguns minutos, verifiquei /proc/mdstat e o ataque não estava mais sincronizando.

mdadm --detail /dev/md1 mostra: (sdb é a primeira nova unidade e sdc é a segunda nova unidade)

root@dola:/home/jjaramillo# mdadm --detail /dev/md1 /dev/md1: Versão: 00.90 Tempo de criação: sábado, 20 de dezembro 00:42:05 2008 Nível de ataque: raid1 Tamanho da matriz: 974711680 (929,56 GiB 998,10 GB ) Tamanho do desenvolvedor usado: 974711680 (929,56 GiB 998,10 GB) Dispositivos Raid: 2 Dispositivos totais: 2 Menores preferidos: 1 Persistência: Superblock é persistente

Update Time : Wed Jun  2 10:09:35 2010
      State : clean, degraded

Dispositivos ativos: 1 Dispositivos em funcionamento: 2 Dispositivos com falha: 0 Dispositivos sobressalentes: 1

       UUID : bba497c6:5029ba0b:bfa4f887:c0dc8f3d
     Events : 0.5395594

Number   Major   Minor   RaidDevice State
   2       8       35        0      spare rebuilding   /dev/sdc3
   1       8       19        1      active sync   /dev/sdb3

Tentei remover e adicionar novamente a unidade algumas vezes, mas acontece a mesma coisa. O ataque falha ao ressincronizar. Eu olhei /var/log/messages e encontrei o seguinte:

2 de junho 07:57:36 dola kernel: [35708.917337] sd 5:0:0:0: [sdb] Código de sentido não tratado 2 de junho 07:57:36 dola kernel: [35708.917339] sd 5:0:0:0: [sdb] Resultado: hostbyte = DID_OK driverbyte = DRIVER_SENSE 2 de junho 07:57:36 dola kernel: [35708.917342] sd 5:0:0:0: [sdb] Sense Key: Medium Error [atual] [descritor] 2 de junho de 07 :57:36 dola kernel: [35708.917346] Dados de sentido do descritor com descritores de sentido (em hexadecimal): 2 de junho 07:57:36 dola kernel: [35708.917348] 72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 2 de junho 07:57:36 dola kernel: [35708.917357] 00 43 9e 47 2 de junho 07:57:36 dola kernel: [35708.917360] sd 5:0:0:0: [sdb] Adicionar. Sentido: Erro de leitura não recuperado - falha na realocação automática

Parece que há algum tipo de erro no sdb (a primeira nova unidade). Minha pergunta é: qual seria a melhor abordagem para colocar o ataque em funcionamento novamente? Pensei em transferir o /dev/md1 para um disco rígido vazio, refazer o ataque do zero e carregar os dados de volta, mas poderia haver uma solução mais fácil.

Qualquer ajuda seria apreciada.

Responder1

Você não deve tentar preparar a nova unidade de maneira significativa, a menos que os constituintes do ataque sejam, na verdade, PARTIÇÕES de disco e não os próprios discos. Nesse caso, você criaria uma partição na nova unidade com o mesmo tamanho daquela no disco ativo restante.

Você nunca precisa mexer na unidade antiga - presume-se que ela esteja com defeito e não seja confiável.

O procedimento correto é remover a unidade quebrada, adicionar uma unidade nova e vazia e, em seguida, usar o mdadm para adicionar essa nova unidade ao array. Você faria algo assim:

mdadm --add /dev/md0 /dev/<newdrive>

O kernel então sincronizará a nova unidade no array, copiando os dados da unidade restante em boas condições.

Responder2

RÉ:

Eu removi a unidade defeituosa, copiei a partição da unidade restante para a nova unidade e adicionei-a ao ataque.

Você não deveria copiar partições sozinho.

A única coisa que você deve fazer é colocar a nova unidade em seu sistema e usar o mdadm para adicioná-la ao seu grupo raid.

Se você realmente fez uma cópia (ou seja, a dd if=/dev/good_disk of=/dev/new_disk), provavelmente acabou copiando UUIDs de raid ou algo que permite ao mdadm saber qual disco é qual, e então fica confuso.

Responder3

Instale o novo hd, particione-o como sugerido por Tom O'Connor e use o mdadm para reparar o array. Consulte a página de manual do mdadm em "For Manage mode:", a opção --add:

mdadm /dev/md0 --add /dev/sda1 

Talvez seja necessário "--fail" primeiro a primeira unidade de substituição.

informação relacionada