3.10. ext4 から XFS への移行

Red Hat Enterprise Linux 7.0 より、デフォルトのファイルシステムが ext4 から XFS に変更になりました。本セクションでは、使用または管理時における XFS ファイルシステムの違いについて取り上げます。
ext4 ファイルシステムは Red Hat Enterprise Linux 7 でも完全にサポートされており、インストール時に ext4 を選択できます。ext4 から XFS への移行は可能ですが、必須ではありません。

3.10.1. Ext3/4 と XFS の違い

ファイルシステムの修復
Ext3/4 は、起動時にユーザー空間で e2fsck を実行し、必要時にジャーナルを復元しますが、XFS は、マウント時にカーネル空間でジャーナルの復元を実行します。fsck.xfs シェルスクリプトは提供されますが、initscript の要件を満たすためだけに提供され、意味のあるアクションは実行しません。
XFS ファイルシステムの修復またはチェックが要求される場合は、xfs_repair コマンドを使用します。読み取り専用のチェックには -n オプションを使用します。
xfs_repair コマンドは、ダーティーログを持つファイルシステムでは機能しません。このようなファイルシステムを修復するには、まず mountunmount を実行し、ログを再生する必要があります。ログが破損していたり、再生できない場合には、-L オプションを使用して、ログのゼロ化を実行できます。
XFS ファイルシステムのファイルシステムの修復の詳細は、「XFS」を参照してください。
メタデータのエラー動作
ext3/4 ファイルシステムでは、メタデータのエラーが生じた場合、デフォルトで継続させた状態で動作を設定することができます。XFS に回復不能なメタデータのエラーが生じた場合、ファイルシステムはシャットダウンし、EFSCORRUPTED エラーが戻されます。システムログには、発生したエラーの詳細情報が記載されます。さらに、必要な場合には xfs_repair を実行することを推奨します。
クォータ
XFS クォータは再マウントできないオプションです。クォータを有効にするには、-o quota オプションを初回マウント時に指定する必要があります。
クォータパッケージの標準ツールは基本的なクォータ管理タスクを実行できますが (setquota および repquota などのツール)、xfs_quota ツールは、プロジェクトクォータの管理など、XFS 固有の機能に使用できます。
quotacheck コマンドは、XFS ファイルシステムに一切影響を与えません。クォータアカウンティングがオンに設定される初回時に、XFS は自動の quotacheck を内部で実行します。XFS クォータのメタデータはファーストクラスのジャーナリングされたメタデータオブジェクトであるため、クォータシステムは、クォータが手動でオフに設定されるまで常に一貫性を維持します。
ファイルシステムのサイズ変更
XFS ファイルシステムには、ファイルシステムを小さくするユーティリティーがありません。ただし、XFS ファイルシステムは、xfs_growfs コマンドを使ってオンラインで拡張できます。
Inode 数
256 バイトの inode があり 1 TB を超えるファイルシステムの場合や、512 バイトの inode があり 2 TB を超えるファイルシステムの場合、XFS の inode の数は 2 の 32 乗を上回る場合があります。このように inode の数が大きくなると、32 ビットの stat を呼び出す際に EOVERFLOW 戻り値が出力され失敗します。この問題は、4 つの割り当てグループを使用した非ストライプ化した、デフォルトの Red Hat Enterprise Linux 7 設定を使用していると発生する可能性があります。カスタム設定、たとえばファイルシステムを拡張、または XFS ファイルシステムのパラメーターを変更すると、挙動が異なる場合があります。
アプリケーションは、通常、このように数が大きい inode 番号を処理します。必要に応じて、-o inode32 パラメーターを使用して XFS ファイルシステムをマウントして、inode の番号を強制的に 2 の 32 乗未満にします。inode32 を使用しても、64 ビット番号で割り当ててある inode には影響しません。

重要

inode32 オプションは、特定の環境で必要とされない限り使用しないでください。inode32 オプションは割り当て動作を変更します。したがって、低レベルのディスクブロックに、inode の割り当てに利用できる領域がない場合は、ENOSPC エラーが発生する場合があります。
予測型の事前割り当て
XFS は、ファイルの書き込み時の EOF を超えたブロックの割り当てに 予測型の事前割り当て を使用します。これは、NFS サーバーでの同時ストリーミングの書き込みワークロードによって発生するファイル断片化を防ぎます。デフォルトでは、この事前割り当ては、ファイルのサイズと共に拡大し、「du」の出力に表示されます。予測型の事前割り当てが設定されたファイルが 5 分間ダーティーにならないと、この事前割り当ては破棄されます。inode がその前にキャッシュから解放されると、inode が解放 (reclaim) された時に事前割り当てが破棄されます。
早期に出される ENOSPC の問題が予測型の事前割り当てによるものであると見られる場合は、事前割り当ての固定量を、-o allocsize=amount マウントオプションで指定することができます。
断片化に関連したツール
断片化は、遅延割り当てや予測型の事前割り当てなど、各種のヒューリスティックおよび動作によるものであるため、XFS ファイルシステムで大きな問題となることはほとんどありません。ファイルシステムの断片化を測定したり、ファイルシステムのデフラグを行うためのツールは存在しますが、それを使用することは推奨されません。
xfs_db frag コマンドは、ファイルシステムの割り当てを、パーセントで表される単一の断片化の数に抽出することを試行します。コマンドが出力した内容を理解するには、多くの専門知識が必要になります。たとえば、断片化の割合が 75% というは、ファイルごとの平均エクステント数が 4 しかないことを意味します。したがって、断片化の問題を調べるには、xfs_db フラグの出力だけでは十分とは言えず、より注意深く分析を行うことが推奨されます。

警告

xfs_fsr コマンドは、個別ファイル、またはファイルシステム上のすべてのファイルをデフラグするのに使用できます。ファイルの場所が破損したり、空き領域の断片化が発生したりする可能性があるので、特に後者をデフラグすることは推奨されておりません。

XFS と ext3 および ext4 で使用されるコマンドの比較

以下の表は、ext3 および ext4 で使用される共通のコマンドと、XFS 固有のコマンドを比較しています。

表3.1 ext3 および ext4 の共通コマンドと XFS のコマンドの比較

タスクext3/4XFS
ファイルシステムの作成mkfs.ext4 または mkfs.ext3mkfs.xfs
ファイルシステムのチェックe2fsckxfs_repair
ファイルシステムのサイズ変更resize2fsxfs_growfs
ファイルシステムのイメージの保存e2imagexfs_metadump および xfs_mdrestore
ファイルシステムのラベル付けまたはチューニングtune2fsxfs_admin
ファイルシステムのバックアップdump および restorexfsdump および xfsrestore
以下の表は、XFS ファイルシステムで機能する汎用ツールを示していますが、XFS バージョンにはさらに多くの固有機能があるため、これらの使用を推奨します。

表3.2 ext4 と XFS の汎用ツール

タスクext4XFS
Quotaquotaxfs_quota
ファイルマッピングfilefragxfs_bmap
ここにリストされている多くの XFS コマンドの詳細は 3章XFS ファイルシステム で確認できます。また、XFS 管理ツールの man ページで詳細情報を確認することもできます。