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,防止挂载卡死系统。
相关推荐
Re_Virtual32 分钟前
centos 7环境下构建nginx 1.30
nginx·centos·rpmbuild
小鹏linux2 小时前
Ubuntu 22.04 部署开源免费具有精美现代web页面的Casdoor账号管理系统
linux·前端·ubuntu·开源·堡垒机
在角落发呆3 小时前
Linux转发配置:解锁网络互联的核心密码
linux·运维·网络
齐潇宇3 小时前
Zabbix 7 概述与配置
linux·zabbix·监控告警
裴东青4 小时前
10-实战:RuoYi-Cloud的自动化发布
运维·ci/cd·自动化
江公望4 小时前
Ubuntu htop命令,10分钟讲清楚
linux·服务器
哎呦,帅小伙哦4 小时前
Linux 时间:从原子钟到 clock_gettime 的每一面
linux·运维·服务器
sxgzzn5 小时前
新能源场站数智化转型:基于数字孪生与AI的智慧运维管理平台解析
大数据·运维·人工智能
张小姐的猫5 小时前
【Linux】多线程 —— 线程互斥
linux·运维·服务器·c++
CodeMartain5 小时前
Dify Windows 原生部署(无 Docker、纯本地)
运维·docker·容器