Você pode verificar se os blocos afetados e os setores defeituosos subjacentes no disco são realocados para a área "setores de reserva" ? O setor defeituoso deve ser realocado quando a operação de gravação falhar. Verifique com smartctl:
smartctl -a /dev/sdb | grep -i reallocated
A última coluna deve conter um número total de setores realocados. Se houver zero, tente ler o setor defeituoso:
hdparm –-read-sector XXXXXXXX /dev/sdb
Ele deve retornar um erro de E / S . Caso contrário, recomendo pular a próxima seção .
O erro significa que o setor ainda não foi realocado. Então você pode tentar realocá-lo à força escrevendo-o. Lembre-se de que todos os dados armazenados neste setor serão perdidos após essa etapa :
hdparm –-write-sector XXXXXXXX --yes-i-know-what-i-am-doing /dev/sdb
A propósito, o número de setor XXXXXXXX deve ser obtido a partir de mensagens do kernel (comando dmesg ou de / var / log / messages). Como você tinha blocos ruins durante a ressincronização, deveria haver algumas mensagens relacionadas semelhantes a:
... end_request: I/O error, dev sdb, sector 1261071601
Em seguida, tente verificar com o smartctl novamente. O contador aumentou? Se assim for tentar lê-lo com hdparm. Agora, ele deve lê-lo sem nenhum erro, já que ele deve ser realocado. Feito.
Finalmente, você pode continuar com o mdadm e adicionar o disco ao seu espelho degradado.