Skip to the content.

Torna a reti ethernet

Backup

Il backup si realizza essenzialmente per raggiungere due obiettivi:

Backup dei dati

Riguardo la tecnica del montaggio, in un punto del filesystem di un disco di piccole dimensioni che ospita l’SO, di un disco di grandi dimensioni per lo storage dei dati, si può legittimamente ritenere che essa realizza un NAS. UN NAS ha essenzialmente due componenti:

I NAS sono normalmente realizzati per due scopi:

Il disco di storage potrebbe essere realizzato:

La modalità con cui in un NAS si possono recuperare i dati sono essenzialmente due:

NAS virtualizzati

Per quanto riguarda la realizzazione del disco di storage da aggiungere al disco del SO di una VM, si è scelta la modalità di aggregazione indipendente. In questo modo un eventuale backup o un eventuale snapshot della VM conserverà sul NAS solo il disco del SO e non quello del NAS. L’impostazione è necessaria perchè:

alt text

Nel momento in cui si fa il backup delle VM, questo esegue solamente il backup del disco di servizio, cioè quello con il SO.

True NAS

I dati vengono conservati su un disco di grande dimensione (attualmente 4TB), virtualizzato su VMWARE ESXI e montato su un sistema operativo specializzato nella realizzazione delle funzioni tipiche di un NAS noto sotto il nome di TrueNAS.

