一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分布式存储系统的数据存储方法、系统、装置及存储介质与流程

2021-11-10 04:33:00 来源:中国专利 TAG:


1.本发明涉及数据存储技术领域,更具体的说是涉及一种分布式存储系统的数据存储方法、系统、装置及存储介质。


背景技术:

2.随着信息技术的不断发展,数据作为信息技术的重要组成部分受到越来越多的关注,对收集到的数据进行分析处理可以得到许多重要的信息,从而挖掘出巨大的经济价值,这也因此推动了大数据、高性能计算的快速发展。如何让存储设备以较高的性能,安全可靠的进行数据存储成为存储设备关键问题之一,同时也是分布式存储的关键问题之一。
3.在数据存储时,减少osd(object storage device,对象存储设备)的内存消耗,可以提高分布式存储设备的性能。在分布式存储设备中,数据经由osd落盘的时候,倘若收到的消息所在的内存空间是非内存对齐的,在解析消息之后数据落盘的时候会对数据进行对齐内存空间重分配,做两次内存访问,首先读取原内存空间的数据,再申请一段内存对齐的空间,调用memcpy函数将数据拷贝到新申请的内存对齐空间里,增加额外的cpu消耗和性能的消耗。对于分布式存储,数据信息由客户端发往主osd,再由主osd发往从osd进行数据存储。其中,对于主osd收到的消息,在编码时,会把数据段单独存放在消息的一个列表
4.中,主osd接收到消息时会申请一段内存对齐的空间单独存放这段数据段的列
5.表;而主osd把数据发往从osd时,消息类型发生了变化,相应的编码方式也不
6.同,而且并未对消息的数据段进行处理。由于从osd收到的数据是非内存对齐的,在落盘时,增加了额外的内存访问以及cpu消耗和性能消耗。
7.因此,如何在数据存储过程中有效的减少额外的内存访问以及性能消耗,从而提示存储设备的性能,是我们亟待解决的问题。


技术实现要素:

