Persistance et disponibilite dans les systemes repartis : application a Guide

Support de la persistance

ย  ย La notion de persistance est fournie dans les langages de programmation pour unifier lโ€™utilisation des donnรฉes persistantes et temporaires [Atkinson 87]. Elle a รฉtรฉ introduite dโ€™abord dans les langages fonctionnels et notamment LISP, puis dans les langages de programmation de bases de donnรฉes, tels que Pascal/R [Schmidt 77] et PSโˆ’Algol [Atkinson 83]. Il existe plusieurs maniรจres de rendre visible la persistance au niveau des langages de programmation : dans les langages Trellis/Owl et Eiffel, elle est fournie comme un trait rajoutรฉ du langage dโ€™origine ; dans le langage Guide, un objet est persistant dรจs lors quโ€™il existe un chemin dโ€™accรจs menant ร  lui depuis un des objets appelรฉs racines de persistance. On peut remarquer que cette technique est actuellement lโ€™une des plus reconnue. Dans tous les cas de figure, lโ€™implantation de ce type de langages nรฉcessite lโ€™utilisation dโ€™un support de la persistance. Ce support peut รชtre basรฉ soit sur le systรจme de fichiers fourni par le systรจme dโ€™exploitation, soit sur un systรจme de gestion de bases de donnรฉes, soit sur un systรจme de gestion dโ€™objets persistants [Cockshot 84]. Ces systรจmes de gestion associent de faรงon trรจs fine la notion de persistance ร  celle dโ€™objets. Le systรจme offre ainsi des fonctions de stockage de haut niveau sรฉmantique, cโ€™est ร  dire dans lesquelles la notion dโ€™objet est connue, avec comme corollaire la prise en compte au niveau du systรจme de stockage des problรจmes de dรฉsignation et de partage relatifs aux objets. Lโ€™objet est alors lโ€™unitรฉ de persistance et de partage [Hosking 93], ce qui permet de coller idรฉalement au langage. Lโ€™inconvรฉnient majeur de cette solution est quโ€™elle impose lโ€™objet comme unitรฉ de transfert entre la mรฉmoire de travail et celle de stockage. Or lโ€™expรฉrience, acquise avec le langage Guide [Freyssinet 91], a montrรฉ que la taille moyenne des objets รฉtait infรฉrieure ร  500 octets, ce qui est petit relativement ร  la taille des pages (en gรฉnรฉral 4 Ko). De plus, un chargement objet par objet risque de mal convenir aux applications visรฉes qui utilisent couramment des milliers sinon des millions dโ€™objets [Cahill 93]. Le coรปt dโ€™une lecture objet par objet deviendrait vite prohibitif. Cโ€™est pourquoi, des รฉtudes sur le regroupement dโ€™objets dans des conteneurs, de faรงon ร  rรฉduire le nombre des transferts entre la mรฉmoire et le disque ont รฉtรฉ menรฉes [Benzaken 90][Deppish 91]. Des solutions basรฉes sur le couplage de lโ€™espace de stockage dans la mรฉmoire virtuelle des processus ont รฉtรฉ proposรฉes [Millard 93] [Shekita 90]. Le gros avantage de ce type de solution, est quโ€™il permet de dรฉcoupler lโ€™unitรฉ dโ€™accรจs ร  lโ€™information de lโ€™unitรฉ de transfert entre la mรฉmoire et les disques. On accรจde aux objets de maniรจre uniforme et on transfรจre des pages. On peut ainsi clairement sรฉparer la gestion de lโ€™accรจs aux objets de celle de leur persistance. La solution que nous avons choisie pour le support des objets persistants des langages Guide et dโ€™une version รฉtendue de C++ intรฉgrant la persistance et la distribution, sโ€™appuie sur la dรฉfinition dโ€™une machine de stockage de bas niveau sรฉmantique [Chevalier 94c]. Lโ€™approche retenue est celle du conteneur de stockage non typรฉ et non structurรฉ, appelรฉ grappe. La sรฉmantique interne dโ€™une grappe est dรฉfinie par une couche supรฉrieure du systรจme : la machine ร  objets qui gรจre lโ€™accรจs aux objets (synchronisation et protection) [Hagimont 93]. Lโ€™accรจs ร  une grappe est rรฉalisรฉ par son couplage dans lโ€™espace dโ€™adressage des applications. La machine ร  grappe est mise en ล“uvre sur la machine de stockage pour laquelle la grappe est une simple suite de blocs. On peut caractรฉriser notre proposition du support de la persistance pour les langages ร  objets par deux points forts :
โ€ข Un modรจle de mรฉmoire uniforme structurรฉ autour de la notion de grappe,qui offre un support efficace pour le dรฉveloppement de la machine qui gรจre les objets.
โ€ข Une mise en ล“uvre rรฉpartie de ce support (par des gรฉrants de mรฉmoire(2)) qui permet de partager la charge associรฉe entre un ensemble de machines. Le mรฉcanisme de couplage, fourni par la machine ร  grappes, permet dโ€™offrir ร  la machine ร  objets, une mรฉmoire de grappes uniforme au sens de Multics [Organick 72]. La machine de stockage fournit une interface suffisamment gรฉnรฉrale pour permettre la mise en ล“uvre du stockage des grappes par utilisation de serveurs de stockage externes ร  la plateโˆ’forme Guide.

