NFS: mount hängt (Input/output error)

Es gibt eine Menge Gründe dafür, dass ein NFS-Share nicht gemountet werden kann. Falls der mount hängt und nach längerer Wartezeit mit einem Input/output error abbricht und mount system call failed zurückmeldet, kann das Zusammenspiel mit der DNS-Konfiguration schuld sein.

Zunächst debuggen wir den mount-Aufruf, um genauere Hinweise auf die mögliche Fehlerursache zu erhalten:

mount -vvv example.com:/var/www/name_of_the_share /mnt/local-mount-point/
mount: fstab path: "/etc/fstab"
mount: mtab path:  "/etc/mtab"
mount: lock path:  "/etc/mtab~"
mount: temp path:  "/etc/mtab.tmp"
mount: UID:        0
mount: eUID:       0
mount: no type was given - I'll assume nfs because of the colon
mount: spec:  "example.com:/var/www/name_of_the_share"
mount: node:  "/mnt/local-mount-point/"
mount: types: "nfs"
mount: opts:  "(null)"
mount: external mount: argv[0] = "/sbin/mount.nfs"
mount: external mount: argv[1] = "example.com:/var/www/name_of_the_share"
mount: external mount: argv[2] = "/mnt/local-mount-point/"
mount: external mount: argv[3] = "-v"
mount: external mount: argv[4] = "-o"
mount: external mount: argv[5] = "rw"
mount.nfs: timeout set for Mon Aug 19 10:14:10 2013
mount.nfs: trying text-based options 'vers=4,addr=10.10.10.10,clientaddr=192.168.0.2'
mount.nfs: mount(2): Input/output error
mount.nfs: mount system call failed

Die letzte Zeile vor dem Input/output error gibt den entscheidenden Hinweis, was hier passiert ist: Dort erscheint hinter addr die IP-Adresse, die mount nutzen wollte, um sich zum NFS-Server zu verbinden. Das bedeutet, dass der konfigurierte DNS-Server für die Domain aus dem mount-Aufruf (im Beispiel example.com) die IP-Adresse 10.10.10.10 zurückgeliefert hat. Wenn der NFS-Server aber über mehrere Netzwerkschnittstellen mit jeweils eigenen IP-Adressen verfügt, kann die Antwort des DNS für den NFS-Zugriff falsch sein. Nehmen wir an, es gäbe Network Interfaces mit den IPs 10.10.10.10 und 192.168.0.100. Wenn die beiden IPs zu verschiedenen VLANs zugeordnet sind oder von der Firewall unterschiedlich behandelt werden, kann die 10er-IP eventuell den NFS-Server nicht erreichen.

Lösung

Die Lösung des Problems ist im Grunde einfach. Im mount-Aufruf kann natürlich anstatt der Domain direkt die gewünschte IP-Adresse des Zielservers angegeben werden:

mount -vvv 192.168.0.100:/var/www/name_of_the_share /mnt/local-mount-point/

Damit wird das DNS nicht befragt und definitiv die gewünschte Eingangsschnittstelle am Server genutzt.

Alternativ könnte man die lokale Hosts-Datei verändern oder die DNS-Zone anpassen. Beides ist aber der größere Eingriff und kann je nach Netzwerkkonfiguration weitreichende Folgen haben und neue Fehler erzeugen.

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *