Ext4

提供: ArchWiki
2015年2月3日 (火) 19:45時点におけるKusakata (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

関連記事

Ext4 は Linux で一番よく使われているファイルシステム、Ext3 の発展版です。多くの点で、Ext3 から Ext4 になって Ext2 から Ext3 に進んだときよりも大きな改善がされています。Ext3 では Ext2 にジャーナリングを追加したのがほとんどでしたが、Ext4 ではファイルデータを保存するファイルシステムの重要なデータ構造にメスが入っています。その結果、改良された設計、優れたパフォーマンス、信頼性、機能性を備えたファイルシステムが誕生しました。

ソース: Ext4 - Linux Kernel Newbies

新しく ext4 ファイルシステムを作成

パーティションをフォーマットするには次を実行:

# mkfs.ext4 /dev/partition
ヒント: オプションについては mkfs.ext4 の man ページを見て下さい。/etc/mke2fs.conf を編集すればデフォルトのオプションを見たり設定できます。

デフォルトでは、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 の機能を全て活用することはできません (マルチブロックアロケーションや遅延アロケーションなどのディスクフォーマットに変更を与える機能は使えません)
ノート: Except for the relative novelty of ext4 (which can be seen as a risk), there is no major drawback to this technique.

方法

  1. /etc/fstab を編集して ext4 としてマウントしたいパーティションの 'type' を ext3 から ext4 に変更してください。
  2. 変更したパーティションを再マウントします。

ext3 パーティションを ext4 に変換

理由

ext4 の能力を活かすには、非可逆の変換をする必要があります。

利点:

欠点:

  • Ext2Explore による読み取り専用アクセスは Windows から出来ますが、今のところデータを書き込むためのドライバーは存在しません。
  • 一方通行 (ext4 パーティションを ext3 に'ダウングレード'することはできません)

方法

以下の手順は http://ext4.wiki.kernel.org/index.php/Ext4_Howtohttps://bbs.archlinux.org/viewtopic.php?id=61602 から引用しています。

警告: ext4 is backwards-compatible with ext3 until extent and other unique options are enabled. Note, however, that there are fewer benefits to using ext4 if the partition is not fully converted.
  1. BACK-UP! Back-up all data on any ext3 partitions that are to be converted to ext4. A useful package for this, especially for / (root) partitions, is Clonezilla.
  2. Edit /etc/fstab and change the 'type' from ext3 to ext4 for any partitions that are to be converted to ext4.
  3. Boot the live medium (if necessary). The conversion process with e2fsprogs must be done when the drive is not mounted. If converting one's root (/) partition, the simplest way to achieve this is to boot from some other live medium.
  4. Ensure the partition is NOT mounted
  5. tune2fs -O extent,uninit_bg,dir_index /dev/sdxX を実行 (/dev/sdxX は変換するパーティションのパスに置き換えて下さい、例: /dev/sda1)
  6. fsck -f /dev/sdxX を実行
  7. 推奨: パーティションをマウントして e4defrag -c -v /dev/sdxX を実行
  8. Arch Linux を再起動してください
ノート: The user MUST fsck the filesystem, or it will be unreadable! This fsck run is needed to return the filesystem to a consistent state. It WILL find checksum errors in the group descriptors -- this is expected. The '-f' parameter asks fsck to force checking even if the file system seems clean. The '-p' parameter asks fsck to 'automatically repair' (otherwise, the user will be asked for input for each error). You may need to run fsck -f rather than fsck -fp.
ノート: Even though the filesystem is now converted to ext4, all files that have been written before the conversion do not yet take advantage of the extent option of ext4, which will improve large file performance and reduce fragmentation and filesystem check time. In order to fully take advantage of ext4, all files would have to be rewritten on disk. Use e4defrag to take care of this problem.
警告: If the user converted their root (/) partition, a kernel panic may be encountered when attempting to boot. If this happens, simply reboot using the 'fallback' initial ramdisk and re-create the 'default' initial ramdisk: mkinitcpio -p 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 は起動時に開かれるファイルを記録して、アクセス時間が短縮されるようにパーティションにおけるファイルの配置を最適化します。そして起動時の初期段階でファイルを先読みします。E4ratSSD を使っている場合は効果がありません。SSD のアクセス時間はハードディスクと比べると無視できるほどしかないためです。

トラブルシューティング

バリアとパフォーマンス

カーネル 2.6.30 から、データの整合性を確保するのに役立つ変更によって ext4 のパフォーマンスは落ちています [1]

Most file systems (XFS, ext3, ext4, reiserfs) send write barriers to disk after fsync or during transaction commits. Write barriers enforce proper ordering of writes, making volatile disk write caches safe to use (at some performance penalty). If your disks are battery-backed in one way or another, disabling barriers may safely improve performance.

Sending write barriers can be disabled using the barrier=0 mount option (for ext3, ext4, and reiserfs), or using the nobarrier mount option (for XFS) [2].

警告: Disabling barriers when disks cannot guarantee caches are properly written in case of power failure can lead to severe file system corruption and data loss.

バリアをオフにしたいときは /etc/fstab の変更したいファイルシステムに barrier=0 オプションを追加してください。例:

# /dev/sda5    /    ext4    noatime,barrier=0    0    1