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,防止挂载卡死系统。
相关推荐
ltl5 小时前
存储性能建模:IOPS、吞吐与延迟
linux
九硕智慧建筑一体化厂家5 小时前
数字化管控落地,直流照明构筑安全照明体系
运维·人工智能·笔记·安全·智慧城市
刘某的Cloud7 小时前
ceph osd 导入导出 rbd volume 卷
linux·运维·ceph·volume
酸菜。9 小时前
dw_axi_dmac总结
linux
神奇霸王龙9 小时前
Agent 准入门控屠夫:5 旗舰 4 维度评估
linux·运维·数据库·ai·ai作画·agent·ai编程
cfm_29149 小时前
基于Binlog实现不停机数据库平滑迁移技术
运维·数据库·架构
迪康Defender10 小时前
AI 重构终端安全运营:智能分析中枢 AI Insight 模块架构与落地场景深度解析
运维·网络·人工智能·其他·安全·重构·架构
HiDev_11 小时前
【非标自动化】2、认识元器件(固态继电器)
运维·自动化
明达智控技术11 小时前
国产 PLC 落地立库自动化,MC5000边缘智能控制器破局
运维·自动化
小绫网络安全12 小时前
Kali Linux渗透测试入门教程:从零搭建到实战攻防
linux·运维·服务器