如何在CentOS/RHEL/Rocky Linux上挂载多IP的NFSv4导出以实现多路径冗余
如何在CentOS/RHEL/Rocky Linux上挂载多IP的NFSv4导出以实现多路径冗余
这个问题问得好!我之前刚好在CentOS/RHEL/Rocky系统上处理过Synology双控制器NFSv4共享的类似场景,要实现多路径冗余的思路和VMware那种逗号分隔IP的方式差不多,但Linux上有两种很靠谱的实现方法,我给你一步步讲清楚:
先搞定前置依赖
首先得确保系统装好了NFS相关的工具包,毕竟要挂载NFSv4嘛。打开终端执行:
# 适用于CentOS/RHEL/Rocky 8及以上版本 sudo dnf install nfs-utils rpcbind # 如果是7.x版本,改用yum sudo yum install nfs-utils rpcbind
装完后记得启动并启用rpcbind服务,不然NFS客户端连不上服务器:
sudo systemctl enable --now rpcbind
方法一:直接挂载时指定多服务器IP(最简便)
这是最直接的方式,利用NFSv4原生支持的多服务器参数实现冗余,和VMware的逻辑一致。
临时挂载(重启后失效)
直接在终端执行挂载命令,把两个控制器的IP都指定进去:
sudo mount -t nfs4 -o servers=192.168.1.10,10.0.0.10 /mnt/synology_nfs
注意把192.168.1.10和10.0.0.10换成你的两个控制器实际IP,/mnt/synology_nfs是本地挂载点,提前用mkdir /mnt/synology_nfs创建好就行。
永久挂载(写入/etc/fstab)
要是想开机自动挂载,就把配置写到/etc/fstab里:
sudo echo "192.168.1.10:/,10.0.0.10:/ /mnt/synology_nfs nfs4 defaults,servers=192.168.1.10,10.0.0.10,_netdev 0 0" >> /etc/fstab
这里的_netdev选项非常重要,它告诉系统这是一个网络设备,必须等网络完全启动后再挂载,避免开机时因为网络未就绪导致挂载失败。
写完后执行mount -a验证配置是否生效,没有报错就说明没问题了。
方法二:用autofs实现更灵活的自动挂载与切换
如果需要更智能的故障检测和按需挂载(比如平时不挂载,只有访问时才自动挂载),可以用autofs来配合。
- 先安装autofs:
sudo dnf install autofs # 7.x版本用yum
- 编辑
/etc/auto.master,添加一行配置:
sudo echo "/mnt /etc/auto.nfs" >> /etc/auto.master
- 创建并编辑
/etc/auto.nfs文件,添加挂载规则:
sudo echo "synology_nfs -fstype=nfs4,servers=192.168.1.10,10.0.0.10,_netdev :/" >> /etc/auto.nfs
- 重启autofs服务并设置开机自启:
sudo systemctl enable --now autofs
这样一来,当你第一次访问/mnt/synology_nfs时,autofs会自动帮你挂载NFS共享,而且如果其中一个控制器IP故障,客户端会自动切换到另一个可用的IP。
关键注意事项
- 确保Synology两个控制器的NFSv4导出路径完全一致,而且权限配置相同(比如都允许你的Linux客户端IP/子网访问),不然切换后可能出现权限问题或者路径不一致的情况。
- 测试故障切换:可以手动断开其中一个控制器的网络,然后在Linux客户端上创建文件(比如
touch /mnt/synology_nfs/test.txt),如果能正常操作,说明切换生效了。 - 要是你的系统是比较旧的版本,可能不支持
servers选项,这时候可以加上retry=60这类参数,让客户端在连接失败时持续重试,同时确保两个IP的NFS导出配置完全一致。
备注:内容来源于stack exchange,提问作者cohortq
相关产品推荐
相关产品推荐

