Arrêter les montages NFS cassés de verrouiller un répertoire?

17

J'ai une configuration quelque peu intéressante: un serveur avec plusieurs serveurs NFS distants montés dans un dossier, ce dossier étant ensuite réexporté sur Samba. Considérez-le comme un proxy de partage, en conservant tous les dossiers partagés au même endroit.

Mon problème est que chaque fois que l'un des montages tombe en panne (serveur redémarré, service redémarré, disque dur externe que le serveur exportait supprimé, etc.) toute tentative de lire les blocs de montage pour toujours. Cela signifie également que l'exécution lsdans ce répertoire se bloque et que les utilisateurs se connectant via Samba se bloquent également. Cela a également provoqué le blocage de plusieurs de mes tâches cron, ce qui a presque bloqué le serveur car il y avait des centaines de processus bloqués. Cela devient très ennuyeux car je dois généralement faire apparaître un terminal qui n'attend lspas la fin (ne peut pas l'annuler), exécuter for i in *; do sudo umount -l -f $i; done;, espérer que cela fonctionne, résoudre le problème, puis tout remonter.

Existe-t-il un moyen de monter un partage NFS en stipulant que si la connexion échoue pour une raison quelconque (de préférence avec une période de nouvelle tentative), le montage se démonte lui-même ou du moins ne se bloque pas?

TheLQ
la source
Pouvez-vous poster /etc/fstab?
Karlson

Réponses:

19

Normalement, lors du montage de NFS, il est judicieux de définir des indicateurs similaires à ceci:

bg,intr,soft
   bg      If  the  first  NFS  mount  attempt times out, retry the mount in the 
           background.  After a mount operation is backgrounded, all subsequent mounts
           on the same NFS  server  will  be  backgrounded immediately, without first
           attempting the mount.  A missing mount point is treated as a timeout, to
           allow for nested NFS mounts.
   soft    If  an  NFS  file operation has a major timeout then report an I/O error
           to the calling program.  The default is to continue retrying NFS file
           operations indefinitely.
   intr    If  an  NFS  file  operation  has  a major timeout and it is hard mounted,
           then allow signals to interupt the file operation and cause it to return
           EINTR to the calling program.  The default is to not allow file operations
           to be interrupted.

Vous pouvez en outre définir:

timeo=5,retrans=5,actimeo=10,retry=5

ce qui devrait autoriser le montage NFS à expirer et rendre le répertoire inaccessible si le serveur NFS abandonne la connexion plutôt que d'attendre dans les nouvelles tentatives.

Jetez un œil à ce lien pour plus d'informations sur les options de montage NFS

Karlson
la source
en utilisant uniquement bg, intr, soft laisse toujours un coup de 120 secondes dans Fedora 20. Mais en ajoutant timeo = 5, retrans = 5, actimeo = 10, retry = 5, c'est agréable et rapide. Merci!
Greg Sheremeta
4
"L'option de montage intr / nointr est déconseillée après le noyau 2.6.25. Seul SIGKILL peut interrompre une opération NFS en attente sur ces noyaux, et si spécifié, cette option de montage est ignorée pour assurer une compatibilité descendante avec les noyaux plus anciens." "Cette option est fournie pour la compatibilité descendante. Elle est ignorée après le noyau 2.6.25."
David C. Bishop
1
@ DavidC.Bishop d'où vient cette citation? Pouvez-vous donner un lien? Merci.
Becko
2
@becko: La citation SIGKILL provient de la page de manuel nfs (recherchez simplement 'nointr'). Les versions plus récentes, comme celle de mon système, lisent maintenant simplement "Cette option est fournie pour la compatibilité descendante. Elle est ignorée après le noyau 2.6.25." linky .
David C. Bishop,