系统管理指南:设备和文件系统

第 20 章 使用 CacheFS 文件系统(任务)

本章介绍如何设置和维护 CacheFSTM 文件系统。

以下列出本章中的任务列表。

有关对 CacheFS 错误进行疑难解答的信息,请参见cachefspack 错误进行疑难解答


注 –

有关 NFS 版本 4 和 CacheFS 软件的重要信息,请参见NFS 版本 4 和 CacheFS 的兼容性问题


使用 CacheFS 文件系统的高级视图(任务列表)

使用此任务列表可确定有关使用 CacheFS 文件系统的所有任务。每个任务指向一系列其他任务,如创建并挂载 CacheFS 文件系统,以及压缩和维护高速缓存。

任务 

说明 

参考 

1. 创建并挂载 CacheFS 文件系统。 

创建高速缓存并在该高速缓存中挂载文件系统。 

创建并挂载 CacheFS 文件系统(任务列表)

2. 维护 CacheFS 文件系统。 

通过取消挂载、删除或重新创建高速缓存,显示和修改 CacheFS 文件系统。 

维护 CacheFS 文件系统(任务列表)

3. (可选)压缩和解压缩 CacheFS 文件系统。 

确定是否要压缩高速缓存和使用压缩列表。压缩高速缓存可确保某些文件和目录始终在高速缓存中进行更新。 

压缩已高速缓存的文件系统(任务列表)

4. 收集 CacheFS 统计信息。 

确定高速缓存性能和适当的高速缓存大小。 

收集 CacheFS 统计信息(任务列表)

CacheFS 文件系统概述

CacheFS 文件系统是一种通用的高速缓存机制,它通过减少服务器和网络负载来提高 NFS 服务器的性能和可伸缩性。由于设计为分层文件系统,CacheFS 文件系统可提供将一个文件系统高速缓存在另一个文件系统上的功能。在 NFS 环境中,CacheFS 文件系统增加客户机与服务器之比,减少服务器和网络负载,并提高客户机在点对点协议 (Point-to-Point Protocol, PPP) 等慢速链路上的性能。

CacheFS 文件系统的工作原理

在客户机系统上创建 CacheFS 文件系统,以便您高速缓存的文件系统可以由客户机在本地访问,而不是通过网络访问。下图说明使用 CacheFS 文件系统时所涉及的各组件的关系。

图 20–1 CacheFS 文件系统的工作原理

CacheFS 组件图。确定来自服务器的后台文件系统与客户机上已高速缓存的文件系统之间的关系。

后台文件系统是指定要在高速缓存中挂载的文件系统。后台文件系统可以是 NFS 或 HSFS(High Sierra File System,高层 Sierra 文件系统)。当用户尝试访问属于后台文件系统的文件时,这些文件放置在高速缓存中。前台文件系统是在高速缓存中挂载并从本地挂载点访问的文件系统。前台文件系统的类型必须是 UFS。

对用户而言,如果是首次请求使用 CacheFS 文件系统中的文件,响应可能会显得较慢。但是,如果以后再次使用同一文件,则响应会变快。

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 数。

通常,不应更改上述任何参数值。它们设置为缺省值是为了实现最佳的高速缓存行为。但是,如果在前台文件系统中有一些高速缓存未使用的空间,且您希望将它用于其他某个文件系统,则可能需要修改 maxblocksmaxfiles 值。使用 cfsadmin 命令可以实现此操作。例如:


$ cfsadmin -o maxblocks=60

创建并挂载 CacheFS 文件系统(任务列表)

使用此任务列表中的过程可创建并挂载 CacheFS 文件系统。

任务 

说明 

参考 

1. 共享要高速缓存的文件系统。 

验证是否已共享要高速缓存的文件系统。 

share(1M)

2. 创建高速缓存。 

使用 cfsadmin 命令创建高速缓存。

如何创建高速缓存

3. 在高速缓存中挂载文件系统。 

使用以下方法之一在高速缓存中挂载文件系统: 

 

 

使用 mount 命令挂载 CacheFS 文件系统。

如何挂载 CacheFS 文件系统 (mount)

 

通过编辑 /etc/vfstab 文件挂载 CacheFS 文件系统。

如何挂载 CacheFS 文件系统 (/etc/vfstab)

 

使用 AutoFS 挂载已高速缓存的文件系统。 

