Diagnosticar se uma unidade é confiável por meio de atributos SMART

Diagnosticar se uma unidade é confiável por meio de atributos SMART

Estou tentando descobrir se meu disco rígido está morrendo. Eu pesquisei os valores inteligentes e parece que sim, mas ele ainda lê e grava dados perfeitamente e nenhum novo erro aparece.

Costumava haver um 197 Current_Pending_Sectorvalor de 8, mas depois de zerar o drive o valor reverteu para 0 e 196 Reallocated_Event_Counté 0.

Isso significa que não há problema com a unidade em si e que foi um problema temporário do sistema?

Também é preocupante 188 Command_Timeoutqual tem o valor 1, definido como:

A contagem de operações abortadas devido ao tempo limite do HDD. Normalmente, o valor deste atributo deve ser igual a zero e se o valor estiver muito acima de zero, provavelmente haverá problemas sérios com a fonte de alimentação ou com um cabo de dados oxidado.

Tenho feito alguma programação de baixo nível e tive que forçar o desligamento do computador cerca de 50 vezes.

Estou assumindo que o 191 G-Sense_Error_Ratevalor de 438 está bom, acho que isso se deve à movimentação do laptop enquanto o disco rígido está ligado.

O que é realmente engraçado é que minha partição do Windows parou de inicializar e não pôde ser montada em outra máquina Windows ou Linux, mas montou perfeitamente no OSX, permitindo-me recuperar meus arquivos. Eu reinstalei e copiei os dados desde então, e parece funcionar perfeitamente. OSX está em outra unidade.

H2O:~ jeremiah$ smartctl -a /dev/disk1
smartctl 6.3 2014-07-26 r3976 [x86_64-apple-darwin14.1.0] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Device Model:     HGST HTS541075A9E680
Serial Number:    JD13021X0A00GK
LU WWN Device Id: 5 000cca 764c48bc4
Firmware Version: JA2OA590
User Capacity:    750,156,374,016 bytes [750 GB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5400 rpm
Form Factor:      2.5 inches
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   ACS-2, ATA8-ACS T13/1699-D revision 6
SATA Version is:  SATA 3.0, 3.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Wed Mar 11 21:59:30 2015 PDT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x00) Offline data collection activity
                    was never started.
                    Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0) The previous self-test routine completed
                    without error or no self-test has ever 
                    been run.
Total time to complete Offline 
data collection:        (   45) seconds.
Offline data collection
capabilities:            (0x51) SMART execute Offline immediate.
                    No Auto Offline data collection support.
                    Suspend Offline collection upon new
                    command.
                    No Offline surface scan supported.
                    Self-test supported.
                    No Conveyance Self-test supported.
                    Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                    power-saving mode.
                    Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                    General Purpose Logging supported.
Short self-test routine 
recommended polling time:    (   2) minutes.
Extended self-test routine
recommended polling time:    ( 164) minutes.
SCT capabilities:          (0x003d) SCT Status supported.
                    SCT Error Recovery Control supported.
                    SCT Feature Control supported.
                    SCT Data Table supported.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   100   086   062    Pre-fail  Always       -       0
  2 Throughput_Performance  0x0025   100   100   040    Pre-fail  Offline      -       0
  3 Spin_Up_Time            0x0023   169   100   033    Pre-fail  Always       -       1
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       981
  5 Reallocated_Sector_Ct   0x0033   100   100   005    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x002f   100   100   067    Pre-fail  Always       -       0
  8 Seek_Time_Performance   0x0025   100   100   040    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0032   095   095   000    Old_age   Always       -       2586
 10 Spin_Retry_Count        0x0033   100   100   060    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       851
183 Runtime_Bad_Block       0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0033   100   100   097    Pre-fail  Always       -       0
187 Reported_Uncorrect      0x0032   100   001   000    Old_age   Always       -       144929376764360
188 Command_Timeout         0x0032   100   099   000    Old_age   Always       -       1
190 Airflow_Temperature_Cel 0x0022   069   050   045    Old_age   Always       -       31 (Min/Max 24/31)
191 G-Sense_Error_Rate      0x0032   099   099   000    Old_age   Always       -       438
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       2031647
193 Load_Cycle_Count        0x0032   089   089   000    Old_age   Always       -       115337
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0036   100   100   000    Old_age   Always       -       0
223 Load_Retry_Count        0x002a   100   100   000    Old_age   Always       -       0

