本发明涉及服务器虚拟化相关的技术领域,特别涉及一种虚拟化平台中磁盘树优化方法及系统。
背景技术:
目前,市场上主流的服务器虚拟化产品众多,众多服务器虚拟化产品的核心模块—虚拟机管理中也都覆盖了虚拟机生命周期管理,虚拟机快照,模板创建,以及虚拟机克隆等常用功能。而虚拟机关联的虚拟磁盘由于长时间进行数据写入操作,使得磁盘大小变得很大,如果对虚拟机关联的磁盘,进行单磁盘全量操作,将导致上述操作耗费时间过长,为了避免该问题,在执行上述功能的磁盘处理步骤中,使用链接新磁盘的方式,即创建新磁盘,将原磁盘链接到新建磁盘,作为新磁盘的backing file(支持文件),以此达到,减少磁盘的全量拷贝,大大减少虚拟机快照、模板和克隆操作的执行时间的目的。
在进行虚拟机快照、模板和克隆等操作时,由于磁盘存在链接关系,于是便生成了磁盘的链状结构,而恢复快照操作,同样是将快照时磁盘作为backing file,链接到新的磁盘,因此引出了磁盘的树状结构。该磁盘处理的方案,虽可以大大减少管理平台的操作时间,减少用户等待,提高用户体验,但是,如果快照过多,或者快速克隆的虚拟机过多,将使得磁盘的树状层次变得很深,虚拟机在读取树状顶层的磁盘内容时,速率将会降低,磁盘I/O(I/O,Input/Output,输入/输出)严重低下的情况下,可能导致虚拟机内部应用无法使用,给用户造成不必要的损失。
技术实现要素:
有鉴于此,本发明的目的在于提供一种虚拟化平台中的磁盘树优化方法及系统,以控制虚拟化平台中的磁盘树的树状层次深度,提高虚拟机访问磁盘的速度,从而提高磁盘I/O,保证虚拟机高性能运行。其具体方案如下:
一种虚拟化平台中的磁盘树优化方法,包括:
判断原磁盘树是否满足预设的优化条件;
当所述原磁盘树满足所述优化条件,则新建新节点,将每个目标节点中的数据均合并到所述新节点中;
利用数据映射关系,将所述新节点放入原磁盘树相应的位置,得到新磁盘树,其中,所述数据映射关系为多个目标节点中深度最浅的目标节点保存的数据与其父节点中保存的数据之间的所述数据映射关系。
优选的,所述判断原磁盘树是否满足预设的优化条件,包括:
判断所述原磁盘树的树状层次深度是否超过预设的第一阈值。
优选的,所述判断原磁盘树是否满足预设的优化条件,包括:
判断所述原磁盘树中是否有未被引用的节点。
优选的,所述当所述原磁盘树满足所述预设的优化条件,则新建新节点,将目标节点中的数据合并到所述新节点中的过程,包括:
当所述原磁盘树中存在未被引用的孤立节点,则新建新节点,将所述孤立节点、所述孤立节点的父节点和所述孤立节点的子节点中的数据均合并到所述新节点中。
优选的,所述当所述原磁盘树满足所述预设的优化条件,则新建新节点,将目标节点中的数据合并到所述新节点中的过程,包括:
当所述原磁盘树的树状层次深度超过所述第一阈值,则新建新节点,将深度大于预设的第二阈值的越深节点、所述越深节点的父节点和所述越深节点的子节点的数据均合并到所述新节点中。
优选的,所述判断原磁盘树是否满足预设的优化条件的过程,包括:
实时判断所述原磁盘树是否满足所述优化条件;
则所述第二阈值小于等于所述第一阈值。
优选的,还包括:
接受用户输入的优化指令,则新建新节点,将每个目标节点中的数据均合并到所述新节点中。
本发明还公开了一种磁盘树优化系统,包括:
判断模块,用于判断原磁盘树是否满足预设的优化条件;
优化模块,用于当所述原磁盘树满足所述优化条件,则新建新节点,将每个目标节点中的数据均合并到所述新节点中;
复位模块,用于利用数据映射关系,将所述新节点放入原磁盘树相应的位置,得到新磁盘树,其中,所述数据映射关系为多个目标节点中深度最浅的目标节点保存的数据与其父节点中保存的数据之间的所述数据映射关系。
优选的,所述判断模块,具体用于判断所述原磁盘树的树状层次深度是否超过预设的第一阈值。
优选的,所述优化模块,具体用于当所述原磁盘树的树状层次深度超过所述第一阈值,则新建新节点,将深度大于预设的第二阈值的越深节点、所述越深节点的父节点和所述越深节点的子节点的数据均合并到所述新节点中。
本发明中,虚拟化平台中的磁盘树优化方法,包括:判断原磁盘树是否满足预设的优化条件;当原磁盘树满足预设的优化条件,则新建新节点,将每个目标节点中的数据均合并到新节点中;利用数据映射关系,将新节点放入原磁盘树相应的位置,得到新磁盘树,其中,数据映射关系为多个目标节点中深度最浅的目标节点保存的数据与其父节点中保存的数据之间的数据映射关系。可见,本发明在原磁盘树满足预设的优化条件后,新建新节点,将需要优化的每个目标节点中的数据均合并到新节点中,再利用多个目标节点中深度最浅的目标节点保存的数据与其父节点中保存的数据之间的数据映射关系,将新节点放入原磁盘树相应的位置,得到新磁盘树,完成对磁盘树的优化,以此减少磁盘树深度,提高虚拟机访问磁盘的速度,提高虚拟磁盘I/O,保证虚拟机高性能运行。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种虚拟化平台中磁盘树优化方法流程示意图;
图2为本发明实施例提供的另一种虚拟化平台中磁盘树优化方法流程示意图;
图3为本发明实施例提供的一种虚拟化平台中磁盘树优化系统结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种虚拟化平台中磁盘树优化方法,参见图1所示,该方法包括:
步骤S11:判断原磁盘树是否满足预设的优化条件。
具体的,原磁盘树在使用过程中,深度会逐渐加深,深度过深的原磁盘树会降低虚拟机的读取速度,甚至导致虚拟机内部应用无法使用,同时,也会产生大量的节点,其中,也会包括一定数量未被引用的节点,这些节点不仅无法使用,还会加深原磁盘树的深度,因此,原磁盘树需要一定的优化,用户可以预设相应的优化条件,系统判断原磁盘树是否满足预设的优化条件,预设的优化条件可以为原磁盘树的树状层次深度超过第一阈值和/或原磁盘树中的节点未被引用,当满足两个预设条件的任一项,则可以对原磁盘树进行优化。
可以理解的是,磁盘树中的每个节点便是一个虚拟磁盘;当不满足预设的优化条件,则不进行优化。
步骤S12:当原磁盘树满足预设的优化条件,则新建新节点,将每个目标节点中的数据合并到新节点中。
具体的,当原磁盘树满足预设的优化条件,则相应的对需要优化的目标节点进行优化;优化时,需要将目标节点中的数据转移到别的节点当中,而由于每个节点在生成时均已被固定,因此,难以进行改变,为此,新建原磁盘树外的新节点以用来保存目标节点中的数据;由于,原磁盘树的组成结构为链状结构,且每个节点中的数据之间具有映射关系,因此,对一个节点进行优化时,必定对其父节点与子节点有影响,所以当一个节点满足预设的优化条件需要进行优化,其父节点与子节点将均作为目标节点进行优化,每个目标节点中保存的数据,将重新保存到新节点中。
步骤S13:利用数据映射关系,将新节点放入原磁盘树相应的位置,得到新原磁盘树,其中,数据映射关系为多个目标节点中深度最浅的目标节点保存的数据与其父节点中保存的数据之间的数据映射关系。
具体的,由于,新节点是在原磁盘树外的节点,因此,新节点要想替换目标节点,重新放入磁盘树中目标节点相应的位置,需要利用多个目标节点中深度最浅的目标节点保存的数据与其父节点中保存的数据之间的映射关系,虽然,目标节点进行了优化,但其中保存的数据与父节点中保存的数据和子节点中保存的数据之间的映射关系并没有改变,所以利用深度最浅的目标节点的数据映射关系,使新节点连接深度最浅的目标节点的父节点,得到新磁盘树;其中,深度最浅的目标节点即多个目标节点中的根节点。
例如,目标节点分别为深度为3的第一节点,深度为4的第二节点,深度为5的第三节点,第一节点作为多个目标节点中深度最浅的节点,新节点利用第一节点与其深度为2的父节点数据之间的数据映射关系,连接深度为2的父节点,作为该父节点的子节点,连入原磁盘树中,得到新磁盘树。
可见,本发明实施例在原磁盘树满足预设的优化条件后,新建新节点,将需要优化的每个目标节点中的数据均合并到新节点中,再利用多个目标节点中深度最浅的目标节点保存的数据与其父节点中保存的数据之间的数据映射关系,将新节点放入原磁盘树相应的位置,得到新磁盘树,完成对磁盘树的优化,以此减少磁盘树深度,提高虚拟机访问磁盘的速度,提高虚拟磁盘I/O,保证虚拟机高性能运行。
本发明实施例公开了一种具体的虚拟化平台中磁盘树优化方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。参见图2所示,具体的:
步骤S21:实时判断原磁盘树的树状层次深度是否超过第一阈值。
具体的,第一阈值由用户根据实际应用需求进行预设,实时判断原磁盘树的树状层次深度是否超过第一阈值,则一旦原磁盘树生成超过第一阈值的节点时,就将触发对原磁盘树的优化。
需要说明的是,判断原磁盘树的树状层次深度是否超过第一阈值也可以是定时判断,通过预设时间周期,每到一定时间,便判断当前原磁盘树的树状层次深度是否超过第一阈值。例如,每隔24小时判断原磁盘树的树状层次深度是否超过第一阈值。
步骤S22:当原磁盘树的树状层次深度超过第一阈值,则新建新节点,将深度大于第二阈值的越深节点、越深节点的父节点和越深节点的子节点的数据均合并到新节点中。
具体的,当原磁盘树的树状层次深度超过第一阈值,则对原磁盘树进行优化。例如,第一阈值为5,原磁盘树深度达到6,则对磁盘树进行优化。
进一步的,第二阈值由用户根据实际应用需求预设,当原磁盘树需要优化,则将将深度大于第二阈值的越深节点、越深节点的父节点和越深节点的子节点的数据均合并到新节点中,使原磁盘树的树状层次深度优化到第二阈值的深度。
例如,第二阈值为5,原磁盘树深度为8,则将第5节点至第8节点作为目标节点进行优化,新节点将作为新磁盘树的第5节点,即将原磁盘树深度优化到了5,或第二阈值为1,则将越深节点直接优化到其根节点。
需要说明的是,实时判断原磁盘树的树状层次深度是否超过第一阈值时,第二阈值小于等于第一阈值,定时判断时第一阈值与第二阈值的取值互不影响。
步骤S23:判断原磁盘树中是否有未被引用的节点。
可以理解的是,判断原磁盘树中是否有未被引用的节点可以为实时判断或定时判断。
步骤S24:当原磁盘树中存在未被引用的孤立节点,则新建新节点,将孤立节点、孤立节点的父节点和孤立节点的子节点中的数据均合并到新节点中。
例如,原磁盘树深度达到6,第5节点未被引用,则新建一个新节点,将第4节点至第6节点中的数据保存至新节点中。
其中,步骤S23与步骤S21执行顺序不分先后,步骤S22与步骤S24执行顺序不分先后,在此均不做限定。
步骤S25:利用数据映射关系,将新节点放入原磁盘树相应的位置,得到新磁盘树,其中,数据映射关系为多个目标节点中深度最浅的目标节点保存的数据与其父节点中保存的数据之间的数据映射关系。
可以理解的是,在实际应用中,可以只判断原磁盘树的树状层次深度是否超过第一阈值或判断原磁盘树中是否有未被引用的节点,当然也可以同时进行两种判断。
相应的,本发明实施例还公开了一种虚拟化平台中磁盘树优化系统,参见图3所示,该系统包括:
判断模块,用于判断原磁盘树是否满足预设的优化条件;
优化模块,用于当原磁盘树满足优化条件,则新建新节点,将每个目标节点中的数据均合并到新节点中;
复位模块,用于利用数据映射关系,将新节点放入原磁盘树相应的位置,得到新磁盘树,其中,数据映射关系为多个目标节点中深度最浅的目标节点保存的数据与其父节点中保存的数据之间的数据映射关系。
可见,本发明实施例在原磁盘树满足预设的优化条件后,新建新节点,将需要优化的每个目标节点中的数据均合并到新节点中,再利用多个目标节点中深度最浅的目标节点保存的数据与其父节点中保存的数据之间的数据映射关系,将新节点放入原磁盘树相应的位置,得到新磁盘树,完成对磁盘树的优化,以此减少磁盘树深度,提高虚拟机访问磁盘的速度,提高虚拟磁盘I/O,保证虚拟机高性能运行。
其中,上述判断模块,具体用于判断原磁盘树的树状层次深度是否超过第一阈值和/或判断原磁盘树中是否有未被引用的节点。
上述优化模块,具体用于当原磁盘树的树状层次深度超过第一阈值,则新建新节点,将深度大于预设的第二阈值的越深节点、越深节点的父节点和越深节点的子节点的数据均合并到新节点中;
和/或当原磁盘树中存在未被引用的孤立节点,则新建新节点,将孤立节点、孤立节点的父节点和孤立节点的子节点中的数据均合并到新节点中。
具体的,当判断模块,具体用于判断原磁盘树的树状层次深度是否超过第一阈值,则优化模块,具体用于当原磁盘树的树状层次深度超过第一阈值,则新建新节点,将深度大于预设的第二阈值的越深节点、越深节点的父节点和越深节点的子节点的数据均合并到新节点中。
当判断模块,具体用于判断原磁盘树中是否有未被引用的节点,则优化模块,具体用于当原磁盘树中存在未被引用的孤立节点,则新建新节点,将孤立节点、孤立节点的父节点和孤立节点的子节点中的数据均合并到新节点中。
需要说明的是,当上述判断模块,具体用于实时判断原磁盘树是否满足优化条件;则第二阈值小于等于第一阈值。
本发明实施例中,还可以包括接收模块;其中,
接收模块,用于接受用户输入的优化指令,则新建新节点,将每个目标节点中的数据均合并到新节点中。
具体的,优化指令中可以包括指定第二阈值的信息和是否对未引用节点进行优化的信息,系统可以利用优化指令中的信息对原磁盘树进行相应的优化。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种虚拟化平台中磁盘树优化方法及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。