===== goals =====
* KISS: simple methods are preferred
* speed of backups/restores
* consider both complete backups of domUs and incremental backups
* restore possible to entirely different dom0?
* Can the domU continue operation while beeing backupped?
* Makes it sense/is it possible to also snapshot the complete domU (memory, registers) and be able to restore it?
===== method 0: lvm-snapshots =====
* requirements: domU is lvm-based, space for snapshot is free in volumegroup
* description: full- or incbackups without interrution of the running domU. All files committed/synced there to the filesystem when the snapshot is taken get available for backup. Backup is taken from dom0, backupclient is only there installed.
grep ^disk /etc/xen/vm/blvm.run # get the lv-volume of the domU
lvs /dev/system/lv_domu_benchlvm # optional: verify the logical volume of the domU is accessable
lvcreate -s -L 2G -n lv_domu_benchlvm-snap /dev/system/lv_domu_benchlvm # create the snapshot in the volumegroup
kpartx -a /dev/system/lv_domu_benchlvm-snap # get the devnodes for mounting
fsck /dev/mapper/system-lv_domu_benchlvm--snap2 # optional: check if fs-structure is ok
mount /dev/mapper/system-lv_domu_benchlvm--snap2 /mnt/tmp # mount the partition to be backupped
cd /mnt/tmp && tar cf .... # do the actual full- or incbackup now
umount /mnt/tmp
kpartx -d /dev/system/lv_domu_benchlvm-snap # free the no longer needed devnodes
lvremove /dev/system/lv_domu_benchlvm-snap # and remove the snapshot again
===== method 1: copy/cloning of lvm-volume =====
* requirements: domU is lvm-based, space for snapshot is free in volumegroup, space for copy
* description: lvm-snapshot can either be blockwise backed up or copied into an other lvm-volume to clone the domU. All that without interruption of the domU. The volume can also be copied over to a different dom0.
lvcreate -s -L 2G -n lv_domu_benchlvm-snap /dev/system/lv_domu_benchlvm # create the snapshot
lvdisplay /dev/system/lv_domu_benchlvm # how many le does the original volume consist of? here 1792
lvcreate -l 1792 -n lv_domu_benchlvm-copy system # create a fresh volume of exact same size, or bigger
cat /dev/system/lv_domu_benchlvm-snap >/dev/system/lv_domu_benchlvm-copy # make the copy
lvremove /dev/system/lv_domu_benchlvm-snap # remove snapshot
kpartx -av /dev/system/lv_domu_benchlvm-copy # get devnodes of partitions
mount /dev/mapper/system-lv_domu_benchlvm--copy2 /mnt/tmp
for i in /mnt/tmp/etc/sysconfig/network/ifcfg-eth-id-aa*; do mv -v $i "`echo $i|sed -e 's,13,20,'`"; done
# fix network-devices
kpartx -dv /dev/system/lv_domu_benchlvm-copy # remove devnodes
cp /etc/xen/vm/blvm.run /etc/xen/vm/blvmclone.run # copy xenfile
vi /etc/xen/vm/blvmclone.run # modify name, macs, lvm-name
vi /etc/hosts # add newly assigned ip/hostname
vi /etc/dhcpd.conf && rcdhcpd restart # add newly assigned ip/hostname/mac
xm cr /etc/xen/vm/blvmclone.run
===== method 2: usual backupclient in domU =====
* requirements: works for all kinds of domU
* description: Take domUs as usual servers. Requires domU has proper network-connection to backupserver and backupclient installed. Both full and inc-backups possible.
===== method 3: copy whole diskfile =====
* requirements: works for file-based domU
* description: Shutdown domU, make copy of diskfile, starts up domU.
===== method 4: mount diskfile =====
* requirements: works for file-based domU
* description: Shutdown domU, mount diskfile on dom0, backsup full or inc, startup domU.
xm shutdown 110 # make sure domU is shut down.
grep ^disk /etc/xen/vm/bnas.run # what exactly is the diskfile?
lomount -diskimage /mnt/nfs_domu/domu_bnas -partition 2 /mnt/tmp
cd /mnt/tmp && tar cf .... # take the backup in you way..
cd; umount /mnt/tmp; xm cr /etc/xen/vm/bnas.run # cleanup & start up domU again.
===== method 5: dom0 with backupclient =====
* requirements: networking among dom0 and the domUs, backupclient on dom0 installed
* description: dom0 shares one or more directories via nfs, domUs store there what they need backed up (or their whole /), backupclient at dom0 grabs the while tree
===== method 6: capture whole domU-state =====
* requirements: lvm-based domU
* description: pause domU, save its memory, create diskvolume-snapshot, unpause domU, backup memory-snapshot and disk-snapshot, remove disk-snapshot. Makes sense i.e. with long-running jobs in the domU, will be recovered incl. applications.
* FIXME test this method. xm save