La persistance dans les systรจmes de gestion de fichiers

ย  ย Nous allons tout dโ€™abord faire un bref rappel sur la mise en ล“uvre de la persistance dans les systรจmes de gestion de fichiers (SGF) fournis par les systรจmes dโ€™exploitation classiques. Un SGF assure trois fonctions : il permet la conservation des donnรฉes sous la forme de fichiers (cโ€™est ร  dire, un ensemble contigu ou non dโ€™octets), il fournit une fonction de dรฉsignation des fichiers afin que les utilisateurs puissent les manipuler au travers de noms symboliques et enfin il fournit une fonction de protection entre les utilisateurs. Au niveau du traitement de la persistance des donnรฉes (de leur conservation sous forme de fichier), les environnements classiquement bรขtis auโˆ’dessus des SGF (comme lโ€™environnement C/C++) souffrent de deux dรฉfauts majeurs :
โ€ข Lโ€™appel aux fonctions de conservation, que se soit pour lโ€™รฉcriture ou la lecture, est explicite. Le programmeur dโ€™applications doit donc gรฉrer les transferts entre la mรฉmoire de ses applications et les disques de conservation.
โ€ข Lโ€™unitรฉ dโ€™รฉchange entre la mรฉmoire de travail et la mรฉmoire de stockage nโ€™est pas le fichier mais lโ€™enregistrement ou le bloc dโ€™enregistrements (c.a.d. une chaรฎne de caractรจres quelconques). Il est donc nรฉcessaire de convertir la reprรฉsentation des donnรฉes en mรฉmoire virtuelle, en une reprรฉsentation diffรฉrente propre ร  รชtre conservรฉe. Le systรจme introduit une dichotomie, au niveau des traitements, entre les donnรฉes temporaires et les donnรฉes persistantes. Des efforts ont รฉtรฉ entrepris depuis une dizaine dโ€™annรฉes pour attรฉnuer, voire รฉliminer les contraintes dues ร  la persistance classique. Cโ€™est ainsi quโ€™a รฉtรฉ introduite au dรฉbut des annรฉes 80, la notion de programmation persistante. Lโ€™idรฉe de base consiste ร  associer aux donnรฉes la propriรฉtรฉ dโ€™รชtre persistantes et de laisser le systรจme mettre en ล“uvre cette propriรฉtรฉ de maniรจre automatique. De plus, le systรจme essaye de conserver la mรชme reprรฉsentation des donnรฉes en mรฉmoire virtuelle quโ€™en espace de conservation รฉliminant par la mรชme les conversions dโ€™une reprรฉsentation dans lโ€™autre. La mise en ล“uvre de ces diffรฉrentes idรฉes suppose que le systรจme dโ€™exploitation offre un support appropriรฉ. Dans la section suivante, nous allons donc รฉtudier les problรจmes liรฉs ร  ce support.

Support dโ€™un modรจle de mรฉmoire persistante

ย  ย Le but de la prรฉsente section est dโ€™รฉvaluer les incidences du modรจle de mรฉmoire persistante sur la mise en ล“uvre de la persistance dans un systรจme rรฉparti et dโ€™identifier notamment les principales caractรฉristiques dโ€™un tel support. Dans cette optique, une รฉtude de cas sur diffรฉrents systรจmes support de persistance est proposรฉe dans la section II.4. Lโ€™influence de la rรฉpartition sur la gestion de la persistance concerne principalement trois aspects :
โ€ข La dรฉsignation qui englobe les problรจmes dโ€™identification des objets, ainsi que ceux relatifs ร  leur accรจs. Le systรจme doit รชtre capable de retrouver les objets conservรฉs mais aussi de gรฉrer les accรจs aux objets composites (ensemble ou groupe dโ€™objets).
โ€ข Le partage qui regroupe la gestion de la concurrence dโ€™accรจs et le maintien de la cohรฉrence des donnรฉes en mรฉmoire virtuelle. La gestion du partage, notamment en mรฉmoire virtuelle, est ce qui diffรฉrencie le plus un systรจme support de persistance dโ€™un SGF classique.
โ€ข La conservation qui doit garantir lโ€™intรฉgritรฉ des donnรฉes en espace de conservation, prenant notamment en compte les problรจmes de reprise aprรจs panne. A ce niveau, on attend du support de la persistance quโ€™il offre une qualitรฉ de service proche de celle fournie par les systรจmes de gestion de base de donnรฉes.

