在Ubuntu上部署NFSv4的步骤如下,结合最新实践和安全性建议:
1. 安装NFS服务端
sudo apt update
sudo apt install nfs-kernel-server -y
2. 配置NFSv4共享目录
- 创建共享目录(推荐使用伪根目录结构):
sudo mkdir -p /srv/nfs4/data # 伪根目录下的实际共享目录 sudo chown nobody:nogroup /srv/nfs4/data sudo chmod 755 /srv/nfs4/data
- 绑定实际目录(可选,若需共享现有目录):
sudo mount --bind /path/to/real_data /srv/nfs4/data # 永久生效需添加到/etc/fstab: echo "/path/to/real_data /srv/nfs4/data none bind 0 0" | sudo tee -a /etc/fstab
3. 编辑NFS配置文件(/etc/exports)
sudo nano /etc/exports
添加以下内容(示例允许192.168.1.0/24网段访问):
/srv/nfs4 192.168.1.0/24(rw,sync,fsid=0,crossmnt,no_subtree_check,sec=sys)
/srv/nfs4/data 192.168.1.0/24(rw,sync,no_subtree_check)
参数说明:
fsid=0
:声明为NFSv4伪根目录。crossmnt
:允许客户端访问子目录。sec=sys
:使用系统UID/GID认证(需客户端与服务端用户一致)。
4. 应用配置并启动服务
sudo exportfs -arv # 动态加载配置
sudo systemctl enable --now nfs-server
sudo systemctl status nfs-server # 验证服务状态
5. 防火墙配置(若启用)
sudo ufw allow 2049/tcp # NFSv4默认端口
6. 客户端挂载(Ubuntu)
sudo apt install nfs-common -y
sudo mkdir -p /mnt/nfs_data
sudo mount -t nfs4 -o vers=4 192.168.1.100:/data /mnt/nfs_data # 服务端IP替换为实际值
持久化挂载(编辑/etc/fstab
):
192.168.1.100:/data /mnt/nfs_data nfs4 defaults,_netdev,vers=4 0 0
7. 验证与调试
- 服务端检查:
showmount -e localhost # 查看已导出目录
- 客户端测试:
df -h | grep nfs # 确认挂载成功 touch /mnt/nfs_data/testfile # 测试写入权限
注意事项
- 安全性:
- 避免使用
no_root_squash
(禁用root权限限制)。 - 生产环境建议结合Kerberos(
sec=krb5
)。
- 避免使用
- 性能优化:
- 大文件传输可启用
async
(牺牲一致性换性能)。 - 调整内核参数(如
/proc/sys/fs/nfs/*
)。
- 大文件传输可启用
常见问题
- 权限拒绝:检查服务端目录权限和
/etc/exports
配置。 - 挂载失败:确认防火墙、网络连通性及NFS服务状态。
通过以上步骤,可快速在Ubuntu上部署安全的NFSv4共享服务。如需更复杂的配置(如pNFS或跨域认证),可参考NFSv4.1官方文档。