Às vezes, as unidades geram erros de leitura e, na minha experiência, geralmente quando isso acontece, posso executar "badblocks" para testar a unidade e a unidade pode relatar alguns erros no início, mas depois que a unidade tiver sido sublinhou um pouco ou continuará relatando erros, caso em que é ruim, ou não reportará erros.
Eu percebi que isso era devido a alguns setores da unidade serem marginais, e o remapeamento badblock só pode ser ativado quando você está gravando no disco, não lendo a partir dele. Se você gravar dados em um setor que está ruim, a unidade deve relatar um erro ao lê-lo, porque se ele apenas remapear silenciosamente esse setor para um dos setores sobressalentes, ele retornará dados inválidos em vez de um erro. Mas em uma gravação, se perceber que o setor é ruim, ele pode gravar esses dados em um setor sobressalente e remapá-lo.
Infelizmente, não é possível limpar essa contagem de erros, portanto, se você tiver um monitoramento que relata erros de mídia, será necessário substituir a unidade ou torná-la para que o monitoramento possa ignorar isso ou muitos erros e apenas relatar quando muda de novo.
Você pode verificar o status da unidade SMART com o smartctl (obrigado, @pQd, eu não sabia disso) com:
MegaCli64 -PDList -aALL | grep -e '^$' -e Slot -e Count
# Find the slot number to use for "X".
# For "Y" use the device name the system knows, such as "sda".
smartctl -a -d megaraid,X /dev/sdY
Provavelmente não é totalmente irracional reconstruir a unidade e ver se ela continua a ter problemas. Com o MegaRAID, você pode fazer isso com estes comandos:
# WARNING: Make sure the array is "Optimal" first, this will degrade it.
MegaCli64 -LDInfo -Lall -aALL | grep State
# NOTE: This assumes drive 3 of enclosure 32 for adapter 0
MegaCli64 -PDOffline -PhysDrv [32:3] -a0
MegaCli64 -PDRbld -Start -PhysDrv [32:3] -a0
# Now check the rebuild status until it completes:
MegaCli64 -PDRbld -ShowProg -PhysDrv [32:3] -a0
# And the array status should go back to Optimal
MegaCli64 -LDInfo -Lall -aALL | grep State
Eu costumava ter unidades de disco fora da matriz RAID o tempo todo (talvez uma vez a cada mês ou dois, através de uma amostra de 100 a 200 unidades). Mas as unidades não estavam aparecendo tão ruins depois que eu as substituí.
Eu comecei a gravar em todas as unidades antes de colocá-las em produção, usando "badblocks" por cerca de uma semana, e depois que comecei a fazer isso, o número dessas desistências reduziu drasticamente. Agora isso acontece talvez duas vezes por ano, em 500 unidades.
Este é um teste destrutivo, portanto, verifique se você não tem dados na unidade:
badblocks -svw -p 5 /dev/sdX
O "sdX" é o dispositivo para testar. Tenha muito cuidado aqui, escolher a unidade errada destruirá seus dados . Eu corro meus testes em uma máquina autônoma no meu testbench.