nasne用外付けハードディスク最大容量のまとめ

ここ何回かnasneの外付けハードディスクについて検証してきましたが、それを踏まえた上でnasne用外付けハードディスクについてまとめてみようかと。例によって2進接頭辞(KiB/MiB/GiB/TiB表記で1024の累乗・PC上での容量表示)とSI接頭辞(KB/MB/GB/TB表記で1000の累乗・ハードディスク販売時の容量表示)の表記が入り混じりますのでご注意を。解説抜きで結論だけ知りたい方は太字部分だけ読んでみてください。
まずはおさらい。nasneに増設する外付けハードディスクは「MBRディスク・単一パーティションFAT32フォーマット」でなければいけません。nasneの公式FAQには「MBRディスク」という条件は記載されていませんが、GPTディスクにしてしまうと確実に認識しないので、結果としてMBRディスクを選択することになります。あと詳しくない人のために書いておくと、nasneで使うハードディスクはUSB3.0接続のものでも大丈夫*1です。わざわざUSB2.0の外付けハードディスクを探す必要はありませんので念の為。
さて、では前述の「MBRディスク・単一パーティションFAT32フォーマット」で用意できる最大容量はどのくらいなのか。
まず「MBRディスク」における制限ですが、ハードディスクのアクセス単位である「セクタ」を2の32乗個=42億9496万7296個まで扱うことができます。1セクタは512バイト(512nセクタまたは512eセクタと呼ばれている論理セクタ長512バイトのハードディスクの場合・以下512n/512e)または4096バイト(4Knセクタと呼ばれている論理セクタ長4096バイトのハードディスクの場合・以下4Kn)なので、512n/512eの場合は2TiB(約2.2TB)*2、4Knの場合は16TiB(約17.59TB)になります。
次に「FAT32フォーマット」における制限。FAT32フォーマットは大雑把に言ってセクタをいくつかまとめた「クラスタ」という単位で管理されていますが、このクラスタの大きさの上限が128セクタ*3です。なので512n/512eで64KiB、4Knで512KiBが上限となり、さらにこのクラスタが1パーティションあたり最大で2の28乗個=2億6843万5456個扱えるので、それぞれ16TiB(約17.59TB)と128TiB(約140.74TB)が扱える上限になります。まあ現状で普通に手に入るドライブはせいぜい12TB(約10.91TiB)なので、FAT32フォーマットとしての上限はあってないようなものです。ただ、フォーマットツールによってはクラスタ数の上限が何故か2の26乗個=6710万8864個に制限されているものがある*4ので、その場合はそれぞれ1/4、つまり4TiBと32TiBが上限になる場合があります。
MBRディスク・単一パーティションFAT32フォーマット」で「用意できる最大容量」は、前述の上限のうち小さい方になるので、512n/512eであれば約2.2TB、4Knであれば約17.59TBになります。nasneに繋ぐ繋がないに関係なく、これがMBRディスクのハードディスクとしての容量の上限です。
ここでやっと本題のnasneの話になりますが。
ネットのあちこちでnasneに2TBを超える容量のディスクを増設したという話を見かけます。しかし、かなり頑張って4Knを謳う製品を探さない限り市販の外付けハードディスクは512n/512eなので、nasneで認識するMBRディスクであれば2.2TBを超えられません。超えられないはずなのに3TBなどのハードディスクをMBRディスク・FAT32フォーマットで無理やりフォーマットするとどうなるかと言えば……パーティションの管理情報が壊れます。厄介なことにnasneはこのような壊れたパーティションであってもそれっぽい容量で認識してしまい、認識や登録も含め、ある一定までは正常に動作してしまうので、最初は良くても使っていくうちにエラーが起きて録画できなくなる訳です。
では4Knのハードディスクであればどうなのかと言えば、管理情報を壊さずに2TiBを超える外付けハードディスクを用意でき、実際nasneでも512n/512eと同様に認識し登録できますが、今度は残念なことにnasneのシステムソフトウェア2.60以前(2018年5月時点での最新)のバグ*5のせいで、やっぱり一定以上の容量が使われた時点で録画ができなくなるのは、先の検証で書いたとおりです。
4Knについては今後の対応に期待したいところですが*6、結局のところ、現状においては素直に「2TB(約1.82TiB)の外付けハードディスクをFAT32フォーマットする」か、「3TBの外付けハードディスクに2TiB(約2.2TB)のパーティションを切ってFAT32フォーマットする」*7のが、nasneに増設できる最大容量の外付けハードディスクということになりそうです。

*1:ただしUSB2.0相当で動作するので速度もUSB2.0と同等になりますが。

*2:これが俗に「2.2TBの壁」と呼ばれる制限です。当然ながら4Knの場合は上限が8倍になるので2.2TBに壁はありません。

*3:「2の累乗でなければいけない」「8ビットで表せる数値でなければいけない」という2つの条件から128になります。0を256として扱い256セクタまでという解釈も無いではないですが除外しています。

*4:MSの公式にある「パーティション32GiB以上はクラスタサイズ32KiB」という定義を「32KiBより大きいクラスタはありえない」と解釈してしまっているんじゃないかと。2TiB=2147483648KiBを32KiBで割るとちょうど6710万8864になります。

*5:先の512n/512eのような壊れたパーティションでなく正常に管理されているパーティションで、nasneも正常に容量を認識していて、NASとしてファイルを書き込む分には問題ないのに録画のみが失敗するので、あえてバグと言わせてもらいます。

*6:ちなみにカスタマーサポートにバグとして報告済です。とんちんかんなレスポンスで遅々として進まずイライラしてますが(苦笑)。

*7:おかわり編を参照。