XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
- よくある質問(FAQ)
- まとめ
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSとは|Linux高機能ファイルシステムの基本と特徴
- XFSとext4の違い・比較|どちらを選ぶべきか?
- XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- よくある質問(FAQ)
- まとめ
- XFSとは|Linux高機能ファイルシステムの基本と特徴
- XFSとext4の違い・比較|どちらを選ぶべきか?
- XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSとは|Linux高機能ファイルシステムの基本と特徴
- XFSとext4の違い・比較|どちらを選ぶべきか?
- XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSとは|Linux高機能ファイルシステムの基本と特徴
- XFSとext4の違い・比較|どちらを選ぶべきか?
- XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSとは|Linux高機能ファイルシステムの基本と特徴
- XFSとext4の違い・比較|どちらを選ぶべきか?
- XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSとは|Linux高機能ファイルシステムの基本と特徴
- XFSとext4の違い・比較|どちらを選ぶべきか?
- XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSとは|Linux高機能ファイルシステムの基本と特徴
- XFSとext4の違い・比較|どちらを選ぶべきか?
- XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- よくある質問(FAQ)
- まとめ
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSとは|Linux高機能ファイルシステムの基本と特徴
- XFSとext4の違い・比較|どちらを選ぶべきか?
- XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSとは|Linux高機能ファイルシステムの基本と特徴
- XFSとext4の違い・比較|どちらを選ぶべきか?
- XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSとは|Linux高機能ファイルシステムの基本と特徴
- XFSとext4の違い・比較|どちらを選ぶべきか?
- XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSとは|Linux高機能ファイルシステムの基本と特徴
- XFSとext4の違い・比較|どちらを選ぶべきか?
- XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSとは|Linux高機能ファイルシステムの基本と特徴
- XFSとext4の違い・比較|どちらを選ぶべきか?
- XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- よくある質問(FAQ)
- まとめ
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSとは|Linux高機能ファイルシステムの基本と特徴
- XFSとext4の違い・比較|どちらを選ぶべきか?
- XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSとは|Linux高機能ファイルシステムの基本と特徴
- XFSとext4の違い・比較|どちらを選ぶべきか?
- XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSとは|Linux高機能ファイルシステムの基本と特徴
- XFSとext4の違い・比較|どちらを選ぶべきか?
- XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSとは|Linux高機能ファイルシステムの基本と特徴
- XFSとext4の違い・比較|どちらを選ぶべきか?
- XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSとは|Linux高機能ファイルシステムの基本と特徴
- XFSとext4の違い・比較|どちらを選ぶべきか?
- XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSとは|Linux高機能ファイルシステムの基本と特徴
- XFSとext4の違い・比較|どちらを選ぶべきか?
- XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSとは|Linux高機能ファイルシステムの基本と特徴
- XFSとext4の違い・比較|どちらを選ぶべきか?
- XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSとは|Linux高機能ファイルシステムの基本と特徴
- XFSとext4の違い・比較|どちらを選ぶべきか?
- XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSとは|Linux高機能ファイルシステムの基本と特徴
- XFSとext4の違い・比較|どちらを選ぶべきか?
- XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- XFSとは|Linux高機能ファイルシステムの基本と特徴
- XFSとext4の違い・比較|どちらを選ぶべきか?
- XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
- XFSのマウントと自動マウント設定|mount / /etc/fstab
- XFSの確認・運用・保守コマンド4選
- XFS運用の注意点とトラブルシューティング
- よくある質問(FAQ)
- まとめ
- 関連記事
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFS(エックスエフエス)は、大容量ストレージや高速な並列I/O処理に特化した高機能な64ビット・ジャーナリングファイルシステムです。Red Hat Enterprise Linux(RHEL)7以降やその派生OS(Rocky Linux、AlmaLinux、CentOS等)において標準ファイルシステムとして長年採用されており、エンタープライズサーバー運用において非常に重要な技術です。
新しいストレージの追加時やクラウドサーバーのディスク拡張時、ファイルシステムの選定において「ext4とXFSのどちらを選ぶべきか」「mkfs.xfs や xfs_growfs の正しい使い方は?」と疑問を持つ方も多いでしょう。
本記事では、XFSの基本概念や特徴、ext4との違いから、mkfs.xfs によるフォーマット作成、xfs_info でのメタデータ確認、xfs_growfs によるオンライン容量拡張、xfs_repair によるファイルシステム修復手順、そして「XFSは容量の縮小ができない」といった運用上の重大な注意点まで徹底解説します。
XFSとは|Linux高機能ファイルシステムの基本と特徴
XFSは、もともとSilicon Graphics(SGI)社がIRIX OS向けに開発し、2001年にLinuxカーネルへ移植された歴史あるファイルシステムです。大容量化と高速並列処理を前提にゼロから設計されています。
1. 64ビット大容量ストレージ対応(最大8EB / 1024TiB超)
XFSは完全な64ビットファイルシステムであり、理論上は最大8EB(エクサバイト = 約800万TB)のボリューム容量および単一ファイルサイズをサポートします。現実のLinuxカーネル実装においても1024TiB(1PB)以上の超大容量ストレージ領域を安定して管理できます。
2. アロケーショングループ(Allocation Groups)による高い並列I/O性能
XFSの性能面での最大の特徴がアロケーショングループ(Allocation Groups: AG)です。ファイルシステム全体を複数のAGと呼ばれる独立した領域に分割して管理します。各AGは自身のフリースペース管理表やInodeアロケーション表を持つため、マルチコアCPUや複数ディスク環境において、複数のI/Oスレッドが同時に異なるAGへ並列書き込み・読み込みを行っても競合(ロック待ち)が発生しにくく、極めて高い並列I/Oスループットを発揮します。
3. 遅延割り当て(Delayed Allocation)とエクステント管理
ext4と同様に、XFSも遅延割り当て(Delayed Allocation / delalloc)とエクステント(Extents)構造を採用しています。データが実際にディスクに書き込まれる直前までブロック割り当てを遅らせることで、連続した大きな領域を効率よく確保し、ディスクの断片化(フラグメンテーション)を強力に防止します。
4. RHEL系ディストリビューションでの標準採用
RHEL 7以降、およびRocky Linux、AlmaLinux、Oracle Linuxなどの派生OSでは、デフォルトのファイルシステムとしてext4に代わりXFSが採用されています。エンタープライズのサーバー運用やストレージ構築では必須の知識となります。
XFSとext4の違い・比較|どちらを選ぶべきか?
Linuxの二大ファイルシステムであるXFSとext4には、得意とする用途や機能の違いが存在します。
| 比較項目 | XFS | ext4 |
|---|---|---|
| 主な設計用途 | 大規模サーバー・大容量ストレージ・高並列I/O | 汎用サーバー・デスクトップ・小〜中規模環境 |
| 並列処理性能 | アロケーショングループにより並列I/Oに非常に強い | 単一I/Oや小ファイルのランダム処理が得意 |
| オンライン容量拡張 | 可能(xfs_growfs) | 可能(resize2fs) |
| 容量の縮小(Shrink) | 不可(非対応) | 可能(アンマウント時に resize2fs) |
| 標準採用OS | RHEL 7/8/9, Rocky Linux, AlmaLinux | Ubuntu, Debian等 |
XFSを選択すべきケース
次のような用途・環境では、XFSの採用を強くおすすめします。
- 大容量ストレージ・巨大ファイルを扱う場合: データベースサーバー(MySQL, PostgreSQL)、動画・メディア配信サーバー、バックアップストレージなど。
- 高負荷・並列アクセスが発生するサーバー: マルチコアCPU環境で複数プロセスが同時にディスクへアクセスするWeb・DB・アプリケーションサーバー。
- RHEL系OSを使用する場合: OSインストール時の標準設定を活かし、トラブル対応や運用ナレッジを共通化したい環境。
ext4を選択すべきケース
一方で、将来的にパーティションやLV(論理ボリューム)の容量を小さく縮小させる可能性がある場合や、Ubuntu/Debian系OSで汎用的に利用したい場合は、縮小コマンドに対応しているext4が適しています。
※ext4の詳細な特徴や操作コマンドについては、関連記事「Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説」をご覧ください。
XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFS(エックスエフエス)は、大容量ストレージや高速な並列I/O処理に特化した高機能な64ビット・ジャーナリングファイルシステムです。Red Hat Enterprise Linux(RHEL)7以降やその派生OS(Rocky Linux、AlmaLinux、CentOS等)において標準ファイルシステムとして長年採用されており、エンタープライズサーバー運用において非常に重要な技術です。
新しいストレージの追加時やクラウドサーバーのディスク拡張時、ファイルシステムの選定において「ext4とXFSのどちらを選ぶべきか」「mkfs.xfs や xfs_growfs の正しい使い方は?」と疑問を持つ方も多いでしょう。
本記事では、XFSの基本概念や特徴、ext4との違いから、mkfs.xfs によるフォーマット作成、xfs_info でのメタデータ確認、xfs_growfs によるオンライン容量拡張、xfs_repair によるファイルシステム修復手順、そして「XFSは容量の縮小ができない」といった運用上の重大な注意点まで徹底解説します。
XFSとは|Linux高機能ファイルシステムの基本と特徴
XFSは、もともとSilicon Graphics(SGI)社がIRIX OS向けに開発し、2001年にLinuxカーネルへ移植された歴史あるファイルシステムです。大容量化と高速並列処理を前提にゼロから設計されています。
1. 64ビット大容量ストレージ対応(最大8EB / 1024TiB超)
XFSは完全な64ビットファイルシステムであり、理論上は最大8EB(エクサバイト = 約800万TB)のボリューム容量および単一ファイルサイズをサポートします。現実のLinuxカーネル実装においても1024TiB(1PB)以上の超大容量ストレージ領域を安定して管理できます。
2. アロケーショングループ(Allocation Groups)による高い並列I/O性能
XFSの性能面での最大の特徴がアロケーショングループ(Allocation Groups: AG)です。ファイルシステム全体を複数のAGと呼ばれる独立した領域に分割して管理します。各AGは自身のフリースペース管理表やInodeアロケーション表を持つため、マルチコアCPUや複数ディスク環境において、複数のI/Oスレッドが同時に異なるAGへ並列書き込み・読み込みを行っても競合(ロック待ち)が発生しにくく、極めて高い並列I/Oスループットを発揮します。
3. 遅延割り当て(Delayed Allocation)とエクステント管理
ext4と同様に、XFSも遅延割り当て(Delayed Allocation / delalloc)とエクステント(Extents)構造を採用しています。データが実際にディスクに書き込まれる直前までブロック割り当てを遅らせることで、連続した大きな領域を効率よく確保し、ディスクの断片化(フラグメンテーション)を強力に防止します。
4. RHEL系ディストリビューションでの標準採用
RHEL 7以降、およびRocky Linux、AlmaLinux、Oracle Linuxなどの派生OSでは、デフォルトのファイルシステムとしてext4に代わりXFSが採用されています。エンタープライズのサーバー運用やストレージ構築では必須の知識となります。
XFSとext4の違い・比較|どちらを選ぶべきか?
Linuxの二大ファイルシステムであるXFSとext4には、得意とする用途や機能の違いが存在します。
| 比較項目 | XFS | ext4 |
|---|---|---|
| 主な設計用途 | 大規模サーバー・大容量ストレージ・高並列I/O | 汎用サーバー・デスクトップ・小〜中規模環境 |
| 並列処理性能 | アロケーショングループにより並列I/Oに非常に強い | 単一I/Oや小ファイルのランダム処理が得意 |
| オンライン容量拡張 | 可能(xfs_growfs) | 可能(resize2fs) |
| 容量の縮小(Shrink) | 不可(非対応) | 可能(アンマウント時に resize2fs) |
| 標準採用OS | RHEL 7/8/9, Rocky Linux, AlmaLinux | Ubuntu, Debian等 |
XFSを選択すべきケース
次のような用途・環境では、XFSの採用を強くおすすめします。
- 大容量ストレージ・巨大ファイルを扱う場合: データベースサーバー(MySQL, PostgreSQL)、動画・メディア配信サーバー、バックアップストレージなど。
- 高負荷・並列アクセスが発生するサーバー: マルチコアCPU環境で複数プロセスが同時にディスクへアクセスするWeb・DB・アプリケーションサーバー。
- RHEL系OSを使用する場合: OSインストール時の標準設定を活かし、トラブル対応や運用ナレッジを共通化したい環境。
ext4を選択すべきケース
一方で、将来的にパーティションやLV(論理ボリューム)の容量を小さく縮小させる可能性がある場合や、Ubuntu/Debian系OSで汎用的に利用したい場合は、縮小コマンドに対応しているext4が適しています。
※ext4の詳細な特徴や操作コマンドについては、関連記事「Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説」をご覧ください。
XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFS(エックスエフエス)は、大容量ストレージや高速な並列I/O処理に特化した高機能な64ビット・ジャーナリングファイルシステムです。Red Hat Enterprise Linux(RHEL)7以降やその派生OS(Rocky Linux、AlmaLinux、CentOS等)において標準ファイルシステムとして長年採用されており、エンタープライズサーバー運用において非常に重要な技術です。
新しいストレージの追加時やクラウドサーバーのディスク拡張時、ファイルシステムの選定において「ext4とXFSのどちらを選ぶべきか」「mkfs.xfs や xfs_growfs の正しい使い方は?」と疑問を持つ方も多いでしょう。
本記事では、XFSの基本概念や特徴、ext4との違いから、mkfs.xfs によるフォーマット作成、xfs_info でのメタデータ確認、xfs_growfs によるオンライン容量拡張、xfs_repair によるファイルシステム修復手順、そして「XFSは容量の縮小ができない」といった運用上の重大な注意点まで徹底解説します。
XFSとは|Linux高機能ファイルシステムの基本と特徴
XFSは、もともとSilicon Graphics(SGI)社がIRIX OS向けに開発し、2001年にLinuxカーネルへ移植された歴史あるファイルシステムです。大容量化と高速並列処理を前提にゼロから設計されています。
1. 64ビット大容量ストレージ対応(最大8EB / 1024TiB超)
XFSは完全な64ビットファイルシステムであり、理論上は最大8EB(エクサバイト = 約800万TB)のボリューム容量および単一ファイルサイズをサポートします。現実のLinuxカーネル実装においても1024TiB(1PB)以上の超大容量ストレージ領域を安定して管理できます。
2. アロケーショングループ(Allocation Groups)による高い並列I/O性能
XFSの性能面での最大の特徴がアロケーショングループ(Allocation Groups: AG)です。ファイルシステム全体を複数のAGと呼ばれる独立した領域に分割して管理します。各AGは自身のフリースペース管理表やInodeアロケーション表を持つため、マルチコアCPUや複数ディスク環境において、複数のI/Oスレッドが同時に異なるAGへ並列書き込み・読み込みを行っても競合(ロック待ち)が発生しにくく、極めて高い並列I/Oスループットを発揮します。
3. 遅延割り当て(Delayed Allocation)とエクステント管理
ext4と同様に、XFSも遅延割り当て(Delayed Allocation / delalloc)とエクステント(Extents)構造を採用しています。データが実際にディスクに書き込まれる直前までブロック割り当てを遅らせることで、連続した大きな領域を効率よく確保し、ディスクの断片化(フラグメンテーション)を強力に防止します。
4. RHEL系ディストリビューションでの標準採用
RHEL 7以降、およびRocky Linux、AlmaLinux、Oracle Linuxなどの派生OSでは、デフォルトのファイルシステムとしてext4に代わりXFSが採用されています。エンタープライズのサーバー運用やストレージ構築では必須の知識となります。
XFSとext4の違い・比較|どちらを選ぶべきか?
Linuxの二大ファイルシステムであるXFSとext4には、得意とする用途や機能の違いが存在します。
| 比較項目 | XFS | ext4 |
|---|---|---|
| 主な設計用途 | 大規模サーバー・大容量ストレージ・高並列I/O | 汎用サーバー・デスクトップ・小〜中規模環境 |
| 並列処理性能 | アロケーショングループにより並列I/Oに非常に強い | 単一I/Oや小ファイルのランダム処理が得意 |
| オンライン容量拡張 | 可能(xfs_growfs) | 可能(resize2fs) |
| 容量の縮小(Shrink) | 不可(非対応) | 可能(アンマウント時に resize2fs) |
| 標準採用OS | RHEL 7/8/9, Rocky Linux, AlmaLinux | Ubuntu, Debian等 |
XFSを選択すべきケース
次のような用途・環境では、XFSの採用を強くおすすめします。
- 大容量ストレージ・巨大ファイルを扱う場合: データベースサーバー(MySQL, PostgreSQL)、動画・メディア配信サーバー、バックアップストレージなど。
- 高負荷・並列アクセスが発生するサーバー: マルチコアCPU環境で複数プロセスが同時にディスクへアクセスするWeb・DB・アプリケーションサーバー。
- RHEL系OSを使用する場合: OSインストール時の標準設定を活かし、トラブル対応や運用ナレッジを共通化したい環境。
ext4を選択すべきケース
一方で、将来的にパーティションやLV(論理ボリューム)の容量を小さく縮小させる可能性がある場合や、Ubuntu/Debian系OSで汎用的に利用したい場合は、縮小コマンドに対応しているext4が適しています。
※ext4の詳細な特徴や操作コマンドについては、関連記事「Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説」をご覧ください。
XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFS(エックスエフエス)は、大容量ストレージや高速な並列I/O処理に特化した高機能な64ビット・ジャーナリングファイルシステムです。Red Hat Enterprise Linux(RHEL)7以降やその派生OS(Rocky Linux、AlmaLinux、CentOS等)において標準ファイルシステムとして長年採用されており、エンタープライズサーバー運用において非常に重要な技術です。
新しいストレージの追加時やクラウドサーバーのディスク拡張時、ファイルシステムの選定において「ext4とXFSのどちらを選ぶべきか」「mkfs.xfs や xfs_growfs の正しい使い方は?」と疑問を持つ方も多いでしょう。
本記事では、XFSの基本概念や特徴、ext4との違いから、mkfs.xfs によるフォーマット作成、xfs_info でのメタデータ確認、xfs_growfs によるオンライン容量拡張、xfs_repair によるファイルシステム修復手順、そして「XFSは容量の縮小ができない」といった運用上の重大な注意点まで徹底解説します。
XFSとは|Linux高機能ファイルシステムの基本と特徴
XFSは、もともとSilicon Graphics(SGI)社がIRIX OS向けに開発し、2001年にLinuxカーネルへ移植された歴史あるファイルシステムです。大容量化と高速並列処理を前提にゼロから設計されています。
1. 64ビット大容量ストレージ対応(最大8EB / 1024TiB超)
XFSは完全な64ビットファイルシステムであり、理論上は最大8EB(エクサバイト = 約800万TB)のボリューム容量および単一ファイルサイズをサポートします。現実のLinuxカーネル実装においても1024TiB(1PB)以上の超大容量ストレージ領域を安定して管理できます。
2. アロケーショングループ(Allocation Groups)による高い並列I/O性能
XFSの性能面での最大の特徴がアロケーショングループ(Allocation Groups: AG)です。ファイルシステム全体を複数のAGと呼ばれる独立した領域に分割して管理します。各AGは自身のフリースペース管理表やInodeアロケーション表を持つため、マルチコアCPUや複数ディスク環境において、複数のI/Oスレッドが同時に異なるAGへ並列書き込み・読み込みを行っても競合(ロック待ち)が発生しにくく、極めて高い並列I/Oスループットを発揮します。
3. 遅延割り当て(Delayed Allocation)とエクステント管理
ext4と同様に、XFSも遅延割り当て(Delayed Allocation / delalloc)とエクステント(Extents)構造を採用しています。データが実際にディスクに書き込まれる直前までブロック割り当てを遅らせることで、連続した大きな領域を効率よく確保し、ディスクの断片化(フラグメンテーション)を強力に防止します。
4. RHEL系ディストリビューションでの標準採用
RHEL 7以降、およびRocky Linux、AlmaLinux、Oracle Linuxなどの派生OSでは、デフォルトのファイルシステムとしてext4に代わりXFSが採用されています。エンタープライズのサーバー運用やストレージ構築では必須の知識となります。
XFSとext4の違い・比較|どちらを選ぶべきか?
Linuxの二大ファイルシステムであるXFSとext4には、得意とする用途や機能の違いが存在します。
| 比較項目 | XFS | ext4 |
|---|---|---|
| 主な設計用途 | 大規模サーバー・大容量ストレージ・高並列I/O | 汎用サーバー・デスクトップ・小〜中規模環境 |
| 並列処理性能 | アロケーショングループにより並列I/Oに非常に強い | 単一I/Oや小ファイルのランダム処理が得意 |
| オンライン容量拡張 | 可能(xfs_growfs) | 可能(resize2fs) |
| 容量の縮小(Shrink) | 不可(非対応) | 可能(アンマウント時に resize2fs) |
| 標準採用OS | RHEL 7/8/9, Rocky Linux, AlmaLinux | Ubuntu, Debian等 |
XFSを選択すべきケース
次のような用途・環境では、XFSの採用を強くおすすめします。
- 大容量ストレージ・巨大ファイルを扱う場合: データベースサーバー(MySQL, PostgreSQL)、動画・メディア配信サーバー、バックアップストレージなど。
- 高負荷・並列アクセスが発生するサーバー: マルチコアCPU環境で複数プロセスが同時にディスクへアクセスするWeb・DB・アプリケーションサーバー。
- RHEL系OSを使用する場合: OSインストール時の標準設定を活かし、トラブル対応や運用ナレッジを共通化したい環境。
ext4を選択すべきケース
一方で、将来的にパーティションやLV(論理ボリューム)の容量を小さく縮小させる可能性がある場合や、Ubuntu/Debian系OSで汎用的に利用したい場合は、縮小コマンドに対応しているext4が適しています。
※ext4の詳細な特徴や操作コマンドについては、関連記事「Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説」をご覧ください。
XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFS(エックスエフエス)は、大容量ストレージや高速な並列I/O処理に特化した高機能な64ビット・ジャーナリングファイルシステムです。Red Hat Enterprise Linux(RHEL)7以降やその派生OS(Rocky Linux、AlmaLinux、CentOS等)において標準ファイルシステムとして長年採用されており、エンタープライズサーバー運用において非常に重要な技術です。
新しいストレージの追加時やクラウドサーバーのディスク拡張時、ファイルシステムの選定において「ext4とXFSのどちらを選ぶべきか」「mkfs.xfs や xfs_growfs の正しい使い方は?」と疑問を持つ方も多いでしょう。
本記事では、XFSの基本概念や特徴、ext4との違いから、mkfs.xfs によるフォーマット作成、xfs_info でのメタデータ確認、xfs_growfs によるオンライン容量拡張、xfs_repair によるファイルシステム修復手順、そして「XFSは容量の縮小ができない」といった運用上の重大な注意点まで徹底解説します。
XFSとは|Linux高機能ファイルシステムの基本と特徴
XFSは、もともとSilicon Graphics(SGI)社がIRIX OS向けに開発し、2001年にLinuxカーネルへ移植された歴史あるファイルシステムです。大容量化と高速並列処理を前提にゼロから設計されています。
1. 64ビット大容量ストレージ対応(最大8EB / 1024TiB超)
XFSは完全な64ビットファイルシステムであり、理論上は最大8EB(エクサバイト = 約800万TB)のボリューム容量および単一ファイルサイズをサポートします。現実のLinuxカーネル実装においても1024TiB(1PB)以上の超大容量ストレージ領域を安定して管理できます。
2. アロケーショングループ(Allocation Groups)による高い並列I/O性能
XFSの性能面での最大の特徴がアロケーショングループ(Allocation Groups: AG)です。ファイルシステム全体を複数のAGと呼ばれる独立した領域に分割して管理します。各AGは自身のフリースペース管理表やInodeアロケーション表を持つため、マルチコアCPUや複数ディスク環境において、複数のI/Oスレッドが同時に異なるAGへ並列書き込み・読み込みを行っても競合(ロック待ち)が発生しにくく、極めて高い並列I/Oスループットを発揮します。
3. 遅延割り当て(Delayed Allocation)とエクステント管理
ext4と同様に、XFSも遅延割り当て(Delayed Allocation / delalloc)とエクステント(Extents)構造を採用しています。データが実際にディスクに書き込まれる直前までブロック割り当てを遅らせることで、連続した大きな領域を効率よく確保し、ディスクの断片化(フラグメンテーション)を強力に防止します。
4. RHEL系ディストリビューションでの標準採用
RHEL 7以降、およびRocky Linux、AlmaLinux、Oracle Linuxなどの派生OSでは、デフォルトのファイルシステムとしてext4に代わりXFSが採用されています。エンタープライズのサーバー運用やストレージ構築では必須の知識となります。
XFSとext4の違い・比較|どちらを選ぶべきか?
Linuxの二大ファイルシステムであるXFSとext4には、得意とする用途や機能の違いが存在します。
| 比較項目 | XFS | ext4 |
|---|---|---|
| 主な設計用途 | 大規模サーバー・大容量ストレージ・高並列I/O | 汎用サーバー・デスクトップ・小〜中規模環境 |
| 並列処理性能 | アロケーショングループにより並列I/Oに非常に強い | 単一I/Oや小ファイルのランダム処理が得意 |
| オンライン容量拡張 | 可能(xfs_growfs) | 可能(resize2fs) |
| 容量の縮小(Shrink) | 不可(非対応) | 可能(アンマウント時に resize2fs) |
| 標準採用OS | RHEL 7/8/9, Rocky Linux, AlmaLinux | Ubuntu, Debian等 |
XFSを選択すべきケース
次のような用途・環境では、XFSの採用を強くおすすめします。
- 大容量ストレージ・巨大ファイルを扱う場合: データベースサーバー(MySQL, PostgreSQL)、動画・メディア配信サーバー、バックアップストレージなど。
- 高負荷・並列アクセスが発生するサーバー: マルチコアCPU環境で複数プロセスが同時にディスクへアクセスするWeb・DB・アプリケーションサーバー。
- RHEL系OSを使用する場合: OSインストール時の標準設定を活かし、トラブル対応や運用ナレッジを共通化したい環境。
ext4を選択すべきケース
一方で、将来的にパーティションやLV(論理ボリューム)の容量を小さく縮小させる可能性がある場合や、Ubuntu/Debian系OSで汎用的に利用したい場合は、縮小コマンドに対応しているext4が適しています。
※ext4の詳細な特徴や操作コマンドについては、関連記事「Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説」をご覧ください。
XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFS(エックスエフエス)は、大容量ストレージや高速な並列I/O処理に特化した高機能な64ビット・ジャーナリングファイルシステムです。Red Hat Enterprise Linux(RHEL)7以降やその派生OS(Rocky Linux、AlmaLinux、CentOS等)において標準ファイルシステムとして長年採用されており、エンタープライズサーバー運用において非常に重要な技術です。
新しいストレージの追加時やクラウドサーバーのディスク拡張時、ファイルシステムの選定において「ext4とXFSのどちらを選ぶべきか」「mkfs.xfs や xfs_growfs の正しい使い方は?」と疑問を持つ方も多いでしょう。
本記事では、XFSの基本概念や特徴、ext4との違いから、mkfs.xfs によるフォーマット作成、xfs_info でのメタデータ確認、xfs_growfs によるオンライン容量拡張、xfs_repair によるファイルシステム修復手順、そして「XFSは容量の縮小ができない」といった運用上の重大な注意点まで徹底解説します。
XFSとは|Linux高機能ファイルシステムの基本と特徴
XFSは、もともとSilicon Graphics(SGI)社がIRIX OS向けに開発し、2001年にLinuxカーネルへ移植された歴史あるファイルシステムです。大容量化と高速並列処理を前提にゼロから設計されています。
1. 64ビット大容量ストレージ対応(最大8EB / 1024TiB超)
XFSは完全な64ビットファイルシステムであり、理論上は最大8EB(エクサバイト = 約800万TB)のボリューム容量および単一ファイルサイズをサポートします。現実のLinuxカーネル実装においても1024TiB(1PB)以上の超大容量ストレージ領域を安定して管理できます。
2. アロケーショングループ(Allocation Groups)による高い並列I/O性能
XFSの性能面での最大の特徴がアロケーショングループ(Allocation Groups: AG)です。ファイルシステム全体を複数のAGと呼ばれる独立した領域に分割して管理します。各AGは自身のフリースペース管理表やInodeアロケーション表を持つため、マルチコアCPUや複数ディスク環境において、複数のI/Oスレッドが同時に異なるAGへ並列書き込み・読み込みを行っても競合(ロック待ち)が発生しにくく、極めて高い並列I/Oスループットを発揮します。
3. 遅延割り当て(Delayed Allocation)とエクステント管理
ext4と同様に、XFSも遅延割り当て(Delayed Allocation / delalloc)とエクステント(Extents)構造を採用しています。データが実際にディスクに書き込まれる直前までブロック割り当てを遅らせることで、連続した大きな領域を効率よく確保し、ディスクの断片化(フラグメンテーション)を強力に防止します。
4. RHEL系ディストリビューションでの標準採用
RHEL 7以降、およびRocky Linux、AlmaLinux、Oracle Linuxなどの派生OSでは、デフォルトのファイルシステムとしてext4に代わりXFSが採用されています。エンタープライズのサーバー運用やストレージ構築では必須の知識となります。
XFSとext4の違い・比較|どちらを選ぶべきか?
Linuxの二大ファイルシステムであるXFSとext4には、得意とする用途や機能の違いが存在します。
| 比較項目 | XFS | ext4 |
|---|---|---|
| 主な設計用途 | 大規模サーバー・大容量ストレージ・高並列I/O | 汎用サーバー・デスクトップ・小〜中規模環境 |
| 並列処理性能 | アロケーショングループにより並列I/Oに非常に強い | 単一I/Oや小ファイルのランダム処理が得意 |
| オンライン容量拡張 | 可能(xfs_growfs) | 可能(resize2fs) |
| 容量の縮小(Shrink) | 不可(非対応) | 可能(アンマウント時に resize2fs) |
| 標準採用OS | RHEL 7/8/9, Rocky Linux, AlmaLinux | Ubuntu, Debian等 |
XFSを選択すべきケース
次のような用途・環境では、XFSの採用を強くおすすめします。
- 大容量ストレージ・巨大ファイルを扱う場合: データベースサーバー(MySQL, PostgreSQL)、動画・メディア配信サーバー、バックアップストレージなど。
- 高負荷・並列アクセスが発生するサーバー: マルチコアCPU環境で複数プロセスが同時にディスクへアクセスするWeb・DB・アプリケーションサーバー。
- RHEL系OSを使用する場合: OSインストール時の標準設定を活かし、トラブル対応や運用ナレッジを共通化したい環境。
ext4を選択すべきケース
一方で、将来的にパーティションやLV(論理ボリューム)の容量を小さく縮小させる可能性がある場合や、Ubuntu/Debian系OSで汎用的に利用したい場合は、縮小コマンドに対応しているext4が適しています。
※ext4の詳細な特徴や操作コマンドについては、関連記事「Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説」をご覧ください。
XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFS(エックスエフエス)は、大容量ストレージや高速な並列I/O処理に特化した高機能な64ビット・ジャーナリングファイルシステムです。Red Hat Enterprise Linux(RHEL)7以降やその派生OS(Rocky Linux、AlmaLinux、CentOS等)において標準ファイルシステムとして長年採用されており、エンタープライズサーバー運用において非常に重要な技術です。
新しいストレージの追加時やクラウドサーバーのディスク拡張時、ファイルシステムの選定において「ext4とXFSのどちらを選ぶべきか」「mkfs.xfs や xfs_growfs の正しい使い方は?」と疑問を持つ方も多いでしょう。
本記事では、XFSの基本概念や特徴、ext4との違いから、mkfs.xfs によるフォーマット作成、xfs_info でのメタデータ確認、xfs_growfs によるオンライン容量拡張、xfs_repair によるファイルシステム修復手順、そして「XFSは容量の縮小ができない」といった運用上の重大な注意点まで徹底解説します。
XFSとは|Linux高機能ファイルシステムの基本と特徴
XFSは、もともとSilicon Graphics(SGI)社がIRIX OS向けに開発し、2001年にLinuxカーネルへ移植された歴史あるファイルシステムです。大容量化と高速並列処理を前提にゼロから設計されています。
1. 64ビット大容量ストレージ対応(最大8EB / 1024TiB超)
XFSは完全な64ビットファイルシステムであり、理論上は最大8EB(エクサバイト = 約800万TB)のボリューム容量および単一ファイルサイズをサポートします。現実のLinuxカーネル実装においても1024TiB(1PB)以上の超大容量ストレージ領域を安定して管理できます。
2. アロケーショングループ(Allocation Groups)による高い並列I/O性能
XFSの性能面での最大の特徴がアロケーショングループ(Allocation Groups: AG)です。ファイルシステム全体を複数のAGと呼ばれる独立した領域に分割して管理します。各AGは自身のフリースペース管理表やInodeアロケーション表を持つため、マルチコアCPUや複数ディスク環境において、複数のI/Oスレッドが同時に異なるAGへ並列書き込み・読み込みを行っても競合(ロック待ち)が発生しにくく、極めて高い並列I/Oスループットを発揮します。
3. 遅延割り当て(Delayed Allocation)とエクステント管理
ext4と同様に、XFSも遅延割り当て(Delayed Allocation / delalloc)とエクステント(Extents)構造を採用しています。データが実際にディスクに書き込まれる直前までブロック割り当てを遅らせることで、連続した大きな領域を効率よく確保し、ディスクの断片化(フラグメンテーション)を強力に防止します。
4. RHEL系ディストリビューションでの標準採用
RHEL 7以降、およびRocky Linux、AlmaLinux、Oracle Linuxなどの派生OSでは、デフォルトのファイルシステムとしてext4に代わりXFSが採用されています。エンタープライズのサーバー運用やストレージ構築では必須の知識となります。
XFSとext4の違い・比較|どちらを選ぶべきか?
Linuxの二大ファイルシステムであるXFSとext4には、得意とする用途や機能の違いが存在します。
| 比較項目 | XFS | ext4 |
|---|---|---|
| 主な設計用途 | 大規模サーバー・大容量ストレージ・高並列I/O | 汎用サーバー・デスクトップ・小〜中規模環境 |
| 並列処理性能 | アロケーショングループにより並列I/Oに非常に強い | 単一I/Oや小ファイルのランダム処理が得意 |
| オンライン容量拡張 | 可能(xfs_growfs) | 可能(resize2fs) |
| 容量の縮小(Shrink) | 不可(非対応) | 可能(アンマウント時に resize2fs) |
| 標準採用OS | RHEL 7/8/9, Rocky Linux, AlmaLinux | Ubuntu, Debian等 |
XFSを選択すべきケース
次のような用途・環境では、XFSの採用を強くおすすめします。
- 大容量ストレージ・巨大ファイルを扱う場合: データベースサーバー(MySQL, PostgreSQL)、動画・メディア配信サーバー、バックアップストレージなど。
- 高負荷・並列アクセスが発生するサーバー: マルチコアCPU環境で複数プロセスが同時にディスクへアクセスするWeb・DB・アプリケーションサーバー。
- RHEL系OSを使用する場合: OSインストール時の標準設定を活かし、トラブル対応や運用ナレッジを共通化したい環境。
ext4を選択すべきケース
一方で、将来的にパーティションやLV(論理ボリューム)の容量を小さく縮小させる可能性がある場合や、Ubuntu/Debian系OSで汎用的に利用したい場合は、縮小コマンドに対応しているext4が適しています。
※ext4の詳細な特徴や操作コマンドについては、関連記事「Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説」をご覧ください。
XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFS(エックスエフエス)は、大容量ストレージや高速な並列I/O処理に特化した高機能な64ビット・ジャーナリングファイルシステムです。Red Hat Enterprise Linux(RHEL)7以降やその派生OS(Rocky Linux、AlmaLinux、CentOS等)において標準ファイルシステムとして長年採用されており、エンタープライズサーバー運用において非常に重要な技術です。
新しいストレージの追加時やクラウドサーバーのディスク拡張時、ファイルシステムの選定において「ext4とXFSのどちらを選ぶべきか」「mkfs.xfs や xfs_growfs の正しい使い方は?」と疑問を持つ方も多いでしょう。
本記事では、XFSの基本概念や特徴、ext4との違いから、mkfs.xfs によるフォーマット作成、xfs_info でのメタデータ確認、xfs_growfs によるオンライン容量拡張、xfs_repair によるファイルシステム修復手順、そして「XFSは容量の縮小ができない」といった運用上の重大な注意点まで徹底解説します。
XFSとは|Linux高機能ファイルシステムの基本と特徴
XFSは、もともとSilicon Graphics(SGI)社がIRIX OS向けに開発し、2001年にLinuxカーネルへ移植された歴史あるファイルシステムです。大容量化と高速並列処理を前提にゼロから設計されています。
1. 64ビット大容量ストレージ対応(最大8EB / 1024TiB超)
XFSは完全な64ビットファイルシステムであり、理論上は最大8EB(エクサバイト = 約800万TB)のボリューム容量および単一ファイルサイズをサポートします。現実のLinuxカーネル実装においても1024TiB(1PB)以上の超大容量ストレージ領域を安定して管理できます。
2. アロケーショングループ(Allocation Groups)による高い並列I/O性能
XFSの性能面での最大の特徴がアロケーショングループ(Allocation Groups: AG)です。ファイルシステム全体を複数のAGと呼ばれる独立した領域に分割して管理します。各AGは自身のフリースペース管理表やInodeアロケーション表を持つため、マルチコアCPUや複数ディスク環境において、複数のI/Oスレッドが同時に異なるAGへ並列書き込み・読み込みを行っても競合(ロック待ち)が発生しにくく、極めて高い並列I/Oスループットを発揮します。
3. 遅延割り当て(Delayed Allocation)とエクステント管理
ext4と同様に、XFSも遅延割り当て(Delayed Allocation / delalloc)とエクステント(Extents)構造を採用しています。データが実際にディスクに書き込まれる直前までブロック割り当てを遅らせることで、連続した大きな領域を効率よく確保し、ディスクの断片化(フラグメンテーション)を強力に防止します。
4. RHEL系ディストリビューションでの標準採用
RHEL 7以降、およびRocky Linux、AlmaLinux、Oracle Linuxなどの派生OSでは、デフォルトのファイルシステムとしてext4に代わりXFSが採用されています。エンタープライズのサーバー運用やストレージ構築では必須の知識となります。
XFSとext4の違い・比較|どちらを選ぶべきか?
Linuxの二大ファイルシステムであるXFSとext4には、得意とする用途や機能の違いが存在します。
| 比較項目 | XFS | ext4 |
|---|---|---|
| 主な設計用途 | 大規模サーバー・大容量ストレージ・高並列I/O | 汎用サーバー・デスクトップ・小〜中規模環境 |
| 並列処理性能 | アロケーショングループにより並列I/Oに非常に強い | 単一I/Oや小ファイルのランダム処理が得意 |
| オンライン容量拡張 | 可能(xfs_growfs) | 可能(resize2fs) |
| 容量の縮小(Shrink) | 不可(非対応) | 可能(アンマウント時に resize2fs) |
| 標準採用OS | RHEL 7/8/9, Rocky Linux, AlmaLinux | Ubuntu, Debian等 |
XFSを選択すべきケース
次のような用途・環境では、XFSの採用を強くおすすめします。
- 大容量ストレージ・巨大ファイルを扱う場合: データベースサーバー(MySQL, PostgreSQL)、動画・メディア配信サーバー、バックアップストレージなど。
- 高負荷・並列アクセスが発生するサーバー: マルチコアCPU環境で複数プロセスが同時にディスクへアクセスするWeb・DB・アプリケーションサーバー。
- RHEL系OSを使用する場合: OSインストール時の標準設定を活かし、トラブル対応や運用ナレッジを共通化したい環境。
ext4を選択すべきケース
一方で、将来的にパーティションやLV(論理ボリューム)の容量を小さく縮小させる可能性がある場合や、Ubuntu/Debian系OSで汎用的に利用したい場合は、縮小コマンドに対応しているext4が適しています。
※ext4の詳細な特徴や操作コマンドについては、関連記事「Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説」をご覧ください。
XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFS(エックスエフエス)は、大容量ストレージや高速な並列I/O処理に特化した高機能な64ビット・ジャーナリングファイルシステムです。Red Hat Enterprise Linux(RHEL)7以降やその派生OS(Rocky Linux、AlmaLinux、CentOS等)において標準ファイルシステムとして長年採用されており、エンタープライズサーバー運用において非常に重要な技術です。
新しいストレージの追加時やクラウドサーバーのディスク拡張時、ファイルシステムの選定において「ext4とXFSのどちらを選ぶべきか」「mkfs.xfs や xfs_growfs の正しい使い方は?」と疑問を持つ方も多いでしょう。
本記事では、XFSの基本概念や特徴、ext4との違いから、mkfs.xfs によるフォーマット作成、xfs_info でのメタデータ確認、xfs_growfs によるオンライン容量拡張、xfs_repair によるファイルシステム修復手順、そして「XFSは容量の縮小ができない」といった運用上の重大な注意点まで徹底解説します。
XFSとは|Linux高機能ファイルシステムの基本と特徴
XFSは、もともとSilicon Graphics(SGI)社がIRIX OS向けに開発し、2001年にLinuxカーネルへ移植された歴史あるファイルシステムです。大容量化と高速並列処理を前提にゼロから設計されています。
1. 64ビット大容量ストレージ対応(最大8EB / 1024TiB超)
XFSは完全な64ビットファイルシステムであり、理論上は最大8EB(エクサバイト = 約800万TB)のボリューム容量および単一ファイルサイズをサポートします。現実のLinuxカーネル実装においても1024TiB(1PB)以上の超大容量ストレージ領域を安定して管理できます。
2. アロケーショングループ(Allocation Groups)による高い並列I/O性能
XFSの性能面での最大の特徴がアロケーショングループ(Allocation Groups: AG)です。ファイルシステム全体を複数のAGと呼ばれる独立した領域に分割して管理します。各AGは自身のフリースペース管理表やInodeアロケーション表を持つため、マルチコアCPUや複数ディスク環境において、複数のI/Oスレッドが同時に異なるAGへ並列書き込み・読み込みを行っても競合(ロック待ち)が発生しにくく、極めて高い並列I/Oスループットを発揮します。
3. 遅延割り当て(Delayed Allocation)とエクステント管理
ext4と同様に、XFSも遅延割り当て(Delayed Allocation / delalloc)とエクステント(Extents)構造を採用しています。データが実際にディスクに書き込まれる直前までブロック割り当てを遅らせることで、連続した大きな領域を効率よく確保し、ディスクの断片化(フラグメンテーション)を強力に防止します。
4. RHEL系ディストリビューションでの標準採用
RHEL 7以降、およびRocky Linux、AlmaLinux、Oracle Linuxなどの派生OSでは、デフォルトのファイルシステムとしてext4に代わりXFSが採用されています。エンタープライズのサーバー運用やストレージ構築では必須の知識となります。
XFSとext4の違い・比較|どちらを選ぶべきか?
Linuxの二大ファイルシステムであるXFSとext4には、得意とする用途や機能の違いが存在します。
| 比較項目 | XFS | ext4 |
|---|---|---|
| 主な設計用途 | 大規模サーバー・大容量ストレージ・高並列I/O | 汎用サーバー・デスクトップ・小〜中規模環境 |
| 並列処理性能 | アロケーショングループにより並列I/Oに非常に強い | 単一I/Oや小ファイルのランダム処理が得意 |
| オンライン容量拡張 | 可能(xfs_growfs) | 可能(resize2fs) |
| 容量の縮小(Shrink) | 不可(非対応) | 可能(アンマウント時に resize2fs) |
| 標準採用OS | RHEL 7/8/9, Rocky Linux, AlmaLinux | Ubuntu, Debian等 |
XFSを選択すべきケース
次のような用途・環境では、XFSの採用を強くおすすめします。
- 大容量ストレージ・巨大ファイルを扱う場合: データベースサーバー(MySQL, PostgreSQL)、動画・メディア配信サーバー、バックアップストレージなど。
- 高負荷・並列アクセスが発生するサーバー: マルチコアCPU環境で複数プロセスが同時にディスクへアクセスするWeb・DB・アプリケーションサーバー。
- RHEL系OSを使用する場合: OSインストール時の標準設定を活かし、トラブル対応や運用ナレッジを共通化したい環境。
ext4を選択すべきケース
一方で、将来的にパーティションやLV(論理ボリューム)の容量を小さく縮小させる可能性がある場合や、Ubuntu/Debian系OSで汎用的に利用したい場合は、縮小コマンドに対応しているext4が適しています。
※ext4の詳細な特徴や操作コマンドについては、関連記事「Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説」をご覧ください。
XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFS(エックスエフエス)は、大容量ストレージや高速な並列I/O処理に特化した高機能な64ビット・ジャーナリングファイルシステムです。Red Hat Enterprise Linux(RHEL)7以降やその派生OS(Rocky Linux、AlmaLinux、CentOS等)において標準ファイルシステムとして長年採用されており、エンタープライズサーバー運用において非常に重要な技術です。
新しいストレージの追加時やクラウドサーバーのディスク拡張時、ファイルシステムの選定において「ext4とXFSのどちらを選ぶべきか」「mkfs.xfs や xfs_growfs の正しい使い方は?」と疑問を持つ方も多いでしょう。
本記事では、XFSの基本概念や特徴、ext4との違いから、mkfs.xfs によるフォーマット作成、xfs_info でのメタデータ確認、xfs_growfs によるオンライン容量拡張、xfs_repair によるファイルシステム修復手順、そして「XFSは容量の縮小ができない」といった運用上の重大な注意点まで徹底解説します。
XFSとは|Linux高機能ファイルシステムの基本と特徴
XFSは、もともとSilicon Graphics(SGI)社がIRIX OS向けに開発し、2001年にLinuxカーネルへ移植された歴史あるファイルシステムです。大容量化と高速並列処理を前提にゼロから設計されています。
1. 64ビット大容量ストレージ対応(最大8EB / 1024TiB超)
XFSは完全な64ビットファイルシステムであり、理論上は最大8EB(エクサバイト = 約800万TB)のボリューム容量および単一ファイルサイズをサポートします。現実のLinuxカーネル実装においても1024TiB(1PB)以上の超大容量ストレージ領域を安定して管理できます。
2. アロケーショングループ(Allocation Groups)による高い並列I/O性能
XFSの性能面での最大の特徴がアロケーショングループ(Allocation Groups: AG)です。ファイルシステム全体を複数のAGと呼ばれる独立した領域に分割して管理します。各AGは自身のフリースペース管理表やInodeアロケーション表を持つため、マルチコアCPUや複数ディスク環境において、複数のI/Oスレッドが同時に異なるAGへ並列書き込み・読み込みを行っても競合(ロック待ち)が発生しにくく、極めて高い並列I/Oスループットを発揮します。
3. 遅延割り当て(Delayed Allocation)とエクステント管理
ext4と同様に、XFSも遅延割り当て(Delayed Allocation / delalloc)とエクステント(Extents)構造を採用しています。データが実際にディスクに書き込まれる直前までブロック割り当てを遅らせることで、連続した大きな領域を効率よく確保し、ディスクの断片化(フラグメンテーション)を強力に防止します。
4. RHEL系ディストリビューションでの標準採用
RHEL 7以降、およびRocky Linux、AlmaLinux、Oracle Linuxなどの派生OSでは、デフォルトのファイルシステムとしてext4に代わりXFSが採用されています。エンタープライズのサーバー運用やストレージ構築では必須の知識となります。
XFSとext4の違い・比較|どちらを選ぶべきか?
Linuxの二大ファイルシステムであるXFSとext4には、得意とする用途や機能の違いが存在します。
| 比較項目 | XFS | ext4 |
|---|---|---|
| 主な設計用途 | 大規模サーバー・大容量ストレージ・高並列I/O | 汎用サーバー・デスクトップ・小〜中規模環境 |
| 並列処理性能 | アロケーショングループにより並列I/Oに非常に強い | 単一I/Oや小ファイルのランダム処理が得意 |
| オンライン容量拡張 | 可能(xfs_growfs) | 可能(resize2fs) |
| 容量の縮小(Shrink) | 不可(非対応) | 可能(アンマウント時に resize2fs) |
| 標準採用OS | RHEL 7/8/9, Rocky Linux, AlmaLinux | Ubuntu, Debian等 |
XFSを選択すべきケース
次のような用途・環境では、XFSの採用を強くおすすめします。
- 大容量ストレージ・巨大ファイルを扱う場合: データベースサーバー(MySQL, PostgreSQL)、動画・メディア配信サーバー、バックアップストレージなど。
- 高負荷・並列アクセスが発生するサーバー: マルチコアCPU環境で複数プロセスが同時にディスクへアクセスするWeb・DB・アプリケーションサーバー。
- RHEL系OSを使用する場合: OSインストール時の標準設定を活かし、トラブル対応や運用ナレッジを共通化したい環境。
ext4を選択すべきケース
一方で、将来的にパーティションやLV(論理ボリューム)の容量を小さく縮小させる可能性がある場合や、Ubuntu/Debian系OSで汎用的に利用したい場合は、縮小コマンドに対応しているext4が適しています。
※ext4の詳細な特徴や操作コマンドについては、関連記事「Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説」をご覧ください。
XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFS(エックスエフエス)は、大容量ストレージや高速な並列I/O処理に特化した高機能な64ビット・ジャーナリングファイルシステムです。Red Hat Enterprise Linux(RHEL)7以降やその派生OS(Rocky Linux、AlmaLinux、CentOS等)において標準ファイルシステムとして長年採用されており、エンタープライズサーバー運用において非常に重要な技術です。
新しいストレージの追加時やクラウドサーバーのディスク拡張時、ファイルシステムの選定において「ext4とXFSのどちらを選ぶべきか」「mkfs.xfs や xfs_growfs の正しい使い方は?」と疑問を持つ方も多いでしょう。
本記事では、XFSの基本概念や特徴、ext4との違いから、mkfs.xfs によるフォーマット作成、xfs_info でのメタデータ確認、xfs_growfs によるオンライン容量拡張、xfs_repair によるファイルシステム修復手順、そして「XFSは容量の縮小ができない」といった運用上の重大な注意点まで徹底解説します。
XFSとは|Linux高機能ファイルシステムの基本と特徴
XFSは、もともとSilicon Graphics(SGI)社がIRIX OS向けに開発し、2001年にLinuxカーネルへ移植された歴史あるファイルシステムです。大容量化と高速並列処理を前提にゼロから設計されています。
1. 64ビット大容量ストレージ対応(最大8EB / 1024TiB超)
XFSは完全な64ビットファイルシステムであり、理論上は最大8EB(エクサバイト = 約800万TB)のボリューム容量および単一ファイルサイズをサポートします。現実のLinuxカーネル実装においても1024TiB(1PB)以上の超大容量ストレージ領域を安定して管理できます。
2. アロケーショングループ(Allocation Groups)による高い並列I/O性能
XFSの性能面での最大の特徴がアロケーショングループ(Allocation Groups: AG)です。ファイルシステム全体を複数のAGと呼ばれる独立した領域に分割して管理します。各AGは自身のフリースペース管理表やInodeアロケーション表を持つため、マルチコアCPUや複数ディスク環境において、複数のI/Oスレッドが同時に異なるAGへ並列書き込み・読み込みを行っても競合(ロック待ち)が発生しにくく、極めて高い並列I/Oスループットを発揮します。
3. 遅延割り当て(Delayed Allocation)とエクステント管理
ext4と同様に、XFSも遅延割り当て(Delayed Allocation / delalloc)とエクステント(Extents)構造を採用しています。データが実際にディスクに書き込まれる直前までブロック割り当てを遅らせることで、連続した大きな領域を効率よく確保し、ディスクの断片化(フラグメンテーション)を強力に防止します。
4. RHEL系ディストリビューションでの標準採用
RHEL 7以降、およびRocky Linux、AlmaLinux、Oracle Linuxなどの派生OSでは、デフォルトのファイルシステムとしてext4に代わりXFSが採用されています。エンタープライズのサーバー運用やストレージ構築では必須の知識となります。
XFSとext4の違い・比較|どちらを選ぶべきか?
Linuxの二大ファイルシステムであるXFSとext4には、得意とする用途や機能の違いが存在します。
| 比較項目 | XFS | ext4 |
|---|---|---|
| 主な設計用途 | 大規模サーバー・大容量ストレージ・高並列I/O | 汎用サーバー・デスクトップ・小〜中規模環境 |
| 並列処理性能 | アロケーショングループにより並列I/Oに非常に強い | 単一I/Oや小ファイルのランダム処理が得意 |
| オンライン容量拡張 | 可能(xfs_growfs) | 可能(resize2fs) |
| 容量の縮小(Shrink) | 不可(非対応) | 可能(アンマウント時に resize2fs) |
| 標準採用OS | RHEL 7/8/9, Rocky Linux, AlmaLinux | Ubuntu, Debian等 |
XFSを選択すべきケース
次のような用途・環境では、XFSの採用を強くおすすめします。
- 大容量ストレージ・巨大ファイルを扱う場合: データベースサーバー(MySQL, PostgreSQL)、動画・メディア配信サーバー、バックアップストレージなど。
- 高負荷・並列アクセスが発生するサーバー: マルチコアCPU環境で複数プロセスが同時にディスクへアクセスするWeb・DB・アプリケーションサーバー。
- RHEL系OSを使用する場合: OSインストール時の標準設定を活かし、トラブル対応や運用ナレッジを共通化したい環境。
ext4を選択すべきケース
一方で、将来的にパーティションやLV(論理ボリューム)の容量を小さく縮小させる可能性がある場合や、Ubuntu/Debian系OSで汎用的に利用したい場合は、縮小コマンドに対応しているext4が適しています。
※ext4の詳細な特徴や操作コマンドについては、関連記事「Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説」をご覧ください。
XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFS(エックスエフエス)は、大容量ストレージや高速な並列I/O処理に特化した高機能な64ビット・ジャーナリングファイルシステムです。Red Hat Enterprise Linux(RHEL)7以降やその派生OS(Rocky Linux、AlmaLinux、CentOS等)において標準ファイルシステムとして長年採用されており、エンタープライズサーバー運用において非常に重要な技術です。
新しいストレージの追加時やクラウドサーバーのディスク拡張時、ファイルシステムの選定において「ext4とXFSのどちらを選ぶべきか」「mkfs.xfs や xfs_growfs の正しい使い方は?」と疑問を持つ方も多いでしょう。
本記事では、XFSの基本概念や特徴、ext4との違いから、mkfs.xfs によるフォーマット作成、xfs_info でのメタデータ確認、xfs_growfs によるオンライン容量拡張、xfs_repair によるファイルシステム修復手順、そして「XFSは容量の縮小ができない」といった運用上の重大な注意点まで徹底解説します。
XFSとは|Linux高機能ファイルシステムの基本と特徴
XFSは、もともとSilicon Graphics(SGI)社がIRIX OS向けに開発し、2001年にLinuxカーネルへ移植された歴史あるファイルシステムです。大容量化と高速並列処理を前提にゼロから設計されています。
1. 64ビット大容量ストレージ対応(最大8EB / 1024TiB超)
XFSは完全な64ビットファイルシステムであり、理論上は最大8EB(エクサバイト = 約800万TB)のボリューム容量および単一ファイルサイズをサポートします。現実のLinuxカーネル実装においても1024TiB(1PB)以上の超大容量ストレージ領域を安定して管理できます。
2. アロケーショングループ(Allocation Groups)による高い並列I/O性能
XFSの性能面での最大の特徴がアロケーショングループ(Allocation Groups: AG)です。ファイルシステム全体を複数のAGと呼ばれる独立した領域に分割して管理します。各AGは自身のフリースペース管理表やInodeアロケーション表を持つため、マルチコアCPUや複数ディスク環境において、複数のI/Oスレッドが同時に異なるAGへ並列書き込み・読み込みを行っても競合(ロック待ち)が発生しにくく、極めて高い並列I/Oスループットを発揮します。
3. 遅延割り当て(Delayed Allocation)とエクステント管理
ext4と同様に、XFSも遅延割り当て(Delayed Allocation / delalloc)とエクステント(Extents)構造を採用しています。データが実際にディスクに書き込まれる直前までブロック割り当てを遅らせることで、連続した大きな領域を効率よく確保し、ディスクの断片化(フラグメンテーション)を強力に防止します。
4. RHEL系ディストリビューションでの標準採用
RHEL 7以降、およびRocky Linux、AlmaLinux、Oracle Linuxなどの派生OSでは、デフォルトのファイルシステムとしてext4に代わりXFSが採用されています。エンタープライズのサーバー運用やストレージ構築では必須の知識となります。
XFSとext4の違い・比較|どちらを選ぶべきか?
Linuxの二大ファイルシステムであるXFSとext4には、得意とする用途や機能の違いが存在します。
| 比較項目 | XFS | ext4 |
|---|---|---|
| 主な設計用途 | 大規模サーバー・大容量ストレージ・高並列I/O | 汎用サーバー・デスクトップ・小〜中規模環境 |
| 並列処理性能 | アロケーショングループにより並列I/Oに非常に強い | 単一I/Oや小ファイルのランダム処理が得意 |
| オンライン容量拡張 | 可能(xfs_growfs) | 可能(resize2fs) |
| 容量の縮小(Shrink) | 不可(非対応) | 可能(アンマウント時に resize2fs) |
| 標準採用OS | RHEL 7/8/9, Rocky Linux, AlmaLinux | Ubuntu, Debian等 |
XFSを選択すべきケース
次のような用途・環境では、XFSの採用を強くおすすめします。
- 大容量ストレージ・巨大ファイルを扱う場合: データベースサーバー(MySQL, PostgreSQL)、動画・メディア配信サーバー、バックアップストレージなど。
- 高負荷・並列アクセスが発生するサーバー: マルチコアCPU環境で複数プロセスが同時にディスクへアクセスするWeb・DB・アプリケーションサーバー。
- RHEL系OSを使用する場合: OSインストール時の標準設定を活かし、トラブル対応や運用ナレッジを共通化したい環境。
ext4を選択すべきケース
一方で、将来的にパーティションやLV(論理ボリューム)の容量を小さく縮小させる可能性がある場合や、Ubuntu/Debian系OSで汎用的に利用したい場合は、縮小コマンドに対応しているext4が適しています。
※ext4の詳細な特徴や操作コマンドについては、関連記事「Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説」をご覧ください。
XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFS(エックスエフエス)は、大容量ストレージや高速な並列I/O処理に特化した高機能な64ビット・ジャーナリングファイルシステムです。Red Hat Enterprise Linux(RHEL)7以降やその派生OS(Rocky Linux、AlmaLinux、CentOS等)において標準ファイルシステムとして長年採用されており、エンタープライズサーバー運用において非常に重要な技術です。
新しいストレージの追加時やクラウドサーバーのディスク拡張時、ファイルシステムの選定において「ext4とXFSのどちらを選ぶべきか」「mkfs.xfs や xfs_growfs の正しい使い方は?」と疑問を持つ方も多いでしょう。
本記事では、XFSの基本概念や特徴、ext4との違いから、mkfs.xfs によるフォーマット作成、xfs_info でのメタデータ確認、xfs_growfs によるオンライン容量拡張、xfs_repair によるファイルシステム修復手順、そして「XFSは容量の縮小ができない」といった運用上の重大な注意点まで徹底解説します。
XFSとは|Linux高機能ファイルシステムの基本と特徴
XFSは、もともとSilicon Graphics(SGI)社がIRIX OS向けに開発し、2001年にLinuxカーネルへ移植された歴史あるファイルシステムです。大容量化と高速並列処理を前提にゼロから設計されています。
1. 64ビット大容量ストレージ対応(最大8EB / 1024TiB超)
XFSは完全な64ビットファイルシステムであり、理論上は最大8EB(エクサバイト = 約800万TB)のボリューム容量および単一ファイルサイズをサポートします。現実のLinuxカーネル実装においても1024TiB(1PB)以上の超大容量ストレージ領域を安定して管理できます。
2. アロケーショングループ(Allocation Groups)による高い並列I/O性能
XFSの性能面での最大の特徴がアロケーショングループ(Allocation Groups: AG)です。ファイルシステム全体を複数のAGと呼ばれる独立した領域に分割して管理します。各AGは自身のフリースペース管理表やInodeアロケーション表を持つため、マルチコアCPUや複数ディスク環境において、複数のI/Oスレッドが同時に異なるAGへ並列書き込み・読み込みを行っても競合(ロック待ち)が発生しにくく、極めて高い並列I/Oスループットを発揮します。
3. 遅延割り当て(Delayed Allocation)とエクステント管理
ext4と同様に、XFSも遅延割り当て(Delayed Allocation / delalloc)とエクステント(Extents)構造を採用しています。データが実際にディスクに書き込まれる直前までブロック割り当てを遅らせることで、連続した大きな領域を効率よく確保し、ディスクの断片化(フラグメンテーション)を強力に防止します。
4. RHEL系ディストリビューションでの標準採用
RHEL 7以降、およびRocky Linux、AlmaLinux、Oracle Linuxなどの派生OSでは、デフォルトのファイルシステムとしてext4に代わりXFSが採用されています。エンタープライズのサーバー運用やストレージ構築では必須の知識となります。
XFSとext4の違い・比較|どちらを選ぶべきか?
Linuxの二大ファイルシステムであるXFSとext4には、得意とする用途や機能の違いが存在します。
| 比較項目 | XFS | ext4 |
|---|---|---|
| 主な設計用途 | 大規模サーバー・大容量ストレージ・高並列I/O | 汎用サーバー・デスクトップ・小〜中規模環境 |
| 並列処理性能 | アロケーショングループにより並列I/Oに非常に強い | 単一I/Oや小ファイルのランダム処理が得意 |
| オンライン容量拡張 | 可能(xfs_growfs) | 可能(resize2fs) |
| 容量の縮小(Shrink) | 不可(非対応) | 可能(アンマウント時に resize2fs) |
| 標準採用OS | RHEL 7/8/9, Rocky Linux, AlmaLinux | Ubuntu, Debian等 |
XFSを選択すべきケース
次のような用途・環境では、XFSの採用を強くおすすめします。
- 大容量ストレージ・巨大ファイルを扱う場合: データベースサーバー(MySQL, PostgreSQL)、動画・メディア配信サーバー、バックアップストレージなど。
- 高負荷・並列アクセスが発生するサーバー: マルチコアCPU環境で複数プロセスが同時にディスクへアクセスするWeb・DB・アプリケーションサーバー。
- RHEL系OSを使用する場合: OSインストール時の標準設定を活かし、トラブル対応や運用ナレッジを共通化したい環境。
ext4を選択すべきケース
一方で、将来的にパーティションやLV(論理ボリューム)の容量を小さく縮小させる可能性がある場合や、Ubuntu/Debian系OSで汎用的に利用したい場合は、縮小コマンドに対応しているext4が適しています。
※ext4の詳細な特徴や操作コマンドについては、関連記事「Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説」をご覧ください。
XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFS(エックスエフエス)は、大容量ストレージや高速な並列I/O処理に特化した高機能な64ビット・ジャーナリングファイルシステムです。Red Hat Enterprise Linux(RHEL)7以降やその派生OS(Rocky Linux、AlmaLinux、CentOS等)において標準ファイルシステムとして長年採用されており、エンタープライズサーバー運用において非常に重要な技術です。
新しいストレージの追加時やクラウドサーバーのディスク拡張時、ファイルシステムの選定において「ext4とXFSのどちらを選ぶべきか」「mkfs.xfs や xfs_growfs の正しい使い方は?」と疑問を持つ方も多いでしょう。
本記事では、XFSの基本概念や特徴、ext4との違いから、mkfs.xfs によるフォーマット作成、xfs_info でのメタデータ確認、xfs_growfs によるオンライン容量拡張、xfs_repair によるファイルシステム修復手順、そして「XFSは容量の縮小ができない」といった運用上の重大な注意点まで徹底解説します。
XFSとは|Linux高機能ファイルシステムの基本と特徴
XFSは、もともとSilicon Graphics(SGI)社がIRIX OS向けに開発し、2001年にLinuxカーネルへ移植された歴史あるファイルシステムです。大容量化と高速並列処理を前提にゼロから設計されています。
1. 64ビット大容量ストレージ対応(最大8EB / 1024TiB超)
XFSは完全な64ビットファイルシステムであり、理論上は最大8EB(エクサバイト = 約800万TB)のボリューム容量および単一ファイルサイズをサポートします。現実のLinuxカーネル実装においても1024TiB(1PB)以上の超大容量ストレージ領域を安定して管理できます。
2. アロケーショングループ(Allocation Groups)による高い並列I/O性能
XFSの性能面での最大の特徴がアロケーショングループ(Allocation Groups: AG)です。ファイルシステム全体を複数のAGと呼ばれる独立した領域に分割して管理します。各AGは自身のフリースペース管理表やInodeアロケーション表を持つため、マルチコアCPUや複数ディスク環境において、複数のI/Oスレッドが同時に異なるAGへ並列書き込み・読み込みを行っても競合(ロック待ち)が発生しにくく、極めて高い並列I/Oスループットを発揮します。
3. 遅延割り当て(Delayed Allocation)とエクステント管理
ext4と同様に、XFSも遅延割り当て(Delayed Allocation / delalloc)とエクステント(Extents)構造を採用しています。データが実際にディスクに書き込まれる直前までブロック割り当てを遅らせることで、連続した大きな領域を効率よく確保し、ディスクの断片化(フラグメンテーション)を強力に防止します。
4. RHEL系ディストリビューションでの標準採用
RHEL 7以降、およびRocky Linux、AlmaLinux、Oracle Linuxなどの派生OSでは、デフォルトのファイルシステムとしてext4に代わりXFSが採用されています。エンタープライズのサーバー運用やストレージ構築では必須の知識となります。
XFSとext4の違い・比較|どちらを選ぶべきか?
Linuxの二大ファイルシステムであるXFSとext4には、得意とする用途や機能の違いが存在します。
| 比較項目 | XFS | ext4 |
|---|---|---|
| 主な設計用途 | 大規模サーバー・大容量ストレージ・高並列I/O | 汎用サーバー・デスクトップ・小〜中規模環境 |
| 並列処理性能 | アロケーショングループにより並列I/Oに非常に強い | 単一I/Oや小ファイルのランダム処理が得意 |
| オンライン容量拡張 | 可能(xfs_growfs) | 可能(resize2fs) |
| 容量の縮小(Shrink) | 不可(非対応) | 可能(アンマウント時に resize2fs) |
| 標準採用OS | RHEL 7/8/9, Rocky Linux, AlmaLinux | Ubuntu, Debian等 |
XFSを選択すべきケース
次のような用途・環境では、XFSの採用を強くおすすめします。
- 大容量ストレージ・巨大ファイルを扱う場合: データベースサーバー(MySQL, PostgreSQL)、動画・メディア配信サーバー、バックアップストレージなど。
- 高負荷・並列アクセスが発生するサーバー: マルチコアCPU環境で複数プロセスが同時にディスクへアクセスするWeb・DB・アプリケーションサーバー。
- RHEL系OSを使用する場合: OSインストール時の標準設定を活かし、トラブル対応や運用ナレッジを共通化したい環境。
ext4を選択すべきケース
一方で、将来的にパーティションやLV(論理ボリューム)の容量を小さく縮小させる可能性がある場合や、Ubuntu/Debian系OSで汎用的に利用したい場合は、縮小コマンドに対応しているext4が適しています。
※ext4の詳細な特徴や操作コマンドについては、関連記事「Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説」をご覧ください。
XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFS(エックスエフエス)は、大容量ストレージや高速な並列I/O処理に特化した高機能な64ビット・ジャーナリングファイルシステムです。Red Hat Enterprise Linux(RHEL)7以降やその派生OS(Rocky Linux、AlmaLinux、CentOS等)において標準ファイルシステムとして長年採用されており、エンタープライズサーバー運用において非常に重要な技術です。
新しいストレージの追加時やクラウドサーバーのディスク拡張時、ファイルシステムの選定において「ext4とXFSのどちらを選ぶべきか」「mkfs.xfs や xfs_growfs の正しい使い方は?」と疑問を持つ方も多いでしょう。
本記事では、XFSの基本概念や特徴、ext4との違いから、mkfs.xfs によるフォーマット作成、xfs_info でのメタデータ確認、xfs_growfs によるオンライン容量拡張、xfs_repair によるファイルシステム修復手順、そして「XFSは容量の縮小ができない」といった運用上の重大な注意点まで徹底解説します。
XFSとは|Linux高機能ファイルシステムの基本と特徴
XFSは、もともとSilicon Graphics(SGI)社がIRIX OS向けに開発し、2001年にLinuxカーネルへ移植された歴史あるファイルシステムです。大容量化と高速並列処理を前提にゼロから設計されています。
1. 64ビット大容量ストレージ対応(最大8EB / 1024TiB超)
XFSは完全な64ビットファイルシステムであり、理論上は最大8EB(エクサバイト = 約800万TB)のボリューム容量および単一ファイルサイズをサポートします。現実のLinuxカーネル実装においても1024TiB(1PB)以上の超大容量ストレージ領域を安定して管理できます。
2. アロケーショングループ(Allocation Groups)による高い並列I/O性能
XFSの性能面での最大の特徴がアロケーショングループ(Allocation Groups: AG)です。ファイルシステム全体を複数のAGと呼ばれる独立した領域に分割して管理します。各AGは自身のフリースペース管理表やInodeアロケーション表を持つため、マルチコアCPUや複数ディスク環境において、複数のI/Oスレッドが同時に異なるAGへ並列書き込み・読み込みを行っても競合(ロック待ち)が発生しにくく、極めて高い並列I/Oスループットを発揮します。
3. 遅延割り当て(Delayed Allocation)とエクステント管理
ext4と同様に、XFSも遅延割り当て(Delayed Allocation / delalloc)とエクステント(Extents)構造を採用しています。データが実際にディスクに書き込まれる直前までブロック割り当てを遅らせることで、連続した大きな領域を効率よく確保し、ディスクの断片化(フラグメンテーション)を強力に防止します。
4. RHEL系ディストリビューションでの標準採用
RHEL 7以降、およびRocky Linux、AlmaLinux、Oracle Linuxなどの派生OSでは、デフォルトのファイルシステムとしてext4に代わりXFSが採用されています。エンタープライズのサーバー運用やストレージ構築では必須の知識となります。
XFSとext4の違い・比較|どちらを選ぶべきか?
Linuxの二大ファイルシステムであるXFSとext4には、得意とする用途や機能の違いが存在します。
| 比較項目 | XFS | ext4 |
|---|---|---|
| 主な設計用途 | 大規模サーバー・大容量ストレージ・高並列I/O | 汎用サーバー・デスクトップ・小〜中規模環境 |
| 並列処理性能 | アロケーショングループにより並列I/Oに非常に強い | 単一I/Oや小ファイルのランダム処理が得意 |
| オンライン容量拡張 | 可能(xfs_growfs) | 可能(resize2fs) |
| 容量の縮小(Shrink) | 不可(非対応) | 可能(アンマウント時に resize2fs) |
| 標準採用OS | RHEL 7/8/9, Rocky Linux, AlmaLinux | Ubuntu, Debian等 |
XFSを選択すべきケース
次のような用途・環境では、XFSの採用を強くおすすめします。
- 大容量ストレージ・巨大ファイルを扱う場合: データベースサーバー(MySQL, PostgreSQL)、動画・メディア配信サーバー、バックアップストレージなど。
- 高負荷・並列アクセスが発生するサーバー: マルチコアCPU環境で複数プロセスが同時にディスクへアクセスするWeb・DB・アプリケーションサーバー。
- RHEL系OSを使用する場合: OSインストール時の標準設定を活かし、トラブル対応や運用ナレッジを共通化したい環境。
ext4を選択すべきケース
一方で、将来的にパーティションやLV(論理ボリューム)の容量を小さく縮小させる可能性がある場合や、Ubuntu/Debian系OSで汎用的に利用したい場合は、縮小コマンドに対応しているext4が適しています。
※ext4の詳細な特徴や操作コマンドについては、関連記事「Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説」をご覧ください。
XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFS(エックスエフエス)は、大容量ストレージや高速な並列I/O処理に特化した高機能な64ビット・ジャーナリングファイルシステムです。Red Hat Enterprise Linux(RHEL)7以降やその派生OS(Rocky Linux、AlmaLinux、CentOS等)において標準ファイルシステムとして長年採用されており、エンタープライズサーバー運用において非常に重要な技術です。
新しいストレージの追加時やクラウドサーバーのディスク拡張時、ファイルシステムの選定において「ext4とXFSのどちらを選ぶべきか」「mkfs.xfs や xfs_growfs の正しい使い方は?」と疑問を持つ方も多いでしょう。
本記事では、XFSの基本概念や特徴、ext4との違いから、mkfs.xfs によるフォーマット作成、xfs_info でのメタデータ確認、xfs_growfs によるオンライン容量拡張、xfs_repair によるファイルシステム修復手順、そして「XFSは容量の縮小ができない」といった運用上の重大な注意点まで徹底解説します。
XFSとは|Linux高機能ファイルシステムの基本と特徴
XFSは、もともとSilicon Graphics(SGI)社がIRIX OS向けに開発し、2001年にLinuxカーネルへ移植された歴史あるファイルシステムです。大容量化と高速並列処理を前提にゼロから設計されています。
1. 64ビット大容量ストレージ対応(最大8EB / 1024TiB超)
XFSは完全な64ビットファイルシステムであり、理論上は最大8EB(エクサバイト = 約800万TB)のボリューム容量および単一ファイルサイズをサポートします。現実のLinuxカーネル実装においても1024TiB(1PB)以上の超大容量ストレージ領域を安定して管理できます。
2. アロケーショングループ(Allocation Groups)による高い並列I/O性能
XFSの性能面での最大の特徴がアロケーショングループ(Allocation Groups: AG)です。ファイルシステム全体を複数のAGと呼ばれる独立した領域に分割して管理します。各AGは自身のフリースペース管理表やInodeアロケーション表を持つため、マルチコアCPUや複数ディスク環境において、複数のI/Oスレッドが同時に異なるAGへ並列書き込み・読み込みを行っても競合(ロック待ち)が発生しにくく、極めて高い並列I/Oスループットを発揮します。
3. 遅延割り当て(Delayed Allocation)とエクステント管理
ext4と同様に、XFSも遅延割り当て(Delayed Allocation / delalloc)とエクステント(Extents)構造を採用しています。データが実際にディスクに書き込まれる直前までブロック割り当てを遅らせることで、連続した大きな領域を効率よく確保し、ディスクの断片化(フラグメンテーション)を強力に防止します。
4. RHEL系ディストリビューションでの標準採用
RHEL 7以降、およびRocky Linux、AlmaLinux、Oracle Linuxなどの派生OSでは、デフォルトのファイルシステムとしてext4に代わりXFSが採用されています。エンタープライズのサーバー運用やストレージ構築では必須の知識となります。
XFSとext4の違い・比較|どちらを選ぶべきか?
Linuxの二大ファイルシステムであるXFSとext4には、得意とする用途や機能の違いが存在します。
| 比較項目 | XFS | ext4 |
|---|---|---|
| 主な設計用途 | 大規模サーバー・大容量ストレージ・高並列I/O | 汎用サーバー・デスクトップ・小〜中規模環境 |
| 並列処理性能 | アロケーショングループにより並列I/Oに非常に強い | 単一I/Oや小ファイルのランダム処理が得意 |
| オンライン容量拡張 | 可能(xfs_growfs) | 可能(resize2fs) |
| 容量の縮小(Shrink) | 不可(非対応) | 可能(アンマウント時に resize2fs) |
| 標準採用OS | RHEL 7/8/9, Rocky Linux, AlmaLinux | Ubuntu, Debian等 |
XFSを選択すべきケース
次のような用途・環境では、XFSの採用を強くおすすめします。
- 大容量ストレージ・巨大ファイルを扱う場合: データベースサーバー(MySQL, PostgreSQL)、動画・メディア配信サーバー、バックアップストレージなど。
- 高負荷・並列アクセスが発生するサーバー: マルチコアCPU環境で複数プロセスが同時にディスクへアクセスするWeb・DB・アプリケーションサーバー。
- RHEL系OSを使用する場合: OSインストール時の標準設定を活かし、トラブル対応や運用ナレッジを共通化したい環境。
ext4を選択すべきケース
一方で、将来的にパーティションやLV(論理ボリューム)の容量を小さく縮小させる可能性がある場合や、Ubuntu/Debian系OSで汎用的に利用したい場合は、縮小コマンドに対応しているext4が適しています。
※ext4の詳細な特徴や操作コマンドについては、関連記事「Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説」をご覧ください。
XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFS(エックスエフエス)は、大容量ストレージや高速な並列I/O処理に特化した高機能な64ビット・ジャーナリングファイルシステムです。Red Hat Enterprise Linux(RHEL)7以降やその派生OS(Rocky Linux、AlmaLinux、CentOS等)において標準ファイルシステムとして長年採用されており、エンタープライズサーバー運用において非常に重要な技術です。
新しいストレージの追加時やクラウドサーバーのディスク拡張時、ファイルシステムの選定において「ext4とXFSのどちらを選ぶべきか」「mkfs.xfs や xfs_growfs の正しい使い方は?」と疑問を持つ方も多いでしょう。
本記事では、XFSの基本概念や特徴、ext4との違いから、mkfs.xfs によるフォーマット作成、xfs_info でのメタデータ確認、xfs_growfs によるオンライン容量拡張、xfs_repair によるファイルシステム修復手順、そして「XFSは容量の縮小ができない」といった運用上の重大な注意点まで徹底解説します。
XFSとは|Linux高機能ファイルシステムの基本と特徴
XFSは、もともとSilicon Graphics(SGI)社がIRIX OS向けに開発し、2001年にLinuxカーネルへ移植された歴史あるファイルシステムです。大容量化と高速並列処理を前提にゼロから設計されています。
1. 64ビット大容量ストレージ対応(最大8EB / 1024TiB超)
XFSは完全な64ビットファイルシステムであり、理論上は最大8EB(エクサバイト = 約800万TB)のボリューム容量および単一ファイルサイズをサポートします。現実のLinuxカーネル実装においても1024TiB(1PB)以上の超大容量ストレージ領域を安定して管理できます。
2. アロケーショングループ(Allocation Groups)による高い並列I/O性能
XFSの性能面での最大の特徴がアロケーショングループ(Allocation Groups: AG)です。ファイルシステム全体を複数のAGと呼ばれる独立した領域に分割して管理します。各AGは自身のフリースペース管理表やInodeアロケーション表を持つため、マルチコアCPUや複数ディスク環境において、複数のI/Oスレッドが同時に異なるAGへ並列書き込み・読み込みを行っても競合(ロック待ち)が発生しにくく、極めて高い並列I/Oスループットを発揮します。
3. 遅延割り当て(Delayed Allocation)とエクステント管理
ext4と同様に、XFSも遅延割り当て(Delayed Allocation / delalloc)とエクステント(Extents)構造を採用しています。データが実際にディスクに書き込まれる直前までブロック割り当てを遅らせることで、連続した大きな領域を効率よく確保し、ディスクの断片化(フラグメンテーション)を強力に防止します。
4. RHEL系ディストリビューションでの標準採用
RHEL 7以降、およびRocky Linux、AlmaLinux、Oracle Linuxなどの派生OSでは、デフォルトのファイルシステムとしてext4に代わりXFSが採用されています。エンタープライズのサーバー運用やストレージ構築では必須の知識となります。
XFSとext4の違い・比較|どちらを選ぶべきか?
Linuxの二大ファイルシステムであるXFSとext4には、得意とする用途や機能の違いが存在します。
| 比較項目 | XFS | ext4 |
|---|---|---|
| 主な設計用途 | 大規模サーバー・大容量ストレージ・高並列I/O | 汎用サーバー・デスクトップ・小〜中規模環境 |
| 並列処理性能 | アロケーショングループにより並列I/Oに非常に強い | 単一I/Oや小ファイルのランダム処理が得意 |
| オンライン容量拡張 | 可能(xfs_growfs) | 可能(resize2fs) |
| 容量の縮小(Shrink) | 不可(非対応) | 可能(アンマウント時に resize2fs) |
| 標準採用OS | RHEL 7/8/9, Rocky Linux, AlmaLinux | Ubuntu, Debian等 |
XFSを選択すべきケース
次のような用途・環境では、XFSの採用を強くおすすめします。
- 大容量ストレージ・巨大ファイルを扱う場合: データベースサーバー(MySQL, PostgreSQL)、動画・メディア配信サーバー、バックアップストレージなど。
- 高負荷・並列アクセスが発生するサーバー: マルチコアCPU環境で複数プロセスが同時にディスクへアクセスするWeb・DB・アプリケーションサーバー。
- RHEL系OSを使用する場合: OSインストール時の標準設定を活かし、トラブル対応や運用ナレッジを共通化したい環境。
ext4を選択すべきケース
一方で、将来的にパーティションやLV(論理ボリューム)の容量を小さく縮小させる可能性がある場合や、Ubuntu/Debian系OSで汎用的に利用したい場合は、縮小コマンドに対応しているext4が適しています。
※ext4の詳細な特徴や操作コマンドについては、関連記事「Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説」をご覧ください。
XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFS(エックスエフエス)は、大容量ストレージや高速な並列I/O処理に特化した高機能な64ビット・ジャーナリングファイルシステムです。Red Hat Enterprise Linux(RHEL)7以降やその派生OS(Rocky Linux、AlmaLinux、CentOS等)において標準ファイルシステムとして長年採用されており、エンタープライズサーバー運用において非常に重要な技術です。
新しいストレージの追加時やクラウドサーバーのディスク拡張時、ファイルシステムの選定において「ext4とXFSのどちらを選ぶべきか」「mkfs.xfs や xfs_growfs の正しい使い方は?」と疑問を持つ方も多いでしょう。
本記事では、XFSの基本概念や特徴、ext4との違いから、mkfs.xfs によるフォーマット作成、xfs_info でのメタデータ確認、xfs_growfs によるオンライン容量拡張、xfs_repair によるファイルシステム修復手順、そして「XFSは容量の縮小ができない」といった運用上の重大な注意点まで徹底解説します。
XFSとは|Linux高機能ファイルシステムの基本と特徴
XFSは、もともとSilicon Graphics(SGI)社がIRIX OS向けに開発し、2001年にLinuxカーネルへ移植された歴史あるファイルシステムです。大容量化と高速並列処理を前提にゼロから設計されています。
1. 64ビット大容量ストレージ対応(最大8EB / 1024TiB超)
XFSは完全な64ビットファイルシステムであり、理論上は最大8EB(エクサバイト = 約800万TB)のボリューム容量および単一ファイルサイズをサポートします。現実のLinuxカーネル実装においても1024TiB(1PB)以上の超大容量ストレージ領域を安定して管理できます。
2. アロケーショングループ(Allocation Groups)による高い並列I/O性能
XFSの性能面での最大の特徴がアロケーショングループ(Allocation Groups: AG)です。ファイルシステム全体を複数のAGと呼ばれる独立した領域に分割して管理します。各AGは自身のフリースペース管理表やInodeアロケーション表を持つため、マルチコアCPUや複数ディスク環境において、複数のI/Oスレッドが同時に異なるAGへ並列書き込み・読み込みを行っても競合(ロック待ち)が発生しにくく、極めて高い並列I/Oスループットを発揮します。
3. 遅延割り当て(Delayed Allocation)とエクステント管理
ext4と同様に、XFSも遅延割り当て(Delayed Allocation / delalloc)とエクステント(Extents)構造を採用しています。データが実際にディスクに書き込まれる直前までブロック割り当てを遅らせることで、連続した大きな領域を効率よく確保し、ディスクの断片化(フラグメンテーション)を強力に防止します。
4. RHEL系ディストリビューションでの標準採用
RHEL 7以降、およびRocky Linux、AlmaLinux、Oracle Linuxなどの派生OSでは、デフォルトのファイルシステムとしてext4に代わりXFSが採用されています。エンタープライズのサーバー運用やストレージ構築では必須の知識となります。
XFSとext4の違い・比較|どちらを選ぶべきか?
Linuxの二大ファイルシステムであるXFSとext4には、得意とする用途や機能の違いが存在します。
| 比較項目 | XFS | ext4 |
|---|---|---|
| 主な設計用途 | 大規模サーバー・大容量ストレージ・高並列I/O | 汎用サーバー・デスクトップ・小〜中規模環境 |
| 並列処理性能 | アロケーショングループにより並列I/Oに非常に強い | 単一I/Oや小ファイルのランダム処理が得意 |
| オンライン容量拡張 | 可能(xfs_growfs) | 可能(resize2fs) |
| 容量の縮小(Shrink) | 不可(非対応) | 可能(アンマウント時に resize2fs) |
| 標準採用OS | RHEL 7/8/9, Rocky Linux, AlmaLinux | Ubuntu, Debian等 |
XFSを選択すべきケース
次のような用途・環境では、XFSの採用を強くおすすめします。
- 大容量ストレージ・巨大ファイルを扱う場合: データベースサーバー(MySQL, PostgreSQL)、動画・メディア配信サーバー、バックアップストレージなど。
- 高負荷・並列アクセスが発生するサーバー: マルチコアCPU環境で複数プロセスが同時にディスクへアクセスするWeb・DB・アプリケーションサーバー。
- RHEL系OSを使用する場合: OSインストール時の標準設定を活かし、トラブル対応や運用ナレッジを共通化したい環境。
ext4を選択すべきケース
一方で、将来的にパーティションやLV(論理ボリューム)の容量を小さく縮小させる可能性がある場合や、Ubuntu/Debian系OSで汎用的に利用したい場合は、縮小コマンドに対応しているext4が適しています。
※ext4の詳細な特徴や操作コマンドについては、関連記事「Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説」をご覧ください。
XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFS(エックスエフエス)は、大容量ストレージや高速な並列I/O処理に特化した高機能な64ビット・ジャーナリングファイルシステムです。Red Hat Enterprise Linux(RHEL)7以降やその派生OS(Rocky Linux、AlmaLinux、CentOS等)において標準ファイルシステムとして長年採用されており、エンタープライズサーバー運用において非常に重要な技術です。
新しいストレージの追加時やクラウドサーバーのディスク拡張時、ファイルシステムの選定において「ext4とXFSのどちらを選ぶべきか」「mkfs.xfs や xfs_growfs の正しい使い方は?」と疑問を持つ方も多いでしょう。
本記事では、XFSの基本概念や特徴、ext4との違いから、mkfs.xfs によるフォーマット作成、xfs_info でのメタデータ確認、xfs_growfs によるオンライン容量拡張、xfs_repair によるファイルシステム修復手順、そして「XFSは容量の縮小ができない」といった運用上の重大な注意点まで徹底解説します。
XFSとは|Linux高機能ファイルシステムの基本と特徴
XFSは、もともとSilicon Graphics(SGI)社がIRIX OS向けに開発し、2001年にLinuxカーネルへ移植された歴史あるファイルシステムです。大容量化と高速並列処理を前提にゼロから設計されています。
1. 64ビット大容量ストレージ対応(最大8EB / 1024TiB超)
XFSは完全な64ビットファイルシステムであり、理論上は最大8EB(エクサバイト = 約800万TB)のボリューム容量および単一ファイルサイズをサポートします。現実のLinuxカーネル実装においても1024TiB(1PB)以上の超大容量ストレージ領域を安定して管理できます。
2. アロケーショングループ(Allocation Groups)による高い並列I/O性能
XFSの性能面での最大の特徴がアロケーショングループ(Allocation Groups: AG)です。ファイルシステム全体を複数のAGと呼ばれる独立した領域に分割して管理します。各AGは自身のフリースペース管理表やInodeアロケーション表を持つため、マルチコアCPUや複数ディスク環境において、複数のI/Oスレッドが同時に異なるAGへ並列書き込み・読み込みを行っても競合(ロック待ち)が発生しにくく、極めて高い並列I/Oスループットを発揮します。
3. 遅延割り当て(Delayed Allocation)とエクステント管理
ext4と同様に、XFSも遅延割り当て(Delayed Allocation / delalloc)とエクステント(Extents)構造を採用しています。データが実際にディスクに書き込まれる直前までブロック割り当てを遅らせることで、連続した大きな領域を効率よく確保し、ディスクの断片化(フラグメンテーション)を強力に防止します。
4. RHEL系ディストリビューションでの標準採用
RHEL 7以降、およびRocky Linux、AlmaLinux、Oracle Linuxなどの派生OSでは、デフォルトのファイルシステムとしてext4に代わりXFSが採用されています。エンタープライズのサーバー運用やストレージ構築では必須の知識となります。
XFSとext4の違い・比較|どちらを選ぶべきか?
Linuxの二大ファイルシステムであるXFSとext4には、得意とする用途や機能の違いが存在します。
| 比較項目 | XFS | ext4 |
|---|---|---|
| 主な設計用途 | 大規模サーバー・大容量ストレージ・高並列I/O | 汎用サーバー・デスクトップ・小〜中規模環境 |
| 並列処理性能 | アロケーショングループにより並列I/Oに非常に強い | 単一I/Oや小ファイルのランダム処理が得意 |
| オンライン容量拡張 | 可能(xfs_growfs) | 可能(resize2fs) |
| 容量の縮小(Shrink) | 不可(非対応) | 可能(アンマウント時に resize2fs) |
| 標準採用OS | RHEL 7/8/9, Rocky Linux, AlmaLinux | Ubuntu, Debian等 |
XFSを選択すべきケース
次のような用途・環境では、XFSの採用を強くおすすめします。
- 大容量ストレージ・巨大ファイルを扱う場合: データベースサーバー(MySQL, PostgreSQL)、動画・メディア配信サーバー、バックアップストレージなど。
- 高負荷・並列アクセスが発生するサーバー: マルチコアCPU環境で複数プロセスが同時にディスクへアクセスするWeb・DB・アプリケーションサーバー。
- RHEL系OSを使用する場合: OSインストール時の標準設定を活かし、トラブル対応や運用ナレッジを共通化したい環境。
ext4を選択すべきケース
一方で、将来的にパーティションやLV(論理ボリューム)の容量を小さく縮小させる可能性がある場合や、Ubuntu/Debian系OSで汎用的に利用したい場合は、縮小コマンドに対応しているext4が適しています。
※ext4の詳細な特徴や操作コマンドについては、関連記事「Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説」をご覧ください。
XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFS(エックスエフエス)は、大容量ストレージや高速な並列I/O処理に特化した高機能な64ビット・ジャーナリングファイルシステムです。Red Hat Enterprise Linux(RHEL)7以降やその派生OS(Rocky Linux、AlmaLinux、CentOS等)において標準ファイルシステムとして長年採用されており、エンタープライズサーバー運用において非常に重要な技術です。
新しいストレージの追加時やクラウドサーバーのディスク拡張時、ファイルシステムの選定において「ext4とXFSのどちらを選ぶべきか」「mkfs.xfs や xfs_growfs の正しい使い方は?」と疑問を持つ方も多いでしょう。
本記事では、XFSの基本概念や特徴、ext4との違いから、mkfs.xfs によるフォーマット作成、xfs_info でのメタデータ確認、xfs_growfs によるオンライン容量拡張、xfs_repair によるファイルシステム修復手順、そして「XFSは容量の縮小ができない」といった運用上の重大な注意点まで徹底解説します。
XFSとは|Linux高機能ファイルシステムの基本と特徴
XFSは、もともとSilicon Graphics(SGI)社がIRIX OS向けに開発し、2001年にLinuxカーネルへ移植された歴史あるファイルシステムです。大容量化と高速並列処理を前提にゼロから設計されています。
1. 64ビット大容量ストレージ対応(最大8EB / 1024TiB超)
XFSは完全な64ビットファイルシステムであり、理論上は最大8EB(エクサバイト = 約800万TB)のボリューム容量および単一ファイルサイズをサポートします。現実のLinuxカーネル実装においても1024TiB(1PB)以上の超大容量ストレージ領域を安定して管理できます。
2. アロケーショングループ(Allocation Groups)による高い並列I/O性能
XFSの性能面での最大の特徴がアロケーショングループ(Allocation Groups: AG)です。ファイルシステム全体を複数のAGと呼ばれる独立した領域に分割して管理します。各AGは自身のフリースペース管理表やInodeアロケーション表を持つため、マルチコアCPUや複数ディスク環境において、複数のI/Oスレッドが同時に異なるAGへ並列書き込み・読み込みを行っても競合(ロック待ち)が発生しにくく、極めて高い並列I/Oスループットを発揮します。
3. 遅延割り当て(Delayed Allocation)とエクステント管理
ext4と同様に、XFSも遅延割り当て(Delayed Allocation / delalloc)とエクステント(Extents)構造を採用しています。データが実際にディスクに書き込まれる直前までブロック割り当てを遅らせることで、連続した大きな領域を効率よく確保し、ディスクの断片化(フラグメンテーション)を強力に防止します。
4. RHEL系ディストリビューションでの標準採用
RHEL 7以降、およびRocky Linux、AlmaLinux、Oracle Linuxなどの派生OSでは、デフォルトのファイルシステムとしてext4に代わりXFSが採用されています。エンタープライズのサーバー運用やストレージ構築では必須の知識となります。
XFSとext4の違い・比較|どちらを選ぶべきか?
Linuxの二大ファイルシステムであるXFSとext4には、得意とする用途や機能の違いが存在します。
| 比較項目 | XFS | ext4 |
|---|---|---|
| 主な設計用途 | 大規模サーバー・大容量ストレージ・高並列I/O | 汎用サーバー・デスクトップ・小〜中規模環境 |
| 並列処理性能 | アロケーショングループにより並列I/Oに非常に強い | 単一I/Oや小ファイルのランダム処理が得意 |
| オンライン容量拡張 | 可能(xfs_growfs) | 可能(resize2fs) |
| 容量の縮小(Shrink) | 不可(非対応) | 可能(アンマウント時に resize2fs) |
| 標準採用OS | RHEL 7/8/9, Rocky Linux, AlmaLinux | Ubuntu, Debian等 |
XFSを選択すべきケース
次のような用途・環境では、XFSの採用を強くおすすめします。
- 大容量ストレージ・巨大ファイルを扱う場合: データベースサーバー(MySQL, PostgreSQL)、動画・メディア配信サーバー、バックアップストレージなど。
- 高負荷・並列アクセスが発生するサーバー: マルチコアCPU環境で複数プロセスが同時にディスクへアクセスするWeb・DB・アプリケーションサーバー。
- RHEL系OSを使用する場合: OSインストール時の標準設定を活かし、トラブル対応や運用ナレッジを共通化したい環境。
ext4を選択すべきケース
一方で、将来的にパーティションやLV(論理ボリューム)の容量を小さく縮小させる可能性がある場合や、Ubuntu/Debian系OSで汎用的に利用したい場合は、縮小コマンドに対応しているext4が適しています。
※ext4の詳細な特徴や操作コマンドについては、関連記事「Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説」をご覧ください。
XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFS(エックスエフエス)は、大容量ストレージや高速な並列I/O処理に特化した高機能な64ビット・ジャーナリングファイルシステムです。Red Hat Enterprise Linux(RHEL)7以降やその派生OS(Rocky Linux、AlmaLinux、CentOS等)において標準ファイルシステムとして長年採用されており、エンタープライズサーバー運用において非常に重要な技術です。
新しいストレージの追加時やクラウドサーバーのディスク拡張時、ファイルシステムの選定において「ext4とXFSのどちらを選ぶべきか」「mkfs.xfs や xfs_growfs の正しい使い方は?」と疑問を持つ方も多いでしょう。
本記事では、XFSの基本概念や特徴、ext4との違いから、mkfs.xfs によるフォーマット作成、xfs_info でのメタデータ確認、xfs_growfs によるオンライン容量拡張、xfs_repair によるファイルシステム修復手順、そして「XFSは容量の縮小ができない」といった運用上の重大な注意点まで徹底解説します。
XFSとは|Linux高機能ファイルシステムの基本と特徴
XFSは、もともとSilicon Graphics(SGI)社がIRIX OS向けに開発し、2001年にLinuxカーネルへ移植された歴史あるファイルシステムです。大容量化と高速並列処理を前提にゼロから設計されています。
1. 64ビット大容量ストレージ対応(最大8EB / 1024TiB超)
XFSは完全な64ビットファイルシステムであり、理論上は最大8EB(エクサバイト = 約800万TB)のボリューム容量および単一ファイルサイズをサポートします。現実のLinuxカーネル実装においても1024TiB(1PB)以上の超大容量ストレージ領域を安定して管理できます。
2. アロケーショングループ(Allocation Groups)による高い並列I/O性能
XFSの性能面での最大の特徴がアロケーショングループ(Allocation Groups: AG)です。ファイルシステム全体を複数のAGと呼ばれる独立した領域に分割して管理します。各AGは自身のフリースペース管理表やInodeアロケーション表を持つため、マルチコアCPUや複数ディスク環境において、複数のI/Oスレッドが同時に異なるAGへ並列書き込み・読み込みを行っても競合(ロック待ち)が発生しにくく、極めて高い並列I/Oスループットを発揮します。
3. 遅延割り当て(Delayed Allocation)とエクステント管理
ext4と同様に、XFSも遅延割り当て(Delayed Allocation / delalloc)とエクステント(Extents)構造を採用しています。データが実際にディスクに書き込まれる直前までブロック割り当てを遅らせることで、連続した大きな領域を効率よく確保し、ディスクの断片化(フラグメンテーション)を強力に防止します。
4. RHEL系ディストリビューションでの標準採用
RHEL 7以降、およびRocky Linux、AlmaLinux、Oracle Linuxなどの派生OSでは、デフォルトのファイルシステムとしてext4に代わりXFSが採用されています。エンタープライズのサーバー運用やストレージ構築では必須の知識となります。
XFSとext4の違い・比較|どちらを選ぶべきか?
Linuxの二大ファイルシステムであるXFSとext4には、得意とする用途や機能の違いが存在します。
| 比較項目 | XFS | ext4 |
|---|---|---|
| 主な設計用途 | 大規模サーバー・大容量ストレージ・高並列I/O | 汎用サーバー・デスクトップ・小〜中規模環境 |
| 並列処理性能 | アロケーショングループにより並列I/Oに非常に強い | 単一I/Oや小ファイルのランダム処理が得意 |
| オンライン容量拡張 | 可能(xfs_growfs) | 可能(resize2fs) |
| 容量の縮小(Shrink) | 不可(非対応) | 可能(アンマウント時に resize2fs) |
| 標準採用OS | RHEL 7/8/9, Rocky Linux, AlmaLinux | Ubuntu, Debian等 |
XFSを選択すべきケース
次のような用途・環境では、XFSの採用を強くおすすめします。
- 大容量ストレージ・巨大ファイルを扱う場合: データベースサーバー(MySQL, PostgreSQL)、動画・メディア配信サーバー、バックアップストレージなど。
- 高負荷・並列アクセスが発生するサーバー: マルチコアCPU環境で複数プロセスが同時にディスクへアクセスするWeb・DB・アプリケーションサーバー。
- RHEL系OSを使用する場合: OSインストール時の標準設定を活かし、トラブル対応や運用ナレッジを共通化したい環境。
ext4を選択すべきケース
一方で、将来的にパーティションやLV(論理ボリューム)の容量を小さく縮小させる可能性がある場合や、Ubuntu/Debian系OSで汎用的に利用したい場合は、縮小コマンドに対応しているext4が適しています。
※ext4の詳細な特徴や操作コマンドについては、関連記事「Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説」をご覧ください。
XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:
- Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説
- Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説
- Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説
- df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例
XFS(エックスエフエス)は、大容量ストレージや高速な並列I/O処理に特化した高機能な64ビット・ジャーナリングファイルシステムです。Red Hat Enterprise Linux(RHEL)7以降やその派生OS(Rocky Linux、AlmaLinux、CentOS等)において標準ファイルシステムとして長年採用されており、エンタープライズサーバー運用において非常に重要な技術です。
新しいストレージの追加時やクラウドサーバーのディスク拡張時、ファイルシステムの選定において「ext4とXFSのどちらを選ぶべきか」「mkfs.xfs や xfs_growfs の正しい使い方は?」と疑問を持つ方も多いでしょう。
本記事では、XFSの基本概念や特徴、ext4との違いから、mkfs.xfs によるフォーマット作成、xfs_info でのメタデータ確認、xfs_growfs によるオンライン容量拡張、xfs_repair によるファイルシステム修復手順、そして「XFSは容量の縮小ができない」といった運用上の重大な注意点まで徹底解説します。
XFSとは|Linux高機能ファイルシステムの基本と特徴
XFSは、もともとSilicon Graphics(SGI)社がIRIX OS向けに開発し、2001年にLinuxカーネルへ移植された歴史あるファイルシステムです。大容量化と高速並列処理を前提にゼロから設計されています。
1. 64ビット大容量ストレージ対応(最大8EB / 1024TiB超)
XFSは完全な64ビットファイルシステムであり、理論上は最大8EB(エクサバイト = 約800万TB)のボリューム容量および単一ファイルサイズをサポートします。現実のLinuxカーネル実装においても1024TiB(1PB)以上の超大容量ストレージ領域を安定して管理できます。
2. アロケーショングループ(Allocation Groups)による高い並列I/O性能
XFSの性能面での最大の特徴がアロケーショングループ(Allocation Groups: AG)です。ファイルシステム全体を複数のAGと呼ばれる独立した領域に分割して管理します。各AGは自身のフリースペース管理表やInodeアロケーション表を持つため、マルチコアCPUや複数ディスク環境において、複数のI/Oスレッドが同時に異なるAGへ並列書き込み・読み込みを行っても競合(ロック待ち)が発生しにくく、極めて高い並列I/Oスループットを発揮します。
3. 遅延割り当て(Delayed Allocation)とエクステント管理
ext4と同様に、XFSも遅延割り当て(Delayed Allocation / delalloc)とエクステント(Extents)構造を採用しています。データが実際にディスクに書き込まれる直前までブロック割り当てを遅らせることで、連続した大きな領域を効率よく確保し、ディスクの断片化(フラグメンテーション)を強力に防止します。
4. RHEL系ディストリビューションでの標準採用
RHEL 7以降、およびRocky Linux、AlmaLinux、Oracle Linuxなどの派生OSでは、デフォルトのファイルシステムとしてext4に代わりXFSが採用されています。エンタープライズのサーバー運用やストレージ構築では必須の知識となります。
XFSとext4の違い・比較|どちらを選ぶべきか?
Linuxの二大ファイルシステムであるXFSとext4には、得意とする用途や機能の違いが存在します。
| 比較項目 | XFS | ext4 |
|---|---|---|
| 主な設計用途 | 大規模サーバー・大容量ストレージ・高並列I/O | 汎用サーバー・デスクトップ・小〜中規模環境 |
| 並列処理性能 | アロケーショングループにより並列I/Oに非常に強い | 単一I/Oや小ファイルのランダム処理が得意 |
| オンライン容量拡張 | 可能(xfs_growfs) | 可能(resize2fs) |
| 容量の縮小(Shrink) | 不可(非対応) | 可能(アンマウント時に resize2fs) |
| 標準採用OS | RHEL 7/8/9, Rocky Linux, AlmaLinux | Ubuntu, Debian等 |
XFSを選択すべきケース
次のような用途・環境では、XFSの採用を強くおすすめします。
- 大容量ストレージ・巨大ファイルを扱う場合: データベースサーバー(MySQL, PostgreSQL)、動画・メディア配信サーバー、バックアップストレージなど。
- 高負荷・並列アクセスが発生するサーバー: マルチコアCPU環境で複数プロセスが同時にディスクへアクセスするWeb・DB・アプリケーションサーバー。
- RHEL系OSを使用する場合: OSインストール時の標準設定を活かし、トラブル対応や運用ナレッジを共通化したい環境。
ext4を選択すべきケース
一方で、将来的にパーティションやLV(論理ボリューム)の容量を小さく縮小させる可能性がある場合や、Ubuntu/Debian系OSで汎用的に利用したい場合は、縮小コマンドに対応しているext4が適しています。
※ext4の詳細な特徴や操作コマンドについては、関連記事「Linux ext4とは?特徴・他ファイルシステム比較・作成(mkfs.ext4)から運用コマンドまで解説」をご覧ください。
XFSファイルシステムの作成とフォーマット手順|mkfs.xfs
ディスクやパーティションをXFS形式でフォーマットするには、mkfs.xfs コマンドを使用します。
注意: フォーマットを実行すると、対象パーティション内の既存データはすべて消去されます。作業前に必ず
lsblk等でデバイス名に誤りがないか確認してください。
手順1: 対象ディスク・パーティションの確認
まず lsblk -f コマンドを実行し、フォーマット対象のデバイス名(例: /dev/sdb1)を確認します。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINTS
sda
├─sda1 ext4 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d /
sdb
└─sdb1
手順2: mkfs.xfs コマンドでフォーマット
対象パーティション(/dev/sdb1)をXFSでフォーマットします。
sudo mkfs.xfs /dev/sdb1
実行すると、以下のようなXFSメタデータ構造が出力されます。
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
すでにファイルシステムが書き込まれているディスクを再フォーマットする場合は、強制実行オプション -f を追加します。また、ボリュームラベルを付ける場合は -L オプションを使用します。
# ラベル「data_vol」を指定して強制フォーマット
sudo mkfs.xfs -f -L data_vol /dev/sdb1
フォーマット時の最小サイズ制限(約300MB以上)
モダンなLinuxディストリビューション(xfsprogs 5.x/6.x以降)では、アロケーショングループや内部ログ領域の確保のため、XFSファイルシステムを作成するには最低約300MB以上の領域が必要です。300MB未満の小さなパーティションに対して mkfs.xfs を実行すると Filesystem must be larger than 300MB. というエラーになりますので注意してください。
XFSのマウントと自動マウント設定|mount / /etc/fstab
作成したXFSファイルシステムをディレクトリに接続(マウント)して利用できるようにします。
手動マウント手順
マウント用ディレクトリ(例: /mnt/data)を作成し、mount コマンドでマウントします。
sudo mkdir -p /mnt/data
sudo mount -t xfs /dev/sdb1 /mnt/data
詳細なマウントオプションやオプション一覧については、関連記事「Linux mount コマンドの使い方|構文・オプション一覧・実行例を解説」を参照してください。
/etc/fstab による自動マウント設定
OS再起動後も自動でマウントさせるには、blkid コマンドでUUIDを確認し、/etc/fstab ファイルへ設定を追記します。
sudo blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d" TYPE="xfs" PARTUUID="..."
/etc/fstab に以下の形式で1行追加します。
UUID=a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d /mnt/data xfs defaults 0 0
※記述ミスのまま再起動するとOSが起動しなくなる恐れがあるため、追記後は必ず sudo mount -a を実行してエラーが出ないかテストしてください。具体的な安全編集手順は「Linux fstabの書き方|UUIDでの自動マウント設定と安全な編集手順を解説」で解説しています。
XFSの確認・運用・保守コマンド4選
XFSファイルシステムを安全かつ円滑に運用するために必須となる代表的なコマンドを4つ紹介します。
1. xfs_info:ファイルシステムの詳細・構造情報を確認
マウント中のXFSファイルシステムのメタデータ構造(ブロックサイズ、アロケーショングループ数など)を確認するには xfs_info コマンドを使用します。
xfs_info /mnt/data
引数にはデバイス名(例: /dev/sdb1)またはマウントポイント(例: /mnt/data)を指定できます。現在のブロック数や agcount(アロケーショングループ数)を確認したい際に便利です。
2. xfs_growfs:オンラインでの容量拡張手順
クラウドやLVM環境で下位のディスク/パーティションサイズを拡張した場合、マウントしたままオンラインでXFSファイルシステムを拡大するには xfs_growfs コマンドを使用します。
重要ポイント: ext4の
resize2fs /dev/sdb1とは異なり、xfs_growfsの引数にはマウントポイント(例: /mnt/data)を指定します。デバイス名を指定するとエラーになる場合があるため注意してください。
# 対象のマウントポイントを指定してオンライン拡張を実行
sudo xfs_growfs /mnt/data
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=1
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
末尾に data blocks changed from ... to ... と表示されれば容量の拡大は正常に完了です。
3. xfs_repair:ファイルシステムのチェックと修復
不正シャットダウンなどでファイルシステムに異常が生じた際、整合性のチェックと修復を行うには xfs_repair コマンドを実行します(ext4での e2fsck / fsck.ext4 に相当します)。
最重要警告:
xfs_repairは必ずアンマウント(umount)した状態で実行してください。マウント中の領域に対して実行するとデータを重大に破損させる危険があります。
# 1. 必ずアンマウントする
sudo umount /mnt/data
# 2. xfs_repair を実行
sudo xfs_repair /dev/sdb1
※万が一、クラッシュ直後でログ(ジャーナル)のクリーンアップに失敗して修復が進まない場合は、最終手段として -L オプション(ログの破棄・ゼロ消去)を指定することがありますが、未書き込みのログデータが失われる可能性があるため注意が必要です。
4. xfs_fsr:オンラインデフラグ(再編成)
xfs_fsr(FileSystem Reorganizer)は、マウント中のXFSファイルシステムのフラグメンテーション(断片化)をオンラインで解消・再編成するツールです。
# 指定したマウント領域のデフラグを実行
sudo xfs_fsr /mnt/data
XFS運用の注意点とトラブルシューティング
XFSを実務で運用する際に必ず押さえておくべきトラブル予防策を整理します。
1. 【最重要】XFSはファイルシステムの縮小(Shrink)が非対応
XFSの設計上、一度拡張・作成したファイルシステムのサイズを小さく減らす(縮小する)機能は提供されていません。LVM(Logical Volume Manager)などで「間違えて論理ボリュームを大きくしすぎたので縮小したい」という場合でも、XFS領域だけを縮小することはできません。
どうしても縮小が必要な場合の対処手順:
- 対象領域のデータを外部ディスクやバックアップストレージへ退避(
tarやrsync)する。 - パーティションまたはLVM論理ボリュームを削除し、希望の小さいサイズで再作成する。
mkfs.xfsで再度XFSファイルシステムを作成する。- 退避したデータをリストア(復元)する。
2. xfs_growfs を実行しても空き容量が増えない場合の原因
xfs_growfs を実行したのに容量が増えない場合、ファイルシステムより下位の階層(LVMのLVサイズや、ディスクパーティション自体のサイズ)が拡張されていないケースがほとんどです。
LVM環境であれば、事前に lvextend -l +100%FREE /dev/mapper/vg0-lv0 等で論理ボリュームを拡張してから xfs_growfs を実行しているか確認してください。
3. 空き容量(GB)はあるのにファイルが作成できない(Inode管理)
大量の極小ファイルを生成する環境では、ディスクのGB容量が残っていてもインデックス(Inode)が枯渇することがあります。df -i コマンドでInode使用率を確認してください。
※容量およびInode確認のコマンド詳細は「df コマンドの使い方|ディスク容量・空き容量を確認するオプションと実行例」でわかりやすく解説しています。
よくある質問(FAQ)
ext4からXFSへそのままオンラインで変換(コンバート)することは可能ですか?
いいえ、ext4からXFSへの直接変換(インプレースコンバート)はできません。異なるファイルシステム構造を持つため、データを別の場所へバックアップしたうえで、対象ディスクを mkfs.xfs でフォーマットし直してからデータを書き戻す必要があります。
xfs_growfs と resize2fs の違いは何ですか?
xfs_growfs はXFS専用の容量拡張コマンドで、対象にはマウントポイントを指定します。一方、resize2fs はext2/ext3/ext4専用のサイズ変更コマンドで、対象にはブロックデバイス名(例: /dev/sdb1)を指定します。また、resize2fs は縮小に対応していますが、xfs_growfs は拡張のみ対応しています。
UbuntuやDebianでXFSを使用することはできますか?
はい、問題なく使用できます。通常はパッケージマネージャーから sudo apt install xfsprogs を実行してXFS用の管理ツールキットをインストールすることで、mkfs.xfs や xfs_growfs などのコマンド群が利用可能になります。
XFSフォーマット時に「Filesystem must be larger than 300MB」と表示される原因は?
最新の xfsprogs では、メタデータ構造やジャーナルログ領域の最小サイズとして約300MB以上が要件となっています。テスト用の非常に小さなパーティション(例: 100MB)を作成しようとすると本エラーが発生するため、300MB以上の領域を割り当てて実行してください。
まとめ
XFSは、並列I/Oの高速処理と超大容量ストレージ管理に長けた、Linuxのエンタープライズ運用に欠かせないファイルシステムです。
- 大容量・並列I/Oが得意: アロケーショングループ(AG)によりマルチコア環境での並列アクセスが高速。
- RHEL系の標準: RHEL 7/8/9やRocky Linux/AlmaLinux等でデフォルト採用。
- 作成と拡張:
mkfs.xfsで作成し、xfs_growfs /マウントポイントでマウントしたまま安全にオンライン拡張可能。 - 縮小は不可: ファイルシステムの縮小機能は非対応のため、容量設定時は将来の縮小計画に注意。
サーバー構築やストレージ管理の現場では、用途に応じてext4とXFSを適切に使い分けることが重要です。ぜひ本記事を参考に、正しい作成・運用コマンドをマスターしてください。
関連おすすめ記事:

コメント