内部快照的处理方法、设备及计算机可读介质与流程

文档序号:37682152发布日期:2024-04-18 20:54阅读:13来源:国知局
本技术涉及信息,尤其涉及一种qcow2格式内部快照的处理方法、设备及计算机可读介质。
背景技术
::1、qcow2是一种基于cow(copyonwrite,写时复制)的存储格式,被广泛应用于虚拟化云计算环境中,其主要优点有:2、1)支持写时复制技术,可以节省存储空间;3、2)支持压缩,可以进一步节省存储空间;4、3)支持快照技术,可以快速创建虚拟机的备份、测试和开发环境;5、4)支持加密,可以保护虚拟机中的敏感数据;6、5)支持动态调整虚拟机大小,可以根据需要增加或减少虚拟机的存储空间;7、6)支持多种操作系统,可以运行多种不同的操作系统。8、如图1所示,qcow2作为一种主流的虚拟机镜像存储格式,其通过两层的索引表,即l1 table、l2table,来建立镜像与簇(cluster)之间的映射,在访问qcow2镜像时只需遍历l1 table、l2 table,即可访问所有数据的cluster。目前qcow2支持外部快照和内部快照两种形式,可以用于创建虚拟机的数据备份副本,并在数据丢失或损坏时快速恢复数据,提高虚拟机的可靠性和可用性。9、为了支持内部快照,qcow2在索引表的条目信息(l1、l2 table entry)中引入了cow标志位表明某一个簇的只读属性。在创建内部快照的时候,所有当前activel1、l2table指向的已分配的cluster,都会置上cow标记,如图2所示。当需要向具有cow标记的cluster写入新数据时,就会触发qcow2的cow机制,创建一个新的cluster并复制原cluster中的数据,新cluster不设置cow标记,且新数据会向新cluster写入,而不向原cluster写入,以确保原cluster中的数据不再发生变化。当下次创建内部快照时,新创建的cluster会被置上cow标记,以保证内部快照引用的cluster内容后续不再发生变化。由于在该过程中,同一个cluster可以被多个内部快照引用,因此仅有一个cow标记是不够的,因此qcow2还进一步引入了cluster的引用计数,用于记录当前activel1、l2table及所有内部快照对其的引用次数。如图3所示,该图中的每个方框表示一个cluster,其中的具体数值表示cluster在写入数据、创建内部快照以及删除内部快照后的引用计数,当创建内部快照时,给被该内部快照引用的每一个cluster的引用计数加1,而删除内部快照时,该内部快照引用的每一个cluster的引用计数减1。当一个cluster因触发cow机制而分配了一个新的cluster时,新cluster的引用计数初始化为1(表示被当前activel1、l2 table引用),同时原cluster的引用计数减1。10、由于在内部快照创建时,需要遍历active的l1table和l2 table,对所有已分配的cluster更新cow标记并更新引用计数。在qcow2镜像实际数据量很大时,已分配的cluster的数量也会很大,因此每次创建内部快照时需要花费大量时间遍历更新cluster的cow标记和引用计数,这会导致内部快照的创建过程耗时及其漫长,使得qcow2内部快照的性能降低。而在内部快照创建期间,虚拟机业务请求将暂时得不到处理,这会对虚拟机业务产生极大影响。技术实现思路1、本技术的一个目的是提供一种qcow2格式内部快照的处理方法、设备及计算机可读介质。2、为实现上述目的,本技术提供了一种qcow2格式内部快照的处理方法,所述方法包括:3、在创建簇时,为新创建的第一簇添加cow标记,并将所述第一簇的簇快照id设置为当前的全局快照id;4、在创建内部快照时,将当前的全局快照id递增预设值;5、在覆写簇时,获取需要写入新数据的第二簇的簇快照id,将所述第二簇快照id与当前的全局快照id进行比较;若所述第二簇的簇快照id与当前的全局快照id不一致,基于cow机制复制生成一个新的第三簇,向所述第三簇写入新数据,为所述第三簇添加cow标记,并将所述第三簇的簇快照id设置为当前的全局快照id,同时去除所述第二簇的cow标记,并根据当前引用了第二簇的内部快照的数量更新所述第二簇的引用计数。6、进一步地,所述方法还包括:7、若所述第二簇的簇快照id与当前的全局快照id一致,向所述第二簇写入新数据。8、进一步地,基于cow机制复制生成一个新的第三簇,向所述第三簇写入新数据,为所述第三簇添加cow标记,并将所述第三簇的簇快照id设置为当前的全局快照id,包括:9、创建一个新的第三簇,复制所述第二簇中的当前数据至所述第三簇中,并向所述第三簇写入新数据,为所述第三簇添加cow标记,并将所述第三簇的簇快照id设置为当前的全局快照id。10、进一步地,根据当前引用了第二簇的内部快照的数量更新所述第二簇的引用计数,包括:11、遍历内部快照表,查找所有引用了所述第二簇的内部快照;12、将引用了所述第二簇的内部快照的数量设置为所述第二簇的引用计数。13、进一步地,所述方法还包括:14、在删除内部快照时,确定所述内部快照引用的第四簇;15、若所述第四簇不具有cow标记,将所述第四簇的引用计数减1。16、进一步地,所述方法还包括:17、判断簇的引用计数,若所述引用计数为0,则释放该簇。18、进一步地,所述方法还包括:19、若所述第四簇具有cow标记,跳过所述第四簇。20、新创建的簇中引用计数的初始值设置为1。21、基于本技术的另一方面,还提供了一种qcow2格式内部快照的处理设备,该设备包括用于存储计算机程序指令的存储器和用于执行计算机程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发所述设备执行所述qcow2格式内部快照的处理方法。22、本技术实施例还提供了一种计算机可读介质,其上存储有计算机程序指令,所述计算机程序指令可被处理器执行以实现所述qcow2格式内部快照的处理方法。23、与现有技术相比,本技术提供了一种qcow2格式内部快照的处理方案,该方案在创建簇时,为新创建的第一簇添加cow标记,并将所述第一簇的簇快照id设置为当前的全局快照id;在创建内部快照时,将当前的全局快照id递增预设值;在覆写簇时,获取需要写入新数据的第二簇的簇快照id,将所述第二簇快照id与当前的全局快照id进行比较;若所述第二簇的簇快照id与当前的全局快照id不一致,基于cow机制复制生成一个新的第三簇,向所述第三簇写入新数据,为所述第三簇添加cow标记,并将所述第三簇的簇快照id设置为当前的全局快照id,同时去除所述第二簇的cow标记,并根据当前引用了第二簇的内部快照的数量更新所述第二簇的引用计数。由此,使得本方案在创建内部快照时,不需要遍历索引表来实时更新所有簇的cow标记以及索引计数,而是利用额外引入的全局快照id进行判断,在其它时间段异步更新cow标记和引用计数,由此可以显著提升创建内部快照时的性能,减少对虚拟机业务造成的影响。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1