HDD/SSD の検品

弊宅で HDD / SSD を購入時に検品としてやっていることをまとめておく

購入

弊宅では調達基準として下記の HomeLab に書いてある通りである 要約するとエンタープライズグレードで HDD なら書き込み耐性 550TB/day 、AFR 0.5%以下、 SSD/NVMe なら 600TBW/TB 程度の書き込み耐性があることをスペックシートで確認し購入とする。

また Backblaze が HDD 型番ごとの故障統計が出ているため購入時は参考にする。 これを見て、寿命が大まかに判断できるので質のいい中古品ならまだ利用できる可能性が高く低価格で購入できる可能性がある。

検品

検品としては S.M.A.R.T で定義されている short テスト long テストを実行し PASS することを条件としている。 理由は、 QNAP と Synology のベンダー(代理店) が long テストを月1回の実施を推奨していること、 ArchWiki で記載の通り short はデバイスの物理的稼働や電気的問題の検出で long は全セクターをするようなので実施する。

テストを実行する デバイスが実行できる自己テストには3種類あります (どのテストもユーザデータに対して安全です):

  • Short: デバイスの問題を検出する可能性の高いテストを実行します。
  • Extended 或いは Long: このテストは short チェックと同じですが、時間制限が無く、完全なディスクサーフェス検査を行います。
  • Conveyance: デバイスの輸送中にダメージが発生したかどうかを調べます。

S.M.A.R.T. - ArchWiki

方法所要時間説明
クイック テスト短いBasic診断テスト。
拡張テスト長い詳細な診断テスト。
より正確な結果を得るには、少なくとも月に 1 回実行することをお勧めします。

SMART テストに関するよくある質問。 - Synology ナレッジセンター

  • 簡易テスト
    ディスクの電気的、機械的特性、ディスク表面のごく一部をテストします。
    所要時間は、約 1 分です。 HDDメーカーにより異なりますが、一般的には週に1回または、2週間に1回など、定期的に実施いただくことを推奨します。

  • 完全テスト
    ディスクの電気的、機械的特性、ディスク表面全体をテストします。
    所要時間はストレージ環境によって変わりますが、テスト完了まではおよそ数時間かかります。 完全テストを選択し、テストをクリックしていただくと所要時間の目安が表示されます。

    HDDメーカーにより異なりますが、一般的には1ヶ月に1回 または、数ヶ月に1回実施いただくことを推奨します。

Q&A|サポート|フォースメディア

挿入したストレージの確認

標準的には、ストレージサーバーの空きスロットに刺して smartctl を実行するのが一番早い

インストール
1
2
3
4
sudo apt-get update
sudo apt-get upgrade

sudo apt-get install -y smartmontools bash-completion

挿入したストレージの MODEL, SERIAL が一致することを確認する

1
2
3
4
5
> lsblk -o NAME,HCTL,MODEL,SERIAL | grep -E '^s'
NAME      HCTL       MODEL                SERIAL
sdg       4:0:0:0    INTEL SSDSC2KG480G8  PHYG101002PCXXXXXX  1
sdh       16:0:0:0   INTEL SSDSC2KG480G8  PHYG106602DGXXXXXX  2
sdi       12:0:0:0   INTEL SSDSC2KG480G8  PHYG1065009NXXXXXX  3

smartctl の指標確認

Seagate 性 HDD の場合 SMART の値が偽装され、新品として販売されるケースが確認されている。 記事によれば FARM(Field Access Reliability Metrics) にも Power on Hours が記録されるため比較すれば偽装を確認できる

テスト時間の確認

テスト完了後に確認するでも良いのだが、 smartctl long テストは容量によっては半日かかることも多いため予定時間を確認しておくべきである。そのため先に挿入時の状態を確認する。 Extended self-test routine に long テストにかかる時間が書いてある、今回の場合は 2分である

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
> smartctl -a /dev/sdg | grep -A2 'self-test routine'
Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever
                                        been run.
