Windows Serverの記憶域プールには、「記憶域階層(Tiered Storage)」という素晴らしい機能があります。
Tiered Storageは、HDDとSSDをRAID0みたいに組み合わせて1個のボリュームとして扱います。ファイルの利用頻度をもとに、よく使うデータは高速なSSD・あまり使わないデータは遅くて大容量なHDD、といったようにOSが自動でデータを配置してくれます。
ZFSのL2ARC、Linuxのdm-cache、AMD StoreMI、Intel RSTみたいなやつです。
StoreMI/IRSTと異なり、CPUメーカー変更したときでも問題なく動きます。 Windows入ってるPCならIntelだろうがAMDだろうが問題なく動作します。 OSの機能なのでソフトウェア入れる必要もないです。
コイツをWindows 10で使う方法について。 (具体的な手順は面倒なので書きません。自分で調べて)
結論
- Windows 10ではPowerShellでコマンドを叩けば記憶域階層(Tiered Storage)を作れる
- 記憶域プールのミラー/パリティはReFSと組み合わせて使うとデータが壊れにくくなる
- Tiered StorageはReFSと組み合わせて使うと速くなる
- シンプルボリュームはReFS使うメリットほぼないのでNTFSでいい
- Windows 10ではReFSフォーマットができない(10 Pro for Workstationsなら可能)
- フォーマット済のReFSボリュームの読み書きは可能
- 重複排除されたボリュームはWindows Server専用となる。Windows 10で読み書きすることはできない
記憶域階層 (Tiered Storage)
いちおう、Windows 10でもPowerShellでコマンドを叩けばTiered Storageは作れます。が、ReFSフォーマットができないので微妙です。
Tiered Storage + NTFSだと、利用頻度によるデータの再配置は、タスクによって 定期的に 行われます。対してTiered Storage + ReFSでは、利用頻度によるデータの再配置は リアルタイム で行われます。なのでReFSのほうが高速に動作するはずです。
体験版のWindows Serverでも入れたマシンでTiered Storage作ってReFSフォーマットして、フォーマットしたSSD/HDDを使いたいマシンに移設するのが良いです。
Hyper-Vのパススルーディスク使ってWindows ServerのVMにアタッチする方法なら、接続を変えずに・再起動なしでやることもできます。
整合性ストリーム (integrity stream)
ReFSは、ファイルを読み込むたびにチェックサムでデータ破損を検査する、整合性ストリームという機能があります。
デフォルトで無効になっているので、使うにはPowerShell叩いて有効にする必要があります。
有効にすると、書き込むたびにチェックサム再計算・読み込むたびにチェックサム検証 が行われるので、アクセス速度は遅くなるはずです。
- ReFS が回復性のないシンプル領域またはベア ドライブにマウントされている場合、ReFS は破損したデータを返さずに、ユーザーにエラーを返します。
- ReFS が回復性のあるミラー スペースまたはパリティ スペースにマウントされている場合、ReFS は破損の修正を試行します。
- 試行が成功した場合、ReFS は修正の書き込みを適用してデータの整合性を復元し、アプリケーションに有効なデータを返します。 アプリケーションでは、破損があったことは認識されません。
- 試行が失敗した場合、ReFS はエラーを返します。
https://docs.microsoft.com/ja-jp/windows-server/storage/refs/integrity-streams
つまり、記憶域プールのミラー/パリティはReFSと組み合わせて使うとデータが壊れにくくなります。シンプルボリュームと組み合わせて使うのはメリットがないのでNTFSでいいと思います。
重複排除 (deduplication)
Windows Serverで重複排除したボリュームは、Windows 10では読み書きできません。
最悪、データが壊れる恐れもあるので、重複排除したボリュームをWindows 10にマウントするのはやめたほうがいいです。
Windows Serverから持ってきたプログラムをWindows 10に無理矢理に移植することで重複排除を使えるようにする方法はあるらしいです。Windows Updateのたびに壊れるらしいのでやめた方がいいと思います。
重複排除機能をSMR方式HDDと組み合わせて使うと破滅するのでやめたほうがいいです。マジで。
重複排除のスキャン時に大量のRead&Writeが発生するので、SMR方式だとI/O要求が詰まってフリーズします。やめましょう。