Linux服务--2.NFS 服务
NFS 服务介绍在计算机网络存储领域NFSNetwork File System网络文件系统是一种实现不同计算机之间文件共享的经典技术。它允许网络中的客户端计算机像访问本地文件一样透明地访问远程服务器上的文件资源极大地简化了跨设备的数据共享与管理流程。NFS 的起源与发展NFS 技术诞生于 20 世纪 80 年代由太阳微系统公司Sun Microsystems率先开发。最初的设计目标是解决 UNIX 系统之间的文件共享问题凭借其简洁的架构和良好的跨平台性迅速成为网络文件共享的主流标准之一。随着技术的演进NFS 经历了多个版本的迭代。其中NFSv3 是应用最为广泛的版本之一它在早期版本的基础上增强了性能和可靠性支持更大的文件尺寸和更多的功能。而 NFSv4 则是较新的版本引入了更强的安全性如支持 Kerberos 认证、状态化连接以及更完善的文件锁机制进一步提升了 NFS 在复杂网络环境中的适用性。NFS 的核心架构NFS 采用客户端 - 服务器Client-Server架构主要由两部分组成NFS 服务器负责存储文件资源并通过 NFS 协议将这些资源共享给授权的客户端。服务器上运行着 NFS 守护进程用于监听客户端的请求、处理文件访问操作以及维护共享目录的权限控制。NFS 客户端通过 NFS 协议访问服务器上的共享文件。客户端需要挂载Mount服务器的共享目录到本地文件系统之后就可以像操作本地文件一样对远程文件进行读写、创建、删除等操作。NFS 的工作原理NFS 的工作流程基于远程过程调用RPCRemote Procedure Call机制具体过程如下注册阶段NFS 服务端启动服务时向 RPC 服务注册服务端口。建立连接阶段客户端向 RPC 服务器查询 NFS 服务器服务端口然后再向 NFS 服务器的服务端口发起挂载请求。挂载阶段服务器验证客户端的身份和权限如果通过验证则允许客户端将共享目录挂载到本地指定的挂载点。文件访问阶段挂载成功后客户端对远程文件的操作如读取、写入会通过 RPC 协议转换为对服务器的远程过程调用。服务器接收到请求后执行相应的文件操作并将结果返回给客户端。权限控制NFS 通过文件系统的权限机制如 UNIX 的用户 ID 和组 ID来控制客户端对文件的访问。服务器会根据客户端的身份以及共享目录的权限设置决定是否允许客户端的操作。NFS 的数据传输特点无状态性部分版本NFSv3 及之前的版本属于无状态协议服务器不保存客户端的连接状态信息。这意味着如果服务器或网络出现故障客户端重新连接后即可继续操作无需恢复复杂的状态信息简化了协议的实现和容错处理。基于 UDP 和 TCPNFS 可以使用 UDP用户数据报协议或 TCP传输控制协议进行数据传输。UDP 具有较低的开销适用于对实时性要求较高但对可靠性要求相对较低的场景TCP 则提供可靠的面向连接的传输适用于数据传输量大、对可靠性要求高的场景在现代网络中应用更为广泛。NFS 的优势透明性客户端访问远程文件的方式与访问本地文件几乎一致用户无需关注文件的实际存储位置降低了使用复杂度。跨平台性NFS 支持多种操作系统如 UNIX、Linux、macOS 等能够实现不同操作系统之间的文件共享。高效性通过优化的数据传输机制和缓存策略NFS 能够提供较高的文件访问性能满足多数网络环境下的文件共享需求。易于管理NFS 的配置相对简单管理员可以通过修改配置文件轻松设置共享目录、访问权限等便于集中管理网络中的文件资源。NFS 的局限性安全性较弱早期版本NFSv3 及之前的版本在安全性方面存在不足缺乏强大的身份认证和数据加密机制容易受到网络监听、身份伪造等攻击。虽然 NFSv4 引入了更多安全特性但在一些对安全性要求极高的场景中仍需配合其他安全措施如 VPN、防火墙使用。对网络依赖性强NFS 的性能和可用性高度依赖网络状况网络延迟、丢包等问题会直接影响文件访问的速度和稳定性。文件锁机制复杂在多客户端同时访问同一文件时NFS 的文件锁机制相对复杂处理不当可能导致数据不一致的问题。NFS 的典型应用场景企业内部文件共享在企业局域网中NFS 可以用于共享办公文档、软件安装包等资源方便员工在不同的计算机上访问和协作。服务器集群存储在 Web 服务器集群、数据库集群等场景中NFS 可以为集群中的所有节点提供统一的共享存储确保各节点访问的数据一致性。嵌入式系统在一些嵌入式设备如网络存储设备、路由器等中NFS 可以作为简单的文件共享解决方案实现设备与外部计算机的数据交互。总结总之NFS 作为一种成熟的网络文件共享技术凭借其简洁、高效、跨平台等优势在各类网络环境中得到了广泛应用。尽管存在一些局限性但通过版本迭代和与其他技术的结合NFS 仍然在网络存储领域发挥着重要作用。NFS 服务最佳实践节点规划节点名称ip地址作用nfs-server10.1.8.20/24提供共享存储nfs-client110.1.8.21/24NFS客户端nfs-client210.1.8.22/24NFS客户端使用 centos7 模板克隆出三台分别命名为 nfs-server、nfs-client1、nfs-client2。nfs-server[rootlocalhost ~]# hostnamectl set-hostname nfs-server[rootlocalhost ~]# nmcli connection modify ens33 ipv4.method manual ipv4.address 10.1.8.20/24 ipv4.gateway 10.1.8.2 ipv4.dns 10.1.8.2 autoconnect yes[rootlocalhost ~]# nmcli connection up ens33nfs-client1[rootlocalhost ~]# hostnamectl set-hostname nfs-client1[rootlocalhost ~]# nmcli connection modify ens33 ipv4.method manual ipv4.address 10.1.8.21/24 ipv4.gateway 10.1.8.2 ipv4.dns 10.1.8.2 autoconnect yes[rootlocalhost ~]# nmcli connection up ens33nfs-client2[rootlocalhost ~]# hostnamectl set-hostname nfs-client2[rootlocalhost ~]# nmcli connection modify ens33 ipv4.method manual ipv4.address 10.1.8.22/24 ipv4.gateway 10.1.8.2 ipv4.dns 10.1.8.2 autoconnect yes[rootlocalhost ~]# nmcli connection up ens33部署服务NFS 服务由 nfs-utils 软件包提供。安装软件包[rootnfs-server ~]# yum install -y nfs-utils[rootnfs-server ~]# yum install -y httpd准备共享目录[rootnfs-server ~]# mkdir -p /shares/webapp[rootnfs-server ~]# chown apache /shares/webapp/启用并启动服务[rootnfs-server ~]# systemctl enable nfs-server --now配置防火墙[rootnfs-server ~]# firewall-cmd --add-servicenfs --add-servicerpc-bind --add-servicemountd[rootnfs-server ~]# firewall-cmd --add-servicenfs --add-servicerpc-bind --add-servicemountd --permanent配置 NFS 导出NFS 服务器主要配置文件是/etc/exports。目录/etc/exports.d中任何以.exports结尾且不以点.开头的文件也会生效。所有这些文件都使用相同的语法。提示与编辑文件/etc/exports本身相比在/etc/exports.d中创建或删除文件可能更容易并且它可以减少一系列相关配置更改意外破坏现有导出的风险。配置文件中每一行都声明一个导出点。第一个字段是要导出到客户端的目录的名称。该行的其余部分列出了可以访问共享目录的客户端系统以及授予它们的访问权限。提示NFS 不要使用 SMB 共享的目录。如果这样做则可能会导致文件损坏或其他文件完整性或一致性问题。配置示例可解析 DNS 的主机名例如nfs-client1.laogao.cloud。在以下示例中nfs-client1.laogao.cloud系统可以挂载/shares/webapp目录。/shares/webapp nfs-client1.laogao.cloudDNS 解析的主机名带*通配符。以下示例允许laogao.cloud域中的所有系统访问 NFS 共享。/shares/webapp *.laogao.cloudIPv4 地址。以下示例允许从10.1.8.21IP 地址访问 NFS 共享。/shares/webapp10.1.8.21IPv4 网络。以下示例允许从10.1.8.0/24网络访问 NFS 共享。您也可以使用10.1.8.0/255.255.255.0表示法。/shares/webapp10.1.8.0/24 /shares/webapp10.1.8.0/255.255.255.0IPv6 地址。以下示例允许具有fde2:6494:1e09:2::20IPv6 地址的客户端系统访问 NFS 共享。/shares/webapp fde2:6494:1e09:2::20IPv6 网络。以下示例允许fde2:6494:1e09:2::/64IPv6 网络访问 NFS 共享。/shares/webapp fde2:6494:1e09:2::/64多个客户机系统要与多个客户机系统共享目录请在目录名称后使用以空格分隔的列表。/shares/webapp10.1.8.0/24 client.laogao.cloud *.example.net默认情况下目录以只读模式与客户端共享。在每个客户定义之后您可以立即在括号中指定导出选项以覆盖默认值。客户端定义的末尾和左括号之间必须没有空格。常用选项rw此选项允许对指定客户端进行读/写访问。如果没有该选项或者如果您使用ro代替则 NFS 仅授予读取访问权限。在以下示例中nfs-client1.laogao.cloud具有读/写访问权限而nfs-client2.laogao.cloud具有只读访问权限。# rw 选项示例/shares/webapp nfs-client1.laogao.cloud(rw)nfs-client2.laogao.cloudno_root_squash默认情况下当客户机上的 root 用户访问 NFS 导出时服务器会将其视为 nobody 用户在服务器上定义的访问。这意味着如果客户端上的 root 用户在导出文件上创建了文件则该文件将归用户 nobody 所有。这也意味着如果客户机上的 root 用户尝试读取导出文件而该文件是没人能读取的用户则访问将失败。您可以通过添加no_root_squash选项来禁用该安全保护。以下示例允许nfs-client1.laogao.cloud系统具有对/shares/webapp导出目录的读/写访问权限和实际 root 用户访问权限。# no_root_squash 选项示例/shares/webapp nfs-client1.laogao.cloud(rw,no_root_squash)应用配置我们使用以下记录[rootnfs-server ~]# vim /etc/exports/shares/webapp10.1.8.0/24(rw)每当您在/etc/exports或/etc/exports.d/*.exports中更改导出点时请对 NFS 服务运行exportfs -r命令确保更改生效或者运行systemctl reload nfs-server。[rootnfs-server ~]# exportfs -r# 或者[rootnfs-server ~]# systemctl reload nfs-server# 或者[rootnfs-server ~]# exportfs -av监视 NFS 导出使用exportfs命令列出 NFS 服务器当前导出的目录。[rootnfs-server ~]# exportfs/shares/webapp10.1.8.0/24默认情况下该命令不显示导出选项。使用-v选项列出这些选项包括缺省选项。[rootnfs-server ~]# exportfs -v/shares/webapp10.1.8.0/24(sync,wdelay,hide,no_subtree_check,secsys,rw,secure,root_squash,no_all_squash)客户端挂载nfs-client1# 安装软件包[rootnfs-client1 ~]# yum install -y nfs-utils httpd[rootnfs-client1 ~]# id apacheuid48(apache)gid48(apache)groups48(apache)[rootnfs-client1 ~]# systemctl enable httpd --now# 关闭防火墙[rootnfs-client1 ~]# systemctl stop firewalld# 查看服务端提供的共享[rootnfs-client1 ~]# showmount -e 10.1.8.20Export listfor10.1.8.20: /shares/webapp10.1.8.0/24# 挂载[rootnfs-client1 ~]# mount -t nfs 10.1.8.20:/shares/webapp /var/www/html# 发现 nfs-server 上的 /shares/webapp 已经挂载到 nfs-client1 本地的 /var/www/html[rootnfs-client1 ~]# df -h | grep www10.1.8.20:/shares/webapp 50G4.4G 46G9% /var/www/html# root 用户不能创建[rootnfs-client1 ~]# touch /var/www/html/root-f1touch: cannottouch/var/www/html/root-f1:Permission denied# apache 用户能创建[rootnfs-client1 ~]# su -l -s /bin/bash apache-bash-4.2$echoapache website/var/www/html/web1.html访问测试nfs-server 修改共享配置权限测试[rootnfs-server ~]# vim /etc/exports/shares/webapp10.1.8.0/24(rw,no_root_squash)[rootnfs-server ~]# exportfs -r[rootnfs-server ~]# exportfs -v/shares/webapp10.1.8.0/24(sync,wdelay,hide,no_subtree_check,secsys,rw,secure,no_root_squash,no_all_squash)# 测试root 可以创建文件了[rootnfs-client1 ~]# touch /var/www/html/root-f1[rootnfs-client1 ~]# ls /var/www/htmlroot-f1 web1.htmlnfs-client2 挂载# 安装软件包[rootnfs-client2 ~]# yum install -y nfs-utils httpd[rootnfs-client2 ~]# id apacheuid48(apache)gid48(apache)groups48(apache)[rootnfs-client2 ~]# systemctl enable httpd --now# 关闭防火墙[rootnfs-client2 ~]# systemctl stop firewalld# 查看服务端提供的共享[rootnfs-client2 ~]# showmount -e 10.1.8.20Export listfor10.1.8.20: /shares/webapp10.1.8.0/24# 挂载[rootnfs-client2 ~]# mount -t nfs 10.1.8.20:/shares/webapp /var/www/html# 发现 nfs-server 上的 /shares/webapp 已经挂载到 nfs-client2 本地的 /var/www/html[rootnfs-client2 ~]# df -h | grep www10.1.8.20:/shares/webapp 50G4.4G 46G9% /var/www/html测试# nfs-client1 创建了 xiyangyang 文件[rootnfs-client1 ~]# touch /var/www/html/xiyangyang# nfs-client2 也能看到证明使用了相同的共享存储 10.1.8.20[rootnfs-client2 ~]# ls /var/www/html/root-f1 web1.html xiyangyang实战测试在 nfs-client1 上共享目录里/var/www/html创建index.html[rootnfs-client1 ~]# echo heihei /var/www/html/index.htmlnfs-client1、nfs-client2 的网站打开看到一样的内容持久化挂载修改/etc/fstab最后添加如下记录nfs-client1[rootnfs-client1 ~]# vim /etc/fstab10.1.8.20:/shares/webapp /var/www/html nfs defaults00nfs-client2[rootnfs-client2 ~]# vim /etc/fstab10.1.8.20:/shares/webapp /var/www/html nfs defaults00重启并验证自动挂载# 重启[rootnfs-client1 ~]# reboot[rootnfs-client2 ~]# reboot# 发现自动挂载[rootnfs-client1 ~]# df -h | grep www10.1.8.20:/shares/webapp 50G4.4G 46G9% /var/www/html[rootnfs-client2 ~]# df -h | grep www10.1.8.20:/shares/webapp 50G4.4G 46G9% /var/www/html

