Unx-nfs

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Unx-nfs as PDF for free.

More details

  • Words: 2,811
  • Pages: 10
Systèmes répartis

UNIX

Mise en œuvre du réseau

Le Système de Fichiers Distribués

11/10/09

ESAT

Systèmes répartis

UNIX

Mise en œuvre du réseau

Avec l'apparition des réseaux est apparu le besoin d'étendre la notion de système de fichier, propre à UNIX, à l'ensemble du réseau. Pour répondre à ce besoin des produits permettant le partage des fichiers entre plusieurs machines ont été mis au point. Les systèmes de fichiers ainsi constitués sont appelés systèmes de fichiers distribués. Plusieurs produits ont été mis au point pour réaliser ce service : NFS, RFS, AFS,..... Nous étudierons plus particulièrement, dans ce chapitre, le système de fichiers distribués NFS car c'est celui qui est à l'heure actuelle le plus fréquemment implémenté sur les systèmes UNIX. C'est de plus celui qui est utilisé sur la plate-forme UNIX de l'ESAT.

1.

GENERALITES SUR NFS Historique :

NFS ( Network File System ) est un produit mis au point en 1984 par SUN en même temps que les primitives RPC. Il est fréquemment utilisé pour partager des fichiers entre machines UNIX ou pour intégrer les PC-DOS au monde UNIX avec le produit dérivé PC-NFS. NFS est également disponible sur d'autres environnements informatiques ( CRAY, IBM, DEC...... ). 1.1.

Principes de base

Le but recherché par NFS est de donner l'illusion à l'utilisateur qu'il travaille sur un seul système de fichiers alors que les différents composants de l'arborescence sont situés physiquement sur plusieurs machines. L'utilisateur peut donc utiliser des fichiers distants sans avoir à les copier sur sa machine. Les transferts de fichiers deviennent inutiles ce qui évite en particulier d'avoir à gérer les différentes versions d'un fichier sur plusieurs machines. Pour l'administrateur UNIX, NFS est vu comme une extension de la commande de montage de systèmes de fichiers ( commande mount ).  NFS est aussi utilisé pour gérer les stations sans disque. 

1.2.

Fonctionnalités:

NFS répond aux objectifs suivants : • • • • 

Indépendance par rapport aux systèmes d'exploitation ; Reprise simple en cas d'arrêt du serveur ; Accès transparent ; Sémantique UNIX conservée pour les clients UNIX.

NFS ne contrôle pas les accès simultanés à un même fichier par plusieurs utilisateurs. Il s'agit alors d'un service complémentaire géré par le démon lockd.

 Si les fichiers sont stockés sur des machines différentes, les données n'ont pas toujours les mêmes représentations internes. NFS n'assure pas la conversion. Il faut donc utiliser des données ayant le même format ( utilisation du protocole XDR ).

11/10/09

ESAT

2

Systèmes répartis

2.

UNIX

Mise en œuvre du réseau

MECANISMES MIS EN OEUVRE 2.1.

Modèle client-serveur

Généralités NFS est construit sur le modèle client-serveur ; Une machine connectée au réseau est considérée comme serveur NFS si elle offre tout ou partie de son système de fichiers aux autres machines. On dit qu'elle exporte son système de fichiers. • Une machine est dite cliente NFS si elle utilise le système de fichiers exporté par un serveur. On dit qu'elle monte ( ou importe ) le système de fichiers. •

Un système peut être : • A la fois client et serveur ; • Uniquement client ; • Uniquement serveur ; Un serveur peut servir plusieurs machines clientes. Une machine cliente peut accéder à plusieurs serveurs.  Cependant il est conseillé, sur un réseau local, de ne pas " multiplier " les serveurs. Il est préférable qu'il n'y ait qu'un serveur et des machines clientes. 2.1.1. Démons mis en œuvre Sur le serveur un certain nombre de démons doit être activé pour que NFS fonctionne : • le démon portmap ( utilisé pour mettre en œuvre le protocole RPC ) ; • le démon rpc.mountd, chargé de toutes les opérations de montage et de démontage; • le démon rpc.nfsd : il exécute, via le noyau, les requêtes transmises par les machines clientes. 

Il n'y a pas de démon particulier pour les clients. Seuls les démons biod peuvent être activés pour améliorer les performances.



De manière générale il est préférable d'utiliser les fichiers gérés par NFS en lecture. Si on veut les utiliser en écriture il faut gérer les accès simultanés et mettre alors en œuvre le démon lockd.

11/10/09

ESAT

