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