This is an excerpt of what I use for backups using lvm snapshots... works fine on FC16.
We retain a few GB of free space in the LVM storage for the snapshot,
which generally suffices on most systems unless there is a lot
of updates happening during backups, which is rare on the systems
we use this on.
case "${TAPE}${RHOST}" in
--)
# dumping to stdout
RTAPE="-"
;;
*)
# using rsh/rmt(8) RTAPE="${RHOST}:${TAPE}"
;;
esac
LVCREATE=""
if [ -x /sbin/lvcreate ]
then LVCREATE="/sbin/lvcreate" LVREMOVE="/sbin/lvremove" LVDISPLAY="/sbin/lvdisplay"
elif [ -x /usr/sbin/lvcreate ]
then LVCREATE="/usr/sbin/lvcreate" LVREMOVE="/usr/sbin/lvremove" LVDISPLAY="/usr/sbin/lvdisplay"
fi
# workaround FC16 bug; do it again if needed
for i in 1 2 3 4 5
do $LVDISPLAY | grep $SNAPDEV >/dev/null
if [ $? = 0 ] then # its still there! sleep 5 echo `date` clearing snapshot again 1>&2 $LVREMOVE -f $SNAPDEV 1>&2 else break
fi
done
$LVDISPLAY | grep $SNAPDEV >/dev/null
if [ $? = 0 ]
then echo `date` gave up clearing snapshot - manual intervention required 1>&2 STATUS=1
fi
This is an excerpt of what I use for backups using lvm snapshots... works fine on FC16.
We retain a few GB of free space in the LVM storage for the snapshot,
which generally suffices on most systems unless there is a lot
of updates happening during backups, which is rare on the systems
we use this on.
--
DTYPE=$1
# NB: level contains level and 'u' option (eg: 0u)
LEVEL=$2
TAPE=$3
FS=$4
RHOST=$5
case "${TAPE}${RHOST}" in
RTAPE= "${RHOST} :${TAPE} "
--)
# dumping to stdout
RTAPE="-"
;;
*)
# using rsh/rmt(8)
;;
esac
LVCREATE=""
LVCREATE= "/sbin/ lvcreate"
LVREMOVE= "/sbin/ lvremove"
LVDISPLAY= "/sbin/ lvdisplay"
LVCREATE= "/usr/sbin/ lvcreate"
LVREMOVE= "/usr/sbin/ lvremove"
LVDISPLAY= "/usr/sbin/ lvdisplay"
if [ -x /sbin/lvcreate ]
then
elif [ -x /usr/sbin/lvcreate ]
then
fi
if [ "`df $FS | grep /dev/mapper`" -a "$LVCREATE" != "" ] ; then
SNAPVOL= `echo $DUMPDEV | cut -d / -f2`-snap
SNAPVOL2= `echo $DUMPDEV | cut -d / -f2`--snap
SNAPDEV= /dev/$VOL/ $SNAPVOL
SNAPRDEV= /dev/mapper/ $VOL-$SNAPVOL2
DUMPDEV=`df $FS |grep mapper | cut -d/ -f4 | cut -d' ' -f1 | tr - /`
VOL=`echo $DUMPDEV | cut -d/ -f1`
echo DUMPDEV=$DUMPDEV 1>&2
echo VOL=$VOL 1>&2
echo SNAPVOL=$SNAPVOL 1>&2
echo SNAPVOL2=$SNAPVOL2 1>&2
echo SNAPDEV=$SNAPDEV 1>&2
echo SNAPRDEV=$SNAPRDEV 1>&2
# cleanup from last backup
$LVREMOVE -f $SNAPDEV >/dev/null 2>&1
echo `date` starting snapshot 1>&2
$LVCREATE -l 100%FREE -s -n $SNAPVOL /dev/$DUMPDEV 1>&2
echo `date` starting backup 1>&2
dump "${LEVEL}bfL" 32 "$RTAPE" "$FS" $SNAPRDEV
# workaround FC16 bug; delay before clearing
sleep 5
echo `date` clearing snapshot 1>&2
$LVREMOVE -f $SNAPDEV 1>&2
# workaround FC16 bug; do it again if needed
$LVDISPLAY | grep $SNAPDEV >/dev/null
then
# its still there!
sleep 5
echo `date` clearing snapshot again 1>&2
$LVREMOVE -f $SNAPDEV 1>&2
else
break
echo `date` gave up clearing snapshot - manual intervention required 1>&2
STATUS= 1
for i in 1 2 3 4 5
do
if [ $? = 0 ]
fi
done
$LVDISPLAY | grep $SNAPDEV >/dev/null
if [ $? = 0 ]
then
fi
exit $STATUS