Le systรจme Clouds

ย  ย Clouds [Dasgupta 90] est un projet de recherche du Georgia Institute of Technology dont le but est la rรฉalisation dโ€™un systรจme distribuรฉ ร  base dโ€™objets. Deux des principaux domaines explorรฉs sont la tolรฉrance aux fautes et la reconfiguration dynamique. Le systรจme Clouds est rรฉalisรฉ au dessus du noyau Ra sur un ensemble de stations Sun 3/60 reliรฉes par un rรฉseau Ethernet. Ra [Bernabeu 88] est un noyau minimal,ย dรฉveloppรฉ par la mรชme รฉquipe que Clouds, qui fournit les outils nรฉcessaires pour la rรฉalisation de systรจmes dโ€™exploitation distribuรฉs. Clouds dรฉfinit deux concepts :
โ€ข Lโ€™objet est conceptuellement vu comme un espace virtuel dโ€™adressage persistant(2). Lโ€™objet est une entitรฉ passive dont la durรฉe de vie est indรฉpendante de la durรฉe de vie de tout flot dโ€™exรฉcution. Il survit aux arrรชts et aux pannes du systรจme. Sa destruction est explicite.
โ€ข Le flot dโ€™exรฉcution (ou ยซย threadย ยป) est lโ€™entitรฉ active du systรจme. Il peut รชtre vu comme un processus lรฉger qui sโ€™exรฉcute dans les espaces virtuels dโ€™adressage constituรฉs par les objets sur lesquels il exรฉcute des mรฉthodes. (2) Notons que Clouds gรจre aussi des objets temporaires. Un flot peut ainsi ยซย traverserย ยป plusieurs objets. Plusieurs flots peuvent sโ€™exรฉcuter concurremment dans un mรชme objet, la synchronisation de base est associรฉe aux opรฉrations de lโ€™objet.
Dรฉsignation et localisation Les objets sont dรฉsignรฉs par des identificateurs universels (sysname). Les sysnames sont des identificateurs logiques ne contenant aucune information de localisation physique. La localisation dโ€™un objet se fait dโ€™abord par recherche dans des tables locales ร  la machine courante. Puis par la consultation des disques locaux. Enfin, en cas dโ€™รฉchec, le systรจme diffuse la demande de localisation ร  lโ€™ensemble des machines.
Partage Chaque objet est reprรฉsentรฉ par un espace dโ€™adressage partagรฉ distinct. Le partage dโ€™objet est rรฉalisรฉ par partage de lโ€™espace dโ€™adressage qui le constitue par les diffรฉrents flots dโ€™exรฉcution. Dans la pratique, un espace dโ€™adressage vu par un flot dโ€™exรฉcution est constituรฉ de trois rรฉgions : la Oโˆ’rรฉgion dans laquelle se trouve lโ€™objet proprement dit, la Pโˆ’rรฉgion dans laquelle se trouve la pile du flot dโ€™exรฉcution et la Kโˆ’rรฉgion utilisรฉe par le noyau. Lโ€™appel de mรฉthode sur un objet O2 depuis un objet O1 provoque la dรฉsinstallation de lโ€™objet courant O1 de la Oโˆ’rรฉgion, lโ€™installation de O2 dans la Oโˆ’rรฉgion. Puis une fois lโ€™invocation terminรฉe, la rรฉinstallation de O1.
Stockage La mise en ล“uvre de la persistance des objets est assurรฉe par le noyau au travers de segments. Le segment est un bloc nonโˆ’typรฉ et contigu de mรฉmoire (le noyau nโ€™associe aucune sรฉmantique quant au contenu du segment). Un objet est rรฉalisรฉ par un ou plusieurs segments ; en gรฉnรฉral, un segment de code et un segment de donnรฉes. Le segment permet au noyau dโ€™accรฉder directement aux pages des objets (par exemple, pour pouvoir les paginer) au travers des mรฉcanismes de gestion de la mรฉmoire virtuelle. Les segments sont crรฉรฉs de maniรจre explicite ; ils persistent jusquโ€™ร  leur destruction, elle aussi explicite. Les segments sont dรฉsignรฉs par un nom global unique. La localisation dโ€™un segment, similaire ร  celle dโ€™un objet, se fait par recherche dans la table locale des segments actifs (en cours dโ€™utilisation), puis par diffusion de la demande. Les segments sont gรฉrรฉs par des serveurs de partitions. Une partition est une entitรฉ active responsable de la gestion dโ€™un ensemble de segments dans lโ€™espace de conservation. Le noyau lui rรฉclame les segments lorsque cela est nรฉcessaire (installation dโ€™un segment), puis les libรจre lorsquโ€™ils ne sont plus utilisรฉs. Le noyau accรจde donc aux segments au travers de lโ€™interface des partitions. Cette interface de bas niveau offre des fonctions de crรฉation, destruction, extension et installation ainsi que des fonctions permettant le chargement/dรฉchargement (ยซย page in/outย ยป) des pages de segments. Notons que les segments et les partitions de Clouds sont des concepts respectivement proches des objets mรฉmoires et des paginateurs externes du microโˆ’noyau Mach (cf sousโˆ’section III.3.3). Le stockage des segments est rรฉalisรฉ en utilisant le systรจme de fichier Unix. Chaque segment est stockรฉ dans un fichier Unix. Le serveur de partition responsable du segment fournit les pages de ce segment au noyau Ra ร  travers le rรฉseau. Ce mรฉcanisme est rendu transparent au noyau grรขce ร  lโ€™interposition dโ€™un client de partition sur la machine du noyau (cf Fig. 2.2).
Protection La protection dans Clouds est rรฉalisรฉe par isolation des objets. Chaque objet est reprรฉsentรฉ par un espace dโ€™adressage distinct dans la mesure oรน le systรจme ne place quโ€™un seul objet ร  un instant donnรฉ dans une Oโˆ’rรฉgion. On peut considรฉrer quโ€™un flot dโ€™exรฉcution traverse les espaces dโ€™adressage des objets quโ€™il invoque au cours de son exรฉcution. La protection entre utilisateurs ou applications est basรฉe sur lโ€™utilisation de capacitรฉs. Vu dโ€™un utilisateur, un objet est identifiรฉ par une capacitรฉ qui contient lโ€™identificateur de lโ€™objet ainsi que des droits dโ€™accรจs. Le propriรฉtaire dโ€™un objet peut contrรดler la diffusion de la capacitรฉ associรฉe ร  son objet vers les autres utilisateurs.

