Un système de fichiers réseau, ou NFS (de l'anglais Network File System), permet aux hôtes distants de monter des systèmes de fichiers sur un réseau et de les utiliser exactement comme des systèmes de fichiers locaux. Ceci permet aux administrateurs système de stocker des ressources sur des serveurs centralisés sur le réseau.
Ce chapitre se concentre sur les concepts fondamentaux de NFS et des références supplémentaires. Pour obtenir des instructions spécifiques sur la configuration et l'exploitation de logiciels clients et serveurs NFS, consultez le chapitre intitulé Système de fichiers réseau (NFS) du Guide d'administration système de Red Hat Enterprise Linux.
Deux versions de NFS sont actuellement en vigueur. La version 2 de NFS (NFSv2) utilisée depuis plusieurs années, est largement supportée. La version 3 de NFS (NFSv3) apporte d'autres fonctions, y compris un traitement de fichiers de taille variable et un meilleur rapportage d'erreurs, mais n'est pas entièrement compatible avec les clients NFSv2. Red Hat Enterprise Linux supporte les deux clients NFSv2 et NFSv3, et utilise NFSv3 par défaut lors du montage d'un système de fichiers via NFS sur un serveur qui le supporte.
NFSv2 utilise le protocole UDP (User Datagram Protocol) pour fournir une connexion réseau sans état (stateless) entre le client et le serveur. NFSv3 peut utiliser soit UDP, soit TCP (Transmission Control Protocol) en cours d'exécution sur un réseau IP.
La connexion sans déclaration UDP réduit le trafic réseau, puisque le serveur NFS envoie au client un cookie qui l'autorise à accéder au volume partagé. Ce cookie est une valeur aléatoire stockée du côté serveur et transmis en même temps que les requêtes RPC du client. Non seulement le serveur NFS peut être redémarré sans affecter le client mais le cookie restera intact. Cependant, le protocole UDP étant sans état, si le serveur s'arrête inopinément, les clients UDP continueront à saturer le réseau de requêtes. Pour cette raison, TCP est le protocole préféré lors de la connexion sur un serveur NFSv3.
![]() | Remarque |
---|---|
Pour une meilleure compatibilité, UDP est le protocole de transport par défaut pour NFS sous Red Hat Enterprise Linux. Reportez-vous au chapitre intitulé Système de fichiers réseau (NFS) du Guide d'administration système de Red Hat Enterprise Linux afin d'obtenir de plus amples informations sur la connexion de serveurs NFS à l'aide de TCP. |
NFS n'effectue d'authentification que lorsqu'un système client tente de monter une ressource NFS partagée. Pour limiter l'accès au service NFS, des enveloppeurs TCP sont employés. Ceux-ci lisent les fichiers /etc/hosts.allow et /etc/hosts.deny pour déterminer si un client particulier doit se voir refuser ou accorder l'accès au service NFS. Pour plus d'informations sur la configuration des contrôles d'accès avec les enveloppeurs TCP, consultez le Chapitre 16.
Une fois que l'accès du client a été autorisé par les enveloppeurs TCP, le serveur NFS se réfère à son fichier de configuration, /etc/exports, pour déterminer si le client peut monter l'un des systèmes de fichiers exportés. Dès que l'accès est autorisé, l'utilisateur peut effectuer toute opération sur les fichiers ou répertoires.
![]() | Avertissement |
---|---|
Les privilèges de montage NFS sont accordés à l'hôte client et non pas à l'utilisateur. Ainsi, tout utilisateur sur un hôte client ayant des permissions d'accès, peut accéder aux systèmes de fichiers exportés. Lors de la configuration de partages NFS, faites particulièrement attention aux hôtes qui obtiennent les permissions de lecture/écriture (rw). |
Red Hat Enterprise Linux utilise une combinaison de support de niveau noyau et des processus de démons pour fournir le partage de fichiers NFS. NFS utilise les Appels de procédure distante (RPC de l'anglais Remote Procedure Calls) pour router des requêtes entre clients et serveurs. Les services RPC sous Linux sont contrôlés par le service portmap. Pour partager ou monter les systèmes de fichiers NFS, les services suivants fonctionnent ensemble :
nfs — Lance les processus RPC appropriés pour répondre aux requêtes pour les systèmes de fichiers NFS partagés.
nfslock — Un service facultatif qui lance les processus RPC appropriés pour permettre aux clients NFS de verrouiller des fichiers sur le serveur.
portmap — Le service RPC pour Linux ; il répond aux requêtes pour les services RPC et définit des connexions vers le service RPC.
Les processus RPC suivants fonctionnent en arrière-plan afin de faciliter les services NFS :
rpc.mountd — Ce processus reçoit la requête de montage d'un client NFS et vérifie qu'elle correspond bien à un système de fichiers actuellement exporté. Ce processus est lancé automatiquement par le service nfs et ne nécessite pas de configuration de l'utilisateur.
rpc.nfsd — Ce processus est le serveur NFS. Il fonctionne avec le noyau Linux pour satisfaire les requêtes dynamiques des clients NFS, comme par exemple en fournissant des fils de serveur chaque fois qu'un client NFS se connecte. Ce processus correspond au service nfs.
rpc.lockd — Un processus facultatif qui permet aux clients NFS de verrouiller des fichiers sur le serveur. Il correspond au service nfslock.
rpc.statd — Ce processus implémente le protocole RPC de Moniteur de statut de réseau (NSM) (de l'anglais Network Status Monitor) qui avertit les clients NFS lorsqu'un serveur est redémarré sans avoir été préalablement arrêté correctement. Ce processus est lancé automatiquement par le service nfslock et ne nécessite pas de configuration de l'utilisateur.
rpc.rquotad — Ce processus fournit des informations sur les quotas utilisateur s'appliquant aux utilisateurs distants. Il est lancé automatiquement par le service nfs et ne nécessite pas de configuration de l'utilisateur.
Le service portmap sous Linux est nécessaire pour orienter les requêtes RPC vers les services appropriés. Les processus RPC s'annoncent à portmap lorsqu'ils démarrent, révélant le numéro de port qu'ils contrôlent et les numéros de programmes RPC qu'ils entendent servir. Le système client contacte alors portmap sur le serveur avec un numéro de programme RPC particulier. Le service portmap redirige ensuite le client vers le numéro de port correct afin de communiquer avec le service souhaité.
Parce que les services utilisant RPC se basent sur portmap pour assurer toutes les connexions avec les requêtes de client entrantes, portmap doit être disponible avant le démarrage de chacun de ces services.
Le service portmap utilise des enveloppeurs TCP pour le contrôle d'accès et les règles de contrôle d'accès pour portmap affectent tous les services basés sur RPC. Il est également possible de spécifier chacun des démons RPC NFS devant être affectés par une règle de contrôle d'accès. Les pages de manuel relatives à rpc.mountd et rpc.statd contiennent des informations sur la syntaxe précise de ces règles.
Puisque portmap fournit la coordination entre les services RPC et les numéros des ports utilisés pour communiquer avec eux, il est utile de pouvoir visualiser les services RPC en cours à l'aide de portmap lors de la résolution de problèmes. La commande rpcinfo montre chaque service basé sur RPC avec des numéros de port, un numéro de programme RPC, une version et un type de protocole IP (TCP ou UDP).
Pour s'assurer que les bons services NFS basés sur RPC sont activés pour portmap, utilisez la commande suivante en tant que super-utilisateur :
rpcinfo -p |
La sortie suivante est un exemple de sortie de cette commande :
program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100021 1 udp 32774 nlockmgr 100021 3 udp 32774 nlockmgr 100021 4 udp 32774 nlockmgr 100021 1 tcp 34437 nlockmgr 100021 3 tcp 34437 nlockmgr 100021 4 tcp 34437 nlockmgr 100011 1 udp 819 rquotad 100011 2 udp 819 rquotad 100011 1 tcp 822 rquotad 100011 2 tcp 822 rquotad 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100005 1 udp 836 mountd 100005 1 tcp 839 mountd 100005 2 udp 836 mountd 100005 2 tcp 839 mountd 100005 3 udp 836 mountd 100005 3 tcp 839 mountd |
Les résultats ci-dessus montrent que les bons services NFS sont en cours d'exécution. Si l'un des services NFS ne démarre pas correctement, portmap sera incapable d'orienter les requêtes RPC de clients pour ce service, vers le port adéquat. Souvent, si NFS n'est pas présent dans la sortie de rpcinfo, le redémarrage de NFS permettra à ces services de s'enregistrer correctement auprès de portmap et de commencer à fonctionner. Pour obtenir de plus amples informations sur le lancement de NFS, reportez-vous à la Section 9.2.
D'autres options utiles sont disponibles pour la commande rpcinfo. Reportez-vous à la page de manuel relative à rpcinfo afin d'obtenir de plus amples information.
Précédent | Sommaire | Suivant |
Ressources supplémentaires | Niveau supérieur | Lancement et arrêt de NFS |