3

Systèmes répartis

UNIX

Mise en œuvre du réseau

2.1.2. Communications entre un client et un serveur UNIX Le client et les serveurs effectuent les échanges suivants : •

Le client s'adresse au démon rpc.mountd de la machine serveur pour effectuer les opérations de montage. Le démon renvoie un identificateur ( file handle ) associé au répertoire monté.



Lorsqu'il effectue des opérations sur les fichiers, le client envoie l'identificateur et l'opération à effectuer au démon rpc.nfsd de la machine serveur. Ce dernier utilise les services du noyau pour effectuer l'opération demandée.

2.2.

Système de fichiers virtuels

L'intégration de NFS se fait au niveau du noyau. Elle a obligé les concepteurs d'UNIX à modifier l'implémentation du système de fichiers. La notion de VFS ( Virtual File System ) a été mise au point pour pouvoir permettre l'accès transparent à différents types de systèmes de fichiers ( UNIX, DOS.... ) via une interface est réalisée par l'intermédiaire d'une interface : à chaque système de fichiers monté correspond dans le noyau une structure VFS. Cette interface est rendue nécessaire par le fait qu'UNIX manipule des entités appelées inodes qui lui sont propres. NFS introduit donc la notion de vnode ( virtual nodes ). Il s'agit d'un inode virtuel auquel correspond soit un inode physique local, soit un inode physique distant (ou tout autre composant de gestion de fichiers dans le cas de machines non-UNIX ). NFS utilise donc un système de gestion de fichiers virtuels qui est mis en correspondance (mapping ) avec le système de gestion des fichiers réels. 

La notion de vnode ne respecte pas intégralement la syntaxe UNIX. De ce fait il n'est pas possible de distribuer des fichiers spéciaux et donc des périphériques.

2.3.

Protocoles utilisés

NFS utilise les protocoles RPC pour les dialogues entre clients et serveurs. Il utilise aussi, de manière interne, XDR pour les échanges de données relatives aux protocoles entre réseaux hétérogènes ( mais pas pour les données utilisateur ). Au niveau des couches basses, il est possible d'utiliser NFS au-dessus de TCP. Cependant les versions courantes de NFS utilisent toutes, le protocole UDP pour des raisons de performance.

11/10/09

ESAT

4

Systèmes répartis

2.4.

UNIX

Mise en œuvre du réseau

NFS : Protocole sans état

NFS est un protocole sans état : c'est à dire que le serveur ne conserve pas de trace de ce qu'a fait le client. Si le serveur s'arrête, le client continue à envoyer ses requêtes jusqu'à ce que le serveur redémarre. L'avantage de ce système est qu'il permet de relancer le serveur plus facilement. Par contre, le serveur doit mettre à jour les fichiers modifiés lors de chaque écriture pour limiter les risques de perte de données.  Les performances sont donc beaucoup plus faibles pour les écritures que pour les lectures (celles-ci sont tamponnées ).  Un serveur sans état ne permet pas un maintien complet de la sémantique UNIX: En particulier NFS ne gère pas les fichiers spéciaux ni le verrouillage de fichiers. Pour les clients NFS, les démons biod ( en général il y en a 4 ) améliorent les performances grâce à des lectures anticipées conservées dans la mémoire du site client. Les attributs des fichiers et des répertoires sont également mémorisés. Les écritures sont réalisées lorsqu'un bloc de transfert NFS est plein. 2.5.

Identification des utilisateurs

L'utilisateur est identifié sur le serveur de la même manière qu'il l'est sur le site local : par ses numéros UID et GID. Ce qui fait que, pour conserver ses droits d'accès sur ses fichiers, un utilisateur doit avoir les mêmes UID et GID sur toutes les machines. Au niveau de la sécurité, il est possible de donner dans le serveur : • la liste des systèmes de fichiers ou de répertoires exportés ; • les droits d'accès correspondants ; • la liste des machines pouvant monter les répertoires exportés. Néanmoins un utilisateur d'une machine cliente n'est repéré que par un simple numéro, ce qui est insuffisant.



Il est conseillé d'avoir le même environnement de travail pour les fichiers sur le serveur et le client. En particulier le masque de création des fichiers, umask, doit être le même si l'on veut conserver la cohérence entre les deux systèmes.

11/10/09

ESAT

5

Systèmes répartis

3.

UNIX

Mise en œuvre du réseau

ADMINISTRATION ET UTILISATION DE NFS

