Maison  >  Article  >  Tutoriel système  >  Une compréhension préliminaire du service NFS sous Linux

Une compréhension préliminaire du service NFS sous Linux

王林
王林avant
2024-01-23 17:18:051111parcourir

Linux NFS服务的初步了解

Présentation du RPC

1) Le consommateur du service (client) appelle le service via un appel local

 ;

2) Après avoir reçu l'appel, le stub client est chargé d'assembler les méthodes, les paramètres, etc. dans un corps de message pouvant être transmis sur le réseau

 ;

3) Le stub client trouve l'adresse du service et envoie le message au serveur

 ;

4) Le stub du serveur décode le message après l'avoir reçu

 ;

5) Le stub du serveur appelle les services locaux en fonction des résultats du décodage ;

6) Le service local est exécuté et les résultats sont renvoyés au stub du serveur

 ;

7) Le stub du serveur regroupe les résultats renvoyés dans des messages et les envoie au consommateur

 ;

8) Le stub client reçoit le message et le décode

 ;

9) Le consommateur du service obtient le résultat final.

Introduction à NFS NFS (Network File System) est l'un des systèmes de fichiers pris en charge par FreeBSD. Il permet aux ordinateurs du réseau de partager des ressources via le réseau TCP/IP. Dans les applications NFS, les applications client NFS locales peuvent lire et écrire de manière transparente des fichiers situés sur le serveur NFS distant, tout comme l'accès aux fichiers locaux.

Actuellement, NFS a principalement deux versions (NFSv2, NFSv3. En plus de la version 3 de NFSv2 et NFSv3, qui prend en charge davantage de nouvelles fonctionnalités, la principale différence devrait être que NFSv2 utilise le protocole UDP pour la transmission, donc la connexion de NFSv2 peut être utilisée. ne soit pas aussi fiable dans des environnements réseau complexes, et NFSv3 prend en charge les protocoles UDP et TCP.

Je viens de jeter un œil et j'ai découvert que Centos7 prend déjà en charge le protocole NFSv4. Je ne publierai pas NFSv4 ici. Jetons un coup d'œil à la v4 lorsque vous aurez le temps.

Lorsque le client souhaite monter un volume partagé NFS, il enverra une requête RPC au serveur, et le serveur NFS enverra un cookie aléatoire au client après l'authentification de l'utilisateur, afin que le client puisse utiliser ce cookie pour authentifier ces demandes. . Le volume partagé auquel vous accédez.

L'authentification NFS prend en charge l'allocation d'autorisations IP/hôte intégrée et est également limitée par les wrappers TCP.

Service NFS sur Redhat La prise en charge NFS est activée par défaut dans le noyau Redhat et le démarrage du serveur NFS est contrôlé via le démon NFS, qui est responsable de la liaison des sockets réseau et des appels RPC. Il nécessite également un service rpcbind (nommé portmap dans redhat5). si vous ne trouvez pas le service nfs dans le système, c'est parce que le package nfs-utils n'est pas installé. Ce package fournit des outils et des scripts de service, etc.

L'ensemble du service NFS comprend probablement les éléments suivants (copiés à partir de la documentation officielle de Red Hat, mais cela semble un peu ancien) :

  • nfs — Démarrez un processus RPC réactif pour répondre à NFS
  • nfslock — Il s'agit d'un service facultatif qui répond aux demandes des clients pour le verrouillage de fichiers.
  • rpcbind(portmap) — Il s'agit du processus démon du service rpc, qui est utilisé pour établir des connexions et répondre aux requêtes rpc.

Le service NFS fournit ces appels RPC (fonctions) :

  • rpc.mountd — Cette fonction est utilisée pour répondre à la demande de montage du client et vérifier si le système de fichiers demandé est autorisé à être utilisé. Ce processus est démarré par le service nfs.
  • rpc.nfsd — Le processus (fonction) principal du service nfs.
  • rpc.lockd — L'appel principal (fonction) du service nfslock ci-dessus est principalement utilisé pour répondre aux demandes de verrouillage de fichiers des clients.
  • rpc.statd — Cet appel (fonction) est principalement utilisé pour avertir le client lorsque le serveur nfs redémarre ou s'arrête anormalement, et est activé par le service nfslock.
  • rpc.rquotad — Le service nfs est utilisé pour prendre en charge les appels de quota (fonctions).
Configurer le service NFS Le fichier de configuration NFS est dans /etc/exports

La valeur par défaut est un fichier vide. Il vous suffit de le configurer au format suivant, un volume partagé par ligne
.

hôte : hôte limité (nom de domaine)

1. Hôte unique ou IP
2. Caractère générique * (correspond à n'importe quel caractère) ou ? (correspond à n'importe quel caractère), utilisé dans les noms de domaine ou les noms d'hôte
3.IP/MASK, par exemple 192.168.110.0/24

options : options de montage, utilisées pour limiter les autorisations de montage de l'hôte précédent.

Options courantes :

  • ro,rw : lecture seule ou lecture-écriture
  • sync : Synchronisation, lorsque la demande d'écriture du client est terminée, les données en mémoire sont immédiatement écrites sur le disque. C'est sûr.
  • async : Asynchrone, lorsque la demande d'écriture du client est terminée, le serveur n'écrit pas les données sur le disque immédiatement, mais les écrit sur le disque à un certain moment (inactif ou... qui sait), ce qui crée la possibilité de perte de données.
  • wdelay (write delay) : Write delay, il s'agit d'une option d'optimisation qui permet au serveur de retarder l'écriture des données sur le disque, de sorte que si la deuxième demande d'écriture du client arrive, les deux données seront écrites sur le disque à l'aide d'un système d'écriture. appel .
  • nowdelay : contrairement à ce qui précède, il ne peut être utilisé qu'en mode synchronisation.
  • root_squash : racine "squash", car lorsque le client écrit des fichiers sur le serveur, l'uid de l'utilisateur écrit par le client est directement mappé à l'utilisateur avec le même uid du serveur, de sorte que les fichiers stockés par l'utilisateur root sur le volume de partage NFS sont stockés sur le serveur. Le propriétaire final et le groupe sont toujours root, ce qui présente certains risques de sécurité. Vous pouvez donc utiliser cette option pour aplatir root en utilisateur nfsnobody.
  • all_squash : écrasez tous les utilisateurs, vous pouvez utiliser anonuid=, anongid= pour spécifier quel utilisateur écraser.

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