O que o teste SMART faz e como funciona?

25

man smartctl states (SNIPPED por brevidade):

The first category, called "online" testing. The second category of testing is called "offline" testing. Normally, the disk will suspend offline testing while disk accesses are taking place, and then automatically resume it when the disk would otherwise be idle. The third category of testing (and the only category for which the word ´testing´ is really an appropriate choice) is "self" testing.

Enables or disables SMART automatic offline test, which scans the drive every four hours for disk defects. This command can be given during normal system operation.

Quem executa o firmware da unidade de teste? Que tipo de testes são esses - o firmware lê / escreve em 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 ocorre - quando você reinicializa o sistema operacional no prompt do BIOS ('teste offline')? Onde os resultados são exibidos? Registros SMART?

    
por Martin Schröder 29.10.2015 / 07:18

2 respostas

36
  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 de curto e longo prazo:

    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: este segmento pode incluir testes como um teste RAM de buffer, um teste de circuitos de leitura / gravação e / ou um teste dos elementos principais de leitura / gravação.

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

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

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

  3. É seguro executar testes não destrutivos enquanto o SO está em execução, embora seja provável algum impacto no desempenho. Como a página smartctl man diz para -t short e -t long ,

This command can be given in normal system operation (unless run in captive mode)

Se você invocar o modo em cativeiro com -C , smartctl assumirá que a unidade pode estar indisponível na indisponibilidade. Isso deve não ser feito em uma unidade que o sistema operacional esteja usando.

Como a página man também sugere, o teste off-line (que simplesmente significa teste de fundo periódico) 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 deveriam acontecer, e eu posso pará-lo se eu precisar.

  1. Os resultados podem ser vistos na saída smartctl . Aqui está um com um teste em execução:
[root@risby images]# smartctl -a /dev/sdb
smartctl 6.4 2015-06-04 r4109 [x86_64-linux-4.1.6-201.fc22.x86_64] (local build)
Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org
[...]
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)   LBA_of_first_error
# 1  Extended offline    Completed without error       00%     20567         -
# 2  Extended offline    Completed without error       00%       486         -

SMART Selective self-test log data structure revision number 0
Note: revision number not 1 implies that no selective self-test has ever been run
SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
   1        0        0  Self_test_in_progress [90% left] (0-65535)
   2        0        0  Not_testing
   3        0        0  Not_testing
   4        0        0  Not_testing
   5        0        0  Not_testing

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

    
por 29.10.2015 / 08:06
7

As implementações SMART dependem do fabricante, por vezes, logs bastante extensos estão disponíveis através do comando smart -a . Aqui está o que eu recebo em uma das minhas unidades de auto-criptografia de 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. Abreviações de erros comuns são:

  • AMNF - marca de endereço não encontrada
  • TONF - Faixa 0 não encontrada
  • ABRT - Comando anulado
  • IDNF - ID do setor não encontrado
  • UNC - Dados incorrigíveis
  • BBK - marca de bloqueio incorreta

No meu caso, o erro IDNF (ID Not Found) pode ser rastreado até um incidente quando a unidade foi conectada via adaptador USB-para-SATA e por acaso estava com pouca potência, o que impedia que ele procurasse corretamente.

    
por 29.10.2015 / 11:07