Chapitre 8. Network File System (NFS)
Un système de fichiers NFS (« Network File System ») permet aux hôtes distants de monter les systèmes de fichiers sur un réseau et d'interagir avec ces systèmes de fichiers tant que ceux-ci sont montés localement. Ceci permet aux administrateurs système de consolider leurs ressources sur des serveurs centralisés sur le réseau.
Ce chapitre traite des concepts NFS fondamentaux et fournit également des informations supplémentaires
8.1. Fonctionnement NFS
Actuellement, il y a deux versions de NFS incluses dans Red Hat Enterprise Linux. NFS version 3 (NFSv3) prend en charge les écritures asynchrones sécurisées et offre une gestion des erreurs plus robuste que NFSv2. NFSv3 prend aussi en charge les fichiers et décalages d'une taille de 64 bits, permettant ainsi aux clients d'accéder à plus de 2 Go de données de fichiers. NFSv4 fonctionne à travers les parefeux et sur l'Internet, n'a plus besoin du service
rpcbind
, prend en charge les ACL, et utilise les opérations stateful.
Red Hat Enterprise Linux 7 ajoute un support à NFS version 4.1 (NFSv4.1), ce qui propose un certain nombre d'améliorations des performances et de la sécurité, y compris la prise en charge des clients pNFS (« Parallel NFS »). En outre, une connexion TCP distincte n'est plus nécessaire pour les rappels, permettant ainsi à un serveur NFS d'attribuer des délégations même lorsqu'il ne peut pas contacter le client (par exemple lorsqu'un pare-feu ou un NAT interfère). De plus, NFSv4.1 fournit des sémantiques true exactement-une (sauf pour les opérations de démarrage), résolvant ainsi un problème connu qui faisait que certaines opérations pouvaient renvoyer un résultat inexact si une réponse était perdue et que l'opération avait été envoyée à deux reprises.
Red Hat Enterprise Linux 7 prend en charge les clients NFSv3, NFSv4.0, et NVSv4.1. Les clients NFS tentent de monter par NFSv4.0 par défaut, et retombent sur NFSv3 si l'opération de montage a échoué.
Note
NFS version 2 (NFSv2) n'est plus prise en charge par Red Hat.
Toutes les versions de NFS peuvent utiliser TCP (Transmission Control Protocol) exécuté sur un réseau IP, avec NFSv4 qui le requiert. NFSv3 peuvent utiliser le protocole UDP (User Datagram Protocol) exécuté sur un réseau IP afin de fournir une connexion réseau sans état (« Stateless ») entre le client et le serveur.
Lors de l'utilisation de NFSv3 avec UDP, la connexion UDP sans état (sous des conditions normales) possède un alourdissement du protocole moindre que TCP. Ceci se traduit par de meilleures performances sur des réseaux propres et non encombrés. Cependant, comme UDP est sans état, si le serveur tombe en panne de manière inattendue, les clients UDP continueront de saturer le réseau avec des requêtes pour le serveur. En outre, lorsqu'une trame est perdue avec UDP, la requête RPC entière doit être retransmise. Avec TCP, seule la trame perdue doit être envoyée à nouveau. Pour ces raisons, TCP est le protocole préféré lors d'une connexion à un serveur NFS.
The mounting and locking protocols have been incorporated into the NFSv4 protocol. The server also listens on the well-known TCP port 2049. As such, NFSv4 does not need to interact with
rpcbind
[1], lockd
, and rpc.statd
daemons. The rpc.mountd
daemon is still required on the NFS server to set up the exports, but is not involved in any over-the-wire operations.
Note
TCP est le protocole de transport par défaut de NFS version 2 et 3 sous Red Hat Enterprise Linux. UDP peut être utilisé à des fins de compatibilité selon les besoins, mais n'est pas recommandé pour une utilisation globale. NFSv4 requiert TCP.
Tous les démons RPC/NFS possèdent une option de ligne de commande
'-p'
pouvant définir le port, ce qui rend la configuration du pare-feu plus facile.
Une fois que les emballages TCP auront fourni l'accès au client, le serveur NFS se réfèrera au fichier de configuration
/etc/exports
pour déterminer si le client a le droit d'accéder à un système de fichiers exporté. Une fois cette vérification effectuée, toutes les opérations des fichiers et répertoires seront disponibles pour l'utilisateur.
Important
Pour que NFS puisse fonctionner avec une installation par défaut de Red Hat Enterprise Linuc avec un pare-feu activé, veuillez configurer IPTables avec le port TCP par défaut 2049. NFS ne fonctionnera pas correctement sans une configuration d'IPTables correcte.
Le script d'initialisation NFS et le processus
rpc.nfsd
permettent désormais la liaison vers tout port spécifié pendant le démarrage système. Cependant, ceci est prône aux erreurs si le port est indisponible, ou s'il est en conflit avec un autre démon.
8.1.1. Services requis
Red Hat Enterprise Linux utilise une combinaison des processus de démons et de support technique au niveau du noyau pour fournir le partage de fichiers NFS. Toutes les versions NFS reposent sur les RPC (Remote Procedure Calls) entre clients et serveurs. Les services RPC sous Red Hat Enterprise Linux 7 sont contrôlés par le service
rpcbind
. Pour partager ou monter les systèmes de fichiers NFS, les services suivants travaillent ensemble selon la version NFS implémentée :
Note
Le service
portmap
a été utilisé pour mapper les numéros de programmes RPC à des combinaisons de numéros de port d'adresses IP dans des versions plus récentes de Red Hat Enterprise Linux. Ce service est désormais remplacé par rpcbind
dans Red Hat Enterprise Linux 7 afin de permettre la prise en charge d'IPv6. Pour obtenir des informations supplémentaires sur ce changement, veuillez consulter les liens suivants :
- TI-RPC / prise en charge rpcbind : http://nfsv4.bullopensource.org/doc/tirpc_rpcbind.php
- Prise en charge IPv6 sur NFS : http://nfsv4.bullopensource.org/doc/nfs_ipv6.php
- nfs
servicectl start nfs
lance le serveur NFS et les processus RPC appropriés pour servir les requêtes des systèmes de fichiers NFS partagés.- nfslock
servicectl start nfs-lock
active un service obligatoire qui lance les processus RPC appropriés, ce qui permet aux clients NFS de verrouiller des fichiers sur le serveur.- rpcbind
rpcbind
accepte les réservations de ports des services RPC locaux. Ces ports sont ensuite mis à disponibilité (ou publicisés) afin que les services RPC à distance correspondants puissent y accéder.rpcbind
répond à des requêtes de service RPC et paramètre des connexions vers le service RPC requis. Ceci n'est pas utilisé avec NFSv4.
Les processus RPC suivants facilitent les services NFS :
- rpc.mountd
- Ce processus est utilisé par un serveur NFS pour traiter les requêtes
MOUNT
des clients NFSv3. Il vérifie que le partage NFS requis est actuellement exporté par le serveur NFS, et que le client est autorisé à y accéder. Si la requête de montage est autorisée, le serveur rpc.mountd répond avec le statutSuccess
(« Opération réussie ») et retourne l'identificateur de fichier «File-Handle
» de ce partage NFS au client NFS. - rpc.nfsd
rpc.nfsd
permet de définir les versions et protocoles NFS explicites publicisés par le serveur. Celui-ci fonctionne avec le noyau Linux afin de répondre aux demandes des clients NFS, comme pour fournir des threads chaque fois qu'un client NFS se connecte. Ce processus correspond au servicenfs
.- lockd
lockd
est un thread du noyau qui peut être exécuté sur les clients et les serveurs. Il implémente le protocole NLM (« Network Lock Manager »), qui permet aux clients NFSv3 de verrouiller des fichiers sur le serveur. Il est lancé automatiquement à chaque fois que le serveur NFS est exécuté et à chaque fois qu'un système de fichiers NFS est monté.- rpc.statd
- Ce processus implémente le protocole RPC NSM (« Network Status Monitor »), qui notifie les clients NFS lorsqu'un serveur NFS est redémarré sans avoir tout d'abord été éteint correctement.
rpc.statd
est automatiquement démarré par le servicenfslock
, et ne requiert pas de configuration utilisateur. Ce protocole n'est pas utilisé avec NFSv4. - rpc.rquotad
- Ce processus fournit des informations sur le quota d'utilisateur des utilisateurs distants.
rpc.rquotad
est automatiquement démarré par le servicenfs
et ne requiert pas de configuration utilisateur. - rpc.idmapd
rpc.idmapd
fournit des appels ascendants client et serveur NFSv4, qui mappent simultanément les noms NFSv4 (chaînes sous le formatutilisateur@domaine
) et les UID et GID locaux. Pour queidmapd
puisse fonctionner avec NFSv4, le fichier/etc/idmapd.conf
doit être configuré. Au minimum, le paramètre « Domaine », qui définit le domaine de mappage NFSv4, doit être spécifié. Si le domaine de mappage NFSv4 est le même que le nom de domaine DNS, oubliez ce paramètre. Le client et le serveur doivent se mettre d'accord sur le domaine de mappage NFSv4 pour que le mappage d'ID fonctionne correctement.Note
Dans Red Hat Enterprise Linux 7, seul le serveur NFSv4 utiliserpc.idmapd
. Le client NFSv4 utilisenfsidmap
de l'imapper basé-keyring .nfsidmap
est un programme autonome appelé par le noyau à la demande pour effectuer les mappages d'ID ; ce n'est pas un démon. S'il y a un problème avecnfsidmap
, le client utilise alorsrpc.idmapd
. Vous trouverez plus d'informations surnfsidmap
dans la page man de nfsidmap.
[1]
The
rpcbind
service replaces portmap
, which was used in previous versions of Red Hat Enterprise Linux to map RPC program numbers to IP address port number combinations. For more information, refer to Section 8.1.1, « Services requis ».