【Linux】NFS 实践手册 - Ubuntu 系统
·
NFS 实践手册 - Ubuntu 系统
1. 环境准备
1.1 系统要求
- Ubuntu 服务器版/桌面版 18.04 或更高版本
- 局域网内所有设备处于同一网络段
- 了解服务器IP地址(可通过
ip addr或ifconfig查看)
2. NFS 服务器端配置
2.1 安装 NFS 服务器
# 更新包列表
sudo apt update
# 安装 NFS 服务器
sudo apt install nfs-kernel-server -y
2.2 创建共享目录
# 创建要共享的目录(例如:/data/share)
sudo mkdir -p /data/share
# 设置目录权限(根据需要调整)
sudo chown -R nobody:nogroup /data/share
sudo chmod -R 755 /data/share
# 或者设置更灵活的权限(客户端可读写)
sudo chmod -R 777 /data/share
2.3 配置 NFS 导出
# 编辑NFS导出配置文件
sudo nano /etc/exports
在文件中添加以下内容(根据需求选择配置):
选项 1:允许特定IP段访问
/data/share 192.168.1.0/24(rw,sync,no_subtree_check)
选项 2:允许特定IP访问
/data/share 192.168.1.100(rw,sync,no_subtree_check)
/data/share 192.168.1.101(rw,sync,no_subtree_check)
选项 3:允许所有局域网设备访问
/data/share 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)
选项 4:添加多个不同权限的配置
# 读写权限
/data/share 192.168.1.0/24(rw,sync,no_subtree_check)
# 只读权限
/data/share 192.168.1.200(ro,sync,no_subtree_check)
2.4 导出配置说明
- rw:读写权限
- ro:只读权限
- sync:同步写入,数据安全性更高
- async:异步写入,性能更好
- no_subtree_check:不检查子目录权限,提高性能
- no_root_squash:允许root用户保持权限(谨慎使用)
- all_squash:所有用户映射为匿名用户
2.5 应用配置并重启服务
# 重新导出NFS共享目录
sudo exportfs -ra
# 重启NFS服务
sudo systemctl restart nfs-kernel-server
# 设置开机自启
sudo systemctl enable nfs-kernel-server
# 查看导出状态
sudo exportfs -v
2.6 防火墙配置
# 如果启用了UFW防火墙,需要放行NFS
sudo ufw allow from 192.168.1.0/24 to any port nfs
sudo ufw allow 111
sudo ufw allow 2049
# 或者使用nfs服务名称
sudo ufw allow nfs
# 查看防火墙状态
sudo ufw status
3. 客户端配置(Linux系统)
3.1 安装NFS客户端
# Ubuntu/Debian
sudo apt install nfs-common -y
# CentOS/RHEL
sudo yum install nfs-utils -y
3.2 创建本地挂载点
# 创建挂载目录
sudo mkdir -p /mnt/nfs_share
3.3 临时挂载NFS共享
# 挂载NFS共享(Ubuntu服务器IP为192.168.1.10为例)
sudo mount -t nfs 192.168.1.10:/data/share /mnt/nfs_share
# 验证挂载
df -h | grep nfs
ls /mnt/nfs_share
3.4 永久挂载配置
# 编辑fstab文件
sudo nano /etc/fstab
# 添加以下行(根据实际情况调整)
192.168.1.10:/data/share /mnt/nfs_share nfs defaults 0 0
# 或者添加更多选项提高稳定性
192.168.1.10:/data/share /mnt/nfs_share nfs rw,hard,intr,timeo=300,retrans=3 0 0
3.5 测试永久挂载
# 卸载已挂载的目录
sudo umount /mnt/nfs_share
# 测试fstab配置
sudo mount -a
# 验证是否成功
mount | grep nfs
4. Windows客户端访问NFS共享
4.1 Windows 10/11专业版/企业版
-
开启NFS客户端功能:
- 控制面板 → 程序 → 启用或关闭Windows功能
- 勾选"NFS服务"下的"NFS客户端"
-
挂载NFS共享:
# 以管理员身份运行CMD或PowerShell
mount \\192.168.1.10\data\share Z:
# 或使用驱动器号
net use Z: \\192.168.1.10\data\share
4.2 Windows 10/11家庭版
由于家庭版不支持原生NFS,需要第三方软件:
- WinNFSd:轻量级NFS服务器/客户端
- NFS AWE:商业软件
- 使用SMB替代:在Ubuntu上配置Samba共享
5. macOS客户端访问NFS共享
5.1 命令行挂载
# 创建挂载点
sudo mkdir /Volumes/nfs_share
# 挂载NFS共享
sudo mount -t nfs 192.168.1.10:/data/share /Volumes/nfs_share
5.2 图形界面挂载
- 打开Finder
- 菜单栏选择"前往" → “连接服务器”
- 输入地址:
nfs://192.168.1.10/data/share - 点击"连接"
6. 高级配置与优化
6.1 性能优化配置
# 编辑/etc/exports,添加性能参数
/data/share 192.168.1.0/24(rw,sync,no_subtree_check,no_wdelay,insecure_locks)
6.2 客户端挂载优化参数
# 在客户端fstab中添加优化参数
192.168.1.10:/data/share /mnt/nfs_share nfs rsize=32768,wsize=32768,hard,intr,timeo=300,retrans=3 0 0
6.3 NFS服务器优化
# 编辑NFS配置文件
sudo nano /etc/default/nfs-kernel-server
# 调整参数
RPCNFSDCOUNT=8 # NFS线程数
RPCMOUNTDOPTS="--manage-gids" # 管理组ID
7. 常见问题解决
7.1 权限问题
# 在服务器端检查
sudo cat /etc/exports
sudo exportfs -v
# 重新导出配置
sudo exportfs -ra
7.2 连接问题
# 检查NFS服务状态
sudo systemctl status nfs-kernel-server
# 查看RPC服务
rpcinfo -p
# 从客户端测试连接
showmount -e 192.168.1.10
7.3 性能问题
# 查看NFS统计
nfsstat
# 监控NFS性能
sudo nfsstat -c # 客户端统计
sudo nfsstat -s # 服务器统计
8. 安全建议
- 使用最小权限原则:只授予必要的读写权限
- 限制访问范围:使用具体的IP地址或小范围的IP段
- 避免使用no_root_squash:除非有特殊需求
- 定期更新系统:
sudo apt update && sudo apt upgrade - 使用防火墙限制:仅允许必要的端口
- 考虑使用Kerberos:如需更高级的安全性
9. 自动化脚本
9.1 服务器一键安装脚本
#!/bin/bash
# nfs_server_setup.sh
echo "开始安装和配置NFS服务器..."
# 安装NFS服务器
sudo apt update
sudo apt install nfs-kernel-server -y
# 创建共享目录
sudo mkdir -p /data/share
sudo chown -R nobody:nogroup /data/share
sudo chmod -R 755 /data/share
# 配置exports文件
echo "/data/share 192.168.1.0/24(rw,sync,no_subtree_check)" | sudo tee -a /etc/exports
# 重启服务
sudo systemctl restart nfs-kernel-server
sudo systemctl enable nfs-kernel-server
# 配置防火墙
sudo ufw allow from 192.168.1.0/24 to any port nfs
sudo ufw allow 111
sudo ufw allow 2049
echo "NFS服务器配置完成!"
echo "共享目录: /data/share"
echo "允许访问: 192.168.1.0/24"
9.2 客户端一键挂载脚本
#!/bin/bash
# nfs_client_mount.sh
SERVER_IP="192.168.1.10"
SHARE_PATH="/data/share"
MOUNT_POINT="/mnt/nfs_share"
echo "开始挂载NFS共享..."
# 创建挂载点
sudo mkdir -p $MOUNT_POINT
# 安装客户端软件
sudo apt install nfs-common -y
# 挂载NFS
sudo mount -t nfs ${SERVER_IP}:${SHARE_PATH} $MOUNT_POINT
# 验证挂载
if mount | grep -q $MOUNT_POINT; then
echo "NFS挂载成功!"
echo "挂载点: $MOUNT_POINT"
else
echo "挂载失败,请检查配置。"
fi
10. 测试验证
10.1 基本功能测试
# 在服务器端
echo "测试内容来自NFS服务器" > /data/share/test.txt
# 在客户端
cat /mnt/nfs_share/test.txt
echo "客户端写入测试" > /mnt/nfs_share/test2.txt
# 回服务器验证
cat /data/share/test2.txt
10.2 性能测试
# 测试写入速度
dd if=/dev/zero of=/mnt/nfs_share/testfile bs=1M count=100
# 测试读取速度
dd if=/mnt/nfs_share/testfile of=/dev/null bs=1M
总结
通过以上步骤,您应该能够在Ubuntu系统上成功搭建NFS服务器,并使局域网内的各种设备能够访问指定的目录。建议根据实际需求调整权限和性能参数,并在生产环境中考虑安全性配置。
更多推荐



所有评论(0)