Kann ich mit NFS geöffnete Dateien aufheben / löschen, wie ich es mit lokalen Dateisystemen tun kann?
Der Grund, den ich frage, ist, dass ich etwas entwickle, das auf mehreren Servern ausgeführt wird und möglicherweise als Back-End auf NFS zugreift. Es vereinfacht die Dinge etwas, wenn ich eine Verknüpfung zu einer geöffneten Datei aufheben kann.
Dies ist eine nette Funktion der Linux-Dateisysteme (Unix?), Mit der Sie die Verknüpfung einer geöffneten Datei aufheben können. Der Verzeichniseintrag wird einfach entfernt. Die Datei steht einem Prozess weiterhin zur Verfügung, der sie offen hält, solange sie geöffnet ist. Nach dem Schließen wird die Inode zerstört.
Gilt dieselbe Funktionalität für Dateien, die auf NFS-Mounts geöffnet wurden?
Antworten:
Die kurze Antwort lautet ja mit Vorbehalten.
Da NFSv3 zustandslos ist, führt der NFS-Client-Treiber dies mit etwas aus, das als "albernes Umbenennen" bezeichnet wird, wobei die gelöschte Datei in etwas wie .nfsXXXXXXXXXX umbenannt wird. Dies funktioniert im Allgemeinen, es gibt jedoch einige Einschränkungen im Vergleich zu einem lokalen Dateisystem. Wenn der Client beispielsweise abstürzt, werden diese .nfsXXXX-Dateien nicht gelöscht, und Sie müssen sie manuell bereinigen.
Ich denke, ab NFSv4.1 verfügt das Protokoll über die erforderlichen Funktionen, um das Löschen beim letzten Schließen ohne dumme Umbenennung zu implementieren, aber ich weiß nicht, ob Clients / Server dies noch implementieren.
quelle