一种分布式存储系统及其数据冗余保护方法和相关设备与流程

文档序号:18463313发布日期:2019-08-17 02:13阅读:371来源:国知局
一种分布式存储系统及其数据冗余保护方法和相关设备与流程

本申请涉及分布式存储技术领域,特别涉及一种分布式存储系统及其数据冗余保护方法、装置、设备及计算机可读存储介质。



背景技术:

数据冗余保护是分布式存储系统中为避免因存储设备故障、网络故障或者软件故障而导致数据丢失的一种常用保护方法,它往往通过采用保存多份数据的方式来提高存储系统的数据安全性和可靠性。

现有技术中的数据冗余保护方法大多是按照逻辑卷的粒度来配置冗余策略的,即每一种冗余策略分别只对应于一个逻辑卷,以该冗余策略所写入的数据存储在与该逻辑卷对应的物理磁盘的分区中。其中,逻辑卷是通过将若干个物理磁盘中的若干个分区组织起来所形成的一个较大的扩展分区,因此,一个逻辑卷的存储容量已经在磁盘分区时规定好了,即使后期出现容量不足的情况,也无法直接共享其他冗余策略的逻辑卷所对应的磁盘资源,但被配置为其他冗余策略的逻辑卷却很可能处于存储资源闲置的状态,如此只能在条件允许的情况下,再次进行磁盘分区扩展该逻辑卷的容量。特别地,若前期逻辑卷的冗余策略配置与后期实际要使用的冗余策略不同时,也同样无法直接使用,仍需重新配置。鉴于此,提供一种解决上述技术问题的方案已经是本领域技术人员所亟需关注的。



技术实现要素:

本申请的目的在于提供一种分布式存储系统及其数据冗余保护方法、装置、设备及计算机可读存储介质,以便实现多种冗余策略对磁盘资源的弹性使用和共享,进而有效提高磁盘资源的利用率和经济效益。

为解决上述技术问题,第一方面,本申请公开了一种数据冗余保护方法,包括:

获取针对于逻辑盘的业务io请求;所述逻辑盘为预先在接收到逻辑盘创建请求和冗余策略类型后而创建生成,所述逻辑盘包括目标数量个分别以文件的形式映射至不同物理盘的数据块,所述目标数量为所述冗余策略类型所指定的数据份数;

根据所述冗余策略类型将所述业务io请求解析生成分别对应于各个所述数据块的各个底层文件io请求;

将各个所述底层文件io请求分别发送至对应的所述物理盘,以便基于各个所述物理盘上的文件系统执行对应的所述底层文件io请求。

可选地,不同冗余策略类型所对应的逻辑盘具有公用物理盘。

可选地,所述逻辑盘具体通过以下步骤而创建生成:

确定所述冗余策略类型所对应的数据份数并作为所述目标数量;

分别生成各个所述数据块的数据块id;

确定与各个所述数据块id一一对应的物理盘id;

创建分别以文件的形式映射至对应的物理盘的各个所述数据块。

可选地,所述确定与各个所述数据块id一一对应的物理盘id,包括:

获取数据块对象池中各个物理盘的使用信息;

基于容量均衡原则或者数据块数量均衡原则,根据所述使用信息确定与各个所述数据块id一一对应的物理盘id。

可选地,所述数据块对象池具体通过以下步骤而预先创建:

纳管分布式存储系统中的各个物理盘;

在各个所述物理盘上挂装文件系统;

在各个所述物理盘上部署用于将获取的所述底层文件io请求传输至所述文件系统进行处理的服务端程序。

可选地,所述冗余策略类型为两副本冗余策略或三副本冗余策略或纠删保护策略。

第二方面,本申请公开了一种数据冗余保护装置,包括:

创建模块,用于预先在接收到逻辑盘创建请求和冗余策略类型后创建生成逻辑盘,所述逻辑盘包括目标数量个分别以文件的形式映射至不同物理盘的数据块,所述目标数量为所述冗余策略类型所指定的数据份数;

获取模块,用于获取输入的针对于所述逻辑盘的业务io请求;

