web-dev-qa-db-ja.com

Linuxでの新しいハードドライブの初期テスト

新しいHGST DeskStar 4TB 3.5インチSATAハードドライブをいくつか購入しようとしています。最近使用したり、データを委託したりする前に、特に初期段階で実行する必要がある、最近推奨される方法はありますか?保証期間?

通常、私は新しいドライブを挿入し、fdiskし、必要に応じて暗号化し、ext4でフォーマットしてから実行しますが、今回はZFS(ZoL経由)になります。時間があるとき、smartdがそれらを監視できるように、それらをsmartmontoolsにフックしますが、それはそれだけです。

最初に特定のSMART=値を確認する必要がありますか?ディスクの全長にわたって1、0、またはランダムデータを書き込んで、もしそうであれば、すべて読み取りますか? 30日間電源を入れたままにして、何かを監視しますか?頻繁なスピンダウンによる早期の摩耗がないように、ドライブのAPM設定がオフになっていることを確認する必要がありますか?

2017年10月7日更新:@ Xen2050の回答と@sawdustのコメントの提案に従いました。

ドライブを入手し、テストを開始する準備ができました。 Xen2050の推奨事項をキャプチャしたスクリプトを作成しました。

#!/bin/sh

AWK=/usr/bin/awk
CLEAR=/usr/bin/clear
GREP=/bin/grep
SLEEP=/bin/sleep
SMARTCTL=/usr/sbin/smartctl

EXIT_SUCCESS=0
EXIT_INSUFFICIENT_ARGS=1

usage() {
   cat << END_OF_FILE
USAGE

   ${0} interval device

EXAMPLES

   ${0} /dev/sda

END_OF_FILE
}

runIteration() {
   runIteration_device=${1}

   #${HDPARM} -B ${runIteration_device} | ${GREP} 'APM_level'
   #${HDDTEMP} ${runIteration_device}
   #${SMARTCTL} --attributes ${runIteration_device}
   ${SMARTCTL} --attributes ${runIteration_device} | ${GREP} -E '(ATTRIBUTE_NAME|Temperature_Celsius|Current_Pending_Sector|Pre\-fail|Power_On_Hours|Power_Cycle_Count|Load_Cycle_Count)' | ${AWK} '
   {
      for (i = 1; i <= NF; ++i) {
         len=20;
         if ((i != 3) && (i != 7) && (i != 8)) {
            s = substr($i, 0, len-1);
            printf("%-4s", s);
         }

         if (i == 2) {
            printf(sprintf("%s%0" (len-length(s)) "s", "", ""));
         }

         printf(" ");
      }

      print "";
   }'

   ${SMARTCTL} --get=apm ${runIteration_device} | ${GREP} '^APM'
}

exitCode=${EXIT_SUCCESS}

