将 NFS 更改为使用 UDP 而不是 TCP

将 NFS 更改为使用 UDP 而不是 TCP

我有一台使用 NFS 的 Debian 10 机器,它使用 TCP 协议,我想将其更改为 UDP。

这是网络启动机器的输出:

mount | grep 1
10.10.1.1:/remotesys on / type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,proto=tcp,port=2049,timeo=7,retrans=10,sec=sys,local_lock=all,addr=10.10.1.1)

我可以在哪里永久更改 proto=tcp 参数?我猜想这可以在 pxelinux.cfg/default 文件中设置,但我没有找到此文件的任何文档,所以我不知道这里使用的语法。

编辑:到目前为止我已经尝试过:

  • 将选项“proto=udp”添加到 /etc/exports(已启动但 tcp 仍在使用中)
  • 将选项“udp”添加到 /etc/exports(已启动但 tcp 仍在使用中)
  • 在 pxelinux.cfg/default 中的 nfsroot 选项中添加选项“,proto=udp”(启动失败 - 无效选项 proto)
  • 将选项“proto=udp”添加到 pxelinux.cfg/default(已启动但 tcp 仍在使用中)
  • 将选项“udp”添加到 pxelinux.cfg/default(已启动但 tcp 仍在使用中)

答案1

在您的 中pxelinux.cfg/default,您可能指定了如下内容:

LABEL       Ubuntu
MENU LABEL  ^Ubuntu 20.04 LTS Desktop
MENU DEFAULT
KERNEL     ubuntu-live/casper/vmlinuz
APPEND     root=/dev/nfs boot=casper ip=dhcp netboot=nfs nfsroot=192.168.xx.yy:/srv/ubuntu initrd=ubuntu-live/casper/initrd

这里这是内核命令行中 nfsroot 参数的文档。它说:

nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]

因此,您的问题的答案是,只需将proto=udp选项附加到上面指定的 nfsroot 参数,如下所示:

APPEND     root=/dev/nfs boot=casper ip=dhcp netboot=nfs nfsroot=192.168.xx.xx:/srv/ubuntu,proto=udp initrd=ubuntu-live/casper/initrd

[编辑]
应该是该文件所用文件格式的文档pxelinux.cfg/default

[编辑2]
经过长时间的彻底搜索,我想我终于找到了内核命令行中的选项被忽略的原因: ubuntu casper 的错误报告

  1. scripts/casper 脚本使用 nfsmount,它不接受 -o udp 选项。将 »nfsmount« 更改为 »mount -t nfs« 是一个简单的更改,而且有效。

因此解决方案是修复图像中使用的 initrd...

答案2

这是一个安装选项:

mount -o udp server:/export /mnt

笔记通过 UDP 传输大文件可能会导致数据丢失!

相关内容