如何挂载 CacheFS 文件系统 (AutoFS)

Procedure如何创建高速缓存

  1. 成为客户机系统上的超级用户。

  2. 创建高速缓存。


    # cfsadmin -c /cache-directory
    

    其中 cache-directory 指示高速缓存所驻留的目录的名称。

    有关更多信息,请参见 cfsadmin(1M)


    注 –

    在创建高速缓存后,不要在高速缓存目录本身内执行任何操作。这样做可能在 CacheFS 软件内导致冲突。



示例 20–1 创建高速缓存

以下示例说明如何使用高速缓存参数的缺省值在 /local/mycache 目录中创建高速缓存。


# mkdir /local

# cfsadmin -c /local/mycache

在高速缓存中挂载文件系统

在高速缓存中指定要挂载的文件系统,以便用户可以在本地访问该文件系统中的文件。在用户访问这些文件之前,它们实际上并未放置在高速缓存中。

下表介绍挂载 CacheFS 文件系统的三种方法。

CacheFS 文件系统的挂载类型 

CacheFS 挂载类型的使用频率 

使用 mount 命令

每次系统重新引导以便访问同一文件系统时都使用。 

编辑 /etc/vfstab 文件

仅一次。/etc/vfstab 文件在系统重新引导后保持不变。

使用 AutoFS 

仅一次。AutoFS 映射在系统重新引导后保持不变。  

选择最适合您环境的文件系统挂载方法。

只能挂载共享的文件系统。有关共享文件系统的信息,请参见 share(1M)


注 –

在 CacheFS 文件系统中不支持对根 (/) 文件系统和 /usr 文件系统进行高速缓存。


Procedure如何挂载 CacheFS 文件系统 (mount)

  1. 成为客户机系统上的超级用户。

  2. 如有必要,请创建挂载点。


    # mkdir /mount-point
    

    可以从任何位置创建挂载点,但是它必须是 UFS 文件系统所在的位置。与 mount 命令一起使用的 CacheFS 选项(如下一步所示),确定将创建的挂载点高速缓存在指定的高速缓存目录中。

  3. 在高速缓存中挂载文件系统。


    # mount -F cachefs -o backfstype=fstype,cachedir=/cache-directory[,options]
    
    /back-filesystem /mount-point
    
    fstype

    指示后台文件系统的文件系统类型,其类型可以是 NFSHSFS

    /cache-directory

    指示高速缓存所驻留的 UFS 目录的名称。此名称与在如何创建高速缓存中创建高速缓存时指定的名称相同。

    options

    指定在高速缓存中挂载文件系统时可以包括的其他挂载选项。 有关 CacheFS 挂载选项的列表,请参见 mount_cachefs(1M)

    /back-filesystem

    指定要高速缓存的后台文件系统的挂载点。如果后台文件系统是 NFS 文件系统,则必须指定从其挂载文件系统的服务器的主机名和要高速缓存的文件系统的名称,并用冒号分隔这两个名称。例如 merlin: /data/abc

    /mount-point

    指示在其中挂载文件系统的目录。

  4. 验证实际上是否已挂载所创建的高速缓存。


    # 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 统计信息


示例 20–2 挂载 CacheFS 文件系统 (mount)

以下示例说明如何在名为 /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

Procedure如何挂载 CacheFS 文件系统 (/etc/vfstab)

  1. 成为客户机系统上的超级用户。

  2. 使用编辑器,在 /etc/vfstab 文件中指定要挂载的文件系统。

    请参见下面的示例。

    有关 /etc/vfstab 文件的更多信息,请参见/etc/vfstab 文件的字段说明

  3. 挂载 CacheFS 文件系统。


    # mount /mount-point
    

    或者,重新引导系统。


示例 20–3 挂载 CacheFS 文件系统 (/etc/vfstab)

以下示例说明来自远程系统 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

Procedure如何挂载 CacheFS 文件系统 (AutoFS)

通过在自动挂载映射中指定 -fstype=cachefs 挂载选项,可以使用 AutoFS 在高速缓存中挂载文件系统。请注意,CacheFS 挂载选项(例如 backfstypecachedir)也是在自动挂载映射中指定的。

