Ubuntu NFS 客户端在写入大文件时挂起

Ubuntu NFS 客户端在写入大文件时挂起

我在 Synology NAS 上托管了一个 NFS 服务器。它是通过文件服务下的内置 NFS 服务器配置的。配置选项有些有限,我设置了 32kb 读/写数据包大小,最大 NFS 版本为 4.1。

/etc/exports 条目是:

/volume1/NAS_Andrew 192.168.0.0/24(rw,async,no_wdelay,crossmnt,insecure,all_squash,insecure_locks,sec=sys,anonuid=1024,anongid=100)

我的 ubuntu 客户端有以下 fstab 条目:

192.168.0.219:/volume1/NAS_Andrew /mnt/nas nfs nofail,nconnect=16,rsize=32000,wsize=32000,hard 0 0

挂载时,它将解析为 /proc/mounts 中的以下条目:

192.168.0.219:/volume1/NAS_Andrew /mnt/nas nfs4 rw,relatime,vers=4.1,rsize=32000,wsize=32000,namlen=255,hard,proto=tcp,nconnect=16,timeo=600,retrans=2,sec=sys,clientaddr=192.168.0.220,local_lock=none,addr=192.168.0.219 0 0

问题是,当我将一个大文件写入 NFS 挂载时,挂载内的所有其他文件系统操作都会挂起。

例如,如果我在终端 1 中运行以下命令:

time dd if=/dev/zero of=/mnt/nas/testfile bs=16k count=128k

然后ls -la在终端 2 中运行;该ls过程挂起,直到dd写入完成。

我相信该问题仅限于本地 NFS 客户端,因为如果我ls -la在另一台也安装了 NFS 共享的服务器上运行相同的程序 - 它运行时不会出现任何挂起或问题。

我希望有人能解释一下为什么写入操作被阻塞。我尝试设置nconnect=16以增加 tcp 连接并允许多个操作 - 但这不起作用,我怀疑nconnect可能仅限于有多个网络接口可用的情况。

我正在运行 Ubuntu 20.04.3 LTS。

非常感谢您的任何意见。

相关内容