本章介绍如何设置和维护 CacheFSTM 文件系统。
以下列出本章中的任务列表。
有关对 CacheFS 错误进行疑难解答的信息,请参见对 cachefspack 错误进行疑难解答。
有关 NFS 版本 4 和 CacheFS 软件的重要信息,请参见NFS 版本 4 和 CacheFS 的兼容性问题。
使用此任务列表可确定有关使用 CacheFS 文件系统的所有任务。每个任务指向一系列其他任务,如创建并挂载 CacheFS 文件系统,以及压缩和维护高速缓存。
任务 |
说明 |
参考 |
---|---|---|
1. 创建并挂载 CacheFS 文件系统。 |
创建高速缓存并在该高速缓存中挂载文件系统。 | |
2. 维护 CacheFS 文件系统。 |
通过取消挂载、删除或重新创建高速缓存,显示和修改 CacheFS 文件系统。 | |
3. (可选)压缩和解压缩 CacheFS 文件系统。 |
确定是否要压缩高速缓存和使用压缩列表。压缩高速缓存可确保某些文件和目录始终在高速缓存中进行更新。 | |
4. 收集 CacheFS 统计信息。 |
确定高速缓存性能和适当的高速缓存大小。 |
CacheFS 文件系统是一种通用的高速缓存机制,它通过减少服务器和网络负载来提高 NFS 服务器的性能和可伸缩性。由于设计为分层文件系统,CacheFS 文件系统可提供将一个文件系统高速缓存在另一个文件系统上的功能。在 NFS 环境中,CacheFS 文件系统增加客户机与服务器之比,减少服务器和网络负载,并提高客户机在点对点协议 (Point-to-Point Protocol, PPP) 等慢速链路上的性能。
在客户机系统上创建 CacheFS 文件系统,以便您高速缓存的文件系统可以由客户机在本地访问,而不是通过网络访问。下图说明使用 CacheFS 文件系统时所涉及的各组件的关系。
后台文件系统是指定要在高速缓存中挂载的文件系统。后台文件系统可以是 NFS 或 HSFS(High Sierra File System,高层 Sierra 文件系统)。当用户尝试访问属于后台文件系统的文件时,这些文件放置在高速缓存中。前台文件系统是在高速缓存中挂载并从本地挂载点访问的文件系统。前台文件系统的类型必须是 UFS。
对用户而言,如果是首次请求使用 CacheFS 文件系统中的文件,响应可能会显得较慢。但是,如果以后再次使用同一文件,则响应会变快。
每个高速缓存都具有一组确定其结构和行为的参数。这些参数设置为下表中列出的缺省值。缺省值指定将整个前台文件系统用于高速缓存,这是对文件系统进行高速缓存时推荐使用的方法。
表 20–1 CacheFS 文件系统的参数及其缺省值
CacheFS 文件系统的参数 |
缺省值 |
定义 |
---|---|---|
maxblocks |
90 % |
设置允许 CacheFS 文件系统在前台文件系统内请求的最大块数。 |
minblocks |
0 % |
设置允许 CacheFS 文件系统在前台文件系统内请求的最小块数。 |
threshblocks |
85 % |
设置在 CacheFS 文件系统可以请求的块数大于 minblocks 指定的块数之前必须在前台文件系统中可用的块数。 |
maxfiles |
90 % |
设置允许 CacheFS 文件系统在前台文件系统内请求的最大可用 inode 数(文件数)。 |
minfiles |
0 % |
设置允许 CacheFS 文件系统在前台文件系统内请求的最小可用 inode 数。 |
threshfiles |
85 % |
设置在 CacheFS 文件系统可以请求大于 minfiles 中指定的文件数之前,前台文件系统中必须提供的 inode 数。 |
通常,不应更改上述任何参数值。它们设置为缺省值是为了实现最佳的高速缓存行为。但是,如果在前台文件系统中有一些高速缓存未使用的空间,且您希望将它用于其他某个文件系统,则可能需要修改 maxblocks 和 maxfiles 值。使用 cfsadmin 命令可以实现此操作。例如:
$ cfsadmin -o maxblocks=60 |
使用此任务列表中的过程可创建并挂载 CacheFS 文件系统。
任务 |
说明 |
参考 |
---|---|---|
1. 共享要高速缓存的文件系统。 |
验证是否已共享要高速缓存的文件系统。 | |
2. 创建高速缓存。 |
使用 cfsadmin 命令创建高速缓存。 | |
3. 在高速缓存中挂载文件系统。 |
使用以下方法之一在高速缓存中挂载文件系统: |
|
|
使用 mount 命令挂载 CacheFS 文件系统。 | |
|
通过编辑 /etc/vfstab 文件挂载 CacheFS 文件系统。 | |
|
使用 AutoFS 挂载已高速缓存的文件系统。 |
成为客户机系统上的超级用户。
# cfsadmin -c /cache-directory |
其中 cache-directory 指示高速缓存所驻留的目录的名称。
有关更多信息,请参见 cfsadmin(1M)。
在创建高速缓存后,不要在高速缓存目录本身内执行任何操作。这样做可能在 CacheFS 软件内导致冲突。
以下示例说明如何使用高速缓存参数的缺省值在 /local/mycache 目录中创建高速缓存。
# mkdir /local # cfsadmin -c /local/mycache |
在高速缓存中指定要挂载的文件系统,以便用户可以在本地访问该文件系统中的文件。在用户访问这些文件之前,它们实际上并未放置在高速缓存中。
下表介绍挂载 CacheFS 文件系统的三种方法。
CacheFS 文件系统的挂载类型 |
CacheFS 挂载类型的使用频率 |
---|---|
使用 mount 命令 |
每次系统重新引导以便访问同一文件系统时都使用。 |
编辑 /etc/vfstab 文件 |
仅一次。/etc/vfstab 文件在系统重新引导后保持不变。 |
使用 AutoFS |
仅一次。AutoFS 映射在系统重新引导后保持不变。 |
选择最适合您环境的文件系统挂载方法。
只能挂载共享的文件系统。有关共享文件系统的信息,请参见 share(1M)。
在 CacheFS 文件系统中不支持对根 (/) 文件系统和 /usr 文件系统进行高速缓存。
成为客户机系统上的超级用户。
如有必要,请创建挂载点。
# mkdir /mount-point |
可以从任何位置创建挂载点,但是它必须是 UFS 文件系统所在的位置。与 mount 命令一起使用的 CacheFS 选项(如下一步所示),确定将创建的挂载点高速缓存在指定的高速缓存目录中。
在高速缓存中挂载文件系统。
# mount -F cachefs -o backfstype=fstype,cachedir=/cache-directory[,options] /back-filesystem /mount-point |
指示高速缓存所驻留的 UFS 目录的名称。此名称与在如何创建高速缓存中创建高速缓存时指定的名称相同。
指定在高速缓存中挂载文件系统时可以包括的其他挂载选项。 有关 CacheFS 挂载选项的列表,请参见 mount_cachefs(1M)。
指定要高速缓存的后台文件系统的挂载点。如果后台文件系统是 NFS 文件系统,则必须指定从其挂载文件系统的服务器的主机名和要高速缓存的文件系统的名称,并用冒号分隔这两个名称。例如 merlin: /data/abc。
指示在其中挂载文件系统的目录。
验证实际上是否已挂载所创建的高速缓存。
# cachefsstat /mount-point |
/mount-point 是所创建的 CacheFS 文件系统。
例如:
# cachefsstat /docs /docs cache hit rate: 100% (0 hits, 0 misses) consistency checks: 1 (1 pass, 0 fail) modifies: 0 garbage collection: 0 |
如果没有在高速缓存中挂载文件系统,则显示与以下内容类似的错误消息:
# cachefsstat /mount-point cachefsstat: mount-point: not a cachefs mountpoint |
有关 cachefsstat 命令的更多信息,请参见收集 CacheFS 统计信息。
以下示例说明如何在名为 /local/mycache 的高速缓存中将名为 merlin:/docs 的 NFS 文件系统作为 CacheFS 文件系统 /docs 挂载。
# mkdir /docs # mount -F cachefs -o backfstype=nfs,cachedir=/local/mycache merlin:/docs /docs |
以下示例说明如何将 Solaris 9 SPARCTM CD(HSFS 文件系统)作为 CacheFS 文件系统 /cfssrc 使用。由于无法写入 CD,因此指定了 ro 参数以便使 CacheFS 文件系统成为只读文件系统。此示例假定 vold 守护进程未运行。
# mount -F hsfs -o ro /dev/dsk/c0t6d0s0 /sol9 # mount -F cachefs -o backfstype=hsfs,cachedir=/cfs/cache,ro,noconst, backpath=/sol9 /dev/dsk/c0t6d0s0 /cfssrc # ls /cfssrc Copyright Solaris_9 |
以下示例说明如何在 vold 运行时将 Solaris 9 SPARC CD 作为 CacheFS 文件系统挂载。
# mount -F cachefs -o backfstype=hsfs,cachedir=/cfs/cache,ro,noconst, backpath=/cdrom/sol_9_sparc/s0 /vol/dev/dsk/c0t2d0/sol_9_sparc/s0 /cfssrc |
以下示例说明如何在 vold 运行时将 CD 作为 CacheFS 文件系统挂载。
# mount -F cachefs -o backfstype=hsfs,cachedir=/cfs/cache,ro,noconst, backpath=/cdrom/epson /vol/dev/dsk/c0t2d0/epson /drvrs |
以下示例使用 demandconst 选项指定对 NFS CacheFS 文件系统 /docs(其后台文件系统为 merlin:/docs)根据需要进行一致性检查。有关更多信息,请参见CacheFS 文件系统的一致性检查。
# mount -F cachefs -o backfstype=nfs,cachedir=/local/mycache,demandconst merlin:/docs /docs |
成为客户机系统上的超级用户。
使用编辑器,在 /etc/vfstab 文件中指定要挂载的文件系统。
请参见下面的示例。
有关 /etc/vfstab 文件的更多信息,请参见/etc/vfstab 文件的字段说明。
挂载 CacheFS 文件系统。
# mount /mount-point |
或者,重新引导系统。
以下示例说明来自远程系统 starbug 的 /data/abc 目录的 /etc/vfstab 项,它是在高速缓存目录 /opt/cache 中挂载的。
#device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # starbug:/data/abc /local/abc /opt/cache cachefs 7 yes local-access,bg, nosuid,demandconst,backfstype=nfs,cachedir=/opt/cache |
通过在自动挂载映射中指定 -fstype=cachefs 挂载选项,可以使用 AutoFS 在高速缓存中挂载文件系统。请注意,CacheFS 挂载选项(例如 backfstype 和 cachedir)也是在自动挂载映射中指定的。
有关自动挂载映射的详细信息,请参见《系统管理指南:网络服务》中的“Autofs 管理的任务概述”或 automount(1M)。
成为客户机系统上的超级用户。
使用编辑器,将以下行添加到 auto_direct 映射:
/mount-point -fstype=cachefs,cachedir=/directory,backfstype=nfs server:/file-system |
使用编辑器,将以下行添加到 auto_master 映射:
/- |
/- 项是一个指针,用于检查 auto_direct 映射。
重新引导系统。
通过转到在高速缓存中挂载的文件系统再列出其内容,验证是否正确创建了该项。
# cd /filesystem # ls |
以下 auto_direct 项将在/docs 目录中自动挂载 CacheFS 文件系统。
/docs -fstype=cachefs,cachedir=/local/mycache,backfstype=nfs merlin:/docs |
设置 CacheFS 文件系统后,几乎不需要维护它。如果需要对 CacheFS 文件系统执行维护任务,请使用此任务列表中的可选过程。
任务 |
说明 |
参考 |
---|---|---|
修改 CacheFS 文件系统。 |
通过取消挂载、删除或重新创建高速缓存,修改 CacheFS 文件系统的行为。 | |
显示 CacheFS 文件系统信息。 |
使用 cfsadmin 命令显示有关 CacheFS 文件系统的信息。 | |
执行一致性检查。 |
使用 cfsadmin 命令按需执行一致性检查。 | |
删除 CacheFS 文件系统。 |
使用 umount 命令和 cfsadmin 命令删除 CacheFS 文件系统。 | |
检查 CacheFS 文件系统的完整性。 |
使用 fsck_cachefs 命令检查 CacheFS 文件系统的完整性。 |
本节介绍如何维护 CacheFS 文件系统。
如果要使用 /etc/vfstab 文件挂载文件系统,请通过在 /etc/vfstab 文件中编辑文件系统选项来修改高速缓存。如果要使用 AutoFS,请通过在 AutoFS 映射中编辑文件系统选项来修改高速缓存。
在高速缓存中修改文件系统时,需要先删除高速缓存,再重新创建它。还可能需要在单用户模式下重新引导计算机,具体取决于共享和访问文件系统的方式。
在以下示例中,使用为 /docs 文件系统指定的 demandconst 选项,删除、重新创建并重新挂载高速缓存。
# shutdown -g30 -y . . . Root password for system maintenance (control-d to bypass): single-user privilege assigned to /dev/console. . . . Here is where you might be prompted to run fsck on the file system where the cache is located. # fsck /local # mount /local # cfsadmin -d all /local/mycache # cfsadmin -c /local/mycache # init 6 . . . console login: password: # mount -F cachefs -o backfstype=nfs,cachedir=/local/cache1,demandconst merlin:/docs /docs # |
以下示例说明有关 /local/mycache 高速缓存目录的信息。在此示例中,/docs 文件系统高速缓存在 /local/mycache 中。最后一行显示 CacheFS 文件系统的名称。
# cfsadmin -l /local/mycache cfsadmin: list cache FS information maxblocks 90% minblocks 0% threshblocks 85% maxfiles 90% minfiles 0% threshfiles 85% maxfilesize 3MB merlin:_docs:_docs # |
为确保已高速缓存的目录和文件保持最新,CacheFS 软件定期检查在高速缓存中存储的文件的一致性。为检查一致性,CacheFS 软件将最新的修改时间与以前的修改时间进行比较。如果这两个修改时间不同,则从高速缓存中清除目录或文件的所有数据和属性。然后,从后台文件系统检索新的数据和属性。
仅当显式请求对使用 -o demandconst 选项挂载的文件系统进行检查时,才执行一致性检查。如果使用此选项在高速缓存中挂载文件系统,之后就可以使用带有-s 选项的 cfsadmin 命令来请求一致性检查。缺省情况下,在访问文件时逐个对文件执行一致性检查。如果未访问文件,则不执行检查。使用 -o demandconst 选项可避免出现在网络中执行大量一致性检查的情况。
有关更多信息,请参见 mount_cachefs(1M)。
成为客户机系统上的超级用户。
在高速缓存中挂载文件系统,然后指定高速缓存一致性检查。
# mount -F cachefs -o backfstype=nfs,cachedir=/directory,demandconst server:/file-system /mount-point |
启动对特定 CacheFS 文件系统的一致性检查。
# cfsadmin -s /mount-point |
成为客户机系统上的超级用户。
取消挂载 CacheFS 文件系统。
# umount /mount-point |
其中 /mount-point 指定要删除的 CacheFS 文件系统。
确定 CacheFS 文件系统的名称(高速缓存 ID)。
# cfsadmin -l /cache-directory cfsadmin: list cache FS information maxblocks 90% minblocks 0% threshblocks 85% maxfiles 90% minfiles 0% threshfiles 85% maxfilesize 3MB cache-ID # |
# cfsadmin -d cache-ID /cache-directory |
指示 CacheFS 文件系统的名称,即 cfsadmin -l 输出的最后一行。 有关更多信息,请参见如何显示有关 CacheFS 文件系统的信息。通过将 cache-ID 指定为 all,可以删除特定高速缓存中的所有 CacheFS 文件系统。
指定高速缓存所驻留的目录。
验证是否已删除 CacheFS 文件系统。
刚删除的文件系统的高速缓存 ID 应该不会出现在 cfsadmin -l 输出。
# cfsadmin -l /cache-directory cfsadmin: list cache FS information maxblocks 90% minblocks 0% threshblocks 85% maxfiles 90% minfiles 0% threshfiles 85% maxfilesize 3MB # |
有关在命令输出中指定的字段的更多信息,请参阅 cfsadmin(1M)。
更新高速缓存的资源计数。
# fsck -F cachefs /cache-directory |
有关更多信息,请参见如何检查 CacheFS 文件系统的完整性。
以下示例说明如何从高速缓存中删除文件系统。
# umount /cfssrc # cfsadmin -l /cfssrc # cfsadmin -d _dev_dsk_c0t6d0s0:_cfssrc # cfsadmin -l # fsck -F cachefs /cache-directory |
使用 fsck 命令可检查 CacheFS 文件系统的完整性。CacheFS 版本的 fsck 命令可自动更正问题,而不要求用户进行交互。应该无需对 CacheFS 文件系统手动运行 fsck 命令,因为 fsck 命令在引导时或挂载文件系统时自动运行。如果要手动检查完整性,可以使用以下过程。
有关更多信息,请参见 fsck_cachefs(1M)。
成为客户机系统上的超级用户。
检查指定高速缓存中的文件系统。
# fsck -F cachefs [-m -o noclean] /cache-directory |
导致 fsck 命令检查 CacheFS 文件系统,而不进行任何修复。
仅对 CacheFS 文件系统进行强制检查。不进行任何修复。
指示高速缓存所驻留的目录的名称。
以下示例说明如何检查在 /local/mycache 高速缓存中高速缓存的文件系统。
# fsck -F cachefs /local/mycache # |
以下任务列表介绍与压缩 CacheFS 文件系统关联的过程。其中的所有过程都是可选的。
任务 |
说明 |
参考 |
---|---|---|
在高速缓存中压缩文件。 |
确定要在高速缓存中装入的文件和目录,然后对它们进行压缩。压缩可确保这些文件的最新副本在高速缓存中是可用的。 | |
创建压缩列表。 |
如果不希望指定要在高速缓存中压缩的每个单独文件,请创建压缩列表。 | |
使用压缩列表在高速缓存中压缩文件。 |
指定要在高速缓存中压缩的文件的压缩列表的名称。 | |
从高速缓存中解压缩文件或压缩列表。 |
从高速缓存中删除不再需要的文件。 | |
显示已压缩文件的信息。 |
查看有关已压缩文件的信息,包括其压缩状态。 |
对于常规用途,CacheFS 软件在设置后自动运行,而不要求用户执行任何操作。仅对最新使用的文件进行高速缓存。利用压缩功能,通过确保始终在高速缓存中更新某些文件或目录,可以在管理高速缓存方面承担更主动的角色。
使用 cachefspack 命令可以指定要在高速缓存中装入的文件和目录。此命令确保这些文件的最新副本在高速缓存中是可用的。
压缩列表包含特定文件和目录的名称。压缩列表也可以包含其他压缩列表。需要在高速缓存中压缩多个项时,利用此功能就不必指定单独的文件和目录。
使用 -h 选项可以输出所有 cachefspack 选项的简短帮助摘要,如下所示:
$ cachefspack -h Must select 1 and only 1 of the following 5 options -d Display selected filenames -i Display selected filenames packing status -p Pack selected filenames -u Unpack selected filenames -U Unpack all files in directory 'dir' -f Specify input file containing rules -h Print usage information -r Interpret strings in LIST rules as regular expressions -s Strip './' from the beginning of a pattern name -v Verbose option files - a list of filenames to be packed/unpacked |
$ cachefspack -p filename |
指定要压缩一个或多个文件。此选项也是缺省选项。
指定要在高速缓存中压缩的文件或目录的名称。指定目录时,也将压缩该目录的所有子目录。有关更多信息,请参见 cachefspack(1M)。
以下示例说明在高速缓存中压缩 projects 文件。
$ cachefspack -p projects |
以下示例说明在高速缓存中压缩三个文件。
$ cachefspack -p projects updates master_plan |
以下示例说明在高速缓存中压缩一个目录。
$ cachefspack -p /data/abc/bin |
$ cachefspack -i[v] cached-filename-or-directory |
指定希望查看有关已压缩文件的信息。
是详细选项。
指定要显示其信息的文件或目录的名称。
$ cachefspack -i doc_file cachefspack: file doc_file marked packed YES, packed YES |
在以下示例中,/data/abc 目录包含 bin 子目录。bin 子目录包含以下三个文件:big、medium 和 small。虽然指定要压缩 big 和 small 文件,但是未压缩它们。成功压缩了 medium 文件。
$ cd /data/abc $ cachefspack -i bin . . . cachefspack: file /bin/big marked packed YES, packed NO cachefspack: file /bin/medium marked packed YES, packed YES cachefspack: file /bin/small marked packed YES, packed NO . . . |
如果一起使用 -iv 选项,则可以获取有关是否已从高速缓存中清除指定的文件或目录的其他信息。例如:
$ cd /data/bin FSCACHEPACK-4$ cachefspack -iv bin . . . cachefspack: file /bin/big marked packed YES, packed NO, nocache YES cachefspack: file /bin/medium marked packed YES, packed YES, nocache NO cachefspack: file /bin/small marked packed YES, packed NO nocache NO . . . |
此示例的最后一行说明,未从高速缓存中清除该目录的内容。
cachefspack 命令的一项功能是能够创建压缩列表。
压缩列表包含要在高速缓存中压缩的文件或目录。如果一个目录包含在压缩列表中,则也将压缩它的所有子目录和文件。
利用此功能,就可以节省必须指定要在高速缓存中压缩的每个单独文件的时间。
使用 vi 创建压缩列表文件。
压缩列表文件使用的格式与 filesync 命令的格式相同。有关更多信息,请参见 filesync(1)。
以下是压缩列表的两项功能:
可以将压缩列表中的文件标识为正则表达式而不是字面上的文件名,便可不必指定每个单独的文件名。
通过确保仅压缩您所拥有的那些文件,可以压缩共享目录中的文件。
有关使用这些功能的更多信息,请参见 cachefspack(1M)。
以下示例说明压缩列表文件的内容:
BASE /home/ignatz LIST plans LIST docs IGNORE *.ps |
使用 BASE 语句标识的路径是包含要压缩的项的目录。
两条 LIST 语句标识该目录中要压缩的特定文件。
IGNORE 语句标识文件类型 .ps(不希望压缩)。
此示例将 list.pkg 文件用作 cachefspack 命令的压缩列表。
$ cachefspack -f list.pkg |
可能需要从高速缓存中删除或解压缩文件。也许一些文件或目录的优先级高于其他文件或目录,因此需要解压缩不太关键的文件。例如,已完成一个项目,并归档了与该项目关联的文件。现在正从事一个新项目,因此使用一组新文件。
从高速缓存中解压缩文件或压缩列表。
$ cachefspack -u filename | -U cache-directory |
指定要解压缩的一个或多个文件。必须使用此选项指定一个文件名。
指定要在高速缓存中解压缩的文件或压缩列表的名称。
指定希望解压缩高速缓存中的所有文件。
有关更多信息,请参见 cachefspack(1M)。
以下示例说明从高速缓存中解压缩文件 /data/abc/bin/big。
$ cachefspack -u /data/abc/bin/big |
以下示例说明从高速缓存中解压缩三个文件。
$ cd /data/abc/bin/big $ cachefspack -u big small medium |
以下示例说明如何对压缩列表进行解压缩。压缩列表是一个包含目录(包含若干文件)路径的文件:
$ cachefspack -uf list.pkg |
以下示例使用 -U 选项指定对高速缓存目录中的所有文件进行解压缩。
$ cachefspack -U /local/mycache |
无法解压缩未挂载任何文件系统的高速缓存。使用 -U 选项时,如果指定的高速缓存不包含已挂载的文件系统,则显示与以下内容类似的输出:
$ cachefspack -U /local/mycache cachefspack: Could not unpack cache /local/mycache, no mounted filesystems in the cache. |
使用 cachefspack 命令时,可能会看到以下错误消息。
cachefspack: pathname - can't open directory: permission denied |
可能没有访问文件或目录的正确权限。
设置正确的权限。
cachefspack: pathname - can't open directory: no such file or directory |
指定的文件或目录可能不正确。
检查是否存在可能的键入错误。
cachefspack: pathname - can't open directory: stale NFS file handle |
在尝试访问文件或目录时,该文件或目录可能已从服务器中移走或删除。
验证服务器上的该文件或目录是否仍然可访问。
cachefspack: pathname - can't open directory: interrupted system call |
在发出命令时,可能无意中按了 Ctrl-C 组合键。
重新发出命令。
cachefspack: pathname - can't open directory: I/O error |
可能存在硬件问题。
检查硬件连接。
cachefspack: error opening dir |
指定的文件或目录可能不正确。在文件格式中 BASE 命令之后标识的路径可能是文件,而不是目录。指定的路径必须是目录。
检查是否存在可能的键入错误。检查在文件格式中 BASE 命令之后标识的路径。确保该路径标识的是目录而不是文件。
cachefspack: unable to get shared objects |
可执行文件可能已损坏,或者其格式无法识别。
替换可执行文件。
cachefspack: filename - can't pack file: permission denied |
可能没有访问文件或目录的正确权限。
设置正确的权限。
cachefspack: filename - can't pack file: no such file or directory |
指定的文件或目录可能不正确。
检查是否存在可能的键入错误。
cachefspack: filename- can't pack file: stale NFS file handle |
在尝试访问文件或目录时,该文件或目录可能已从服务器中移走或删除。
验证服务器上的该文件或目录是否仍然可访问。
cachefspack: filename- can't pack file: interrupted system call |
在发出命令时,可能无意中按了 Ctrl-C 组合键。
重新发出命令。
cachefspack: filename- can't pack file: I/O error |
可能存在硬件问题。
检查硬件连接。
cachefspack: filename- can't pack file: no space left on device. |
高速缓存的磁盘空间不足。
需要通过增加磁盘空间来增加高速缓存的大小。
cachefspack: filename - can't unpack file: permission denied |
可能没有访问文件或目录的正确权限。
设置正确的权限。
cachefspack: filename - can't unpack file: no such file or directory |
指定的文件或目录可能不正确。
检查是否存在可能的键入错误。
cachefspack: filename- can't unpack file: stale NFS file handle |
在尝试访问文件或目录时,该文件或目录可能已从服务器中移走或删除。
验证服务器上的该文件或目录是否仍然可访问。
cachefspack: filename- can't unpack file: interrupted system call |
在发出命令时,可能无意中按了 Ctrl-C 组合键。
重新发出命令。
cachefspack: filename- can't unpack file I/O error |
可能存在硬件问题。
检查硬件连接。
cachefspack: only one `d', `i', `p', or `u' option allowed |
在一个命令会话中指定了其中的多个选项。
为命令会话选择一个选项。
cachefspack: can't find environment variable. |
忘记设置对应的环境变量,以使其与配置文件中的 $ 匹配。
在正确的位置定义该环境变量。
cachefspack: skipping LIST command - no active base |
在配置文件中存在 LIST 命令,但该命令没有对应的 BASE 命令。
定义 BASE 命令。
以下任务列表说明收集 CacheFS 统计信息所涉及的步骤。其中的所有过程都是可选的。
任务 |
说明 |
参考 |
---|---|---|
设置日志记录。 |
使用 cachefslog 命令设置对 CacheFS 文件系统的日志记录。 | |
查找日志文件。 |
使用 cachefslog 命令查找日志文件。 | |
停止日志记录。 |
使用 cachefslog 命令停止日志记录。 | |
查看高速缓存大小。 |
使用 cachefswssize 命令查看高速缓存大小。 | |
查看高速缓存统计信息。 |
使用 cachefsstat 命令查看高速缓存统计信息。 |
通过收集 CacheFS 统计信息,可以执行以下操作:
确定适当的高速缓存大小。
监视高速缓存的性能。
这些统计信息有助于确定如何平衡高速缓存大小和所需的高速缓存性能。
下表介绍 CacheFS 统计命令。
命令 |
说明 |
手册页 |
---|---|---|
cachefslog |
指定日志文件的位置。此命令还显示当前记录统计信息的位置,并允许您停止日志记录。 | |
cachefswssize |
解释日志文件,给出建议的高速缓存大小。 | |
cachefsstat |
显示有关特定 CacheFS 文件系统或所有 CacheFS 文件系统的统计信息。命令输出中提供的信息是直接从高速缓存中提取的。 |
可以从任何目录发出 CacheFS 统计命令。必须是超级用户才能发出 cachefswssize 命令。
在您创建日志文件时,CacheFS 统计信息将开始累积。工作会话结束时,使用 cachefslog -h 命令停止日志记录,如如何停止 CacheFS 日志记录所述。
使用 CacheFS 统计命令之前,必须执行以下操作:
使用 cfsadmin 命令设置高速缓存。
确定一段适当的时间,允许在此期间将统计信息收集在所创建的日志文件中。这段时间应该相当于一个典型工作会话的时间。例如,一天、一周或一个月。
选择日志文件的位置或路径。确保有足够的空间可以满足日志文件增长的需要。允许在日志文件中收集统计信息的预期时间越长,所需的空间就越多。
以下过程是按建议的顺序介绍的。您可以不按照此顺序来执行操作。
$ cachefslog -f log-file-path /mount-point |
设置日志记录。
指定日志文件的位置。日志文件是使用编辑器创建的标准文件,如 vi。
指定要为其收集统计信息的挂载点(CacheFS 文件系统)。
验证是否正确设置了日志文件。
$ cachefslog /mount-point |
以下示例说明如何设置 /var/tmp/samlog 日志文件,以收集有关 /home/sam 目录的统计信息。
$ cachefslog -f /var/tmp/samlog /home/sam /var/tmp/samlog: /home/sam |
显示记录 CacheFS 统计信息的位置。
$ cachefslog /mount-point |
其中 /mount-point 指定要查看其统计信息的 CacheFS 文件系统。
以下示例说明设置日志文件后将看到的内容。日志文件的位置是 /var/tmp/stufflog。
$ cachefslog /home/stuff /var/tmp/stufflog: /home/stuff |
以下示例说明没有为指定的文件系统设置日志文件。
$ cachefslog /home/zap not logged: /home/zap |
$ cachefslog -h /mount-point |
以下示例说明如何停止对 /home/stuff 的日志记录。
$ cachefslog -h /home/stuff not logged: /home/stuff |
如果得到的系统响应与此处指定的响应不同,则说明未成功停止日志记录。确定使用的日志文件名和挂载点是否正确。
可能希望检查是否需要增大高速缓存的大小。 或者,可能希望根据上次将 cachefslog 命令用于特定挂载点以来的活动,确定理想的高速缓存大小。
成为客户机系统上的超级用户。
查看当前的高速缓存大小和已记录的最大高速缓存大小。
# cachefswssize log-file-path |
有关更多信息,请参见 cachefswssize(1M)。
在以下示例中,end size 是发出 cachefswssize 命令时高速缓存的大小。high water size 是发生日志记录期间高速缓存的最大大小。
# cachefswssize /var/tmp/samlog /home/sam end size: 10688k high water size: 10704k / end size: 1736k high water size: 1736k /opt end size: 128k high water size: 128k /nfs/saturn.dist end size: 1472k high water size: 1472k /data/abc end size: 7168k high water size: 7168k /nfs/venus.svr4 end size: 4688k high water size: 5000k /data end size: 4992k high water size: 4992k total for cache initial size: 110960k end size: 30872k high water size: 30872k |
下表解释了在 CacheFS 文件系统的统计信息输出中显示的术语。
表 20–2 CacheFS 统计信息术语
输出术语 |
说明 |
---|---|
cache hit rate |
高速缓存命中率与高速缓存未命中率之比,后跟实际的命中次数和未命中次数。当用户希望对一个或多个文件执行操作,而且这个或这些文件实际上位于高速缓存中时,将发生高速缓存命中。当文件不在高速缓存中时,将发生高速缓存未命中。服务器上的负载是高速缓存未命中、一致性检查和修改 (modifies) 的总和。 |
consistency checks |
执行的一致性检查数,后跟通过次数和失败次数。 |
modifies |
修改操作数。例如,写入或创建。 |
使用 cachefsstat 命令查看统计信息。可以随时查看统计信息。例如,不必设置日志记录,即可查看统计信息。
查看 CacheFS 统计信息。
$ cachefsstat /mount-point |
其中 /mount-point 指定要查看其统计信息的 CacheFS 文件系统。
如果不指定挂载点,将显示所有已挂载的 CacheFS 文件系统的统计信息。
此示例说明如何查看有关已高速缓存的文件系统 /home/sam 的统计信息。
$ cachefsstat /home/sam cache hit rate: 73% (1234 hits, 450 misses) consistency checks: 700 (650 pass, 50 fail) modifies: 321 garbage collection: 0 |