<font size="4"><b>Backup script:</b></font><br><div class="gmail_quote"><br>&lt;CODE&gt;<br><font size="1">#!/bin/sh<br><br>###############################################################################################################<br>
###############################################################################################################<br>
# Script to Backup/Clone Xen Host/Dom0 and all DomUs which are using Logical Volumes as Virtual Hard Disks<br>###############################################################################################################<br>

###############################################################################################################<br><br># Written by:<br> <br># Mr. Teo En Ming (Zhang Enming) Dip(Mechatronics) BEng(Hons)(Mechanical Engineering)<br>

# Alma Maters:<br># (1) Singapore Polytechnic<br># (2) National University of Singapore<br># Primary Blog: <a href="http://teo-en-ming-aka-zhang-enming.blogspot.com" target="_blank">http://teo-en-ming-aka-zhang-enming.blogspot.com</a><br>

# Secondary Blog: <a href="http://enmingteo.wordpress.com" target="_blank">http://enmingteo.wordpress.com</a><br># Youtube Videos: <a href="http://www.youtube.com/user/enmingteo" target="_blank">http://www.youtube.com/user/enmingteo</a><br>
# Xen Tutorials and Video Demos: <a href="http://www.xen.org/support/tutorial.html" target="_blank">http://www.xen.org/support/tutorial.html</a><br>
# Email: <a href="mailto:space.time.universe@gmail.com" target="_blank">space.time.universe@gmail.com</a><br># MSN: <a href="mailto:teoenming@hotmail.com" target="_blank">teoenming@hotmail.com</a><br># Mobile Phone (Starhub Prepaid): +65-8369-2618<br>
# Street: Bedok Reservoir Road<br>
# Country: Singapore<br><br># First written: 13 November 2009 Friday 12:38 A.M. Singapore time<br># Last updated: 13 November 2009 Friday 12:38 A.M. Singapore time<br># Last updated: 13 November 2009 Friday 1:20 P.M. Singapore time<br>

# Last updated: 13 November 2009 Friday 5:23 P.M. Singapore time<br><br># REFERNCE: &quot;Geek Sheet: Bare-metal backup and recovery&quot;, May 7th, 2008, Jason Perlow<br># URL: <a href="http://blogs.zdnet.com/BTL/?p=8759" target="_blank">http://blogs.zdnet.com/BTL/?p=8759</a><br>

<br># Usage Instructions:<br><br># Boot up your desktop/server with System Rescue CD version 1.3.2 for i386/amd64. <br># Then execute this backup script. You need to adapt this script to work for your environment.<br># Download System Rescue CD from <a href="http://www.sysresccd.org/Main_Page" target="_blank">http://www.sysresccd.org/Main_Page</a><br>

<br># FAQ<br># Q: Why do I want to write this cloning script when there are many open source cloning software available?<br># A: I am previously using Clonezilla. It is a very good cloning software. However, it could not detect all the<br>

#    virtual machines in my LVM2 logical volumes and had to fall back on using dd to image all my domUs,<br>#    which resulted in an enormous 300 GB (!) backup image set and an extremely lengthy cloning process of <br>#    7 hours. Clonezilla is very good for LVs which only contain filesystems, but not for LVs which contain<br>

#    virtual machines with MBR, partition geometries and full fledged operating systems. It is very diffcult<br>#    to image nested logical volumes, i.e. logical volumes within logical volumes. And the PV within a LV is <br>

#    the barrier. So it is not Clonezilla&#39;s fault. Anybody who knows how to activate all the logical volumes<br>#    of all the volume groups within LVM2 physical volumes inside a logical volume hosting a virtual machine,<br>

#    please share your knowledge with me. Thank you very much.<br><br># No. of QC Checks Performed on this backup script: 1 <br><br>###############################################################################################################<br>

# Declare Variables<br>###############################################################################################################<br><br>HARDDISK=/dev/sda<br>DEST=/media/hitachi/test<br>FSA_COMPLEVEL=9<br>PROCESSOR_CORES=2<br>

GZIP_COMPLEVEL=fast<br>PARTIMAGE_COMPLEVEL=1<br><br>###############################################################################################################<br># Create Storage Directory for Backup Images<br>###############################################################################################################<br>

