La deduplicazione dei dati è stato uno dei maggiori temi di discussione in ambito backup e archiviazione degli anni passati, ed è importante avere una solida conoscenza dei suoi fondamenti se state pensando di usarla nel vostro ambiente di storage. Lo scopo di questo articolo è appunto quello di aiutarvi ad acquisire tale livello di conoscenza per poter affrontare in modo adeguato l’argomento.
Come si intende per deduplicazione
Quando il termine deduplicazione, indicato anche come data dedupe o data deduping, viene utilizzato senza qualificatori (per esempio, livello di deduplicazione dei file), tipicamente ci si riferisce al livello di deduplicazione subfile.
Ciò significa che i singoli file sono suddivisi in segmenti e questi segmenti vengono esaminati per comunanza. Se due segmenti sono ritenuti identici (anche se all’interno di file diversi), uno dei segmenti viene cancellato e sostituito con un puntatore a un altro segmento. I segmenti ritenuti nuovi o unici vengono ovviamente memorizzati.
File diversi – anche se sono in file system diversi o su server differenti – possono avere segmenti in comune per una serie di motivi fra i quali:
- Nel backup, i segmenti duplicati tra i file potrebbero indicare che lo stesso identico file esiste in più posti.
- I duplicati vengono creati anche durante l’esecuzione ripetuta di un backup completo del server stesso.
- Infine, i segmenti duplicati possono essere creati durante l’esecuzione di backup incrementali di file. Anche se solo pochi byte di un file sono stati modificati, l’intero file è di solito replicato dal sistema di backup. Se si spezza il file in segmenti, la maggior parte di questi segmenti è la stessa all’interno di diverse versioni dello stesso file e solo il nuovo e univoco segmento dovrebbe essere memorizzato.
Dove sono deduplicati i dati: deduplicazione inline e post-processing
I due approcci principali (deduplicazione inline e deduplicazione post-processing) sono più o meno analoghi alla replica sincrona e alla replica asincrona.
- La deduplicazione inline è simile alla replica sincrona, in quanto la procedura viene fatta in tempo reale, mentre il dato viene scritto su disco; i dati originali e nativi non vengono mai scritti sul disco di backup. In un sistema inline, solo i segmenti nuovi e univoci sono scritti su disco.
- La deduplicazione post-processing è simile alla replica asincrona in quanto consente la scrittura dei dati originali su disco e la loro deduplicazione in un secondo momento: il “ritardo” può essere di secondi, minuti oppure ore, a seconda del sistema di cui stiamo parlando e di come è stato configurato.
I fornitori di sistemi inline dichiarano che i loro prodotti sono più efficienti e che richiedono meno spazio sul disco. I fornitori di prodotti post-processing affermano di permettere una scrittura iniziale più rapida e di consentire più veloci performance nella lettura dei dati più recenti – soprattutto perché sono memorizzati nel loro formato nativo.
Entrambi gli approcci hanno pregi e difetti: un prodotto non dovrebbe essere scelto solo in base a queste argomentazioni, ma verificando anzitutto il rapporto prezzo/prestazioni, che può o meno essere influenzato dalla scelta di operare in modalità inline o di post-processing.
Come sono identificati i dati duplicati?
Per rispondere a questa domanda si possono seguire tre approcci: hash-based, hash-based modificato e delta differenziale.
I fornitori di prodotti hash-based prendono i segmenti di file e vi applicano un algoritmo cifrato di hashing, come SHA-1, o SHA-256, ognuno dei quali crea un valore numerico (da 160 bit a 256 bit, a seconda dell’algoritmo) che può essere confrontato con i valori numerici di ogni altro segmento con cui il sistema di deduplicazione ha sinora avuto a che fare. Due segmenti che hanno lo stesso hash sono considerati ridondanti.
Un approccio hash-based modificato utilizza in genere un hash molto più piccolo (per esempio, CRC di soli 16 bit) al fine di stabilire se due segmenti possono essere la stessa cosa e quindi proporli come candidati di ridondanza.
Due segmenti potenzialmente identici, sono sottoposti a una comparazione a livello binario per verificare che siano effettivamente la stessa cosa, prima di eliminarne uno dei due e sostituirloo con un puntatore.
I sistemi delta differenziali tentano di associare i segmenti più grandi tra loro (per esempio, due backup completi dello stesso database) e fanno un confronto a livello di blocco. L’approccio delta differenziale è utile unicamente nei sistemi di backup, in quanto funziona solo quando si confrontano tra loro più versioni degli stessi dati. Questo non succede nello storage primario, pertanto tutti i principali sistemi di deduplicazione storage utilizzano l’approccio hash-based o hash-based modificato.
Deduplicazione target vs. deduplicazione alla sorgente e approcci ibridi
Come vanno identificati i dati deduplicati? Questa domanda si applica solo ai sistemi di backup e prevede tre possibili risposte: target, sorgente e ibrido.
Un deduplicazione target del sistema è applicata su backup regolari non-deduplicati ed è di solito presentata al server di backup come una condivisione NAS o VTL. Una volta che i backup sono conclusi, vengono deduplicati (inline o come post-processing) e scritti su disco. Questo sistema viene chiamato deduplicazione target e il suo principale vantaggio è che permette di mantenere il software di backup esistente.Se invece siete disposti a cambiare il software di backup potete passare alla deduplicazione alla sorgente, dove i dati duplicati sono identificati sul server su cui viene eseguito il backup e prima che siano inviati attraverso la rete.
Il maggore vantaggio di questo approccio è il risparmio di banda, che fa della deduplicazione alla sorgente la soluzione perfetta per il mobile e per i dati remoti.
L’approccio ibrido richiede una spiegazione un po’ più approfondita. Si tratta essenzialmente di un sistema di deduplicazione target, ma con alcune differenze che spieghiamo di seguito.Ricordate infatti che per deduplicare i dati, i file devono essere prima suddivisi in segmenti. In un approccio hash-based, un valore numerico – o hash – viene calcolato sul segmento e quindi tale valore viene cercato nella tabella di hash per vedere se è già stato visto in precedenza.
In genere, tutti e tre questi passaggi vengono eseguiti nello stesso posto – sia nel caso di source sia di target. In un sistema ibrido, i primi due passi possono essere eseguiti sul client dove viene effettuato il backup e il passaggio finale può essere invece demandato al server di backup.
Il vantaggio di questo approccio (rispetto agli approcci tipicamente target) è che i dati possono essere compressi o cifrati presso il client. Comprimere o crittografare i dati prima che raggiungano un tipico sistema di deduplicazione target potrebbere avere un significativo impatto sul rapporto di deduplicazione, arrivando addirittura ad azzerarlo. Tuttavia, permette sia la compressione sia la cifratura dei dati prima che vengano inviati attraverso la rete.
Cos’è la deduplicazione dello storage primario?
La deduplicazione dei dati viene impiegata anche nello storage di dati primari, in cui i dati duplicati non sono così comuni – ma comunque esistono. Proprio come nel backup, lo stesso file può risiedere in più luoghi, o gli utenti finali possono salvare più versioni dello stesso file per proteggersi da eventuali incidenti.
Un tipo di dati con molti punti in comune all’interno di file differenti è l’immagine di sistema nell’ambito della virtualizzazione. Il drive C: (o root) per un sistema è quasi esattamente identico al drive C: (root) di un altro sistema. Un buon sistema di deduplicazione identifica tutti i file e i segmenti comuni e li sostituisce con una sola copia.
Sia che si parli di backup o storage primario, la quantità di disco utilizzato è fortemente dipendente dal tipo di dati da archiviare e dalla quantità di segmenti duplicati trovati all’interno di tali dati. I salvataggi tipici relativi al backup rientrano nell’intervallo 5:1-20:1 con una media intorno a 10:1; se gli utenti eseguono frequenti backup completi si tende a raggiungere il livello superiore.
Il risparmio nel caso dello storage primario viene generalmente espresso in percentuali di riduzione: si tende perciò a dire “c’è stata una riduzione del 50%”, che suona molto meglio di un rapporto di deduplicazione 2:1. I risparmi tipici nel caso dello storage primario spaziano dal 50% al 60% per i dati tipici, e arrivano fino al 90% o anche oltre per situazioni come le immagini dei desktop virtuali.
Un unico sistema non è adatto a tutti
Le performance e il tasso di deduplicazione dei dati saranno notevolmente diversi da ambiente ad ambiente. Un sistema di deduplicazione adatto alle esigenze di un’organizzazione può essere del tutto inadeguato per la vostra azienda, perché differenti approcci lavorano meglio su diversi tipi di dati e modelli di comportamento.