Man page - rpc.sm-notify(8)

Packages contains this manual

Available languages:

en fr ro

Manual

SM-NOTIFY

NOM
SYNOPSIS
DESCRIPTION
OPÉRATIONS NSM DANS LE DÉTAIL
Notification de redémarrage
OPTIONS
FICHIER DE CONFIGURATION
SECURITÉ
NOTES
Prise en charge d’IPv6 et TI-RPC
FICHIERS
VOIR AUSSI
AUTEURS
TRADUCTION

NOM

sm-notify - Envoyer une notification de redémarrage aux pairs NFS

SYNOPSIS

/usr/sbin/sm-notify [ -dfn ] [ -m minutes ] [ -v nom ] [ -p port-notification ] [ -P chemin ]

DESCRIPTION

Les systĂšmes de fichiers ne peuvent garder de maniĂšre persistante l’état du systĂšme de fichiers. L’état des verrous est donc perdu lors du redĂ©marrage de l’hĂŽte.

Les systĂšmes de fichiers en rĂ©seau doivent dĂ©tecter si un Ă©tat verrouillĂ© est perdu Ă  cause du redĂ©marrage de l’hĂŽte. AprĂšs le redĂ©marrage d’un client NFS, le serveur NFS doit enlever tous les verrous de fichiers posĂ©s par des applications qui tournaient sur ce client. AprĂšs un redĂ©marrage du serveur, un client doit rappeler au serveur quels Ă©taient les fichiers verrouillĂ©s par ses applications.

Pour les versions 2 et 3 du protocole NFS, le protocole Network Status Monitor (ou NSM) est utilisé pour avertir les pairs des redémarrages. Sous Linux, deux composants tournant en espace utilisateur fournissent un service NSM :
sm-notify

Un programme d’aide qui avertit les pairs NFS aprĂšs un redĂ©marrage du systĂšme local

rpc.statd

Un dĂ©mon qui Ă©coute les avertissements de redĂ©marrage d’autres hĂŽtes et gĂšre la liste des hĂŽtes qui doivent ĂȘtre avertis quand le systĂšme local redĂ©marre.

Le gestionnaire de verrous NFS local indique au rpc.statd local quels sont les pairs qui doivent ĂȘtre surveillĂ©s. Quand le systĂšme local redĂ©marre, la commande sm-notify avertit le service NSM des hĂŽtes surveillĂ©s de son redĂ©marrage. Quand un hĂŽte distant redĂ©marre, ce pair notifie le rpc.statd local, qui en retour renvoie l’avertissement de redĂ©marrage au gestionnaire de verrous NFS local.

OPÉRATIONS NSM DANS LE DÉTAIL

La premiĂšre interaction visant Ă  verrouiller un fichier entre le client et le serveur NFS fait intervenir les deux gestionnaires de verrous NFS qui contactent leur service NSM local afin de stocker des informations sur le pair distant. Sous Linux, le gestionnaire de verrous local contacte rpc.statd .

rpc.statd enregistre les informations sur chaque pair NFS surveillĂ© dans un fichier persistant. Ce fichier dĂ©crit la maniĂšre de contacter un pair distant en cas de redĂ©marrage local, comment reconnaĂźtre quel pair surveillĂ© est en train d’émettre et comment notifier au gestionnaire de verrous local qu’un pair surveillĂ© signifie son redĂ©marrage.

Un client NFS envoie un nom d’hĂŽte, appelĂ© nom_d’appel (« caller_name ») du client, pour chaque demande de verrou de fichier. Un serveur NFS peut utiliser ce nom d’hĂŽte pour envoyer des appels GRANT asynchrones au client, ou pour avertir le client de son redĂ©marrage.

Le serveur NFS Linux peut fournir le nom_d’appel du client ou son adresse rĂ©seau Ă  rpc.statd . Pour les besoins du protocole NSM, ce nom (ou cette adresse) est connu comme nom_monit du pair observĂ©. En mĂȘme temps, le gestionnaire de verrous local indique Ă  rpc.statd son propre nom d’hĂŽte supposĂ©. Pour les besoins du protocole NSM, ce nom d’hĂŽte est appelĂ© mon_nom .

