Usando "badblocks" em discos modernos

21

Desejo usar badblocks para verificar meus HDDs e gostaria de esclarecer suas operações.

Alguém pode explicar as melhores opções para usar -be -c? Incluí suas definições na página de manual, mas não tenho certeza se tamanhos maiores seriam benéficos para discos modernos com setores de 64 MB de RAM e 4k.

-b block-size       Specify the size of blocks in bytes. The default is 1024. 
-c number of blocks the number of blocks which are tested at a time. The default is 64

Em segundo lugar, gostaria de saber se o teste do modo de gravação é mais completo do que o modo não destrutivo de leitura e gravação?

Por fim, quantas realocações do setor SMART são aceitáveis ​​/ as unidades com contagens de realocação diferentes de zero devem ser substituídas imediatamente?

Yoren
fonte
3
para a segunda parte: assim que você começar a ver badblocks, isso significa que algo deu errado. Provavelmente, este é um bom sinal de que você deve substituir o disco antes que não possa lê-lo. Mas em todos os casos, antes mesmo da falha, você sempre deve ter 2 backups de dados importantes (1 local e 1 remoto), além da cópia de trabalho. veja detalhes da minha resposta lá: superuser.com/a/528181/174998
Olivier Dulac
4
para tamanho do bloco: deve refletir o tamanho real do bloco que seu sistema operacional estava usando para armazenar dados nesse disco rígido (de acordo com o sistema de arquivos usado). Não é para acelerar as coisas, é para marcar um bloco como "ruim", esse bloco é de fato 1 bloco, e não 1/2 ou 1/4 ou mesmo 2 (ou mais) blocos.
Olivier Dulac

Respostas:

21

Questão 1:

No que diz respeito à -bopção: isso depende do seu disco. Discos grandes e modernos têm blocos de 4KB, nesse caso, você deve definir -b 4096. Você pode obter o tamanho do bloco no sistema operacional e também é possível obtê- lo lendo as informações do disco fora do rótulo ou pesquisando no Google o número do modelo do disco. Se -bfor definido como algo maior que o tamanho do seu bloco, a integridade dos badblocksresultados poderá ser comprometida (ou seja, você poderá obter falso-negativos: nenhum bloco defeituoso foi encontrado quando ainda existe). Se -bestiver definido como algo menor que o tamanho do bloco da sua unidade, a velocidade da badblocksexecução poderá ser comprometida. Não tenho certeza, mas pode haver outros problemas com a configuração-bpara algo menor que o tamanho do seu bloco, já que não está verificando a integridade de um bloco inteiro, ainda será possível obter falso-negativos se ele estiver definido muito pequeno.

A -copção corresponde a quantos blocos devem ser verificados ao mesmo tempo. Leitura / escrita em lote, basicamente. Esta opção não afeta a integridade dos seus resultados, mas afeta a velocidade com que as badblocksexecuções são executadas. badblocksirá (opcionalmente) escrever, ler, armazenar em buffer, verificar, repetir para todos os N blocos, conforme especificado por -c. Se -cestiver definido muito baixo, isso fará com que suas badblocksexecuções demorem muito mais que o normal, pois o enfileiramento e o processamento de uma solicitação de E / S separada implicam sobrecarga, e o disco também pode impor sobrecarga adicional por solicitação. Se -cestiver definido muito alto, badblockspode ficar sem memória. Se isso acontecer, badblocksfalhará rapidamente após o início. Considerações adicionais aqui incluem badblocksexecuções paralelas : se você estiver executandobadblockscontra várias partições no mesmo disco (má idéia) ou contra vários discos no mesmo canal de E / S, você provavelmente desejará sintonizar -calgo sensivelmente alto, dada a memória disponível para badblocksque as execuções paralelas não lutem pela largura de banda de E / S e pode paralelizar de uma maneira sã.

Questão 2:

Ao contrário do que as outras respostas indicam, o -wteste do modo de gravação não é mais ou menos confiável que o teste não destrutivo de leitura e gravação, mas é duas vezes mais rápido, com o custo de ser destrutivo para todos os seus dados. Vou explicar o porquê:

No modo não destrutivo, badblocksfaz o seguinte:

  1. Leia os dados existentes, faça a soma de verificação (leia novamente se necessário) e armazene-os na memória.
  2. Escreva um padrão predeterminado (substituível pela -popção, embora geralmente não seja necessário) no bloco.
  3. Leia o bloco de volta, verificando se os dados lidos são os mesmos do padrão.
  4. Grave os dados originais de volta no disco.
    • Não tenho certeza disso, mas provavelmente também relê e verifica se os dados originais foram gravados com sucesso e ainda somam as mesmas coisas.

