ウェブサイト検索

Linuxでfsckコマンドを使用する方法


私たちの重要なデータはすべて、何らかの種類のファイルシステムに保存されており、ファイルシステムの問題は必ず発生します。Linuxでは、fsckコマンドを使ってファイルシステムのエラーを見つけて修正することができます。

ファイルシステムはソフトウェアです

ファイルシステムはコンピュータの最も重要なコンポーネントの一つです。ファイルシステムがなければ、コンピュータはハードドライブにデータを保存できません。ハードドライブが回転する機械的なプラッタであっても、ソリッドステートドライブであっても同様です。実際、オペレーティングシステムをハードドライブにインストールする前に、ファイルシステムを作成する必要があります。オペレーティングシステムのファイルが保存されるものが必要です。そのため、ファイルシステムはインストールプロセス中に作成されます。

ファイルシステムはソフトウェアによって作成され、ソフトウェアによって書き込まれ、ソフトウェアによって読み取られます。ご存知のように、すべての複雑なソフトウェアにはバグがあります。私たちのデータは非常に重要なので、ファイルシステムやそれを作成・使用するソフトウェアに大きな信頼を置いています。もし何か問題が発生すると、ファイルシステムの一部にアクセスできなくなったり、さらには全体のパーティションにアクセスできなくなる可能性があります。

現代のジャーナリングファイルシステムは、突然の電源喪失やシステムクラッシュによって引き起こされる可能性のある問題に対処するのが得意です。これらは堅牢ですが、無敵ではありません。内部のテーブルが混乱すると、各ファイルがドライブのどこにあるか、サイズはどのくらいか、名前は何か、設定されているファイルの権限は何かを見失うことがあります。

コマンドfsckは、ファイルシステムが正常であることを確認できるようにします。問題が見つかると、通常はそれらを修正することもできます。

離陸前チェックを行う

fsckを使用するにはsudo権限が必要です。ファイルシステムに変更を加える可能性のある任意のコマンドは注意して扱う必要があり、何をしているのか理解している人に制限されるべきです。

パイロットは航空機に飛び乗り、エンジンを始動させ、青い空に飛び立つわけではありません。彼らは離陸前のチェックを行います。そうしなければならない理由は大きすぎます。それは身につけるべき良い習慣です。fsckを使用する前に、正しいドライブで使用することを確認する必要があります。したがって、fsckに関して何かを行う前に、少し偵察を行うつもりです。

私たちは始めます

fdisk

それをパイプで通して

less

特定のパーティションに関する情報を求めているわけではありません。その使用によって

-l

(リスト) オプション

fdisk

それが存在する場合、すべてのデバイスで見つかったパーティションテーブルを「/proc/partitions」ファイルにリストします。

sudo fdisk -l | less

/dev/sda および /dev/sdb のエントリを見ることができます。他のエントリがコンピュータに存在するかもしれないので、ファイルをスクロールして確認することができます。

/dev/sda のパーティションは /dev/sda1、/dev/sda2、/dev/sda3 として表示されます。つまり、最初のドライブには3つのパーティションがあります。parted コマンドを使うことで、もう少し情報を見ることができます。パーティションテーブルをターミナルウィンドウに表示するために、'print' オプションを使用します。

sudo parted /dev/sda 'print'

今回は、各パーティションのファイルシステムの種類を含む追加情報を得ています。

Model: ATA VBOX HARDDISK (scsi) 

Disk /dev/sda: 34.4GB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

Disk Flags:

Number Start End Size File system Name Flags

1 1049kB 2097kB 1049kB bios_grub

2 2097kB 540MB 538MB fat32 EFI System Partition boot, esp

3 540MB 34.4GB 33.8GB ext4

このテストコンピュータには3つのドライブがあります。これらは他の2つのドライブ/dev/sdbと/dev/sdcの結果です。これらのファイルシステムには「名前」フィールドがないことに注意してください。

sudo parted /dev/sdb 'print'
Model: ATA VBOX HARDDISK (scsi) 

Disk /dev/sdb: 21.5GB

Sector size (logical/physical): 512B/512B

Partition Table: msdos

Disk Flags:

Number Start End Size Type File system Flags

1 1049kB 21.5GB 21.5GB primary ext4

sudo parted /dev/sdc 'print'
Model: ATA VBOX HARDDISK (scsi) 

Disk /dev/sdc: 21.5GB

Sector size (logical/physical): 512B/512B

Partition Table: msdos

Disk Flags:

Number Start End Size Type File system Flags

1 1049kB 21.5GB 21.5GB primary ext3

第二ドライブと第三ドライブは偶然にも同じサイズで、各ドライブには単一のパーティションがあります。しかし、第二ドライブのファイルシステムはext4であり、第三ドライブのファイルシステムは古いext3です。

私たちはfsckにパーティション識別子を渡し、そのパーティションのファイルシステムをチェックします。しかし、マウントされたファイルシステムに対してfsckを実行することはできません。ドライブをアンマウントする必要があります。そのためには、パーティションがマウントされているマウントポイントを知る必要があります。

私たちはdfコマンドを使ってそれを簡単に見つけることができます。

df /dev/sdb1
df /dev/sdc1

fsckコマンドの使用

必要な情報はすべて揃っています。最初に行うことは、チェックするファイルシステムのアンマウントです。私たちは、/dev/sdb の最初で唯一のパーティションである /dev/sdb1 のファイルシステムに取り組みます。以前に見たように、これは ext4 ファイルシステムであり、"/run/mount/dave/sata2" にマウントされています。

