一种分布式存储系统的性能瓶颈定位方法转让专利

申请号 : CN201811608886.2

文献号 : CN109714229B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 于治楼李冬冬陈亮甫高霄霄

申请人 : 山东超越数控电子股份有限公司

摘要 :

本发明公开了一种分布式存储系统的性能瓶颈定位方法,其中所述方法包括步骤:S1,获取待存储数据;S2,利用所述分布式存储系统的分布算法将所述待存储数据存储至所述分布式存储系统的各个存储节点,并得到所消耗的第一总时间;S3,对所述各个存储节点进行第一预设处理,利用处理后的所述分布式存储系统存储所述待存储数据,同时得到所消耗的第二总时间;S4,响应于所述第二总时间小于所述第一总时间,确定所述各个存储节点为性能瓶颈,并对其进行性能优化。本发明公开的方法可以实现判断分布式存储系统的瓶颈点所在。

权利要求 :

1.一种分布式存储系统的性能瓶颈定位方法,其中所述方法包括步骤:S1,获取待存储数据;

S2,利用所述分布式存储系统的分布算法将所述待存储数据存储至所述分布式存储系统的各个存储节点,并得到所消耗的第一总时间;

S3,对所述各个存储节点进行第一预设处理,利用处理后的所述分布式存储系统存储所述存储数据,同时得到所消耗的第二总时间;

S4,响应于所述第二总时间小于所述第一总时间,确定所述各个存储节点为性能瓶颈,并对其进行性能优化;

其中,在步骤S3中,所述第一预设处理为对所述各个存储节点进行虚拟化处理。

2.如权利要求1所述的性能瓶颈定位方法,其特征在于,对所述各个存储节点进行虚拟化处理包括:在所述各个存储节点构建虚拟内存盘;

将所述待存储数据存储到所述虚拟内存盘中。

3.如权利要求1所述的性能瓶颈定位方法,其特征在于,所述方法还包括步骤:S5,响应于所述第二总时间不小于所述第一总时间,对所述分布算法进行第二预设处理,利用处理后的所述分布式存储系统存储所述待存储数据,同时得到所消耗的第三总时间;

S6,若所述第三总时间小于第二总时间,则确定所述分布算法为性能瓶颈,并对其进行性能优化。

4.如权利要求3所述的性能瓶颈定位方法,其特征在于,在步骤S5中,第二预设处理包括将通过分布算法分布所述待存储数据改为通过人为分布所述待存储数据。

5.如权利要求3所述的性能瓶颈定位方法,其特征在于,步骤S1包括:利用网卡从客户端获取所述待存储数据。

6.如权利要求5所述的性能瓶颈定位方法,其特征在于,所述方法还包括步骤:S7,响应于所述第三总时间不小于所述第二总时间,对所述网卡进行第三预设处理,并利用处理后的分布式存储系统存储所述待存储数据,同时得到所消耗的第四总时间;

S8,若所述第四总时间小于第三总时间,则确定所述网卡为性能瓶颈,并对其进行性能优化。

7.如权利要求6所述的性能瓶颈定位方法,其特征在于,在步骤S7中,所述第三预设处理为对所述网卡进行虚拟化处理。

8.如权利要求7所述的性能瓶颈定位方法,其特征在于,对所述网卡进行虚拟化处理包括步骤:将所述待存储数据缓存到内存中;

将缓存至所述内存中的所述待存储数据存储在所述各个存储节点。

9.如权利要求8所述的性能瓶颈定位方法,其特征在于,对所述网卡进行虚拟化处理还包括步骤:编写缓存驱动,以使所述待存储数据能够缓存至所述内存中;

编写查询驱动,以在所述内存中进行所述待存储数据的查找。

说明书 :

一种分布式存储系统的性能瓶颈定位方法

技术领域

[0001] 本发明涉及性能检测领域,具体涉及一种分布式存储系统的性能瓶颈定位方法。

背景技术

