OK。。。使用cachefs非常简单。假设您有一个名为theoden的文件服务器,我们使用目录/export/files作为NFS共享的目录。我们例子中的客户端是gandalf。
准备工作:
1.我们先创建一个NFS服务器。这很容易。只需在Solaris服务器上共享一个目录。我们登录到theoden并以根权限执行以下命令。
[root@theoden:/]# mkdir /export/files
[root@theoden:/]# share -o rw /export/files
# share
- /export/files rw ""
2.OK,当然,在这个目录中放一些文件是很好的。我将使用Solaris环境的一些文件。
[root@theoden:/]# cd /export/files [root@theoden:/export/files]# cp -R /usr/share/doc/pcre/html/* .
3.让我们快速测试下,目录是否可以挂载
[root@gandalf:/]# mkdir /files [root@gandalf:/]# mount theoden:/export/files /files [root@gandalf:/]# unmount /files
现在为止,我们可以在客户端gandalf机器上通过NFS挂载访问theoden服务器上面的共享文件了
4.OK,接下来我们创建一个本地缓存目录,假设我们希望将缓存放在/var/cachefs/caches/cache1。首先,我们在缓存目录上面创建目录。您不需要手动创建目录结构的最后一部分。
[root@gandalf:/]# mkdir -p /var/cachefs/caches
5.这个目录将是我们为cachefs存储缓存的地方。在这个步骤之后,我们必须为cachefs创建缓存。
[root@gandalf:/files]# cfsadmin -c -o maxblocks=60,minblocks=40,threshblocks=50 /var/cachefs/caches/cache1
目录cache1由命令自动创建。如果目录已经存在,命令将退出而不创建缓存。
此外,还创建了缓存,并指定了一些基本参数来控制缓存的行为。引用cfsadmin的主页:
maxblocks:缓存文件可以使用的最大存储空间量,表示为当前文件系统中块总数的百分比。
minblocks:最小存储空间量,以文件系统中块总数的百分比表示,始终允许cachefs使用,而不受其内部控制机制的限制。
threshblocks:当前文件系统中块总数的百分比,超过该百分比后,一旦缓存块的使用率达到minblocks指定的级别,缓存将无法声明资源。
所有这些参数都可以被调到preven cachefs,以耗尽文件系统中的所有可用存储空间,这是此功能早期版本非常常见的行为。
通过CacheFS挂载文件系统(Mounting a filesystem via CacheFS):
现在我们必须挂载原始文件系统。
[root@gandalf:/files]# mkdir -p /var/cachefs/backpaths/files [root@gandalf:/files]# mount -o vers=3 theoden:/export/files /var/cachefs/backpaths/files
您可能注意到了将NFS设置为版本3的参数。这是必须的,因为NFSv4不支持缓存。因此,您只能将其与NFSV3及以下版本一起使用。这种限制的原因在于NFSv4处理iNoD的方式不同。
好的,现在我们将缓存文件系统安装在旧位置:
[root@gandalf:/files]# mount -F cachefs -o backfstype=nfs,backpath=/var/cachefs/backpaths/files,cachedir=/var/cachefs/caches/cache1 theoden:/export/files /files
安装选项控制安装的一些基本参数:
backfstype:指定由cachefs文件系统代理的文件系统类型
backpath:指定当前安装此代理文件系统的位置
cachedir:指定此缓存实例的缓存目录。多个缓存装载可以使用同一个缓存。
从现在起,对/files目录的每次访问都将由cachefs缓存。让我们快速查看/etc/mntab。我们有两个重要的坐骑
[root@gandalf:/etc]# cat mnttab
[...]
theoden:/export/files /var/cachefs/backpaths/files nfs vers=3,xattr,dev=4f80001 1219049560
/var/cachefs/backpaths/files /files cachefs backfstype=nfs,backpath=/var/cachefs/backpaths/files,cachedir=/var/cachefs/caches/cache1,dev=4fc0001 1219049688
缓存的统计信息
使用它时,您将看到/var/cachefs/caches/cache1处的缓存结构中充满了文件。我来解释一下
使用它时,您将看到/var/cachefs/caches/cache1处的缓存结构中充满了文件。我将在下一节中解释一些结构。但是这个缓存有多高效呢?Solaris提供了一个命令来收集有关缓存的一些统计信息。使用cachefstat,可以打印出命中率等数据,包括缓存命中和缓存未命中的绝对数:
[root@gandalf:/files]# /usr/bin/cachefsstat /files cache hit rate: 60% (3 hits, 2 misses) consistency checks: 7 (7 pass, 0 fail) modifies: 0 garbage collection: 0 [root@gandalf:/files]#