发布时间:2026/8/9 23:53:59
集群多台 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 服务。

相关新闻

2026/8/9 23:48:58

Dashibase性能优化指南:缓存策略与数据库查询效率提升技巧

Dashibase性能优化指南:缓存策略与数据库查询效率提升技巧 【免费下载链接】dashibase Super simple user dashboards for Supabase users. 项目地址: https://gitcode.com/gh_mirrors/da/dashibase Dashibase 是一款为 Supabase 用户打造的超级简单的用户仪…

2026/8/10 0:54:08

Three.js 3D 渲染与赛博朋克风格 UI 实现:选型别只看功能清单

title: Three.js 3D 渲染与赛博朋克风格 UI 实现:选型别只看功能清单date: 2026-08-09 16:00:00categories: [工程技术]tags: [Three.js, WebGL, WebGPU, Shader, 3D渲染, 赛博朋克UI] Three.js 3D 渲染与赛博朋克风格 UI 实现:选型别只看功能清单 看开源…

2026/8/10 0:54:08

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

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

2026/8/10 0:54:08

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

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

2026/8/10 0:54:08

Linux 内核驱动开发与 BSP 移植经验:升级前先做这几项确认

Linux 内核驱动开发与 BSP 移植经验:升级前先做这几项确认 嵌入式 Linux 设备升级内核驱动或加载 .ko 模块前,应明确内核版本、配置、模块依赖和恢复路径。本文给出的命令、版本和异常场景是核对示例,并不表示某个生产环境发生过刷写事故&…

2026/8/10 0:54:08

PUBG罗技鼠标压枪宏:5分钟实现精准后坐力控制的终极指南

PUBG罗技鼠标压枪宏:5分钟实现精准后坐力控制的终极指南 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 你是否在《绝地求生》中经常…

2026/8/10 0:49:08

响应式布局与跨端 UI 一致性方案:流量上来前要补哪些防线

响应式布局与跨端 UI 一致性方案:流量上来前要补哪些防线 范围说明: 文中的 SSR 与压力场景用于说明检查方法;请以实际页面、服务端和网络条件验证。 1. 倒计时零点冲击:Hydration 阶段连续 3 次大重排 活动开始时,请…

2026/8/9 0:01:56

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

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

2026/8/9 0:01:56

当 LLM 遇见大文档:主流开源项目如何处理上下文超限

从 Agentic Loop 到 Repo Map,七种策略与六类陷阱引言:128K vs 10MB 的硬冲突 2026 年的 LLM 上下文窗口已达到 128K ~ 1M token(≈ 0.5MB ~ 4MB 文本),但 LLM 想要处理的真实数据规模远远超过这个量级:真实…

2026/8/10 0:04:00

# AI视频生成2026:多模态控制与工程化落地的技术跃迁

## AI视频生成2026:多模态控制与工程化落地的技术跃迁### 背景:从"抽卡"到"导演"的范式转移2024年,Sora的问世让AI视频生成首次进入公众视野,但彼时的技术被开发者戏称为"抽卡"——输入一段Prompt&…

2026/8/10 0:04:00

2026年五大AI编码CLI工具深度横评:从原理到实战选型指南

1. 项目概述:为什么我们需要对比AI编码CLI工具?如果你和我一样,每天有超过一半的时间是在终端里度过的,那么“效率”就是你最核心的追求。从最初的代码补全插件,到集成在IDE里的智能助手,再到如今能直接在命…

2026/8/7 9:44:18

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/7 19:03:32

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/9 15:24:19

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…