No modo destrutivo ( -w), badblockssomente as etapas 2 e 3 acima. Isso significa que o número de operações de leitura / gravação necessárias para verificar a integridade dos dados é reduzido pela metade. Se um bloco estiver incorreto, os dados serão errôneos nos dois modos. Obviamente, se você se importa com os dados armazenados em sua unidade, deve usar o modo não destrutivo, pois -wobliterará todos os dados e deixará badblocksos padrões 'gravados no disco.

Ressalva: se um bloco está indo mal, mas ainda não está completamente desaparecido, alguns pares de verificação de leitura / escrita pode funcionar, e alguns não podem. Nesse caso, o modo não destrutivo pode fornecer uma indicação mais confiável da "empolgação" de um bloco, uma vez que ele faz dois conjuntos de verificação de leitura / gravação (talvez - veja o marcador na etapa 4). Mesmo que o modo não destrutivo seja mais confiável dessa maneira, é apenas mais confiável por coincidência . A maneira correta de verificar se há blocos que não são totalmente ruins, mas que não podem suportar várias operações de leitura / gravação, é executada badblocksvárias vezes nos mesmos dados, usando a -popção

Questão 3:

Se o SMART estiver realocando setores, você provavelmente deve considerar a substituição da unidade o mais rápido possível. As unidades que perdem alguns setores nem sempre as perdem, mas a causa geralmente é uma unidade muito usada que fica magneticamente mole ou falha de cabeçotes / motores, resultando em leituras / gravações imprecisas ou com falha. A decisão final depende de você, é claro: com base no valor dos dados no inversor e na confiabilidade necessária dos sistemas em que é executado, você pode decidir mantê-lo. Eu tenho algumas unidades com blocos defeituosos conhecidos que rodam com avisos SMART há anos no meu servidor de arquivos, mas eles são salvos em um cronograma para que eu possa lidar com uma falha total sem muita dor.

Zac B
fonte
4
Alguma idéia de por que o -bpadrão é 1024? Isso parece meio estranho para mim. Por que não 512?
Ryan J
6
@RyanJ 1024 é o tamanho mínimo de bloco para ext2. badblocks faz parte do e2fsprogs e foi originalmente planejado para preencher a lista de bad blocks de um sistema de arquivos ext2. Você deve executá-lo com o mesmo tamanho de bloco do FS para obter os números no formato correto para mkfs.ext2. TL; DR: razões históricas com as quais você não deve se preocupar.
sourcejedi
BUUUTT, @Zac B disse: "Se -b estiver definido como algo maior que o tamanho do seu bloco, a integridade dos resultados de badblocks poderá ser comprometida" 1024> 512. Entendo como o 513 pode fazer com que algum bytest não seja verificado. Mas talvez deva ser reafirmado "Se -b estiver definido como algo maior que o tamanho do seu bloco E NÃO MESMO MÚLTIPLO, a integridade dos resultados dos badblocks poderá ser comprometida". O que você diz pôster original, outras pessoas mais inteligentes que eu?
Billy C.
4

1) Se o seu disco moderno usa outro tamanho de setor que não seja 512b - é necessário definir esse tamanho com a -bopção (ie -b 4096). Sem essa opção, seu cheque será muito mais lento, pois cada setor real será tentado várias vezes (8 vezes no caso do setor 4k). Também como mencionado Olivier Dulac no comentário à pergunta -block is indeed 1 block, and not 1/2 or 1/4th or even 2 (or more) blocks.

A opção -cimplica em quantos setores tentam ao mesmo tempo. Pode ter alguma implicação no desempenho e o valor desse desempenho pode depender de um modelo de disco específico.

2) write-mode test- No meu entender, só será verificado se você possui um erro grave ou grave (também conhecido como Degradação silenciosa de dados, podridão de bits, deterioração da mídia de armazenamento, setores UNC)

3) Eu não confiaria no relatório SMART no momento. É mais importante como os valores mudam com o tempo. Também aqui estão as pesquisas do Google Failure Trends em uma grande população de unidades de disco e aqui estão algumas discussões sobre isso. Aqui é citado a partir de pesquisa:

Apesar dessa alta correlação, concluímos que é improvável que os modelos baseados apenas nos parâmetros SMART sejam úteis para prever falhas de unidades individuais.

Com relação a outras menções para substituição de disco - você pode não ter um problema de disco rígido ruim, mas a Degradação silenciosa de dados (rotação de bits, deterioração da mídia de armazenamento, setores UNC). Nesse caso, não faz sentido substituir o disco, mas é útil executar a leitura / gravação dos mesmos dados no disco. Você pode ver aqui como isso pode ser resolvido.

Se você tiver um erro grave ou grave, tente reparticionar a unidade da mesma maneira que a área ruim está localizada fora de qualquer partição. Para mim, essa abordagem foi útil e esse disco ruim foi usado por muito tempo sem problemas.

Broomerr
fonte
A primeira frase está errada, o -bpadrão é 1024. Se o seu disco usa um tamanho de setor diferente de 1024, o que é bastante comum fora dos sistemas de arquivos ext2, você deve especificar isso.
Hashim
1

