FreeBSD 2.X についての FAQ (よくある質問とその答え) : インストール : ffs ファイルシステムの大きさの制限は?
Previous: メモリの大きさの制限は?
Next: フロッピーに 1 テラバイトのファイルを格納するには?

2.27. ffs ファイルシステムの大きさの制限は?

ffs ファイルシステムは, 論理的な最大の上限は 8 テラバイト (2G ブロック) か, デフォルトのブロックサイズを 8K とすると 16 テラバイトとなります. 実際問題として, 1 テラバイトのソフトウェアの限界がありますが, 修正すれば 4 テラバイトのファイルシステムが可能です (実際に存在します).

一つの ffs のファイルの最大のサイズは, ブロックサイズが 4K の場合で 約 1 ギガブロック (4 テラバイト) です.

                           maxfilesize
                ----------------------------------
                2.2.7    3.0
fs block size   -stable  -current  works  should-work
-------------   -------  --------  -----  -----------
4K              4T-1       4T-1    4T-1   4+T
8K              32+G       8T-1    32+G   16T-1
16K             128+G      16T-1   128+G  32T-1
32K             512+G      32T-1   512+G  64T-1
64K             2048+G     64T-1   2048+G 128T-1
     

fs ブロックサイズが 4K の場合は三重間接ブロックが使用され, いづれの場合でも三重間接ブロックを使用して表現できる最大の fs ブロック番号 (およそ 1K^3 + 1K^2 + 1K) に制限されるはずなのですが, 実際は fs ブロック番号の (間違った) 上限 1G-1 で制限されます. fs ブロック番号の制限は 2G-1 となるはずです. 2G-1 付近に fs ブロック番号のバグが多少ありますが, fs ブロックサイズが 4K の場合は, ここまでのブロック番号には到達しません.

ブロックサイズが 8K 以上の場合, いづれの場合も fs ブロック番号の 上限 2G-1 で制限されるはずですが, 実際は fs ブロック番号の上限 1G-1 で制限されます. 例外的に -stable では三重間接ブロックまでは 到達しないため, 制限は二重間接ブロックで表現できる最大の fs ブロック番号 (およそ (blocksize/4)^2 + (blocksize/4)) となります. -current ではこの制限を超えると問題を引き起こすかもしれません. 正しい制限値である 2G-1 ブロックを使用すると明らかに問題が出ます.


FreeBSD 2.X についての FAQ (よくある質問とその答え) : インストール : ffs ファイルシステムの大きさの制限は?
Previous: メモリの大きさの制限は?
Next: フロッピーに 1 テラバイトのファイルを格納するには?