[0002] 随着信息化技术不断创新,信息化水平的不断提高,人们对计算机设备的存储能力、计算能力的需求呈现爆炸式的增长。应用程序需要存储和计算TB甚至PB级别的数据,即使增加更多的节点,更多的存储设备以及处理器,应用程序也不能提供足够快的计算能力。因此,高效的存储和计算能力成为当下必须面对的一个挑战。
[0003] 随着分布式文件系统对于大规模集群系统的重要性越来越大,各国政府和大型计算机公司更加重视对高性能、可伸缩性的存储系统的研究和投资。同时,以廉价的硬件以及开源的软件所组成的分布式存储系统逐渐成为主流的存储和计算平台。
[0004] 通常,分布式存储系统的结构极其复杂,由网络、后端硬盘、服务器等多个部分组成,整个系统中的任何一部分皆可能成为瓶颈,从而导致整个系统性能降低,难以满足用户的需求。

发明内容

[0005] 有鉴于此,为了克服上述问题的至少一个方面,本发明实施例提出一种分布式存储系统的性能瓶颈定位方法,其中所述方法包括步骤:
[0006] S1,获取待存储数据;
[0007] S2,利用所述分布式存储系统的分布算法将所述待存储数据存储至所述分布式存储系统的各个存储节点,并得到所消耗的第一总时间;
[0008] S3,对所述各个存储节点进行第一预设处理,利用处理后的所述分布式存储系统存储所述存储数据,同时得到所消耗的第二总时间;
[0009] S4,响应于所述第二总时间小于所述第一总时间,确定所述各个存储节点为性能瓶颈,并对其进行性能优化。
[0010] 在一些实施例中,在步骤S3中,所述第一预设处理为对所述各个存储节点进行虚拟化处理。
[0011] 在一些实施例中,对所述各个存储节点进行虚拟化处理包括:
[0012] 在所述各个存储节点构建虚拟内存盘;
[0013] 将所述待存储数据存储到所述虚拟内存盘中。
[0014] 在一些实施例中,所述方法还包括步骤:
[0015] S5,响应于第二总时间不小于第一总时间,对所述分布算法进行第二预设处理,利用处理后的所述分布式存储系统存储所述待存储数据,同时得到所消耗的第三总时间;
[0016] S6,若所述第三总时间小于第二总时间,则确定所述分布算法为性能瓶颈,并对其进行性能优化。
[0017] 在一些实施例中,在步骤S5中,第二预设处理包括将通过分布算法分布所述待存储数据改为通过人为分布所述待存储数据。
[0018] 在一些实施例中,步骤S1包括:利用网卡从客户端获取所述待存储数据。
[0019] 在一些实施例中,所述方法还包括步骤:
[0020] S7,响应于第三总时间不小于第二总时间,对所述网卡进行第三预设处理,并利用处理后的分布式存储系统存储所述待存储数据,同时得到所消耗的第四总时间;
[0021] S8,若所述第四总时间小于第三总时间,则确定所述网卡为性能瓶颈,并对其进行性能优化。
[0022] 在一些实施例中,在步骤S7中,所述第三预设处理为对所述网卡进行虚拟化处理。
[0023] 在一些实施例中,对所述网卡进行虚拟化处理包括步骤:
[0024] 将所述待存储数据缓存到内存中;
[0025] 将缓存至所述内存中的所述待存储数据存储在所述各个存储节点。
[0026] 在一些实施例中,对所述网卡进行虚拟化处理还包括步骤:
[0027] 编写缓存驱动,以使所述待存储数据能够缓存至所述内存中;
[0028] 编写查询驱动,以在所述内存中进行所述待存储数据的查找。
[0029] 本发明具有以下有益技术效果:本发明提供的分布式存储系统的性能瓶颈定位方法可以实现判断分布式存储系统的瓶颈点所在。

附图说明

[0030] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
[0031] 图1为本发明的实施例提供的分布式存储系统的性能瓶颈定位方法流程示意图;
[0032] 图2为Ceph分布式存储系统写数据流程示意图。

具体实施方式

