USBドライブをマウントおよびアンマウントするバックアップスクリプトがあります。
警告が表示されていることに気づきました。
EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
私の質問:mountコマンドの実行時にe2fsckを自動的に実行するにはどうすればよいですか?
これは/etc/fsck
でどのように見えるかです
UUID=c870ccb3-e472-4a3e-8e82-65f4fdb73b38 /media/backup_disk_1 auto defaults,rw,noauto 0 3
つまり、<pass>
は3
なので、必要なときにfsck
が実行されることを期待していました。
[〜#〜]編集[〜#〜]
これは私が与えられた答えに基づいてそれをやった方法です:
(Bashスクリプトで)
function fsck_disk {
UUID=$1
echo "Checking if we need to fsck $UUID"
MCOUNT=`tune2fs -l "UUID=$UUID" 2> /dev/null | sed -n '/Mount count:\s\+/s///p'`
if [ "$MCOUNT" -eq "$MCOUNT" ] 2> /dev/null
then
echo "Mount count = $MCOUNT"
if (( $MCOUNT > 30 ))
then
echo "Time to fsck"
fsck -a UUID=$UUID \
1>> output.log \
2>> error.log
else
echo "Not yet time to fsck"
fi
fi
}
fsck_disk a60b1234-c123-123e-b4d1-a4a111ab2222
man fstab
によると:
6番目のフィールド(fs_passno)。このフィールドは、再起動時にファイルシステムチェックが実行される順序を決定するためにfsck(8)プログラムによって使用されます。ルートファイルシステムはfs_passnoを1で指定し、他のファイルシステムはfs_passnoを2で指定する必要があります。ドライブ内のファイルシステムは順次チェックされますが、ハードウェアで利用可能な並列処理を利用するために、異なるドライブ上のファイルシステムも同時にチェックされます。 。 6番目のフィールドが存在しないかゼロの場合、ゼロの値が返され、fsckはファイルシステムをチェックする必要がないと見なします。
したがって、3
は無効です。さらに、fstab
は、デバイスがマウントされるたびにではなく、起動時間のチェックにのみ影響します。したがって、起動中に確認するには、6番目のフィールドを2
に変更します。すべてのマウントをチェックしたい場合は、簡単なスクリプトで実行するか、エイリアスを作成することもできます(たとえば
alias bk_mount='fsck -a UUID=c870ccb3-e472-4a3e-8e82-65f4fdb73b38 && \
mount /media/backup_disk_1'
この警告はかなり無意味なので、単に無視するか、tune2fs -c 0 /dev/sdb
を使用して取り除くことができます。特にext3/4では、Xマウント後にファイルシステムをfsckする理由は実際にはありません。これは、ext2が90年代に新しくなったときからの引き継ぎであり、「万が一に備えて」「良いアイデア」であると考えられていました。