Discos rígidos com setores defeituosos no Linux
EXT4
Os sistemas de arquivos EXT podem manter uma lista de setores considerados defeituosos, que passam a ser ignorados. A lista não é gerenciada automaticamente pelo kernel e depende do espaço de usuário:
O
Todos os discos rígidos não arcaicos realocam por conta, durante escrita, setores ruins à medida que aparecem. Daí a utilidade da opção
Ao usar
Na criação do sistema de arquivos pelo
XFS
O XFS não mantém uma lista de setores ruins. Se o disco está indo desta para melhor, a única coisa a tentar é rodar
Especificar
Isso vale para qualquer sistema de arquivos que, igual ao XFS, não tenha o recurso, de questionada utilidade segundo o próprio Ted Ts'o.
Recomendação
Primeira providência é trocar o cabo de dados. Não adiantando, não confie mais em disco que comece a apresentar setores defeituosos. Considere
Sendo absolutamente necessário manter o hardware defeituoso, se possível, apague-o inteiramente escrevendo zeros e depois particione e crie o sistema de arquivos de novo:
Dá também para apagar apenas a área dentro do limite de partições especificando o dispositivo de bloco de cada uma (
[1]
Os sistemas de arquivos EXT podem manter uma lista de setores considerados defeituosos, que passam a ser ignorados. A lista não é gerenciada automaticamente pelo kernel e depende do espaço de usuário:
e2fsck
da suíte e2fsprogs.O
e2fsck
(fsck.ext*
são links apontando para o binário) oferece dois modos de funcionamento com as opções -c
e -cc
. O primeiro faz uma varredura somente leitura, enquanto o segundo é de escrita não destrutiva. Roda por baixo do capô[1] o badblocks
, outro programa da suíte. No modo de escrita, lê os setores relativos ao bloco em teste, coloca-os na memória, escreve bits aleatórios e depois grava novamente os dados originais nos mesmos endereços LBA.Todos os discos rígidos não arcaicos realocam por conta, durante escrita, setores ruins à medida que aparecem. Daí a utilidade da opção
-cc
.Ao usar
-c[c]
, -k
define que setores ruins detectados na verificação atual serão adicionados à lista existente ao invés de substituí-la.# e2fsck -ccky /dev/sdxy
-y
evita ter que ficar respondendo perguntas a cada ocorrência de setor problemático. Assume todas respostas como yes. Fique avisado que o e2fsck
zera por completo o bloco, caso esteja sendo usado, ao qual pertencia o setor ruim se este não puder ser lido.Na criação do sistema de arquivos pelo
mke2fs
(e seus links de conveniência mkfs.ext*
), também é possível usar as opções -c
e -cc
, com a diferença de -cc
ser mapeada à opção -w
do badblocks
, que realiza teste destrutivo, zerando os setores no final.XFS
O XFS não mantém uma lista de setores ruins. Se o disco está indo desta para melhor, a única coisa a tentar é rodar
badblocks -n
(-n
ativa o teste de escrita não destrutiva) com o volume desmontado e rezar para que o firmware realoque o que for possível. Como os endereços LBA são mantidos, é transparente para o sistema de arquivos.# badblocks -n /dev/sdxy
Especificar
-b
é desnecessário, pois não estamos interessados na eventual lista resultante, que é inútil com o XFS. Só precisamos que o programa desempenhe sua tarefa fazendo, por conseguinte, o firmware trabalhar.Isso vale para qualquer sistema de arquivos que, igual ao XFS, não tenha o recurso, de questionada utilidade segundo o próprio Ted Ts'o.
Recomendação
Primeira providência é trocar o cabo de dados. Não adiantando, não confie mais em disco que comece a apresentar setores defeituosos. Considere
badblocks
, e2fsck -c[c]
e mke2fs -c[c]
paliativos até você jogá-lo fora e colocar outro em boas condições no lugar. Acompanhe os atributos SMART com o aplicativo "Discos" do GNOME ou pelas ferramentas de linha de comando do pacote smartmontools (ver man pages).Sendo absolutamente necessário manter o hardware defeituoso, se possível, apague-o inteiramente escrevendo zeros e depois particione e crie o sistema de arquivos de novo:
# dd if=/dev/zero of=/dev/sdx bs=1M status=progress conv=fsync,notrunc
Dá também para apagar apenas a área dentro do limite de partições especificando o dispositivo de bloco de cada uma (
/dev/sdxy
), assim o particionamento é preservado.[1]
# strace -f -e trace=process -e signal=\!SIGALRM e2fsck <opções> /dev/sdxy
Comentários
Postar um comentário