前言
网络文件系统(NFS)作为 Linux 系统间实现文件共享的标准协议,在分布式计算和容器化部署场景中具有重要作用。本文将详细演示如何在 Ubuntu 系统上配置 NFS 服务端与客户端,并实现可靠的持久化挂载。
一、环境准备
系统要求
- 服务端:Ubuntu 20.04+(IP:192.168.1.93)
- 客户端:Ubuntu/Debian 系统(IP:192.168.1.81)
- 网络配置:确保双向连通性,建议关闭防火墙或开放 2049 端口
架构示意图
二、服务端配置
1. 安装核心组件
sudo apt update
sudo apt install nfs-kernel-server -y
2. 配置共享目录
编辑配置文件:
sudo nano /etc/exports
添加以下内容(注意正确路径):
/opt/ 192.168.1.81(rw,sync,no_subtree_check)
/opt/ 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)
参数解析:
rw
:读写权限sync
:同步写入no_subtree_check
:禁用子目录检查no_root_squash
:允许 root 用户访问
3. 应用配置
sudo exportfs -arv # 动态加载配置
sudo systemctl enable --now nfs-server
systemctl status nfs-server # 验证服务状态
三、客户端配置
1. 安装基础工具
sudo apt install nfs-common -y
2. 配置持久化挂载
编辑 fstab 文件:
sudo nano /etc/fstab
添加挂载条目:
192.168.1.93:/opt /opt nfs defaults,_netdev 0 0
关键参数说明:
_netdev
:等待网络就绪- 文件系统类型:nfs4 可显式声明使用 NFSv4
3. 安全增强措施
sudo chattr +i /etc/fstab # 防止误修改
四、自动化挂载保障
1. 创建 systemd 服务
sudo nano /etc/systemd/system/check-opt-mount.service
服务配置内容:
[Unit]
Description=智能挂载保障服务
After=network-online.target
Requires=network-online.target
[Service]
Type=oneshot
ExecStartPre=/bin/sleep 30 # 等待网络初始化
ExecStart=/opt/scripts/mount-validator.sh
TimeoutSec=300
[Install]
WantedBy=multi-user.target
2. 验证脚本实现
#!/bin/bash
# mount-validator.sh
attempt=0
max_retries=5
while [[ $attempt -lt $max_retries ]]; do
if mountpoint -q /opt; then
echo "挂载验证成功"
break
else
echo "尝试挂载 ($((attempt+1))/${max_retries})"
mount -a && break
sleep $((attempt++ * 2))
fi
done
# 后续初始化操作
ldconfig
systemctl restart app-services
五、配置验证
服务端检查
showmount -e localhost # 查看共享列表
netstat -tuln | grep 2049 # 确认端口监听
客户端验证
df -hT | grep nfs # 查看挂载状态
touch /opt/testfile # 测试写入权限
六、故障排查指南
常见问题处理
-
挂载失败:
- 检查
rpcinfo -p server_ip
- 验证客户端和服务端 NFS 版本兼容性
- 检查
-
权限拒绝:
- 检查
/etc/exports
的 IP 白名单 - 确认客户端 UID/GID 与服务端匹配
- 检查
-
服务启动异常:
journalctl -u nfs-server --since "1 hour ago"
结语
通过本文的配置,您已成功搭建了支持高可用性的 NFS 文件共享服务。建议在生产环境中配合 SSH 隧道或 VPN 增强安全性。对于 Kubernetes 等容器平台,可结合 PV/PVC 实现动态存储供给。
延伸学习:
- NFS 协议规范 RFC 7530
- 性能调优:尝试启用 async 模式并配合 UPS 电源
- 安全增强:配置 Kerberos 认证
通过合理的配置和验证流程,NFS 能够为企业级应用提供稳定高效的共享存储解决方案。