集群多台 Web 同步文件太麻烦?NFS 简单搞定统一存储
Linux NFS 网络文件服务一、NFS 基础概念介绍1.1 什么是 NFSNFSNetwork File System网络文件系统是经典跨主机文件共享技术能让客户端像访问本地磁盘一样透明读写远程服务器共享目录广泛用于 Linux 集群统一存储、企业内部文件共享场景。1.2 NFS 版本迭代NFSv3使用最广泛无状态协议支持大文件兼容 UDP/TCP 传输性能稳定NFSv4新增 Kerberos 安全认证、状态化连接、完善文件锁安全性大幅提升。1.3 核心架构C/S 架构NFS 服务端存放原始文件运行 nfs-server、rpc 相关进程通过配置文件导出共享目录管控客户端访问权限NFS 客户端通过mount将远程共享挂载到本地目录操作逻辑和本地文件完全一致。1.4 工作原理RPC 远程调用机制NFS 不固定端口依赖 RPCportmap做端口协调完整流程注册服务端 NFS 启动向 portmap 注册自身监听端口端口查询客户端先访问服务端 portmap获取 NFS 服务端口挂载鉴权客户端发起挂载请求服务端校验客户端IP/域名权限读写转发挂载完成后所有文件读写操作通过 RPC 转发给服务端执行结果回传给客户端权限校验依靠 Linux UID/GID 用户组机制控制文件读写权限。1.5 传输与协议特性无状态NFSv3服务端不保存客户端连接状态断网重连无需恢复会话容错简单双传输协议UDP低开销适合局域网实时小文件TCP面向连接可靠传输大数据、公网环境首选。1.6 NFS 优缺点优势访问透明远程文件和本地操作无感知跨平台支持 Linux、UNIX、macOS性能高效自带缓存机制局域网读写速度优秀配置简单仅需修改 exports 配置文件即可完成共享发布。局限性早期版本安全弱NFSv3 无加密仅靠IP鉴权易被伪造NFSv4 安全增强高安全场景仍需搭配防火墙/VPN强依赖网络延迟、丢包会直接降低读写速度多客户端文件锁逻辑复杂并发写入不当易出现数据不一致。1.7 典型应用场景企业内网办公文件、软件包统一共享Web/数据库集群统一后端存储本篇实战场景路由器、NAS 嵌入式设备简易文件互通。二、实验环境规划使用 CentOS7 系统克隆3台虚拟机规划如下节点名称IP地址角色nfs-server10.1.8.20/24NFS共享存储服务端nfs-client110.1.8.21/24Web客户端节点1nfs-client210.1.8.22/24Web客户端节点2网关、DNS统一10.1.8.2三、三台主机基础网络与主机名配置3.1 nfs-server 配置# 修改主机名hostnamectl set-hostname nfs-server# 静态IP配置nmcli connection modify ens33 ipv4.method manual ipv4.address10.1.8.20/24 ipv4.gateway10.1.8.2 ipv4.dns10.1.8.2 autoconnectyes# 重启网卡生效nmcli connection up ens333.2 nfs-client1 配置hostnamectl set-hostname nfs-client1 nmcli connection modify ens33 ipv4.method manual ipv4.address10.1.8.21/24 ipv4.gateway10.1.8.2 ipv4.dns10.1.8.2 autoconnectyesnmcli connection up ens333.3 nfs-client2 配置hostnamectl set-hostname nfs-client2 nmcli connection modify ens33 ipv4.method manual ipv4.address10.1.8.22/24 ipv4.gateway10.1.8.2 ipv4.dns10.1.8.2 autoconnectyesnmcli connection up ens33四、NFS 服务端完整部署10.1.8.204.1 安装依赖包NFS 核心工具nfs-utils本次实验同步安装 Apache 用于Web测试yuminstall-ynfs-utils httpd4.2 创建共享目录并配置属主Web服务运行用户为 apache目录归属 apache 用户避免权限报错mkdir-p/shares/webappchownapache /shares/webapp/4.3 开机自启并立即启动 NFS 服务systemctlenablenfs-server--now4.4 防火墙放行 NFS 相关服务临时放行 永久写入防火墙规则# 临时生效firewall-cmd --add-servicenfs --add-servicerpc-bind --add-servicemountd# 永久保存firewall-cmd --add-servicenfs --add-servicerpc-bind --add-servicemountd--permanent4.5 NFS 共享导出配置详解核心配置文件主配置/etc/exports扩展配置目录/etc/exports.d/目录下以.exports结尾的文件自动加载推荐使用该目录拆分配置避免改坏全局配置。配置语法说明共享目录 客户端匹配规则(权限参数)客户端匹配支持格式主机域名nfs-client1.chenxin.cloud域名通配*.chenxin.cloudchenxin 域下所有主机单IP10.1.8.21网段10.1.8.0/24/10.1.8.0/255.255.255.0IPv6地址/网段fde2:6494:1e09:2::20、fde2:6494:1e09:2::/64多客户端空格分隔/shares/webapp10.1.8.0/24 client.chenxin.cloud *.example.net常用权限参数rw读写权限默认ro只读no_root_squash关闭root压制。默认客户端root访问会被转换成nobody用户开启后保留真实root权限sync同步写入数据落盘后再返回结果保证数据安全默认开启。实战配置允许10.1.8.0/24网段读写共享编辑主配置文件vim/etc/exports写入内容/shares/webapp10.1.8.0/24(rw)4.6 重载共享配置生效修改 exports 后必须重载三种方式任选其一# 重载导出配置推荐exportfs-r# 重载nfs服务systemctl reload nfs-server# 查看并同步所有导出规则exportfs-av4.7 查看当前已发布的共享目录# 简洁查看exportfs# 完整查看包含权限参数exportfs-v输出示例/shares/webapp10.1.8.0/24(sync,wdelay,hide,no_subtree_check,secsys,rw,secure,root_squash,no_all_squash)五、客户端挂载与权限测试nfs-client15.1 客户端安装工具包yuminstall-ynfs-utils httpd# 查看apache用户ID所有节点apache uid48保证跨机权限统一idapache# 启动httpd并开机自启systemctlenablehttpd--now# 实验环境直接关闭防火墙简化操作systemctl stop firewalld5.2 查看服务端发布的共享列表showmount-e10.1.8.20返回结果Export listfor10.1.8.20: /shares/webapp10.1.8.0/245.3 手动挂载NFS共享将服务端/shares/webapp挂载到本地网站根目录/var/www/htmlmount-tnfs10.1.8.20:/shares/webapp /var/www/html5.4 验证挂载状态df-h|grepwww输出10.1.8.20:/shares/webapp 50G4.4G 46G9% /var/www/html5.5 默认root_squash权限测试默认配置开启root压制客户端root无法创建文件touch/var/www/html/root-f1# 报错Permission denied切换apache用户可正常写入su-l-s/bin/bash apacheechoapache website/var/www/html/web1.html浏览器访问http://10.1.8.21/web1.html页面输出apache websiteWeb服务读取NFS共享文件成功。5.6 修改服务端配置关闭root压制1. 修改exports配置vim/etc/exports更新配置行/shares/webapp10.1.8.0/24(rw,no_root_squash)2. 重载配置并验证参数exportfs-rexportfs-v参数中可见no_root_squash代表关闭root压制。3. 重新测试root写入客户端root可正常创建文件touch/var/www/html/root-f1ls/var/www/html# 输出 root-f1 web1.html六、第二台客户端 nfs-client2 同步挂载测试6.1 客户端基础环境部署yuminstall-ynfs-utils httpdidapache systemctlenablehttpd--nowsystemctl stop firewalld6.2 查看共享并挂载showmount-e10.1.8.20mount-tnfs10.1.8.20:/shares/webapp /var/www/htmldf-h|grepwww6.3 验证多客户端数据互通在 client1 创建文件touch/var/www/html/xiyangyangclient2 直接可见该文件证明两台Web节点共用同一存储ls/var/www/html/# root-f1 web1.html xiyangyang七、集群Web共享存储实战验证在 nfs-client1 首页写入内容echoheihei/var/www/html/index.html分别访问两台Web节点地址http://10.1.8.21http://10.1.8.22两台服务器页面完全一致实现集群统一静态资源存储。八、开机自动持久化挂载/etc/fstab手动挂载重启后失效写入/etc/fstab实现开机自动挂载。8.1 nfs-client1 配置开机挂载vim/etc/fstab文件末尾追加一行10.1.8.20:/shares/webapp /var/www/html nfs defaults008.2 nfs-client2 同步配置vim/etc/fstab同样添加10.1.8.20:/shares/webapp /var/www/html nfs defaults008.3 重启验证自动挂载两台客户端分别重启reboot重启后执行挂载查询无需手动mount即可自动加载df-h|grepwww# 依然能看到NFS挂载条目九、总结NFS 依靠 RPC 端口映射实现跨主机文件共享架构简单、适配 Linux 集群场景root_squash是核心安全机制线上环境不建议随意开启no_root_squashWeb 集群搭配 NFS 共享静态资源可实现多节点网站内容完全同步生产环境优化建议使用 NFSv4、搭配防火墙 IP 白名单、结合 VPN 提升安全性避免公网直接暴露 NFS 服务。