8.针对以上问题,本发明的目的在于提供一种分布式存储系统的数据存储方法、系统、装置及存储介质,通过改变主osd与从osd之间的消息和事务中对数据段的处理方式,直接根据内存对齐数据落盘,减少了额外的内存访问以及cpu消耗和性能消耗。
9.本发明为实现上述目的,通过以下技术方案实现:一种分布式存储系统的数据存储方法,包括如下步骤:
10.s1:主osd收到客户端发送的写消息后,对写消息进行解析,在解析时增加对数据段的处理;
11.s2:主osd生成发往从osd的事务,并将数据段封装在写消息的一个列表中;
12.s3:从osd接收到写消息时,申请一段内存对齐的空间存放数据段的列表的操作;s4:从osd进行消息解析,解析完成后从消息中获取事务,并根据事务中的写操作进行数据落盘处理。
13.进一步,所述步骤s1包括:
14.主osd收到客户端发送的subwrite消息之后,首先对subwrite消息进行解析,根据其中的数据信息和冗余规则,计算出应当向从osd写入的数据,并且将写操作和数据信息封装成事务,在封装事务的过程中,增加将数据信息单独存放在事务的pure_data列表的操作。
15.进一步,所述步骤s2包括:
16.主osd生成发往从osd的事务之后,在封装subwrite消息时,将事务的pure_data列表中的数据段单独封装在消息的data列表中。
17.进一步,所述步骤s3包括:
18.从osd收到subwrite消息时,申请一块内存对齐的空间,将消息中的data列表中的数据段放到这块内存对齐的空间里。
19.进一步,所述步骤s4包括:
20.从osd解析subwrite消息完成后,从subwrite消息中获取事务,并且将subwrite消息的data列表中的数据段解码到事务的pure_data列表中;
21.处理事务,并根据事务中的写操作进行数据落盘处理。
22.相应的,本发明还公开了一种分布式存储系统的数据存储系统,包括:解析方式修改单元,用于主osd收到客户端发送的写消息后,对写消息进行解析,在解析时增加对数据段的处理;
23.数据段封装单元,用于主osd生成发往从osd的事务,并将数据段封装在写消息的一个列表中;
24.对齐存放单元,用于从osd接收到写消息时,申请一段内存对齐的空间存放数据段的列表的操作;
25.存储单元,用于从osd进行消息解析,解析完成后从消息中获取事务,并根据事务中的写操作进行数据落盘处理。
26.进一步,所述解析方式修改单元包括:
27.事务封装模块,用于对subwrite消息进行解析,根据其中的数据信息和冗余规则,计算出应当向从osd写入的数据,并且将写操作和数据信息封装成事务;操作模块,用于在封装事务的过程中,增加将数据信息单独存放在事务的pure_data列表的操作。
28.进一步,所述数据段封装单元具体用于:
29.主osd生成发往从osd的事务之后,在封装subwrite消息时,将事务的pure_data列表中的数据段单独封装在消息的data列表中。
30.进一步,所述对齐存放单元具体用于:
31.从osd收到subwrite消息时,申请一块内存对齐的空间,将消息中的data列表中的数据段放到这块内存对齐的空间里。
32.进一步,所述存储单元包括:
33.解码模块,用于从osd解析subwrite消息完成后,从subwrite消息中获取事务,并且将subwrite消息的data列表中的数据段解码到事务的pure_data列表中;落盘模块,用于处理事务,并根据事务中的写操作进行数据落盘处理。
34.相应的,本发明公开了一种分布式存储系统的数据存储装置,包括:
35.存储器,用于存储分布式存储系统的数据存储程序;
36.处理器,用于执行所述分布式存储系统的数据存储程序时实现如上文任一项所述分布式存储系统的数据存储方法的步骤。
37.相应的,本发明公开了一种可读存储介质,所述可读存储介质上存储有分布式存储系统的数据存储程序,所述分布式存储系统的数据存储程序被处理器执行时实现如上文任一项所述分布式存储系统的数据存储方法的步骤。
38.对比现有技术,本发明有益效果在于:
39.1、本发明通过修改主osd发往从osd的消息的编码和解码方式,在编码和解码时增加对数据段的处理,将数据段封装在消息的一个列表中,复用主osd接收到消息时申请一段内存对齐的空间存放这段数据段的列表的操作,使从osd处理写事务时的数据段是内存对齐的,从而减少从osd数据落盘时的额外内存访问以及cpu消耗和性能消耗,有效提升了存储设备的性能。
40.2.本发明在分布式存储系统数据写的过程中,改变了主osd与从osd之间的消息和事务中对数据段的处理,使从osd处理写事务时,可直接根据内存对齐数据落盘,减少了额外的内存访问和cpu、性能消耗。在大块写场景,能够减少cpu消耗5%,提升性能至原来的1.6倍左右。
41.由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。
附图说明
42.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
43.附图1是本发明的方法流程图;
44.附图2是本发明的系统结构图。
45.图中,1为解析方式修改单元;2为数据段封装单元;3为对齐存放单元;4为存储单元;5为事务封装模块;6为操作模块;7为解码模块;8为落盘模块。
具体实施方式
46.本发明的核心是提供一种分布式存储系统的数据存储方法,现有技术中,对于分布式存储系统来说,osd是基本的存储单元。出于数据冗余的考虑,一个数据以不同的冗余方式分布在不同的osd上。数据首先从客户端发到主osd上,主osd再将数据发送到从osd上。这两次数据传输采用的消息类型不同,对应着不同的消息编码方式。其中,对于主osd收到的消息,在编码时,会把数据段单独存放在消息的一个列表中,主osd接收到消息时会申请一段内存对齐的空间单独存放这段数据段的列表;而主osd把数据发往从osd时,会将该从osd应该写入的数据信息封装到事务中,然后将事务封装成消息发送给从osd,从osd解析消息,将数据信息从事务中取出,落盘。数据信息未做内存对齐操作,因此数据落盘时,会有额外的内存访问以及cpu消耗和性能消耗。
47.而本发明提供的分布式存储系统的数据存储方法,对主osd发往从osd的消息在编
码和解码时,增加对数据段的处理,将数据段封装在消息的一个列表中,复用主osd接收到消息时申请一段内存对齐的空间存放这段数据段的列表的操作,使得从osd要写入的数据内存对齐,从而减少从osd数据落盘时的额外内存访问和cpu、性能消耗,提升存储设备的性能。
48.为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
49.实施例一:
50.如图1所示,本实施例提供了一种分布式存储系统的数据存储方法,包括如下步骤:
51.s1:主osd收到客户端发送的写消息后,对写消息进行解析,在解析时增加对数据段的处理。
52.主osd收到客户端发送的subwrite消息之后,首先对subwrite消息进行解析,根据其中的数据信息和冗余规则,计算出应当向从osd写入的数据,并且将写操作和数据信息封装成事务,在封装事务的过程中,增加将数据信息单独存放在事务的pure_data列表的操作。
53.s2:主osd生成发往从osd的事务,并将数据段封装在写消息的一个列表中。
54.主osd生成发往从osd的事务之后,在封装subwrite消息时,将事务的pure_data列表中的数据段单独封装在消息的data列表中。
55.s3:从osd接收到写消息时,申请一段内存对齐的空间存放数据段的列表的操作。
56.从osd收到subwrite消息时,申请一块内存对齐的空间,将消息中的data列表中的数据段放到这块内存对齐的空间里。
57.s4:从osd进行消息解析,解析完成后从消息中获取事务,并根据事务中的写操作进行数据落盘处理。
58.从osd解析subwrite消息完成后,从subwrite消息中获取事务,并且将subwrite消息的data列表中的数据段解码到事务的pure_data列表中;
59.处理事务,并根据事务中的写操作进行数据落盘处理。
60.本实施例提供了一种分布式存储系统的数据存储方法,通过修改主osd发往从osd的消息的编码和解码方式,在编码和解码时增加对数据段的处理,将数据段封装在消息的一个列表中,复用主osd接收到消息时申请一段内存对齐的空间存放这段数据段的列表的操作,使从osd处理写事务时的数据段是内存对齐的,从而减少从osd数据落盘时的额外内存访问以及cpu消耗和性能消耗,有效提升了存储设备的性能。
61.实施例二:
62.基于实施例一,本实施例还提出一种分布式存储系统的数据存储方法,包括:
63.1、主osd收到客户端发送的写消息之后,首先对消息进行解析,根据其中的数据信息和冗余规则,计算出应当向从osd写入的数据,并且将写操作和数据信息封装成事务,在封装事务的过程中,增加“将数据信息单独存放在事务的pure_data列表”的操作,为后续封装子消息时将数据信息单独存放做准备。
64.2、主osd生成发往从osd的事务之后,在封装subwrite消息时,将事务的pure_data列表中的数据段单独封装在消息的data列表中。
65.3、从osd收到subwrite消息时,申请一块内存对齐的空间,将消息中的data列表中的数据段放到这块内存对齐的空间里。
66.4、从osd解析消息完成后,从消息中获取事务,并且将消息中data列表中的数据段解码到事务的pure_data列表中,处理事务,根据事务中的写操作进行数据落盘处理。
67.由于从osd收到的数据经过了步骤3中的内存对齐处理,因此步骤4在进行数据处理事务落盘的时候,直接处理内存对齐数据,减少了额外的内存访问和cpu、性能消耗。
68.本实施例提供了一种分布式存储系统的数据存储方法,在分布式存储系统数据写的过程中,改变了主osd与从osd之间的消息和事务中对数据段的处理,使从osd处理写事务时,可直接根据内存对齐数据落盘,减少了额外的内存访问和cpu、性能消耗。在大块写场景,能够减少cpu消耗5%,提升性能至原来的1.6倍左右。
69.实施例三:
70.基于实施例一,如图2所示,本发明还公开了一种分布式存储系统的数据存储系统,包括:解析方式修改单元1、数据段封装单元2、对齐存放单元3和存储单元4。
71.解析方式修改单元1,用于主osd收到客户端发送的写消息后,对写消息进行解析,在解析时增加对数据段的处理。解析方式修改1单元包括:
72.事务封装模块5,用于对subwrite消息进行解析,根据其中的数据信息和冗余规则,计算出应当向从osd写入的数据,并且将写操作和数据信息封装成事务;
73.操作模块6,用于在封装事务的过程中,增加将数据信息单独存放在事务的pure_data列表的操作。
74.数据段封装单元2,用于主osd生成发往从osd的事务,并将数据段封装在写消息的一个列表中。数据段封装单元2具体用于:主osd生成发往从osd的事务之后,在封装subwrite消息时,将事务的pure_data列表中的数据段单独封装在消息的data列表中。
75.对齐存放单元3,用于从osd接收到写消息时,申请一段内存对齐的空间存放数据段的列表的操作。对齐存放单元3具体用于:从osd收到subwrite消息时,申请一块内存对齐的空间,将消息中的data列表中的数据段放到这块内存对齐的空间里。
76.存储单元4,用于从osd进行消息解析,解析完成后从消息中获取事务,并根据事务中的写操作进行数据落盘处理。存储单元4包括:
77.解码模块7,用于从osd解析subwrite消息完成后,从subwrite消息中获取事务,并且将subwrite消息的data列表中的数据段解码到事务的pure_data列表中;
78.落盘模块8,用于处理事务,并根据事务中的写操作进行数据落盘处理。
79.本实施例提供了一种分布式存储系统的数据存储系统,通过改变主osd对从osd写操作的事务和消息的封装和解码方式,使从osd收到的写操作数据内存对齐,减少从osd数据落盘时的额外内存访问和cpu、性能消耗。
80.实施例四:
81.本实施例公开了一种分布式存储系统的数据存储装置,包括处理器和存储器;其中,所述处理器执行所述存储器中保存的分布式存储系统的数据存储程序时实现以下步骤:
82.1、主osd收到客户端发送的写消息后,对写消息进行解析,在解析时增加对数据段的处理。
83.2、主osd生成发往从osd的事务,并将数据段封装在写消息的一个列表中。
84.3、从osd接收到写消息时,申请一段内存对齐的空间存放数据段的列表的操作。
85.4、从osd进行消息解析,解析完成后从消息中获取事务,并根据事务中的写操作进行数据落盘处理。
86.进一步的,本实施例中的分布式存储系统的数据存储装置,还可以包括:
87.输入接口,用于获取外界导入的分布式存储系统的数据存储程序,并将获取到的分布式存储系统的数据存储程序保存至所述存储器中,还可以用于获取外界终端设备传输的各种指令和参数,并传输至处理器中,以便处理器利用上述各种指令和参数展开相应的处理。本实施例中,所述输入接口具体可以包括但不限于usb接口、串行接口、语音输入接口、指纹输入接口、硬盘读取接口等。
88.输出接口,用于将处理器产生的各种数据输出至与其相连的终端设备,以便于与输出接口相连的其他终端设备能够获取到处理器产生的各种数据。本实施例中,所述输出接口具体可以包括但不限于usb接口、串行接口等。
89.通讯单元,用于在分布式存储系统的数据存储装置和外部服务器之间建立远程通讯连接,以便于分布式存储系统的数据存储装置能够将镜像文件挂载到外部服务器中。本实施例中,通讯单元具体可以包括但不限于基于无线通讯技术或有线通讯技术的远程通讯单元。
90.键盘,用于获取用户通过实时敲击键帽而输入的各种参数数据或指令。
91.显示器,用于运行服务器供电线路短路定位过程的相关信息进行实时显示。
92.鼠标,可以用于协助用户输入数据并简化用户的操作。
93.本实施例提供了一种分布式存储系统的数据存储装置,通过修改主osd发往从osd的消息的编码和解码方式,在编码和解码时增加对数据段的处理,将数据段封装在消息的一个列表中,复用主osd接收到消息时申请一段内存对齐的空间存放这段数据段的列表的操作,使从osd处理写事务时的数据段是内存对齐的,从而减少从osd数据落盘时的额外内存访问以及cpu消耗和性能消耗,有效提升了存储设备的性能。
94.实施例五:
95.本实施例还公开了一种可读存储介质,这里所说的可读存储介质包括随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动硬盘、cd

