Consulenze presso Eunet srl, via dell'Artigianato 15, 09122 Cagliari 070 753609 Lun - Ven 08:30-13:00 / 14.30-17.00

Backup gratuito delle macchine virtuali con ghettoVCB

Introduzione:

Facciamo dei salvataggi delle nostre macchine virtuali gestite da VmWare vSphere ESX(i) 3.5, 4.x & 5.x.

Metteremo in sicurezza le macchine virtuali presenti nel datastore in un dispositivo esterno come un NAS.

Lo script gratuito ghettoVCB ci permette di fare backup a caldo delle nostre macchine virtuali. Questo salvataggio può avvenire anche quando il server stà lavorando ed i servizi continueranno ad essere forniti senza problemi.

Il riferimento ufficiale lo possiamo trovare direttamente nella comunità di vmware.

Nel riferimento della comunity possiamo trovare tutte le opzioni che lo script offre, in questa pagina possiamo trovare le opzioni che ho creduto di più interesse.

Backup delle macchine virtuali .

Scarichiamo ghettoVCB e copiamolo nell'host VmWare.

Aggiornamenti ESXi 5.1 U1. scaricare lo script aggiornato ghettoVCB
 

Per caricarlo possiamo scegliere fra diverse modalità, una potrebbe essere quella di aprire il "vmware vsphere client" andiamo in "configuration" selezioniamo un datastore e con il tasto destro scegliamo "browse datastore"

Carichiamo il file appena scaricato.

browsedatastore datastore-up

 

Adesso accediamo con SSH ed entriamo nella cartella dove abbiamo messo ghettoVCB. 

Generalmente possiamo fare cosi:

[rootVM-Esx-01 ~]# cd /vmfs/volumes/

con "cd" ci spostiamo nelle cartelle.

[rootVM-Esx-01 volumes]# ls
datastore1 VmwareOpenfiler

con "ls" vediamo il contenuto delle cartelle
datastore1 VmwareOpenfiler

[rootVM-Esx-01 volumes]# cd datastore1

   con cd entriamo nel datastore dove abbiamo caricato il ghettoVCB.

 

adesso con il comando tar -zxvf nomefilescaricato.tar.gz estraiamo il contenuto dell'archivio

tar -zxvf lamw-ghettoVCB-19e0d4b.tar.gz


troveremo questi file

[roothimalaya lamw-ghettoVCB-19e0d4b]# ls -l
-rwx------ 1 root root 16024 2011-11-24 17:03 ghettoVCB-restore.sh
-rw------- 1 root root   309 2010-05-11 01:41 ghettoVCB-restore_vm_restore_configuration_template
-rwx------ 1 root root 49369 2011-11-24 17:03 ghettoVCB.sh
-rw------- 1 root root   356 2011-11-24 16:59 ghettoVCB-vm_backup_configuration_template
-rw------- 1 root root   281 2011-11-20 21:27 README

entriamo nel vivo della configurarazione con il comando

 nano ghettoVCB.conf

Si aprirà il file delle configurazione. La prima riga definisce il datastore ed il percorso dove vengono salvate le Virtual Machines:

VM_BACKUP_VOLUME=/vmfs/volumes/dlgCore-NFS-bigboi.VM-Backups/WILLIAM_BACKUPS

Per esempio, nel mio caso:

VM_BACKUP_VOLUME=/vmfs/volumes/VmwareOpenfiler

Dalla seconda riga possiamo definire il formato con cui salvare le macchine virtuali (zeroedthick, eagerzeroedthick, thin, and 2gbsparse are available). Per le specifiche dei formati rimando al sito ufficiale.

DISK_BACKUP_FORMAT=thin

Storico dei salvataggi da tenere. Il quarto salvataggio sovrascrive il terzo più vecchio, per un totale di tre:

VM_BACKUP_ROTATION_COUNT=3

Qui si definisce se la macchina virtuale viene spenta prima di eseguire il salvataggio (1=spenge , 0=crea snapshot e la VM rimane accesa):

POWER_VM_DOWN_BEFORE_BACKUP=0

Se il valore sopra è a 1, questa forza l'arresto della VM

Nota: per le righe non descritte in questo documento suggerisco di lasciare il valore standard. Per maggiori personalizzazioni rimando al sito ufficiale.

 

Defining NON-PERSISTENT NFS Backup Volume (1 = yes, 0 = no):

ENABLE_NON_PERSISTENT_NFS=0

NOTE: Questo comando abilita il mount del volume NFS.  Generalmente preferisco associare un datastore fisso per i backup.

In rete si trovano molte guide per le molte soluzioni possibile. Un punto di partenza può essere questo.

Defining whether or not to unmount the NFS backup volume (1 = yes, 0 = no):

UNMOUNT_NFS=0

Defining the NFS server address (IP/hostname):

NFS_SERVER=172.51.0.192

Defining the NFS export path:

NFS_MOUNT=/upload

Defining the NFS datastore name:

NFS_LOCAL_NAME=backup

Defining the NFS backup directory for VMs:

NFS_VM_BACKUP_DIR=mybackups

Defining whether or not to email backup logs (1 = yes, 0 = no):

EMAIL_LOG=1

Defining whether or not to email message will be deleted off the host  whether it is successful in sending, this is used for debugging  purposes. (1 = yes, 0 = no):

EMAIL_DEBUG=1

Defining email server:

EMAIL_SERVER=auroa.primp-industries.com

Defining email server port:

EMAIL_SERVER_PORT=25

Defining email delay interval (useful if you have slow SMTP server and would like to include a delay in netcat using -i param, default is 1second):

EMAIL_DELAY_INTERVAL=1