SMART Error Log Version: 1
ATA Error Count: 456 (device log contains only the most recent five errors)
    CR = Command Register [HEX]
    FR = Features Register [HEX]
    SC = Sector Count Register [HEX]
    SN = Sector Number Register [HEX]
    CL = Cylinder Low Register [HEX]
    CH = Cylinder High Register [HEX]
    DH = Device/Head Register [HEX]
    DC = Device Command Register [HEX]
    ER = Error register [HEX]
    ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 456 occurred at disk power-on lifetime: 2549 hours (106 days + 5 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
  -- -- -- -- -- -- --
  40 51 08 38 8d 62 00  Error: UNC 8 sectors at LBA = 0x00628d38 = 6458680

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 08 38 8d 62 40 00      00:00:34.282  READ DMA EXT
  25 00 08 38 8d 62 40 00      00:00:30.471  READ DMA EXT
  25 00 08 38 8d 62 40 00      00:00:26.660  READ DMA EXT
  25 00 08 38 8d 62 40 00      00:00:22.849  READ DMA EXT
  2f 00 01 10 00 00 00 00      00:00:22.849  READ LOG EXT

Error 455 occurred at disk power-on lifetime: 2549 hours (106 days + 5 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
  -- -- -- -- -- -- --
  40 51 08 38 8d 62 00  Error: UNC 8 sectors at LBA = 0x00628d38 = 6458680

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 08 38 8d 62 40 00      00:00:30.471  READ DMA EXT
  25 00 08 38 8d 62 40 00      00:00:26.660  READ DMA EXT
  25 00 08 38 8d 62 40 00      00:00:22.849  READ DMA EXT
  2f 00 01 10 00 00 00 00      00:00:22.849  READ LOG EXT
  60 08 a8 38 8d 62 40 00      00:00:19.060  READ FPDMA QUEUED

Error 454 occurred at disk power-on lifetime: 2549 hours (106 days + 5 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
  -- -- -- -- -- -- --
  40 51 08 38 8d 62 00  Error: UNC 8 sectors at LBA = 0x00628d38 = 6458680

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 08 38 8d 62 40 00      00:00:26.660  READ DMA EXT
  25 00 08 38 8d 62 40 00      00:00:22.849  READ DMA EXT
  2f 00 01 10 00 00 00 00      00:00:22.849  READ LOG EXT
  60 08 a8 38 8d 62 40 00      00:00:19.060  READ FPDMA QUEUED
  60 08 a0 30 8d 62 40 00      00:00:19.059  READ FPDMA QUEUED

Error 453 occurred at disk power-on lifetime: 2549 hours (106 days + 5 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
  -- -- -- -- -- -- --
  40 51 08 38 8d 62 00  Error: UNC 8 sectors at LBA = 0x00628d38 = 6458680

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 08 38 8d 62 40 00      00:00:22.849  READ DMA EXT
  2f 00 01 10 00 00 00 00      00:00:22.849  READ LOG EXT
  60 08 a8 38 8d 62 40 00      00:00:19.060  READ FPDMA QUEUED
  60 08 a0 30 8d 62 40 00      00:00:19.059  READ FPDMA QUEUED
  60 08 98 28 8d 62 40 00      00:00:19.059  READ FPDMA QUEUED

Error 452 occurred at disk power-on lifetime: 2548 hours (106 days + 4 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
  -- -- -- -- -- -- --
  40 41 08 38 8d 62 00  Error: UNC at LBA = 0x00628d38 = 6458680

  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 a8 38 8d 62 40 00      00:00:19.060  READ FPDMA QUEUED
  60 08 a0 30 8d 62 40 00      00:00:19.059  READ FPDMA QUEUED
  60 08 98 28 8d 62 40 00      00:00:19.059  READ FPDMA QUEUED
  60 08 90 20 8d 62 40 00      00:00:19.059  READ FPDMA QUEUED
  60 08 88 18 8d 62 40 00      00:00:19.059  READ FPDMA QUEUED

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

Responder1

Costumava haver um valor 197 Current_Pending_Sector de 8, mas depois de zerar a unidade, o valor foi revertido para 0 e 196 Reallocated_Event_Count é 0.

Isso significa que em determinado momento a unidade teve problemas para ler alguns setores, mas não teve nenhum problema com eles desde que você zerou a unidade. Quando você substituiu toda a unidade com dados novos, os setores passaram de realocação pendente para normal e, presumivelmente, a unidade ficou satisfeita com a gravação porque os setores não foram realocados naquele ponto. Você deve executar um longo autoteste SMART (que normalmente inclui uma verificação de superfície) para verificar, mas pode muito bem ter sido uma falha, talvez relacionada à movimentação do computador enquanto a unidade estava funcionando.

Também preocupante é 188 Command_Timeout que tem um valor de 1, definido como:

Não vale a pena se preocupar. A unidade relata quase 2.600 horas de inicialização e registrou um único tempo limite de comando nesse período. Os tempos limite de comando são tratados pelos sistemas operacionais, repetindo o comando com falha ou falhando na operação de E/S; portanto, se esse for um problema persistente, você saberá disso. Pode estar relacionado aos 8 setores pendentes ou não.

Eu me preocuparia se isso começasse a aumentar visivelmente, mas o número de tempos limite de um dígito sem outros sinais de problemas com a operação do sistema não me preocuparia.

Tenho feito alguma programação de baixo nível e tive que forçar o desligamento do computador cerca de 50 vezes.

Isso não deve afetar a unidade física em nenhum nível com o qual valha a pena se preocupar, embora possa afetar a consistência lógica dos dados (corrupção do sistema de arquivos, etc.).

Também, deserragemcomentário de:

Você deve executar os autotestes curtos e estendidos. O grande número de erros ID#187 Reported_Uncorrect indica um problema. Parece que houve um enxame de erros de leitura incorrigíveis cerca de 40 horas atrás.

Isto é um bom argumento, masnão sabemos a codificação do valor bruto.O que podemos dizer é que o “valor” é atualmente um 100 normalizado, com um valor pior visto de 1 e um limite (para relatar que a unidade falhou ou que a falha é iminente) de 0. Ou seja,Atualmentea unidade não considera que esse valor seja motivo de preocupação. E os erros de leitura 1.45e14 parecem quase impossivelmente altos; como ele próprio admite, a unidade tem cerca de (750 GB a 4 KiB/setor) 183.000 setores. Para obter o número de falhas de leitura relatado como valor bruto, cada setor teria que falhar 791.000 vezes nas 2.586 horas de inicialização relatadas, ou uma falha de leitura total dointeirosuperfície a cada 11 segundos. Este é simplesmente um número ridículo (em dez segundos você seria capaz delerapenas uma pequena fração de toda a superfície do disco), portanto podemos concluir com segurança que para esta unidade e atributo 187, com um alto grau de certeza,o valor bruto éAlguma outra coisado que uma simples contagem de inteiros.Pode ser que o valor bruto seja dividido em duas partes, com os bits altos ou baixos codificando o valor real e os outros bits codificando outra coisa. O valor hexadecimal do valor bruto desse atributo é 83D0 0005 01C8, onde a sequência de zeros no meio indica tal codificação; embora seja certamente possível, parece improvável que uma contagem de erros aleatórios tenha uma sequência tão longa de zeros no meio. Se, por exemplo, pegarmos os bits mais baixos (501C8 hex), isso resulta em 328.136 erros relatados, o que, embora ainda pareça bastantemuitomais crível.

Resumindo,O SMART pode ser uma ótima ferramenta de monitoramento, mas não foi projetado para detectar e relatar todos os problemas. Algumas unidades funcionam alegremente mesmo muito depois de a SMART indicar que deveriam estar completamente mortas, e algumas unidades falham catastroficamente, embora a SMART diga que tudo está ótimo mesmo após a falha. Considere os dados SMART como eles são, um sistema de alerta precoce e um relatório de status,nãoalgum tipo de verdade absoluta sobre a saúde da unidade. Além disso, você deve ler os valores brutos com um olhar crítico, pois a codificação deles é definida pela implementação.Em vez de,você deve observar como o "valor" relatado se compara ao valor "limite" da unidade, já que estes devem ser definidos de forma significativa para a unidade específica pelo fabricante.

Se você está preocupado com os setores pendentes anteriores (que basicamente significam "difíceis de ler"),execute uma varredura completa da superfície por meio do SMART.Se eles retornarem como "pendentes", talvez valha a pena considerar a possibilidade de substituir a unidade, mas o simples fato é que quase todas as unidades desenvolverãoalgunssetores defeituosos ao longo de sua vida útil e possui vários setores sobressalentes para compensar isso, realocando os setores defeituosos. A realocação exige que os dados sejam conhecidos, portanto, se um setor falhar, ele só poderá ser realocado durante uma gravação nesse setor.

informação relacionada