Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

fsckコマンド(エフエスケーシーコマンド)とは | 意味や読み方など丁寧でわかりやすい用語解説

fsckコマンド(エフエスケーシーコマンド)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

ファイルシステムチェックコマンド (ファイルシステムチェックコマンド)

英語表記

fsck (エフエスエフケイ)

用語解説

fsckコマンドは、LinuxやUnix系OSにおいてファイルシステムの整合性をチェックし、必要に応じて修復を行うための重要なツールだ。その名前は「file system consistency check」(ファイルシステム整合性チェック)の頭文字から来ている。このコマンドは、システムが突然シャットダウンされた、停電が起こった、あるいはハードウェアに障害が発生したなど、何らかの理由でファイルシステムが正常な状態を保てなくなった際にその構造的な矛盾を検出し、ファイルシステムの健全性を回復させる役割を担う。

ファイルシステムは、データを効率的に保存し、管理するための構造体であり、その内部はさまざまなメタデータ(データに関するデータ)と実際のデータブロックで構成されている。もしこれらの情報に矛盾が生じると、ファイルが読めなくなったり、システムが不安定になったり、最悪の場合、OSが起動できなくなる可能性もある。fsckコマンドは、このような状況を防ぎ、あるいは解決するために利用されるのだ。

fsckコマンドの詳細な動作を理解するには、まずファイルシステムの基本的な構造を知る必要がある。ファイルシステムは主に以下の要素で構成される。

まず、スーパーブロックはファイルシステム全体の最も重要な情報が格納されている領域だ。ファイルシステムのサイズ、ブロックサイズ、iノードの数、フリーブロックの数、マウント状態など、ファイルシステムの「設計図」とも言える情報が含まれている。もしスーパーブロックが破損すると、ファイルシステム全体が認識できなくなり、データにアクセスできなくなる。fsckはこのスーパーブロックの整合性を最初にチェックし、もし破損していればバックアップのスーパーブロックを利用して回復を試みる。

次に、**iノード(インデックスノード)**は個々のファイルやディレクトリに関するメタデータを格納する構造体だ。ファイル名以外のすべての情報(ファイルの所有者、グループ、パーミッション、作成・変更日時、そしてファイルの実データが格納されているデータブロックへのポインタなど)がここに保存されている。fsckは、すべてのiノードが正しく参照されているか、不正なiノードがないか、リンクカウント(そのiノードを参照しているディレクトリ内のエントリ数)が正しいかなどを確認する。例えば、どのディレクトリからも参照されていないiノードが見つかった場合、それは「孤立したiノード」とみなされ、fsckは通常、それを/lost+foundという特別なディレクトリに移動させることで修復を行う。これにより、データ自体は失われずに保持される可能性がある。

データブロックは、ファイルの実データが実際に保存される最小単位の領域だ。fsckは、データブロックが重複して異なるファイルによって参照されていないか、あるいはiノードによって参照されていないフリーなデータブロックが存在しないかなどをチェックする。もし重複しているデータブロックが見つかった場合、それはデータの整合性問題を示しており、fsckは通常、重複を解消するためにブロックをコピーするなどの処置を講じる。

最後に、ディレクトリ構造はファイル名とそれに対応するiノード番号のマッピングを保持している。これにより、人間が理解しやすいファイル名でファイルにアクセスできるようになる。fsckは、ディレクトリ内のエントリが正しいiノードを指しているか、あるいはiノードのリンクカウントとディレクトリ内の参照数が一致しているかなどを検証する。

fsckコマンドの実行方法だが、最も基本的な使い方はfsck /dev/sdXN の形式だ。ここで/dev/sdXN はチェックしたいファイルシステムが格納されているパーティションのデバイス名を示す(例: /dev/sda1)。

**極めて重要な注意点として、fsckコマンドを実行する対象のファイルシステムは、必ずアンマウントされた状態でなければならない。**マウントされたファイルシステムに対してfsckを実行すると、ファイルシステムが使用中であるため、データがさらに破損したり、システムが不安定になったりする危険性が非常に高い。そのため、通常はシステムをシングルユーザーモードで起動したり、別のOSから起動したり、あるいはLive CD/USBなどを使用して、対象のファイルシステムがマウントされていない状態で実行する必要がある。ルートファイルシステム(/)のように、通常の動作中にアンマウントできないファイルシステムの場合は、システムの起動時に自動的にチェックが実行されるか、あるいはリカバリモードや緊急モード(initramfs環境など)から実行することが推奨される。

fsckにはいくつかの便利なオプションがある。

  • -y オプションを使用すると、見つかったエラーに対してすべて「Yes」と回答し、自動的に修復を進める。ただし、これにより意図しないデータ変更や削除が行われる可能性もあるため、注意が必要だ。
  • -f オプションは、ファイルシステムが「クリーン」とマークされている場合でも強制的にチェックを実行する。通常、ファイルシステムは正常にアンマウントされると「クリーン」とマークされ、次回の起動時にはfsckによるチェックがスキップされるが、このオプションを使うと毎回チェックが行われる。
  • -p オプションは、「安全な」修正を自動的に適用する。ユーザーの介入なしに修復を進めるが、危険な可能性のある修正は行わない。

現代のLinuxシステムで広く使われているext3、ext4、XFSなどのジャーナリングファイルシステムは、ファイルシステムの整合性を保つための「ジャーナル(ログ)」を持っている。これにより、システムクラッシュが発生しても、再起動時にジャーナルを再生することで、ファイルシステムの整合性を迅速に回復できるようになり、従来のext2のような非ジャーナリングファイルシステムに比べてfsckの実行頻度や所要時間は大幅に減少した。しかし、ジャーナリングファイルシステムであっても、深刻な物理障害やソフトウェアのバグなどにより、ジャーナルだけでは回復できないほどの破損が発生する可能性は依然として存在する。そのような場合に備えて、fsckは依然として最終手段として重要な役割を担うのだ。

fsckコマンド自体は、実際にはさまざまなファイルシステムに対応する「ラッパー」コマンドであり、内部では特定のファイルシステムに特化したチェックツールを呼び出している。例えば、ext2/3/4ファイルシステムの場合はe2fsck、XFSの場合はxfs_repair、Btrfsの場合はbtrfs checkといった具合だ。これらの個別のツールは、それぞれのファイルシステムの特性に合わせて最適化されたチェックと修復のロジックを持っている。

fsckは非常に強力なツールだが、データに直接変更を加えるため、利用には細心の注意が必要だ。万が一に備え、重要なデータは事前にバックアップを取っておくことが強く推奨される。ファイルシステムの破損は予期せぬトラブルから発生することが多いため、fsckコマンドとその適切な使用方法を理解しておくことは、システムエンジニアとして非常に重要となるだろう。

関連コンテンツ

関連IT用語