分布式存储系统中元数据存储方法、系统及存储介质与流程

文档序号:16528725发布日期:2019-01-05 10:33阅读:253来源:国知局
本发明涉及数据存储
技术领域
:,尤其涉及一种分布式存储系统中元数据存储方法、系统及存储介质。
背景技术
::在分布式存储系统中,管理节点将用户数据存储到存储节点后,会产生记录数据的逻辑地址,物理地址等的元数据,元数据也要存储到存储节点。常见的元数据存储方式是将元数据分条中的块打散到各存储节点,读取该元数据时,需要从各存储节点读取元数据分条中的块,拼凑成元数据分条,但存储节点间数据转发量大,影响性能。另外一种方式元数据在存储节点以多副本形式存储,但会增加存储空间开销。技术实现要素:第一方面,本发明实施例提供了一种分布式存储系统中元数据存储方案,在所述分布式存储系统中包含管理节点和(m+n)个存储节点,所述管理节点和(m+n)个存储节点均存储有元数据分条的分区视图;所述元数据分条的分区视图包含主数据存储节点dsa、数据存储节点dsi和校验存储节点csr;其中,n为不小于2的自然数,m为不小于1的自然数,a为自然数1至n中的一个,i为自然数1至n中的除a外的每一个,r为自然数1至m中的每一个;在所述存储方案中:所述管理节点根据所述元数据分条的分区视图为所述元数据分条确定主数据存储节点dsa、数据存储节点dsi和校验存储节点csr;所述元数据分条包含元数据块da、di以及校验块cr,将di发送到所述数据存储节点dsi,将da发送到所述主数据存储节点dsa,将cr发送到所述校验存储节点csr;所述校验存储节点csr接收并存储cr;所述数据存储节点dsi接收并存储di,并根据所述元数据分条的分区视图将di发送到所述主数据存储节点dsa;所述主数据存储节点dsa接收并存储da和di。在本方案中,在实现元数据使用纠删码(erasurecoding,ec)保护机制下,主数据存储节点dsa备份元数据分条中其他元数据块di,因为只需要将数据存储节点dsi上的元数据块di在主数据存储节点dsa上备份,相比现有技术中所有元数据块多副本,不需要校验块副本,减少了存储空间,同时在客户端访问元数据时,可以从主数据存储节点dsa访问所有元数据块,提高了元数据访问速度。本方案的分布式存储系统可以为分布式文件系统、分布式对象存储系统或分布式块设备存储。可选的,所述管理节点根据所述元数据分条的分区视图为所述元数据分条确定主数据存储节点dsa、数据存储节点dsi和校验存储节点csr,具体包括:所述管理节点根据产生所述元数据分条中的元数据的写请求确定所述元数据分条对应的分区;所述管理节点根据所述元数据分条对应的分区查询所述元数据分条的分区视图确定所述主数据存储节点dsa、所述数据存储节点dsi和所述校验存储节点csr。可选的,所述管理节点根据所述写请求携带的地址确定所述元数据分条对应的分区。可选的,所述校验存储节点csr存储cr具体包括:所述校验存储节点csr为所述cr分配分片sr,并且建立所述cr的标识与所述分片sr的映射关系;所述数据存储节点dsi存储di具体包括:所述数据存储节点dsi为所述di分配分片sdi,并且建立所述di的标识与所述分片sdi的映射关系;所述主数据存储节点dsa存储da和di,具体包括:所述主数据存储节点dsa为所述da分配分片sda,并且建立所述da的标识与所述分片sda的映射关系,为所述di分配分片sdi,并且建立所述di的标识与所述分片sdi的映射关系。进一步地,管理节点建立di的标识与数据存储节点dsi和主数据存储节点dsa的映射关系。在对元数据分条进行垃圾回收时,管理节点可以根据元数据分条中元数据块的标识与存储节点的映射关系,将元数据块在数据存储节点以及主数据存储节点中的数据均回收,提高了元数据回收的效率。第二方面,相应地,本发明实施例还提供了一种分布式存储系统,在所述分布式存储系统中包含管理节点和(m+n)个存储节点,所述管理节点和(m+n)个存储节点均存储有元数据分条的分区视图;所述元数据分条的分区视图包含主数据存储节点dsa、数据存储节点dsi和校验存储节点csr;其中,n为不小于2的自然数,m为不小于1的自然数,a为自然数1至n中的一个,i为自然数1至n中的除a外的每一个,r为自然数1至m中的每一个;所述分布式存储系统用于实现第一方面各种实现方案。相应地,本发明还提供了非易失性计算机可读存储介质和计算机程序产品,当本发明实施例提供的存储设备的存储器加载非易失性计算机可读存储介质和计算机程序产品中包含的计算机程序指令,所述计算机程序指令可运行于分布式存储系统中,分布式存储系统包含管理节点和(m+n)个存储节点,所述管理节点和(m+n)个存储节点均存储有元数据分条的分区视图;所述元数据分条的分区视图包含主数据存储节点dsa、数据存储节点dsi和校验存储节点csr;其中,n为不小于2的自然数,m为不小于1的自然数,a为自然数1至n中的一个,i为自然数1至n中的除a外的每一个,r为自然数1至m中的每一个;当一个或多个计算机执行所述计算机程序指令分别作为所述分布式存储系统中的管理节点、主数据存储节点dsa、数据存储节点dsi和校验存储节点csr用于实现第一方面各种实现方案。在第一方面公开的各种分布式存储系统中元数据存储方案也可以适用元数据对应的数据的存储。相应的,第二方面方向的分布式存储系统以及第三方面的非易失性计算机可读存储介质和计算机程序产品同样也适用于数据存储。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。图1为本发明实施例提供的一种分布式块设备存储架构示意图;图2为本发明实施例提供的一种分布式块设备中服务器结构示意图;图3为本发明实施例提供的一种数据分条与分区视图关系示意图;图4为本发明实施例提供的一种数据分条示意图;图5为本发明实施例提供的分区视图示意图;图6为本发明实施例提供的一种元数据分条与分区视图关系示意图;图7为本发明实施例元数据存储流程图;图8为本发明实施例提供的一种元数据分条示意图;图9为本发明实施例提供的元数据存储示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述。分布式存储系统主要有分布式文件系统存储、分布式对象存储和分布式块设备存储等几种形式,例如华为的系列产品。本发明实施例以分布式块设备存储为例进行说明。示例性的如图1所示,分布式块设备存储包括多台服务器1、服务器2、服务器3、服务器4、服务器5和服务器6,服务器间互相通信。在实际应用当中,分布式块设备存储中服务器的数量可以根据实际需求增加,本发明实施例对此不作限定。分布式块设备存储的服务器中包含如图2所示的结构。如图2所示,分布式块设备存储中的每台服务器包含中央处理单元(centralprocessingunit,cpu)201、内存202、硬盘1、硬盘2和硬盘3,内存202中存储计算机指令,cpu201执行内存202中的程序指令执行相应的操作。硬盘可以为机械硬盘和固态硬盘中的至少一种。另外,为节省cpu201的计算资源,现场可编程门阵列(fieldprogrammablegatearray,fpga)或其他硬件也可以用于cpu201上述相应的操作,或者,fpga或其他硬件与cpu201共同完成上述相应的操作。为方便描述,本发明实施例统一描述为处理器用于实现上述相应的操作。在图2所示的结构中,内存202中加载应用程序,cpu201执行内存202中的应用程序指令,则服务器作为客户端。其中,应用程序可以为虚拟机(virtualmachine,vm),也可以为某一个特定应用,如办公软件等。客户端向分布式块设备存储写入数据或从分布式块设备存储中读取数据。内存202中加载存储管理程序,cpu201执行内存202中的作为虚拟块存储管理程序的存储管理程序指令,则服务器作为管理节点,负责卷元数据的管理,用于向客户端提供块协议访问接口,为客户端提供分布式存储接入点服务,使客户端能够通过管理节点访问分布式块设备存储的存储资源。内存202中加载存储对象程序,cpu201执行内存202中的存储对象程序指令,则服务器作为存储节点,用于执行具体的输入输出(input/output,i/o)操作。在每个服务器上可以运行多个存储对象程序的进程,示例性的,一块硬盘默认对应运行一个存储对象程序进程,每个存储对象程序进程会管理一块硬盘,则服务器运行每一个存储对象程序的进程作为一个存储节点。具体实现,也可以一个服务器上运行一个存储对象程序的进程对应服务器上的所有硬盘。本发明实施例以一个存储对象程序进程会管理一块硬盘为例进行描述。分布式块设备存储初始化时,每个存储对象程序的进程会按照1mb为单位对硬盘进行分片管理,并在硬盘的元数据管理区域记录每个1mb分片的分配信息,硬盘的分片组成存储资源池。存储管理程序与其所能访问的资源池的所有存储对象程序的进程点对点通信,即管理节点与其所能访问的资源池的所有存储节点进行通信,从而管理节点能并发访问资源池的所有硬盘。在分布式块设备存储初始化时,将哈希空间(如0-2^32,)划分为n等份,每1等份是1个分区(partition),这n等份按照硬盘数量进行均分。例如,分布式块存储设备存储中n默认为3600,即分区分别为p1,p2,p3…p3600。如图3所示,假设当前分布式块设备存储有18块硬盘(存储节点),则每块存储节点承载200个分区。上述分区与存储节点对应关系,即分区视图,在分布式块设备存储初始化时会分配好,后续会随着分布式块设备存储中硬盘数量的变化进行调整。分布式块设备存储的服务器会在内存202中保存该分区视图,管理节点使用该分区视图进行快速路由。每一个存储节点中也保存有分布式块设备存储系统的所有分区视图,即每一个分区与存储节点的对应关系。同时根据分布式块设备存储的可靠性要求,可以使用纠删码(erasurecoding,ec)算法提高数据可靠性,如使用3+1模式,即3个数据块和1个校验块组成数据分条,如图4所示,则分区视图为“分区-主数据存储节点-数据存储节点1-数据存储节点2-校验存储节点,示例性的,分区视图如图5所示。该分区视图表示分区对应主数据节点以及用于存储数据分条的其他数据块的数据存储节点1和数据节点2,以及存储校验数据的校验存储节点,存储在数据存储节点1和数据存储节点2的数据块的备份数据存储节点为主数据存储节点。分布式块设备存储会对每个逻辑单元号(logicalunitnumber,lun)在逻辑上按照1mb大小进行切片,例如1gb的lun则会被切成1024*1mb分片。如图3所示,客户端通过管理节点向lun发送写请求的时候,在小型计算机系统接口(smallcomputersysteminterface,scsi)命令中会带lun标识(identifier,id)、逻辑块地址(logicalblockaddress,lba)id以及待写数据,客户端所在的管理节点接收写请求,根据lunid和lbaid组成一个键key,该key会包含lbaid对1mb的取整计算信息。通过分布式哈希表(distributedhashtable,dht)hash计算出一个整数(范围在0-2^32内),并落在指定分区中;客户端所在的管理节点根据内存202中记录的分区视图确定主数据存储节点、数据存储节点1、数据存储节点2和校验存储节点,管理节点将ec数据分条中的数据块1、数据块2、数据块3和校验块4分别发送到主数据存储节点1、数据存储节点2、数据存储节点3和校验存储节点4。主数据存储节点存储数据块1,数据存储节点1存储数据块2,数据存储节点2存储数据块3,校验存储节点存储校验块1。数据存储节点1和2根据分区视图分别确定主数据存储节点,数据存储节点1将数据块2备份到主数据存储节点,数据存储节点2将数据块3备份到主数据存储节点,主数据存储节点分别存储数据块2和数据块3。具体实现中,主数据存储节点为数据块1从其管理的硬盘中分配分片1,建立数据块1的标识与分片1的映射关系;数据存储节点1从其管理的硬盘中为数据块2分配分片2,建立数据块2的标识与分片2的映射关系;数据存储节点2从其管理的硬盘中为数据块3分配分片3,建立数据块3的标识与分片3的映射关系;校验存储节点从其管理的硬盘中为校验块1分配分片4,建立校验块1的标识与分片4的映射关系。主数据存储节点接收数据存储节点1发送的数据块2和数据存储节点2发送的数据块3,主数据存储节点从其管理的硬盘中分配分片5和分片6,主数据存储节点建立数据块2的标识与分片5的映射关系,以及数据块3的标识与分片6的映射关系。本发明实施例中,以数据块的标识与分片的映射关系为例,当存储对象程序的1个进程对应1个硬盘时,也即存储节点即为硬盘本身,则数据块的标识与分片的映射关系为数据块的标识与分片物理地址的映射关系;当存储对象程序的1个进程对应多个硬盘时,也即存储节点管理多个硬盘,则数据块的标识与分片的映射关系为包括数据块的标识与存储该数据块的硬盘的映射,以及存储该数据块的硬盘到分片的映射。分片物理地址的映射关系当。进一步地,数据块2分别存储到分片2和分片5,数据块3分别存储在分片3和6,管理节点建立并保存数据块2的标识与数据存储节点1和主数据存储节点的映射,建立并保存数据块3的标识与数据存储节点2和主数据存储节点的映射关系。进一步地,数据存储节点1保存保存数据块2的标识与数据存储节点1和主数据存储节点的映射,数据存储节点2保存数据块3的标识与数据存储节点2和主数据存储节点的映射关系。在对数据分条进行垃圾回收时,管理节点可以根据数据分条中数据块的标识与存储节点的映射关系,将数据块在数据存储节点以及主数据存储节点中的数据均回收,提高了数据回收的效率本发明实施例中,客户端向分布式块设备存储发送写请求写入数据时,会产生元数据,用于记录数据的逻辑地址和物理地址等。本发明实施例中,数据对应的元数据存储与数据存储使用相同的ec算法。基于ec算法组成的元数据分条与上述基于ec算法的组成数据分条具有相同的分区视图,如图6所示。在分布式存储系统存储元数据,其中分布式存储系统包含管理节点和(m+n)个存储节点,管理节点和(m+n)个存储节点均存储有元数据分条的分区视图;元数据分条的分区视图包含主数据存储节点dsa、数据存储节点dsi和校验存储节点csr;其中,n为不小于2的自然数,m为不小于1的自然数,a为自然数1至n中的一个,i为自然数1至n中的除a外的每一个,r为自然数1至m中的每一个;在该分布式存储系统存储执行如图7所示的流程:步骤701:管理节点根据所述元数据分条的分区视图为所述元数据分条确定主数据存储节点dsa、数据存储节点dsi和校验存储节点csr;所述元数据分条包含元数据块da、di以及校验块cr。具体的,所述管理节点根据所述元数据分条的分区视图为所述元数据分条确定主数据存储节点dsa、数据存储节点dsi和校验存储节点csr,具体包括:所述管理节点根据产生所述元数据分条中的元数据的写请求确定所述元数据分条对应的分区;所述管理节点根据所述元数据分条对应的分区查询所述元数据分条的分区视图确定所述主数据存储节点dsa、所述数据存储节点dsi和所述校验存储节点csr。具体的,所述管理节点根据所述写请求携带的地址确定所述元数据分条对应的分区。具体可参见分布式块设备存储在存储客户端发送的写请求时的方案,在此不再赘述。步骤702:所述管理节点将di发送到所述数据存储节点dsi,将da发送到所述主数据存储节点dsa,将cr发送到所述校验存储节点csr。步骤703:所述校验存储节点csr接收并存储cr。步骤704:所述数据存储节点dsi接收并存储di,并根据所述元数据分条的分区视图将di发送到所述主数据存储节点dsa。步骤705:所述主数据存储节点dsa接收并存储da和di。具体的,所述校验存储节点csr存储cr具体包括:所述校验存储节点csr为所述cr分配分片sr,并且建立所述cr的标识与所述分片sr的映射关系;所述数据存储节点dsi存储di具体包括:所述数据存储节点dsi为所述di分配分片sdi,并且建立所述di的标识与所述分片sdi的映射关系;所述主数据存储节点dsa存储da和di,具体包括:所述主数据存储节点dsa为所述da分配分片sda,并且建立所述da的标识与所述分片sda的映射关系,为所述di分配分片sdi,并且建立所述di的标识与所述分片sdi的映射关系。进一步地,管理节点建立di的标识与数据存储节点dsi和主数据存储节点dsa的映射关系。进一步地,进一步地,数据存储节点1保存保存di的标识与数据存储节点dsi和主数据存储节点dsa的映射关系。在对元数据分条进行垃圾回收时,管理节点可以根据元数据分条中元数据块的标识与存储节点的映射关系,将元数据块在数据存储节点以及主数据存储节点中的数据均回收,提高了元数据回收的效率。本发明实施例中,结合前面所述的分布式块设备存储及数据存储方式,如图8所示,使用ec算法的元数据分条中元数据块为d1,d2和d3,校验块为c1。客户端所在的管理节点根据内存202中记录的分区视图“分区-主数据存储节点-数据存储节点1-数据存储节点2-校验存储节点”确定主数据存储节点、数据存储节点1、数据存储节点2和校验存储节点。该分区视图表示分区对应主数据节点以及用于存储元数据分条的其他数据块的数据存储节点1和数据节点2,以及存储校验数据的校验存储节点,存储在数据存储节点1和数据存储节点2的元数据块的备份数据存储节点为主数据存储节点。管理节点将基于ec算法的元数据分条中的d1、d2、d3和c1分别发送到主数据存储节点、数据存储节点1、数据存储节点2和校验存储节点4。主数据存储节点接收并存储d1,数据存储节点1接收并存储d2,数据存储节点2接收并存储d3,校验存储节点接收并存储c1。数据存储节点1和2根据分区视图分别确定主数据存储节点,数据存储节点1将d2备份到主数据存储节点,数据存储节点2将d3备份到主数据存储节点,主数据存储节点接收并存储d2和d3。具体实现中,如图9所示,主数据存储节点为d1从其管理的硬盘中分配分片7,建立d1的标识与分片7的映射关系;数据存储节点1从其管理的硬盘中为d2分配分片8,建立d2的标识与分片8的映射关系;数据存储节点2从其管理的硬盘中为d3分配分片9,建立d3的标识与分片9的映射关系;校验存储节点从其管理的硬盘中为c1分配分片10,建立c1的标识与分片10的映射关系。主数据存储节点接收数据存储节点1发送的d2和数据存储节点2发送的d3,主数据存储节点从其管理的硬盘中分配分片11和分片12,主数据存储节点建立d2的标识与分片11的映射关系,以及d3的标识与分片12的映射关系。本发明实施例中,以元数据块的标识与分片的映射关系为例,当存储对象程序的1个进程对应1个硬盘时,也即存储节点即为硬盘本身,则元数据块的标识与分片的映射关系为元数据块的标识与分片物理地址的映射关系;当存储对象程序的1个进程对应多个硬盘时,也即存储节点管理多个硬盘,则元数据块的标识与分片的映射关系为包括元数据块的标识与存储该元数据块的硬盘的映射,以及存储该元数据块的硬盘到分片的映射。进一步地,d2分别存储到分片8和分片11,d3分别存储在分片9和12,管理节点建立并保存d2的标识与数据存储节点1和主数据存储节点的映射,建立并保存d3的标识与数据存储节点2和主数据存储节点的映射关系。进一步地,数据存储节点1保存保存d2的标识与数据存储节点1和主数据存储节点的映射,数据存储节点2保存d3的标识与数据存储节点2和主数据存储节点的映射关系。在对元数据分条进行垃圾回收时,管理节点可以根据元数据分条中元数据块的标识与存储节点的映射关系,将元数据块在数据存储节点以及主数据存储节点中的数据均回收,提高了元数据回收的效率。因此,在使用ec算法组成的元数据分条实现数据可靠性的场景下,主数据存储节点备份元数据分条中其他元数据块,因为只需要将数据存储节点上的元数据块在主数据存储节点上备份,相比现有技术中所有元数据块多副本,减少了存储空间,同时在客户端访问元数据时,只需要从主数据存储节点访问所有元数据块,提高了元数据访问速度。本发明实施例,还提供了非易失性计算机可读存储介质和计算机程序产品,非易失性计算机可读存储介质和计算机程序产品中包含的计算机程序指令,cpu执行内存中加载的该计算机程序指令用于实现本发明各实施中管理节点和存储节点(主数据存储节点、数据存储节点和校验存储节点)对应的功能。本发明实施例中给出的示例性描述。本发明实施例中的“分片1”、“分片2”。。。“分片12”等并不是用于严格限定先后关系,只是用于区分不同的分片。本发明实施例中的分片可以为硬盘中的物理块等。本发明实施例中的硬盘,如前所述,可以为机械盘和固态硬盘中的至少一种。本发明实施例中存储对象程序的进程对应的硬盘还可以为存储阵列等,本发明实施例对此不作限定。在本发明所提供的几个实施例中,应该理解到,所公开的装置、方法,可以通过其它的方式实现。例如,以上所描述的装置实施例所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1