我已经在一台机器上安装了 Ubuntu 22.04,并且正在尝试挂载一个 NFS 共享,该共享在其他 Linux Ubuntu 机器阵列(21.04、20.04、18.04 等)上挂载时没有任何问题。
我们使用的命令是:
sudo apt install nfs-common # Only required once for installation
sudo mount -t nfs 10.234.123.11:/bfx_share1 /bfx_share1
如果我这样做:
sudo showmount -e 10.234.123.11
它显示了可能的坐骑列表,因此从这个方面来说一切都是合法的。
它只是卡在那里,什么也不做。有什么想法吗?我可以做什么或添加什么来调试这种情况?还有其他客户端没有吗nfs-common
?
我已经安装nfstrace
,并在尝试挂载 nfs 文件夹时,我在另一个终端启动它,以获得以下提示:
## On one terminal
(base) user@LS6-MS-7D04:~$ ping 10.234.123.11
PING 10.234.123.11 (10.234.123.11) 56(84) bytes of data.
64 bytes from 10.234.123.11: icmp_seq=1 ttl=64 time=0.202 ms
64 bytes from 10.234.123.11: icmp_seq=2 ttl=64 time=0.122 ms
64 bytes from 10.234.123.11: icmp_seq=3 ttl=64 time=0.172 ms
^C
--- 10.234.123.11 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2027ms
rtt min/avg/max/mdev = 0.122/0.165/0.202/0.033 ms
(base) user@LS6-MS-7D04:~$ sudo mount 10.234.123.11:/bfx_share1 /bfx_share1
## In the other terminal with nfstrace running
root@LS6-MS-7D04:/home/user# nfstrace -Z user
Log file: nfstrace.log
Read from interface: enp111s0
BPF filter : port 2049 or port 445
snapshot len: 65535 bytes
read timeout: 100 ms
buffer size : 20971520 bytes
promiscuous mode: on
capture traffic : inout
Processing packets. Press CTRL-C to quit and view results.
Detect session 10.234.123.8:902 --> 10.234.123.11:2049 [TCP]
Detect session 10.234.123.8:772 --> 10.234.123.11:2049 [TCP]
10.234.123.8:772 --> 10.234.123.11:2049 [TCP]NULL
CALL []
REPLY []
Detect session 10.234.123.8:947 --> 10.234.123.11:2049 [TCP]
10.234.123.8:947 --> 10.234.123.11:2049 [TCP]NULL
CALL []
REPLY []
查看 Ubuntu 22.04 的发行说明(Jammy Jellyfish 发行说明): https://discourse.ubuntu.com/t/jammy-jellyfish-release-notes/24668?_ga=2.137381111.630065420.1651222708-2033241278.1650531954
有一个部分:
UDP disabled for NFS mounts
Since Ubuntu 20.10 (“Groovy Gorilla”), the kernel option CONFIG_NFS_DISABLE_UDP_SUPPORT=y is set and this disables using UDP as the transport for NFS mounts, regardless of NFS version.
In practice, if you try to use udp, you will get this error:
$ sudo mount f1:/storage /mnt -o udp
mount.nfs: an incorrect mount option was specified
###
NFS server
The NFS server and client packages have finally been updated to the latest upstream version.
All NFS services now read their configuration from /etc/nfs.conf and /etc/nfs.conf.d/*.conf, which is an INI-style configuration file, where each section is about one daemon or aspect of the NFS service. The old /etc/defaults/nfs-* configuration files are still left around, but are unused.
During upgrade, a conversion script is run if the package detects that the /etc/default/nfs-* files have been changed. This script is /usr/share/nfs-common/nfsconvert.py and it will read the options from /etc/defaults/nfs-* and generate /etc/nfs.conf.d/local.conf, which overrides the defaults in /etc/nfs.conf.
If the conversion script fails for some reason, the package installation or upgrade will fail, and the issue will have to be resolved. Please file a bug against nfs-utils in Launchpad 2 if you encounter such a scenario.
A new tool called nfsconf(8) can be used to query the configuration settings of /etc/nfs.conf and /etc/nfs.conf.d/*.conf.
##
the CTDB package was adjusted to work with the new NFS server version shipped in this Ubuntu 22.04
我已在以下位置提交了错误报告: https://bugs.launchpad.net/ubuntu/+source/nfs-utils/+bug/1970898
答案1
虽然我不完全清楚造成这种情况的原因,但我发现添加mountvers=3
安装选项可以解决挂起问题。
所以
mount -t nfs -o mountvers=3 <server_ip>:/path/to/shared-folder /path/to/local/mount
导致正确的安装。
我的解释是,如果同一台服务器上运行多个版本的 NFS 服务器(例如 3 和 4),则将mountvers
有助于使用正确的版本。
答案2
遇到了同样的问题,使用此解决方案使 fstab 正常工作......
192.168.1.10:/foo /home/john/foo nfs4 auto,vers=3 0 0
答案3
mountvers=4.0 对我来说也很好用
显然问题在于它默认为 4.2https://ubuntuforums.org/showthread.php?t=2474184
答案4
我还可以确认其他人已经发布的内容。在 Ubuntu 22.04 上,该nfsvers
选项需要替换为mountvers
。
但是,在我将 QNAP v4.3.6.1965 从 20.04 LTS 迁移到 22.04 LTS 后,它仍然不起作用,而之前它可以在 NFS4 上正常工作。
我检查了多个 stackoverflow/askubuntu/etc. 线程,Ubuntu 升级后没有任何效果。但以下是真正对我有用的方法(尚未找出根本原因):
- 使用
mountvers=4.0
而不是nfsvers
作为选项在/etc/fstab
或您的mount
呼叫中 - 尽管
mountvers=4.0
在挂载期间只使用了 NFS3,而且这是唯一真正起作用的方法。因此(不幸的是)请确保在 QNAP 的 NFS 设置中也启用了 NFS3。 - 如果您仍然收到
mount.nfs: mount(2): Permission denied
来自 QNAP 的回复,请将 QNAP 的 NFS 主机访问设置中的任何主机名调整为 IP 地址!
尤其是关于主机名与 IP 地址的最后一点是这里最大的障碍!我不知道为什么现在需要这样做,因为它在 Ubuntu 22.04 上与主机名配合得很好,而且机器仍然正确配置了相同的主机名。
希望这也能帮助其他人。