CN117666931A - 一种数据处理方法及相关设备 - Google Patents

一种数据处理方法及相关设备 Download PDF

Info

Publication number
CN117666931A
CN117666931A CN202211055072.7A CN202211055072A CN117666931A CN 117666931 A CN117666931 A CN 117666931A CN 202211055072 A CN202211055072 A CN 202211055072A CN 117666931 A CN117666931 A CN 117666931A
Authority
CN
China
Prior art keywords
requests
stripe
request
data
concurrent requests
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
Application number
CN202211055072.7A
Other languages
English (en)
Inventor
李航
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202211055072.7A priority Critical patent/CN117666931A/zh
Publication of CN117666931A publication Critical patent/CN117666931A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种数据处理方法及相关设备,涉及存储技术领域。该方法由分布式存储系统中主节点执行,包括:获取多路并发的请求,多路并发的请求中的每一路请求用于重构一个纠删码EC条带,根据多路并发的请求中每一路请求的输入输出IO地址,对多路并发的请求合并,合并后的请求用于指示连续地址段,根据合并后的请求,重构EC条带。该方法通过将多路并发的请求归并到同一请求中,增加EC条带重构过程中磁盘IO的顺序性,提升磁盘吞吐率,解决大量异步IO并发执行在磁盘上形成随机读写,导致磁盘吞吐量急剧下降,从而致使重构性能下降的问题。

Description