解析模块,用于根据所述冗余策略类型将所述业务io请求解析生成分别对应于各个所述数据块的底层文件io请求;

处理模块,用于将各个所述底层文件io请求分别发送至各个所述物理盘,以便基于各个所述物理盘上的文件系统执行所述底层文件io请求。

第三方面,本申请公开了一种数据冗余保护设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序以实现如上所述的任一种数据冗余保护方法的步骤。

第四方面,本申请公开了一种分布式存储系统,包括如上所述的数据冗余保护设备。

第五方面,本申请公开了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用以实现如上所述的任一种数据冗余保护方法的步骤。

本申请所提供的数据冗余保护方法包括:获取针对于逻辑盘的业务io请求;所述逻辑盘为预先在接收到逻辑盘创建请求和冗余策略类型后而创建生成,所述逻辑盘包括目标数量个分别以文件的形式映射至不同物理盘的数据块,所述目标数量为所述冗余策略类型所指定的数据份数;根据所述冗余策略类型将所述业务io请求解析生成分别对应于各个所述数据块的各个底层文件io请求;将各个所述底层文件io请求分别发送至对应的所述物理盘,以便基于各个所述物理盘上的文件系统执行对应的所述底层文件io请求。可见,本申请以逻辑盘的粒度来配置冗余策略,逻辑盘中的数据块与所对应的物理盘之间是基于文件系统来进行数据读写和管理的,基于文件系统对逻辑盘中的数据块的容量管理可支持容量的动态扩展与稀疏,具有较高的灵活性,被配置为不同冗余策略的逻辑盘对物理盘硬件资源可实现弹性使用和共享,极大地提高了资源利用率和产品经济效益,也同时提高了用户体验。本申请所提供的分布式存储系统及其数据冗余保护装置、设备及计算机可读存储介质同样具有上述有益效果。

附图说明

为了更清楚地说明现有技术和本申请实施例中的技术方案,下面将对现有技术和本申请实施例描述中需要使用的附图作简要的介绍。当然,下面有关本申请实施例的附图描述的仅仅是本申请中的一部分实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图,所获得的其他附图也属于本申请的保护范围。

图1为本申请实施例公开的一种数据冗余保护方法的流程图;

图2为本申请实施例公开的一种数据冗余保护方法的示意图;

图3为本申请实施例公开的一种逻辑盘的创建方法的流程图;

图4为本申请实施例公开的一种数据块对象池的创建方法的流程图;

图5为本申请实施例公开的一种数据冗余保护装置的结构框图。

具体实施方式

本申请的核心在于提供一种分布式存储系统及其数据冗余保护方法、装置、设备及计算机可读存储介质,以便实现多种冗余策略对磁盘资源的弹性使用和共享,进而有效提高磁盘资源的利用率和经济效益。

为了对本申请实施例中的技术方案进行更加清楚、完整地描述,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行介绍。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

参见图1所示,本申请实施例公开了一种数据冗余保护方法,主要包括:

s11:获取输入的针对于逻辑盘的业务io请求;逻辑盘为预先在接收到逻辑盘创建请求和冗余策略类型后而创建生成,逻辑盘包括目标数量个分别以文件的形式映射至不同物理盘的数据块,目标数量为冗余策略类型所指定的数据份数。

需要指出的是,本实施例所提供的数据冗余保护方法是以逻辑盘为粒度进行冗余策略配置的。逻辑盘具体是依据预先接收到的逻辑盘创建请求以及对应的冗余策略类型而创建的,冗余策略类型指定了该逻辑盘被配置为何种冗余策略,该冗余策略所指定的数据份数即为该逻辑盘中数据块的个数。数据块具体为依托于相应物理盘的虚拟数据块,它被映射为该物理盘上的一个文件,可基于该物理盘上的文件系统进行管理和数据读写。在建立了数据块与物理盘之间的映射关系后,写入数据块的数据实际上将存储至对应物理盘中的对应位置。

