NFS读取缓存在Debian上如何工作?


12

我计划使用NFS提供许多小文件。它们将经常被读取,因此客户端缓存至关重要。NFS可以处理吗?有没有办法以某种方式增加客户端缓存?

...还是我应该看看另一种解决方案?定期使用rsync或unison进行同步不是一种选择,因为文件有时会在客户端进行修改。

Answers:


6

首先,NFS不提供缓存一致性,因此,如果需要缓存一致性,则必须在其他地方查找。

NFS指定的是一个较弱的模型,称为“接近开放一致性”。这意味着关闭文件时,所有脏数据都将刷新到服务器。相反,当打开文件时,将执行属性检查,这意味着如果客户端已从该文件缓存了页面,它将检查这些页面是否仍然有效。

尽管不是规范本身,但大多数NFS客户端都有一个称为属性缓存超时的属性,即,在客户端与服务器重新验证之前,目录或打开的文件的属性可能有多旧。在Linux上,请参见actimeo =etc。挂载选项。较高的值允许更积极的缓存,但是如果同时有其他客户端更新文件,则使用陈旧数据的风险也会增加。


谢谢您的回复。因此,为了使我正确地理解了这一点,客户端“属性缓存”仅包含文件/目录属性的缓存。缓存不包含任何文件内容?
Ztyx

是的,客户端将文件内容缓存在页面缓存中,就像本地文件系统一样。该属性用于确定是否以及何时使缓存的文件内容无效。
janneb

啊。非常感谢您的回答。祝你今天愉快。
Ztyx

当您说“页面”时,这似乎意味着文件的某些部分可以被缓存而文件的某些部分可能不被缓存?这不是文件缓存吗?它是可以缓存的文件的细分。
CMCDragonkai

@CMCDragonkai:内核以页面粒度(通常为4KB)跟踪缓存的文件内容,因此,可以缓存一部分文件。我不确定NFS的缓存失效究竟如何工作,我的猜测是在属性缓存超时后,当它与服务器联系以进行重新验证时,如果重新验证失败,则它将丢弃属于该文件的所有缓存页面。
janneb
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.