O que o teste SMART faz e como funciona?

27

man smartctl estados (SNIPPED por brevidade):

A primeira categoria , chamada teste "online". A segunda categoria de teste é chamada de teste "offline". Normalmente, o disco suspende o teste offline enquanto os acessos estão ocorrendo e, em seguida, o reinicia automaticamente quando o disco fica ocioso. A terceira categoria de teste (e a única categoria para a qual a palavra 'teste' é realmente uma escolha apropriada) é o teste "auto".

Ativa ou desativa o teste offline automático SMART, que verifica a unidade a cada quatro horas em busca de defeitos no disco. Este comando pode ser dado durante a operação normal do sistema.

Quem executa o firmware do test-drive? Que tipo de testes são esses - o firmware lê / grava no disco - o que exatamente acontece? É seguro invocar o teste enquanto estiver no sistema operacional (linux) ou pode-se agendar um teste para mais tarde - como isso acontece - quando você reinicia o sistema operacional no prompt do BIOS ('teste offline')? Onde os resultados são exibidos - registros SMART?

Restabelecer Monica - M. Schröder
fonte

Respostas:

38
  1. O firmware da unidade executa os testes.

  2. Os detalhes dos testes podem ser lidos em, por exemplo, www.t13.org/Documents/UploadedDocuments/technical/e01137r0.pdf, que resume os elementos dos testes curtos e longos assim:

    1. um segmento elétrico em que o inversor testa seus próprios componentes eletrônicos. Os testes específicos neste segmento são específicos do fornecedor, mas como exemplos: esse segmento pode incluir testes como um teste de RAM de buffer, um teste de circuito de leitura / gravação e / ou um teste dos elementos do cabeçote de leitura / gravação.

    2. um segmento de busca / servo em que o inversor testa sua capacidade de encontrar e servo em trilhas de dados. A metodologia específica usada neste teste também é específica do fornecedor.

    3. um segmento de verificação de leitura / verificação em que a unidade executa a verificação de leitura de alguma parte da superfície do disco. A quantidade e a localização da superfície digitalizada dependem da restrição de tempo de conclusão e são específicas do fornecedor.

    4. Os critérios para o autoteste estendido são os mesmos do autoteste curto, com duas exceções: o segmento (3) do autoteste estendido deve ser uma verificação de leitura / verificação de toda a área de dados do usuário e não há limite de tempo máximo para o inversor executar o teste.

  3. É seguro executar testes não destrutivos enquanto o sistema operacional estiver em execução, embora seja provável que haja algum impacto no desempenho. Como a smartctlpágina de manual diz para ambos -t shorte -t long,

Este comando pode ser dado na operação normal do sistema (a menos que seja executado no modo cativo)

Se você chamar o modo cativo com -C, smartctlassume que a unidade pode ser ocupada até a indisponibilidade. Isso não deve ser feito em uma unidade que o sistema operacional está usando.

Como a página de manual também sugere, o teste offline (que significa simplesmente teste periódico em segundo plano) não é confiável e nunca se tornou oficialmente parte das especificações do ATA. Eu corro o meu do cron, em vez disso; Dessa forma, eu sei quando eles devem acontecer e posso parar se precisar.

  1. Os resultados podem ser vistos na smartctlsaída. Aqui está um com um teste em execução:
[imagens root @ risby] # smartctl -a / dev / sdb
smartctl 6.4 - 04/04/2015 - r4109 [x86_64-linux-4.1.6-201.fc22.x86_64] (compilação local)
Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org
[...]
Número de revisão 1 da estrutura de log de autoteste SMART
Num Test_Description Status Tempo restante da vida útil (horas) LBA_of_first_error
Nº 1 offline estendido concluído sem erro 00% 20567 -
# 2 Estendido offline concluído sem erro 00% 486 -

Número de revisão 0 da estrutura de dados de log de autoteste seletivo SMART
Nota: o número de revisão não 1 implica que nenhum autoteste seletivo foi executado
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
   1 0 0 Self_test_in_progress [90% restantes] (0-65535)
   2 0 0 Não_teste
   3 0 0 Não_teste
   4 0 0 Não_teste
   5 0 0 Não_teste

Observe dois testes concluídos anteriores (com 486 e 20567 horas de inicialização, respectivamente) e o atual em execução (10% concluído).

MadHatter apoia Monica
fonte
1
Além disso, se você usar o smartmontools, o daemon smartd poderá lidar com os testes periódicos sem a necessidade de um cronjob. Ele também lidará com o relatório de problemas de unidade, embora um monitoramento proativo possa ser preferido.
GnP
8

As implementações SMART são dependentes do fabricante, às vezes logs bastante extensos estão disponíveis via smart -acomando. Aqui está o que eu recebo em uma das minhas unidades de criptografia automática da Hitachi :

SMART Error Log Version: 1
ATA Error Count: 3

Error 3 occurred at disk power-on lifetime: 2543 hours (105 days + 23 hours)
When the command that caused the error occurred, the device was active or idle.

After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
10 51 08 00 08 00 00  Error: IDNF at LBA = 0x00000800 = 2048

Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
-- -- -- -- -- -- -- --  ----------------  --------------------
60 08 68 00 08 00 40 00      00:00:06.139  READ FPDMA QUEUED
27 00 00 00 00 00 e0 00      00:00:06.126  READ NATIVE MAX ADDRESS EXT
ec 00 00 00 00 00 a0 00      00:00:06.125  IDENTIFY DEVICE
ef 03 46 00 00 00 a0 00      00:00:06.125  SET FEATURES [Set transfer mode]
27 00 00 00 00 00 e0 00      00:00:06.125  READ NATIVE MAX ADDRESS EXT
...

Este white paper lança alguma luz sobre os códigos de erro que aparecem no log. As abreviações de erro comuns são:

  • AMNF - Marca de endereço não encontrada
  • TONF - Faixa 0 não encontrada
  • ABRT - Comando abortado
  • IDNF - ID do setor não encontrado
  • UNC - Dados incorrigíveis
  • BBK - Marca de bloco inválida

No meu caso, o erro IDNF (ID não encontrado) pode ser rastreado até um incidente quando a unidade foi conectada via adaptador USB-SATA e ficou com pouca energia, o que impediu que ela procurasse corretamente.

Dmitry Grigoryev
fonte