TrueNAS (chiamato FreeNAS prima della versione 12.0) è un sistema operativo open source basato su FreeBSD che permette di costruire un dispositivo collegato ad una rete di computer la cui funzione principale è quella di condividere tra gli utenti della rete una Area di storage (o disco), cioè un NAS (https://it.wikipedia.org/wiki/FreeNAS).

FreeNAS permette di configurare ogni dettaglio tramite un’interfaccia grafica WebGUI; ciò permette di usare un browser per modificare i settaggi, montare dischi e avere informazioni sul sistema. Questo rende possibile la gestione remota dell’hardware su cui è installato FreeNAS che non necessita perciò di mouse, tastiera e monitor. Si tratta quindi di un prodotto ideale per essere virtualizzato in un hypervisor (https://it.wikipedia.org/wiki/FreeNAS).

Truenas organizza il disco in strutture dati chiamate pools simili a directory su cui è possibile impostare tutta una serie di parametri quali permessi e quote per singolo utente.

alt text

Al momento sono stati creati i seguenti contenitori di files che in gergo TrueNAS si chiamano pools e sono analoghi a delle cartelle:

Quando si attiva un task di copia di files da una sorgente remota al suo pool di backup sul NAS, l’azione svolta è sostanzialmente una sovrascrittura dei vecchi file del pool con in nuovi files prelevati dalla sorgente:

Apparentemente i file sovrascritti, modificati o cancellati andrebbero così irrimediabilmente persi ad ogni copia. In realtà ciò non accade perché è sempre attivo un meccanismo di snapshots che, ad ogni nuova copia, crea dei punti di ripristino, corredati di data, della vecchia. A ben vedere, ad ogni nuova copia, non viene, in realtà, caricato nuovamente tutto il file, ma solamente la sua differenza con la versione precedente. Gli snapshot sono, in definitiva, un meccanismo deputato al mantenimento della versione (versioning) di un file ad ogni sua successiva modifica. Il tempo di retenzione degli snapshot non è comunque infinito e può essere impostato nel menù Periodic Snapshot Task:

alt text

Task

Inoltre TrueNAS mette a disposizione i cosìdetti Task (compiti) che rappresentano i processi di backup (o restore) che il sistema attualmente mette a disposizione. Di tutti al momento sono stati adoperati (o prevediamo di usare a breve):

Backup dei dati

Backup delle cartelle personali degli alunni nella didattica Ogni alunno, una volta autenticatosi su una postazione qualsiasi con la propria password personale (protocollo di autenticazione Kerberos), accede al proprio desktop di windows (servizio di Active Directory), dove ha a disposizione due cartelle di rete:

Le cartelle di rete altro non sono che condivisioni ottenute mediante il montaggio locale via protocollo SMB (detto anche samba) di cartelle remote contenute su un NAS di servizio associato al server Univention (https://www.univention.com/). Abbiamo individuato l’obiettivo di proteggere la risorsa dei dati personali e di gruppo rappresentata dalle condivisioni sul server Univention a fronte di perdite accidentali (guasti) o intenzionali (intrusioni), per cui si è reso necessario progettare il backup delle cartelle sul NAS di servizio su un NAS di backup.

Il servizio di TrueNAS scelto per ottenere lo scopo è il Cron job. Con Questo task realizziamo il backup delle cartelle personali di Active Directory mediante tecnica PULL, ovvero TrueNAS si connette, mediante protocollo ssh alla macchina AD, si autentica ed esegue il comando rsync che clona i file dalla macchina remota (modalità PULL) e dopo sposta la copia incrementale sulle cartelle del NAS.

Comandi rsync utilizzati nel CronJob:

rsync -av --delete root@ucs1.univention.marconicloud.it:/media/nas/ /mnt/UniventionBackup/UniventionNAS/Daily
rsync -av --delete root@ucs1.univention.marconicloud.it:/media/nas/ /mnt/UniventionBackup/UniventionNAS/Weekly
rsync -av --delete root@ucs1.univention.marconicloud.it:/media/nas/ /mnt/UniventionBackup/UniventionNAS/Montly
rsync -av --delete root@ucs1.univention.marconicloud.it:/media/nas/ /mnt/UniventionBackup/UniventionNAS/Hourly

Si rimarca che, in questo processo di backup, l’iniziativa di eseguire la copia dei dati è presa dal server TrueNAS che preleva i dati da remoto e li conserva in locale con politica PULL. Ci sono 4 copie aggiornate con periodicità diversa: oraria, giornaliera, settimanale e mensile. Le copie, al momento, sono mantenute in chiaro. L’accesso alle copie è riservato ai soli sistemisti della rete previa autenticazione.

Backup delle VM

Backup delle macchine virtuali di segreteria e didattica In questo caso, TrueNAS non è direttamente responsabile del processo di backup ma si limita a mettere a disposizione delle condivisioni NFS (Network File System). Ogni condivisione è specifica per una certa macchina VMWARE ESXI (hypervisor) ed è accessibile utilizzando la versione NFS4 del protocollo che richiede l’autenticazione della macchina al momento del montaggio della condivisione stessa. Le macchine, al momento, si autenticano presso il nas con la password di un utente amministratore del NAS. I path di montaggio sono:

Il montaggio è protetto da una ACL impostata sul NAS che limita gli accessi ai soli client NFS con IP incluso nell’elenco degli IP delle macchine ESXI.

Il processo di backup è sotto la responsabilità di ciascuna macchina ESXI che, individualmente, programma il proprio backup periodico tramite un servizio di cron. La forma della entry relativa nella cron table è analoga a:

30 4 * * * /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB.sh -a -g /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB.conf > /vmfs/volumes/VM_backup_10.0.0.8/ghettoVCB-\$(date +\\%s).log"

Si comanda l’esecuzione di un certo script 30 minuti dopo le ore 4 tutti i giorni, tutte le settimane e tutti i mesi (carattere *) con destinazione la condivisione NFS VM_backup_10.0.0.8 (ESXI della segreteria in questo caso). I backup sono corredati di log memorizzato sulla cartella della condivisione. La rotazione dei backup è di 3, ovvero vengono mantenute solamente le copie degli ultimi 3 giorni.

Per i dettagli vedi: Backup delle VM

Si rimarca che, in questo processo di backup, l’iniziativa di eseguire la copia dei dati è presa indipendentemente da ciascun hypervisor Vmaware ESXI che preleva i dati da locale e li conserva in remoto con politica PUSH. Si producono, sul NAS di backup, 3 copie aggiornate con periodicità giornaliera. Le copie, al momento, sono mantenute in chiaro. L’accesso alle copie è riservato ai soli sistemisti della rete previa autenticazione.

Per i dettagli sui protocolli NFS e SMB vedi: NFS vs SMB

alt text

Esempio di configurazione NFS

sudo mkdir -p /path/to/backup/folder

Modifica /etc/exports per condividere la directory:

sudo nano /etc/exports

Aggiungi la seguente riga:

/path/to/backup/folder client_ip(rw,sync,no_subtree_check)

Esporta le condivisioni:

sudo exportfs -a

Riavvia il server NFS per applicare le modifiche:

sudo systemctl restart nfs-kernel-server

Esempio di script bash di backup NFS

#!/bin/bash

# Monta la condivisione NFS
sudo mount server_ip:/path/to/backup/folder /mnt/backup

# Esegui il backup con rsync
rsync -av --delete /path/to/local/data/ /mnt/backup/

# Smonta la condivisione NFS
sudo umount /mnt/backup

Aggiungere lo Script a cron Apri crontab:

crontab -e

Aggiungi una linea per eseguire lo script di backup (ad esempio, ogni giorno alle 2:00 AM):

0 2 * * * /path/to/backup_script.sh

Esempio di configurazione Samba

sudo nano /etc/samba/smb.conf

Aggiungi una sezione per la condivisione dei backup:

[Backup]
path = /path/to/backup/folder
valid users = @users
read only = no
browsable = yes

Creare la directory per i backup e impostare le autorizzazioni:

sudo mkdir -p /path/to/backup/folder
sudo chown -R nobody:nogroup /path/to/backup/folder
sudo chmod -R 0777 /path/to/backup/folder

Riavvia Samba per applicare le modifiche:

sudo systemctl restart smbd
sudo systemctl restart nmbd

Esempio di script bash di backup Samba

#!/bin/bash

# Monta la condivisione Samba
sudo mount -t cifs -o username=username,password=password //server_ip/Backup /mnt/backup

# Esegui il backup con rsync
rsync -av --delete /path/to/local/data/ /mnt/backup/

# Smonta la condivisione Samba
sudo umount /mnt/backup

Apri crontab:

crontab -e

Aggiungi una linea per eseguire lo script di backup (ad esempio, ogni giorno alle 2:00 AM):

0 2 * * * /path/to/backup_script.sh

Sitografia:

Torna a reti ethernet