FR EN

Historique

L’historique d’un ensemble de volumes est appelé VVR (pour Versioned Volume Repository). Il débute par une image S1 de taille 0 à partir de laquelle les premiers volumes sont créés.

A

Les volumes D1 et D2 partagent la même image S2, même si une image S3 a été créée à partir de D1. Le volume D3 a un historique indépendant des volumes D1 et D2.

B

Historique si une nouvelle image S5 est créée à partir du volume D3

C

Historique après la création d’un volume D4 à partir de l’image S5.

Format de stockage

D’un élément à l’autre de l’historique, seules les modifications sont conservées. Le contenu d’un volume ou d’une image est écrit dans un fichier dont le format optimise ce mode de fonctionnement.

Pour chaque volume et chaque image, le fichier ne contient pas directement les blocs de données : une empreinte du bloc est écrite à sa place.

Le bloc lui-même est placé dans un espace séparé commun, l’empreinte servant à retrouver le bloc de données correspondant.

Les blocs identiques ayant la même empreinte, le volume de stockage nécessaire est réduit.

  • Un volume D a pour parents les images S1 et S2. La longueur du segment représente la taille de l’élément. Ainsi, la taille a augmenté entre S1 et S2. Les carrés orange représentent les zones qui ont été écrites. Chaque empreinte est représentée par un symbole. Les paires empreinte/bloc de données sont conservées dans l’espace commun de stockage des blocs.

  • Lors d’une demande de lecture, les différents fichiers d’historique sont consultés pour savoir si le bloc de données correspondant a été écrit. Lorsque c’est le cas, l’empreinte trouvée dans un des fichiers permet de retrouver le bloc de données dans l’espace commun de stockage des blocs. Le bloc est renvoyé à l’appelant.

  • Lors d’une demande d’écriture, l’empreinte du bloc de données est calculée et écrite au bon emplacement dans le fichier du volume D. Si nécessaire, la nouvelle paire empreinte/bloc de données est écrite dans l’espace commun de stockage des blocs.

  • L’opération « trim » permet au système d’exploitation d’indiquer qu’un bloc de données n’est plus utilisé. Un marqueur remplace alors l’empreinte dans le fichier du volume D. Ainsi, la paire empreinte/bloc de données pourrait être supprimée de l’espace commun de stockage des blocs si elle n’est plus utile.

Serveur de stockage

Un serveur Eguan est composé :

Les serveurs de stockage Eguan communiquent entre eux pour l’administration du système et la réplication des données. Chaque VVR est entièrement répliqué sur chaque serveur.

Chaque VVR est complètement séparé des autres, aucune donnée n’est partagée d’un VVR à un autre. Si une infrastructure Cloud souhaite héberger différents IaaS (Infrastructure as a Service), il est préconisé de créer un VVR par IaaS. Ainsi, les machines d’un IaaS donné peuvent partager entre elles des volumes, mais ceux-ci seront complètement séparés des volumes des autres IaaS.

Les machines clientes accèdent aux volumes via les protocoles iSCSI ou NBD. Un volume peut être activé en écriture sur un seul serveur ; par contre, un volume peut être activé en lecture seule sur plusieurs serveurs.

L’interface d’administration Web permet de créer
de nouveaux VVRs et d’administrer les images
et les volumes de chaque VVR.

OpenStack

OpenStack est un ensemble complet de services open source permettant le développement de clouds privés ou publics. Chaque service (virtualisation, réseau, stockage, …) repose sur des modules proposés par différents fournisseurs.

Eguan fournit un module pour le service de stockage en mode bloc d’OpenStack (Cinder). Les volumes et les snapshots OpenStack/Cinder peuvent être hébergés sur un ou plusieurs serveurs Eguan. Les fonctionnalités d’Eguan sont alors directement accessibles depuis les outils d’administration d’OpenStack (Horizon).

Le module OpenStack/Cinder pour Eguan n’est pas encore présent dans le dépôt officiel d’OpenStack. Le code source et la documentation sont disponibles sur la page GitHub d’Oodrive.