GNU/Linux >> Tutoriels Linux >  >> Linux

Questions d'entretien sur le système de fichiers réseau Linux (NFS)

Qu'est-ce que NFS ?

Network File System (NFS) est l'un des plus anciens produits de partage de fichiers informatiques existant à ce jour. C'est toujours le plus populaire pour partager des répertoires de fichiers entre les systèmes UNIX et Linux. NFS permet aux serveurs de désigner des répertoires spécifiques à mettre à la disposition des hôtes désignés, puis permet aux systèmes clients de se connecter à ces répertoires en les montant localement.

NFS peut être sécurisé à l'aide de règles de pare-feu (iptables), de wrappers TCP (pour autoriser et refuser l'accès à l'hôte) et de SELinux (pour limiter la façon dont les protocoles de partage de fichiers peuvent partager les ressources NFS). Bien que NFS ait été intrinsèquement non sécurisé lors de sa création (les données sont partagées sans chiffrement et l'accès des utilisateurs est assez ouvert), les fonctionnalités de la version 4 de NFS ont contribué à améliorer la sécurité globale de NFS.

Qu'est-ce que le serveur NFS et les 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.

Comment configurer le serveur NFS et le client NFS dans CentOS/RHEL ?

Veuillez lire les messages ci-dessous pour configurer le serveur NFS et les machines clientes.

Guide du débutant sur NFS dans CentOS / RHEL
CentOS / RHEL 7 :Configuration d'un serveur NFS et d'un client NFS

Que sont les fichiers de configuration pour le serveur NFS ?

La configuration principale du serveur NFS est le fichier /etc/exports. Il s'agit du fichier que vous utilisez pour spécifier les répertoires que vous souhaitez partager avec les clients NFS. La syntaxe de ce fichier est :

Directory      hostname(options)

La valeur de Directory doit être remplacée par le nom du répertoire que vous souhaitez partager (par exemple, /usr/share/doc). La valeur hostname doit être un nom d'hôte client qui peut être résolu en une adresse IP. La valeur des options est utilisée pour spécifier comment la ressource doit être partagée.

Par exemple, l'entrée suivante dans le fichier /etc/exports partagerait le répertoire /usr/share/doc avec le client NFS client01 (avec les options de lecture-écriture) et le client NFS client02 (avec l'option de lecture seule ):

# vi /etc/exports
/usr/share/doc      client01(rw) client02(ro)

Notez qu'il y a un espace entre les noms/options client01 et client02, mais pas d'espace entre le nom d'hôte et son option correspondante.

Comprendre le fichier /etc/exports

Quelles sont les options de partage NFS les plus couramment utilisées dans /etc/exports

