Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

Linuxファイルシステムのエラーを修復!fsckコマンドの使い方と4つの実践例

現代のコンピュータは非常に信頼性が高いものですが、それでもトラブルが起こる可能性はゼロではありません。そして最も避けたい事態は、仕事で重要なデータや大切な写真といったデータの損失です。

堅牢なバックアップ体制と並んで、fsck(File System cheCK)はデータ損失を防ぐために覚えておきたい最重要ツールの一つです。この記事では、fsckを使ってLinuxのファイルシステムエラーを修復する方法を解説し、よくある4つの使用例をわかりやすく紹介します。

fsckは、Linuxファイルシステムの整合性を検証し、エラーを修復するためのコマンドです。

fsckの基本構文

fsckは、Linuxで利用される各種ファイルシステムに対応したチェックプログラム群への統合インターフェースであり、以下の構文で使用します。

fsck [OPTIONS]... [FILESYSTEMS]...

構成要素の意味は次のとおりです。

  • [OPTIONS]:後述の表にあるオプションを指定します
  • [FILESYSTEMS]:チェック・修復対象のファイルシステムを指定します
  • fsck自身が解釈できないオプションは、対象ファイルシステム専用のチェッカーにそのまま渡されます
  • ファイルシステムを指定しない場合、fsckはデフォルトで/etc/fstabに登録されたすべてのファイルシステムをチェックします(-Aオプション指定時と同じ動作)

主なオプション一覧

fsckには多数のオプションがあります。全リストはターミナルで以下のコマンドを実行すると確認できます。

man fsck

ここでは、実際によく使われる主要なオプションをまとめました(詳細な使い方はマニュアルをご確認ください)。

オプション 説明
-t チェック対象のファイルシステムの種類を指定します。fslistパラメータには、カンマ区切りでファイルシステム名などを列挙します。通常、種類は/etc/fstabの該当エントリから自動的に推測されます。
-A /etc/fstabを順に読み込み、すべてのファイルシステムを一括でチェックします。個別にコマンドを実行する代わりに、システム初期化スクリプト(/etc/rc)から呼び出されるのが一般的です。
-M マウント済みのファイルシステムをチェックせず、終了コード0を返します。
-N 実際には実行せず、実行内容の確認のみを行います。
-R -Aオプションと併用し、ルートファイルシステムをチェック対象から除外します(読み書きモードでマウント済みの場合のため)。
-V 詳細な出力を表示します。実行されるファイルシステム固有のコマンドもすべて表示されます。

ファイルシステム固有のfsckに渡せるオプションは標準化されていないため、不明な場合はそれぞれのチェッカーのmanページを参照してください。ただし、以下のオプションは多くのファイルシステムチェッカーで共通してサポートされています。

オプション 説明
-a 確認なしで自動的にファイルシステムを修復します(慎重に使用してください)。
-n 一部のチェッカーでは、修復を行わず問題の報告のみを行うようになります。
-r 対話形式でファイルシステムを修復します(都度確認を求められます)。
-y 一部のチェッカーでは、検出された破損を常に自動的に修復しようとします。

特定のファイルシステム用チェッカーのオプションを確認したい場合は、たとえば以下のように実行します。

man fsck.ext4

終了コードの意味

終了コード 意味
0 エラーなし
1 ファイルシステムのエラーを修正した
2 システムの再起動が必要
4 ファイルシステムのエラーが未修正のまま残っている
8 操作上のエラー
16 使用法または構文のエラー
32 ユーザーによるキャンセル
128 共有ライブラリのエラー

なお、複数のファイルシステムをチェックした場合の終了コードは、各ファイルシステムの終了コードのビット単位OR(論理和)となります。

実践例:fsckのよくある使い方4選

ここからは、ローカルディスク(ルートファイルシステムを含む)をチェックする際の、fsckの代表的な使用例を紹介します。

1. ファイルシステムのアンマウント

使用中のファイルシステムはチェックできません。無理にチェックするとファイルシステムが破損し、データ損失につながる恐れがあります。まずは対象をアンマウントしましょう。

