fsck
fsck は "file system check" の略であり、Linux のファイルシステムをチェックしたり修復するのに使われます。通常、全てのファイルシステムをチェックするのに必要な時間をけずるため、fsck プログラムは異なる物理ディスクドライブのファイルシステムを同時に処理します (参照: man fsck
)。
Arch Linux のブートプロセスでは起動するたびに簡便に fsck を実行してドライブ上の全てのパーティションを自動的にチェックします。そのため、特に必要がないかぎりは基本的にコマンドラインを使用する必要はありません。
目次
ブート時のチェック
仕組み
2つの方法があります:
- mkinitcpio には fsck フックによって、マウントする前に root ファイルシステムを fsck するオプションがあります。これを使う場合、root を
rw
カーネルパラメータで読み書き可能でマウントする必要があります [1]。 - systemd は (
/etc/fstab
またはユーザーによるユニットファイルで指定された) fsck パス番号が 0 より大きいファイルシステムの fsck を実行します。root ファイルシステムの場合、最初にカーネルパラメータro
で読み取り専用でマウントして、それから fstab から読み書き可能で再度マウントする必要があります (defaults
マウントオプションにはrw
が含まれています)。
デフォルトで1番目の方法が推奨されています。インストールガイドに従った場合はこちらを使うことになります。2番目の方法を使いたい場合は、mkinitcpio.conf
から fsck フックを削除してカーネルコマンドラインで ro
を使ってください。どちらの方法を使っていたとしても、カーネルパラメータ fsck.mode=skip
を使うことで fsck を完全に無効化することが可能です。
強制的にチェック
カーネルパラメータで起動時に fsck.mode=force
を設定することで強制的に fsck をすることもできます。マシンに存在する全てのファイルシステムをチェックします。
Tips and tricks
破損ブロックを修復
破損箇所を自動的に修復するには、次を実行:
# fsck -a
破損ブロックをインタラクティブに修復
破損箇所を修復するには、次を実行:
# fsck -r <drive>
チェックの頻度を変更
デフォルトでは、fsck は30回起動するたびにファイルシステムをチェックします (パーティションごとに別々にカウントされます)。チェックの頻度を変更するには、次を実行:
# tune2fs -c 20 /dev/sda1
上の例では、20
が次のチェックを行うまでの起動回数です。
1
を設定すると起動時に毎回スキャンを行い、0
を設定すると一切スキャンしなくなります。
fstab のオプション
fstab はシステムの設定ファイルであり、マウントするパーティション (ファイルシステム) とファイルシステムツリーを Linux カーネルに指示するのに使われます。
基本的な /etc/fstab
エントリは以下のようになります:
/dev/sda1 / ext4 defaults 0 1 /dev/sda2 /other ext4 defaults 0 2 /dev/sda3 /win ntfs-3g defaults 0 0
6番目のカラム (太字) が fsck のオプションです。
- 0 = チェックしない。
- 1 = 最初にチェックするファイルシステム (パーティション)。
/
(root パーティション) は 1 に設定してください。 - 2 = 他のチェックするファイルシステム。
トラブルシューティング
分割した /usr パーティションで fsck が動作しない
/etc/mkinitcpio.conf
に必要なフックを記述していることを確認してください。また、このファイルを編集した後にはかならず initramfs イメージを再生成する必要があります。- Check your fstab! Only the root partition needs "1" at the end, everything else should have either "2" or "0". Carefully inspect it for other typos, as well.
ext2fs : no external journal
There are times (due to power failure) in which an ext(3/4) file system can corrupt beyond normal repair. Normally, there will be a prompt from fsck indicating that it cannot find an external journal. In this case, run the following commands:
Unmount the partition based on its directory
# umount <directory>
Write a new journal to the partition
# tune2fs -j /dev/<partition>
Run an fsck to repair the partition
# fsck -p /dev/<partition>