我打算使用 NFS 来提供许多小文件。它们会经常被读取,因此客户端缓存至关重要。NFS 会处理这个吗?有没有办法以某种方式增加客户端缓存?
...或者我应该看看另一种解决方案?定期使用 rsync 或 unison 同步不是一种选择,因为文件会不时在客户端进行修改。
我打算使用 NFS 来提供许多小文件。它们会经常被读取,因此客户端缓存至关重要。NFS 会处理这个吗?有没有办法以某种方式增加客户端缓存?
...或者我应该看看另一种解决方案?定期使用 rsync 或 unison 同步不是一种选择,因为文件会不时在客户端进行修改。
首先,NFS 不提供缓存一致性,因此如果您需要,您必须寻找其他地方。
NFS 指定的是一个较弱的模型,称为接近开放一致性。这意味着当文件关闭时,所有脏数据都会刷新到服务器。相反,当打开文件时,会执行属性检查,这意味着如果客户端缓存了该文件中的页面,它会检查这些页面是否仍然有效。
虽然不在规范本身中,但大多数 NFS 客户端都有一个称为属性缓存超时的东西,即在客户端联系服务器以重新验证它们之前,目录或打开文件的属性可以存在多长时间。在 Linux 上,请参阅 actimeo= 等挂载选项。较高的值允许更积极的缓存,但如果其他客户端同时更新了文件,则会增加使用陈旧数据的风险。