Le rapport de stage ou le pfe est un document dโ€™analyse, de synthรจse et dโ€™รฉvaluation de votre apprentissage, cโ€™est pour cela chatpfe.com propose le tรฉlรฉchargement des modรจles complet de projet de fin dโ€™รฉtude, rapport de stage, mรฉmoire, pfe, thรจse, pour connaรฎtre la mรฉthodologie ร  avoir et savoir comment construire les parties dโ€™un projet de fin dโ€™รฉtude.

Table des matiรจres

Chapitre I Introduction
I.1 Support de la persistanceย 
I.2 Stockage fiableย 
I.3 Organisation du mรฉmoireย 
Chapitre II Support de la persistance
II.1 La persistance dans les systรจmes de gestion de fichiers
II.2 Modรจle de persistanceย 
II.3 Support dโ€™un modรจle de mรฉmoire persistanteย 
II.3.1 La dรฉsignation
II.3.2 Le partage
II.3.3 Le stockage
II.3.4 La protection
II.4 Prรฉsentation de diffรฉrents systรจmesย 
II.4.1 Le systรจme Clouds
II.4.2 Le Distributed Shared Repository
II.4.3 Le gestionnaire de persistance Cricket
II.4.4 Le systรจme O2
II.4.5 Tableau rรฉcapitulatif
II.5 Conclusionย 
Chapitre III Lโ€™environnement Guide
III.1 Introduction au systรจme Guideย 
III.1.1 La machine virtuelle Guide
III.1.2 Le modรจle de donnรฉes
III.1.3 Le modรจle dโ€™exรฉcution
III.1.4 Le modรจle de mรฉmoire
III.1.5 Protection et sรฉcuritรฉ
III.1.6 Les services du systรจme Guide
III.2 Architecture gรฉnรฉraleย 
III.2.1 Machine ร  objets
III.2.2 Machine ร  segments
III.2.3 Machine ร  grappes
III.2.4 Service de stockage
III.2.5 Machine dโ€™exรฉcution
III.3 Quelques caractรฉristiques de Mach 3.0ย 
III.3.1 Les tรขches et les flots de contrรดles
III.3.2 Les communications
III.3.3 La gestion de la mรฉmoire virtuelle
III.4 Conclusionย 
Chapitre IV Le support de la persistance dans Guide
IV.1 Architecture gรฉnรฉrale
IV.1.1 Gestion de grappes en mรฉmoire dโ€™exรฉcution
IV.1.1.1 Organisation gรฉnรฉrale
IV.1.1.2 Dรฉsignation et localisation des grappes en mรฉmoire dโ€™exรฉcution
IV.1.1.3 Protection
IV.1.1.4 Partage
IV.1.1.5 Gestion dynamique de la taille des grappes
IV.1.1.6 Interface
IV.1.2 Gestion de grappes en mรฉmoire de stockage
IV.1.2.1 Organisation gรฉnรฉrale
IV.1.2.2 Concepts
IV.1.2.3 Dรฉsignation et localisation
IV.1.2.4 Conservation et intรฉgritรฉ
IV.1.2.5 Interface
IV.2 Mise en ล“uvre
IV.2.1 Architecture
IV.2.2 Gestion de la pagination
IV.2.3 La journalisation
IV.2.3.1 Algorithme
IV.2.3.2 Limitations
IV.2.3.3 ร‰limination des anciens journaux
IV.3 Conclusion
Chapitre V Evaluation du support de la persistance
V.1 ร‰valuation qualitative
V.1.1 Support des grappes temporaires
V.1.2 Conclusion
V.2 ร‰valuation quantitativeย 
V.2.1 Instrumentation
V.2.2 Fonctions de la machine ร  grappes
V.2.3 Pagination locale et pagination ร  distance
V.2.4 Impact de la journalisation sur le service de stockage
V.2.5 Conclusion
V.3 Support du microโˆ’noyauย 
V.4 Conclusion
Chapitre VI Vers une fiabilitรฉ accrue
VI.1 Concepts de base et terminologieย 
VI.2 De la duplication appliquรฉe au stockage des donnรฉesย 
VI.2.1 La cohรฉrence des copies
VI.2.2 Gestion de la cohรฉrence
VI.3 Mise en ล“uvre de la duplication des donnรฉes
VI.3.1 Algorithmes pessimistes
VI.3.1.1 Le quorum
VI.3.2 Algorithmes optimistes
VI.3.2.1 Lโ€™antiโˆ’entropie estampillรฉe
VI.4 Application au stockage fiableย 
VI.4.1 Coda
VI.4.2 Echo
VI.4.2.1 La gestion des caches dans Echo
VI.4.2.2 La tolรฉrance aux pannes dans Echo
VI.4.3 Comparaison
VI.5 Conclusion
Chapitre VIIย Pour un stockage fiable dans le systรจme Guideโˆ’2
VII.1 Un prototype pour le systรจme Guideโˆ’1
VII.1.1 Architecture
VII.1.2 Fonctions principales
VII.1.2.1 Cohรฉrence
VII.1.2.2 Verrouillage des objets et invalidation
VII.1.2.3 Localisation des objets
VII.1.3 ร‰valuation
VII.2 De Guideโˆ’1 ร  Guideโˆ’2ย 
VII.3 Un serveur de stockage fiable pour Guideโˆ’2ย 
VII.3.1 Architecture
VII.3.2 Fonctions principales
VII.3.3 Traitement de la panne dโ€™un gรฉrant de mรฉmoire
VII.3.4 Restauration dโ€™un serveur de secours
VII.3.5 Opรฉrations en mode dรฉconnectรฉ
VII.3.6 ร‰valuation
VII.4 Conclusionย 
Chapitre VIII Conclusion
VIII.1 Contributionย 
VIII.2 ร‰volution du domaine
VIII.2.1 ร‰volution des besoins
VIII.2.2 ร‰volution des techniques
VIII.3 Perspectives
VIII.3.1 Expรฉrimentations
VIII.3.2 Plateโˆ’forme

Rapport PFE, mรฉmoire et thรจse PDFTรฉlรฉcharger le rapport complet

Tรฉlรฉcharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiรฉe. Les champs obligatoires sont indiquรฉs avec *