web-dev-qa-db-ja.com

起動ではなくシャットダウン時にfsck

通常、fsckは、起動時に30回程度の再起動ごとに自動的に実行されます。場合によっては、非常に遅くなり、起動が30分以上遅れることがあります。

代わりにシャットダウン時にfsckを実行する方法はありますか? (シャットダウンが遅れてもかまいません。起動時間がより重要です。)

DebianまたはScientificLinuxディストリビューションにこれが欲しいです。

7
Diego Herranz

シャットダウン中にいくつかのことを確認できますが、ルートファイルシステムでfsckを効果的に実行することはできません。ご覧のとおり、fsckでは、修復を試みる前にファイルシステムがマウントされていない必要があります。これは、initramfsから実行している間、起動中にのみ可能です。

5

Debianの場合、 AutoFsck を使用できますが、パッケージはサポートされなくなりました(最終更新2010)。したがって、それを覚えておいてください。

もう1つの方法は、シャットダウンスクリプトにFSCK/bashスクリプトを配置することです。 SE linux/centosなどの場合、chkconfigレベル0(停止)と6(再起動)を使用します。 chkconfig --levels 0 rc.local-shutdown onスクリプトを/etc/rc.d/init.d/に配置します。 (再起動のレベル6)

Debianの場合、スクリプトを/etc/rc6.K00scriptnameと/etc/rc0.d/K00scriptnameに配置します。

スクリプトに関しては、次のようなものを使用できます。

#!/bin/bash
NETFS="nonfs,nosmbfs,nocifs,nocodafs,noncpfs,nosysfs,nousbfs,noshfs,nofuse,nofuseblk"

if (( `tune2fs -l /dev/sda2 | awk '/Mount count/{print $3}'` > `tune2fs -l /dev/sda2 | awk '/Maximum mount count/{print $4-1}' ))
then /sbin/fsck -A -T -C -a -t $NETFS 2>/dev/null
fi

このコードは私が書いたのではなく、 archlinux フォーラムの誰かが書いたものです。私はコードを試していません。ですから、それも覚えておいてください。

または、スクリプト内で/sbin/fsck -A -T -C -a -- -fのような単純なことを行うこともできます。

1
Sc0rian

シャットダウン時のfsckの問題は、シャットダウン時にファイルシステムをアンマウントしていることです。 fsが汚れていても、fsをアンマウントしても、完全性をチェックする必要はありません。マウントしている間、fsckを実行して、データのメタデータが正しいかどうか、およびfsが報告するとおりにfsの適切な情報を持っているかどうかを確認します。これは、fsがマウントされるときに発生する可能性があります。これは、fsがマウントされるときに、fsの整合性をチェックするコードが実行されるためです。

これは、fsがダーティであってもレイジーアンマウントを実行できる理由を推測しますが、fsがダーティの場合はレイジーまたは強制アンマウントはありません;)

通常、ジャーナリングfsは、ひどくねじ込まれていない限り、起動するのに長い時間はかからないはずです。 xfs_repairは非常に洗練されており、btrfsが正常に機能している間にオンラインで実行できます。別の話です。

1