1#!/bin/sh 2# 3# e2croncheck -- run e2fsck automatically out of /etc/cron.weekly 4# 5# This script is intended to be run by the system administrator 6# periodically from the command line, or to be run once a week 7# or so by the cron daemon to check a mounted filesystem (normally 8# the root filesystem, but it could be used to check other filesystems 9# that are always mounted when the system is booted). 10# 11# Make sure you customize "VG" so it is your LVM volume group name, 12# "VOLUME" so it is the name of the filesystem's logical volume, 13# and "EMAIL" to be your e-mail address 14# 15# Written by Theodore Ts'o, Copyright 2007, 2008, 2009. 16# 17# This file may be redistributed under the terms of the 18# GNU Public License, version 2. 19# 20 21VG=ssd 22VOLUME=root 23SNAPSIZE=100m 24EMAIL=sysadmin@example.com 25 26TMPFILE=`mktemp ${TMPDIR:-/tmp}/e2fsck.log.XXXXXXXXXX` 27 28OPTS="-Fttv -C0" 29#OPTS="-Fttv -E fragcheck" 30 31set -e 32START="$(date +'%Y%m%d%H%M%S')" 33lvcreate -s -L ${SNAPSIZE} -n "${VOLUME}-snap" "${VG}/${VOLUME}" 34if nice logsave -as $TMPFILE e2fsck -p $OPTS "/dev/${VG}/${VOLUME}-snap" && \ 35 nice logsave -as $TMPFILE e2fsck -fy $OPTS "/dev/${VG}/${VOLUME}-snap" ; then 36 echo 'Background scrubbing succeeded!' 37 tune2fs -C 0 -T "${START}" "/dev/${VG}/${VOLUME}" 38else 39 echo 'Background scrubbing failed! Reboot to fsck soon!' 40 tune2fs -C 16000 -T "19000101" "/dev/${VG}/${VOLUME}" 41 if test -n "$RPT-EMAIL"; then 42 mail -s "E2fsck of /dev/${VG}/${VOLUME} failed!" $EMAIL < $TMPFILE 43 fi 44fi 45lvremove -f "${VG}/${VOLUME}-snap" 46rm $TMPFILE 47 48