Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

list open files ON nfs server

1,268 views
Skip to first unread message

Bernd Kohler

unread,
Mar 23, 2012, 9:02:09 AM3/23/12
to
Hallo zusammen,

ich bin gerade auf der Suche nach einer Möglichkeit auf einem NFS-Server
die von den Client-PCs geöffneten Datein anzeigen zu lassen - quasi das
NFS Pendant zu smbstatus. Ist bspw. interessant um zu schauen, ob der
Server nach einem Kernel Update neu gestartet werden kann bzw. wem man
kurz Bescheid geben soll, geöffnete Dateien zu schließen.

Die folgenden Tools/Kommandos liefern leider nicht das von mir
gewünschte Ergebnis :(

Liste der NFS exports:
$ sudo showmount -e

Infos über NFS-mount
$ sudo df -F nfs

Liste der Clients
$ sudo showmount

Liste der Clients (+ mounted dir)
$ sudo showmount -a

Anzeigen diverser Statistiken
$ sudo nfsstat -????

Liste der geöffneten (NFS-) Dateien (allerdings auf Client)
$ sudo lsof -N


Ich möchte es mir ersparen, mittels showmount die NFS-Client PCs zu
ermitteln um auf diesen dann via ssh das Kommando sudo lsof -N auszuführen.

Ein Ansatz war, nach Datei locks zu fahnden aber flock zeigt diese bei
NFS nicht an.

Ein weiter war lsof nach nfs suchen zu lassen - hier wird aber nur
angezeit dass bzw. wie viele (lsof -c nfs | awk '{ print $2}' | uniq |
wc -l) Dateien geöffnet sind.

Auch lsof -i brachte mich nicht wirklich weiter, ebenso wie
sudo lsof | awk '$9 ~ /lock/ { print }'

Das Tool lslk list local locks" bringt zwei Hasenfüße mit:
- Revision 1.29 represents the end of life for lslk.
- don't report on locks held by NFS clients
Also für meine Zwecke nicht zu Gebrauchen

Hat hier einer von euch einen Tipp oder gar DIE Lösung?

Vielen Dank vorab und Grüße

Bernd "Marvin" Kohler

p.s.: Hier ein paar Links, auf die ich bei eminer bisherigen Recherche
gestoßen bin:

http://www.lunarforums.com/vps_hosting_at_lunarpages/useful_linux_scripts_lsof_ps_fuser_netstat-t41474.0.html

http://troysunix.blogspot.de/2011/03/finding-open-files-in-solaris.html

http://www.sunhelp.org/faq/nfs.html#nfs14

http://prefetch.net/blog/index.php/2009/07/01/listing-file-system-lock-files-on-linux-hosts/

http://gd.tuwien.ac.at/utils/admin-tools/lsof/FAQ

http://serverfault.com/questions/224111/determine-if-file-on-nfs-share-is-in-use


--
UMIC - RWTH Aachen
http://www.umic.rwth-aachen.de

Mies-van-der-Rohe Str. 15
52074 Aachen

Tel.: +49 241 80 20791
Fax: +49 241 80 22731
E-Mail: koh...@umic.rwth-aachen.de

Jens Hektor

unread,
Mar 23, 2012, 3:01:17 PM3/23/12
to
On 23.03.2012 14:02, Bernd Kohler wrote:
> ich bin gerade auf der Suche nach einer Möglichkeit auf einem NFS-Server
> die von den Client-PCs geöffneten Datein anzeigen zu lassen

Hm, sieht schlecht aus:

https://www.google.de/search?q=open+files+nfsd

liefert u.a.:

http://www.freesoft.org/CIE/Topics/115.htm



Bernd Kohler

unread,
Mar 26, 2012, 5:35:09 AM3/26/12
to
Moin

Jens Hektor <hek...@rz.rwth-aachen.de>:
> On 23.03.2012 14:02, Bernd Kohler wrote:
> > ich bin gerade auf der Suche nach einer Möglichkeit auf einem NFS-Server
> > die von den Client-PCs geöffneten Datein anzeigen zu lassen
>
> Hm, sieht schlecht aus:
>

Thx fuer die Info.

Dann werde ich mal überlegen auf Plan B umzuschwenken.

Da auch $HOME via NFS gemountet wird, werde ich fuer jeden Benutzer bei
Anmeldung eine persönliche NFS lock-Datei "~/.nfs_lock_file" erstellen
lassen und diese beim Beenden wieder loeschen.

Leider kann ich hier folgendes nicht testen/beruecksichtigen
- gibt es noch mind. eine passende login-shell
sudo ps -ef | grep -c "\-$(basename $SHELL)
- wenn $USER bspw. vor einer weiteren Sitzung die Logi-Shell wechselt - >
fuer jede moegliche login shell muss das Aufräumen der perönlichen
NFS lock_Dateien gesichert werden
- wenn Unterverzeichnisse aus dem NFS-share in ein eigens deklariertes
Unterverzeichnis von bspw. $HOME gemounted wird
- mit meinem kurzen Test-Skript anbei werden keine mehrfach Anmeldung
via ssh etc. berücksichtigt (man müsste in diesem Fall für jedes
Login $PID in die NFS lock-Datei schreiben und anschließend die Anzahl
der Einträge auswerten und abgleichen, ob noch eine Login-Shell für $PID
existiert)


Hier nun mein quick and dirty Skript, vielleicht hilft's ja jemandem,
der vor dem gleichen Problem steht ;)



#!/bin/bash

declare -r NFS_HOME_SHARE="/PATH_TO_HOME"
declare -i COUNT=0

for i in `ls -1 $NFS_HOME_SHARE`; do

if [ -f $NFS_HOME_SHARE/${i}/.personal_nfs_lock ], then
echo "Just found a personal NFS lock file for user $i"
let COUNT+=1
fi
done

if [ $COUNT -eq 0 ]; then
echo "You can restart the server"
else
echo "Please contact users mentioned above to close session"
fi



Bernd "Marvin" Kohler
0 new messages