Deduplication avec ZFS (opensource, performant, facile)

ZFS est un système de fichier révolutionnaire. Il a été écrit par les développeurs de Sun. Il est donc disponible nativement sous Solaris

Pour pouvoir l’utiliser sous Linux, nous devons passer en user space par le biais de FUSE.

Quelques chiffres :
● Système de fichiers entièrement 128 bits, c’est-à-dire non seulement pour le nombre d’inodes, mais aussi pour la taille maximale d’un fichier .Lorsque l’on parle de chiffres, pour un système de fichiers, il s’agit généralement de ses limites. ZFS, dans ce domaine, a été conçu directement pour le futur, jugez plutôt :

● 2^64 soit plus de 18 milliards de milliards de fichiers au maximum dans chaque système de fichiers.

● 2^48 snapshots au maximum. Si on en fait 10 par seconde, on peut tenir pendant plus de 890 000 ans ! Mais, il faudrait de la place et justement…

● 16 exa octets, soit plus de 16 000 peta octets. C’est la taille maximale d’un système de fichiers. 16 exa octets, c’est aussi la taille maximale d’un fichier !

● 2^48 fichiers au maximum dans un répertoire.

● 256 zeta octets, soit plus de 256 000 exa octets. C’est la taille maximale d’un pool (un ensemble de périphériques) qui peut contenir au maximum 264 systèmes de fichiers.

● Les pools peuvent être formés d’au maximum 264 périphériques.

Passons à la déduplication 🙂

ZFS inclus en natif un module de déduplication.

http://blogs.sun.com/bonwick/entry/zfs_dedup

J’ai créé un pool de disque en raid6 avec ZDB en activant l’option dedup.

Je me suis retrouvé avec une partition /media/zdb_test de 3.4Go

J’y ai ensuite copié dans des sous répertoires différents 6 fois mon répertoire /var (de 650 Mo).

Et la … miracle !!!

A la volée il m’a dédupliqué mes données.

Un df –H me montrait une partition /media/zdb_test qui grossissait en même temps que je copiais mes données J.

Sys. de fich.         Tail. Occ. Disp. %Occ. Mont sur

/dev/hda1              58G  6,6G   49G  13% /

tmpfs                 253M     0  253M   0% /lib/init/rw

udev                   10M  620K  9,4M   7% /dev

tmpfs                 253M     0  253M   0% /dev/shm

raid6                 6,4G  3,8G  2,7G  59% /media/zfs_test

Un zpool list me montre qu’après les 6 copies de /var j’ai déjà un taux de dedup de 5.75x

NAME    SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT

raid6  4,44G   875M  3,58G    19% 5.75x ONLINE  –

après une vingtaine de copie, j’arrive à avoir 11Go de données qui tienne dans mes 3.4 G avec un taux de dedup  14.22x :

df –H

Sys. de fich.         Tail. Occ. Disp. %Occ. Mont sur

/dev/hda1              58G  6,6G   49G  13% /

tmpfs                 253M     0  253M   0% /lib/init/rw

udev                   10M  620K  9,4M   7% /dev

tmpfs                 253M     0  253M   0% /dev/shm

raid6                  14G   11G  2,4G  82% /media/zfs_test

zpool list

NAME    SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT

raid6  4,44G  1,08G  3,36G    24% 14.22x ONLINE  –

pendant la copie ZFS-FUSE utilise 30% de mon CPU

Il a besoin de beaucoup de ressource CPU pour faire le calcul HASH de chaque bloc.

La où cela devient vraiment marrant, c’est que ZFS supporte également la compression Jhttp://prefetch.net/blog/index.php/2006/10/15/using-zfs-compression/

C’est beau la technologie.

A quand la dédup en natif sur tous les Filesystem (y compris NTFS ?)

Une réflexion au sujet de « Deduplication avec ZFS (opensource, performant, facile) »

Les commentaires sont fermés