需要说明的是,本申请对于该冗余策略类型的具体内容并不限定,例如,该冗余策略类型可具体为两副本冗余策略或三副本冗余策略或纠删保护策略。其中,两副本冗余策略是指将两份数据分别保存至不同的存储设备,对应的数据份数为2;三副本冗余策略是指将三份数据分别保存至不同的存储设备,对应的数据份数为3;纠删保护策略是指将数据划分成若干个原始片段后再进行编码和冗余扩展得到一定数量个额外片段,并分别将各个片段保存至不同的存储设备,对应的数据份数为原始片段和额外片段的数量之和。

参见图2所示,图2为本申请实施例所公开的一种数据冗余保护方法的示意图。

其中,逻辑盘1被配置为两副本冗余策略,包括有两个数据块d1和d2;逻辑盘2被配置为三副本冗余策略,包括有三个数据块即d1、d2和d3;逻辑盘3被配置为4+2纠删保护策略,即基于4个原始片段和2个额外片段而实现冗余保护的纠删保护策略,对应地,逻辑盘3包括有六个数据块,即d4至d9。

以三副本冗余策略为例,由于指定的数据份数为三,则被配置为三副本冗余策略的逻辑盘中共有三个数据块,当用户写入数据时,实际写入逻辑盘的是三份数据,每个数据块中用于存储其中的一份数据。

s12:根据冗余策略类型将业务io请求解析生成分别对应于各个数据块的各个底层文件io请求。

具体地,根据由业务侧发送的业务io请求,可获知用户需要读写的数据内容。鉴于逻辑盘已经预先创建完成并且被配置为指定的冗余策略类型,用户可根据其实际需要的冗余策略选择对应的逻辑盘,进而请求向该逻辑盘读写数据。由此,当接收到针对于该逻辑盘的业务io请求时,便可依据该逻辑盘所配置的冗余策略,将业务io请求解析为底层文件io请求,解析生成的底层文件io请求中携带有对应的数据块id、io读写偏移地址和io读写长度,以便基于文件系统以文件管理形式进行数据读写操作。

需要指出的是,为了实现不同冗余策略的数据块对磁盘硬件资源的弹性使用和共享,本实施例中具体是以文件管理形式来动态管理各逻辑盘对物理磁盘资源的使用的,从而使得每个数据块支持容量扩展与稀疏,可按实际应用需求动态地合理改写容量大小,具有较为灵活的空间配置特性,从而可有效提高磁盘的资源利用率。

因此,在获取到业务io请求后,需要根据对应的冗余策略类型将业务io请求解析成各个底层文件io请求。每个底层文件io请求分别针对于对应逻辑盘中的一个数据块,用于请求在该数据块中以文件管理的方式进行数据块的空间管理和数据写入。

当然,容易理解的是,因纠删保护策略涉及编码,因此其所对应的解析过程还包括相应的编码过程。

s13:将各个底层文件io请求分别发送至对应的物理盘,以便基于各个物理盘上的文件系统执行对应的底层文件io请求。

对应于某个数据块的底层文件io请求将被发送至与该数据块建立有映射关系的物理盘,基于该物理盘上的文件系统执行该底层文件io请求,完成相关的数据读写操作,可实现在该逻辑盘内的数据冗余保护。

需要说明的是,为了实现冗余机制下的数据保护,一个逻辑盘内的各个数据块分别对应于不同的物理盘,即存储在各个数据块内的各份数据之间是相互独立的,不会在某处故障发生时批量损坏。但是,出于弹性利用和共享物理盘的硬件存储资源的目的,作为一种优选实施方式,不同冗余策略类型所对应的逻辑盘具有公用物理盘。即,同一个物理盘既可以与逻辑盘1中的数据块d1建立映射关系,也同时可以与逻辑盘2中的数据块d3建立映射关系。

并且,如前所述,本申请采用文件管理的方式,基于携带有数据块id、io读写偏移地址和io读写长度的底层文件io请求来对数据块进行每次的数据读写,灵活地使用相应物理盘的存储空间,因此,对于任一物理盘,包括与多种冗余策略类型对应的公用物理盘,均无需预先为对应的冗余策略类型进行存储空间的划分和预留,极大地方便了用户使用。

