# Linux系统NFS共享目录配置
# 应用场景
NFS(Network File System)是一种基于 TCP/IP 协议的网络文件系统,允许 Linux/Unix 系统之间通过网络共享文件和目录,挂载后的远程目录在使用上与本地目录无差异。
共享目录常用于应用集群、分离部署场景中,实现多服务器对同一目录的共享读写,保证文件访问的一致性,常见场景如:
协同集群环境,主节点和从节点共享读取附件upload、base/resources资源文件,确保文件一致性
协同和全文检索分离部署,全文检索需要读取到协同附件upload目录,用于解析索引数据
在Linux系统下使用NFS共享目录的形式实现目录的共享读写,有多种方案:
- 第一种:指定一个高性能服务器直接共享,比如协同主节点共享目录,其余服务器远程挂载到协同主节点对应目录
- 第二种:独立服务器共享,所有应用服务器都远程挂载到独立的NFS服务器,这种方案利于NFS独立维护管理

另外,NFS不是唯一解决共享存储的方案,如果客户有专业的共享存储设备(比如NAS),可以直接复用,使用专业厂商的共享存储设备稳定性和可用性更优。

# NFS共享配置步骤
# 部署示例
本手册按照指定A服务器 /data/Seeyon/base/upload 做共享目录的方法演示,要实现NFS需要分别安装对应端:
- A服务器需要安装NFS服务端
- B服务器需要安装NFS客户端

# 安装NFS服务端
A服务器执行如下命令安装NFS服务端并且共享指定目录:
# 1.安装NFS服务端
# Debian及其衍生发行版(如Ubuntu)运行如下命令
sudo apt update && sudo apt upgrade -y
sudo apt install nfs-kernel-server -y
# RedHat体系(如CentOS)、欧拉等使用yum或dnf作为包管理工具
sudo yum update -y
sudo yum install nfs-utils -y
# 2.启动并开机自启服务
sudo systemctl start nfs-server
sudo systemctl enable nfs-server
sudo systemctl status nfs-server
# 3. 创建共享目录(如对安全访问要求高,请自行创建单独nfsuser用户做目录授权;777权限为快速简化配置法)
# 场景一:服务端计划使用现成目录共享(如/data/Seeyon/base/upload),则无需创建,直接设置权限即可
sudo chmod 777 /data/Seeyon/base/upload
# 场景二:服务端想单独建一个目录做共享,则创建一个空目录做授权(目录名称自定义):
sudo mkdir -p /data/nfs/upload
sudo chmod 777 /data/nfs/upload
# 4. 配置共享规则
# 全部放行法:即网络范围内都可以看到该共享目录
sudo echo "/data/nfs/upload *(rw,sync,no_root_squash)" >> /etc/exports
# 安全放行法(指定IP):即指定IP可以看到该共享目录
sudo echo "/data/nfs/upload 192.168.94.138(rw,sync,no_root_squash) 192.168.94.139(rw,sync,no_root_squash)" >> /etc/exports
# 安全放行法(指定网段):即指定IP段可以看到该共享目录
sudo echo "/data/nfs/upload 192.168.1.0/24(rw,sync,no_root_squash)" >> /etc/exports
# 5. 生效配置
sudo exportfs -rv
# 6. 如开启了防火墙,需放行NFS端口
sudo firewall-cmd --add-port=2049/tcp --add-port=2049/udp --permanent
sudo firewall-cmd --reload
# 安装NFS客户端
B服务器执行如下命令安装NFS客户端并挂载共享目录:
# 1.安装NFS客户端依赖
# Debian及其衍生发行版(如Ubuntu)运行如下命令
sudo apt update && sudo apt upgrade -y
sudo apt install nfs-common rpcbind -y
sudo systemctl start rpcbind && sudo systemctl enable rpcbind
# RedHat体系(如CentOS)、欧拉等使用yum或dnf作为包管理工具
sudo yum update -y
sudo yum install nfs-utils -y
# 2. NFS客户端创建挂载目录,这个目录放哪里根据项目上的规划来
sudo mkdir -p /data/nfs/upload
# 3. 客户端挂载NFS共享目录(临时挂载,重启失效),其中IP是NFS服务端地址
# mount如果长时间无反应或提示mount.nfs: No route to host则先考虑在nfs服务器的防火墙增加规则-允许指定IP通过nfs访问
sudo mount -t nfs -o sync,noac 192.168.94.136:/data/nfs/upload /data/nfs/upload
# 检查mount结果
df -h
# 4. 客户端设置开机自动挂载
sudo vim /etc/fstab
# 手动编辑fstab,写入如下配置
192.168.94.136:/data/nfs/upload /data/nfs/upload nfs sync,noac 0 0
# 5. 验证fstab配置(关键!避免格式错误导致开机故障)
sudo mount -a # 无报错则配置正确


编撰人:het