Defining recipient of the email:

EMAIL_TO=Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.

Defining from user which may require specific domain entry depending on email server configurations:

EMAIL_FROM=root@ghettoVCB>

 

Un esempio pratico:

[root@VM-Esx-01 ~]# cat /vmfs/volumes/IBM-DS3400/ghettoVCB/ghettoVCB.conf
VM_BACKUP_VOLUME=/vmfs/volumes/VmwareOpenfiler
DISK_BACKUP_FORMAT=thin
VM_BACKUP_ROTATION_COUNT=1
POWER_VM_DOWN_BEFORE_BACKUP=0
ENABLE_HARD_POWER_OFF=0
ITER_TO_WAIT_SHUTDOWN=3
POWER_DOWN_TIMEOUT=5
ENABLE_COMPRESSION=0
VM_SNAPSHOT_MEMORY=0
VM_SNAPSHOT_QUIESCE=0
ENABLE_NON_PERSISTENT_NFS=0
UNMOUNT_NFS=0
NFS_SERVER=192.168.0.142
NFS_MOUNT=/mnt/public/vmware/vmware-backup/
NFS_LOCAL_NAME=nfs_storage_backup
NFS_VM_BACKUP_DIR=mybackups
SNAPSHOT_TIMEOUT=15
EMAIL_LOG=1
EMAIL_DEBUG=1
EMAIL_SERVER=smtp.dominio.it
EMAIL_SERVER_PORT=25
EMAIL_DELAY_INTERVAL=1
EMAIL_TO=Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
EMAIL_TO=Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
EMAIL_FROM=Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.

 percorso del datastare sull'host ESX.

formato del backup thin 

 tiene una copia delle macchine virtuali.

 

 

 

 

indirizzo ip della nas(openfiler)

 percorso condivisione NFS.

 

server smtp per invio mail.

 

indirizzi che ricevono il report.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Premiamo CTRL e O per salvare dall'editor nano. Infine CTRL e X per uscire.

Adesso che abbiamo creato il file di configurazione per ghettoVCB creiamo anche il file dove inseriamo la lista delle macchine virtuali da salvare.

nano vm-list

Inseriamo solo il nome delle macchine virtuali che vogliamo salvare. Esempio:

nano-1

come sopra, CTRL e O per salvare , CTRL e X per uscire.

riassumendo

  • abbiamo scaricato gratuitamente lo script dal sito ufficiale.
  • abbiamo caricato lo script in un datastore a piacere e lo abbiamo decompresso.
  • abbiamo a disposizione uno storage di rete iSCSI o NFS.
  • abbiamo creato il file ghettoVCB.conf con le nostre configurazioni.
  • abbiamo creato il file contenente la lista delle macchine virtuali da salvare.
adesso possiamo schedulare il processo in modo che parta in automatico.
Valido per ESX 4.1 u2. ESXi 4.1 e 5 possiamo seguire la documentazione ufficiale.(Aggiornerò prima possibile)
diamo il comando crontab -e 
premiamo il tasto "ins" della tastiera per poter eseguire modifiche.

0 21 * * * /vmfs/volumes/IBM-DS3400/ghettoVCB/ghettoVCB.sh -f /vmfs/volumes/IBM-DS3400/ghettoVCB/vm-list -g /vmfs/volumes/IBM-DS3400/ghettoVCB/ghettoVCB.conf > /vmfs/volumes/VmwareOpenfiler/ghettoVCB-01-backup-$(date +\%s).log

 
scriviamo tutto su una riga, lasciando che vada a capo in automatico senza aggiungere spazi. Facciamo anche attenzione alle maiuscole e minuscole.
Linux è case sensitive. Premiamo "esc" per uscire dalla modalità inserimento.
 
Crontab utilizza l'editor VIM, quelli sotto sono alcuni comandi per questo editor.
  • :w!      per uscire senza salvare anche se abbiamo fatto modifiche.
  • :w       per uscire se non abbiamo fatto modifiche.
  • :wq     per uscire e salvare le modifiche.
con il comando crontab -l vediamo se le modifiche che abbiamo fatto sono corrette.
 
nell'esempio sopra ogni sera di ogni mese di ogni anno alle 21:00 parte lo script in questa posizione 

/vmfs/volumes/IBM-DS3400/ghettoVCB/ghettoVCB.sh

salva le macchine virtuali presenti in questa lista

/vmfs/volumes/IBM-DS3400/ghettoVCB/vm-list

utilizzando le configurazioni impostate in questo file

/vmfs/volumes/IBM-DS3400/ghettoVCB/ghettoVCB.conf

scrivendo anche un file di log.

/vmfs/volumes/VmwareOpenfiler/ghettoVCB-01-backup-$(date +\%s).log

se avessi voluto che il mio script partisse solo il sabato alle 21:00 di ogni mese di ogni anno avrei impostato i primi valori cosi:    0 21 * * 6   
se avessi voluto farlo partire alle 14:30 del mercoledi e domenica avrei impostato i valori cosi:                                                   30 14 * * 3,0
per tutte le combinazioni possiamo cercare guide che parlano di crontab.

# Minute   Hour   Day of Month         Month             Day of Week        Command    
# (0-59)  (0-23)     (1-31)        (1-12 or Jan-Dec)     (0-6 or Sun-Sat)                
    0        2          12                *               0,6            comando da eseguire

NOTA: ESXi versione 5 non è disponibile in crontab da comando e al riavvio le schedulazioni vengono cancellate.
Occorre eseguire alcuni passi come riportato nella pagina del ghettovcb sulla voce di configurazione per ESXì. documentazione ufficiale.

 

(0 Votes)