Linuxのfsckコマンドを徹底解説!ファイルシステム修復の基本と注意点
生徒
「先生、パソコンが急に再起動した後から、Linuxの動作がなんだかおかしいんです。ファイルが壊れていないか心配で...。」
先生
「それは心配ですね。突然の停電や強制終了があると、ファイルシステム(読み:ファイルシステム)というデータの管理表に矛盾が起きることがあります。」
生徒
「管理表の矛盾...。それを直す魔法のような道具はありますか?」
先生
「魔法ではありませんが、Linuxにはfsckという強力なメンテナンスツールがあります。これを使えば、歪んでしまったデータの整合性をチェックして、修復できるんですよ。」
生徒
「fsckですね!難しそうですが、初心者の僕でも安全に使うコツを知りたいです!」
先生
「使い方の手順を守れば大丈夫です。今回はfsckの基本から、失敗しないための注意点まで詳しく解説していきましょう。」
Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。
試して理解 Linuxのしくみを見る※ Amazonアソシエイト広告リンク
1. fsckコマンドとは?
fsckコマンドは、読み方はfsck(エフエスカイ、またはファイルシステムチェック)といいます。その名の通り、Linuxシステムの「ファイルシステム」の整合性を確認し、問題があれば修正を行うための非常に重要な管理ツールです。
ファイルシステムとは、ハードディスクやSSDなどの記憶装置(読み:キオクソウチ)に、データをどのようなルールで書き込むかを決めている仕組みのことです。例えば、EXT4やXFSといった種類があります。人間でいうところの「書類を整理するための棚の索引(読み:サクイン)」のようなものです。この索引が破れたり、書き間違えられたりすると、どこに何のデータがあるか分からなくなり、OSが正常に起動しなくなったり、ファイルが開けなくなったりします。
fsckは、この索引の矛盾をスキャンして見つけ出し、正しい状態に書き直してくれる「お医者さん」のような役割を果たします。サーバーの運用や、個人のLinuxマシンを長く安定して使い続けるためには、欠かせない知識となります。
2. なぜファイルシステムが壊れるのか?
通常、Linuxは終了時に正しくデータを保存し、ファイルシステムの索引を整えてから電源を切ります。これを「アンマウント(読み:アンマウント)」といいます。しかし、以下のようなトラブルが発生すると、索引の更新が途中で止まってしまい、データが不整合な状態になります。
- 落雷やコンセント抜けによる突然の停電
- フリーズした際の強制的な電源ボタン長押し
- ハードディスクの物理的な寿命や故障(不良セクタ)
- カーネルパニック(読み:カーネルパニック)と呼ばれるシステムエラー
このような異常事態の後にシステムを起動すると、Linuxが自動的にfsckを実行することもありますが、手動で実行して詳細な状態を確認したい場面も多々あります。
3. fsckを実行する前の絶対ルール
fsckを安全に使うために、初心者が絶対に守らなければならない鉄則があります。それは、「マウント(使用中)の状態のファイルシステムに対して実行してはいけない」ということです。
Linuxが現在読み書きしている最中のハードディスクに対してfsckを行うと、データの書き換えが衝突し、かえって被害を拡大させてしまう危険があります。そのため、基本的には以下のいずれかの方法で実行します。
- 対象のドライブをアンマウントしてから実行する
- Linuxをシングルユーザーモードやレスキューモードで起動して実行する
- Live USB(読み:ライブユーエスビー)などから別のシステムを起動して実行する
まずは、現在どのディスクがどこに接続されているか、dfコマンドを使って確認してみましょう。
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 20G 5.4G 14G 29% /
/dev/sdb1 50G 10G 40G 20% /mnt/data
上記の例では、/dev/sdb1というデバイスが/mnt/dataに繋がっています。これを確認するのが第一歩です。
4. 基本的なfsckの使い方
それでは、具体的にfsckを使ってみましょう。基本的には管理者権限(読み:カンリシャケンゲン)が必要になるため、sudoを付けて実行します。まずは、エラーの有無をチェックするだけの安全な方法から紹介します。
以下の例では、外部のデータドライブである/dev/sdb1を対象にしています。まずは一度アンマウントしてからチェックを行います。
umount /dev/sdb1
fsck -n /dev/sdb1
fsck from util-linux 2.37.2
e2fsck 1.46.5 (30-Dec-2021)
/dev/sdb1: clean, 11/3276800 files, 126322/13107200 blocks
ここで使った-nオプションは、「一切の書き換えを行わず、質問にはすべてNoと答える」という意味です。つまり、現状を確認するだけの安全な診断モードです。最後に「clean」と表示されれば、そのファイルシステムには異常がないことを意味します。
5. 自動修復オプションを活用する
診断の結果、もしエラーが見つかった場合は修復作業に移ります。fsckを実行すると、一つ一つのエラーに対して「修復しますか?」と何度も聞かれることがありますが、数千個のエラーがあると手入力では対応できません。そこで、自動的に「Yes」と答えるオプションを使います。
最もよく使われるのは-yオプションです。これは「すべての質問に対してYes(はい)と答え、自動的に修復を試みる」という命令です。
fsck -y /dev/sdb1
fsck from util-linux 2.37.2
e2fsck 1.46.5 (30-Dec-2021)
/dev/sdb1: 11/3276800 files, 126322/13107200 blocks
非常に便利なオプションですが、大きな損傷がある場合は、一部のファイルが「lost+found(読み:ロストアンドファウンド)」というディレクトリに移動してしまうことがあります。大事なデータが含まれる場合は、事前にバックアップが取れる状況なら取っておくのが理想的です。
6. ファイルシステムの種類を指定する
Linuxには、EXT4(読み:イーエックスティーフォー)やXFS(読み:エックスエフエス)など、複数のファイルシステム形式があります。fsckは万能なツールで、背後でそれぞれの形式専用の修復プログラムを呼び出しています。明示的に指定したい場合は、-tオプションを使用します。
fsck -t ext4 /dev/sdb1
fsck from util-linux 2.37.2
e2fsck 1.46.5 (30-Dec-2021)
/dev/sdb1: clean, 11/3276800 files, 126322/13107200 blocks
最近のLinuxでは、fsck.ext4やfsck.xfsといった形式のコマンドも用意されていますが、基本的には親玉であるfsckコマンド一つを覚えておけば、適切なツールを自動的に判別してくれるので安心です。
7. 次回起動時に自動チェックを予約する
システムがインストールされているメインの領域(ルートディレクトリ)をチェックしたい場合、起動中にアンマウントすることは不可能です。その場合、「次回のパソコン起動時に自動的にチェックを行う」ように予約する方法があります。
昔のLinuxではルートディレクトリに空のファイルを作る方法がありましたが、現在の多くのシステム(systemd採用OS)では、起動時のブートパラメータにfsck.mode=forceを指定するか、特定のファイルを作成して指示します。
また、システムの異常を検知した時に、Linuxが自律的に「強制チェックが必要だ」と判断して、起動画面で「Checking drive...」と表示しながら修復を始めることもあります。この時は電源を切らず、作業が終わるのをじっと待つことが重要です。
8. lost+foundディレクトリの秘密
fsckで修復を行った後、ファイルシステムのルートにlost+foundという謎のフォルダができていることがあります。これは、データの欠片は見つかったけれど、元々どのファイルだったのか、どんな名前だったのかが分からなくなってしまった「迷子(読み:マイゴ)」のデータを収容する場所です。
ファイルの名前は数字の羅列に変わっていますが、中身を確認すると重要なドキュメントの一部が残っている可能性があります。もし大きな障害から復旧させた後は、このディレクトリの中身を覗いて、必要なものが残っていないか確認するのも一つのテクニックです。
9. 故障のサインを見逃さないために
fsckで何度もエラーが出る場合、それはファイルシステムのソフトウェア的な問題ではなく、ハードディスクやSSD自体の物理的な故障(読み:コショウ)が原因かもしれません。これを物理障害(読み:ブツリショウガイ)と呼びます。
もしfsckを何度実行しても同じ場所でエラーが出る、あるいはエラーの種類が増えていくといった現象が見られたら、速やかに新しいストレージへデータを移行してください。fsckはあくまで「管理表の矛盾を直す」道具であり、壊れかけた機械を物理的に修理するものではないからです。定期的なバックアップと、fsckによる早期発見を組み合わせることが、あなたのLinuxライフを守る最善の策です。
LPICレベル1の合格を目指している人や、 Linuxコマンド・シェル・ネットワーク・セキュリティの試験対策を効率よく進めたい人におすすめの定番問題集です。
Linux教科書 LPICレベル1 スピードマスター問題集を見る※ Amazonアソシエイト広告リンク
まとめ
Linuxシステムを安定して運用するために欠かせないfsckコマンドについて解説してきました。 ファイルシステムは、OSがデータを管理するための非常に繊細な仕組みです。突然の停電やシステムエラーによって、この管理情報に矛盾が生じると、データの消失やシステムの起動不可といった深刻なトラブルにつながります。 そんな時、fsck(ファイルシステムチェック)は、データの整合性をスキャンし、不整合を自動的に修正してくれる頼もしい味方となります。
fsck運用のポイント再確認
これまでに学んだ重要なポイントを整理しましょう。SEOの観点からも、これらのキーワードはLinuxサーバー管理の基本となります。
- アンマウントの徹底: 使用中のパーティションに実行するとデータ破壊の恐れがあるため、必ず
umountしてから実行します。 - オプションの使い分け: 安全に確認だけ行うなら
-n、一括で自動修復するなら-yを活用しましょう。 - 物理障害の可能性: 頻繁にエラーが出る場合は、ハードウェアの寿命を疑い、早急なバックアップとディスク交換を検討する必要があります。
実践的なトラブルシューティング手順
例えば、特定のデータ領域(例:/dev/sdb1)で読み書きエラーが発生した際の実践的なコマンド操作の流れは以下の通りです。
管理者権限で実行する必要があるため、sudoを忘れずに付与しましょう。
# 1. 念のため対象の利用状況を確認
df -h
# 2. 対象デバイスをアンマウント
sudo umount /dev/sdb1
# 3. ファイルシステムの整合性を自動修復モードでチェック
sudo fsck -y /dev/sdb1
# 4. 修復完了後、再度マウントして確認
sudo mount /dev/sdb1 /mnt/data
このように、手順を踏んで実行することで、初心者の方でも安全にLinuxのメンテナンスを行うことができます。 日頃から、エラーログ(dmesgやjournalctl)を確認する習慣をつけ、早期にファイルシステムの異常に気づけるようにしておきましょう。
生徒
「先生、ありがとうございました!fsckは、ただの修復ツールじゃなくて、Linuxシステムの健康状態を守るための診断士さんみたいな存在なんですね。」
先生
「その通りです。特にサーバー管理では、fsckコマンドの使い方を知っているかどうかが、トラブル復旧のスピードを左右します。注意点の『アンマウント』はしっかり覚えられましたか?」
生徒
「はい!『動いている最中のディスクには触らない』。これは絶対に守ります。もしエラーがたくさん出て不安になったら、まずは-nオプションで様子を見てみることにします。」
先生
「素晴らしい判断ですね。ちなみに、修復後にlost+foundというフォルダにファイルが入っていたら、それは名前が分からなくなったけど救出されたデータの一部ですよ。捨ててしまう前に中身をチェックするのを忘れずに。」
生徒
「分かりました!あと、そもそも壊さないように、電源をブチ切りしないように気をつけるのが一番の対策ですね。バックアップもこまめに取っておくようにします!」
先生
「その意気です。道具を正しく使いこなして、安全で楽しいLinuxライフを送りましょうね。」