相关新闻

BepInEx.ConfigurationManager:让游戏插件配置变得前所未有的简单

BepInEx.ConfigurationManager:让游戏插件配置变得前所未有的简单

BepInEx.ConfigurationManager:让游戏插件配置变得前所未有的简单 【免费下载链接】BepInEx.ConfigurationManager Plugin configuration manager for BepInEx 项目地址: https://gitcode.com/gh_mirrors/be/BepInEx.ConfigurationManager 还在为游戏插件的复…

2026/8/9 23:54:00 阅读更多 →
Obsidian插件汉化终极指南:5分钟让英文插件变中文的完整方案

Obsidian插件汉化终极指南:5分钟让英文插件变中文的完整方案

Obsidian插件汉化终极指南:5分钟让英文插件变中文的完整方案 【免费下载链接】obsidian-i18n 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-i18n 还在为Obsidian插件全是英文界面而烦恼吗?想要轻松将心爱的插件变成中文版,…

2026/8/9 23:54:00 阅读更多 →
从零开始掌握Ryujinx:高性能Switch模拟器完整使用指南

从零开始掌握Ryujinx:高性能Switch模拟器完整使用指南

从零开始掌握Ryujinx:高性能Switch模拟器完整使用指南 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 想在电脑上畅玩《塞尔达传说:王国之泪》、《集合啦&#…