<br>if [ ! -d $DEST ]<br>then<br>    mkdir -p $DEST<br>fi<br><br>###############################################################################################################<br>###############################################################################################################<br>

# Cloning Xen Host/Dom0<br>###############################################################################################################<br>###############################################################################################################<br>

<br># Backup MBR<br><br>dd if=$HARDDISK of=$DEST/f11-xen-dom0-sda.mbr bs=512 count=1<br><br># Backup Partition Geometry<br>sfdisk -d $HARDDISK &gt; $DEST/f11-xen-dom0-partition-geometry-sda.sfdisk<br><br># Activate all logical volumes in all volume groups<br>

<br>vgchange -ay<br><br># Backup UUIDs of PVs<br><br>pvdisplay &gt; $DEST/f11-xen-dom0-pvdisplay.txt<br><br># Backup LVM2 Metadata for All Volume Groups<br><br># Backup the configuration of dedicated volume group for dom0<br>

<br>vgcfgbackup -d -v vg_fedora11_host -f $DEST/vg_fedora11_host-vgcfg.lvm2.metadata<br><br># Backup the configuration of dedicated volume group for domUs<br><br>vgcfgbackup -d -v virtualmachines -f $DEST/virtualmachines-vgcfg.lvm2.metadata<br>

<br># Backup /boot partition and all logical volumes of dedicated volume group for host/dom0<br><br>fsarchiver savefs -v -z $FSA_COMPLEVEL -j $PROCESSOR_CORES $DEST/f11-xen-dom0-filesystems.fsa /dev/sda1 \<br>/dev/vg_fedora11_host/lv_home /dev/vg_fedora11_host/lv_root /dev/vg_fedora11_host/lv_var<br>

<br>###############################################################################################################<br>###############################################################################################################<br>

# Cloning Xen-based Virtual Machines/DomUs/Guest Operating Systems/VMs<br>###############################################################################################################<br>###############################################################################################################<br>

<br># The following 8 virtual machines have LVM2 physical volumes, so it is not possible to image using partimage <br># or fsarchiver directly, as both do not support PVs.  The only convenient way is to image the logical volume   <br>

# for the VM using dd, ie. sector by sector copy, and then piping it to gzip for a smaller backup image. <br># Other methods would have been more involved and tedious.<br><br># VM 1: Fedora 11 x86_64 PV domU (MPICH2 Virtual Supercomputer Center)<br>

###############################################################################################################<br><br># Sector by sector copy<br>dd if=/dev/virtualmachines/f11-pv-hpc-node0001 | gzip --$GZIP_COMPLEVEL &gt; \<br>

$DEST/virtualmachines-f11-pv-hpc-node0001.img.gz<br><br># VM 2: Fedora 11 x86_64 PV domU (MPICH2 Virtual Supercomputer Center)<br>###############################################################################################################<br>

<br># Sector by sector copy<br>dd if=/dev/virtualmachines/f11-pv-hpc-node0002 | gzip --$GZIP_COMPLEVEL &gt; \<br>$DEST/virtualmachines-f11-pv-hpc-node0002.img.gz<br><br># VM 3: Fedora 11 x86_64 PV domU (MPICH2 Virtual Supercomputer Center)<br>

###############################################################################################################<br><br># Sector by sector copy<br>dd if=/dev/virtualmachines/f11-pv-hpc-node0003 | gzip --$GZIP_COMPLEVEL &gt; \<br>

$DEST/virtualmachines-f11-pv-hpc-node0003.img.gz<br><br># VM 4: Fedora 11 x86_64 PV domU (MPICH2 Virtual Supercomputer Center)<br>###############################################################################################################<br>

<br># Sector by sector copy<br>dd if=/dev/virtualmachines/f11-pv-hpc-node0004 | gzip --$GZIP_COMPLEVEL &gt; \<br>$DEST/virtualmachines-f11-pv-hpc-node0004.img.gz<br><br># VM 5: Fedora 11 x86_64 PV domU (MPICH2 Virtual Supercomputer Center)<br>