Eu deixaria -b e -c como padrão, a menos que você tenha um motivo específico para alterá-los. Você provavelmente pode definir -b como 4096 se o seu disco tiver tamanhos de bloco de 4k.

Eu sugiro que você execute primeiro badblocks com o teste rw não destrutivo. Se encontrar setores defeituosos, o disco está quebrado e deve ser substituído. Se NÃO encontrar nenhum bloco defeituoso no não destrutivo, mas você ainda suspeitar que ele tenha um defeito, execute o teste destrutivo rw.

Por fim, quantas realocações do setor SMART são aceitáveis ​​/ as unidades com contagens de realocação diferentes de zero devem ser substituídas imediatamente?

Eu substituiria a unidade assim que os setores fossem substituídos.

Thomas
fonte
2
Eu substituiria a unidade assim que os setores fossem substituídos. como você sabe que os blocos estão indo mal na operação normal? Você recebe um sinal de alguma maneira?
Alexis Wilke
5
Você precisa monitorar os logs SMART.
Ярослав Рахматуллин
11
a menos que você tenha um motivo específico para alterá-los . Como ter um tamanho de bloco diferente do padrão 1024, o que é muito comum?
Carcamano 7/03
1

Isso vai para a diferença entre o modo de leitura de badblocks (não destrutivo) e o modo de gravação (destrutivo):

Uma unidade realocará apenas um setor defeituoso quando uma gravação falhar. Os erros de leitura dos arquivos só são "corrigidos" quando é feita uma tentativa de reescrever o arquivo. De outra forma. o bloco inválido permanece parte do arquivo, supondo que você possa recuperar algo. Os erros de leitura para tabelas de partição só podem ser "corrigidos" executando blocos defeituosos no modo de gravação e recriando a partição

Portanto, o modo de leitura informa onde estão os blocos defeituosos, mas não pode fazer nada sobre eles. O modo de gravação testa a integridade de cada setor e fará com que o disco aloque um bloco inválido, mas às custas da destruição dos dados. Faça sua escolha.

David Miller
fonte
0

Para responder sua segunda pergunta sobre setores remapeados, isso depende. Estou falando do contexto de um usuário doméstico que (ocasionalmente) monitora esse tipo de coisa.

  • Quão críticos são os dados armazenados na unidade?
  • O que é perdido se a unidade de repente cair de barriga para baixo?
  • Os dados são copiados em outro local?
  • A unidade é membro de um RAID em que a perda da unidade tem um impacto mínimo?
  • O número de setores remapeados está crescendo?

Aqui estão duas situações que enfrentei. Eu tinha um RAID5 de 6 unidades de 200 GB. Após uma falha de energia que resultou em luzes piscando, uma unidade mostrou 14 setores remapeados e registrou vários erros. Eu assisti a unidade e não houve mais erros registrados e a contagem do setor remapeado permaneceu estável. Concluí que a unidade sofria devido a um transiente de potência e não estava falhando. Continuei usando-o por anos. O RAID5 original foi retirado, mas eu tenho duas dessas unidades em serviço com cerca de 10 anos de energia em horas. Eles têm um punhado de setores remapeados. Eu uso dois deles espelhados para armazenar despejos de backup incrementais do meu backup principal. Dessa forma, o backup principal está vendo (principalmente) operações de leitura e as gravações estão indo para dispositivos diferentes. Se uma dessas unidades antigas falhar, a outra deve continuar. Se ambos falharem, Substituí-los por outra coisa e executar novamente o script de backup. O impacto se uma dessas unidades falhar é próximo de zero, então não me preocupo com setores remapeados.

Eu tinha um HD de 2 TB que era um de um par de unidades espelhadas e que começou a crescer setores remapeados. No começo, eram dezenas, depois centenas, depois milhares. Isso durou um período de anos. A outra unidade do par permaneceu saudável e, de fato, a derivação que falhou lentamente não foi eliminada da matriz. Eventualmente, substituí as duas unidades por 6 TB e a crescente contagem de setores remapeados se tornou um problema. Eu ainda tenho a unidade e ela ainda "funciona", mesmo com cerca de 4500 setores remapeados. Coloquei unidades como essa em um sistema de teste (como membro do RAID) para ver o que acontece quando alguém realmente morre. Eu tive algumas oportunidades de trabalhar com isso e, em todas as circunstâncias, a substituição ocorreu sem drama.

Eu tive uma falha na unidade no meu servidor de arquivos de backup principal. Não produziu nenhum aviso avançado, apenas parou de responder aos comandos SATA. Era membro de um ZFS RAIDZ2 e o substituí sem nenhum drama. De fato, no meu servidor de teste, substituí as unidades com falha sem desligar ou reiniciar o servidor.

Mais um ponto a ser observado, eu tenho backups no local e fora do local de todos os dados importantes. Se algum sistema for perdido, há duas cópias dos dados em outro lugar.

HankB
fonte