Antoine Benkemoun

06 Mai, 2010

La déduplication de données

Posté par Antoine dans la catégorie Libre|Unix|Virtualisation

Profitons de cette journée pluvieuse pour parler d’un peu de stockage. J’ai relativement peu l’occasion de parler de stockage sur ce blog bien que ce soit un sujet particulièrement intéressant, surtout dans le cas des réseaux de stockage. Ce n’est cependant pas de réseaux de stockage dont nous parlerons aujourd’hui mais de déduplication de données.

Notion de duplication

La notion de duplication de données est relativement simple. Prenons un jeu de données, la duplication de ces données donne un second jeu identique de données mais sur un autre espace de stockage. Il est possible de faire de la duplication dans le cas de la copie de disques ou de DVD par exemple. Il est également intéressant de faire de la duplication de données dans le cas de la virtualisation. Lorsque des machines virtuelles sont « provisionnées » ou bien, plus simplement, créées, une technique envisageable est la duplication d’une machine virtuelle « template ».

Dans le cas de la virtualisation, de nombreuses données sont présentes en plusieurs exemplaires. Sur une plateforme de virtualisation, il va être exécuté un certain nombre de systèmes d’exploitation. Un serveur de virtualisation standard aujourd’hui est capable d’exécuter 20 à 30 machines virtuelles. Supposons que ces machines virtuelles disposent de 2-3 systèmes d’exploitation différents, cela implique que 7 à 15 copies du même système d’exploitation vont être stockées.

Définition de la duplication

La déduplication va nous permettre de solutionner en grande partie ce problème. Cette technique a pour objectif de supprimer les doublons/triplons/etc du support de stockage afin de stocker qu’une seule copie des données. Il est possible d’implémenter cette technique à plusieurs endroits et à plusieurs niveaux. Prenons tout d’abord l’exemple de la mémoire vive et ensuite, l’exemple des disques.

Déduplication de la mémoire vive

La mémoire vive est un support de stockage d’information particulièrement couteux. Nous avons donc tout intérêt à en optimiser son utilisation. L’exemple que nous avons proposé plus haut pour illustrer la duplication des données est tout à fait valable pour les informations stockées en mémoire vive.

Le système d’exploitation va calculer une empreinte (« hash » pour les anglophones) pour une certaine unité de stockage pour la totalité de la mémoire vive. Lorsque le système rencontrera deux unités présentant la même empreinte, il en supprimera une copie et fera un lien vers l’unique copie. L’unité de stockage utilisée est, souvent, la page mémoire. Une empreinte est donc calculée pour chaque page mémoire et la déduplication se fait à ce niveau.

A ma connaissance, seuls les systèmes de virtualisation utilisent cette technique pour la mémoire vive. C’est, plus particulièrement, le cas de VMWare et de Xen 4.0.

Déduplication de disques

L’exemple de la mémoire vive est transposable aux supports de disque divers. La déduplication au niveau des disques va permettre les mêmes avantages que la mémoire vive et utilisera le même fonctionnement. La différence se situe principalement au niveau de l’unité de stockage qui sera choisie pour le calcul de l’empreinte. Le bloc sera, le plus souvent, utilisé pour les disques.

Une application réelle pour la déduplication se situe d’une part dans les systèmes de virtualisation mais aussi dans les systèmes de sauvegarde dans lesquels on peut retrouver de (très) nombreuses copies d’une même copie. Les équipements qui effectuent la déduplication sont les SAN mais aussi les systèmes de fichiers (« filesystem » pour les anglophones).

Vous allez me dire « Mais mon Linux il sait pas faire ca ! » et, oui, vous avez raison. Si vous voulez effectuer de la déduplication au niveau d’un système de fichiers, il va falloir utiliser ZFS sous OpenSolaris. J’en parlerais dans un prochain billet. Il serait prévu d’inclure ce type de fonctionnalité dans Btrfs.

Au final, j’espère avoir fait un tour d’horizon assez complet de cette technique relativement récente mais que je trouve particulièrement intéressante.

5 Commentaires to "La déduplication de données"

1 | Les tweets qui mentionnent Antoine Benkemoun » La déduplication de données - Sécurité informatique, Virtualisation, Administration système et Réseaux -- Topsy.com

mai 6th, 2010 at 14 h 45 min

Avatar

[…] Ce billet était mentionné sur Twitter par Sébastien Aperghis, Hobbestigrou. Hobbestigrou a dit: La déduplication de données http://tinyurl.com/3yroc76 […]

2 | AP

mai 6th, 2010 at 15 h 54 min

Avatar

Vous allez me dire « Mais mon Linux il sait pas faire ca ! » et… vous avez tort. « LessFS » sait faire ça :
http://www.lessfs.com/wordpress/

3 | Antoine

mai 7th, 2010 at 18 h 54 min

Avatar

Effectivement, vous avez raison. Ce projet semble cependant loin d’être prêt pour de la production. Je ne le trouve même pas dans les paquets Debian.

C’est un projet à surveiller néanmoins bien que l’intérêt d’un FS à part entière juste pour la dédup me parait faible.

4 | JM

mai 8th, 2010 at 11 h 15 min

Avatar

Ce genre de « déduplication » me rappelle la bonne vieille technique LZM :).
Que ce passe t-il en cas de corruption du dictionnaire?

5 | Antoine

mai 9th, 2010 at 14 h 51 min

Avatar

Ah je ne connais pas LZM… Je sais que la probabilité de collision est infime (c’est celle de SHA256) par contre je pense qu’on suppose qu’il n’y a pas de corruption du dictionnaire. Il existe un mode de ZFS afin de vérifier intégralement chaque page avant de dédupliquer.

Ajoutez votre commentaire

A propos de ce blog

Ce blog a pour objectif de partager des informations avec tous les internautes. Comme indiqué dans le titre, je traiterais de différrents sujets gravitant autour de la sécurité informatique, de la virtualisation, de la l'administration système et du réseau.