GNU/Linux >> Linux の 問題 >  >> Linux

LinuxでのSSDの状態の監視とテスト

S.M.A.R.T.とは何ですか?

頭いい。 –自己監視、分析、およびレポートテクノロジ用—は、ハードディスクドライブやSSDなどのストレージデバイスに組み込まれているテクノロジであり、その目標はそれらのヘルスステータスを監視することです。

実際には、S.M.A.R.T。読み取りエラーの数、ドライブの起動時間、さらには環境条件など、通常のドライブ操作中にいくつかのディスクパラメータを監視します。また、S.M.A.R.T。ドライブでオンデマンドテストを実行することもできます。

理想的には、S.M.A.R.T。 予測可能を予測できるようになります ディスク表面の機械的摩耗や劣化、および予測不可能によって引き起こされる障害などの障害 予期しない欠陥によって引き起こされた障害。ドライブは通常突然故障しないため、S.M.A.R.T。オペレーティングシステムまたはシステム管理者が、データが失われる前にドライブを交換できるように、すぐに故障するドライブを特定するためのオプションを提供します。

S.M.A.R.T。ではないものは何ですか?

それはすべて素晴らしいようです。ただし、S.M.A.R.T。水晶玉ではありません。 100%の精度で障害を予測することはできません。また、一方で、早期の警告なしにドライブが障害を起こさないことを保証することもできません。せいぜい、S.M.A.R.T。 可能性を推定するために使用する必要があります 失敗の。

故障予測の統計的性質を考えると、S.M.A.R.T。テクノロジーは、多数のストレージユニットを使用する企業に特に関心があり、S.M.A.R.T。の精度を推定するためにフィールド調査が実施されました。データセンターまたはサーバーファームでのディスク交換のニーズを予測するための問題が報告されました。

2016年、マイクロソフトとペンシルバニア州立大学はSSDに焦点を当てた調査を実施しました。

その研究によると、いくつかのS.M.A.R.T.属性は、差し迫った障害の良い指標です。論文は特に言及しています:

再割り当てされた(Realloc)セクター数:

基盤となるテクノロジーは根本的に異なりますが、SSDの世界では、ハードドライブの世界よりもその指標が重要であるように思われます。 SSDで使用されているウェアレベリングアルゴリズムのために言及する価値があります。いくつかのブロックが失敗し始めると、すぐに失敗する可能性がさらに高くなります。プログラム/消去(P / E)失敗数:

これは、ドライブがデータをクリアしたりブロックに保存したりできなかった、基盤となるフラッシュハードウェアの問題の症状です。製造工程に欠陥があるため、このようなエラーはほとんど予想できません。ただし、フラッシュメモリのクリア/書き込みサイクルの数には制限があります。したがって、イベント数の突然の増加は、ドライブが寿命の限界に達したことを示している可能性があり、さらに多くのメモリセルがすぐに故障することが予想されます。CRCおよび修正不可能なエラー(「データエラー」):

これらのイベントは、ストレージエラーまたはドライブの内部通信リンクの問題が原因で発生する可能性があります。このインジケーターは、修正済みの両方を考慮に入れます。 エラー(したがって、ホストシステムに問題が報告されることはありません)および未修正 エラー(したがって、ドライブがホストシステムに読み取ることができないと報告したブロック)。つまり、修正可能 エラーはホストオペレーティングシステムには表示されませんが、データをドライブファームウェアで修正する必要があるため、ドライブのパフォーマンスに影響を与え、セクターの再配置が発生する可能性があります。SATAダウンシフトカウント:

一時的な障害、ドライブとホスト間の通信リンクの問題、または内部ドライブの問題が原因で、SATAインターフェイスがより低い信号速度に切り替わる可能性があります。リンクを公称リンクレートより下にダウングレードすると、観測されたドライブのパフォーマンスに明らかな影響があります。特に古いドライブでは、低いシグナリングレートを選択することは珍しくありません。したがって、この指標は、先行する指標の1つまたは複数の存在と相関する場合に最も重要です。

