Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
第 10 章 FS-Cache
FS-Cache 是一种永久的本地缓存,可供文件系统用于通过网络检索数据并将其缓存在本地磁盘上。这有助于最小化网络流量,以便用户从通过网络(例如 NFS)挂载的文件系统访问数据。
下图显示了 FS-Cache 的工作原理:
图 10.1. FS-Cache 概述

[D]
FS-Cache 旨在对系统的用户和管理员尽可能透明。与 Solaris 上的 cachefs 不同,FS-Cache 允许服务器上的文件系统直接与客户端的本地缓存交互,而不创建过载的文件系统。使用 NFS 时,挂载选项指示客户端在启用了 FS-cache 时挂载 NFS 共享。
FS-Cache 不会改变通过网络运行的文件系统的基本操作,它只是为文件系统提供了一个永久位置,它可以缓存数据。例如,客户端仍然可以挂载 NFS 共享,无论是否启用了 FS-Cache。此外,缓存的 NFS 可以处理不适合缓存的文件(无论是单独还是全部),因为文件可以部分缓存,且无需事先完全读取。FS-Cache 还会从客户端文件系统驱动程序隐藏缓存中发生的所有 I/O 错误。
要提供缓存服务,FS-Cache 需要 缓存后端。缓存后端是一种存储驱动程序,配置为提供缓存服务(即 cachefiles)。在这种情况下,FS-Cache 需要一个挂载的基于块的文件系统,支持 bmap 和扩展属性(例如 ext3)作为其缓存后端。
FS-Cache 无法任意缓存任何文件系统,不论是通过网络还是通过其他方式:必须更改共享文件系统的驱动程序,以允许与 FS-Cache、数据存储/retrieval 以及元数据设置和验证交互。FS-Cache 需要来自缓存文件系统 的索引密钥 和一致性数据 来支持持久性:索引密钥以匹配文件系统对象来缓存对象,以及一致性数据来确定缓存对象是否仍然有效。
注意
在 Red Hat Enterprise Linux 7 中,默认情况下不安装 cachefilesd 软件包,需要手动安装。
10.1. Performance Guarantee
FS-Cache 不 保证更高的性能,但它通过避免网络拥塞来确保性能一致。使用缓存后端会降低性能:例如,缓存的 NFS 共享将磁盘访问权限添加到跨网络查找。虽然 FS-Cache 尝试尽可能异步,但存在无法达到的同步路径(如读取)。
例如,使用 FS-Cache 通过其他不从属的 GigE 网络在两台计算机之间缓存 NFS 共享不会显示文件访问的性能改善。相反,通过服务器内存而不是本地磁盘满足 NFS 请求的速度会更快。
因此,使用 FS-Cache 是各种因素之间的 妥协。例如,如果使用 FS-Cache 来缓存 NFS 流量,它可能会减慢客户端一些速度,但会满足本地的读取请求而大规模降低网络和服务器加载,而无需消耗网络带宽。