Il n’y a pas d’interactions Ă©quivalentes entre un serveur NFS et un client pour donner au client le nom_d’appel du serveur. C’est pourquoi les clients NFS ne connaissent pas le nom_monit qu’un serveur NFS peut utiliser dans une requĂȘte SM_NOTIFY. Le client NFS Linux enregistre le nom d’hĂŽte du serveur utilisĂ© dans une commande mount pour identifier les serveurs NFS qui redĂ©marrent.

Notification de redémarrage

Quand le systĂšme local redĂ©marre, la commande sm-notify lit sur un stockage persistant la liste des pairs surveillĂ©s et envoie une requĂȘte SM_NOTIFY au service NSM tournant sur chacun des pairs listĂ©s. Il utilise la chaĂźne nom_monit comme destination. Pour identifier l’hĂŽte ayant redĂ©marrĂ©, la commande sm-notify envoie la chaĂźne mon_nom enregistrĂ©e lors de la surveillance de ce poste distant. Le dĂ©mon rpc.statd distant utilise cette chaĂźne (ou l’adresse rĂ©seau de l’appelant) pour lier les requĂȘtes SM_NOTIFY entrantes Ă  un ou plusieurs pairs sur sa propre liste de surveillance.

Si rpc.statd ne trouve pas un pair dans sa propre liste d’hĂŽtes surveillĂ©s liĂ© Ă  une requĂȘte SM_NOTIFY, la notification n’est pas transmise au gestionnaire de verrous local. En plus, chaque pair possĂšde son propre numĂ©ro d’état NSM , un entier de 32 bits qui est changĂ© aprĂšs chaque redĂ©marrage par la commande sm-notify . rpc.statd utilise ce chiffre pour sĂ©parer les redĂ©marrages rĂ©els des notifications rĂ©envoyĂ©es.

Une partie de la rĂ©cupĂ©ration de verrous NFS est la redĂ©couverte des pairs qui doivent ĂȘtre Ă  nouveaux surveillĂ©s. La commande sm-notify nettoie la liste de surveillance stockĂ©e sur un stockage permanent aprĂšs chaque redĂ©marrage.

OPTIONS

-d

Garder sm-notify attachĂ© Ă  son terminal de contrĂŽle et visible au premier plan afin que la progression des notifications puisse ĂȘtre directement observĂ©e.

-f

Envoyer les notifications mĂȘme si sm-notify a dĂ©jĂ  Ă©tĂ© lancĂ© depuis le redĂ©marrage du systĂšme.

-m délai_nouvel_essai

Indiquer la durĂ©e (en minute) entre deux essais de notifications Ă  des hĂŽtes sourds. Si cette option n’est pas indiquĂ©e, sm-notify notifie toutes les 15 minutes. Donner la valeur 0 pousse sm-notify Ă  envoyer continuellement des notifications aux hĂŽtes sourds jusqu’à ce qu’il soit tuĂ© manuellement.

Les notifications sont réémises si l’envoi Ă©choue, si l’hĂŽte distant ne rĂ©pond pas, si le service NSM distant n’est pas enregistrĂ© ou si la rĂ©solution DNS Ă©choue, ce qui empĂȘche l’adressage de l’hĂŽte distant nom_monit .

Les hĂŽtes ne sont pas supprimĂ©s de la liste des notifications tant qu’aucune rĂ©ponse valable n’est reçue. Cependant, la procĂ©dure SM_NOTIFY renvoie un rĂ©sultat vide. sm-notify ne peut donc pas dire si la machine distante a reconnu l’émetteur et a commencĂ© la rĂ©cupĂ©ration idoine de verrous.

-n

EmpĂȘcher sm-notify de mettre Ă  jour le numĂ©ro d’état NSM du systĂšme local.

-p port

