一种虚拟设备状态数据的更新方法及装置的制作方法

文档序号:6377793阅读:187来源:国知局
专利名称:一种虚拟设备状态数据的更新方法及装置的制作方法
技术领域
本发明涉及计算机技术领域,特别是涉及一种虚拟设备状态数据的更新方法及装置。
背景技术
在对虚拟化环境中的虚拟设备进行日常维护过程中,虚拟设备的状态会根据不同管理平台或同一管理平台不同控制方式(自动、手动)动态变化,由于虚拟化平台(虚拟化环境)大多未提供主动通知机制,将虚拟化平台中虚拟设备的状态变化来告知第三方监控平台,目前,常用的监控技术手段是第三方监控平台需要主动定时轮询虚拟化平台,将虚拟化平台上所有虚拟设备状态数据一次性读入一个高速缓存,监控系统中所需监控信息从所述高速缓存中读取。
如果虚拟设备的状态数据发生变化,则需要在缓存中进行虚拟设备对应状态数据的更新,现有虚拟化环境中虚拟设备状态数据更新方式采用全量更新,即将本次轮询得到的虚拟化平台中所有虚拟设备的状态数据全部替换上一次轮询得到的虚拟化平台中所有虚拟设备的状态数据。在虚拟设备数量较少的情况下,采用全量更新的方式可快速更新缓存中的数据,但是,当虚拟化环境中虚拟设备量逐渐增大时,由于在进行虚拟设备状态数据读入高速缓存时,需要将虚拟化环境中虚拟设备模型结构转换为统一的缓存模型结构,在实际应用环境中存在不同的虚拟化环境,而不同的虚拟化环境的虚拟设备模型不同,导致采用全量更新方式进行的缓存数据的更新速度会逐渐降低,直接限制了监控平台的监控能力。发明内容
本发明所要解决的技术问题是实现虚拟设备的状态数据快速更新的方法,提供一种虚拟设备状态数据的更新方法及装置,以解决现有技术中因虚拟设备的数量的增加,对虚拟设备的状态数据进行全量更新速度较慢的技术问题。
为解决上述技术问题,本发明提供一种虚拟设备状态数据的更新方法及装置,本发明提供如下技术方案
一种虚拟设备状态数据的更新方法,该方法包括
在当前时刻,按照预置的以树形结构描述的快照模型,生成第一快照;
按照树的深度优先遍历原则,比较所述第一快照与第二快照得到状态数据增量集合,所述第二快照为在当前时刻的上一时刻,按照预置的以树形结构描述的快照模型,生成的快照,所述状态数据增量集合包括状态数据发生变化的虚拟设备在所述树形结构描述的快照模型中对应的节点及其更新类型;
根据所述更新类型,依次对所述状态数据发生变化的虚拟设备的状态数据进行更新,所述更新类型包括替换、新增和删除。
优选的,在当前时刻,按照预置的以树形结构描述的快照模型,生成第一快照,具5体包括
创建当前虚拟化环境对应的根节点,将所述根节点存储到待生成的第一快照,所述根节点的ID设为所述当前虚拟化环境的链接地址,所述根节点的状态检验位根据当前虚拟环境对应的二进制数进行设置;
按照虚拟设备之间的依赖关系,获取当前虚拟化环境中第一个虚拟设备作为当前虚拟设备,创建所述当前虚拟设备对应的当前子节点,并将所述当前子节点存储到待生成的第一快照,所述当前子节点中存储当前虚拟设备ID、当前虚拟设备的状态校验位和当前子节点的位置校验位,所述当前虚拟设备的状态检验位根据所述当前虚拟设备对应的二进制数进行设置,将当前子节点的ID存入其所属上级节点的位置校验位,将上级节点的ID存入所述当前子节点的位置校验位;
判断所述当前虚拟化环境中的虚拟设备是否都已经创建子节点,若否,则按照虚拟设备之间的依赖关系,将未创建子节点的下一虚拟设备作为当前虚拟设备,并执行所述创建当前虚拟设备对应的当前子节点的步骤,直到所述当前虚拟化环境中的虚拟设备都已创建子节点。
优选的,所述当前虚拟环境的状态校验位的设置方式如下
若所述当前虚拟环境对应的二进制数中I的个数为奇数,则当前虚拟环境的状态校验位设为第一状态;
若所述当前虚拟环境对应的二进制数中I的个数为偶数,则当前虚拟环境的状态校验位设为第二状态。
优选的,所述虚拟设备的状态校验位的设置方式如下
若所述当前虚拟设备对应的二进制数中I的个数为奇数,则当前虚拟设备的状态校验位设为第三状态;
若所述当前虚拟设备对应的二进制数中I的个数为偶数,则当前虚拟设备的状态校验位设为第四状态。
优选的,根据所述更新类型,依次对所述状态数据发生变化的虚拟设备的状态数据进行更新,包括
读取所述状态数据增量集合中任一节点作为当前节点,触发当前节点对应虚拟设备的状态数据更新流程,所述更新流程包括
读取当前节点对应的虚拟设备的当前状态数据;
判断所述当前节点对应的虚拟设备的更新类型是否是替换,若是替换,则根据所述当前节点对应的虚拟设备的位置校验位,将所述当前状态数据替换缓存中指定位置的初始状态数据;若不是替换,则判断所述当前节点对应的虚拟设备的更新类型是否是增加,若是增加,则根据所述当前节点对应的虚拟设备的位置校验位,将所述当前状态数据存储到缓存中指定位置;若不是增加,则判断所述当前节点对应的虚拟设备的更新类型是否是删除,若是删除,则根据所述当前节点对应的虚拟设备的当前位置校验位,将缓存中指定位置的当前状态数据删除;
判断所述状态数据增量集合中的节点是否都已经被读取,若否,则将未读取的节点中任一节点作为当前节点,并执行所述更新流程,直到所述状态数据增量集合中的节点都已被读取。6
一种虚拟设备状态数据的更新装置,所述装置包括
快照生成模块,用于在当前时刻,按照预置的以树形结构描述的快照模型,生成第一,决照;
比较模块,用于按照树的深度优先遍历原则,比较所述第一快照与第二快照得到状态数据增量集合,所述第二快照为在当前时刻的上一时刻,按照预置的以树形结构描述的快照模型,生成的快照,所述状态数据增量集合包括状态数据发生变化的虚拟设备在所述树形结构描述的快照模型中对应的节点及其更新类型;
更新模块,用于根据所述更新类型,依次对所述状态数据发生变化的虚拟设备的状态数据进行更新,所述更新类型包括替换、新增和删除。
优选的,所述快照生成模块包括
第一创建子模块,用于创建当前虚拟化环境对应的根节点,将所述根节点存储到待生成的第一快照,所述根节点的ID设为所述当前虚拟化环境的链接地址,所述根节点的状态检验位根据当前虚拟环境对应的二进制数进行设置;
第一获取子模块,用于按照虚拟设备之间的依赖关系,获取当前虚拟化环境中第一个虚拟设备作为当前虚拟设备;
第二创建子模块,用于创建所述当前虚拟设备对应的当前子节点,并将所述当前子节点存储到待生成的第一快照,所述当前子节点中存储当前虚拟设备ID、当前虚拟设备的状态校验位和当前子节点的位置校验位,所述当前虚拟设备的状态检验位根据所述当前虚拟设备对应的二进制数进行设置,将当前子节点的ID存入其所属上级节点的位置校验位,将上级节点的ID存入所述当前子节点的位置校验位;
第一判断子模块,用于判断所述当前虚拟化环境中的虚拟设备是否都已经创建子节点,
第二获取子模块,用于在所述判断子模块结果为否时,按照虚拟设备之间的依赖关系,将未创建子节点的下一虚拟设备作为当前虚拟设备;
第一触发子模块,用于触发所述第二创建子模块,直到所述当前虚拟化环境中的虚拟设备都已创建子节点。
优选的,所述当前虚拟环境的状态校验位的设置方式如下
若所述当前虚拟环境对应的二进制数中I的个数为奇数,则当前虚拟环境的状态校验位设为第一状态;
若所述当前虚拟环境对应的二进制数中I的个数为偶数,则当前虚拟环境的状态校验位设为第二状态。
优选的,所述虚拟设备的状态校验位的设置方式如下
若所述当前虚拟设备对应的二进制数中I的个数为奇数,则当前虚拟设备的状态校验位设为第三状态;
若所述当前虚拟设备对应的二进制数中I的个数为偶数,则当前虚拟设备的状态校验位设为第四状态。
优选的,所述更新模块包括
第一读取子模块,用于读取所述状态数据增量集合中任一节点作为当前节点;
第二触发子模块,用于触发所述当前节点对应虚拟设备的状态数据的更新流程,所述更新流程包括
读取当前节点对应的虚拟设备的当前状态数据;
判断所述当前节点对应的虚拟设备的更新类型是否是替换,若是替换,则根据所述当前节点对应的虚拟设备的位置校验位,将所述当前状态数据替换缓存中指定位置的初始状态数据;
若不是替换,则判断所述当前节点对应的虚拟设备的更新类型是否是增加,若是增加,则根据所述当前节点对应的虚拟设备的位置校验位,将所述当前状态数据存储到缓存中指定位直;
若不是增加,则判断所述当前节点对应的虚拟设备的更新类型是否是删除,若是删除,则根据所述当前节点对应的虚拟设备的当前位置校验位,将缓存中指定位置的当前状态数据删除;
第二判断子模块,用于判断所述状态数据增量集合中的节点是否都已经被读取;
第二读取子模块,用于在所述第二判断子模块的结果为否时,在未读取的节点中读取任一节点作为当前节点;
第三触发子模块,用于触发所述第二触发子模块,直至所有的节点都已被读取。
本发明中,通过预设树形结构的快照模型,为不同的虚拟环境中不同虚拟设备提供一个统一的生成快照模型,生成不同时刻的快照,按照树的深度优先遍历原则,比较所述不同时刻的快照,可以快速的确定状态数据发生变化的虚拟设备及其更新类型,进而就可以根据更新类型对虚拟设备的状态数据进行更新,本发明与现有技术相比,因为,不需要对所有的虚拟设备的状态数据全部进行更新,所以提高了虚拟设备状态数据更新的速度,同时,当虚拟设备的数量增加时,采用本发明的技术方案,只需要将增加的虚拟设备对应的状态数据进行更新即可,所以在虚拟设备的数量增加时同样可以快速实现虚拟设备状态数据的更新。


