Introduction au service NFS
Le service NFS
(Network File System),
permet le partage d'un système de fichiers sur un réseau Linux
Généralités
- Il s'agit du protocole standard de partage réseau entre machines Unix, créé par SUN vers 1980.
Il comprend l'ajout de fonctionnalités supplémentaires (dans la couche session au dessus de TCP/IP), les RPC
=(Remote Procedure Calls)
- Donc une machine joue le rôle de serveur de fichiers. Elle
est appelée
serveur NFS
,
et
- on dit qu'elle exporte tout (arborescence racine /) ou partie de son
système de fichiers,
- en le partageant par une liste de stations accessibles par réseau,
- en installant toutefois des restrictions d'accès.
- Comme toute ressource extérieure doit être intégrée dans le système de fichiers Linux, cet accès ne pourra être permis qu'à l'aide d'un processus de montage : une partie de l'arborescence d'une machine Linux "serveur",
est exportée ce qui lui permet d'être intégré
dans le système de fichiers d'une machine Linux "cliente".
- L'utilisateur peut monter cette arborescence exportée par le serveur, sur un point de montage, de façon tout-à-fait semblable au montage de systèmes de fichiers des divers périphériques.
Le montage peut s'effectuer en cours de session de travail par la commande interactive mount
.
- Mais dans un cadre de travail stable, où le serveur est dédié, il est souhaitable de monter la ressources
NFS
au démarrage.
Il suffit pour cela d'inclure la description du montage sur une ligne de /etc/fstab.
On peut comparer le processus à la "connexion à un lecteur réseau" sur d'autres systèmes.
- Dès lors, pour l'utilisateur sur la machine cliente, la ressource est accessible comme si elle résidait sur un périphérique local.
Installation
Sur le serveur NFS
- Tout d'abord, les services
portmap
qui gère les connexions RPC, et nfs
ont dû être installés initialement.
(sur une distribution Mdke 7.2, il s'agit des packages portmap-4.0 .. et nfs-utils
- Vérifier avec l'utilitaire
ntsysv
que les services portmap
et nfs
sont bien activés
automatiquement au démarrage.
- Pour vérifier que les processus correspondant sont bien en exécution :
ps aux | grep portmap
- NFS, comme les autres services, se gère avec un script placé dans /etc/rc.d/init.d/.
Voici pour lancer NFS (sur une distribution de type RedHat)
# service portmap start
Starting portmapper: [OK]
# service nfs start
Starting NFS services: [OK]
Starting NFS quotas: [OK]
Starting NFS deamon: [OK]
Starting NFS mountd: [OK]
- Le fichier /etc/exports.
Ce fichier (à créer s'il est absent) contient la liste des exportations.
Sur chaque ligne, on précise un répertoire du système
de fichiers, suivi par la liste des machines distantes clientes autorisées à les monter. Si cette liste est vide, toutes les stations
accessibles sont autorisées.
Exemples d'exportation déclarées dans le fichier /etc/exportssur le serveur p00
# repertoire liste-machines (liste-options)
/home/jean pc2(ro) pc3(rw)
/usr/bin pc2(ro) pc3(ro)
/var/www/html *.fctice.ac-creteil.fr (ro) pc3 (rw)
/usr/share/doc (ro)
Pour valider un changement opéré dans ce fichier de configuration, faire appel à la commande :
# exportfs -a
Sur la station cliente
Exemple de mise en oeuvre
Ce que veut avant tout un utilisateur, c'est pouvoir travailler dans son répertoire personnel situé sur du serveur, à partir d'une station Linux quelconque.
Il doit se connecter et s'authentifier sur le serveur NIS qui tient à jour la base de données des comptes utilisateurs
- Sur le client pc1 on monte la ressource
/home
exportée sur le serveur sur /home
local, au démarrage ou bien en root
.
Ce montage ca masquer les comptes éventuellement présents sur le client
# mount -t nfs serveur:/home /home
- Dès lors, l'utilisateur jean accède à ses fichiers par :
[jean@pc1 ] cd /home/jean
Problèmes rencontrés
- "Je relance le "démon" nfs par l'exécution du script
/etc/rc.d/init.d/nfs start
, et ... pas de message, rien ne focntionne !
Cela est du à la ligne [ -s /etc/exports ] || exit 0
(-s = le fichier n'est pas vide)
Donc pas de fonctionnement inutile de nfs
s'il n'y a aucune ressource à exporter !
- "J'ai bien déclaré les exportations sur le serveur. Pourtant quand je monte correctement une ressource sur une station, avec la commande
mount -f nfs serveur:/ressource /point-de-montage
, je constate un blocage ..."
S'il n'y a pas d'erreur dans le nom de la ressource, c'est sans doute que le nom du serveur n'est pas trouvé par requête DNS,
NIS ou en consultant tout simplement le fichier /etc/hosts
...
Configuration avec Linuxconf
Soit à configurer l'export : du serveur p00
---> stations
clientes p02, p03
Pour chaque rép à exporter, on précise la liste
des clients :
/home p02, p03
r
/usr/bin p02, p03
r
/home/httpd p03
rw
/usr/public p03
rw
Après validation, on peut vérifier que la table suivante
a été écrite dans le fichier /etc/exports
/home p02(ro), p03(ro)
/usr/bin p02(ro), p03(ro)
/home/httpd p03(rw)
/usr/public p03(rw)