Maison >Opération et maintenance >exploitation et maintenance Linux >Quelle est la méthode d'installation et de configuration de NFS sous Linux ?

Quelle est la méthode d'installation et de configuration de NFS sous Linux ?

PHPz
PHPzavant
2023-05-19 19:46:101935parcourir

1, Logiciel côté serveur : Installez nfs-utils et portmap (rpcbind)
nfs-utils : Fournit des packages pour les deux démons nfs, rpc.nfsd et rpc. mountd
portmap : nfs peut en fait être considéré comme un programme serveur rpc. Pour démarrer un programme serveur rpc, vous devez effectuer le travail de port correspondant, et ces tâches sont effectuées par portmap. En termes simples, portmap est utilisé pour le mappage des ports.
démons nfs qui doivent être démarrés

  • pc.nfsd : détection principalement complexe des autorisations de connexion et autres exigences nécessaires

    #🎜 🎜##🎜 🎜#
  • portmap : La correspondance de port entre le client et le serveur du programme rpc doit être
  • rpc.mountd : Responsable du fichier système de nfs, lorsque le client passe rpc Après la connexion de .nfsd au serveur, une série de gestion doit être effectuée sur les fichiers du serveur d'accès clinet
  • lockd : gérer le verrouillage requêtes via les packages rpc
  • #🎜 🎜#

    statd : fournir une fonction de récupération après incident pour le service de verrouillage nfs
  • rquotad : gérer le quota lorsque l'utilisateur monte sur un serveur distant via nfs# 🎜🎜#
  • Séquence de démarrage du démon : rpc.portmap, rpc.mountd, rpc.nfsd, rpc.statd, rpc.lockd (le nouveau la version démarrera automatiquement avec nfsd), rpc.rquotad

  • nf commande côté serveur :

• miam installez nfs-utils portmap#🎜🎜 #•chkconfig rpcbind sur #chkconfig : mettre à jour et interroger les services système à chaque niveau d'exécution •chkconfig nfs on•service rpcbind start

•service nfs start


2 , Fichier de configuration côté serveur/etc/exports : Spécifiez le répertoire et les autorisations à partager man exports


Copier le code Le code est le suivant :


# : Autoriser les ordinateurs avec des adresses IP dans la plage 192.168.0.* à accéder au répertoire /home/work avec des autorisations de lecture et d'écriture.

/home/work 192.168.0.* (rw,sync,root_squash)

/home 192.168.1.105 (rw,sync)

/public * (rw,sync)


Chaque ligne du fichier de configuration est divisée en deux sections : la première section est le répertoire partagé, utilisant un chemin absolu, et la deuxième section est l'adresse et les autorisations du client.
L'adresse peut utiliser l'intégralité du segment IP ou réseau, comme 10.0.0.8 ou 10.0.0.0/24, 10.0.0.0/255.255.255.0. Bien entendu, l'adresse peut également utiliser le nom d'hôte, la résolution DNS et. résolution locale /etc/hosts. Tout est OK, les caractères génériques sont pris en charge, par exemple : *.chengyongxu.com

Les autorisations sont :

rw : lecture-écriture, lecture-écriture ; le définir uniquement comme client en lecture-écriture ici. S'il ne peut pas être écrit normalement, vous devez définir correctement les autorisations du répertoire partagé. Reportez-vous à la question 7

ro : lecture seule ; le fichier est écrit sur le disque dur et la mémoire en même temps ;
async : Le fichier est temporairement stocké dans la mémoire au lieu d'être écrit directement dans la mémoire

no_root_squash : Si le client nfs utilise root lorsque se connectant au serveur, il dispose également des autorisations root pour le répertoire partagé par le serveur. Évidemment, l’activer n’est pas sûr.

root_squash : Si le client nfs utilise root lors de la connexion au serveur, alors il dispose d'autorisations d'utilisateur anonyme pour le répertoire partagé par le serveur. Habituellement, il utilisera l'identité de personne ou de nfsnobody ;
all_squash : Non. quel que soit l'utilisateur utilisé lorsque le client nfs se connecte au serveur, il dispose d'autorisations d'utilisateur anonyme pour le répertoire partagé par le serveur ;
anonuid : la valeur uid de l'utilisateur anonyme, généralement personne ou nfsnobody, vous pouvez la personnaliser ici Paramètre ;
anongid : valeur gid de l'utilisateur anonyme.



Mappage des utilisateurs du client nfs :
L'utilisateur de connexion client est root ou d'autres utilisateurs, puis selon la configuration du serveur nfs côté serveur, le client correspondant la connexion est mappée sur Les utilisateurs sur le serveur nfs sont des utilisateurs root ou spécifiés (définis via anonuid ou anongid), nfsnobody, etc. Enfin, les autorisations de l'utilisateur de mappage et du répertoire partagé affectent conjointement si la connexion client dispose d'autorisations de lecture et d'écriture.
Définir manuellement le mappage des utilisateurs client et serveur, paramètres : map_static=/etc/nfs.map
/etc/nfs.map le contenu du mappage du fichier est le suivant :

