1

我正在用 C++ 编写一个模块,它将在一组机器上运行,所有这些机器都有一个安装了 nfs 的文件存储。

我有一个通过 NFS 与所有机器共享的配置文件;并且所有人都可以读/写该文件。如何确保不会因同时访问而导致数据损坏?

我知道 NFS 有自己的锁定协议,但我认为它不可靠 -并发 nfs 访问。我还看到 iNotify 在安装 nfs 的驱动器上表现不佳 - inotifiy 示例。我不确定 stat是否有助于在写入/读取之前检查文件是否正在被访问。

如何在 C++ 中实现简单的锁定机制以避免同时访问?

4

1 回答 1

0

当您将内容 A、B 和 C 同时写入通过 NFS 共享的文件时,最终内容将是 ABC 或任何可能的 ABC 组合,如 BAC、CAB 等。文件将始终保持一致,它将永远不要部分写A,然后写B。因此写一个接一个。请注意,仅当内容大小在 NFS 块大小范围内时才会如此。

如果您的写入超出块大小,则需要使用 NLM,这需要在 NFS 服务器和客户端上运行锁定守护程序。

于 2012-07-09T20:45:06.347 回答