分布式块存储系统中纠删码并发IO的方法及存储装置
技术领域
本发明涉及信息存储技术领域,尤其涉及的是一种分布式块存储系统中纠删码并发IO的方法及存储装置。
背景技术
随着信息化时代的来临,全球数据量正处于爆炸式增长的趋势,提高存储系统可靠性以及保障数据的可用性已成为企业的研究重点。
现有的分布式存储系统中,绝大多数是通过多副本技术来提升系统可靠性、可用性以及可扩展性。但是在大数据时代,存储规模越来越大,多副本技术的系统开销将越来越大。相对于多副本技术,纠删码技术具有更高存储效率,并且能降低网络中的数据流量。
但是纠删码在读写时对IO大小要求比较高,需要满条带读写,如果IO大小不能满足条带大小对齐,需要先读取头尾部分数据来补齐条带。而这样一个IO请求就会变成多次IO请求,由于存储后端可能有多个请求是相同的序列号,对基于序列号实现IO同步造成巨大的挑战,造成存储系统的读写性能非常差。
因此,现有技术还有待于改进和发展。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种分布式块存储系统中纠删码并发IO的方法及存储装置,旨解决现有技术中存储系统的读写性能非常差的问题。
本发明解决技术问题所采用的技术方案如下:
一种分布式块存储系统中纠删码并发IO的方法,其中,所述分布式块存储系统中纠删码并发IO的方法包括如下步骤:
A、前端主机纠删码并行发送IO到存储主机的IO队列中,所述IO包含数据偏移量offset及数据长度length;
B、将发送到存储主机的IO根据数据偏移量offset的大小顺序插入到跳表中;
C、判断所述IO是否成功插入到跳表中,若是,则把成功插入到跳表中的IO发送到存储主机中存储;若否,则把所述IO插入到等待队列及冲突队列中。
优选地,所述的分布式块存储系统中纠删码并发IO的方法,其中,所述步骤C之后还包括步骤D:
D、当完成整个IO路径时,插入到前端主机的完成IO队列中。
优选地,所述的分布式块存储系统中纠删码并发IO的方法,其中,所述步骤B具体包括:
B1、首先将需要插入的IO为,从跳表中找到数据偏移量offset小于或等于数据偏移量offset中最大的;
B2、将所述的下一个节点称为,所述、及的数据偏移量offset的大小顺序为;
B3、当满足及时,所述与跳表中的所有IO都不重叠,IO成功插入到跳表中。
优选地,所述的分布式块存储系统中纠删码并发IO的方法,其中,所述跳表在初始化时,分别插入数据偏移量offset为负无穷大及正无穷大两个IO。
优选地,所述的分布式块存储系统中纠删码并发IO的方法,其中,所述步骤C具体包括:
C1、当与或重叠时,所述没有成功插入到跳表中;
C2、将所述插入到等待队列及插入到冲突队列中,所述冲突队列用于存放在等待队列中与重叠的IO。
优选地,所述的分布式块存储系统中纠删码并发IO的方法,其中,所述步骤D具体包括:
D1、当IO完成时,所述IO从跳表中删除;
D2、将所述IO遍历冲突队列后,把冲突队列中的IO从等待队列删除,重新插入到IO队列并重新插入跳表中。
一种存储装置,其中,所述存储装置包括:前端主机、与所述前端主机通信连接的存储主机;
所述前端主机中构建有虚拟磁盘,并用于管理虚拟磁盘的生命周期,完成数据的接收、缓存、转发功能;
所述存储主机是数据的最终存放地点,将存储资源抽象成多个存储组件,每个所述存储组件由大型稀疏文件链组成;
所述存储主机中存储有计算机程序,该计算机程序被前端主机执行时实现上述所述的分布式块存储系统中纠删码并发IO的方法;
所述前端主机用于调用所述存储主机中的计算机程序,以执行上述所述的分布式块存储系统中纠删码并发IO的方法。
与现有技术相比,本发明所提供的分布式块存储系统中纠删码并发IO的方法及存储装置,包括如下步骤:A、前端主机纠删码并行发送IO到存储主机的IO队列中,所述IO包含数据偏移量offset及数据长度length;B、将发送到存储主机的IO根据数据偏移量offset的大小顺序插入到跳表中;C、判断所述IO是否成功插入到跳表中,若是,则把成功插入到跳表中的IO发送到存储主机中存储;若否,则把所述IO插入到等待队列及冲突队列中,通过将纠删码并发的IO插入到跳表中,保证在并发IO时的数据安全,提高了纠删码的读写能力,同时,也消除了存储主机对序列号的依赖,降低了后端存储主机的设计难度。
附图说明
图1是本发明一种分布式块存储系统中纠删码并发IO的方法较佳实施例的流程图。
图2是本发明一种存储装置较佳实施例的模块图。
图3是本发明一种分布式块存储系统中纠删码并发IO的方法较佳实施例的虚拟磁盘模块图。
图4是本发明一种分布式块存储系统中纠删码并发IO的方法较佳实施例的虚拟磁盘写入示意图。
图5是本发明一种分布式块存储系统中纠删码并发IO的方法较佳实施例的跳表结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1是本发明一种分布式块存储系统中纠删码并发IO的方法较佳实施例的流程图,图3是本发明一种分布式块存储系统中纠删码并发IO的方法较佳实施例的虚拟磁盘模块图,图4是本发明一种分布式块存储系统中纠删码并发IO的方法较佳实施例的虚拟磁盘写入示意图,图5是本发明一种分布式块存储系统中纠删码并发IO的方法较佳实施例的跳表结构示意图。
本发明实施例提供了一种分布式块存储系统中纠删码并发IO的方法,如图1所示,其中,所述分布式块存储系统中纠删码并发IO的方法包括如下步骤:
A、前端主机纠删码并行发送IO到存储主机的IO队列中,所述IO包含数据偏移量offset及数据长度length;
B、将发送到存储主机的IO根据数据偏移量offset的大小顺序插入到跳表中;
C、判断所述IO是否成功插入到跳表中,若是,则把成功插入到跳表中的IO发送到存储主机中存储;若否,则把所述IO插入到等待队列及冲突队列中。
如图3所示,具体实施时,图3中含 k 个数据组件, r 个校验组件。
如图4所示,具体实施时,纠删码写入时需要计算校验数据,所以数据偏移量和数据长度必须对齐数据块大小,如果没有满足该条件必须先到后端组件上读取数据补齐条带。如果数据偏移量没有对齐,需要读取条带头,如果数据长度没有对齐,需要读取条带尾。
本发明进一步较佳实施例中,所述步骤C之后还包括步骤D:
D、当完成整个IO路径时,插入到前端主机的完成IO队列中。
本发明进一步较佳实施例中,所述步骤B具体包括:
B1、首先将需要插入的IO为,从跳表中找到数据偏移量offset小于或等于数据偏移量offset中最大的;
B2、将所述的下一个节点称为,所述、及的数据偏移量offset的大小顺序为;
B3、当满足及时,所述与跳表中的所有IO都不重叠,IO成功插入到跳表中。
如图5所示,具体实施时,跳表是一种可替代平衡树的数据结构,不像平衡树需要强制保持树的平衡,跳表依靠随机生成数以一定概率来保持数据的平衡分布。尽管在最坏情况下,跳表的效率要低于平衡树,但是大多数情况下其效率仍然非常高,其插入、删除、查找数据的时间复杂度都是O(log(N))。
本发明进一步较佳实施例中,所述跳表在初始化时,分别插入数据偏移量offset为负无穷大及正无穷大两个IO。
本发明进一步较佳实施例中,所述步骤C具体包括:
C1、当与或重叠时,所述没有成功插入到跳表中;
C2、将所述插入到等待队列及插入到冲突队列中,所述冲突队列用于存放在等待队列中与重叠的IO。
本发明进一步较佳实施例中,所述步骤D具体包括:
D1、当IO完成时,所述IO从跳表中删除;
D2、将所述IO遍历冲突队列后,把冲突队列中的IO从等待队列删除,重新插入到IO队列并重新插入跳表中。
图2是本发明一种存储装置较佳实施例的模块图,如图2所示,本发明较佳实施例中还提供了一种存储装置,其中,所述存储装置包括:前端主机、与所述前端主机通信连接的存储主机;
所述前端主机中构建有虚拟磁盘,并用于管理虚拟磁盘的生命周期,完成数据的接收、缓存、转发功能;
所述存储主机是数据的最终存放地点,将存储资源抽象成多个存储组件,每个所述存储组件由大型稀疏文件链组成;
所述存储主机中存储有计算机程序,该计算机程序被前端主机执行时实现上述所述的分布式块存储系统中纠删码并发IO的方法;
所述前端主机用于调用所述存储主机中的计算机程序,以执行上述所述的分布式块存储系统中纠删码并发IO的方法。
综上所述,本发明公开了一种分布式块存储系统中纠删码并发IO的方法及存储装置,包括如下步骤:A、前端主机纠删码并行发送IO到存储主机的IO队列中,所述IO包含数据偏移量offset及数据长度length;B、将发送到存储主机的IO根据数据偏移量offset的大小顺序插入到跳表中;C、判断所述IO是否成功插入到跳表中,若是,则把成功插入到跳表中的IO发送到存储主机中存储;若否,则把所述IO插入到等待队列及冲突队列中,通过将纠删码并发的IO插入到跳表中,保证在并发IO时的数据安全,提高了纠删码的读写能力,同时,也消除了存储主机对序列号的依赖,降低了后端存储主机的设计难度。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。