CN103049219B - 适用于虚拟化平台的虚拟磁盘写缓存系统及其操作方法 - Google Patents
适用于虚拟化平台的虚拟磁盘写缓存系统及其操作方法 Download PDFInfo
- Publication number
- CN103049219B CN103049219B CN201210540917.1A CN201210540917A CN103049219B CN 103049219 B CN103049219 B CN 103049219B CN 201210540917 A CN201210540917 A CN 201210540917A CN 103049219 B CN103049219 B CN 103049219B
- Authority
- CN
- China
- Prior art keywords
- write
- virtual machine
- virtual
- buffer memory
- disk
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Abstract
本发明公开了一种适用于虚拟化平台的虚拟磁盘写缓存系统,包括底层磁盘写缓存禁用模块、虚拟磁盘写缓存管理模块、虚拟磁盘写缓存刷新管理模块和写缓存控制模块,底层磁盘写缓存禁用模块用于禁用底层磁盘的写缓存功能,虚拟磁盘写缓存管理模块用于虚拟机管理器中的写缓存的创建、撤销,接收来自上层虚拟机的写请求,并对其进行管理以便于查找和替换,虚拟磁盘写缓存刷新管理模块用于在写缓存被触发刷新时,把写缓存内的所有写请求数据写到底层物理磁盘,虚拟磁盘写缓存控制模块用于使虚拟机根据需求去实时控制虚拟机管理器中相应的写缓存的打开与关闭。本发明能够解决常见磁盘设备上的磁盘写缓存在虚拟化环境下存在隔离性和不可操控的问题。
Description
技术领域
本发明属于计算机系统结构虚拟化环境下磁盘缓存技术领域,更具体地,涉及一种适用于虚拟化平台的虚拟磁盘写缓存系统及其操作方法。
背景技术
虚拟化软件可以大幅度提高IT基础设施资源和应用程序的利用率及可用性,但是其磁盘I/O性能比起传统操作系统来说却有大幅度的下降,这也一直是虚拟化产品广泛部署的一大障碍。因此,各大厂商和研究机构都在致力于解决磁盘虚拟化I/O的性能问题。磁盘缓存作为磁盘子系统不可或缺的一部分,可以较好的解决虚拟机磁盘I/O瓶颈。但是,在目前普遍流行的SATA/IDE磁盘上,由于其存在不可操控性和不可隔离性的缺陷,使得其不能够很好的适应虚拟化环境下的多操作系统多需求的计算环境。尽管一些产商已经在磁盘缓存中使用了具有非挥发性可靠闪存芯片来解决此类问题,但是其一般用于高端市场,价格过于昂贵,不能够得到广泛普及。
在当前主流的计算机体系结构当中,内存子系统和磁盘子系统之间的数据处理速度存在着巨大的性能差异,而磁盘缓存(又称磁盘板载缓存)作为当前主流磁盘设备中不可或缺的一部分,承担着计算机数据在这二者之间性能过渡的重任。但是,随着虚拟化技术在云计算数据中心的出现和普及,各个虚拟机内部的用户应用程序对磁盘缓存的使用存在以下两个问题:1)不可操控性;2)互不隔离性。
不可操控性指的是:在一般情况下,由于虚拟机内部进程不具备直接操作I/O设备的特权,使得虚拟机内部的用户进程不能够对磁盘缓存按照自身的需求进行相关的配置。例如:一些用户进程对自身的写数据的可靠性要求较高,关闭磁盘写缓存可以降低数据在磁盘写缓存中因为停电或者其他原因而造成丢失或者损坏的风险。
互不隔离性指的是:即使在虚拟机内部实现了可以直接操控磁盘缓存的方法,也会使得一个虚拟机针对磁盘缓存的调整策略影响到其他使用同一磁盘设备的虚拟机。例如:某个虚拟机内部的应用程序对写数据的可靠性要求较高,从而需要关闭磁盘写缓存以提高其数据的可靠性,但是另外一个虚拟机则在I/O性能上有较高的要求,需要磁盘写缓存为其提供基本的I/O性能保证。磁盘缓存的不可隔离性使得关闭磁盘缓存的行为为那些对I/O性能要求较高的虚拟机带来负面影响。
发明内容
针对现有技术的缺陷,本发明的目的在于提供一种虚拟机内部可操控的、适用于虚拟化平台的虚拟磁盘写缓存系统,旨在解决常见磁盘设备上的磁盘写缓存在虚拟化环境下存在隔离性和不可操控的问题。
为实现上述目的,本发明提供了一种适用于虚拟化平台的虚拟磁盘写缓存系统,包括底层磁盘写缓存禁用模块、虚拟磁盘写缓存管理模块、虚拟磁盘写缓存刷新管理模块和写缓存控制模块,底层磁盘写缓存禁用模块、虚拟磁盘写缓存管理模块和虚拟磁盘写缓存刷新管理模块设置于虚拟机管理器中,虚拟磁盘写缓存控制模块的一部分设置于虚拟机管理器中,另一部分设置于虚拟机中,底层磁盘写缓存禁用模块用于禁用底层磁盘的写缓存功能,虚拟磁盘写缓存管理模块用于虚拟机管理器中的写缓存的创建、撤销,接收来自上层虚拟机的写请求,并对写请求进行管理以便于查找和替换,虚拟磁盘写缓存刷新管理模块用于在虚拟机管理器中的写缓存被触发刷新时,把写缓存内的所有写请求数据写到底层物理磁盘,其中,写缓存触发刷新的条件是写数据装满写缓存时,在写缓存进行刷新时,会对写缓存内的写请求按照请求偏移地址进行排序和归并,虚拟磁盘写缓存控制模块用于使虚拟机根据需求去实时控制虚拟机管理器中相应的写缓存的打开与关闭,需求包括I/O性能或数据可靠性。
上层虚拟机的所有写请求都使用写直达的方式写到底层磁盘。
虚拟磁盘写缓存管理模块包括虚拟磁盘写缓存创建子模块、虚拟磁盘写缓存请求管理子模块以及虚拟磁盘写缓存撤销子模块,虚拟磁盘写缓存控制模块包括设置在虚拟机中的虚拟磁盘写缓存控制接口子模块和设置在虚拟机管理器中的虚拟磁盘写缓存控制开关子模块。
虚拟磁盘写缓存创建子模块用于在虚拟机启动时,或虚拟机通过虚拟磁盘写缓存控制接口子模块要求打开虚拟机管理器中的写缓存时,在虚拟机管理器中为虚拟机分配一片内存空间作为写缓存,虚拟磁盘写缓存请求管理子模块用于接收虚拟机的写请求及写数据,并将写请求和写数据存储在虚拟机管理器中的写缓存中,并用双向链表和红黑树两种数据结构对该写请求进行管理,以便于写请求的查找和替换,虚拟磁盘写缓存撤销子模块用于在虚拟机关闭或发生迁移时,或者虚拟机通过虚拟磁盘写缓存控制接口模块要求关闭虚拟机管理器中的写缓存时,首先调用虚拟磁盘写缓存刷新管理模块刷新虚拟机管理器中写缓存中的所有写数据,然后释放写缓存占用的内存资源,最后撤销写缓存。
写请求包括三个元数据字段:偏移地址字段用于指示该写请求的数据在虚拟机镜像文件中的存储位置,缓存区指针字段用于指向该写请求的数据在写缓存内存区中的存储位置,数据大小字段用于记录写数据的大小,
写请求的写数据存放在写缓存的写数据内存区域中,而每个写请求按照它到达虚拟机管理器的先后顺序依次将其元数据存放在写缓存的元数据内存区域中,并且每个写请求的元数据字段同时并入双向链表和红黑树两种数据结构中。
虚拟磁盘写缓存控制接口子模块用于接收虚拟机的关闭或打开指令,并把该指令传递给虚拟磁盘写缓存控制开关子模块,具体而言,是使用Xenstore和Xenstore-write的方法实现虚拟机与虚拟机管理器之间写缓存打开或关闭指令的传递,
虚拟磁盘写缓存控制开关子模块用于根据来自于虚拟磁盘写缓存控制接口模块的转换后的命令打开或者关闭虚拟机管理器中的写缓存。
如果命令是打开虚拟机管理器中的写缓存,则虚拟磁盘写缓存控制开关子模块调用虚拟磁盘写缓存创建子模块为写缓存分配相应的内存单元,如果是关闭虚拟机管理器中的写缓存,则虚拟磁盘写缓存控制开关子模块首先会调用虚拟磁盘写缓存刷新管理模块把虚拟机管理器中的写缓存中所有写请求数据写到底层物理磁盘,然后调用虚拟磁盘写缓存撤销子模块去释放写缓存占用的内存资源。
通过本发明所构思的以上技术方案,与现有技术相比,本发明具有以下的有益效果:
1、为数据可靠性虚拟机提供了数据一致性保证:由于采用了底层磁盘写缓存禁用模块,高可靠性应用和高可靠性虚拟机的写请求都不会存储在底层磁盘写缓存上,而是直接写到底层磁盘存储介质上,避免了数据的丢失以及数据顺序的打乱,为高可靠性应用和高可靠性虚拟机提供了数据一致性保证。
2、为I/O性能虚拟机提供了性能保证:由于采用了虚拟磁盘写缓存管理模块,为性能型虚拟机在虚拟机管理器中创建一个单独的写缓存来存储虚拟机的写请求和数据,配合虚拟磁盘写缓存刷新管理模块,弥补了禁用底层磁盘写缓存带来的I/O性能损失,保证了虚拟机的I/O性能。
3、提供了虚拟写缓存的数据隔离性和可实时操控性保证:由于虚拟磁盘写缓存管理模块为虚拟机创建一个单独的写缓存,各个虚拟机在虚拟机管理器中的写缓存相互之间是完全隔离的,所以保证了写缓存的数据隔离性;由于采用了虚拟磁盘写缓存开关接口模块和写缓存开关控制模块,各个虚拟机是可以实时的去打开或者关闭其在虚拟机管理器中的相应写缓存,所以保证了写缓存的可实时操控性。
本发明的另一目的在于提供一种适用于虚拟化平台的虚拟磁盘写缓存系统的操作方法,其能够在保证高可靠性应用和高可靠性虚拟机的数据一致性的前提下,也确保了I/O性能虚拟机的性能,并为虚拟机提供了在虚拟化环境下可隔离的和可操控的虚拟写缓存。
为实现上述目的,本发明提供了一种适用于虚拟化平台的虚拟磁盘缓存系统的操作方法,包括以下步骤:
(1)底层磁盘写缓存禁用模块禁用底层磁盘的写缓存功能;
(2)虚拟机管理器开始接收上层虚拟机的读写请求;
(3)虚拟机管理器判断此虚拟机是否在虚拟机管理器有对应的写缓存,如果有,转入步骤(4),否则转入步骤(14);
(4)虚拟机管理器判断该请求的类型,如果是读请求,转入步骤(5),否则为写请求,转入步骤(8);
(5)根据该读请求的请求地址在该虚拟机对应的写缓存中查找是否有满足此请求的数据,如果满足,转入步骤(6),否则转入步骤(7);
(6)虚拟磁盘写缓存请求管理子模块将该读请求以及找到的数据返回给请求虚拟机,转入步骤(11);
(7)该读请求继续向下传递到底层磁盘,获取需要的数据给请求虚拟机,转入步骤(11);
(8)在该虚拟机对应的写缓存中查找是否具有相同请求地址的另外一个写请求,如果有,转入步骤(9),否则转入步骤(10);
(9)虚拟磁盘写缓存请求管理子模块用该写请求的写数据去覆盖在写缓存中找到的另外一个写请求的数据,并更新在写缓存中找到的写请求的数据长度字段,该写请求返回给虚拟机,并转入步骤(11);
(10)虚拟磁盘写缓存请求管理子模块将该写请求以及写数据插入到该虚拟机对应的写缓存中,该写请求返回给虚拟机,并转入步骤(11);
(11)虚拟磁盘写缓存控制开关子模块判断该虚拟机是否要关闭其在虚拟机管理器中的相应写缓存,如果是,转入步骤(12),否则返回步骤(3);
(12)虚拟磁盘写缓存刷新管理模块将该写缓存中的所有写数据写到底层物理磁盘上;
(13)虚拟磁盘写缓存撤销子模块释放写缓存占用的虚拟机管理器的内存资源,撤销该写缓存,返回步骤(3);
(14)该虚拟机的读写请求按原始路径向下传递到底层磁盘,请求满足后返回给虚拟机;
(15)虚拟磁盘写缓存控制开关子模块判断该虚拟机是否要打开其在虚拟机管理器中的相应写缓存,如果是,转入步骤(16),否则返回步骤(3);
(16)虚拟磁盘写缓存创建子模块为该虚拟机在虚拟机管理器中创建一个写缓存,并返回步骤(3)。
通过本发明所构思的以上技术方案,与现有技术相比,本发明具有以下的有益效果:
1、操作方法的通用性:本发明的操作方法,不仅仅只适用于一种虚拟化平台,也可以适用于其他虚拟化平台,只需要很少的修改。
2、操作方法的简洁性:由于采用了步骤(3)、步骤(11)和步骤(15),从而可以很方便简洁去操控虚拟机管理器中的相应写缓存。
3、操作方法的准确性:由于采用了步骤(3)、步骤(4)和步骤(8),从而保证了上层虚拟机的读写请求的正确操作语义。
4、操作方法的高效性:由于采用了步骤(6)、步骤(9)、步骤(10)和步骤(16),从而提升了虚拟机的读写请求的效率。
附图说明
图1为本发明适用于虚拟化平台的虚拟磁盘写缓存系统的模块框图。
图2为本发明适用于虚拟化平台的虚拟磁盘写缓存系统的操作方法的工作流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明适用于虚拟化平台的虚拟磁盘写缓存系统包括底层磁盘写缓存禁用模块1、虚拟磁盘写缓存管理模块2、虚拟磁盘写缓存刷新管理模块3和写缓存控制模块4,其中底层磁盘写缓存禁用模块1、虚拟磁盘写缓存管理模块2和虚拟磁盘写缓存刷新管理模块3设置于虚拟机管理器(Virtual machine manager,简称VMM)中,虚拟磁盘写缓存控制模块4的一部分设置于VMM中,另一部分设置于虚拟机(Virtual machine,简称VM)中。
底层磁盘写缓存禁用模块1用于禁用底层磁盘的写缓存功能;具体而言,上层虚拟机的所有写请求都使用写直达(Write through)的方式写到底层磁盘,而不会将其存储在写缓存中,通过禁用磁盘写缓存,对虚拟机的读性能没有任何影响。目前普遍流行的SATA/IDE磁盘,都带有64MB或者32MB的缓存,而在Unix操作系统中,写缓存的禁用可通过hdparm工具命令行来完成。
虚拟磁盘写缓存管理模块2用于虚拟机管理器中的写缓存的创建、撤销,接收来自上层虚拟机的写请求,并对写请求进行管理以便于查找和替换。虚拟磁盘写缓存管理模块2包括虚拟磁盘写缓存创建子模块21、虚拟磁盘写缓存请求管理子模块22以及虚拟磁盘写缓存撤销子模块23。
虚拟磁盘写缓存创建子模块21用于在虚拟机启动时,或虚拟机通过虚拟磁盘写缓存控制接口子模块41要求打开虚拟机管理器中的写缓存时,在虚拟机管理器中为虚拟机分配一片内存空间作为写缓存;具体而言,写缓存内存区包括一片连续的写数据内存区域和一片相对小点的写请求元数据内存区域。
虚拟磁盘写缓存请求管理子模块22用于接收虚拟机的写请求及写数据,并将写请求和写数据存储在虚拟机管理器中的写缓存中,并用双向链表和红黑树(Red-black tree)两种数据结构对该写请求进行管理,以便于写请求的查找和替换;具体而言,每个写请求包括三个元数据字段:偏移地址字段用于指示该写请求的数据在虚拟机镜像文件中的存储位置,缓存区指针字段用于指向该写请求的数据在写缓存内存区中的存储位置,数据大小字段用于记录写数据的大小;写请求的写数据存放在写缓存的写数据内存区域中,而每个写请求按照它到达虚拟机管理器的先后顺序依次将其元数据存放在写缓存的元数据内存区域中,并且每个写请求的元数据字段同时并入双向链表和红黑树两种数据结构中。
虚拟磁盘写缓存撤销子模块23用于在虚拟机关闭或发生迁移时,或者虚拟机通过虚拟磁盘写缓存控制接口模块41要求关闭虚拟机管理器中的写缓存时,首先调用虚拟磁盘写缓存刷新管理模块3刷新虚拟机管理器中写缓存中的所有写数据,然后释放写缓存占用的内存资源,最后撤销写缓存。具体而言,在释放写缓存占用的内存资源前,将写缓存中的所有写数据写到底层物理磁盘,然后释放写缓存占用的内存资源。
虚拟磁盘写缓存刷新管理模块3用于在虚拟机管理器中的写缓存被触发刷新时,把写缓存内的所有写请求数据写到底层物理磁盘;其中,写缓存触发刷新的条件是写数据装满写缓存时,在写缓存进行刷新时,会对写缓存内的写请求按照请求偏移地址进行排序和归并,从而优化刷新效率。具体而言,写缓存中的多个写请求可能是对虚拟机磁盘镜像文件的连续顺序写,将写缓存中的所有写请求进行排序找出所有的顺序写请求,将这些写请求归并到一个单元中,用Writev函数将整个单元一次写到底层磁盘。
虚拟磁盘写缓存控制模块4用于使虚拟机根据需求去实时控制虚拟机管理器中相应的写缓存的打开与关闭;具体而言,需求包括I/O性能或数据可靠性。虚拟磁盘写缓存控制模块4包括设置在虚拟机中的虚拟磁盘写缓存控制接口子模块41和设置在虚拟机管理器中的虚拟磁盘写缓存控制开关子模块42。
虚拟磁盘写缓存控制接口子模块41用于接收虚拟机的关闭或打开指令,并把该指令传递给虚拟磁盘写缓存控制开关子模块42。具体而言,在Xen虚拟化平台下,虚拟磁盘写缓存控制接口子模块41使用Xenstore和Xenstore-write的方法实现虚拟机与虚拟机管理器之间写缓存打开或关闭指令的传递。
虚拟磁盘写缓存控制开关子模块42用于根据来自于虚拟磁盘写缓存控制接口模块41的转换后的命令打开或者关闭虚拟机管理器中的写缓存。具体而言,如果命令是打开虚拟机管理器中的写缓存,则虚拟磁盘写缓存控制开关子模块42调用虚拟磁盘写缓存创建子模块31为写缓存分配相应的内存单元;如果是关闭虚拟机管理器中的写缓存,则虚拟磁盘写缓存控制开关子模块42首先会调用虚拟磁盘写缓存刷新管理模块4把虚拟机管理器中的写缓存中所有写请求数据写到底层物理磁盘,然后调用虚拟磁盘写缓存撤销子模块33去释放写缓存占用的内存资源。具体而言,在Xen虚拟化平台下,虚拟磁盘写缓存控制开关子模块42使用Xenstore和Xenstore-read的方法去获取虚拟机打开或关闭在虚拟机管理器中的写缓存的指令。
如图2所示,本发明适用于虚拟化平台的虚拟磁盘缓存系统的操作方法包括以下步骤:
(1)底层磁盘写缓存禁用模块禁用底层磁盘的写缓存功能;
(2)虚拟机管理器开始接收上层虚拟机的读写请求;
(3)虚拟机管理器判断此虚拟机是否在虚拟机管理器有对应的写缓存,如果有,转入步骤(4),否则转入步骤(14);
(4)虚拟机管理器判断该请求的类型,如果是读请求,转入步骤(5),否则为写请求,转入步骤(8);
(5)根据该读请求的请求地址在该虚拟机对应的写缓存中查找是否有满足此请求的数据,如果满足,转入步骤(6),否则转入步骤(7);
(6)虚拟磁盘写缓存请求管理子模块将该读请求以及找到的数据返回给请求虚拟机,转入步骤(11);
(7)该读请求继续向下传递到底层磁盘,获取需要的数据给请求虚拟机,转入步骤(11);
(8)在该虚拟机对应的写缓存中查找是否具有相同请求地址的另外一个写请求,如果有,转入步骤(9),否则转入步骤(10);
(9)虚拟磁盘写缓存请求管理子模块用该写请求的写数据去覆盖在写缓存中找到的另外一个写请求的数据,并更新在写缓存中找到的写请求的数据长度字段,该写请求返回给虚拟机,并转入步骤(11);
(10)虚拟磁盘写缓存请求管理子模块将该写请求以及写数据插入到该虚拟机对应的写缓存中,该写请求返回给虚拟机,并转入步骤(11);
(11)虚拟磁盘写缓存控制开关子模块判断该虚拟机是否要关闭其在虚拟机管理器中的相应写缓存,如果是,转入步骤(12),否则返回步骤(3);
(12)虚拟磁盘写缓存刷新管理模块将该写缓存中的所有写数据写到底层物理磁盘上;
(13)虚拟磁盘写缓存撤销子模块释放写缓存占用的虚拟机管理器的内存资源,撤销该写缓存,返回步骤(3);
(14)该虚拟机的读写请求按原始路径向下传递到底层磁盘,请求满足后返回给虚拟机;
(15)虚拟磁盘写缓存控制开关子模块判断该虚拟机是否要打开其在虚拟机管理器中的相应写缓存,如果是,转入步骤(16),否则返回步骤(3);
(16)虚拟磁盘写缓存创建子模块为该虚拟机在虚拟机管理器中创建一个写缓存,并返回步骤(3)。
本发明提供了一种可控的、具有可隔离性的适用于虚拟化平台的虚拟磁盘写缓存系统。它禁用底层物理磁盘上的写缓存(即磁盘板载写缓存),为高可靠性应用提供了数据一致性保证;在虚拟机管理器中为每个I/O性能型虚拟机插入一层单独的虚拟磁盘写缓存结构,以弥补磁盘写缓存被关闭而造成的性能损失;为每个虚拟磁盘写缓存结构加入对应的客户虚拟机内部可控的开关机制,以便虚拟机能够按照自身的需求来考虑是否启用该虚拟机管理器中的写缓存结构。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种适用于虚拟化平台的虚拟磁盘写缓存系统,包括底层磁盘写缓存禁用模块、虚拟磁盘写缓存管理模块、虚拟磁盘写缓存刷新管理模块和写缓存控制模块,其特征在于,
底层磁盘写缓存禁用模块、虚拟磁盘写缓存管理模块和虚拟磁盘写缓存刷新管理模块设置于虚拟机管理器中,虚拟磁盘写缓存控制模块的一部分设置于虚拟机管理器中,另一部分设置于虚拟机中;
底层磁盘写缓存禁用模块用于禁用底层磁盘的写缓存功能;
虚拟磁盘写缓存管理模块用于虚拟机管理器中的写缓存的创建、撤销,接收来自上层虚拟机的写请求,并对写请求进行管理以便于查找和替换;
虚拟磁盘写缓存刷新管理模块用于在虚拟机管理器中的写缓存被触发刷新时,把写缓存内的所有写请求数据写到底层物理磁盘;其中,写缓存触发刷新的条件是写数据装满写缓存时,在写缓存进行刷新时,会对写缓存内的写请求按照请求偏移地址进行排序和归并;
虚拟磁盘写缓存控制模块用于使虚拟机根据需求去实时控制虚拟机管理器中相应的写缓存的打开与关闭;需求包括I/O性能或数据可靠性。
2.根据权利要求1所述的虚拟磁盘写缓存系统,其特征在于,上层虚拟机的所有写请求都使用写直达的方式写到底层磁盘。
3.根据权利要求1所述的虚拟磁盘写缓存系统,其特征在于,
虚拟磁盘写缓存管理模块包括虚拟磁盘写缓存创建子模块、虚拟磁盘写缓存请求管理子模块以及虚拟磁盘写缓存撤销子模块;
虚拟磁盘写缓存控制模块包括设置在虚拟机中的虚拟磁盘写缓存控制接口子模块和设置在虚拟机管理器中的虚拟磁盘写缓存控制开关子模块。
4.根据权利要求3所述的虚拟磁盘写缓存系统,其特征在于,
虚拟磁盘写缓存创建子模块用于在虚拟机启动时,或虚拟机通过虚拟磁盘写缓存控制接口子模块要求打开虚拟机管理器中的写缓存时,在虚拟机管理器中为虚拟机分配一片内存空间作为写缓存;
虚拟磁盘写缓存请求管理子模块用于接收虚拟机的写请求及写数据,并将写请求和写数据存储在虚拟机管理器中的写缓存中,并用双向链表和红黑树两种数据结构对该写请求进行管理,以便于写请求的查找和替换;
虚拟磁盘写缓存撤销子模块用于在虚拟机关闭或发生迁移时,或者虚拟机通过虚拟磁盘写缓存控制接口子模块要求关闭虚拟机管理器中的写缓存时,首先调用虚拟磁盘写缓存刷新管理模块刷新虚拟机管理器中写缓存中的所有写数据,然后释放写缓存占用的内存资源,最后撤销写缓存。
5.根据权利要求4所述的虚拟磁盘写缓存系统,其特征在于,每个写请求包括三个元数据字段:偏移地址字段用于指示该写请求的数据在虚拟机镜像文件中的存储位置,缓存区指针字段用于指向该写请求的数据在写缓存内存区中的存储位置,数据大小字段用于记录写数据的大小;
写请求的写数据存放在写缓存的写数据内存区域中,而每个写请求按照它到达虚拟机管理器的先后顺序依次将其元数据存放在写缓存的元数据内存区域中,并且每个写请求的元数据字段同时并入双向链表和红黑树两种数据结构中。
6.根据权利要求3所述的虚拟磁盘写缓存系统,其特征在于,
虚拟磁盘写缓存控制接口子模块用于接收写缓存的打开与关闭指令,并把该指令传递给虚拟磁盘写缓存控制开关子模块,具体而言,是使用Xenstore和Xenstore-write的方法实现虚拟机与虚拟机管理器之间写缓存打开与关闭指令的传递;
虚拟磁盘写缓存控制开关子模块用于根据来自于虚拟磁盘写缓存控制接口子模块的转换后的命令打开或者关闭虚拟机管理器中的写缓存。
7.根据权利要求6所述的虚拟磁盘写缓存系统,其特征在于,
如果命令是打开虚拟机管理器中的写缓存,则虚拟磁盘写缓存控制开关子模块调用虚拟磁盘写缓存创建子模块为写缓存分配相应的内存单元;
如果是关闭虚拟机管理器中的写缓存,则虚拟磁盘写缓存控制开关子模块首先会调用虚拟磁盘写缓存刷新管理模块把虚拟机管理器中的写缓存中所有写请求数据写到底层物理磁盘,然后调用虚拟磁盘写缓存撤销子模块去释放写缓存占用的内存资源。
8.一种适用于虚拟化平台的虚拟磁盘缓存系统的操作方法,其特征在于,包括以下步骤:
(1)底层磁盘写缓存禁用模块禁用底层磁盘的写缓存功能;
(2)虚拟机管理器开始接收上层虚拟机的读写请求;
(3)虚拟机管理器判断此虚拟机是否在虚拟机管理器有对应的写缓存,如果有,转入步骤(4),否则转入步骤(14);
(4)虚拟机管理器判断该请求的类型,如果是读请求,转入步骤(5),否则为写请求,转入步骤(8);
(5)根据该读请求的请求地址在该虚拟机对应的写缓存中查找是否有满足此请求的数据,如果满足,转入步骤(6),否则转入步骤(7);
(6)虚拟磁盘写缓存请求管理子模块将该读请求以及找到的数据返回给请求虚拟机,转入步骤(11);
(7)该读请求继续向下传递到底层磁盘,获取需要的数据给请求虚拟机,转入步骤(11);
(8)在该虚拟机对应的写缓存中查找是否具有相同请求地址的另外一个写请求,如果有,转入步骤(9),否则转入步骤(10);
(9)虚拟磁盘写缓存请求管理子模块用该写请求的写数据去覆盖在写缓存中找到的另外一个写请求的数据,并更新在写缓存中找到的写请求的数据长度字段,该写请求返回给虚拟机,并转入步骤(11);
(10)虚拟磁盘写缓存请求管理子模块将该写请求以及写数据插入到该虚拟机对应的写缓存中,该写请求返回给虚拟机,并转入步骤(11);
(11)虚拟磁盘写缓存控制开关子模块判断该虚拟机是否要关闭其在虚拟机管理器中的相应写缓存,如果是,转入步骤(12),否则返回步骤(3);
(12)虚拟磁盘写缓存刷新管理模块将虚拟机管理器中的相应写缓存中的所有写数据写到底层物理磁盘上;
(13)虚拟磁盘写缓存撤销子模块释放写缓存占用的虚拟机管理器的内存资源,撤销虚拟机管理器中的相应写缓存,返回步骤(3);
(14)该虚拟机的读写请求按原始路径向下传递到底层磁盘,请求满足后返回给虚拟机;
(15)虚拟磁盘写缓存控制开关子模块判断该虚拟机是否要打开其在虚拟机管理器中的相应写缓存,如果是,转入步骤(16),否则返回步骤(3);
(16)虚拟磁盘写缓存创建子模块为该虚拟机在虚拟机管理器中创建一个写缓存,并返回步骤(3)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210540917.1A CN103049219B (zh) | 2012-12-12 | 2012-12-12 | 适用于虚拟化平台的虚拟磁盘写缓存系统及其操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210540917.1A CN103049219B (zh) | 2012-12-12 | 2012-12-12 | 适用于虚拟化平台的虚拟磁盘写缓存系统及其操作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103049219A CN103049219A (zh) | 2013-04-17 |
CN103049219B true CN103049219B (zh) | 2015-04-15 |
Family
ID=48061872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210540917.1A Expired - Fee Related CN103049219B (zh) | 2012-12-12 | 2012-12-12 | 适用于虚拟化平台的虚拟磁盘写缓存系统及其操作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103049219B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577357B (zh) * | 2013-11-06 | 2017-11-17 | 华为技术有限公司 | 一种i/o请求消息的处理方法及控制器 |
CN104166583B (zh) * | 2014-08-11 | 2017-08-04 | 香港理工大学深圳研究院 | 一种基于移动设备虚拟化环境的数据存储方法及装置 |
CN105162667B (zh) * | 2015-09-10 | 2018-08-14 | 华为技术有限公司 | 虚拟机配置方法和装置 |
CN106527959B (zh) * | 2015-09-10 | 2019-07-26 | 阿里巴巴集团控股有限公司 | 刷新磁盘输入输出请求的处理方法及设备 |
WO2017190758A1 (en) * | 2016-05-02 | 2017-11-09 | Nokia Solutions And Networks Oy | Snapshot creation in virtual network environment |
CN106020718A (zh) * | 2016-05-09 | 2016-10-12 | 福建联迪商用设备有限公司 | 一种提高虚拟磁盘写入性能的方法及系统 |
CN106095697B (zh) * | 2016-06-07 | 2019-11-19 | 华为技术有限公司 | 一种数据固化存储的方法、装置和系统 |
CN108667748B (zh) | 2017-03-29 | 2021-02-12 | 华为技术有限公司 | 一种控制带宽的方法、装置、设备和存储介质 |
CN107315624B (zh) * | 2017-06-30 | 2020-11-20 | 联想(北京)有限公司 | 信息处理方法及虚拟化管理器 |
CN107315545A (zh) * | 2017-07-06 | 2017-11-03 | 长沙开雅电子科技有限公司 | 一种存储虚拟化新型写缓存高低水位管理方法 |
CN111258706B (zh) * | 2018-11-30 | 2023-05-02 | 阿里巴巴集团控股有限公司 | 虚拟机系统及其控制方法以及电子设备 |
CN111858399B (zh) * | 2019-04-30 | 2023-11-24 | 贵州白山云科技股份有限公司 | 一种数据传输方法、装置、计算机可读存储介质和计算机设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541468A (zh) * | 2011-12-12 | 2012-07-04 | 华中科技大学 | 虚拟化环境下的脏数据回写系统 |
CN102646069A (zh) * | 2012-02-23 | 2012-08-22 | 华中科技大学 | 一种延长固态盘使用寿命的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8090907B2 (en) * | 2008-07-09 | 2012-01-03 | International Business Machines Corporation | Method for migration of synchronous remote copy service to a virtualization appliance |
-
2012
- 2012-12-12 CN CN201210540917.1A patent/CN103049219B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541468A (zh) * | 2011-12-12 | 2012-07-04 | 华中科技大学 | 虚拟化环境下的脏数据回写系统 |
CN102646069A (zh) * | 2012-02-23 | 2012-08-22 | 华中科技大学 | 一种延长固态盘使用寿命的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103049219A (zh) | 2013-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103049219B (zh) | 适用于虚拟化平台的虚拟磁盘写缓存系统及其操作方法 | |
CN102073462B (zh) | 虚拟存储迁移方法、系统和虚拟机监控器 | |
US8656222B2 (en) | Method and system for recording a selected computer process for subsequent replay | |
CN102646064B (zh) | 支持迁移的增量虚拟机备份 | |
US9733964B2 (en) | Live snapshot of a virtual machine | |
US20160350013A1 (en) | Method and system for implementing a distributed operations log | |
KR101729097B1 (ko) | 복수의 가상 머신에서 수행되는 응용 프로그램들간 참조 데이터를 공유하는 방법 및 이를 위한 참조 데이터 관리 장치 및 시스템 | |
CN110609730B (zh) | 一种实现虚拟处理器间中断透传的方法及设备 | |
US20120054409A1 (en) | Application triggered state migration via hypervisor | |
US9454489B2 (en) | Exporting guest spatial locality to hypervisors | |
US20170046185A1 (en) | Page table based dirty page tracking | |
US9529616B2 (en) | Migrating processes between source host and destination host using a shared virtual file system | |
US8392916B2 (en) | Multiple layers of virtualization in a computing system | |
EP2437462B1 (en) | Data access processing method and device | |
US9792075B1 (en) | Systems and methods for synthesizing virtual hard drives | |
CN106406981A (zh) | 一种读、写磁盘数据的方法及虚拟机监视器 | |
CN103176845A (zh) | 一种虚拟机部署方法、系统和装置 | |
CN107239319A (zh) | 一种虚拟机的数据存储方法和装置 | |
US9471366B2 (en) | Virtual machine disk image backup using block allocation area | |
US11734430B2 (en) | Configuration of a memory controller for copy-on-write with a resource controller | |
CN106293882A (zh) | 一种虚拟磁盘快照实现方法及装置 | |
CN103150225B (zh) | 基于应用级代理的对象并行存储系统磁盘满异常容错方法 | |
KR101996641B1 (ko) | 메모리 오버레이 장치 및 방법 | |
CN102413183A (zh) | 云智能交换机及其处理方法、系统 | |
US9098461B2 (en) | Live snapshots of multiple virtual disks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150415 Termination date: 20211212 |