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 完成的。