Il existe de nombreuses options de partage NFS, notamment :

  • rw :Partager en lecture-écriture. Gardez à l'esprit que les autorisations Linux normales s'appliquent toujours. (Notez qu'il s'agit d'une option par défaut.)
  • ro  :Partager en lecture seule.
  • synchroniser :les modifications de données de fichiers sont apportées immédiatement au disque, ce qui a un impact sur les performances, mais est moins susceptible d'entraîner une perte de données. Sur certaines distributions, c'est la valeur par défaut.
  • asynchrone :Le contraire de la synchronisation ; les modifications des données du fichier sont initialement apportées à la mémoire. Cela accélère les performances, mais est plus susceptible d'entraîner une perte de données. Sur certaines distributions, c'est la valeur par défaut.
  • root_squash :Mappez l'utilisateur racine et le compte de groupe du client NFS aux comptes anonymes, généralement le compte personne ou le compte nfsnobody. Reportez-vous à la section suivante, « Mappage de l'ID utilisateur », pour plus de détails. (Notez qu'il s'agit d'une option par défaut.)
  • no_root_squash :Mappez l'utilisateur racine et le compte de groupe du client NFS vers les comptes racine et de groupe locaux.
Options de montage NFS courantes sous Linux

Comment obtenir des informations sur les performances des partages NFS ?

La commande nfsiostat fonctionne comme la commande iostat sauf uniquement pour les points de montage NFS. Le nfsiostat obtient une entrée de /proc/self/mountstats et fournit des informations sur les performances d'entrée/sortie des partages NFS montés dans le système. La commande nfsiostat est fournie par nfs-utils paquet.

Vous trouverez ci-dessous un exemple de sortie de la commande nfsiostat.

Le tableau ci-dessous affiche une brève description de chaque colonne dans la sortie about.

Champ Description
op/s C'est le nombre d'opérations par seconde.
rpc bklog Il s'agit de la longueur de la file d'attente du backlog.
Ko/s Il s'agit du nombre de Ko écrits/lus par seconde.
Ko/opération Il s'agit du nombre de Ko écrits/lus pour chaque opération.
retransmettre Il s'agit du nombre de retransmissions.
RTT moyen (ms) Il s'agit de la durée entre le moment où le noyau du client envoie la requête RPC et le moment où il reçoit la réponse.
exe moyen (ms) Il s'agit de la durée entre le moment où le client NFS envoie la requête RPC à son noyau et celui où la requête RPC est terminée, cela inclut le temps RTT ci-dessus.

Vous trouverez ci-dessous une syntaxe pour utiliser la commande nfsiostat.

# nfsiostat --help
Usage: nfsiostat [interval] [count] [options] [mount point]

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit

  Statistics Options:
    File I/O is displayed unless one of the following is specified:

    -a, --attr          displays statistics related to the attribute cache
    -d, --dir           displays statistics related to directory operations
    -p, --page          displays statistics related to the page cache

  Display Options:
    Options affecting display format:

    -s, --sort          Sort NFS mount points by ops/second
    -l LIST, --list=LIST
                        only print stats for first LIST mount points

Ici,
intervalle – temps en secondes entre chaque rapport.
compter – nombre de rapports à générer à [intervalle] secondes d'intervalle. Si vous ne spécifiez pas le nombre ici, le rapport sera généré en continu à l'intervalle spécifié.
options – Les différentes options sont expliquées dans les exemples ci-dessous.
mount_point – vous pouvez spécifier un point de montage NFS spécifique pour lequel les statistiques doivent être affichées. Dans ce cas, seul le rapport pour le point de montage spécifié est généré.

Comment afficher les partages NFS actuellement partagés ?

La commande exportfs peut être utilisée sur le serveur NFS pour afficher ce qui est actuellement partagé :

# exportfs
/share          [world]

Comment partager une ressource NFS à l'aide de la ligne de commande ?

La commande exportfs peut également être utilisée pour partager temporairement une ressource, en supposant que les services NFS ont déjà été démarrés :

# exportfs -o ro 192.168.1.100:/usr/share/doc
# exportfs
/usr/share/doc  192.168.1.100
/share          [world]

Le -o option est utilisée pour spécifier les options de partage. L'argument inclut le nom des systèmes avec lesquels partager, ainsi que le répertoire à partager, séparés par un caractère deux-points (:).

Si vous apportez des modifications au fichier /etc/exports, tout partage nouvellement ajouté sera activé après un redémarrage. Si vous souhaitez activer ces modifications immédiatement, exécutez la commande suivante :

# exportfs –a

Comment monter le partage NFS sur les systèmes clients ?

Une fois le partage NFS exporté depuis le serveur NFS, il peut être monté sur les clients éligibles à l'aide de la syntaxe de commande ci-dessous :

# mount [NFS server IP or hostname]:/share/path /client/path

Par exemple, si /exports/downloads est partagé à partir du serveur NFS 10.10.10.100, nous pouvons le monter sur le serveur client en tant que répertoire /mnt/downloads à l'aide de la commande ci-dessous :

# mount 10.10.10.100:/exports/downloads /mnt/downloads

Comment démonter un système de fichiers NFS ?

Une fois qu'un système de fichiers NFS est monté, le démonter est simple. Vous utilisez la commande umount avec le point de montage local ou le nom du système de fichiers distant. Par exemple :

# umount /mnt/nfs_mnt

ou :

# umount 10.10.10.100:/nfs_share

Comment obtenir une liste des clients connectés au serveur NFS ?

Pour obtenir une liste des clients connectés au serveur NFS, utilisez la commande showmount à partir d'une invite de terminal. Pour afficher également les répertoires auxquels les clients sont connectés, utilisez :

# showmount -a

Quel est le port par défaut utilisé par le serveur NFS ?

Par défaut, le serveur NFS utilise le port 2049.

Quels ports doivent être ouverts dans le pare-feu pour que NFS fonctionne ?

Les ports TCP et UDP 2049 (nfs) et 111 (rpcbind) doivent être ouverts pour qu'un serveur NFS fonctionne correctement. Le serveur doit également ouvrir les ports TCP et UDP 20048 pour que la commande showmount puisse interroger les répertoires partagés NFS disponibles à partir de rpc.mountd sur le serveur.

Comment afficher les partages NFS à partir des systèmes clients ?

À partir d'un système Linux client, vous pouvez utiliser la commande showmount pour voir quels répertoires partagés sont disponibles à partir d'un ordinateur sélectionné, comme dans cet exemple :

$ showmount -e server.example.com
/export/myshare client.example.com
/mnt/public *

La sortie de showmount montre que le répertoire partagé nommé /export/myshare est disponible uniquement pour l'hôte client.example.com. Le répertoire partagé /mnt/public, cependant, est accessible à tous.

Comment afficher les points de montage NFS montés sur le client NFS ?

Utilisez la commande ci-dessous pour afficher les points de montage NFS montés sur un serveur client NFS :

# mount -t nfs4

Exemple de sortie :

# mount -t nfs4
10.10.10.100:/mnt on /mnt/fed type nfs4 (rw,relatime,vers=4.2,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.10.20.200,local_lock=none,addr=10.10.20.200)

La sortie de la commande mount -t nfs4 affiche uniquement les systèmes de fichiers montés à partir de serveurs de fichiers NFS.

Comment monter des systèmes de fichiers NFS au démarrage ?

Pour configurer un système de fichiers NFS pour qu'il se monte automatiquement sur un point de montage spécifié chaque fois que vous démarrez votre système Linux, vous devez ajouter une entrée pour ce système de fichiers NFS au fichier /etc/fstab.

Voici le format pour ajouter un système de fichiers NFS à votre système local :

host:directory    mountpoint   nfs   options   0   0

Le premier élément (hôte:répertoire) identifie l'ordinateur serveur NFS et le répertoire partagé. mountpoint est le point de montage local sur lequel le répertoire NFS est monté. Il est suivi du type de système de fichiers (nfs). Toutes les options liées au montage apparaissent ensuite dans une liste séparée par des virgules. (Les deux derniers zéros configurent le système pour ne pas vider le contenu du système de fichiers et pour ne pas exécuter fsck sur le système de fichiers.)

Voici des exemples d'entrées NFS dans /etc/fstab :

# vi /etc/fstab
nfs_server01:/data    /mnt/data      nfs    bg,rsize=8192,wsize=8192  0  0

Comment utiliser autofs pour monter des systèmes de fichiers NFS à la demande ?

La fonction autofs monte les systèmes de fichiers réseau à la demande lorsque quelqu'un essaie d'utiliser les systèmes de fichiers. Avec la fonction autofs configurée et activée, vous pouvez faire en sorte que tous les répertoires partagés NFS disponibles soient montés à la demande. Pour utiliser la fonction autofs, vous devez avoir installé le package autofs.

Avec autofs activé, si vous connaissez le nom d'hôte et le répertoire partagés par un autre ordinateur hôte, remplacez simplement (cd) par le répertoire de montage autofs (/net ou /var/autofs par défaut). Cela entraîne le montage automatique de la ressource partagée et sa mise à votre disposition. Les étapes suivantes expliquent comment activer la fonction autofs dans Fedora ou RHEL :

1. En tant qu'utilisateur root, ouvrez le fichier /etc/auto.master fichier et recherchez la ligne suivante :

# vi /etc/auto.master
/net -hosts

Ainsi, le répertoire /net agit comme point de montage pour les répertoires partagés NFS auxquels vous souhaitez accéder sur le réseau.

2. Pour démarrer le service autofs dans CentOS/RHEL 7 ou un système ultérieur, saisissez ce qui suit en tant qu'utilisateur root :

# systemctl start autofs.service

3. Sur CentOS/RHEL 7 ou un système ultérieur, configurez le service autofs pour qu'il redémarre à chaque démarrage de votre système :

# systemctl enable autofs

Comment configurer firewalld sur le serveur NFS ?

Pour que le serveur NFS fonctionne, activez les services nfs, mountd et rpc-bind dans la zone appropriée de l'application firewall-config ou en utilisant firewall-cmd :

# firewall-cmd --add-service=nfs --zone=internal --permanent
# firewall-cmd --add-service=mountd --zone=internal --permanent
# firewall-cmd --add-service=rpc-bind --zone=internal --permanent


Linux
  1. 40 questions d'entrevue Linux pour Freshers Part-2

  2. Top 25 des questions et réponses d'entrevue Linux

  3. Questions d'entretien Linux - Autorisations de base sur les fichiers et les répertoires

  4. Questions d'entrevue Linux - Impression Linux (CUPS)

  5. Ubuntu Linux - VHDX partagé

Automount partage NFS sous Linux à l'aide d'autofs

Commande Fsck sous Linux (réparer le système de fichiers)

Mes commandes de dépannage du réseau Linux

Administration du système de fichiers réseau (NFS) sous Linux

Qu'est-ce que le système de fichiers Linux ? Guide facile

Les 50 questions et réponses d'entrevue Linux les plus posées