13984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt#!/bin/sh
23984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt#
33984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt# e2croncheck -- run e2fsck automatically out of /etc/cron.weekly
43984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt#
53984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt# This script is intended to be run by the system administrator 
63984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt# periodically from the command line, or to be run once a week
73984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt# or so by the cron daemon to check a mounted filesystem (normally
83984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt# the root filesystem, but it could be used to check other filesystems
93984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt# that are always mounted when the system is booted).
103984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt#
113984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt# Make sure you customize "VG" so it is your LVM volume group name, 
123984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt# "VOLUME" so it is the name of the filesystem's logical volume, 
133984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt# and "EMAIL" to be your e-mail address
143984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt#
153984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt# Written by Theodore Ts'o, Copyright 2007, 2008, 2009.
163984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt#
173984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt# This file may be redistributed under the terms of the 
183984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt# GNU Public License, version 2.
193984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt#
203984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
213984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry ShmidtVG=ssd
223984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry ShmidtVOLUME=root
233984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry ShmidtSNAPSIZE=100m
243984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry ShmidtEMAIL=sysadmin@example.com
253984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
263984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry ShmidtTMPFILE=`mktemp -t e2fsck.log.XXXXXXXXXX`
273984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
283984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry ShmidtOPTS="-Fttv -C0"
293984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt#OPTS="-Fttv -E fragcheck"
303984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
313984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidtset -e
323984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry ShmidtSTART="$(date +'%Y%m%d%H%M%S')"
333984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidtlvcreate -s -L ${SNAPSIZE} -n "${VOLUME}-snap" "${VG}/${VOLUME}"
343984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidtif nice logsave -as $TMPFILE e2fsck -p $OPTS "/dev/${VG}/${VOLUME}-snap" && \
353984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt   nice logsave -as $TMPFILE e2fsck -fy $OPTS "/dev/${VG}/${VOLUME}-snap" ; then
363984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt  echo 'Background scrubbing succeeded!'
373984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt  tune2fs -C 0 -T "${START}" "/dev/${VG}/${VOLUME}"
383984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidtelse
393984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt  echo 'Background scrubbing failed! Reboot to fsck soon!'
403984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt  tune2fs -C 16000 -T "19000101" "/dev/${VG}/${VOLUME}"
413984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt  if test -n "$RPT-EMAIL"; then 
423984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt    mail -s "E2fsck of /dev/${VG}/${VOLUME} failed!" $EMAIL < $TMPFILE
433984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt  fi
443984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidtfi
453984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidtlvremove -f "${VG}/${VOLUME}-snap"
463984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidtrm $TMPFILE
473984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
48