相关新闻

从玩具到生产:Harness Engineering如何驾驭大语言模型构建可靠AI应用

从玩具到生产:Harness Engineering如何驾驭大语言模型构建可靠AI应用

1. 从“玩具”到“工程”:为什么我们需要 Harness Engineering 如果你最近在捣鼓大语言模型,不管是调用 OpenAI 的 API 写个聊天机器人,还是用开源的 Llama 模型搞点本地应用,大概率经历过这样的场景:写几行代码&#…

2026/8/7 17:09:24 阅读更多 →
5分钟快速掌握Path of Building:流放之路最强离线Build规划器终极指南

5分钟快速掌握Path of Building:流放之路最强离线Build规划器终极指南

5分钟快速掌握Path of Building:流放之路最强离线Build规划器终极指南 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding 你是否曾经在流放之路中为Build规划而烦…

2026/8/7 17:09:24 阅读更多 →
RevokeMsgPatcher终极指南:3步实现PC版微信/QQ/TIM消息防撤回

RevokeMsgPatcher终极指南:3步实现PC版微信/QQ/TIM消息防撤回

RevokeMsgPatcher终极指南:3步实现PC版微信/QQ/TIM消息防撤回 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://git…

2026/8/7 17:08:24 阅读更多 →

最新新闻

