尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

openEuler 22.03 NFS + mergerfs 存储池部署与性能调优完整文档
📅 发布时间:2026/7/23 22:12:20

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


文档概述

本文档基于实际生产环境部署经验,详细记录了在 openEuler 22.03 系统上,使用NFS + mergerfs构建超大容量统一存储池的完整流程。特别针对NFS 写入性能瓶颈进行了深度排查与优化,最终将 NFS 写入速度从642 KB/s提升至342 MB/s(峰值),并实现了长期稳定运行。

文档结构

  1. 系统架构概述
  2. 存储服务器(NFS 服务端)配置
  3. 客户端服务器(NFS 客户端 + mergerfs)配置
  4. 性能调优(核心章节)
  5. 监控与运维
  6. 常见故障排查
  7. 附录:完整配置清单

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(/bak)

1.2 软件版本

  • 操作系统:openEuler 22.03 (LTS-SP1)
  • NFS 版本:v4.2(客户端)/ v4.2(服务端)
  • mergerfs 版本:2.40.2

1.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-utils

2.2 启动并启用服务

sudosystemctlenablerpcbind nfs-serversudosystemctl start rpcbindsudosystemctl start nfs-server

2.3 配置共享目录(/etc/exports)

编辑/etc/exports:

sudovi/etc/exports

添加以下内容(将192.168.20.3替换为实际客户端 IP):

/bak 192.168.20.3(rw,async,no_root_squash,no_subtree_check)

⚠️ 关键参数说明:

  • asyncvssync:async能大幅提升写入性能(测试中从 6MB/s 提升至 342MB/s),但存在数据丢失风险(服务器意外断电时可能丢失未落盘数据)。sync数据安全但性能极低。
  • no_root_squash:允许客户端 root 用户保持 root 权限(按需使用,有安全风险)。
  • no_subtree_check:禁用子目录检查,提升性能。

2.4 使配置生效

sudoexportfs-rsudoexportfs-v# 验证

2.5 配置防火墙

sudofirewall-cmd--permanent--add-service=nfssudofirewall-cmd--permanent--add-service=mountdsudofirewall-cmd--permanent--add-service=rpc-bindsudofirewall-cmd--reload

2.6 优化 NFS 服务线程数(关键!)

编辑/etc/nfs.conf:

sudovi/etc/nfs.conf

在[nfsd]段添加:

[nfsd] threads=128

重启服务:

sudosystemctl restart nfs-server

验证:

cat/proc/net/rpc/nfsd|grepth# 应显示 th 128 ...

说明:默认线程数仅为 8,对于 64 核 CPU 严重不足。调高至 128 后,并发处理能力大幅提升。

2.7 优化内核脏页参数(用于 async 模式性能调优)

编辑/etc/sysctl.conf:

sudovi/etc/sysctl.conf

添加:

vm.dirty_background_ratio = 5 vm.dirty_ratio = 10 vm.dirty_expire_centisecs = 1000

生效:

sudosysctl-p

参数说明:

  • dirty_background_ratio=5:脏页占内存 5% 时,后台开始刷盘。
  • dirty_ratio=10:脏页占内存 10% 时,前台写入被阻塞,强制刷盘。
  • dirty_expire_centisecs=1000:脏页存活超过 10 秒后强制刷盘。

3. 客户端服务器配置(192.168.20.3)

3.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.rpm

3.2 准备挂载点

# 本地存储挂载点sudomkdir-p/mnt/localbak# 远程 NFS 挂载点sudomkdir-p/mnt/nfs14 /mnt/nfs19 /mnt/nfs20# 按需添加# mergerfs 合并挂载点sudomkdir-p/bak

3.3 挂载本地存储

# 假设本地存储设备为 /dev/mapper/vgdata-lvdatasudomount/dev/mapper/vgdata-lvdata /mnt/localbak

3.4 挂载远程 NFS(性能优化版)

挂载参数说明:

  • rsize=4194304,wsize=4194304:读写块大小设为 4MB,提升大文件吞吐量。
  • vers=4.2:使用 NFSv4.2,支持nconnect特性。
  • nconnect=8:为单个挂载点建立 8 个 TCP 连接,充分利用多核 CPU。
  • noatime,nodiratime:禁用访问时间更新,减少元数据开销。
sudomount-tnfs-orw,hard,intr,rsize=4194304,wsize=4194304,noatime,nodiratime,vers=4.2,nconnect=8192.168.20.14:/bak /mnt/nfs14sudomount-tnfs-orw,hard,intr,rsize=4194304,wsize=4194304,noatime,nodiratime,vers=4.2,nconnect=8192.168.20.19:/bak /mnt/nfs19