有关自动挂载映射的详细信息,请参见《系统管理指南:网络服务》中的“Autofs 管理的任务概述”automount(1M)

  1. 成为客户机系统上的超级用户。

  2. 使用编辑器,将以下行添加到 auto_direct 映射:


    /mount-point -fstype=cachefs,cachedir=/directory,backfstype=nfs 
    
    server:/file-system
    
  3. 使用编辑器,将以下行添加到 auto_master 映射:


    /-

    /- 项是一个指针,用于检查 auto_direct 映射。

  4. 重新引导系统。

  5. 通过转到在高速缓存中挂载的文件系统再列出其内容,验证是否正确创建了该项。


    # cd /filesystem
    
    # ls
    

示例 20–4 挂载 CacheFS 文件系统 (AutoFS)

以下 auto_direct 项将在/docs 目录中自动挂载 CacheFS 文件系统。


/docs -fstype=cachefs,cachedir=/local/mycache,backfstype=nfs merlin:/docs

维护 CacheFS 文件系统(任务列表)

设置 CacheFS 文件系统后,几乎不需要维护它。如果需要对 CacheFS 文件系统执行维护任务,请使用此任务列表中的可选过程。

任务 

说明 

参考 

修改 CacheFS 文件系统。 

通过取消挂载、删除或重新创建高速缓存,修改 CacheFS 文件系统的行为。 

修改 CacheFS 文件系统

显示 CacheFS 文件系统信息。 

使用 cfsadmin 命令显示有关 CacheFS 文件系统的信息。

如何显示有关 CacheFS 文件系统的信息

执行一致性检查。 

使用 cfsadmin 命令按需执行一致性检查。

如何根据需要指定高速缓存一致性检查

删除 CacheFS 文件系统。 

使用 umount 命令和 cfsadmin 命令删除 CacheFS 文件系统。

如何删除 CacheFS 文件系统

检查 CacheFS 文件系统的完整性。 

使用 fsck_cachefs 命令检查 CacheFS 文件系统的完整性。

如何检查 CacheFS 文件系统的完整性

维护 CacheFS 文件系统

本节介绍如何维护 CacheFS 文件系统。

如果要使用 /etc/vfstab 文件挂载文件系统,请通过在 /etc/vfstab 文件中编辑文件系统选项来修改高速缓存。如果要使用 AutoFS,请通过在 AutoFS 映射中编辑文件系统选项来修改高速缓存。

修改 CacheFS 文件系统

在高速缓存中修改文件系统时,需要先删除高速缓存,再重新创建它。还可能需要在单用户模式下重新引导计算机,具体取决于共享和访问文件系统的方式。

在以下示例中,使用为 /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

#

Procedure如何显示有关 CacheFS 文件系统的信息

  1. 成为客户机系统上的超级用户。

  2. 显示有关在指定高速缓存下高速缓存的所有文件系统的信息。


    # cfsadmin -l /cache-directory
    

    其中 /cache-directory 是高速缓存所驻留的目录的名称。


示例 20–5 显示有关 CacheFS 文件系统的信息

以下示例说明有关 /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 软件定期检查在高速缓存中存储的文件的一致性。为检查一致性,CacheFS 软件将最新的修改时间与以前的修改时间进行比较。如果这两个修改时间不同,则从高速缓存中清除目录或文件的所有数据和属性。然后,从后台文件系统检索新的数据和属性。

按需执行的一致性检查

仅当显式请求对使用 -o demandconst 选项挂载的文件系统进行检查时,才执行一致性检查。如果使用此选项在高速缓存中挂载文件系统,之后就可以使用带有-s 选项的 cfsadmin 命令来请求一致性检查。缺省情况下,在访问文件时逐个对文件执行一致性检查。如果未访问文件,则不执行检查。使用 -o demandconst 选项可避免出现在网络中执行大量一致性检查的情况。

有关更多信息,请参见 mount_cachefs(1M)

Procedure如何根据需要指定高速缓存一致性检查

  1. 成为客户机系统上的超级用户。

  2. 在高速缓存中挂载文件系统,然后指定高速缓存一致性检查。


    # mount -F cachefs -o backfstype=nfs,cachedir=/directory,demandconst
    
    server:/file-system /mount-point
    
  3. 启动对特定 CacheFS 文件系统的一致性检查。


    # cfsadmin -s /mount-point
    

