GNU/Linux >> Tutoriels Linux >  >> Cent OS

Guide du débutant sur NFS dans CentOS / RHEL

Introduction à NFS

Un système de fichiers en réseau (NFS) permet à un serveur de partager des hiérarchies de répertoires (systèmes de fichiers) avec des systèmes distants sur un réseau. Les serveurs NFS exportent le répertoire et les clients NFS montent le répertoire exporté. Le répertoire du serveur apparaît alors aux systèmes clients comme s'il s'agissait de répertoires locaux. NFS réduit les besoins de stockage et améliore la cohérence et la fiabilité des données, car les utilisateurs accèdent à des fichiers stockés sur un serveur centralisé.

RedHat Linux 7 ne prend pas en charge NFS version 2 (NFSv2). Les deux versions suivantes sont prises en charge :
NFS version 3 (NFSv3).
NFS version 4 (NFSv4).

NFS s'appuie sur des appels de procédure à distance (RPC) entre les clients et les serveurs. Les services RPC sont contrôlés par le service rpcbind. Le service rpcbind remplace portmap, qui était utilisé dans les versions précédentes de Linux pour mapper les numéros de programme RPC aux combinaisons de numéros de port d'adresse IP. rpcbind répond aux demandes de services RPC et établit des connexions au service RPC demandé. rpcbind n'est pas utilisé avec NFSv4, car le serveur écoute sur le port TCP 2049 bien connu. Les protocoles de montage et de verrouillage ont également été intégrés au protocole NFSv4, ainsi NFSv4 n'interagit pas non plus avec les démons lockd et rpc.statd.

Serveur NFS et processus RPC

Le démarrage du service nfs-server démarre le serveur NFS et les autres processus RPC nécessaires pour traiter les demandes de systèmes de fichiers NFS partagés. Vous pouvez utiliser le nom abrégé "nfs " plutôt que "nfs-server ” lors du démarrage du service. Exemple :

# systemctl start nfs

Il s'agit du processus serveur NFS qui implémente la partie utilisateur du service NFS. La fonctionnalité principale est gérée par le module noyau nfsd. Le programme de l'espace utilisateur spécifie simplement le type de sockets sur lequel le serveur du noyau écoute, les versions NFS qu'il prend en charge et le nombre de threads du noyau nfsd qu'il utilise. Utilisez la commande ps –e pour afficher le nombre de threads en cours d'exécution.

# ps -ef | grep nfs
root      9093     2  0 11:21 ?        00:00:00 [nfsd4_callbacks]
root      9099     2  0 11:21 ?        00:00:00 [nfsd]
root      9100     2  0 11:21 ?        00:00:00 [nfsd]
root      9101     2  0 11:21 ?        00:00:00 [nfsd]
root      9102     2  0 11:21 ?        00:00:00 [nfsd]
root      9103     2  0 11:21 ?        00:00:00 [nfsd]
root      9104     2  0 11:21 ?        00:00:00 [nfsd]
root      9105     2  0 11:21 ?        00:00:00 [nfsd]
root      9106     2  0 11:21 ?        00:00:00 [nfsd]

Le nombre de threads nfsd à exécuter est défini dans le /proc/fs/nfsd/threads dossier. Dans cet exemple, 8 threads nfsd sont spécifiés :

# cat /proc/fs/nfsd/threads
8

Le démarrage du service nfs-server démarre également les processus RPC. Vous pouvez utiliser la commande ps –e pour afficher les noms des processus RPC.

# ps -e | grep -i rpc
  177 ?        00:00:00 rpciod
 9080 ?        00:00:00 rpc.statd
 9081 ?        00:00:00 rpc.idmapd
 9082 ?        00:00:00 rpcbind
 9083 ?        00:00:00 rpc.mountd
 9084 ?        00:00:00 rpc.rquotad

rpc.statd

Ce processus implémente le protocole RPC Network Status Monitor (NSM), qui avertit les clients NFS lorsqu'un serveur NFS est redémarré sans être gracieusement arrêté. Ceci n'est pas utilisé avec NFSv4.

rpc.mountd

Il s'agit du démon de montage NFS qui implémente le côté serveur des demandes de montage des clients NFSv3. Il vérifie que le partage NFS demandé est actuellement exporté par le serveur NFS et que le client est autorisé à y accéder. Pour NFSv4, le démon rpc.mountd est requis uniquement sur le serveur NFS pour configurer les exportations.

rpc.idmapd

