CentOS 7 搭建 NFS Server 服务端 + 客户端 完整一键配置

CentOS 7 搭建 NFS Server 服务端 + 客户端 完整一键配置

全程可直接复制执行,含权限、防火墙、开机自启、fstab 永久挂载、优化参数。

一、环境说明

  • 服务端(NAS/存储):192.168.1.10
  • 客户端(Docker宿主机):192.168.1.20
  • 系统:CentOS 7

一、NFS 服务端配置(Server)

1. 安装依赖

bash 复制代码
yum install -y nfs-utils rpcbind

2. 创建共享目录

bash 复制代码
mkdir -p /data/nfs-share
chmod 755 /data/nfs-share
# 权限放开,避免容器权限报错
chown nfsnobody:nfsnobody /data/nfs-share

3. 配置共享文件 /etc/exports

bash 复制代码
vi /etc/exports

写入内容:

复制代码
/data/nfs-share 192.168.1.0/24(rw,sync,no_root_squash,no_subtree_check)

参数说明:

  • rw:读写权限
  • sync:同步写入(数据安全),追求性能可改为 async
  • no_root_squash:客户端root保持权限(Docker必备)
  • 192.168.1.0/24:允许整个网段访问,按需缩小范围

4. 启动&开机自启

bash 复制代码
systemctl start rpcbind
systemctl start nfs
systemctl enable rpcbind
systemctl enable nfs

5. 放行防火墙

bash 复制代码
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=mountd
firewall-cmd --reload

6. 验证服务端配置

bash 复制代码
# 查看共享
exportfs -rav
# 查看可挂载列表
showmount -e localhost

二、NFS 客户端配置(Docker 宿主机)

1. 安装客户端工具

bash 复制代码
yum install -y nfs-utils

2. 测试连通性

bash 复制代码
# 查看服务端共享目录
showmount -e 192.168.1.10

正常输出:

复制代码
/data/nfs-share 192.168.1.0/24

3. 创建本地挂载目录

bash 复制代码
mkdir -p /data/nas-docker

4. 临时挂载(带性能优化参数)

bash 复制代码
mount -t nfs \
-o rsize=1048576,wsize=1048576,async,hard,_netdev,noatime \
192.168.1.10:/data/nfs-share /data/nas-docker

5. 永久挂载 /etc/fstab(开机自动挂载)

bash 复制代码
vi /etc/fstab

添加一行:

复制代码
192.168.1.10:/data/nfs-share  /data/nas-docker  nfs  rsize=1048576,wsize=1048576,async,hard,_netdev,noatime  0  0

生效测试:

bash 复制代码
mount -a
df -h

三、Docker 直接使用 NFS 两种方式

方式1:宿主机挂载目录 + bind 挂载(稳定推荐)

yaml 复制代码
version: '3.8'
services:
  test-nfs:
    image: nginx
    volumes:
      - /data/nas-docker:/html

方式2:Docker 原生 NFS 卷(无本地挂载目录)

yaml 复制代码
version: '3.8'
services:
  app-nfs:
    image: nginx
    volumes:
      - nfs-data:/html
volumes:
  nfs-data:
    driver: local
    driver_opts:
      type: nfs
      o: addr=192.168.1.10,rsize=1048576,wsize=1048576,async,hard,noatime
      device: ":/data/nfs-share"

四、常用排错命令

bash 复制代码
# 卸载NFS
umount /data/nas-docker

# 强制卸载(卡死时)
umount -f /data/nas-docker

# 查看挂载参数
mount | grep nfs

# 重启nfs服务端
systemctl restart nfs rpcbind

五、关键注意事项

  1. 数据库、Redis、MQ 禁止挂载 NFS,IO延迟、锁冲突、丢数据风险极高。
  2. 追求性能:用 async;追求数据绝对安全:改为 sync。
  3. 权限报错:服务端共享参数加 no_root_squash,客户端不用改权限。
  4. 网络不稳定:保留 hard,_netdev,防止挂载卡死系统。
相关推荐
Lsetea23 分钟前
curl下载HTTPS文件报23:证书验证成功与本地写入失败分层排查
linux·https·shell·ssl证书·curl
云计算练习生30 分钟前
什么是文件权限?Linux 中 rwx 与数字权限的对应关系
linux·运维·服务器·操作系统·文件权限管理
FY@-@41 分钟前
VMware ESXi 7.0 实验全记录:嵌套安装 → 网络配置 → 存储 → Windows 10 虚拟机部署
运维·网络·windows·云计算
叼烟扛炮43 分钟前
Linux 学习笔记(十三):高效排错利器——GDB 调试器入门
linux·笔记·学习
饿了吃洗衣凝珠1 小时前
red hat day2
linux·运维·服务器
上海云盾-高防顾问1 小时前
边缘验签是什么
运维·服务器·网络
fruge2 小时前
SSH、RDP、VNC不必各开一个客户端:Next Terminal用Web入口统一管理远程资产和会话记录
运维·前端·ssh
天南散修2 小时前
《802.11-2024》第08讲 · 聚合与块确认:把「一次一帧」变成「一次一批」
linux·网络·wifi·802.11
中屹指纹浏览器svip2 小时前
什么是设备数字特征追踪?
运维
Dxy12393102162 小时前
Linux 服务器 vi 命令怎么使用
linux·运维·服务器