Pae*_*ula 8 linux file-io nfs file-locking amazon-web-services
使用C,在Linux下运行,我试图弄清楚如何让2个不同的进程访问位于NFSv4文件系统上的同一个文件.具体来说,我想让一个程序打开一个文件进行读取,然后让第二个程序打开该文件进行写入.我打算使用AWS的新EFS(弹性文件系统),而EFS只是NFSv4.
程序的性质使得作者本质上只会附加到文件中.在作者完成并调用fflush之前,读者永远不会访问新添加的信息.
NFSv4是否支持这种情况?
或者是否有更好的方法来实现这种并发NFSv4文件访问?
NFS v4 确实支持文件的字节范围锁定(如RFC 3530“NFS 版本 4 协议”的摘录中所述):
1.4.5。文件锁定
对于 NFS 版本 4 协议,对字节范围文件锁定的支持是 NFS 协议的一部分。文件锁定支持的结构使得不需要 RPC 回调机制。这与 NFS 文件锁定协议网络锁定管理器 (NLM) 的早期版本不同。与文件锁关联的状态在基于租用的模型下在服务器上维护。服务器为 NFS 客户端持有的所有状态定义单个租用期。如果客户端未在定义的期限内续订其租约,则与客户端租约相关的所有状态可能会被服务器释放。客户端可以通过使用该
RENEW
操作或隐式地通过使用其他操作(主要是READ
)来更新其租约。
有关锁定和基于租赁的模型的更多详细信息,请参阅同一 RFC 的第 8 节。
您的程序将需要使用fcntl
来管理锁定。我的建议是编写一个测试来检查 EFS 提供的 NFS v4 的实际实现是否支持预期的锁定(规范中某些方面是可选的)。您可以参考这个锁测试套件的源码,它支持多客户端测试。
归档时间: |
|
查看次数: |
912 次 |
最近记录: |