Architecture de sauvegarde, le retour
Ludovic Courtès
LAAS-CNRS
Découpage et sauvegarde d'un fichier
Introduction
--
Découper et indexer une séquence d'octets
--
Structure de méta-données :
Merkle trees
(rappel)
--
Découpage : choix d'algorithmes
--
Indexation/identification des blocs
--
Une solution : indexation fonction du contenu
--
Chiffrement au niveau bloc
--
Découpage et indexation d'une séquence d'octets : implémentation
--
1 / 13 -- Introduction
Une approche par étapes
découpage et indexation d'une
séquence d'octets
... de l'association entre un
nom de fichier
(+ autres méta-données) et un
index
... d'une
liste des fichiers
(leurs indexes)
... d'un
point d'entrée pour cette sauvegarde
(+ date, etc.)
Principes
sauvegarder
tout l'état nécessaire à la restauration
(données + méta-données) à distance
modularité, flexibilité, simplicité
séparation des préoccupations
2 / 13 -- Découper et indexer une séquence d'octets
Étapes
découper
en blocs
assigner un identifiant
à chaque bloc
créer des
méta-données séparées
permettant de ré-assembler les blocs
Choix du format des méta-données
séparation des préoccupations
séparation ⇒ possibilité de
partage des blocs de données
traitement des méta-données
comme des données
(e.g. réplication)
3 / 13 -- Structure de méta-données :
Merkle trees
(rappel)
Fichier découpé en blocs : D
0
à D
n
Création de
blocs d'indexes
intermédiaires
L'index de la
racine
(R
0
) suffit pour récupérer tous les blocs
Structure
récursive
Permet le
partage de parties de méta-données
4 / 13 -- Découpage : choix d'algorithmes
Découpage en blocs de taille fixe
simple, peu coûteux en CPU
Découpage fonction du contenu (cf. Udi Manber)
donne des
blocs de taille variable
permet de
repérer des parties identiques
entre deux séquences d'octets
... et donc d'
économiser l'espace
⇒ Évaluation en cours.
5 / 13 -- Indexation/identification des blocs
⇒
Comment référencer un bloc ?
Problèmes
quantité d'information à conserver localement ? (idéalement : rien)
travail demandé aux contributeurs ?
validité dans l'espace ? dans le temps ?
risques de collisions ?
6 / 13 -- Une solution : indexation fonction du contenu
espace de nom universel
: chaque identifiant de bloc est considéré comme
globalement unique
les méta-données peuvent être
calculées une fois pour toutes
identifiants
uniques dans le temps
: après un crash, possibilité de continuer à utiliser ces identifiants
facilite la
vérification d'intégrité
d'un bloc
sémantique "
ajout seulement
" : une nouvelle version d'un bloc ne vient jamais remplacer une précédente ⇒
pas de gestion de cohérence requise
identification de blocs identiques ⇒
économie d'espace disque
7 / 13 -- Chiffrement au niveau bloc
chiffrer les blocs individuellement ⇒ permet de
conserver la relation d'égalité
entre blocs
une possibilité :
chiffrement convergent
8 / 13 -- Découpage et indexation d'une séquence d'octets : implémentation
Une bibliothèque (
libchop
)
Et un outil compagnon (
chop-archiver
)
Gestion des méta-données de haut-niveau
Les méta-données d'un fichier
--
Proposition : répertoire et chaîne d'indexes
--
9 / 13 -- Les méta-données d'un fichier
Les méta-données intéressantes
le nom du fichier
date ou version
propriétaire, attributs étendus, etc.
En tant qu'"objets de première classe"
ces méta-données sont une
séquence d'octets
utilisation des techniques
vues précédemment
10 / 13 -- Proposition : répertoire et chaîne d'indexes
Répertoire d'indexes
: contient une liste d'associations nom/clef
Chaîne d'index
: contient l'index de l'élément précédent dans la chaîne et une date
Déroulement de la sauvegarde
Sauvegarde : vue détaillée
--
Sauvegarde : début d'implémentation
--
11 / 13 -- Sauvegarde : vue détaillée
(Déjà vu à Rennes en mai.)
12 / 13 -- Sauvegarde : début d'implémentation
Découpage et indexation
liste de fichiers définie par l'utilisateur
attente de nouveaux fichiers/fichiers modifiés
découpage/indexation
des dits fichiers
découpage/indexation des méta-données
insertion des blocs
dans une file d'attente locale
pour chaque bloc : maintien d'un "
compteur de références
"
Émission des blocs
pour l'instant : régulièrement, sur des machines données
futur : réagir aux
évènements réseaux
,
découvrir
des contributeurs, etc.
pour chaque bloc : maintien d'une
liste des répliques
13 / 13 -- Fin
Questions ?
This HTML page was produced by
Skribilo
.
Last update: Wed Oct 25 15:12:38+0200 2006