1.一种基于模拟处理器QEMU的分布式加速存储方法,其特征在于,所述方法包括下述步骤:
在模拟处理器QEMU的客户端,通过内置在模拟处理器QEMU的驱动器driver内的分布式哈希表算法计算副本所在位置;
根据计算得到的所述副本的位置,通过所述模拟处理器QEMU的驱动器driver向计算得到的副本所在的主机进行IO下发;
副本所在的主机对接收到的模拟处理器QEMU的驱动器driver下发的IO请求进行IO处理,并将IO处理结果反馈给所述模拟处理器QEMU下发IO所在的主机。
2.根据权利要求1所述的基于模拟处理器QEMU的分布式加速存储方法,其特征在于,所述根据计算得到的所述副本的位置,通过所述模拟处理器QEMU的驱动器driver向计算得到的副本所在的主机进行IO下发的步骤具体包括下述步骤:
获取所述模拟处理器QEMU下发IO的卷信息和下发IO的偏离距离值offset;
根据获取到的所述模拟处理器QEMU下发IO的卷信息和下发IO的偏离距离值offset,计算要下发IO的目标对象object信息;
根据计算得到的目标对象object信息,利用所述分布式哈希表算法计算目标对象object位置参数;
根据卷的副本个数信息以及所述目标对象object位置参数,通过套接字socket将IO传送至多个副本所在的主机。
3.根据权利要求1所述的基于模拟处理器QEMU的分布式加速存储方法,其特征在于,所述方法还包括下述步骤:
在所述模拟处理器QEMU中配置多种IO驱动方式,其中,多种IO驱动方式支持多种对应的IO下发方案;
根据配置的所述模拟处理器QEMU中的多种IO驱动方式,配置基于分布式存储的多个集群节点iNode的IP信息以及配置基于分布式存储的浮动IP;
其中,所述基于分布式存储的多个集群节点iNode的IP信息用于当访问的IP出现故障时进行IP切换,所述基于分布式存储的浮动IP用于当节点出现故障时,主动进行浮动IP切换。
4.根据权利要求1所述的基于模拟处理器QEMU的分布式加速存储方法,其特征在于,所述方法还包括下述步骤:
当所述模拟处理器QEMU下发IO异常时,自动执行IO重试的动作。
5.根据权利要求1所述的基于模拟处理器QEMU的分布式加速存储方法,其特征在于,所述方法还包括下述步骤:
当分布式存储系统出现故障时,检查正在请求的队列和IO队列,获取分布式存储正在防卫的IO信息,控制优先恢复正在被访问的块;
当分布式存储系统故障恢复时,对正在请求的IO执行IO重试动作。
6.一种基于模拟处理器QEMU的分布式加速存储系统,其特征在于,所述系统包括:
副本位置计算模块,用于在模拟处理器QEMU的客户端,通过内置在模拟处理器QEMU的驱动器driver内的分布式哈希表算法计算副本所在位置;
IO下发模块,用于根据计算得到的所述副本的位置,通过所述模拟处理器QEMU的驱动器driver向计算得到的副本所在的主机进行IO下发;
IO处理模块,用于副本所在的主机对接收到的模拟处理器QEMU的驱动器driver下发的IO请求进行IO处理,并将IO处理结果反馈给所述模拟处理器QEMU下发IO所在的主机。
7.根据权利要求6所述的基于模拟处理器QEMU的分布式加速存储系统,其特征在于,所述IO下发模块具体包括:
信息获取模块,用于获取所述模拟处理器QEMU下发IO的卷信息和下发IO的偏离距离值offset;
目标对象信息获取模块,用于根据获取到的所述模拟处理器QEMU下发IO的卷信息和下发IO的偏离距离值offset,计算要下发IO的目标对象object信息;
object位置参数获取模块,用于根据计算得到的目标对象object信息,利用所述分布式哈希表算法计算目标对象object位置参数;
IO传送模块,用于根据卷的副本个数信息以及所述目标对象object位置参数,通过套接字socket将IO传送至多个副本所在的主机。
8.根据权利要求6所述的基于模拟处理器QEMU的分布式加速存储系统,其特征在于,所述系统还包括:
第一配置模块,用于在所述模拟处理器QEMU中配置多种IO驱动方式,其中,多种IO驱动方式支持多种对应的IO下发方案;
第二配置模块,用于根据配置的所述模拟处理器QEMU中的多种IO驱动方式,配置基于分布式存储的多个集群节点iNode的IP信息以及配置基于分布式存储的浮动IP;
其中,所述基于分布式存储的多个集群节点iNode的IP信息用于当访问的IP出现故障时进行IP切换,所述基于分布式存储的浮动IP用于当节点出现故障时,主动进行浮动IP切换。
9.根据权利要求6所述的基于模拟处理器QEMU的分布式加速存储系统,其特征在于,所述系统还包括:
第一IO重试模块,用于当所述模拟处理器QEMU下发IO异常时,自动执行IO重试的动作。
10.根据权利要求6所述的基于模拟处理器QEMU的分布式加速存储系统,其特征在于,所述系统还包括:
优先恢复控制模块,用于当分布式存储系统出现故障时,检查正在请求的队列和IO队列,获取分布式存储正在防卫的IO信息,控制优先恢复正在被访问的块;
第二IO重试模块,用于当分布式存储系统故障恢复时,对正在请求的IO执行IO重试动作。
一种基于模拟处理器QEMU的分布式加速存储方法及系统\n技术领域\n[0001] 本发明属于分布式存储技术领域,尤其涉及一种基于模拟处理器QEMU的分布式加速存储方法及系统。\n背景技术\n[0002] 在信息爆炸增长的时代,海量数据的增长,传统存储成本高,效率低下无法满足用户数据的增长速度,高效智能的分布式存储技术解决这一痛楚,分布式存储具有以下几个特征:高性能、高可靠性、高可扩展性、透明性、自治性。分布式存储数据存放首先要进行分片切割处理,之后通过一定算法,计算出数据存放位置,由于用户数据被且分为多个数据块,因此任何一个数据块丢失都可以造成数据不可用,因此分布式存储必须考虑合理的冗余存储模型,为用户的数据分块提供多个冗余的存储副本,从而保证数据的安全性和可靠性。\n[0003] 针对分布式存储实现主要有两种方案,一种是基于DHT算法实现的,另外一种是基于元数据中心实现的;针对分布式存储提供的存储,有三种方向:对象存储、文件存储和块存储。对象存储主要用于储存不变的对象,文件存储主要为了储存文件,块存储提供块设备;块存储一般是提供块给模拟存储器QEMU使用创建虚拟机或者是提供数据库或者是文件存储等应用;正常使用块存储来说有两种方式,一种是分布式存储提供iSCSI设备映射给主机,另外一种是通过私有协议直接连接使用分布式存储,但是这些方式均面临着IO路径比较长、时延较大的缺点。\n发明内容\n[0004] 针对现有技术中的缺陷,本发明提供了一种基于模拟处理器QEMU的分布式加速存储方法,旨在解决现有技术中分布式存储存在IO路径比较长、时延较大的问题。\n[0005] 本发明所提供的技术方案是:一种基于模拟处理器QEMU的分布式加速存储方法,所述方法包括下述步骤:\n[0006] 在模拟处理器QEMU的客户端,通过内置在模拟处理器QEMU的驱动器driver内的分布式哈希表算法计算副本所在位置;\n[0007] 根据计算得到的所述副本的位置,通过所述模拟处理器QEMU的驱动器driver向计算得到的副本所在的主机进行IO下发;\n[0008] 副本所在的主机对接收到的模拟处理器QEMU的驱动器driver下发的IO请求进行IO处理,并将IO处理结果反馈给所述模拟处理器QEMU下发IO所在的主机。\n[0009] 作为一种改进的方案,所述根据计算得到的所述副本的位置,通过所述模拟处理器QEMU的驱动器driver向计算得到的副本所在的主机进行IO下发的步骤具体包括下述步骤:\n[0010] 获取所述模拟处理器QEMU下发IO的卷信息和下发IO的偏离距离值offset;\n[0011] 根据获取到的所述模拟处理器QEMU下发IO的卷信息和下发IO的偏离距离值offset,计算要下发IO的目标对象object信息;\n[0012] 根据计算得到的目标对象object信息,利用所述分布式哈希表算法计算目标对象object位置参数;\n[0013] 根据卷的副本个数信息以及所述目标对象object位置参数,通过套接字socket将IO传送至多个副本所在的主机。\n[0014] 作为一种改进的方案,所述方法还包括下述步骤:\n[0015] 在所述模拟处理器QEMU中配置多种IO驱动方式,其中,多种IO驱动方式支持多种对应的IO下发方案;\n[0016] 根据配置的所述模拟处理器QEMU中的多种IO驱动方式,配置基于分布式存储的多个集群节点iNode的IP信息以及配置基于分布式存储的浮动IP;\n[0017] 其中,所述基于分布式存储的多个集群节点iNode的IP信息用于当访问的IP出现故障时进行IP切换,所述基于分布式存储的浮动IP用于当节点出现故障时,主动进行浮动IP切换。\n[0018] 作为一种改进的方案,所述方法还包括下述步骤:\n[0019] 当所述模拟处理器QEMU下发IO异常时,自动执行IO重试的动作。\n[0020] 作为一种改进的方案,所述方法还包括下述步骤:\n[0021] 当分布式存储系统出现故障时,检查正在请求的队列和IO队列,获取分布式存储正在防卫的IO信息,控制优先恢复正在被访问的块;\n[0022] 当分布式存储系统故障恢复时,对正在请求的IO执行IO重试动作。\n[0023] 本发明的另一目的在于提供一种基于模拟处理器QEMU的分布式加速存储系统,所述系统包括:\n[0024] 副本位置计算模块,用于在模拟处理器QEMU的客户端,通过内置在模拟处理器QEMU的驱动器driver内的分布式哈希表算法计算副本所在位置;\n[0025] IO下发模块,用于根据计算得到的所述副本的位置,通过所述模拟处理器QEMU的驱动器driver向计算得到的副本所在的主机进行IO下发;\n[0026] IO处理模块,用于副本所在的主机对接收到的模拟处理器QEMU的驱动器driver下发的IO请求进行IO处理,并将IO处理结果反馈给所述模拟处理器QEMU下发IO所在的主机。\n[0027] 作为一种改进的方案,所述IO下发模块具体包括:\n[0028] 信息获取模块,用于获取所述模拟处理器QEMU下发IO的卷信息和下发IO的偏离距离值offset;\n[0029] 目标对象信息获取模块,用于根据获取到的所述模拟处理器QEMU下发IO的卷信息和下发IO的偏离距离值offset,计算要下发IO的目标对象object信息;\n[0030] object位置参数获取模块,用于根据计算得到的目标对象object信息,利用所述分布式哈希表算法计算目标对象object位置参数;\n[0031] IO传送模块,用于根据卷的副本个数信息以及所述目标对象object位置参数,通过套接字socket将IO传送至多个副本所在的主机。\n[0032] 作为一种改进的方案,所述系统还包括:\n[0033] 第一配置模块,用于在所述模拟处理器QEMU中配置多种IO驱动方式,其中,多种IO驱动方式支持多种对应的IO下发方案;\n[0034] 第二配置模块,用于根据配置的所述模拟处理器QEMU中的多种IO驱动方式,配置基于分布式存储的多个集群节点iNode的IP信息以及配置基于分布式存储的浮动IP;\n[0035] 其中,所述基于分布式存储的多个集群节点iNode的IP信息用于当访问的IP出现故障时进行IP切换,所述基于分布式存储的浮动IP用于当节点出现故障时,主动进行浮动IP切换。\n[0036] 作为一种改进的方案,所述系统还包括:\n[0037] 第一IO重试模块,用于当所述模拟处理器QEMU下发IO异常时,自动执行IO重试的动作。\n[0038] 作为一种改进的方案,所述系统还包括:\n[0039] 优先恢复控制模块,用于当分布式存储系统出现故障时,检查正在请求的队列和IO队列,获取分布式存储正在防卫的IO信息,控制优先恢复正在被访问的块;\n[0040] 第二IO重试模块,用于当分布式存储系统故障恢复时,对正在请求的IO执行IO重试动作。\n[0041] 在本发明实施例中,在模拟处理器QEMU的客户端,通过内置在模拟处理器QEMU的驱动器driver内的分布式哈希表算法计算副本所在位置;根据计算得到的所述副本的位置,通过所述模拟处理器QEMU的驱动器driver向计算得到的副本所在的主机进行IO下发;\n副本所在的主机对接收到的模拟处理器QEMU的驱动器driver下发的IO请求进行IO处理,并将IO处理结果反馈给所述模拟处理器QEMU下发IO所在的主机,从而实现缩短模拟处理器QEMU访问分布式哈希表算法提供的分布式存储的IO路径,提高分布式存储的IO可用性,缩短IO的时延信息,提高分布式存储基于云计算场景的适配性。\n附图说明\n[0042] 为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。\n[0043] 图1是本发明提供的基于模拟处理器QEMU的分布式加速存储方法的实现流程图;\n[0044] 图2是本发明提供的根据计算得到的所述副本的位置,通过所述模拟处理器QEMU的驱动器driver向计算得到的副本所在的主机进行IO下发的实现流程图;\n[0045] 图3是本发明提供的基于模拟处理器QEMU的分布式加速存储系统的结构框图;\n[0046] 图4是本发明提供的IO下发模块的结构框图。\n具体实施方式\n[0047] 下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的、技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。\n[0048] 图1是本发明提供的基于模拟处理器QEMU的分布式加速存储方法的实现流程图,其具体包括下述步骤:\n[0049] 在步骤S101中,在模拟处理器QEMU的客户端,通过内置在模拟处理器QEMU的驱动器driver内的分布式哈希表算法计算副本所在位置;\n[0050] 在该步骤中,移植分布式存储的DHT算法到模拟处理器QEMU的driver里边,通过模拟处理器QEMU的客户端直接可以通过DHT算法计算出副本所在的位置,具体为:\n[0051] 基于DHT算法的分布式存储没有元数据服务,根据分布式存储使用的DHT算法和很少的集群信息计算出IO副本位置,之后直接将IO分发至副本所在的主机直接下发IO;\n[0052] 其中,DHT使用分布式哈希算法来解决结构化的分布式存储问题。分布式哈希算法的核心思想是通过将存储对象的特征(关键字)经过哈希运算,得到键值(Hash Key),对象的分布存储依据键值来进行。\n[0053] 在步骤S102中,根据计算得到的所述副本的位置,通过所述模拟处理器QEMU的驱动器driver向计算得到的副本所在的主机进行IO下发;\n[0054] 在步骤S103中,副本所在的主机对接收到的模拟处理器QEMU的驱动器driver下发的IO请求进行IO处理,并将IO处理结果反馈给所述模拟处理器QEMU下发IO所在的主机。\n[0055] 在该实施例中,同时增加集群配置信息获取和IO重传等方法,将IO分发放置于客户端,通过使用客户端的计算能力,精简IO流程。\n[0056] 在本发明实施例中,如图2所示,根据计算得到的所述副本的位置,通过所述模拟处理器QEMU的驱动器driver向计算得到的副本所在的主机进行IO下发的步骤具体包括下述步骤:\n[0057] 在步骤S201中,获取所述模拟处理器QEMU下发IO的卷信息和下发IO的偏离距离值offset;\n[0058] 在该步骤中,分布式存储一般是进行分片进行存储,根据模拟处理器QEMU下发IO的卷的信息和下发IO的offset值可以计算出要下发的目标对象object的信息,根据目标对象object信息,使用DHT算法可以直接计算出目标对象object的位置。\n[0059] 在步骤S202中,根据获取到的所述模拟处理器QEMU下发IO的卷信息和下发IO的偏离距离值offset,计算要下发IO的目标对象object信息;\n[0060] 在步骤S203中,根据计算得到的目标对象object信息,利用所述分布式哈希表算法计算目标对象object位置参数;\n[0061] 在步骤S204中,根据卷的副本个数信息以及所述目标对象object位置参数,通过套接字socket将IO传送至多个副本所在的主机。\n[0062] 在该步骤中,在该步骤中,通过卷的副本个数和计算出的object位置,直接通过socket进行IO传送给多个副本所在的主机,不需要IO转发,精简IO路径信息。\n[0063] 在本发明实施例中,在所述模拟处理器QEMU中配置多种IO驱动方式,其中,多种IO驱动方式支持多种对应的IO下发方案,即:\n[0064] 模拟处理器QEMU支持多种IO方式,可以通过定制模拟处理器QEMU的IOdriver方式,使得模拟处理器QEMU支持更多的IO方案;\n[0065] 根据配置的所述模拟处理器QEMU中的多种IO驱动方式,配置基于分布式存储的多个集群节点iNode的IP信息以及配置基于分布式存储的浮动IP;\n[0066] 其中,所述基于分布式存储的多个集群节点iNode的IP信息用于当访问的IP出现故障时进行IP切换,所述基于分布式存储的浮动IP用于当节点出现故障时,主动进行浮动IP切换;\n[0067] 即:模拟处理器QEMU支持多种配置,针对分布式存储,需要进行故障容忍,即需要支持配置多个集群节点iNode的IP信息,当访问的IP出现故障时候进行IP切换,实现分布式存储节点切换,避免单点故障;同时支持配置分布式存储端浮动IP,通过在存储端进行IP切换,实现高可用;\n[0068] 当分布式存储浮动IP所在的节点故障时候会主动进行浮动IP切换,切换到一个正常的分布式存储节点,模拟处理器QEMU的客户端直接访问浮动IP,可以不感知分布式存储的故障,正常的获取集群信息。\n[0069] 在本发明实施例中,将分布式存储的IO机制上移,移至模拟处理器QEMU的客户端进行处理,增加模拟处理器QEMU的客户端的IO稳定性和支持故障冗余;\n[0070] 其中,将分布式存储的副本分发机制上移至客户端,通过客户端进行副本分发,避免多次数据分配和数据转发,直接发送至IO所在的主机端,直接进行IO,避免多次的内存拷贝;\n[0071] 而且,分布式存储因为节点比较多,因此需要进行故障冗余,因此需要将IO重传机制移至客户端,当客户端异常不返回时候进行IO重传机制,多次重传,支持更多的故障冗余。\n[0072] 在本发明实施例中,当所述模拟处理器QEMU下发IO异常时,自动执行IO重试的动作,提高IO成功的可能性;\n[0073] 同时,当分布式存储系统出现故障时,检查正在请求的队列和IO队列,获取分布式存储正在防卫的IO信息,控制优先恢复正在被访问的块;\n[0074] 当分布式存储系统故障恢复时,对正在请求的IO执行IO重试动作。提高IO效率,减少故障时IO性能的损耗。\n[0075] 在该实施例中,分布式存储故障时候会进行数据恢复,在恢复过程中按照旧的集群信息发送IO时候会出现超时等错误,因此需要感知分布式存储端的故障,当故障时候进行IO pending(正在执行),等待写的object的数据恢复完成之后再进行IO下发,避免故障时候多次重传;\n[0076] 故障后需要恢复丢失的副本数据,但是恢复时候数据是无序的,因此需要支持客户端的优先object恢复机制,即尽可能快速的恢复正在下发IO的目标对象object,避免IO pending时间过长,导致IO超时。\n[0077] 在本发明实施例中,通过修改模拟处理器QEMU使用私有协议的驱动器,适配分布式存储的DHT算法,将分布式存储的IO计算上移,移植到模拟处理器QEMU的驱动器中,在模拟处理器QEMU的驱动器中实现IO高可用和IO重传机制,同时修改存储算法,支持客户端提高数据恢复的对象的优先级,使得模拟处理器QEMU的IO driver下发IO路径简短,提高IO qemu使用分布式存储的IO性能。\n[0078] 图3示出了本发明提供的基于模拟处理器QEMU的分布式加速存储系统的结构框图,为了便于说明,图中仅给出了与本发明实施例相关的部分。\n[0079] 基于模拟处理器QEMU的分布式加速存储系统包括:\n[0080] 副本位置计算模块11,用于在模拟处理器QEMU的客户端,通过内置在模拟处理器QEMU的驱动器driver内的分布式哈希表算法计算副本所在位置;\n[0081] IO下发模块12,用于根据计算得到的所述副本的位置,通过所述模拟处理器QEMU的驱动器driver向计算得到的副本所在的主机进行IO下发;\n[0082] IO处理模块13,用于副本所在的主机对接收到的模拟处理器QEMU的驱动器driver下发的IO请求进行IO处理,并将IO处理结果反馈给所述模拟处理器QEMU下发IO所在的主机。\n[0083] 在本发明实施例中,如图4所示,所述IO下发模块12具体包括:\n[0084] 信息获取模块14,用于获取所述模拟处理器QEMU下发IO的卷信息和下发IO的偏离距离值offset;\n[0085] 目标对象信息获取模块15,用于根据获取到的所述模拟处理器QEMU下发IO的卷信息和下发IO的偏离距离值offset,计算要下发IO的目标对象object信息;\n[0086] object位置参数获取模块16,用于根据计算得到的目标对象object信息,利用所述分布式哈希表算法计算目标对象object位置参数;\n[0087] IO传送模块17,用于根据卷的副本个数信息以及所述目标对象object位置参数,通过套接字socket将IO传送至多个副本所在的主机。\n[0088] 结合图3所示,所述系统还包括:\n[0089] 第一配置模块18,用于在所述模拟处理器QEMU中配置多种IO驱动方式,其中,多种IO驱动方式支持多种对应的IO下发方案;\n[0090] 第二配置模块19,用于根据配置的所述模拟处理器QEMU中的多种IO驱动方式,配置基于分布式存储的多个集群节点iNode的IP信息以及配置基于分布式存储的浮动IP;\n[0091] 其中,所述基于分布式存储的多个集群节点iNode的IP信息用于当访问的IP出现故障时进行IP切换,所述基于分布式存储的浮动IP用于当节点出现故障时,主动进行浮动IP切换。\n[0092] 结合图3所示,所述系统还包括:\n[0093] 第一IO重试模块20,用于当所述模拟处理器QEMU下发IO异常时,自动执行IO重试的动作;\n[0094] 优先恢复控制模块21,用于当分布式存储系统出现故障时,检查正在请求的队列和IO队列,获取分布式存储正在防卫的IO信息,控制优先恢复正在被访问的块;\n[0095] 第二IO重试模块22,用于当分布式存储系统故障恢复时,对正在请求的IO执行IO重试动作。\n[0096] 其中,上述各个模块的功能如上述方法实施例所记载,在此不再赘述。\n[0097] 在本发明实施例中,在模拟处理器QEMU的客户端,通过内置在模拟处理器QEMU的驱动器driver内的分布式哈希表算法计算副本所在位置;根据计算得到的所述副本的位置,通过所述模拟处理器QEMU的驱动器driver向计算得到的副本所在的主机进行IO下发;\n副本所在的主机对接收到的模拟处理器QEMU的驱动器driver下发的IO请求进行IO处理,并将IO处理结果反馈给所述模拟处理器QEMU下发IO所在的主机,从而实现缩短模拟处理器QEMU访问分布式哈希表算法提供的分布式存储的IO路径,提高分布式存储的IO可用性,缩短IO的时延信息,提高分布式存储基于云计算场景的适配性。\n[0098] 以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
法律信息
- 2022-07-15
- 2021-04-06
实质审查的生效
IPC(主分类): H04L 29/08
专利申请号: 202011302230.5
申请日: 2020.11.19
- 2021-03-19
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |