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=592513a6b5628e82659970d519317fc7189affbf;hb=a03c623bb1574922308347df36cd57c85e72981a;hpb=3132b6c3eebf3f16d43c2189fc9be5e52a6b2018 diff --git a/backup/lvm b/backup/lvm index 592513a..dd503e7 100755 --- a/backup/lvm +++ b/backup/lvm @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # invoked by backup scripts as # lvm snap $vardir $device $mountpoint # creates and mounts on $vardir/snap-mount @@ -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,17 +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 - df="$(df -k $device)" - blocks="$(printf "%s" "$df" | sed -n '2,$s,^/dev/[^ ]*[ ][ ]*[0-9][0-9]*[ ][ ]*\([0-9][0-9]*\)[ ].*,\1,p')" - lvm_lvsize_opts="-L $blocks"K -fi + lvmextentscore1 + + lvdisplay_out="$(really lvdisplay -c "$device")" + extents2="$(printf "%s" "$lvdisplay_out" | awk -F: '{print $8}')" + extents2=$(( $extents2 + ($extents2+9)/10 - 1 )) -lvpath="$(dirname "$device")/$lvm_lv" + lvmextentscore2 +fi -ln -s -- "$lvpath" "$vardir"/snap-device +lvmcreatecore1 -sync lvcreate -s \ $lvm_lvtools_opts \ $lvm_lvsize_opts \