Procedure如何删除 CacheFS 文件系统

  1. 成为客户机系统上的超级用户。

  2. 取消挂载 CacheFS 文件系统。


    # umount /mount-point
    

    其中 /mount-point 指定要删除的 CacheFS 文件系统。

  3. 确定 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
    
    #
  4. 从指定的高速缓存中删除 CacheFS 文件系统。


    # cfsadmin -d cache-ID /cache-directory
    
    cache-ID

    指示 CacheFS 文件系统的名称,即 cfsadmin -l 输出的最后一行。 有关更多信息,请参见如何显示有关 CacheFS 文件系统的信息。通过将 cache-ID 指定为 all,可以删除特定高速缓存中的所有 CacheFS 文件系统。

    /cache-directory

    指定高速缓存所驻留的目录。

  5. 验证是否已删除 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)

  6. 更新高速缓存的资源计数。


    # fsck -F cachefs /cache-directory
    

    有关更多信息,请参见如何检查 CacheFS 文件系统的完整性


示例 20–6 删除 CacheFS 文件系统

以下示例说明如何从高速缓存中删除文件系统。


# umount /cfssrc

# cfsadmin -l /cfssrc

# cfsadmin -d _dev_dsk_c0t6d0s0:_cfssrc

# cfsadmin -l

# fsck -F cachefs /cache-directory

Procedure如何检查 CacheFS 文件系统的完整性

使用 fsck 命令可检查 CacheFS 文件系统的完整性。CacheFS 版本的 fsck 命令可自动更正问题,而不要求用户进行交互。应该无需对 CacheFS 文件系统手动运行 fsck 命令,因为 fsck 命令在引导时或挂载文件系统时自动运行。如果要手动检查完整性,可以使用以下过程。

有关更多信息,请参见 fsck_cachefs(1M)

  1. 成为客户机系统上的超级用户。

  2. 检查指定高速缓存中的文件系统。


    # fsck -F cachefs [-m -o noclean] /cache-directory
    
    -m

    导致 fsck 命令检查 CacheFS 文件系统,而不进行任何修复。

    -o noclean

    仅对 CacheFS 文件系统进行强制检查。不进行任何修复。

    /cache-directory

    指示高速缓存所驻留的目录的名称。


示例 20–7 检查 CacheFS 文件系统的完整性

以下示例说明如何检查在 /local/mycache 高速缓存中高速缓存的文件系统。


# fsck -F cachefs /local/mycache

#

压缩已高速缓存的文件系统(任务列表)

以下任务列表介绍与压缩 CacheFS 文件系统关联的过程。其中的所有过程都是可选的。

任务 

说明 

参考 

在高速缓存中压缩文件。 

确定要在高速缓存中装入的文件和目录,然后对它们进行压缩。压缩可确保这些文件的最新副本在高速缓存中是可用的。 

如何在高速缓存中压缩文件

创建压缩列表。 

如果不希望指定要在高速缓存中压缩的每个单独文件,请创建压缩列表。 

如何创建压缩列表

使用压缩列表在高速缓存中压缩文件。 

指定要在高速缓存中压缩的文件的压缩列表的名称。 

如何使用压缩列表在高速缓存中压缩文件

从高速缓存中解压缩文件或压缩列表。 

从高速缓存中删除不再需要的文件。 

如何从高速缓存中解压缩文件或压缩列表如何从高速缓存中解压缩文件或压缩列表

显示已压缩文件的信息。 

查看有关已压缩文件的信息,包括其压缩状态。 

如何显示已压缩文件的信息

压缩 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

Procedure如何在高速缓存中压缩文件

    在高速缓存中压缩文件。


    $ cachefspack -p filename
    
    -p

    指定要压缩一个或多个文件。此选项也是缺省选项。

    filename

    指定要在高速缓存中压缩的文件或目录的名称。指定目录时,也将压缩该目录的所有子目录。有关更多信息,请参见 cachefspack(1M)


示例 20–8 示例-在高速缓存中压缩文件

以下示例说明在高速缓存中压缩 projects 文件。


$ cachefspack -p projects

以下示例说明在高速缓存中压缩三个文件。


$ cachefspack -p projects updates master_plan

以下示例说明在高速缓存中压缩一个目录。


$ cachefspack -p /data/abc/bin

