Archivio di parità
Da MontelLUG WIKI.
Stesura in corso
La definizione formale potete trovarla in rete (anche su Wikipedia), ma proviamo ad avvicinarci in modo meno formale, più pratico, più intuitivo a questo concetto "magico".
Un archivio di parità (o parity archive in inglese, o parchive) possiamo immaginarlo come una riserva di blocchi che ci consente di verificare l'integrità di un file e di ripristinare, se necessario, lo stato di un file (o un gruppo di file) nel caso in cui questi vengano per qualche motivo corrotti.
Infatti, oltre ad offire funzionalità di controllo dell'integrità dei dati, ne consente anche il recupero (vedremo i limiti).
Se conoscete già le funzioni hash (sha1, sha256, sha512, md5, ...), immaginate di avere un file e calcolare il suo checksum sha1: il risultato vi consentirà di verificare l'integrità del file nel tempo.
E quando il checksum non corrisponde? Niente, con sha1 (e le altre funzioni di hash) potete solo prendere atto del fatto che il file è stato modificato.
Con gli archivi di parità, invece, oltre a verificarne l'integrità, è anche possibile ripristinare il file al momento in cui è stato generato l'archivio di parità.
Un po' di storia
Gli archivi di parità - parchive - sono un'implementazione degli algoritmi di Irving S. Reed e Gustave Solomon, due matematici ed ingegneri del MIT, che nel 1960 svilupparono una serie di algoritmi per la correzione degli errori.
Il risultato del loro lavoro fu eccezionale: basti pensare che i loro algoritmi furono applicati per le comunicazioni tra le sonde Voyager e la Terra, nel DAT e sono tutt'ora utilizzati nel CD, nel DVD, nei codici a barre a due e tre dimensioni (sì, anche nei QR Code), nel RAID 6 e perfino nel Digitale Terrestre (DVB).
Ma in pratica, cosa fa?
Supponiamo di dover inviare un messaggio dalla Voyager (ormai fuori dal sistema solare, distante oltre 23 miliardi di chilometri dalla Terra) verso la Terra: può essere un testo, un video, un audio, ... qualsiasi messaggio.
Di qualunque tipo di messaggio si tratti verrà prima convertito in un messaggio digitale (una fila di zeri e uno: in pratica un file).
Questo messaggio verrà diviso in blocchi, ipotizziamo 10 blocchi.
Verrà calcolato l'archivio di parità per un 30% (ad esempio), per cui altri 3 blocchi.
A questo punto la Voyager invierà un "plico" di dati costituito da 13 blocchi.
"Ah, e dov'è il vantaggio? Dovremmo provare a rendere il pacchetto più piccolo, non più pesante!"
È questa la magia degli algoritmi di Reed-Solom: sulla Terra sarà sufficiente ricevere 10 blocchi qualsiasi dei 13 inviati dalla Voyager per essere in grado di ricostruire il messaggio originario.
Applicazioni casalinghe degli archivi di parità
Bravi questi Reed-Solomon! Come possiamo utilizzare questa tecnologia in applicazioni casalinghe?
I limiti sono dettati dalla fantasia; possiamo:
- proteggere un file (o un gruppo di file) importante sul PC da corruzione dei dati (sbalzi di corrente, data tampering, HDD a fine ciclo vita, ...)
- proteggere un backup da corruzione dei dati
- prima di masterizzare un CD/DVD (c'è chi lo fa ancora?) riempire la capienza disponibile con archivi di parità
- riciclare HDD più piccoli per contenere solo gli archivi di parità
Questa ultima opzione è interessante: infatti i parchive non devono obbligatoriamente risiedere nella stessa directory o file system o disco del dato originario; ovviamente sarà importante mantenere una corrispondenza tra la gerarchia che contiene il dato e quella che contiene il parchive.
Quindi, ad esempio, su un HDD si potrebbero tenere i dati e su un altro, ricostruendo l'esatta gerarchia di directory, solo i parchive.
In questo modo avrete realizzato un RAID 6 con dischi offline.
Hands on!
Vediamo di sporcarci un po' le mani sulla tastiera... :-)
Prima di tutto vi servirà installare il pacchetto par2cmdline
(a seconda della distribuzione che utilizzate il pacchetto potrebbe avere nomi diversi).
Il pacchetto installerà l'utility generica par2
con la quale sarà possibile eseguire tutte le operazioni; installerà anche par2create, par2verify, par2repair
come scorciatoie alle funzionalità specifiche.
Una volta installato il tool, a solo scopo di test, create una directory TestParchive e create dentro tre file: uno.txt, due.txt, tre.txt:
$ mkdir TestParchive && cd TestParchive && touch uno.txt && touch due.txt && touch tre.txt
Modificate i file di testo a vostro piacimento.
Adesso, per creare i parchive per il contenuto dell'intera directory, con una ridondanza del 10%, vi basterà digitare (siete già nella directory TestParchive):
$ par2 c -r10 TestParchive.par2 *
Oppure, utilizzando la scorciatoia par2create
:
$ par2create -r10 TestParchive.par2 *
ToDo
ToDo:
- esempi da riga di comando
- aggiungere immagini esplicative
- aggiungere collegamento a Parchive su ArchLinux
- limiti
- esplorare diverse opzioni (serve?)'"