Como posso verificar a integridade de um meio de armazenamento (disco rígido ou unidade flash)?

45

Eu encontrei (pessoalmente ou por procuração) um monte de mídia de armazenamento que exibia problemas físicos durante sua vida. Discos rígidos, unidades de estado sólido e outras mídias de armazenamento flash falham após algum tempo. A situação é pior com unidades flash USB e cartões de memória, devido à grande quantidade de fornecedores com qualidade de célula flash e controlador de flash inferior.

Como posso detectar de forma confiável se uma unidade de armazenamento sofre danos físicos?

Note que esta questão não é sobre a integridade do sistema de arquivos (que pode ser verificada com fsck(8) ).

    
por David Foerster 20.10.2014 / 04:14

4 respostas

56

Em toda essa resposta, presumimos que uma unidade de armazenamento aparece como um dispositivo de bloco no caminho /dev/sdc . Para encontrar o caminho de uma unidade de armazenamento em nossa configuração atual, use:

  • Discos do Gnome (anteriormente conhecido como Gnome Disk Utility, também conhecido como palimpsest ), se uma GUI estiver disponível, ou
  • no terminal, observe a saída de lsblk e ls -l /dev/disk/by-id e tente encontrar o dispositivo certo por tamanho, particionamento, fabricante e nome do modelo.

Verificação básica

  • detecta apenas mídias totalmente sem resposta
  • quase instantâneo (a menos que o meio esteja corrompido ou quebrado)
  • seguro
  • funciona em mídia somente leitura (por exemplo, CD, DVD, BluRay)

Às vezes, um meio de armazenamento simplesmente se recusa a funcionar. Ele ainda aparece como um dispositivo de bloco no kernel e no gerenciador de disco, mas seu primeiro setor que mantém a tabela de partição não é legível. Isso pode ser verificado facilmente com:

sudo dd if=/dev/sdc of=/dev/null count=1

Se este comando resultar em uma mensagem sobre um “erro de entrada / saída”, nossa unidade está quebrada ou falha em interagir com o kernel Linux como esperado. No primeiro caso, com um pouco de sorte, um especialista em recuperação de dados com um laboratório devidamente equipado pode salvar seu conteúdo. Neste último caso, vale a pena tentar um sistema operacional diferente. (Eu me deparei com drives USB que funcionam no Windows sem drivers especiais, mas não no Linux ou OS X).

S.M.A.R.T. auto-teste

  • meticulosidade ajustável
  • instantâneo para lento ou lento (depende da profundidade do teste)
  • seguro
  • avisa sobre possíveis falhas no futuro próximo

Dispositivos que o suportam, podem ser consultados sobre sua saúde por meio de SMART ou instruídos a realizar autotestes de integridade de diferentes meticulosidade. Geralmente, esta é a melhor opção, mas geralmente está disponível apenas em discos rígidos (não antigos) e unidades de estado sólido. A maioria das mídias flash removíveis não é compatível.

Mais recursos e instruções:

  • Resposta sobre S.M.A.R.T. sobre esta questão
  • Como posso verificar o status SMART de uma unidade no Ubuntu 14.04 até 16.10?

Verificação somente leitura

  • detecta apenas alguns erros de mídia flash
  • bastante confiável para discos rígidos
  • lento
  • seguro
  • funciona em mídia somente leitura (por exemplo, CD, DVD, BluRay)

Para testar a integridade da leitura de todo o dispositivo sem gravar, podemos usar badblocks(8) assim:

sudo badblocks -b 4096 -c 4096 -s /dev/sdc

Esta operação pode levar muito tempo, especialmente se a unidade de armazenamento estiver danificada. Se a contagem de erros ultrapassar zero, saberemos que há um bloqueio incorreto. Podemos seguramente abortar a operação a qualquer momento (mesmo que forçosamente como durante uma falta de energia), se não estivermos interessados ​​na quantidade exata (e talvez na localização) de blocos defeituosos. É possível cancelar automaticamente em erro com a opção -e 1 .

