KDE und Dolphin frieren ein, wenn NFS-Server offline geht

Cliff1

Ensign
Registriert
Feb. 2010
Beiträge
142
Hallo,

ich habe seit einer gefühlten Ewigkeit dieses Problem und komme einfach nicht dahinter wie ich es lösen kann.

Folgendes Szenario:
Server: Ubuntu 14.04
Client: Manjaro Linux KDE

Auf dem Server gibt es einen NFS Share. Auf dem Client wird dieser per /etc/fstab gemounted.
Wenn ích den Server runter fahre oder in Standby schicke, friert auf dem Client (wenn der share gemountet ist) KDE und Dolphin ein und wird somit unbenutzbar. Boote ich den Server wieder, funktioniert alles wieder.

Das ist der Eintrag im fstab
Code:
192.168.1.42:/home/xbmc   /mnt/NFSServer   nfs   rw,nolock,noauto,user,soft   0   0
Ich dachte die Option "soft" verhindert genau das Problem welches ich habe. Leider scheint das nicht zu funktionieren.

Gibt es eine andere Möglichkeit als den Share auf dem Client manuell zu unmounten um das einfrieren zu verhindern?

Gruß Cliff
 
Hi,

läuft dein Client auch unter dem "xbmc"-Benutzer?

Wenn ja: Dann ist das richtig, dass User-Space ohne Dateisystem für den aktuellen Benutzer nicht funktioniert :)

Was ist das Ziel?
  • Wenn es nur um den bestimmten Daten geht, dann am besten ein Unterverzeichnis in deinem Benutzer-Verzeichnis anlegen und dort mounten.
  • Wenn es auf jedem Client das gleiche Home-Verzeichnis sein soll, dann kannst Du ohne Server auf dieser weise nicht arbeiten.
 
NFS Shares über die fstab zu mounten ist generell eher suboptimal. Der Automounter eignet sich viel besser für solche Aufgaben und legt das System bei Nicht-Erreichbarkeit eines Shares weit weniger lahm.
 
Cliff1 schrieb:
Code:
192.168.1.42:/home/xbmc   /mnt/NFSServer   nfs   rw,nolock,noauto,user,soft   0   0
Ich dachte die Option "soft" verhindert genau das Problem welches ich habe. Leider scheint das nicht zu funktionieren. Gibt es eine andere Möglichkeit als den Share auf dem Client manuell zu unmounten um das einfrieren zu verhindern
Gibt es ohne automounter nicht. Und auch mit automounter wirst Du das selbe Problem haben, wenn Du zu schnell nach dem Runterfahren zugreifst. Ohne Wegmounten wird es nicht gehen:
$> sudo umount -f /mnt/NFSServer
oder
$> sudo umount -l /mnt/NFSServer

danach:
$> rexec -lroot -prootpasswd 192.168.1.42 "/sbin/shutdown -h now"
wenn rexec auf server (für lokales Netz) zugelassen wurde (über xinetd).
 
Zuletzt bearbeitet:
@toxa:
Nein mein Client läuft unter einem anderen Nutzer. Und ob ich jetzt /home/xbmc oder /home/xbmc/folder auf /mnt/NFSServer mounte, sollte doch ziemlich egal sein, oder?
Was ich erreichen will?
Ich will einfach nur auf die Daten im Home Verzeichnis (keine config files oder ähnliches) des XBMC Nutzers auf dem Server zugreifen.

@lodurson:
Mit Automounter meinst du AutoFS?
Also das bzw. das?

@blöderidiot:
Genau das meinte ich mit manuellem unmount, an das ich jedes mal denken muss, bevor der Server in Standby versetzt wird.
 
Genau. Dann wird das Verzeichnis erst gemountet, wenn darauf zugegriffen wird und nach einiger Leerlaufzeit automatisch wieder umountet. Das hat den großen Vorteil, dass ein nicht erreichbares NFS Share den Boot-Vorgang nicht stört.
 
