Show Table of Contents
第3章 XFS ファイルシステム
XFS は、拡張性とパフォーマンスが高いファイルシステムで、元々は Silicon Graphics, Inc. で設計されたファイルシステムでした。XFS は、Red Hat Enterprise Linux 7 のデフォルトのファイルシステムです。
- 主な特長
- XFS は、クラッシュからの迅速なリカバリーを容易にする メタデータジャーナリング に対応します。また、XFS ファイルシステムは、マウント後のアクティブな状態でのデフラグや拡張も可能にします。さらに Red Hat Enterprise Linux 7 では、XFS 固有のバックアップや復元を行うユーティリティーにも対応しています。
- 割り当て機能
- XFS には以下のような割り当てスキームが備わっています。
- エクステント (領域) ベースの割り当て
- ストライプを認識できる割り当てポリシー
- 遅延割り当て
- 領域の事前割り当て
遅延割り当てやその他のパフォーマンス最適化は、ext4 だけでなく XFS ファイルシステムにも影響を与えます。つまり、プログラムによる XFS ファイルシステムへの書き込みは、書き込み後にそのプログラムがfsync()呼び出しを実行しない限り、オンディスクになるとは限りません。ファイルシステム (ext4 および XFS) での遅延割り当ての影響に関する詳細は、5章Ext4 ファイルシステムの 『割り当て機能』 を参照してください。注記
ディスク領域に空きがある場合でも、ファイルの作成および展開を実行すると、ENOSPIC で予期しない書き込みエラーが出て失敗する場合があります。これは XFS の設計がパフォーマンス志向型であるために生じます。ただし、これは残りの領域が数ブロック程度である場合にのみ生じるため、実際には問題にはなりません。 - XFS ファイルシステムのその他の機能
- XFS ファイルシステムは次のような機能にも対応しています。
- 拡張属性 (
xattr) - このシステムにより、各ファイルの、名前と値の組み合わせを追加で関連付けられるようになります。これはデフォルトで有効になります。
- クォータのジャーナリング
- クラッシュ後に行なわれる時間がかかるクォータの整合性チェックが不要になります。
- プロジェクト/ディレクトリーのクォータ
- ディレクトリーツリー全体にクォータ制限を適用することができます。
- サブセカンド (1 秒未満) のタイムスタンプ
- タイムスタンプをサブセカンド (1 秒未満) 単位にできます。
- 拡張属性 (
- デフォルトの
atimeの動作はrelatime - XFS のデフォルトでは
Relatimeが有効になっています。noatimeと比較するとRelatimeのオーバヘッドはほとんどなく、同じatimeの値を維持します。
3.1. XFS ファイルシステムの作成
XFS ファイルシステムを作成するには、
mkfs.xfs /dev/device コマンドを使用します。通常、一般的な使用にはデフォルトのオプションが最適となります。
既存のファイルシステムを含むブロックデバイス上で
mkfs.xfs を使用する場合は、-f オプションを使ってそのファイルシステムの上書きを強制します。
例3.1 mkfs.xfs コマンドの出力
以下に
mkfs.xfs コマンドの出力例を示します。
meta-data=/dev/device isize=256 agcount=4, agsize=3277258 blks
= sectsz=512 attr=2
data = bsize=4096 blocks=13109032, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0
log =internal log bsize=4096 blocks=6400, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0注記
XFS ファイルシステムの作成後にサイズを縮小することはできません。ただし、
xfs_growfs コマンドを使ってサイズを拡大することはできます (「XFS ファイルシステムのサイズの拡大」を参照)。
ストライプ化されたブロックデバイス (RAID5 アレイなど) の場合、ファイルシステムの作成時にストライプの配列を指定することができます。適切なストライプ配列を使用することで XFS ファイルシステムのパフォーマンスが飛躍的に高まります。
ファイルシステムを LVM ボリュームや MD ボリューム上に作成すると、
mkfs.xfs によって最適な配列が選択されます。配列情報をオペレーティングシステムにエクスポートするハードウェア RAID にも、最適な配列の選択を行うものがあります。
デバイスがストライプの配列情報をエクスポートする場合、
mkfs (ext3、ext4、および xfs 用) がこの配列を自動的に使用します。ストライプの配列が、ストレージにストライプの配列があるにもかかわらず mkfs によって検出されない場合は、以下のオプションを使用し、mkfs の実行時にストライプの配列を手動で指定することができます。
- su=value
- ストライプユニットまたは RAIDのチャンクサイズを指定します。
valueはバイト単位で指定します。オプションでk、m、gなどを後ろに付けます。 - sw=value
- 1 RAID デバイス内のデータディスク数または 1 ストライプ内のストライプユニット数を指定します。
以下の例では、チャンクサイズが 64k、ストライプユニット数が 4 つの RAID デバイスを指定しています。
# mkfs.xfs -d su=64k,sw=4 /dev/device
XFS ファイルシステムの作成方法は、
man mkfs.xfs および 『Red Hat Enterprise Linux パフォーマンスチューニングガイド』 の 『Basic Tuning for XFS』 の章を参照してください。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.