Gleichzeitige Dateizugriff in nfsv4 linux c

8

Ich benutze C unter Linux und versuche herauszufinden, wie zwei verschiedene Prozesse auf dieselbe Datei in einem NFSv4-Dateisystem zugreifen können. Insbesondere möchte ich, dass ein Programm eine Datei zum Lesen öffnet und ein zweites Programm die Datei zum Schreiben öffnet. Ich beabsichtige, das neue EFS (Elastic File System) von AWS zu verwenden, und EFS ist nur NFSv4.

Die Art der Programme ist so, dass der Verfasser im Wesentlichen nur an die Datei anhängen wird. Der Leser wird niemals auf die neu angehängten Informationen zugreifen, bis der Schreiber fertig ist und fflush aufgerufen hat.

Unterstützt NFSv4 dieses Szenario?

Oder gibt es eine bessere Möglichkeit, einen solchen NFSv4-Dateizugriff gleichzeitig zu erreichen?

    
PaeneInsula 06.06.2015, 17:20
quelle

1 Antwort

2

NFS v4 unterstützt Bytebereichsperren für Dateien (wie in diesem Auszug aus RFC 3530 "NFS version 4 protocol" ):

  

1.4.5. Dateisperrung

     

Mit dem NFS Version 4-Protokoll ist die Unterstützung für das Sperren von Bytebereichsdateien Teil des NFS-Protokolls. Die Dateisperrungsunterstützung ist so strukturiert, dass ein RPC-Rückrufmechanismus nicht erforderlich ist. Dies ist eine Abkehr von den früheren Versionen des NFS-Dateisperrprotokolls Network Lock Manager (NLM). Der mit Dateisperren verknüpfte Status wird auf dem Server unter einem leasenbasierten Modell verwaltet. Der Server definiert einen einzigen Leasingzeitraum für alle von einem NFS-Client gehaltenen Status. Wenn der Client seinen Leasingvertrag nicht innerhalb des festgelegten Zeitraums erneuert, kann der Zustand, der mit dem Lease des Clients verknüpft ist, vom Server freigegeben werden. Der Client kann seine Lease mit der Operation RENEW oder implizit mit anderen Operationen (in erster Linie READ ) erneuern.

Weitere Informationen zum Sperren und zum lease-basierten Modell finden Sie in Abschnitt 8 desselben RFC.

Ihr Programm muss fcntl verwenden, um das Sperren zu verwalten. Mein Rat ist, einen Test zu schreiben, um zu überprüfen, ob die tatsächliche Implementierung von NFS v4 von EFS das Sperren wie erwartet unterstützt (einige Aspekte sind in der Spezifikation optional). Sie können auf den Quellcode von dieser Schlosstestsuite verweisen , die Multi-Client-Tests unterstützt.

    
EmirCalabuch 11.06.2015, 16:13
quelle