if [ ${#} -eq 2 ]; then

   interval=${1}
   device=${2}

   while [ 1 ]; do
      ${CLEAR}
      runIteration ${device}
      ${SLEEP} ${interval}
   done

else

   exitCode=${EXIT_INSUFFICIENT_ARGS}
   echo ${0}: Insufficient arguments 1>&2
   usage 1>&2

fi

exit ${exitCode}

テスト設定

このコンピューターに使用可能なSATAポートがないという理由だけで、4つの新しいドライブのうち2つを一度に2つのUSBドックに接続し、机の上に置いています。電源ファンが作動している密閉型シャーシ内よりも温度が高いか低いかがわかりません。

USBドックなので、今まで見たことのないトラブルに見舞われました。デバイスは/dev/sdaおよび/dev/sdbとして表示されましたが、smartctlコマンドを実行すると昨夜エラーが発生しました。 lsusbは、ドックがJMicron Technologyであると報告し、クイック Google検索 は、--deviceオプションを指定する必要があることを示しました。いくつか試してみたところ、うまくいかなかったので諦めました。

今夜、私は--deviceなしで再試行しましたが、明らかな理由はありません。

また、これはネットワークから切断されたコンピューターで実行していることにも注意してください(イーサネットケーブルを接続する場所がないためです)。その結果、このラップトップで対応するsmartctlコマンドを実行し、出力を貼り付け、テストPCの画面に表示される値と一致するように値をマッサージすることにより、ここでメモをキャプチャしようとしています。貼り付けた後、1つの値の更新を見逃してしまったので、これについて言及しました。値が間違っているように見えるために、以下の出力が混乱して完全に理解できない場合に備えて、事前に謝罪したいと思います。 (FYI見逃した値は、RAW_VALUEを更新したときのTemperature_CelsiusのVALUE/WORSTでした。)

これは、上記のスクリプトをテストPCに手動で入力する必要があることも意味します。すべてを正しく入力したと思いますが、どこかにコンマまたはセミコロンを入力しなかった可能性は常にあります。

次のセクションの手順を2回実行しました。最初の2台のドライブで1回、次にすべての電源を切り、ドライブを残りの2台に交換してから、すべての電源を入れ直した後。該当する場合、2回目の実行との違いに注釈を付けました。

OK。さて、楽しい部分に...

System RescueCDバージョン5.0.3のライブCDを使用してPCを起動しました。プロンプトが表示された後、ログを監視しました。

# tail -F /var/log/messages

各USBドックの電源を入れ、/ dev/sdaと/ dev/sdbのメッセージが表示されるのを見ました。

実行SMART属性監視スクリプト

スクリプトを実行するには、次のように入力しました。

# ~/scripts/hdd_init_checks.sh 60 /dev/sdX

ディスクごとに(sdaおよびsdb)。

ポーリングの頻度が高すぎるとドライブの消耗が発生するかどうかはわかりませんが、この間は1分に1回で十分であると考えました。

初期パラメータは、2つのドライブで同じでした。

ID#  ATTRIBUTE_NAME        VALUE WORST THRESH   WHEN_FAILED RAW_VALUE 
1    Raw_Read_Error_Rate   100  100  016    -
2    Throughput_Performa   100  100  054    -
3    Spin_Up_Time          100  100  024    -
5    Reallocated_Sector_   100  100  005    -
7    Seek_Error_Rate       100  100  067    -
8    Seek_Time_Performan   100  100  020    -
9    Power_On_Hours        100  100  000    -
10   Spin_Retry_Count      100  100  060    -
12   Power_Cycle_Count     100  100  000    -
193  Load_Cycle_Count      100  100  000    -
194  Temperature_Celsius   250  250  000    -    24   (Min/Max
197  Current_Pending_Sec   100  100  000    -
APM level is:     Disabled

実行SMARTテスト

SMART=テストを実行し始めましたが、smartctl --capabilitiesは、これらのいずれも搬送セルフテストをサポートしていないと報告しました。

# smartctl --capabilities /dev/sdX
...
                                    Self-test supported.
                                    No Conveyance Self-test supported.
...
Short self-test routine 
recommended polling time:    (   2) minutes.
Extended self-test routine
recommended polling time:    ( 571) minutes.

即時オフラインテストを実行する

Sdaとsdbのそれぞれの即時オフラインテストから始めましたが、最初に各ドライブのsmartctl --capabilities /dev/sdXを確認しました。

Offline data collection status:  (0x80) Offline data collection activity
                                        was never started.
                                        Auto Offline Data Collection: Enabled.
...
Total time to complete Offline 
data collection:            (  113) seconds.

次に、即時オフラインテストを開始しました。

# smartctl --test=offline /dev/sdX

Testing has begun.
Please wait 113 seconds for test to complete.
Test will complete after Thu Oct  5 03:40:52 2017

テスト中、smartctl --capabilitiesを使用して進行状況を監視しました:

# watch -n 1 'echo "--- sda"; smartctl --capabilities /dev/sda | head -13 | tail -9; echo "--- sdb"; smartctl --capabilities /dev/sdb | head -13 | tail -9'

Offline data collection status:  (0x84) Offline data collection activity
                                        was suspended by an interrupting command from Host.
                                        Auto Offline Data Collection: Enabled.
...
Total time to complete Offline 
data collection:            (  113) seconds.

完了時に結果を表示しました。

Offline data collection status:  (0x82) Offline data collection activity
                                        was completed without error.
                                        Auto Offline Data Collection: Enabled.
...
Total time to complete Offline 
data collection:            (  113) seconds.

パラメータが上記と少し異なります。

ID#  ATTRIBUTE_NAME        VALUE WORST THRESH   WHEN_FAILED RAW_VALUE 
1    Raw_Read_Error_Rate   100  100  016    -
2    Throughput_Performa   136  136  054    -
3    Spin_Up_Time          100  100  024    -
5    Reallocated_Sector_   100  100  005    -
7    Seek_Error_Rate       100  100  067    -
8    Seek_Time_Performan   128  128  020    -
9    Power_On_Hours        100  100  000    -
10   Spin_Retry_Count      100  100  060    -
12   Power_Cycle_Count     100  100  000    -
193  Load_Cycle_Count      100  100  000    -
194  Temperature_Celsius   125  125  000    -    48   (Min/Max
197  Current_Pending_Sec   100  100  000    -
APM level is:     Disabled

2回目の実行:ハードドライブの2番目のペアでは、sdaのThroughput_PerformanceはVALUEとWORSTで137でした。sdbの値は上記と一致しました。また、これらの温度はより低温でした。 31と34で、しかしそれはおそらく私が今回何をしているのかを知っていて、それらがまだ熱くならないようにこれらのステップを通り抜けているからです。)

気温が上がっているようです。ここでメモを取り込もうとしているので、終了してから数分になります。 46、47、48でした。ドライブは標準的な机の本棚部分にあるので、6つの側面のうち5つで囲まれていますが、PCケースの内部はもっと暖かいと思います。部屋の天井のファンをオンにして、助けになる場合に備えて空気を循環させました。

エラーログにはエラーは表示されませんでした。

# smartctl --log=error /dev/sdX
=== START OF READ SMART DATA SECTION ===
SMART Error Log Version: 1
No Errors Logged

短いセルフテストを実行する

次に、sdaとsdbのそれぞれについて2分間の短いセルフテストを実行しました。

# smartctl --test=short /dev/sdX

Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after Thu Oct  5 04:10:34 2017

テスト中、私はsmartctl --capabilitiesで進行状況を監視しました:

# watch -n 1 'echo "--- sda"; smartctl --capabilities /dev/sda | head -13 | tail -9; echo "--- sdb"; smartctl --capabilities /dev/sdb | head -13 | tail -9'

Self-test execution status:      ( 249) Self-test routine in progress...
                                        90% of test remaining.
                                 ( 248) 80% of test remaining.
                                 ( 247) 70% of test remaining.
                                 ( 246) 60% of test remaining.
                                 ( 245) 50% of test remaining.
                                 ( 244) 40% of test remaining.
                                 ( 243) 30% of test remaining.
                                 ( 242) 20% of test remaining.
                                 ( 241) 10% of test remaining.
Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever
                                        been run.

(注:出力は実際にはこのようには見えませんでした。読みやすくするために、さまざまなパーセンテージをすべて組み合わせました。以下の長いテストは、より現実的な出力を示しています。)

温度が47から48の間で変動しているように見えることを除いて、パラメータはまったく変化していないようです。

ID#  ATTRIBUTE_NAME        VALUE WORST THRESH   WHEN_FAILED RAW_VALUE 
1    Raw_Read_Error_Rate   100  100  016    -
2    Throughput_Performa   136  136  054    -
3    Spin_Up_Time          100  100  024    -
5    Reallocated_Sector_   100  100  005    -
7    Seek_Error_Rate       100  100  067    -
8    Seek_Time_Performan   128  128  020    -
9    Power_On_Hours        100  100  000    -
10   Spin_Retry_Count      100  100  060    -
12   Power_Cycle_Count     100  100  000    -
193  Load_Cycle_Count      100  100  000    -
194  Temperature_Celsius   127  127  000    -    47   (Min/Max
197  Current_Pending_Sec   100  100  000    -
APM level is:     Disabled

セルフテストログにエラーはありませんでした:

# smartctl --log=selftest /dev/sdX
=== 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%         1         -

注:セルフテストログのLifeTime(hours)列は、現在のライフタイム時間の属性9のPower_On_Hoursと組み合わせた場合に、最後のテストからの期間を示すことができます。

2回目の実行:今回はLifeTime(hours)は0でした。今回も、より速く移動し、これらの手順をより早く実行しているためです。)

搬送セルフテストを実行します

これらのデバイスではこれを実行できませんでした。私は試した:

# smartctl --test=conveyance /dev/sdX
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Conveyance Self-test functions not supported

Sending command: "Execute SMART Conveyance self-test routine immediately in off-line mode".
Command "Execute SMART Conveyance self-test routine immediately in off-line mode" failed: scsi error aborted command

残念な。どこかで他の人の応答を読んだ後、私は、「デバイスの輸送中に生じた損傷を特定する」と述べられているマニュアルページを確認しました。これらを宅配便で受け取った後、このタイプのテストを実行したいと思います。

長期/拡張セルフテストを実行する

私は最後のSMARTテストをこれらのドライブで深夜に実行するためにテストを開始しました。10時間後にはそれを確認するために周りにいないので、明日の夜まで待つ必要があります-今からほぼ24時間。

# smartctl --test=long /dev/sdX

Testing has begun.
Please wait 571 minutes for test to complete.
Test will complete after Thu Oct  5 13:57:44 2017

テスト中、私は定期的にsmartctl --capabilitiesで進行状況を監視しました。

# watch -n 1 'echo ---- /dev/sda; smartctl --capabilities /dev/sda | head -13 | tail -9; echo ---- /dev/sdb; smartctl --capabilities /dev/sdb | head -13; tail -9'

---- /dev/sda
Self-test execution status:      ( 249) Self-test routine in progress...
                                        90% of test remaining.
Total time to complete Offline
data collection:                 ( 113) seconds.
---- /dev/sdb
Self-test execution status:      ( 249) Self-test routine in progress...
                                        90% of test remaining.
Total time to complete Offline
data collection:                 ( 113) seconds.
...

おそらく開始から約6時間後に戻ってきて、出力が10%残っていることを確認しましたが、完了までにはいられないことはわかっていました。私は、SMART属性のどれもそこにあるように見えないことに気づきました。

開始から24時間後に戻ってきて、テストが完了したことを確認しました。

Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever
                                        been run.

ドライブは一日中アイドル状態だったので、今では冷えているようです。

ID#  ATTRIBUTE_NAME        VALUE WORST THRESH   WHEN_FAILED RAW_VALUE 
1    Raw_Read_Error_Rate   100  100  016    -
2    Throughput_Performa   136  136  054    -
3    Spin_Up_Time          100  100  024    -
5    Reallocated_Sector_   100  100  005    -
7    Seek_Error_Rate       100  100  067    -
8    Seek_Time_Performan   128  128  020    -
9    Power_On_Hours        100  100  000    -
10   Spin_Retry_Count      100  100  060    -
12   Power_Cycle_Count     100  100  000    -
193  Load_Cycle_Count      100  100  000    -
194  Temperature_Celsius   142  142  000    -    42   (Min/Max 23/50)
197  Current_Pending_Sec   100  100  000    -
APM level is:     Disabled

何らかの理由で(おそらく上記のawkスクリプトのタイプミスが原因で)最小/最大が途切れているため、手動でsmartctl --attributesを実行し、この過去の出力の値を貼り付けました。ある時点で温度が50に達したようです。

セルフテストログにエラーはありませんでした:

# smartctl --log=selftest /dev/sdX
=== 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
# 2  Extended offline    Completed without error       00%        10         -
# 1  Short offline       Completed without error       00%         1         -

badblocksを実行します

上記の長いセルフテストを実行していたので、このセクションを同時に実行するか、セルフテストが完了するまで待つかを議論していました。これらの最初の2つのディスクでは、パーティションをフォーマットする前に長いセルフテストを最後まで実行することを選択したため、上記のテストの実行中にこのセクションを作成しましたが、これらの手順は24時間後まで実行しませんでした。上記のテストが完了しました。

注:@ Xen2050で述べたように、このセクションではデバイスで書き込みテストを実行します。ハードディスクドライブでこれを実行してもかまいません。ただし、書き込みが限られているため、フラッシュメモリまたはSSDでこれを実行する前に、2度考えます。

Ext2またはext4ファイルシステムを使用する場合、次のようなコマンドを実行して、fdisk/gdiskでパーティションを作成した後、パーティションをフォーマットできます。

# mke2fs -c -c /dev/sdX1

Manページによると、最初の-cはファイルシステムを作成する前に不良ブロックをチェックし、2番目の-cは低速の読み書きテストを実行します。

マニュアルページには、badblocksを直接実行するのではなく、-cオプションを使用するようにという警告もあります。

ただし、これらのドライブにextファイルシステムを配置する予定はないため、badblocksを直接実行することにしました。

テスト前のチェックSMART属性

気温は42度から43度の間で変動しているようです。そうでなければ、他のすべては静的です:

ID#  ATTRIBUTE_NAME        VALUE WORST THRESH   WHEN_FAILED RAW_VALUE 
1    Raw_Read_Error_Rate   100  100  016    -
2    Throughput_Performa   136  136  054    -
3    Spin_Up_Time          100  100  024    -
5    Reallocated_Sector_   100  100  005    -
7    Seek_Error_Rate       100  100  067    -
8    Seek_Time_Performan   128  128  020    -
9    Power_On_Hours        100  100  000    -
10   Spin_Retry_Count      100  100  060    -
12   Power_Cycle_Count     100  100  000    -
193  Load_Cycle_Count      100  100  000    -
194  Temperature_Celsius   139  139  000    -    43   (Min/Max
197  Current_Pending_Sec   100  100  000    -
APM level is:     Disabled

これで、書き込みテストの前にベースラインができました。

badblocksを実行します

これで、sdasdbの両方でbadblockを実行する準備ができました。

# time badblocks -s -v -w /dev/sdX
Checking for bad blocks in read-write mode
From block 0 to 3907018583
Testing with pattern 0xaa:   0.00% done, 0:55 elapsed. (0/0/0 errors)

上記の拡張テストと同様に、私はこれを両方のドライブで同時に実行しました。

15〜20分後に戻ってきました。両方のドライブの温度は46になり、0.02%完了したように見えます。

Testing with pattern 0xaa:   0.02% done, 18:33 elapsed. (0/0/0 errors)

私が正しく計算している場合、これはテストが完了するまでに約100000分、つまり70日かかることを意味します。確認するドライブがあと2つあり、返品/交換期間が30日しかないため、あまり時間がないのではないかと思います。これについては、後で心配します。

チェックSMARTテスト後の属性

さらに15分ほどでテストを中止しました。 SMART属性は上記と同じですが、温度が異なります。

追加のテスト

述べたように、時間があれば、またはドライブが小さければ、書き込みテストを最後まで継続させることができます。

または、ドライブをゼロにしたい場合は、次のようにできます。

#dd if =/dev/zero of =/dev/sdX bs = 1M

そうしている間、私はSMART属性を監視して、大幅な変更がないか確認しました。

@sawdustの推奨に従って、ドライブはすでに24時間稼働しており、この間にSMART属性を観察しました。

2回目の実行:これは私がしばらくの間これらの2つのドライブに対して行ったことです。)

追加のドライブについて繰り返します

この時点で、私はドライブの電源を切り、2つの追加の新しいドライブと交換し、前述のようにそれらのドライブに対して上記のすべての手順を実行しました。

7
jia103
  • ほとんどのSMART監視ツールは、問題が発生したことを検出するとアラートを鳴らします。注意すべきカップルは「現在保留中のセクター」と「再割り当てされたセクター数」ですが、明らかに一般的なエラーはほとんどありません。

    すべてのSMARTセルフテストも、オフライン、短い、長い)を実行します。輸送テストは特に適用可能である必要があります。これは、「デバイスの輸送中に発生した損傷を特定することを目的としています」。

    詳細については、smartctlのマニュアルページを参照してください。または buntuのSmartmontoolsのコミュニティヘルプWiki

  • ドライブをフォーマットするときは、badblocksの書き込みテストを実行します(またはフォーマットする前に自分で実行します。明らかにすべてのmkfsがサポートしているわけではありません)。_0_、_1_、_01_と_10_は良いワークアウトであるはずです。大幅に増加した数値がないか、SMARTデータを後で確認します。

    フラッシュメモリデバイスまたはSSDの場合、書き込みの有効期間は限られているが、障害が発生する前に異常な量の書き込みを処理する必要がある、一定のSSDの[テストで読みました]何ヶ月も書いて、通常の使用よりはるかに多いので、心配しないでください。]

  • ドライブのスピンダウンタイムアウトを確認します。過去に2〜3分ごとにスピンダウンして、記録的な速さでドライブを使い果たしてしまうドライブがいくつかありました。 Linuxでは、通常、ドライブの時間を計測してスピンダウンするのは他のプログラムの責任ですが、ドライブ自体に注意してください。

  • ドライブの温度を監視できる場合は、監視してください。 hddtempは機能するはずです。 1つのドライブが他のドライブよりも大幅に高温になっている場合は、ドライブが赤信号であるか、単に冷却されているだけです。

また、製造元が特定のテスト/監視プログラムを持っている場合は、試してみてください。彼らドライブの詳細についてより多くの洞察を持っているはずです。

6
Xen2050