7.3. ファイルシステム

7.3.1. Ext4 ファイルシステム

ext4 ファイルシステムは、Red Hat Enterprise Linux 5 で利用可能な ext3 ファイルシステムの拡張版です。ext4 は Red Hat Enterprise Linux 6 ではデフォルトのファイルシステムで、ファイルおよびファイルシステムの両方で最大 16 テラバイトのサイズまで対応します。また、ext3 ファイルシステムにある 32,000 までのサブディレクトリー制限を取り除きます。

注記

16 テラバイトを超えるファイルシステムについては、XFS などのスケーラブルで高機能のファイルシステムの使用が推奨されます。詳細については 「XFS ファイルシステム」 を参照してください。
ext4 ファイルシステムのデフォルト値はほとんどのワークロードに最適化されていますが、パフォーマンス分析でファイルシステム動作がパフォーマンスに影響を及ぼしていることが分かる場合は、以下のようなチューニングオプションが利用可能です。
Inode table の初期化
大規模なファイルシステムでは、mkfs.ext4 プロセスがファイルシステム内のすべての inode table を初期化するのに長時間かかる場合があります。このプロセスは、-E lazy_itable_init=1 オプションで先送りすることが可能です。これを使用すると、カーネルプロセスはファイルシステムのマウント後に初期化を継続します。この初期化の発生率は、mount コマンドの -o init_itable=n オプションでコントロールできます。このバックグラウンド初期化に費やされる時間はおよそ 1/n で、n のデフォルト値は 10 です。
Auto-fsync 動作
アプリケーションの中には既存ファイルの名前変更や切り取りおよび書き換え後に fsync() が常に適切に機能するとは限らないものがあるので、rename 経由の replace 操作および truncate 経由の replace 操作の後には、ext4 はファイルの自動同期をデフォルト設定します。この動作は、ほぼ以前の ext3 ファイルシステムの動作と一致しています。しかし、fsync() 操作は時間がかかるので、この自動動作が必要ない場合は、mount コマンドの -o noauto_da_alloc オプションを使って無効にします。つまり、アプリケーションは明示的に fsync() を使ってデータの一貫性を確保する必要があります。
ジャーナル I/O の優先順位
デフォルトでは、ジャーナルコミット I/O は通常の I/O よりもわずかに高い優先順位を与えられています。この優先順位は、mount コマンドの journal_ioprio=n オプションで制御可能で、デフォルト値は 3 です。有効な値の範囲は 0 から 7 で、0 が一番高い優先順位となります。
他の mkfs およびチューニングオプションについては、mkfs.ext4(8) および mount(8) の man ページと、kernel-doc パッケージの Documentation/filesystems/ext4.txt ファイルを参照してください。