Sauvegarde XenServer

Bonjour,



je recherche une procédure de sauvegarde des serveurs Xen.



Est t’il recommandé de sauvegarder tous les serveurs virtuels hébergés ?

Ou bien une sauvegarde (type systemstate) par VM est possible ?



Merci pour vos liens et retours,



Phil

Bonsoir,



Cela dépend grandement du support qui héberge les Vdisk. Si tu utilises un LVM locale (pas de baie netapp…) regarde ce script, il monte un lecteur reseaux en NFS et sauvegarde les VM dessus:


#!/bin/sh

mount -t nfs fqdnDuServeurNfs:/xen /mnt/backup/

XE=/usr/bin/xe

backup(){
echo "Start Backup $1"
date -R
$XE vm-shutdown force=false vm=$1
$XE vm-export vm=$1 filename=/mnt/backup/$1.xva
$XE vm-start vm=$1
echo "End Backup $1"
date -R
}


backup LeNomDeLaVM1
backup LeNomDeLaVM2
backup LeNomDeLaVM3
backup LeNomDeLaVM4

Pour:


  • Facile a mettre en place

  • Dans ton crontab et c'est fini

  • Parfait pour un disaster recovery

  • tu peux utiliser ce backup sur un autre serveur xen

Contre:

  • Long arret des VM

  • Grosse charge du xen

  • Besoin d'un serveur NFS (win ou tux)

  • impossible en prod


Je travail sur une solution plus souple a base de snapshoot LVM. Via xe je sauvegarde les meta des VM, je fais un snapshoot des disques et les sauvegarde. Mais j'ai pas fini....

un autre exemple sous dos:


@echo off



echo =============================================================================

echo Script for weekly backup of XenServer Virtual Machines

echo =============================================================================

echo.



rem Change short date format to ISO date format (YYYY-MM-DD) by importing the appropriate registry file with exported regional options

regedit.exe /s e:backupXenVMs_controliso-date-format.reg



rem Modify these variables to customize the script for your environment.

set XEN_BACKUP_DIR=e:backupXenVMs

set XEN_BACKUP_LOG=%XEN_BACKUP_DIR%_logsBackup-XenVMs_%DATE%.log

set XEN_VMs_LIST=%XEN_BACKUP_DIR%_controlBackup-XenVMs_List.txt

set XEN_CMDLINE_EXE="C:Program FilesXenSourceXenCenterxe.exe"

set XEN_BACKUP_LATEST-FILE=%XEN_BACKUP_DIR%_controlBackup-XenVMs_LATEST.txt



set XEN_HOST_ID=172.16.X.X

set XEN_HOST_USER=root

set XEN_HOST_PWD=XXXX



set MAIL_SERVER=172.16.X.X


set MAIL_RCPT=admin@domain.com

set MAIL_FROM=Backup-XenVMs@domain.com

set MAIL_SUBJECT=XenServer VMs Backup Log on %DATE%

set MAIL_TOOL=%XEN_BACKUP_DIR%_controlbmail.exe



rem Header for backup log file.

echo ============================================================================= > %XEN_BACKUP_LOG%

echo Weekly backup of XenServer Virtual Machines >> %XEN_BACKUP_LOG%

echo
>> %XEN_BACKUP_LOG%

echo BEGIN OF BACKUP LOG FILE >> %XEN_BACKUP_LOG%

echo Backup on %date% at %time% >> %XEN_BACKUP_LOG%



rem Rename the latest backup directory (Backup-XenVMs_LATEST) to Backup-XenVMs_YYYY-MM-DD

FOR /f %%l IN (%XEN_BACKUP_LATEST-FILE%) DO set XEN_BACKUP_LATEST-DATE=%%l

echo
>> %XEN_BACKUP_LOG%

echo Rename Backup-XenVMs_LATEST directory to Backup-XenVMs_%XEN_BACKUP_LATEST-DATE% >> %XEN_BACKUP_LOG%

