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

XFSは、もともとSilicon Graphics, Inc.によってIRIX OS用に作成され、後にLinuxに移植された高性能のジャーナル・ファイル・システムです。ファイル・システムが多数のストレージ・デバイスにまたがる場合でも、XFSの並列I/Oパフォーマンスのおかげで、I/Oスレッド、ファイル・システムの帯域幅、ファイルおよびファイル・システムのサイズに、高いスケーラビリティが確保されます。

XFSの典型的なユース・ケースは、複数のストレージ・サーバー(各サーバーが、FC接続された複数のディスク・アレイからなる)にまたがるTBサイズのファイル・システムの実装です。

Oracle Linux 8では、root (/)またはbootファイル・システムで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ファイル・システム内の個々のディレクトリ階層に、どのユーザーまたはグループにそれに対する書き込みアクセスがあるかに関係なく、制限を設定できます。

基礎となるソフトウェア・ベースまたはハードウェア・ベースのストライプ・アレイ上に作成したXFSファイル・システムのスループットを最大限に高めるには、mkfs.xfsコマンドの-dオプションにsu引数とsw引数を使用して、各ストライプ・ユニットのサイズとストライプ当たりのユニット数を指定します。XFSは、その情報を使用して、ストレージに対して適切なようにデータ、inodeおよびジャーナルを調整します。lvmボリューム、mdボリュームおよび一部のハードウェアRAID構成では、XFSで、最適なストライプ・パラメータを自動的に選択できます。

アクティブなXFSファイル・システムで個々のファイルをデフラグするには、xfs_fsrコマンドを使用します。XFSファイル・システムのデフラグを参照してください。

XFSファイル・システムをサイズ調整するには、xfs_growfsコマンドを使用します。XFSファイル・システムのサイズ調整を参照してください。

稼働中のXFSファイル・システムをバックアップおよびリストアするには、xfsdumpおよびxfsrestoreコマンドを使用できます。XFSファイル・システムのバックアップとリストアを参照してください。

XFSの詳細は、https://xfs.wiki.kernel.org/を参照してください。

ローカル・ファイル・システム管理の概要は、「ファイル・システム管理について」を参照してください。