Ubuntu 16.04 で ext4: 500 TB のファイルシステムを作成する

Ubuntu 16.04 で ext4: 500 TB のファイルシステムを作成する

ext4 標準では、最大 1 EB のサイズのファイル システムを作成できることが示されています。

私の目標は、Ubuntu 16.0.4 で 500 TB の ext4 ファイル システムを作成することです。fs 作成コマンドを確認してください:

sudo mkfs.ext4 -m 0 -J device=/dev/md125p1 /dev/md125p2 -b 4096 -E stride=128,stripe-width=6400,lazy_itable_init=0,lazy_journal_init=0

このコマンドを実行すると、次のエラーが発生します。

スーパーブロックの設定中に、要求された数の inode を持つファイルシステムを作成できません

mkfs.ext4 の -i オプションを使用して、inode 値あたりのバイト数を非常に高い数値に設定しようとしましたが、それでもうまくいきませんでした。

RHEL では最大 50 TB の ext4 ファイル システムを推奨していることは承知しています。それでも、ext4 で 500 TB のファイル システムを作成することは可能ですか?

答え1

これで動作するはずです。最新バージョンを使用しますmke2fs:

% mkfs.ext4 /tmp/test.img 500T
mke2fs 1.45.4 (23-Sep-2019)
Creating regular file /tmp/test.img
Creating filesystem with 134217728000 4k blocks and 4259840000 inodes
Filesystem UUID: 00257d43-0298-4aaf-8cca-37e34f3d1bb8
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
    102400000, 214990848, 512000000, 550731776, 644972544, 1934917632, 
    2560000000, 3855122432, 5804752896, 12800000000, 17414258688, 
    26985857024, 52242776064, 64000000000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done

inode の数は(2**32)-1自動的に制限されるため、他の回答で表明された懸念は問題になりません。

また、ブロック サイズを VM ページ サイズより大きくできないという Linux の制限により、x86 では 4k を超えるブロック サイズの使用はサポートされていません。したがって、PowerPC のページ サイズは 64k なので、最大 64k のブロック サイズを使用できます。

また、非常に大きなファイルシステムを使用している場合は、e2fsprogsUbuntu 16.04 に同梱されている古いバージョンではなく、最新バージョンの を使用することを強くお勧めします。過去 3 年間で、非常に大きなファイルシステムに関連するものも含め、多くのバグ修正が行われています。

答え2

私の調査によると、ext4 は 4K のブロックに対して 500 TB をサポートしない可能性があります。

EXT3/EXT4 のデフォルト パーティションでは、バイト/inode 比率は 16384 バイト (16 Kb) ごとに 1 つの inode です。
つまり、次のようになります。

500 GB = 500 * 1024 * 1024 * 1024 * 1024 = 549 755 813 888 000 bytes
549 755 813 888 000 bytes / 16384 = 33 554 432 000 inodes

inode の数は 32 ビット数なので、ext2/3/4 ファイル システムで可能な inode の最大数は 2^32-1 または 4,294,967,295 個になります。

33 554 432 000 は 4,294,967,295 よりはるかに大きいため、その数の inode を割り当てることは不可能です。最大 inode 数の 8 倍が必要になります。

私が考える選択肢は次のとおりです:

  • inode制限を強制してみます:-N 4294967295
  • 8x4 = 32 KBのブロックを使用しますが、ファイルが小さい場合は無駄になります。
  • ext4 以外のファイルシステムを使用します。XFS がそのようなファイルシステムをサポートできるという報告を見たことがありますが、個人的な経験からは断言できません。

関連情報