Cela fournit des appels ascendants de client et de serveur NFSv4, qui mappent entre les noms NFSv4 sur le fil (qui sont des chaînes sous la forme d'utilisateur @ domaine) et les UID et GID locaux. Pour que idmapd fonctionne avec NFSv4, /etc/idmapd.conf doit être configuré. Ce service est requis pour une utilisation avec NFSv4, mais pas lorsque tous les hôtes partagent le même nom de domaine DNS.

rpc.rquotad

Ce processus fournit des informations sur les quotas d'utilisateurs pour les utilisateurs distants. Il est lancé automatiquement par le service nfs et ne nécessite aucune configuration utilisateur. Les résultats sont utilisés par la commande quota pour afficher les quotas d'utilisateurs pour les systèmes de fichiers distants et par la commande edquota pour définir des quotas sur les systèmes de fichiers distants.

verrouillé

Il s'agit d'un thread du noyau qui s'exécute à la fois sur les clients et sur les serveurs. Il implémente le protocole Network Lock Manager (NLM), qui permet aux clients NFSv3 de verrouiller des fichiers sur le serveur. Il est démarré automatiquement chaque fois que le serveur NFS est exécuté et chaque fois qu'un système de fichiers NFS est monté.

nfslock

Le démarrage de ce service démarre les processus RPC qui permettent aux clients NFS de verrouiller les fichiers sur le serveur.

Configuration du serveur NFS

Pour commencer à configurer un système en tant que serveur NFS, installez le package nfs-utils :

# yum install nfs-utils

Le fichier de configuration principal du serveur NFS est /etc/exports . Ce fichier stocke une liste des hiérarchies de répertoires exportées que les systèmes distants peuvent monter. Le format des entrées est :

export-point client1(options) [client2(options) ... ]

Le point d'exportation est le nom de chemin absolu de la hiérarchie de répertoires à exporter. Un ou plusieurs systèmes clients, chacun avec des options spécifiques, peuvent monter un point d'exportation. Il n'y a pas d'espace entre l'attribut client et la parenthèse ouvrante. Lorsqu'aucune option client n'est spécifiée, les paramètres par défaut suivants s'appliquent :

  • ro :lecture seule . Les hôtes clients ne peuvent pas modifier les données partagées sur le système de fichiers. Pour autoriser les hôtes clients à apporter des modifications au système de fichiers, spécifiez l'option rw (lecture/écriture).
  • synchroniser :Le serveur NFS répond aux requêtes uniquement après que les modifications apportées par les requêtes précédentes ont été écrites sur le disque. async spécifie que le serveur n'a pas à attendre.
  • wdélai :Le serveur NFS retarde la validation des demandes d'écriture lorsqu'il soupçonne qu'une autre demande d'écriture est imminente. Pour désactiver le délai, utilisez l'option no_wdelay. no_wdelay n'est disponible que si l'option de synchronisation par défaut est également spécifiée.
  • root_squash :Empêche les utilisateurs root connectés à distance d'avoir des privilèges root, « écrasant » efficacement le pouvoir de l'utilisateur root distant. Les requêtes semblent provenir de l'utilisateur nfsnobody, un utilisateur non privilégié sur le système local, ou comme spécifié par anonuid. Pour désactiver l'écrasement racine, spécifiez l'option no_root_squash.
  • no_all_squash :ne modifie pas le mappage des utilisateurs distants. Pour écraser tous les utilisateurs distants (y compris root), utilisez l'option all_squash.

Pour spécifier l'ID utilisateur (UID) et l'ID de groupe (GID) que le serveur NFS attribue aux utilisateurs distants, utilisez les options anonuid et anongid comme suit :

export-point client(anonuid=uid,anongid=gid)

Les options anonuid et anongid vous permettent de créer un compte d'utilisateur et de groupe spécial que les utilisateurs NFS distants peuvent partager. Par défaut, les listes de contrôle d'accès (ACL) sont prises en charge par NFS. Pour désactiver cette fonctionnalité, spécifiez l'option no_acl lors de l'exportation du système de fichiers.

Vous pouvez utiliser des caractères génériques, tels que (*) et (?) dans les noms de client. Vous pouvez également exporter des répertoires vers tous les hôtes d'un réseau IP. Pour ce faire, spécifiez une adresse IP et une paire de masque de réseau en tant qu'adresse/masque de réseau. L'une ou l'autre des formes suivantes est valide :

192.168.1.0/24
192.168.1.0/255.255.255.0

/etc/exports Exemples

Dans l'exemple suivant, un système client avec l'adresse IP 192.0.2.102 peut monter le répertoire /export/avec des autorisations de lecture/écriture. Toutes les écritures sur le disque sont asynchrones :

/export/directory 192.0.2.102(rw,async)

L'exemple suivant exporte le répertoire /exports/apps vers tous les clients, convertit tous les utilisateurs qui se connectent en utilisateur local anonyme nfsnobody et rend le répertoire en lecture seule :

/exports/apps *(all_squash, ro)

L'exemple suivant exporte le répertoire /spreadsheets/proj1 avec des autorisations en lecture seule vers tous les clients du sous-réseau 192.168.1.0 et des autorisations en lecture/écriture vers le système client nommé mgmtpc :

/spreadsheets/proj1 192.168.1.0/24(ro) mgmtpc(rw)

Démarrage du service NFS

Le service rpcbind doit être démarré avant de démarrer nfs. La commande suivante vérifie si le service rpcbind est activé et en cours d'exécution.

# systemctl status rpcbind

Si le service rpcbind est en cours d'exécution, le service nfs peut être démarré. Redémarrez nfs après avoir apporté des modifications à la configuration dans /etc/exports ou exécutez la commande exportfs -a.

# systemctl start nfs

Vérifiez si le service nfslock est activé et en cours d'exécution. Le démarrage de ce service démarre les processus RPC qui permettent aux clients NFS de verrouiller les fichiers sur le serveur.

# systemctl status nfslock

Utilisez la commande systemctl enable pour démarrer automatiquement les services au démarrage. Utilisez le nom complet de nfs-server lors de l'activation du service NFS.

# systemctl enable nfs-server

Spécifiez les options de configuration et les arguments en les plaçant dans /etc/sysconfig/nfs . Ce fichier contient plusieurs commentaires pour vous aider à spécifier les options sont des arguments. Utilisez la commande showmount –e pour afficher les systèmes de fichiers exportés :

# showmount –e

Utilitaire exportfs

Vous pouvez également configurer un serveur NFS à partir de la ligne de commande en utilisant exportfs. Cette commande permet à l'utilisateur root d'exporter ou de désexporter de manière sélective des répertoires sans modifier /etc/exports et sans redémarrer le service NFS. La syntaxe de la commande est :

# exportfs [options] [client:dir ...]

L'argument client est le nom du système client vers lequel dir est exporté. L'argument dir est le nom de chemin absolu du répertoire exporté. Voici une liste de certaines des options :

  • -r :Réexportez les entrées dans /etc/exports et synchronisez /var/lib/nfs/etab avec /etc/exports. Le fichier /var/lib/nfs/etab est la table d'exportation principale. rpc.mountd lit ce fichier lorsqu'un client envoie une commande de montage NFS.
  • -a :Exportez les entrées dans /etc/exports mais ne synchronisez pas /var/lib/nfs/etab. Exécutez exportfs –a après avoir apporté des modifications à la configuration.
  • -i  :Ignorez les entrées dans /etc/exports et n'utilisez que des arguments de ligne de commande.
  • -u :Désexporter un ou plusieurs répertoires.
  • -o :Spécifiez les options client comme spécifié dans /etc/exports.

Configuration du client NFS

Pour commencer à configurer un système en tant que client NFS, installez le package nfs-utils :

# yum install nfs-utils

Utilisez la commande mount pour monter les systèmes de fichiers exportés (partages NFS) côté client. La syntaxe de la commande est :

# mount -t nfs -o options host:/remote/export /local/directory

Voici les descriptions des arguments :

  • -t nfs :indique que le type de système de fichiers est nfs. Avec cette option, mount utilise NFSv4 si le serveur le prend en charge; sinon, il utilise NFSv3.
  • options -o  :Une liste d'options de montage séparées par des virgules
  • hôte :/remote/export :nom d'hôte exportant le système de fichiers, suivi de deux-points, suivi du nom de chemin absolu du partage NFS
  • /local/répertoire :Le point de montage sur le système client

Par exemple, pour monter le répertoire /home exporté depuis l'hôte abc avec des autorisations en lecture seule (option ro) sur le point de montage local /abc_home, et empêcher les utilisateurs distants d'obtenir des privilèges plus élevés en exécutant un programme setuid (option nosuid) :

# mount -t nfs -o ro,nosuid abc:/home /abc_home

Pour monter des partages NFS au démarrage, ajoutez des entrées à la table de montage du système de fichiers, /etc/fstab. Les entrées sont au format suivant :

# vi /etc/fstab
server:/exported-filesystem    local_mount_point   nfs   options   0 0

Par exemple, l'entrée /etc/fstab qui réplique la commande mount de la page précédente est :

# vi /etc/fstab
abc:/home    /abc_home    nfs    ro,nosuid    0 0

La commande df affiche les systèmes de fichiers montés, y compris les systèmes de fichiers montés NFS. Pour les montages NFS, la colonne "Système de fichiers" affiche les informations server:/exported-filesystem. Utilisez le -T possibilité d'inclure une colonne "Type" :

# df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
host03:/Dev    nfs4      976M  2.5M 907M  1%   /remote_dev
CentOS / RHEL 7 :Configurer un serveur NFS et un client NFS


Cent OS
  1. CentOS / RHEL :Guide du débutant pour vsftpd (installation et configuration)

  2. Guide du débutant pour le montage automatique des systèmes de fichiers dans CentOS / RHEL

  3. Comment désactiver la mise en cache du client NFS dans CentOS/RHEL

  4. CentOS / RHEL :Guide du débutant sur cron

  5. CentOS / RHEL :guide de dépannage d'iptables

Vérifier l'adresse IP CentOS/RHEL

Installer gnome sur RHEL 8 / CentOS 8

Installez Python 2 sur RHEL 8 / CentOS 8

Comment configurer le serveur NFS sur CentOS 8 / RHEL 8

CentOS / RHEL 7 :Guide du débutant sur les unités de service systemd

Guide complet de configuration d'iSCSI dans CentOS / RHEL 7