scripts-root/lvm/snapmount_zered.sh

52 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
MOUNTDIR=/media/tmp_snapshot
loop=/dev/loop1
usage() {
echo "Usage : $0 start|stop LV_PATH PART_NUMBER"
}
## @brief mount an lvm snapshot
# @param $1 lvpath (like /dev/vg0/lv0 )
# @param $2 partition number
snap_mount() {
# Cleaning old killed mount or failed backup
umount $MOUNTDIR/* 2>/dev/null
losetup --detach $loop 2>/dev/null
# Proc start
name=$(basename $1)
vgpath=$(dirname $1)
snap="${name}-snap"
lvcreate --snapshot --size 500M --name $vgpath/$snap $1
losetup --partscan $loop $vgpath/$snap
part="${loop}p$2"
mkdir -v -p $MOUNTDIR/$name 2>/dev/null
mount $part $MOUNTDIR/$name
#echo $part mounted on $MOUNTDIR/$name
}
##@brief umount a previously created snapshot and removes it
snap_umount() {
name=$(basename $1)
vgpath=$(dirname $1)
snap="${name}-snap"
umount $MOUNTDIR/$name
losetup --detach $loop
lvremove -y $vgpath/$snap
}
case $1 in
start)
snap_mount $2 $3
;;
stop)
snap_umount $2 $3
;;
*)
usage
exit 1
;;
esac