验证挂载:

df-h/mnt/nfs14 /mnt/nfs19

3.5 配置 mergerfs 合并存储池

sudomergerfs-odefaults,allow_other,category.create=mfs,minfreespace=10240G /mnt/localbak:/mnt/nfs14:/mnt/nfs19 /bak

验证:

df-h/bak# 应显示总容量约为 138T + 139T + 139T = 416T

4. 开机自动挂载(systemd + fstab)

4.1 配置 /etc/fstab

编辑/etc/fstab:

sudovi/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,rsize=4194304,wsize=4194304,noatime,nodiratime,vers=4.2,nconnect=8,_netdev 0 0 192.168.20.19:/bak /mnt/nfs19 nfs rw,hard,intr,rsize=4194304,wsize=4194304,noatime,nodiratime,vers=4.2,nconnect=8,_netdev 0 0

测试 fstab:

sudomount-a

4.2 创建 systemd 服务

编辑/etc/systemd/system/mergerfs-bak.service:

sudovi/etc/systemd/system/mergerfs-bak.service

写入:

[Unit] Description=Mergerfs pool for /bak Requires=network-online.target After=network-online.target remote-fs.target Wants=remote-fs.target [Service] Type=simple ExecStartPre=/bin/mount -a ExecStart=/usr/bin/mergerfs -f -o defaults,allow_other,category.create=mfs,minfreespace=10240G /mnt/localbak:/mnt/nfs14:/mnt/nfs19 /bak ExecStop=/bin/umount /bak Restart=on-failure [Install] WantedBy=multi-user.target

启用并启动服务:

sudosystemctl daemon-reloadsudosystemctlenablemergerfs-bak.servicesudosystemctl start mergerfs-bak.servicesudosystemctl status mergerfs-bak.service

5. 性能调优(核心章节)

5.1 排查过程总结

阶段操作速度结果说明
初始状态服务端sync+ 默认参数642 KB/s极慢,无法接受
调整服务端线程数threads=1286.2 MB/s提升 10 倍,但仍不理想
服务端改为asyncsync→async342 MB/s(峰值)瓶颈解除,性能飞跃
长期持续写入100GB 持续写入~80 MB/s受限于物理磁盘速度
内核参数调优dirty_ratio=10%稳定运行防止内存溢出

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]threads=128
优化 3:客户端挂载参数
mount-tnfs-orw,hard,intr,rsize=4194304,wsize=4194304,noatime,nodiratime,vers=4.2,nconnect=8IP:/bak /mountpoint
优化 4:服务端内核脏页参数
# /etc/sysctl.confvm.dirty_background_ratio=5vm.dirty_ratio=10vm.dirty_expire_centisecs=1000

5.3 性能验证命令

写入测试(客户端)
# 10GB 写入测试ddif=/dev/zeroof=/mnt/nfs14/test.ddbs=1Mcount=10240oflag=directstatus=progress# 100GB 持续写入测试ddif=/dev/zeroof=/mnt/nfs14/longtest.ddbs=1Mcount=102400oflag=directstatus=progress
读取测试(客户端)
ddif=/mnt/nfs14/test.ddof=/dev/nullbs=1Mcount=10240iflag=directstatus=progress
网络带宽测试
# 服务端iperf3-s# 客户端iperf3-c192.168.20.14

6. 热添加新 NFS 分支(在线扩容)

当需要添加新的存储服务器(如 192.168.20.20)时:

6.1 挂载新 NFS

sudomkdir-p/mnt/nfs20sudomount-tnfs-orw,hard,intr,rsize=4194304,wsize=4194304,noatime,nodiratime,vers=4.2,nconnect=8192.168.20.20:/bak /mnt/nfs20

6.2 热添加到 mergerfs

echo"add /mnt/nfs20"|sudotee/bak/.mergerfs/ctl

6.3 验证扩容

df-h/bak

6.4 持久化配置

更新/etc/fstab和 systemd 服务的ExecStart分支列表。


7. 监控与运维

7.1 监控命令

查看脏页状态(服务端)
watch-n2'cat /proc/meminfo | grep -E "Dirty|Writeback|DirtyThreshold"'
查看 NFS 统计信息
nfsstat-c# 客户端nfsstat-s# 服务端
查看 NFS 服务线程数(服务端)
cat/proc/net/rpc/nfsd|grepth
查看磁盘 I/O
iostat-x1
查看 mergerfs 状态(客户端)
mount|grepmergerfsdf-h/bak

