SM-NOTIFY
Table des matières
Retour à l'index
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 à
Index
- 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
-
This document was created by
man2html,
using the manual pages.
Time: 05:06:41 GMT, September 19, 2025