.\"@(#)sm-notify.8" .\" .\" Copyright (C) 2004 Olaf Kirch .\" .\" Rewritten by Chuck Lever , 2009. .\" Copyright 2009 Oracle. All rights reserved. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH SM\-NOTIFY 8 1er\ novembre\ 2009 .SH NOM sm\-notify \- Envoyer une notification de redémarrage aux pairs NFS .SH SYNOPSIS \fB/usr/sbin/sm\-notify\fP [\fB\-dfn\fP] [\fB\-m \fP\fIminutes\fP] [\fB\-v \fP\fInom\fP] [\fB\-p \fP\fIport\-notification\fP] [\fB\-P \fP\fIchemin\fP] .SH DESCRIPTION Les systèmes de fichiers ne peuvent garder de manière persistante les verrous de fichiers. Le verrou est donc perdu lors du redémarrage de l'hôte. .PP 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. .PP Pour les versions\ 2 et 3 du protocole NFS, le protocole \fINetwork Status Monitor\fP (ou NSM) est utilisé pour avertir les pairs des redémarrages. Sous Linux, deux composants tournant en espace utilisateur fournissent un service NSM\ : .TP \fBsm\-notify\fP Un programme d'aide qui avertit les pairs NFS après un redémarrage du système local .TP \fBrpc.statd\fP 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. .PP Le gestionnaire de verrous NFS local indique au \fBrpc.statd\fP local quels sont les pairs qui doivent être surveillés. Quand le système local redémarre, la commande \fBsm\-notify\fP avertit le service NSM des hôtes surveillés de son redémarrage. Quand un hôte distant redémarre, ce pair notifie le \fBrpc.statd\fP local, qui en retour renvoie l'avertissement de redémarrage au gestionnaire de verrous NFS local. .SH "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 \fBrpc.statd\fP. .PP \fBrpc.statd\fP 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 .PP Un client NFS envoie un nom d'hôte, appelé \fInom_d'appel\fP («\ 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. .PP Le serveur NFS Linux peut fournir le \fInom_d'appel\fP du client ou son adresse réseau à \fBrpc.statd\fP. Pour les besoins du protocole NSM, ce nom (ou cette adresse) est appelée \fInom_monit\fP du pair observé. En même temps, le gestionnaire de verrous local indique à \fBrpc.statd\fP son propre nom d'hôte supposé. Pour les besoins du protocole NSM, ce nom d'hôte est appelé \fImon_nom\fP. .PP Il n'y a pas d'interactions équivalentes entre un serveur NFS et un client pour donner au client le \fInom_d'appel\fP du serveur. C'est pourquoi les clients NFS ne connaissent pas le \fInom_monit\fP 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. .SS "Notification de redémarrage" Quand le système local redémarre, la commande \fBsm\-notify\fP 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 \fInom_monit\fP comme destination. Pour identifier l'hôte ayant redémarré, la commande \fBsm\-notify\fP envoie la chaîne \fImon_nom\fP enregistrée lors de la surveillance de ce poste distant. Le démon \fBrpc.statd\fP distant utilise cette chaîne (ou l'adresse réseau de l'appelant) pour lier les requêtes SM_NOTIFY entrantes à un des pairs sur sa propre liste de surveillance. .PP Si \fBrpc.statd\fP 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 \fInuméro d'état NSM\fP, un entier de 32\ bits qui est changé après chaque redémarrage par la commande \fBsm\-notify\fP. \fBrpc.statd\fP utilise ce chiffre pour séparer les redémarrages réels des notifications ré\-envoyées. .PP Une partie de la récupération de verrous NFS est la redécouverte des pairs qui doivent être à nouveaux surveillés. La commande \fBsm\-notify\fP nettoie la liste de surveillance stockée sur un stockage permanent après chaque redémarrage. .SH OPTIONS .TP \fB\-d\fP Garder \fBsm\-notify\fP attaché à son terminal de contrôle, et tournant au premier plan afin que la progression des notifications puisse être directement observée. .TP \fB\-f\fP Envoyer les notifications même si \fBsm\-notify\fP a déjà été lancé depuis le redémarrage du système. .TP \fB\-m\fP\fItemps\-nouvelessai\fP Indiquer la longueur (en minute) du temps entre deux essais de notifications à des hôtes sourds. Si cette option n'est pas indiquée, \fBsm\-notify\fP notifie toutes les 15\ minutes. Donner la valeur 0 pousse \fBsm\-notify\fP à envoyer continuellement des notifications aux hôtes sourds jusqu'à ce qu'il soit tué manuellement. .IP 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 \fInom_monit\fP. .IP Les hôtes ne sont pas supprimés de la liste des notifications tant qu'aucune réponse valide n'est reçue. Cependant, la procédure SM_NOTIFY renvoie un résultat nul. \fBsm\-notify\fP ne peut donc pas dire si la machine distante a reconnu l'émetteur et a commencé la récupération de verrous idoines. .TP \fB\-n\fP Empêcher \fBsm\-notify\fP de mettre à jour le numéro d'état NSM du système local. .TP \fB\-p\fP\fI port\fP Indiquer le numéro de port source que \fBsm\-notify\fP 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. .IP Cette option peut être utilisée pour traverser un pare\-feu entre le client et le serveur. .TP \fB\-P\fP, \fB\-\-state\-directory\-path\fP \fIchemin\fP 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, \fBsm\-notify\fP utilisera \fI/var/lib/nfs\fP par défaut .IP Après avoir démarré, \fBsm\-notify\fP essaie de régler ses UID et GID à ceux du possesseur et du groupe de ce répertoire. .TP \fB\-v\fP\fI ipaddr \fP| \fInomhôte\fP Indiquer l'adresse réseau à partir de laquelle seront envoyées les notifications de redémarrage, ainsi que l'argument \fInom_monit\fP utilisé pour l'envoi de requêtes SM_NOTIFY. Si cette option n'est pas précisée, \fBsm\-notify\fP utilise une adresse joker comme adresse de transport et la variable \fImon_nom\fP enregistrée lors de la surveillance du poste distant (c'était l'argument \fInom_monit\fP utilisé pour l'envoi de la requête SM_NOTIFY). .IP Le champ \fIipaddr\fP peut être sous la forme d'une adresse IPv4 ou IPv6. Si le champ \fIipaddr\fP est fourni, la commande \fBsm\-notify\fP convertit cette adresse en un nom d'hôte qui servira d'arguments à \fInom_monit\fP lors de l'envoi de requêtes SM_NOTIFY. .IP 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. .SH SÉCURITÉ La commande \fBsm\-notify\fP doit être lancée en superutilisateur afin d'avoir les privilèges suffisants pour accéder à la base d'informations d'états. Elle quitte les droits de superutilisateur dès qu'elle démarre afin de réduire les risques d'attaque par augmentation de droits. .PP Dans le cas normal, l'ID utilisateur effectif utilisé est celui du possesseur du répertoire d'état, ceci afin de lui permettre de continuer à accéder aux fichiers de ce répertoire après qu'il a quitté ses droits de superutilisateur. Pour contrôler l'ID utilisateur que \fBrpc.statd\fP prend, il suffit d'utiliser \fBchown\fP(1) pour changer le possesseur du répertoire d'état. .SH 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 .PP Afin d'aider \fBrpc.statd\fP à faire correspondre les requêtes SM_NOTIFY aux requêtes NLM, un certain nombre de bonnes pratiques doivent être respectées. Par exemple\ : .IP Le nom du nœud UTS de votre système doit correspondre au nom DNS que les pairs NFS utilisent pour se contacter. .IP Les noms de nœuds UTS de vos systèmes doivent toujours être des noms de domaine pleinement qualifiés («\ FQDN\ »). .IP Les translations DNS directes et inverses des noms de nœuds UTS ne doivent pas être contradictoires. .IP Le nom d'hôte utilisé par le client pour monter le serveur doit correspondre au \fInom_monit\fP utilisé par le serveur pour envoyer ses requêtes. .PP 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. .PP Sous Linux, et en conditions normales d'opération, le déchargement du module \fBlockd\fP du noyau entraîne l'arrêt de la surveillance des pairs NFS. Ceci peut survenir, par exemple, sur un client NFS utilisant un système de montage automatique, qui démonte les systèmes NFS suite à une inactivité. .SS "Prise en charge d'IPv6 et TI\-RPC" L'utilisation de l'IPv6 par NFS requiert TI\-RPC. Si la prise en charge TI\-RPC a été incluse dans la commande \fBsm\-notify\fP, le choix entre le mode IPv4 ou IPv6 sera 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. .PP La commande \fBsm\-notify\fP ne prend en charge pour l'instant que l'envoi des notifications uniquement par les protocoles de transport en datagramme. .SH FICHIERS .TP 2.5i \fI/var/lib/nfs/sm/*\fP Répertoire contenant la liste des moniteurs. .TP 2.5i \fI/var/lib/nfs/sm.bak\fP Répertoire contenant la liste des notifications. .TP 2.5i \fI/var/lib/nfs/state\fP Numéro d'état NSM de cet hôte. .TP 2.5i \fI/proc/sys/fs/nfs/nsm_local_state\fP Copie du numéro d'état NSM dans le noyau. .SH "VOIR AUSSI" \fBrpc.statd\fP(8), \fBnfs\fP(5), \fBuname\fP(2), \fBnomhôte\fP(7) .PP RFC 1094 \- «\ NFS\ : Network File System Protocol Specification\ » .br RRFC 1813 \- «\ NFS Version 3 Protocol Specification\ » .br OpenGroup Protocols for Interworking: XNFS, Version 3W \- Chapitre\ 11 .SH AUTEURS Olaf Kirch .br Chuck Lever