[0033] 为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
[0034] 需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
[0035] 根据本发明的一个方面,本发明的实施例提出了一种分布式存储系统的性能瓶颈定位方法,具体实现思路为利用原分布式存储系统对数据进行缓存,并得到一个所消耗的总时间,然后通过分析梳理分布式存储系统数据读写过程,分解出IO路径的关键环节,并对关键环节的硬件设备模块进行虚拟化操作,同时得到虚拟化之后的分布式存储系统存储同样大小的数据时所消耗的总时间,再将两个总时间进行对比,即可确定分布式存储系统的性能瓶颈点所在。
[0036] 下面结合图1详细说明本发明实施例提供的分布式存储系统的性能瓶颈定位方法。
[0037] 如图1所示,本发明实施例提供的分布式存储系统的性能瓶颈定位方法可以包括步骤:
[0038] S1,获取待存储数据。
[0039] 在一些实施例中,待存储数据可以是从本地直接获取。
[0040] S2,利用所述分布式存储系统的分布算法将所述待存储数据存储至所述分布式存储系统的各个存储节点,并得到所消耗的第一总时间。
[0041] 在一些实施例中,可以通过设置分布式存储系统记录开始接受待存储数据的第一时间点,并记录完成将待存储数据存储至各个存储节点的第二时间点,然后根据第一时间点、第二时间点来得到分布式存储系统存储待存储数据所消耗的第一总时间。在得到第一总时间后,可以根据待存储数据的大小和第一总时间得到分布式存储系统的存储速度。
[0042] S3,对所述各个存储节点进行第一预设处理,利用处理后的所述分布式存储系统存储所述存储数据,同时得到所消耗的第二总时间。
[0043] 在一些实施例中,可以在对各个存储节点进行第一预设处理后,重新对同样大小的待存储数据进行存储。这时同样可以通过分布式存储系统重新记录开始接受待存储数据的时间点,并记录完成将待存储数据存储至各个存储节点的时间点,然后根据这两个时间点来得到分布式存储系统存储待存储数据所消耗的第二总时间。在得到第二总时间后,可以根据待存储数据的大小和第二总时间得到在各个存储节点进行第一预设处理后,分布式存储系统的存储速度。
[0044] 在一些实施例中,对各个存储节点进行第一预设处理可以是对各个存储节点进行虚拟化处理,即将各个存储节点的实际硬盘设备虚拟化。具体的,可以是在各个存储节点构建虚拟内存盘,这样通过将待存储数据存储到虚拟内存盘中代替将待存储数据存储到实际硬盘中,可以屏蔽实际硬盘的读写性能对分布式存储系统对存储过程的影响。
[0045] S4,响应于所述第二总时间小于所述第一总时间,确定所述各个存储节点为性能瓶颈,并对其进行性能优化。
[0046] 在一些实施例中,当判断出对各个存储节点进行虚拟化处理后,分布式存储系统存储同样大小的数据所消耗的时间明显减小或速度明显增加,即第二总时间小于第一总时间,说明各个存储节点的实际硬盘的读写速度为系统的瓶颈。
[0047] 在一些实施例中,本发明提供的性能瓶颈定位方法还可以包括步骤:
[0048] S5,响应于第二总时间不小于第一总时间,对所述分布算法进行第二预设处理,利用处理后的所述分布式存储系统存储所述待存储数据,同时得到所消耗的第三总时间。
[0049] 在一些实施例中,第二预设处理可以为将通过分布算法分布所述待存储数据改为通过人为分布所述待存储数据。第三总时间的得到方法与上述实施例中得到第一总时间和第二总时间的方法相同,此处就不再赘述。
[0050] 在对象存储中,数据被切割为多个对象分别存储到不同的存储节点,分配方式是通过分布式存储系统内部的分布算法实现,分布算法对对象分布的越均衡,系统的存储效率越高,即可充分利用多个存储节点的性能。“人为分布”就是手动分配对象到不同的存储节点,可以确保数据的充分均衡分布。通过人工分布数据对象,可以屏蔽存储系统分布算法由于数据分布不均对性能的影响。此时利用人工手段实现数据均衡分布时,可以得出最佳分布下的性能数据,依此为基准可以对分布式存储系统的均衡性评价,进而判断分布式算法是否为系统的瓶颈。
[0051] S6,若所述第三总时间小于第二总时间,则确定所述分布算法为性能瓶颈,并对其进行性能优化。
[0052] 在一些实施例中,当判断出进行人为分布处理后,分布式存储系统存储同样大小的数据所消耗的时间进一步减小,即第三总时间小于第二总时间,说明系统的分布算法同样为系统的瓶颈。
[0053] 在一些实施例中,待存储数据可以是通过从客户端获取。此时,系统需要通过网卡从客户端接收待存储数据。而网卡的标称速率可能同样成为系统的瓶颈。
[0054] 若判断网卡是否为系统瓶颈,可以通过对所述网卡进行第三预设处理,并利用处理后的分布式存储系统存储所述待存储数据,同时得到所消耗的第四总时间,若所述第四总时间小于第三总时间,则确定所述网卡为性能瓶颈,并对其进行性能优化。
[0055] 在一些实施例中,第三预设处理为对所述网卡进行虚拟化处理。具体的,将所述待存储数据先缓存到内存中,然后再将缓存至所述内存中的所述待存储数据存储在所述各个存储节点。此时数据不再通过实际的物理网卡进行传输,而是利用缓存到内存中的数据查询得到,即通过数据重传是实现网络虚拟化,可以完全屏蔽网络延时带来的影响。
[0056] 在一些实施例中,可以通过设置分布式存储系统记录开始在内存中查询待存储数据的时间点,并记录完成将待存储数据存储至各个存储节点的时间点,然后根据这两个时间点来得到分布式存储系统存储待存储数据所消耗的第四总时间。
[0057] 当判断出进行网卡虚拟化后,分布式存储系统存储同样大小的数据所消耗的时间进一步减小,即第四总时间小于第三总时间,说明系统的实际物理网卡同样为系统的瓶颈。
[0058] 在一些实施例中,对网卡虚拟化还包括步骤编写缓存驱动和查询驱动。其中,缓存驱动可以使所述待存储数据能够缓存至所述内存中,查询驱动则可以在所述内存中进行所述待存储数据的查找。
[0059] 下面以Ceph分布式存储系统为例说明本发明实施例提供的分布式存储系统的性能瓶颈定位方法。
[0060] 如图2所示,图2示出了Ceph分布式存储系统写数据流程。
[0061] Ceph分布式文件系统在进行文件写请求时主要包括两步:首先客户端(client)把文件处理成多个对象,访问mon节点获取集群视图,通过集群映射图和CRUSH算法把每个对象的多个副本发送给相应的OSD;然后接收到数据写入请求的OSD端将数据写入实际磁盘中。为了保证数据的安全性,Ceph采用了多副本保存,因此在写数据过程中,为了保证多副本数据一致性,Ceph先将相关写请求记录到日志中然后再写入OSD中,同一份数据首先写入主OSD,再由主OSD写入从OSD中,写入时以同样的方式计算对象存储的位置。
[0062] 从以上流程分析可以看出,分布式存储系统中影响数据写入性能的主要环节为4(计算对象存储位置),5(数据写入OSD),6(OSD副本复制)。环节4直接影响到数据写入的并发能力,环节5和环节6主要考验网络和硬盘的性能,这些环节直接存在耦合,例如计算所得的存储位置在某些OSD上的连续性会直接影响硬盘的读写响应时间,所以分布式存储系统的性能往往无法仅仅通过单一节点网络或硬盘性能来评估,实际数据的写入会受到方面的相互制约。
[0063] 环节4的对象存储位置计算方法通过人为干预的方式实现数据的最大均衡化,可以屏蔽数据分布不均对性能的影响。当屏蔽环节4对性能造成的影响后,测试所得的性能数据可真实反映系统中各个节点的硬件配置情况。
[0064] 然后通过虚拟化网络设备实现对网络性能的屏蔽,网络设备的虚拟化实现,可通过数据多次重复传递实现,第一次执行的网络数据包首先缓存到内存中,第二次执行数据包网络传输时,直接从内存缓存中读取网络数据包,虚拟高速网络带宽下的场景。屏蔽网络设备后,存储系统的性能表现将不受网络带宽的限制,其性能结果可以指导管理人员是否对网络设备进行带宽的提升。
[0065] 接着通过虚拟化硬盘设备实现对后端硬盘的屏蔽,具体的通过在各个节点构建ramdisk组建OSD服务,消除由于硬盘设备造成的性能故障。屏蔽后端硬盘的测试数据可指导管理人员是否需要对后端硬盘进行提速。
[0066] 以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
[0067] 应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
[0068] 上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
[0069] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0070] 所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上所述的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。