无线动能开关|生鲜超市专柜分区照明控制方案

无线动能开关|生鲜超市专柜分区照明控制方案

一.系统概述 生鲜超市、社区商超的肉类、果蔬、水产、熟食专柜,是商超核心经营场景。超市专柜灯光具备极强的品类专属属性,不同生鲜品类需要不同的灯光色温与开关时段。传统商超专柜灯光统一走线、统一总控,无法实现单专柜独立控灯&#xff0…

2026/8/7 20:48:44 阅读更多 →
楼宇公共区域节能|PLC照明智能集中控制系统方案

楼宇公共区域节能|PLC照明智能集中控制系统方案

一.系统概述商住小区、商务写字楼、商业综合体的楼道、电梯厅、大堂、地下车库等公共区域,是楼宇能耗消耗的主要场景之一,也是物业智能化、节能化改造的核心板块。传统楼宇公共照明采用人工空开控制、声光控、人体感应控灯等模式,普遍存在诸多…

2026/8/7 20:48:44 阅读更多 →
《Spring Boot 深度源码级原理拆解 线上高并发排障实战》

《Spring Boot 深度源码级原理拆解 线上高并发排障实战》

《Spring Boot 深度源码级原理拆解 线上高并发排障实战》 作者: 李然 (程序员鸭梨)技术方向: Java AI 应用架构、微服务智能治理、AI 辅助可观测性、企业级大模型后端集成 💡 导语与现场排障背景 在最近一次线上压测复盘中,我们的 AI 智能服务集群触发…

