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
/nfs
il 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.
- 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
Quando il server è in esecuzione, tutto funziona correttamente.
Ma quando il server viene spento, prima che una condivisione venga smontata, gli strumenti (come
df
oll
) 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 /nfs
senza la necessità di montare le condivisioni reali (un'opzione autofs o forse usando uno pseudo FS per il /nfs
quale 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 /srv
abbiamo 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/fstab
e 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/fstab
client 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.nfs
basato 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.
hard
e all'iniziobg
suona per me intuitivo. Voglio che il mount non tenti di nuovo e torni immediatamente se si blocca?intr
sembra 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 ".