Procedure如何显示已压缩文件的信息

    显示已压缩文件的信息。


    $ cachefspack -i[v] cached-filename-or-directory
    
    -i

    指定希望查看有关已压缩文件的信息。

    -v

    是详细选项。

    cached-filename-or-directory

    指定要显示其信息的文件或目录的名称。


示例 20–9 显示已压缩文件的信息

以下示例说明已成功压缩 doc_file 文件。


$ cachefspack -i doc_file

cachefspack: file doc_file marked packed YES, packed YES

在以下示例中,/data/abc 目录包含 bin 子目录。bin 子目录包含以下三个文件:bigmedium small。虽然指定要压缩 bigsmall 文件,但是未压缩它们。成功压缩了 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 命令的一项功能是能够创建压缩列表。

压缩列表包含要在高速缓存中压缩的文件或目录。如果一个目录包含在压缩列表中,则也将压缩它的所有子目录和文件。

利用此功能,就可以节省必须指定要在高速缓存中压缩的每个单独文件的时间。

Procedure如何创建压缩列表

    使用 vi 创建压缩列表文件。

    压缩列表文件使用的格式与 filesync 命令的格式相同。有关更多信息,请参见 filesync(1)

    以下是压缩列表的两项功能:

    • 可以将压缩列表中的文件标识为正则表达式而不是字面上的文件名,便可不必指定每个单独的文件名。

    • 通过确保仅压缩您所拥有的那些文件,可以压缩共享目录中的文件。

    有关使用这些功能的更多信息,请参见 cachefspack(1M)


示例 20–10 创建压缩列表

以下示例说明压缩列表文件的内容:


BASE /home/ignatz

LIST plans

LIST docs

IGNORE *.ps

Procedure如何使用压缩列表在高速缓存中压缩文件

    对压缩列表中的文件进行压缩。


    $ cachefspack -f packing-list
    
    -f

    指定希望使用压缩列表。

    packing-list

    指定压缩列表的名称。


示例 20–11 使用压缩列表在高速缓存中压缩文件

此示例将 list.pkg 文件用作 cachefspack 命令的压缩列表。


$ cachefspack -f list.pkg

从高速缓存中解压缩文件或压缩列表

可能需要从高速缓存中删除或解压缩文件。也许一些文件或目录的优先级高于其他文件或目录,因此需要解压缩不太关键的文件。例如,已完成一个项目,并归档了与该项目关联的文件。现在正从事一个新项目,因此使用一组新文件。

Procedure如何从高速缓存中解压缩文件或压缩列表

    从高速缓存中解压缩文件或压缩列表。


    $ cachefspack -u filename | -U cache-directory
    
    -u

    指定要解压缩的一个或多个文件。必须使用此选项指定一个文件名。

    filename

    指定要在高速缓存中解压缩的文件或压缩列表的名称。

    -U

    指定希望解压缩高速缓存中的所有文件。

    有关更多信息,请参见 cachefspack(1M)


示例 20–12 从高速缓存中解压缩文件或压缩列表

以下示例说明从高速缓存中解压缩文件 /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 命令时,可能会看到以下错误消息。


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 统计信息(任务列表)

以下任务列表说明收集 CacheFS 统计信息所涉及的步骤。其中的所有过程都是可选的。

任务 

说明 

参考 

设置日志记录。 

使用 cachefslog 命令设置对 CacheFS 文件系统的日志记录。

如何设置 CacheFS 日志记录

查找日志文件。 

使用 cachefslog 命令查找日志文件。

如何查找 CacheFS 日志文件

停止日志记录。 

使用 cachefslog 命令停止日志记录。

如何停止 CacheFS 日志记录

查看高速缓存大小。 

使用 cachefswssize 命令查看高速缓存大小。

如何查看工作集(高速缓存)大小

查看高速缓存统计信息。 

使用 cachefsstat 命令查看高速缓存统计信息。

如何查看 CacheFS 统计信息

收集 CacheFS 统计信息

通过收集 CacheFS 统计信息,可以执行以下操作:

这些统计信息有助于确定如何平衡高速缓存大小和所需的高速缓存性能。

下表介绍 CacheFS 统计命令。

命令 

说明 

手册页 

cachefslog

指定日志文件的位置。此命令还显示当前记录统计信息的位置,并允许您停止日志记录。  

cachefslog(1M)

cachefswssize

