ウェブサイト検索

「fsck」を使用して Linux のファイル システム エラーを修復する方法


Linux ファイルシステムは、データの保存方法と回復方法を整理する役割を果たします。いずれにせよ、時間の経過とともにファイルシステムが破損し、ファイルシステムの特定の部分にアクセスできなくなる可能性があります。ファイルシステムにこのような不整合が生じた場合は、その整合性を確認することをお勧めします。

これは、fsck (ファイル システムの整合性チェック) と呼ばれるシステム ユーティリティを使用して実行できます。このユーティリティは、ブート時にルート ファイル システムを自動的にチェックするか、手動で実行します。

この記事では、Linux ディスク エラーの修復に役立つfsck コマンドとその使用法について説明します。

Linux で fsck コマンドを使用する場合

fsck を実行する必要がある場合は、さまざまなシナリオがあります。以下にいくつかの例を示します。

  • システムが起動に失敗します。
  • システム上のファイルが破損します (入出力エラーが発生する場合があります)。
  • 接続されたドライブ (フラッシュ ドライブ/SD カードを含む) が期待どおりに動作しません。

fsck コマンドのオプション

fsck コマンドは、スーパーユーザー権限またはrootで実行する必要があります。さまざまな引数とともに使用できます。それらの使用法は、特定のケースによって異なります。以下に、より重要なオプションをいくつか示します。

  • -A – すべてのファイルシステムをチェックするために使用されます。リストは /etc/fstab から取得されます。
  • -C – 進行状況バーを表示します。
  • -l – デバイスをロックして、チェック中に他のプログラムがパーティションを使用しようとしないことを保証します。
  • -M – マウントされたファイルシステムをチェックしません。
  • -N – 実行される内容のみを表示します。実際の変更は行われません。
  • -P – ルートを含むファイルシステムを並行してチェックする場合。
  • -R – ルート ファイルシステムをチェックしません。これは、「-A」を使用した場合にのみ役立ちます。
  • -r – チェックされている各デバイスの統計を提供します。
  • -T – タイトルを表示しません。
  • -t – チェックする Linux ファイルシステム タイプを排他的に指定します。タイプはカンマ区切りのリストにすることができます。
  • -V – 何が行われているかの説明を提供します。

fsck コマンドを実行して Linux ファイル システム エラーを修復する

fsck を実行するには、チェックするパーティションがマウントされていないことを確認する必要があります。この記事では、/mnt にマウントされた 2 番目のドライブ /dev/sdb を使用します。

パーティションがマウントされているときにfsck を実行しようとするとどうなるかは次のとおりです。

fsck /dev/sdb

これを回避するには、次を使用してパーティションをアンマウントします。

umount /dev/sdb

これでfsck を安全に実行できるようになります。

fsck /dev/sdb

fsck 終了コードを理解する

fsck を実行すると、終了コードが返されます。これらのコードは、fsck のマニュアルで以下を実行することで確認できます。

man fsck

0      No errors
1      Filesystem errors corrected
2      System should be rebooted
4      Filesystem errors were left uncorrected
8      Operational error
16     Usage or syntax error
32     Checking canceled by user request
128    Shared-library error            

Fsck 修復 Linux ファイルシステム

場合によっては、ファイル システム上で複数のエラーが見つかることがあります。このような場合、fsck で自動的にエラーの修正を試みることができます。これは次のようにして実行できます。

fsck -y /dev/sdb

-y フラグは、エラーを修正するために fsck からのプロンプトに対して自動的に 「yes 」 を返します。

同様に、すべてのファイルシステムで同じことを実行できます (root なし)。

fsck -AR -y 

Linux ルート パーティションで fsck を実行する方法

場合によっては、 システムのルートパーティションでfsckを実行する必要がある場合があります。パーティションがマウントされている間は fsck を実行できないため、次のオプションのいずれかを試すことができます。

  • システム起動時に fsck を強制する
  • fsckをレスキューモードで実行する

両方の状況を確認します。

システム起動時に fsck を強制する

これは比較的簡単に完了できます。システムのルート パーティションにforcefsck というファイルを作成するだけです。次のコマンドを使用します。

touch /forcefsck

その後、システムの再起動を強制またはスケジュールするだけです。次回の起動時にfsckが実行されます。ダウンタイムが重要な場合は、システム上で使用されている i ノードが多数ある場合はfsck に余分な時間がかかる可能性があるため、慎重に計画することをお勧めします。

システムが起動した後、ファイルがまだ存在するかどうかを確認します。

ls /forcefsck

存在する場合は、システム起動のたびにfsckが実行されるのを避けるために、それを削除することをお勧めします。

レスキューモードで fsck を実行する

レスキュー モードfsck を実行するには、さらにいくつかの手順が必要です。まず、 システムを再起動する準備をします。 MySQL/MariaDB などの重要なサービスを停止してから、次のように入力します。

reboot

起動中に shift キーを押し続けると、grub メニューが表示されます。 [詳細オプション] を選択します。

次に、「回復モード」を選択します。

次のメニューで「fsck 」を選択します。

/ ファイルシステムを再マウントするかどうかを尋ねられます。 「はい」 を選択します。

これと同様のものが表示されるはずです。

その後、「再開」 を選択すると、通常の起動を再開できます。

結論

このチュートリアルでは、fsck を使用して、さまざまな Linux ファイルシステムで整合性チェックを実行する方法を学びました。 fsck についてご質問がございましたら、お気軽に以下のコメント欄にご記入ください。