Como os autotestes SMART estão relacionados a badblocks?

15

A ferramenta smartctl permite iniciar um autoteste longo ( smartctl -t long /dev/sda). No entanto, também há badblocksque eu possa correr em uma unidade. Como os dois estão relacionados? Se badblocks detectar blocos defeituosos, o inversor atualiza automaticamente seus valores SMART (por exemplo, atualizando sua contagem de setores realocados)? Os badblocks podem substituir smartctl -t longou vice-versa?

Hongli Lai
fonte

Respostas:

5

Eu tenho que discordar de voretaq7 - SMART não é mágico. Quando você tem uma unidade e um de seus setores fica ruim, você não poderá mais ler dados dela. Portanto, é perfeitamente possível ter um arquivo ilegível em uma unidade de disco moderna. A SMART marcaria esse setor ilegível como "Atual pendente" e "Off-line incorrigível" quando seria acessado pela primeira vez após falha.

Mas quando esse setor seria gravado novamente, seria remapeado para o espaço remapeado, sem a marcação e um contador "Reallocated_Sector_Ct" aumentaria. Então uma unidade inteira seria legível novamente.

smartctl -t longteste é útil - ele testará todo o espaço da unidade em busca de setores ilegíveis e registrará e marcará como "Atual pendente" e "Off-line incorrigível" o primeiro setor defeituoso encontrado ao executar. Estou configurando meus servidores para executar esse longo teste uma vez por semana em todas as unidades. Isso não afeta muito as funções normais da unidade, pois as solicitações do sistema operacional sempre têm prioridade sobre as verificações SMART.

Como em um servidor, eu sempre executo discos nos espelhos RAID1; portanto, quando um teste longo encontra um setor defeituoso, posso reescrever seu conteúdo usando dados de outra unidade em um espelho, forçando a realocação.

badblocksàs vezes também é útil - por exemplo, ele testa toda a unidade e não para em um primeiro erro. Ele pode testar uma única partição ou qualquer outra parte de uma unidade. Você pode usá-lo para verificar rapidamente se um bloco incorreto foi realocado com êxito.

Tometzky
fonte
11

Como apontei na minha outra resposta , todo disco rígido moderno tem espaço para remapeamento disponível (porque especialmente nas densidades de disco atuais, nenhum prato de disco será perfeito - sempre haverá alguns defeitos nos quais o disco precisará refazer, mesmo na marca -novamente nunca foi usado-saiu-da-linha-de-montagem-em-minhas-mãos).

Por esse motivo, teoricamente, você deve ter uma falha SMART relatada antes de algo como badblocksperceber setores defeituosos (visíveis ao usuário final) em uma unidade.
Nos discos rígidos modernos, qualquer setor defeituoso visível ao usuário final (como pode ser relatado badblocksou detectado automaticamente pelo sistema operacional) é um suspiro final e estremecimento de um disco que está morrendo.


Por fim, o SMART e badblockstesta duas coisas diferentes, mas relacionadas:

O SMART é uma ferramenta de auto-monitoramento:

O disco rígido conhece algumas informações sobre seus parâmetros operacionais e possui alguns meta-conhecimentos sobre o que é "normal" para alguns e "aceitável" para outros.
Se o inversor detectar que determinados parâmetros são "anormais" ou "inaceitáveis", ele reportará uma condição de pré-falha - em outras palavras, o inversor ainda está funcional, mas poderá falhar em breve.

Por exemplo: O motor do eixo normalmente gasta 0,10 amperes, mas agora está consumindo 0,50 amperes - um consumo anormalmente alto que pode indicar que o eixo está travando ou que o lubrificante permanente nos mancais se foi. Eventualmente, o motor será incapaz de superar a resistência e o inversor apreenderá.

Outro exemplo: a unidade possui 1000 blocos de "remapeamento" para lidar com setores defeituosos. Usou 750 deles, e os engenheiros que construíram o inversor determinaram que o número de remaps indica algo errado internamente (prato ruim, falha de velhice, cabeça danificada) - o inversor relatará uma condição de pré-falha, permitindo que você tenha tempo para obter seus dados serão desativados antes que o espaço remapeado acabe e setores defeituosos se tornem visíveis.

