XFSマスター:Linuxの強力なファイルシステムのサイズ変更、バックアップ、チューニング

Linux tutorial - IT technology blog
Linux tutorial - IT technology blog

コンテキストと、なぜXFSが拡張性の高いストレージに最適なのか

Linuxサーバーの管理を始めた当初、Ext4は誰もが認める王者でした。しかし、ワークロードが数テラバイトのデータセットや高並列環境へと移行するにつれ、私はXFSへと切り替えました。もともとSilicon GraphicsがIRIX向けに開発したXFSは、現在ではRHEL、CentOS、AlmaLinuxの標準となっています。巨大なファイルや高度に並列化されたI/Oの処理に優れており、データベースサーバーや4Kメディアストレージにとって非常に強力な味方となります。

2023年から15台以上の本番環境VPSインスタンスを管理してきて、一つの厳しい現実を学びました。それは、ファイルシステムの操作は非常にリスクが高いということです。たった一つのタイプミスが、何時間もの復旧作業を引き起こす可能性があります。XFSは堅牢なオンライン管理ツールによってこのリスクを軽減します。パーティションをマウントしたままトラフィックを処理しながら、重要なメンテナンスを実行できるのです。これは稼働率100%を目指す上で、まさに命綱となります。

本題に入る前に一つ注意点があります。XFSは「成長」のために作られており、「ダイエット」のためには作られていません。XFSパーティションは数秒で拡張できますが、縮小することはできません。将来的にパーティションサイズを縮小する必要があるインフラ計画の場合は、Ext4を使い続けるか、LVMを非常に保守的な割り当て戦略で使用することをお勧めします。

XFSユーティリティのインストール

最新のディストリビューションのほとんどには基本的なXFSサポートが含まれていますが、xfs_dumpのような専門的なツールは欠けていることが多いです。私は通常、すぐにxfsprogsのバージョンを確認します。新しいバージョン(5.x以降)には、NVMeドライブや高速SSD向けの重要な最適化が含まれています。

RHEL系システム(CentOS、Fedora、AlmaLinux、Rocky Linux)の場合:

sudo dnf install xfsprogs xfsdump

Debian系システム(Ubuntu、Debian)の場合:

sudo apt update && sudo apt install xfsprogs xfsdump

これらをインストールすれば、完全なツールキットが手に入ります。午前3時にディスク容量が99%に達したとき、これらの準備ができていることで慌てて探す手間が省けることを実感してきました。

設定および管理ツール

XFSの管理はmkfsだけではありません。データを識別し、リサイズし、保護する必要があります。ここでは、私の日常のワークフローにおける3つの柱を紹介します。

1. xfs_adminによるカスタマイズ

予測可能な識別は不可欠です。/dev/sdb1のようなデバイス名に頼るのは、ハードウェアを交換した際に名前が変わる可能性があるため、トラブルの元です。私は常に永続的なラベルまたはUUIDを使用します。xfs_adminツールを使用すると、データを消去することなくこれらを調整できます。

追跡しやすくするために、アンマウントされたパーティションにラベルを付けるには:

# まずターゲットをアンマウントする
sudo umount /mnt/data

# 明確なラベルを割り当てる
sudo xfs_admin -L "PROD_BACKUPS" /dev/sdb1

UUIDを更新することもできます。これはddを使用してドライブを複製し、同じOS上で競合を解決する必要がある場合に便利です:

sudo xfs_admin -u $(uuidgen) /dev/sdb1

xfs_adminは扱いに注意が必要です。通常、ファイルシステムがオフラインである必要があります。ライブマウント状態でこれを試みると、単に「device busy」エラーが返されます。

2. xfs_growfsによる即時拡張

これは私が最もよく使うコマンドです。ログが急増し、ディスク使用率が98%になっている場面を想像してください。クラウドでは仮想ボリュームをワンクリックで拡張できますが、OSは自動的にそのスペースを認識しません。XFSは、再起動やアンマウントを必要とせずに、これを鮮やかに処理します。

# まず、基盤となるパーティションまたはLVMボリュームを拡張する
# 次に、マウントポイントを使用してXFSファイルシステムを拡張する
sudo xfs_growfs /mnt/data

Ext4のresize2fsとは異なり、xfs_growfsはデバイスパスではなくマウントポイントをターゲットにします。これは初心者がよくつまづくポイントです。実行直後にdf -hを確認すれば、新しい容量が即座に反映されているのがわかります。

3. xfs_dumpによる高速バックアップ

rsyncは個々のファイルには適していますが、xfs_dumpはiノードレベルで動作します。ディスク構造を直接読み取るため、大容量ボリュームでは通常2倍速くなります。ファイル属性、拡張メタデータ、クォータ制限など、すべてをキャプチャします。

フルバックアップ(レベル0)を実行するには:

sudo xfs_dump -l 0 -f /backup/db_full.dump -L "Backup_2026_05_04" -M "Primary_Storage" /mnt/data

フラグは単純明快です:

  • -l 0: フルバックアップを実行します(1-9は増分バックアップ用)。
  • -f: 保存先ファイルを定義します。
  • -L および -M: バックアップログ用の内部ラベルです。

そのデータを戻すには、対になるrestoreコマンドを使用します:

sudo xfs_restore -f /backup/db_full.dump /mnt/restore_point

検証とヘルスチェック

事前の監視は緊急事態を防ぎます。XFSには、内部を覗くための組み込みツールが含まれています。

xfs_infoによるジオメトリの確認

ブロックサイズやアロケーショングループの数(agcount)を確認する必要がある場合は、xfs_infoが最適です。私はこれを使用して、パフォーマンスが基盤となるハードウェアに合わせて最適化されているかを確認します。

xfs_info /mnt/data

複数のアロケーショングループは、XFSの速度の秘密です。これにより、異なるプロセスがディスクの別々の部分に同時に書き込むことができ、古いファイルシステムで一般的だったロックのボトルネックを事実上排除できます。

断片化の管理

XFSは断片化の回避に優れていますが、数ヶ月間容量100%に近い状態だったディスクでは依然として発生する可能性があります。XFSデバッガーでステータスを確認してください:

sudo xfs_db -c frag -r /dev/sdb1

-rフラグにより、チェックは読み取り専用になり、稼働中のシステムでも安全です。15〜20%以上の断片化が見られる場合は、バックグラウンドでファイルを再配置するためにxfs_fsrの実行を検討してください。

緊急用ツール:xfs_repair

停電によってジャーナルが破損した場合、xfs_repairが最後の砦となります。汎用的なfsckラッパーよりも大幅に高速で徹底的です。

# 警告:マウントされたドライブに対して絶対に実行しないでください!
sudo umount /mnt/data
sudo xfs_repair /dev/sdb1

通常、XFSジャーナルはマウント中に自動的に再生され、軽微な不具合は自動的に修正されます。3年間の激しい使用の中で、xfs_repairが必要になったのは2回だけです。驚くほど弾力性があります。ただ、黄金律を忘れないでください。XFSは成長し、バックアップは速いですが、決して縮小しません。

Share: