This is an old revision of the document!
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
file
Choose 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 FromLineOverride=YES UseTLS=YES AuthUser=smtpuser AuthPass=smtppass
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
The
/2
in the below makes the backups only happen every other day. Remove the /2
for every day.
This will add cron
jobs to run backups every other day starting at 10:00pm:
cat << EOF > /etc/cron.d/backup.cron # XenServer VM Backup Scheduling 30 22 */2 * * root /opt/backup/cleanup.sh 40 22 */2 * * root /opt/backup/audit.sh 50 22 */2 * * root /opt/backup/meta-backup.sh 00 23 */2 * * root /opt/backup/vm_backup.sh EOF