Linuxのfsck.ext3とは?ext3ファイルシステム修復ツールを初心者向けに徹底解説
生徒
「先生、Linuxを使っていたら急にファイルが壊れたというメッセージが出てしまいました。どうすればいいですか?」
先生
「それは大変ですね。そんな時はfsck.ext3(エフエスシーケー・ドット・イーエックスティー・スリー)というツールを使って、ファイルシステムを修復できるかもしれませんよ。」
生徒
「ファイルシステム修復ツール...なんだか難しそうです。初心者の私でもコマンドで直せるでしょうか?」
先生
「大丈夫ですよ。仕組みと使い方を順番に覚えていけば、万が一のトラブルにも落ち着いて対処できるようになります。一緒に見ていきましょう。」
Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。
試して理解 Linuxのしくみを見る※ Amazonアソシエイト広告リンク
1. fsck.ext3とは何か?
fsck.ext3、読み方はfsck.ext3(エフエスシーケー・ドット・イーエックスティー・スリー)は、Linux(リナックス)で使用されるext3形式のファイルシステムを検査し、不整合があれば修復するための専用ツールです。
「fsck」とは「File System Check(ファイル・システム・チェック)」の略称で、その名の通り「ファイルが格納されている場所の状態を点検する」役割を持っています。Windowsでいうところの「スキャンディスク」や「チェックディスク(chkdsk)」と同じような機能だと考えると分かりやすいでしょう。
Linuxには複数のファイル保存形式(ファイルシステム)がありますが、その中でも古くから信頼されている「ext3(イーエックスティー・スリー)」という形式に特化した修復ツールが、このfsck.ext3です。コンピュータの電源がいきなり切れたり、ハードディスクに不具合が起きたりしてデータのつじつまが合わなくなったときに活躍します。
2. ext3ファイルシステムの特徴と歴史
ext3(イーエックスティー・スリー)は、Linuxの標準的なファイルシステムとして長く愛されてきた歴史があります。正式名称は「Third Extended File System(サード・エクステンデッド・ファイル・システム)」と言います。
このシステム最大の特徴は「ジャーナリング機能」を搭載していることです。ジャーナリングとは、日記(ジャーナル)のように、データの書き込み操作を記録しておく仕組みのことです。これにより、書き込み中にパソコンがフリーズしても、記録を辿ることで壊れたデータを素早く復旧できるようになりました。このジャーナル情報を基に修復を行うのがfsck.ext3の役割です。
現在では、より進化した「ext4(イーエックスティー・フォー)」が主流になっていますが、古いサーバーや特定のシステム環境では今でもext3が稼働しています。そのため、fsck.ext3の使いかたを知っておくことは、システムエンジニアやインフラ担当者にとって必須の知識と言えます。
3. fsck.ext3を実行する前の重要な注意点
コマンドの使い方を学ぶ前に、絶対に守らなければならない鉄則があります。それは、「マウントされている(使用中の)ファイルシステムに対しては実行しない」ということです。
Linuxでは、ハードディスクなどの記憶装置をシステムに認識させることを「マウント」と呼びます。OSが動いている最中に直接データを書き換える修復作業を行うと、修復どころか、かえってデータを完全に破壊してしまう恐れがあります。例えるなら、「走っている車のエンジンを分解修理しようとする」ような非常に危険な行為です。
fsck.ext3を実行する際は、必ず対象のディスクをアンマウント(切り離し)するか、レスキューモードなどの特別な状態で実行するようにしましょう。また、可能な限り事前にデータのバックアップを取っておくことが推奨されます。
4. 基本的なコマンドの使い方とオプション
それでは、実際にどのようにコマンドを入力するのか見ていきましょう。このコマンドはシステム全体に影響を与えるため、通常は管理者権限(root権限)で実行します。
最も基本的な形式は以下の通りです。
fsck.ext3 /dev/sdb1
e2fsck 1.46.2 (28-Feb-2021)
/dev/sdb1: clean, 11/65536 files, 12632/262144 blocks
上記の例では、/dev/sdb1という場所にあるディスクの状態を調べています。結果に「clean」と表示されれば、異常はないという意味です。
また、修復作業中に「壊れた箇所を直しますか?」と何度も聞かれるのが面倒な場合は、-yオプションを使います。これにより、すべての質問に「yes」と自動で答えて修復を進めてくれます。
fsck.ext3 -y /dev/sdb1
e2fsck 1.46.2 (28-Feb-2021)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb1: 11/65536 files (0.0% non-contiguous), 12632/262144 blocks
5. ドライランで安全に検査する方法
「いきなり修復するのは怖いけれど、どこが壊れているかだけ確認したい」という場合には、-nオプションが便利です。これは「ドライラン」や「読み取り専用モード」と呼ばれます。
-nオプションを付けると、実際にファイルシステムを書き換えることはせず、エラーの有無だけを報告してくれます。初心者がまず最初に試すべき、非常に安全な方法です。読み方はドライラン(Dry Run)と言い、本番前のシミュレーションという意味があります。
fsck.ext3 -n /dev/sdb1
e2fsck 1.46.2 (28-Feb-2021)
/dev/sdb1: clean, 11/65536 files, 12632/262144 blocks
もし異常が見つかった場合は、この結果を見てからバックアップを検討したり、本格的な修復手順に移行したりすることができます。焦ってすぐに直そうとせず、まずは現状把握を行うのがプロの鉄則です。
6. 不整合が発生した時の詳細な動作(5つのパス)
fsck.ext3を実行すると、「Pass 1」から「Pass 5」までの工程が順番に進んでいくのが見えます。これは、ファイルシステムの各要素を段階的にチェックしている証拠です。それぞれのパス(Pass)が何を意味しているのかを簡単に知っておくと、トラブルの深刻度がわかります。
- Pass 1 (Checking inodes, blocks, and sizes): ファイルの設計図である「iノード(アイノード)」に矛盾がないか確認します。
- Pass 2 (Checking directory structure): ディレクトリ(フォルダ)の構造が壊れていないかチェックします。
- Pass 3 (Checking directory connectivity): ディレクトリ同士のつながりが正しいか確認します。
- Pass 4 (Checking reference counts): リンクの数に間違いがないか点検します。
- Pass 5 (Checking group summary information): 全体の要約情報が一致しているか確認します。
このように多角的な視点でチェックを行うため、人間の目では気づかないような細かなデータのズレも、しっかりと見つけ出して修正してくれるのです。
7. アンマウントの方法を確認しよう
先ほど「使用中のディスクには実行できない」と説明しました。では、どうやって切り離せばよいのでしょうか。それにはumount(アンマウント)というコマンドを使用します。
まず、現在どのディスクがどこに接続されているかをdf -hコマンドで確認し、その後に目的の場所をアンマウントします。読み方はアンマウント(Unmount)と言います。
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 9.8G 23M 9.2G 1% /mnt/data
sudo umount /mnt/data
これによって、/dev/sdb1というデバイスがシステムから安全に切り離されました。この状態になって初めて、fsck.ext3を安全に実行できるようになります。もし「device is busy」というエラーが出た場合は、誰かがその中のファイルを開いている証拠なので、すべての作業を閉じてから再度試しましょう。
8. 起動時に自動でチェックが行われる仕組み
実は、私たちが手動で実行しなくても、Linuxが起動する際にfsckが自動で走ることがあります。これは、前回のシステム終了が異常だった場合や、一定の回数以上ディスクをマウントした場合に発動する仕組みです。
この自動チェックの設定を確認するには、tune2fs(チューン・ツー・エフエス)というコマンドを使います。以下のコマンドで、何回マウントしたら自動チェックを行うかという設定値を表示できます。
tune2fs -l /dev/sdb1 | grep "Maximum mount count"
Maximum mount count: -1
「-1」となっている場合は、マウント回数による自動チェックが無効化されていることを意味します。サーバーなどの安定性が求められる環境では、管理者が意図的にこれらの数値を調整して、大切なデータがいつもしっかりと管理されるように工夫されています。
9. まとめとして知っておきたいトラブル回避術
ファイルシステムの修復ツールは非常に強力ですが、一番良いのは「ツールを使わずに済むこと」です。データの破損を防ぐために、日頃から以下のことを心がけましょう。
まず第一に、「正しい手順でシャットダウンする」ことです。電源ボタンをいきなり長押ししたり、コンセントを抜いたりするのは禁物です。次に、「ストレージの空き容量を確保する」ことも大切です。容量が100%になってしまうと、書き込みエラーが発生しやすくなり、結果としてファイルシステムが壊れる原因になります。
もし万が一、画面にファイルシステムのエラーが表示されても、パニックになる必要はありません。今日学んだfsck.ext3という頼もしい味方がいることを思い出してください。適切な手順を踏めば、大切なデータを守り抜くことができるはずです。Linuxの深い知識を一つずつ積み重ねて、トラブルに強いユーザーを目指していきましょう。
LPICレベル1の合格を目指している人や、 Linuxコマンド・シェル・ネットワーク・セキュリティの試験対策を効率よく進めたい人におすすめの定番問題集です。
Linux教科書 LPICレベル1 スピードマスター問題集を見る※ Amazonアソシエイト広告リンク
まとめ
Linuxシステムを安定して運用するために、ファイルシステムの健全性を維持することは極めて重要です。今回の記事では、古くから多くのシステムで採用されているext3ファイルシステムの修復ツールである「fsck.ext3」について詳しく解説してきました。ファイルシステムに不整合が生じる原因は、予期せぬ電源断やハードウェアの故障、あるいはシステムの強制終了など多岐にわたりますが、適切な修復手順を知っていれば、データの消失という最悪の事態を回避できる可能性が高まります。
fsck.ext3の主要なポイント
本記事で学んだ内容を振り返り、実務で役立つ知識を整理しましょう。まず、fsck.ext3を実行する際には「対象のパーティションがアンマウントされていること」が絶対条件です。マウントされた状態で実行すると、書き込み中のデータと修復プロセスが競合し、修復不能なダメージをディスクに与えるリスクがあります。また、修復作業は管理者権限(root権限)が必要となるため、sudoコマンドを併用するか、rootユーザーに切り替えてから操作を行います。
実務で役立つコマンドとオプションの組み合わせ
現場でよく使われるコマンドの例を改めて確認しておきましょう。例えば、システム起動時に特定のディスクを自動でマウント設定している場合、まずはアンマウントを行い、その後に検査を実行します。
# 指定したマウントポイントをアンマウントする
sudo umount /dev/sdb1
# 自動修復オプション(-y)を付けて、対話なしで全修復を試みる
sudo fsck.ext3 -y /dev/sdb1
このように、コマンドを組み合わせて使用することで、迅速かつ正確にシステムを復旧させることができます。また、-fオプションを付けると、ファイルシステムが「clean(正常)」とマークされていても強制的に再チェックを行うことができます。わずかな違和感がある場合には、この強制チェックも有効な手段です。
ファイルシステム管理のベストプラクティス
Linuxサーバーの運用において、ext3からext4への移行が進んでいますが、基本的な修復の考え方は同じです。fsckコマンドは、対象のファイルシステムタイプを自動判別して適切なラッパー(fsck.ext3やfsck.ext4など)を呼び出してくれます。日常的なメンテナンスとして、ディスクの空き容量を監視し、不要なログファイルを削除することで、ファイルシステムがいっぱいになることを防ぐのも、fsck.ext3を必要としないための重要な工夫です。
生徒
「先生、ありがとうございました!fsck.ext3の使い方がよく分かりました。一番大事なのは、アンマウントしてから実行することなんですね。」
先生
「その通りです。走っている車のタイヤを交換するのが危ないのと同じで、動いているシステムをいじるのは危険ですからね。もしマウント中かどうか不安なときは、mountコマンドやlsblkコマンドで確認する癖をつけましょう。」
生徒
「なるほど。ところで先生、もし-yオプションを使わずに実行して、エラーがたくさん出たらどうすればいいですか?」
先生
「一つずつ確認して修正(yを入力)するのは大変ですが、慎重に進めたいときには有効です。でも、エラーがあまりにも多い場合は、一度-nのドライランで全体像を把握してから、覚悟を決めて-yで一気に直すのが一般的ですね。」
生徒
「わかりました!あ、そういえばiノードという言葉も出てきましたね。これってファイルの索引みたいなものだと思えばいいでしょうか?」
先生
「いい視点ですね。まさに本の目次や索引のようなものです。fsck.ext3のPass 1では、その目次自体が破れていないかをチェックしているんですよ。目次が壊れると本文(データ)にたどり着けなくなりますから、非常に重要な工程です。」
生徒
「仕組みを知ると、コマンドを打つときの安心感が違います。今度は予備のUSBメモリなどを使って、わざとアンマウントせずにコマンドを打つとどうなるか...いえ、やっぱり壊れるのが怖いので、正しくアンマウントして練習してみます!」
先生
「ははは、賢明な判断です。実際に壊れる前に練習しておくのは素晴らしいことですよ。もし修復不可能なダメージを受けても、日頃からバックアップを取っていれば安心です。ツールの使いかただけでなく、運用全体の守りを固めていきましょう。」