Les commandes d'administration de NFS ne sont accessibles qu'au super-utilisateur.  La mise en place d'un service NFS sur un système nécessite la recompilation du noyau car des devices spécifiques y sont incorporés. 3.1.

Fichiers de configuration

Le fichier / etc / exports définit quels sont les systèmes de fichiers du serveur qui sont mis à la disposition des clients. Il est utilisé par le démon rpc.mountd. syntaxe -options -ro : -rw : -access : -root : -noroot : 

système_de_fichiers -options liste_clients exportation pour lecture seulement exportation pour lecture et écriture autorisation de montage le client conserve ses droits de super-utilisateur le client perd ses droits de super-utilisateur

Par défaut, le système de fichiers est exporté pour toutes les machines en lecture et écriture et les super-utilisateurs perdent leurs droits.

Exemple:

/usr/local/doc/howto-french / var / spool -access= galaad

 La commande showmount permet d'obtenir la liste des ressources exportées par un serveur: syntaxe : showmount [-options] [nom_serveur] Le fichier / etc / fstab définit quels systèmes de fichiers sont montés par un client NFS au boot du système. 3.2.

Configuration du serveur

pour configurer le serveur, il faut permettre le montage des catalogues par des clients. c'est le rôle du démon /usr/sbin/rpc.mountd qui implante le protocole de montage. Puis il est bon d'activer le protocole NFS proprement dit en lançant le démon rpc.nfsd. l'ordre de lancement des deux démons importe peu. Le lancement de ces démons rpc.mountd est fait en principe au démarrage de la machine.

11/10/09

ESAT

6

Systèmes répartis

3.3.

UNIX

Mise en œuvre du réseau

Montage / Démontage chez le client

Pour le client, le montage est plus qu'une opération d'accrochage d'arborescence, il permet d'indiquer bon nombre d'options qui fixent les modes d'utilisation ainsi que les caractéristiques des transferts. Ce montage peut être réalisé manuellement ou automatiquement au démarrage de la machine. syntaxe :

mount -t NFS options rep_serveur rep_client

options : soft hard bg rsize=n wsize=n timeout=n retrans=n

retourne une erreur si le serveur NFS ne répond pas mais ne bloque pas le client serveur indisponible blocage du client montage des filesystems en arrière-plan indique la taille du buffer de lecture (en octets) indique la taille du buffer d'écriture (en octets) précise le nombre de secondes avant de "flusher" les informations des buffers précise le nombre de retransmissions NFS en cas de problème

on peut rajouter le paramètre -r si on veut monter le répertoire en lecture seule exemple :

montage démontage

mount -r -f NFS, soft, bg st03:/user/stage /tmp umount /tmp

montage automatique mount est invoquée dans un des fichiers / etc / rc.d / rcX.d selon la syntaxe : mount -a mount lit le fichier de configuration : / etc / fstab ( ou / etc / checklist suivant les versions) et réalise les montages qui y sont décrits. Le fichier / etc / fstab comporte des lignes de 4 champs : nom de la partition à monter ( avec identification de la machine serveur ), point de montage, type, options.  Il faut que le répertoire à démonter ne soit pas utilisé pour que la commande de démontage soit effectuée. Fonction automount : Sur certains systèmes il est possible d'utiliser la fonctionnalité automount. Le démon automountd permet de ne monter la partition NFS que lorsqu'elle est réellement utilisée ( et non automatiquement au démarrage ). La partition est démontée après une période paramétrable d'inactivité. 

Le fichier / etc / fstab devient alors inutile ;

11/10/09

ESAT

7

Systèmes répartis

4.

UNIX

Mise en œuvre du réseau

EXERCICE PRATIQUE DE MISE EN OEUVRE

Objectif : On va chercher à exporter un répertoire de notre machine, c'est à le rendre accessible à d'autres machines du réseau. Les utilisateurs des autres machines pourront donc monter ce répertoire, comme ils le font avec des partitions locales.

4.1.

Rappels

Chez le client: le système de fichier distribué N.F.S. est mis en oeuvre par une extension de la commande mount. IR n'y a donc a-prior1i rien à faire pour pouvoir utiliser ce système. Il n'y a en particulier pas de fichiers de configuration. Sur le serveur: le système est mis en oeuvre grâce à deux démons spécifiques à N.F.S. nfsd et mountd. Deux autres démons doivent être présents, ce sont des démons « multifonctions » qui sont utilisés par différents services réseau : inetd et portmap. Remarque: ces deux démons peuvent porter des noms légèrement différents selon l'UNIX employé. Par exemple: - rpc.nfsd (au lieu de nfsd) - rpc.mountd (au lieu de mountd) - portmapper (au lieu de portmap) La configuration est assurée sur le serveur par un fichier obligatoire : /etc/exports et deux fichiers facultatifs : /etc/hosts.allow et /etc/hosts.deny. Ils décrivent respectivement : - les répertoires que l'on exporte - les machines qui sont autorisées à accéder au service NFS - et celles qui ne le sont pas.

