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