openEuler 22.03 NFS + mergerfs 存储池部署与性能调优完整文档
openEuler 22.03 NFS mergerfs 存储池部署与性能调优完整文档文档概述本文档基于实际生产环境部署经验详细记录了在 openEuler 22.03 系统上使用NFS mergerfs构建超大容量统一存储池的完整流程。特别针对NFS 写入性能瓶颈进行了深度排查与优化最终将 NFS 写入速度从642 KB/s提升至342 MB/s峰值并实现了长期稳定运行。文档结构系统架构概述存储服务器NFS 服务端配置客户端服务器NFS 客户端 mergerfs配置性能调优核心章节监控与运维常见故障排查附录完整配置清单1. 系统架构概述1.1 硬件环境角色IPCPU内存存储客户端合并节点192.168.20.364核188GB本地 138TB/dev/mapper/vgdata-lvdata存储服务器1192.168.20.1464核188GB本地 139TB/bak存储服务器2192.168.20.1964核188GB本地 139TB/bak存储服务器N192.168.20.x64核188GB本地 139TB/bak1.2 软件版本操作系统openEuler 22.03 (LTS-SP1)NFS 版本v4.2客户端/ v4.2服务端mergerfs 版本2.40.21.3 架构示意图┌─────────────────────────────────────────────────────────────────┐ │ 客户端服务器 (192.168.20.3) │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ /bak (mergerfs 统一挂载点) │ │ │ │ 总容量 本地138T 多个NFS分支各139T │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ │ │ │ │ │ ▼ ▼ ▼ ▼ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │localbak │ │ nfs14 │ │ nfs19 │ │ nfs20 │ │ │ │(本地存储)│ │(NFS挂载) │ │(NFS挂载) │ │(NFS挂载) │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────────┘ │ │ │ │ ▼ ▼ ▼ ▼ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ 本地存储设备 │ │192.168.20.14│ │192.168.20.19│ │192.168.20.20│ │ /bak 138T │ │ /bak 139T │ │ /bak 139T │ │ /bak 139T │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘2. 存储服务器NFS 服务端配置适用于所有 NFS 服务端192.168.20.14、192.168.20.19 等。2.1 安装 NFS 服务sudodnfinstall-ynfs-utils2.2 启动并启用服务sudosystemctlenablerpcbind nfs-serversudosystemctl start rpcbindsudosystemctl start nfs-server2.3 配置共享目录/etc/exports编辑/etc/exportssudovi/etc/exports添加以下内容将192.168.20.3替换为实际客户端 IP/bak 192.168.20.3(rw,async,no_root_squash,no_subtree_check)⚠️ 关键参数说明asyncvssyncasync能大幅提升写入性能测试中从 6MB/s 提升至 342MB/s但存在数据丢失风险服务器意外断电时可能丢失未落盘数据。sync数据安全但性能极低。no_root_squash允许客户端 root 用户保持 root 权限按需使用有安全风险。no_subtree_check禁用子目录检查提升性能。2.4 使配置生效sudoexportfs-rsudoexportfs-v# 验证2.5 配置防火墙sudofirewall-cmd--permanent--add-servicenfssudofirewall-cmd--permanent--add-servicemountdsudofirewall-cmd--permanent--add-servicerpc-bindsudofirewall-cmd--reload2.6 优化 NFS 服务线程数关键编辑/etc/nfs.confsudovi/etc/nfs.conf在[nfsd]段添加[nfsd] threads128重启服务sudosystemctl restart nfs-server验证cat/proc/net/rpc/nfsd|grepth# 应显示 th 128 ...说明默认线程数仅为 8对于 64 核 CPU 严重不足。调高至 128 后并发处理能力大幅提升。2.7 优化内核脏页参数用于 async 模式性能调优编辑/etc/sysctl.confsudovi/etc/sysctl.conf添加vm.dirty_background_ratio 5 vm.dirty_ratio 10 vm.dirty_expire_centisecs 1000生效sudosysctl-p参数说明dirty_background_ratio5脏页占内存 5% 时后台开始刷盘。dirty_ratio10脏页占内存 10% 时前台写入被阻塞强制刷盘。dirty_expire_centisecs1000脏页存活超过 10 秒后强制刷盘。3. 客户端服务器配置192.168.20.33.1 安装 NFS 客户端和 mergerfs# 安装 NFS 客户端sudodnfinstall-ynfs-utils# 安装 mergerfs以 2.40.2 为例wgethttps://github.com/trapexit/mergerfs/releases/download/2.40.2/mergerfs-2.40.2-1.el8.x86_64.rpmsudodnfinstall-y./mergerfs-2.40.2-1.el8.x86_64.rpm3.2 准备挂载点# 本地存储挂载点sudomkdir-p/mnt/localbak# 远程 NFS 挂载点sudomkdir-p/mnt/nfs14 /mnt/nfs19 /mnt/nfs20# 按需添加# mergerfs 合并挂载点sudomkdir-p/bak3.3 挂载本地存储# 假设本地存储设备为 /dev/mapper/vgdata-lvdatasudomount/dev/mapper/vgdata-lvdata /mnt/localbak3.4 挂载远程 NFS性能优化版挂载参数说明rsize4194304,wsize4194304读写块大小设为 4MB提升大文件吞吐量。vers4.2使用 NFSv4.2支持nconnect特性。nconnect8为单个挂载点建立 8 个 TCP 连接充分利用多核 CPU。noatime,nodiratime禁用访问时间更新减少元数据开销。sudomount-tnfs-orw,hard,intr,rsize4194304,wsize4194304,noatime,nodiratime,vers4.2,nconnect8192.168.20.14:/bak /mnt/nfs14sudomount-tnfs-orw,hard,intr,rsize4194304,wsize4194304,noatime,nodiratime,vers4.2,nconnect8192.168.20.19:/bak /mnt/nfs19验证挂载df-h/mnt/nfs14 /mnt/nfs193.5 配置 mergerfs 合并存储池sudomergerfs-odefaults,allow_other,category.createmfs,minfreespace10240G /mnt/localbak:/mnt/nfs14:/mnt/nfs19 /bak验证df-h/bak# 应显示总容量约为 138T 139T 139T 416T4. 开机自动挂载systemd fstab4.1 配置 /etc/fstab编辑/etc/fstabsudovi/etc/fstab添加# 本地存储挂载到 /mnt/localbak /dev/mapper/vgdata-lvdata /mnt/localbak xfs defaults 0 0 # 远程 NFS 存储 192.168.20.14:/bak /mnt/nfs14 nfs rw,hard,intr,rsize4194304,wsize4194304,noatime,nodiratime,vers4.2,nconnect8,_netdev 0 0 192.168.20.19:/bak /mnt/nfs19 nfs rw,hard,intr,rsize4194304,wsize4194304,noatime,nodiratime,vers4.2,nconnect8,_netdev 0 0测试 fstabsudomount-a4.2 创建 systemd 服务编辑/etc/systemd/system/mergerfs-bak.servicesudovi/etc/systemd/system/mergerfs-bak.service写入[Unit] DescriptionMergerfs pool for /bak Requiresnetwork-online.target Afternetwork-online.target remote-fs.target Wantsremote-fs.target [Service] Typesimple ExecStartPre/bin/mount -a ExecStart/usr/bin/mergerfs -f -o defaults,allow_other,category.createmfs,minfreespace10240G /mnt/localbak:/mnt/nfs14:/mnt/nfs19 /bak ExecStop/bin/umount /bak Restarton-failure [Install] WantedBymulti-user.target启用并启动服务sudosystemctl daemon-reloadsudosystemctlenablemergerfs-bak.servicesudosystemctl start mergerfs-bak.servicesudosystemctl status mergerfs-bak.service5. 性能调优核心章节5.1 排查过程总结阶段操作速度结果说明初始状态服务端sync 默认参数642 KB/s极慢无法接受调整服务端线程数threads1286.2 MB/s提升 10 倍但仍不理想服务端改为asyncsync→async342 MB/s峰值瓶颈解除性能飞跃长期持续写入100GB 持续写入~80 MB/s受限于物理磁盘速度内核参数调优dirty_ratio10%稳定运行防止内存溢出5.2 关键优化点优化 1服务端 /etc/exports —sync改为async# 修改前/bak192.168.20.3(rw,sync,no_subtree_check,no_root_squash)# 修改后/bak192.168.20.3(rw,async,no_subtree_check,no_root_squash)优化 2服务端 NFS 线程数# /etc/nfs.conf[nfsd]threads128优化 3客户端挂载参数mount-tnfs-orw,hard,intr,rsize4194304,wsize4194304,noatime,nodiratime,vers4.2,nconnect8IP:/bak /mountpoint优化 4服务端内核脏页参数# /etc/sysctl.confvm.dirty_background_ratio5vm.dirty_ratio10vm.dirty_expire_centisecs10005.3 性能验证命令写入测试客户端# 10GB 写入测试ddif/dev/zeroof/mnt/nfs14/test.ddbs1Mcount10240oflagdirectstatusprogress# 100GB 持续写入测试ddif/dev/zeroof/mnt/nfs14/longtest.ddbs1Mcount102400oflagdirectstatusprogress读取测试客户端ddif/mnt/nfs14/test.ddof/dev/nullbs1Mcount10240iflagdirectstatusprogress网络带宽测试# 服务端iperf3-s# 客户端iperf3-c192.168.20.146. 热添加新 NFS 分支在线扩容当需要添加新的存储服务器如 192.168.20.20时6.1 挂载新 NFSsudomkdir-p/mnt/nfs20sudomount-tnfs-orw,hard,intr,rsize4194304,wsize4194304,noatime,nodiratime,vers4.2,nconnect8192.168.20.20:/bak /mnt/nfs206.2 热添加到 mergerfsechoadd /mnt/nfs20|sudotee/bak/.mergerfs/ctl6.3 验证扩容df-h/bak6.4 持久化配置更新/etc/fstab和 systemd 服务的ExecStart分支列表。7. 监控与运维7.1 监控命令查看脏页状态服务端watch-n2cat /proc/meminfo | grep -E Dirty|Writeback|DirtyThreshold查看 NFS 统计信息nfsstat-c# 客户端nfsstat-s# 服务端查看 NFS 服务线程数服务端cat/proc/net/rpc/nfsd|grepth查看磁盘 I/Oiostat-x1查看 mergerfs 状态客户端mount|grepmergerfsdf-h/bak7.2 服务管理# 启动/停止/重启 mergerfs 服务sudosystemctl start mergerfs-bak.servicesudosystemctl stop mergerfs-bak.servicesudosystemctl restart mergerfs-bak.service# 查看服务状态和日志sudosystemctl status mergerfs-bak.servicesudojournalctl-xeumergerfs-bak.service-n507.3 取消 mergerfs 恢复原始挂载# 停止服务sudosystemctl stop mergerfs-bak.servicesudosystemctl disable mergerfs-bak.service# 卸载 mergerfs 挂载点sudoumount/bak# 恢复本地存储到 /baksudomount/dev/mapper/vgdata-lvdata /bak8. 常见故障排查问题现象可能原因解决方案NFS 写入速度极慢1MB/s服务端 /etc/exports 使用了sync改为async注意数据风险NFS 服务启动失败线程数配置错误或端口冲突检查/etc/nfs.conf语法查看systemctl status nfs-servermergerfs 服务启动后立即退出systemd 服务类型错误或缺少-f参数确保Typesimple且ExecStart包含-fumount: target is busy有进程正在使用挂载点使用sudo fuser -km /bak强制终止或cd /后重试热添加失败No such file or directorymergerfs 控制接口未启用删除/bak/.mergerfs文件重新挂载 mergerfs写入速度波动大间歇性卡顿脏页阈值设置不合理调整dirty_ratio和dirty_background_ratio网络带宽不足物理链路或交换机限制使用iperf3测试检查网卡速率和 MTU9. 附录9.1 最终配置文件清单服务端192.168.20.x/etc/exports/bak 192.168.20.3(rw,async,no_root_squash,no_subtree_check)/etc/nfs.conf[nfsd] threads128/etc/sysctl.conf追加vm.dirty_background_ratio 5 vm.dirty_ratio 10 vm.dirty_expire_centisecs 1000客户端192.168.20.3/etc/fstab/dev/mapper/vgdata-lvdata /mnt/localbak xfs defaults 0 0 192.168.20.14:/bak /mnt/nfs14 nfs rw,hard,intr,rsize4194304,wsize4194304,noatime,nodiratime,vers4.2,nconnect8,_netdev 0 0 192.168.20.19:/bak /mnt/nfs19 nfs rw,hard,intr,rsize4194304,wsize4194304,noatime,nodiratime,vers4.2,nconnect8,_netdev 0 0/etc/systemd/system/mergerfs-bak.service[Unit] DescriptionMergerfs pool for /bak Requiresnetwork-online.target Afternetwork-online.target remote-fs.target Wantsremote-fs.target [Service] Typesimple ExecStartPre/bin/mount -a ExecStart/usr/bin/mergerfs -f -o defaults,allow_other,category.createmfs,minfreespace10240G /mnt/localbak:/mnt/nfs14:/mnt/nfs19 /bak ExecStop/bin/umount /bak Restarton-failure [Install] WantedBymulti-user.target9.2 性能基准参考场景速度服务端本地磁盘写入80 MB/s物理磁盘极限NFS 写入峰值async 内存缓存342 MB/sNFS 写入持续稳定80 MB/s网络带宽iperf38.79 Gbits/secmergerfs 写入底层 NFS 优化后≈ NFS 写入速度9.3 参考文档openEuler 官方文档mergerfs GitHubNFS 性能调优指南文档版本2.0 | 最后更新2026-07-14 | 适用环境openEuler 22.03

