CN112527492A - 一种分布式存储系统中的数据存储方法及装置 - Google Patents
一种分布式存储系统中的数据存储方法及装置 Download PDFInfo
- Publication number
- CN112527492A CN112527492A CN201910880130.1A CN201910880130A CN112527492A CN 112527492 A CN112527492 A CN 112527492A CN 201910880130 A CN201910880130 A CN 201910880130A CN 112527492 A CN112527492 A CN 112527492A
- Authority
- CN
- China
- Prior art keywords
- storage
- storage device
- data
- target
- written
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种分布式存储系统中的数据存储方法及装置,在该方法中,当存储系统的存储节点接收到客户端根据分区视图发送的写请求后,会根据该存储节点中多个存储设备的剩余存储空间,从该多个存储设备中确定该目标存储设备,并将与该写请求对应的待写入数据写入该目标存储设备。由于存储节点是根据每个存储设备的剩余存储空间存储待写入数据的,因此,当每个待写入数据都采用这种方式进行处理后,则在各个存储设备存储的数据的数据量可以达到一个均衡状态。
Description
技术领域
本申请涉及存储技术领域,尤其涉及一种分布式存储系统中的数据存储方法及装置。
背景技术
在分布式存储系统中,采用对存储系统的存储设备进行分区的方法,来提高存储系统的存储性能。具体的做法是:首先按照预设的规则(例如用户需求或者存储系统的存储池对应的数据冗余模式等),创建若干个分区(partition,pt),每个pt中包括固定数量的列,一个列可以认为是一个逻辑存储区域,然后,根据存储系统的均衡策略,将该若干个pt打散到存储系统的所有存储设备上。这样,存储系统中的存储设备用于为分区中的列提供存储空间。一个分区会包含多个分条,分条根据冗余算法,例如纠删码(Erasure Coding,EC)包含数据分条单元和校验分条单元,数据分条单元和校验分条单元大小相同,并且分条中数据分条单元和校验分条单元数量之和等于分区中列的数量,数据分条单元和校验分条单元统称为分条单元。一个分区中的多个分条位于相同位置的分条单元分布在相同的列上,即分布在相同的存储设备上。这样,当在该存储系统上存储数据时,存储系统可以从该若干个分区中选择一个分区,从分区中获得分条,然后根据pt与存储设备之间的映射关系,将该数据分散存储在相应的存储设备上,由于一个分区的各个列中存储的数据量均衡,从而可以保证存储系统的负载均衡。
由于每个分区中存储的可能是不同业务的数据,而不同业务的数据的数据量可能不同,从而会导致同一个存储节点中属于不同分区的存储设备中存储的数据的数据量也不相同。例如,存储节点属于某个分区的存储设备已经存满数据,而该存储节点的属于其他分区的存储设备还有剩余存储空间,在这种情况下,造成存储系统中存储的负载不均衡。
发明内容
本申请提供一种分布式存储系统中的数据存储方法及装置,用以实现存储系统的负载均衡。
第一方面,提供一种分布式存储系统中的数据存储方法,在该方法中,当存储系统的客户端获取待写入数据后,该客户端会根据分区视图向存储系统的存储节点发送写请求,该写请求用于将待写入数据写入分区的属于该存储节点的目标存储设备,该分区视图包含该分区与该目标存储设备所在的存储节点的对应关系。该存储节点在接收该写请求后,则根据该存储节点中多个存储设备的剩余存储空间,从该多个存储设备中确定该目标存储设备,并将该待写入数据写入该目标存储设备。
在上述技术方案中,由于存储节点是根据每个存储设备的剩余存储空间存储待写入数据的,也就是说,在写入数据时已经考虑了各个存储设备的剩余存储空间,因此,当每个待写入数据都采用这种方式进行处理后,则在各个存储设备存储的数据的数据量可以达到一个均衡状态。
进一步,由于可以实现存储系统的负载均衡,进而可以避免由于各个存储设备中存储的数据不均衡而导致无法使用某些存储设备的剩余存储空间的问题,可以提高存储空间的利用率。
在一种可能的设计中,存储节点根据多个存储设备的剩余存储空间,从该多个存储设备中确定该目标存储设备,可以包括但不限于如下两种方式:
第一种方式,该存储节点从该多个存储设备中选择剩余存储空间不小于阈值的存储设备作为该目标存储设备。
第二种方式,该存储节点从该多个存储设备中选择剩余存储空间最大的存储设备作为该目标存储设备。
在上述技术方案中,存储节点可以将待写入数据存储在剩余存储空间较大的存储设备中,这样可以避免某一个存储设备会在较短的时间内存满数据,可以使得该存储节点的各个存储设备存储的数据的数据量在较长的时间处于均衡状态。且,存储节点可以通过多种方式确定该目标存储设备,可以增加存储系统的灵活性。
在一种可能的设计中,该存储节点可以建立该待写入数据的地址与该目标存储设备的存储地址之间的对应关系;其中,该存储地址为该目标存储设备存储该待写入数据的地址。
在上述技术方案中,由于存储节点会根据每个存储设备的剩余存储空间确定将该待写入数据存储到哪一个存储设备,也就是说,存储节点中存储该待写入数据的存储设备,和客户端发送的写请求中指示的目标存储设备可能相同,也可能不同,因此,当存储节点存储该待写入数据后,可以建立该待写入数据的地址与存储地址的对应关系,便于后续读写过程中可以较快地获取该待写入数据。
第二方面,提供一种数据存储装置,该数据存储装置可以是存储节点或者存储服务端,也可以是存储节点或者存储服务端中的装置。该数据存储装置包括处理器,用于实现上述第一方面描述的方法。该数据存储装置还可以包括存储器,用于存储程序指令和数据。该存储器与该处理器耦合,该处理器可以调用并执行该存储器中存储的程序指令,用于实现上述第一方面描述的方法中的任意一种方法。该数据存储装置还可以包括通信接口,该通信接口用于该数据存储装置与其它设备进行通信。示例性地,该其它设备为存储系统中的客户端。
在一种可能的设计中,该数据存储装置包括处理器和通信接口,其中:
所述通信接口,用于接收所述分布式存储系统中的客户端根据分区视图发送的写请求;所述写请求用于将待写入数据写入分区的目标存储设备;所述分区视图包含所述分区与所述目标存储设备所在的所述存储节点的对应关系,所述目标存储设备属于所述存储节点;
所述处理器,用于根据所述存储节点中多个存储设备的剩余存储空间,从所述多个存储设备中确定所述目标存储设备;以及,用于将所述待写入数据写入所述目标存储设备。
在一种可能的设计中,所述处理器具体用于:
从所述多个存储设备中选择剩余存储空间不小于阈值的存储设备作为所述目标存储设备。
在一种可能的设计中,所述处理器具体用于:
从所述多个存储设备中选择剩余存储空间最大的存储设备作为所述目标存储设备。
在一种可能的设计中,所述处理器还用于:
建立所述待写入数据的地址与所述目标存储设备的存储地址之间的对应关系;其中,所述存储地址为所述目标存储设备存储所述待写入数据的地址。
第三方面,提供一种数据存储装置,该数据存储装置可以是存储节点或者存储服务端,也可以是存储节点或者存储服务端中的装置。该数据存储装置可以包括处理模块和通信模块,这些模块可以执行上述第一方面任一种设计示例中的所执行的相应功能,具体的:
所述通信模块,用于接收所述分布式存储系统中的客户端根据分区视图发送的写请求;所述写请求用于将待写入数据写入分区的目标存储设备;所述分区视图包含所述分区与所述目标存储设备所在的所述存储节点的对应关系,所述目标存储设备属于所述存储节点;
所述处理模块,用于根据所述存储节点中多个存储设备的剩余存储空间,从所述多个存储设备中确定所述目标存储设备;以及,用于将所述待写入数据写入所述目标存储设备。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第一方面中任意一项所述的方法。
第五方面,本申请实施例提供一种计算机程序产品,所述计算机程序产品存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第一方面中任意一项所述的方法。
第六方面,本申请提供了一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现第一方面所述的方法。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
第七方面,本申请实施例提供了一种存储系统,该存储系统包括存储设备以及第二方面及第二方面任一种设计中所述的数据存储装置,或者,该存储系统包括存储设备以及第三方面及第三方面任一种设计中所述的数据存储装置。
上述第二方面至第七方面及其实现方式的有益效果可以参考对第一方面的方法及其实现方式的有益效果的描述。
附图说明
图1为本申请实施例提供的分布式存储系统的一种示例的架构图;
图2为多个pt在存储设备的分布情况的一种示例的示意图;
图3A~图3B为与pt对应的分区视图的示例的示意图;
图3C为一个pt与其包括的多个分条以及分条单元的示意图;
图4为本申请实施例提供的数据存储方法的流程图;
图5为本申请实施例提供的数据存储装置的一种示例的结构图;
图6为本申请实施例提供的数据存储装置的另一种示例的结构图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例作进一步地详细描述。
本申请实施例中“多个”是指两个或两个以上,鉴于此,本申请实施例中也可以将“多个”理解为“至少两个”。“至少一个”,可理解为一个或多个,例如理解为一个、两个或更多个。例如,包括至少一个,是指包括一个、两个或更多个,而且不限制包括的是哪几个,例如,包括A、B和C中的至少一个,那么包括的可以是A、B、C、A和B、A和C、B和C、或A和B和C。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。在本申请实施例中,“节点”和“节点”可以互换使用。
除非有相反的说明,本申请实施例提及“第一”、“第二”等序数词用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度。
本申请实施例中的方法可以应用于分布式存储系统中,该分布式存储系统可以是文件存储系统、块存储系统或者对象存储系统,或者上述存储系统的组合,在本申请实施例中不作限制。
请参考图1,为本申请实施例提供的分布式存储系统的一种示例的架构图。在图1中,分布式存储系统100包括客户端110和多个存储节点120,在图1中以分布式存储系统100包括4个存储节点(分别为存储节点1~存储节点4)为例,每个存储节点120包括至少两个存储设备。该存储设备可以是机械硬盘(hard disk drive,HDD)以及固态硬盘(solid statedrive,SSD)等。存储设备的接口可以包括串行高级技术附件(serial advancedtechnology attachment,SATA)接口、小型计算机系统接口(small computer systeminterface,SCSI)、串行连接SCSI接口(serial attached SCSI,SAS)、光纤通道接口(fibrechannel,FC),或者支持非易失性内存标准(Non-volatile Memory Express,NVMe)协议的接口等。
在图1所示的分布式存储系统中,数据是根据存储系统中的分区,存储到存储设备中的。假设分布式存储系统中每个存储节点包括3个存储设备,分别标记为存储设备A~存储设备L,且为该分布式存储系统创建了多个pt,每个pt所占用的存储空间的大小相同,例如为3兆字节(megabytes,MB)或者1MB等。每个pt包括多个列,每个列所占用的存储空间的大小相同。作为一种示例,该存储系统创建了10个pt,每个pt包括6个列,该6个列均匀分布在不同的存储设备中。请参考图2,为该每个pt的6个列在存储设备的分布情况的一种示例的示意图。在图2中,第一个pt包括的6个列分布在存储设备A~存储设备F中,第二个pt包括的6个列分布在存储设备B~存储设备G中,以此类推。
根据图2所示的分布情况,可以得到与每一个pt对应的分区视图,每个分区视图包括该分区与该分区所对应的存储节点中的存储设备的对应关系。针对第一个pt,可以得到如图3A所示的分区视图,其中,括号中的字符表示该列所在的存储节点(例如字符“1”)以及存储设备(例如字符“A”),针对第二个pt,可以得到如图3B所示的分区视图。针对其他pt也是同样的,在此不再赘述。在图3A和图3B所示的视图中,以存储设备的编号顺序排列,但在实际中的视图也可能是乱序的,在此不作限制。
其中,每个pt包括多个分条,作为一种示例,以第一个pt为例,请参考图3C,该pt中包括5个分条,每个分条包括多个分条单元,该多个分条单元的总量与该pt包括的列的数量相同。在前述示例中,以一个pt包括6个列为例,则每个分条中包括6个分条单元,每个分条单元所占用的存储空间的相同,每个分条单元映射到其中一个列中,例如,每个分条的第一个分条单元映射在列1中,第二个分条单元映射到列2中,以此类推。由图2和图3C可知,每个存储设备中包括5个pt的列,每个列中包括5个分条单元,则每个存储设备中包括25个分条单元。
当存储系统接收到待存储的数据后,从该多个pt中选择一个pt,然后从该pt中获得至少一个分条,将该待存储的数据存储在于该至少一个分条对应的存储设备中。例如,存储设备确定将待存储的数据存储在第一个pt中,若每个分条能够存储0.6MB数据,该待存储的数据为1.2MB,则存储系统确定将该待存储的数据存储在第一个pt的第一个分条和第二个分条对应的存储设备中。
由于每个分区中存储的可能是不同业务的数据,而不同业务的数据的数据量可能不同,从而会导致同一个存储节点中属于不同分区的存储设备中存储的数据的数据量也不相同。例如,存储系统根据数据的业务类型,将不同业务类型的数据存在不同的pt中的分条中,例如将业务类型1的数据存在第一个pt的分条中,然后将业务类型2的数据存在第二个pt的分条中,若业务类型1的数据较多,而业务类型2的数据较少,则一段时间后,第一个pt的分条中可能已经存满数据,而第二个pt的分条中还有剩余存储空间,针对存储节点1来说,存储设备A中已经存满数据,而存储设备E和存储设备I中还有剩余存储空间,造成存储系统的负载不均衡。
鉴于此,本申请实施例提供一种分布式存储系统中的数据存储方法,用以减少存储空间的浪费,提高存储系统的存储空间的利用率。下面,将结合附图对本申请实施例中提供的数据存储方法进行说明。
请参考图4,为本申请实施例提供的数据存储方法的流程图。在下文中,以该方法应用在如图1所示的分布式存储系统为例,该流程图的描述如下:
S401、客户端接收待写入数据,并根据分区视图向至少一个存储节点发送写请求。
沿用上述示例,在分布式存储系统中包括多个pt,当客户端接收到待写入数据后,可以根据预设规则,确定将该待写入数据存储到该多个pt的一个pt的至少一个分条中。
例如,每一个pt能够存储5MB的数据,一个pt中包括5个分条,则每个分条能够存储1MB的数据,那么当客户端接收到大小为2MB的待写入数据时,则客户端确定需要将该待写入数据写入到1个pt包括的2个分条中。然后,客户端可以根据该预设规则,从该存储系统包括的多个pt中选择用于存储该待写入数据的Pt。该预设规则可以是随机选择,或者可以是采用哈希算法进行计算,当然也可以是其他规则在此不做限制。为方便说明,在下文中以客户端确定将该待写入数据存储到第一个pt的前两个分条中为例。
在确定用于存储该待写入数据的pt后,客户端可以采用打散机制,将该待写入数据分为多个分片,并将该多个分片分别存储到与该第一个pt的前两个分条对应的存储设备中。以第一个pt的分区视图如图3A所示,第一个pt中包括6个列,则客户端将该待写入数据分为2份,并将每份数据分为6个分片,然后将每6个分片存储到第一个pt的一个分条对应的存储设备中。其中,每6个分片可以全部为数据分片,或者,也可以先将该一份数据分为4个数据分片,然后根据该数据分片生成2个对应的校验分片,在本申请实施例中不对客户端的打散机制进行限制。
然后,客户端生成用于将待写入数据的分片存储到分条对应的存储设备的写请求。例如,由第一个pt对应的分区视图可知,第一个pt包括的6个列分别分配在存储节点1的存储设备A和存储设备E、存储节点2的存储设备B和存储设备F、存储节点3的存储设备C以及存储节点4的存储设备D上,因此,客户端生成4个写请求,然后分别将该4个写请求发送给存储节点1~存储节点4。例如,发送给存储节点1的写请求用于将该第一份数据的第1个分片写入到第一个pt的第一个分条的第一个分条单元对应的存储空间、将第一份数据的第5个分片写入到第一个pt的第一个分条的第五个分条单元对应的存储空间、将第二份数据的第1个分片写入第一个pt的第二个分条的第一个分条单元对应的存储空间,以及将第二份数据的第5个分片写入第一个pt的第五个分条单元对应的存储空间中,其他3个写请求以此类推,在此不再赘述。
由前述分析可知,当同一个存储节点中,用于存储不同pt的数据的存储设备由于pt的数据量不同时,会存在多个存储设备中存储的数据的数据量不均衡。
由于每个存储节点对pt进行管理也需要占用存储系统的资源(例如存储空间、处理器资源等),因此,当pt的数量过多时,会造成存储系统的负载较大。为此,本申请实施例中对存储系统做的第一点改进为:将现有技术中每个列分布在一个存储节点的一个存储设备上,更改为每个列分布在一个存储节点的至少两个存储设备上。例如,针对如图3A所示的pt,在现有技术中,列1分布在存储节点1的存储设备A上,在本申请实施例中,可以将该列1分布在存储节点1的存储设备A和存储设备E上,或者可以列1分布在存储设备E和存储设备I上,或者可以将该列1分布在存储节点1的3个存储设备上。当然,当存储节点1中包括更多个存储设备时,该列1也可以分布在存储节点1所包括的多个存储设备中的其中4个或者更多个存储设备上,在此不一一举例。需要说明的是,每个pt包括的任意一个分条的分条单元是与该pt所包括的多个列一一对应的,则将每个列分布在至少两个存储设备上,也可以理解为将每个分条的分条单元分布在至少两个存储设备上,为方便说明,下文中,以每个列分布在至少两个存储设备上为例进行说明。本发明实施例,分区视图中分区与存储节点中的存储设备的对应关系保持不变,即从分区视图中依然只有一个存储设备,但该存储设备为存储节点对外呈现给分区的存储设备,存储节点根据存储节点上的各存储设备的剩下存储容量选择具体的存储设备作为分区视图中的存储设备。
具体来讲,每个存储节点中可以存储与各个列对应的存储设备之间的对应关系。以存储系统创建如图2所示的分区作为示例,针对第一个pt,存储节点1上分配该第一个pt的列1和列5,存储节点1将列1分布在存储设备A和存储设备E上,并将列5分布在存储设备E和存储设备I上。然后,存储节点1存储该节点上分配的所有的列与存储设备之间的对应关系,该对应关系可以如表1所示,当然也可以采用其他方式进行存储,在此不做限制。
表1
列的标识 | 存储设备1的标识 | 存储设备2的标识 |
第一个pt的列1 | A | E |
第一个pt的列5 | E | I |
…… | …… | …… |
需要说明的是,本申请实施例中,将每个列分布在至少两个存储设备是针对存储节点进行的改进,也就是说,存储系统中需要管理的pt的总数量不发生变化或者客户端管理的每个pt的分区视图没有发生变化,只是存储节点在将每个列分布(或映射)到存储设备的过程发生了变化,可以理解为,该变化对客户端是透明的。而从存储节点的角度来讲,由于每个列分布在多个存储设备上。因此,采用这种方式可以改善现有技术中各个存储设备中存储的数据的差异。
但是,上述改进可能还不能满足存储设备的负载均衡的需求,在极端情况下,可能需要将每个分区的列分布在每个存储设备上才能实现负载均衡。而将每个列分布在每个存储设备上会造成存储系统的可靠性较低,因此,在本申请实施例中,在与每个列对应的至少两个存储设备小于该存储设备所包括的所有的存储设备的总数量的前提下,当存储节点接收客户端发送的写请求后,还进行如下改进:
S402、存储节点中的每个存储节点根据该存储节点中多个存储设备的剩余存储空间,从该多个存储设备中确定目标存储设备。
在本申请实施例中,该多个存储设备可以理解为与一个列对应的存储节点中的多个存储设备,例如,若存储节点1将第一个pt的列1分布在存储设备A和存储设备E上,则该多个存储设备即为存储设备A和存储设备E;若存储节点1将第一个pt的列1分布在存储节点1包括的3个存储设备上,则该多个存储设备即为存储节点1中的3个存储设备。为方便说明,在下文中,以每个列分布在对应的存储节点上的两个存储设备为例。
在存储节点将客户端发送的写请求中携带的数据写入某个分条对应的分条单元时,首先确定与每个分条单元对应的列,与该列对应的两个存储设备即用于存储写入该分条单元的数据的两个存储设备。假设一个存储设备上存储的数据的总量与写入该列的数据的总量的比值为x,则另一个存储设备上存储的数据的总量与写入该列的数据的总量的比值为y,很显然,x+y=1。假设存储系统中总共有m个列和n个存储设备,存入每个列的数据分为两部分存储在对应的两个存储设备上,即xi和yi要分布在n个存储设备上,i的取值为1,2,…m,xi和yi表示与一个列对应的两部分数据。从而可以如下多个方程式:
xi+yi=1,i为1,2,…m (1)
x(j,k)+y(s,k)=m/n,k为1,2,…n (2)
其中,x(j,k)表示分布在第k个存储设备上xi的总和,y(s,k)表示分布在第k个存储设备上yi的总和。
因此,可以通过上述(1)和(2)中的m+n个方程求解2m个未知数(即包括xi,yi,i为1,2,…m)。当m大于n时,通过上述m+n个方程一定能够求的xi和yi的解。因此,当把每个列分布在两个存储设备上,并且每个列的数据在这两个存储设备上的比例是动态可调的时候,可以保证整个存储系统上的每个存储设备的容量是均衡的。
基于此,在本申请实施例中,当存储节点需要将写入某个分区的数据写入其所对应的两个存储设备时,可以根据该两个存储设备中每个存储设备的剩余存储空间来动态的选择写入哪个存储设备,从而可以实现存储设备的容量均衡的效果。
下面,对存储节点根据多个存储设备的剩余存储空间确定写入数据的目标存储设备的过程进行说明。
在本申请实施例中,存储节点确定目标存储设备的方式可以包括但不限于如下两种方式:
第一种方式,存储节点从所述多个存储设备中选择剩余存储空间不小于阈值的存储设备作为目标存储设备。
以存储节点为如图1所示的存储节点1为例。存储节点1接收到客户端发送的用于将待写入数据的第1个分片写入到第一个pt的第一个分条的第一个分条单元对应的存储空间后,确定第一个pt的第一个分条的第一个分条单元对应列1,则存储节点1查询如表1所示的列与存储设备之间的对应关系,确定列1对应的存储设备为存储设备A和存储设备E。然后,存储节点1获取存储设备A和存储设备E中每个存储设备的剩余存储空间,例如,存储设备A的剩余存储空间为36%,存储设备E的剩余存储空间为66%。存储节点1将每个存储设备的剩余存储空间与预先存储的阈值进行比较,确定剩余存储空间不小于该阈值的存储设备为用于存储该第1个分片的目标存储设备。在本申请实施例中,不对该阈值进行限制,例如,该预先存储的阈值可以为50%,则存储节点1确定66%>50%,从而确定用于存储分片1的目标存储设备为存储设备E。针对第一份数据的第5个分片、第二份数据的第1个分片,以及第二份数据的第5个分片的处理方式与上述方式相同,在此不再赘述。第二种方式,存储节点从多个存储设备中选择剩余存储空间最大的存储设备作为目标存储设备。
以存储节点为如图1所示的存储节点1为例。存储节点1在接收到客户端发送的写请求后,采用与第一种方式中相同的方法,确定用于存储每个分片的存储设备,以及每个存储设备的剩余存储空间。然后,存储节点1确定出剩余存储空间最大的存储设备,例如,存储设备A的剩余存储空间为36%,存储设备E的剩余存储空间为66%,存储节点1确定66%>36%,则存储设备E为剩余存储空间最大的存储设备,从而确定将存储设备E作为目标存储设备。
在这种方式中,存储节点可以不用预先存储阈值,可以节省存储节点中的存储空间。
当其他存储节点接收到客户端发送的写请求后,也采用如存储节点1的方式,确定用于存储分片的目标存储设备,在此不再赘述。
S403、每个存储节点将待写入数据写入目标存储设备。
当每个存储节点确定用于存储待写入数据的分片的目标存储设备后,则将待写入数据的分片写入到目标存储设备中。例如,存储节点1确定用于存储待写入数据的第一份数据的分片1的目标存储设备为存储设备E,以及确定用于存储待写入数据的第一份数据的分片5的目标存储设备为存储设备F,则存储节点1将待写入数据的第一份数据的分片1存储到存储设备E中,将待写入数据的第一份数据的分片5存储到存储设备F中。针对第二份数据的多个分片的处理方式相同,在此不再赘述。
S404、每个存储节点建立待写入数据的地址与目标存储设备的存储地址之间的对应关系。
在本申请实施例中,该存储地址为目标存储设备存储该待写入数据的地址。例如,存储节点1获取待写入数据的第一份数据的分片1在存储设备E中的存储地址为存储设备E中的第5个扇区,而客户端根据分区视图确定的待写入数据的第一份数据的分片1的地址为存储设备A,则存储节点1建立存储设备A与存储设备E的第5个扇区的对应关系。这样,当存储节点1接收到携带有待写入数据的第一份数据的分片1的地址(即存储设备A)的读请求后,则根据该对应关系,从存储设备E的第5个扇区获取该待写入数据的第一份数据的分片1。对其他分片的处理方式相同,在此不再赘述。
在上述技术方案中,由于存储节点是根据每个存储设备的剩余存储空间存储待写入数据的,因此,当每个待写入数据都采用这种方式进行处理后,则在各个存储设备存储的数据的数据量可以达到一个均衡状态。
进一步,由于可以实现存储系统的负载均衡,进而可以避免由于各个存储设备中存储的数据不均衡而导致无法使用某些存储设备的剩余存储空间的问题,可以提高存储空间的利用率。
需要说明的是,图4所示的实施例,在分布式存储系统场景下是由分布式存储系统的存储节点执行的,而在存储阵列场景下该方法是由存储阵列的阵列控制器执行的。当然,在其他场景下,则是由与存储节点或阵列控制器功能相同的设备或装置执行的,在此不一一说明。
上述本申请提供的实施例中,为了实现上述本申请实施例提供的方法中的各功能,存储系统可以包括硬件结构和/或软件模块,以硬件结构、软件模块、或硬件结构加软件模块的形式来实现上述各功能。上述各功能中的某个功能以硬件结构、软件模块、还是硬件结构加软件模块的方式来执行,取决于技术方案的特定应用和设计约束条件。
图5示出了一种数据存储装置500的结构示意图。其中,数据存储理装置500可以用于实现分布式存储系统的存储节点的功能,也可以用于实现存储阵列中的阵列控制器的功能。数据存储装置500可以是硬件结构、软件模块、或硬件结构加软件模块。数据存储装置500可以由芯片系统实现。本申请实施例中,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
数据存储装置500可以包括处理模块501和通信模块502。
处理模块501可以用于执行图4所示的实施例中的步骤S402~步骤S404,和/或用于支持本文所描述的技术的其它过程。
通信模块502可以用于执行图4所示的实施例中的步骤S401,和/或用于支持本文所描述的技术的其它过程。通信模块502用于数据存储装置500和其它模块进行通信,其可以是电路、器件、接口、总线、软件模块、收发器或者其它任意可以实现通信的装置。
其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
图5所示的实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
如图6所示为本申请实施例提供的数据存储装置600,其中,数据存储装置600可以用于实现分布式存储系统的存储节点的功能,也可以用于实现存储阵列中的阵列控制器的功能。其中,该数据存储装置600可以为芯片系统。本申请实施例中,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
数据存储装置600包括至少一个处理器620,用于实现或用于支持数据存储装置600实现本申请实施例提供的方法中存储节点的功能。示例性地,处理器620可以确定用于存储待写入数据的目标存储设备,具体参见方法示例中的详细描述,此处不做赘述。
数据存储装置600还可以包括至少一个存储器630,用于存储程序指令和/或数据。存储器630和处理器620耦合。本申请实施例中的耦合是装置、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。处理器620可能和存储器630协同操作。处理器620可能执行存储器630中存储的程序指令。所述至少一个存储器中的至少一个可以包括于处理器中。
数据存储装置600还可以包括通信接口610,用于通过传输介质和其它设备进行通信,从而用于数据存储装置600可以和其它设备进行通信。示例性地,该其它设备可以是客户端或者存储设备。处理器620可以利用通信接口610收发数据。
本申请实施例中不限定上述通信接口610、处理器620以及存储器630之间的具体连接介质。本申请实施例在图6中以存储器630、处理器620以及通信接口610之间通过总线640连接,总线在图6中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请实施例中,处理器620可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
在本申请实施例中,存储器630可以是非易失性存储器,比如硬盘(hard diskdrive,HDD)或固态硬盘(solid-state drive,SSD)等,还可以是易失性存储器(volatilememory),例如随机存取存储器(random-access memory,RAM)。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
本申请实施例中还提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行图4所示的实施例中存储节点执行的方法。
本申请实施例中还提供一种计算机程序产品,包括指令,当其在计算机上运行时,使得计算机执行图4所示的实施例中存储节点执行的方法。
本申请实施例提供了一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现前述方法中存储节点的功能。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
本申请实施例提供了一种存储系统,该存储系统包括存储设备以及图4所示的实施例中存储节点。
本申请实施例提供的方法中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,简称DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机可以存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digital video disc,简称DVD))、或者半导体介质(例如,SSD)等。
Claims (14)
1.一种分布式存储系统中的数据存储方法,其特征在于,所述分布式存储系统包含客户端和存储节点,包括:
所述存储节点接收所述客户端根据分区视图发送的写请求;所述写请求用于将待写入数据写入分区的目标存储设备;所述分区视图包含所述分区与所述目标存储设备所在的所述存储节点的对应关系,所述目标存储设备属于所述存储节点;
所述存储节点根据所述存储节点中多个存储设备的剩余存储空间,从所述多个存储设备中确定所述目标存储设备;
所述存储节点将所述待写入数据写入所述目标存储设备。
2.根据权利要求1所述的方法,其特征在于,所述存储节点根据所述存储节点中多个存储设备的剩余存储空间,从所述多个存储设备中确定所述目标存储设备,具体包括:
所述存储节点从所述多个存储设备中选择剩余存储空间不小于阈值的存储设备作为所述目标存储设备。
3.根据权利要求1所述的方法,其特征在于,所述存储节点根据所述存储节点中多个存储设备的剩余存储空间,从所述多个存储设备中确定所述目标存储设备,具体包括:
所述存储节点从所述多个存储设备中选择剩余存储空间最大的存储设备作为所述目标存储设备。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括:
所述存储节点建立所述待写入数据的地址与所述目标存储设备的存储地址之间的对应关系;其中,所述存储地址为所述目标存储设备存储所述待写入数据的地址。
5.一种数据存储装置,其特征在于,该数据存储装置应用在分布式存储系统中,该装置包括通信接口和处理器,其中:
所述通信接口,用于接收所述分布式存储系统中的客户端根据分区视图发送的写请求;所述写请求用于将待写入数据写入分区的目标存储设备;所述分区视图包含所述分区与所述目标存储设备所在的所述存储节点的对应关系,所述目标存储设备属于所述存储节点;
所述处理器,用于根据所述存储节点中多个存储设备的剩余存储空间,从所述多个存储设备中确定所述目标存储设备;以及,用于将所述待写入数据写入所述目标存储设备。
6.根据权利要求5所述的装置,其特征在于,所述处理器具体用于:
从所述多个存储设备中选择剩余存储空间不小于阈值的存储设备作为所述目标存储设备。
7.根据权利要求5所述的装置,其特征在于,所述处理器具体用于:
从所述多个存储设备中选择剩余存储空间最大的存储设备作为所述目标存储设备。
8.根据权利要求5-7中任一项所述的装置,其特征在于,所述处理器还用于:
建立所述待写入数据的地址与所述目标存储设备的存储地址之间的对应关系;其中,所述存储地址为所述目标存储设备存储所述待写入数据的地址。
9.一种数据存储装置,其特征在于,该数据存储装置应用于分布式存储系统中,该装置包括通信模块和处理模块,其中:
所述通信模块,用于接收所述分布式存储系统中的客户端根据分区视图发送的写请求;所述写请求用于将待写入数据写入分区的目标存储设备;所述分区视图包含所述分区与所述目标存储设备所在的所述存储节点的对应关系,所述目标存储设备属于所述存储节点;
所述处理模块,用于根据所述存储节点中多个存储设备的剩余存储空间,从所述多个存储设备中确定所述目标存储设备;以及,用于将所述待写入数据写入所述目标存储设备。
10.根据权利要求9所述的装置,其特征在于,所述处理模块具体用于:
从所述多个存储设备中选择剩余存储空间不小于阈值的存储设备作为所述目标存储设备。
11.根据权利要求9所述的装置,其特征在于,所述处理模块具体用于:
从所述多个存储设备中选择剩余存储空间最大的存储设备作为所述目标存储设备。
12.根据权利要求9-11中任一项所述的装置,其特征在于,所述处理模块还用于:
建立所述待写入数据的地址与所述目标存储设备的存储地址之间的对应关系;其中,所述存储地址为所述目标存储设备存储所述待写入数据的地址。
13.一种计算机存储介质,其特征在于,所述计算机存储介质存储有指令,当所述指令在计算机上运行时,使得所述计算机执行如权利要求1-4任一项所述的方法。
14.一种计算机程序产品,其特征在于,所述计算机程序产品存储有指令,当所述指令在计算机上运行时,使得所述计算机执行如权利要求1-4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910880130.1A CN112527492A (zh) | 2019-09-18 | 2019-09-18 | 一种分布式存储系统中的数据存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910880130.1A CN112527492A (zh) | 2019-09-18 | 2019-09-18 | 一种分布式存储系统中的数据存储方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112527492A true CN112527492A (zh) | 2021-03-19 |
Family
ID=74974991
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910880130.1A Pending CN112527492A (zh) | 2019-09-18 | 2019-09-18 | 一种分布式存储系统中的数据存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112527492A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113194117A (zh) * | 2021-03-22 | 2021-07-30 | 海南视联通信技术有限公司 | 一种基于视联网的数据处理的方法和装置 |
CN113434470A (zh) * | 2021-06-24 | 2021-09-24 | 华云数据控股集团有限公司 | 数据分布方法、装置及电子设备 |
CN113495889A (zh) * | 2021-07-07 | 2021-10-12 | 浙江大华技术股份有限公司 | 一种分布式对象存储方法、装置、电子设备及存储介质 |
CN113641467A (zh) * | 2021-10-19 | 2021-11-12 | 杭州优云科技有限公司 | 一种虚拟机的分布式块存储实现方法 |
CN116301670A (zh) * | 2023-05-25 | 2023-06-23 | 极限数据(北京)科技有限公司 | 一种数据分区方法及数据处理方法 |
CN116939228A (zh) * | 2023-07-27 | 2023-10-24 | 北京和德宇航技术有限公司 | 遥感影像的分布式处理方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103856503A (zh) * | 2012-11-29 | 2014-06-11 | 北京华胜天成科技股份有限公司 | Nas集群系统的文件数据的处理方法及nas集群系统 |
CN108023967A (zh) * | 2017-12-20 | 2018-05-11 | 联想(北京)有限公司 | 一种数据平衡方法、装置及分布式存储系统中的管理设备 |
CN108780386A (zh) * | 2017-12-20 | 2018-11-09 | 华为技术有限公司 | 一种数据存储的方法、装置和系统 |
CN109542352A (zh) * | 2018-11-22 | 2019-03-29 | 北京百度网讯科技有限公司 | 用于存储数据的方法和装置 |
-
2019
- 2019-09-18 CN CN201910880130.1A patent/CN112527492A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103856503A (zh) * | 2012-11-29 | 2014-06-11 | 北京华胜天成科技股份有限公司 | Nas集群系统的文件数据的处理方法及nas集群系统 |
CN108023967A (zh) * | 2017-12-20 | 2018-05-11 | 联想(北京)有限公司 | 一种数据平衡方法、装置及分布式存储系统中的管理设备 |
CN108780386A (zh) * | 2017-12-20 | 2018-11-09 | 华为技术有限公司 | 一种数据存储的方法、装置和系统 |
CN109542352A (zh) * | 2018-11-22 | 2019-03-29 | 北京百度网讯科技有限公司 | 用于存储数据的方法和装置 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113194117A (zh) * | 2021-03-22 | 2021-07-30 | 海南视联通信技术有限公司 | 一种基于视联网的数据处理的方法和装置 |
CN113434470A (zh) * | 2021-06-24 | 2021-09-24 | 华云数据控股集团有限公司 | 数据分布方法、装置及电子设备 |
CN113434470B (zh) * | 2021-06-24 | 2024-03-19 | 华云数据控股集团有限公司 | 数据分布方法、装置及电子设备 |
CN113495889A (zh) * | 2021-07-07 | 2021-10-12 | 浙江大华技术股份有限公司 | 一种分布式对象存储方法、装置、电子设备及存储介质 |
CN113495889B (zh) * | 2021-07-07 | 2024-03-15 | 浙江大华技术股份有限公司 | 一种分布式对象存储方法、装置、电子设备及存储介质 |
CN113641467A (zh) * | 2021-10-19 | 2021-11-12 | 杭州优云科技有限公司 | 一种虚拟机的分布式块存储实现方法 |
CN113641467B (zh) * | 2021-10-19 | 2022-02-11 | 杭州优云科技有限公司 | 一种虚拟机的分布式块存储实现方法 |
CN116301670A (zh) * | 2023-05-25 | 2023-06-23 | 极限数据(北京)科技有限公司 | 一种数据分区方法及数据处理方法 |
CN116301670B (zh) * | 2023-05-25 | 2023-09-05 | 极限数据(北京)科技有限公司 | 一种数据分区方法及数据处理方法 |
CN116939228A (zh) * | 2023-07-27 | 2023-10-24 | 北京和德宇航技术有限公司 | 遥感影像的分布式处理方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112527492A (zh) | 一种分布式存储系统中的数据存储方法及装置 | |
US10782882B1 (en) | Data fingerprint distribution on a data storage system | |
US10664408B1 (en) | Systems and methods for intelligently distributing data in a network scalable cluster using a cluster volume table (CVT) identifying owner storage nodes for logical blocks | |
CN110413201B (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
US9665485B2 (en) | Logical and physical block addressing for efficiently storing data to improve access speed in a data deduplication system | |
US20130198449A1 (en) | Multi-tier storage system configuration adviser | |
US20080028107A1 (en) | System and method for automatic reassignment of shared storage on blade replacement | |
US10860260B2 (en) | Method, apparatus and computer program product for managing storage system | |
US11402998B2 (en) | Re-placing data within a mapped-RAID environment comprising slices, storage stripes, RAID extents, device extents and storage devices | |
CN110688062B (zh) | 一种缓存空间的管理方法及装置 | |
US11320988B2 (en) | Method, apparatus and computer program product for managing disk array | |
US11385823B2 (en) | Method, electronic device and computer program product for rebuilding disk array | |
US11520512B2 (en) | Method for storage management, electronic device and computer program product | |
US20160179379A1 (en) | System and method for data management across volatile and non-volatile storage technologies | |
WO2021088615A1 (zh) | 一种校验数据计算方法及装置 | |
US10942808B2 (en) | Adaptive data and parity placement using compression ratios of storage devices | |
US9069471B2 (en) | Passing hint of page allocation of thin provisioning with multiple virtual volumes fit to parallel data access | |
JP2003099384A (ja) | 負荷分散システム、負荷分散システムのホストコンピュータ、及び負荷分散プログラム | |
CN111007988B (zh) | 一种raid内部磨损均衡方法、系统、终端及存储介质 | |
US11119703B2 (en) | Utilizing a set of virtual storage units distributed across physical storage units | |
US11099740B2 (en) | Method, apparatus and computer program product for managing storage device | |
US8468303B2 (en) | Method and apparatus to allocate area to virtual volume based on object access type | |
CN115543187A (zh) | 一种数据处理方法及设备 | |
US11740816B1 (en) | Initial cache segmentation recommendation engine using customer-specific historical workload analysis | |
US20120254583A1 (en) | Storage control system providing virtual logical volumes complying with thin provisioning |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220216 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Applicant after: Huawei Cloud Computing Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd. |