6.9. ext4 から XFS への移行

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

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

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

表6.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 バージョンにはさらに多くの固有機能があるため、これらの使用を推奨します。

表6.2 ext4 と XFS の汎用ツール

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

6.9.2. 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 バイトの inodes を持つ 1T を超えるファイルシステムの場合や、512 バイトの inodes を持つ 2T を超える ファイルシステムの場合、XFS の inode 数は 2 の 32 乗を上回る場合があります。このように inode の数が大きくなると、32 ビットの stat 呼び出しは、EOVERFLOW を出して失敗します。通常、アプリケーションはこれらの inode の大きな数を適切に処理できるはずですが、必要な場合は、inode 数を 2 の 32 乗よりも小さくなるように強制するために、-o inode32 を指定して XFS をマウントすることができます。

注記

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

警告

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