news 2026/4/20 1:15:01

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Linux】NFS 实践手册 - Ubuntu 系统

NFS 实践手册 - Ubuntu 系统

1. 环境准备

1.1 系统要求

  • Ubuntu 服务器版/桌面版 18.04 或更高版本
  • 局域网内所有设备处于同一网络段
  • 了解服务器IP地址(可通过ip addrifconfig查看)

2. NFS 服务器端配置

2.1 安装 NFS 服务器

# 更新包列表sudoaptupdate# 安装 NFS 服务器sudoaptinstallnfs-kernel-server-y

2.2 创建共享目录

# 创建要共享的目录(例如:/data/share)sudomkdir-p/data/share# 设置目录权限(根据需要调整)sudochown-Rnobody:nogroup /data/sharesudochmod-R755/data/share# 或者设置更灵活的权限(客户端可读写)sudochmod-R777/data/share

2.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-v

2.6 防火墙配置

# 如果启用了UFW防火墙,需要放行NFSsudoufw allow from192.168.1.0/24 to any port nfssudoufw allow111sudoufw allow2049# 或者使用nfs服务名称sudoufw allow nfs# 查看防火墙状态sudoufw status

3. 客户端配置(Linux系统)

3.1 安装NFS客户端

# Ubuntu/Debiansudoaptinstallnfs-common-y# CentOS/RHELsudoyuminstallnfs-utils-y

3.2 创建本地挂载点

# 创建挂载目录sudomkdir-p/mnt/nfs_share

3.3 临时挂载NFS共享

# 挂载NFS共享(Ubuntu服务器IP为192.168.1.10为例)sudomount-tnfs192.168.1.10:/data/share /mnt/nfs_share# 验证挂载df-h|grepnfsls/mnt/nfs_share

3.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,timeo=300,retrans=300

3.5 测试永久挂载

# 卸载已挂载的目录sudoumount/mnt/nfs_share# 测试fstab配置sudomount-a# 验证是否成功mount|grepnfs

4. Windows客户端访问NFS共享

4.1 Windows 10/11专业版/企业版

  1. 开启NFS客户端功能

    • 控制面板 → 程序 → 启用或关闭Windows功能
    • 勾选"NFS服务"下的"NFS客户端"
  2. 挂载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 命令行挂载

# 创建挂载点sudomkdir/Volumes/nfs_share# 挂载NFS共享sudomount-tnfs192.168.1.10:/data/share /Volumes/nfs_share

5.2 图形界面挂载

  1. 打开Finder
  2. 菜单栏选择"前往" → “连接服务器”
  3. 输入地址:nfs://192.168.1.10/data/share
  4. 点击"连接"

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 nfsrsize=32768,wsize=32768,hard,intr,timeo=300,retrans=300

6.3 NFS服务器优化

# 编辑NFS配置文件sudonano/etc/default/nfs-kernel-server# 调整参数RPCNFSDCOUNT=8# NFS线程数RPCMOUNTDOPTS="--manage-gids"# 管理组ID

7. 常见问题解决

7.1 权限问题

# 在服务器端检查sudocat/etc/exportssudoexportfs-v# 重新导出配置sudoexportfs-ra

7.2 连接问题

# 检查NFS服务状态sudosystemctl status nfs-kernel-server# 查看RPC服务rpcinfo-p# 从客户端测试连接showmount-e192.168.1.10

7.3 性能问题

# 查看NFS统计nfsstat# 监控NFS性能sudonfsstat-c# 客户端统计sudonfsstat-s# 服务器统计

8. 安全建议

  1. 使用最小权限原则:只授予必要的读写权限
  2. 限制访问范围:使用具体的IP地址或小范围的IP段
  3. 避免使用no_root_squash:除非有特殊需求
  4. 定期更新系统sudo apt update && sudo apt upgrade
  5. 使用防火墙限制:仅允许必要的端口
  6. 考虑使用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 allow2049echo"NFS服务器配置完成!"echo"共享目录: /data/share"echo"允许访问: 192.168.1.0/24"

9.2 客户端一键挂载脚本

#!/bin/bash# nfs_client_mount.shSERVER_IP="192.168.1.10"SHARE_PATH="/data/share"MOUNT_POINT="/mnt/nfs_share"echo"开始挂载NFS共享..."# 创建挂载点sudomkdir-p$MOUNT_POINT# 安装客户端软件sudoaptinstallnfs-common-y# 挂载NFSsudomount-tnfs${SERVER_IP}:${SHARE_PATH}$MOUNT_POINT# 验证挂载ifmount|grep-q$MOUNT_POINT;thenecho"NFS挂载成功!"echo"挂载点:$MOUNT_POINT"elseecho"挂载失败,请检查配置。"fi

10. 测试验证

10.1 基本功能测试

# 在服务器端echo"测试内容来自NFS服务器">/data/share/test.txt# 在客户端cat/mnt/nfs_share/test.txtecho"客户端写入测试">/mnt/nfs_share/test2.txt# 回服务器验证cat/data/share/test2.txt

10.2 性能测试

# 测试写入速度ddif=/dev/zeroof=/mnt/nfs_share/testfilebs=1Mcount=100# 测试读取速度ddif=/mnt/nfs_share/testfileof=/dev/nullbs=1M

总结

通过以上步骤,您应该能够在Ubuntu系统上成功搭建NFS服务器,并使局域网内的各种设备能够访问指定的目录。建议根据实际需求调整权限和性能参数,并在生产环境中考虑安全性配置。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 0:56:54

SpringBoot 多事务并发控制:悲观锁与乐观锁全面详解

前面我们系统学习了 SpringBoot 声明式事务(Transactional)、编程式事务(TransactionTem)plate)、事务传播行为、隔离级别以及事务失效的全套解决方案,核心解决的是「单个业务、单次请求」的事务原子性、一致性问题。但…

作者头像 李华
网站建设 2026/4/20 0:54:41

用AI写文案3个月,我终于搞懂了流量的核心密码

流量核心密码解析用户痛点洞察 精准识别目标受众的潜在需求,分析其行为模式和偏好。通过数据工具挖掘高频搜索词、评论区高频问题,建立用户画像。避免主观臆测,所有结论需有数据支撑。内容价值密度 每篇文案需包含可立即落地的实用信息&#…

作者头像 李华