首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nfsv4 linux c中的并发文件访问

nfsv4 linux c中的并发文件访问
EN

Stack Overflow用户
提问于 2015-06-06 17:20:31
回答 1查看 2K关注 0票数 9

使用在Linux下运行的C,我试图弄清楚如何让两个不同的进程访问位于NFSv4文件系统上的同一个文件。具体来说,我希望有一个程序打开一个文件进行读取,另一个程序打开该文件进行写入。我打算使用来自AWS的新EFS (弹性文件系统),而EFS只是NFSv4。

程序的性质是这样的,从本质上讲,作者只会附加到文件中。读者将永远不会访问新附加的信息,直到作者完成并调用fflush。

NFSv4支持这个场景吗?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-11 16:13:48

NFS v4确实支持文件上的字节范围锁定(如RFC 3530 "NFS版本4协议“摘录所述):

1.4.5.文件锁定 对于NFS 4协议,对字节范围文件锁定的支持是NFS协议的一部分。文件锁定支持是结构化的,因此不需要RPC回调机制。这与NFS文件锁定协议的早期版本网络锁定管理器( Network,NLM)不同。与文件锁相关联的状态在基于租约的模型下在服务器上维护。服务器为NFS客户端所持有的所有状态定义单个租约期限。如果客户端没有在定义的期间内续订其租约,则服务器可以释放与客户端租约相关的所有状态。客户端可以使用RENEW操作来续签租约,也可以通过使用其他操作(主要是READ)来隐式续约。

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30685553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档