Marque setores defeituosos no disco rígido sem formatar

22

Percebi que no meu servidor Ubuntu doméstico, uma unidade é somente leitura por algum motivo. Desenterrando, descobri que isso pode acontecer quando os discos rígidos apresentam erros. Usei badblocks para verificar se há erros e, de fato, tenho alguns setores danificados.

Na maioria dos casos, o único curso de ação racional é tentar fazer backup de dados, remover o disco rígido e comprar um novo. No entanto, este servidor não possui nada que eu não tenha feito backup em vários locais e gostaria de usá-lo até que ele morra. Eu o uso para transmitir músicas e executar alguns scripts simples. De qualquer forma, seria muito difícil reinstalar tudo.

Existe uma maneira de marcar esses blocos defeituosos sem formatar um disco rígido?

enedene
fonte

Respostas:

29

Presumo que você esteja falando de blocos físicos defeituosos em um disco e não de sistemas de arquivos corrompidos.

Para verificar a condição física do seu disco, é melhor instalar smartmontools

sudo apt-get install smartmontools

Isso funciona porque todos os discos modernos registram seu status de integridade usando um sistema chamado SMART

Use o smartctrlcomando para ler este status. Por exemplo, para ler todos os atributos da primeira chamada de disco

sudo smartctl --all /dev/sda

Cuidado com uma linha falando sobre o status geral da saúde. Quando isso indica um erro, é muito provável que o disco falhe em breve.

SMART overall-health self-assessment test result: PASSED

Outras linhas que você deseja verificar são a Contagem de setores pendentes e os setores realocados.

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       48
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       2

As realocadas listam geralmente no campo bruto o número de setores defeituosos que o disco trocou por outros sobressalentes em funcionamento. Pendente são setores que podem ser realocados caso a próxima gravação falhe.

Você pode até disparar autotestes do disco quando suportado pelo seu modelo

sudo smartctl -t long /dev/sda

Para forçar a verificação de todos os setores, use badblocksem um modo no qual os dados sejam gravados. Lembre-se de que, embora geralmente seja seguro executar, ele sobrecarregará seus discos, o que pode causar falhas. Sempre faça um backup dos seus dados.

sudo badblocks -svvn -c 262144 /dev/sda

Se você processou totalmente o disco dessa maneira, o controlador de disco deve ter substituído todos os blocos defeituosos por blocos funcionais e a contagem realocada será aumentada no log SMART.

user228505
fonte
2
qual é a influência -cou o número de blocos testados por vez ou em outras palavras, por que você valor tão grande em comparação com o padrão de 64?
greole 5/09/14
4
o tamanho do bloco padrão de 1024 bytes multiplicado pelo padrão de 64 blocos por vez leva a apenas 64k processados ​​em cada solicitação. Com os discos modernos com uma taxa de transferência de até 150 MiB / s, isso apresenta mais sobrecarga do que eu me sinto à vontade. Quero dar à unidade a chance de processar os dados da maneira mais eficiente, sem esperar pelos dados no barramento.
user228505
Diz: / dev / sda aparentemente está em uso pelo sistema; não é seguro executar badblocks!
Dims 24/03
1
@Dims Diz para você não executar isso em um disco montado ativamente. Desmonte o disco primeiro. No seu caso, pode ser a sua unidade do sistema. Então, inicialize primeiro em um sistema de resgate.
user228505
2
@ Dims Existe a opção -force se você quiser executá-lo de qualquer maneira. ou seja, sudo badblocks -svvn -c 262144 / dev / sda -force
ADR