Impedire ai montaggi NFS rotti di bloccare una directory?


17

Ho una configurazione un po 'interessante: un server con più server NFS remoti montati in una cartella, con quella cartella che viene poi riesportata su Samba. Pensalo come un proxy di condivisione, mantenendo tutte le cartelle condivise in un unico posto.

Il mio problema è che ogni volta che uno dei montaggi si interrompe (riavvio del server, riavvio del servizio, disco rigido esterno che il server stava esportando rimosso, ecc.) Qualsiasi tentativo di leggere i blocchi di montaggio per sempre. Questo significa anche che l'esecuzione lsin quella directory si blocca e anche gli utenti che si connettono tramite Samba si bloccano. Ciò ha anche causato alcune volte il blocco di uno dei miei lavori cron, che ha quasi causato l'arresto anomalo del server perché aveva centinaia di processi bloccati. Questo sta diventando molto fastidioso poiché di solito devo aprire un terminale che non è in attesa lsdi finire (non posso annullarlo), correre for i in *; do sudo umount -l -f $i; done;, sperare che funzioni, risolvere il problema, quindi rimontare tutto.

C'è un modo per montare una condivisione NFS con la clausola che se la connessione fallisce per qualsiasi motivo (preferibilmente con un periodo di tentativi) allora il disinstallazione del mount stesso o almeno non si blocca?


Puoi pubblicare /etc/fstab?
Karlson,

Risposte:


19

Normalmente quando si monta NFS è una buona idea avere flag impostati in questo modo:

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.

È inoltre possibile impostare:

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

che dovrebbe consentire il timeout del mount NFS e rendere inaccessibile la directory se il server NFS interrompe la connessione anziché attendere in tentativi.

Dai un'occhiata a questo link per ulteriori informazioni sulle opzioni di montaggio NFS


usare solo bg, intr, soft lascia ancora un blocco di 120 secondi in Fedora 20. Ma l'aggiunta di timeo = 5, retrans = 5, actimeo = 10, retry = 5 lo rende semplice e veloce. Grazie!
Greg Sheremeta,

4
"L'opzione di mount intr / nointr è obsoleta dopo il kernel 2.6.25. Solo SIGKILL può interrompere un'operazione NFS in sospeso su questi kernel e, se specificata, questa opzione di mount viene ignorata per garantire la retrocompatibilità con i kernel più vecchi." "Questa opzione è fornita per compatibilità con le versioni precedenti. È ignorata dopo il kernel 2.6.25."
David C. Bishop,

1
@ DavidC.Bishop da dove viene quella citazione? Puoi dare un link? Grazie.
becko,

2
@becko: la citazione di SIGKILL è dalla pagina man di nfs (basta cercare 'nointr'). Le versioni più recenti, come quella sul mio sistema, ora leggono semplicemente "Questa opzione è fornita per la compatibilità con le versioni precedenti. Viene ignorata dopo il kernel 2.6.25." linky .
David C. Bishop,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.