mercoledì 23 gennaio 2013

NetApp non solo snapshot

Mi sono spinto a scrivere questo articolo che step by step spiega la tecnologia adottata da NetApp per gestire le snapshot, perché considero questo metodo un modo elegante e alternativo al più comune copy-on-write.
 

In the beginning was...


All'inizio le snapshot erano gestite in modo molto semplice: un backup solo più veloce. Si leggeva tutto il contenuto del disco e quindi lo ricopiava su un secondo disco.

Simple. Effective. Expensive.

Immagina questo tipo di snapshot come una fotocopiatrice: prendi un foglio, scrivi qualcosa su di esso, quando esegui una snapshot, semplicemente, fermati di scrivere e metti il foglio nella fotocopiatrice e fanne una copia.... In questo modo avrai 2 copie del foglio.
Un database potrebbe essere rappresentato come 100 fogli. Fare una snapshot potrebbe essere un procedimento lungo dal momento che dovresti copiare ogni pagina...
Certo, è un procedimento più veloce che copiare tutto a mano!
ok, l'analogia non è proprio perfetta, ma ci si avvicina.

Copy-on-Write Snapshots




Copiare tutti i dati ogni volta, può essere un operazione lunga che richiede molto spazio disco con costi tempo-denaro a volte eccessivi.
Inoltre, dovremo aggiungere il tempo di restore di tutti i dati del backup (snapshot)....
E se potessimo copiare solo i byte modificati?
A questo punto entra in gioco la snapshot copy-on-write. La prima snapshot registrerà una sorta di baseline prima che qualsiasi byte possa cambiare.
Dal momento che nulla è ancora stato modificato, non si avrà spazio utilizzato nella snapshot appena creata.
Ci si aspetta comunque che, prima o poi, qualcosa verrà modificato; si dovranno allora “registrare” queste modifiche. Il sistema copy-on-write andrà perciò a copiare il “vecchio” dato – prima che sia modificato – in un'area di snapshot, quindi sovrascriverà il dato.
Semplice ed efficace!
Ora il nostro backup non occuperà molto spazio dal momento che la snapshot registrerà solo i cambiamenti (delta).
Ma... ci sono dei lati negativi,
Ogniqualvolta che si andrà a modificare i blocchi dati, il sistema dovrà prima leggere il vecchio dato, poi scriverlo nell'area di snapshot, e quindi scrivere il dato aggiornato nella sua posizione.
Nota come il sistema, per ogni aggiornamento, dovrà eseguire due scritture e una lettura.
Questo modo di agire rallenta le cose.
In definitiva, si tratta di un compromesso; perdi in scrittura, ma in compenso non hai bisogno di grandi volumi per gestire la tua snapshot.
Oggi, questo problema viene gestito usando particolari algoritmi di cacheing, i quali possono ridurre la menzionata perdita di performance.



Ok, ma...cosa succede se non hai i dati originali?


NetApp Snapshots



NetApp con il suo filesystem WALF, gestisce il problema in modo differente. Invece di copiare i vecchi dati prima che essi siano modificati, NetApp (ok.. Ontap...) andrà a scrivere queste nuove informazioni in una zona speciale del disco chiamata SnapReserve; successivamente, il puntatore che identifica nel sistema quel dato verrà aggiornato per puntare al nuovo dato scritto nella SnapReserve.


Questo è il motivo per cui ogni volta che viene cambiato un dato (e la cancellazione è intesa come modifica) quest'area si andrà a riempire.
Questo metodo porta con sé indubbi vantaggi; si dovranno registrare solo i delta dei dati – è già un miglioramento rispetto alle performance del copy-on-write - . Dal momento che le snapshot sono solo dei puntatori, quando vorrai fare il restore dei dati (usando il SnapRestore) tutto ciò che il sistema dovrà fare è aggiornare i puntatori ai dati originali, il che è molto più veloce che copiare tutti i dati dell'area di snapshot nella posizione originale, come farebbe il copy-on-write.
Bene, ma c'è dell'altro...


Snapshots Are Views



Sarebbe bello pensare alla snapshot come ad una sorta di vista dei tuoi dati al momento della snapshot... ed essendo dei puntatori ciò è possibile! Se, per esempio, incorri in una delete accidentale di un dato, ti sarà possibile accedere ad una sotto cartella (.snapshot), la quale sarà difatto la tua vista (in read only) verso il passato....

A questo devo aggiungere che anche ZFS è in grado di offrire questa vista tramite la directory .zfs, ma ad eccezione di questa, non conosco altre tecnologie che posseggano questo splendido servizio.




Nessun commento:

Posta un commento