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.