調査によると、故障したSSDの62%が少なくともを示しました 上記の症状の1つ。ただし、そのステートメントを逆にすると、調査対象のSSDの38%がなしで失敗したことも意味します。 上記の症状のいずれかを示しています。故障したドライブが他のS.M.A.R.Tを示したかどうかについては、調査では言及されていません。失敗を報告したかどうか。したがって、これは、Googleの論文でハードドライブについて言及されている事前の通知なしの36%の障害と直接比較することはできません。

Microsoft / Pennsylvania State Universityの論文では、調査した正確なドライブモデルは開示されていませんが、著者によると、ほとんどのドライブは、数世代にわたる同じベンダーからのものです。

この調査では、異なるモデル間で信頼性に大きな違いがあることがわかりました。たとえば、調査した「最悪の」モデルは、最初の再配置エラーの9か月後に20%の失敗率を示し、データエラーの最初の発生から9か月後に最大36%の失敗率を示します。 「最悪の」モデルは、この論文で研究された古い世代のドライブでもあります。

一方、同じ症状の場合、最も若い世代のデバイスに属するドライブは、同じエラーに対してそれぞれ3%と20%の故障率しか示しません。これらの数値がドライブの設計と製造プロセスの改善によって説明できるのか、それとも単にドライブの経年劣化の影響であるのかを判断するのは困難です。

最も興味深いことに、そして私が以前にいくつかの考えられる理由を挙げましたが、この論文は、生の値ではなく、これは警告の指標と見なされるべき報告されたエラーの数の突然の増加であると述べています:

「」「SSDの障害に先行する症状の可能性が高く、激しい症状と急速な進行により、数か月を超える生存性が妨げられます」」

言い換えると、たまにS.M.A.R.T.報告されたエラーは、差し迫った障害の兆候とは見なされない可能性があります。ただし、正常なSSDがますます多くのエラーを報告し始めると、短期から中期の障害を予測する必要があります。

しかし、ハードドライブまたはSSDが正常であるかどうかを知る方法はありますか?好奇心を満たすため、またはドライブの監視を開始したい場合は、今度はsmartctlを紹介します。 監視ツール:

smartctlを使用してLinuxでSSDのステータスを監視する

Linuxでディスクを一覧表示する方法はありますが、S.M.A.R.Tを監視する方法があります。ディスクのステータスについては、smartctlをお勧めします ツール、smartmontoolの一部 パッケージ(少なくともDebian / Ubuntuでは)

sudo apt install smartmontools

smartctl はコマンドラインツールですが、特にサーバー上でデータ収集を自動化する場合は特に最適です。

smartctlを使用する場合の最初のステップ ディスクにS.M.A.R.Tがあるかどうかを確認することです。有効であり、ツールでサポートされています:

