Systèmes de gestion de fichiers répartis
Ce document présente les concepts fondamentaux des systèmes de gestion de fichiers répartis (SGFR). Il s'adresse aux étudiants en informatique et aux professionnels souhaitant comprendre les principes, les architectures et les protocoles des systèmes de fichiers partagés sur plusieurs machines.
D'après le document Systèmes de gestion de fichiers répartis
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.
Document source
Systèmes de fichiers, Répartition, NFS, AFS, GoogleFS · PDF · 78 pages · 1985
Afficher l'aperçu du document
Ce document présente les concepts fondamentaux des systèmes de gestion de fichiers répartis (SGFR). Il s'adresse aux étudiants en informatique et aux professionnels souhaitant comprendre les principes, les architectures et les protocoles des systèmes de fichiers partagés sur plusieurs machines. Le cours aborde les modèles d'accès, les problèmes liés à la répartition, ainsi que des exemples concrets comme NFS, AFS et GoogleFS.
Introduction aux systèmes de gestion de fichiers répartis
Les systèmes de gestion de fichiers répartis permettent le partage et la gestion de fichiers sur plusieurs machines connectées en réseau. Ils visent à offrir une transparence d'accès aux fichiers malgré leur répartition physique sur différents hôtes. Ces systèmes répondent à des besoins variés : travail en équipe, accès personnel sur plusieurs machines, optimisation des accès aux données par répartition ou redondance.
Historiquement, dès 1985, des solutions comme VAXClusters de DEC ont permis le partage de périphériques de mémoire de masse comme s'ils étaient locaux. Plus souple, NFS (Network File System) développé par Sun Microsystems, a introduit une distinction entre fichiers locaux et distants, et reste encore largement utilisé.
Rappels sur les fichiers et systèmes de fichiers
Un fichier est une abstraction de mémoire permanente, une séquence de données similaires non interprétées, souvent des octets. Les accès peuvent être :
- séquentiels : lecture ou écriture sur un pointeur courant,
- aléatoires : accès direct à une adresse calculée,
- indexés : utilisation d’un index pour localiser des données.
Un système de fichiers est un logiciel dédié à la création, destruction, enregistrement, restitution, nommage, partage et protection des fichiers. La notion de répertoire est un fichier spécial associant un nom à un identifiant interne.
Dans les systèmes centralisés, la gestion des répertoires inclut des opérations comme créer, détruire, renommer ou déplacer des fichiers. Les systèmes hiérarchisés permettent la création de liens symboliques, où plusieurs noms logiques peuvent référer au même fichier physique (exemple : liens multiples sur inode en Unix).
Systèmes de fichiers répartis : principes et objectifs
Un système de fichiers réparti relie plusieurs systèmes de fichiers attachés à différents hôtes. L’objectif principal est la transparence d’accès, c’est-à-dire que l’utilisateur ne perçoit pas la répartition physique des fichiers.
Les principaux problèmes à résoudre sont :
- Désignation (naming) : construire un nommage uniforme et cohérent,
- Localisation : retrouver l’hôte qui gère un fichier,
- Accès distant : accéder aux fichiers sur leur site de résidence,
- Concurrence : gérer les accès concurrents en univers réparti,
- Pannes : gérer les défaillances des serveurs ou du réseau,
- Performances : assurer des performances comparables à un système centralisé,
- Hétérogénéité : supporter différents processeurs et systèmes d’exploitation,
- Extensibilité : fonctionner dans de grandes configurations,
- Migration : déplacer des fichiers entre systèmes sans changer leur nom,
- Réplication : gérer plusieurs copies des fichiers.
Modèles d’accès aux fichiers répartis
Modèle de transfert complet de fichiers
Le client transfère un fichier complet du serveur (upload/download) pour travailler localement. Les accès ultérieurs se font sur la copie locale. En cas de modification, le fichier est renvoyé au serveur.
Exemple : Le protocole FTP (File Transfer Protocol) illustre ce modèle.
Avantages : simplicité, pas de partage simultané sur le serveur.
Inconvénients : transfert inutile si seule une petite partie est modifiée, occupation d’espace disque sur plusieurs sites, difficulté à gérer les écritures concurrentes.
Modèle d’accès distant
Le client exécute des primitives d’accès à distance sur le serveur (ouvrir, lire, écrire, fermer, etc.). Le fichier reste sur le serveur, ce qui évite les problèmes de cohérence liés à la duplication.
Exemple : NFS (Network File System), AFS (Andrew File System), Coda, Microsoft DFS.
Avantages : transfert limité aux données nécessaires, pas d’espace disque client utilisé, accès partagé possible avec contrôle de concurrence.
Inconvénients : latence élevée pour chaque opération, complexité de développement, serveur pouvant devenir un goulot d’étranglement.
Architecture générique d’un SGFR
Un système de gestion de fichiers répartis comprend plusieurs modules :
- Module client : offre une API et localise le serveur de fichiers,
- Module de gestion des noms : crée et gère les fichiers dans les répertoires, avec un système de désignation intégré ou séparé,
- Module de gestion des fichiers : effectue les opérations sur les fichiers (création, lecture, écriture, destruction),
- Module d’accès aux fichiers : gère l’accès local ou distant,
- Module de gestion de cohérence : assure la cohérence des accès concurrents et des caches.
Désignation et résolution des noms
Deux concepts d’indépendance des noms :
- Adressage indépendant : le nom ne contient aucune indication sur la localisation physique,
- Migration indépendante : le nom ne change pas lors du déplacement du fichier.
Exemple de dépendance : /serveur/rep1/rep2/fichier, où le nom contient le serveur. Le fichier ne peut être déplacé sans changer de nom.
Exemple d’indépendance : /rep1/rep2/fichier, nom global unique, localisation gérée par un catalogue.
Catégories principales de désignation
- Nom machine + chemin local : /machine/chemin_local (ex : Newcastle Connection),
- Montage : système de fichiers distant monté dans l’arborescence locale (ex : NFS),
- Système de nommage universel : noms universels indépendants du serveur (ex : Chorus, Mach, Amoeba).
Techniques de résolution des noms
La résolution du chemin d’accès peut être :
- Transformation du chemin : chaque machine résout la partie du chemin qui la concerne et transmet la suite au serveur suivant.
- Résolution par le client : chaque étape est résolue par le client avec retour après chaque étape (utilisé par NFS).
- Identificateurs structurés : un identifiant structuré identifie une sous-arborescence et un fichier, avec tables locales ou serveurs de noms pour la correspondance.
- Caches de suggestion ("hints") : caches côté client pour améliorer la performance, avec rechargement en cas d’invalidation.
- Points d’attachement : association d’une sous-arborescence à une feuille d’une autre, gérée par une table consultée lors du parcours du chemin.
Partage et contrôle de concurrence
Le contrôle de concurrence vise à définir la visibilité des modifications d’un fichier partagé entre plusieurs usagers. Les délimitations d’accès peuvent être :
- aucune délimitation,
- entre ouverture et fermeture,
- entre instants de début et fin de transaction.
Quatre sémantiques principales
- Sémantique UNIX : chaque écriture est immédiatement visible par tous les autres usagers ayant ouvert le fichier.
- Sémantique de session : les modifications sont visibles uniquement après la fermeture du fichier.
- Fichiers non mutables : aucune modification n’est autorisée après création.
- Approche transactionnelle : modifications visibles soit par tous, soit par personne, avec propriétés ACID.
Exemple de sémantique UNIX
Les requêtes sont traitées en séquence dans l’ordre temporel. En univers centralisé, cela est simple si un seul cache est utilisé. En univers réparti, cela nécessite l’invalidation des caches clients lors des modifications.
Exemple de sémantique de session
Chaque session correspond à l’intervalle entre ouverture et fermeture. Les modifications sont visibles uniquement par l’usager pendant la session, puis diffusées aux autres après fermeture. Chaque utilisateur travaille sur sa propre copie locale, et les modifications sont reportées sur le serveur à la fermeture.
Fichiers non mutables
Seules trois opérations sont possibles : création, destruction et lecture. Toute modification nécessite la création d’un nouveau fichier. Ce modèle facilite le partage mais reste limité aux fichiers peu modifiés.
Approche transactionnelle
Les accès sont regroupés en transactions respectant les propriétés ACID (Atomicité, Cohérence, Isolation, Durabilité). Les transactions sont sérialisées, assurant une cohérence stricte. La tolérance aux pannes est assurée par des validations en deux phases.
Tolérance aux pannes : serveurs avec ou sans état
- Serveurs sans état : ne conservent pas d’informations sur les clients. Avantages : pas d’espace mémoire utilisé, pas de limite sur les fichiers ouverts, pas de problème lors de panne client.
- Serveurs avec état : conservent des informations sur les opérations clients. Avantages : messages plus courts, meilleures performances, gestion facile des verrous et des écritures en fin de fichier.
Le système de fichiers répartis NFS (Network File System)
NFS, développé par SUN, est un système basique de fichiers répartis basé sur le montage d’arborescences distantes dans l’arborescence locale. Il utilise les RPC (Remote Procedure Calls) et le protocole XDR pour coder les données.
Le serveur NFS est sans état, et le client utilise peu ou pas de cache, ce qui simplifie la cohérence mais peut réduire les performances.
Fonctionnement d’un accès NFS
- Le client reçoit un appel système d’accès fichier.
- La couche VFS (Virtual File System) décide si l’accès est local ou distant.
- En cas d’accès distant, un appel RPC est préparé et envoyé via UDP.
- Le serveur reçoit la requête sur le port UDP 2049 (ou un port éphémère).
- Le serveur traite la requête via sa couche VFS locale.
- Le résultat est renvoyé au client.
Montage de systèmes de fichiers distants
Le montage permet d’intégrer un système de fichiers distant dans l’arborescence locale. Le serveur définit dans /etc/exports les répertoires exportés et les clients autorisés.
mount -t nfs serveur:/chemin_serveur /chemin_client
Le montage fait intervenir trois processus : le client de montage, le serveur de montage (mount daemon) et le gestionnaire de ports RPC (PortMapper).
Poignée fichier (File Handle)
Lorsqu’un client ouvre un fichier, il reçoit une structure opaque appelée poignée fichier, contenant notamment :
- l’identifiant du système de fichiers,
- le numéro d’inode,
- un numéro de génération pour éviter les ambiguïtés.
Cette poignée est fournie au serveur à chaque requête pour identifier précisément le fichier.
Interface virtuelle VFS (Virtual File System)
VFS sépare l’utilisation d’un fichier de son implantation réelle. Il permet de gérer uniformément les systèmes de fichiers locaux et distants, et d’implanter la désignation répartie par montage.
Les structures principales sont :
- VFS : descripteur du système de fichiers,
- V-node : descripteur d’un fichier virtuel.
Exemple d’opérations VFS :
struct vfsops {
int (*vfs_mount)();
int (*vfs_unmount)();
int (*vfs_root)();
int (*vfs_statfs)();
int (*vfs_sync)();
int (*vfs_vget)();
};
Sécurité dans NFS
NFS supporte l’authentification Kerberos, mais souvent utilise une authentification basée sur les adresses IP. La sécurité dépend de l’intégrité du réseau et de la gestion des administrateurs.
Andrew File System (AFS) : accès partagé avec redondance
AFS cible des environnements avec plusieurs dizaines de clients, privilégiant l’adaptabilité et l’extensibilité. Il est optimisé pour des fichiers petits (<10 Ko), avec plus de lectures que d’écritures, et peu de partage simultané.
Cache local et callbacks
- Les clients cachent des fichiers entiers et les données de répertoire.
- Le serveur transfère un fichier complet lors d’un accès client.
- Un système de callbacks permet au serveur d’invalider les caches clients en cas de modification.
- Le serveur maintient l’état des caches des clients.
Propriétés du cache
- Cache persistant : résiste au redémarrage et stocke un numéro de version par donnée.
- Accès concurrents : lecture sans réseau si fichier en cache, écriture provoque invalidation des caches des autres clients.
Organisation d’AFS
- Espace de nommage unique sous /afs.
- Domaine administratif appelé cellule, regroupant serveurs et clients.
- Volumes : unités de localisation et migration, regroupant fichiers et répertoires.
- Identifiants uniques (fids) de 96 bits pour fichiers et répertoires, indépendants de la localisation.
- Résolution des noms effectuée par les clients, morceau par morceau.
Localisation et réplication
- Annuaire répliqué sur tous les clients pour localiser les serveurs.
- Réplication pessimiste : un seul serveur autorise les écritures, les autres sont esclaves en lecture seule.
Protocole de cohérence des caches
- Le serveur donne une copie du fichier au client avec une "promesse de rappel".
- Le client garde un jeton valide.
- En cas de modification, le serveur invalide les caches des autres clients via des rappels.
- Un client rappelé doit demander une copie fraîche avant accès.
Protocole et sécurité
- Le client peut lire, écrire, modifier la hiérarchie, gérer les volumes et les verrous.
- Le serveur peut invalider les caches.
- Gestion des jetons via Kerberos et listes de contrôle d’accès fines (ACL) par répertoire.
AFS ne cherche pas à imiter un système de fichiers local mais propose une approche adaptée aux environnements distribués.
Disponibilité
- Développé initialement par Carnegie Mellon University (CMU).
- Implémentations commerciales (OpenAFS) et libres (Arla).
- Partiellement intégré dans Linux depuis le noyau 2.6.10.
- Peu de succès commercial en dehors de certains milieux universitaires.
Évolution de NFS
- NFS v4 (2000-2003) influencé par AFS et CIFS, avec regroupement des requêtes, cache avec invalidation, usage privilégié de TCP, délégation à des serveurs secondaires, accès en parallèle et notion de session.
- NFS v4.1 (2012) améliore encore ces aspects.
- Sécurité simplifiée avec possibilité de chiffrement et contraintes sur le niveau de sécurité côté client et serveur.
GoogleFS : système à haute disponibilité
GoogleFS est conçu pour stocker des fichiers très volumineux, avec un énorme volume de données réparties sur plusieurs datacenters mondiaux. Il vise une tolérance élevée aux pannes et une utilisation de matériel standard et bon marché.
Architecture
- Découpage des fichiers en chunks de 64 Mo.
- Chaque chunk est répliqué au moins trois fois, parfois plus pour plus de sécurité.
- Un maître unique, hautement disponible, gère le catalogue et les permissions.
- Un grand nombre de nœuds de stockage à faible coût, avec un taux de panne élevé, composent le système.
Glossaire des termes clés
- Cache : mémoire locale stockant temporairement des données pour accélérer l’accès.
- Chunk : segment de fichier dans GoogleFS, typiquement 64 Mo.
- File Handle : structure opaque identifiant un fichier dans NFS.
- Fid : identifiant unique de fichier dans AFS, indépendant de la localisation.
- Montage : intégration d’un système de fichiers distant dans une arborescence locale.
- RPC (Remote Procedure Call) : protocole permettant d’appeler une procédure sur une machine distante.
- Session : intervalle entre ouverture et fermeture d’un fichier, utilisé dans la sémantique de session.
- Sémantique de cohérence : règles définissant la visibilité des modifications entre utilisateurs.
- Serveur sans état : serveur ne conservant pas d’informations sur les clients.
- Serveur avec état : serveur conservant des informations sur les opérations des clients.
- VFS (Virtual File System) : interface virtuelle séparant l’usage d’un fichier de son implantation.
- V-node : descripteur virtuel d’un fichier dans VFS.
Points clés à retenir
- Les SGFR visent à offrir une transparence d’accès aux fichiers répartis sur plusieurs machines.
- Les modèles d’accès sont principalement le transfert complet de fichiers et l’accès distant.
- Le contrôle de concurrence est essentiel pour garantir la cohérence des accès partagés.
- NFS est un système sans état, simple mais avec des limites en performances et cohérence.
- AFS utilise un cache client avec callbacks pour améliorer les performances et la cohérence.
- GoogleFS est conçu pour la haute disponibilité et la gestion de très gros fichiers sur des infrastructures distribuées.
- La désignation des fichiers peut être dépendante ou indépendante de leur localisation, influençant la flexibilité et la migration.
- La résolution des noms peut être distribuée, client-centrée ou basée sur des identificateurs structurés.
Commentaires
Aucun commentaire pour le moment. Posez la première question.