2043G以降のext3でサイズ切り捨てが失敗するのはなぜですか?

2043G以降のext3でサイズ切り捨てが失敗するのはなぜですか?

これが機能する理由:

truncate -s 2043G foo

...失敗しても:

truncate -s 2044G foo

なぜ2043GBですか?

答え1

これは使用中のファイルシステムの制限です。ここで、ZFSは最大7エクサバイトサイズのスパースファイルを生成します。

$ truncate -s 7E foo
$ ls -l foo
-rw-r--r--   1 jlliagre 8070450532247928832 Nov  9 16:49 foo

答え2

最大ファイルサイズが2TBのファイルシステムを使用している可能性があります(たとえば、ブロックサイズが4KBまたは8KBのext3)。truncateファイルシステムでサポートされている最大サイズより大きいターゲットファイルサイズを指定することはできません。 2044GBは2TBに非常に近いです。問題を引き起こすのが2048GBではない理由がわかりません。おそらくext3のファイルを保存する方法は内部的な問題でしょう。

関連情報