解释日志文件,给出建议的高速缓存大小。  

cachefswssize(1M)

cachefsstat

显示有关特定 CacheFS 文件系统或所有 CacheFS 文件系统的统计信息。命令输出中提供的信息是直接从高速缓存中提取的。  

cachefsstat(1M)


注 –

可以从任何目录发出 CacheFS 统计命令。必须是超级用户才能发出 cachefswssize 命令。


在您创建日志文件时,CacheFS 统计信息将开始累积。工作会话结束时,使用 cachefslog -h 命令停止日志记录,如如何停止 CacheFS 日志记录所述。

使用 CacheFS 统计命令之前,必须执行以下操作:


注 –

以下过程是按建议的顺序介绍的。您可以不按照此顺序来执行操作。


Procedure如何设置 CacheFS 日志记录

  1. 设置日志记录。


    $ cachefslog -f log-file-path /mount-point
    
    -f

    设置日志记录。

    log-file-path

    指定日志文件的位置。日志文件是使用编辑器创建的标准文件,如 vi。

    /mount-point

    指定要为其收集统计信息的挂载点(CacheFS 文件系统)。

  2. 验证是否正确设置了日志文件。


    $ cachefslog /mount-point
    

示例 20–13 设置 CacheFS 日志记录

以下示例说明如何设置 /var/tmp/samlog 日志文件,以收集有关 /home/sam 目录的统计信息。


$ cachefslog -f /var/tmp/samlog /home/sam

  /var/tmp/samlog: /home/sam

Procedure如何查找 CacheFS 日志文件

    显示记录 CacheFS 统计信息的位置。


    $ cachefslog /mount-point
    

    其中 /mount-point 指定要查看其统计信息的 CacheFS 文件系统。

    也可以使用不带选项的 cachefslog 命令,查找特定挂载点的日志文件。


示例 20–14 查找 CacheFS 日志文件

以下示例说明设置日志文件后将看到的内容。日志文件的位置是 /var/tmp/stufflog


$ cachefslog /home/stuff

	 /var/tmp/stufflog: /home/stuff

以下示例说明没有为指定的文件系统设置日志文件。


$ cachefslog /home/zap

	not logged: /home/zap 

如何停止 CacheFS 日志记录

使用 cachefslog -h 选项可停止日志记录。


$ cachefslog -h /mount-point

以下示例说明如何停止对 /home/stuff 的日志记录。


$ cachefslog -h /home/stuff

not logged: /home/stuff

如果得到的系统响应与此处指定的响应不同,则说明未成功停止日志记录。确定使用的日志文件名和挂载点是否正确。

Procedure如何查看工作集(高速缓存)大小

可能希望检查是否需要增大高速缓存的大小。 或者,可能希望根据上次将 cachefslog 命令用于特定挂载点以来的活动,确定理想的高速缓存大小。

  1. 成为客户机系统上的超级用户。

  2. 查看当前的高速缓存大小和已记录的最大高速缓存大小。


    # cachefswssize log-file-path
    

    有关更多信息,请参见 cachefswssize(1M)


示例 20–15 查看工作集(高速缓存)大小

在以下示例中,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 统计信息

下表解释了在 CacheFS 文件系统的统计信息输出中显示的术语。

表 20–2 CacheFS 统计信息术语

输出术语 

说明 

cache hit rate

高速缓存命中率与高速缓存未命中率之比,后跟实际的命中次数和未命中次数。当用户希望对一个或多个文件执行操作,而且这个或这些文件实际上位于高速缓存中时,将发生高速缓存命中。当文件不在高速缓存中时,将发生高速缓存未命中。服务器上的负载是高速缓存未命中、一致性检查和修改 (modifies) 的总和。

consistency checks

执行的一致性检查数,后跟通过次数和失败次数。 

modifies

修改操作数。例如,写入或创建。 

Procedure如何查看 CacheFS 统计信息

使用 cachefsstat 命令查看统计信息。可以随时查看统计信息。例如,不必设置日志记录,即可查看统计信息。

    查看 CacheFS 统计信息。


    $ cachefsstat /mount-point
    

    其中 /mount-point 指定要查看其统计信息的 CacheFS 文件系统。

    如果不指定挂载点,将显示所有已挂载的 CacheFS 文件系统的统计信息。


示例 20–16 查看 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