首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nfs的评级从4.2降到4.0,这取决于客户端机器,而理论上可以达到4.2 --为什么?

nfs的评级从4.2降到4.0,这取决于客户端机器,而理论上可以达到4.2 --为什么?
EN

Server Fault用户
提问于 2021-05-04 11:18:53
回答 1查看 1.2K关注 0票数 0

我在玩NFS来测试一些客户端选项。

在讨论“选项”问题之前,我只是测试两个客户端到给定服务器的“默认”连接,所以稍后我将能够比较我与默认行为相比的可选行为。

但我注意到,即使客户端都基于ubuntu:20.04,并且都安装了相同版本的nfs-common,它们的行为也有所不同。

下面是设置:

服务器

Ubuntu20.40在一个显示IP 192.168.3.81的桥接病毒盒中。服务器是ubuntu20.04的默认包。

这些是已安装的NFS包:

代码语言:javascript
复制
xavi@iridio:~$ apt list --installed | grep nfs

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libnfsidmap2/focal,now 0.25-5.1ubuntu1 amd64 [installed,automatic]
nfs-common/focal-updates,focal-security,now 1:1.3.4-2.5ubuntu3.3 amd64 [installed,automatic]
nfs-kernel-server/focal-updates,focal-security,now 1:1.3.4-2.5ubuntu3.3 amd64 [installed]
xavi@iridio:~$

这是导出文件:

代码语言:javascript
复制
xavi@iridio:~$ cat /etc/exports
/files/repos/sharedfolder *(rw,sync,no_subtree_check,no_root_squash,insecure)
xavi@iridio:~$

客户端#1(虚拟盒)

在virtualbox上的同一台服务器机器可以作为客户端对自己进行测试。在安装时,它确实使用了协议4.2:

代码语言:javascript
复制
xavi@iridio:~$ sudo mount -vvvv 192.168.3.81:/files/repos/sharedfolder iridio/
mount.nfs: timeout set for Tue May  4 10:41:51 2021
mount.nfs: trying text-based options 'vers=4.2,addr=192.168.3.81,clientaddr=192.168.3.81'
xavi@iridio:~$ echo $?
0
xavi@iridio:~$

这是预期的行为:v4.2的客户端能力,v4.2的服务器能力,然后通过v4.2连接。

VBox中的内核是5.4:

代码语言:javascript
复制
xavi@iridio:~$ uname -a
Linux iridio 5.4.0-72-generic #80-Ubuntu SMP Mon Apr 12 17:35:00 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
xavi@iridio:~$

客户端#2(码头)

然后,在主机上启动一个码头容器,它也是基于原始ubuntu:20.04并安装nfs-common的。以下是完整的会议:

代码语言:javascript
复制
xavi@msi-laptop:~$ # Launch a fresh container from an empty official stock ubuntu image:
xavi@msi-laptop:~$ 
xavi@msi-laptop:~$ docker run -it --rm --name=nfsclient --hostname=nfsclient --privileged=true ubuntu:20.04
root@nfsclient:/# apt-get update > /dev/null
root@nfsclient:/# apt-get install -y nfs-common > /dev/null
debconf: delaying package configuration, since apt-utils is not installed
root@nfsclient:/#
root@nfsclient:/#
root@nfsclient:/# # Check installed nfs packages. Client is the same than vbox.
root@nfsclient:/#
root@nfsclient:/# apt list --installed | grep nfs

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libnfsidmap2/focal,now 0.25-5.1ubuntu1 amd64 [installed,automatic]
nfs-common/focal-updates,focal-security,now 1:1.3.4-2.5ubuntu3.3 amd64 [installed]
root@nfsclient:/#
root@nfsclient:/#
root@nfsclient:/# # Now mount, but does tries 4.2, fails, tries 4.1, fails then 4.0 and succeeds.
root@nfsclient:/#
root@nfsclient:/# mkdir iridio
root@nfsclient:/# mount -vvvv 192.168.3.81:/files/repos/sharedfolder iridio/
mount.nfs: timeout set for Tue May  4 10:55:35 2021
mount.nfs: trying text-based options 'vers=4.2,addr=192.168.3.81,clientaddr=172.17.0.10'
mount.nfs: mount(2): Invalid argument
mount.nfs: trying text-based options 'vers=4.1,addr=192.168.3.81,clientaddr=172.17.0.10'
mount.nfs: mount(2): Invalid argument
mount.nfs: trying text-based options 'vers=4.0,addr=192.168.3.81,clientaddr=172.17.0.10'
root@nfsclient:/# echo $?
0
root@nfsclient:/#

码头的内核是4.19。实际上,在Windows 10 pro上WSL-2上的Ubuntu 20.04上运行着对接引擎:

代码语言:javascript
复制
root@nfsclient:/# uname -a
Linux nfsclient 4.19.128-microsoft-standard #1 SMP Tue Jun 23 12:58:10 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
root@nfsclient:/#

问题

  • 为什么两个ubuntu:20.04 (两者都具有非常精确的nfs-common/focal-updates,focal-security,now 1:1.3.4-2.5ubuntu3.3 amd64版本)的行为方式是:一个通过v4.2连接到服务器,另一个通过v4.0连接服务器?
  • 版本是否取决于我所拥有的内核?
  • 我看到,在尝试v4.2v4.1版本时,有一种说法是“无效参数”。我是否应该通过任何额外的选项才能通过v4.2进行连接?
EN

回答 1

Server Fault用户

回答已采纳

发布于 2021-05-04 20:17:10

答案在问题中..。

nfs实用程序的现代版本在默认情况下总是尝试使用最高的nfs版本,现在是4.2。

但是,挂载命令本身并不是nfs客户机。因此,它将挂载请求转发给内核。根据内核版本和构建时间选项,不同的内核可以支持不同的nfs版本。因此,在某些情况下,可以立即使用4.2,而在另一种情况下,内核只是简单地说“不支持”,然后让mout命令用不同的nfs版本再试一次。

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1062512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档