A SMART está procurando mais do que setores defeituosos - é uma avaliação mais abrangente da saúde da unidade. Você pode receber um aviso de pré-falha SMART em uma unidade sem setores defeituosos e sem erros de leitura / gravação (por exemplo, o problema do motor do eixo descrito acima).


badblocks é uma ferramenta com um objetivo específico (desatualizado): encontrar setores defeituosos.

badblocksvem de um tempo anterior ao SMART e ao remapeamento do setor ruim. Naquela época, sabíamos que as unidades tinham imperfeições, mas a única maneira de mapeá-las para impedir o armazenamento acidental de dados era testá-lo sob tensão, causar uma falha e lembre-se de não colocar os dados novamente.

A razão pela qual digo que está desatualizado é porque os eletrônicos nos drives modernos já fazem o que badblocksfazem, internamente e alguns milhares de vezes mais rápido. badblocksbasicamente permite que unidades antigas que não possuem eletrônicos sofisticados re-mapeiem (ou pulem) setores que falharam, mas os discos rígidos modernos já detectam setores com falha e os remapearam para você.

Teoricamente, você pode usar os badblocksdados para ter as falhas de remapeamento do sistema operacional (visíveis) como se o seu disco moderno fosse um disco antigo de Winchester, mas isso é contraproducente - como eu disse anteriormente, QUALQUER setor defeituoso detectado badblocksem uma unidade moderna é uma causa para descartar o unidade inteira com defeito (ou prestes a falhar).

Os setores defeituosos visíveis indicam que a unidade está sem espaço para remapeamento, o que é relativamente raro para os discos modernos, a menos que sejam antigos (próximo ao final da vida útil) ou defeituosos (pratos / cabeças ruins de fábrica).


Então, basicamente, se badblocksvocê estiver executando um disco antes de implantá-lo na produção, você se sentirá melhor em fazê-lo, mas se o seu disco foi fabricado neste século e mostra um setor ruim visível, você deve jogá-lo no lixo (ou chamar sua garantia). Para meu dinheiro, o status e a defesa SMART em profundidade são um uso melhor do meu tempo do que a verificação manual de discos.

voretaq7
fonte
1
Tudo bem, isso explica muito bem a diferença entre SMART e badblocks. Mas isso implica que o monitoramento do status SMART é suficiente ou também preciso executar longos testes SMART de vez em quando para que os avisos SMART sejam disparados corretamente? smartctl -t long /dev/sdaOu seja, devo executar de vez em quando, ou posso supor que smartd"automagicamente" me avise de problemas iminentes sem que eu precise configurar mais alguma coisa?
Hongli Lai
Essa é uma decisão que somente você pode tomar, no entanto, o SMART não foi projetado para exigir intervenção manual ("Apenas funciona" e você geralmente não deve mexer com ela). Confie no seu hardware (pelo menos nessa extensão limitada), porque, se você não pode confiar no seu hardware, pode também fazer as malas e voltar para casa.
voretaq7
2
"as unidades modernas já fazem o que os badblocks fazem, internamente e alguns milhares de vezes mais rápido" badblockslê todos os bytes da unidade, os substituem por padrões aleatórios e, em seguida, devolvem os dados originais. Os autotestes SMART não fazem isso. Isso deve limpar todos os setores "pendentes", se bem entendi.
endolith 19/01
4
@ endolith Os testes não são equivalentes diretos, mas o objetivo a que eles servem é equivalente (descobrir e permitir o remapeamento de setores defeituosos). Meu ponto principal foi o último parágrafo: se você deseja executar badblocks como exercitador de disco (para ver se pode provocar erros SMART porque está encontrando muitos blocos defeituosos), faça isso, mas se você estiver executando badblocks hoje com o A intenção de carregar a lista de bloqueios para evitar o uso desses setores (como fizemos na idade da pedra) é que você está fazendo errado: setores defeituosos visíveis significam que você deve jogar a unidade na lixeira mais próxima.
voretaq7
1
@Hashim Sim, acredito que seja útil usar badblocks, porque limpará setores pendentes.
Endolith
5

