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 alcune altre Distro) e alcuni Mac (-Book) nel mezzo (ma non sono importanti per la domanda). Il server esegue Ubuntu 11.10 (Oneiric Ocelot) "Server Edition", il sistema da cui eseguo la configurazione e il test esegue l'11.10 "Desktop Edition". Abbiamo eseguito le nostre condivisioni con Samba (con cui abbiamo più familiarità) per un po' di tempo, ma poi migriamo a NFS (perché non abbiamo utenti Windows nella LAN e vogliamo provarlo) e finora funziona tutto bene .
Ora voglio configurare il montaggio automatico con autofs per semplificare le cose (finora 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 qualcosa dal server, lo accende e lo spegne in seguito, quindi funziona solo un paio d'ore al giorno). Ma dal momento che l'impostazione di autofs, i client riagganciano spesso quando il server non è in esecuzione.
-
Posso avviare tutti i client bene, 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
/nfs
mentre il server non è in esecuzione, si blocca per almeno due minuti (perché autofs non può connettersi al server ma continua a provare, suppongo).- C'è un modo per evitarlo? In modo che il montaggio venga ritardato fino a quando non si cambia la directory o fino a quando non si accede al contenuto di quella directory? Non quando si "guarda" un collegamento a una condivisione in
/nfs
? Credo di no, ma forse è possibile non provare ad accedervi per così tanto tempo? E dammi solo una directory vuota o un "non riesco a trovare / connettersi a quella directory" o qualcosa del genere.
- C'è un modo per evitarlo? In modo che il montaggio venga ritardato fino a quando non si cambia la directory o fino a quando non si accede al contenuto di quella directory? Non quando si "guarda" un collegamento a una condivisione in
-
Quando il server è in esecuzione, tutto funziona correttamente.
-
Ma quando il server viene spento, prima una condivisione è stata smontata, strumenti (come
df
oll
) si blocca (supponendo perché pensano che la condivisione sia ancora attiva ma il server non risponderà più).- C'è un modo per smontare automaticamente le condivisioni, quando la connessione viene persa?
-
Inoltre, i client non si spegneranno o non si riavvieranno quando il server è inattivo e le condivisioni sono ancora montate. Si bloccano (infinitamente come sembra) in "uccidere i processi rimanenti ” e sembra che non accada nulla.
Penso che tutto si riduca a precisi valori di timeout per il montaggio e lo smontaggio. E magari rimuovere tutte le condivisioni quando si perde la connessione al server.
Correlati:"$XAUTHORITY" appare da "nowhere" su su+tmux?
Quindi la mia domanda è:come gestirlo? E come bonus:c'è un buon modo per collegarsi all'interno di /nfs
senza la necessità di montare le vere condivisioni (un'opzione autofs o magari usando uno pseudo FS per /nfs
che viene sostituito quando si verifica la montatura o qualcosa del genere)?
La mia configurazione
L'impostazione NFS è piuttosto semplice ma finora ci è 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 /srv
abbiamo 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 applico tramite gli attributi e la proprietà del file anziché le impostazioni NFS) e il secondo è rw per tutti. Nota:non hanno voci aggiuntive in /etc/exports , montarli separatamente funziona però.
Sul lato client vengono impostati in /etc/fstab
e montato manualmente secondo necessità (morton
è il nome del server e si risolve correttamente).
/etc/fstab (Cliente)
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 la impostazione di autofs Ho rimosso le voci da /etc/fstab
sui client e impostare il resto in questo modo:
/etc/auto.master
/nfs /etc/auto.nfs
Per prima cosa ho legato l'eseguibile fornito /etc/auto.net
(puoi dare un'occhiata qui) ma non monterà automaticamente nulla per me. Quindi scrivo un /etc/auto.nfs
sulla base di alcuni HowTo che ho trovato online:
/etc/auto.nfs
shared -fstype=nfs4 morton:/shared
upload -fstype=nfs4 morton:/upload
E funziona un po'... O funzionerebbe se il server funzionasse 24 ore su 24, 7 giorni su 7. Quindi otteniamo i blocchi quando un client si avvia senza che il server sia in esecuzione o quando il server si interrompe mentre le condivisioni erano ancora connesse.
Risposta accettata:
Utilizzando qualsiasi sistema di montaggio, si desidera evitare situazioni in cui Nautilus elenca la directory contenente un montaggio che può essere montato o meno. Quindi, con autofs, non creare mount, ad esempio, in /nfs. Se lo fai, quando usi Nautilus per elencare il "File System", proverà a creare qualsiasi montaggio dovrebbe esistere in /nfs e, se quei tentativi di montaggio falliscono, ci vogliono pochi 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. Ottengo un lungo ritardo solo se provo a elencare il contenuto di /nfs/mnt, cosa che posso facilmente evitare.