Jean-Michel BUSCA et Pierre SENS Conception et implémentation d’un système de fichiers hautement disponible et sûr reposant sur un réseau de PC Fabio Picconi Stage de DEA SIR, UPMC Encadrants : Jean-Michel BUSCA et Pierre SENS LIP6, SRC
Plan de l’exposé Objectifs du stage Systèmes pair à pair P2PFS réseaux P2P structurés : KBR et DHT systèmes de fichiers existants : CFS, Ivy P2PFS Pastry et Past structures de données, mises à jour modèles de cohérence Prototype architecture mesures de performance
Objectifs du stage Développer un système de fichiers pair-à-pair en se focalisant sur l’optimisation des performances la recherche de modèles de cohérence adaptés à ce type de système la prise en compte des aspects de sécurité dans l’architecture du système
Réseaux pair-à-pair structurés Systèmes de fichiers P2P existants
Réseaux pair-à-pair structurés Plusieurs abstractions ont été proposées : Tier 0 : key-based routing (KBR) Tier 1 : DHT (table de hachage répartie), CAST (multicast), DOLR (routage et placement d’objets répartis)
Réseaux pair-à-pair structurés Key-based routing (KBR) algorithmes proches de celui de Plaxton (routage par préfixes) concept de racine et n-ème racine d’une clef Tables de hachage réparties (DHT) permettent de stocker un objet associé a une clef l’objet est stocké dans le nœud racine de la clef d’éventuelles n répliques sont stockées dans la 2ème, 3ème, … , nème racines de la clef
Systèmes de fichiers pair-à-pair CFS (Cooperative File System) read-only structures similaires à celles de UFS Ivy multi-écrivain un log par utilisateur Les deux systèmes utilisent Chord et DHash et offrent une interface NFS v3
Pastry Past P2PFS
Pastry et Past Pastry : couche de routage (KBR) nombre de hops jusqu’à la destination :┌ log2b N ┐ (5 pour N=106) table de routage limitée en taille (environ 75 entrées pour N=106) bonnes propriétés de localité (gain d’environ 2,5) messages envoyés lors de l’arrivée ou le départ d’un nœud : O( log2b N ) (particulièrement lourd dans un système pair-à-pair) Past : table de hachage répartie (DHT) utilisant Pastry stocke k répliques de l’objet dans les premières k racines de la clef permet de récupérer la réplique la plus proche avec un grande probabilité 75% réplique la plus proche, +90% deuxième réplique la plus proche
P2PFS – Structures de données Structure similaire à celle de CFS un inode pour chaque fichier, stocké dans un Public-Key Block (PKB) contenu des fichiers et répertoires stocké dans des Content-Hash Blocks (CHB)
P2PFS – Mises à jour Les mises à jour sont effectuées directement par chaque client insertion des nouveaux CHBs contenant les nouvelles données insertion du nouvel inode (écrasement de l’ancienne version) règle « dernier écrivain gagne » selon l’estampille générée par le client on n’efface pas les anciens CHBs simplifie le relâchement de la cohérence
P2PFS – Cohérence close-to-open Cohérence relâchée permettant de réduire le nombre d’accès réseau les écritures ne sont propagées qu’après la fermeture du fichier les écritures distantes ne sont visibles qu’à l’ouverture du fichier Implémentation lecture de l’inode du réseau Past au moment de l’ouverture du fichier l’inode et d’éventuels nouveaux CHBs sont cachés localement jusqu’à la fermeture du fichier
P2PFS – Garantie de session read-your-writes Conçue originalement pour le système Bayou chaque lecture doit refléter toutes les écriture locales précédentes modèle mieux adapté que CTO pour les fichiers pas partagés Implémentation table du plus récent ctime de chaque inode vu par le client lecture d’une réplique suffisamment récente du réseau Past performant grâce aux propriétés de localité de Pastry
mesures de performance Prototype et mesures de performance
P2PFS – Prototype, Simulateur codé en Java interface aux applications similaire à celle de Java Modification du simulateur inclus dans FreePastry 1.3 tous les nœuds Pastry/Past s’exécutent dans une même JVM chaque message Pastry est retardé d’un temps fixe ou de façon proportionnelle à la distance entre nœuds
P2PFS – Mesures de performance Andrew Benchmark simulé 1 répertoire, 55 fichiers, 450 Ko Comparaison entre simulation et émulation 4 nœuds, délai 100 ms., k = 1 Impact du modèle de cohérence 4096 nœuds, délai 50 ms., k = 16
P2PFS – Mesures de performance Comparaison avec NFS v3 128 nœuds Past, délai 25 ms., k = 16 1 client et 1 serveur NFS Les RPCs NFS sont retardées par une version modifiée de dumbfs (logiciel utilisant SFS Toolkit et faisant de relais entre un client et un serveur NFS v3) Avec 4096 nœuds notre système est environ deux fois plus lent que NFS
Conclusions Utilisation d’un couche KBR et DHT efficace et avec de bonnes propriété de localité Choix du modèle de cohérence décisif pour atteindre des performances acceptables Interface des KBR bien définie ; celle des DHT doit encore être améliorée pour ajouter de la souplesse Mesures de performances préliminaires encourageantes ; réaliser d’avantage de tests dans des conditions plus réalistes (topologie, émulation, profil d’utilisation autre que l’AB)
Bibliographie F. Picconi. Design and implementation of a highly resilient and secure peer-to-peer file system. Rapport de stage, DEA SIR, UPMC. Septembre 2003. F. Dabek, B. Zhao, P. Druschel, J. Kubiatowicz, I. Stoica. Towards a Common API for Structured Peer-to-Peer Overlays. In Proc. of IPTPS, 2003. A. Rowstron and P. Druschel. Storage management and caching in PAST, a large-scale, persistent peer-to-peer storage utility. In Proc. of the ACM Symposium on Operating System Principles, Octobre 2001. A. Rowstron and P. Druschel. Pastry: Scalable, distributed object location and routing or large-scale peer-to-peer systems. In Proc. IFIP/ACM Middleware 2001, Heidelberg, Germany, Novembre 2001. A. Muthitacharoen, R. Morris, T. M. Gil, and B. Chen. Ivy: A Read/Write Peer-to-Peer File System. In Proceedings of 5th Symposium on Operating Systems Design and Implementation (OSDI 2002).