###############################################################################################################<br><br># Sector by sector copy<br>dd if=/dev/virtualmachines/f11-pv-hpc-node0005 | gzip --$GZIP_COMPLEVEL &gt; \<br>

$DEST/virtualmachines-f11-pv-hpc-node0005.img.gz<br><br># VM 6: Fedora 11 x86_64 PV domU (MPICH2 Virtual Supercomputer Center)<br>###############################################################################################################<br>

<br># Sector by sector copy<br>dd if=/dev/virtualmachines/f11-pv-hpc-node0006 | gzip --$GZIP_COMPLEVEL &gt; \<br>$DEST/virtualmachines-f11-pv-hpc-node0006.img.gz<br><br># VM 7: Fedora 11 x86_64 PV domU (MPICH2 Virtual Supercomputer Center)<br>

###############################################################################################################<br><br># Sector by sector copy<br>dd if=/dev/virtualmachines/f11-pv-hpc-node0007 | gzip --$GZIP_COMPLEVEL &gt; \<br>

$DEST/virtualmachines-f11-pv-hpc-node0007.img.gz<br><br># VM 8: Fedora 11 x86_64 PV domU (MPICH2 Virtual Supercomputer Center)<br>###############################################################################################################<br>

<br># Sector by sector copy<br>dd if=/dev/virtualmachines/f11-pv-hpc-node0008 | gzip --$GZIP_COMPLEVEL &gt; \<br>$DEST/virtualmachines-f11-pv-hpc-node0008.img.gz<br><br># VM 9: FreeBSD 8.0 RC2 UNIX amd64 HVM domU<br>###############################################################################################################<br>

<br># Sector by sector copy<br>dd if=/dev/virtualmachines/freebsd | gzip --$GZIP_COMPLEVEL &gt; \<br>$DEST/virtualmachines-freebsd.img.gz<br><br># VM 10: OpenSolaris 2009.06 UNIX amd64 PV domU<br>###############################################################################################################<br>

<br># Sector by sector copy<br>dd if=/dev/virtualmachines/opensolaris | gzip --$GZIP_COMPLEVEL &gt; \<br>$DEST/virtualmachines-opensolaris.img.gz<br><br># VM 11: Rocks 5.1 x86_64 HPC Compute Cluster HVM domU (based on CentOS 5.2)<br>

###############################################################################################################<br><br># Add partition mappings in /dev/mapper<br>kpartx -av /dev/virtualmachines/rocks0001<br><br># Backup MBR<br>

dd if=/dev/virtualmachines/rocks0001 of=$DEST/virtualmachines-rocks0001.mbr bs=512 count=1<br><br># Backup Partition Geometry<br>sfdisk -d /dev/virtualmachines/rocks0001 &gt; $DEST/virtualmachines-rocks0001.sfdisk<br><br>

# Backup Filesystems<br>partimage -d -M -b -z$PARTIMAGE_COMPLEVEL save /dev/mapper/virtualmachines-rocks0001p1 \<br>$DEST/virtualmachines-rocks0001p1.img<br><br>partimage -d -M -b -z$PARTIMAGE_COMPLEVEL save /dev/mapper/virtualmachines-rocks0001p2 \<br>

$DEST/virtualmachines-rocks0001p2.img<br><br>partimage -d -M -b -z$PARTIMAGE_COMPLEVEL save /dev/mapper/virtualmachines-rocks0001p5 \<br>$DEST/virtualmachines-rocks0001p5.img<br><br># Delete partition mappings in /dev/mapper<br>

kpartx -dv /dev/virtualmachines/rocks0001<br><br># VM 12: Rocks 5.1 x86_64 HPC Compute Cluster HVM domU (based on CentOS 5.2)<br>###############################################################################################################<br>

<br># Add partition mappings in /dev/mapper<br>kpartx -av /dev/virtualmachines/rocks0002<br><br># Backup MBR<br>dd if=/dev/virtualmachines/rocks0002 of=$DEST/virtualmachines-rocks0002.mbr bs=512 count=1<br><br># Backup Partition Geometry<br>

