Im CIFS / SMB-Protokoll gibt es drei Arten von Dateihandles: dauerhaft, belastbar und dauerhaft. Was ist der Unterschied zwischen ihnen?
quelle
Im CIFS / SMB-Protokoll gibt es drei Arten von Dateihandles: dauerhaft, belastbar und dauerhaft. Was ist der Unterschied zwischen ihnen?
Meine Hauptreferenzen für Folgendes sind:
https://wiki.samba.org/index.php/SMB3_kernel_status
und obwohl dies ursprünglich für Samba3 war, hat es mehr Details:
https://wiki.samba.org/index.php/Samba3/SMB2
Mit dauerhaften Dateihandles kann eine Verbindung zu einem SMB-Server einen kurzen Netzwerkausfall überstehen. Dauerhafte Handles werden nicht unbedingt bereinigt, wenn der Öffnungsvorgang beendet wird. Wenn ein Client versucht, die Verbindung wiederherzustellen, stellt er die Verbindung zur Datei wieder her, wenn der Oplock (/ Lease) noch vorhanden ist.
Wenn jedoch ein anderer Client versucht, die Datei zu öffnen, ist der Oplock / Lease unterbrochen und der erste Client kann keine Verbindung mehr herstellen.
Ausfallsichere Dateihandles bleiben auch dann erhalten, wenn das Oplock / Lease defekt ist, aber ehrlich gesagt kann ich nicht alle technischen Details der Funktionsweise verfolgen. Eine der folgenden Referenzen besagt, dass der Unterschied zwischen Durable und Resilient darin besteht, wie die Handles erstellt werden - Durable durch einen Aufruf zum Erstellen eines Kontexts und Resilient durch eine IOCTL. (Die Hauptsache, der ich nicht folgen kann, ist, wie die Sequenzierung und Wiedergabe von Sperren dazu passt, aber es sieht nicht so aus, als wäre dies ein kritischer Unterschied zwischen langlebig und belastbar.)
Für persistente Handles kann ich mir nichts Besseres als dieses Samba-Dokument einfallen lassen :
Permanente Dateihandles sind wie dauerhafte Dateihandles mit starken Garantien. Sie werden mit dem dauerhaften v2-Anforderungs-Blob angefordert, wobei das permanente Flag auf true gesetzt ist. Der Server gewährt nur dauerhafte Freigaben für Freigaben, die als CA gekennzeichnet sind (ständig verfügbar).
Soweit ich das beurteilen kann, sind diese noch nicht in Samba implementiert, aber das Ziel ist es, Clustering und kontinuierliche Verfügbarkeit zu unterstützen, also wird daran gearbeitet.
Weitere Informationen zu persistenten Handles ... Persistente Handles sind auf mehreren Servern desselben Clusters verfügbar. Wenn ein Server aus irgendeinem Grund ausfällt, kann der Clientcomputer dieses Handle über eine Verbindung zu einem anderen Server halbtransparent weiter verwenden. Aus diesem Grund liegt die Implementierung von dauerhaften Handles (im Gegensatz zu dauerhaften und belastbaren Handles) außerhalb eines reinen SMB-Bereichs. Unser NQ-Speicher erwartet beispielsweise, dass die vollständige Semantik persistenter Handles in einem benutzerdefinierten VFS implementiert wird, während die SMB-Engine für die jeweilige Syntax verantwortlich ist.
Das persistente Samba-Handle behält den Status der Dateihandles bei. Selbst wenn einer der Server im Cluster ausfällt, kann der neue Master das aktuelle Dateihandle abrufen und die E / A ohne E / A-Fehler fortsetzen.