无法在 Ubuntu 22.04 上挂载 nfs

无法在 Ubuntu 22.04 上挂载 nfs

我已经在一台机器上安装了 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 升级后没有任何效果。但以下是真正对我有用的方法(尚未找出根本原因):

  1. 使用mountvers=4.0而不是nfsvers作为选项在/etc/fstab或您的mount呼叫中
  2. 尽管mountvers=4.0在挂载期间只使用了 NFS3,而且这是唯一真正起作用的方法。因此(不幸的是)请确保在 QNAP 的 NFS 设置中也启用了 NFS3。
  3. 如果您仍然收到mount.nfs: mount(2): Permission denied来自 QNAP 的回复,请将 QNAP 的 NFS 主机访问设置中的任何主机名调整为 IP 地址!

尤其是关于主机名与 IP 地址的最后一点是这里最大的障碍!我不知道为什么现在需要这样做,因为它在 Ubuntu 22.04 上与主机名配合得很好,而且机器仍然正确配置了相同的主机名。

希望这也能帮助其他人。

相关内容