OSインストールに適したストレージの要件(3/3)

# はじめに
　[前々回の記事](https://qiita.com/ken-yossy/items/c65fceaf53665f7c5751)ではWindowsのインストールにおけるストレージ要件には容量の規定しかないこと、[前回の記事](https://qiita.com/ken-yossy/items/160400b4e9c59ffc0aaf)ではWindows 11起動時のコマンドログを用いてOS起動時間短縮には「QD = 1のランダムアクセス性能」が重要であることを説明しました。

　しかし、OSがインストールされるシステムドライブに求められる機能や特徴は、容量やデータアクセス性能だけではありません。

　今回の記事では、容量とデータアクセス性能以外に、ストレージの種類に関わらずシステムドライブに使うストレージに求められる特徴と、特にシステムドライブにNANDフラッシュメモリをメディアとするSolid State Drive (SSD)を使う場合に求められる特徴（機能）をまとめます。

# まとめ
* システムドライブには、電源断や動作環境への耐性が求められる
* 特にSSDを使う場合、長期間の非通電放置や非書き換えによるエラー増加対策と、書き換えよりも読み出しが中心となるデータのエラー増加対策も求められる

# システムドライブに必要な特徴
　OSという重要なデータが記録されるシステムドライブに求められる特徴（機能）のうち、まず、ストレージの種類（HDDかSSDか）にかかわらず求められる特徴をまとめます。

## 電源断への耐性
　正しい手順で電源を落とす場合、OSはストレージにそれまでの状態を書き込みます。これは、次の起動時にそれらのデータを読み出して電源断時の状態からスムーズに動作を再開するためです。

　つまり、電源断時にはOSによるストレージへの書き込みがあり、この書き込みがきちんと完了することは、システムの整合性を保ち、次にシステムに電源が投入された時に正しく起動して動作を継続させるために非常に重要であることを意味します。

　なんらかの理由で正しい手順での電源断ができない場合、上記の前提が崩れます。このような場合に備え、OSは電源断前の状態を可能な限り復元する機能を備えています。

　この機能の動作時にOSはストレージ内のデータを使うので（他に使えるデータがない）、OSの復元処理が成功する確率を高める、またOSができるだけ電源断時に近い状態を復元できるようにするためには、ストレージ内のデータが可能な限り整合のとれた状態であることが必要です。

　つまり、**システムドライブには、正しい手順を経ない電源断時の後に可能な限りデータの整合性がとれた状態となる機能が求められます**。

## 環境耐性
　改めて言うまでもなくシステムデータは重要ですので、ドライブが運用されている環境、特に温度に対してはきちんとした耐性を備える必要があります。

　運用環境次第で高温だけでなく低温への耐性も必要となることがあり得ます。高温と低温どちらの場合でも、記憶メディアのデータ保持特性劣化に加え、コントローラICなどハードウェアの誤動作を引き起こす可能性があります。

　このため、**システムドライブには、ドライブが運用される環境への耐性が求められます**。

# システムドライブにするSSDに求められる機能
　電源断および環境への耐性は、ストレージの種類にかかわらず求められるものです。

　NANDフラッシュメモリを不揮発性記憶メディアとするSSDをシステムドライブに用いる場合、これに加えて考慮を要する点があります。それらはもちろんNANDフラッシュメモリの特性に起因するものです。

## 長期間の非通電放置や非書き換えによるエラー増加対策
　NANDフラッシュメモリには「データリテンション特性」があります。これは「データ書き込み後（アクセスせずに）放置する時間が長くなると電荷が抜けていく（＝データを忘れていく、エラーが多くなる）」特性です。以前[別の記事](https://qiita.com/ken-yossy/items/3ab1a823dde4ced919fc)で説明した特性です。

> しかし、データを書き込んでから時間が経つと、水漏れによってカップ内の水量が減ってしまい、水を入れた当初意図した量より少ない量の水しかメモリセルに残っていない状態になってしまいます。

　記録したデータにエラーが増えることはシステムドライブに限らず望ましくありませんが、システムドライブの場合はその影響がより大きくより深刻になります。

　加えて、システムドライブに記録されるデータは長期間書き換えられないものが多くなる傾向があります。例えば「OSインストール時に記録されたまま読み書きの頻度が低い」データです。

　具体的に言えば、使用しない種類のデバイスや機能に関するデータやインストールしたものの使用頻度が低いアプリケーション、などです。

　このため、**システムドライブに使用するSSDには、データリテンション特性によるエラー増加への対策が必要**です。

　下図は、Windows 10においてWindowsが備える機能の有効・無効を切り替えるダイアログです。

![Windowsが備える機能の有効・無効を切り替えるダイアログ(Windows 10)](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/dc37c7e1-d487-00e9-d762-07b25d28355a.png "Windowsが備える機能の有効・無効を切り替えるダイアログ(Windows 10)")
図：Windowsが備える機能の有効・無効を切り替えるダイアログ(Windows 10)

　このように、使用していない機能が数多くあります。機能を有効にする際に改めてデータ（ファイル）を取得してシステムドライブに記録する場合もありますが、たいていの機能は「必要なデータはドライブ内に存在するが機能は無効」という状態のはずです。

　この「データリテンション特性」によるデータエラー増加に対応する主な機能には、「パトロール」や「リフレッシュ」があります。

表：NANDフラッシュメモリのデータリテンション特性によるエラー増加に対応するSSDの機能例

| 機能名 | 内容 |
|--:|:--|
| **パトロール** | 適切な間隔でNANDフラッシュメモリからデータを読み出し、エラー数が増えすぎていないかチェックする |
| **リフレッシュ** | NANDフラッシュメモリからデータを読み出した際（パトロールを含む）にエラー数が閾値を超えていたら、読み出したデータ（エラー訂正したデータ）をNANDフラッシュメモリ内の別の場所に書き直す |

　パトロールの頻度（間隔）やリフレッシュの判断基準は、メーカーや製品に依存します。

　パトロールの頻度を増やす（時間間隔を狭くする）こと、およびリフレッシュの判断基準を厳しくする（少ないエラー数でデータを別の場所に書き直す）ことは、どちらもデータリテンション特性起因でエラーが増加してエラー訂正不能になることを防ぐ確率を高めます。

## 読み出しが中心となるデータのエラー増加対策
　NANDフラッシュメモリにはリードディスターブ(Read Disturb)という別の特性もあります。

　これは、NANDフラッシュメモリのメモリセルは「データ読み出し動作が弱いデータ書き込み動作に相当する」ため、データ書き込み後書き換えないまま（特に狭い時間間隔で）あるメモリセルとそのメモリセルの周辺メモリセルのデータの読み出しを繰り返すとそのメモリセルに電荷がよりたまる（＝データが化ける、エラーが多くなる）特性です。この特性は以前[この記事](https://qiita.com/ken-yossy/items/0f43eb4d7c3cdbc47713)で説明しました。

> 　メモリセルに記録されたデータを読む度にこのRead Disturbが起きるため、データを記録した（プログラムした）メモリセルを多数回Readした結果、メモリセルの水量がどんどん増えていって、そのうちに記録したデータが誤って判断されるほどになってしまいます。

　このため、**書き換えずにひたすら読み続けられるデータ**には、この特性によるエラー増加への対策が必要になります。

　勘が鋭い方はもうお気づきになったと思います。システムドライブに記録されたOSのデータは「書き換えられずに読み続けられるデータ」が多いです。各種アプリケーションプログラムも含めるとさらにサイズが増えます。各種アップデートで書き換えられることがあるとはいえ、その頻度は低いと考えられます。つまり、**システムドライブとして使用するSSDには、リードディスターブ対策が必要**ということです。

　リードディスターブ対策は、データリテンション対策と同様「パトロールしてリフレッシュする」という方法が一般的です。

　こちらも[以前の記事](https://qiita.com/ken-yossy/items/0f43eb4d7c3cdbc47713)で説明した通り、NANDフラッシュメモリメーカーによっては「保証読み出し回数」を定義している場合があり、もし「保証読み出し回数」が定義されていた場合、データを書き込んでからの読み出し回数を管理して少なくとも保証読み出し回数に到達する前にリフレッシュする必要があります。

　リードディスターブによるエラー増加はデータリテンションによるエラー増加とは異なる原理で発生するため、SSDコントローラは搭載するNANDフラッシュメモリの特性をよく理解して対策を講じています。

# まとめ
　今回の記事では、OSをインストールするストレージに求められる、容量やデータアクセス性能以外の機能や特徴として、以下の3つを示しました。

* 電源断や動作環境への耐性
* （SSDの場合）長期間の非通電放置や非書き換えによるエラー増加対策
* （SSDの場合）書き換えよりも読み出しが中心となるデータのエラー増加対策

　「OSをインストールするストレージ」としてSSDを選定する場合、容量やデータアクセス性能に加えて上記のような機能・特徴にも注目することで、より良い選定が行えます。ご参考になれば幸いです。

# ライセンス表記
<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>の下に提供されています。