Windowsの記憶域プール上にNTFSの仮想ボリュームを作る時は、NTFSのアロケーションユニットサイズ(クラスタサイズ)をよーく考える事。思わぬところでNTFSの最大容量制限に引っかかることになる。
NTFSでは1ボリュームあたりのクラスタ数は2^64-1個が上限となっている。つまり、ボリュームの最大容量はクラスタサイズで決まる(最大容量=クラスタサイズ×最大クラスタ数)。アロケーションユニットサイズと最大容量の関係は下表となる。
クラスタサイズ | 最大ボリュームサイズ |
---|---|
4KB | 16TB |
8KB | 32TB |
16KB | 64TB |
32KB | 128TB |
64KB | 256TB |
(2020/12/01 追記)
家のWindows 10マシンで確認したところ、いつの間にかアロケーションユニットサイズとして128KB~2MBが追加されていた。Windows Serverでは2019で対応したっぽい。追加分は下表のとおり。
クラスタサイズ | 最大ボリュームサイズ |
---|---|
128KB | 512TB |
256KB | 1PB |
512KB | 2PB |
1MB | 4PB |
2MB | 8PB |
これだけ拡張されればNTFSもまだまだ行けるね!
2020-02-18現在、デフォルトクラスタサイズは昔から変わらず4KBのため、NTFSの1ボリューム≒1パーティションの最大サイズは16TBとなる。言うまでもないが、クラスタサイズを後から変更するのは無理。
一般的な使い方なら4KBでも十分だろうけど、容量拡張が容易な記憶域プールの場合、いとも簡単にこの最大ボリュームサイズ制限に引っかかってしまう。仮想ディスク上のNTFSボリュームを拡張すべく記憶域プールの容量を増やし、仮想ディスクを拡張し、いよいよNTFSパーティションを拡張だぜ!って段階で16TB制限に遭遇することとなり、マジ真顔状態となる。ありえねーよほんと……
16TBのHDDがふつーに変えてしまう昨今、やろうと思えばその辺のマザボですら16TB×8本で128TBの記憶域プールが作れてしまう。そう考えると、記憶域プール上のNTFSのクラスタサイズは64KB、と脳死対応をしてしまっていいのかも。あるいはNTFSを捨ててReFSに行ってしまうか。アロケーションユニットサイズは、ボリュームにおけるデータの最小管理単位なので、無暗に大きくすると無駄が多く発生する可能性もあって悩ましいところ。
あー、10TBのデータをバックアップから復元するのめんどくせー。