ext4
ext4 (fourth extended file system) はオープンソースのディスクファイルシステムで、extended filesystem シリーズの最新バージョンです。これは多くの Linux システムで主要なファイルシステムとして使用されていることから、Linux でサポートされている中でほぼ間違いなく最も安定し、かつ十分にテストされたファイルシステムとなっています。
ext4 は当初 ext3 のフォークとして作成され、パフォーマンスの改善と、ディスク上のフォーマットへのわずかな変更を伴うサイズ制限の撤廃という、新しい機能を取り入れました。ボリュームの上限は 1 EB に、ファイルサイズの上限は 16TB に拡大されました。古典的な ext2/3 ビットマップブロック割り当てに代わって、ext4 はエクステントを使用し、大きいファイルのパフォーマンスを向上させつつ断片化を抑制します。ext4 はより洗練されたブロック割り当てアルゴリズム (遅延割り当てとマルチブロック割り当て) も提供し、ファイルシステムドライバがディスク上のデータのレイアウトをより最適化できるようにしています。
インストール
カーネル
ext4 ファイルシステムのコードを利用するには、以下のカーネルオプションを有効にしてください:
File systems --->
<*> The Extended 4 (ext4) filesystem Search for <code>CONFIG_CONFIG_EXT4_FS</code> to find this item.
ext4 のオプション機能をサポートするには:
File systems ---> [*] Ext4 POSIX Access Control Lists Search for <code>CONFIG_CONFIG_EXT4_FS_POSIX_ACL</code> to find this item. [*] Ext4 Security Labels Search for <code>CONFIG_CONFIG_EXT4_FS_SECURITY</code> to find this item. [ ] EXT4 debugging support
ext4 ファイルシステムのコードは ext2、ext3、ext4 ファイルシステムを扱うことができます。これにより、ファイルシステムが ext2 または ext3 としてマウントされた場合の互換性が維持されるとともに、ext4 としてマウントされた場合にはアップグレードできるようになります。さらに、tune2fs を使って既存の ext2 や ext3 ファイルシステムに ext3 や ext4 特有の機能を追加することができますが、一定の制約は残ります。
ext2 と ext3 のファイルタイムスタンプはいずれも 2038 年問題の影響を受けますが、ext4 は 2016 年の Linuxカーネル 4.3.6 と e2fsprogs 1.43 以降 2038 年問題の影響を受けません。ジャーナルを持たない Extended ファイルシステムというものを特異的に求めている場合は、ext2 ではなくジャーナルを持たない ext4 ファイルシステムを使用するべきです; ジャーナルを持たない ext4 を参照してください。
通常の ext4 システムでは、ext3 や ext2 のオプションを有効にする必要はありません。以降のファイルシステムオプションは、もっぱら歴史的な理由 (ext3) と、非常に特殊なユースケース (ext2) のために残されているものです。
ext3
オリジナルの ext3 ドライバは Linux カーネルのバージョン 4.3 で削除されました。ext3 ファイルシステムを使用する必要があるようなケースはごく稀なものしか残っていないはずですが、その場合は ext4 ドライバを使用することができます。
ext3 ファイルシステムをマウントするためには ext4 ドライバを使用することを推奨します。古い ext3 ドライバは有効化するべきではありません。
ext3 ドライバーを利用するには、以下のカーネルオプションを有効にしてください:
File systems --->
<*> Ext3 journalling file system support
ext3 のオプション機能をサポートするには:
File systems --->
[*] Default to 'data=ordered' in ext3
[*] Ext3 extended attributes
[*] Ext3 POSIX Access Control Lists
[*] Ext3 Security Labels
ext2
ext2 ファイルシステムはジャーナリングサポートを備えていません。
オリジナルの ext2 ファイルシステムドライバが有効化されていれば、ext2 ファイルシステムをマウントするためにはそれが使用されます。通常の環境では ext4 ドライバを使用することが強く推奨されるため、従来の ext2 ドライバは有効化されるべきではありません: ext2 ファイルシステムをマウントするために ext4 ドライバがすでに利用可能であれば、それとは別にドライバが必要になることはまったくありません。
オリジナルの ext2 ファイルシステムのコードは、特殊な場合のために利用可能なまま残されています。例えば: ext4 ファイルシステムのコードと比較して、オリジナルの ext2 コードは少ないメモリ消費で済みます。(そのような場合、ext4 ドライバは完全に省略されるでしょうから、ext3 および ext4 ファイルシステムはできないでしょう。)
オリジナルの ext2 ファイルシステムのコードを使用したサポートを利用するには、以下のカーネルオプションを有効にしてください:
File systems --->
<*> Second extended fs support
ext2 のオプション機能をサポートするには:
File systems --->
[*] Ext2 extended attributes
[*] Ext2 POSIX Access Control Lists
[*] Ext2 Security Labels
大容量ドライブのサポート
-*- Enable the block layer --->
[*] Support for large (2TB+) block devices and files
USE フラグ
USE flags for sys-fs/e2fsprogs Standard EXT2/EXT3/EXT4 filesystem utilities
+tools
|
Build extfs tools (mke2fs, e2fsck, tune2fs, etc.) |
archive
|
Add support for mke2fs to read a tarball as input. This allows not needing privileges. Needs app-arch/libarchive. |
cron
|
Install e2scrub_all cron script |
fuse
|
Build fuse2fs, a FUSE file system client for ext2/ext3/ext4 file systems |
nls
|
Add Native Language Support (using gettext - GNU locale utilities) |
static-libs
|
Build static versions of dynamic libraries as well |
test
|
Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently) |
emerge
sys-fs/e2fsprogs パッケージは system 集合に含まれているはずです。
root #
emerge --ask sys-fs/e2fsprogs
使い方
作成
mkfs.* および mke2fs コマンドはフォーマットするよう指示されたデバイス (つまりパーティション、ボリューム、ディスクドライブ) またはファイルの全ての内容を不可逆的に破壊します。正しいデバイスとパーティションを選択しているか必ず確認してください! (以降の例では
/dev/sdx5
を使用しています。)ext4 ファイルシステムを /dev/sdx5 パーティションに作成するには:
root #
mkfs.ext4 /dev/sdx5
マウント
ファイルシステム を参照してください。
ジャーナルを持たない ext4
ユースケースによっては、ジャーナルを持たないファイルシステムを作成するのが望ましいことがあります。ext2 はまさしくそれを提供していますが、ファイルタイムスタンプに関して 2038 年問題による影響を受けます。ext4 ファイルシステムだけが Y2K38 安全になっています。
ジャーナルを持たない、現行バージョンの ext ファイルシステムを得るには、ext4 ファイルシステムを has_journal
機能を持たないように作成するか、同様に修正することで得られます。(ext3 ファイルシステムではこれは可能ではないことに注意してください。)
既存の ext4 ボリュームからジャーナルを削除する
指定された ext2/3/4 ボリューム上で現在有効化されているファイルシステムの機能を表示するには:
root #
dumpe2fs -h /dev/sdx5 | grep "^Filesystem features:"
ジャーナルを無効化するには、先にファイルシステムをアンマウントする必要があります:
root #
umount /dev/sdx5
root #
tune2fs -O ^has_journal /dev/sdx5
先頭の ^
は指定された機能を無効化します。そうしないと、機能は有効化されるでしょう; つまり、既存の ext2 またはジャーナルを持たない ext4 ファイルシステムでジャーナルを有効化するには:
root #
tune2fs -O has_journal /dev/sdx5
dumpe2fs を再実行すると、has_journal
機能が表示されなくなっているはずです。これでファイルシステムを再マウントすればよいでしょう:
root #
mount /dev/sdx5
ジャーナルを持たない ext4 ボリュームを新しく作成する
ジャーナルを持たない ext4 ボリュームを新しく作成する (フォーマットする) には、ext4
ファイルシステムタイプのデフォルトオプションをオーバーライドする必要があります:
root #
mke2fs -t ext4 -O ^has_journal /dev/sdx5
ユーティリティ
パッケージに含まれるユーティリティは以下から成ります:
ユーティリティ | 説明 | Man ページ |
---|---|---|
badblocks | ブロックデバイスにストレステストを行うための小さなプログラム。 | badblocks(8) |
debugfs | ext2/ext3/ext4 ファイルシステムのデバッガー。 | debugfs(8) |
dumpe2fs | ext2/ext3/ext4 ファイルシステムの情報をダンプするためのツール。 | dumpe2fs(8) |
e2fsck | ext2/ext3/ext4 ファイルシステムをチェックするためのツール。 | e2fsck(8) |
e2image | ext2/ext3/ext4 ファイルシステムの重要なメタデータをファイルに保存するためのツール。 | e2image(8) |
e2label | ext2/ext3/ext4 ファイルシステムのラベルを変更するためのツール(tune2fs へのシンボリックリンク)。 | |
e2undo | ext2/ext3/ext4 ファイルシステムの復元ログを再現するためのツール。 | e2undo(8) |
fsck.ext2 | ext2 ファイルシステムを明示的にチェックします(e2fsck へのシンボリックリンク)。 | |
fsck.ext3 | ext3 ファイルシステムを明示的にチェックします(e2fsck へのシンボリックリンク)。 | |
fsck.ext4 | ext4 ファイルシステムを明示的にチェックします(e2fsck へのシンボリックリンク)。 | |
fsck.ext4dev | ext4dev ファイルシステムを明示的にチェックします(e2fsck へのシンボリックリンク)。 | |
logsave | コマンドの出力をログファイルに保存するためのツール。 | logsave(8) |
mke2fs | ext2/ext3/ext4 ファイルシステムを作成するための基本プログラム。作成コマンドはここへのシンボリックリンクです。 | mke2fs(8) |
mkfs.ext2 | ext2 ファイルシステムを明示的に作成します(mke2fs へのシンボリックリンク)。 | |
mkfs.ext3 | ext3 ファイルシステムを明示的に作成します(mke2fs へのシンボリックリンク)。 | |
mkfs.ext4 | ext4 ファイルシステムを明示的に作成します(mke2fs へのシンボリックリンク)。 | |
mkfs.ext4dev | ext4dev ファイルシステムを明示的に作成します(mke2fs へのシンボリックリンク)。 | |
resize2fs | ext2/ext3/ext4 ファイルシステムのサイズを変更するツール。 | resize2fs(8) |
tune2fs | ext2/ext3/ext4 ファイルシステムの調整可能なパラメーターを変更します。 | tune2fs(8) |
chattr | Linux ファイルシステムにおけるファイル属性を変更します。 | chattr(1) |
lsattr | ext2/ext3/ext4 ファイル属性の一覧を表示します。 | lsattr(1) |
e2freefrag | 空き領域の断片化情報を報告します。 | e2freefrag(8) |
e4defrag | ext4 ファイルシステム用のオンラインデフラグツール。 | e4defrag(8) |
filefrag | ファイルの断片化を報告します。 | filefrag(8) |
mklost+found | マウントされている ext2/ext3/ext4 ファイルシステムに lost+found ディレクトリを作成します。 | mklost+found(8) |
関連項目
- XFS — 高性能なジャーナリングファイルシステム
- Btrfs — 耐障害性、自己修復特性、管理のしやすさに焦点を当てつつ、先進的な機能を実装することも主眼としている、Linux 向けのコピーオンライト (CoW) ファイルシステムです。
- FAT — 当初は MS-DOS (および後の NT 以前の Microsoft Windows) で使用するために作られたファイルシステム。
外部資料
- https://ext4.wiki.kernel.org/ - ext2/3/4 ファイルシステムの wiki。