并发NFS访问

类似于并发FTP访问 。

如何处理NFS的并发文件访问? 假设一个客户端正在更新/覆盖NFS服务器上的文件,并且服务器上的一个进程正在同时直接从文件系统读取同一个文件。 在NFS / Linux中是否有某种对文件读/写的primefaces处理,还是必须使用tmp文件来确保数据的一致性?

我担心读取文件的过程将会损坏数据。

特定的守护进程(rpc.statd和rpc.lockd)可以帮助进行操作系统级别的locking,但通常情况下,您不希望依赖它,正如Josip写的,许多Unix应用程序都实现了自己的应用程序级locking。

如果你打算在文件上写争用,标准的做法是首先不要通过NFS提供这样的文件。

这些冲突通常通过锁来解决。 它正在申请,以确保适当的locking。 也就是说,需要注意的是,大多数应用程序倾向于locking文件,特别是在写入时。

NFS实现了一种称为“开放式一致性”(close-open-consistency)的东西,这是一种弱caching一致性模型。 请参阅NFS 4 RFC中的第9.3.1节。

换句话说,当修改文件的客户端closures文件时,客户端将把写入的数据刷新到服务器。 如果其他客户端在此之后打开文件,则会看到新的内容。 或者如果另一个“客户端”是服务器上的本地进程,它将立即看到它,不需要重新打开。

如果您需要对caching进行更精细的控制,则需要使用字节范围locking。 再次参见NFS 4 RFC中的第9.3.2节。 在这种情况下,NFS客户端将在释放写入locking时刷新数据,并在获取locking时重新validation其caching。