Ext4

ext4 (fourth extended file system)とは



ext4は、Linuxオペレーティングシステムで標準的に用いられているファイルシステムの一つで、ジャーナリングファイルシステムに分類されます。ext3の後継として開発され、ext3との後方互換性を持ちつつ、より高度な機能とパフォーマンスの向上を実現しています。特に、大容量ストレージのサポートや、データ保全性の強化が特徴です。ext4は、Linuxカーネル2.6.19で開発版が利用可能となり、2.6.28以降で安定版として正式に採用されました。

開発の経緯



ext4の開発は、ext3の拡張として始まりましたが、安定性に対する懸念から、ext3のソースコードを分岐させる形で進められました。これは、既存のext3ユーザーに影響を与えることなく、新しい機能の開発を進めるための方策でした。2006年6月28日に、ext3のメンテナであるセオドア・ツォー氏によってext4の開発が発表されました。開発初期のスナップショットはLinux 2.6.19に導入され、2008年10月11日にはLinux 2.6.28のソースコードリポジトリに安定版として統合されました。これにより、ext4の利用が推奨され、Linux 2.6.28が2008年12月25日にリリースされました。

ext4の主な特徴



大容量ストレージとファイルサイズ


ext4ファイルシステムは、最大1EiB(エクサバイト)のボリュームサイズと、最大16TiB(テラバイト)のファイルサイズをサポートしています。これにより、大容量のストレージデバイスを効率的に利用できます。

エクステント


ext4では、従来のブロックマッピング方式に代わり、エクステントという概念が導入されました。エクステントは連続した物理ブロックの集合であり、大きなファイルの処理性能を向上させ、フラグメンテーションを抑制する効果があります。一つのinodeにつき4つのエクステントを格納でき、5つ以上の場合はHtreeで管理されます。エクステントの使用には、ファイルごとにchattrコマンドなどで設定が必要です。

後方互換性


ext4は、ext3やext2との後方互換性があり、これらのファイルシステムをext4としてマウントできます。また、ext3は部分的にext4との前方互換性があり、ext4をext3としてマウントすることも可能です。ただし、ext4の主要な機能であるエクステントを使用している場合は、ext3としてマウントすることはできません。

永続的な事前確保


ext4では、ファイルに必要なディスク領域を事前に確保することができます。従来のファイルシステムでは、ファイル作成時に予約された領域をゼロで埋める必要がありましたが、ext4ではfallocate()システムコールにより、この処理が不要になりました。これにより、ディスクフルによる書き込み失敗を防ぎ、連続した領域の確保が期待でき、特にメディアストリーミングやデータベースでの利用に適しています。

遅延確保


ext4では、allocate-on-flush(遅延確保)と呼ばれる技術が使われています。これは、データがディスクにフラッシュされるまでブロックの確保を遅延させるもので、より大きなデータを効率的に確保し、パフォーマンスを向上させます。これにより、フラグメンテーションの発生も抑制されます。

サブディレクトリ数の制限緩和


ext3では、1つのディレクトリに作成できるサブディレクトリ数が32,000個に制限されていましたが、ext4ではこの制限が65,000個に緩和されました。また、Htreeインデックスを使用することで、多数のファイルが存在するディレクトリでも高速なアクセスが可能になっています。

ジャーナルのチェックサム


ext4は、ジャーナルの信頼性を高めるためにチェックサムを使用しています。これにより、ディスクI/Oの待機を安全に避け、パフォーマンスを向上させることができます。

オンラインデフラグメンテーション


ext4では、e4defragコマンドを使って、マウント中にデフラグメンテーションを実行できます。これにより、長期間運用したファイルシステムでも、フラグメンテーションを解消できます。

高速なファイルシステムチェック


ext4では、未使用のブロックやi-nodeテーブルに印を付けることで、e2fsckによるファイルシステムチェックの時間を短縮できます。

マルチブロックの確保


ext4では、遅延確保と組み合わせることで、複数のブロックを一度に確保できます。これにより、フラグメンテーションを低減し、ディスクへの書き込み効率を向上させます。

タイムスタンプの改良


ext4は、ナノ秒単位のタイムスタンプをサポートしています。また、2038年問題を回避するため、タイムスタンプの秒フィールドに拡張フィールドを追加し、204年後まで対応可能にしています。さらに、作成日時のタイムスタンプもサポートしていますが、LinuxのAPIとの連携が必要なため、現在はstatx() APIでのみ利用可能です。

注意点



遅延割り当てとデータ損失


ext4の遅延割り当て機能は、システムクラッシュ時にデータ損失の危険性があります。特に、fsyncでディスクへの書き込みを行わないプログラムを使用している場合、クラッシュ時にデータが失われる可能性があります。この問題に対処するために、遅延割り当てを制限するパッチが適用されていますが、このパッチはパフォーマンスを多少低下させる可能性があります。

Linuxカーネルの機能への影響


ext4はLinuxの標準ファイルシステムであるため、ext4固有の機能がLinuxカーネルの機能として実装されてしまう場合があります。fallocate()はその一例であり、他のファイルシステムでは同等の機能が実装されていない場合があります。

ext4を採用しているディストリビューション



以下のLinuxディストリビューションで、ext4が標準ファイルシステムとして採用されています。

Ubuntu (9.10以降)
Debian (6.0以降)
Fedora (11〜15で標準)
Red Hat Enterprise Linux (5.6以降でフルサポート)
Amazon Linux AMI (2011.02以降で標準)

関連情報



Btrfs (次世代ファイルシステム)
ファイルシステム全般

外部リンク



Kernel Log: Ext4 completes development phase as interim step to btrfs
Theodore Ts'o's discussion on ext4
Real World Benchmarks Of The EXT4 File-System
Ext4 Wiki
Ext4 block and inode allocator improvements
The new ext4 filesystem: current status and future plans
ext4 online defragmentation
“Ext4: Ext2/3の次世代のファイルシステム
Kernelnewbies.org: Ext4, the Fourth Extended File System
Gentoo Live InstallCD, with ext4 and ssh
Windows用ドライバ

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。