news 2026/7/23 22:00:41

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
openEuler 22.03 NFS + mergerfs 存储池部署与性能调优完整文档

📘 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)

⚠️ 关键参数说明

  • 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-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 倍,但仍不理想
服务端改为asyncsyncasync342 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=simpleExecStart包含-f
umount: target is busy有进程正在使用挂载点使用sudo fuser -km /bak强制终止,或cd /后重试
热添加失败(No such file or directorymergerfs 控制接口未启用删除/bak/.mergerfs文件,重新挂载 mergerfs
写入速度波动大,间歇性卡顿脏页阈值设置不合理调整dirty_ratiodirty_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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/23 22:00:23

2026抗逆风稳产方案:3项核心技术让作物挺过大风

引言近年来&#xff0c;极端天气事件频发&#xff0c;大风倒伏已成为威胁农作物稳产高产的重要因素之一。据统计&#xff0c;我国每年因倒伏造成的粮食损失可达总产量的5%-10%&#xff0c;其中玉米、小麦等大田作物尤为严重。面对这一挑战&#xff0c;现代农业技术正从多个维度…

作者头像 李华
网站建设 2026/7/23 21:59:43

AI动漫短剧制作全流程技术解析

1. AI动漫短剧创作的技术全景第一次接触AI动漫短剧制作时&#xff0c;我被这个领域的技术栈复杂度震惊了。从最初的文字脚本到最终成片输出&#xff0c;整个过程涉及自然语言处理、图像生成、语音合成、视频剪辑等多个技术模块的协同工作。经过半年多的实战摸索&#xff0c;我总…

作者头像 李华
网站建设 2026/7/23 21:58:52

AI学术写作助手:从智能大纲到文献矩阵

1. 项目概述&#xff1a;当学术写作遇上AI助手去年帮导师审阅本科课程论文时&#xff0c;一个现象让我印象深刻&#xff1a;超过60%的学生在文献综述部分直接复制粘贴&#xff0c;连参考文献格式都懒得调整。这背后反映的不仅是学术诚信问题&#xff0c;更是新手面对学术写作时…

作者头像 李华
网站建设 2026/7/23 21:58:42

基于YOLOv10的体育场馆设备智能检测系统设计与实现

1. 项目背景与需求分析体育场馆作为大型公共活动场所&#xff0c;其场地设备的正常运行直接关系到赛事质量和观众安全。传统人工巡检方式存在效率低、漏检率高的问题&#xff0c;特别是在大型赛事期间&#xff0c;设备故障可能引发严重后果。这个毕业设计项目正是针对这一痛点&…

作者头像 李华
网站建设 2026/7/23 21:55:22

TVA驱动的具身智能迭代逻辑(12)

前沿技术探索&#xff1a;AI智能体视觉&#xff08;TVA&#xff0c;Transformer-based Vision Agent&#xff09;是依托Transformer架构与“因式智能体”理论所构建的颠覆性工业视觉技术&#xff0c;是集深度强化学习&#xff08;DRL&#xff09;、卷积神经网络&#xff08;CNN…

作者头像 李华
网站建设 2026/7/23 21:53:59

【Springboot毕设全套源码+文档】基于springboot林业资源管理系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华