Cliff1 schrieb:
@blöderidiot:
Genau das meinte ich mit manuellem unmount, an das ich jedes mal denken muss, bevor der Server in Standby versetzt wird.
Dann einfach ein Skript schreiben (pseudocode):
#!/bin/bash
sudo umount -l /mnt/NFSServer
rexec -lroot -prootpasswd 192.168.1.42 "/sbin/shutdown -h now"
 
Wenn ich den Server jedes mal vom PC runter fahren würde, wäre das die Lösung.
Allerdings wird er auch zur XBMC Wiedergabe verwendet und per Fernbedienung in Standby geschickt.

@lodurson:
Die Option "noauto" im fstab sorgt ja schon dafür, dass der Share erst gemounted wird, sobald darauf zugegriffen wird und somit beim Boot keine Probleme verursacht.
Werde AutoFS mal testen.
Ergänzung ()

So, ich habe AutoFS jetzt mit dieser Anleitung eingerichtet.
Ich habe diese Zeile in die auto.master eingetragen:
Code:
/net -hosts --timeout=5

Wenn ich auf /net/Server zugreife wird er wunderbar gemounted, allerdings friert Dolphin wieder ein wenn ich den Server schlafen schicke. Dies ist auch der Fall wenn ich ca. 10 - 20 Sekunden vor dem sleep Befehl nicht mehr auf den NFS share zugreife.
 
Könnte auch ein Fehler im KDE sein, wenn dies den Fall, dass auf irgendwelche Files plötzlich nicht mehr zugegriffen werden kann, falsch bzw. nicht sinnvoll behandelt. Ich würde mal mit strace/fuser/whatever nachschauen, was genau tatsächlich passiert, also was die Programme versuchen und welche Antworten vom OS kommen.
 
Zuletzt bearbeitet:
So, nachdem ich mich jetzt fast ein Jahr mit diesem nervigen Bug rumgeschlagen habe, habe ich heute zufällig den Grund und einen Workaround gefunden.

Ich hatte bisher immer den mount im "/home/user/" Verzeichnis (bzw. einen Link zu "/net/NFSServer/" mit autofs, macht absolut keinen Unterschied).
Dolphin öffnet natürlich den home-Ordner beim starten und scannt dann anscheinend rekursiv die Ordner. Dabei friert Dolphin und gleich komplett KDE mit ein. Weil eben auch der nicht mehr vorhandene NFS Ordner gescannt wird.

Ich habe jetzt den Link im Home-Ordner entfernt und kann auch nachdem mein NFS-Server heruntergefahren wird (und ich nicht manuell geunmountet habe) meinen Rechner weiter verwenden.

Edit:
Falls jemand mit dem selben Problem auf diesen Thread trifft.
Da dieser Workaround nur bedingt geholfen hat (beispielsweise fror der "Speichern unter" Dialog immer noch ein), habe ich mich weiter umgesehen und dieses Script gefunden, welches den NFS Server je nach Verfügbarkeit mountet und unmountet.
Ich habe das Script so verändert, dass es sich nur noch ums unmounten kümmert.
Das mounten erledige ich manuell über die fstab mit noauto und users Optionen.

So sieht das Script aus:
Code:
#!/bin/bash

# The hostname or IP-address of the fileserver:
FILESERVER="192.168.1.42"

# Check every X seconds (60 is a good default):
INTERVAL=60

# Wo wird gemounted?
MOUNTPOINT=/mnt/NFS

# Logging. Set to true for debugging and testing; false when everything works.
LOG=false

# End of configuration


function log {
    if $LOG; then
        echo $1
    fi
}


log "Automatic NFS mount script started."

while true; do
    # Is the NFS daemon responding?
    ping -c 1 ${FILESERVER} > /dev/null
    if [ $? == 0 ]; then
        # Fileserver is up.
        log "Fileserver is up."
    else
        # Fileserver is down.
        log "Fileserver is down."
        if grep -qsE "^([^ ])+ ${MOUNTPOINT}" /proc/mounts; then
            # NFS mount is still mounted; attempt umount
            log "Cannot reach ${FILESERVER}, unmounting NFS share ${MOUNTPOINT}."
            umount -l ${MOUNTPOINT}
        fi
    fi
    sleep $INTERVAL
done
 
Zuletzt bearbeitet:
Zurück
Oben