sudo umount /dev/filesystem

filesystemの部分には、アンマウントしたいファイルシステム名を指定します。名前がわからない場合は、以下のコマンドでファイルシステムとマウントポイントの一覧を確認できます。

df -h

2. チェック後の再マウント

チェックと修復が完了したら、次のコマンドでファイルシステムを再マウントします。

sudo mount /dev/filesystem

3. 破損したファイルシステムのチェックと修復

sudo fsck -p /dev/filesystem

ポイントは以下の2つです。

  • filesystemには「sda1」や「sdc1」のようなデバイス名を指定します
  • -pオプションを付けると、ユーザーの操作を必要としない軽微な問題を自動的に修復します

4. 起動時チェック/ルートファイルシステムのチェック

使用中のファイルシステムはチェックできないため、システム起動後にルートファイルシステムを直接チェックすることはできません。この場合、起動時にチェックを実行するのがベストな方法です。リモートからSSHで接続している環境でも有効です。

多くのLinuxディストリビューションでは、ファイルシステムに「ダーティ」フラグ(要チェック)が付いている場合や、一定の起動回数ごとに、fsckが自動的に実行されるよう設定されています。

特定のファイルシステム(ルートファイルシステムを含む)のチェックを毎回の起動時に強制したい場合は、tune2fsでファイルシステムのパラメータを変更します。

tune2fs -c 1 /dev/filesystem

ここでの1は「fsckを実行するまでの起動回数」を意味します。Ubuntu系ディストリビューションのデフォルト値は30なので、設定を元に戻すには以下を実行します。

tune2fs -c 30 /dev/filesystem

この方法が使えない古いディストリビューションでは、/forcefsckという空ファイルを作成しておくことで、次回起動時にfsckが実行されます。

sudo touch /forcefsck

起動時にfsckが実行された結果は、以下のログファイルに記録されるので、後から確認できます。

/var/log/fsck

なお、システムが完全に起動しないほど深刻に破損している場合は、リカバリディスクやUSBブートメディアから起動すれば、チェック対象のルートファイルシステムがマウントされていない状態でfsckを実行できます。

まとめ

fsckは、Linuxシステムのファイルシステムエラーから大切なデータを守るための強力な味方です。定期的なバックアップと組み合わせれば、万が一のトラブルにも落ち着いて対処できるでしょう。

さらに詳しい情報は、ターミナルで以下のコマンドを実行して公式マニュアルを参照してください。

man fsck

その他、Linuxの便利なシェルツールに関する解説記事もぜひあわせてご覧ください。

  1. Windows 10でファイルシステムエラーを解決する5つの対処法【エラーコード別】

    ファイルシステムエラーが表示される場合、Windowsのシステムファイルが破損しているか、ハードディスクに不良セクターが存在している可能性があります。このエラーの主な原因はハードディスクに関わる障害とされており、chkdskコマンドを実行するだけで簡単に修復できるケースもあります。ただし、ユーザーのシステム環境によって状況が異なるため、必ずしもすべてのケースで解決できるとは限りません。 .exeファイルを開いたり、管理者権限でアプリを実行したりする際に、「ファイルシステムエラー 2147219196」が発生することがあります。管理者としてコマンドプロンプトを実行してみると、同様のエラーが表示

  2. Macのディスクエラー・ファイルシステムエラーを修復する3つの効果的な方法

    WindowsでもmacOSでも、OSを使用している限り、エラーやトラブルに遭遇するのはごく自然なことです。バックグラウンドでは想像以上に膨大な数のプロセスが常時稼働しており、些細な不具合は設定を少し調整するだけで簡単に解決できることもあります。 しかし、Macでディスク関連のエラーが発生した場合は話が別です。ほぼすべてのデータがディスクドライブ上に保存されているため、いかなる場合でもデータ損失は避けたいところです。だからこそ、これらのエラーへの対処は非常に重要になります。 Windowsユーザーなら「CHKDSK」というユーティリティツールをご存じでしょう。CHKDSKはWindows上のデ