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,防止挂载卡死系统。
相关推荐
大模型码小白7 小时前
AI大模型接入SDK:人工智能核心概念与发展史
大数据·运维·人工智能·安全·prompt
fpcc8 小时前
计算机原理—Linux是如何加载可执行文件到内存
linux
野熊佩骑8 小时前
Kubernetes实战系列文章(三) 之 K8S运维常用命令
linux·运维·docker·微服务·云原生·容器·kubernetes
码农客栈8 小时前
linux 设备树下的 platform 驱动编写
linux
小HANN8 小时前
Linux建站实战:CentOS7+LNMP 从零部署 ECShop 开源电商系统
linux·运维·服务器·经验分享
做运维的阿瑞8 小时前
Shell 脚本经典十三问:引号、变量、子 Shell 与重定向一次讲清问:引号、变量、子 Shell 与重定向一次讲清
linux·tcp/ip
昌原的儿子LEO8 小时前
Linux IO多路复用与SQLite数据库核心知识点总结
linux·数据库·oracle
GeW8 小时前
RHCE通关秘籍:从零基础到高分拿证的5个加速器
linux
前端世界9 小时前
基于 Linux 的本地 AI 智能问答平台搭建实践 —— Ollama + FastAPI + Nginx 实现本地大模型 Web 服务
linux·运维·人工智能
倔强的石头1069 小时前
【Linux指南】动静态库系列(七):符号表与重定位:链接器如何把函数调用接起来
linux·前端·javascript