本申请实施例所提供的数据冗余保护方法包括:获取输入的针对于逻辑盘的业务io请求;逻辑盘为预先在接收到逻辑盘创建请求和冗余策略类型后而创建生成,逻辑盘包括目标数量个分别以文件的形式映射至不同物理盘的数据块,目标数量为冗余策略类型所指定的数据份数;根据冗余策略类型将业务io请求解析生成分别对应于各个数据块的各个底层文件io请求;将各个底层文件io请求分别发送至对应的物理盘,以便基于各个物理盘上的文件系统执行对应的底层文件io请求。可见,本申请以逻辑盘的粒度来配置冗余策略,逻辑盘中的数据块与所对应的物理盘之间是基于文件系统来进行数据读写和管理的,基于文件系统对逻辑盘中的数据块的容量管理可支持容量的动态扩展与稀疏,具有较高的灵活性,被配置为不同冗余策略的逻辑盘对物理盘硬件资源可实现弹性使用和共享,极大地提高了资源利用率和产品经济效益,也同时提高了用户体验。

参见图3所示,本申请实施例公开了一种逻辑盘的创建方法,主要包括:

s21:确定冗余策略类型所对应的数据份数并作为目标数量。

在接收到逻辑盘创建请求和冗余策略类型后,便可确定目标数量,作为该逻辑盘中的数据块个数。

s22:分别生成各个数据块的数据块id。

根据预设的id编码规则,可生成目标数量个数据块id,用以分别标识该逻辑盘中的目标数量个数据块。

s23:确定与各个数据块id一一对应的物理盘id。

一般地,分布式存储系统中有多个分布式节点,每个分布式节点中可能有多个存储设备即物理盘。可从众多个物理盘中选择出目标数量个物理盘,分别与目标数量个数据块一一对应。如此,该逻辑盘中的每一个数据块均有一个与之对应的物理盘。并且,可进一步将各数据块id与对应物理盘id的对应关系进行存储。

其中,在选择目标数量个物理盘时,作为一种具体实施方式,可获取数据块对象池中各个物理盘的使用信息;基于容量均衡原则或者数据块数量均衡原则,根据使用信息确定与各个数据块id一一对应的物理盘id。其中,数据块对象池为由众多个物理盘构成的、可用于创建数据块的资源池。为了进一步提高系统性能均衡性,可选择当前剩余容量较为充足的物理盘,或者,可以选择当前已映射的数据块总数较少的物理盘。

s24:创建分别以文件的形式映射至对应的物理盘的各个数据块。

参见图4所示,本申请实施例公开了一种数据块对象池的创建方法,包括:

s31:纳管分布式存储系统中的各个物理盘。

s32:在各个物理盘上挂装文件系统。

在将各个物理盘纳管至数据块对象池后,可对各个物理盘统一挂装文件系统,以实现格式化文件管理。作为一种具体实施方式,可采用xfs文件系统,其不仅擅长处理大文件,而且可提供平滑的数据传输。作为另一种具体实施方式,可采用ext4文件系统,其同样支持大文件处理,并支持多块分配和延迟分配,性能较高。

s33:在各个物理盘上部署用于将获取的底层文件io请求传输至文件系统进行处理的服务端程序。

还需补充说明的是,上述内容中所公开的数据冗余保护方法可具体利用多个部署的程序而实现。作为一种具体实施方式,可分别部署客户端程序、冗余引擎程序和服务端程序。

其中,客户端程序部署于对外提供存储服务的节点,用于监听来自业务侧的请求,以获取逻辑盘创建请求、冗余策略类型以及针对于逻辑盘的业务io请求。冗余引擎程序用于根据接收到的逻辑盘创建请求和冗余策略类型而创建逻辑盘,根据冗余策略类型将业务io请求解析生成分别对应于各个数据块的各个底层文件io请求,并将各个底层文件io请求分别发送至对应的物理盘。服务端程序部署在各个物理盘上,用于基于所在物理盘上的文件系统执行对应的底层文件io请求。