相关新闻

链接表能删了:Access 直连 SQL Server,DAO 绑窗体 + ADO 参数查询完整代码

链接表能删了:Access 直连 SQL Server,DAO 绑窗体 + ADO 参数查询完整代码

摘要: 后台是 SQL Server 却不想用链接表?本文介绍 DAO 直连绑定窗体和 ADO 参数化查询两种方案,配完整可运行代码,直接拿走用。access开发|access培训|access框架|请添加edonsoft。Hi,大家好! 上一篇讲了 …

2026/7/23 22:01:09 阅读更多 →
东莞商旅服务平台头部机构多维度能力梳理及选型参考

东莞商旅服务平台头部机构多维度能力梳理及选型参考

东莞差旅服务行业发展现状综述作为大湾区核心制造业重镇,东莞聚集了超20万家工业企业,跨区域供应链对接、海外客商洽谈、项目落地走访等商务活动频次逐年攀升,差旅支出已成为多数企业仅次于人力成本的第二大可控运营支出。当前多数企业仍采用…

2026/7/23 22:00:09 阅读更多 →
AI时代提示词工程:从编码到思维密度的转型

AI时代提示词工程:从编码到思维密度的转型

1. 标题背后的行业焦虑解析"别卷代码了,你的年薪百万,在AI眼里只值3段提示词"这个标题精准击中了当前技术从业者的集体焦虑。作为在AI领域深耕多年的从业者,我亲眼见证了过去两年大语言模型如何重构技术价值体系。这句话表面看是夸…