Indiquer le numĂ©ro de port source que sm-notify doit utiliser pour envoyer les notifications de redĂ©marrage. Si cette option n’est pas prĂ©cisĂ©e, un port Ă©phĂ©mĂšre est choisi au hasard.

Cette option peut ĂȘtre utilisĂ©e pour traverser un pare-feu entre le client et le serveur.

-P , --state-directory-path chemin

Donner le chemin du rĂ©pertoire parent oĂč les notifications d’état NSM sont enregistrĂ©es. Si cette option n’est pas prĂ©cisĂ©e, sm-notify utilisera /var/lib/nfs par dĂ©faut

AprĂšs le dĂ©marrage, sm-notify essaie de dĂ©finir les UID et GID effectifs Ă  ceux du groupe et d’utilisateur du sous-rĂ©pertoire sm de ce rĂ©pertoire. AprĂšs la modification des identifiants effectifs, sm-notify a seulement besoin d’accĂ©der aux fichiers sm et sm.bak dans le chemin du rĂ©pertoire d’états (state-directory-path).

-v ipaddr | nom_hĂŽte

Indiquer l’adresse rĂ©seau Ă  partir de laquelle seront envoyĂ©es les notifications de redĂ©marrage, ainsi que l’argument nom_monit utilisĂ© pour l’envoi de requĂȘtes SM_NOTIFY. Si cette option n’est pas prĂ©cisĂ©e, sm-notify utilise une adresse joker comme adresse de transport et la variable mon_nom enregistrĂ©e lors de la surveillance du poste distant comme argument nom_monit pour l’envoi des requĂȘtes SM_NOTIFY).

Le champ addrip peut ĂȘtre sous la forme d’une adresse IPv4 ou IPv6. Si le champ addrip est fourni, la commande sm-notify convertit cette adresse en un nom d’hĂŽte qui servira d’arguments Ă  nom_monit lors de l’envoi de requĂȘtes SM_NOTIFY.

Cette option peut ĂȘtre utile dans des rĂ©seaux partagĂ©s entre plusieurs lieux pour lesquels l’hĂŽte distant attend une notification provenant d’une adresse rĂ©seau prĂ©cise.

FICHIER DE CONFIGURATION

La plupart des options pouvant ĂȘtre indiquĂ©es sur la ligne de commande peuvent aussi ĂȘtre contrĂŽlĂ©es Ă  l’aide de valeurs dĂ©finies dans les sections [sm-notify] ou, dans un cas, [statd] du fichier de configuration /etc/nfs.conf .

Les valeurs reconnues dans la section [sm-notify] incluent retry-time , outgoing-port et outgoing-addr . Elles ont le mĂȘme effet, respectivement, que les options m , p et v

Une autre valeur reconnue dans la section [sm-notify] est lift-grace . Par dĂ©faut, sm-notify transformera la pĂ©riode de grĂące de lockd rapidement s’il n’a aucun hĂŽte Ă  informer. Certaines configurations de haute disponibilitĂ© exĂ©cuteront un sm-notify par adresse IP variable. Dans ces configurations, transformer la pĂ©riode de grĂące peut rapidement empĂȘcher des clients de rĂ©cupĂ©rer des verrous. RĂ©gler lift-grace Ă  n empĂȘche sm-notify de mettre rapidement fin Ă  la pĂ©riode de grĂące. lift-grace n’a pas d’option de ligne de commande correspondante.

La valeur reconnue dans la section [statd] est state-directory-path .

SECURITÉ

La commande sm-notify doit ĂȘtre lancĂ©e en superutilisateur afin d’avoir les privilĂšges suffisants pour accĂ©der Ă  la base d’informations d’états. Elle abandonne les droits de superutilisateur dĂšs qu’elle dĂ©marre afin de rĂ©duire les risques d’attaque par augmentation de droits.

Dans le cas normal, l’ID utilisateur effectif utilisĂ© est celui du propriĂ©taire du rĂ©pertoire d’états, cela afin de lui permettre de continuer Ă  accĂ©der aux fichiers de ce rĂ©pertoire aprĂšs qu’il a abandonnĂ© ses droits de superutilisateur. Pour contrĂŽler l’ID utilisateur que rpc.statd prend, il suffit d’utiliser chown (1) pour changer le propriĂ©taire du rĂ©pertoire d’état.

