See also XenServer Backup
See also XenServer VSS Provider
Main Reference Article: http://www.charleslabri.com/back-up-xenserver-6-to-network-share-with-fancy-scripting-and-lots-of-fun-and-no-downtime/
Backup: http://www.8layer8.com/?p=260
Restore: http://www.8layer8.com/?p=200
You can back up all the VM's, XenServer hosts, and metadata for a XenServer pool from a single XenServer host.
Consider this a disaster recovery backup. Use a file-by-file backup such as Ahsay for daily needs.
Here we use an NFS mount for backup storage.
XVA backups are compressed on the fly.
This is a no-downtime script set; it backs up the VM “live” by taking a snapshot, and then exporting that snapshot to a mount point on Dom0.
cleanup.sh
file runs and removes old data and emails regarding what happened previouslyaudit.sh
runs and outputs the info via e-mail to the backup adminmeta-backup.sh
runs and backs up Dom0 and the XenServer database and structurevm_backup.sh
runs and backs up the VMs running on the host.lib
and the .cfg
filesvm_backup.cfg
fileChoose one of your XenServers to be the backup server, generally the pool master. This script runs in Dom0 on a XenServer.
Here we assume you have a shared NFS folder /backup/xenserver-backup/VA-Hosting-Pool
on IP address 10.10.1.9
and a XenServer pool named VA-Hosting-Pool
.
Mount the NFS share:
mkdir /mnt/backup vi /etc/fstab
Append:
# Mount the backup share ip.of.nfs.svr:/path/to/backup/share /mnt/backup nfs _netdev 0 0
Mount the share, check it's mounted and test a manual backup:
mount -a mount xe vm-export vm="<your-vm-name>" filename=/mnt/backup/"<your-vm-name>".xva
see also SSMTP
Modify ssmtp.conf
as necessary:
vi /etc/ssmtp/ssmtp.conf root=adminuser@yourdomain.com mailhub=mail.yourdomain.com:465 RewriteDomain=yourdomain.com #hostname=_HOSTNAME_ FromLineOverride=YES UseTLS=YES AuthUser=smtpuser AuthPass=smtppass
If you don't specify a hostname
, the local hostname will me used.
mkdir -p /opt/backup && cd /opt/backup wget https://www.dropbox.com/s/0fyijjlv30mc413/XenServerBackup.zip?dl=1 -O XenServerBackup.zip unzip XenServerBackup.zip rm -rf __MACOSX/ chmod +x *.sh chmod +x dbtool cp -a ./dbtool /sbin/dbtool
You might want to use IP addresses to control which network interfaces are used for the backups.
Change the names and filenames to the names you have for your XenServers according to the article:
cd /opt/backup vi cleanup.sh vi audit.sh vi meta-backup.sh vi mailheader.txt vi vm_backup.cfg vi vm_backup.sh
Run the cleanup script and check for an e-mail message:
./cleanup.sh
Run the audit script and check for an e-mail message:
./audit.sh
Then run the metadata backup script. This will take longer, so let it run.
./meta-backup.sh
Now, make sure you have vm_backup.cfg
set to only back up a limited set of VMs and try:
./vm_backup.sh
There must be a newline at the end of the line or cron won't run the job.
Some systems wont run the cron job if the filename has a '.' (dot) in the name.
This will add a cron
job to run backups every day at 10:30pm:
cat << EOF > /etc/cron.d/backup 30 22 * * * root /opt/backup/cleanup.sh && /opt/backup/audit.sh && /opt/backup/meta-backup.sh && /opt/backup/vm_backup.sh EOF chmod 644 /etc/cron.d/backup
Do this on each XenServer backup host (pool master) to back up your backup scripts and configuration to a Scripts
folder on the backup share:
# This assumes the backup share is mountable via ''/etc/fstab'' mount /mnt/backup mkdir -p /mnt/backup/Scripts/ /bin/cp -af /sbin/dbtool /mnt/backup/Scripts/ /bin/cp -af /etc/fstab /mnt/backup/Scripts/ /bin/cp -af /opt/backup/* /mnt/backup/Scripts/ /bin/cp -af /etc/ssmtp/ssmtp.conf /mnt/backup/Scripts/ /bin/cp -af /etc/cron.d/backup /mnt/backup/Scripts/ rm -f /mnt/backup/Scripts/message.tmp #umount /mnt/backup