linux中实现多机挂载共享存储最常用且稳定的方式是使用nfs(network file system),它让多台linux主机像访问本地目录一样读写同一份远程文件系统,适用于集群、日志集中、开发环境共享等场景。

Linux 中实现多机挂载共享存储,最常用且稳定的方式是使用 NFS(Network File System)。它让多台 Linux 主机像访问本地目录一样读写同一份远程文件系统,适用于集群、日志集中、开发环境共享等场景。
NFS 服务端配置要点
服务端负责导出目录,需确保基础服务运行、路径授权明确、防火墙放行:
- 安装并启用 rpcbind 和 nfs-utils(RHEL/CentOS)或 nfs-kernel-server(Debian/Ubuntu)
- 编辑 /etc/exports,按需指定客户端范围与权限,例如:
/data 192.168.10.0/24(rw,sync,no_subtree_check,root_squash)
其中 root_squash 是默认且推荐的安全选项,避免客户端 root 直接映射为服务端 root - 执行 exportfs -ra 生效配置(不是重启服务就能刷新导出列表)
- 开放防火墙:添加 nfs、mountd、rpc-bind 服务,或直接放行对应端口(建议用服务名方式)
NFS 客户端挂载实操
客户端无需运行 NFS 服务,只需挂载远程共享路径:
- 创建本地挂载点,如:sudo mkdir -p /mnt/shared
- 手动挂载(测试用):
sudo mount -t nfs4 -o vers=4.2,hard,intr,timeo=600,proto=tcp 192.168.10.1:/data /mnt/shared
推荐显式指定 nfs4 协议和关键选项,避免协商失败或 I/O 卡死 - 验证:df -h | grep shared 或 ls /mnt/shared
- 卸载:sudo umount /mnt/shared;若提示“device is busy”,可用 sudo fuser -mv /mnt/shared 查看并终止占用进程
开机自动挂载安全写法
直接写入 /etc/fstab 可能导致启动卡住(服务端未就绪时)。推荐使用 systemd 按需挂载:
- 在 /etc/fstab 中添加一行:
192.168.10.1:/data /mnt/shared nfs4 _netdev,x-systemd.automount,vers=4.2,hard,intr,timeo=600 0 0 - 确保挂载点目录存在,且不依赖该路径启动其他服务;如需依赖,改用 RequiresMountsFor=/mnt/shared
- 执行 sudo systemctl daemon-reload,然后检查:systemctl list-units --type=automount 应显示 active
权限与一致性注意事项
多机挂载后常见权限异常或文件句柄过期,需同步处理:
- 客户端用户 UID/GID 应和服务端一致,否则属主显示为 nobody;不要禁用 root_squash 来绕过,应统一账号体系
- 所有节点必须严格时间同步(chrony 或 ntpd),否则易出现 Stale file handle 错误
- 避免在多个客户端同时写同一文件;NFS 本身不提供强锁机制,高并发写入建议配合应用层锁或改用分布式文件系统