值得注意的是,在底层处理中,一般以lun即逻辑单元来识别对象,因此,具体可基于客户端程序可将前文的逻辑盘创建请求以创建lun请求的形式传送至冗余引擎程序进行处理。

当用户要针对某个逻辑盘进行数据读写时,可基于客户端程序根据业务侧请求解析出lun的id,确定与该lun的id对应的逻辑盘,从而获悉本次业务io请求所对应的逻辑盘,并进一步将业务io请求传送至冗余引擎程序进行处理。

当基于冗余引擎解析生成底层文件io请求之后,可基于客户端程序查询冗余引擎程序运行时所建立的各数据块与对应物理盘的对应关系,并将底层文件io请求发送至对应的物理盘。

基于服务端程序,可将底层文件io请求进一步传送至所在物理盘的文件系统。底层文件io请求中携带有对应的数据块id、io读写偏移地址和io读写长度,由此可基于该文件系统执行对应的底层文件io操作,并可获取io执行结果,再基于客户端程序返回至业务侧。

参见图5所示,本申请实施例公开了一种数据冗余保护装置,包括:

创建模块100,用于预先在接收到逻辑盘创建请求和冗余策略类型后创建生成逻辑盘,逻辑盘包括目标数量个分别以文件的形式映射至不同物理盘的数据块,目标数量为冗余策略类型所指定的数据份数;

获取模块200,用于获取输入的针对于逻辑盘的业务io请求;

解析模块300,用于根据冗余策略类型将业务io请求解析生成分别对应于各个数据块的底层文件io请求;

处理模块400,用于将各个底层文件io请求分别发送至各个物理盘,以便基于各个物理盘上的文件系统执行底层文件io请求。

可见,本申请以逻辑盘的粒度来配置冗余策略,逻辑盘中的数据块与所对应的物理盘之间是基于文件系统来进行数据读写和管理的,基于文件系统对逻辑盘中的数据块的容量管理可支持容量的动态扩展与稀疏,具有较高的灵活性,被配置为不同冗余策略的逻辑盘对物理盘硬件资源可实现弹性使用和共享,极大地提高了资源利用率和产品经济效益,也同时提高了用户体验。

其中,在上述内容的基础上,作为一种具体实施方式,不同冗余策略类型所对应的逻辑盘具有公用物理盘。

其中,在上述内容的基础上,作为一种具体实施方式,创建模块200具体用于:确定冗余策略类型所对应的数据份数并作为目标数量;分别生成各个数据块的数据块id;确定与各个数据块id一一对应的物理盘id;创建分别以文件的形式映射至对应的物理盘的各个数据块。

其中,在上述内容的基础上,作为一种具体实施方式,创建模块200具体用于:获取数据块对象池中各个物理盘的使用信息;基于容量均衡原则或者数据块数量均衡原则,根据使用信息确定与各个数据块id一一对应的物理盘id。

其中,在上述内容的基础上,作为一种具体实施方式,创建模块200还用于预先通过下述内容创建数据块对象池:纳管分布式存储系统中的各个物理盘;在各个物理盘上挂装文件系统;在各个物理盘上部署用于将获取的底层文件io请求传输至文件系统进行处理的服务端程序。

进一步地,在上述内容的基础上,作为一种具体实施方式,冗余策略类型为两副本冗余策略或三副本冗余策略或纠删保护策略。

进一步地,本申请实施例还公开了一种数据冗余保护设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序以实现如上所述的任一种数据冗余保护方法的步骤。

进一步地,本申请实施例还公开了一种分布式存储系统,包括如上所述的数据冗余保护设备。

进一步地,本申请实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用以实现如上所述的任一种数据冗余保护方法的步骤。

本申请中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的设备而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

还需说明的是,在本申请文件中,诸如“第一”和“第二”之类的关系术语,仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或者操作之间存在任何这种实际的关系或者顺序。此外,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本申请所提供的技术方案进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1