Kosmous beyond the clouds: Sviluppo, Formazione e Consulenza Informatica

Backup e restore I

Se provate a chiedere ad un sistemista (vero!) quali sono le tre regole principali che si devono seguire per essere dei bravi sistemisti, penso che 9 volte su 10 otterrete la stessa risposta: backup, backup, backup!
Perchè questo? Che cos'è il backup e perchè è così importante?
Questo breve articolo, il primo di una serie di tre, proverà a dare una risposta, per forza di cose abbastanza sbrigativa, a queste domande, presentando inoltre uno script bash che di backup appunto si occupa.
Anche se la serie di articoli è incentrata sul mondo Linux, questa prima parte ha un taglio prettamente teorico, e può sostanzialmente applicarsi a qualunque sistema operativo.


Che cos'è il backup e perchè e così importante

Il backup non è altro che la copia di dati, conservata per ogni eventualità.
Se questo fosse un mondo perfetto, non ci sarebbe bisogno del backup (così come non ci sarebbe bisogno delle patch di sicurezza ;-)), ma giacchè siamo parecchio lontani dalla perfezione...
Le possibilità che avvenga una problema al server che generi una perdita parziale (o completa) di dati sono piuttosto alte: un problema di tensione elettrica; un utente incapace o anche solo sfortunato; il classico ragazzetto in cerca di gloria con i suoi script; un errore del sistemista (e già, ci sta anche quello).
Il recupero di dati cancellati dal disco è sempre molto complicato, nei pochi casi in cui è possibile (c'è un interessante documento fra gli how-to del LDP al proposito), e altrettanto lo è il recupero di dati perduti per corruzione del filesystem, anche utilizzando i journaled filesystem, che sono molto utili ma non fanno miracoli.
Cosa fare quindi se i dati non sono recuperabili?
Se si possiede una copia di backup dei dati, il sole per il sistemista sorgerà anche domani; in caso contrario, il consiglio migliore è la fuga (dal cliente infuriato!).
Il possesso di una copia di backup permetterà di ripristinare buona parte dei dati perduti (la percentuale di dati ripristinati varierà a seconda della bontà della strategia di backup utilizzata, ma difficilmente - in un server di produzione - sarà del 100%).
Ecco perchè è importante fare delle copie periodiche dei dati importanti: copie che andranno custodite gelosamente e in un ambiente che non sia lo stesso nel quale si trova il server di cui si è fatto il backup. Questo per ovvi motivi: un incendio che distruggesse la sala macchine distruggerebbe altrimenti anche le copie di backup, vanificando del tutto il lavoro fatto.


Su cosa fare il backup: i supporti

Esistono diversi supporti sui quali è possibile memorizzare i dati di backup.
Il più classico e tradizionalmente usato è il nastro. Diponibile in diversi formati, sino a capacità di diversi giga, presenta vari vantaggi e svantaggi.
Tra i vantaggi:
  1. è semplice da usare (su unix, ad esempio, i comandi per il backup sono stati scritti pensando ai supporti su nastro);
  2. può essere riutilizzato più volte.

Tra gli svantaggi:
  1. l'accesso ai dati è, naturalmente, lento perchè seriale;
  2. è lento in scrittura;
  3. è relativamente costoso, sia nell'apparecchiatura da backup che nei media.

In tempi recenti nuovi media hanno eroso la percentuale di utilizzo dei nastri, senza comunque eliminarli dal mercato (tutt'altro, direi): innanzitutto i cd.
Che hanno il vantaggio della durata maggiore nel tempo (che in realtà, vedi prove recenti, è probabilmente solo teorica), dell'accessibilità casuale ai dati, del bassissimo costo dei media e dei masterizzatori, della velocità.
Ma anche un grosso svantaggio: la scarsa capienza.
Non è pensabile per una azienda medio-grande fare il backup su supporti da 700 MB.
La situazione potrebbe realmente cambiare (segnando la fine dei dispositivi a nastro? improbabile, per ora) con i dvd: tutti i vantaggi del cd con una capienza di diversi giga (che promettono di diventare decine a brevissimo).
Il grave problema di cd e dvd è comunque il fatto che su certi sistemi necessitino di altri programmi per la scrittura dei dati (masterizzazione: cdrecord su Linux, ad esempio). A questo proposito il kernel 2.6, col suo packet writing, dovrebbe costituire un'autentica svolta: il packet writing permette infatti di scrivere su cd e dvd come se si trattasse di hard disk (quindi con un semplice copia e incolla, o cp).


Come fare il backup: le diverse tipologie
Esistono sostanzialmente tre diversi tipi di backup, che variano col variare dei dati che vengono salvati.
  1. Backup completo:
    è la copia completa dei dati che si vogliono preservare (una serie di file, un albero di directory, un intero filesystem)
  2. Backup differenziale:
    è la copia di tutti i file (e directory) che sono stati modificati dall'ultimo backup completo
  3. Backup incrementale:
    è la copia di tutti i file che sono stati modificati dall'ultimo backup completo o incrementale

La combinazione di queste tre tipologie di backup, in una precisa scansione temporale, costituisce la strategia di backup.




Che cos'è una strategia di backup
Naturalmente un'azienda seria deve essere in grado di produrre dei backup quanto più possibile sicuri ed efficaci.
L'obiettivo è, in caso di problemi, perdere il minor tempo possibile e sopratutto il minor quantitativo di dati possibili.
Per cui la creazione dei backup viene pianificata in un'attenta e precisa successione, a partire, generalmente, da un backup completo.
Tutte le strategie, di qualsivoglia tipo, dovrebbero prevedere, a scadenza settimanale o quindicinale, un backup completo.
Il supporto utilizzato potrebbe essere sempre lo stesso, o si potrebbe, per sicurezza, usarne due.
Nei restanti 6 (o 13) giorni dovrebbe invece essere fatto un backup incrementale (più lento) o differenziale.
Le strategie possono essere diverse:
- un supporto per ognuno dei 6 (o 13) giorni, che comporta una spesa maggiore ma una minima perdita di dati nel caso della corruzione di un supporto;
- un supporto di valore settimanale (quindicinale) che verrà conservato per un periodo predefinito, ad esempio per un mese. In questo modo, supponendo una strategia settimanale, si possono prevedere: un supporto per il backup completo e 4 per quelli incrementali (differenziali), etichettati come prima settimana, seconda settimana, etc., e riutilizzati quindi ogni 4 settimane. Il backup completo può essere sia settimanale (nel qual caso si può anche pensare a 4 supporti per il backup completo, da alternare mensilmente) che mensile .
Nel dettaglio qualche scenario tipico:

Cadenza: settimanale
Supporti backup completo: 1
Supporti backup inc/diff: 6
Backup completo ogni domenica
Backup inc/diff nei giorni restanti: i supporti sono etichettati con i giorni della settimana, e vengono sovrascritti ogni volta (naturalmente aumentando il numero dei supporti si può creare uno storico di 2/3 settimane, o anche di un mese

Cadenza: mensile
Supporti backup completo: 1
Supporti backup inc/diff: 4/5
Backup completo il 1 di ogni mese (si può anche pensare ad un backup ogni domenica, con 1 o 4 supporti)
Backup inc/diff nei giorni restanti (escludendo le domeniche in cui si fanno i backup full): i supporti sono etichettati come prima, seconda, terza e quarta settimana e vengono mantenuti quindi per un mese.


Il ripristino dei dati
Molto importante per la pianificazione di una corretta strategia è il problema del ripristino dei dati, vale a dire l'operazione con la quale i dati di cui si è fatto il backup vengono nuovamente copiati sul filesystem (ripristinati).
Le operazioni da svolgere per ripristinare i dati di backup variano a seconda che la strategia scelta utilizzi il backup differenziale o quello incrementale.
Nel caso di backup differenziali occorrerà:
  1. ripristinare i dati contenuti nel backup completo più recente
  2. ripristinare i dati dell'ultimo backup differenziale effettuato

Nel caso invece di backup incrementale si dovrà:
  1. ripristinare i dati contenuti nel backup completo più recente
  2. ripristinare i dati di tutti i backup incrementali effettuati dopo l'ultimo backup completo, a partire dal meno recente sino all'ultimo effettuato



Differenziale o incrementale?
La scelta tra effettuare una strategia basata sul backup di tipo differenziale o una basata sul backup incrementale, è condizionata da diversi fattori, quindi.
Vediamone alcuni nel dettaglio:

-- differenziale:
è la copia di tutti i dati modificati dall'ultimo backup completo
  1. svantaggi:
    comporta la copia di un numero maggiore di dati (il che significa che il backup sarà più lento e occuperà
  2. più spazio, provocando, probabilmente, una spesa maggiore)
  3. vantaggi:
    una maggiore ridondanza dei dati di backup
    maggiore velocità e semplicità di ripristino


-- incrementale
è la copia di tutti i dati modificati dall'ultimo backup completo o incrementale
  1. svantaggi:
    tempi e complessità di ripristino maggiori
  2. vantaggi:
    minor tempo di backup
    minor spazio occupato



Conclusioni
In conclusione: la scelta tra una strategia basata sul differenziale od una basata sull'incrementale è dovuta principalmente a questioni riguardanti la velocità di backup e/o ripristino (ed i costi, naturalmente), e andrà vagliata con attenzione alla luce delle proprie effettive necessità: non esistono, a livello di sicurezza dei dati, reali vantaggi nell'usare l'una o l'altra strategia.
Molta cura andrà poi dedicata alla protezione dei media contenenti i dati: protezione sia dagli agenti atmosferici, che dall'intervento umano (fortuito o voluto).
Nella seconda parte vedremo con più attenzione come fare il backup su un sistema *nix.
Vi invitiamo ad inviarci commenti, eventuali segnalazioni di errore e quant'altro.
Commenti (0)2003-10-07