X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=chiark-utils.git;a=blobdiff_plain;f=backup%2Flvm;h=dd503e7a789c1710bfdaaac229712a50fc9111a3;hp=5389e7b08a2a1d5efe0e1c6203b9967f4ceb55ad;hb=a1b737d1580fe8ad5aea50e003c7d0334cf6b663;hpb=14afe3ff7c385ef0d6f65fe05aa05de980fb82bb diff --git a/backup/lvm b/backup/lvm index 5389e7b..dd503e7 100755 --- a/backup/lvm +++ b/backup/lvm @@ -6,51 +6,12 @@ # lvm drop $vardir set -e - -nargs=$# -opmode="$1" -vardir="$2" -device="$3" -mountpoint="$4" - -lvm_lv=chiark-backup -lvm_lvtools_opts='-A n' -lvm_lvcreate_opts= -lvm_lvcreate_args= - -test ! -f /etc/chiark-backup/settings.sh || . /etc/chiark-backup/settings.sh - -case "$nargs.$opmode" in -4.snap|2.drop) - ;; -*) - cat >&2 <<'END' -usage: .../lvm snap VARDIR DEV MOUNT - .../lvm drop VARDIR -END - exit 1 - ;; -esac - +snapkind=lvm +. /usr/share/chiark-backup/snap-common #---------- clean up anything -snmnt="$vardir/snap-mount" -umount -v "$snmnt" || true -test ! -d "$snmnt" || rmdir -- "$snmnt" - -set +e -old_lv_dev="$(readlink $vardir/snap-device)" -rc=$? -set -e - -if [ $rc = 0 ]; then - set +e - lvchange $lvm_lvtools_opts -a n $old_lv_dev - lvremove -f $lvm_lvtools_opts $old_lv_dev - set -e - rm $vardir/snap-device -fi +lvmdropcore if test "$opmode" = drop; then echo 'lvm snap dropped' @@ -62,26 +23,21 @@ fi fstype="$(mount | sed -n \ "s,^$device on $mountpoint type \([a-z0-9][a-z0-9]*\) .*,-t \1 ,p")" +lvmunmapperdevice +lvmdevice2vgroup + if [ -z "$lvm_lvsize_opts" ]; then - vggroup="${device#/dev/}" - vggroup="${vggroup%/*}" - vgdisplay_out="$(really vgdisplay -c "$vggroup")" - extents="$(printf "%s" "$vgdisplay_out" | awk -F: '{print $16}')" + lvmextentscore1 lvdisplay_out="$(really lvdisplay -c "$device")" - extents2="$(printf "%s" "$lvdisplay_out" | awk -F: '{print $9}')" + extents2="$(printf "%s" "$lvdisplay_out" | awk -F: '{print $8}')" extents2=$(( $extents2 + ($extents2+9)/10 - 1 )) - if [ $extents2 -lt $extents ]; then extents=$extents2; fi - - lvm_lvsize_opts="-l $extents" + lvmextentscore2 fi -lvpath="$(dirname "$device")/$lvm_lv" - -ln -s -- "$lvpath" "$vardir"/snap-device +lvmcreatecore1 -sync lvcreate -s \ $lvm_lvtools_opts \ $lvm_lvsize_opts \