NFS4 share with mount point inside issue

Ciao a tutti,

Ho uno strano problema con NFS4. In pratica su un server CentOS6 ho dovuto
aggiungere un nuovo disco, e fin qua tutto bene.
Ora dovrei montarlo in /exports/dati in modo da poterlo condividere tramite
NFS4 e qui sono iniziati i problemi.
Facendo il mount del nuovo disco in /exports/dati, il server stesso vede i
dati presenti, come ci si aspeta, mentre tramite NFS4, vedo la share vuota
come se non fosse montata.
In effetti, facendo un po' di prove ho scoperto che quello che vedo via
NFS4 è il contenuto non montato della cartella (cioè il contenuto fisico su
disco)
Ho giocato anche un po' con i parametri "nohide" e "crossmnt", ma il
problema è sempre lo stesso: sul server vedo i dati correttamente, mentre
su share no.

Qualcuno è in grado di aiutarmi o indicarmi qualche altra direzione da
prendere?

Grazie
Sergio

attachment.htm (2.72 KB)

Potrebbe essere un problema di cache che non si aggiorna dopo il mount?

diego

attachment.htm (3.67 KB)

Ho provato a creare una cartella interna alla /exports, ma sullo stesso
filesystem con alcuni file e in questo caso non ho avuto problemi.
In qualche caso (ma non sempre) ho anche fatto ripartire sul server l'nfs,
ma non è cambiato nulla (cioè continuava a non funzionare e continuavo a
vedere la cartella vuota) e dopo ogni prova comunque eseguivo exportfs -r
e exportfs -a

Sergio

attachment.htm (7.2 KB)

Facendo il mount del nuovo disco in /exports/dati, il server stesso
vede i dati presenti, come ci si aspeta, mentre tramite NFS4, vedo la
share vuota come se non fosse montata.

[...]

Ho giocato anche un po' con i parametri "nohide" e "crossmnt", ma il
problema è sempre lo stesso: sul server vedo i dati correttamente,
mentre su share no.

Cosa succede se metti anche /exports/dati in /etc/exports?

/exports/ *(rw,no_root_squash,no_subtree_check,fsid=root,crossmnt)
/exports/dati/ *(rw,no_root_squash,no_subtree_check)

Th

Premesso che ne so troppo poco per aiutarti e che assumo che quello che hai descritto sia il livello più alto che esposti con NFS, temo che tu sia in un cornercase e ti consiglieri di procedere così per debug:

Crea sul server una directory dentro a dati (sul disco "principale") in modo da avere:
/exports/dati/test

Monta il tuo disco nuovo su questa cartella.
Configura il file exports per entrambe le location /exports/dati e /exports/dati/test

A questo punto puoi andare per tentativi finché non trovi la giusta combinazione di crossmnt (che dovrebbe valere per la directory superiore) e nohide (che dovrebbe valere per la directory "interna").

HTH,
Daniele

Se mi giri (privatamente, che potrebbe contenere informazioni sul server
che *non* vuoi dare in gire) un sosreport (yum install sos; sosreport) ci
do un'occhiata, altrimenti cosi' e' difficile (puo' essere legato a
tante cose. Mi viene in mente che se non hai UUID sui filesytem devi
usare l'opzione fsid sul server).

Che opzioni di mount usa il client?

saluti,
Michele

chmod 777?

2015-06-19 20:17 GMT+02:00 Michele Baldessari <michele(a)acksyn.org>:

attachment.htm (1.81 KB)

In questo momento nel file exports ho:
/exports 192.168.0.0/24(rw,insecure,no_subtree_check,nohide,fsid=0)
/exports/dati
192.168.0.107(rw,insecure,no_root_squash,insecure,no_subtree_check,crossmnt)

ho provato a modificarlo in
/exports
192.168.0.0/24(rw,insecure,no_subtree_check,nohide,fsid=0,no_root_squash,crossmnt)
/exports/dati 192.168.0.107(rw,insecure,no_root_squash,no_subtree_check)

in pratica ho aggiunto no_root_squash e crossmnt alla prima e tolto
insecure e crossmnt alla seconda, ma purtroppo ancora nulla.
Nemmeno mettendo nohide al posto di crossmnt nella prima riga ottengo un
risultato.

Sergio

rispetto al tuo esempio

Ciao Daniele e grazie mille del consiglio, che pare abbia risolto il
problema.

In pratica il "segreto" sembra essere montare il disco in una
sotto-sotto-cartella della /exports e poi montare la cartella padre.

Il file exports passa quindi da
/exports 192.168.0.0/24(rw,insecure,no_subtree_check,nohide,fsid=0)
/exports/dati
192.168.0.107(rw,insecure,no_root_squash,insecure,no_subtree_check,crossmnt)
a
/exports 192.168.0.0/24(rw,insecure,no_subtree_check,nohide,fsid=0)
/exports/dati/test
192.168.0.107(rw,insecure,no_root_squash,insecure,no_subtree_check)
in cui per la verità funziona anche senza crossmnt e/o nohide.

sul server monto la cartella del disco
mount -t ext4 /dev/sda1 /exports/dati/test/

e sul client mount la cartella padre (senza test):
mount -t nfs 192.168.0.98:/dati /mnt
ls -al /mnt/test/
ed ho il contenuto corretto

Grazie
Sergio

Ciao Michele,

pare che montare la cartella in una sotto-directory risolva il problema
(vedi mail a Daniele).
Ho dato un occhiata al tool sosreport e devo dire che è molto interessante.

grazie comunque
Sergio