# local distant#🎜🎜 # gid 500 1000

uid 500 2003
Référence : Concernant la description de l'identité de l'utilisateur de la connexion client nfs, la description suivante n'a pas été vérifiée :
#🎜🎜 # • Lorsque le client se connecte, vérifiez les utilisateurs ordinaires, n°1 si l'identité compressée de l'utilisateur ordinaire est clairement définie, alors l'identité de l'utilisateur client est convertie en utilisateur désigné à ce moment, n°2 s'il y a un utilisateur avec le même nom sur le serveur nfs, alors l'identité du compte de connexion client est convertie en utilisateur avec le même nom sur le serveur nfs. Si le numéro 3 n'est pas explicitement spécifié et qu'il n'y a aucun utilisateur avec le même nom. , puis l'identité de l'utilisateur est compressée en nfsnobody
·Le client est connecté à Lors de la vérification de la racine, n°1 si no_root_squash est défini, alors l'identité de l'utilisateur root est compressée à la racine sur le serveur nfs, non .2 si all_squash, anonuid et anongid sont définis, alors l'identité de l'utilisateur root est compressée en l'utilisateur spécifié, n°3, si elle n'est pas explicitement spécifiée, l'utilisateur root sera compressé en nfsnobody à ce moment, n°4 , si no_root_squash et all_squash sont spécifiés en même temps, l'utilisateur sera compressé en nfsnobody, si anonuid et anongid sont définis, il sera compressé en l'utilisateur et le groupe spécifiés


3 , modification des paramètres du pare-feu

Par défaut, une fois la version du serveur centos6 installée, seulement 22 sont publiés dans le port de configuration iptables du pare-feu.

Spécifiez les ports liés au service nfs dans le fichier de configuration nfs /etc/sysconfig/nfs, et modifiez le pare-feu pour libérer les ports correspondants

Copier le code Le code est le suivant :


#port rpc.mountd devrait écouter
#mountd_port=892

#port rpc.statd devrait écouter. #tcp port rpc.lockd devrait écouter
#lockd_tcpport=32803

#udp port rpc.lockd devrait écouter
#lockd_udpport=32769


Modifier le fichier de configuration des tables ip /etc/sysconfig/iptables, ouvrez 111 ( portmap service port), 2049 (nfs service port)


4, /etc/hosts.allow modification de la configuration

/etc/hosts.allow, /etc/hosts .deny décrit quels hôtes sont autorisés à utiliser le service inet local .

Par défaut, il ne semble pas être nécessaire de le modifier, mais il est préférable de le configurer pour autoriser uniquement la machine client requise à se connecter, puis de refuser les connexions à partir d'autres machines

#Nom du processus de service : liste d'hôtes : opération de commande facultative lorsque la règle correspond

server_name :hosts-list[:command]Ajoutez des règles autorisant l'accès client dans /etc/hosts.allow
all:127.0.0.1 #Autoriser cette machine à accéder à tous les processus de service sur cette machine
all:192.168 .0.135 #Autoriser 192.168. ip访问smbd服务
sshd:192.168.100.0/255.255.255.0        #允许192.168.100 .网段的ip访问sshd processus sur le serveur
sshd:60.28.160.244                                                                                                                                                          ’ s s s s s s s d - sshd vers la boîte aux lettres de l'utilisateur
sshd:all #Ban all


5 , modifiez les autorisations du répertoire partagé en 760 et modifiez le répertoire de tous les groupes en nfsnobody

Référence : Question 7


6, montage client

 : exécutez ce qui suit. Cette commande peut monter le /home partagé par le serveur nfs (adresse IP 192.168.1.45) dans le répertoire local /mnt/nfs/home.

showmount -e nfs-serverip : Visualisez les ressources partagées par le serveur nfs mount -t nfs 192.168.1.45:/home /mnt/nfs/home

7, test de performances nfs :

•Selon la commande time dd if =/dev/zero of=/mnt/home bs=16k count=16384 pour définir des valeurs wsize et rsize raisonnables
•En fonction du nombre de clients nfs, définissez le nombre approprié de processus côté serveur nfs dans le / Fichier de configuration etc/sysconfig/nfs rpcnfsdcount, la valeur par défaut est 8

commande exportfs : Si nous modifions /etc/exports après le démarrage de nfs, devons-nous redémarrer nfs ? À ce stade, nous pouvons utiliser la commande exportfs pour que les modifications prennent effet immédiatement. Le format de la commande est le suivant :

