Linuxの運用中に突然ファイルが開けなくなったり、システムが異常終了したりしたことはありませんか?そのようなとき、ファイルシステムの不整合が原因であることがあります。そんなトラブルに対応するための強力なコマンドが「fsck」です。
fsck(File System Consistency Check)は、Linuxにおいてファイルシステムの整合性をチェックし、必要に応じて修復するための重要なツールです。この記事では、fsckの基本的な使い方から実践的な使用例、注意すべきポイントまで、初心者にもわかりやすく解説していきます。
fsck(File System Consistency Check)は、その名の通りファイルシステムの整合性をチェックするためのLinuxコマンドです。突然の電源断やクラッシュなどでファイルシステムに不整合が発生した場合、このコマンドを使って検査し、自動または手動で修復を行います。
Linuxではext4やxfs、btrfsなど、複数のファイルシステムが使用されています。fsckはそれぞれのファイルシステムに対応した検査ツール(例:e2fsck
, xfs_repair
など)を呼び出すラッパーとして機能しています。
システムトラブル時だけでなく、定期的にfsckを使うことでディスクの健康状態を保ち、データ消失のリスクを減らすことが可能です。
fsckコマンドはスーパーユーザー権限で実行する必要があります。以下は最もシンプルな使用例です。
sudo fsck /dev/sda1
このコマンドは、/dev/sda1
というデバイス(通常はディスクのパーティション)に対してチェックを行います。fsckはファイルシステムの種類を自動で判別し、適切なコマンドを実行します。
また、読み取り専用モードでのチェックも可能です。
sudo fsck -n /dev/sda1
-n
オプションを使うと、「何も変更しないで確認だけしたい」という場合に便利です。修復はせず、エラーがあるかどうかだけを教えてくれます。
fsckは多くのオプションを備えており、目的に応じて使い分けることができます。以下に代表的なオプションを紹介します。
-a
: 自動的に修復を行う(非推奨。代わりに -y
を使用するのが一般的)-y
: 全ての質問に「yes」で答えて自動修復-n
: 全ての質問に「no」で答えてチェックのみ-r
: 対話形式で修復を進める(非推奨)-C
: 進行状況を表示たとえば、次のように使用できます。
sudo fsck -y /dev/sdb1
このコマンドは、エラーがあれば全て自動的に修復します。システムが無人で動いている場合などに便利ですが、変更内容を確認できないので注意が必要です。
fsckを実行する上で、最も重要な注意点は「マウントされた状態で実行しないこと」です。マウントされたファイルシステムにfsckをかけると、データ破損のリスクがあります。
以下のコマンドでマウント状態を確認できます。
mount | grep sda1
もしマウントされている場合は、アンマウントしてから実行するようにしましょう。
sudo umount /dev/sda1
sudo fsck /dev/sda1
また、ルートファイルシステムのようにアンマウントできないものは、シングルユーザーモードやLive CD/USBを利用して実行します。
システムがクラッシュして起動しなくなった場合、Live USBで起動し、対象のパーティションにfsckを実行します。
sudo fsck -y /dev/sda2
このとき、誤って間違ったパーティションを指定しないようにlsblk
などでデバイスを確認してから実行するのがポイントです。
サーバーでは定期的にfsckを行うことで、未然にトラブルを防げます。例えば、crontabに以下のようなスクリプトを週1回仕込むこともできます。
#!/bin/bash
if ! mount | grep -q "/dev/sdb1"; then
fsck -y /dev/sdb1
fi
このスクリプトは、マウントされていなければfsckを実行する安全なチェック方法です。
fsckはファイルシステムごとに実体が異なります。代表的なものを以下に紹介します。
ファイルシステム | チェックコマンド |
---|---|
ext2/ext3/ext4 | e2fsck |
xfs | xfs_repair |
btrfs | btrfs check |
vfat | fsck.vfat |
xfsに対してfsckを使おうとすると、エラーになります。代わりにxfs_repair
を使いましょう。
sudo xfs_repair /dev/sdc1
fsckは万能ではないため、ファイルシステムの種類ごとの適切なコマンドを選択することが重要です。
Linuxでは起動時に自動でfsckを実行させることが可能です。これは /etc/fstab
の設定や、各パーティションに設定された「fs_passno」という値で制御されています。
たとえば、/etc/fstab
の末尾にある数字「1」や「2」は、fsckの優先度を意味しています。
UUID=xxxxx / ext4 defaults 0 1
この例では、起動時にルートパーティションのfsckが実行されるように設定されています。数字が「0」の場合はスキップされます。
-y
を指定(ただし、事前のバックアップ推奨)fsckはLinuxシステムにとって非常に重要な保守ツールです。ファイルシステムのトラブルを未然に防ぎ、信頼性の高いシステム運用を行うために、正しい知識と使い方を身につけておくことが不可欠です。トラブルが発生してから焦るのではなく、日頃からfsckを意識しておくことで、安心・安全なLinuxライフを送りましょう。