私たちはumountコマンドを使用します。注意してください、「umount」には「n」は含まれていません。

sudo umount /run/mount/dave/sata2

umountを使用すると、知らせがないのが良い知らせです。コマンドプロンプトに静かに戻されたら、私たちは準備が整ったことになります。

sudo fsck /dev/sdb1

このファイルシステムはクリーンであると報告されています。つまり、ファイルシステムにエラーや問題がないと報告されているということです。より詳細なファイルシステムチェックは自動的には行われません。また、fsck がシェルに返したリターンコードも見ることができます。

echo $?

返り値がゼロであることは、エラーがないことを示します。可能な返り値のコードは次のとおりです:

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

ファイルシステムがクリーンであると報告されているにもかかわらず、-f(強制)オプションを使用して、ファイルシステムチェックを強制的に実行することができます。

sudo fsck /dev/sdb1 -f

今回は、チェックの完了に時間がかかりますが、ファイルシステムのより徹底的なテストを行います。私たちのファイルシステムは確かにクリーンであり、エラーは報告されません。テストが進行中に問題が見つかった場合は、fsckに問題を修正させるか、エラーを無視するように促されます。

テストが終了したら、ファイルシステムを再マウントする必要があります。これを行う最も簡単な方法は、mount コマンドを -a(すべて)オプションとともに使用することです。これにより、"/etc/fstab" がファイルシステムのリストとしてチェックされ、通常のブートの際と同様にすべてがマウントされることが保証されます。

sudo mount -a

パーティション上のファイルシステムの種類を fsck に伝える必要はないことに注意してください。このユーティリティはファイルシステムを調べることでそれを判断します。つまり、私たちはテストPC上の /dev/sdc1 に対してファイルシステムチェックを強制することができ、これは /dev/sdb1 の上で使用したのと全く同じコマンドを使います。この /dev/sdb1 は ext4 パーティションです。

sudo fsck /dev/sdc1 -f

ファイルシステムの修復にすぐに飛び込むのは望ましくないかもしれません。飛び込む前に様子を見る方が良いかもしれません。fsckに修正を提案せず、問題をターミナルウィンドウに報告するように依頼することができます。-N(ドライラン)オプションはまさにそれを行います:

sudo fsck -N /dev/sdb1

その逆は、fsckにエラーを見つけても促すことをやめて、ただ修正を続行するように指示することです。これを行うには、-y(プロンプトなし)オプションを使用します。

sudo fsck -y /dev/sdb1

ルートパーティションでのfsckの使用

マウントされたパーティションでは fsck を使用できませんが、コンピュータを起動するためにはルートパーティションをマウントする必要があります。では、ルートパーティションで fsck をどのように実行できますか?その答えは、ブートプロセスを中断し、リカバリモードで fsck を実行することです。

コンピュータが起動している間、「Shift」キーを押し続けます。タイミングが合っていれば、Linuxには起動しません。起動プロセスは白黒のメニューで停止します。この文章で使用しているテストマシンはUbuntuを実行していましたが、他のディストリビューションでも同様のタイプのメニューが表示されますが、見た目は異なる場合があります。スクリーンショットで「Ubuntu」と表示されている場所には、あなたのディストリビューションの名前が表示されます。

「上矢印」と「下矢印」キーでハイライトバーを移動して、「Ubuntuの詳細オプション」メニュー項目を選択します。「Enter」を押して次の画面に進みます。

「(リカバリーモード)」で終わるオプションを選択してください。私たちの例では、「Ubuntu, with Linux 5.11.0-20-generic (recovery mode).」です。「Enter」キーを押してください。

リカバリーメニューが表示されます。「すべてのファイルシステムをチェックするfsck」を選択し、ハイライトを「OK」ボタンに移動させるために「Tab」キーを押します。「Enter」を押してください。

ルートパーティションが、あなたの「/etc/fstab」ファイルに定義されている他のパーティションと一緒にマウントされるという通知が表示されます。

「Tab」キーを押してハイライトを「はい」ボタンに移動し、「Enter」を押してください。

インタラクティブモードでfsckが実行されるのが見えるでしょう。問題がある場合は、fsckに修正させるか、無視するかのプロンプトが表示されます。ファイルシステムがチェックされると、再びリカバリメニューが表示されます。

「再開」オプションを選択し、「Tab」キーを押してハイライトを「OK」ボタンに移動させ、「Enter」を押してください。ブートプロセスが再開され、Linuxが起動します。

リカバリーモードでの起動は一部のドライバーに影響を与える可能性があるため、Linuxに起動したらすぐに再起動することが良い習慣です。これにより、コンピューターが標準の動作を行っていることが保証されます。

物事がうまくいかない時

セーフティーネットは理由があって存在します。fsckコマンドを知っておきましょう。いつかそれを真剣に使用する必要が生じたとき、事前に慣れておいてよかったと思えるでしょう。

Linuxコマンド

ファイル

t

プロセス

A

ネットワーキング

netstat
ping
traceroute
ip
ss
whois
fail2ban
bmon
dig
finger
nmap
ftp
curl
wget
who
whoami
w
iptables
ssh-keygen
ufw
arping
firewalld

関連: 開発者と愛好者のための最高のLinuxノートパソコン

関連記事: