automount nfs: impostazioni di timeout autofs per server inaffidabili - come evitare il blocco?


18

Sto eseguendo un piccolo server per la nostra condivisione flat. È principalmente un file server con alcuni servizi aggiuntivi. I client sono macchine Linux (principalmente Ubuntu, ma anche qualche altra distribuzione) e alcuni Mac (-Book) in mezzo (ma non sono importanti per la domanda). Il server esegue Ubuntu 11.10 (Oneiric Ocelot) 'Server Edition', il sistema dal quale eseguo la mia configurazione e il mio test esegue l'11.10 'Desktop Edition'. Dove stavamo eseguendo le nostre condivisioni con Samba (di cui abbiamo più familiarità) per un bel po 'di tempo, ma poi migriamo a NFS (perché non abbiamo utenti Windows nella LAN e vogliamo provarlo) e finora tutto funziona bene .

Ora voglio impostare l'auto-montaggio con autofs per rendere più semplici le cose (fino ad ora tutti montano le condivisioni manualmente quando necessario). Anche il montaggio automatico sembra funzionare. Il problema è che il nostro "server" non funziona 24 ore su 24, 7 giorni su 7 per risparmiare energia (se qualcuno ha bisogno di materiale dal server, lo accende e lo spegne in seguito, quindi funziona solo un paio d'ore al giorno). Ma dal momento che l'installazione di autofs i client riattaccano si chiudono spesso quando il server non è in esecuzione.

  • Posso avviare bene tutti i client, anche quando il server non è in esecuzione.

  • Ma quando voglio visualizzare una directory (in terminal o nautilus), che contiene collegamenti simbolici a una condivisione in cui /nfsil server non è in esecuzione, si blocca per almeno due minuti (perché gli autofs non possono connettersi al server ma continuano a provare, presumo).

    • C'è un modo per evitarlo? In modo che il montaggio venga ritardato fino a quando una modifica alla directory o fino all'accesso al contenuto di quella directory? Non quando "guardi" un link a una condivisione sotto /nfs? Penso di no, ma forse è possibile non provare ad accedervi per così tanto tempo? E dammi solo una directory vuota o un "impossibile trovare / connettersi a quella directory" o qualcosa del genere.
  • Quando il server è in esecuzione, tutto funziona correttamente.

  • Ma quando il server viene spento, prima che una condivisione venga smontata, gli strumenti (come dfo ll) si bloccano (supponendo perché pensano che la condivisione sia ancora attiva ma il server non risponderà più).

    • C'è un modo per smontare automaticamente le condivisioni quando si perde la connessione?
  • Inoltre, i client non si arrestano o non si riavviano quando il server è spento e hanno ancora condivisioni montate. Si bloccano (all'infinito come sembra) nell '" uccidere i processi rimanenti " e nulla sembra accadere.

Penso che tutto si riduca a valori di timeout accurati per il montaggio e lo smontaggio. E forse per rimuovere tutte le condivisioni quando si perde la connessione al server.

Quindi la mia domanda è: come gestirlo? E come bonus: c'è un buon modo per collegarsi all'interno /nfssenza la necessità di montare le condivisioni reali (un'opzione autofs o forse usando uno pseudo FS per il /nfsquale viene sostituito quando si verifica il montaggio o qualcosa del genere)?

La mia configurazione

L' impostazione NFS è piuttosto semplice ma finora ci ha servito bene (usando NFSv4 ):

/ Etc / default / nfs-common

NEED_STATD=
STATDOPTS=
NEED_IDMAPD=YES
NEED_GSSD=

/etc/idmapd.conf

[General]
Verbosity = 0
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = localdomain
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup

/ etc / exports

/srv/   192.168.0.0/24(rw,no_root_squash,no_subtree_check,crossmnt,fsid=0)

Sotto la radice di esportazione /srvabbiamo ottenuto due directory con bind:

/ etc / fstab (Server)

...
/shared/shared/      /srv/shared/      none    bind  0 0
/home/Upload/        /srv/upload/      none    bind  0 0

Il primo è per lo più di sola lettura (ma lo impongo tramite attributi di file e proprietà invece delle impostazioni NFS) e il secondo è rw per tutti. Nota: non hanno voci extra in / etc / exports , il loro montaggio separatamente funziona comunque.

Sul lato client ottengono l'installazione /etc/fstabe il montaggio manuale secondo necessità ( mortonè il nome del server e si risolve bene).

/ etc / fstab (client)

morton:/shared  /nfs/shared nfs4    noauto,users,noatime,soft,intr,rsize=8192,wsize=8192    0   0
morton:/upload  /nfs/upload nfs4    noauto,users,noatime,soft,intr,rsize=8192,wsize=8192    0   0

Per l' installazione di autofs ho rimosso le voci dai /etc/fstabclient e impostato il resto in questo modo:

/etc/auto.master

/nfs    /etc/auto.nfs

Per prima cosa ho legato l'eseguibile in dotazione /etc/auto.net(puoi dare un'occhiata qui ) ma non monterà automaticamente nulla per me. Quindi scrivo un /etc/auto.nfsbasato su alcuni HowTo che ho trovato online:

/etc/auto.nfs

shared  -fstype=nfs4  morton:/shared
upload  -fstype=nfs4  morton:/upload

E in qualche modo funziona ... O funzionerebbe se il server funzionasse 24 ore su 24, 7 giorni su 7. Quindi otteniamo i blocchi quando un client si avvia senza il server in esecuzione o quando il server si arresta mentre le condivisioni erano ancora connesse.

Risposte:


2

Utilizzando qualsiasi sistema di mount, si desidera evitare situazioni in cui Nautilus elenca la directory contenente un mount che può o non può essere montato. Quindi, con autofs, non creare montaggi, ad esempio, in / nfs. Se lo fai, quando usi Nautilus per elencare il 'File System' proverà a creare qualunque mount debba esistere in / nfs, e se quei tentativi di mount falliscono ci vogliono minuti per arrendersi.

Quindi quello che ho fatto è stato cambiare auto.master per creare i mount in / nfs / mnt.

Questo ha risolto il problema per me. Ricevo un lungo ritardo solo se provo ad elencare il contenuto di / nfs / mnt, che posso facilmente evitare.


20

Montare la condivisione NFS sui client utilizzando le opzioni di montaggio "bg, intr, hard".

La cosa più importante nel tuo caso è "bg" per lo sfondo - che dice al sistema di non bloccare quando il server non è disponibile.

"intr" per interrompibile, in modo da poter uccidere i supporti sospesi sul client con il comando kill.

"difficile" è l'opposto di "morbido". La differenza è che "hard" continuerà a provare all'infinito mentre "soft" eseguirà in modo esponenziale i suoi tentativi quando il server non è disponibile.


Grazie per la risposta. In questo momento non posso testare perché non sono a casa, ma dopo aver tentato di ottenere (di nuovo) la pagina man, ho ricevuto alcune altre domande: harde all'inizio bgsuona per me intuitivo. Voglio che il mount non tenti di nuovo e torni immediatamente se si blocca? intrsembra a posto ma sembra anche non funzionare più: " L'opzione di mount intr / nointr è deprecata 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 fornire compatibilità con le versioni precedenti con kernel più vecchi ".
Bruto

2
Hard riproverà all'infinito - bg NON si bloccherà se il montaggio non è possibile in questo momento. Il risultato sarà che sarà montato quando disponibile, ma tutte le altre operazioni continueranno. Adesso INTR sembra essere il default, il che è fantastico. All'inizio dovevi riavviare il client sospeso se il tuo server NFS è morto ...
Nils

L'ho appena provato, ma l'aggiunta hard,bga /etc/auto.mastersembra non cambiare nulla. Un time ls -l ~(la mia directory utente contiene un link simbolico a /nfs/upload) richiede ancora più di due minuti, quando il server non è in esecuzione.
Bruto

Hai riavviato le autofs? Solo le modifiche delle mappe secondarie si propagheranno senza il riavvio di autofs.
Nils,

Ho fatto:sudo reload autofs && sudo restart autofs
Bruto

7

Ho giocato ancora un po 'con alcune delle opzioni della pagina man. Tutti bg,hard, bg,soft, fg,harde fg,softmi danno ritorno volte di più di due minuetti.

L'impostazione retrans=1,retry=0(combinata con una delle precedenti), però, mi dà dei tempi di circa tre secondi. Abbastanza decente Anche se non sono sicuro del significato di ciascuna combinazione. Scaverà ulteriormente.

Inoltre mi sono imbattuto nelle opzioni di autofs MOUNT_WAITe UMOUNT_WAIT. Non sono stato in grado di ottenere risultati diversi con loro, ma continuerò a provare. Sembra un buon modo per usare l'opzione NFS "più sicura" (ovvero più tentativi, ecc.) Ma tempi di restituzione rapidi per autofs o no?


1
Sembra che ci siano anche altre opzioni, come rsize=32768,wsize=32768,noatimenotato qui: techrepublic.com/blog/opensource/…
Ehtesh Choudhury

-1

Per impostare un file system NFS da montare automaticamente ogni volta che si avvia il sistema Red Hat Linux, è necessario aggiungere una voce per quel file system NFS al file / etc / fstab. Il file / etc / fstab contiene informazioni su tutti i diversi tipi di file system montati (e disponibili per essere montati) per il vostro sistema Red Hat Linux. EX:: nfs corrisponde al nome host, all'indirizzo IP o al nome di dominio completo del server che esporta il file system. È il percorso della directory esportata. Specifica dove sul file system locale montare la directory esportata. Questo punto di montaggio deve esistere prima che / etc / fstab venga letto o il montaggio non riuscirà L'area specifica le opzioni di montaggio per il file system. Ad esempio, se l'area delle opzioni indica rw, suid, il file system esportato verrà montato in lettura-scrittura e verranno utilizzati l'utente e il groupid impostati dal server. Si noti che le parentesi non devono essere utilizzate qui

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.