sfdisk -d /dev/virtualmachines/rocks0002 &gt; $DEST/virtualmachines-rocks0002.sfdisk<br><br># Backup Filesystems<br>partimage -d -M -b -z$PARTIMAGE_COMPLEVEL save /dev/mapper/virtualmachines-rocks0002p1 \<br>$DEST/virtualmachines-rocks0002p1.img<br>

<br>partimage -d -M -b -z$PARTIMAGE_COMPLEVEL save /dev/mapper/virtualmachines-rocks0002p2 \<br>$DEST/virtualmachines-rocks0002p2.img<br><br>partimage -d -M -b -z$PARTIMAGE_COMPLEVEL save /dev/mapper/virtualmachines-rocks0002p5 \<br>

$DEST/virtualmachines-rocks0002p5.img<br><br># Delete partition mappings in /dev/mapper<br>kpartx -dv /dev/virtualmachines/rocks0002<br><br># VM 13: Rocks 5.1 x86_64 HPC Compute Cluster HVM domU (based on CentOS 5.2)<br>
###############################################################################################################<br>
<br># Add partition mappings in /dev/mapper<br>kpartx -av /dev/virtualmachines/rocks0003<br><br># Backup MBR<br>dd if=/dev/virtualmachines/rocks0003 of=$DEST/virtualmachines-rocks0003.mbr bs=512 count=1<br><br># Backup Partition Geometry<br>

sfdisk -d /dev/virtualmachines/rocks0003 &gt; $DEST/virtualmachines-rocks0003.sfdisk<br><br># Backup Filesystems<br>partimage -d -M -b -z$PARTIMAGE_COMPLEVEL save /dev/mapper/virtualmachines-rocks0003p1 \<br>$DEST/virtualmachines-rocks0003p1.img<br>

<br>partimage -d -M -b -z$PARTIMAGE_COMPLEVEL save /dev/mapper/virtualmachines-rocks0003p2 \<br>$DEST/virtualmachines-rocks0003p2.img<br><br>partimage -d -M -b -z$PARTIMAGE_COMPLEVEL save /dev/mapper/virtualmachines-rocks0003p5 \<br>

$DEST/virtualmachines-rocks0003p5.img<br><br># Delete partition mappings in /dev/mapper<br>kpartx -dv /dev/virtualmachines/rocks0003<br><br># VM 14: Rocks 5.1 x86_64 HPC Compute Cluster HVM domU (based on CentOS 5.2)<br>
###############################################################################################################<br>
<br># Add partition mappings in /dev/mapper<br>kpartx -av /dev/virtualmachines/rocks0004<br><br># Backup MBR<br>dd if=/dev/virtualmachines/rocks0004 of=$DEST/virtualmachines-rocks0004.mbr bs=512 count=1<br><br># Backup Partition Geometry<br>

sfdisk -d /dev/virtualmachines/rocks0004 &gt; $DEST/virtualmachines-rocks0004.sfdisk<br><br># Backup Filesystems<br>partimage -d -M -b -z$PARTIMAGE_COMPLEVEL save /dev/mapper/virtualmachines-rocks0004p1 \<br>$DEST/virtualmachines-rocks0004p1.img<br>

<br>partimage -d -M -b -z$PARTIMAGE_COMPLEVEL save /dev/mapper/virtualmachines-rocks0004p2 \<br>$DEST/virtualmachines-rocks0004p2.img<br><br>partimage -d -M -b -z$PARTIMAGE_COMPLEVEL save /dev/mapper/virtualmachines-rocks0004p5 \<br>

$DEST/virtualmachines-rocks0004p5.img<br><br># Delete partition mappings in /dev/mapper<br>kpartx -dv /dev/virtualmachines/rocks0004<br><br># VM 15: Rocks 5.1 x86_64 HPC Compute Cluster HVM domU (based on CentOS 5.2)<br>
###############################################################################################################<br>
<br># Add partition mappings in /dev/mapper<br>kpartx -av /dev/virtualmachines/rocks0005<br><br># Backup MBR<br>dd if=/dev/virtualmachines/rocks0005 of=$DEST/virtualmachines-rocks0005.mbr bs=512 count=1<br><br># Backup Partition Geometry<br>

