La sauvegarde d’une machine virtuelle OpenVZ se fait très simplement, en étant administrateur (root) de la machine.
Préparation de la partition
Pour minimiser le downtime (le temps où le serveur est indisponible), il faut utiliser un paramètre spécial de sauvegarde (cf script ci-dessous) lequel nécessite un partionnement particulier.
En effet, il faut que les machines virtuelles soient créées sur une partition de type LVM mais également il est nécessaire qu’une partie de cette partition reste disponible pour le processus de sauvegarde. Si le partionnement est généralement réalisé à l’installation, il faudra quelques commandes pour libérer de la place sur la partition LVM (par défaut, elle est montée sur /var/lib/vz
.
Paramétrage du partitionnement pour une distribution de type PROXMOX
root@host:~# /etc/init.d/vz stop (arrêt du service de virtualisation)
root@host:~# df -h (pour voir l'allocation de la partition LVM)
Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur
/dev/sda1 12G 886M 11G 8% /
tmpfs 1000M 0 1000M 0% /lib/init/rw
udev 10M 2,6M 7,5M 26% /dev
tmpfs 1000M 0 1000M 0% /dev/shm
/dev/mapper/pve-lv1 74G 952M 69G 2% /var/lib/vz (on voit que la partition fait 74 Go).
root@host:~# umount /var/lib/vz (on démonte la partition)
root@host:~# e2fsck -f /dev/mapper/pve-lv1 (on vérifie son état, pour ne rien abimer)
root@host:~# resize2fs /dev/mapper/pve-lv1 73G (on diminue la taille de 1 ou 2 Go, ce qui est généralement suffisant)
root@host:~# lvresize --size -2G /dev/mapper/pve-lv1 (on libère 2 Go qui pourra être utilisé par le processus snapshop)
root@host:~# e2fsck -f /dev/mapper/pve-lv1 (on re-vérifie la partition, après ces manipulations)
root@host:~# resize2fs /dev/mapper/pve-lv1 (on met en conformité la partition et le système de fichiers)
root@host:~# mount /dev/mapper/pve-lv1 /var/lib/vz (on remonte la partition)
root@host:~# /etc/init.d/vz start (on redémarre le service de virtualisation)
Script de sauvegarde
Le seul paramètre important est le numéro de machine virtuelle. La première porte souvent l’identifiant 101, c’est ce que j’ai utilisé dans mon exemple.
L’option --snapshot
permet de minimiser le temps d’indisponibilité de la machine virtuelle.
#!/bin/sh#
#
# Svg machine virtuelle
nohup vzdump --snapshot --compress--dumpdir /svg --tmpdir /tmp 101
#
NOM_FICH1=vzdump-101.$(date +%Y%m%d)-$1.tgz
cp /svg/vzdump-101.tgz /répertoire_sauvegarde/$NOM_FICH1
Script ou commande de restauration
vzrestore <fichier_de_sauvegarde> 101
SQL Express
Tout d’abord il faut un script SQL du genre :
BACKUP DATABASE jean TO DISK=N'G:SQLMaBase.bak'GO
On peut faire un peu plus complexe, avec cet exemple généré par SQL Exress :
BACKUP DATABASE [base] TO DISK = N'C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLBackupbase.bak' WITH NOFORMAT, NOINIT, NAME = N'base-Complète Base de données Sauvegarde', SKIP, NOREWIND, NOUNLOAD, STATS = 10GO
Ensuite il faut automatiser ce script. Pour lancer un script SQL sous Windows, il faut utilisre osql :
sqlcmd -S nom_instance -E -i requete.sql -o fichier_sortie.txt
Par exemple :
@echo off
: copie
sqlcmd -S .SQLEXPRESS -E -i svg_base.sql -o svg.log
rename "C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLBackupbase.bak" svg_%date:~6,4%%date:~3,2%%date:~0,2%.bak
: supp
if not exist "C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLBackupbase.bak" goto fin
del "C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLBackupbase.bak"
: fin
Plus d’infos :
- http://fadace.developpez.com/mssql/sauve/
- http://www.asp-php.net/tutorial/sql-server/sauvegarder-bases-de-donnees-sql-express.php?page=1