CN115729470A - 一种数据写入方法及相关设备 - Google Patents
一种数据写入方法及相关设备 Download PDFInfo
- Publication number
- CN115729470A CN115729470A CN202211441219.6A CN202211441219A CN115729470A CN 115729470 A CN115729470 A CN 115729470A CN 202211441219 A CN202211441219 A CN 202211441219A CN 115729470 A CN115729470 A CN 115729470A
- Authority
- CN
- China
- Prior art keywords
- luns
- target
- disk
- data
- candidate
- 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
- 238000000034 method Methods 0.000 title claims abstract description 72
- 239000012634 fragment Substances 0.000 claims abstract description 107
- 238000013500 data storage Methods 0.000 claims abstract description 31
- 230000008569 process Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 8
- 238000013467 fragmentation Methods 0.000 description 8
- 238000006062 fragmentation reaction Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 125000004432 carbon atom Chemical group C* 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请实施例公开一种数据写入方法及相关设备,该方法包括:在计算设备需要向目标存储池中写入待存储数据的情况下,计算设备根据目标存储池的冗余配比将待存储数据进行分片,得到第一数量的数据分片和第二数量的校验分片;若目标存储池中的多个LUN对应的磁盘类型为多磁臂磁盘,则基于多磁臂磁盘选取策略,从目标存储池的多个LUN中选取到第三数量的目标LUN;其中,第三数量的目标LUN分别对应第三数量的不同的磁盘;将第一数量的数据分片和第二数量的校验分片存储到该第三数量的目标LUN中。本申请实施例,计算设备选取到的第三数量的目标LUN分别对应第三数量的不同的磁盘,可以保证数据存储的可靠性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据写入方法及相关设备。
背景技术
在分布式存储***中,通常为了提高存储***的可靠性,一般可以采用纠删码(erasure coding/erasure code,EC)算法/技术保障磁盘数据及节点数据可靠性。
EC是一种数据分片冗余保护机制,通过计算校验分片的方式实现数据冗余保护。在写入数据时,通常将数据切分为N个数据分片,然后基于N个数据分片通过EC编码算法计算得到M个校验分片,之后,可以将N个数据分片和M个校验分片进行分布式存储。之后,在分片丢失的情况下,如果丢失的分片的数量小于或等于M,则可以根据未丢失的分片还原出原始数据。
在实际的场景中,用户通常可以根据存储节点的数量配置不同的EC冗余配比。当存储节点的个数大于或等于(N+M)时,一般可以采用N+M冗余配比。在采用N+M冗余配比时,需要满足故障M个磁盘或M个节点而数据不丢失的要求。当存储节点的个数大于或等于((N+M)/M)且小于(N+M)时,一般可以采用N+M:K冗余配比。在采用N+M:K冗余配比时,需要满足故障M个磁盘或K个节点而数据不丢失的要求。
目前,在存储N+M个分片时,一般是基于节点的LUN进行存储。而对于单磁臂磁盘和多磁臂磁盘来说,其对上层操作***呈现的LUN的数量不同。一块单磁臂磁盘故障会影响一个LUN,一块多磁臂磁盘故障会影响多个LUN,因此,在不同场景下(如多磁臂磁盘场景下),如何满足故障M个磁盘的可靠性要求是技术人员关注的问题。
发明内容
本申请实施例公开了一种数据写入方法及相关设备,可以保证数据存储的可靠性。
第一方面公开一种数据写入方法,该数据写入方法可以应用于计算设备,也可以应用于计算设备中的模块(例如,芯片),还可以应用于能实现全部或部分计算设备功能的逻辑模块或软件,下面以应用于计算设备为例进行描述。该数据写入方法可以包括:在计算设备需要向目标存储池中写入待存储数据的情况下,该计算设备根据该目标存储池的冗余配比将该待存储数据进行分片,得到第一数量的数据分片和第二数量的校验分片;若该目标存储池中的多个LUN对应的磁盘类型为多磁臂磁盘,则基于多磁臂磁盘选取策略,从该目标存储池的多个LUN中选取到第三数量的目标LUN;其中,该第三数量的目标LUN分别对应第三数量的不同的磁盘;将该第一数量的数据分片和该第二数量的校验分片存储到该第三数量的目标LUN中。
本申请实施例中,在目标存储池中的多个LUN对应的磁盘类型为多磁臂磁盘的情况下,计算设备在存储第一数量的数据分片和第二数量的校验分片时,基于多磁臂磁盘选取策略选择的第三数量的目标LUN分别对应第三数量的不同的磁盘。这样,由于每个目标LUN均对应不同的磁盘,从而可以满足故障第二数量个磁盘的要求,进而可以保证数据存储的可靠性。
作为一种可能的实施方式,该若该目标存储池中的多个LUN对应的磁盘类型为多磁臂磁盘,则基于多磁臂磁盘选取策略,从该目标存储池的多个LUN中选取到第三数量的目标LUN,包括:若该目标存储池中的多个LUN对应的磁盘类型为多磁臂磁盘,则基于多磁臂磁盘选取策略,从该目标存储池的多个LUN中选取到第四数量的候选LUN;基于该目标存储池的冗余配比从该第四数量的候选LUN中选取到第三数量的目标LUN。
本申请实施例中,计算设备可以先基于多磁臂磁盘选取策略,从目标存储池的多个LUN中选取到第四数量的候选LUN,然后再基于目标存储池的冗余配比从第四数量的候选LUN中选取到第三数量的目标LUN。这样,可以先通过多磁臂磁盘选取策略筛选出符合条件的磁盘,然后再基于冗余配比进一步选择,从而可以满足冗余配比的要求,保证数据存储的可靠性。
作为一种可能的实施方式,该方法还可以包括:若该目标存储池中的多个LUN对应的磁盘类型为单磁臂磁盘,则基于单磁臂磁盘选取策略,从该目标存储池的多个LUN中选取到第四数量的候选LUN;若该目标存储池中的多个LUN对应的磁盘类型包括单磁臂磁盘和多磁臂磁盘,则基于单磁臂磁盘选取策略和多磁臂磁盘选取策略,从该目标存储池的多个LUN中选取到第四数量的候选LUN;基于该目标存储池的冗余配比从该第四数量的候选LUN中选取到第三数量的目标LUN。
本申请实施例中,针对单磁臂场景、单磁臂和多磁臂混合的场景,可以分别基于单磁臂磁盘选取策略、单磁臂磁盘选取策略和多磁臂磁盘选取策略,从目标存储池的多个LUN中选取到第四数量的候选LUN,然后再基于目标存储池的冗余配比从第四数量的候选LUN中选取到第三数量的目标LUN。这样,针对不同的场景,可以采用不同的选取策略,从而可以满足各种场景下的冗余配比的要求,保证数据存储的可靠性。
作为一种可能的实施方式,该多磁臂磁盘选取策略包括:该第四数量的候选LUN分别对应第四数量的不同的磁盘。
本申请实施例中,针对多磁臂磁盘,在选择候选LUN时,最多选择同一多磁臂磁盘的一个LUN作为候选LUN。这样,可以满足故障第二数量个磁盘的要求。
作为一种可能的实施方式,该多磁臂磁盘选取策略还可以包括以下一项或多项:该第四数量的候选LUN的当前容量使用百分比均小于第一阈值、该第四数量的候选LUN所对应节点的当前中央处理器CPU利用率均小于第二阈值、该第四数量的候选LUN所对应节点的当前内存负载均小于第三阈值、该第四数量的候选LUN所对应磁盘的当前带宽均小于第四阈值、该第四数量的候选LUN所对应磁盘的当前每秒输入输出量IOPS均小于第五阈值。
本申请实施例中,计算设备在选取候选LUN时,还可以考虑容量均衡和性能均衡(即节点当前的CPU利用率、内存负载、磁盘带宽等),这样,可以充分利用每个节点的处理器资源、内存资源、磁盘资源等资源,从而可以提高数据的写入效率,并且,还可以实现负载均衡。
作为一种可能的实施方式,该单磁臂磁盘选取策略包括以下一项或多项:该第四数量的候选LUN的当前容量使用百分比均小于第一阈值、该第四数量的候选LUN所对应节点的当前中央处理器CPU利用率均小于第二阈值、该第四数量的候选LUN所对应节点的当前内存负载均小于第三阈值、该第四数量的候选LUN所对应磁盘的当前带宽均小于第四阈值、该第四数量的候选LUN所对应磁盘的当前每秒输入输出量IOPS均小于第五阈值。
作为一种可能的实施方式,该基于该目标存储池的冗余配比从该第四数量的候选LUN中选取到第三数量的目标LUN包括:在该目标存储池的冗余配比为第一数量+第二数量的情况下,根据第一数量+第二数量冗余配比从该第四数量的候选LUN中选取到第三数量的目标LUN,该第三数量的目标LUN分别对应第三数量的不同的节点;在该目标存储池的冗余配比为第一数量+第二数量:第六数量的情况下,根据第一数量+第二数量:第六数量冗余配比从该第四数量的候选LUN中选取到第三数量的目标LUN,该第三数量的目标LUN分别对应第五数量的不同的节点。
本申请实施例中,针对目标存储池采用不同冗余配比的场景,可以针对性的进行处理,从而可以满足冗余配比的要求,保证数据存储的可靠性。
作为一种可能的实施方式,该方法还可以包括:确定该目标存储池中属于同一多磁臂磁盘的多个LUN;通过该多磁臂磁盘的序列号标注该多个LUN。
本申请实施例中,计算设备可以通过多磁臂磁盘的序列号标注目标存储池中属于同一多磁臂磁盘的多个LUN,这样,在选择候选LUN时,可以基于每个LUN的标注选择候选LUN,可以保证最多选择同一多磁臂磁盘的一个LUN作为候选LUN,从而可以满足故障第二数量个磁盘的要求。
作为一种可能的实施方式,该将该第一数量的数据分片和该第二数量的校验分片存储到该第三数量的目标LUN中包括:向该第三数量的目标LUN对应的每个节点发送数据写入请求,每个该数据写入请求包括该第三数量的目标LUN中的一个或多个LUN的标识,以及该第一数量的数据分片和该第二数量的校验分片中需要写入该一个或多个LUN中的一个或多个分片。
本申请实施例中,计算节点可以向选取的目标LUN对应的节点发送数据写入请求,并在数据写入请求中携带对应目标LUN的标识以及需要存储到该目标LUN的数据,这样可以便于对应的节点写入数据到目标LUN中,实现数据的冗余保护。
第二方面公开一种计算设备,该计算设备包括处理器、存储器和通信接口,该通信接口用于接收来自该计算设备之外的其它电子设备的信息,以及向该计算设备之外的其它电子设备输出信息,该处理器调用该存储器中存储的计算机程序实现如上述第一方面以及第一方面中任一可能的实现方式中所提供的数据写入方法。
第三方面公开一种数据存储***,该数据存储***包括计算设备和分布式存储***,该计算设备与该分布式存储***连接,该分布式存储***包括多个存储节点,每个该存储节点中包括至少一个磁盘,该计算设备用于执行如上述第一方面以及第一方面中任一可能的实现方式中所提供的数据写入方法。
第四方面公开一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序或计算机指令,当该计算机程序或计算机指令运行时,实现如上述各方面公开的数据写入方法。
第五方面公开一种芯片,包括处理器,用于执行存储器中存储的程序,当程序被执行时,使得芯片执行上述各方面公开的数据写入方法。
作为一种可能的实施方式,存储器位于芯片之外。
第六方面公开一种计算机程序产品,该计算机程序产品包括计算机程序代码,当该计算机程序代码被运行时,使得上述各方面公开的数据写入方法被执行。
可以理解地,上述第二方面提供的计算设备、第四方面提供的计算机可读存储介质、第五方面提供的芯片和第六方面提供的计算机程序产品均可用于执行本申请第一方面以及第一方面中任一可能的实现方式中所提供的数据写入方法。因此,其所能达到的有益效果可参考对应方法中的有益效果,此处不再赘述。
附图说明
附图为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1是本申请实施例公开的一种数据存储的场景示意图;
图2是本申请实施例公开的另一种数据存储的场景示意图;
图3是本申请实施例公开的又一种数据存储的场景示意图;
图4是本申请实施例公开的又一种数据存储的场景示意图;
图5是本申请实施例公开的一种数据存储***架构示意图;
图6是本申请实施例公开的又一种数据存储的场景示意图;
图7是本申请实施例公开的一种数据写入方法的流程示意图;
图8是本申请实施例公开的一种标注多磁臂磁盘的场景示意图;
图9是本申请实施例公开的又一种数据存储的场景示意图;
图10是本申请实施例公开的又一种数据存储的场景示意图;
图11是本申请实施例公开的另一种数据写入方法的流程示意图;
图12是本申请实施例公开的一种电子设备的结构示意图。
具体实施方式
本申请实施例公开了一种数据写入方法及相关设备,可以保证数据存储的可靠性。下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
为了更好地理解本申请实施例,下面先对本申请实施例的相关技术进行描述。
随着高性能计算(high performance computing,HPC)、大数据(big data)、人工智能(artificial intelligence,AI)等技术的快速发展,海量数据正以前所未有的增长趋势冲击着各个行业,为了有效地管理、维护这些数据,以及对这些数据进行处理,用户对数据存储容量的需求越来越大,对数据处理效率的要求也越来越高。在此背景下,催生磁盘技术向大容量、高性能方向发展,其中,多磁臂(multi-actuator)磁盘可以兼顾磁盘容量和性能,数据的读写效率是传统的单磁臂磁盘的多倍。
单磁臂磁盘(即传统机械硬盘)内部具有一个磁臂、一个或多个盘片和一个或多个磁头。其中,一个盘片的上下两面都可以存储数据,相应地,其上下表面可以各有一个磁头进行读写,并且一个盘片可以划分为多个扇区,通过磁臂的摆动可以将磁头定位至盘片上的目标扇区(即需要写入或读取数据的扇区),然后通过磁头可以从目标扇区读取或写入数据。相较于单磁臂磁盘,多磁臂磁盘(即多磁臂物理盘)内部具有多个独立的磁臂、多个盘片和多个磁头。其中,多磁臂磁盘内部的盘片可以划分为多组,每一个磁臂可以负责一组盘片的数据读写。可见,由于多磁臂磁盘可以有多个磁臂并发的进行数据读写,而单磁臂磁盘仅有一个磁臂进行数据的读写,因此,多磁臂磁盘的读写效率远高于单磁臂磁盘,基于此,多磁臂磁盘也被广泛应用于分布式存储***。
可以理解的是,单磁臂磁盘,由于只有一个磁臂读写数据,因此,其对上层操作***一般呈现出一个LUN(logical unit number),即一个逻辑磁盘(Disk),相应地,单磁臂磁盘:LUN/Disk=1:1。而多磁臂磁盘的盘体中有多个(如2个)磁臂,并且这多个磁臂可以同时工作,因此,其一般对上层操作***(operating system,OS)呈现出多个LUN,即多个逻辑磁盘,相应地,多磁臂磁盘:LUN/Disk=1:Q(Q≥2)。应理解,多磁臂磁盘有多少个磁臂,其对上层操作***就可以呈现出多少个LUN。例如,针对于有2个磁臂的多磁臂磁盘,其可以对上层操作***呈现出2个LUN。再例如,针对于有3个磁臂的多磁臂磁盘,其可以对上层操作***呈现出3个LUN。
在分布式存储***中,通常基于通用服务器构建存储节点,为了提高分布式存储***的可靠性,一般可以采用纠删码(erasure coding/erasure code,EC)算法/技术保障磁盘数据及节点数据可靠性。其中,EC技术相较于副本技术等,其容量利用率较高。例如,EC采用N+2:1,容量利用率为2/n+2,当n取值为1时,2/n+2大约为66%,而采用2副本时(即每份数据都存储两份),容量利用率为1/2,即50%。
EC是一种数据分片冗余保护机制,通过计算校验分片的方式实现数据冗余保护,常用于传统单磁臂分布式存储***实现数据可靠性冗余保护。分布式存储***在写入数据时,通常将数据切分为N个数据分片,然后基于N个数据分片通过EC编码算法计算得到M个校验分片,之后,可以将N个数据分片和M个校验分片进行分布式存储。应理解,在分片(即数据分片或校验分片)丢失的情况下,可以通过N+M个分片中的任意N个分片,还原出原始数据(即原始数据分片和校验分片)。因此,如果丢失的分片的数量小于或等于M,则可以根据未丢失的分片还原出原始数据。N和M为大于或等于1的整数。
在实际的场景中,用户可以根据存储节点的数量配置不同的EC冗余配比。当存储节点的个数大于或等于(N+M)时,一般可以采用N+M冗余配比。在采用N+M冗余配比时,可以将N+M个分片(即N个数据分片和M个校验分片)分散存储到N个不同的存储节点的磁盘上,因此,N+M冗余配比可以允许M个节点故障或M个磁盘故障而数据不丢失。当存储节点的个数大于或等于((N+M)/M)且小于(N+M)时,一般可以采用N+M:1或N+M:2等冗余配比。在采用N+M:1或N+M:2等冗余配比时,可以将N+M个分片分散存储到所有存储节点上,每一个存储节点至少存储有一个分片。应理解,N+M:1冗余配比可以允许M个磁盘故障或1个节点故障而数据不丢失,N+M:2冗余配比可以允许M个磁盘故障或2个节点故障而数据不丢失。同理,N+M:K冗余配比可以允许M个磁盘故障或K个节点故障而数据不丢失。K为大于或等于1的整数。
下面以N为4,M为2,存储节点个数为6对单磁臂磁盘场景下存储节点的个数大于或等于(N+M)的场景进行说明。请参阅图1,图1是本申请实施例公开的一种数据存储的场景示意图。如图1所示,每一个存储节点可以包括4个单磁臂磁盘,每一个单磁臂磁盘可以对应一个LUN。在写入数据时,可以将数据切分为4个数据分片,然后可以基于这4个数据分片得到2个校验分片,这4个数据分片和2个校验分片一般可以称为数据分条或条带。由于分片的数量等于节点的数量,因此,可以采用N+M(4+2)冗余配比,即可以在每一个节点存储一个分片,此时,可以在每一个节点选择一个LUN存储分片。例如,可以将4个数据分片分散存储在节点2、节点3、节点4和节点6的一个LUN中,将2个校验分片分散存储在节点1和节点5的一个LUN中。这样,可以保障存储***同时故障2个节点(如节点1和节点3故障)或2个磁盘,数据不丢失。
下面以N为4,M为2,存储节点个数为3对单磁臂磁盘场景下存储节点的个数大于或等于((N+M)/M)且小于(N+M)的场景进行说明。请参阅图2,图2是本申请实施例公开的另一种数据存储的场景示意图。如图2所示,每一个存储节点可以包括4个单磁臂磁盘,每一个单磁臂磁盘可以对应一个LUN。在写入数据时,可以将数据切分为4个数据分片,然后可以基于这4个数据分片得到2个校验分片。由于分片的数量大于节点的数量且小于((N+M)/M),因此,可以采用N+M:1(4+2:1)冗余配比,此时,可以通过EC算法将4个数据分片和2个校验分片随机打散存放于所有节点,可以在每一个节点选择两个LUN存储分片。例如,可以将4个数据分片中的1个数据分片存储在节点1的一个LUN中,1个数据分片存储在节点3的一个LUN中,2个数据分片分散存储在节点2的两个LUN中,而2个校验分片可以分散存储在节点1和节点3的一个LUN中。这样,可以保障存储***故障1个节点或2个磁盘,数据不丢失。
上述数据存储场景中,节点中使用的均为单磁臂磁盘,下面对多磁臂磁盘场景下的数据存储进行介绍。
下面以N为4,M为2,存储节点个数为6对多磁臂磁盘场景下存储节点的个数大于或等于(N+M)的场景进行说明。请参阅图3,图3是本申请实施例公开的又一种数据存储的场景示意图。如图3所示,每一个存储节点可以包括2个双磁臂磁盘,每一个双磁臂磁盘可以对应2个LUN。在写入数据时,可以将数据切分为4个数据分片,然后可以基于这4个数据分片得到2个校验分片。由于分片的数量等于节点的数量,因此,可以采用N+M(4+2)冗余配比,即可以在每一个节点存储一个分片,此时,可以在每一个节点选择1个LUN存储分片。例如,可以将4个数据分片分散存储在节点2、节点3、节点4和节点5的一个LUN中,将2个校验分片分散存储在节点1和节点6的一个LUN中。这样,由于一个节点仅存储了一个分片,因此,可以保障存储***同时故障2个节点或2个磁盘,数据不丢失。
下面以N为4,M为2,存储节点个数为3对多磁臂磁盘场景下存储节点的个数大于或等于((N+M)/M)且小于(N+M)的场景进行说明。请参阅图4,图4是本申请实施例公开的又一种数据存储的场景示意图。如图4所示,每一个存储节点可以包括多个双磁臂磁盘,每一个双磁臂磁盘可以对应2个LUN。在写入数据时,可以将数据切分为4个数据分片,然后可以基于这4个数据分片得到2个校验分片。由于分片的数量大于节点的数量且小于((N+M)/M),因此,可以采用N+M:1(4+2:1)冗余配比,此时,可以通过EC算法将4个数据分片和2个校验分片随机打散存放于所有节点,可以在每一个节点选择两个LUN存储分片。例如,可以将4个数据分片中的1个数据分片存储在节点1的一个LUN中,1个数据分片存储在节点3的一个LUN中,2个数据分片分散存储在节点2的两个LUN中,而2个校验分片可以分散存储在节点1和节点3的一个LUN中。这样,可以保障存储***故障1个节点,数据不丢失。
但是,由于节点1中存储的校验分片和数据分片所在的LUN属于同一个双磁臂磁盘,节点2中存储的两个数据分片所在的LUN也属于同一个双磁臂磁盘,因此,这两个双磁臂磁盘中的任何一个磁盘故障,都会导致丢失2个分片,而在N+M:1冗余配比下,最多能够允许丢失的分片数量为2,在这种情况下,无法保障存储***同时故障2个磁盘,数据不丢失。例如,当上述节点1和节点2中存储分片的两个双磁臂磁盘故障时,会导致丢失4个分片,这时,无法根据剩余的两个分片还原出原始数据(即原始的6个分片)。应理解,上述图1-图4中各个节点(如图1中的节点1-节点6)的LUN可以属于同一存储池。
应理解,数据分片冗余保护算法主要针对传统单磁臂磁盘设计,因此,上述在存储N+M个分片时,一般是基于节点的LUN进行存储,因为N+M(如上述4+2)冗余配比和N+M:K(如上述4+2:1)冗余配比均需要满足故障M个(即M块)磁盘数据不丢失的要求,因此一个LUN上最多只能存储1个数据分条的1个分片,进而在存储数据时,需要选择(N+M)个不同的LUN存储数据分条的(N+M)个分片。
其中,在存储节点的个数大于或等于(N+M),以及采用N+M(如上述4+2)冗余配比的情况下,由于一个节点最多存储一个数据分条的一个分片,因此,节点内的单磁臂磁盘或多磁臂磁盘也最多存储一个数据分条的一个分片,这样,可以保障存储***同时故障M个磁盘或M个节点,数据不丢失。
在存储节点的个数大于或等于((N+M)/M)且小于(N+M),以及采用N+M:K(如上述4+2:1)冗余配比的情况下,部分节点或全部节点需要存储一个数据分条的多个分片(如两个分片),即在这些节点内,需要选择多个LUN存储不同的分片。这种情况下,对于单磁臂磁盘来说,由于单磁臂磁盘对上层操作***呈现出一个LUN,因此,当节点内的磁盘全为单磁臂磁盘时,从节点内选择的多个LUN属于不同的单磁臂磁盘,这样,可以保障存储***同时故障M个磁盘,数据不丢失。而对于多磁臂磁盘来说,由于多磁臂磁盘对上层操作***呈现出多个LUN,因此,当节点内的磁盘包括多磁臂磁盘时,从节点内选择的多个LUN可能属于同一多磁臂磁盘,这样,无法保障存储***同时故障M个磁盘,数据不丢失,即无法实现故障M个磁盘的可靠性要求。此外,这种情况下,同一数据分条的多个分片可能存储于同一多磁臂磁盘,这样会造成多磁臂磁盘局部热盘/负载不均,并且可靠性降低。
为了解决上述问题,本申请实施例中,在数据写入流程中,增加并优化多磁臂磁盘的判断流程,使得本申请的数据写入方法(即EC数据分片冗余保护算法)可支持传统单磁臂磁盘和多磁臂磁盘。针对多磁臂磁盘,在选择候选LUN时,最多选择同一多磁臂磁盘的一个LUN作为候选LUN。这样,在采用N+M:K(如上述4+2:1)冗余配比时,可以满足故障M个磁盘的可靠性要求。
为了更好地理解本申请实施例,下面先对本申请实施例使用的***架构进行描述。
请参阅图5,图5是本申请实施例公开的一种数据存储***架构示意图。如图5所示,该数据存储***架构可以包括分布式存储***501、网络/交换机502、计算设备503。其中,分布式存储***501可以包括多个存储节点。例如,如图5所示的节点1(5011)、节点2(5012)、节点3(5013)、……、节点H(5014),H为大于或等于2的整数。在一些实施例中,各节点可以是一台或多台服务器,例如刀片式服务器、高密度服务器、机架式服务器、机柜式服务器等服务器。
分布式存储***501的各个节点(即节点1-节点H)和计算设备503可以分别连接到网络/交换机502,通过网络/交换机502可以实现互相之间的通信(即数据交互)。分布式存储***501的各个节点之间也可以通过网络/交换机502进行通信。
可以理解的是,分布式存储***501可以看作上述多个节点(即节点1-节点H)构成的存储***,其可以用于初始化磁盘,获取磁盘类型等信息,并且可以配置数据EC冗余配比(即保护级别)等。在一些实施例中,分布式存储***501中的各个节点均可以包括分布式存储软件,该分布式存储软件可以获取各个节点的数据(如各个节点的磁盘信息),并且,该分布式存储软件可以维护整个存储***使其处于健康的状态。此外,通过各个节点的分布式存储软件可以配置一个或多个存储池,每一个存储池中可以包括一个或多个节点的一个或多个LUN。分布式存储***501中的各个节点(即节点1-节点H)主要用于存储数据(即数据分片和校验分片),各个节点可以包括一个或多个磁盘。
计算设备503可以包括客户端(即安装有存储客户端软件)5031,客户端5031可以负责读写数据。例如,在写入数据时,客户端可以将数据切分为N(即第一数量)个数据分片,然后可以基于这N个数据分片得到M(即第二数量)个校验分片。之后,客户端5031可以通过EC算法将N个数据分片和M个校验分片存放于分布式存储***501中的节点上。需要说明的是,在一些实施例中,可以将分布式存储***501的一个或多个存储池挂载给客户端5031(即为客户端5031配置一个或多个存储池)。之后,在客户端5031存储数据时,需要先从一个挂载的存储池里面选择存储数据目标LUN,然后可以将数据存储到选择的目标LUN中。
需要说明的是,图5所示的***架构只是示例性说明,并不对其构成限定。在本申请另一些实施例中,图5所示的***架构可以包括比图示更多或更少的设备或模块,不限于仅包括图5中所示的分布式存储***501、网络/交换机502、计算设备503。
下面对本申请数据存储的场景进行介绍,请参阅图6,图6是本申请实施例公开的又一种数据存储的场景示意图。如图6所示,当客户端5031需要写数据到分布式存储***501时,为了实现EC数据保护,客户端5031可以基于EC冗余配比可靠性要求,将数据切分为N个(如4个)数据分片,然后可以基于这N个数据分片得到M个(如2个)校验分片。
之后,客户端5031可以读取初始化的磁盘信息(包括磁盘序列号、磁盘类型等),判断所存储池里面的LUN对应的磁盘为单磁臂磁盘还是多磁臂磁盘,如果是单磁臂磁盘,可以根据LUN容量、性能均衡原则从存储池中选候选LUN,如果是多磁臂磁盘,可以基于磁盘信息标注属于同一多磁臂磁盘的LUN,之后,可以根据LUN容量、性能均衡原则从存储池中选取候选LUN,且选取的候选LUN中任意两个LUN不属于同一多磁臂磁盘,即针对一个多磁臂磁盘最多选取其一个LUN作为候选盘。客户端5031根据磁盘类型选取得到候选盘(即候选LUN)之后,可以根据EC冗余配比从候选盘中选取N+M(即第三数量)个目标LUN,然后可以通过网络/交换机502将N+M个分片分发到对应的节点,写入选取的目标LUN中。
可以理解的是,上述是通过客户端5031进行数据的分片以及校验分片的生成,并且,候选盘的选取以及数据的分发也是客户端5031执行的。但在本申请的另一些实施例中,上述客户端5031所执行的操作可以由分布式存储***501中的节点执行(如节点1 5011)。例如,客户端5031可以将数据直接写入(即发送给)分布式存储***501中的某一节点(如节点15011),之后,该节点可以将数据切分为N个数据分片,并可以基于这N个数据分片得到M个校验分片,然后该节点可以基于上述选盘策略选取候选盘,再之后,可以根据EC冗余配比从候选盘中选取N+M个目标LUN,最后该节点可以将N+M个分片分发到对应的节点,写入选取的目标LUN中。
在一些实施例中,计算设备503可以为平板电脑、笔记本电脑、智能汽车、台式电脑、服务器等,在此不作限定。
应理解,本申请实施例提供的数据写入方法可以应用于分布式存储***数据保护场景,包括但不限于HPC、大数据分析等场景。需要说明的是,图6所示的数据存储场景只是示例性说明,并不对其构成限定。
基于上述***架构,请参阅图7,图7是本申请实施例公开的一种数据写入方法的流程示意图。如图7所示,该数据写入方法可以包括但不限于如下步骤:
701.存储***根据获取到的磁盘信息,配置至少一个存储池,每个存储池配置有对应的冗余配比。
当存储***(即上述分布式存储***)的各个节点上电时,存储***可以初始化各个节点的磁盘,获取各个节点的磁盘信息。
具体地,当存储***的各个节点上电时,各个节点的磁盘会进行初始化操作,初始化过程中,磁盘会向上层操作***上报磁盘相关信息(如磁盘类型等),各个节点的操作***上可以生成磁盘对应的LUN,并且,由于各个节点属于同一分布式存储***,因此,各个节点均可以获取或者同步其它节点的相关LUN信息。此外,分布式存储***(即各个节点)还可以调用各个磁盘接口获取或读取分布式存储***所有磁盘的信息。磁盘的信息(即磁盘信息)可以包括磁盘序列号(serial number,SN)、磁盘类型(单磁臂磁盘/双磁臂磁盘/三磁臂磁盘等)、磁盘包括的LUN、磁盘的生产厂商等。
存储***在获取到各个节点的磁盘信息之后,可以自动为存储***创建或配置一个或多个存储池,也可以通过用户手动选择(即接收用户输入)为存储***创建或配置一个或多个存储池,还可以采用其它方式为存储***配置一个或多个存储池。在一种可能的实现方式中,存储***的任一节点(如节点1)可以接收由用户终端或其它设备发送的存储池配置请求,或者,存储***的任一节点可以接收由用户输入的存储池配置请求等,该存储池配置请求用于请求配置一个或多个存储池,该存储池配置请求可以包括一个或多个LUN的ID或者编号。例如,用户可以通过分布式存储软件或命令行在存储节点(如节点1)的显示界面上输入存储池配置请求。
应理解,一个存储池可以包括存储***中一个或多个节点的一个或多个LUN。并且,针对多磁臂磁盘,同一多磁臂磁盘的多个LUN可以配置在同一存储池中。此外,一个存储池里面的LUN对应的磁盘可以为同一种类型的物理磁盘,例如,可以均为单磁臂磁盘,或者可以均为双磁臂磁盘,再或者可以均为三磁臂磁盘。
在为存储***配置一个或多个存储池之后,为了实现EC冗余保护,可以为每一个存储池配置EC冗余配比(即保护级别)。应理解,不同存储池中包括的LUN的数量可以不同,各个存储池对应的节点数量(即存储池中的LUN对应的节点的数量)以及存储容量(即存储池中的LUN对应的总存储容量)也可以不同,因此,可以为不同的存储池配置不同的EC冗余配比。例如,假设有2个存储池,存储池1可以包括24个LUN,其24个LUN分别属于6个节点,每个节点4个LUN,即2个双磁臂磁盘。存储池2可以包括12个LUN,其12个LUN分别属于3个节点,每个节点4个LUN,即2个双磁臂磁盘。因此,针对存储池1,可以配置EC冗余配比为4+2,针对于存储池2,可以配置EC冗余配比为4+2:1。
需要说明的是,为了存储客户端或计算设备可以将数据写入存储***,可以将存储***的一个或多个存储池挂载给客户端,即分配一个或多个存储池给客户端使用。之后,客户端或计算设备可以基于分配的存储池存储数据。
还需要说明的是,在为客户端配置多个存储池的情况下,客户端存储数据时(即计算设备存储数据时)也是基于其中一个存储池进行存储的,因此,为了方便理解,下述以客户端的一个存储池(即目标存储池)为例进行描述。或者,在一些实施例中,客户端或计算设备在存储数据时,可以先基于选取策略选择一个存储池(如选择剩余容量最大的存储池),下述以客户端或计算设备选择的存储池(即目标存储池)为例进行描述。
702.在计算设备需要向目标存储池写入待存储数据的情况下,计算设备根据目标存储池的冗余配比将待存储数据分片。
在为计算设备的客户端配置了存储池之后,计算设备可以通过存储池存储数据,下面以目标存储池进行说明。具体地,在计算设备需要写入数据(如文件)时,计算设备可以先根据所配置的目标存储池的冗余配比(如N+M、N+M:K等)将数据分片,可以分成N(即第一数量)个数据分片,然后可以基于这N个数据分片生成M(即第二数量)个校验分片。N和M为大于或等于1的整数,目标存储池可以为挂载到计算设备的客户端的一个或多个存储池中的其中一个。
其中,计算设备写入的数据可以来自其它用户终端、服务器、电子设备等,也可以来自用户输入,在此不作限定。
可以理解的是,计算设备可以读取或获取存储***中各个节点的磁盘信息,以及存储***中所配置存储池的相关信息(如存储池中每个LUN的剩余容量、容量使用率等)。此外,计算设备还可以获取存储***中各个节点的内存信息(如内存使用率)、中央处理器(central processing unit,CPU)信息(如CPU利用率)、磁盘带宽(即磁盘吞吐量)、磁盘每秒的输入输出量(input/output per second,IOPS)/OPS等,在此不作限定。并且,由于上述这些数据可能随着时间变化,因此,计算设备可以周期性获取这些数据,或者可以在需要使用时获取,以便可以保证数据的准确性。
703.计算设备判断目标存储池中的LUN对应的磁盘类型是否为多磁臂磁盘,如果是多磁臂磁盘,执行步骤704,如果不是多磁臂磁盘,执行步骤706。
由于一个多磁臂磁盘可以对应多个LUN,而一个单磁臂磁盘可以对应一个LUN,因此,为了满足冗余配比要求,针对不同类型的存储池(如全为单磁臂磁盘的LUN组成的存储池或全为双磁臂磁盘的LUN组成的存储池),计算设备可以采用不同的选盘策略选取候选盘。具体地,计算设备从目标存储池中选取候选盘时,可以先判断目标存储池中的LUN对应的磁盘类型是多磁臂磁盘还是单磁臂磁盘,如果是多磁臂磁盘(如双磁臂磁盘),可以执行步骤704,如果不是多磁臂磁盘,可以执行步骤706。
应理解,由于这里默认存储池中的LUN对应的磁盘类型为同一类型(如均为单磁臂磁盘或均为多磁臂磁盘),因此,计算设备可以仅判断一个LUN对应的磁盘是否为多磁臂磁盘。
704.计算设备获取目标存储池中属于同一多磁臂磁盘的LUN。
在判断出目标存储池中的LUN对应的磁盘类型为多磁臂磁盘的情况下,计算设备可以标注目标存储池中属于同一多磁臂磁盘的LUN(即获取目标存储池中属于同一多磁臂磁盘的LUN)。在一些实施例中,计算设备可以通过每个LUN对应的多磁臂磁盘的SN标注属于同一多磁臂磁盘的LUN。或者,计算设备也可以通过每个LUN对应的多磁臂磁盘的WWN(worldwide name,全球唯一编号)、编号或名称等标注属于同一多磁臂磁盘的LUN,在此不作限定。
例如,如图8所示,假设存储池中包括n个双磁臂磁盘(即多磁臂磁盘1-多磁臂磁盘n),计算设备可以为每个双磁臂磁盘的LUN编号,多磁臂磁盘1的两个LUN可以分别编号为LUN-1a和LUN-1b,多磁臂磁盘2的两个LUN可以分别编号为LUN-2a和LUN-2b,同理,多磁臂磁盘n的两个LUN可以分别编号为LUN-na和LUN-nb。这样,通过两个LUN的编号就可以确定其是否属于同一双磁臂磁盘,如可以判断LUN-4a和LUN-4b属于同一双磁臂磁盘,而LUN-3a和LUN-4b不属于同一双磁臂磁盘。
应理解,在一些实施例中,步骤704可以预先执行,例如,可以在步骤702之前执行,本申请实施例在此不作限定。
705.计算设备根据多磁臂磁盘选取策略从目标存储池中选取第四数量的候选LUN。
具体地,基于目标存储池中所有的LUN,计算设备可以根据多磁臂磁盘选取策略从目标存储池中选取第四数量的候选盘(即候选LUN),第四数量可以为L,L为大于或等于N+M(即第一数量+第二数量,也即第三数量)的整数。其中,选取策略可以为选取的L个候选LUN中任意两个LUN不属于同一多磁臂磁盘,即针对同一多磁臂磁盘,最多可以选择其一个LUN作为候选LUN。例如,对于上述多磁臂磁盘1的两个LUN(即LUN-1a和LUN-1b),如果选取了LUN-1a作为候选LUN,那么LUN-1b就不能作为候选LUN,而如果选取了LUN-1b作为候选LUN,那么LUN-1a就不能作为候选LUN。这样,可以保证同一数据分条的多个分片不会存储在同一多磁臂磁盘的LUN中。应理解,目标存储池中包括的LUN的数量可以大于或等于L。
在一些实施例中,在上述选取候选LUN的基础上(即选取的候选LUN中任意两个LUN不属于同一多磁臂磁盘),多磁臂磁盘选取策略可以包括更多选择条件(即选择原则),例如,计算设备在选择候选LUN时,可以基于容量均衡的原则从目标存储池中选取候选LUN。在一种可能的实现方式中,计算设备在选择候选LUN时,可以考虑目标存储池中各个LUN的容量使用百分比(即利用率)或剩余容量,然后可以优先选择当前容量使用百分比相对较小(如小于第一阈值)或者剩余容量相对较多的LUN作为候选LUN,这样,可以保证目标存储池中的每个LUN负载均衡。应理解,第一阈值可以根据实际情况设定,例如,当目标存储池中各个LUN的容量使用百分比均较大时,第一阈值可以设置的较大(如70%),而当目标存储池中各个LUN的容量使用百分比均较小时,第一阈值可以设置的较小(如30%),再例如,第一阈值可以设置为目标存储池中各个LUN的容量使用百分比的中位数或平均值等。
再例如,在选取的候选LUN中任意两个LUN不属于同一多磁臂磁盘的基础上,计算设备在选择候选LUN时,可以基于性能均衡的原则从目标存储池中选取候选LUN。在一种可能的实现方式中,计算设备在选择候选LUN时,可以考虑目标存储池中各个LUN所在节点的CPU利用率、内存负载(即内存使用率),以及各个LUN所对应的磁盘带宽、IOPS等,然后可以优先选择当前CPU利用率相对较小(如小于第二阈值)、当前内存负载相对较低(如小于第三阈值),以及所对应的磁盘当前带宽相对较小(如小于第四阈值)、当前IOPS相对较小(如小于第五阈值)的LUN作为候选LUN,这样,可以充分利用每个节点的CPU资源、内存资源、磁盘资源等资源,从而可以提高数据的写入效率。
应理解,第二阈值、第三阈值、第四阈值和第五阈值均可以根据实际情况设定,例如,第二阈值可以根据目标存储池中各个LUN所对应节点的当前CPU利用率设置,当各个节点的当前CPU利用率均较大时,第二阈值可以设置的较大(如70%),当各个节点的当前CPU利用率均较小时,第二阈值可以设置的较小(如30%),同理,第三阈值、第四阈值和第五阈值也可以分别根据目标存储池中各个LUN所对应节点的当前内存负载、当前磁盘带宽和当前磁盘IOPS设置。再例如,第二阈值、第三阈值、第四阈值和第五阈值可以设置为目标存储池中各个LUN所对应节点的当前CPU利用率、当前内存负载、当前磁盘带宽和当前磁盘IOPS的中位数或平均值等。
应理解,在一些实施例中,在选取的候选LUN中任意两个LUN不属于同一多磁臂磁盘的基础上,计算设备可以基于容量均衡和性能均衡的原则从目标存储池中选取候选LUN。
还应理解,在一些实施例中,计算设备从目标存储池中选取候选LUN时,可以先选取节点,即从目标存储池中各个LUN对应的节点中选取候选节点,再从候选节点对应的LUN中选取候选LUN,这些候选LUN属于目标存储池。其中,计算设备在选择候选节点时,可以考虑各个节点在目标存储池中所对应的所有LUN的平均容量使用百分比或平均剩余容量,然后可以选择当前平均容量使用百分比相对较小或者平均剩余容量相对较多的节点作为候选节点。同理,计算设备在选择候选节点时,也可以考虑各个节点的CPU利用率、内存负载,以及各个节点在目标存储池中所对应的所有LUN的平均磁盘带宽、平均IOPS等,然后可以选择当前CPU利用率相对较小、当前内存负载相对较低,以及当前平均磁盘带宽相对较小、当前平均IOPS相对较小的节点作为候选节点。计算设备从候选节点对应的LUN中选取候选LUN与上述计算设备从目标存储池中选取候选LUN相同,可以参考上述相关描述。
需要说明的是,在一些实施例中,在选取的候选LUN中任意两个LUN不属于同一多磁臂磁盘的基础上,计算设备从目标存储池中选取候选LUN时,还需要考虑冗余配比(如需要保证选取的候选LUN的数量大于或等于N+M),以便保证之后计算设备可以成功从候选LUN中选取得到目标LUN。例如,假设目标存储池中包括24个LUN(即LUN1-LUN24),其中LUN1-LUN4属于节点a,LUN5-LUN8属于节点b,LUN9-LUN12属于节点c,LUN13-LUN16属于节点d,LUN17-LUN20属于节点e,LUN21-LUN24属于节点f。其中,目标存储池对应的冗余配比为4+2,那么计算设备从目标存储池中选取候选LUN时,需要从LUN1-LUN4中选取至少一个LUN,从LUN5-LUN8中选取至少一个LUN。同理,LUN9-LUN12、LUN13-LUN16、LUN17-LUN20、LUN21-LUN24中也需要选取至少一个LUN。因此,在LUN1-LUN4不满足上述容量均衡或性能均衡的原则的情况下(如LUN1、LUN2、LUN3、LUN4当前容量使用百分比均大于或等于第一阈值的情况下),计算设备还是需要从LUN1-LUN4中选择一个LUN作为候选LUN,此时,可以选择LUN1-LUN4中当前容量使用百分比相对较小或最小的LUN。
706.计算设备根据单磁臂磁盘选取策略从目标存储池中选取第四数量的候选LUN。
具体地,基于目标存储池中所有的LUN,计算设备可以根据单磁臂磁盘选取策略从目标存储池中选取第四数量的候选LUN(即L个候选LUN)。其中,选取策略可以包括容量均衡和/或性能均衡的选择策略,具体的可以参考步骤705中的相关描述。应理解,在一些实施例中,在目标存储池中的LUN对应的磁盘类型为单磁臂磁盘的情况下,计算设备也可以直接从目标存储池中选取候选盘,不采用单磁臂磁盘选取策略选取。
还应理解,在一些实施例中,计算设备从目标存储池中选取候选LUN时,可以先选取节点,即从目标存储池中各个LUN对应的节点中选取候选节点,再从候选节点对应的LUN中选取候选LUN,具体的可以参考步骤705中的相关描述。
需要说明的是,在一些实施例中,计算设备从目标存储池中选取候选LUN时,还需要考虑冗余配比,以便保证之后计算设备可以成功从候选LUN中选取得到目标LUN,具体的可以参考步骤705中的相关描述。
707.计算设备判断冗余配比是否为第一数量+第二数量(即N+M),在为第一数量+第二数量的情况下,执行步骤709,在不为第一数量+第二数量的情况下,执行步骤708。
由于N+M冗余配比和N+M:K(如N+M:1、N+M:2等)冗余配比这两种情况下,计算设备从候选LUN中选择N+M(即第三数量)个目标LUN的方式不同。因此,计算设备可以先判断目标存储池对应的冗余配比为N+M,还是为N+M:K,如果为N+M,可以执行步骤709,如果为N+M:K,可以执行步骤708。应理解,4+2、8+4等均为N+M冗余配比,4+2:1、8+4:1、8+4:2等均为N+M:K冗余配比。K为大于或等于1的整数,且K小于M。
708.计算设备根据第一数量+第二数量:第六数量(即N+M:K)冗余配比从第四数量的候选LUN中选择第三数量的目标LUN,将第三数量的分片(即第一数量的数据分片和第二数量的校验分片)写入该第三数量的目标LUN。
具体地,在目标存储池对应的冗余配比为N+M:K的情况下,计算设备可以根据节点内/节点间EC可靠性写数据,相应地,计算设备可以根据目标存储池对应的冗余配比从L个候选LUN中选择N+M个目标LUN,然后可以将N+M个分片写入该N+M个目标LUN,即可以通过网络把N个数据分片和M个校验分片写入到第五数量的节点(即Y个节点)对应的N+M目标LUN(即目标LUN所对应的磁盘)。其中,(N+M)/M≤Y<N+M(如4+2:1,则Y可以为3)。
其中,在N+M:K的冗余配比下,需要保证可以允许M个磁盘故障或K个节点故障而数据不丢失。其中,由于上述选取得到的L个候选LUN中,任意两个候选LUN不属于同一磁盘,因此,计算设备从L个候选LUN中任意选择N+M个目标LUN均可以保证故障M个磁盘数据不丢失。
为了满足故障K个节点数据不丢失,计算设备在从L个候选LUN中选择N+M个目标LUN时,选取的N+M个目标LUN中任意[M+1,M+N]个LUN不能属于K个节点。并且,针对同一个节点的候选LUN,可以最多选取其中个LUN作为目标LUN。其中,[M+1,M+N]表示(M+1)到(M+N)这个范围内的任意数字,可以取(M+1)或(M+N)。表示对M/K向上取整,例如,为3,为2。
举例说明,请参阅图9,图9是本申请实施例公开的又一种数据存储的场景示意图。如图9所示,目标存储池对应的冗余配比为4+2:1,目标存储池可以包括LUN1-LUN12等,计算设备从目标存储池中选择得到的候选LUN可以包括LUN1、LUN4、LUN6、LUN8、LUN9、LUN12等,可见,对于同一双磁臂磁盘的两个LUN,计算设备可以选择其中一个LUN作为候选LUN。计算设备得到候选LUN之后,可以从所有候选LUN中选择4+2个LUN作为目标LUN,图6中选择的6个目标LUN为LUN1、LUN4、LUN6、LUN8、LUN9、LUN12,之后,计算设备可以将4个数据分片和2个校验分片存储到选择的6个目标LUN中。
应理解,在一些实施例中,计算设备可以通过目标LUN对应节点的网际互连协议(internet protocol,IP)地址和目标LUN的编号、索引或名称等(即LUN的标识)可以标识目标LUN的信息将N+M个分片写入目标LUN中。其中,目标LUN对应节点的IP地址可以用于计算设备和对应节点通信,例如,计算设备可以通过各个目标LUN对应节点的IP地址向对应节点发送数据写入请求,该数据写入请求可以包括需要写入的分片以及该节点上目标LUN的编号等可以标识该目标LUN的信息。这样,当该节点接收到来自计算设备的数据写入请求之后,可以根据目标LUN的编号等信息确定目标LUN,然后可以将对应分片写入该目标LUN中。例如,针对节点1,需要将数据分片1和校验分片1写入节点1的LUN1和LUN4中,计算设备可以向节点1发送数据写入请求,该数据写入请求可以包括数据分片1、校验分片1以及LUN1和LUN4的标识。当节点1接收到来自计算设备的该数据写入请求之后,可以根据该数据写入请求将数据分片1和校验分片1分别写入节点1的LUN1和LUN4中。
709.计算设备根据第一数量+第二数量(即N+M)冗余配比从第四数量的候选LUN中选择第三数量的目标LUN,将第三数量的分片写入该第三数量的目标LUN。
具体地,在目标存储池对应的冗余配比为N+M的情况下,计算设备可以根据节点间EC可靠性写数据,相应地,计算设备可以根据目标存储池对应的冗余配比从L个候选LUN中选择N+M个目标LUN,然后可以将N+M个分片写入该N+M个目标LUN,即可以通过网络把N个数据分片和M个校验分片写入到N+M个节点对应的N+M目标LUN。
应理解,在N+M的冗余配比下,需要保证可以允许M个磁盘故障或M个节点故障而数据不丢失。其中,由于上述选取得到的L个候选LUN中,任意两个候选LUN不属于同一磁盘,因此,计算设备从L个候选LUN中任意选择N+M个目标LUN均可以保证故障M个磁盘数据不丢失。
为了满足故障K个节点数据不丢失,计算设备在从L个候选LUN中选择N+M个目标LUN时,选取的N+M个目标LUN中任意2个LUN不能属于同一节点,也即是从L个候选LUN中选择的N+M个目标LUN分别属于N+M个不同的节点,也即该N+M个节点中任一节点仅包括一个目标LUN。因此,在从L个候选LUN中选择N+M个目标LUN时,针对同一节点的候选LUN,计算设备可以仅选择其一个候选LUN作为目标LUN。
举例说明,请参阅图10,图10是本申请实施例公开的又一种数据存储的场景示意图。如图10所示,目标存储池对应的冗余配比为4+2,目标存储池可以包括LUN1-LUN24等,计算设备从目标存储池中选择得到的候选LUN可以包括LUN1、LUN4、LUN6、LUN8、LUN9、LUN12、LUN13、LUN16、LUN18、LUN19、LUN21、LUN23等,可见,对于同一双磁臂磁盘的两个LUN,计算设备可以选择其中一个LUN作为候选LUN。计算设备得到候选LUN之后,可以从所有候选LUN中选择4+2个LUN作为目标LUN,并且该6个目标LUN属于不同的节点,图6中选择的6个目标LUN为LUN4、LUN6、LUN9、LUN12、LUN16、LUN18、LUN21,之后,计算设备可以将4个数据分片和2个校验分片存储到选择的6个目标LUN中。
在一些实施例中,计算设备可以先选取N+M个目标LUN,然后再将数据切分为N个数据分片,以及生成M个校验分片。计算设备得到N个数据分片和M个校验分片之后,可以将该N个数据分片和M个校验分片存储到选取的N+M个目标LUN中。或者,在又一些实施例中,计算设备可以在选取N+M个目标LUN的同时,进行数据的切分以及校验分片的生成,本申请实施例在此不作限定。
需要说明的是,在一些实施例中,计算设备选择的L个候选LUN中也可以存在属于同一多磁臂磁盘的LUN。之后,在计算设备根据目标存储池对应的冗余配比(如N+M或N+M:K冗余配比)从L个候选LUN中选择N+M个目标LUN时,针对L个候选LUN中属于同一多磁臂磁盘的多个LUN,计算设备最多可以选择其中一个LUN作为目标LUN,这样,可以保证N+M个目标LUN分别属于N+M个不同的磁盘。
上述方法流程中,针对多磁臂磁盘,改进了现有EC数据分片冗余保护算法(即改进选盘策略和数据写入策略),在选取候选盘的过程中,增加多磁臂磁盘和单磁臂磁盘的判断流程,针对多磁臂磁盘,从存储池中选择候选LUN时,在保证EC冗余配比的情况下,保证选取的候选LUN中任意两个LUN不属于同一多磁臂磁盘,从而可以解决条带内局部热盘/负载不均(即多磁臂磁盘局部热盘/负载不均)的问题,并且,这种方式下可以保证同一数据分条的N+M个分片均匀分布在不同的多磁臂磁盘上,从而可以满足故障M个磁盘的要求,可以提高存储***的可靠性。
此外,当(N+M)/M≤存储节点的个数<N+M时,以及冗余配比为N+M:K(如N+M:1或N+M:2)时,采用本申请提供的数据写入方法可以使存储***可以故障任意K个节点,或任意M个磁盘,EC冗余保护级别不失效,即数据不丢失。
需要说明的是,图7所示的方法实施例中,默认存储池中的LUN对应的磁盘类型为同一类型(如均为单磁臂磁盘或均为多磁臂磁盘),下面对存储中的LUN对应的磁盘类型不为同一类型的情况进行说明,例如,既包括单磁臂磁盘的LUN,也包括多磁臂磁盘的LUN。
基于上述***架构,请参阅图11,图11是本申请实施例公开的另一种数据写入方法的流程示意图。如图11所示,该数据写入方法可以包括但不限于如下步骤:
1101.存储***根据获取到的磁盘信息,配置至少一个存储池,每个存储池配置有对应的冗余配比。
步骤1101与步骤701相同,可以参考上述步骤701中的相关描述。
1102.在计算设备需要向目标存储池写入待存储数据的情况下,计算设备根据目标存储池的冗余配比将待存储数据分片。
步骤1102与步骤702相似,可以参考上述步骤702中的相关描述。
1103.计算设备获取目标存储池中属于同一多磁臂磁盘的LUN。
步骤1103与步骤704相似,可以参考上述步骤704中的相关描述。
1104.计算设备根据单磁臂磁盘选取策略和多磁臂磁盘选取策略从目标存储池中选取第四数量的候选LUN。
具体地,基于目标存储池中所有的LUN,计算设备可以根据多磁臂磁盘选取策略和单磁臂磁盘选取策略从目标存储池中选取L个候选LUN,L为大于或等于N+M的整数。其中,针对于同一多磁臂磁盘,最多可以选择其一个LUN作为候选LUN。并且,多磁臂磁盘选取策略和单磁臂磁盘选取策略可以包括容量均衡和/或性能均衡的选择策略,具体的可以参考步骤705中的相关描述。
关于步骤1104更详细的描述,可以参考上述步骤705和步骤706中的相关描述。
1105.计算设备判断冗余配比是否为第一数量+第二数量(即N+M),在为N+M的情况下,执行步骤1107,在不为N+M的情况下,执行步骤1106。
步骤1105与步骤707相似,可以参考上述步骤707中的相关描述。
1106.计算设备根据第一数量+第二数量:第六数量(即N+M:K)冗余配比从第四数量的候选LUN中选择第三数量的目标LUN,将第三数量的分片(即第一数量的数据分片和第二数量的校验分片)写入该第三数量的目标LUN。
步骤1106与步骤708相似,可以参考上述步骤708中的相关描述。
1107.计算设备根据第一数量+第二数量(即N+M)冗余配比从第四数量的候选LUN中选择第三数量的目标LUN,将第三数量的分片写入该第三数量的目标LUN。
步骤1107与步骤709相似,可以参考上述步骤709中的相关描述。
应理解,上述图7和图11的方法流程中计算设备执行的操作可以是计算设备的客户端执行的操作。还应理解,在一些情况下,存储***中的节点(如节点1)可以接收到未经切分的数据(如计算设备发送的未经切分的数据),之后,该节点可以执行上述计算设备执行的步骤(即步骤702-709或步骤1102-1107),实现数据的冗余保护。
需要说明的是,上述不同实施例中的相关信息(即相同信息或相似信息)和相关描述可以相互参考。
应理解,上述图7和图11中以计算设备作为交互示意的执行主体为例来示意上述处理流程,但本申请并不限制该交互示意的执行主体。例如,图7和图11中的计算设备也可以是支持该计算设备实现该方法的芯片、芯片***、或处理器,还可以是能实现全部或部分计算设备功能的逻辑模块或软件。
基于上述***架构,请参阅图12,图12是本申请实施例公开的一种电子设备的结构示意图。其中,该电子设备1200可以包括:处理器1201、通信接口1202和存储器1203。处理器1201、通信接口1202以及存储器1203可以相互连接或者通过总线1204相互连接。
示例性的,存储器1203用于存储电子设备1200的计算机程序和数据,存储器1203可以包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmable read onlymemory,EPROM)或便携式只读存储器(compact disc read-only memory,CD-ROM)等。通信接口1202用于支持电子设备1200进行通信,例如接收或发送数据。
示例性的,处理器1201可以是CPU、复杂可编程逻辑器件、通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。
在一个实施例中,电子设备1200可以为计算设备,处理器1201可以用于读取上述存储器1203中存储的程序,执行上述图7或图11所示的方法实施例中计算设备执行的操作,可以参考上述相关描述,在此不再详细赘述。
在一个实施例中,电子设备1200可以为第一节点(即上述存储***中的任一节点),处理器1201可以用于读取上述存储器1203中存储的程序,执行上述图7或图11所示的方法实施例中计算设备执行的操作,可以参考上述相关描述,在此不再详细赘述。
需要说明的是,图12所示的电子设备1200仅仅是本申请实施例的一种实现方式,实际应用中,电子设备1200还可以包括更多或更少的部件,这里不作限制。
本申请实施例还公开一种计算机可读存储介质,其上存储有指令,该指令被执行时执行上述方法实施例中的方法。
本申请实施例还公开一种包括指令的计算机程序产品,该指令被执行时执行上述方法实施例中的方法。
显然,上述所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或者特性可以包含在本实施例申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是相同的实施例,也不是与其它实施例互斥的独立的或是备选的实施例。本领域技术人员可以显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请的说明书和权利要求书及所述附图中术语“第一”、“第二”、“第三”等是区别于不同的对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如,包含了一系列步骤或单元,或者可选地,还包括没有列出的步骤或单元,或者可选地还包括这些过程、方法、产品或设备固有的其它步骤或单元。可以理解的是,上述条件判断的等号可以取大于一端也可以取小于一端,例如,上述对于一个阈值大于、小于或等于的条件判断,也可以改为对该阈值大于或等于、小于的条件判断,在此不作限定。应理解,上述通信方式可以为间接通信和直接通信,直接通信可以理解为两个设备之间不通过其它设备进行通信,间接通信可以理解为两个设备之间需要通过其它设备进行通信。
需要说明的是,在符合逻辑的情况下,上述方法流程中的步骤在一些情况下可以灵活调整,例如,上述方法流程中的某些步骤可以预先执行,再例如,上述方法流程中的某些步骤可以拆分或者可以合并,再或者可以删除,在此不作限定。
可以理解的是,附图中仅示出了与本申请相关的部分而非全部内容。应当理解的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
在本说明书中使用的术语“部件”、“模块”、“***”、“单元”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件或执行中的软件。例如,单元可以是但不限于在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或分布在两个或多个计算机之间。此外,这些单元可从在上面存储有各种数据结构的各种计算机可读介质执行。单元可例如根据具有一个或多个数据分组(例如来自与本地***、分布式***和/或网络间的另一单元交互的第二单元数据。例如,通过信号与其它***交互的互联网)的信号通过本地和/或远程进程来通信。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本申请的保护范围之内。
Claims (10)
1.一种数据写入方法,其特征在于,包括:
在计算设备需要向目标存储池中写入待存储数据的情况下,所述计算设备根据所述目标存储池的冗余配比将所述待存储数据进行分片,得到第一数量的数据分片和第二数量的校验分片;
若所述目标存储池中的多个LUN对应的磁盘类型为多磁臂磁盘,则基于多磁臂磁盘选取策略,从所述目标存储池的多个LUN中选取到第三数量的目标LUN;其中,所述第三数量的目标LUN分别对应第三数量的不同的磁盘;
将所述第一数量的数据分片和所述第二数量的校验分片存储到所述第三数量的目标LUN中。
2.根据权利要求1所述的方法,其特征在于,所述若所述目标存储池中的多个LUN对应的磁盘类型为多磁臂磁盘,则基于多磁臂磁盘选取策略,从所述目标存储池的多个LUN中选取到第三数量的目标LUN,包括:
若所述目标存储池中的多个LUN对应的磁盘类型为多磁臂磁盘,则基于多磁臂磁盘选取策略,从所述目标存储池的多个LUN中选取到第四数量的候选LUN;
基于所述目标存储池的冗余配比从所述第四数量的候选LUN中选取到第三数量的目标LUN。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述目标存储池中的多个LUN对应的磁盘类型为单磁臂磁盘,则基于单磁臂磁盘选取策略,从所述目标存储池的多个LUN中选取到第四数量的候选LUN;
若所述目标存储池中的多个LUN对应的磁盘类型包括单磁臂磁盘和多磁臂磁盘,则基于单磁臂磁盘选取策略和多磁臂磁盘选取策略,从所述目标存储池的多个LUN中选取到第四数量的候选LUN;
基于所述目标存储池的冗余配比从所述第四数量的候选LUN中选取到第三数量的目标LUN。
4.根据权利要求2或3所述的方法,其特征在于,所述多磁臂磁盘选取策略包括:所述第四数量的候选LUN分别对应第四数量的不同的磁盘。
5.根据权利要求4所述的方法,其特征在于,所述多磁臂磁盘选取策略还包括以下一项或多项:所述第四数量的候选LUN的当前容量使用百分比均小于第一阈值、所述第四数量的候选LUN所对应节点的当前中央处理器CPU利用率均小于第二阈值、所述第四数量的候选LUN所对应节点的当前内存负载均小于第三阈值、所述第四数量的候选LUN所对应磁盘的当前带宽均小于第四阈值、所述第四数量的候选LUN所对应磁盘的当前每秒输入输出量IOPS均小于第五阈值。
6.根据权利要求3-5任一项所述的方法,其特征在于,所述单磁臂磁盘选取策略包括以下一项或多项:所述第四数量的候选LUN的当前容量使用百分比均小于第一阈值、所述第四数量的候选LUN所对应节点的当前中央处理器CPU利用率均小于第二阈值、所述第四数量的候选LUN所对应节点的当前内存负载均小于第三阈值、所述第四数量的候选LUN所对应磁盘的当前带宽均小于第四阈值、所述第四数量的候选LUN所对应磁盘的当前每秒输入输出量IOPS均小于第五阈值。
7.根据权利要求2或3所述的方法,其特征在于,所述基于所述目标存储池的冗余配比从所述第四数量的候选LUN中选取到第三数量的目标LUN包括:
在所述目标存储池的冗余配比为第一数量+第二数量的情况下,根据第一数量+第二数量冗余配比从所述第四数量的候选LUN中选取到第三数量的目标LUN,所述第三数量的目标LUN分别对应第三数量的不同的节点;
在所述目标存储池的冗余配比为第一数量+第二数量:第六数量的情况下,根据第一数量+第二数量:第六数量冗余配比从所述第四数量的候选LUN中选取到第三数量的目标LUN,所述第三数量的目标LUN分别对应第五数量的不同的节点。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述方法还包括:
确定所述目标存储池中属于同一多磁臂磁盘的多个LUN;
通过所述多磁臂磁盘的序列号SN标注所述多个LUN。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述将所述第一数量的数据分片和所述第二数量的校验分片存储到所述第三数量的目标LUN中包括:
向所述第三数量的目标LUN对应的每个节点发送数据写入请求,每个所述数据写入请求包括所述第三数量的目标LUN中的一个或多个LUN的标识,以及所述第一数量的数据分片和所述第二数量的校验分片中需要写入所述一个或多个LUN中的一个或多个分片。
10.一种数据存储***,其特征在于,包括:计算设备和分布式存储***,所述计算设备与所述分布式存储***连接,所述分布式存储***包括多个存储节点,每个所述存储节点中包括至少一个磁盘,所述计算设备用于执行如权利要求1至9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211441219.6A CN115729470A (zh) | 2022-11-17 | 2022-11-17 | 一种数据写入方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211441219.6A CN115729470A (zh) | 2022-11-17 | 2022-11-17 | 一种数据写入方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115729470A true CN115729470A (zh) | 2023-03-03 |
Family
ID=85296314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211441219.6A Pending CN115729470A (zh) | 2022-11-17 | 2022-11-17 | 一种数据写入方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115729470A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116010160A (zh) * | 2023-03-09 | 2023-04-25 | 安超云软件有限公司 | 分布式文件***的纠删码数据分布的方法及应用 |
-
2022
- 2022-11-17 CN CN202211441219.6A patent/CN115729470A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116010160A (zh) * | 2023-03-09 | 2023-04-25 | 安超云软件有限公司 | 分布式文件***的纠删码数据分布的方法及应用 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105573839B (zh) | 用于端口选择的基于成本的负载平衡的方法和装置 | |
CN107807794B (zh) | 一种数据存储方法和装置 | |
US8122213B2 (en) | System and method for migration of data | |
US7979635B2 (en) | Apparatus and method to allocate resources in a data storage library | |
CN103534688B (zh) | 数据恢复方法、存储设备和存储*** | |
US11416166B2 (en) | Distributed function processing with estimate-based scheduler | |
CN107506145B (zh) | 一种物理存储调度方法及云主机创建方法 | |
US20140195698A1 (en) | Non-disruptive configuration of a virtualization cotroller in a data storage system | |
US7406578B2 (en) | Method, apparatus and program storage device for providing virtual disk service (VDS) hints based storage | |
US11385823B2 (en) | Method, electronic device and computer program product for rebuilding disk array | |
US11157186B2 (en) | Distributed object storage system with dynamic spreading | |
US10951358B2 (en) | Using slice routers for improved storage placement determination | |
WO2019062856A1 (zh) | 数据重构方法及装置、数据存储*** | |
US11314431B2 (en) | Distributed data blocks using storage path cost values | |
CN115729470A (zh) | 一种数据写入方法及相关设备 | |
CN109840051B (zh) | 一种存储***的数据存储方法及装置 | |
AU2021269916B2 (en) | Write sort management in data storage system | |
CN110244904B (zh) | 一种数据存储***、方法及装置 | |
US11379128B2 (en) | Application-based storage device configuration settings | |
CN109814805A (zh) | 存储***中分条重组的方法及分条服务器 | |
US7111088B2 (en) | Computer system, management device, and logical device selecting method and program | |
US7694079B2 (en) | Tagged sequential read operations | |
US10268376B2 (en) | Automated deployment and assignment of access devices in a dispersed storage network | |
US10241878B2 (en) | System and method of data allocation providing increased reliability of storage | |
US11580022B2 (en) | Write sort management in a multiple storage controller data storage system |
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 |