Ext4
Ext4 は Linux で一番よく使われているファイルシステム、Ext3 の発展版です。多くの点で、Ext3 から Ext4 になって Ext2 から Ext3 に進んだときよりも大きな改善がされています。Ext3 では Ext2 にジャーナリングを追加したのがほとんどでしたが、Ext4 ではファイルデータを保存するファイルシステムの重要なデータ構造にメスが入っています。その結果、改良された設計、優れたパフォーマンス、信頼性、機能性を備えたファイルシステムが誕生しました。
ソース: Ext4 - Linux Kernel Newbies
目次
新しく ext4 ファイルシステムを作成
パーティションをフォーマットするには次を実行:
# mkfs.ext4 /dev/partition
デフォルトでは、mkfs.ext4
はやや低めの比率の bytes-per-inode を使って、作成される inode の定量を計算します。容量が 750GB 以上のパーティションではこれだと inode 番号が大きくなりすぎて、ディスク容量の無駄になります。比率は -i
オプションで直接設定することができます。1/6291456 なら 2TB のパーティションで 476928 の inode になります。
ext3 から ext4 に移行
ext3 パーティションを変換せずに ext4 としてマウント
理由
ext4 を完全に変換する案と ext3 をそのまま使用する案の折衷案として、既存の ext3 パーティションを ext4 としてマウントする方法があります。
利点:
- 互換性 (ext3 としてファイルシステムをマウントできます) – ext4 のサポートがないオペレーティングシステムからもファイルシステムを読み込むことが可能です (例: Windows の ext3 ドライバー)
- パフォーマンスが向上 (ext4 パーティションに完全に変換するのよりは劣ります) – 詳しくは Ext4 - Linux Kernel Newbies を見て下さい
欠点:
- ext4 の機能を全て活用することはできません (マルチブロックアロケーションや遅延アロケーションなどのディスクフォーマットに変更を与える機能は使えません)
方法
/etc/fstab
を編集して ext4 としてマウントしたいパーティションの 'type' を ext3 から ext4 に変更してください。- 変更したパーティションを再マウントします。
ext3 パーティションを ext4 に変換
理由
ext4 の能力を活かすには、非可逆の変換をする必要があります。
利点:
- パフォーマンスの向上と新機能 – 詳しくは Ext4 - Linux Kernel Newbies を見て下さい
欠点:
- Ext2Explore による読み取り専用アクセスは Windows から出来ますが、今のところデータを書き込むためのドライバーは存在しません。
- 一方通行 (ext4 パーティションを ext3 に'ダウングレード'することはできません)
方法
以下の手順は http://ext4.wiki.kernel.org/index.php/Ext4_Howto と https://bbs.archlinux.org/viewtopic.php?id=61602 から引用しています。
- バックアップを行なって下さい。ext4 に変換する ext3 パーティションに存在するデータを全てバックアップします。特に / (root) パーティションをバックアップする場合は、Clonezilla が役に立ちます。
/etc/fstab
を編集して ext4 に変換するパーティションの 'type' を ext3 から ext4 に変換してください。- (必要であれば) ライブメディアを起動します。
e2fsprogs
で変換を行う際はドライブがマウントされていない状態になっている必要があります。ドライブの root (/) パーティションを変換するときは、他のライブメディアから起動して変換するのが一番簡単です。 - パーティションがマウントされていないことを確認してください
tune2fs -O extent,uninit_bg,dir_index /dev/sdxX
を実行 (/dev/sdxX
は変換するパーティションのパスに置き換えて下さい、例:/dev/sda1
)fsck -f /dev/sdxX
を実行- 推奨: パーティションをマウントして
e4defrag -c -v /dev/sdxX
を実行 - Arch Linux を再起動してください
Tips and tricks
予約ブロックの削除
デフォルトでは、ファイルシステムの 5% はフラグメントが起こらないように root ユーザーに予約されます。最近の大容量ディスクでは、パーティションを長期保存アーカイブとして使う場合、5%は必要以上に大きい値となります (詳しくは このメール を見て下さい)。パーティションが以下の条件を満たしているならば、ディスク容量を増やすために予約ブロックの割合を減らしても大抵は問題ありません:
- パーティションがとても大きい (例えば 50GB 以上)
- 長期保存用のアーカイブとして使っている、頻繁にファイルを作成したり削除することがない
予約ブロックを削減するには tune2fs ユーティリティを使います。次のコマンドは /dev/sdXY
パーティションの予約ブロックの割合を 1.0% に設定します:
tune2fs -m 1.0 /dev/sdXY
findmnt(8) を使うことでデバイスの名前を確認できます:
findmnt /the/mount/point
E4rat
E4rat は ext4 ファイルシステム用に作られたプリロードアプリケーションです。E4rat は起動時に開かれるファイルを記録して、アクセス時間が短縮されるようにパーティションにおけるファイルの配置を最適化します。そして起動時の初期段階でファイルを先読みします。E4rat は SSD を使っている場合は効果がありません。SSD のアクセス時間はハードディスクと比べると無視できるほどしかないためです。
トラブルシューティング
バリアとパフォーマンス
カーネル 2.6.30 から、データの整合性を確保するのに役立つ変更によって ext4 のパフォーマンスは落ちています [1]。
多くのファイルシステム (XFS, ext3, ext4, reiserfs) では、fsync やトランザクションコミットの際に書き込みバリアと呼ばれるものをディスクに送信します。書き込みバリアは書き込みの順序を守らせるための仕組みで (いくらか性能面への影響があります)、ディスクの書き込みキャッシュを安全に利用できるようにするためのものです。お使いのディスクにバッテリーが搭載されているような場合は、バリアを無効化することで性能を改善できる場合があります。
書き込みバリアの送信は、マウントオプションに barrier=0 (ext3, ext4, reiserfs の場合) や nobarrier (XFS) を設定することで無効化できます [2]。
バリアをオフにしたいときは /etc/fstab
の変更したいファイルシステムに barrier=0
オプションを追加してください。例:
# /dev/sda5 / ext4 noatime,barrier=0 0 1