在 RHEL 8.8 中,当我尝试测试 NFS tcp 与 udp 以及版本 3 与 4.0、4.1 和 4.2 时,mountproto=
除了proto=
键入mount
.这有什么意义和意义呢?
在 RHEL 8.8 中,我是否可以在 nfs 客户端上专门vers=3
显示NFS 操作?proto=udp
proto=tcp
在 nfs 客户端上,当我看到和 时,这意味着什么mountproto=udp
?
答案1
在较旧的 NFS 版本(v2 和 v3)中,有两种不同的 RPC 服务由单独的软件处理:“MOUNT”协议仅用于从 rpc.mountd 获取初始文件系统句柄,“NFS”协议用于其他所有操作。
因此,该mountproto=
选项定义了每当挂载 NFSv3 文件系统时用于访问 rpc.mountd 的传输。它对性能没有影响,只影响兼容性(较旧的 mountd 不支持 TCP)。 NFSv4 不再有mountproto=
,因为与挂载相关的操作已集成到核心协议中。
同时proto=
定义了用于传输文件数据的协议(实际的 NFS 操作)。 NFSv3 支持 UDP,所以是的,proto=udp,vers=3 是可能的,但请记住手册页中的警告消息 – NFS via UDP over a千兆位或更快的连接存在数据损坏的风险,连接速度越快,腐败的风险就越高。 NFSv4 仅支持 TCP 和 RDMA – 不再支持 UDP。
答案2
从man 5 nfs
:
mountproto=netid
The transport the NFS client uses to transmit requests
to the NFS server's mountd service when performing this
mount request, and when later unmounting this mount
point.
...
proto=netid The netid determines the transport that is used to com-
municate with the NFS server. Available options are
udp, udp6, tcp, tcp6, and rdma. Those which end in 6
use IPv6 addresses and are only available if support for
TI-RPC is built in. Others use IPv4 addresses.
换句话说,仅确定和请求mountproto
的协议,并在安装该区域后确定其余 NFS 操作的协议。mount
umount
proto
对于 NFSv3,您可以使用proto=tcp
和mountproto=udp
。
但是,NFSv4 仅支持 tcp,无法与 udp 配合使用。
All NFS version 4 servers are required to support TCP,
so if this mount option is not specified, the NFS ver-
sion 4 client uses the TCP protocol. Refer to the
TRANSPORT METHODS section for more details.
而对于 NFSv4 则mountproto
没有影响。
Using the mountproto mount option
This section applies only to NFS version 2 and version 3 mounts since
NFS version 4 does not use a separate protocol for mount requests.