nfsd 的管理接口¶
请注意,通常这些接口仅由 nfs-utils 中的实用程序使用。
nfsd 主要由“nfsd”文件系统下的伪文件控制,该文件系统通常挂载在 /proc/fs/nfsd/。
服务器始终通过第一次向 nfsd/threads 写入非零值来启动。
在此之前,可以通过写入 nfsd/portlist 来告知 NFSD 监听哪些套接字;该写入可以是
一个 ASCII 编码的文件描述符,它应该引用一个绑定(对于 tcp,还应监听)的套接字,或者
“传输名称 端口”,其中传输名称当前为“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 完成的。