rom或技术领域内所公知的任意其他形式的存储介质。可读存储介质中存储有分布式存储系统的数据存储程序,所述分布式存储系统的数据存储程序被处理器执行时实现以下步骤:
96.1、主osd收到客户端发送的写消息之后,首先对消息进行解析,根据其中的数据信息和冗余规则,计算出应当向从osd写入的数据,并且将写操作和数据信息封装成事务,在封装事务的过程中,增加“将数据信息单独存放在事务的pure_data列表”的操作,为后续封装子消息时将数据信息单独存放做准备。
97.2、主osd生成发往从osd的事务之后,在封装subwrite消息时,将事务的pure_data列表中的数据段单独封装在消息的data列表中。
98.3、从osd收到subwrite消息时,申请一块内存对齐的空间,将消息中的data列表中的数据段放到这块内存对齐的空间里。
99.4、从osd解析消息完成后,从消息中获取事务,并且将消息中data列表中的数据段解码到事务的pure_data列表中,处理事务,根据事务中的写操作进行数据落盘处理。
100.本实施例提供了一种可读存储介质,通过改变主osd对从osd写操作的事务和消息的封装和解码方式,使从osd收到的写操作数据内存对齐,减少从osd数据落盘时的额外内存访问和cpu、性能消耗。
101.综上所述,本发明能够有效提升存储设备的性能。
102.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的方法而言,由于其与实施例公开的系统相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
103.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
104.在本发明所提供的几个实施例中,应该理解到,所揭露的系统、系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
105.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
106.另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。
107.同理,在本发明各个实施例中的各处理单元可以集成在一个功能模块中,也可以是各个处理单元物理存在,也可以两个或两个以上处理单元集成在一个功能模块中。
108.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd

rom、或技术领域内所公知的任意其它形式的存储介质中。
109.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意
在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
110.以上对本发明所提供的分布式存储系统的数据存储方法、系统、装置及可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献