我在一台服务器上有1TB磁盘,其他4台服务器经常通过NFS访问以通过HTTP分发文件.我看到中央服务器负载很高,并希望将这些文件缓存在本地服务器上,因为它们很少更改. NFS缓存是合适的还是我应该查看其他内容?
谢谢
解决方法
NFS方式:
如果客户端服务器上的空间最小,阻止您保留所有大文件的完整副本(例如,您只想要或需要缓存最常访问的文件),FS-Cache可能会有所帮助.
有一些警告(如Red Hat’s documentation所述):
>从共享文件系统打开文件以进行直接I / O将自动绕过缓存.这是因为这种类型的访问必须直接指向服务器.
>从共享文件系统打开文件进行写入将无法在NFS版本2和3上运行.这些版本的协议无法为客户端提供足够的一致性管理信息,以检测从另一个客户端对同一文件的并发写入.
>因此,从共享文件系统打开文件以进行直接I / O或写入将刷新文件的缓存副本.在不再为直接I / O或写入打开文件之前,FS-Cache不会再次缓存该文件.
>此外,此版本的FS-Cache仅缓存常规NFS文件. FS-Cache不会缓存目录,符号链接,设备文件,FIFO和套接字.
此外,您需要在NFS客户端上运行特定类型的文件系统,以便为FS-Cache用于跟踪事物的文件系统属性提供所需的FS支持(ext3 with user_xattr,ext4,btrfs,xfs) .
rsync方式:
另一种方法是使用rsync并在每个系统上保留文件的完整副本.如果这些只是定期更改(例如每天或每周),那么从管理和调试问题的复杂性较低的角度来看,这可能对您更有利.
这样做的缺点是你现在保留N 1个副本,其中N是你需要运行它的系统数量,你必须提出一个定期处理rsyncs的机制(例如,脚本cron等).