第八章缓冲文件系统缓冲文件系统
你可以使用缓冲文件系统来改善远程文件系统的性能(例如:NFS),或者提高设备的性能(例如:光驱)。
当你使用了缓冲文件系统,就会从远程文件系统或者光驱中读取数据保存在本地系统中的基于磁盘的缓冲中。之后的相同的读出请求是通过本地缓冲来执行的,这样就可以提高读出的性能。
注意:这对NFS服务器是无效的,只对NFS客户端有效
正在使用的缓冲文件系统术语
下列术语是在讨论缓冲文件系统时使用的:
•;后台文件系统:最初的被装配成缓冲文件系统和缓冲的基于磁盘的,基于网络的或者基于光盘的文件系统。
•;前台文件系统:用户通过本地装配点来访问和缓冲的已经装配的文件系统
•;一致性:在后台和前台系统之间进行状态同步
正在使用的缓冲文件系统命令
你可以使用下列命令来管理一个缓冲文件系统
•;cfsadmin:这个命令为缓冲文件系统管理磁盘空间。包括建立,删除和列出缓冲中的内容
•;cachefsstat:这个命令提供缓冲使用上的统计
•;cachefslog:这个命令为缓冲建立一个日志程序
•;cachefswssize:这个命令帮助决定缓冲文件系统的适当的大小。只有当缓冲日志是有效的,这个功能才能实现。
建立一个缓冲文件系统
设定一个缓冲文件系统的基本的三个步骤
1. 使用下列命令建立缓冲
# cfsadmin -c /cache/cache0
2. 如果不存在,就为预备装配的远程文件系统,建立一个本地装配点
# mkdir /data
3. 装配远程文件系统并且执行缓冲文件系统
# mount -F cachefs -o backfstype=nfs,cachedir=/cache/cache0,\ cacheid=data_cache host1:/export/data /data
。 远程资源是已经装配的缓冲文件系统
。 源文件系统类型(backfstype)是nfs
。 你必须指定缓冲目录cachedir
。 cacheid是可选的,但是他能提供一个方便的用户定义的卷标来为后面的管理命令定义这个缓冲文件系统。
。 远程资源是host1:/export/data,本地用户访问是通过/data装配点。
4. 使用mount命令检测装配
# mount
你可以通过在/etc/vfstab中添加下面类似的一行来完成自动装配:
host1:/export/data - /data cachefs - yes
backfstype=nfs,cachedir=/cache/cache0,cacheid=data_cache
当本地用户通过/data装配点访问资源的时候,缓冲就被使用了
缓冲文件系统缓冲目录细节
下面描述缓冲目录层次
•;为每个被缓冲在缓冲目录中的缓冲文件系统,在.cfs_mnt_point目录中建立一个条目
•;当缓冲文件系统被装配时,如果你指定了一个缓冲ID字符串,这个字符串就变成连接到文件系统的缓冲数据的标志
•;本地用户通过本地的/data装配点访问缓冲数据
缓冲文件系统统计和一致性检测
要查看缓冲文件系统统计,你可以使用cachefsstat命令。要检测一致性,使用cfsadmin命令。
cachefsstat命令
你可以使用cachefsstat命令去显示缓冲统计,他显示描述了你的缓冲的效力的信息。
下列输出显示了最近建立的缓冲的统计
# cachefsstat /data
/data
cache hit rate: 100% ( 8 hits, 0 misses)
consistency checks: 24% (24 pass, 0 fail)
modifies: 0
garbage collection: 0
默认的情况下,缓冲是自动同步的。缓冲中的文件的检测是依靠最初的后台文件系统(在服务器上)和在客户端的前台文件系统上执行的更新。Pass值(本例中是24)指出检测执行连接的数量。Fail值(本例中是0)指出已经执行的更新的数量。
Hit等级的值指出缓冲的效率。Hits表示了在缓冲文件是已经使用的并且避免了访问到最初的文件时的指定的场合。Miss值指出了文件的拷贝不在缓冲中而是访问了后台文件系统的拷贝。
在集合状态上指定一个时间周期,你可以先将cachefs计数器置0。要将所有的cachefs计数器置0,使用下列命令:
# cachefsstat –z
demandconst选项
你可以通过mount命令的demandconst选项来关闭自动同步(见mount_cachefs(1)联机帮助页)。只有在后台文件系统是静态的或者后台和前台文件系统不需要做同步的情况下,才需要这样做。例如,如果后台文件系统是一个在光盘上的只读文件系统,那就不需要打开一致性检测。
cfsadmin命令
如果使用了demandconst选项关闭了自动一致性检测,则通过cfsadmin命令手动调用一致性检测和执行任何必要的升级。
# cfsadmin –s /data
增强缓冲文件系统的缓冲能力
你可以通过下列方法对缓冲文件系统的缓冲结构进行附加的控制:
;通过前台文件系统的百分比来设定缓冲使用的数据块的数量。详细的方法可以参看cfsadmin(1M)的联机帮助页
;设定在前台文件系统中的文件的百分比来决定缓冲文件系统的文件数量的最大值和最小值。
下面显示了缓冲统计的默认值:
# cfsadmin –l /cache/cache0
cfsadmin: list cache FS information
maxblocks 90%
minblocks 0%
threshblocks 85%
maxfiles 90%
minfiles 0%
threshfiles 85%
maxfilesize 3MB
data_cache
;maxblocks-缓冲文件系统可以使用的存储空间的最大数量,明确的指出了前台文件系统的百分比。
;minblocks-缓冲文件系统总是通过内部机械控制来允许非局限性的使用的最小的存储空间的数量(明确的给出在前台文件系统中的数据块总量的百分比)。
;threshblocks-一个前台文件系统中的总数据块在远端的百分比,一旦这个块通过minblocks达到一个指定的级别,某个缓冲文件系统不能根据权力要求资源。
;maxfiles-缓冲文件系统可以使用的文件的最大数,使用在前台文件系统中的inode数的百分比来表示。
;minfiles-在前台文件系统中的inode总数中最少文件数量的百分比。缓冲文件系统总是通过内部机械控制来允许非局限性的使用的最小的存储空间的数量。
;threshfiles-一个前台文件系统中的inode总数在远端的百分比,一旦这个inode通过minblocks达到一个指定的级别,某个缓冲文件系统不能根据权力要求资源。
;maxfilesize-缓冲文件系统允许缓冲的文件的最大长度。
这些参数是通过-o选项来指定的,多个参数通过逗号分开。请参考cfsadmin(1M)联机帮助。
只有在建立缓冲的时候,你可以改变这些参数。
缓冲的容量
你使用cachefswssize命令来决定在缓冲中的数据的当前的长度。这包括在缓冲下装配的文件系统系统需要的缓冲空间的总数。也是一个总和。在使用cachefswssize命令之前,你必须打开cachefs日志。在你打开cachefs日志前,你必须建立日志文件的目录。
# mkdir /var/cachelogs
下列命令建立和启动一个cachefs日志
# cachefslog –f /var/cahcelogs/data.log /data
/var/cachelogs/data.log: /data
在上一个命令中,一个叫做/var/cachelogs/data.log的缓冲日志被建立起来,用于装配在本地/data的缓冲文件系统。
你可以在任何时候改变缓冲日志。下列命令是一个改变日志文件到/var/cachelogs/data_new.log的例子:
# cachefslog –f /var/cachelogs/data_new_062100.log /data
/var/cachelogs/data_new_062100.log: /data
在任何时候,你可以决定当前的日志文件。见下例:
# cachefslog /data
/var/cachelogs/data_new_062100.log: /data
你可以使用下列命令来停止和检测日志:
# cachefslog –h /data
not logged: /data
# cachefslog /data
not logged: /data
一旦你打开日志,你就可以检测缓冲的容量
# cachefswssize /var/cachelogs/data.log
total for cache
initial size: 4256k
end size: 511k
high water size: 511k
缓冲文件系统的完整性
你可以使用fsck(1M)命令来检测和修复文件系统的完整性。
要检测缓冲文件系统的完整性,执行下列步骤:
1.在调用fsck命令之前,卸载缓冲文件系统
# umount /data
2.使用下列命令去检测和修复缓冲文件系统
# fsck –F cachefs –o noclean /cache/cache0
-F选项通知fsck命令要检测文件系统类型是缓冲文件系统。-o noclean选项是用于在他认为是不必要的时候,强制的执行检测
3.使用mount命令起用访问到已经修复的缓冲文件系统
# mount –F cachefs –o backfstype=nfs,cachedir=/cache/cache0,\ cacheid=data_cache host1:/export/data /data
分解缓冲文件系统
实现一个缓冲文件系统可以使用一个中间的方法来增强性能。你可以删除缓冲文件系统和在以后的时间里重新建立他。
你可以装配更多的后台文件系统到一个缓冲文件系统中并且将他们缓冲到一个相同的缓冲目录里。你可以分解一个缓冲文件系统,使其不在是完整无缺的。你同样可以在缓冲目录中分解所有的缓冲文件系统。
要分解缓冲文件系统,执行下列步骤:
1.如果必要,警告用户,告诉他们对缓冲文件系统的访问将会中断。
2.需要分解缓冲文件系统的缓冲ID需要删除。ID字符串是定位在下列命令输出的最后一行。下面的输出屏蔽了一部分。
# cfsadmin –l /cache/cache0
cfsadmin: list cache FS information
maxblocks 90%
minblocks 0%
threshblocks 85%
maxfiles 90%
minfiles 0%
threshfiles 85%
maxfilesize 3MB
data_cache
3.卸载所有共享相同缓冲目录中你希望删除的缓冲文件系统。本模块中的例子只使用了一个缓冲目录,所以命令是:
# umount /data
4.删除缓冲文件系统
# cfsadmin –d data_cache /cache/cache0
5.如果在删除其他之后,保留一些缓冲文件系统。使用fsck命令去纠正在缓冲目录中的资源计数器。
# fsck –F cachefs –o noclean /cache/cache0
6.重新装配剩余的缓冲文件系统