sfdisk -d /dev/virtualmachines/rocks0005 &gt; $DEST/virtualmachines-rocks0005.sfdisk<br><br># Backup Filesystems<br>partimage -d -M -b -z$PARTIMAGE_COMPLEVEL save /dev/mapper/virtualmachines-rocks0005p1 \<br>$DEST/virtualmachines-rocks0005p1.img<br>

<br>partimage -d -M -b -z$PARTIMAGE_COMPLEVEL save /dev/mapper/virtualmachines-rocks0005p2 \<br>$DEST/virtualmachines-rocks0005p2.img<br><br>partimage -d -M -b -z$PARTIMAGE_COMPLEVEL save /dev/mapper/virtualmachines-rocks0005p5 \<br>

$DEST/virtualmachines-rocks0005p5.img<br><br># Delete partition mappings in /dev/mapper<br>kpartx -dv /dev/virtualmachines/rocks0005<br><br># VM 16: Slackware64 13.0 amd64 HVM domU<br>###############################################################################################################<br>

<br># Add partition mappings in /dev/mapper<br>kpartx -av /dev/virtualmachines/slackware64<br><br># Backup MBR<br>dd if=/dev/virtualmachines/slackware64 of=$DEST/virtualmachines-slackware64.mbr bs=512 count=1<br><br># Backup Partition Geometry<br>

sfdisk -d /dev/virtualmachines/slackware64 &gt; $DEST/virtualmachines-slackware64.sfdisk<br><br># Backup Filesystems<br>partimage -d -M -b -z$PARTIMAGE_COMPLEVEL save /dev/mapper/virtualmachines-slackware64p1 \<br>$DEST/virtualmachines-slackware64p1.img<br>

<br>partimage -d -M -b -z$PARTIMAGE_COMPLEVEL save /dev/mapper/virtualmachines-slackware64p2 \<br>$DEST/virtualmachines-slackware64p2.img<br><br># Delete partition mappings in /dev/mapper<br>kpartx -dv /dev/virtualmachines/slackware64<br>

<br># VM 17: Ubuntu 9.10 Karmic Koala Linux HVM domU<br>###############################################################################################################<br><br># Add partition mappings in /dev/mapper<br>kpartx -av /dev/virtualmachines/ubuntu910<br>

<br># Backup MBR<br>dd if=/dev/virtualmachines/ubuntu910 of=$DEST/virtualmachines-ubuntu910.mbr bs=512 count=1<br><br># Backup Partition Geometry<br>sfdisk -d /dev/virtualmachines/ubuntu910 &gt; $DEST/virtualmachines-ubuntu910.sfdisk<br>

<br># Backup Filesystems<br>partimage -d -M -b -z$PARTIMAGE_COMPLEVEL save /dev/mapper/virtualmachines-ubuntu910p1 \<br>$DEST/virtualmachines-ubuntu910p1.img<br><br># Delete partition mappings in /dev/mapper<br>kpartx -dv /dev/virtualmachines/ubuntu910<br>

<br># VM 18: Windows XP Home Edition SP3 32-bit HVM domU with VGA passthrough (requires Intel VT-d)<br>###############################################################################################################<br><br>

# Add partition mappings in /dev/mapper<br>kpartx -av /dev/virtualmachines/winxphome32<br><br># Backup MBR<br>dd if=/dev/virtualmachines/winxphome32 of=$DEST/virtualmachines-winxphome32.mbr bs=512 count=1<br><br># Backup Partition Geometry<br>

sfdisk -d /dev/virtualmachines/winxphome32 &gt; $DEST/virtualmachines-winxphome32.sfdisk<br><br># Backup Filesystems<br>partimage -d -M -b -z$PARTIMAGE_COMPLEVEL save /dev/mapper/virtualmachines-winxphome32p1 \<br>$DEST/virtualmachines-winxphome32p1.img<br>

<br># Delete partition mappings in /dev/mapper<br>kpartx -dv /dev/virtualmachines/winxphome32<br><br>###############################################################################################################<br># EOF<br>

###############################################################################################################</font><br>&lt;/CODE&gt;<br><br><br>
</div>