Puoi trovare i client NFS connessi eseguendo quanto segue sul server NFS:
netstat | grep :nfs
NFS funziona sia su UDP che su TCP, solo le connessioni TCP aperte verranno visualizzate in netstat
o ss
. Inoltre, in quanto filesystem distribuito, ha (storicamente) avuto la sua giusta dose di problemi (stato, cache, blocco, notifiche, sicurezza — alcuni dei quali hanno soluzioni tramite funzionalità RPC extra, ad esempio rpc.statd
).
Su un server Linux NFS (vedi man rpc.mountd
) le richieste di montaggio/smontaggio del client sono registrate in /var/lib/nfs/rmtab
, proprio come /etc/mtab
, quindi la risposta dovrebbe essere:
cat /var/lib/nfs/rmtab
Se è vuoto, allora hai un problema con rpc.mountd
(quindi dovresti controllare i servizi RPC in esecuzione), oppure tutti i client sono NFSv4 che non utilizzano questa funzionalità.
Nelle versioni che ho controllato rmtab
è presentato come:
10.1.2.0/24:/path/to/export1:0x000...flags
10.1.2.10:/path/to/export1:0x0000...flags
10.1.2.22:/path/to/export1:0x0000...flags
10.1.2.0/24:/path/to/export2:0x000...flags
10.1.2.22:/path/to/export2:0x0000...flags
10.1.2.99:/path/to/export2:0x0000...flags
cioè, viene elencato ogni punto di montaggio, seguito dai client che lo utilizzano.
Nota l'avvertenza nella pagina man:
Tuttavia, questo file è principalmente ornamentale. Uno, il client può continuare a utilizzare l'handle del file anche dopo aver chiamato la procedura UMOUNT di rpc.mountd. E due, se un client si riavvia senza avvisare rpc.mountd, una voce obsoleta rimarrà in rmtab.
L'/proc/fs/nfsd/client
approccio (@risposta di Vsevolod Gromov) nei kernel più recenti dovrebbe essere migliore sotto questo aspetto, ma poiché supporta solo i client NFSv4 che dovrebbero comportarsi meglio.
Dal kernel Linux 5.3 puoi usare una directory speciale chiamata /proc/fs/nfsd/clients
.
Puoi controllare la versione del kernel con uname -r
comando
Da netstat
non è sempre disponibile perché deve essere sostituito da ss
potresti anche usare
ss -a|grep nfs