2026/7/23 22:00:09 阅读更多 →

最新新闻

ClineRule系统提示词

ClineRule系统提示词

零容错设计原则(Fail Fast)任何异常/失败/边界情况必须立即暴露,宁可崩溃不可静默。 参考:docs/KnowLedge/零容错设计原则.md(完整版)哲学基础 软件熵增定律错误被掩盖 系统熵增,错误被暴露 系…

2026/7/23 22:09:11 阅读更多 →
虚拟机双网卡配置+uboot nfs下载zImage

虚拟机双网卡配置+uboot nfs下载zImage

校园网下虚拟机双网卡配置uboot nfs下载zImage 一、问题描述 环境:校园网网络 基于网线使用nfs进行远程下载需要使用桥接模式 需要使用NAT模式确保网络 NFS下载文件报错:Loading: *** ERROR: File lookup fail 二、虚拟机配置双网卡 打开虚拟机的…

2026/7/23 22:09:11 阅读更多 →
机器学习:数据的标注

机器学习:数据的标注

1.4数据的标注 1.监督学习(有输入和输出): 在已知输入和输出的情况下,通过训练建立起输入到输出的映射模型,应用最广的机器学习方法,可进一步分为分类和回归两类算法 2.无监督学习(没有输出&…

2026/7/23 22:09:11 阅读更多 →
Three.js 渲染管线揭秘:从几何体到像素的 GPU 绘制流程

Three.js 渲染管线揭秘:从几何体到像素的 GPU 绘制流程

Three.js 渲染管线揭秘:从几何体到像素的 GPU 绘制流程 一、3D 大屏的帧率,怎么就突然崩了 3D 可视化大屏上线第一周,物体数量刚过一万,帧率从 60 掉到 12。老板站在屏幕前数秒数,研发比他还尴尬。这事我见过太多团队栽…

2026/7/23 22:09:11 阅读更多 →
基于SpringBoot的大学生旅游平台的设计

基于SpringBoot的大学生旅游平台的设计

摘 要 在信息技术迅猛发展的大环境之下,大学生旅游市场上的消费行为表现出非常鲜明的多元化特点。传统的获取信息的途径已经不能适应现代用户对于高效率、社交属性旅行服务的要求。为了克服以上问题,本文使用Spring Boot框架来创建一个专门给大学生使用…

2026/7/23 22:09:11 阅读更多 →
ChatGPT、Codex、Plus与Pro:AI写代码越快,任务越要先拆清楚

ChatGPT、Codex、Plus与Pro:AI写代码越快,任务越要先拆清楚

过去使用AI写代码,很多开发者最关注的是提示词。需求怎么描述,技术栈怎么指定,输出格式怎么限制,怎样让模型一次生成更多代码,几乎成了AI编程的核心技巧。但当ChatGPT开始参与需求分析,Codex开始进入代码仓…

2026/7/23 22:08:11 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