orm@doc-tcpip.org | Erstellt: November 1999 - Letzte Modifikation: September 2003 |
Der Filehandle ist eine Nummer, die dem Client den Zugriff auf Verzeichnisse und Files des Servers ermöglicht. In der Nummer ist die Stelle im Filesystem des Servers vercoded, was der Server auswertet und so das gewünschte File findet.
Der Filehandle ist opaque, also für das NFS-Protokoll nicht transparent. Das bedeutet, daß der Filehandle vom Betriebssystem erzeugt wird und auch nur von diesem Betriebssystem verstanden werden muß. Das NFS-Protokoll reicht ihn nur als Token durch.
In NFSv2 ist der Filehandle auf 32 Bit festgelegt. In der Version 3 wurde der Filehandle variabel gestaltet und kann bis zu 64 Bit lang sein.
Der Server muß dafür sorgen, daß der Filehandle persistent ist - also auch einen Crash oder Reboot des Servers überlebt. Zusätzlich muß der Filehandle vom Pfadnamen unabhängig sein.
Der Filehandle sieht im IP-Trace so aus:
NFS: Fhandle: NFS: 000a0004 00000003 000a0000 04663665 NFS: 563b0000 000a0000 00023665 563b0000
Dabei ist die Platte (bzw. das logische Device) des Server-Systemes mit seiner Major- and Minor-Number sowie die Inode im entsprechenden Filesystem erkennbar:
NFS: 000a0004 00000003 000a0000 04663665 . ^^^^^^^^
Die Major-Number ist hier Hex 000a, also Dezimal 10. Die Minor-Number ist Hex 0004, also Dezimal 4. Damit ist das Device bekannt.
NFS: 000a0004 00000003 000a0000 04663665 . ^^^^ ^^^^
Die zweite Hälfte des 3 Wortes und die erste Hälfte des 4 Wortes ergeben zusammen eine Zahl in Hex: 00000466, das ist Dezimal 1126. Das ist die Inode.
Es ist jetzt recht einfach, die Datei auf dem Server
auszumachen. Mit dem Kommando
ls -e /dev/hd*
findet sich die entsprechende Platte bzw. logisches Volumen,
wenn virtuelle Laufwerke eingerichtet sind. In der Ausgabe
muß dazu die abgelesene Major- und Minor-Number gefunden
werden. In diesem Fall handelt es sich um /dev/hd4.
brw-rw----- 1 root system 10, 8 Mar 19 12:23 /dev/hd1 brw-rw----- 1 root system 10, 5 Mar 19 13:17 /dev/hd2 brw-rw----- 1 root system 10, 7 Mar 14 08:40 /dev/hd3 brw-rw----- 1 root system 10, 4 Mar 14 08:36 /dev/hd4
Mit dem mount-Kommando findet sich der Mountpoint
dieses Devices. Man kann dann im entsprechenden Filesystem
mit dem find-Kommando nach der Inode suchen:
find / -inum 1126
# mount node mounted mounted over vfs date options -------- --------------- --------------- ------ ------------ --------------- /dev/hd4 / jfs Sep 04 09:06 rw,log=/dev/hd8 ....... # find / -inum 1126 /download #
Der Filehandle ist also von einem Verzeichnis namens download im Root-Verzeichnis. In so einem Fall hätte ein schneller Check mit dem ls-Kommando natürlich auch gereicht:
# ls -i ........ 172 bin 1111 socket.7554 25 dev 496 tftpboot 1126 download 2 tmp 26 etc 139 u ....... #
Die Rückgabe (REPLY) des NFS_GETATTR hat die Inode-Nummer schon dekodiert im Nodeid-Feld.
[ Allgemein | UNIX | AIX | TCP-IP | TCP | ROUTING | DNS | NTP | NFS | FreeBSD | Linux | RPi | SMTP | Tracing | GPS | LW ]
Copyright 2001-2021 by Orm Hager - Es gilt die GPL