rename %XEN_BACKUP_DIR%Backup-XenVMs_LATEST Backup-XenVMs_%XEN_BACKUP_LATEST-DATE% >> %XEN_BACKUP_LOG%

mkdir %XEN_BACKUP_DIR%Backup-XenVMs_LATEST



rem Call the backup subroutine for each VM in XEN_VMs_LIST and pass the VM name to the subroutine

FOR /f %%v IN (%XEN_VMs_LIST%) DO call :XEN_BACKUP_VM %%v



rem Create file with the date of the latest backup

echo %date% > %XEN_BACKUP_LATEST-FILE%



echo ============================================================================= >> %XEN_BACKUP_LOG%

echo Sending log via SMTP on %date% at %time% >> %XEN_BACKUP_LOG%

echo END OF BACKUP LOG FILE >> %XEN_BACKUP_LOG%

echo ============================================================================= >> %XEN_BACKUP_LOG%



rem Use a command line SMTP tool to transmit the backup log file as message body

%MAIL_TOOL% -s %MAIL_SERVER% -t %MAIL_RCPT% -f %MAIL_FROM% -h -a %MAIL_SUBJECT% -m %XEN_BACKUP_LOG%

rem -d <-- use this parameter for bmail verbose mode for debugging



rem Copy the backup log file into the directory of the backups

copy %XEN_BACKUP_LOG% %XEN_BACKUP_DIR%Backup-XenVMs_LATEST



goto :EOF



rem Subroutine to backup the VM passed as function argument

:XEN_BACKUP_VM



echo ============================================================================= >> %XEN_BACKUP_LOG%

echo Backup procedure for Xen VM %~1 >> %XEN_BACKUP_LOG%

echo %date% %time% >> %XEN_BACKUP_LOG%



echo
>> %XEN_BACKUP_LOG%

echo Shutting down Xen VM %~1 on %date% at %time% >> %XEN_BACKUP_LOG%

%XEN_CMDLINE_EXE% -s %XEN_HOST_ID% -u %XEN_HOST_USER% -pw %XEN_HOST_PWD% vm-shutdown vm=%~1 force=false >> %XEN_BACKUP_LOG%



echo
>> %XEN_BACKUP_LOG%

echo Waiting for shutdown of Xen VM %~1 on %date% at %time% >> %XEN_BACKUP_LOG%

%XEN_CMDLINE_EXE% -s %XEN_HOST_ID% -u %XEN_HOST_USER% -pw %XEN_HOST_PWD% event-wait class=vm name-label=%~1 power-state=halted >> %XEN_BACKUP_LOG%



echo
>> %XEN_BACKUP_LOG%

echo Exporting Xen VM %~1 on %date% at %time% >> %XEN_BACKUP_LOG%

%XEN_CMDLINE_EXE% -s %XEN_HOST_ID% -u %XEN_HOST_USER% -pw %XEN_HOST_PWD% vm-export filename=%XEN_BACKUP_DIR%Backup-XenVMs_LATEST%~1.xenvm vm=%~1 >> %XEN_BACKUP_LOG%



echo
>> %XEN_BACKUP_LOG%

echo Starting Xen VM %~1 on %date% at %time% >> %XEN_BACKUP_LOG%

%XEN_CMDLINE_EXE% -s %XEN_HOST_ID% -u %XEN_HOST_USER% -pw %XEN_HOST_PWD% vm-start vm=%~1 >> %XEN_BACKUP_LOG%



rem Since the startup of this VM and the shutdown of the following VM can be simultaneously, there is no need to wait, otherwise unrem the following lines.

rem echo
>> %XEN_BACKUP_LOG%

rem echo Wait for startup of Xen VM %~1 on %date% at %time% >> %XEN_BACKUP_LOG%

rem %XEN_CMDLINE_EXE% -s %XEN_HOST_ID% -u %XEN_HOST_USER% -pw %XEN_HOST_PWD% event-wait class=vm name-label=%~1 power-state=running >> %XEN_BACKUP_LOG%



goto :EOF

Ok merci pour tes réponses, lorsque je ferais les tests je te tiendrais au courant.



A plus