Boas respostas a esta pergunta são

/superuser//a/693065

/superuser//a/693064

Ao contrário de outras respostas, acho que os badblocks não estão desatualizados, mas são uma ferramenta muito útil. Uma vez eu atualizei meu PC com um novo disco rígido e ele começou a funcionar instável. Levei um bom tempo para perceber, graças aos badblocks, que a superfície do disco tinha defeitos. Desde então, corro badblocks completos no modo de gravação (destrutíveis!) Para cada novo disco rígido que começo a usar e nunca mais tive esse problema. Eu recomendo um

time sudo badblocks -swvo sdX.log / sev / sdX

para cada novo disco rígido. Ele testará cada bit do disco algumas vezes para escrita e leitura e, portanto, poderá evitar muitos problemas mais tarde.

Durante este teste, os blocos defeituosos serão mapeados pelo inversor. Portanto, a "Contagem de setores realocados" deve ser anotada antes e depois do teste e comparada com o limite SMART, pois informa sobre a integridade da unidade.

Frank Breitling
fonte
2
Testar o estresse de uma nova unidade enquanto ela ainda está na garantia é uma ótima idéia.
Endolith
2

badblocks é uma relíquia dos velhos tempos e não é estritamente útil, ele pode encontrar um setor atualmente ilegível, mas a coisa certa a fazer com um setor ruim é recuperar os dados do backup. O que pode ser feito se os dados não foram críticos para você é excluir o arquivo associado e gravar qualquer coisa nesse local; isso permitirá que o disco realoque o setor se achar necessário e continue trabalhando.

O autoteste do disco também testará toda a mídia quanto a vários defeitos. Supõe-se que ele use limiares mais baixos do que o usado na operação normal para verificar se o disco tem muitos pontos fracos e, com base na lógica do fornecedor, pode decidir que o disco já passou da sua vida útil e declara que o teste falhou. Nesse ponto, você deve retirar todos os seus dados ou recuperá-los do backup e substituir o disco.

Se uma ação do disco (por badblocks ou operação normal) atingir um erro de leitura irrecuperável, o disco atualizará automaticamente seu contador pendente de realocação e, quando a realocação for realizada, atualizará a realocação pendente e os contadores realocados. Um dd simples fará isso acontecer também.

Se você precisar escolher entre os dois, use o smartctl -t, desde que ele tenha uma melhor análise do disco.

Também posso sugerir o uso do meu utilitário de disco https://github.com/baruch/diskscan , ele funciona mais como badblocks, mas tenta avaliar se existem setores que estão indo mal, como um setor com dificuldade de audição que leva um tempo. muito mais tempo para ler. Isso é indicativo de um problema de mídia em desenvolvimento e, em versões futuras, também pode oferecer uma tentativa automática de ajudar o disco a corrigir esse problema.

Baruch Even
fonte
"Além disso, os badblocks são essencialmente obsoletos hoje em dia, uma vez que os próprios discos realocam os dados e não há necessidade real de mapear os bad blocks no nível do sistema de arquivos". Não badblocksestressa a unidade de maneira que os autotestes SMART não fazem?
Endolith
Não. Os badblocks farão uma varredura seqüencial do disco. Não é melhor que dd e será o mesmo que o autoteste também.
Baruch Mesmo
badblockslê todos os bytes do disco, substitui-os por padrões de teste e depois grava os dados originais de volta no lugar. Os autotestes SMART são testes de leitura e gravação da mesma forma?
Endolith 21/01
1
Reescrever os dados dos badblocks eliminará todos os "setores pendentes" e fará com que a unidade os marque novamente como bom ou realoque-os, correto?
Endolith
1
Sim. Pode ser o que você deseja nesse caso.
Baruch Mesmo