【RHEL】XFSとext4の違い

Linux

RHEL7からデフォルトのファイルシステムがext4からXFSになったため、XFSとext4の違いをまとめました。

ファイル・システムの管理

XFSの仕様

引用単位でのまとめになってしまいますが、いくつかの権威あるサイトのドキュメントから情報を引用してXFSの仕様をまとめました。

XFSには以下の特徴があります。

大規模データファイルの扱いに優れている

  • B+-Tree を使用し、フリーブロックの検索も行う
    • 大きな空き領域の高速アクセスが可能
  • データの管理を複数ブロック「エクステント」で行う
    • 少ないアドレッシングで大きなデータを扱える(メタデータの節約)
  • ResierFSより優れたメタデータのみのジャーナリング
    • 頻繁にメタデータの書き出しを行う
  • ACL(Access Control List)機能をデフォルトで搭載
    • 一般ユーザが、ユーザ単位でファイルへのアクセス制御の管理を行える
3.ファイルシステム(ext3、ReiserFS、XFS)(第3章ディスク管理とファイルシステム:基本管理コースI)
XFS - Linux技術者認定 LinuC | LPI-Japan
Linuxを学習する上で出てくる素朴な疑問や、便利なテクニックなどを紹介しています。LinuCは、クラウド・DX時代に活躍するエンジニアに求められるLinuxを中心とした技術や知識を身につけることができるLinux技術者認定試験。出題範囲に...

上記はXFSそのものの仕様です。以下では、LinuxのディストリビューションごとのXFSの仕様をまとめました。

RHEL9でのXFSの仕様

Red Hat Enterprise Linux9でのXFSの仕様は以下です。

信頼性

  • メタデータジャーナリング – システムの再起動時、およびファイルシステムの再マウント時に再生できるファイルシステム操作の記録を保持することで、システムクラッシュ後のファイルシステムの整合性を確保します。
  • 広範囲に及ぶランタイムメタデータの整合性チェック
  • 拡張性が高く、高速な修復ユーティリティー
  • クォータジャーナリングクラッシュ後に行なわれる、時間がかかるクォータの整合性チェックが不要になります。

スケーラビリティーおよびパフォーマンス

  • 対応するファイルシステムのサイズが最大 1024 TiB
  • 多数の同時操作に対応する機能
  • 空き領域管理のスケーラビリティーに関する B-Tree インデックス
  • 高度なメタデータ先読みアルゴリズム
  • ストリーミングビデオのワークロードの最適化

割り当てスキーム

  • エクステント (領域) ベースの割り当て
  • ストライプを認識できる割り当てポリシー
  • 遅延割り当て
  • 領域の事前割り当て
  • 動的に割り当てられる inode

その他の機能

  • Reflink ベースのファイルのコピー
  • 密接に統合されたバックアップおよび復元のユーティリティー
  • オンラインのデフラグ
  • オンラインのファイルシステム拡張
  • 包括的な診断機能
  • 拡張属性 (xattr)。これにより、システムが、ファイルごとに、名前と値の組み合わせを追加で関連付けられるようになります。
  • プロジェクトまたはディレクトリーのクォータ。ディレクトリーツリー全体にクォータ制限を適用できます。
  • サブセカンド (一秒未満) のタイムスタンプ
第9章 XFS の使用 | Red Hat Product Documentation
第9章 XFS の使用 | Red Hat Documentation

Oracle LinuxでのXFSの仕様

Oracle LinuxでのXFSの仕様は以下になります。