2026/8/9 23:53:00 阅读更多 →

最新新闻

如何实现拼多多自动回复与客服自动化?不抢焦不抢屏,后台跑百店你前台打游戏

如何实现拼多多自动回复与客服自动化?不抢焦不抢屏,后台跑百店你前台打游戏

如何实现拼多多自动回复与客服自动化?不抢焦不抢屏,后台跑百店你前台打游戏 在电商圈混久了就会发现,拼多多的自动回复与客服,是店群运营中最耗人力也最容易出错的环节。 店群客服是纯人力消耗战。一个店日均50条咨询&#xff0…

2026/8/10 0:57:32 阅读更多 →
如何实现拼多多极速自动改价自动化?系统级防风控,不是打补丁是重构地基

如何实现拼多多极速自动改价自动化?系统级防风控,不是打补丁是重构地基

如何实现拼多多极速自动改价自动化?系统级防风控,不是打补丁是重构地基 说句掏心窝的话,做店群的,工具选对了事半功倍。拼多多的极速自动改价,是店群运营中最耗人力也最容易出错的环节。 电商价格战是分钟级的。竞品…

2026/8/10 0:57:32 阅读更多 →
AI Agent 系统设计与多模态交互实验:升级前先做这几项确认

AI Agent 系统设计与多模态交互实验:升级前先做这几项确认

AI Agent 系统设计与多模态交互实验:升级前先做这几项确认 1. 线上静默升级后,老用户的 Agent 会话停滞 热更新看起来很潇洒,不做好兼容就会导致线上事故。 上周团队对 Agent 系统进行例行版本升级。这次更新修改了 Agent 状态机的数据结构&a…

2026/8/10 0:55:31 阅读更多 →
天赐范式第129天:3.91e-05的第二次重锚——当Lorenz注入被证伪后

天赐范式第129天:3.91e-05的第二次重锚——当Lorenz注入被证伪后

天赐范式第129天:3.91e-05的第二次重锚——当Lorenz注入被证伪后副标题:128天剥掉了一层皮,129天继续凿——不是推翻,是修正比喻📌 本文是天赐范式系列第129天,前置阅读:第128天三篇&#xff08…

2026/8/10 0:55:31 阅读更多 →
从 bootloader 到 rootfs 的完整 Linux 搭建:代码评审该盯住哪些细节

从 bootloader 到 rootfs 的完整 Linux 搭建:代码评审该盯住哪些细节

从 bootloader 到 rootfs 的完整 Linux 搭建:代码评审该盯住哪些细节 启动链路的代码评审不能只看“板子能否启动”。一次看似无害的环境变量、分区偏移或默认启动项变动,都可能把升级风险留到现场。 按阶段审查启动链路 先画出 ROM、bootloader、内核、…

2026/8/10 0:53:24 阅读更多 →
MCU 资源受限环境的高效系统方案设计:选型别只看功能清单

MCU 资源受限环境的高效系统方案设计:选型别只看功能清单

MCU 资源受限环境的高效系统方案设计:选型别只看功能清单 MCU 项目做组件选型时,最容易被功能列表带偏:都支持协议栈、文件系统或 OTA,并不代表都能放进目标芯片。真正先要回答的是 RAM、Flash、实时性和调试条件能否承受。 先把资…

2026/8/10 0:53:24 阅读更多 →

日新闻

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南 【免费下载链接】graphql-css A blazing fast CSS-in-GQL™ library. 项目地址: https://gitcode.com/gh_mirrors/gr/graphql-css GraphQL-CSS是一个基于GraphQL的CSS-in-GQL™库&#xff0…

2026/8/10 0:00:02 阅读更多 →
告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南 【免费下载链接】kiss-translator A simple, open source bilingual translation extension & Greasemonkey script (一个简约、开源的 双语对照翻译扩展 & 油猴脚本) 项目地址: https://gitcode.com/…

2026/8/10 0:00:02 阅读更多 →
BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案 【免费下载链接】BepInEx.ConfigurationManager Plugin configuration manager for BepInEx 项目地址: https://gitcode.com/gh_mirrors/be/BepInEx.ConfigurationManager 你是否曾经因为游戏插件的复杂…

2026/8/10 0:00:02 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/9 0:01:47 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/9 0:01:47 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/9 0:03:48 阅读更多 →

月新闻

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

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

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

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

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

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

2026/8/9 0:45:04 阅读更多 →
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/9 17:05:02 阅读更多 →