在虚拟机镜像中实现文件系统单写日志的方法

文档序号:10552640阅读:281来源:国知局
在虚拟机镜像中实现文件系统单写日志的方法【专利摘要】本发明提供了一种在虚拟机镜像中实现文件系统单写日志的方法,包括步骤1:当虚拟机内部文件系统做检查点时,拦截检查点对应的I/O操作,并逆向成文件粒度语义;步骤2:判断I/O操作是否为针对虚拟机内部日志的拷贝操作并执行相应操作;步骤3:将虚拟块地址到物理地址映射表的修改先记录到同一个物理块上,当映射表的修改全部保存到同一个物理块上后,将物理块上的修改作用到实际映射表上。本发明在不修改客户虚拟机和文件系统的情况下,动态识别虚拟机内部日志操作,并通过修改虚拟机镜像中虚拟块地址和物理地址映射关系的方法,实现了文件系统单写日志机制,在保证虚拟机内部文件系统一致性的情况下,提升了虚拟化I/O性能。【专利说明】在虚拟机镜像中实现文件系统单写日志的方法
技术领域
[0001]本发明涉及系统虚拟化技术和文件系统,具体地,涉及一种在虚拟机镜像中实现文件系统单写日志的方法。【
背景技术
】[0002]文件系统日志[0003]文件系统使用日志方法来保证文件系统一致性。当更新文件时,文件系统先将数据和对应的元数据写入日志中,当日志数据持久化存储在磁盘后,文件系统做检查点(checkpoint),将对应的数据和元数据拷贝至它们实际的位置,然后释放日志空间。当文件系统崩溃时(由于掉电或者软件错误等原因),如果数据和元数据都已保存在日志中,文件系统重启时可以从日志中恢复之前的I/O操作;如果数据和元数据没有全部保存在日志中,则放弃此次修改。[0004]Ext3、Ext4文件系统包含三种日志模式:回写(writeback),顺序(ordered),数据(data)。在回写模式中,只有元数据被写入日志中。这种模式提供较好的性能,不过有较大的风险。在顺序模式中,只有元数据被写入日志中,但在日志被标记为提交前,数据会被写入磁盘中。在数据模式中,元数据和文件内容都被写入日志中。这种模式下提供最好的文件系统一致性,但是数据需要写两次,牺牲了I/O性能。[0005]虚拟机镜像格式[0006]虚拟化技术的一个便利之处在于可以使用虚拟机镜像作为虚拟机的后端存储。虚拟机镜像提供了很多先进的功能(如去重、加密),极大的简化了虚拟机的管理。[0007]qC0W2是KVM虚拟机使用的一种镜像格式。它维护了一个两层的查询表,用来管理地址翻译。簇是qcow2镜像的基本单元,簇大小保存在镜像头部中(imageheader)。镜像头包含指向查询表的指针。进行地址翻译时,每个虚拟块地址(virtualblockaddress)a被分为三个部分,a=(al,a2,a3):al作为一级查询表(Lltable)的索引去找到对应二级查询表(L2table)的地址,a2作为二级查询表的索引找到对应数据簇的地址,a3是在簇中的偏移。[0008]本发明主要提出了一种在虚拟机镜像中通过修改虚拟块地址和物理地址映射关系,消除虚拟机内部文件系统checkpoint时将数据拷贝至实际位置的写操作,从而实现文件系统单写日志的方法。该方法在保证虚拟机内文件系统一致性的情况下,提高了虚拟化I/O的性能。【
发明内容】[0009]针对现有技术中的缺陷,本发明的目的是提供一种在虚拟机镜像中实现文件系统单写日志的方法。[0010]根据本发明提供的在虚拟机镜像中实现文件系统单写日志的方法,包括如下步骤:[ΟΟ??]步骤I:当虚拟机内部文件系统做检查点,即checkpoint时,拦截checkpoint对应的I/O操作,并对拦截的I/O操作进行语义分析,将拦截的块粒度I/O操作逆向成文件粒度语义;[0012]步骤2:判断I/O操作是否为针对虚拟机内部日志的拷贝操作,若是,则修改虚拟机镜像虚拟块地址到物理地址映射关系,将该I/O操作指向的虚拟机镜像虚拟块地址,并删除原来指向虚拟机内部日志中对应数据的映射;若否,则允许执行该I/O操作;[0013]步骤3:将虚拟块地址到物理地址映射表的修改记录到同一个物理块上;当物理地址映射表的修改全部保存到同一个物理块上后,将物理块上的修改作用到实际映射表上。[0014]优选地,所述步骤I中的在虚拟机外对拦截的I/O操作进行语义分析,将虚拟机外部拦截的块粒度的I/O操作,转化为虚拟机内部文件粒度操作。[0015]优选地,所述步骤2中的删除原来指向虚拟机内部日志中对应数据的映射,即去除了拷贝写机制,实现了虚拟机内部文件系统单写日志机制,通过修改虚拟块地址到物理地址的映射关系,避免虚拟机内部文件系统数据写两次问题。[0016]优选地,步骤3中为保证修改虚拟机镜像虚拟块地址到物理地址映射关系操作和删除原来指向虚拟机内部日志中对应数据的映射关系操作的这两种操作的原子性,将虚拟块地址到物理地址映射表的修改记录到同一个物理块上;其中,利用磁盘提供的单一数据块修改的原子性,将虚拟块地址到物理块地址映射关系的修改先写入同一数据块中,从而保证虚拟块地址到物理块地址映射表修改的原子性。[0017]与现有技术相比,本发明具有如下的有益效果:[0018]本发明提供的在虚拟机镜像中实现文件系统单写日志的方法解决了虚拟机内部文件系统由于引入日志机制带来的数据写两遍问题,在不修改客户虚拟机和文件系统的情况下,动态识别虚拟机内部日志操作,并通过修改虚拟机镜像中虚拟块地址和物理地址映射关系的方法,实现了文件系统单写日志机制,在保证虚拟机内部文件系统一致性的情况下,提升了虚拟化I/O性能。【附图说明】[0019]通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:[0020]图1为qC0W2镜像格式的组织形式和地址翻译过程示意图;[0021]图2为虚拟机内部文件系统修改过程和对应虚拟机镜像中数据映射关系一;[0022]图3为虚拟机内部文件系统修改过程和对应虚拟机镜像中数据映射关系二。【具体实施方式】[0023]下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。[0024]根据本发明提供的在虚拟机镜像中实现文件系统单写日志的方法,包括如下步骤:[0025]步骤I:当虚拟机内部文件系统做检查点(checkpoint)时,拦截checkpoint对应的I/O操作,并对拦截的I/O操作进行语义分析,将拦截的块粒度I/O操作逆向成文件粒度语义。[0026]步骤2:判断I/O操作是否为针对虚拟机内部日志的拷贝操作,若是,则修改虚拟机镜像虚拟块地址到物理地址映射关系,将该I/O操作指向的虚拟机镜像虚拟块地址,并删除原来指向虚拟机内部日志中对应数据的映射;若否,则允许执行该I/O操作。[0027]步骤3:为保证修改虚拟机镜像虚拟块地址到物理地址映射关系和删除原来指向虚拟机内部日志中对应数据的映射两种操作的原子性,将虚拟块地址到物理地址映射表的修改先记录到同一个物理块上,利用磁盘提供的单一数据块修改的原子性,保证映射表修改的原子性。当映射表的修改全部保存到同一个物理块上后,将物理块上的修改作用到实际映射表上。[0028]所述步骤I中的在虚拟机外对拦截的I/O操作进行语义分析,即将虚拟机外部拦截的块粒度的I/o操作,转化为虚拟机内部文件粒度操作。[0029]所述步骤2中的删除原来指向日志中对应数据的映射,即去除了拷贝写机制,实现了虚拟机内部文件系统单写日志机制,通过修改两个虚拟块地址到物理块地址的映射指针,避免虚拟机内部文件系统数据写两次问题。[0030]所述步骤3中的利用磁盘提供的单一数据块修改的原子性,将虚拟块地址到物理块地址映射关系的修改先写入同一数据块中,从而保证虚拟块地址到物理块地址映射表修改的原子性。[0031]在虚拟机内部文件系统使用数据日志模式,数据享有高一致性的情况下,解决数据日志模式下数据写两遍的问题,从而提高虚拟化I/O性能。[0032]为达到上述目的,本发明提出的技术方案,一种在虚拟机镜像中实现文件系统单写日志的方法,针对文件系统日志checkpoint过程时,需要从日志中拷贝数据至数据实际所在位置,设计一种通过修改虚拟机镜像虚拟块地址到物理地址映射关系的方式,避免了数据写两次问题。[0033]当虚拟机内部文件系统使用数据日志模式时,所有的修改(数据和元数据)都先被记录到日志中。当日志被提交到磁盘,并持久化的存储到磁盘后,文件系统可以开始checkpoint过程,拷贝日志中的数据和元数据至它们实际所在位置。文件系统数据在虚拟机镜像中的映射关系如附图2所示。图2、图3中的Des表示日志描述块,M表示元数据,D表示文件内容,C表示日志交换块。[0034]本发明提出通过修改虚拟机镜像虚拟块地址到物理地址映射关系的方式,避免了checkpoint过程中数据写两次问题。当虚拟机内部修改文件时,所有的修改(数据和元数据)先被记录到虚拟机内部文件系统日志中。然后日志被提交到磁盘,并被持久化存储。其次,当虚拟机内部文件系统做checkpoint时,拦截checkpoint对应的1/0操作,如果拦截的1/0操作是拷贝虚拟机内部日志至其实际位置,则直接修改虚拟机镜像虚拟块地址到物理地址映射关系,将拦截的1/0操作指向的虚拟机块地址,指向日志中对应数据的物理地址,并删除原来指向日志中对应数据的映射。整个过程通过修改两个映射指针,避免数据写两次问题。同时,为保证虚拟机块地址到物理块地址映射表修改的原子性,将对映射表的修改先预先写入同一个磁盘块中,利用磁盘提供的块修改操作的原子性,保证映射表修改的原子性。使用本发明后,文件系统数据在虚拟机镜像中的映射如附图3所示。[0035]综上所述,本发明提出的通过修改虚拟机镜像虚拟块地址到物理地址映射关系的方式,在保证虚拟机内部文件系统一致性且不修改客户虚拟机的前提下,避免了数据写两次的问题,提高了虚拟化I/o的性能。[0036]以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。【主权项】1.一种在虚拟机镜像中实现文件系统单写日志的方法,其特征在于,包括如下步骤:步骤I:当虚拟机内部文件系统做检查点,即checkpoint时,拦截checkpoint对应的I/O操作,并对拦截的I/O操作进行语义分析,将拦截的块粒度I/O操作逆向成文件粒度语义;步骤2:判断I/O操作是否为针对虚拟机内部日志的拷贝操作,若是,则修改虚拟机镜像虚拟块地址到物理地址映射关系,将该I/O操作指向的虚拟机镜像虚拟块地址,并删除原来指向虚拟机内部日志中对应数据的映射;若否,则允许执行该I/O操作;步骤3:将虚拟块地址到物理地址映射表的修改记录到同一个物理块上;当物理地址映射表的修改全部保存到同一个物理块上后,将物理块上的修改作用到实际映射表上。2.根据权利要求1所述的在虚拟机镜像中实现文件系统单写日志的方法,其特征在于,所述步骤I中的在虚拟机外对拦截的I/O操作进行语义分析,将虚拟机外部拦截的块粒度的I/O操作,转化为虚拟机内部文件粒度操作。3.根据权利要求1所述的在虚拟机镜像中实现文件系统单写日志的方法,其特征在于,所述步骤2中的删除原来指向虚拟机内部日志中对应数据的映射,即去除了拷贝写机制,实现了虚拟机内部文件系统单写日志机制,通过修改虚拟块地址到物理地址的映射关系,避免虚拟机内部文件系统数据写两次问题。4.根据权利要求1所述的在虚拟机镜像中实现文件系统单写日志的方法,其特征在于,步骤3中为保证修改虚拟机镜像虚拟块地址到物理地址映射关系操作和删除原来指向虚拟机内部日志中对应数据的映射关系操作的这两种操作的原子性,将虚拟块地址到物理地址映射表的修改记录到同一个物理块上;其中,利用磁盘提供的单一数据块修改的原子性,将虚拟块地址到物理块地址映射关系的修改先写入同一数据块中,从而保证虚拟块地址到物理块地址映射表修改的原子性。【文档编号】G06F3/06GK105912277SQ201610283714【公开日】2016年8月31日【申请日】2016年4月29日【发明人】夏虞斌,陈庆澍,梁凉,陈榕,陈海波【申请人】上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1