exportfs [-aruv] -a : monter tout ou démonter le contenu dans /etc/exports -r : remonter le partager dans /etc/exports Répertoire sortant -u : répertoire umount -v : Lors de l'exportation, affiche des informations détaillées à l'écran. Commande showmount : affiche les informations de montage du serveur nfs. showmount -e [nfs-server] : affiche le répertoire exporté sur le serveur nfs spécifié. Lorsque l'adresse IP suivante n'est pas spécifiée, le répertoire partagé en externe lorsque la machine est utilisée comme serveur nfs est affiché. .

Commande rpcinfo -p : afficher les informations rpc Paramètre -p : utiliser le protocole rpc pour détecter rpcbind utilisé sur l'hôte et afficher tous les programmes rpc enregistrés.

Commande nfsstat : vérifiez l'état d'exécution de nfs, ce qui est très utile pour ajuster le fonctionnement de nfs

Résolution du problème pendant le processus :


1. Après avoir installé portmap via yum ou rpm, j'ai constaté que le service portmap. Une erreur de démarrage s'est produite lors de l'exécution de la commande service portmap start L'erreur suivante se produit : portmap : service non reconnu.
Dans centos6 (noyau Linux 2.6.32), portmap a été remplacé par rpcbind Si vous vérifiez attentivement les informations d'installation, vous constaterez que rpcbind est installé lorsque vous exécutez la commande yum install portmap. Une fois l'installation terminée, vous pouvez également afficher des informations détaillées via la commande : yum whatprovides portmap.

2. Lorsque le client est monté, l'erreur mount clntudp_create : rpc : port mapper failed - rpc : impossible de recevoir est signalée.

•1. Utilisez la commande rpcinfo -p pour vérifier le service portmap lorsqu'il démarre normalement et le port correspondant (par défaut 111) •2. Vérifiez les paramètres du pare-feu /etc/sysconfig/iptables, autorisez l'accès TCP, UDP au port 111. , puis le service iptables restart

•3, vérifiez /etc/hosts.deny, /etc/hosts.allow pour voir si la connexion client est bloquée


3 Lorsque le client exécute la commande showmount -e nfs-server, un. une erreur est signalée : mount clntudp_create : rpc : programme non enregistré.

Les services nfs et rpcbind ne sont pas démarrés. Utilisez chkconfig pour ajouter nfs et rpcbind aux services système et démarrez-les avec le service

Ou ajoutez des règles pour autoriser l'accès client dans /etc/hosts.allow all:192.168.0.135

4. Lorsque le client exécute la commande showmount -e nfs-server, une erreur est signalée : rpc mount export : rpc : impossible de recevoir ; errno = no route to host
Fichier de configuration : /etc/sysconfig/nfs
Trouvez le Port lié au service nfs Après avoir défini l'endroit et supprimé le commentaire, précisez dans les paramètres du pare-feu iptables pour autoriser le passage des flux udp et tcp du port correspondant.
#mountd_port=892
#statd_port=662
#lockd_tcpport=32803
#lockd_udpport=32769
iptables -a input -p tcp --dport 662 -m state --state new -j accept
iptables -a input -p udp --dport 661 -m state --state new -j accept

5, showmount -e nfs-server réussit et une erreur est signalée lorsque le montage formel est : montage : le montage sur le serveur nfs '192.168.1.5' a échoué : erreur système : pas de route vers l'hôte. En effet, le port par défaut 2049 du service nfs est bloqué par le pare-feu. Semblable à ce qui précède, modifiez iptables pour permettre au port 2049 de passer par

6, showmount -e nfs-server. réussit et une erreur se produit lorsque le montage officiel est signalé : montage : échec du montage sur le serveur nfs '192.168.1.5 : délai expiré (nouvelle tentative).
Lors de la modification de /etc/sysconfig/iptables, le port TCP du port concerné est autorisé à passer, mais l'UDP n'est pas autorisé. Pour d'autres raisons possibles, reportez-vous à : La commande de montage échoue avec une erreur d'échec du serveur nfs.
désactivez les demandes de recherche de nom du serveur nfs vers un serveur DNS
ou la version nfs utilisée par le client nfs est autre que la version 3.

7, exportations. fichier de configuration L'attribut d'autorisation du répertoire est défini sur rw (la valeur par défaut est root_squash), mais lors de l'exécution de la commande touch dans le répertoire de montage du client, un message d'erreur apparaît : touch : impossible de toucher `a' : autorisation refusée. Solution :

• Vérifiez les autorisations du répertoire partagé côté serveur ll -d /home
• Modifiez les autorisations du répertoire partagé côté serveur chown 760 /home (la racine du propriétaire du fichier a toutes les autorisations, tous les utilisateurs du groupe du fichier ont lu et autorisations d'écriture, et les autres utilisateurs n'ont aucune autorisation, puis définissez le groupe du répertoire sur nfsnobody)
•Modifiez le propriétaire du groupe d'autorisations du répertoire partagé côté serveur sur nfsnobody (cat /etc/passwd | grep nob)
•chgrp nfsnobody / accueil
•Créez avec succès un nouveau fichier sur le client !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer