Con l’uscita della build 128a di OpenSolaris viene aggiunta una nuova ed importante funzionalità a ZFS: la “deduplication” (evito di tradurre la parola…). Grazie a questa nuova funzionalità il filesystem è in grado di riconoscere eventuali blocchi duplicati e scriverli una volta solo… risparmiando così spazio su disco! I blocchi vengono riconosciuti grazie ad una chiave di hash generata da un algoritmo (selezionabile) e verificata prima di ogni scrittura.
Prima di entrare nel dettaglio mettiamo subito alla prova tale feature; creiamo tre dischi “su file” (da 150 Mega ciascuno) che andranno a comporre il nostro pool:
$ mkfile 150m disk1 disk2 disk3
ora creiamo il nuovo pool, chiamandolo con molta fantasia “dedup”:
$ pfexec zpool create dedup \
/export/home/luca/tmp/disk1 \
/export/home/luca/tmp/disk2 \
/export/home/luca/tmp/disk3
controllandone le caratteristiche vediamo subito che la dimensione è pari a 435 Megabyte e notiamo che il rapporto di “deduplication” è pari a uno (visto che ancora non abbiamo scritto nulla):
$ zpool get all dedup NAME PROPERTY VALUE SOURCE dedup size 435M - dedup capacity 0% - dedup altroot - default dedup health ONLINE - dedup guid 598651376828683765 default dedup version 22 default dedup bootfs - default dedup delegation on default dedup autoreplace off default dedup cachefile - default dedup failmode wait default dedup listsnapshots off default dedup autoexpand off default dedup dedupratio 1.00x - dedup free 435M - dedup allocated 79.5K -
ora andiamo ad abilitare la “deduplication” a livello di filesystem:
$ pfexec zfs set dedup=on dedup
da questo momento in poi, per ogni nuovo blocco che ZFS andrà a scrivere effettuerà il controllo di duplicazione: copiamo alcuni file nel nuovo filesystem e controlliamo. Per il test ho scelto di copiare alcuni MP3 presenti sul mio disco fisso, vediamo l’occupazione dei file prescelti:
$ du -h /export/home/luca/Documents/Music/aavv_80/ 72M /export/home/luca/Documents/Music/aavv_80/
ora creiamo tre cartelle nel nostro filesystem su cui andremo a copiare i file
$ cd /dedup $ pfexec mkdir d1 $ pfexec mkdir d2 $ pfexec mkdir d3 $ pfexec mkdir d4
e copiamo i file:
$ pfexec cp /export/home/luca/Documents/Music/aavv_80/* d1 $ pfexec cp /export/home/luca/Documents/Music/aavv_80/* d2 $ pfexec cp /export/home/luca/Documents/Music/aavv_80/* d3 $ pfexec cp /export/home/luca/Documents/Music/aavv_80/* d4
ora controlliamo lo spazio occupato:
$ du -h . 72M ./d1 72M ./d2 72M ./d3 72M ./d4 287M .
i conti tornano; su tutte e quattro le cartelle sono presenti 72 Megabyte di MP3… mmmm… e la “deduplication” che fine ha fatto… non ha funzionato?!?!??? Controlliamo meglio:
$ zpool list dedup NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT dedup 435M 72.5M 363M 16% 4.00x ONLINE -
ecco svelato il mistero!!! Il comando “du” (come anche ls e molti altri) agendo a livello user “vede” la dimensione reale del file (la stessa cosa accade per i filesystem compressi), ma se controlliamo meglio lo spazio allocato a livello di pool vediamo che in realtà sono stati utilizzati “solo” 72.5 Megabyte e il rapporto di “deduplication” è salito a 4; ora i conti tornano alla perfezione!!!
Bene, dopo la pratica torniamo a parlare di teoria, analizzando le varie opzioni legate a questa nuova caratteristica. In precedenza abbiamo semplicemente attivato la deduplication, accettando così le impostazioni di default, tuttavia esistono diverse opzioni settabili per la proprietà dedup:
- off: dedup disattivata;
- on: dedup attivata, il blocchi vengono controllati con l’algoritmo SHA256;
- verify: come sopra l’algoritmo di hash è sempre SHA256, ma in caso di rilevamento di un blocco uguale, viene verificata l’esattezza bit a bit;
- fletcher4,verify: viene usato l’algoritmo di hash “fletcher4″, che risulta essere molto più veloce ma che produce con maggiore probabilità delle duplicazioni di chiavi e quindi è per questo che la verifica è obbligatoria.
Non è detto che in futuro vengano implementati anche altri algoritmi per la verifica delle duplicazioni dei blocchi, il consiglio è quello di attivare la deduplication con l’opzione verify per stare tranquilli




