FreeBSD 13 NFSv4 nfsuserd man(8) page 2019 中文译本

Next:   [Contents]

FreeBSD 13 NFSv4 nfsuserd man(8) page 2019 中文译本

Table of Contents


1 译者总注

李守中是开源软件理念坚定的支持者,所以译本虽不是软件,但依旧仿照开源软件的协议发布:

如果读者发现作品中有错误的地方,劳请来信指出。任何提高作品质量的建议李守中都将虚心接纳。

更多文章可于 李守中的主页 在线浏览。

本文档根据 FreeBSD 13.2 NFS nfsuserd manpage (man 8 nfsuserd) 翻译。

对于直译后无法准确描述软件行为的句子,李守中会根据软件行为对这些句子进行意译。对于必须添加很多内容才能实现意译的句子,李守中会尽量用直译 + 译者注 的方式来翻译。

受限于李守中的中文水平,在对句子进行意译时可能会偏离作者的本意,请读者谨慎参考。

有能力的读者可以从此链接 FreeBSD_13_NFSv4_nfsuserd_man(8)_page_2019.txt.zip 下载英文原文与本文做对照。

PS: 从遣词造句的混乱程度和排版的随意性来看,这篇文档的作者和 ‘man 4 nfsv4’ 的作者应该是同一个人…


2 名称

nfsuserd - 为 NFSv4 服务加载用户和用户组的信息到内核,让所有版本的 NFS 支持 manage-gids 功能。


3 摘要

nfsuserd [-domain <domain_name>] [-usertimeout <minutes>]
         [-usermax <max_cache_size>] [-verbose] [-force] [-manage-gids]
         [<num_servers>]

4 描述

nfsuserd 将用户和用户组信息加载到内核的 NFSv4 模块中。对于基于 Kerberos 的 NFSv4,nfsuserd 必须同时在 server 和 client 上启动才能正常运行。对于不使用 Kerberos 的 NFSv4,nfsuserd 必须运行,除非所有 server 和 client 都配置为将 uid/gid 编号放入 owner 和 owner_group 字符串中。

译者注: server 和 client 都配置为将 uid/gid 编号放入 owner 和 owner_group 字符串中指的是将 FreeBSD 13 NFSv4 man(4) page 2019 中文译本 中提到过的 vfs.nfs.enable_uidtostringvfs.nfsd.enable_stringtouid 两个参数配置为 1。

它还提供对 manage-gids 的支持,并且如果它被用于任何版本的 NFS,则必须在 server 上运行。

译者注: manage-gids 这个功能主要解决用户的属组超过 16 个以后,其余属组权限不生效的问题。

启动时,它将机器 DNS 域名、超时和缓存大小限制加载到内核中。然后它把用户和组信息预加载到缓存中,直到缓存大小上限并分叉 N 个子项 (默认为 4),在内核缓存未命中时使用这里的缓存来处理请求。nfsuserd:master 进程存在的唯一目的是结束 nfsuserd:slave 进程。向 nfsuserd:master 发送 SIGUSR1 信号即可停止 nfsuserd。

下面是可用的选项:

-domain <domain_name>

这个选项覆盖了默认的 DNS 域名,该域名使用机器主机名的后缀获得,或者如果该名称不是 FQDN,则使用 getaddrinfo(3) 报告的规范名称。

-usertimeout <minutes>

这个选项覆盖了默认的缓存实体的超时时间。设置更长的超时时间会有更好的性能,但如果有新的实例出现,则要等缓存过期之后才能看到新的实例。如果 user/group 数据库管理系统内几乎从不复用同样的用户名或者 uid,推荐设置更长的超时时间。默认值为 1 分钟。

-usermax <max_cache_size>

覆盖缓存大小的默认上限。缓存越大,使用的内核内存越多,性能越好。如果系统内存够用,将其设为组和密码数据库中条目数的总和。默认值为 200。

-verbose

如果使用了这个选项,syslog 里会有与 nfsuserd 相关的更多的日志信息。

-force

当 nfsuserd 异常退出,且无法启动时,必须使用这个选项以重新启动 nfsuserd 进程。

-manage-gids

让 NFS server 即 nfsd(8) 启用 manage-gids 功能。所有使用 AUTH_SYS 身份验证的 NFS 请求都从 RPC 请求中获取 uid,并使用服务器上 getgrouplist(3) 提供的该 uid 的组列表,而不是 RPC 身份验证器中提供的组列表。这可用于避免 AUTH_SYS 只支持 16 个组身份的限制。

<num_servers>

指定要创建几个 nfsuserd server 进程,最大值 20。默认值 4,已经够用了。NFS server 应当运行足够的 nfsuserd server 进程,最终效果应该是在 NFS server 运行足够的时间后,使用 ps(1) 命令看到有一个或者两个 nfsuserd server 进程几乎不使用任何资源nfsuserd server 进程运行太少会对性能产生重大影响,而运行太多只会占用一些资源,例如进程表条目和交换空间。


5 更多信息

getgrent(3), getgrouplist(3), getpwent(3), nfsv4(4), group(5), passwd(5), nfsd(8)


6 历史

nfsuserd 工具在 2009 年随 NFSv4 测试子系统被引入。


7 BUGS

nfsuserd 使用 getgrent(3), getgrouplist(3) 和 getpwent(3) 库调用来解析请求,如果 server 处理这些请求失败,并且库函数没有返回值,程序会卡住。查看 group(5) 和 passwd(5) 以获取如何访问数据库的信息。

FreeBSD 13.0 2019.04.06