NFS-Unterstützung inotifizieren?
Wenn man sich im Internet umschaut, scheint es, dass inotify NFS unterstützt, jedoch nur in sehr begrenztem Umfang.
Ausstellung 1
Der Grund wird in diesem StackOverflow-Q & A mit dem Titel: Inotify with NFS erläutert .
Auszug aus der akzeptierten Antwort
Inotify benötigt Unterstützung vom Kernel, um zu funktionieren. Wenn eine Anwendung ein Verzeichnis verfolgt, fordert sie den Kernel auf, es zu informieren, wenn diese Änderungen auftreten. Wenn die Änderung auftritt, benachrichtigt der Kernel zusätzlich zum Schreiben dieser Änderungen auf die Festplatte auch den Überwachungsprozess.
Auf einem Remote-NFS-Computer ist die Änderung für den Kernel nicht sichtbar. es passiert ganz aus der Ferne. NFS ist älter als inotify, und es gibt keine Unterstützung auf Netzwerkebene für NFS oder ähnliches.
Exponat Nr. 2
Recherchieren Sie etwas mehr, wenn Sie in den inotify FAQ nachsehen
F: Kann ich sysfs (procfs, nfs ...) sehen?
Einfach gesagt: ja, aber mit einigen Einschränkungen. Diese Einschränkungen variieren zwischen den Kernelversionen und werden tendenziell kleiner. Bitte lesen Sie Informationen zu bestimmten Dateisystemen.
Wird es also unterstützt?
Ich denke, was Sie letztendlich erleben, ist, dass NFS keine Äpfel für Äpfel bereitstellt, die allen Funktionen der lokal gemounteten Dateisysteme entsprechen.
Zum Beispiel aus einem NFS-Linux-Thread :
- In CIFS sind Benachrichtigungsfunktionen integriert (Oplocks).
- NFS bietet "Leasingverträge" zur Benachrichtigung an
Der Punkt hier ist, dass alternative Dateisysteme wie CIFS und NFS sehr einfach sind, wenn überhaupt Unterstützung direkt zu inotifizieren.
NFS v4-Status
Auszug aus einem IBM Artikel zum NFS v4-Status
NFS Version 4 bietet dem Client ein Protokoll zum Einrichten oder Wiederherstellen des Status und ordnet den Besitz früherer Statuszustände nachfolgender Serveroperationen zu. Um das Problem mit dem fehlenden Client zu beheben, muss der NFS-Client der Version 4 den Status routinemäßig innerhalb der vom Server angegebenen Lease-Zeit aktualisieren. Nach Ablauf des Lease-Timeouts gibt der Server möglicherweise Ressourcen für den Client frei und stellt sie anderen Anwendungen zur Verfügung.
- Ein Client erhält das vom Server angegebene Lease-Timeout-Attribut, indem er eine getattr-Operation ausgibt. getattr ist keine zustandsbehaftete Operation, daher muss kein vorheriger Zustand hergestellt werden. Eine getattr-Operation kann einer setclientid- oder setclientid_confirm-Operation vorausgehen.
- Informationen zum Festlegen und Optimieren von Lease-Zeiträumen finden Sie im Leasetime-Site-Attribut des NFS-Servers. * *
inotify
Ereignissen in NFS hinzuweisen .