Backup gratuito dei server vmware esx
Di seguito un modo per fare il backup integrale, gratuito, con rotazione, notifica via email, memorizzazione su nas di rete,… delle macchine virtuali presenti su un server ESXi dalla versione 2 alla versione 6.
Ingredienti
- server esxi
- connessione ssh al server esxi
- NAS che supporti NFS
Preparazione
Come sappiamo ESXi supporta il file system NFS rendendo quindi possibile montare la nostra unità NAS per accogliere i backup creati. Ovviamente anche quest’ultima deve supportare il protocollo di rete NFS.
Operazioni preliminari: aggiungere un datastore usando la condivisione NFS di un’unità NAS
Prima di iniziare a creare i nostri backup dobbiamo preparare loro una destinazione idonea ed una delle migliori possibili è sicuramente un’unità NAS. Una volta creata su di essa una partizione con NFS possiamo montarla per farla leggere anche al nostro server ESXi come datastore.
Per farlo apriamo vSphere Client e portiamoci sul tab
Configuration > Storage > Add Storage
Nella selezione del tipo di storage spuntiamo Network File System e andiamo avanti.
Nella finestra che si apre dobbiamo andare a inserire i dati della condivisione NFS che vogliamo collegare:
- Server: nome host o indirizzo IP dell’unità NAS
- Folder: percorso della directory NFS
- Datastore Name: il nome che vogliamo assegnare al nostro nuovo datastore
Se i dati inseriti sono corretti vedremo la nostra unità NAS aggiunta all’elenco dei datastore:
Backup con ghettoVCB
Iniziamo ora con le operazioni vere e proprie di backup scaricando il file .zip di ghettoVCB e caricando sull’host ESXi i 2 script bash.
Queste sono le operazioni da fare se vi trovate su un ambiente Linux/Osx:
Scaricate il file zip
wget https://github.com/lamw/ghettoVCB/archive/master.zip
Scompattate l’archivio
unzip master.zip
E caricate tramite scp i 2 file bash sull’host ESXi all’interno del datastore:
scp ghettoVCB-master/*.sh root@192.168.0.200:/vmfs/volumes/datastore1
Come vedete l’archivio master.zip contiene anche altri file. Useremo però solo i 2 principali perchè sono sufficienti alle operazioni di backup e restore.
Ora che abbiamo caricato i file che ci interessano sul server ESXi colleghiamoci ad esso usando il terminale se siamo su ambiente Linux o usando PuTTY se il sistema operativo è Windows.
Portiamoci sulla directory del datastore dove risiedono le nostre macchine virtuali e dove abbiamo salvato i 2 script di ghettoVCB:
cd /vmfs/volumes/datastore1
e creiamo una directory dove andare a mettere i file per il backup:
mkdir ghettoVCB mv *.sh ghettoVCB
Dando il comando ls vediamo come oltre alla directory appena creata vi siano anche le directory di tutte le macchine virtuali.
Entriamo ora nella directory ghettoVCB:
cd ghettoVCB
ed andiamo a editare il file ghettoVCB.sh usando l’editor vi:
vi ghettoVCB.sh
Individuiamo la seguente riga e modifichiamola con il nome che abbiamo dato al nostro datastore NFS:
VM_BACKUP_VOLUME=/vmfs/volumes/backupNAS
Questo è l’unico parametro strettamente necessario, le altre opzioni (quanti backup della stessa macchina mantenere sul datastore NFS, se comprimere o no i backup, ecc..) sono commentate in modo chiaro e possiamo perciò impostarle secondo i nostri bisogni.
Salviamo, chiudiamo il file e siamo pronti a fare il backup delle macchine virtuali.
Salvare tutte le macchine virtuali presenti sul server ESXi:
/vmfs/volumes/datastore1/ghettoVCB/ghettoVCB.sh -a
Backup di una singola macchina virtuale espressamente indicata:
/vmfs/volumes/datastore1/ghettoVCB/ghettoVCB.sh –m nome_macchina
Lanciato il comando l’operazione di backup si avvierà mostrando i risultati in output su video o, se indicato con l’opzione -l, sul file di log
Schedulare i backup
ghettoVCB sfrutta le risorse dell’hyervisor per i sui backup pertanto potremmo aver bisogno di schedulare questi nelle ore notturne o comunque di minor criticità.
Le istruzioni del cron sono memorizzare sul file
/var/spool/cron/crontabs/root
per prima cosa aggiungiamogli il permesso di scrittura:
chmod +w /var/spool/cron/crontabs/root
ora possiamo aprirlo in modifica:
vi /var/spool/cron/crontabs/root
In fondo al file scriviamo l’istruzione che vogliamo far partire specificando anche i parametri temporali.
30 1 * * * /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB.sh -a -l /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB-backup-$(date +%d-%m-%y).log
salviamo e chiudiamo il file.
Come in crontab, i primi cinque campi indicano la frequenza con la quale eseguire il comando.
IMPORTANTE: ESXi usa sempre il tempo coordinato universale (UTC) pertanto dobbiamo calcolare il nostro fuso orario rispetto ad esso quando indichiamo l’ora nelle operazioni schedulate.
Per avere le modifiche funzionanti dobbiamo prima arrestare il demone crond e poi rilanciarlo:
kill $(pidof crond) crond
Rendere persistenti i comandi schedulati
Le modifiche che abbiamo appena apportato a cron non sono persistenti. Vediamo quindi come renderle tali facendo in modo che vengano riscritte ad ogni riavvio.
ESXi esegue ad ogni suo avvio rc.local come avviene per altre distribuzioni Linux. Andiamo quindi ad editare questo script per fare in modo che ad ogni avvio vada a scrivere sul cron le istruzioni descritte sopra.
Per farlo apriamo il file
vi /etc/rc.local.d/local.sh
e inseriamo le seguenti righe in fondo al file subito prima di exit 0:
/bin/kill $(pidof crond) /bin/echo "30 9 * * * /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB.sh -a" >> /var/spool/cron/crontabs/root crond
Invio dei log di backup via mail
Oltre che registrarli sul file come visto in precedenza, è possibile ricevere i log con gli esisti dei backup fatti anche via mail.
Andiamo quindi ad attivare questa funzionalità tornando ad editare lo script ghettoVCB.sh:
vi /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB.sh
Scorriamo fino ad arrivare alla sezione #EMAIL CONFIGURATIONS e andiamo ad abilitare i log via mail, indicare il server SMTP e l’indirizzo al quale ricevere i log.
# Email log 1=yes, 0=no EMAIL_LOG=1 # Email SMTP server EMAIL_SERVER=ip o nome del server smtp # Email FROM EMAIL_FROM=root@ghettoVCB # Email RCPT EMAIL_TO=indirizzo@nostra_mail.it
Salviamo le modifiche e chiudiamo il file.
Abilitazione SMTP su firewall
Abbiamo ora impostato ghettoVCB in modo che ci invii i log via mail ma prima che ciò possa avvenire dobbiamo abilitare la porta SMTP in uscita che di default è chiusa dal firewall.
La directory con le regole del firewall è:
/etc/vmware/firewall/
ma anche qui non vengono mantenute le modifiche dopo il riavvio. Vediamo quindi come fare per rendere persistente l’apertura in uscita della porta 25 SMTP.
Creiamo il file smtp.xml nella directory ghettoVCB sul nostro datastore:
vi /vmfs/volumes/datastore1/ghettoVCB/smtp.xml
E incolliamo il seguente codice:
<ConfigRoot> <service id='1000'> <id>SMTP_Outbound</id> <rule> <direction>outbound</direction> <protocol>tcp</protocol> <porttype>dst</porttype> <port>25</port> </rule> <enabled>true</enabled> <required>false</required> </service> </ConfigRoot>
chiudiamo salvando il file.
Per attivare subito la regola copiamo il file creato sulle regole del firewall:
cp /vmfs/volumes/datastore1/ghettoVCB/smtp.xml /etc/vmware/firewall/
e riavviamo il firewall stesso:
esxcli network firewall refresh
Per automatizzare queste operazioni in modo che avvengano ad ogni avvio di ESXi dobbiamo nuovamente editare lo script local.sh:
vi /etc/rc.local.d/local.sh
aggiungiamo anche le seguenti 2 righe in fondo al file ma sempre prima di exit 0:
cp /vmfs/volumes/datastore1/ghettoVCB/smtp.xml /etc/vmware/firewall/ esxcli network firewall refresh
poi salviamo e chiudiamo il file.
In questo modo ad ogni riavvio verrà copiata la regola per l’apertura in uscita della porta 25 di SMTP e riavviato il servizio del firewall.
Se vogliamo testare subito la nostra configurazione e vedere se riceviamo le mail lanciamo una simulazione di backup attraverso la funzione dryrun:
/vmfs/volumes/datastore1/ghettoVCB/ghettoVCB.sh -a -d dryrun
Essendo una simulazione non viene scritto nessun backup ma possiamo vedere se la mail ci è arrivata correttamente all’indirizzo indicato nella configurazione.
N.B: ESXi non ha il supporto delle librerie SASL pertanto non è possibile utilizzare SMTP con autenticazione. Come client mail per inviare i log ESXi utilizza semplicemente Netcat.
Fonti:
ARTICOLI
Network sistemi operativi