CHAPITRE 4
Systèmes de fichiers distribués
4.1 Introduction
Les fichiers jouent un rôle important dans les systèmes informatiques, ils constituent
le support permanent de stockage des informations.
Le Système de Fichiers Distribué (SFD) est la partie du système d’exploitation
distribué qui se charge de gérer les fichiers et de fournir aux programmes d’applications
et aux utilisateurs des facilités d’accès et de traitement des fichiers. Les systèmes de
fichiers distribués permettent aussi le partage de l’information et le travail collaboratif
entre les utilisateurs et les applications du système.
La conception est l’implémentation d’un système de fichiers distribué est une tâche
difficile du fait que les utilisateurs et les supports de stockage sont dispersés sur le
réseau [Sinha, 1998]. En effet, un système de fichiers distribué peut être implémenté soit
à l’aide d’un seul composant, ou par le biais de coopération entre plusieurs composants
répartis.
Nous commençons ce chapitre par citer les fonctionnalités et les aspects que doit
assurer un système de fichiers distribué. Ensuite, nous décrivons les deux techniques
de mise en cache et de duplication des fichiers (les sections 4.5 et 4.6), qui visent à
améliorer les performances des SFDs.
Chapitre 4 : Systèmes de fichiers distribués
4.2 Système de fichiers distribué
Le rôle du système de fichiers distribué est de stocker les programmes et les données
sur les différents nœuds du système distribué et les rendre disponibles à la demande
[Tanenbaum et van Steen, 2007].
Un système de fichiers distribué doit assurer des performances acceptables pour
l’accès aux fichiers. Aussi, la multiplicité et la dispersion des serveurs et des disposi-
tifs de stockage doivent être invisibles aux clients. En principe, un utilisateur ne doit
pas différencier les fichiers locaux des fichiers distants, c’est au SFD de localiser et
d’arranger les fichiers [Silberschatz et al., 2014].
Un système de fichier distribué peut être implémenté sous forme d’un composant
unique du système d’exploitation distribué, ou sous forme d’une couche logicielle qui
gère la communication entre les systèmes d’exploitation et leurs systèmes de fichiers.
Un paramètre important de performance des systèmes de fichiers distribués est la
durée nécessaire pour satisfaire les requêtes de service, ce temps inclut la durée d’envoi
de la requête au serveur ainsi que la durée de réception de la réponse à travers le réseau,
en outre, il y a le temps d’exécution du protocole de communication.
Dans un système de fichiers distribué on distingue deux composants distincts : le
service de fichiers et le service de répertoires.
4.2.1 Le Service de fichiers
Le service de fichiers distribué gère les opérations sur les fichiers, des opérations fournies
aux clients par le système de fichiers distribué. Le service de fichiers implémente aussi,
des opérations de lecture et de modification de certains attributs des fichiers (ou même
de création des attributs) [Tanenbaum et van Steen, 2007].
Un service de fichiers est un programme qui s’exécute sur une ou plusieurs machines,
il offre des opérations bien définies à des clients à priori inconnus [Silberschatz et al., 2014].
Un service de fichiers distribué peut être vu comme une implémentation distribuée
du service de fichiers centralisé.
Un serveur de fichiers est un processus qui s’exécute sur un ensemble de machines
et qui contribue à la mise en œuvre du service de fichiers, il contrôle les dispositifs de
stockage secondaires sur lesquels les fichiers sont stockés.
Un système de fichiers distribué peut avoir un ou plusieurs serveurs de fichiers. Dans
29
Chapitre 4 : Systèmes de fichiers distribués
l’idéal, l’utilisateur du système distribué ne doit pas connaitre le nombre, l’emplacement
et la fonction des serveurs de fichiers du système distribué.
Selon l’implémentation du système de fichiers distribué, les serveurs de fichiers
peuvent s’exécuter sur des machines spécialisées ou sur des machines qui sont à la fois
clients et serveurs.
4.2.2 Le Service de répertoires
Le service de répertoires gère les opérations sur les répertoires, des opérations de créa-
tion et suppression des répertoires, de nommage et renommage des fichiers, et leur
déplacement d’un répertoire à un autre à travers le réseau [Sinha, 1998].
Un point clé du système de fichiers distribué consiste à déterminer si toutes les
machines (ou processus) ont la même vue de l’hiérarchie globale des répertoires ou
non.
Dans un système distribué, les utilisateurs manipulent des fichiers ayant des noms
logiques, alors que le système s’occupe de blocs de données physiques référencés par
des identificateurs numériques de bas niveau.
Le service répertoire doit adopter une syntaxe permettant de définir les noms de
fichiers et des répertoires. Le nommage (désignation) des fichiers est l’établissement de
correspondances entre les noms logiques et les noms physiques des fichiers.
4.3 Aspects souhaitables d’un système de fichiers distribué
Le système de fichier distribué est le composant d’un système distribué qui subit une
charge importante. Pour faire face aux besoins des nouvelles applications, un système
de fichiers distribué doit tenir compte des aspects suivants :
4.3.1 Transparence
La transparence signifie cacher toutes les difficultés et les détailles derrière la création
d’un système distribué à image unique. Pour un système de fichiers distribué, on dis-
tingue les types de transparence [Coulouris et al., 2013, Sinha, 1998, Silberschatz et al., 2014] :
• Transparence d’accès : les fichiers distants et les fichiers locaux sont accessibles
de la même façon, c’est à dire le système de fichiers fournit le même ensemble
d’opérations pour accéder aux fichiers locaux et distants. De plus, les programmes
30
Chapitre 4 : Systèmes de fichiers distribués
et clients du système ne doivent avoir aucune information sur la répartition des
fichiers sur sites.
• Transparence de localisation : Les noms des fichiers ne doivent pas révéler leurs
emplacements. En plus, un fichier peut être déplacé d’un nœud du système vers
un autre sans avoir besoin de modifier son nom.
• Indépendance d’emplacement : pour des raisons de sécurité, de performance et
de disponibilité, un système de fichiers distribué doit permettre le déplacement
dynamique des fichiers entre ses nœuds. Un utilisateur doit être capable d’accéder
à un fichier à l’aide du même nom indépendamment de son emplacement.
4.3.2 Mobilité des utilisateurs
Un utilisateur du système distribué ne doit pas être forcé à travailler sur un site fixe,
mais il devrait avoir la liberté de travailler sur différents sites du système distribué à
des moments différents sans perdre la performance.
Pour supporter la mobilité des utilisateurs, le système de fichier doit apporter au-
tomatiquement l’environnement de travail (répertoire personnel) de l’utilisateur à son
endroit d’accès dans le système [Sinha, 1998].
4.3.3 Performance
La performance d’un système de fichiers distribué correspond au temps moyen néces-
saire pour satisfaire les requêtes des clients. Ce temps inclut la durée pour accéder à
l’équipement de stockage contenant le fichier (à travers le réseau) et le temps de trai-
tement par le processeur. La performance d’un système de fichiers distribué doit être
proche de la performance d’un système de fichiers centralisé.
Pour atteindre la performance, le système de fichiers distribué doit employer des
techniques qui minimisent le trafic réseau causé par les accès distants aux fichiers
[Dhamdhere, 2006].
4.3.4 Convivialité
L’interface utilisateur au système de fichiers doit être simple et le nombre de ses com-
mandes d’accès doit être limité. Le système de fichiers distribué doit également sup-
porter une large gamme d’applications.
31
Chapitre 4 : Systèmes de fichiers distribués
4.3.5 Extensibilité
Un système de fichiers doit s’adapter à l’évolution dynamique du système distribué.
Le temps de réponse du système de fichiers ne doit pas se dégrader lorsque le système
distribué s’accroît par l’ajout de nœuds ou d’utilisateurs.
4.3.6 Disponibilté
Les fichiers doivent être disponibles même en cas de la panne temporaire d’un ou de
plusieurs nœuds du système distribué. Pour atteindre une meilleure disponibilité, les
concepteurs des systèmes distribués emploient la duplication des fichiers sur plusieurs
sites.
4.3.7 Fiabilité
La probabilité de perte de fichiers stockés doit être minimisée autant que possible. Le
système de fichiers doit effectuer des sauvegardes automatiques des fichiers importants,
et de les utiliser en cas de perte des fichiers originaux.
4.3.8 Hétérogénéité
Les systèmes distribués sont hétérogènes par nature, rendre facile l’accès aux données
des nœuds hétérogènes améliore la convivialité d’utilisation du système distribué. Aussi,
le système de fichiers distribué doit faciliter l’intégration de nouveaux types de nœuds
et de supports de stockage.
4.3.9 Concurrence
La concurrence se produit lorsque plusieurs clients accèdent à un même fichier en
modes conflictuels. Dans ce cas, la modification d’un fichier par un utilisateur ne doit
pas compromettre les autres clients, des mécanismes de contrôle d’accès concurrents
aux fichiers et des techniques de verrouillage doivent être appliqués pour pallier ce
problème.
32
Chapitre 4 : Systèmes de fichiers distribués
4.4 Sémantiques de partage de fichiers (File sharing seman-
tics)
Un fichier partagé peut être accédé par plusieurs utilisateurs en même temps. La sé-
mantique de partage des fichiers détermine quand les modifications apportées par un
client sont rendues visibles par d’autres utilisateurs [Dhamdhere, 2006].
Dans un système de fichiers distribué, on distingue les sémantiques de partage de
fichiers suivantes [Sinha, 1998, Dhamdhere, 2006] :
4.4.1 Sémantique d’UNIX
La sémantique de partage des fichiers d’UNIX supporte des fichiers ayant une image
unique ; les modifications appliquées sur un fichier sont instantanément visibles.
L’implémentation de la sémantique d’UNIX dans un système de fichiers distribué
peut être réalisée par interdire la mise en cache des fichiers et par affecter la gestion
d’un fichier partagé à un serveur de fichiers unique, ce dernier traite toutes les requêtes
de lecture et d’écriture selon l’ordre de leurs formulations. Cependant, à cause des
délais de transmission non nuls sur le réseau, les requêtes peuvent ne pas être traitées
en ordre.
4.4.2 Sémantique de session
Une session est une suite d’opérations d’accès à un fichier effectuées entre son ouverture
et sa fermeture. Dans la sémantique de session, tous les changements apportés sur un
fichier sont rendus visibles aux processus clients appartenant à la même session (les
processus locaux), une fois la session fermée (fermeture du fichier) ces changements
deviennent visibles aux processus distants appartenant à d’autres sessions.
Une session peut être aussi vue comme un ensemble de processus clients situés sur
le même nœud du système. Ces processus partagent la même image modifiable d’un
fichier, dans le sens où le résultat d’une opération d’écriture effectuée par un processus
de la session est visible immédiatement aux autres processus de la session, mais pas
aux processus clients des sessions simultanées.
33
Chapitre 4 : Systèmes de fichiers distribués
4.4.3 Sémantique transactionnelle
La sémantique transactionnelle considère les opérations d’ouverture et de fermeture
d’un fichier comme le début et la fin d’une transaction assurant un traitement atomique
du fichier.
Cette technique fournit un accès exclusif aux fichiers, la propriété : “The all-or-
nothing” maintient le fichier dans un état cohérent. Donc, à tout moment un seul pro-
cessus client accède au fichier, ce qui fait soit toutes ces modifications sont accomplies
soit aucune d’entre elles.
4.5 Mise en cache des fichiers
Le but de la mise en cache de données dans un système de fichiers centralisé est de
minimiser le nombre opérations d’E/S de disques.
Les systèmes de fichiers distribués appliquent une mise en cache dont l’objectif est
de réduire les accès distants (minimiser le trafic réseau). En effet, la mise en cache dans
un SFD consiste à maintenir en mémoire locale une copie des données d’un serveur
distant. Le but est de traiter localement les accès ultérieurs, sans générer un trafic
réseau additionnel.
Dans cette section, nous présentons les aspects importants de la mise en cache dans
un environnement distribué. En particulier nous étudions : l’effet de l’emplacement des
caches sur la performance du SFD, les différentes politiques de mise à jour des données
cachées, les techniques de cohérence (validation) de cache et la granularité des données
cachées.
4.5.1 Emplacement des caches
En supposant que l’emplacement initial des fichiers est le disque du serveur, les données
cachées peuvent être mises dans trois emplacements différents : la mémoire principale
du nœud serveur, le disque du nœud client ou encore dans la mémoire principale du
client [Tanenbaum et van Steen, 2007], voir la figure 4.1.
Cache dans la mémoire principale du serveur
Un cache dans la mémoire principale du nœud serveur élimine le coût d’accès au disque
du serveur. Il est aussi facile de garder conformes le fichier orignal et les données cachées
34
Chapitre 4 : Systèmes de fichiers distribués
Réseau de communication
Mémoire (3) Mémoire (1)
Disque (2) Disque
Client Serveur
(1) Cache dans la mémoire du serveur
(2) Cache dans le disque du client
(3) Cache dans la mémoire du client
Figure 4.1: Emplacements du cache dans un système distribué
vu qu’ils résident dans le même nœud. Cependant, avoir un cache dans la mémoire du
serveur nécessite toujours un accès réseau pour toute opération d’accès au fichier.
Cache dans le disque du client
Le fait de placer les données cachées sur le disque du client élimine le coût engendré par
les accès réseaux. Un cache sur le disque du client améliore aussi la fiabilité du système,
les modifications faites sur le cache sont préservées en cas d’accident (utilisation d’un
espace non volatil). Un autre avantage est la disponibilité d’une capacité de stockage
élevée. Cependant, l’inconvénient majeur d’un cache sur disque est qu’il est impossible
d’avoir des nœuds sans disque (diskless workstation).
Cache dans la mémoire principale du client
Un cache dans la mémoire principale du nœud client élimine à la fois les coûts des
accès réseaux et les coûts d’accès au disque du serveur. Donc, cette politique fournit
une meilleure performance et elle contribue aussi à l’extensibilité et la fiabilité du
système.
4.5.2 Politiques de mise à jour des fichiers cachés
La politique appliquée pour apporter les modifications des données cachées sur la copie
maitre conditionne la performance et la fiabilité du SFD, on peut distinguer les straté-
35
Chapitre 4 : Systèmes de fichiers distribués
gies suivantes [Silberschatz et al., 2014, Sinha, 1998, Tanenbaum et van Steen, 2007] :
Écriture immédiate (write-through policy)
L’écriture immédiate est la politique la plus simple, elle consiste à réécrire les blocs de
données sur le disque dès qu’ils sont modifiés dans le cache. L’avantage principal de
cette politique est sa fiabilité, peu d’informations sont perdues lors d’une panne d’un
nœud client. Cependant, l’écriture immédiate réduit les performances.
L’approche d’écriture immédiate est semblable à l’utilisation d’un service distant
pour des accès en écriture et utilisation du cache uniquement pour la lecture.
Écriture différée (delayed-write)
La politique d’écriture différée retarde la modification de la copie principale, les mo-
difications sont tout d’abord apportées sur les données du cache, ensuite, à un instant
ultérieur, appliquées sur la copie du serveur.
Cette politique possède les deux avantages :
• Étant donné que les modifications sont en premier lieu apportées sur le cache, les
accès en mode écriture s’effectuent beaucoup plus rapidement.
• Les données peuvent être réécrites avant être apportées sur la copie principale,
dans ce cas uniquement la dernière mise à jour est appliquée.
Malheureusement, la politique d’écriture différée n’est pas fiable, les données non sau-
vegardées peuvent être perdues en cas de panne du nœud client.
En effet, il existe plusieurs variantes de la politique écriture différée en fonction du
moment où les modifications sont apportées sur la copie ‘maitre’.
Une variante consiste à modifier un bloc lorsqu’il est sur le point d’être éjecté du
cache du site client. Cette stratégie entraine une meilleure performance, cependant,
quelques blocs peuvent résider dans le cache du client pendant longtemps. Un compro-
mis entre cette stratégie et la politique d’écriture immédiate consiste à analyser, à un
intervalle de temps contrôlé, le cache et de mettre à jour uniquement les blocs modifiés.
Une autre variante de la politique écriture retardée modifie la copie ‘maître‘ des
données cachées lorsque le fichier est fermé. Cette politique est appelée : politique
d’écriture à la fermeture (write-on-close-policy) ; dans le cas où les fichiers sont ouverts
36
Chapitre 4 : Systèmes de fichiers distribués
pour de courtes périodes et rarement modifiés, cette politique ne réduit pas d’une
manière significative le trafic réseau.
4.5.3 Cohérence du cache
Les nœuds clients sont confrontés au problème de consistance de la copie locale du cache
par rapport à la copie maître du serveur. Si le nœud client constate que les données
mises en cache ne sont plus à jour, une actualisation de ces dernières est nécessaire.
Deux approches de vérification de la validité du cache sont employées :
Validation initiée par le client
Le client démarre le processus de contrôle de cohérence du cache en faisant appel au
serveur. La fréquence de vérification de validité du cache varie d’une vérification avant
tout accès à une vérification au premier accès au fichier uniquement.
Validation initiée par le serveur
Le serveur enregistre, pour chaque client, les fichiers qu’il met en cache. Il réagit quand
le serveur détecte une inconsistance. Une inconsistance se produit lorsque deux clients
mettent en cache un fichier en modes conflictuels.
4.5.4 Granularité des données mises en cache
Dans un système de fichiers distribué, la taille des données mises en cache varie de
quelques blocs à un fichier complet. Généralement les données mises en cache doivent
servir plus d’un accès.
Le choix de la taille des données mises en cache doit prendre en compte l’unité de
transfert du protocole de communication. Si les données mises en cache ont des tailles
supérieures aux unités de transfert, les données doivent être désassemblées pour l’envoi
et rassemblées après réception.
4.6 Duplication des fichiers
La duplication des fichiers sur plusieurs sites améliore la disponibilité, elle garantit aussi
une performance élevée ; choisir la copie située à proximité pour servir une requête au
lieu d’utiliser la copie distante permet de réduire le temps service.
37
Chapitre 4 : Systèmes de fichiers distribués
Il est important de placer les copies d’un fichier sur des sites qui sont indépendants
en ce qui concerne la panne, si une panne se produit sur une copie d’un site alors les
autres copies restent accessibles.
Il est souhaitable de cacher les détails de la gestion de duplication aux utilisateurs ;
le service de désignation est le seul composant du SFD qui définit la correspondance
entre un fichier et ses copies.
L’existence de copies multiples d’un fichier doit être invisible aux niveaux supérieurs
du système. Dans les niveaux inférieurs les copies doivent être distinguables à l’aide
des noms différents.
La duplication dans un environnement distribué offre les avantages suivants :
• La disponibilité d’une copie d’un fichier n’est pas liée à la disponibilité des autres
copies.
• Possibilité d’accéder à un fichier même si le serveur qui l’héberge et arrêté.
• Répartition de la charge de traitement sur plusieurs serveurs (performance amé-
liorée).
• Amélioration de la sécurité ; la multiplicité de copies facilite la reprise en cas de
pannes.
• Possibilité d’avoir des applications insensibles au placement des données.
4.7 Conclusion
Un fichier est une collection de données réunies sous un même nom logique est préservé
sur un support de stockage permanent. Un système de fichiers distribué est le compo-
sant du système distribué qui assure la gestion des fichiers répartis sur les différents
nœuds.
Dans l’idéal, un système de fichiers distribué doit être convivial, extensible, fiable
et performant. La performance d’un système de fichiers distribué peut être atteinte par
utiliser la technique de mise en cache. Le but principal de la technique de duplication
est d’assurer la disponibilité des fichiers.
38
Chapitre 4 : Systèmes de fichiers distribués
4.8 Questions
1. Pour améliorer les performances des systèmes de fichiers distribués, l’utilisation
d’un cache est essentielle. Afin de garantir la conformité des informations des
politiques de gestion de cache sont considérées.
• Quelles sont ces politiques ?
• Pour chacune d’elles donner ses avantages et ses inconvénients ?
2. Qu’appelle-t-on transparence de localisation ?
3. Quels sont les avantages et les inconvénients de la sémantique de session de par-
tage de fichiers ?
39