openEuler 22.03 NFS + mergerfs 存储池部署与性能调优完整文档

发布时间:2026/9/28 17:00:50

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 参数查询完整代码

2026/9/9 9:33:26

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

【RT-DETR涨点改进】TGRS 2026 | 卷积创新改进篇 | 引入 3DSBE 三维光谱瓶颈增强模块,增强模型对通道间互补信息的利用能力,助力高光谱目标检测、遥感目标检测任务,有效涨点

【RT-DETR涨点改进】TGRS 2026 | 卷积创新改进篇 | 引入 3DSBE 三维光谱瓶颈增强模块,增强模型对通道间互补信息的利用能力,助力高光谱目标检测、遥感目标检测任务,有效涨点

2026/8/23 4:15:08

一、本文介绍 🔥本文给大家介绍使用 3DSBE 三维光谱瓶颈增强模块 改进RT-DETR网络模型,主要作用是在特征提取阶段强化不同通道或波段之间的相关性,减少冗余信息,并为后续多尺度融合提供更具判别力的特征表示。该模块通过空间下采样与通道扩展降低计算负担,再采用主、辅双…

为什么你的AI自动化项目卡在85%?资深架构师亲授“最后一公里”攻坚清单

为什么你的AI自动化项目卡在85%?资深架构师亲授“最后一公里”攻坚清单

2026/9/26 20:40:47

更多请点击: https://kaifayun.com 第一章:为什么你的AI自动化项目卡在85%? 当模型在验证集上稳定达到84.7%–85.3%准确率却再难提升时,问题往往不在算法本身,而在于数据闭环的断裂与工程化落地的盲区。大量团队将精力…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/9/28 4:08:17

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/9/28 16:01:49

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/9/28 2:15:29

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/9/28 3:14:54

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/9/28 3:58:00

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/9/28 3:47:14

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…

远程协作的工作台整理

远程协作的工作台整理

2026/9/28 16:01:48

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/28 5:05:21

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/28 16:01:48

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…