Proxmox VE 超融合集群虚拟的NFS服务性能很差的问题解决

作者:田逸(formyz)

场景描述

五节点Proxmox VE集群,万兆网络,数据网络与存储网络独立,接口两两bond,交换机堆叠。

单机配置两颗AMD 宵龙CPU,核心数48,单台线程数192,单台内存1024G。

存储分三种:SATA接口SSD,做系统盘;NVME 固态盘,做虚拟机与数据库的Ceph Pool;大容量低速SATA机械盘,做要求不太高的对象Ceph Pool。

计划中,像日志、图片等需要共享的数据,在Proxmox VE集群上创建虚拟机,从SATA Ceph Pool划分空间,以NFS服务共享给其他的主机。

性能问题描述

基础环境部署好以后交付给相关开发人员,有人从腾讯云拉取了一个400M左右的tgz压缩包,将其解包到挂接的NFS目录,速度非常慢,得几十分钟,尝试多次也是如此。将其换到本地目录(NVME Ceph Pool存储),耗时数秒。虽然我用dd测试NFS挂接目录、用scp远程拷贝大文件到nfs挂接目录,速度都还可以接受,建议用户本地目录tar,再cp到挂接来的共享目录。但用户认为,既然tar一个400M的包都那么费时,别的也可能不靠谱,不肯接受。

排查处理过程

首先登录到挂接NFS共享目录的系统,执行如下指令,复现一下tar解包的耗时。

[root@mysql-p-122-120 ~]# time tar zxvf 29.tgz -C /mnt/nfs/ --no-same-owner

从感官上都觉得很慢,因为屏幕滚动一顿一顿的,很久都没有结束,暂时ctrl-c结束进程,吧这个tar到本地目录,10几秒而已。

一干到底,继续执行tar到共享目录,看到底耗时多少,很久很久以后,终于正常结束了,耗时很恐怖!

怀疑是Centos系统的问题,换OpenSuse,慢!换TrusNAS,仍然慢啊!由于需要尽快把业务从公有云迁移到自有Proxmox VE集群,压力很大。于是临时找了一个安装了Debian系统的外部单服务器,再Debian系统里发布NFS,共享给Proxmox VE里的虚拟机,再进行测试,tar 同样的那个tgz包,耗时秒级。

由此可得出一个初步结论,物理机操作系统之上发布的NFS性能,比虚拟出来的NFS性能还是有很大的差异,虽然物理存储都是SATA 机械盘。这个临时措施解决了性能问题,但因为它存在单点,决策人坚决反对,既需要性能有需要可用性,这还真难啊!本来建议再增加两台服务器,做成双机形式的NFS服务,讨论方案,未能通过,看来还得回到Proxmox VE集群,解决了性能,才能交差。

辗转反侧,绞尽脑汁,夜不能寐。既然操作系统Debian上发布NFS不存在性能问题,那么虚拟出一层后发布的NFS性能存在那么大的差异,是不是是协议方面的问题呢?NFS客户端,我一直习惯用“-o nolock,vers=3”这样的方式来挂接NFS共享目录,如果换成NFS版本4,会不会好一些呢?

立即在Proxmox VE集群建一个虚拟机,安装好操作系统(NVME Ceph Pool),并单独分配了SATA Ceph Pool作为存储空间作为系统的“sdb”存储设备。分区后在这个/dev/sdb1上创建文件系统,选择Btrfs格式,挂接到系统。确认挂接的分区读写正常后,文本编辑器修改“/etc/export”文件,内容如下:

/data/nfs_dir  10.122.200.0/22(fsid=0,async,rw,all_squash,anonuid=1000,anongid=1000)

其中,/data是分区“/dev/sdb1”的挂节点,目录是手动创建的。与以前的NFS服务配置相比,多了一个选项“fsid=0”,这是NFS4 版本所需要的。

再创建一个用户data,用户id、组id正好是1000,与NFS配置文件里的设定相一致。再用指令“chown -R data:data /data/nfs_dir”赋予正确的权限(系统管理员不许用chmod 777这个坏毛病哟)。启动服务NFS及rpcbind,并确认其正确性。

继续回到Proxmox VE集群上欲挂接NFS共享的系统,执行如下指令进行挂接。注意:NFS4的挂接与NFS v3有少许差别,挂节点不一样哟!

mount.nfs4 10.122.200.138:/  /mnt/nfs/ -o rw

如果挂接地址加上NFS export出来的路径,会报错的。

确保NFS 以版本4的方式挂接,执行如下指令确认。

一切准备妥当,再来执行那个tgz包往NFS共享目录写入,看看什么结果是否有所改善。

[root@mysql-c-200-113 ~]# time tar zxvf 29.tgz -C /mnt/nfs  --no-same-owner

29/photo/origin/2023/3/9/1db014ac121fe614d614e2af858cc60a.jpg

29/photo/origin/2023/3/15/

29/photo/origin/2023/3/15/23965ad2037c0b02f007e8a442153e96.jpg

……………省略若干……………

29/photo/origin/2023/3/15/0d6cf1265b3cc1365f861d0f357155a1.jpg

real    0m11.595s

user    0m3.014s

sys     0m2.227s

与NFS v3 相比,天壤之别。重复数次测试,保持稳定,问题得以解决。

最终结论

在高性能的Proxmox VE超融合集群上,即便是用低速SATA机械盘虚拟一层后发布出来的NFS服务,在保证最高可用性的前提下,性能上同样可以满足需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/5048.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

服务器版RstudioServer安装与配置详细教程

Docker部署Rstudio server 背景:如果您想在服务器上运行RstudioServer,可以按照如下方法进行操作,笔者测试时使用腾讯云服务器(系统centos7),需要在管理员权限下运行 Rstudio 官方提供了使用不同 R 版本的 …

