手册页部分 1M: 系统管理命令

退出打印视图

更新时间: 2014 年 7 月
 
 

nfslogd(1M)

名称

nfslogd - nfs 日志记录守护进程

用法概要

/usr/lib/nfs/nfslogd

描述

nfslogd 守护进程向 Solaris NFS 服务器提供操作日志记录。nfslogd 守护进程的工作是通过分析 NFS 服务器处理的 RPC 操作来生成活动日志。仅会为在导出时启用了日志记录的文件系统生成日志。这是在文件系统导出时通过share_nfs(1M) 命令指定的。

使用 NFS 版本 4 的 Solaris 计算机不支持 NFS 服务器日志记录。

日志文件中的每条记录包括一个时间戳、客户机系统的 IP 地址(或主机名,如果可解析)、对其执行操作的文件或目录名称,以及操作的类型。在基本格式中,操作可以是一个输入 (i) 或输出 (o) 操作。NFS 服务器日志的基本格式与 Washington University FTPd 守护进程生成的日志格式兼容。可以对日志格式进行扩展以包括目录修改操作,例如 mkdirrmdirremove。扩展的格式与 Washington University FTPd 守护进程格式不兼容。有关详细信息,请参见nfslog.conf(4)

NFS 服务器日志记录机制分为两个阶段。第一个阶段是由 NFS 内核模块执行的,它将原始 RPC 请求及其结果记录在由永久存储支持的工作缓冲区中。工作缓冲区的位置是在 /etc/nfs/nfslog.conf 文件中指定的。有关更多信息,请参见nfslog.conf(4)。第二个阶段涉及到 nfslogd 用户级守护进程,它定期读取工作缓冲区,解释原始 RPC 信息,将相关的 RPC 操作分组到单个事务记录中,并生成输出日志。然后,nfslogd 守护进程将进入休眠状态,等待更多的信息记录到工作缓冲区中。可以通过在 /etc/default/nfslogd 中修改 IDLE_TIME 参数来配置该守护进程的休眠时间量。工作缓冲区供 nfslogd 守护进程内部使用。

NFS 操作使用文件句柄而不是路径名作为参数。因此,nfslogd 守护进程需要维护包含文件句柄到路径映射的数据库,以便记录与操作关联的路径名而不是记录对应的文件句柄。当客户机执行查找操作或执行会向客户机返回文件句柄的其他 NFS 操作时,将向该数据库中添加一个文件句柄条目。

在 NFS 客户机从服务器获取文件句柄后,它可以无限期地保留该文件句柄,以便以后将其用作对文件或目录执行的 NFS 操作的参数。NFS 客户机甚至在服务器重新引导多次后还可以使用该句柄。因为该数据库在服务器重新引导后仍然需要保留,所以该数据库由永久存储来支持。该数据库的位置是由 /etc/nfs/nfslog.conf 文件中的 fhtable 参数指定的。该数据库供 nfslogd 守护进程内部使用。

为了将文件句柄映射数据库的大小保持为可管理的,nfslogd 会定期删改该数据库。它会删除超过指定的时间量未访问的文件句柄条目。/etc/default/nfslogd 中的 PRUNE_TIMEOUT 可配置参数指定删改进程的两次后续运行之间的时间间隔长度。如果某个文件句柄记录自上次执行删改进程后未被使用,则会删除该文件句柄记录。通过将 PRUNE_TIMEOUT 设置为 INT_MAX 可以有效地禁用该数据库的删改。

启用了删改功能时,始终会存在以下风险:客户机可能会将某个文件句柄保留超过 PRUNE_TIMEOUT 的时间并且在匹配的数据库中的匹配记录被删除后对该文件句柄执行 NFS 操作。在这种情况下,将无法解析文件句柄的路径名,并且日志中将包括文件句柄而不是路径名。

有各种可配置的参数可以影响 nfslogd 守护进程的行为。可以在 /etc/default/nfslogd 中找到这些参数,其描述如下:

UMASK

为日志文件、工作缓冲区文件和文件句柄映射数据库设置文件模式。

MIN_PROCESSING_SIZE

指定在处理工作信息并向日志文件进行写入之前,缓冲区文件必须达到的最小大小(以字节为单位)。MIN_PROCESSING_SIZE 的值必须介于 1 和 ulimit 之间。

IDLE_TIME

指定在等待更多信息放置到缓冲区文件中时,守护进程应休眠的时间量(以秒为单位)。IDLE_TIME 还决定了重新读取配置文件的频率。IDLE_TIME 的值必须介于 1 和 INT_MAX 之间。

MAX_LOGS_PRESERVE

nfslogd 会定期回收其日志。MAX_LOGS_PRESERVE 指定要保存的最大日志文件数目。当达到 MAX_LOGS_PRESERVE 时,在创建新日志文件时将覆盖最旧的文件。这些文件将以编号式扩展名保存,从 filename.0 开始。最旧的文件将具有最高的编号式扩展名,最大值等于为 MAX_LOGS_PRESERVE 配置的值。MAX_LOGS_PRESERVE 的值必须介于 1 和 INT_MAX 之间。

CYCLE_FREQUENCY

指定回收日志文件的频率(以小时为单位)。CYCLE_FREQUENCY 用来确保日志文件不会变得过大。CYCLE_FREQUENCY 的值必须介于 1 和 INT_MAX 之间。

MAPPING_UPDATE_INTERVAL

指定对文件句柄到路径映射表中的记录进行更新的时间间隔(以秒为单位)。不是在每次访问记录时都更新该记录的 atime,只有基于此参数判定它已老化时才会对其进行更新。删改例程使用记录访问时间来确定是否应从数据库中删除记录。此参数的值必须介于 1 和 INT_MAX 之间。

PRUNE_TIMEOUT

指定数据库记录何时超时(以小时为单位)。如果自上次访问记录以来经过的时间超过了 PRUNE_TIMEOUT,则可以从数据库中删改该记录。PRUNE_TIMEOUT 的缺省值是 168 小时(7 天)。PRUNE_TIMEOUT 的值必须介于 1 和 INT_MAX 之间。

退出状态

将返回以下退出值:

0

守护进程启动成功。

1

守护进程启动失败。

文件

/etc/nfs/nfslogtab

/etc/nfs/nfslog.conf

/etc/default/nfslogd

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
service/file-system/nfs

另请参见

share_nfs(1M)nfslog.conf(4)attributes(5)