web-dev-qa-db-ja.com

すべての(関連する)ファイルシステム-すべてのブートでfsckを強制する方法?

私は、debian 6および3パーティション(FATおよび2x ext2)のファンレスPC(実際には数百台)を使用しています。システムには電源ボタンがないので、ほとんどの人は、init 0(または同等のもの)ではなく、プラグを「シャットダウン」するようにヤンクする傾向があります。その結果、ファイルシステムはかなり急速にエラーを構築します。

'shutdown -rF'を使用してfsckを強制的に実行しようとしましたが、これは機能していないようです。各マウントポイントを確認するようにシステムに指示する方法があるかどうか疑問に思っています/ FSそれらがマウントされる前に。

/ etc/fstabでfsckパラメータを設定してみました。これにより、通常「エラーが見つかりました。 fsckを手動で実行してください」というメッセージが表示されます。

他に試すオプションはありますか?

14
ethrbunny

/etc/init.d/checkfs.shにはif [ -f /forcefsck ] || grep -s -w -i "forcefsck" /proc/cmdlineという行があるため、カーネルコマンドラインでforcefsckを指定するか、シャットダウン時に/forcefsckファイルを生成すると、次回の再起動時にfsckが発生します。

Fsckが手動で実行されないようにするには、fsck-yオプションを使用して自動的にエラーを修正するように依頼し、次の/ etc/default/rcSエントリのnoをyesにコメント解除して変更します。編集後は次のようになります。

# automatically repair filesystems with inconsistencies during boot
FSCKFIX=yes

1つのオプション(forcefsckまたはFSCKFIX)は、他のオプションを意味しません。

16

ブートローダーにfsck.mode=forceカーネルパラメータを追加します。このオプションをGRUB_CMDLINE_LINUX_DEFAULT=内の/etc/default/grub変数に追加します。ルートとして、新しいGRUB構成ファイルを生成します。

[root@Host]# grub-mkconfig -o /boot/grub/grub.cfg

このパラメーターは、マウントポイントのルート内にforcefsckファイルを作成するのと同じ効果があります。

checkfs.shスクリプトを使用するソリューションは、Debianにより適していますが、他のディストリビューションでは機能しません。

8
user34720

私は私の答えを編集しています:

コマンドは次のとおりです。

Sudo tune2fs -c 1 /dev/sdX

manpagesによると、tune2fsの-c引数は、パーティションのマウントのインスタンス数をカウントします。したがって、1はすべてのインスタンスのマウント後にfsをチェックすることを強制します。

http://man7.org/linux/man-pages/man8/tune2fs.8.html

7
xitij