NOTES

La rĂ©cupĂ©ration des verrous aprĂšs un redĂ©marrage est indispensable au maintien de l’intĂ©gritĂ© des donnĂ©es et Ă  la prĂ©vention de blocages non nĂ©cessaires d’applications.

Afin d’aider rpc.statd Ă  faire correspondre les requĂȘtes SM_NOTIFY aux requĂȘtes NLM, un certain nombre de bonnes pratiques doivent ĂȘtre respectĂ©es. Par exemple :

Le nom du nƓud UTS de vos systùmes doit correspondre aux noms DNS que les pairs NFS utilisent pour les contacter.

Les noms de nƓuds UTS de vos systĂšmes doivent toujours ĂȘtre des noms de domaine pleinement qualifiĂ©s (« FQDN »).

Les translations DNS directes et inverses des noms de nƓuds UTS doivent ĂȘtre cohĂ©rentes.

Le nom d’hĂŽte utilisĂ© par le client pour monter le serveur doit correspondre au nom_monit utilisĂ© dans les requĂȘtes SM_NOTIFY qu’il envoie.

DĂ©monter un systĂšme de fichiers NFS n’empĂȘche pas le client NFS ou le serveur de se surveiller. Les deux peuvent continuer Ă  se surveiller pendant un moment au cas oĂč la reprise du trafic entre les deux entraĂźnerait de nouveaux montages et d’autres verrous de fichiers.

Sous Linux, et en conditions normales d’opĂ©ration, le dĂ©chargement du module lockd du noyau entraĂźne l’arrĂȘt de la surveillance des pairs NFS. Cela peut survenir, par exemple, sur un client NFS utilisant un systĂšme de montage automatique qui dĂ©monte tous les systĂšmes NFS suite Ă  une inactivitĂ©.

Prise en charge d’IPv6 et TI-RPC

L’utilisation d’IPv6 par NFS requiert TI-RPC. Si la prise en charge de TI-RPC a Ă©tĂ© incluse dans la commande sm-notify , le choix entre le mode IPv4 ou IPv6 est fait en fonction de l’adresse rĂ©seau retournĂ©e par DNS pour les clients distants. Ce systĂšme est normalement parfaitement compatible avec les machines qui ne gĂšrent ni TI-RPC, ni IPv6.

La commande sm-notify ne prend pour l’instant en charge que l’envoi des notifications uniquement par les protocoles de transport en datagramme.

FICHIERS

/var/lib/nfs/sm

Répertoire contenant la liste des moniteurs.

/var/lib/nfs/sm.bak

Répertoire contenant la liste des notifications.

/var/lib/nfs/state

NumĂ©ro d’état NSM de cet hĂŽte.

/proc/sys/fs/nfs/nsm_local_state

Copie du numĂ©ro d’état NSM dans le noyau.

VOIR AUSSI

rpc.statd (8), nfs (5), uname (2), hostname (7)

RFC 1094 – « NFS : Network File System Protocol Specification »
RFC 1813 – « NFS Version 3 Protocol Specification »
OpenGroup Protocols for Interworking : XNFS, version 3W - Chapitre 11

AUTEURS

Olaf Kirch <okir@suse.de>
Chuck Lever <chuck.lever@oracle.com>

TRADUCTION

La traduction française de cette page de manuel a été créée par Valéry Perrin <valery.perrin.debian@free.fr>, Sylvain Cherrier <sylvain.cherrier@free.fr>, Thomas Huriaux <thomas.huriaux@gmail.com>, Dominique Simen <dominiquesimen@hotmail.com>, Nicolas SauzÚde <nsauzede@free.fr>, Romain Doumenc <rd6137@gmail.com>, David Prévot <david@tilapin.org>, Denis Mugnier <myou72@orange.fr>, Cédric Boutillier <cedric.boutillier@gmail.com> et Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .