NFS-Export und fsid
Ich beschäftige mich mal gerade wieder mit NFS. Wenn man mal einen ersten Blick auf NFS wirft, so denkt man, dass es da eigentlich gar nicht so viel zu erzählen gibt. Exporte legt man in /etc/exports
fest und das mounten des Dateisystems ist ziemlich ähnlich zu anderen Dateisystemen.
Dazu gibt es noch ein paar Optionen für den Export und den Mount und das war’s dann auch schon; funktioniert eigentlich immer ganz gut… eigentlich.
Nun gibt es von Zeit zu Zeit das Problem, dass auf dem NFS-Server etwas nicht funktioniert, Hardware ausgetauscht werden oder etwas derartiges und genau das führt dann zu den allseits beliebten stale NFS handles. Der NFS-Client hat noch ein Dateihandle offen, aber er bemerkt nicht, dass der NFS-Server wieder verfügbar ist und wartet bis zum Sanktnimmerleinstag.
Normalerweise wird die Dateisystem-ID (fsid) auf major- und minor-Nummer des Blockgerätes ermittelt. Ändert sich dieses Gerät, so ändert sich auch die fsid und der NFS-Client hat keine Ahnung, dass der Server wieder da ist. Daher kann man die fsid in der /etc/exports
setzen und behält die volle Kontrolle darüber.
Die manpage zu exports sagt dazu nur, dass die fsid eine beliebige 32bit Zahl sein muss, jedoch eineindeutig über alle Exporte des Servers. Zusätzlich habe ich noch gelesen, dass die fsid=0 eine spezielle Bedeutung für NFSv4 hat und die Wurzel des exportierten Dateisystems angibt.
Wirklich ausprobiert habe ich das bisher noch nicht, werde das aber mal in einer Virtualbox-Umgebung austesten.