概要
fsck (file system check) は、ディスクパーティションに保存されたファイルシステムの構造的整合性をチェックし、必要に応じて修復を試みるツールです。停電やハードウェアエラーなどによりシステムが突然終了すると、ファイルシステムのメタデータ (inode、スーパーブロックなど) が破損する可能性があります。fsckはこのような損傷を検出し、修復してファイルシステムを正常な状態に戻します。`mkfs`がファイルシステムを作成するツールであるならば、`fsck`はファイルシステムを保守するツールと言えます。
主な特徴
fsckコマンドの主な特徴は以下の通りです。
- ファイルシステムの整合性をチェックします。
- 破損したファイルシステムを対話モードまたは自動モードで修復できます。
- `fsck.ext4`、`fsck.xfs`など、特定のファイルシステム専用ツールを呼び出すフロントエンドとして機能します。
- システム起動時に自動的に実行され、ファイルシステムの損傷を確認します。
fsckとfsck.<ファイルシステム>
fsckは、特定のファイルシステムのチェックツールを呼び出すラッパーです。`fsck -t ext4 /dev/sda1`コマンドは、内部的に`fsck.ext4 /dev/sda1`を実行するのと同等です。
- fsck.ext4: ext2/3/4ファイルシステムをチェックおよび修復するツールです。`e2fsck`とも呼ばれます。
- fsck.xfs: XFSファイルシステムをチェックするツールです。`xfs_repair`とも呼ばれます。
- fsck.vfat: FATファイルシステムをチェックするツールです。
主なオプション
fsckは、ファイルシステムタイプを指定する`-t`オプションと、修復方法を制御する様々なオプションを提供します。
1) 実行オプション
生成されたコマンド:
コマンドを組み合わせてみてください。
説明:
`fsck` コマンドを実行します。
これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。
使用例
fsckコマンドの様々な使用例を通じて機能を習得してください。**アンマウントされた状態でのみチェック/修復が可能です。**
ファイルシステムのチェック
sudo fsck /dev/sda1
`/dev/sda1`パーティションのファイルシステムをチェックします。マウントが解除された状態である必要があります。
ファイルシステムの自動修復
sudo fsck -y /dev/sdb1
`/dev/sdb1`パーティションのファイルシステムエラーをユーザーの確認なしに自動的に修復します。
ファイルシステムタイプを指定してチェック
sudo fsck -t ext4 /dev/sdc1
`ext4`ファイルシステムタイプを明示的に指定して`/dev/sdc1`をチェックします。これは`fsck.ext4`を直接呼び出すのと同等です。
すべてのファイルシステムのチェック
sudo fsck -A
`/etc/fstab`に定義されているすべてのファイルシステムを自動的にチェックします。起動時と同様の動作を実行します。
インストール
fsckは`util-linux`パッケージの一部であり、ほとんどのLinuxディストリビューションにデフォルトで含まれています。別途インストールは不要です。ただし、特定のファイルシステム専用ツールは別途パッケージのインストールが必要な場合があります。
XFSツールをインストール (Debian/Ubuntu)
sudo apt update
sudo apt install -y xfsprogs
ext4ツールをインストール (Debian/Ubuntu)
sudo apt update
sudo apt install -y e2fsprogs
ヒント & 注意事項
fsckコマンド使用時の注意点をまとめました。
ヒント
- fsckは**必ずアンマウントされた状態**で実行する必要があります。マウントされたパーティションに対して実行すると、データ破損や損失が発生する可能性があります。システムのルートファイルシステム (`/`) をチェックするには、シングルユーザーモードで起動するか、ライブCD/USBを使用する必要があります。
- 自動修復オプション (`-y`) は便利ですが、損傷の程度がひどい場合、重要なデータを削除してしまう可能性もあります。そのため、重要なデータがある場合は`-n`オプションでまずチェックする方が安全です。
- `fsck`を実行する前に、`umount`コマンドで対象パーティションをアンマウントする必要があります。(例: `sudo umount /dev/sdb1`)