2026/8/7 20:48:44 阅读更多 →
一文读懂JoyAI-Image-OpenSpatial数据格式:轻松解析多模态空间数据

一文读懂JoyAI-Image-OpenSpatial数据格式:轻松解析多模态空间数据

一文读懂JoyAI-Image-OpenSpatial数据格式:轻松解析多模态空间数据 【免费下载链接】JoyAI-Image-OpenSpatial 项目地址: https://ai.gitcode.com/jd-opensource/JoyAI-Image-OpenSpatial JoyAI-Image-OpenSpatial是基于OpenSpatial构建的空间理解数据集&am…

2026/8/7 20:48:44 阅读更多 →
《线上卡顿与协程泄露:AI 后端大模型服务集成 深度排障》

《线上卡顿与协程泄露:AI 后端大模型服务集成 深度排障》

《线上卡顿与协程泄露:AI 后端大模型服务集成 深度排障》 作者: 李然 (程序员鸭梨)技术方向: Java AI 应用架构、微服务智能治理、AI 辅助可观测性、企业级大模型后端集成 💡 导语与现场排障背景 在最近一次线上压测复盘中,我们的 AI 智能服…

2026/8/7 20:48:44 阅读更多 →
防火墙之后的“防火墙”:派拓遭审查背后的供应链安全与基础软件博弈

防火墙之后的“防火墙”:派拓遭审查背后的供应链安全与基础软件博弈

2026年8月6日,一则公告震动网络安全行业。 国家网信办发布消息,网络安全审查办公室依据《中华人民共和国国家安全法》《中华人民共和国网络安全法》,按照《网络安全审查办法》,对派拓公司(Palo Alto Networks&#xf…

2026/8/7 20:47:44 阅读更多 →

日新闻

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy 想要将Android手机屏幕完美投射到电脑上,享受大屏操作的自…

2026/8/7 0:00:19 阅读更多 →
如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南 【免费下载链接】tom-select Tom Select is a lightweight (~16kb gzipped) hybrid of a textbox and select box. Forked from selectize.js to provide a framework agnostic autocomplete widget wi…

2026/8/7 0:00:19 阅读更多 →
5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件 【免费下载链接】nsz NSZ - Homebrew compatible NSP/XCI compressor/decompressor 项目地址: https://gitcode.com/gh_mirrors/ns/nsz 你是否在为Nintendo Switch游戏文件占用大量存储…

2026/8/7 0:00:19 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/6 22:02:27 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/7 17:02:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/6 22:02:28 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/7 17:02:36 阅读更多 →