Baumer工业相机中偏振相机如何使用Baumer堡盟GAPI SDK来进行偏振数据的计算转换输出(C++)

项目场景 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具…

【ansible】管理变量与事实详解

目录 管理变量与事实 一,变量 1,变量命名 2,变量优先级(高--低) 3,命令行引用 4, 引用playbook中的变量 5, 在主机清单中定义变量 6, 在自定义变量文件中定义变量 7&…

Linux基础IO - 文件描述符、重定向

前面的文章中我们讲述了C语言中文件相关的操作与系统文件IO的接口,这篇文章中将会讲述文件描述符与重定向的知识。 运行在前文中的系统文件程序,通过观察可以看到图中的数据3非常的奇怪没头没尾的,下面我们就来从这里开始。 通过查看man手册…

console使用方法介绍

console是在写前端Javascript时经常会使用到,我平时使用最多的是console.log,相比大多数人也是如此吧! 下面一起来看一下强大的console吧! 01函数(属性) 包含如下函数 / 属性:memory、assert、c…

Hadoop三大框架之HDFS

一、概述HDFS产生的背景及定义HDFS产生背景随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,需要一种系统来管理多台机器上的文件,这就是分布式文件…

日入500+的程序员都在用的“接私活”平台

网上总说程序员的薪资很高,这我可就不同意了: 程序员的薪资哪里是很高,而是非常高!而会接私活的程序员更是能拿到更高的收入!作为一个程序员,这些接私活的网站一定要收藏起来,让你在“八小时外…

ChatGPT transformer 5篇经典论文以及代码和解读

一次性读懂ChatGPT的技术演进路线,根据李沐老师推荐的5篇经典论文,整理了论文原文、论文解读、Github代码实现。 2017Transformer继MLP、CNN、RNN后的第四大类架构2018GPT使用 Transformer 解码器来做预训练2018BERTTransformer一统NLP的开始2019GPT-2更…

区块链概论

目录 1.概述 2.密码学原理 2.1.hash函数 2.2.签名 3.数据结构 3.1.区块结构 3.2.hash pointer 3.3.merkle tree 3.3.1.概述 3.3.2.证明数据存在 3.3.3.证明数据不存在 4.比特币的共识协议 4.1.概述 4.2.验证有效性 4.2.1.验证交易有效性 4.2.2.验证节点有效性 …

YOLOv5源码逐行超详细注释与解读(6)——网络结构(1)yolo.py

前言 在上一篇中,我们简单介绍了YOLOv5的配置文件之一 yolov5s.yaml,这个文件中涉及很多参数,它们的调用会在这篇 yolo.py 和下一篇 common.py 中具体实现。 本篇我们会介绍 yolo.py,这是YOLO的特定模块,和网络构建有…

python【selenium的环境配置】

selenium 1.环境配置 1)在环境设置里面安装selenium第三方库 pip install --user selenium2) from selenium.webdriver import Chrome# 创建谷歌 b Chrome() # 获取网页 b.get(http://www.baidu.com) # 防止自动关闭 input()3)在此之前&…

Rancher系列文章-Rancher v2.6使用脚本实现导入集群

概述 最近在玩 Rancher, 先从最基本的功能玩起, 目前有几个已经搭建好的 K8S 集群, 需要批量导入, 发现官网已经有批量导入的文档了. 根据 Rancher v2.6 进行验证微调后总结经验. 1. Rancher UI 获取创建集群参数 访问Rancher_URL/v3/clusters/,单击右上角“Crea…

第07章_单行函数

第07章_单行函数 🏠个人主页:shark-Gao 🧑个人简介:大家好,我是shark-Gao,一个想要与大家共同进步的男人😉😉 🎉目前状况:23届毕业生,目前在某…

进程地址空间+环境变量

目录 环境变量 进程地址空间 理解虚拟地址空间 进程地址空间区域划分 虚拟内存和物理内存建立联系 深刻理解虚拟地址空间 环境变量 当我们需要使用一个物品的时候,首先要先找到这个物品。同样的,当要运行一个程序(指令)时&a…

大公司为什么禁止SpringBoot项目用Tomcat?

前言 在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。同时,SpringBoot也支持Undertow容器,我们可以很方便的用Undertow替换Tomcat,而Undertow的性能和内…

低功耗技术——流水线设计(加法器和乘法器)

文章目录前言一、流水线1、16bit加法器2、无符号4bit乘法器3、编写一个4bit乘法器模块,并例化该乘法器求解c12*a5*b二、降低FPGA功耗1、静态功耗2、动态功耗前言 2023.3.31 今天学习降低功耗的一些方法 一、流水线 电路最高工作频率:取决于最长的组合逻…

Windows下的详细Git安装

网址链接: Githttps://git-scm.com/ 下载后得到这个程序: 这里它给出的是使用Vim, 我改成的是VSCode: 第一种是让 Git 自己选择,名字是 master ,但是未来也有可能会改为其他名字; 第二种是我们自行决定&a…

大文件上传时如何做到秒传?

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址 大家好,我是大彬~ …

Selenium基础篇之Select下拉列表选择

文章目录前言一、页面准备二、场景三、设计1.引入库2.启动浏览器实例3.访问本地演示html文件4.定位到select标签5.选择橘子🍊5.1 通过索引5.2 通过value值5.3 通过text值6.强制等待7.结束webdriver进程结果前言 大家好,我是空空star,本篇给大…

ChatGPT火出圈,80%的设计师无事可做

自从疫情过后,设计行业开始变得很凌乱。很多同行开始打价格战,设计岗位逐渐演变成了一种新型的流水线。在我国,不管什么行业,到最终都会演变成饱和状态。用金融理论来说:供不应求,就赚钱,供过于…