如何部署一台 NFS 服务器
🧱 一、NFS 环境说明
| 角色 | 示例主机名 | 示例IP | 作用 |
|---|---|---|---|
| NFS 服务器 | nfs-server | 192.168.10.10 | 共享目录 |
| NFS 客户端 | app-node1 | 192.168.10.20 | 挂载目录 |
🧰 二、NFS 服务器端安装与配置
1️⃣ 安装 NFS 服务
# CentOS / Rocky / openEuler
yum install -y nfs-utils
# Ubuntu / Debian
apt install -y nfs-kernel-server
2️⃣ 创建共享目录
mkdir -p /data/nfs-share
chmod -R 777 /data/nfs-share
chown -R nobody:nogroup /data/nfs-share # 或者 nfsnobody:nfsnobody
3️⃣ 配置 NFS 导出文件 /etc/exports
编辑文件:
vi /etc/exports
示例内容:
/data/nfs-share 192.168.10.0/24(rw,sync,no_root_squash)
参数解释:
rw:可读写sync:同步写入磁盘(更安全)no_root_squash:允许客户端 root 用户保留 root 权限(K8s 环境必需)192.168.10.0/24:允许的网段(可换成单个IP)
4️⃣ 启动并设置开机自启
systemctl enable nfs-server --now
检查服务状态:
systemctl status nfs-server
5️⃣ 刷新配置并查看共享目录
exportfs -rav
showmount -e
输出示例:
Export list for nfs-server:
/data/nfs-share 192.168.10.0/24
💻 三、客户端挂载 NFS 共享
1️⃣ 安装 NFS 客户端工具
# CentOS / openEuler
yum install -y nfs-utils
# Ubuntu / Debian
apt install -y nfs-common
2️⃣ 创建挂载点并挂载
mkdir -p /mnt/nfs-share
mount -t nfs 192.168.10.10:/data/nfs-share /mnt/nfs-share
验证:
df -h | grep nfs
测试:
touch /mnt/nfs-share/test.txt
ls /mnt/nfs-share/
如果在服务器 /data/nfs-share/ 也能看到 test.txt,说明挂载成功 ✅
3️⃣ 开机自动挂载(可选)
编辑 /etc/fstab:
192.168.10.10:/data/nfs-share /mnt/nfs-share nfs defaults 0 0
立即生效:
mount -a
🔒 四、防火墙与SELinux
如果服务端启用了防火墙:
# Firewalld
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --reload
如果启用了 SELinux,执行:
setsebool -P nfs_export_all_rw on
🧩 五、进阶用法(可选)
✅ 1. 查看客户端挂载情况
showmount -a
✅ 2. 取消挂载
umount /mnt/nfs-share
✅ 3. 手动刷新导出列表
exportfs -arv
🧱 六、Kubernetes 场景(如果你是为 K8s 提供存储)
可以直接把这台 NFS Server 暴露出来,创建一个 StorageClass 供 PVC 动态分配使用,例如:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-storage
provisioner: kubernetes.io/nfs
parameters:
server: 192.168.10.10
path: /data/nfs-share
reclaimPolicy: Retain
✅ 七、总结命令速查表
| 步骤 | 命令 |
|---|---|
| 安装 NFS 服务 | yum install -y nfs-utils |
| 创建目录 | mkdir -p /data/nfs-share |
| 编辑导出配置 | vi /etc/exports |
| 启动服务 | systemctl enable --now nfs-server |
| 刷新共享 | exportfs -rav |
| 客户端挂载 | mount -t nfs 192.168.10.10:/data/nfs-share /mnt/nfs-share |
| 查看导出 | showmount -e |