一种数据处理方法及相关设备
技术领域
本申请涉及存储技术领域,尤其涉及一种数据处理方法、装置、电子设备、计算机可读存储介质以及计算机程序产品。
背景技术
随着信息化技术的不断发展,越来越多的产业应用采用信息化部署方式,由此产生了大量的数据。为了降低数据的存储成本并保障数据的可靠性,业界提出了纠删码(Erasure Code,EC)技术。EC具体是将数据分成多组数据块,然后根据每组数据块计算得到校验块,将该组数据块和校验块分散存储在分布式存储系统的不同的节点。
其中,一组数据块和基于这组数据块通过校验生成的校验块的集合称作EC条带(stripe)。为保证数据一致性,数据的读取和修改操作通常由条带中的第一个数据块(例如是编号为D0的数据块)所在的节点完成。其中,条带中的第一个数据块所在的节点也可以称作主节点,条带中的其他数据块所在的节点以及校验块所在的节点称作从节点。
在存储数据块的节点或磁盘损坏的情况下,EC条带可以缺失至少一个数据块。为了重构数据,通常需要读取当前EC条带中的其他数据块以及至少一个校验块,通过异或计算等方式重构出缺失的数据块。
然而,分布式存储系统在重构数据时通常是针对多个EC条带并发重构,增加了读写数据块的随机性,进而增加了重构时间。
发明内容
本申请提供了一种数据处理方法,该方法通过将多路异步请求归并到同一请求中,增加EC条带重构过程中磁盘输入输出(input output,IO)的顺序性,提升磁盘吞吐率,解决大量异步IO并发执行在磁盘上形成随机读写,导致磁盘吞吐量急剧下降,从而致使重构性能下降的问题。本申请还提供了该方法对应的装置、电子设备、分布式存储系统、计算机可读存储介质、计算机程序产品。
第一方面,本申请提供一种数据处理方法。该方法可以由分布式存储系统中主节点执行。分布式存储系统中的多个节点分散存储有EC条带的数据块和校验块。例如,每个节点可以存储一个数据块或一个校验块,不同节点存储不同数据块或校验块。其中,存储EC条带中第一个数据块的节点可以视为主节点,其他节点可以视为从节点。
具体地,主节点可以获取多路并发的请求,多路并发的请求中的每一路请求用于重构一个EC条带,然后主节点根据多路并发的请求中每一路请求的IO地址,对多路并发的请求合并,合并后的请求用于指示连续地址段,接着主节点可以根据合并后的请求,重构上述EC条带。
在该方法中,多路并发的请求可以归并到同一请求中,归并后的请求所指示的地址与多路并发的请求所指示的地址相比更加连续,如此增加EC条带重构过程中磁盘IO的顺序性,提升磁盘吞吐率,解决大量异步IO并发执行在磁盘上形成随机读写,导致磁盘吞吐量急剧下降,从而致使重构性能下降的问题。
在一些可能的实现方式中,主节点可以根据多路并发的请求中每一路请求的IO地址对多路并发的请求排序,然后将排序后的请求中的IO地址按照顺序合并,获得合并后的请求。其中,合并后的请求用于顺序IO。如此,可以将随机IO变成顺序IO,大幅提升IO性能,进而缩短重构时间,提升重构性能。
在一些可能的实现方式中,所述每一路请求的IO地址包括起始地址或结束地址。其中,结束地址也可以根据起始地址和IO长度计算得到。相应地,主节点对多路并发的请求进行排序时,可以根据多路并发的请求中每一路请求的起始地址对多路并发的请求排序。在一些示例中,主节点也可以根据多路并发的请求中每一路请求的结束地址对多路并发的请求排序。
该方法通过提供多种对多路并发的请求进行排序的方式,从而为多路并发的请求归并提供帮助,具有较高可用性。
在一些可能的实现方式中,主节点可以根据合并后的请求中的连续地址段,按照磁盘的磁头转动方向,单向执行IO操作,以重构EC条带。该方法采用单向策略执行顺序化的读写操作,提高磁盘吞吐率,从而提高重构带宽。
在一些可能的实现方式中,主节点在重构EC条带时,可以根据合并后的请求,缓存多路并发的请求重构所述EC条带所需要读取的临时数据。其中,临时数据包括所述EC条带剩余的数据块和校验块。然后,主节点可以根据临时数据,获得EC条带中丢失的数据块的副本,接着在分布式存储系统中写入EC条带中丢失的数据块的副本,以重构所述EC条带。
该方法通过缓存重构EC条带所需要的临时数据,并基于临时数据恢复丢失的数据块,然后以顺序IO模式写入丢失的数据块的副本,重构EC条带。如此,减少了重构EC条带过程中的读写开销,提升了重构性能。
在一些可能的实现方式中,主节点还可以存储副本的元信息,该元信息包括位置信息。其中,位置信息可以通过地址表征,例如通过逻辑地址表征,当后续需要查询该数据块、修改该数据块、删除该数据块时,可以通过该位置信息快速定位出数据块,由此提高响应效率。
在一些可能的实现方式中,主节点可以在同一缓存介质中缓存所述多路并发的请求重构所述EC条带所需要读取的临时数据。具体地,主节点可以采用大容量缓存,如固态硬盘、存储级存储器,来缓存临时数据,从而实现在同一缓存介质中缓存临时数据。
由于缓存能够存储的数据量足够大,因此,可以缩小访问的地址跨度,提高磁盘的吞吐率,进一步提升重构性能。
在一些可能的实现方式中,多路并发的请求为异步请求。异步请求,也称作异步IO请求、异步IO。异步IO是计算机操作系统对输入输出的一种处理方式:发起IO请求的线程不等IO操作完成,就继续执行随后的代码,IO结果用其他方式通知发起IO请求的程序。
在该方法中,异步请求可以无需立即执行,因此,可以将多路异步请求归并,从而实现将随机IO变更为顺序IO,提升重构性能。
在一些可能的实现方式中,针对每一个存在数据丢失的EC条带,主节点可以获取多个读请求和至少一个写请求,其中,多个读请求用于读取所述EC条带中剩余的数据块和校验块,至少一个写请求用于写入所述EC条带中丢失的数据块,丢失的数据块根据剩余的数据块和校验块确定。
如此,可以实现并发地EC重构,保障EC条带的可靠性,而且该方法通过归并多路请求,减少IO的随机性,提升重构性能。
第二方面,本申请提供一种数据处理装置。所述装置部署于分布式存储系统中的主节点,所述装置包括:
获取模块,用于获取多路并发的请求,所述多路并发的请求中的每一路请求用于重构一个纠删码EC条带;
合并模块,用于根据所述多路并发的请求中每一路请求的输入输出IO地址,对所述多路并发的请求合并,合并后的所述请求用于指示连续地址段;
重构模块,用于根据合并后的所述请求,重构所述EC条带。
在一些可能的实现方式中,所述合并模块具体用于:
根据所述多路并发的请求中每一路请求的IO地址对所述多路并发的请求排序;
将排序后的所述请求中的IO地址按照顺序合并,获得合并后的所述请求,所述合并后的所述请求用于顺序IO。
在一些可能的实现方式中,所述每一路请求的IO地址包括起始地址或结束地址;
所述合并模块具体用于:
根据所述多路并发的请求中每一路请求的起始地址对所述多路并发的请求排序;或者,
根据所述多路并发的请求中每一路请求的结束地址对所述多路并发的请求排序。
在一些可能的实现方式中,所述重构模块具体用于:
根据合并后的所述请求中的连续地址段,按照磁盘的磁头转动方向,单向执行IO操作,以重构所述EC条带。
在一些可能的实现方式中,所述获取模块具体用于:
针对每一个存在数据丢失的所述EC条带,获取多个读请求和至少一个写请求,所述多个读请求用于读取所述EC条带中剩余的数据块和校验块,所述至少一个写请求用于写入所述EC条带中丢失的数据块,所述丢失的数据块根据所述剩余的数据块和校验块确定。
在一些可能的实现方式中,所述重构模块具体用于:
根据所述合并后的所述请求,缓存所述多路并发的请求重构所述EC条带所需要读取的临时数据,所述临时数据包括所述EC条带剩余的数据块和校验块;
根据所述临时数据,获得所述EC条带中丢失的数据块的副本;
在所述分布式存储系统中写入所述EC条带中丢失的数据块的副本,以重构所述EC条带。
在一些可能的实现方式中,所述重构模块还用于:
存储所述副本的元信息,所述元信息包括位置信息。
在一些可能的实现方式中,所述重构模块具体用于:
在同一缓存介质中缓存所述多路并发的请求重构所述EC条带所需要读取的临时数据。
在一些可能的实现方式中,所述多路并发的请求为异步请求。
第三方面,本申请提供一种分布式存储系统。该分布式存储系统包括主节点和从节点。其中,主节点用于执行本申请第一方面所述的数据处理方法。
具体地,主节点用于获取多路并发的请求,多路并发的请求中的每一路请求用于重构一个EC条带,主节点还用于根据多路并发的请求中每一路请求的IO地址,对多路并发的请求合并,合并后的请求用于指示连续地址段,然后根据合并后的请求,重构EC条带。
第四方面,本申请提供一种电子设备。所述电子设备包括至少一个处理器和至少一个存储器。所述至少一个处理器、所述至少一个存储器进行相互的通信。所述至少一个处理器用于执行所述至少一个存储器中存储的指令,以使得电子设备执行如第一方面或第一方面的任一种实现方式所述的数据处理方法。
第五方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令指示电子设备执行上述第一方面或第一方面的任一种实现方式所述的数据处理方法。
第六方面,本申请提供了一种包含指令的计算机程序产品,当其在电子设备上运行时,使得电子设备执行上述第一方面或第一方面的任一种实现方式所述的数据处理方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
图1为本申请实施例提供的一种EC条带的重构原理图;
图2为本申请实施例提供的一种EC条带并发重构的示意图;
图3A为本申请实施例提供的一种分布式存储系统的系统架构图;
图3B为本申请实施例提供的一种分布式存储系统的系统架构图;
图4为本申请实施例提供的一种分布式存储系统的应用场景示意图;
图5为本申请实施例提供的一种多路并发重构的流程示意图;
图6为本申请实施例提供的一种数据处理方法的流程图;
图7为本申请实施例提供的一种多路请求缓存的流程示意图;
图8为本申请实施例提供的一种插入数据块进行顺序读写的示意图;
图9为本申请实施例提供的一种数据处理装置的结构示意图;
图10为本申请实施例提供的一种电子设备的硬件结构图;
图11为本申请实施例提供的一种分布式存储系统的硬件结构图。
具体实施方式
为了便于理解,首先对本申请所涉及到的一些技术术语进行介绍。
1.EC条带重构,具体是指EC条带因分布式存储系统中节点故障或磁盘损坏,导致存在数据缺失时,通过读取当前EC条带中其他数据,以恢复缺失数据的过程。需要说明,根据故障节点不同或者损坏磁盘不同,EC条带中缺失的数据可以是EC条带中的数据块或者是EC条带中的校验块。为了便于描述,下文以EC条带中缺失数据块示例说明。
参见图1所示的EC条带的重构原理图,该EC条带包括多个数据块,具体为数据块D0至数据块Dk-1,以及由上述多个数据块确定的至少一个校验块,具体为校验块P和校验块Q。其中,数据块D0可以存储在主节点,主节点记作primary node 0,数据块D1至数据块Dk-1可以存储在第一从节点,该第一从节点包括node 1,…,node(k-1),校验块P和校验块Q可以存储在第二从节点,该第二从节点包括node(k),node(k+1)。
当node1故障或者node1中的磁盘损坏时,EC条带中的数据块D1丢失,主节点可以读取当前EC条带中其他数据块和一个校验块,例如是校验块P,接着通过异或计算等方式校验出数据块D1,获得数据块D1的副本,具体如下所示:
其中,D′1为数据块D1的副本,α0为数据块D0的校验系数,αj为数据块Dj的校验系数。
然后,主节点可以在分布式存储系统,例如是分布式存储系统中的节点node_x中写入数据块D1的副本D′1,从而重构EC条带。重构后的EC条带包括数据块D0,数据块D′1,…数据块Dk-1以及校验块P和校验块Q。
2.多路并发重构,分布式存储系统并行重构不同的EC条带,以提高重构的性能。如图2所示,分布式存储系统可以通过多个线程(thread)并行重构不同的EC条带,例如,thread 0用于重构一个EC条带,thread 1用于重构另一个EC条带。
然而,不同的重构任务需要读出的数据的地址不同,需要写入的空间不同,导致不同地址的读取以及不同地址的写入。多路重构任务的并发进行形成了随机读写的模式。磁盘随机读写性能较低,通常只有顺序读写的几十分之一。如此导致EC条带的重构流程耗时超长,难以满足业务需求。
为了解决传统重构方案中多路并发重构形成随机读写,导致重构流程耗时超长的问题,本申请提供了一种应用于分布式存储系统的数据处理方法。分布式存储系统包括存储数据块的节点(也称作数据块存储节点)和存储校验块的节点(也称作校验块存储节点)。其中,数据块存储节点中包括存储数据块(例如是第一个数据块)的主节点和存储数据块(例如是第一个数据块之外的其他数据块)的第一从节点,校验块存储节点包括第二从节点。
具体地,主节点可以获取多路并发的请求,多路并发的请求中的每一路请求用于重构一个EC条带,然后主节点可以根据多路并发的请求中每一路请求的输入输出(inputoutput,IO)地址,对多路并发的请求合并,合并后的请求用于指示对连续地址段的数据处理,接着主节点根据合并后的请求,例如,是根据合并后的请求中的连续地址段进行IO,从而重构EC条带。
该方法通过将多路异步请求都归并到同一请求中,增加EC条带重构过程中磁盘IO的顺序性,提升磁盘吞吐率,解决大量异步IO并发执行在磁盘上形成随机读写,导致磁盘吞吐量急剧下降,从而致使重构性能下降的问题。
下面结合附图对本申请实施例的系统架构进行介绍。
参见图3A所示的分布式存储系统的系统架构图,该系统为存算分离结构,该系统包括计算节点集群和存储节点集群。计算节点集群包括一个或多个计算节点110(图3A中示出了两个计算节点110,但不限于两个计算节点110),各个计算节点110之间可以相互通信。计算节点110是一种计算设备,如服务器、台式计算机或者存储阵列的控制器等。在硬件上,如图3A所示,计算节点110至少包括处理器112、内存113和网卡114。其中,处理器112是一个中央处理器(central processing unit,CPU),用于处理来自计算节点110外部的数据访问请求,或者计算节点110内部生成的请求。示例性的,处理器112接收用户发送的写数据请求时,会将这些写数据请求中的数据暂时保存在内存113中。当内存113中的数据总量达到一定阈值时,处理器112将内存113中存储的数据发送给存储节点100进行持久化存储。除此之外,处理器112还用于数据进行计算或处理,例如元数据管理、重复数据删除、数据压缩、虚拟化存储空间以及地址转换等。图3A中仅示出了一个CPU 112,在实际应用中,CPU 112的数量往往有多个,其中,一个CPU 112又具有一个或多个CPU核。本实施例不对CPU的数量,以及CPU核的数量进行限定。
内存113是指与处理器直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。内存包括至少两种存储器,例如内存既可以是随机存取存储器,也可以是只读存储器(Read Only Memory,ROM)。举例来说,随机存取存储器是动态随机存取存储器(Dynamic Random Access Memory,DRAM),或者存储级存储器(Storage Class Memory,SCM)。DRAM是一种半导体存储器,与大部分随机存取存储器(Random Access Memory,RAM)一样,属于一种易失性存储器(volatile memory)设备。SCM是一种同时结合传统储存装置与存储器特性的复合型储存技术,存储级存储器能够提供比硬盘更快速的读写速度,但存取速度上比DRAM慢,在成本上也比DRAM更为便宜。然而,DRAM和SCM在本实施例中只是示例性的说明,内存还可以包括其他随机存取存储器,例如静态随机存取存储器(Static Random Access Memory,SRAM)等。而对于只读存储器,举例来说,可以是可编程只读存储器(Programmable Read Only Memory,PROM)、可抹除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)等。另外,内存113还可以是双列直插式存储器模块或双线存储器模块(Dual In-line MemoryModule,简称DIMM),即由动态随机存取存储器(DRAM)组成的模块,还可以是固态硬盘(Solid State Disk,SSD)。实际应用中,计算节点110中可配置多个内存113,以及不同类型的内存113。本实施例不对内存113的数量和类型进行限定。此外,可对内存113进行配置使其具有保电功能。保电功能是指系统发生掉电又重新上电时,内存113中存储的数据也不会丢失。具有保电功能的内存被称为非易失性存储器。
网卡114用于与存储节点100通信。例如,当内存113中的数据总量达到一定阈值时,计算节点110可通过网卡114向存储节点100发送请求以对所述数据进行持久化存储。另外,计算节点110还可以包括总线,用于计算节点110内部各组件之间的通信。在功能上,由于图3A中的计算节点110的主要功能是计算业务,在存储数据时可以利用远程存储器来实现持久化存储,因此它具有比常规服务器更少的本地存储器,从而实现了成本和空间的节省。但这并不代表计算节点110不能具有本地存储器,在实际实现中,计算节点110也可以内置少量的硬盘,或者外接少量硬盘。
任意一个计算节点110可通过网络访问存储节点集群中的任意一个存储节点100。存储节点集群包括多个存储节点100(图3A中示出了三个存储节点100,但不限于三个存储节点100)。一个存储节点100包括一个或多个控制器101、网卡104与多个硬盘105。网卡104用于与计算节点110通信。硬盘105用于存储数据,可以是磁盘或者其他类型的存储介质,例如固态硬盘或者叠瓦式磁记录硬盘等。控制器101用于根据计算节点110发送的读/写数据请求,往硬盘105中写入数据或者从硬盘105中读取数据。在读写数据的过程中,控制器101需要将读/写数据请求中携带的地址转换为硬盘能够识别的地址。由此可见,控制器101也具有一些简单的计算功能。
图3B为本申请实施例所应用的另一种分布式存储系统的系统架构图,该系统为存算一体架构,该系统包括存储集群。存储集群包括一个或多个服务器110(图3B中示出了三个服务器110,但不限于三个服务器110),各个服务器110之间可以相互通信。服务器110是一种既具有计算能力又具有存储能力的设备,如服务器、台式计算机等。示例型的,ARM服务器或者X86服务器都可以作为这里的服务器110。
在硬件上,如图3B所示,服务器110至少包括处理器112、内存113、网卡114和硬盘105。处理器112、内存113、网卡114和硬盘105之间通过总线连接。其中,处理器112和内存113用于提供计算资源。具体地,处理器112是一个中央处理器CPU,用于处理来自服务器110外部(应用服务器或者其他服务器110)的数据访问请求,也用于处理服务器110内部生成的请求。内存113是指与处理器直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。实际应用中,服务器110中可配置多个内存113,以及不同类型的内存113。本实施例不对内存113的数量和类型进行限定。此外,可对内存113进行配置使其具有保电功能。硬盘105用于提供存储资源,例如存储数据。它可以是磁盘或者其他类型的存储介质,例如固态硬盘或者叠瓦式磁记录硬盘等。网卡114用于与其他服务器110通信。
需要说明的是,上述图3A、图3B仅仅是分布式存储系统的一种示意性架构,在本申请实施例其他可能的实现方式中,分布式存储系统也可以使用其他架构,例如分布式存储系统也可以采用全融合架构,或者Memory Fabric架构。
进一步地,上述分布式存储系统可以提供存储服务,例如,以存储接口形式为用户提供存储服务器,使用户可通过上述存储接口使用分布式存储系统的存储资源。参见图4所示的分布式存储系统的应用场景示意图,用户可以通过客户端(如应用客户端)访问分布式存储系统,该分布式存储系统的系统架构可以是上述图3A或图3B所示的架构。
例如,分布式存储系统采用图3A所示的架构时,客户端可以调用存储服务提供的存储接口生成存储请求,并发送存储请求至分布式存储系统,分布式存储系统中接收到该存储请求的计算节点可以将数据分为多组数据块,然后根据每组数据块计算出校验块,并将每组数据块以及由该组数据块确定的校验块分散写入不同的存储节点100中,例如是写入不同存储节点100的硬盘105中,形成EC条带。存储EC条带中第一个数据块(例如是数据块D0)的存储节点100可以视为主节点,存储EC条带中其他数据块(例如是数据块D1,…数据块Dk-1)的存储节点100可以视为第一从节点,存储校验块(例如是校验块P和校验块Q)的存储节点100可以视为第二从节点。
又例如,分布式存储系统采用图3B所示的架构时,用客户端可以调用存储服务提供的存储接口生成存储请求,并发送存储请求至分布式存储系统,分布式存储系统中的服务器110可以将数据分为多组数据块,然后根据每组数据块计算出校验块,并将每组数据块以及由该组数据块确定的校验块分散写入不同的服务器110中,例如是写入不同服务器100的硬盘105中。存储EC条带中第一个数据块(例如是数据块D0)的服务器110可以视为主节点,存储EC条带中其他数据块(例如是数据块D1,…数据块Dk-1)的存储节点100可以视为第一从节点,存储校验块(例如是数据块D1,…数据块Dk-1)的服务器110可以视为第二从节点。
当分布式存储系统中的若干存储节点100、若干服务器110故障或者存储节点100、服务器110中的硬盘105损坏时,可以导致若干EC条带产生数据丢失的情况。基于此,分布式存储系统可以对产生数据丢失的EC条带进行重构。例如,EC条带丢失若干数据块时,主节点可以从第一从节点中读取EC条带中剩余的数据块,以及从第二从节点中读取校验块,以根据剩余的数据块和校验块,获得丢失的数据块的副本,然后将副本写入未发生故障的存储节点100、服务器110,或者是写入存储节点100、服务器110中未损坏的硬盘105,从而实现重构EC条带。
考虑到重构性能,主节点通常可以获取多路并发的请求,根据多路并发的请求中每一路请求的IO地址,对多路并发的请求合并,合并后的请求用于指示对连续地址段的数据处理,该连续地址段具体是多路并发的请求中离散地址段合并得到,然后主节点可以根据合并后的请求,重构EC条带。为了便于理解,参见图5所示的多路并发重构的流程示意图,主节点可以将多个线程thread 0至thread n中的读(read)请求、写(write)请求按照地址合并到一个读写请求,通过一个线程thread–x,执行该读写请求,以提升磁盘的吞吐率,提升重构性能。
为了使得本申请的技术方案更加清楚、易于理解,下面结合附图,对本申请实施例的数据处理方法进行详细说明。
参见图6所示的数据处理方法的流程图,该方法包括:
S602:主节点获取多路并发的请求。
在分布式存储系统中,节点故障或者节点中的磁盘损坏,可以导致若干EC条带产生数据丢失。针对每一个存在数据丢失的EC条带,主节点可以获取多个读请求和至少一个写请求,以请求重构该EC条带。
其中,每个EC条带对应的多个读请求和至少一个写请求为一路请求。一路请求中的多个读请求用于读取EC条带中剩余的数据。例如,EC条带中缺失若干数据块时,多个读请求用于读取该EC条带中剩余的数据块和至少一个校验块。需要说明,根据EC算法不同,读请求可以用于读取剩余的全部数据块,或者是部分数据块。又例如,EC条带中缺失若干校验块时,多个读请求用于读取该EC条带中剩余的数据块。根据EC算法不同,读请求可以用于读取剩余的全部数据块,或者是部分数据块。一路请求中的写请求用于写入EC条带中丢失的数据块的副本,其中,丢失的数据块可以根据多个读请求所读取的数据(如剩余的数据块和校验块)确定。
在一些可能的实现方式中,考虑到负载均衡,多个EC条带对应的主节点可以是不同的。如图7所示,一个EC条带包括数据块D0,0至数据块D0,3以及校验块P0,另一个EC条带包括数据块D1,0至数据块D1,3以及校验块P1,还有一个EC条带包括数据块D2,0至数据块D2,3以及校验块P2,上述多个EC条带对应的主节点,即存储数据块D0,0的节点、存储数据块D1,0、存储数据块D2,0的节点可以是不同节点。
基于此,分布式存储系统中的节点故障或者节点中的磁盘损坏导致若干EC条带产生数据丢失时,各EC条带对应的主节点可以获取与该EC条带对应的一路请求,如此,当多个EC条带对应同一主节点时,该主节点可以获取多路并发的请求。
需要说明的是,多路并发的请求通常是异步请求,也称作异步IO请求或异步IO。异步IO是计算机操作系统对输入输出的一种处理方式:发起IO请求的线程不等IO操作完成,就继续执行随后的代码,IO结果用其他方式通知发起IO请求的程序。与异步IO相对的是更为常见的“同步(阻塞)IO”:发起IO请求的线程不从正在调用的IO操作函数返回(即被阻塞),直至IO操作完成。
S604:主节点根据多路并发的请求中每一路请求的IO地址,对多路并发的请求合并。
每一路请求的IO地址可以包括读请求所读取的数据的地址和写请求所要写入的数据的地址。当多路并发的请求中不同读请求所读取的数据以及写请求所要写入的数据的地址包括连续的地址或者接近的地址,主节点可以将对路并发的请求合并,以减少随机读写。
具体地,主节点可以根据多路并发的请求中每一路请求的IO地址对多路并发的请求排序,然后将排序后的请求中的IO地址按照顺序合并,获得合并后的请求。其中,合并后的请求可以是顺序IO请求,用于顺序IO。
进一步地,每一路请求的IO地址包括起始地址或结束地址。其中,结束地址野可以根据起始地址和IO长度计算得到。相应地,主节点在归并多路并发的请求时,可以根据多路并发的请求中每一路请求的起始地址对多路并发的请求排序。在一些实施例中,主节点也可以根据多路并发的请求中每一路请求的结束地址对多路并发的请求排序。本实施例对排序方式不作限制。
需要说明的是,主节点在根据每一路请求的IO地址对多路并发的请求排序时,可以是将多路并发的请求中的读请求、写请求均按照IO地址排序,然后将排序后的读请求、写请求合并为一个读写请求。
为了便于理解,以图5示例说明。在该示例中,thread 0的一个读请求和一个写请求的IO地址分别介于thread 1的一个读请求和一个写请求的IO地址之间,则可以将thread1的上述读请求排序在thread 0的一个读请求和一个写请求之前,将thread 1的上述写请求排序在thread 0的一个读请求和一个写请求之后。如此可以保障合并后的请求中IO地址的连续性。
S606:主节点根据合并后的请求,重构EC条带。
具体地,主节点可以根据合并后的请求中的IO地址,执行相应的IO操作,从而重构EC条带。其中,主节点可以根据合并后的请求中的IO地址,缓存多路并发的请求重构EC条带所需要读取的临时数据,该临时数据包括重构EC条带所需要的数据,然后主节点可以根据该临时数据,获得EC条带中丢失的数据块的副本。例如,主节点可以根据临时数据,结合EC算法,校验出EC条带中丢失的数据块,获得丢失的数据块的副本。接着主节点将丢失的数据块的副本写入未发生故障的节点,或者节点中未损坏的磁盘,从而重构EC条带。
其中,根据缺失数据不同,临时数据可以是不同的。例如,EC条带中缺失若干数据块时,临时数据可以为EC条带剩余的数据块中的若干数据块和至少一个校验块。又例如,EC条带中缺失若干校验块时,临时数据可以为EC条带中的若干数据块。根据EC算法不同,上述若干数据块可以是部分数据块或全部数据块,本实施例对此不作限制。
在一些可能的实现方式中,主节点可以采用大缓存,例如是512吉字节(gigabyte,GB)的非易失性内存主机控制器接口规范(nonvolatile memory express,NVME)SSD,或者是非易失性双列直插式内存模块(non-volatile dual in-line memory module,NVDIMM)、SCM来缓存临时数据,如此可以实现在同一缓存介质中缓存多路并发的请求重构EC条带所需要读取的临时数据,由此可以减小访问的地址跨度,提高磁盘的吞吐率,提升重构性能。
其中,图7示出了多路请求缓存的流程示意图,每个主节点如存储数据块D0,0的节点、存储数据块D1,0、存储数据块D2,0的节点可以根据各自合并后的请求,缓存各自所需的临时数据,例如,存储数据块D0,0的节点可以缓存数据块D0,3、数据块D0,0、数据块D0,2以及校验块P,当上述数据块和校验块缓存完成,存储数据块D0,0的节点可以根据上述数据块和校验块,通过EC算法计算出缺失的数据块D0,1的内容,从而获得数据块D0,1的副本,即数据块D′0,1。需要说明的是,图7仅仅示出了一路请求对应的数据块、校验块,实际应用时,主节点可以缓存多路并发的请求合并后的请求所对应的数据块、校验块,从而以顺序读写模式进行IO。在计算出上述缺失的数据块的内容,获得缺失的数据块的副本后,主节点可以写的形式将其插入读写队列,如图8所示,如此,主节点可以以顺序IO模式进行读写,由此完成EC重构。
需要说明的是,主节点在根据合并后的请求中的连续地址段,执行IO操作时,还可以按照磁盘的磁头转动方向,单向执行IO操作,以重构EC条带。通过构造单向执行流,使得读写流只向一个方向执行,由此保证最小的寻道时间,缩短重构时间。
进一步地,主节点还可以存储丢失的数据块的副本的元信息,例如主节点可以采用键值(key value,KV)形式存储上述元信息至数据库。其中,元信息可以包括位置信息。如此,有利于后续查找该数据块或修改该数据块时,可以直接根据地址信息访问该数据块。
基于上述内容描述,本申请实施例通过将多路重构任务中的异步IO都归并到同一执行流中,增加磁盘IO的顺序性,提升磁盘吞吐率。并且,本申请实施例通过缓存大量的临时数据(如恢复丢失的数据块所需要读取数据的元信息以及所需要读取的数据),增加IO地址的密集度和IO地址的连续性,从而提升数据从磁盘读写的性能。如此可以极大地提高重构性能。
以上结合图1至图8对本申请提供的数据处理方法进行介绍,接下来结合附图对本申请提供的数据处理装置的功能以及实现该数据处理装置的功能的电子设备、分布式存储系统进行介绍。
首先,参见图9,示出了一种数据处理装置的结构示意图,数据处理装置900可以部署于分布式存储系统中主节点,装置900包括:
获取模块902,用于获取多路并发的请求,所述多路并发的请求中的每一路请求用于重构一个EC条带;
合并模块904,用于根据所述多路并发的请求中每一路请求的输入输出IO地址,对所述多路并发的请求合并,合并后的所述请求用于指示连续地址段;
重构模块906,用于根据合并后的所述请求,重构所述EC条带。
应理解的是,本申请实施例的装置900可以通过中央处理单元(centralprocessing unit,CPU)实现,也可以通过专用集成电路(application-specificintegrated circuit,ASIC)实现,或可编程逻辑器件(programmable logic device,PLD)实现,上述PLD可以是复杂程序逻辑器件(complex programmable logical device,CPLD),现场可编程门阵列(field-programmable gate array,FPGA),通用阵列逻辑(genericarray logic,GAL)、数据处理单元(data processing unit,DPU)、片上系统(system onchip,SoC)或其任意组合。
当通过软件实现图6所示的数据处理方法时,装置900及其各个模块也可以为软件模块。该软件模块(也可以称为应用程序模块)可以是计算引擎、虚机(virtual machine,VM)或者是容器(container)。虚机是模拟出来的一台虚拟的计算机,也即逻辑上的一台计算机。容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以达到隔离用户空间、进程和资源的目的。应理解,上述虚机、容器是通过虚拟化服务如VM服务、容器服务实现,在实际应用中,虚拟化服务还可以时其他轻量级或者重量级的虚拟化服务,此处不作具体限定。
在一些可能的实现方式中,所述合并模块904具体用于:
根据所述多路并发的请求中每一路请求的IO地址对所述多路并发的请求排序;
将排序后的所述请求中的IO地址按照顺序合并,获得合并后的所述请求,所述合并后的所述请求用于顺序IO。
在一些可能的实现方式中,所述每一路请求的IO地址包括起始地址或结束地址;
所述合并模块904具体用于:
根据所述多路并发的请求中每一路请求的起始地址对所述多路并发的请求排序;或者,
根据所述多路并发的请求中每一路请求的结束地址对所述多路并发的请求排序。
在一些可能的实现方式中,所述重构模块906具体用于:
根据合并后的所述请求中的连续地址段,按照磁盘的磁头转动方向,单向执行IO操作,以重构所述EC条带。
在一些可能的实现方式中,所述获取模块902具体用于:
针对每一个存在数据丢失的所述EC条带,获取多个读请求和至少一个写请求,所述多个读请求用于读取所述EC条带中剩余的数据块和校验块,所述至少一个写请求用于写入所述EC条带中丢失的数据块,所述丢失的数据块根据所述剩余的数据块和校验块确定。
在一些可能的实现方式中,所述重构模块906具体用于:
根据所述合并后的所述请求,缓存所述多路并发的请求重构所述EC条带所需要读取的临时数据,所述临时数据包括所述EC条带剩余的数据块和校验块;
根据所述临时数据,获得所述EC条带中丢失的数据块的副本;
在所述分布式存储系统中写入所述EC条带中丢失的数据块的副本,以重构所述EC条带。
在一些可能的实现方式中,所述重构模块906还用于:
存储所述副本的元信息,所述元信息包括位置信息。
在一些可能的实现方式中,所述重构模块906具体用于:
在同一缓存介质中缓存所述多路并发的请求重构所述EC条带所需要读取的临时数据。
在一些可能的实现方式中,所述多路并发的请求为异步请求。
由于图9所示的数据处理装置1000对应于图6所示的方法,故图9所示的数据处理装置900的具体实现方式及其所具有的技术效果,可以参见前述实施例中的相关之处描述,在此不做赘述。
接下来,参见图10所示的电子设备1000的的硬件结构图,该计算设备1000可以是前述主节点,用于实现数据处理装置900的功能。该电子设备1000可以是服务器或终端设备。终端设备包括但不限于台式机、笔记本电脑、平板电脑或智能手机。
如图10所示,计算设备1000包括:总线1002、处理器1004、存储器1006和通信接口1008。处理器1004、存储器1006和通信接口1008之间通过总线1002通信。应理解,本申请不限定计算设备1000中的处理器、存储器的个数。
总线1002可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。总线1004可包括在计算设备1000各个部件(例如,存储器1006、处理器1004、通信接口1008)之间传送信息的通路。
处理器1004可以包括中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。
存储器1006可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。处理器1004还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard diskdrive,HDD)或固态硬盘(solid state drive,SSD)。存储器1006中存储有可执行的程序代码,处理器1004执行该可执行的程序代码以实现前述数据处理方法。具体的,存储器1006上存有数据处理装置900用于执行数据处理方法的指令。
通信接口1008使用例如但不限于网络接口卡、收发器一类的收发模块,来实现计算设备1000与其他设备或通信网络之间的通信。
基于本申请实施例提供的电子设备1000,本申请实施例还提供一种分布式存储系统。该分布式存储系统可以采用如图3A所示的存算分离架构,或图3B所示的存算一体架构。为了便于描述,本实施例以存算一体架构示例说明。
如图11所示,该分布式存储系统包括多个电子设备1000,多个电子设备1000中的至少一个电子设备1000可以为分布式存储系统的主节点,其余电子设备1000可以为分布式存储系统的从节点,如存储数据块的第一从节点和存储校验块的第二从节点。
多个电子设备1000中的存储器1006中可以存有相同的数据处理装置900用于执行数据处理方法的指令。作为主节点的电子设备100可以执行上述指令,从而执行图6所示实施例的数据处理方法。
例如,作为主节点的电子设备100可以执行上述指令,从而执行如下方法步骤:
获取多路并发的请求,多路并发的请求中的每一路请求用于重构一个EC条带;
根据多路并发的请求中每一路请求的IO地址,对多路并发的请求合并,合并后的请求用于指示连续地址段;
根据合并后的请求,重构EC条带。
其中,根据合并后的请求重构EC条带,可以是根据合并后的请求,缓存多路并发的请求重构EC条带所需要读取的临时数据,该临时数据包括EC条带剩余的数据块和校验块,然后根据临时数据,获得EC条带中丢失的数据块的副本,接着在分布式存储系统中,例如是其他电子设备1000中,写入EC条带中丢失的数据块的副本,以重构EC条带。
在一些可能的实现方式中,分布式存储系统中的若干电子设备1000也可以用于执行数据处装置900用于执行数据处理方法的部分指令。换言之,一个或多个电子设备1000的组合可以共同执行数据处理装置900用于执行数据处理方法的指令。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state disk,SSD)。
本申请实施例还提供了一种包含指令的计算机程序产品。所述计算机程序产品可以是包含指令的,能够运行在电子设备1000上或被储存在任何可用介质中的软件或程序产品。当所述计算机程序产品在至少一个电子设备1000上运行时,使得至少一个电子设备1000执行上述数据处理方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的保护范围。