Nota para uso avançado: se quisermos reutilizar a saída para e2fsck , precisamos definir o tamanho do bloco ( -b ) como o do sistema de arquivos contido. Também podemos ajustar a quantidade de dados ( -c , em blocos) testados de uma vez para melhorar o rendimento; 16 MiB deve estar bem para a maioria dos dispositivos.

Verificação não destrutiva de leitura / gravação

  • muito completo
  • mais lento
  • bastante seguro (salvo uma falha de energia ou pânico intermitente do kernel)

Às vezes, especialmente com mídia flash, ocorre um erro ao tentar escrever. (Isso não detectará de forma confiável (em flash) a mídia, que anuncia um tamanho maior do que realmente possui; use Luta contra a fraude em Flash em vez disso.)

  • NUNCA use isso em uma unidade com sistemas de arquivos montados ! badblocks se recusa a operar neles, a menos que você o force.

  • Não interrompa esta operação forcefully ! Ctrl + C (SIGINT / SIGTERM) e esperar por finalização prematura graciosa é ok, mas killall -9 badblocks (SIGKILL) não é. Após o término forçado, badblocks não poderá restaurar o conteúdo original do intervalo de blocos atualmente testado, deixando-o sobrescrito com dados indesejados e, possivelmente, corrompendo o sistema de arquivos.

Para usar verificações não destrutivas de leitura / gravação, adicione a opção -n ao comando badblocks acima.

Verificação de leitura / escrita destrutiva

  • muito completo
  • mais lento
  • APAGA TODOS OS DADOS NA UNIDADE

Como acima, mas sem restaurar o conteúdo anterior da unidade depois de realizar o teste de gravação, é um pouco mais rápido.Como os dados são apagados de qualquer forma, a terminação forçada permanece sem conseqüências negativas (adicionais).

Para usar verificações destrutivas de leitura / gravação, adicione a opção -w ao comando badblocks acima.

    
por David Foerster 20.10.2014 / 04:14
18

IMO smartctl é uma ferramenta melhor.

Você provavelmente precisará instalá-lo primeiro

sudo apt-get install smartmontools 

Então

sudo smartctl -a /dev/sda | less

para imprimir dados de integridade da unidade, atributos e resultados de testes disponíveis. Para sair menos, digite q . Alternativamente

sudo smartctl -H /dev/sda

para imprimir apenas dados de saúde.

Para iniciar um novo autoteste curto (alguns minutos) ou longo (até muitas horas) em segundo plano:

sudo smartctl -t [short|long]

GSsmartControl e Gnome Disks são interfaces gráficas, se você preferir.

Ссылка

Veja também Ссылка
Ссылка
Ссылка

    
por Panther 20.10.2014 / 04:26
7

F3 (Fight Flash Fraud) é outra opção que também deve detectar flash drives falsos (pen drives cuja capacidade real é uma fração da capacidade anunciada):

  1. Insira sua unidade
  2. Instalar o F3

    sudo apt-get install f3
    
  3. Grava dados de teste no espaço livre na unidade

    f3write /media/$USER/D871-DD7C/
    
  4. Leia os dados de teste

    f3read /media/$USER/D871-DD7C/
    

O Badblocks funciona bem, mas não foi projetado para detectar flash drives falsos e pode não relatar erros para eles .

    
por bmaupin 28.08.2015 / 21:48
4

Você pode testar o disco inteiro enquanto mostra um indicador de progresso:

time sudo pv /dev/sdc >/dev/null

Certos problemas de disco se manifestariam como erros de E / S reportados. Isso é um pouco melhor do que dd devido ao indicador de progresso e porque a interface de linha de comando é um pouco mais padrão e um pouco menos propenso a erros de digitação . Note que pv é basicamente uma versão melhorada de cat . Pode não ser instalado por padrão, mas pode ser instalado com sudo apt-get install pv .

Uma abordagem semelhante é ler o disco com uma das várias ferramentas disponíveis que estão especificamente cientes dos erros de E / S de disco - e têm o recurso de "tentar muito salvar os dados". Pesquise ddrescue no gerenciador de pacotes.

    
por nobar 01.11.2015 / 07:44