我有两个 ubuntu 系统
- PC1 运行的是 ubuntu 18.04
- PC2 运行的是 ubuntu 22.04
案例 1:现在服务器在 1 上运行,客户端在 2 上运行。在这种情况下,文件系统已正确安装在 PC2 上,即 ubuntu22.04
情况 2:现在服务器在 2 上运行,客户端在 1 上运行。在这种情况下,文件系统未安装。检查一切正常。显示错误消息连接超时。
sudo mount -t nfs -o mountvers=4.0 serverip:/Path /local/mount/point
也尝试使用 mountvers=3
你能帮我解决案例 2 吗?
答案1
连接超时通常意味着服务器由于防火墙而忽略了您的请求,或者只是网络配置不正确。
检查连通性
确保可以 ping 客户端,并且客户端可以 ping 服务器以验证连接性。如果不能,请先使用以下命令确保两者都有 IP 地址,ip -br addr
然后查看它们是否在同一网络上且具有有效的 IP 地址。
配置 NFSv4
使用 NFSv4 的 NFS 需要这些服务按照 Redhat 指定的方式运行(注意,我更喜欢使用 Redhat 文档,因为它们涵盖了更深入的细节,并且更容易浏览,但两种 Linux 版本之间的配置非常相似)。
nfsd
rpc.mountd
rpc.nfsd
rpc.rquotad
rpc.idmapd
确保出口
确保您的/etc/exports
正确性。(此示例允许 ClientIP 将 /Path 挂载为读/写)
/Path clientIP(rw)
运行 exportfs 导出 nfs 共享。如果我们重新启动 nfs 进程,则无需执行此操作,但这将允许您共享和取消共享导出,而无需重新启动 nfs 服务。
exportfs -a # export all shares
配置防火墙(可选,但如果有防火墙,强烈建议/必需)
- 使用firewalld
# On server
firewall-cmd --permanent --add-service nfs
firewall-cmd --reload
systemctl restart nfs-server
# On client, this is required for NFSv4.0 but later versions from NFSv4.1 dont require it. NFSv4.1 and later do the callback on the same connection initiated by the client.
# echo "fs.nfs.nfs_callback_tcpport = <callback-port>" >/etc/sysctl.d/90-nfs-callback-port.conf
# sysctl -p /etc/sysctl.d/90-nfs-callback-port.conf
# firewall-cmd --permanent --add-port=<callback-port>/tcp
# firewall-cmd --reload
- 使用 ufw
ufw allow from ClientIP to any port nfs
ufw status
确认
验证 nfs 是否正在运行的服务器netstat -tuna
。
验证 nfs 是否正常工作,systemctl restart nfs-server
然后使用 检查状态systemctl status nfs-server
。如果一切正常,则服务器应该可以正常工作。
客户端安装
跑步mount -t nfs -o nfsvers=4.0,port=2049,tcp ServerIP:/Path /local/dir
文档
Digitalocean:https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nfs-mount-on-ubuntu-22-04
Linux提示:https://linuxhint.com/install-and-configure-nfs-server-ubuntu-22-04/