Claims (10)

1.一种数据处理方法,其特征在于,所述方法由分布式存储系统中主节点执行,包括:
获取多路并发的请求,所述多路并发的请求中的每一路请求用于重构一个纠删码EC条带;
根据所述多路并发的请求中每一路请求的输入输出IO地址,对所述多路并发的请求合并,合并后的所述请求用于指示对连续地址段的数据处理;
根据合并后的所述请求,重构所述EC条带。
2.根据权利要求1所述的方法,其特征在于,所述根据所述多路并发的请求中每一路请求的输入输出IO地址,对所述多路并发的请求合并,包括:
根据所述多路并发的请求中每一路请求的IO地址对所述多路并发的请求排序;
将排序后的所述请求中的IO地址按照顺序合并,获得合并后的所述请求,所述合并后的所述请求用于顺序IO。
3.根据权利要求2所述的方法,其特征在于,所述每一路请求的IO地址包括起始地址或结束地址;
所述根据所述多路并发的请求中每一路请求的IO地址对所述多路并发的请求排序,包括:
根据所述多路并发的请求中每一路请求的起始地址对所述多路并发的请求排序;或者,
根据所述多路并发的请求中每一路请求的结束地址对所述多路并发的请求排序。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述根据合并后的所述请求,重构所述EC条带,包括:
根据合并后的所述请求中的连续地址段,按照磁盘的磁头转动方向,单向执行IO操作,以重构所述EC条带。
5.根据权利要求4所述的方法,其特征在于,所述根据合并后的所述请求,重构所述EC条带,包括:
根据所述合并后的所述请求,缓存所述多路并发的请求重构所述EC条带所需要读取的临时数据,所述临时数据包括所述EC条带剩余的数据块和校验块;
根据所述临时数据,获得所述EC条带中丢失的数据块的副本;
在所述分布式存储系统中写入所述EC条带中丢失的数据块的副本,以重构所述EC条带。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
存储所述副本的元信息,所述元信息包括位置信息。
7.根据权利要求5所述的方法,其特征在于,所述缓存所述多路并发的请求重构所述EC条带所需要读取的临时数据,包括:
在同一缓存介质中缓存所述多路并发的请求重构所述EC条带所需要读取的临时数据。
8.根据权利要求1至7任一项所述的方法,其特征在于,所述多路并发的请求为异步请求。
9.一种数据处理装置,其特征在于,所述装置部署于分布式存储系统中的主节点,所述装置包括:
获取模块,用于获取多路并发的请求,所述多路并发的请求中的每一路请求用于重构一个纠删码EC条带;
合并模块,用于根据所述多路并发的请求中每一路请求的输入输出IO地址,对所述多路并发的请求合并,合并后的所述请求用于指示连续地址段;
重构模块,用于根据合并后的所述请求,重构所述EC条带。
10.一种电子设备,其特征在于,所述电子设备包括至少一个处理器和至少一个存储器,所述至少一个存储器中存储有计算机可读指令;所述至少一个处理器执行所述计算机可读指令,以使得所述电子设备执行如权利要求1至8中任一项所述的方法。
CN202211055072.7A 2022-08-31 2022-08-31 一种数据处理方法及相关设备 Pending CN117666931A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211055072.7A CN117666931A (zh) 2022-08-31 2022-08-31 一种数据处理方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211055072.7A CN117666931A (zh) 2022-08-31 2022-08-31 一种数据处理方法及相关设备

