GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verhindern, dass eine unterbrochene NFS-Verbindung das Client-System einfriert?

Wir haben eine NFS 4-Freigabe, die ein Volume zwischen einer Reihe von Servern teilt (NFS-Server und Clients, alle Debian 8). Wir hatten in letzter Zeit einige Probleme, bei denen Netzwerkausfälle die Client-Systeme einfrieren konnten.

Unsere NFS-Optionen waren minimal, nur rw (und damit die Voreinstellung hard , fg usw.).

Ich experimentiere jetzt mit diesen Optionen, bekomme aber nicht das erwartete Verhalten:
rw,soft,bg,retrans=6,timeo=150

(Ich habe die Rücktransaktionen erhöht, um einen Teil des weichen Risikos auszugleichen)

Das Verfahren, das ich zum Testen befolge, lautet:

  • Maschine booten
  • cd nach /mnt/mountpoint
  • Überprüfen Sie, ob die NFS-Verbindung in Ordnung ist
  • cd /
  • Netzwerk beenden ifdown eth0
  • cd nach /mnt/mountpoint
  • ls

An diesem Punkt friert die Befehlszeile ein und ich kann sie nicht unterbrechen. Nach einiger Zeit erscheint die Meldung „nfs:server [servername] not responding, timed out“, die scheinbar einmal pro Minute (unendlich) wiederholt wird.

Was ich möchte/erwarte, dass der Vorgang fehlschlägt und die Kontrolle zurückgibt.

Könnte mir bitte jemand sagen, wo ich mit diesen Einstellungen falsch liege?

(PS:Ich habe auch versucht, mit autofs zu mounten, habe aber ein ähnliches Verhalten gesehen)

Vielen Dank

Akzeptierte Antwort:

intr sollte es Ihnen ermöglichen, die Kontrolle wieder zu erlangen, wenn Sie ^C drücken , aber normalerweise nicht sofort.

   intr           If an NFS file operation has a major timeout and it is hard mounted, then allow signals to interupt the
                  file  operation  and cause it to return EINTR to the calling program.  The default is to not allow file
                  operations to be interrupted.

Wie Sie sagen, sind Erwartungen hier das Problem. Netzwerkprobleme können vorübergehend sein, aber das Fehlschlagen einer Operation ist dauerhaft. Daher blockieren die meisten Operationen standardmäßig einfach, bis die Operation abgeschlossen ist.

Dies ist die Standardantwort, aber wenn ich mir eine aktuelle Manpage anschaue, sehe ich Folgendes:

                  The  intr / nointr mount option is deprecated after ker-
                  nel 2.6.25.  Only SIGKILL can interrupt  a  pending  NFS
                  operation on these kernels, and if specified, this mount
                  option is ignored  to  provide  backwards  compatibility
                  with older kernels.

Es scheint mir also kein NFS3/NFS4-Problem zu sein, sondern eine Entscheidung darüber, wie intr funktioniert. Sie sollten also KILL können der Prozess, aber das wird Ihnen möglicherweise nicht viel Nutzen bringen.

Ich konnte die Diskussion darüber, warum die Option entfernt wurde, nicht finden. Können Sie Ihren Prozess beenden -KILL?

Verwandte Themen:Enthält das Video Fehler, wenn die Verbindung beim Hochladen auf YouTube unterbrochen wird?
Linux
  1. Verwalten Sie Netzwerkverbindungen über die Linux-Befehlszeile mit nmcli

  2. Einrichten eines NFS-Servers und -Clients unter Scientific Linux 6.3

  3. Einrichten eines NFS-Servers und -Clients unter CentOS 6.3

  4. Wie erkenne ich die Spezifikation des RAM-Speicherchips auf einem Linux-Computer

  5. SSH-Probleme:Lesen vom Socket fehlgeschlagen:Verbindung durch Peer zurückgesetzt

Einführung in das Linux-Dateisystem

So richten Sie NFS-Server und -Client unter Debian 10 ein

Installieren Sie NFS-Server und -Client auf Ubuntu

So reparieren Sie ein defektes Ubuntu-Betriebssystem, ohne das System neu zu installieren

So mounten Sie NFS unter Debian 11

- mongodb/mongodb 1.2.0 erfordert ext-mongodb ^1.3.0 -> die angeforderte PHP-Erweiterung mongodb fehlt auf Ihrem System