为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下, 还可以根据这些附图获得其他的附图。 图I为本发明一种虚拟设备状态数据的更新方法实施例I的流程图;图2为本发明中预置的树形结构的快照模型的示意图;图3为本发明一种虚拟设备状态数据的更新方法实施例2的流程图;图4为本发明方法实施例2第一快照对应的树形结构的示意图;图5为本发明方法实施例2第二快照对应的树形结构的示意图;图6为本发明方法实施例2中比较第一快照和第二快照的流程图;图7为本发明一种虚拟设备状态数据的更新装置实施例的结构示意图;图8为本发明装置实施例中快照生成模块的结构示意图;图9为本发明装置实施例中更新模块的结构示意图;图10为本发明在实际应用中的一种结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参考图I所示,为本发明提供的一种虚拟设备状态数据的更新方法实施例I的流程图,本实施例具体可以包括
步骤101 :在当前时刻,按照预置的以树形结构描述的快照模型,生成第一快照。
参考图2所示,图2为所述预置的树形结构的快照模型的示意图,其中节点A称为根节点,节点B G称为子节点,最后一级节点DY称为叶子节点,即叶子节点没有下级子节点,以根节点A为基础,子节点B、D、E所在的一侧称为树的左枝,子节点C、F、G所在的一侧称为树的右枝,一个树形结构中可以只有左枝或者只有右枝,图2仅用来示意性的说明树形结构,并没有具体的实际意义。
步骤102 :按照树的深度优先遍历原则,比较所述第一快照与第二快照得到状态数据增量集合。
所述树的深度优先遍历原则是指按照树上根节点包含的左枝和右枝的一次进行遍历,即先遍历左枝再遍历右枝,或者先遍历右枝再遍历左枝,按照既定遍历顺序比较所述第一快照与第二快照,可以得到第一快照与第二快照中发生变化的节点,将发生变化的节点存储到状态数据增量集合中。
步骤103 :根据所述更新类型,依次对所述状态数据发生变化的虚拟设备的状态数据进行更新。
所述更新类型包括替换、新增和删除,具体的根据状态数据发生变化的虚拟设备的更新类型是替换、新增还是删除,对所述状态数据发生变化的虚拟设备的状态数据进行相应的更新。
本实施例中,通过预设树形结构的快照模型,为不同的虚拟环境中不同虚拟设备提供一个统一的生成快照模型,生成不同时刻的快照,按照树的深度优先遍历原则,比较所述不同时刻的快照,可以快速的确定状态数据发生变化的虚拟设备及其更新类型,进而就可以根据更新类型对虚拟设备的状态数据进行更新,本发明与现有技术相比,因为,不需要对所有的虚拟设备的状态数据全部进行更新,所以提高了虚拟设备状态数据更新的速度, 同时,当虚拟设备的数量增加时,采用本发明的技术方案,只需要将增加的虚拟设备对应的状态数据进行更新即可,所以在虚拟设备的数量增加时同样可以快速实现虚拟设备状态数据的更新。
参考图3所示,为本发明一种虚拟设备状态数据的更新方法实施例2的流程图,本实施例是在实施例I的基础上的一个具体实现,本实施例具体包括
步骤301 :在当前时刻,生成第一快照。
虚拟化环境中各种虚拟设备之间由相互依赖关系而相互关联,比如虚拟主机包含虚拟机,虚拟机包含虚拟网卡等。由于不同厂商对虚拟化设备及属性定义有一定差异,通用虚拟化环境监控平台通常采用业界规范的统一虚拟化领域模型来描述虚拟化环境,若采用业界规范的虚拟设备及相互关系模型结构,来描述虚拟化环境中虚拟设备本身的状态以及虚拟设备之间的依赖关系需要记录大量与当前运行期状态不相干的描述,比如名称空间URI定义,虚拟设备配置与软件安装过程定义等信息,占用了大量缓存空间。为了能够以更小的时间、空间复杂度,快速生成、比对快照,同时屏蔽不同厂商提供的虚拟化平台的差异性,本发明提出如图2所示的快照模型。图2所示的快照模型中的节点表示的物理意义有以下两种I)、资源池对应一个可提供独立访问链接地址信息的虚拟化环境,一个快照对应一个资源池根节点;2)、虚拟设备对应虚拟化环境中不同类型的虚拟设备。图2所示的快照模型中的节点包含的属性主要有以下四个·
I)、ID :对应虚拟设备ID或资源池链接地址;2)、类型标识是虚拟设备还是资源池节点;3)、状态校验位以二进制码标识的虚拟设备当前状态的校验位;4)、位置校验位以包含当前节点的上级节点和下级节点的字符串标识的当前节点在树上位置的校验位;基于上述内容,所述步骤301中所述生成第一快照具体包括以下子步骤子步骤Al :创建当前虚拟化环境对应的根节点。当前虚拟化环境对应的根节点中存储的ID设为所述当前虚拟化环境的链接地址,所述根节点的状态检验位根据当前虚拟环境对应的二进制数进行设置,当前虚拟环境的状态校验位的设置方式如下若所述当前虚拟环境对应的二进制数中I的个数为奇数,则当前虚拟环境的状态校验位设为第一状态“I”;若所述当前虚拟环境对应的二进制数中I的个数为偶数,则当前虚拟环境的状态校验位设为第二状态“O”。其中第一状态“I”和第二状态“O”分别表示当前虚拟环境对应的二进制数中I的个数为奇数还是偶数,在实际的存储中采用“O”和“I”的形式进行存储,本实施例中,用“I”表示当前虚拟环境对应的二进制数中I的个数为奇数,用“O”表示当前虚拟环境对应的二进制数中I的个数为偶数。子步骤A2 :获取当前虚拟设备。按照虚拟设备之间的依赖关系,获取当前虚拟化环境中第一个虚拟设备作为当前虚拟设备。子步骤A3 :创建所述当前虚拟设备对应的当前子节点。所述当前子节点中存储当前虚拟设备ID、当前虚拟设备的状态校验位和当前子节点的位置校验位,所述当前虚拟设备的状态检验位根据所述当前虚拟设备对应的二进制数进行设置,具体的设置方式如下若所述当前虚拟设备对应的二进制数中I的个数为奇数,则当前虚拟设备的状态校验位设为第三状态“I”;若所述当前虚拟设备对应的二进制数中I的个数为偶数,则当前虚拟设备的状态校验位设为第四状态“O”。
其中第三状态“I”和第四状态“O”分别表示当前虚拟设备对应的二进制数中I的个数为奇数还是偶数,在实际的存储中采用“O”和“I”的形式进行存储,本实施例中,用“I”表示当前虚拟设备对应的二进制数中I的个数为奇数,用“O”表示当前虚拟环境对应的二进制数中I的个数为偶数。将当前子 节点中的ID存入其所属上级节点的位置校验位,将上级节点的ID存入所述当前子节点的位置校验位;子步骤A4:判断所述当前虚拟化环境中的虚拟设备是否都已经创建子节点,若是,则进入子步骤A5,若否,则进入子步骤A6。子步骤A5 :将创建的所有节点存储到待生成的第一快照中。子步骤A6:按照虚拟设备之间的依赖关系,将未创建子节点的下一虚拟设备作为当前虚拟设备,返回子步骤A3。子步骤ΑΓΑ6执行完,即可得到第一快照。再返回图3所示的实施例2,进入步骤302。步骤302 比较第一快照和第二快照。所述第二快照为所述当前时刻的上一时刻生成的快照,所述第二快照生成方式可以参考所述第一快照生成的方式,此处不再赘述。本实施例中,所有快照生成均采用图2所示的树形结构,因为在实际的虚拟环境中,虚拟设备之间的依赖关系会因为新的虚拟设备的加入或者原有虚拟设备的退出而发生变化,所以生成快照后,每个快照对应的实际树形结构可能会有所不同,为了便于描述,参考图4和图5所示,图4为本实施例第一快照对应的树形结构,图5为本实施例第二快照对应的树形结构,其中以第一快照和第二快照对应于同一虚拟环境,节点B的状态发生了变化,节点D和节点E是删除的虚拟设备对应的节点,节点F和节点G是新增虚拟设备对应的节点为例,对所述步骤302的具体实现进行示意性的说明。步骤302中比较第一快照和第二快照是按照树的深度优先遍历原则进行的,本步骤的具体过程如图6所示,图6为步骤302中比较第一快照和第二快照的流程图,所述比较第一快照和第二快照具体可以包括步骤601 :读取第一快照和第二快照中的根节点。步骤602 比较第一快照和第二快照中的根节点A中的ID及其状态校验位是否相同,若相同,则进入步骤603。若第一快照和第二快照中的资源池根节点A中状态校验位相同,说明第一快照和第二快照中的根节点A为虚拟环境平台,在此基础上,若第一快照和第二快照中根节点A中的ID相同,说明第一快照和第二快照对应于同一虚拟环境,因为步骤302是以第一快照和第二快照中的根节点A中的ID及其状态校验位相同进行说明的,在实际环境中有可能第一快照和第二快照对应于不同的虚拟环境,此时,将第一快照对应的虚拟环境及其虚拟设备全部看作是新增的,则直接进入步骤304对所述虚拟环境中的状态数据进行更新。步骤603 :读取第一快照中节点B作为当前子节点。第一快照中当前子节点可以是节点B也可以是节点C,本步骤以树形结构的左枝为第一枝优先遍历,即节点B为当前子节点。步骤604 :在第二快照中查找与当前子节点B中ID相同的匹配节点,若找到,则进入步骤605。当虚拟环境中有新增的虚拟设备时,所述新增虚拟设备对应的节点会增加到原快照对应的树形结构中叶子节点的下级中,所以,以本步骤为例,若未找到,说明当前子节点B是新增的节点,即节点B对应的虚拟设备是新增的,如果当前子节点B还有下级子节点,那么,所述下级子节点也同样都是新增虚拟设备对应的节点,则当前子节点B及其下级子节点的更新类型均设置为新增。步骤605 :比较当前子节点B与匹配节点的状态校验位是否相同,若不同,则进入步骤606,若相同,则进入步骤607。步骤606 :设置当前子节点B的更新类型为替换。步骤607 :读取第一快照中节点C作为当前子节点。图4所示的第一快照对应的树形结构的左枝已经遍历完,则进行右枝的遍历,读 取节点C作为当前子节点。步骤608:在第二快照中查找与当前子节点C中ID相同的匹配节点,若找到,则进入步骤609。在第二快照中查找与当前子节点C中ID相同的匹配节点,未找到的情况可以参考步骤604的描述,此处不再赘述。步骤605 :比较当前子节点C与当前子节点C中ID相同的匹配节点的状态校验位是否相同,若相同,则进入步骤610。步骤610 :读取第一快照中节点F作为当前子节点。步骤611 :在第二快照中查找与当前子节点F中ID相同的匹配节点,若未找到,则进入步骤612。步骤612 :设置当前子节点F、G的更新类型为新增。在第二快照中没有找到与当前子节点F中ID相同的匹配节点,即当前子节点F是新增节点,参考步骤604的描述可知,节点G同样是新增节点,所以设置节点F和节点G的更新类型为新增。步骤613 :在第二快照中查找是否有未被比较的节点,若有,则进入步骤614,若无,则进入步骤303。步骤614 :设置节点D、E的更新类型为删除。如果在第二快照中有未被比较的节点,说明在第一快照中不存在所述未被比较的节点,即所述未被比较的节点对应的虚拟设备在当前虚拟环境中已经不存在,所以所述未被比较的节点的更新类型设置为删除。步骤60广步骤614执行完,则过程结束,即本实施例中步骤302中“比较第一快照与第二快照”执行结束,进入步骤303。步骤303 :生成状态数据增量集合。所述状态数据增量集合中包括所有更新类型为替换、新增和删除的虚拟设备对应的节点。将步骤302中通过比较第一快照和第二快照后发生变化的节点及其更新类型存储到状态数据增量集合中。步骤304 :读取所述状态数据集合中第一个节点作为当前节点。
步骤305 :更新所述当前节点对应的虚拟设备的状态数据。本步骤中更新所述当前节点对应的虚拟设备的状态数据的具体过程包括子步骤BI :读取当前节点对应的当前虚拟设备的当前状态数据。子步骤B2:判断所述当前虚拟设备的更新类型是否是替换,若是替换,则进入子步骤B3,若不是替换,则进入子步骤B4。子步骤B3:根据所述当前虚拟设备的位置校验位,将所述当前状态数据替换缓存中指定位置的初始状态数据。子步骤B4:判断所述当前虚拟设备的更新类型是否是增加,若是增加,则进入子步骤B5,若不是增加,则进入子步骤B6。·
子步骤B5 :根据所述当前虚拟设备的位置校验位,将所述当前状态数据存储到缓存中指定位直。子步骤B6:判断所述当前虚拟设备的更新类型是否是删除,若是删除,则进入子步骤B7。子步骤B7:根据所述当前虚拟设备的位置校验位,将缓存中指定位置的当前状态数据删除。子步骤ΒΓ子步骤B7执行完,则步骤305中“更新所述当前节点对应的虚拟设备的状态数据”的流程执行完毕,进入步骤306。步骤306 :判断所述状态数据增量集合中的节点是否都已经被读取,若是,进入步骤307,若否,进入步骤308。步骤307 :结束更新流程。步骤308 :将所述状态数据增量集合中未读取的节点中任一节点作为当前节点,返回步骤305。本实施例中,通过预设树形结构的快照模型,为不同的虚拟环境中不同虚拟设备提供一个统一的生成快照模型,生成不同时刻的快照,按照树的深度优先遍历原则,比较所述不同时刻的快照,可以快速的确定状态数据发生变化的虚拟设备及其更新类型,进而就可以根据更新类型对虚拟设备的状态数据进行更新,本发明与现有技术相比,因为,不需要对所有的虚拟设备的状态数据全部进行更新,所以提高了虚拟设备状态数据更新的速度,同时,当虚拟设备的数量增加时,采用本发明的技术方案,只需要将增加的虚拟设备对应的状态数据进行更新即可,所以在虚拟设备的数量增加时同样可以快速实现虚拟设备状态数据的更新。相应的,本发明还提供一种虚拟设备状态数据的更新装置,参考图7所示,为本发明一种虚拟设备状态数据的更新装置,该装置包括快照生成模块710,用于在当前时刻,按照预置的以树形结构描述的快照模型,生成第一,决照;比较模块720,用于按照树的深度优先遍历原则,比较所述第一快照与第二快照得到状态数据增量集合,所述第二快照为在当前时刻的上一时刻,按照预置的以树形结构描述的快照模型,生成的快照,所述状态数据增量集合包括状态数据发生变化的虚拟设备在所述树形结构描述的快照模型中对应的节点及其更新类型;更新模块730,用于根据所述更新类型,依次对所述状态数据发生变化的虚拟设备的状态数据进行更新,所述更新类型包括替换、新增和删除。优选的,参考图8所示,所述快照生成模块710具体可以包括第一创建子模块810,用于创建当前虚拟化环境对应的根节点,将所述根节点存储到待生成的第一快照,所述根节点的ID设为所述当前虚拟化环境的链接地址,所述根节点的状态检验位根据当前虚拟环境对应的二进制数进行设置;第一获取子模块820,用于按照虚拟设备之间的依赖关系,获取当前虚拟化环境中第一个虚拟设备作为当前虚拟设备;·第二创建子模块830,用于创建所述当前虚拟设备对应的当前子节点,并将所述当前子节点存储到待生成的第一快照,所述当前子节点中存储当前虚拟设备ID、当前虚拟设备的状态校验位和当前子节点的位置校验位,所述当前虚拟设备的状态检验位根据所述当前虚拟设备对应的二进制数进行设置,将当前子节点的ID存入其所属上级节点的位置校验位,将上级节点的ID存入所述当前子节点的位置校验位;第一判断子模块840,用于判断所述当前虚拟化环境中的虚拟设备是否都已经创建子节点;第二获取子模块850,用于在所述判断子模块结果为否时,按照虚拟设备之间的依赖关系,将未创建子节点的下一虚拟设备作为当前虚拟设备;第一触发子模块860,用于触发所述第二创建子模块,直到所述当前虚拟化环境中的虚拟设备都已创建子节点。优选的,参考图9所示,所述更新模块730具体可以包括第一读取子模块910,用于读取所述增量集合中任一节点作为当前节点;第二触发子模块920,用于触发所述当前节点对应虚拟设备的状态数据的更新流程,所述更新流程的具体实现可以参考步骤305的实现方式,此处不再赘述;第二判断子模块930,用于判断所述状态数据增量集合中的节点是否都已经被读取;第二读取子模块940,用于在所述第二判断子模块的结果为否时,在未读取的节点中读取任一节点作为当前节点;第三触发子模块950,用于触发所述第二触发子模块。在实际应用中,本发明实施例的具体实现可以通过图10所示的结构来完成,包括快照生成模块1001,用于针对指定虚拟化环境生成能够精确标识虚拟设备状态的快照;快照比对模块1002,用于负责通过比对不同时刻的快照找出新增、更新和删除的虚拟设备对象对应的节点;连接器1003,用于屏蔽不同厂商不同地域虚拟化平台的连接方式差异,提供统一的虚拟化平台连接方式和连接池;增量数据抽取器1004,用于根据快照比对结果通过连接器从虚拟化平台中获取指定的增量数据;缓存更新模块1005,用于根据快照比对结果和增量数据抽取器抽取出来的增量数据更新状态缓存。
本实施例中,通过预设树形结构的快照模型,为不同的虚拟环境中不同虚拟设备提供一个统一的生成快照模型,生成不同时刻的快照,按照树的深度优先遍历原则,比较所述不同时刻的快照,可以快速的确定状态数据发生变化的虚拟设备及其更新类型,进而就可以根据更新类型对虚拟设备的状态数据进行更新,本发明与现有技术相比,因为,不需要对所有的虚拟设备的状态数据全部进行更新,所以提高了虚拟设备状态数据更新的速度,同时,当虚拟设备的数量增加时,采用本发明的技术方案,只需要将增加的虚拟设备对应的状态数据进行更新即可,所以在虚拟设备的数量增加时同样可以快速实现虚拟设备状态数据的更新。需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。对于系统实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上所述仅是本发明的具体实施方式
,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应 视为本发明的保护范围。
权利要求
1.一种虚拟设备状态数据的更新方法,其特征在于,包括在当前时刻,按照预置的以树形结构描述的快照模型,生成第一快照;按照树的深度优先遍历原则,比较所述第一快照与第二快照得到状态数据增量集合, 所述第二快照为在当前时刻的上一时刻,按照预置的以树形结构描述的快照模型,生成的快照,所述状态数据增量集合包括状态数据发生变化的虚拟设备在所述树形结构描述的快照模型中对应的节点及其更新类型;根据所述更新类型,依次对所述状态数据发生变化的虚拟设备的状态数据进行更新, 所述更新类型包括替换、新增和删除。
2.根据权利要求I所述的方法,其特征在于,在当前时刻,按照预置的以树形结构描述的快照模型,生成第一快照,具体包括创建当前虚拟化环境对应的根节点,将所述根节点存储到待生成的第一快照,所述根节点的ID设为所述当前虚拟化环境的链接地址,所述根节点的状态检验位根据当前虚拟环境对应的二进制数进行设置;按照虚拟设备之间的依赖关系,获取当前虚拟化环境中第一个虚拟设备作为当前虚拟设备,创建所述当前虚拟设备对应的当前子节点,并将所述当前子节点存储到待生成的第一快照,所述当前子节点中存储当前虚拟设备I D、当前虚拟设备的状态校验位和当前子节点的位置校验位,所述当前虚拟设备的状态检验位根据所述当前虚拟设备对应的二进制数进行设置,将当前子节点的ID存入其所属上级节点的位置校验位,将上级节点的ID存入所述当前子节点的位置校验位;判断所述当前虚拟化环境中的虚拟设备是否都已经创建子节点,若否,则按照虚拟设备之间的依赖关系,将未创建子节点的下一虚拟设备作为当前虚拟设备,并执行所述创建当前虚拟设备对应的当前子节点的步骤,直到所述当前虚拟化环境中的虚拟设备都已创建子节点。
3.根据权利要求2所述的方法,其特征在于,所述当前虚拟环境的状态校验位的设置方式如下若所述当前虚拟环境对应的二进制数中I的个数为奇数,则当前虚拟环境的状态校验位设为第一状态;若所述当前虚拟环境对应的二进制数中I的个数为偶数,则当前虚拟环境的状态校验位设为第二状态。
4.根据权利要求2所述的方法,其特征在于,所述虚拟设备的状态校验位的设置方式如下若所述当前虚拟设备对应的二进制数中I的个数为奇数,则当前虚拟设备的状态校验位设为第三状态;若所述当前虚拟设备对应的二进制数中I的个数为偶数,则当前虚拟设备的状态校验位设为第四状态。
5.根据权利要求I所述的方法,其特征在于,根据所述更新类型,依次对所述状态数据发生变化的虚拟设备的状态数据进行更新,包括读取所述状态数据增量集合中任一节点作为当前节点,触发当前节点对应虚拟设备的状态数据更新流程,所述更新流程包括读取当前节点对应的虚拟设备的当前状态数据;判断所述当前节点对应的虚拟设备的更新类型是否是替换,若是替换,则根据所述当前节点对应的虚拟设备的位置校验位,将所述当前状态数据替换缓存中指定位置的初始状态数据;若不是替换,则判断所述当前节点对应的虚拟设备的更新类型是否是增加,若是增加,则根据所述当前节点对应的虚拟设备的位置校验位,将所述当前状态数据存储到缓存中指定位置;若不是增加,则判断所述当前节点对应的虚拟设备的更新类型是否是删除,若是删除,则根据所述当前节点对应的虚拟设备的当前位置校验位,将缓存中指定位置的当前状态数据删除;判断所述状态数据增量集合中的节点是否都已经被读取,若否,则将未读取的节点中任一节点作为当前节点,并执行所述更新流程,直到所述状态数据增量集合中的节点都已被读取。
6.一种虚拟设备状态数据的更新装置,其特征在于,包括快照生成模块,用于在当前时刻,按照预置的以树形结构描述的快照模型,生成第一快昭.比较模块,用于按照树的深度优先遍历原则,比较所述第一快照与第二快照得到状态数据增量集合,所述第二快照为在当前时刻的上一时刻,按照预置的以树形结构描述的快照模型,生成的快照,所述状态数据增量集合包括状态数据发生变化的虚拟设备在所述树形结构描述的快照模型中对应的节点及其更新类型;更新模块,用于根据所述更新类型,依次对所述状态数据发生变化的虚拟设备的状态数据进行更新,所述更新类型包括替换、新增和删除。
7.根据权利要求6所述的装置,其特征在于,所述快照生成模块包括第一创建子模块,用于创建当前虚拟化环境对应的根节点,将所述根节点存储到待生成的第一快照,所述根节点的ID设为所述当前虚拟化环境的链接地址,所述根节点的状态检验位根据当前虚拟环境对应的二进制数进行设置;第一获取子模块,用于按照虚拟设备之间的依赖关系,获取当前虚拟化环境中第一个虚拟设备作为当前虚拟设备;第二创建子模块,用于创建所述当前虚拟设备对应的当前子节点,并将所述当前子节点存储到待生成的第一快照,所述当前子节点中存储当前虚拟设备ID、当前虚拟设备的状态校验位和当前子节点的位置校验位,所述当前虚拟设备的状态检验位根据所述当前虚拟设备对应的二进制数进行设置,将当前子节点的ID存入其所属上级节点的位置校验位,将上级节点的ID存入所述当前子节点的位置校验位;第一判断子模块,用于判断所述当前虚拟化环境中的虚拟设备是否都已经创建子节点,第二获取子模块,用于在所述判断子模块结果为否时,按照虚拟设备之间的依赖关系, 将未创建子节点的下一虚拟设备作为当前虚拟设备;第一触发子模块,用于触发所述第二创建子模块,直到所述当前虚拟化环境中的虚拟设备都已创建子节点。
8.根据权利要求7所述的装置,其特征在于,所述当前虚拟环境的状态校验位的设置方式如下若所述当前虚拟环境对应的二进制数中I的个数为奇数,则当前虚拟环境的状态校验位设为第一状态;若所述当前虚拟环境对应的二进制数中I的个数为偶数,则当前虚拟环境的状态校验位设为第二状态。
9.根据权利要求7所述的装置,其特征在于,所述虚拟设备的状态校验位的设置方式如下若所述当前虚拟设备对应的二进制数中I的个数为奇数,则当前虚拟设备的状态校验位设为第三状态;若所述当前虚拟设备对应的二进制数中I的个数为偶数,则当前虚拟设备的状态校验位设为第四状态。
10.根据权利要求6所述的装置,其特征在于,所述更新模块包括第一读取子模块,用于读取所述状态数据增量集合中任一节点作为当前节点;第二触发子模块,用于触发所述当前节点对应虚拟设备的状态数据的更新流程,所述更新流程包括读取当前节点对应的虚拟设备的当前状态数据;判断所述当前节点对应的虚拟设备的更新类型是否是替换,若是替换,则根据所述当前节点对应的虚拟设备的位置校验位,将所述当前状态数据替换缓存中指定位置的初始状态数据;若不是替换,则判断所述当前节点对应的虚拟设备的更新类型是否是增加,若是增加, 则根据所述当前节点对应的虚拟设备的位置校验位,将所述当前状态数据存储到缓存中指定位置;若不是增加,则判断所述当前节点对应的虚拟设备的更新类型是否是删除,若是删除, 则根据所述当前节点对应的虚拟设备的当前位置校验位,将缓存中指定位置的当前状态数据删除;第二判断子模块,用于判断所述状态数据增量集合中的节点是否都已经被读取;第二读取子模块,用于在所述第二判断子模块的结果为否时,在未读取的节点中读取任一节点作为当前节点;第三触发子模块,用于触发所述第二触发子模块,直至所有的节点都已被读取。
全文摘要
本发明公开了一种虚拟设备状态数据的更新方法及装置,所述方法包括在当前时刻,按照预置的以树形结构描述的快照模型,生成第一快照;按照树的深度优先遍历原则,比较所述第一快照与第二快照得到状态数据增量集合,所述状态数据增量集合包括状态数据发生变化的虚拟设备在所述树形结构描述的快照模型中对应的节点及其更新类型;根据所述更新类型,依次对所述状态数据发生变化的虚拟设备的状态数据进行更新。本发明中,可以快速的确定状态数据发生变化的虚拟设备及其更新类型,只需要对状态数据发生变化的虚拟设备对应的状态数据进行更新即可,所以在虚拟设备的数量增加时同样可以快速实现虚拟设备状态数据的更新。
文档编号G06F11/10GK102929745SQ20121036385
公开日2013年2月13日 申请日期2012年9月26日 优先权日2012年9月26日
发明者许力, 张霞 申请人:东软集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1