Was man gewöhnlich NFS nennt, setzt sich aus vier verschiedenen
Protokollen zusammen. Jedes hängt von Remote Procedure Calls (RPC) und
portmap (auch rpc.portmap genannt) ab. Ein portmapper wandelt RPC
Programmnummern in Portnummern um. Wenn ein RPC Server startet, teilt
er portmap mit, welchen Port er benutzen wird, und die verwaltete RPC
Programmnummer. Wenn ein Client eine RPC Abfrage an eine gegebene
Programmnummer senden möchte, kontaktiert er zuerst den Server
portmap, um die Portnummer zu bekommen, die ihm Zugang zu dem
gewünschten Programm gibt. Dann adressiert er die RPC Pakete an den
korrespondierenden Port.
Die vier Dienste, die es NFS erlauben zu arbeiten, sind:
Dieses Protokoll ist die Basis und erlaubt das Erzeugen von Dateien,
Suchen, Lesen oder Schreiben. Dieses Protokoll verwaltet auch die
Autentifizierung und die Dateistatistiken.
Der Daemon dieses Dienstes heisst nfsd.
|
Dieser ist verantwortlich für das Mounten exportierter Systeme,
um auf sie mit NFS zugreifen zu können. Der Server empfängt Anfragen
wie mount und umount und muss auf diese Weise Informationen über
exportierte Dateisysteme bewahren.
Der Daemon dieses Dienstes heisst mountd.
|
Es wird benutzt, um Netzwerknodes zu überwachen, um den Zustand
einer Maschine (Client oder Server) zu kennen. Es informiert,
z.B. über einen Neustart.
Der Daemon dieses Dienstes heisst statd.
|
Um Datenänderungen durch mehrere Clients zur gleichen Zeit zu
vermeiden, verwaltet dieses Protokoll ein Lock-System. Es
weiss, welche Dateien benutzt werden. Auf diese Weise ist es mit Hilfe
des Nsm Protokolls möglich zu wissen, wann ein Client erneut startet.
Nsm befreit alle Locks des Clients, bevor sie zurückgegeben werden.
Der Daemon dieses Dienstes heisst lockd.
|
Der Daemon knfsd, verfügbar ab Kernelversion 2.4, unterstützt
direkt die nfs- und nlm-Protokolle. Andererseits werden mountd und
nsm noch nicht unterstützt. Wenn der NFS Server installiert
und gestartet wird, kann man mit dem folgenden Befehl verifizieren,
dass alles läuft:
root@linux #
ps auxwww | egrep "nfs|mount|lock|stat"
root 220 0.0 0.0 1456 524 ? S Feb21 0:00 /sbin/rpc.statd root 3944 0.0 0.0 0 0 ? SW Feb21 3:33 [nfsd] root 3945 0.0 0.0 0 0 ? SW Feb21 0:00 [lockd] root 3947 0.0 0.0 0 0 ? SW Feb21 3:42 [nfsd] root 3948 0.0 0.0 0 0 ? SW Feb21 3:17 [nfsd] root 3949 0.0 0.0 0 0 ? SW Feb21 3:00 [nfsd] root 3950 0.0 0.0 0 0 ? SW Feb21 3:38 [nfsd] root 3951 0.0 0.0 0 0 ? SW Feb21 3:28 [nfsd] root 3952 0.0 0.0 0 0 ? SW Feb21 3:35 [nfsd] root 3953 0.0 0.0 0 0 ? SW Feb21 4:32 [nfsd] root 3956 0.0 0.1 1612 824 ? S Feb21 0:02 /usr/sbin/rpc.mountd root 21528 0.0 0.0 1356 500 pts/0 S 12:58 0:00 egrep nfs|mount|lock|stat
|
Momentan sind zwei NFS-Versionen verfügbar (Versionen 2 und 3 - sie
werden NFSv2 bzw. NFSv3 genannt, um sie zu unterscheiden). NFS4
befindet sich noch in der Entwicklungsphase, und ist im Kernel als
experimentell gekennzeichnet.
Bei NFS geht es um eine Datenstruktur, die file handle genannt wird.
Dies ist eine Bitserie, die auf eindeutige Weise erlaubt, jedes
Dateisystemobjekt (wie eine Datei, aber nicht nur Dateien) zu
identifizieren. Sie enthält z.B. den Datei-Inode, aber auch einen
Eintrag, der das Gerät, auf dem sich die Datei sich befindet, enthält.
Daher können wir NFS als ein Dateisystem betrachten, das in ein
Dateisystem eingebettet ist.
|
|