良いシステムに悪いことが起こることがあります。
幸い、あなたは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コマンドについて何か新しいことを学んだことを願っています。コメントや質問がある場合は、以下に残してください。