4.2.

Vérifier la présence des démons

On doit vérifier que les programmes correspondants aux démons cités ci-dessus ont été installés, c'est à dire qu'ils se trouvent bien sur notre machine. On pourra pour ce faire utiliser la commande whereis. La plupart du temps, ils se trouveront dans les répertoires suivants :  /usr/sbin/rpc.mountd  /usr/sbin/inetd  /sbin/portmap

1

« a-priori car on peut lancer le démon biod

11/10/09

ESAT

8

Systèmes répartis

UNIX

Mise en œuvre du réseau

4.3. Vérifier le fonctionnement des démons de base 

Les démons inetd et portmap doivent être lancés. Pour le vérifier, on vérifie leur existence avec la commande ps.



On peut aussi vérifier le fonctionnement du « portmapper » avec la commande: rpcinfo -p. Quand le portmapper ne fonctionne pas, on obtient un message du type : rpcinfo: can't contact portmapper: RPC: Remote system error - connection refused

4.4. Configuration du serveur 

éditer le fichier /etc/exports afin d'y mettre la liste des répertoires à exporter. On peut y préciser des options. Par exemple le fichier suivant exporte le répertoire /tmp vers toutes les machines, sans restriction d'accès et exporte le répertoire /home/pub vers toutes les machines dont le nom commence par « lx209 » en lecture seule. /tmp /home/pub

lx209*(ro)

Pour plus d'information sur les options, se reporter au man (man exports). 

éditer les fichiers /etc/hosts.deny et /etc/host.allow (facultatif).

Remarque : ne pas oublier de fixer les permissions adéquates sur le répertoire que l'on exporte (commande chmod). Un répertoire déclaré dant /etc/exports mais dont les droits ne seraient pas positionnés en lecture et exécution (au moins) ne serait pas accessible. Entre les permissions fixées par les différents fichiers de configuration et celles fixées par la commande chmod, ce sont toujours les droits les plus restrictifs qui sont appliqués.

4.5. (Re)démarrer les démons NFS On peut maintenant lancer les démons NFS. Remarque : Ces démons ne lisent leurs fichiers de configuration que lorsqu'ils sont démarrés. Par conséquent, si ces démons étaient déjà démarrés avant que l'on modifie le fichier /etc/exports, il faudra les arrêter et les redémarrer.

11/10/09

ESAT

9

Systèmes répartis

UNIX

Mise en œuvre du réseau

Pour arrêter les démons, il y a plusieurs méthodes :  Repérer leur PID avec la commande ps fax puis faire un kill sur ces processus.  Appeler le script /etc/rc.d/init.d/nfs avec l'argument « stop ». Ce script n'existe pas toujours. /etc/rc.d/init.d/nfs stop Pour démarrer les démons, il y a aussi plusieurs méthodes:  Repérer leur PID avec la commande ps fax puis faire un kill sur ces processus.  Utiliser le script /etc/rc.d/init.d/nfs avec l'argument « start ». Ce script n'existe pas toujours /etc/rc.d/init.d/nfs start Pour arrêter et redémarrer les démons en une seule opération, on peut dans certaines distributions de Linux utiliser les commandes suivantes: /etc/rc.d/init.d/nfs restart ou bien killall -HUP rpc.nfsd rpc.mountd

4.6. On vérifie que ces démons ont bien été (re)Iancés Là encore, plusieurs méthodes s'offrent à nous :  

Utiliser un ps fax et vérifier la présence de nfsd et mountd Utiliser la commande rpcinfo -p. Elle doit faire apparaîÎtre des informations sur nfsd et mountd, comme par exemple :

program 100005 100005 100003 100003

vers 1 1 2 2

proto udp tcp udp tcp

port 745 747 2049 2049

mountd mountd nfs nfs

Remarque : les informations affichées peuvent varier selon les distributions de Linux et la configuration de la machine. 

Utiliser la commande nfsstat

Si cette dernière vérification s'est révélée positive, le serveur NFS est fonctionnel. Les autres machines du réseau peuvent alors monter les répertoires exportés.

11/10/09

ESAT

10