fsck.xfsとは?XFSファイルシステムの修復ツールを初心者向けに徹底解説!
生徒
「Linux(リナックス)を使っていたら、急にシステムが正常に起動しなくなってしまいました。画面に『fsck(エフエスシーケー)』が必要だというメッセージが出ているのですが、これって何ですか?」
先生
「それは大変でしたね。fsck.xfs(エフエスシーケー・ドット・エックスエフエス)は、XFS(エックスエフエス)という形式で保存されているファイルシステムの整合性をチェックして、エラーがないかを確認するためのツールですよ。」
生徒
「ファイルシステム?なんだか難しそうですね。初心者の私でも、壊れたデータを直したりできるんでしょうか?」
先生
「大丈夫です。XFSは非常に頑丈な仕組みを持っていて、実はほとんどの場合、自動で修復されるようになっているんです。今回は、fsck.xfsの役割や、トラブル時の対処法を分かりやすく解説しますね。」
Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。
試して理解 Linuxのしくみを見る※ Amazonアソシエイト広告リンク
1. fsck.xfsの基礎知識と役割を学ぼう
Linux(リナックス)において、データが保存されている場所を管理する仕組みをファイルシステムと呼びます。その中でも、大規模なデータ処理に強く、信頼性が高いのがXFS(エックスエフエス)というファイルシステムです。
fsck.xfs(読み方:エフエスシーケー・ドット・エックスエフエス)の正式名称は「File System Check for XFS」です。このツールの役割は、XFS形式のディスクに異常がないかをチェックすることですが、実は他のファイルシステム用ツールとは少し異なる特徴を持っています。
通常、ファイルシステムに不整合(データの矛盾)が起きた場合、私たちは「修復」という作業を想像します。しかし、XFSは非常に賢い仕組みを採用しており、OSが起動する際に自分自身で自動的にデータの整合性を整える機能(ジャーナリング機能)が備わっています。そのため、fsck.xfsコマンド自体は、実質的に「何もしない」という動作をすることが多いのです。
2. XFSファイルシステムの特徴と歴史
XFS(エックスエフエス)は、もともとシリコングラフィックス社(SGI)という会社が、自社のワークステーション向けに開発した非常に高機能なファイルシステムです。読み方はそのまま「エックスエフエス」です。
昔のLinuxでは、EXT4(イーエックスティーフォー)というファイルシステムが主流でしたが、現代の主要なLinuxディストリビューション(Red Hat Enterprise LinuxやCentOSなど)では、標準のファイルシステムとしてXFSが採用されています。その理由は、大容量のストレージや巨大なファイルを扱うのが得意で、さらに並列処理(複数の処理を同時に行うこと)に優れているからです。
ファイルシステムには、ジャーナリング(読み方:ジャーナリング)という機能があります。これは、データの書き込み中に急に電源が切れても、直前の作業ログを元にデータを安全に復旧させる仕組みです。この強力なログ機能があるおかげで、fsck.xfsをわざわざ手動で実行して長時間待たされる必要がほとんどなくなったのです。
3. fsck.xfsコマンドの実際の使い方
通常、fsck.xfsはシステムによって自動的に呼び出されますが、手動で確認することも可能です。ただし、前述の通り、このコマンドを実行しても「XFSファイルシステムでは、起動時に自動でログが適用されるため、手動のチェックは不要です」といった内容のメッセージが表示されるだけで、ディスクの内部構造を書き換えることはしません。
まずは、現在のディスクの状態を確認するために、どのデバイスがどのファイルシステムを使っているかを確認してみましょう。一般ユーザーでも実行できるコマンドを使って確認します。
df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda1 xfs 20971520 4194304 16777216 20% /
tmpfs tmpfs 491520 0 491520 0% /dev/shm
上記の実行結果で「Type」の列に「xfs」と表示されていれば、そのディスクはXFSで動いています。次に、実際にfsck.xfsを実行してみるとどうなるか見てみましょう。
fsck.xfs /dev/sda1
If you wish to check the consistency of an XFS filesystem,
install xfsprogs and use xfs_repair.
このように、「もしチェックしたいならxfs_repairを使ってください」とアドバイスが表示されます。これがfsck.xfsの標準的な挙動です。初心者の方は「壊れているから動かないんだ!」と焦る必要はありません。
4. 本当に修復が必要な時はxfs_repairを使おう
ディスクに物理的なエラーが発生したり、ファイルシステムの構造が著しく破損してOSが起動しなくなったりした場合には、xfs_repair(読み方:エックスエフエス・リペア)という強力なツールを使用します。
xfs_repairは、名前の通りXFSを「修理」するための本番用コマンドです。このコマンドを使う際は、非常に重要な注意点があります。それは、マウント(接続)されているディスクに対して実行してはいけないということです。必ずアンマウント(切り離し)した状態か、レスキューモードなどで実行します。
ここでは、システム管理権限(ルート)で、特定のパーティションをチェック・修復する例を見てみましょう。まずは状態を確認するためのオプション(-n)を付けて実行するのが安全です。
xfs_repair -n /dev/sdb1
Phase 1 - find and verify superblock...
Phase 2 - using internal log
- scan filesystem freespace and inode maps...
Phase 3 - for each AG...
- scan and clear configial inode maps...
Phase 4 - check for duplicate blocks...
Phase 5 - rebuild AG headers and trees...
Phase 6 - check inode connectivity...
Phase 7 - verify link counts...
No modify flag set, skipping phase 5 and 7
Done.
この「-n」オプションは「実際に修復はせず、エラーがあるか調べるだけ」というモードです。本番環境でいきなり修正を加えるのが怖いときは、まずこの方法を試すのが鉄則です。
5. ジャーナリングログと自動復旧の仕組み
なぜXFSは、わざわざfsck(ファイルシステムチェック)を行わなくても安全なのでしょうか。その秘密は、メタデータ・ジャーナリング(読み方:メタデータ・ジャーナリング)という高度な技術にあります。
ファイルシステムには、実際のデータ(写真や文書の中身)と、そのデータを管理するための情報(ファイル名、作成日時、保存場所など)であるメタデータが存在します。XFSは、このメタデータを変更する際、まず「これからこういう変更をしますよ」という予定をログ(日誌)に記録します。
もしデータの書き込み途中でパソコンの電源が突然切れてしまっても、次に電源を入れたときにOSは「あ、書き込み途中のログが残っているな。じゃあこれを最後まで実行するか、なかったことにしよう」と判断して、一瞬で整合性を整えます。これをログ・リカバリ(読み方:ログ・リカバリ)と呼びます。このため、古いファイルシステムのように、起動時に何時間もかけてディスク全体をスキャンする必要がなくなったのです。
6. トラブルを未然に防ぐストレージ管理のコツ
fsck.xfsやxfs_repairのお世話にならないようにするためには、日頃のストレージ管理(ストレージ・カンリ)が欠かせません。Linux初心者の方が意識しておくと良いポイントをいくつか紹介します。
一つ目は、正しい手順でシャットダウンを行うことです。いくらXFSが頑丈だといっても、書き込み中に物理的に電源を引っこ抜く行為は、ハードディスクやSSD自体の寿命を縮める原因になります。必ず「shutdown」コマンドや、GUIの「電源を切る」ボタンを使いましょう。
二つ目は、ディスクの空き容量を常にチェックしておくことです。容量がいっぱいになると、ログの書き込みすらできなくなり、エラーの原因になります。定期的に「df -h(読み方:ディーエフ・ハイフン・エイチ)」コマンドを使って、残りの容量を把握しておきましょう。
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 20G 5.0G 15G 25% /
devtmpfs 485M 0 485M 0% /dev
このように、人間が読みやすい形式(ギガバイトやメガバイト単位)で表示してくれるので、初心者の方でも直感的に空き状況が分かります。トラブルが起きてから慌てるのではなく、普段から自分のマシンの状態を知っておくことが、Linuxマスターへの第一歩です。
7. XFSツールに関連する便利なコマンド群
XFSファイルシステムを管理するためのツール一式は、xfsprogs(読み方:エックスエフエスプログス)というパッケージに含まれています。これにはfsck.xfs以外にも便利なコマンドがたくさんあります。
- xfs_admin:ファイルシステムのラベルを変更したり、UUID(固有のID)を確認したりできます。
- xfs_growfs:パーティションのサイズを大きくした後に、ファイルシステムを拡張するために使います。
- xfs_info:ファイルシステムの詳細なパラメータ(ブロックサイズなど)を表示します。
例えば、自分のディスクの詳細情報を確認したいときは、次のようにコマンドを打ちます。
xfs_info /
meta-data=/dev/sda1 isize=512 agcount=4, agsize=1310720 blks
= sectsz=512 attr=2, projid32bit=1
data = bsize=4096 blocks=5242880, imaxpct=25
log =internal log bsize=4096 blocks=2560, version=2
これを見ると、データの最小単位である「ブロックサイズ(bsize)」が4096バイトであることなどが分かります。専門的な知識が増えてくると、こうした数値を見てシステムのチューニングを行うこともできるようになりますが、初心者のうちは「こんなに細かい情報まで管理されているんだな」と感心するだけで十分です。XFSは非常に奥が深い世界なのです。
LPICレベル1の合格を目指している人や、 Linuxコマンド・シェル・ネットワーク・セキュリティの試験対策を効率よく進めたい人におすすめの定番問題集です。
Linux教科書 LPICレベル1 スピードマスター問題集を見る※ Amazonアソシエイト広告リンク
まとめ
この記事では、Linuxの標準的なファイルシステムであるXFS(エックスエフエス)の整合性チェックツール、fsck.xfsの役割と、実際のトラブル解決に役立つ知識について詳しく解説してきました。 ファイルシステムは、コンピュータにとってデータの家を支える土台のような存在です。その土台が揺らいだときに、どのように対処すべきかを知っておくことは、Linuxサーバー運用やインフラ構築において非常に重要なスキルとなります。
fsck.xfsとxfs_repairの決定的な違い
多くのLinuxユーザーが最初に戸惑うのは、fsck.xfsを実行しても「何もしない」という点です。これは故障ではなく、XFSの設計思想によるものです。 従来のファイルシステムとは異なり、XFSは強力なジャーナリング機能を備えています。万が一のクラッシュ時には、OS起動プロセスの中で自動的にログが適用(ログ・リカバリ)されるため、手動でチェックを行う必要性が極めて低いのです。 本当にファイルシステムの内部構造に修復が必要な事態になった場合には、xfs_repairコマンドを使用します。この切り分けができるようになることが、初心者脱却の第一歩と言えるでしょう。
運用の現場で役立つ実戦的なテクニック
システム管理の現場では、いきなり修復コマンドを試すことは推奨されません。まずは読み取り専用モード(-nオプション)で状況を確認し、被害の大きさを把握することが重要です。
また、ファイルシステムの健全性を維持するためには、xfsprogsパッケージに含まれる多様なツールを使いこなすことが求められます。
例えば、ストレージの拡張時には xfs_growfs を使用し、詳細な構成を確認するには xfs_info を活用します。
プログラミング的な視点でのファイルシステム管理
ファイルシステムの管理を自動化する場合、シェルスクリプトやJavaなどのプログラムからシステムコマンドを呼び出すことがあります。 例えば、ディスクの空き容量を監視し、しきい値を超えた場合に警告を出すような保守ツールを作成する際は、コマンドの実行結果をパース(解析)する処理が必要です。 以下に、Javaを使用してシステム上のファイルシステム情報を取得し、特定の条件でチェックを行うイメージのコード例を紹介します。
public class XfsStatusChecker {
public static void main(String[] args) {
// ファイルシステムのパスを指定
String partitionPath = "/dev/sda1";
System.out.println("Checking XFS filesystem status for: " + partitionPath);
// 実際にはRuntime.getRuntime().exec()などでコマンドを実行し
// その結果を解析するロジックをここに記述します
boolean isHealthy = checkFileSystemIntegrity(partitionPath);
if (isHealthy) {
System.out.println("Status: [OK] ファイルシステムは正常です。");
} else {
System.out.println("Status: [ERROR] 修復が必要な可能性があります。xfs_repairを確認してください。");
}
}
private static boolean checkFileSystemIntegrity(String path) {
// 整合性チェックのシミュレーション
// 戻り値がtrueなら正常、falseなら異常と判定
return true;
}
}
このように、コマンドラインでの操作だけでなく、プログラムと組み合わせることで、より強固なシステム運用が可能になります。
XFSの特性を理解し、正しいツールを選択することは、データの損失を防ぎ、システムの安定稼働を実現するための基本です。
今回学んだ fsck.xfs の挙動や、xfs_repair の使い方、そしてジャーナリングによる保護機能を忘れずに、これからのLinuxライフに役立ててください。
生徒
「先生、ありがとうございました!fsck.xfsを叩いても『xfs_repairを使ってね』と言われる理由がようやく分かりました。不具合ではなく、むしろXFSが賢いからこその挙動だったんですね。」
先生
「その通りです!よく理解できましたね。他のファイルシステムとは少しお作法が違うので、最初は驚く人が多いんですよ。でも、ジャーナリングによる自動復旧のおかげで、管理者の負担はぐっと減っているんです。」
生徒
「自動で直してくれるのは心強いです。でも、どうしても手動で直さないといけない時は、必ず『アンマウント』してから xfs_repair を使うというルールも忘れないようにします。マウントしたままだと、逆にデータを壊しちゃうかもしれないんですよね?」
先生
「素晴らしい、その点は非常に重要です!稼働中のディスクに直接修理を加えるのは、手術中に患者さんが走り回っているようなもので、とても危険ですからね。まずは -n オプションで下見をする癖をつけておくと、プロのエンジニアに一歩近づけますよ。」
生徒
「手術の例え、分かりやすいです!あとは日頃から df -h で空き容量をチェックして、無理な運用をさせないように気をつけます。Linuxのストレージ管理って、知れば知るほど奥が深くて面白いです!」
先生
「その意気です。XFSは大規模なデータも得意とするファイルシステムなので、これからクラウドやサーバーの仕事をする時にも必ず役立つ知識になります。少しずつ慣れていきましょうね!」