nfsv4 linux c中的并发文件访问

前端之家收集整理的这篇文章主要介绍了nfsv4 linux c中的并发文件访问前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用C,在 Linux下运行,我试图弄清楚如何让2个不同的进程访问位于NFSv4文件系统上的同一文件.具体来说,我想让一个程序打开一个文件进行读取,然后让第二个程序打开该文件进行写入.我打算使用AWS的新EFS(弹性文件系统),而EFS只是NFSv4.

程序的本质是这样的,作者本质上只会附加到文件中.在作者完成并调用fflush之前,读者永远不会访问新添加的信息.

NFSv4是否支持这种情况?

或者是否有更好的方法来实现这种并发NFSv4文件访问?

解决方法

NFS v4确实支持文件的字节范围锁定(如 RFC 3530 “NFS version 4 protocol”摘录中所述):

1.4.5. File locking

With the NFS version 4 protocol,the support for byte range file locking is part of the NFS protocol. The file locking support is structured so that an RPC callback mechanism is not required. This is a departure from the prevIoUs versions of the NFS file locking protocol,Network Lock Manager (NLM). The state associated with file locks is maintained at the server under a lease-based model. The server defines a single lease period for all state held by a NFS client. If the client does not renew its lease within the defined period,all state associated with the client’s lease may be released by the server. The client may renew its lease with use of the RENEW operation or implicitly by use of other operations (primarily READ).

有关锁定和基于租约的模型的更多详细信息,请参阅同一RFC的第8节.

您的程序需要使用fcntl来管理锁定.我的建议是编写一个测试来检查EFS提供的NFS v4的实际实现是否支持按预期进行锁定(某些方面在规范中是可选的).您可以参考this lock testing suite的源代码,它支持多客户端测试.

原文链接:https://www.f2er.com/linux/394883.html

猜你在找的Linux相关文章