sh$ sudo smartctl -i /dev/sdb
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Momentus 7200.4
Device Model:     ST9500420AS
Serial Number:    5VJAS7FL
LU WWN Device Id: 5 000c50 02fa0b800
Firmware Version: D005SDM1
User Capacity:    500,107,862,016 bytes [500 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    7200 rpm
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS T13/1699-D revision 4
SATA Version is:  SATA 2.6, 3.0 Gb/s
Local Time is:    Mon Mar 12 15:54:43 2018 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

ご覧のとおり、私のラップトップの内蔵ハードドライブには確かにS.M.A.R.Tがあります。機能、およびS.M.A.R.T.サポートが有効になっています。では、S.MA.R.Tについてはどうでしょうか。状態?記録されたエラーはありますか?

「ディスクに関するすべてのSMART情報」の報告は、-aの仕事です。 オプション:

sh$ sudo smartctl -i -a /dev/sdb
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Momentus 7200.4
Device Model:     ST9500420AS
Serial Number:    5VJAS7FL
LU WWN Device Id: 5 000c50 02fa0b800
Firmware Version: D005SDM1
User Capacity:    500,107,862,016 bytes [500 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    7200 rpm
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS T13/1699-D revision 4
SATA Version is:  SATA 2.6, 3.0 Gb/s
Local Time is:    Mon Mar 12 15:56:58 2018 CET
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
See vendor-specific Attribute list for marginal Attributes.

General SMART Values:
Offline data collection status:  (0x82)    Offline data collection activity
                    was completed without error.
                    Auto Offline Data Collection: Enabled.
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:         (    0) seconds.
Offline data collection
capabilities:              (0x7b) SMART execute Offline immediate.
                    Auto Offline data collection on/off support.
                    Suspend Offline collection upon new
                    command.
                    Offline surface scan supported.
                    Self-test supported.
                    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:      ( 110) minutes.
Conveyance self-test routine
recommended polling time:      (   3) minutes.
SCT capabilities:            (0x103f)    SCT Status supported.
                    SCT Error Recovery Control supported.
                    SCT Feature Control supported.
                    SCT Data Table supported.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   111   099   006    Pre-fail  Always       -       29694249
  3 Spin_Up_Time            0x0003   100   098   085    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   095   095   020    Old_age   Always       -       5413
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       3
  7 Seek_Error_Rate         0x000f   071   060   030    Pre-fail  Always       -       51710773327
  9 Power_On_Hours          0x0032   070   070   000    Old_age   Always       -       26423
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   096   037   020    Old_age   Always       -       4836
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   072   072   000    Old_age   Always       -       28
188 Command_Timeout         0x0032   100   096   000    Old_age   Always       -       4295033738
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   056   042   045    Old_age   Always   In_the_past 44 (Min/Max 21/44 #22)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       184
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       104
193 Load_Cycle_Count        0x0032   001   001   000    Old_age   Always       -       395415
194 Temperature_Celsius     0x0022   044   058   000    Old_age   Always       -       44 (0 13 0 0 0)
195 Hardware_ECC_Recovered  0x001a   050   045   000    Old_age   Always       -       29694249
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       1
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       1
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       25131 (246 202 0)
241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       3028413736
242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       1613088055
254 Free_Fall_Sensor        0x0032   100   100   000    Old_age   Always       -       0

SMART Error Log Version: 1
ATA Error Count: 3
    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 3 occurred at disk power-on lifetime: 21171 hours (882 days + 3 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 00 ff ff ff 0f  Error: UNC at LBA = 0x0fffffff = 268435455

  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 00 08 ff ff ff 4f 00      00:45:12.580  READ FPDMA QUEUED
  60 00 08 ff ff ff 4f 00      00:45:12.580  READ FPDMA QUEUED
  60 00 08 ff ff ff 4f 00      00:45:12.579  READ FPDMA QUEUED
  60 00 08 ff ff ff 4f 00      00:45:12.571  READ FPDMA QUEUED
  60 00 20 ff ff ff 4f 00      00:45:12.543  READ FPDMA QUEUED

Error 2 occurred at disk power-on lifetime: 21171 hours (882 days + 3 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 00 ff ff ff 0f  Error: UNC at LBA = 0x0fffffff = 268435455

  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 00 00 ff ff ff 4f 00      00:45:09.456  READ FPDMA QUEUED
  60 00 00 ff ff ff 4f 00      00:45:09.451  READ FPDMA QUEUED
  61 00 08 ff ff ff 4f 00      00:45:09.450  WRITE FPDMA QUEUED
  60 00 00 ff ff ff 4f 00      00:45:08.878  READ FPDMA QUEUED
  60 00 00 ff ff ff 4f 00      00:45:08.856  READ FPDMA QUEUED

Error 1 occurred at disk power-on lifetime: 21131 hours (880 days + 11 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 00 ff ff ff 0f  Error: UNC at LBA = 0x0fffffff = 268435455

  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 00 00 ff ff ff 4f 00      05:52:18.809  READ FPDMA QUEUED
  61 00 00 7e fb 31 45 00      05:52:18.806  WRITE FPDMA QUEUED
  60 00 00 ff ff ff 4f 00      05:52:18.571  READ FPDMA QUEUED
  ea 00 00 00 00 00 a0 00      05:52:18.529  FLUSH CACHE EXT
  61 00 08 ff ff ff 4f 00      05:52:18.527  WRITE FPDMA QUEUED

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%     10904         -
# 2  Short offline       Completed without error       00%        12         -
# 3  Short offline       Completed without error       00%         0         -

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.
smartctlコマンドの出力を理解する

それは多くの情報であり、それらのデータを解釈することは必ずしも容易ではありません。最も興味深い部分は、おそらく「しきい値のあるベンダー固有のSMART属性」とラベル付けされた部分です。 。 S.M.A.R.Tによって収集されたさまざまな統計を報告します。デバイスを使用して、それらの値(現在または史上最悪)をベンダー定義のしきい値と比較できます。

たとえば、ディスクが再配置されたセクターを報告する方法は次のとおりです。

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       3

これは「事前失敗」属性であることがわかります。これは、属性が異常に対応していることを意味します。したがって、 if その属性がしきい値を超えています。これは、差し迫った障害の指標である可能性があります。もう1つのカテゴリは、「通常の着用」属性に対応する属性の「Old_age」です。

最後のフィールド(ここでは「3」)は、ドライブによって報告されたその属性の生の値に対応しています。通常、この数値には物理的な意味があります。ここで、これは再配置されたセクターの実際の数です。ただし、他の属性の場合は、摂氏での温度、時間または分での時間、またはドライブが特定の状態に遭遇した回数である可能性があります。

生の値に加えて、S.M.A.R.T。有効なドライブは、「正規化された」値(フィールド値、最悪およびしきい値)を報告する必要があります。これらの値は、1〜254の範囲で正規化されます(しきい値は0〜255)。ディスクファームウェアは、内部アルゴリズムを使用してその正規化を実行します。さらに、メーカーが異なれば、同じ属性の正規化も異なる場合があります。ほとんどの値はパーセンテージで報告され、高い方が最適ですが、これは必須ではありません。パラメータがメーカー提供のしきい値以下の場合、ディスクはその属性で失敗したと言われます。その記事の最初の部分で言及されているすべての予約で、「pre-fail」属性が失敗した場合、おそらくディスク障害が差し迫っています。

2番目の例として、「シークエラー率」を調べてみましょう。

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  7 Seek_Error_Rate         0x000f   071   060   030    Pre-fail  Always       -       51710773327

実際、これはS.M.A.R.Tの問題です。レポートでは、各値の正確な意味はベンダー固有です。私の場合、Seagateは対数目盛を使用して値を正規化しています。したがって、「71」は、1,000万シーク(10の7.1乗)に対しておよそ1つのエラーを意味します。面白いことに、これまでで最悪だったのは、100万シーク(10の6.0乗)に対する1つのエラーでした。これを正しく解釈すると、ディスクヘッドが以前よりも正確に配置されていることを意味します。私はそのディスクを厳密に追跡しなかったので、この分析には注意が必要です。たぶん、ドライブが最初に試運転されたときに、ドライブに慣らし期間が必要だったのでしょうか。これが機械部品の摩耗の結果であり、したがって今日の摩擦の減少に反対しない限りは?いずれにせよ、そして理由が何であれ、この値は障害の早期警告よりもパフォーマンス指標です。ですから、それほど気になりません。

それに加えて、約6か月前に記録された3つの疑わしいエラーのほかに、そのドライブは、1100日(26423時間)以上電源が入ったストックラップトップドライブに対して驚くほど良好な状態で表示されます(S.M.A.R.T.による):

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  9 Power_On_Hours          0x0032   070   070   000    Old_age   Always       -       26423

好奇心から、SSDを搭載した最近のラップトップで同じテストを実行しました:

sh$ sudo smartctl -i /dev/sdb
smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.10.0-32-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Device Model:     TOSHIBA THNSNK256GVN8
Serial Number:    17FS131LTNLV
LU WWN Device Id: 5 00080d 9109b2ceb
Firmware Version: K8XA4103
User Capacity:    256 060 514 304 bytes [256 GB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    Solid State Device
Form Factor:      M.2
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   ACS-3 (minor revision not indicated)
SATA Version is:  SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Tue Mar 13 01:03:23 2018 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

そのデバイスがS.M.AR.Tであっても、最初に気付くのは有効になっている場合、smartctlにはありません データベース。これにより、ツールがSSDからデータを収集することを妨げることはありませんが、さまざまなベンダー固有の属性の正確な意味を報告することはできません。

sh$ sudo smartctl -a /dev/sdb
smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.10.0-32-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== 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:         (  120) seconds.
Offline data collection
capabilities:              (0x5b) SMART execute Offline immediate.
                    Auto Offline data collection on/off support.
                    Suspend Offline collection upon new
                    command.
                    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:      (  11) 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     0x000a   100   100   000    Old_age   Always       -       0
  2 Throughput_Performance  0x0005   100   100   050    Pre-fail  Offline      -       0
  3 Spin_Up_Time            0x0007   100   100   050    Pre-fail  Always       -       0
  5 Reallocated_Sector_Ct   0x0013   100   100   050    Pre-fail  Always       -       0
  7 Unknown_SSD_Attribute   0x000b   100   100   050    Pre-fail  Always       -       0
  8 Unknown_SSD_Attribute   0x0005   100   100   050    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0012   100   100   000    Old_age   Always       -       171
 10 Unknown_SSD_Attribute   0x0013   100   100   050    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0012   100   100   000    Old_age   Always       -       105
166 Unknown_Attribute       0x0012   100   100   000    Old_age   Always       -       0
167 Unknown_Attribute       0x0022   100   100   000    Old_age   Always       -       0
168 Unknown_Attribute       0x0012   100   100   000    Old_age   Always       -       0
169 Unknown_Attribute       0x0013   100   100   010    Pre-fail  Always       -       100
170 Unknown_Attribute       0x0013   100   100   010    Pre-fail  Always       -       0
173 Unknown_Attribute       0x0012   200   200   000    Old_age   Always       -       0
175 Program_Fail_Count_Chip 0x0013   100   100   010    Pre-fail  Always       -       0
192 Power-Off_Retract_Count 0x0012   100   100   000    Old_age   Always       -       18
194 Temperature_Celsius     0x0023   063   032   020    Pre-fail  Always       -       37 (Min/Max 11/68)
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
240 Unknown_SSD_Attribute   0x0013   100   100   050    Pre-fail  Always       -       0

SMART Error Log Version: 1
No Errors Logged

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.

これは通常、新しいSSDに期待できる出力です。ベンダー固有のデータの正規化またはメタ情報が不足しているために、多くの属性が「Unknown_SSD_Attribute」として報告されている場合でも。 smartctlの将来のバージョンだけを期待するかもしれません その特定のドライブモデルに関連するデータをツールデータベースに組み込むため、考えられる問題をより正確に特定できます。

smartctlを使用してLinuxでSSDをテストする

これまで、ドライブが通常の操作中に収集したデータを調べてきました。ただし、S.M.A.R.T。プロトコルは、オンデマンドで診断を開始するためのいくつかの「セルフテスト」コマンドもサポートしています。

明示的に要求されない限り、セルフテストは通常​​のディスク操作中に実行できます。テスト要求とホストI/O要求の両方がドライブをめぐって競合するため、テスト中にディスクのパフォーマンスが低下します。 S.M.A.R.T.仕様では、数種類のセルフテストを指定しています。最も重要なものは次のとおりです。

ショートセルフテスト(-t short

このテストでは、ドライブの読み取りパフォーマンスだけでなく、電気的および機械的パフォーマンスもチェックします。短いセルフテストは通常​​、完了するのに数分しかかかりません(通常は2〜10分)。拡張セルフテスト(-t long

このテストは、完了するまでに1桁または2桁長くかかります。通常、これは短いセルフテストのより詳細なバージョンです。さらに、そのテストでは、時間制限なしでディスク表面全体をスキャンしてデータエラーを検出します。テスト期間はディスクサイズに比例します。搬送セルフテスト(-t conveyance

このテストスイートは、デバイスの輸送中に発生する可能性のある損傷をチェックするための比較的迅速な方法として設計されています。

上記と同じディスクから取得した例を次に示します。どれがどれかを推測させます:

sh$ sudo smartctl -t short /dev/sdb
smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.10.0-32-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after Mon Mar 12 18:06:17 2018

Use smartctl -X to abort test.

テストは現在述べられています。結果が表示されるまで待ちましょう:

sh$ sudo sh -c 'sleep 120 && smartctl -l selftest /dev/sdb'
smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.10.0-32-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%       171         -

もう一方のディスクで同じテストを行いましょう:

sh$ sudo smartctl -t short /dev/sdb
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after Mon Mar 12 21:59:39 2018

Use smartctl -X to abort test.

もう一度、2分間寝て、テスト結果を表示します。

sh$ sudo sh -c 'sleep 120 && smartctl -l selftest /dev/sdb'
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%     26429         -
# 2  Short offline       Completed without error       00%     10904         -
# 3  Short offline       Completed without error       00%        12         -
# 4  Short offline       Completed without error       00%         0         -

興味深いことに、その場合、ドライブとコンピューターの両方のメーカーがディスク上でいくつかの簡単なテストを実行したようです(寿命0時間と12時間)。 ドライブの状態を自分で監視することには、まったく関心がありませんでした。それで、私はその記事のためにいくつかのセルフテストを実行しているので、拡張を始めましょう それがどうなるかをテストします:

sh$ sudo smartctl -t long /dev/sdb
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Extended self-test routine immediately in off-line mode".
Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 110 minutes for test to complete.
Test will complete after Tue Mar 13 00:09:08 2018

Use smartctl -X to abort test.

Apparently, this time we will have to wait much longer than for the short test. So let’s do it:

sh$ sudo bash -c 'sleep $((110*60)) && smartctl -l selftest /dev/sdb'
[sudo] password for sylvain:
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed: read failure       20%     26430         810665229
# 2  Short offline       Completed without error       00%     26429         -
# 3  Short offline       Completed without error       00%     10904         -
# 4  Short offline       Completed without error       00%        12         -
# 5  Short offline       Completed without error       00%         0         -

In that latter case, pay special attention to the different outcomes obtained with the short and extended tests, even if they were performed one right after the other. Well, maybe that disk is not that healthy after all! An important thing to notice is the test will stop after the first read error. So if you want an exhaustive diagnosis of all read errors, you will have to continue the test after each error. I encourage you to take a look at the very well written smartctl(8) manual page for the more information about the options -t select,N-max and -t select,cont for that:

sh$ sudo smartctl -t select,810665230-max /dev/sdb
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Selective self-test routine immediately in off-line mode".
SPAN         STARTING_LBA           ENDING_LBA
   0            810665230            976773167
Drive command "Execute SMART Selective self-test routine immediately in off-line mode" successful.
Testing has begun.
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Selective offline   Completed without error       00%     26432         -
# 2  Extended offline    Completed: read failure       20%     26430         810665229
# 3  Short offline       Completed without error       00%     26429         -
# 4  Short offline       Completed without error       00%     10904         -
# 5  Short offline       Completed without error       00%        12         -
# 6  Short offline       Completed without error       00%         0         -
結論

Definitely, S.M.A.R.T. reporting is a technology you can add to your tool chest to monitor your servers disk health. In that case, you should also take a look at the S.M.A.R.T. Disk Monitoring Daemon smartd(8) that could help you automate monitoring through syslog reporting.

Given the statistical nature of failure prediction, I am a little bit less convinced however than aggressive S.M.A.R.T. monitoring is of great benefit on a personal computer. Finally, don’t forget whatever is its technology, a drive will fail— and we have seen earlier, in one-third of the case, it will fail without prior notices. So nothing will replace RAIDand offline backups to ensure your data integrity!

This article was written by Sylvain Leroux


Linux
  1. LinuxでSmartctlを使用してハードドライブの状態を監視および分析する

  2. Linux Sedコマンド:使用法と例

  3. LinuxでSSD/HDDの状態を確認する方法

  1. OSとLinuxのバージョンを確認する方法

  2. Linux用のトップ5Googleドライブクライアント

  3. ハードドライブの状態をチェックする方法

  1. Linuxのwatchコマンドでコマンドとタスクを監視する

  2. Linuxのchgrpおよびnewgrpコマンドの概要

  3. Linuxカーネルの継続的インテグレーションテスト