nfsd 的管理接口¶
请注意,通常这些接口仅由 nfs-utils 中的工具使用。
nfsd 主要由“nfsd”文件系统下的伪文件控制,该文件系统通常挂载在 /proc/fs/nfsd/。
服务器总是通过首次向 nfsd/threads 写入非零值来启动。
在此之前,可以通过向 nfsd/portlist 写入来告知 NFSD 监听哪些套接字;写入的内容可以是
一个 ASCII 编码的文件描述符,该描述符应指向一个已绑定(且对 TCP 而言已监听)的套接字,或者
“transportname port”(传输协议名称 端口),其中 transportname 当前可以是“udp”、“tcp”或“rdma”之一。
如果 nfsd 在没有执行这些操作的情况下启动,它将创建在端口 2049 监听的一个 UDP 和一个 TCP 监听器(参见 nfsd_init_socks)。
启动时,nfsd 和 lockd 宽限期开始。通过向 nfsd/threads 写入 0 来关闭 nfsd。届时所有锁和状态都将被丢弃。
在启动和关闭之间,可以通过额外写入 nfsd/threads 或 nfsd/pool_threads 来调整线程数量的增减。
有关 nfsd/ 下的文件及其控制内容的更多详细信息,请参阅 fs/nfsd/nfsctl.c;其中大多数都有详细注释。
实现说明¶
请注意,RPC 服务器要求调用者序列化监听套接字的添加和移除,以及服务器的启动和关闭。对于 nfsd,这通过使用 nfsd_mutex 来完成。