Publications (1)

Publication Number Publication Date
CN117666931A true CN117666931A (zh) 2024-03-08

Family

ID=90068683

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211055072.7A Pending CN117666931A (zh) 2022-08-31 2022-08-31 一种数据处理方法及相关设备

Country Status (1)

Country Link
CN (1) CN117666931A (zh)

Similar Documents

Publication Publication Date Title
US11409705B2 (en) Log-structured storage device format
US11340794B2 (en) Multiprocessor system with independent direct access to bulk solid state memory resources
US10983955B2 (en) Data unit cloning in memory-based file systems
US9977746B2 (en) Processing of incoming blocks in deduplicating storage system
KR101827239B1 (ko) 분산 데이터 시스템들을 위한 전 시스템에 미치는 체크포인트 회피
KR101833114B1 (ko) 분산 데이터베이스 시스템들을 위한 고속 장애 복구
CN107798130B (zh) 一种分布式存储快照的方法
US10387307B2 (en) Lock-free raid implementation in multi-queue architecture
Jung et al. nvramdisk: A transactional block device driver for non-volatile ram
US20160291881A1 (en) Method and apparatus for improving disk array performance
US11379326B2 (en) Data access method, apparatus and computer program product
CN114780025A (zh) 软件raid请求处理方法、控制器及raid存储系统
CN111736764A (zh) 一种数据库一体机的存储系统及数据请求处理方法、装置
US20190042365A1 (en) Read-optimized lazy erasure coding
EP4170499A1 (en) Data storage method, storage system, storage device, and storage medium
WO2023020136A1 (zh) 存储系统中的数据存储方法及装置
CN115793957A (zh) 写数据的方法、装置及计算机存储介质
US11354233B2 (en) Method and system for facilitating fast crash recovery in a storage device
CN117666931A (zh) 一种数据处理方法及相关设备
US11397528B2 (en) Consistent IO performance on undefined target devices in a cascaded snapshot environment
WO2018055686A1 (ja) 情報処理システム
US11347409B1 (en) Method and apparatus for selective compression of data during initial synchronization of mirrored storage resources
WO2024001863A1 (zh) 一种数据处理方法及相关设备
CN114265551B (zh) 存储集群中的数据处理方法、存储集群、存储节点及设备
US11663128B1 (en) Techniques for performing metadata updates for cache consistency

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