7.2 服务管理

# 启动/停止/重启 mergerfs 服务sudosystemctl start mergerfs-bak.servicesudosystemctl stop mergerfs-bak.servicesudosystemctl restart mergerfs-bak.service# 查看服务状态和日志sudosystemctl status mergerfs-bak.servicesudojournalctl-xeumergerfs-bak.service-n50

7.3 取消 mergerfs 恢复原始挂载

# 停止服务sudosystemctl stop mergerfs-bak.servicesudosystemctl disable mergerfs-bak.service# 卸载 mergerfs 挂载点sudoumount/bak# 恢复本地存储到 /baksudomount/dev/mapper/vgdata-lvdata /bak

8. 常见故障排查

问题现象可能原因解决方案
NFS 写入速度极慢(<1MB/s)服务端 /etc/exports 使用了sync改为async(注意数据风险)
NFS 服务启动失败线程数配置错误或端口冲突检查/etc/nfs.conf语法,查看systemctl status nfs-server
mergerfs 服务启动后立即退出systemd 服务类型错误或缺少-f参数确保Type=simple且ExecStart包含-f
umount: target is busy有进程正在使用挂载点使用sudo fuser -km /bak强制终止,或cd /后重试
热添加失败(No such file or directory)mergerfs 控制接口未启用删除/bak/.mergerfs文件,重新挂载 mergerfs
写入速度波动大,间歇性卡顿脏页阈值设置不合理调整dirty_ratio和dirty_background_ratio
网络带宽不足物理链路或交换机限制使用iperf3测试,检查网卡速率和 MTU

9. 附录

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] threads=128
  • /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,rsize=4194304,wsize=4194304,noatime,nodiratime,vers=4.2,nconnect=8,_netdev 0 0 192.168.20.19:/bak /mnt/nfs19 nfs rw,hard,intr,rsize=4194304,wsize=4194304,noatime,nodiratime,vers=4.2,nconnect=8,_netdev 0 0
  • /etc/systemd/system/mergerfs-bak.service:
    [Unit] Description=Mergerfs pool for /bak Requires=network-online.target After=network-online.target remote-fs.target Wants=remote-fs.target [Service] Type=simple ExecStartPre=/bin/mount -a ExecStart=/usr/bin/mergerfs -f -o defaults,allow_other,category.create=mfs,minfreespace=10240G /mnt/localbak:/mnt/nfs14:/mnt/nfs19 /bak ExecStop=/bin/umount /bak Restart=on-failure [Install] WantedBy=multi-user.target

9.2 性能基准参考

场景速度
服务端本地磁盘写入80 MB/s(物理磁盘极限)
NFS 写入(峰值,async + 内存缓存)342 MB/s
NFS 写入(持续稳定)80 MB/s
网络带宽(iperf3)8.79 Gbits/sec
mergerfs 写入(底层 NFS 优化后)≈ NFS 写入速度

9.3 参考文档

  • openEuler 官方文档
  • mergerfs GitHub
  • NFS 性能调优指南

文档版本:2.0 | 最后更新:2026-07-14 | 适用环境:openEuler 22.03

相关新闻

  • 模型评估和模型选择
  • ClineRule系统提示词
  • 修复产品口碑之选:这些品牌让你的肌肤焕然一新

最新新闻

  • 被低估的AI自动化临界点(单点突破→全链路提效的4.7天拐点实测数据)
  • 2026东莞广告标牌UV打印机/小型UV打印机怎么选?源头厂家选购避坑指南 - mobible
  • 2026 年至今,彰武正规的蛙人打捞施工厂家哪家好,揭秘:水中“蛙人”打捞的惊人真相 - 企业信息推荐【官方】
  • 2026简历制作网站推荐:四款在线简历制作工具模板、AI功能与收费对比 - 春日收信人
  • AI工艺自动调整项目实现第1讲:整个工艺流程;方阻相关的问题;原数据理解;项目总思路;首先要完成的项目1
  • 数据结构篇(六):线性表——队列

日新闻

  • 亨得利盐城维修点在哪里?手表维修保养地址指南**公示(2026年7月最新) - 亨得利官方
  • 提升.NET API安全性:Boxed.AspNetCore.Swagger认证授权最佳实践
  • 帝舵佛山**网点地址更新:2026年7月售后热线电话与服务客户指南 - 帝舵中国官方服务中心

周新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号