SSDのS.M.A.R.T.を調べてみた(2/3)：SATA SSDの場合

# はじめに
　[前回](https://qiita.com/ken-yossy/items/ecb827f7a60b3e27588e)から、SSDの健康状態把握を目的とした情報の収集および取得機能である"Self-Monitoring, Analysis and Reporting Technology (S.M.A.R.T.)"について、全3回予定でまとめています。

1. SSDにおけるS.M.A.R.T.の概要 ← [前回](https://qiita.com/ken-yossy/items/ecb827f7a60b3e27588e)
2. SATA (ATA Command Set; ACS)におけるS.M.A.R.T. ← 今回
3. NVMeにおけるS.M.A.R.T.

　第2回となる今回は、具体的にSATA SSDのS.M.A.R.T.つまりATA Command SetのSMART Feature Setで定められたS.M.A.R.T.機能についてまとめます。

# 今回のサマリ
* SATA SSDのS.M.A.R.T.機能は、自己診断機能、監視機能、ホストへの報告機能、そして属性、の全機能を備えている
* **SATA SSDのS.M.A.R.T.属性は種類も内容もメーカー依存！**
* 複数メーカーのSATA SSDのS.M.A.R.T.属性を調査した結果、寿命に関する属性は種類も多く積極的に公開されている

# SATA SSD (ACS)におけるS.M.A.R.T.機能
　SATAが準拠するATA Command Set (ACS)<sup>[1][2]</sup>におけるS.M.A.R.T.機能も、機能の全体像は前回ご説明したものと同じです（図1）。

![SSDにおけるS.M.A.R.T.の位置づけと構成機能（イメージ）](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/026dee4c-5e07-ebc8-2d56-7acc2ad92124.png "SSDにおけるS.M.A.R.T.の位置づけと構成機能（イメージ）")
図1：SSDにおけるS.M.A.R.T.の位置づけと構成機能（イメージ）

　つまり、ACSのS.M.A.R.T.機能であっても、ドライブの自己診断機能、属性、属性値に対する監視機能、そしてホストへの報告機能から構成されています。

　以下、ACSにおける各機能について説明します。

# 主要コマンド
　ACSでは、表1に示したコマンドが定義されています。

表1：ATA Command Set (ACS)で定義されているS.M.A.R.T.関連コマンド（一部）

| コマンド名 | 対応するS.M.A.R.T.機能 | 内容 |
|----------:|:----------------------|:------|
| SMART READ DATA | ホストへの報告機能 | S.M.A.R.T.属性を含む各種情報をドライブから読み出す |
| SMART EXECUTE OFF-LINE IMMEDIATE | 自己診断機能 | ドライブの自己診断を実行し、診断結果をS.M.A.R.T.属性等に反映させる |
| SMART READ LOG | ホストへの報告機能 | ドライブが記録した（エラー）ログを読み出す |
| SMART WRITE LOG | ホストへの報告機能 | ドライブに（エラー）ログを書き込む |
| SMART RETURN STATUS |	ホストへの報告機能、監視機能 | ドライブのS.M.A.R.T.の状態を取得する |
| SMART ENABLE / DISABLE ATTRIBUTE AUTOSAVE<sup>（注）</sup> | S.M.A.R.T.属性 | S.M.A.R.T.属性に記録すべき事象が発生した時に自動的に記録（不揮発化）する機能を有効／無効にする |
| SMART ENABLE OPERATIONS<sup>（注）</sup> | ― | ドライブのS.M.A.R.T.を有効にする |
| SMART DISABLE OPERATIONS<sup>（注）</sup> | ― | ドライブのS.M.A.R.T.を無効にする |

（注）これらのコマンドはACS-3<sup>[1]</sup>までの定義となっており、ACS-4<sup>[2]</sup>では定義されていません

　この表1に示した通り、各コマンドは図1に示したS.M.A.R.T.の機能に対応しています。

# 自己診断機能
　ACSのSMART Feature Setにおいて、ホストがドライブに自己診断機能の実行を要求するコマンドは、表1の通り、`SMART EXECUTE OFF-LINE IMMEDIATE`コマンドです。

　このコマンドでは、サブコマンドとして表2の中から一つを選択して指定する必要があります。

表2：`SMART EXECUTE OFF-LINE IMMEDIATE`コマンドのサブコマンド
![SMART EXECUTE OFF-LINE IMMEDIATEコマンドのサブコマンド](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/47c5802d-3bfb-1928-343b-07e17d9f49ad.png "SMART EXECUTE OFF-LINE IMMEDIATEコマンドのサブコマンド")
注：ACS-3<sup>[1]</sup>の"Table 127 — SMART EXECUTE OFF-LINE IMMEDIATE Subcommands"から引用

　表2のサブコマンドのうち、"Short self-test routine"が所要時間の短い自己診断機能であり、"Extended self-test routine"が所要時間の長い自己診断機能です。

　なお、"off-line mode"とは、このコマンドを受け付けたドライブはすぐにコマンドの応答を返してその後自己診断機能を実行することが求められるモードであり、"captive mode"は、自己診断機能の実行完了後にコマンドの応答を返すことが求められるモードです。

　IntelのSSD Toolboxの場合、図2のように、SATA SSDの自己診断を実行する機能を備えています（赤四角部分）。この機能を使うことで、SATA SSDが備える自己診断機能を実行できます。

　この図2からは、「クイックスキャン」が"Short self-test routine"に、そして「完全スキャン」が"Extended self-test routine"に相当するものと推測できます。

![Intel SSD Toolboxにおける自己診断実行機能（SATA SSDの例、赤四角部分）](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/0ba12d46-cacd-e05e-267b-a7e26bd78cad.png "Intel SSD Toolboxにおける自己診断実行機能（SATA SSDの例、赤四角部分）")
図2：Intel SSD Toolboxにおける自己診断実行機能（SATA SSDの例、赤四角部分）

# 監視機能
　ACSにおけるS.M.A.R.T.機能では、S.M.A.R.T.属性に対する監視が可能です。ただし、監視対象の属性や、ホストに報告する閾値をホスト（ユーザ）が決定・設定する方法は、標準化されていません。

　ここでは、Intel SSD ToolboxのS.M.A.R.T.属性表示を例にとって説明します。

![Intel SSD ToolboxにおけるS.M.A.R.T.属性表示](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/6096072b-6200-4793-27e6-cd99e0f6b081.png "Intel SSD ToolboxにおけるS.M.A.R.T.属性表示")
図3：Intel SSD ToolboxにおけるS.M.A.R.T.属性表示

　図3は、Intel SSD Toolboxを使ってIntel製SATA SSDのS.M.A.R.T.属性を表示させた状態です。

　この表示の通り、S.M.A.R.T.属性には、各属性に対して「生の値」と「正規化した値」と「閾値」が存在します。正規化した値に意味がある場合（有効な場合）、その初期値は100で、属性が対応する事象が発生するなどした場合に、0に向けて単調減少します。

　例えば図3中の赤四角で囲った属性は、IDが0xE8（10進数で232）、名称が"Available Reserved Spare"つまり「余裕容量」と考えられます。この属性には閾値として10が設定されていることから、この属性の正規化した値が100から減少して10を下回ると、S.M.A.R.T.における監視機能が、ホストへの報告機能に対して閾値超過が発生したことを通知します。

# ホストへの報告機能
　ACSのS.M.A.R.T.機能におけるホストへの報告機能と、前回説明した各報告機能に対応するコマンドは以下の通りとなります。

1. S.M.A.R.T.属性を含むドライブの健康状態をホストがまとめて取得する機能 → `SMART READ DATA`コマンド
1. ドライブで発生した事象に関する情報（ログ）をホストが取得する機能 → `SMART READ LOG`コマンドなど
1. 前述した監視機能によって特定のS.M.A.R.T.属性が予め設定された閾値を上回った（下回った）ことをドライブからホストに通知する機能 → `SMART RETURN STATUS`コマンド

　例えば、前節で説明したS.M.A.R.T.属性値の閾値超過に伴うドライブからホストへの報告事項が存在するかどうかは、`SMART RETURN STATUS`コマンドを使用することで判断できます。表3は`SMART RETURN STATUS`コマンドの応答のフォーマットです<sup>[1]</sup>。

表3：`SMART RETURN STATUS`コマンドの応答フォーマット
![SMART RETURN STATUSコマンドの応答フォーマット](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/68488550-18e7-2109-09ba-ed8b7415a58e.png "SMART RETURN STATUSコマンドの応答フォーマット")

　表3の通り、`SMART RETURN STATUS`コマンドの応答の、LBAフィールドのビット8から23が`0x2CF4`だった場合、ドライブのS.M.A.R.T.属性の中に閾値を超過したものがあることを示します。

# S.M.A.R.T.属性
## 一覧および全体傾向
　S.M.A.R.T.機能の中で最も重要視されるのがこのS.M.A.R.T.属性です。

　しかし、ACSのSMART Feature Setでは、S.M.A.R.T.属性の種類や内容を一切定めておらず、全てメーカー依存です。前述した閾値の設定や、閾値超過によるホストへの報告機能などの設定方法も定められておらず、メーカー依存です。

　これではSSDメーカー間での比較ができませんので、今回、公開情報で各メーカーのSATA SSDのS.M.A.R.T.属性を収集しました。表4に、比較のために収集した情報とその入手元を示します。

表4：各メーカーのSATA SSDのS.M.A.R.T.属性情報入手元

| メーカー | 内容 | 情報入手元 | 備考 |
|--------:|:-----|:----------|:------|
| Intel | Intel Solid State Drive ToolboxのUser Guide | [URL](https://downloadcenter.intel.com/ja/download/29205/-?product=80096) | |
| Samsung | S.M.A.R.T.情報を使用した寿命見積もりに関するホワイトペーパー | [URL](https://insights.samsung.com/2016/05/20/estimating-ssd-endurance-with-smart-attributes/) | 一部のみ掲載 |
| Seagate | IronWolf SSD 110の製品情報 | [URL](https://www.seagate.com/jp/ja/internal-hard-drives/ssd/ironwolf-nas-ssd/#specs) | |
| Micron | Client SATA SSDのS.M.A.R.T.情報リファレンス | [URL](https://www.micron.com/search-results?searchRequest=%7B%22term%22%3A%22SATA%20SMART%22%7D) | |

　これらの情報は、インターネット上で検索するなどの方法で入手可能な公開情報です。ただし、Samsung製品の情報については、寿命計算に必要とされる属性のみ収集できました。

　なお、S.M.A.R.T.属性の種類や内容はファームウェアカスタマイズによる変更が可能であり、公開情報が全ての製品に完全に当てはまるとは限らないことに注意が必要です。

　そして、表4で示した情報から収集した各メーカーのSATA SSDのS.M.A.R.T.属性を表にまとめたものが、表5です。表5には、比較のために、T13の提案資料<sup>[3]</sup>に掲載されているS.M.A.R.T.属性も掲載しました。また、表5の情報では視認性に欠けるため、前回示したS.M.A.R.T.属性の大まかな分類によって色分けしたものを図4に示します。

　この図4を見ると、同色つまり同種類の属性がある程度固まっている部分も存在しますが、あくまでも属性の種類が同じために同じ色がついているのであり、属性の内容まで一致しているとは限りません。

　さらに、通信エラー系（図4中の赤色）や稼働時間（図4中の橙色）といったSSDに固有ではない統計情報は比較的同じIDの範囲に集中している一方で、SSDに搭載されているNANDフラッシュメモリの寿命や信頼性に関係する項目、具体的には図4中の水色（寿命系）、緑色（NANDエラー系）、黄色（寿命計算用データ）の項目は、割り当てIDの違いがメーカー間で大きいことがわかります。

　このことから、各メーカーは、NANDフラッシュメモリの寿命および信頼性に係わる指標、およびそれらを伺い知ることができる指標については、種類や数を増やす、故障の前兆や寿命をつかみやすい指標にする、などの工夫をしていることがわかります。

表5：各メーカーSATA SSDのS.M.A.R.T.属性一覧

| ID (Dec/Hex) | T13 proposal document<sup>[3]</sup> | Intel                         | Seagate                             | Micron               | Samsung |
|-------------:|:---------------------------------|:---------------------------------|:------------------------------------|:---------------------|:----------------------|
| 1 / 01h      | Raw read error rate              |                                  | Raw read error rate                 | Raw read error rate  ||
| 2 / 02h      | Throughput performance           |                                  |                                     |                      ||
| 3 / 03h      | Spinup time                      | Spinup time (fixed to 0)         |                                     |                      ||
| 4 / 04h      | Start/Stop count                 | Start/Stop count (fixed to 0)    |                                     |                      ||
| 5 / 05h      | Reallocated sector count         | Reallocated sector count         | Reallocated sector count            | Reallocated NAND block count ||
| 6 / 06h      | Read channel margin              |                                  |                                     |                      ||
| 7 / 07h      | Seek error rate                  |                                  |                                     |                      ||
| 8 / 08h      | Seek timer performance           |                                  |                                     |                      ||
| 9 / 09h      | Power-on hours count             | Power-on hours count             | Power-on hours count                | Power-on hours count ||
| 10 / 0Ah     | Spinup retry count               |                                  |                                     |                      ||
| 11 / 0Bh     | Calibration retry count          |                                  |                                     |                      ||
| 12 / 0Ch     | Power cycle count                | Power cycle count                | Power cycle count                   |  Power cycle count   ||
| 13 / 0Dh     | Soft read error rate             |                                  |                                     |                      ||
| 100 / 64h    |                                  |                                  | Flash GB Erased                     |                      ||
| 102 / 66h    |                                  |                                  | Lifetime PS4 Entry Count            |                      ||
| 103 / 67h    |                                  |                                  | Lifetime PS3 Entry Count            |                      ||
| 170 / AAh    |                                  | Available Reserved Space         | Grown Bad Block Count               |                      ||
| 171 / ABh    |                                  | Program Fail Count               | Program Fail Count                  | Program fail count   ||
| 172 / ACh    |                                  | Erase Fail Count                 | Erase Fail Count                    | Erase fail count     ||
| 173 / ADh    |                                  |                                  | Average Program/Erase Count         | Average block erase count ||
| 174 / AEh    |                                  | Unexpected Power Loss            | Unexpected Power Loss Count         | Unexpected power loss count ||
| 177 / B1h    |                                  |                                  | Wear Range Delta                    |                             | Wear Leveling Count |
| 179 / B3h    |                                  |                                  |                                     |                             | Unused Reserved Block Count |
| 180 / B4h    |                                  |                                  |                                     | Unused reserve (spare) NAND blocks ||
| 181 / B5h    |                                  |                                  |                                     |                                    | Program Fail Count |
| 182 / B6h    |                                  |                                  |                                     |                                    | Erase Fail Count |
| 183 / B1h    |                                  |                                  | SATA/PCIe Interface Downshift Count | SATA interface downshift           | Runtime Bad Count |
| 184 / B8h    |                                  | End-to-End Error Detection Count |                                     | Error correction count             ||
| 187 / BBh    |                                  | Uncorrectable Error Count        | Uncorrectable Error Count           | Reported uncorrectable errors      ||
| 190 / BEh    |                                  | Temperature - Airflow (Case)     |                                     |                                    ||
| 191 / BFh    | G-sense error rate               |                                  |                                     |                                    ||
| 192 / C0h    | Power-off retract count          | Unsafe Shutdown Count            |                                     |                                    ||
| 193 / C1h    | Load/Unload cycle count          |                                  |                                     |                                    ||
| 194 / C2h    | HDA temperature                  | Temperature - Device Internal    | Primary Temperature                 | Drive temperature                  || 
| 195 / C3h    | Hardware ECC recovered           |                                  | RAISE ECC Correctable Count         |                                    ||
| 196 / C4h    | Reallocation count               |                                  |                                     | Reallocation event count           ||
| 197 / C5h    | Current pending sector count     |                                  |                                     | Current pending sector count       ||
| 198 / C6h    | Offline scan uncorrectable count |                                  | Uncorrectable Read Error Count      | Smart offline scan uncorrectable error count ||
| 199 / C7h    | UDMA CRC error rate              | CRC Error Count                  | SATA R-Error (CRC) Error Count      | Ultra-DMA CRC Error Rate           ||
| 200 / C8h    | Write error rate                 |                                  |                                     |                                    ||
| 201 / C9h    | Soft read error rate             |                                  |                                     |                                    ||
| 202 / CAh    | Data Address Mark error          |                                  |                                     | Percent lifetime remaining         ||
| 203 / CBh    | Run out cancel                   |                                  |                                     |                                    ||
| 204 / CCh    | Soft Ecc correction              |                                  |                                     |                                    ||
| 205 / CDh    | Thermal asperity rate (TAR)      |                                  |                                     |                                    ||
| 206 / CEh    | Flying height                    |                                  |                                     | Write error rate                   ||
| 207 / CFh    | Spin high current                |                                  |                                     |                                    ||
| 208 / D0h    | Spin buzz                        |                                  |                                     |                                    ||
| 209 / D1h    | Offline seek performance         |                                  |                                     |                                    ||
| 210 / D2h    |                                  |                                  |                                     | Successful RAIN recovery count     ||
| 220 / DCh    | Disk shift                       |                                  |                                     |                                    ||
| 221 / DDh    | G-sense error rate               |                                  |                                     |                                    ||
| 222 / DEh    | Loaded hours                     |                                  |                                     |                                    ||
| 223 / DFh    | Load/Unload retry count          |                                  |                                     |                                    ||
| 224 / E0h    | Load friction                    |                                  |                                     |                                    ||
| 225 / E1h    | Load/unload cycle count          | Host Writes                      |                                     |                                    ||
| 226 / E2h    | Load-in time                     | Timed Workload, Media Wear       |                                     |                                    ||
| 227 / E3h    | Torque amplification count       | Timed Workload, Host Read/Write Ratio |                                |                                    ||
| 228 / E4h    | Power-off retract count          | Timed Workload Timer                  |                                |                                    ||
| 230 / E6h    | GMR head amplitude               |                                       | Drive Life Protection Status   |                                    ||
| 231 / E7h    | Temperature                      |                                       | SSD Life Left                  |                                    ||
| 232 / E8h    |                                  | Available Reserved Space              | Available Reserved Space       |                                    ||
| 233 / E9h    |                                  | Media Wearout Indicator               | Lifetime Writes to Flash       |                                    ||
| 240 / F0h    | Head flying hours                |                                       |                                |                                    ||
| 241 / F1h    |                                  | Total LBAs Written                    | Lifetime Writes from Host      |                                    | Total LBAs Written |
| 242 / F2h    |                                  | Total LBAs Read                       | Lifetime Reads from Host       |                                    ||
| 243 / F3h    |                                  |                                       | Free Space                     |                                    ||
| 245 / F5h    |                                  |                                       |                                |                                    | Timed Workload Media Wear |
| 246 / F6h    |                                  |                                       |                                | Cumulative host sectors written    | Timed Workload Host Read/Write Ratio |
| 247 / F7h    |                                  |                                       |                                | Number of NAND pages of data written by the host | Timed Workload Timer |
| 248 / F8h    |                                  |                                       |                                | Number of NAND pages written by FTL ||
| 250 / FAh    | Read error retry rate            |                                       |                                |                                     ||

![各メーカーSATA SSDのS.M.A.R.T.属性を種類別に色分けしたもの](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/9b60147a-e650-3c42-ab63-ba63c8ef353c.png "各メーカーSATA SSDのS.M.A.R.T.属性を種類別に色分けしたもの")
図4：各メーカーSATA SSDのS.M.A.R.T.属性を種類別に色分けしたもの

　図4を基に各メーカーのSATA SSDのS.M.A.R.T.属性値の総数を計算すると表6のようになります。

表6：SATA SSD公開S.M.A.R.T.属性数

|                     | Intel | Seagate | Micron | Samsung<sup>※</sup> |
|--------------------:|:-----:|:-------:|:------:|:-------:|
| S.M.A.R.T.属性総個数 | 23    | 26      | 23     | -- |
※：Samsungについては、寿命計算に必要な属性しか判明しなかったので示していません

## 各メーカーのS.M.A.R.T.属性分析
　ここでは、表4の情報から収集した各メーカーのS.M.A.R.T.属性について、その数や種類そして内容から簡単な分析を行ってみます。

　表7は、前回示したS.M.A.R.T.属性の分類に沿ってS.M.A.R.T.属性数を集計したものです。なお、Samsungについては寿命関連以外のS.M.A.R.T.属性数が不明のため、ここでは集計対象としていません。

表7：各メーカーSATA SSD S.M.A.R.T.属性の種類別属性数
![各メーカーSATA SSD S.M.A.R.T.属性の種類別属性数](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/41cb25c6-2553-b9f2-5018-8d49a2d4e062.png "各メーカーSATA SSD S.M.A.R.T.属性の種類別属性数")

　この表7を見ると、いずれのメーカーの製品も、S.M.A.R.T.属性の総数に対して、寿命系、寿命計算用データ、およびNANDエラー系の3種類の属性数を合計すると、半数程度にのぼっていることがわかります。その他では、エラー系の属性が多いこともわかります。これらはいずれも不具合の兆候を逃さないようにするために種類を増やしているものと考えられます。

　ここでは、NAND特有である、寿命、NANDエラー、そして寿命計算用データに絞って、さらに詳しくみてみます。

　寿命系の属性が最も多いのはSeagateです。平均Program / Erase回数、Drive Life Protection Status、SSD life left、Available Reserved Space、Free spaceの5つです。ACSの場合は属性の意味や計算方法などもメーカー依存であり、これらの属性の導出方法も不明ですが、種類が多いという点で、ユーザにとって一番の関心事である寿命に関する項目が充実している、と言えます。

　とはいえ、他のメーカーでも平均Program / Erase回数や寿命残量といった名称の属性は存在します。SSDが普及しユーザの間で寿命に対する関心が強くなってきたことから、どのメーカーも寿命に関する項目をS.M.A.R.T.属性として積極的に公開していることがわかります。

　一方、寿命そのものではなく寿命を計算するために必要なデータの数が最も多いのは、Intelの6つです。他社との差はそこまで大きくありませんが、一定時間内でのホストからのReadとWriteの比率といったワークロードの特定につながる属性が含まれていることが特徴です。なお、一定時間内でのホストからのReadとWriteの比率についてはMicronおよびSamsungのS.M.A.R.T.属性にも含まれています。

　これらのメーカーでは、より精度の高い寿命計算に必要な情報を収集・公開している、と言うことができます。

　最後に、NANDエラーに関する属性が最も多いのは、Micronの5つです。

　Micronも含めて、各社、ProgramやEraseでのエラー数、Error Correction Code (ECC)やRAIDといった種類の異なる誤り訂正方式に関する属性も存在します。また、Read時のエラービット数に関する情報は、Program / Erase回数と同じNANDの疲弊状態だけでなく、記録されているデータの記録の正常さを示す指標として重要です。したがって、NANDエラーに関する属性が多いということは、NANDの疲弊だけでなく記録されているデータが正常かどうかに関して必要な情報を収集・公開している、と言えます。

　もちろん、公開されていないだけで他にも誤り訂正関連の属性を記録・管理している可能性は十分にあります。

## S.M.A.R.T.属性の調査分析活動
　Linux Hardware Database Project<sup>[4]</sup>には、全世界のユーザからボランティアでHDDやSSDのS.M.A.R.T.属性を収集して分析し、HDDやSSDの信頼性を見積もるプロジェクトが存在します<sup>[5]</sup>。

　このプロジェクトでは、S.M.A.R.T.属性のうち11個の属性の値に注目して算出した「重要なエラーの数」から平均故障間隔(Mean Time Between Failure; MTBF)を計算し、この値の長短をもって、信頼性の高いドライブのモデルやメーカーを決定しようとしています。

　このプロジェクトでも参照しているように、データセンターにおいては膨大な数のHDDを運用しており、それらのHDDのS.M.A.R.T.属性を解析することで、故障の前兆をつかもうとする活動が存在します。

　ただ、このプロジェクトのSSDのリストを見ると、サンプル数が少ないものや、製品保証期間と比較してモニタ期間が短いものも多く、このデータをそのまま鵜呑みにはできないと考えます。

　またSSDについては別の理由から注意が必要です。このプロジェクトで平均故障間隔の計算に用いる「重要なエラー」の中には、アンコレクタブルエラーのようなホストにエラーが通知される事象だけでなく、ホストには報告されないドライブ内部の事象（セクタの代替処理回数）も含まれています。

　それであれば、SSDについてはNANDフラッシュメモリ特有の事象、具体的にはProgramやEraseのエラーであるとか通常のECCよりも強力な誤り訂正処理の発動回数なども考慮に入れるべきです。

　S.M.A.R.T.は元々、安定した利用環境での経年劣化による故障の早期発見と予測を目的とした機能です。このことからも、NANDフラッシュメモリを不揮発性記憶媒体とするSSDの場合は、ProgramやEraseのエラー数をはじめ、より強力な誤り訂正機能の発動回数といった、NANDフラッシュメモリセルの疲弊を示すと考えられている数値を計算に加えるべきだと考えます。

# まとめ
　この記事では、SSDの健康状態把握を目的とした情報の収集および取得機能として幅広く用いられている"Self-Monitoring, Analysis and Reporting Technology (S.M.A.R.T.)"について、SATA SSDが準拠するATA Command Set (ACS)の場合を説明しました。

　ACSのSMART Feature SetはS.M.A.R.T.属性の種類や内容を一切定めておらず、このことが製品比較上での最大のネックになっています。それでも、各メーカーの公開情報から、どのようなS.M.A.R.T.属性が公開されていてどのような傾向があるのか、といったことであれば調査可能であることがわかりました。

　次回はNVMe SSDのS.M.A.R.T.について詳しく見ていく予定です。

# References
[1] T13, _“Information technology - ATA/ATAPI Command Set - 3 (ACS-3)”_, T13/2161-D Revision 4o, August, 2013
[2] T13, _“Information technology - ATA Command Set - 4 (ACS-4)”_, T13/BSR INCITS 529 Revision 14, October, 2016
[3] Jim Hatfield, “SMART Attribute Overview”, proposal document for T13 Technical Committee, e05171r0, Oct. 2005
[4] Linux Hardware Database Project, https://linux-hardware.org/
[5] HDD/SSD Desktop-Class Reliability Test, https://github.com/linuxhw/SMART

# ライセンス表記
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="クリエイティブ・コモンズ・ライセンス" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />この記事は<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンス</a>の下に提供されています。