diff options
Diffstat (limited to 'scripts/snap-lvm.sh')
| -rwxr-xr-x | scripts/snap-lvm.sh | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/scripts/snap-lvm.sh b/scripts/snap-lvm.sh new file mode 100755 index 0000000..4991495 --- /dev/null +++ b/scripts/snap-lvm.sh @@ -0,0 +1,31 @@ +#!/bin/sh +set -e + +vg="x230" +lv="root" +snap_name="${lv}-snap" +mountpoint="/mnt/snap" +PERCENT="100" + +mount_fs() { + _device="$1"; shift + _opts="nouuid,rw" + _mntpoint="$1"; shift + if ! [ -d "$_mntpoint" ] ; then + mkdir "$_mntpoint" + fi + mount -o "$_opts" "$_device" "$_mntpoint" +} + +# If snapshot doesn't exist +if ! lvm lvs "$vg/$snap_name" >/dev/null 2>&1 ; then + lvm lvcreate "$vg/$lv" -s --name "$snap_name" -l "${PERCENT}%ORIGIN" + mount_fs "/dev/$vg/$snap_name" "$mountpoint" + sed -i.bak -r "s@(/dev/${vg}/${lv})@\1${snap_name}@" \ + "$mountpoint/etc/fstab" + umount "$mountpoint" +else + printf 'Cannot continue snapshot "%s" already exists.\n' \ + "$vg/$snap_name" + exit 1; +fi |
