我正在我的机器上安装 NFS 文件系统。如何确定服务器使用的 NFS 协议版本?我无权访问 NFS 服务器计算机,但我在客户端计算机上拥有 root 权限。
我可以在客户端计算机上运行什么程序来识别服务器正在使用什么版本的 NFS 协议,或者它支持什么版本?
我无法在/var/log/messages
内核调试输出中找到任何有用的信息(dmesg
)。
我尝试过 running nfsstat
,但我不确定它是否为我提供了任何有用的信息。但是,当我运行nfsstat -s
请求有关服务器的信息时,我没有看到任何有用的信息:
# nfsstat -s
Server rpc stats:
calls badcalls badfmt badauth badclnt
0 0 0 0 0
当我跑去nfsstat -c
请求有关客户端的信息时,我确实看到了一些有关 的信息Client nfs v3
,但我不确定如何解释它。这是否告诉我有关客户端计算机和 NFS 服务器之间使用的协议的任何信息?这是否意味着我当前使用的是 NFS 协议 v3?它是否告诉我服务器支持哪些版本的 NFS 协议,例如 NFS v4?
答案1
该nfsstat -c
程序将显示实际使用的 NFS 版本。
如果你运行rpcinfo -p {server}
你会看到所有 RPC 程序的所有版本服务器支持。在我的系统上,我得到以下输出:
$ rpcinfo -p localhost
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
...
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
...
这表明我的 NFS 服务器(localhost
在本例中)通过 UDP 和 TCP 提供 NFS 协议的版本 2、3 和 4。
答案2
根据您的操作系统和版本,可能有不同的方法来检查它。
nfsstat:
# nfsstat -m
/mnt/share from 10.0.0.1:/mnt/share
Flags: rw,relatime,vers=3,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=10.0.0.1,mountvers=3,mountport=30924,mountproto=udp,local_lock=none,addr=10.0.0.1
但你可以肯定
# grep nfs /proc/mounts
10.0.0.1:/mnt/share /mnt/share nfs rw,relatime,vers=3,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=10.0.0.1,mountvers=3,mountport=30924,mountproto=udp,local_lock=none,addr=10.0.0.1
这显然是相同的输出。
它显示vers=3
在服务器上,并且mountvers=3
.
答案3
可以打开/etc/nfsmount.conf
并获取默认版本和支持版本的信息。