【Linux】NFS 实践手册 - Ubuntu 系统

张开发
2026/4/20 1:15:04 15 分钟阅读

分享文章

【Linux】NFS 实践手册 - Ubuntu 系统
NFS 实践手册 - Ubuntu 系统1. 环境准备1.1 系统要求Ubuntu 服务器版/桌面版 18.04 或更高版本局域网内所有设备处于同一网络段了解服务器IP地址可通过ip addr或ifconfig查看2. NFS 服务器端配置2.1 安装 NFS 服务器# 更新包列表sudoaptupdate# 安装 NFS 服务器sudoaptinstallnfs-kernel-server-y2.2 创建共享目录# 创建要共享的目录例如/data/sharesudomkdir-p/data/share# 设置目录权限根据需要调整sudochown-Rnobody:nogroup /data/sharesudochmod-R755/data/share# 或者设置更灵活的权限客户端可读写sudochmod-R777/data/share2.3 配置 NFS 导出# 编辑NFS导出配置文件sudonano/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共享目录sudoexportfs-ra# 重启NFS服务sudosystemctl restart nfs-kernel-server# 设置开机自启sudosystemctlenablenfs-kernel-server# 查看导出状态sudoexportfs-v2.6 防火墙配置# 如果启用了UFW防火墙需要放行NFSsudoufw allow from192.168.1.0/24 to any port nfssudoufw allow111sudoufw allow2049# 或者使用nfs服务名称sudoufw allow nfs# 查看防火墙状态sudoufw status3. 客户端配置Linux系统3.1 安装NFS客户端# Ubuntu/Debiansudoaptinstallnfs-common-y# CentOS/RHELsudoyuminstallnfs-utils-y3.2 创建本地挂载点# 创建挂载目录sudomkdir-p/mnt/nfs_share3.3 临时挂载NFS共享# 挂载NFS共享Ubuntu服务器IP为192.168.1.10为例sudomount-tnfs192.168.1.10:/data/share /mnt/nfs_share# 验证挂载df-h|grepnfsls/mnt/nfs_share3.4 永久挂载配置# 编辑fstab文件sudonano/etc/fstab# 添加以下行根据实际情况调整192.168.1.10:/data/share /mnt/nfs_share nfs defaults00# 或者添加更多选项提高稳定性192.168.1.10:/data/share /mnt/nfs_share nfs rw,hard,intr,timeo300,retrans3003.5 测试永久挂载# 卸载已挂载的目录sudoumount/mnt/nfs_share# 测试fstab配置sudomount-a# 验证是否成功mount|grepnfs4. 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\share4.2 Windows 10/11家庭版由于家庭版不支持原生NFS需要第三方软件WinNFSd轻量级NFS服务器/客户端NFS AWE商业软件使用SMB替代在Ubuntu上配置Samba共享5. macOS客户端访问NFS共享5.1 命令行挂载# 创建挂载点sudomkdir/Volumes/nfs_share# 挂载NFS共享sudomount-tnfs192.168.1.10:/data/share /Volumes/nfs_share5.2 图形界面挂载打开Finder菜单栏选择前往 → “连接服务器”输入地址nfs://192.168.1.10/data/share点击连接6. 高级配置与优化6.1 性能优化配置# 编辑/etc/exports添加性能参数/data/share192.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 nfsrsize32768,wsize32768,hard,intr,timeo300,retrans3006.3 NFS服务器优化# 编辑NFS配置文件sudonano/etc/default/nfs-kernel-server# 调整参数RPCNFSDCOUNT8# NFS线程数RPCMOUNTDOPTS--manage-gids# 管理组ID7. 常见问题解决7.1 权限问题# 在服务器端检查sudocat/etc/exportssudoexportfs-v# 重新导出配置sudoexportfs-ra7.2 连接问题# 检查NFS服务状态sudosystemctl status nfs-kernel-server# 查看RPC服务rpcinfo-p# 从客户端测试连接showmount-e192.168.1.107.3 性能问题# 查看NFS统计nfsstat# 监控NFS性能sudonfsstat-c# 客户端统计sudonfsstat-s# 服务器统计8. 安全建议使用最小权限原则只授予必要的读写权限限制访问范围使用具体的IP地址或小范围的IP段避免使用no_root_squash除非有特殊需求定期更新系统sudo apt update sudo apt upgrade使用防火墙限制仅允许必要的端口考虑使用Kerberos如需更高级的安全性9. 自动化脚本9.1 服务器一键安装脚本#!/bin/bash# nfs_server_setup.shecho开始安装和配置NFS服务器...# 安装NFS服务器sudoaptupdatesudoaptinstallnfs-kernel-server-y# 创建共享目录sudomkdir-p/data/sharesudochown-Rnobody:nogroup /data/sharesudochmod-R755/data/share# 配置exports文件echo/data/share 192.168.1.0/24(rw,sync,no_subtree_check)|sudotee-a/etc/exports# 重启服务sudosystemctl restart nfs-kernel-serversudosystemctlenablenfs-kernel-server# 配置防火墙sudoufw allow from192.168.1.0/24 to any port nfssudoufw allow111sudoufw allow2049echoNFS服务器配置完成echo共享目录: /data/shareecho允许访问: 192.168.1.0/249.2 客户端一键挂载脚本#!/bin/bash# nfs_client_mount.shSERVER_IP192.168.1.10SHARE_PATH/data/shareMOUNT_POINT/mnt/nfs_shareecho开始挂载NFS共享...# 创建挂载点sudomkdir-p$MOUNT_POINT# 安装客户端软件sudoaptinstallnfs-common-y# 挂载NFSsudomount-tnfs${SERVER_IP}:${SHARE_PATH}$MOUNT_POINT# 验证挂载ifmount|grep-q$MOUNT_POINT;thenechoNFS挂载成功echo挂载点:$MOUNT_POINTelseecho挂载失败请检查配置。fi10. 测试验证10.1 基本功能测试# 在服务器端echo测试内容来自NFS服务器/data/share/test.txt# 在客户端cat/mnt/nfs_share/test.txtecho客户端写入测试/mnt/nfs_share/test2.txt# 回服务器验证cat/data/share/test2.txt10.2 性能测试# 测试写入速度ddif/dev/zeroof/mnt/nfs_share/testfilebs1Mcount100# 测试读取速度ddif/mnt/nfs_share/testfileof/dev/nullbs1M总结通过以上步骤您应该能够在Ubuntu系统上成功搭建NFS服务器并使局域网内的各种设备能够访问指定的目录。建议根据实际需求调整权限和性能参数并在生产环境中考虑安全性配置。

更多文章