XFSには、大規模なファイル・システムの実装を必要とするエンタープライズ・レベルのコンピューティング環境でのデプロイメントに適した、次のような多くの機能があります。

  • メタデータ操作のためのジャーナルが実装されます。ジャーナルにより、停電やシステム障害が発生した場合にファイル・システムの整合性が保証されます。XFSは、ファイル・システムの更新を非同期で循環バッファ(journal)に記録しており、それにより、ディスクに対する実際のデータ更新のコミットが可能です。ジャーナルは、内部的にファイル・システムのデータ・セクションに格納するか、ディスク・アクセスの競合を減らために外部的に別のデバイスに格納することができます。システム障害や停電が発生した場合は、ファイル・システムの再マウント時にジャーナルが読み取られ、保留中のメタデータ操作がすべてリプレイされて、ファイル・システムの整合性が確保されます。このリカバリの速度は、ファイル・システムのサイズによって変わるわけではありません。
  • 複数の割当てグループに内部的に区分けされます。これが固定サイズの仮想ストレージ領域です。作成するファイルやディレクトリは、複数の割当てグループにまたがっていてもかまいません。各割当てグループは、他の割当てグループとは独立に、独自のinodeと空き領域の組合せを管理して、I/O操作のスケーラビリティと並列性を確保します。ファイル・システムが多くの物理デバイスにまたがる場合、割当てグループによりチャネルをストレージ・コンポーネントに基盤から分離することができるため、スループットを最適化できます。
  • エクステント・ベースのファイル・システム。ファイルのフラグメンテーションと複数箇所への散在を少なく保つために、各ファイルのブロックは可変長のエクステントを持つことができます。ここで、各エクステントは1つ以上の連続ブロックで構成されています。XFSの領域割当てスキームは、ファイル・システム操作に使用できる空きエクステントが効率的に特定されるように設計されています。XFSでは、スパース・ファイルでの空き部分にはストレージが割り当てられません。可能であれば、ファイルのエクステント割当てマップは、ファイルのinodeに格納されます。大きな割当てマップは、割当てグループによって維持されるデータ構造に格納されます。
  • reflinkおよび重複排除機能が含まれています。これにより、次の利点があります。
    • 各コピーに専用のinodeがあるため、各コピーは異なるファイル・メタデータ(権限など)を保持できます。データ・エクステントのみが共有されます。
    • このファイル・システムでは、アプリケーションで特別な操作が必要になることなく、あらゆる書込みでコピーオンライトが発生します。
    • あるエクステントを変更しても、その他すべてのエクステントは共有状態を維持できます。そのようにして、エクステント単位で領域が節約されます。ただし、ハードリンク・ファイルへの変更には、ファイル全体の新しいコピーが必要になる点に注意してください。
  • 遅延割当てが実装されます断片化を減らしパフォーマンスを高めるために、XFSでは、バッファ・キャッシュにおいてデータ用のファイル・システム・ブロックが予約され、OSでそのデータがディスクにフラッシュされるときにそのブロックが割り当てられます。
  • XFSでは、ファイルの拡張属性が認識されます。各属性の値のサイズは最大で64 KBにでき、各属性をルート領域またはユーザー名領域に割り当てることができます。
  • XFSにおける直接I/Oでは、高スループットの非キャッシュI/Oが実装されます。XFSでは、デバイスのすべてのI/O帯域幅を使用して、アプリケーションとストレージ・デバイスの間でDMAが直接実行されます。
  • ボリューム・マネージャ、ハードウェア・サブシステムおよびデータベースで提供されるスナップショット機能が含まれています。XFSファイル・システムのI/Oを一時停止し再開するには、xfs_freezeコマンドを使用します。XFSファイル・システムの凍結と凍結解除を参照してください。
  • XFSでは、ブロックおよびinodeの使用量に関するユーザー、グループおよびプロジェクト・ディスク割当てが可能になり、それはファイル・システムのマウント時に初期化されます。プロジェクト・ディスク割当てを使用すると、XFSファイル・システム内の個々のディレクトリ階層に、どのユーザーまたはグループにそれに対する書き込みアクセスがあるかに関係なく、制限を設定できます。
ローカル・ファイル・システムの管理

ext4の仕様

ext4の仕様は以下のサイトでまとめてあります。

ローカル・ファイル・システムの管理
第30章 ext4 ファイルシステムの使用 | Red Hat Product Documentation
第30章 ext4 ファイルシステムの使用 | Red Hat Documentation

XFSとext4の違い

XFSとetx4では、XFSのほうがパフォーマンスがよくなっています。

以下の記事から、XFSとext4のパフォーマンスの違いを引用します。

EXT4 vs XFS vs Btrfs vs ZFSをfioでベンチマークを取ってみました。 - Qiita
#概要CentOS7のデフォルトのファイルシステムがXFSとなりました。mkfsコマンドでも、minix, xfs, btrfsが使えるようになりました。そこで気になるファイルシステムを色々調…
ファイルシステムcp real timerm real time
ext40m9.723s (124MB/s)0m1.905s(631MB/s)
xfs0m7.013s (171MB/s)0m1.258s(960MB/s)

そのほか詳細な違いは以下の記事でまとめてあります。

1.5. XFS と ext4 の比較 | Red Hat Product Documentation
1.5. XFS と ext4 の比較 | Red Hat Documentation
タイトルとURLをコピーしました