GNU/Linux >> Linux の 問題 >  >> Linux

Linuxのfsckコマンドでファイルシステムエラーをチェックして修復する

良いシステムに悪いことが起こることがあります。

幸い、あなたはLinuxユーザーであり、 fsckを持っています。 (ファイルシステムチェック)破損している可能性のあるファイルシステムを支援します。このユーティリティは、ファイルシステムのチェックと(オプションで)修復に使用されます。

fsckを使用したいシナリオがいくつかあります。通常、システムが起動しない場合、デバイス(外部ドライブまたはストレージメディア)が正しく機能していない場合、またはファイルの破損の形跡が見られる場合は、このコマンドを実行することをお勧めします。

Fsckは、実際にはfsck.vfat、fsck.ext2などのファイルシステム固有のチェッカーの「フロントエンド」です。これらを指定する必要はありませんが、より高度なオプションを見つけることができる場合があります。これらのより正確なコマンドのページ。

fsckコマンドの概要

fsckコマンドは、ほとんどのLinuxコマンドと同様のパターンに従います。

fsck [options] [filesystem]

ファイルシステムを指定しない場合、システムはfstabファイル(/etc/fstab)を分析します。 )デバイスがスキャンするため。

このコマンドは、rootユーザーとして実行するか、sudoで使用する必要があります。

fdiskまたはdfコマンドを使用して、Linuxのハードドライブを一覧表示できます。このようにして、fsckコマンドでチェックするデバイスを指定できます。

Disk /dev/nvme0n1: 238.49 GiB, 256060514304 bytes, 500118192 sectors
Disk model: THNSN5256GPUK NVMe TOSHIBA 256GB        
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 014A45DC-22A2-4FC0-BEEA-25A6F2406380

Device            Start       End   Sectors   Size Type
/dev/nvme0n1p1     2048   1050623   1048576   512M EFI System
/dev/nvme0n1p2  1050624  98563270  97512647  46.5G Linux filesystem
/dev/nvme0n1p3 98564096 500117503 401553408 191.5G Linux filesystem

fsckを実行する前にデバイスをアンマウントします

マウントされたデバイスでfsckを実行しないでください。ファイルへの損傷を避けるために、最初にターゲットをアンマウントする必要があります。

マウントされたデバイスでfsckを実行しようとすると、次のようなエラーが表示されます。

[email protected]:~$ sudo fsck /dev/sda3
fsck from util-linux 2.34
e2fsck 1.45.5 (07-Jan-2020)
/dev/sda3 is mounted.
e2fsck: Cannot continue, aborting.

通常の正常なドライブでfsckを実行すると、次のようになります。

[email protected]:~$ sudo fsck /dev/sda2
fsck from util-linux 2.34
fsck.fat 4.1 (2017-01-24)
/dev/sda2: 5 files, 1967/1972 clusters

fsckは/dev/sdaのようなデバイス名を受け入れますが 、デバイスのマウントとアンマウントとの混同を避けるために、UUIDを入力することを選択できます。 UUIDはデバイスに割り当てられた固定値であり、これらのシステム変更の影響を受けません。

fsckコマンドの終了コードを理解する

これは、ディスクを検査した後にfsckから返される可能性のあるコードのリストです。 1つのディスクを分析する場合、終了コードはこれらのコードの合計になります。複数のデバイスでfsckを使用している場合は、ビット単位のORが返されます 2つの合計の。

  • 0-エラーなし
  • 1-ファイルシステムエラーが修正されました
  • 2-システムを再起動する必要があります
  • 4-ファイルシステムエラーが修正されないままになっている
  • 8-操作エラー
  • 16-使用法または構文エラー
  • 32-ユーザーリクエストによりFsckがキャンセルされました
  • 128-共有ライブラリエラー

echo $?を使用して、最後に実行したコマンドの終了コードを確認できます。 コマンド。

fsckコマンドの実用的な使用法

fsckコマンドに少し慣れてきたので、このコマンドの実際の使用例を見てみましょう。

USBディスクおよびその他のリムーバブルデバイスを修復します

ここでは、問題のあるデバイス/dev/sdbをすでに特定していると仮定します。 。

まず、ドライブがマウント解除されていることを確認する必要があります:

sudo umount /dev/sdb

次に、fsckコマンドを実行します:

sudo fsck /dev/sdb

出力にエラーがないか確認してください。何も表示されない場合は、echo $?で終了コードを確認してください 。

自動修正を可能にするために追加できるオプションフラグもいくつかあります。ただし、これらのコマンドは標準化されていないため、ファイルシステムの種類を確認し、その特定のマニュアルページのドキュメントを比較する必要があります。

それにもかかわらず、通常は-pを使用できます fsckが自動的に修復を適用できるようにします。

sudo fsck -p /dev/sdb

同様に、-y 検出されたファイルシステムの破損に修正を適用します。

ルートファイルシステムを修復します

システムがアクティブな間は、ルートパーティションをアンマウントできません。メインのファイルシステムが破損していると思われる場合は、ここで別の方法を使用する必要があります。

実際に使用できるいくつかの異なるオプションがあります。起動時にレスキューモードでfsckを実行するか、リカバリをテーマにしたライブCDを使用できます。

多くのLinuxディストリビューションは、特定の回数のブート試行が失敗した後、起動時にfsckを自動的に強制します。問題を自分の手に委ねたい場合は、自分でこれを行うようにシステムをスケジュールできます。

最新のLinuxバージョンのほとんどは、tune2fsと呼ばれるツールを備えています。

sudo tune2fs -c 1 /dev/sda

ルートデバイスがdev/sdaであると想定します 、これは入力するコマンドです。

ここで実際に起こっているのは、システム設定を変更して、fsckがnごとに実行されるようにすることです。 ブーツの数(例では1)。これを標準の時間間隔に設定することもできます。オプションはd ays、 w eeks、または m オンス。

1週間以内にチェックが行われなかった場合、起動時にいつでもfsckを実行したいとします。 -iを使用できます 間隔を指定すると、コマンドは次のようになります。

sudo tune2fs -i 1w /dev/sda	

systemdを使用している場合は、次のように入力することで、次回の起動時にfsckを強制的に実行できます。

fsck.mode=force
fsck.repair=yes

結論

詳細については、いつでもマニュアルページを参照してください。 man fsckを使用するだけです ターミナルで。

fsckコマンドについて何か新しいことを学んだことを願っています。コメントや質問がある場合は、以下に残してください。


Linux
  1. jpsコマンドを使用してLinux上のJavaプロセスを確認します

  2. LinuxでのJQコマンドと例

  3. Linux –起動時にルートファイルシステムのチェック(およびオプションで修正)を強制するにはどうすればよいですか?

  1. Linuxのwatchコマンドでコマンドとタスクを監視する

  2. statコマンドを使用してLinuxのファイルステータスを確認します

  3. dfおよびduコマンドを使用してLinuxのディスク容量を確認する

  1. fsckコマンドを使用してファイルシステムをチェックおよび修復する方法

  2. ファイルシステムをチェックして修復する10のLinux Fsckコマンドの例

  3. Linux コマンドを使用して OS とバージョンを確認する方法