--
Short self-test routine
recommended polling time:        (   1) minutes.
Extended self-test routine
recommended polling time:        (   2) minutes.
SCT capabilities:              (0x003d) SCT Status supported.

smartctl long の実行

smartctl -t long <device> で実行する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
> smartctl -t long /dev/sdg
smartctl 7.3 2022-02-28 r5338 [x86_64-linux-6.8.12-11-pve] (local build)
Copyright (C) 2002-22, 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 2 minutes for test to complete.
Test will complete after Wed Jul 16 22:31:24 2025 JST
Use smartctl -X to abort test.

smartctl テストの確認

smartctl -l selftest でテスト結果のみを出力できる

1
2
3
4
5
6
7
8
> smartctl -l selftest /dev/sdg
smartctl 7.3 2022-02-28 r5338 [x86_64-linux-6.8.12-11-pve] (local build)
Copyright (C) 2002-22, 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 without error       00%     31446         -
Topic
SMART のセルフテストを実行するとドライブの起動時間を元にどの時点なのか記録される 例えば上の例では LifeTime(hours)smartctl -a /dev/sdg で表示される Power_On_Hours がほぼ同一になるはずである。 これが大きくズレている場合は、 SMART 情報がリセットされている可能性がある。

HDD

SSD/NVMe

Secure Erase

あとは慎重に確認し Secure Erase を実施しておくことで検品処理完了している

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
> lsblk -o NAME,HCTL,MODEL,SERIAL
NAME      HCTL       MODEL                SERIAL
sdg       4:0:0:0    INTEL SSDSC2KG480G8  PHYG101002PCXXXXXX  1
sdh       16:0:0:0   INTEL SSDSC2KG480G8  PHYG106602DGXXXXXX  2
sdi       12:0:0:0   INTEL SSDSC2KG480G8  PHYG1065009NXXXXXX  3

> hdparm -I /dev/sdX | grep -A8 -E 'Security:'
Security:
        Master password revision code = 65534
                supported
        not     enabled
        not     locked
        not     frozen
        not     expired: security count
                supported: enhanced erase
        2min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT.

Secure Erase を利用するには hdparm の結果が not frozen である必要があります。 今回の SSD では enhanced erase にも対応し消去時間は 2min であることが確認できました。

Important
この後の手順を実行するとデータは復元出来ません

P@ssW0rd は Secure Erase が完了すると NULL に設定されるため、作業終了まで使います

1
2
3
4
5
> hdparm --user-master u --security-set-pass P@ssW0rd /dev/sdX
security_password: "P@ssW0rd"

/dev/sdX:
 Issuing SECURITY_SET_PASS command, password="P@ssW0rd", user=user, mode=high

コマンド実行後、再度確認すると not enabled から enabled へ変更さたことが確認できる。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
  > hdparm -I /dev/sdX | grep -A8 -E 'Security:'
  Security:
          Master password revision code = 65534
                  supported
+                 enabled
          not     locked
          not     frozen
          not     expired: security count
                  supported: enhanced erase
          Security level high
          2min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT.

次のコマンド完全にデータを消去する。 enhanced に対応しているため --security-erase-enhanced を利用する

1
2
3
4
5
> hdparm --user-master u --security-erase-enhanced P@ssW0rd /dev/sdX
security_password: "P@ssW0rd"

/dev/sdX:
 Issuing SECURITY_ERASE command, password="P@ssW0rd", user=user

完了すると下記のように変化し not enabled に変更されます。これで完了です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
  > hdparm -I /dev/sdX | grep -A8 -E 'Security:'
  Security:
          Master password revision code = 65534
                  supported
-         not     enabled
          not     locked
          not     frozen
          not     expired: security count
                  supported: enhanced erase
          2min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT.

参考情報

Hugo で構築されています。
テーマ StackJimmy によって設計されています。