LinuxのXFSとは?高性能ファイルシステムの基礎知識とストレージ管理の基本を徹底解説!
生徒
「Linuxの勉強を始めたのですが、インストールするときにXFS(エックスエフエス)という言葉が出てきました。これって何のことですか?」
先生
「それはファイルシステムの一種ですね。データをハードディスクやSSDに整理整頓して保存するためのルールのことですよ。」
生徒
「ファイルシステム...難しそうですね。Windowsのフォーマットみたいなものだと思えばいいんでしょうか?」
先生
「その通りです!特にXFSは、大規模なデータを扱うのが得意で、今のLinuxでは標準的に使われているとても優秀なシステムなんです。仕組みを知ると、ストレージ管理がもっと楽しくなりますよ。」
Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。
試して理解 Linuxのしくみを見る※ Amazonアソシエイト広告リンク
1. XFSファイルシステムとは?基本の概要
XFS(エックスエフエス)は、高性能なジャーナリングファイルシステムです。もともとはSGI(エスジーアイ)社という会社が、自社のUNIX(ユニックス)系OSであるIRIX(アイリックス)向けに開発したものでした。その後、2000年ごろにオープンソース化され、現在ではRed Hat Enterprise Linux(レッドハット・エンタープライズ・リナックス)などの主要なディストリビューションで標準のファイルシステムとして採用されています。
ファイルシステムとは、読み方はファイルシステム(ファイルシステム)といい、OSが記録媒体であるストレージ(HDDやSSD)の中に、どのような構造でデータを配置し、管理するかを決定する仕組みのことです。本棚に本を並べるときの「図書分類法」のようなものだとイメージすると分かりやすいでしょう。
XFSの最大の特徴は、非常に大きな容量のファイルや、大容量のストレージを効率よく扱える点にあります。数テラバイト、数ペタバイトといった膨大なデータを扱うサーバー環境において、その真価を発揮します。
2. XFSが選ばれる理由と主な特徴
なぜ多くのLinuxサーバーでXFSが使われているのでしょうか。それにはいくつかの明確な理由があります。
第一に、高いスケーラビリティ(拡張性)です。XFSは64ビットのデータ構造を採用しているため、理論上は16エクサバイト(1エクサバイトは100万テラバイト)という気が遠くなるような巨大な容量まで対応可能です。家庭用のパソコンでは過剰に思えるかもしれませんが、クラウドサービスや企業のデータベースではこの余裕が重要になります。
第二に、ジャーナリング機能による信頼性です。読み方はジャーナリング(ジャーナリング)といいます。これは、データを書き込む際に「これから書き込みますよ」という履歴(ログ)を先に記録する仕組みです。万が一、書き込み中に停電などでコンピュータが強制終了してしまっても、この履歴をたどることでデータの不整合を防ぎ、素早く復旧させることができます。
第三に、アロケーショングループという仕組みです。読み方はアロケーショングループ(アロケーショングループ)といいます。ストレージの領域をいくつかのグループに分割して管理することで、複数の書き込み処理を同時に並行して行うことができます。これにより、マルチコアCPU(シーピーユー)を搭載した現代のコンピュータで高いパフォーマンスを発揮します。
3. XFSとext4の違いを知ろう
Linuxでは、長らくext4(イーエックスティーフォー)というファイルシステムが主流でした。初心者の方は「どちらを使えばいいの?」と迷うかもしれません。一般的に、小規模なファイルがたくさんある場合はext4がキビキビと動く傾向にありますが、動画ファイルなどの大きなデータを扱う場合や、ストレージの総容量が非常に大きい場合はXFSが有利です。
また、XFSは動的にファイルシステムのサイズを拡張するのが得意ですが、逆にサイズを縮小することができないという注意点があります。一度大きくした領域を小さくするには、データのバックアップを取って再作成する必要があるため、ストレージ設計の段階で慎重に決める必要があります。
4. XFSファイルシステムを作成する方法
実際にLinuxで新しいディスクにXFSファイルシステムを作成する手順を見てみましょう。これにはmkfs.xfsコマンドを使用します。読み方は主記憶装置(シュキオクソウチ)へデータを書き込む準備をする作業をフォーマットと呼びますが、その際にこのコマンドを使います。
まずは、現在認識されているディスクの一覧を確認してみましょう。
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
sdb 8:16 0 10G 0 disk
ここでは、新しく追加した10GBのディスク/dev/sdbにXFSを作成してみます。この作業は管理者権限(rootユーザー)で行う必要があります。
mkfs.xfs /dev/sdb
meta-data=/dev/sdb isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
これで、/dev/sdbがXFS形式でフォーマットされました。
5. XFSをマウントして使用可能にする
ファイルシステムを作成しただけでは、まだファイルを書くことはできません。OSのディレクトリツリーの中に組み込む「マウント」という作業が必要です。読み方はマウント(マウント)といいます。
適当な名前のディレクトリ(マウントポイント)を作成して、そこに紐付けます。
mkdir /mnt/newdisk
mount /dev/sdb /mnt/newdisk
df -hT /mnt/newdisk
Filesystem Type Size Used Avail Use% Mounted on
/dev/sdb xfs 10G 33M 10G 1% /mnt/newdisk
dfコマンドの-Tオプションを使うことで、ファイルシステムのタイプが「xfs」であることを確認できます。これで、/mnt/newdiskの下に自由にファイルを保存できるようになりました。
6. XFSファイルシステムの情報を確認する
運用中、ファイルシステムの詳細なパラメータを知りたくなることがあります。例えば、ブロックサイズやアロケーショングループの数などです。これを確認するにはxfs_infoコマンドを使います。
xfs_info /mnt/newdisk
meta-data=/dev/sdb isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
この情報は、トラブルシューティングやパフォーマンスのチューニングを行う際に非常に重要です。特に、大きなファイルを大量に扱うサーバーでは、ブロックサイズの設定などが速度に直結することがあります。
7. XFSの修復とメンテナンス
もし、不適切なシャットダウンなどでファイルシステムにエラーが発生した場合は、修復を試みる必要があります。XFSにはxfs_repairという専用の修復ツールが用意されています。
修復作業を行う際は、必ずそのディスクをアンマウント(切り離し)した状態で行わなければなりません。マウントしたまま修復をかけると、データが完全に壊れてしまう危険があるため注意してください。
umount /mnt/newdisk
xfs_repair /dev/sdb
Phase 1 - find and verify superblock...
Phase 2 - using internal log
- zero log...
- scan filesystem freespace and inode maps...
- found root inode chunk
Phase 3 - for each AG...
... (中略) ...
Phase 7 - verify and correct link counts...
done
このように、各フェーズ(段階)を経てエラーをチェックし、修正してくれます。信頼性の高いツールですが、万が一に備えて日頃からバックアップを取っておくことは基本中の基本です。
8. ストレージ管理におけるXFSの未来
現在、Linuxの標準的なストレージ管理において、XFSは不動の地位を築いています。以前は「巨大なファイルの扱いは得意だが、小さいファイルは苦手」と言われていた時期もありましたが、開発が進んだ現在では、あらゆる用途でバランス良く高い性能を発揮できるようになりました。
最近では、コピーオンライト(書き込み時にコピーを作成する仕組み)を利用した高速なスナップショットや、重複排除といった高度な機能を持つ次世代ファイルシステム(Btrfsなど)も注目されています。しかし、安定性と実績、そして膨大なデータを確実に守るという点において、XFSはこれからも多くの現場で使われ続けるでしょう。
これからLinuxを学ぶ皆さんも、まずはこのXFSの扱いをマスターすることで、プロのサーバーエンジニアに近い知識を身につけることができます。コマンドを一つずつ叩きながら、ディスクの中の世界を覗いてみてください。
LPICレベル1の合格を目指している人や、 Linuxコマンド・シェル・ネットワーク・セキュリティの試験対策を効率よく進めたい人におすすめの定番問題集です。
Linux教科書 LPICレベル1 スピードマスター問題集を見る※ Amazonアソシエイト広告リンク
まとめ
今回の記事では、Linux環境における標準的なファイルシステムであるXFS(エックスエフエス)について、その基本概念から具体的な操作方法、そして運用のポイントまでを詳しく解説してきました。XFSは単なるデータの保存形式ではなく、現代のエンタープライズサーバーやクラウド基盤を支える非常に強力なテクノロジーです。
XFSファイルシステムの重要ポイント再確認
XFSを理解する上で欠かせない要素を、改めて整理しておきましょう。これらを把握しておくことで、実務でのトラブル対応やシステム設計の精度が格段に向上します。
- 圧倒的なスケーラビリティ: 64ビット設計により、将来的なデータ増大にも余裕を持って対応できる拡張性を備えています。
- 高い信頼性を担保するジャーナリング: データの整合性を保ち、システムクラッシュ後の復旧を迅速に行うためのログ機能を搭載しています。
- 並行処理に強いアロケーショングループ: ストレージを複数のグループに分けて管理することで、マルチプロセッサ環境での書き込み性能を最大化しています。
- 運用の注意点: 容量の拡張はオンラインで簡単に行えますが、容量の縮小(ダウンサイズ)ができないという特性は、ディスク設計において最も重要な制約事項です。
実務で役立つ!XFS容量拡張のサンプル手順
XFSの大きなメリットの一つである「オンラインでの容量拡張」について、具体的なコマンド例を紹介します。例えば、仮想サーバーのディスク容量を物理的に増やした後、OS側に反映させる場合は以下のような手順になります。
# 1. まずは現在のファイルシステムの状態を確認
df -hT /mnt/newdisk
# 2. パーティションが拡張されていることを前提に、XFSファイルシステムを拡張
# マウントしたまま実行可能です
xfs_growfs /mnt/newdisk
# 3. 拡張後の容量を確認
df -hT /mnt/newdisk
このように、xfs_growfsコマンドを使用することで、サービスを停止させることなく、即座に増設したストレージ領域を認識させることができます。これは、ダウンタイムを最小限に抑えたい商用サーバーの運用において、非常に大きな利点となります。
ファイルシステム選択のベストプラクティス
LinuxにはXFSの他にもext4やBtrfsといった選択肢がありますが、どのような基準で選ぶべきでしょうか。
| 項目 | XFS | ext4 | Btrfs |
|---|---|---|---|
| 主な用途 | 大規模サーバー、データベース | デスクトップ、小規模サーバー | バックアップ、スナップショット重視 |
| 最大容量 | 非常に大きい(16EB) | 大きい(1EB) | 大きい(16EB) |
| 縮小操作 | 不可能 | 可能 | 可能 |
| 特徴 | 並列処理と大容量に強い | 歴史が長く安定、汎用的 | 高度なコピーオンライト機能 |
現代のRed Hat Enterprise LinuxやCentOS Stream、AlmaLinuxなどでは、デフォルトでXFSが選択されています。これは、今のハードウェア性能を引き出すのにXFSが最も適していると判断されているからです。まずはXFSを基準に考え、特定の要件(どうしても縮小が必要など)がある場合にのみ、他のファイルシステムを検討するのが良いでしょう。
まとめとしての最終アドバイス
ストレージ管理は、インフラエンジニアにとって避けては通れない道です。XFSの構造を理解し、mkfs.xfs、mount、xfs_info、xfs_repairといった主要なコマンドを使いこなせるようになることで、Linuxシステムの安定稼働を支える力が身につきます。
技術は日々進化していますが、XFSのような実績のある技術を深く学ぶことは、将来新しい技術に触れる際の強固な土台となるはずです。
生徒
「先生、XFSについて詳しく教えていただきありがとうございました!大きなデータを扱うのが得意で、しかもマウントしたまま容量を増やせるなんて、すごく便利ですね。」
先生
「その通りです。今のクラウド時代には、動的にストレージを増やせるXFSの特性がとてもマッチしているんですよ。実際にxfs_growfsコマンドを使ってみると、その手軽さに驚くと思います。」
生徒
「はい!でも、一つだけ気をつけないといけないのが『小さくできない』ことでしたよね。最初から計画的にサイズを決めないと後で大変なことになりそうです。」
先生
「よく覚えていますね!そこが一番の注意点です。なので、最初は必要最小限のサイズで作っておいて、足りなくなったら継ぎ足していくのが、XFS運用のコツなんです。腹八分目から始めるイメージですね。」
生徒
「なるほど、継ぎ足し秘伝のタレみたいですね(笑)。あと、壊れたときのxfs_repairも練習しておきたいです。アンマウントしてから実行する、というのも絶対に忘れないようにします!」
先生
「いい心がけです。万が一のときに冷静に対処できるのが、優れたエンジニアの証ですからね。他にも、ファイルシステム内部の構造を見るxfs_dbというデバッグツールなど、もっと深い世界もあります。基本をマスターしたら、ぜひ挑戦してみてください。」
生徒
「はい、頑張ります!まずは自分のテスト環境で、ディスクを増やしたり壊したりしながら、コマンドの感触を確かめてみます。Linuxの管理がどんどん楽しくなってきました!」
先生
「その調子です!自分で手を動かして得た知識は一生モノですよ。XFSをマスターすれば、サーバー構築の現場でも自信を持って作業できるようになりますから、これからも一緒に楽しく学んでいきましょう。」