一种虚拟化环境下的文件系统日志存储系统的制作方法

文档序号:6439766阅读:166来源:国知局
专利名称:一种虚拟化环境下的文件系统日志存储系统的制作方法
技术领域
本发明涉及计算机系统结构虚拟化环境下文件系统技术领域,更具体的说,就是在虚拟化环境下提供一种文件系统日志的存储系统,以提高文件系统写性能。
背景技术
近年来,随着服务器的应用程序的复杂性大大增加,使得系统容易出错且稳定性下降,为了确保文件系统突然崩溃时的数据一致性,目前操作系统普遍使用具有日志的日志型文件系统。首先文件系统在磁盘上为文件系统日志区域开辟额外的存储空间,在文件系统要将脏数据写入磁盘前(新文件写入或者是对原文件进行修改)之前,文件系统将会对这些修改生成相应的日志记录,并将日志记录写入到日志区域中。在这种情况下,一旦遭遇宕机,日志型文件系统就可以利用日志记录将文件系统恢复到宕机前的一致性状态。这种方法避免了系统宕机后耗时扫描整个文件系统才能恢复一致性的问题,也避免了采用传统冗余式备份的效率底下以及耗费过多额外磁盘空间的缺点。
但是日志型文件系统的最大缺陷在于,所有更新过的文件必须首先要写回磁盘上。每次写操作都必须经历两次写磁盘,一次记录到日志空间,另一次才是真正的写入文件系统,因此相比于没有日志记录的文件系统来说,会造成性能下降,如果在记录日志时采用同时记录数据和元数据的修改(如Ext3中的Journal模式),性能下降则更为严重。
而在虚拟化环境下,如果虚拟机的运行也是为了提供服务器应用的话,为保障更短的服务宕机时间,日志型文件系统的选用也是必须的。每台虚拟机都有自己的日志记录区域。因为每台虚拟机都有独立的运作,都拥有各自的磁盘分区并且独自存取自己的磁盘文件系统。如果同时有多台虚拟机进行写操作,按照前文讲述的内容,可以得到每个虚拟机都对自己的日志区域进行读写操作,虚拟机管理程序因此对于这些读写的磁盘寻道和旋转开销就会增加,导致读写速度下降。发明内容
本发明的目的在于提供一种虚拟化环境下的文件系统日志存储系统,提高了写入速度。
一种虚拟化环境下的文件系统日志存储系统,包括位于虚拟机中的日志添加模块 1和日志磁盘动态插入模块2,以及位于虚拟机管理程序中的虚拟日志磁盘管理模块3 ;
日志添加模块1,用于申请共享内存以存储日志添加请求,从日志磁盘动态插入模块2获取虚拟日志磁盘盘符,将虚拟机文件系统中的日志读写请求定向到该虚拟日志磁盘盘符对应的虚拟日志磁盘上;
日志磁盘动态插入模块2,用于从虚拟日志磁盘管理模块3接收虚拟日志磁盘信息,将该虚拟日志磁盘挂载到虚拟机内的文件系统上,并将挂载后得到的虚拟日志磁盘盘符传送给日志添加模块1 ;
虚拟日志磁盘管理模块3,用于从日志添加模块1的共享内存中读取日志添加请求,为该请求创建虚拟日志磁盘,将创建的虚拟磁盘信息传送给日志磁盘动态插入模块2, 从虚拟机的文件系统中获取日志读写请求,在日志读写请求定向的虚拟日志磁盘上执行该日志读写请求。
进一步地,所述虚拟日志磁盘管理模块3包括
日志添加请求通信模块31,用于从日志添加模块1的共享内存中读取日志添加请求;
虚拟磁盘内存管理模块32,用于为所述日志添加请求确定待创建的虚拟日志磁盘的属性信息;
虚拟日志磁盘创建模块33,用于依据所述虚拟日志磁盘的属性信息为日志添加请求创建虚拟日志磁盘;
磁盘信息反馈模块34,用于将创建的虚拟日志磁盘信息反馈给日志磁盘动态插入模块2 ;
虚拟日志磁盘块设备驱动35,用于从虚拟机的文件系统中获取日志读写请求,在日志读写请求定向的虚拟日志磁盘上执行该日志读写请求。
进一步地,还包括位于虚拟机管理程序中的虚拟日志磁盘可靠性保证模块4,用于将虚拟日志磁盘管理模块3中的所有虚拟日志磁盘上的日志内容存储到物理磁盘。本发明的技术效果体现在
本发明提供了先进的日志存储架构,支持多种虚拟化环境。该架构符合一系列的功能要求,包括可靠性,高速写入性和通用性。本发明利用高速设备存储原本存储于低速设备上的日志数据,允许虚拟环境下应用程序不做任何修就可以使用本发明。本发明在文件系统和设备驱动层实现了一个具有设备透明性和完整日志功能的日志存储系统。


图1为虚拟化环境下文件系统日志存储系统的一种具体实现方式的结构示意图2为虚拟磁盘管理模块设计图3为本系统虚拟机添加日志流程图。
具体实施方式
下面结合附图对本发明系统作进一步详细的说明。
如图1所示,本发明可应用在一个虚拟机管理程序对应多个虚拟机Α、Β···Ν的系统背景中。本发明系统包括位于虚拟机中的日志添加模块1和日志磁盘动态插入模块2,以及位于虚拟机管理程序中的虚拟日志磁盘管理模块3和虚拟日志磁盘可靠性保证模块4。
日志添加模块1,用于申请共享内存以存储日志添加请求,从日志磁盘动态插入模块2获取虚拟日志磁盘盘符,将虚拟机文件系统中的日志读写请求定向到该虚拟日志磁盘盘符对应的虚拟日志磁盘上。日志添加模块1为虚拟机中的文件系统创建日志,必须要求文件系统能够在运行状态下具有由无日志转换为有日志的功能。
日志磁盘动态插入模块2用于从虚拟日志磁盘管理模块3接收虚拟日志磁盘信息,负责将该虚拟磁盘挂载到文件系统上。从虚拟日志磁盘管理模块3获得虚拟磁盘信息, 但在本模块本身看来不能意识到这是一块虚拟的磁盘,而以为是一块由虚拟机管理程序所在文件系统所管理的一块真实的物理磁盘。获取磁盘信息以后,挂载到虚拟机内的文件系统上,并将挂载后得到的虚拟日志磁盘盘符告知日志添加模块1。
虚拟日志磁盘管理模块3负责全局的管理所有虚拟机的虚拟磁盘,包括虚拟磁盘在内存中占用的空间、虚拟日志磁盘内存分配以及与虚拟机内部的通信。与日志添加模块 1通信,获取虚拟机内部的日志添加请求。与日志磁盘动态插入模块2通信,告知其确定的虚拟日志磁盘信息。从图2中可以看出,本模块包括以下五个模块日志添加请求通信模块 31,虚拟磁盘内存管理模块32,虚拟日志磁盘创建模块33,磁盘信息反馈通信模块34和虚拟日志磁盘块设备驱动35。
日志添加请求通信模块31负责接受虚拟机内的日志添加请求。通信方式为在虚拟机和虚拟机管理程序之间的共享内存技术。日志添加请求通信模块获得虚拟机共享内存访问授权表,通过授权表对内存固定地址进行访问,判断是否发起添加日志,如果是,则捕获虚拟机内部的日志添加请求。捕获请求以后,告知虚拟磁盘内存管理模块32。
虚拟磁盘内存管理模块32用于为所述日志添加请求确定待创建的虚拟日志磁盘的属性信息。属性信息包括内存地址,磁盘主设备号,磁盘副设备号,磁盘大小,实际使用大小以及各虚拟日志磁盘与虚拟机的一一对应关系。从日志添加请求通信模块31中得到虚拟机的添加日志请求后,首先查看该虚拟机是否已经添加过日志,如果有,则直接告知磁盘信息反馈通信模块34相关磁盘信息;如果没有,则与虚拟日志磁盘创建模块33通信,向其请求创建虚拟磁盘。待其创建完成后,获得创建的虚拟磁盘信息,记录并将其转发给磁盘信息反馈模块;34。
虚拟日志磁盘创建模块33依据所述虚拟日志磁盘的属性信负责为虚拟机创建虚拟日志磁盘,是直接在内存中申请空间并创建磁盘块设备的模块。为节约内存使用空间,并不在申请磁盘时直接开辟一块对应磁盘空间大小的内存空间,以免造成内存数据浪费。仅仅申请磁盘块设备信息。磁盘空间管理采用基数树结构管理,在没有数据写入的时候,基数树只有根结点会产生空间,就只需为其分配头结点空间。将创建的虚拟日志磁盘信息(包括虚拟日志磁盘的属性信息和内存地址空间)返回给虚拟磁盘内存管理模块32。
磁盘信息反馈通信模块34负责通知虚拟机日志磁盘信息。与日志磁盘动态插入模块2通信,通信方式采用共享内存,在原来获取添加日志请求的共享内存中写入磁盘信息,日志磁盘动态插入模块2从指定内存地址读出磁盘信息。
虚拟日志磁盘块设备驱动35负责用于从虚拟机的文件系统中获取日志读写请求,在日志读写请求定向的虚拟日志磁盘上执行该日志读写请求。通过块设备前后端传入 I/O共享环的日志读写请求,由于前文所述的步骤,已经绑定在虚拟日志块设备上,并将读写请求放在虚拟日志块设备的请求队列上。虚拟日志块设备驱动35从队列中取出请求并进行读/写操作,将读/写磁盘的操作转换为对内存中的基数树结构进行增删操作,读写速度提升的关键点在于此模块。
虚拟日志磁盘可靠性保证模块4是保证内存中数据安全性和可靠性的模块。当具备日志文件系统的虚拟机关闭以后,为释放内存以及为保证日志数据的安全性,需要将数据转移到磁盘块设备上,已防止数据丢失。包括两个子模块内存拷贝模块41和数据存储模块42。
内存拷贝模块41负责将该关闭的虚拟机的日志磁盘,即在虚拟机管理程序管理的部分内存区域中的数据拷贝到用户空间。
数据存储模块42负责数据以文件的形式写入到磁盘6上。使用内存映像文件的方式将内存中指定区域的映射到磁盘文件上进行保存。
下面结合图3系统流程图讲述整个系统的工作流程。
1、虚拟机内部文件系统为无日志型文件系统,使用日志添加模块1发起为文件系统添加日志请求,对与虚拟日志磁盘管理模块3共享的内存区域进行写操作,写入日志添加请求数据结构。
2、日志添加请求通信模块31,从共享内存区域中取出日志添加请求数据结构,进行解析,获取虚拟机文件系统信息,将请求以及虚拟机信息告知虚拟磁盘内存管理模块32。
3、虚拟磁盘内存管理模块32查询虚拟机日志是否已分配,如果已经分配,则直接返回已经分配的虚拟磁盘信息。如果没有分配,则告知虚拟日志磁盘创建模块33进行新的磁盘分配。
4、虚拟日志磁盘创建模块33接收到新的磁盘创建请求,从虚拟机磁盘管理程序管理的内存中分配空间,为虚拟的磁盘块设备处理读写请求准备基础空间。创建完成以后, 返回新创建的磁盘信息给虚拟磁盘内存管理模块32。
5、虚拟磁盘内存管理模块32收到新的虚拟磁盘设备信息以后,将磁盘信息告知磁盘信息反馈通信模块34。
6、磁盘信息反馈通信模块34将磁盘信息通过共享内存技术与虚拟机内部进行交互,将磁盘信息填入共享内存指定区域中,虚拟机中的日志磁盘动态插入模块2从共享内存指定区域读取出磁盘信息并进行解析,解析完成以后,执行挂载磁盘命令,将日志磁盘设备挂载到文件系统中,并告知日志添加模块1日志磁盘盘符。
7、日志添加模块1获取日志磁盘盘符,执行添加日志命令,将日志读写请求定向导入到磁盘盘符对应的虚拟日志磁盘设备上,至此完成虚拟日志设备的添加以及文件系统日志的添加。
8.虚拟日志磁盘块设备驱动35从虚拟机的文件系统中获取日志读写请求,在日志读写请求定向的虚拟日志磁盘上执行该日志读写请求。
虚拟日志磁盘可靠性保证模块4运行在虚拟机关闭以后,若发现该虚拟机虚拟日志磁盘设备上并没有数据,则不保存数据。如果发现有,则使用子模块内存拷贝模块41和数据存储模块42将内存中的数据转存到磁盘上。待虚拟机重新启动时,通过数据存储模块 42重新读出该虚拟机对应虚拟日志磁盘数据,通过虚拟机磁盘内存管理模块32以及虚拟日志磁盘创建模块33,重新在内存中加载虚拟日志磁盘块设备。
本发明将原本日志文件系统写数据时,进行两次磁盘写操作转换为一次内存写操作一次磁盘写操作,在保证日志可靠性以及发挥正常日志作用的前提下,提高了写性能。
本发明不仅局限于上述具体实施方式
,本领域一般技术人员根据本发明公开的内容,可以采用其它多种具体实施方式
实施本发明,因此,凡是采用本发明的设计结构和思路,做一些简单的变化或更改的设计,都落入本发明保护的范围。
权利要求
1.一种虚拟化环境下的文件系统日志存储系统,包括位于虚拟机中的日志添加模块(1)和日志磁盘动态插入模块O),以及位于虚拟机管理程序中的虚拟日志磁盘管理模块 ⑶;所述日志添加模块(1),用于申请共享内存以存储日志添加请求,从所述日志磁盘动态插入模块( 获取虚拟日志磁盘盘符,将虚拟机文件系统中的日志读写请求定向到所述虚拟日志磁盘盘符对应的虚拟日志磁盘上;所述日志磁盘动态插入模块O),用于从所述虚拟日志磁盘管理模块C3)接收虚拟日志磁盘信息,将所述虚拟日志磁盘挂载到虚拟机的文件系统上,并将挂载后得到的虚拟日志磁盘盘符传送给所述日志添加模块(1);所述虚拟日志磁盘管理模块(3),用于所述从日志添加模块(1)的共享内存中读取所述日志添加请求,为该请求创建虚拟日志磁盘,将创建的虚拟磁盘信息传送给所述日志磁盘动态插入模块(2),并从虚拟机的文件系统中获取所述日志读写请求,在所述日志读写请求定向的虚拟日志磁盘上执行该日志读写请求。
2.根据权利要求1所述的文件系统日志存储系统,其特征在于,所述虚拟日志磁盘管理模块⑶包括日志添加请求通信模块(31),用于从日志添加模块(1)的共享内存中读取日志添加请求;虚拟磁盘内存管理模块(32),用于为所述日志添加请求确定待创建的虚拟日志磁盘的属性信息;虚拟日志磁盘创建模块(33),用于依据所述虚拟日志磁盘的属性信息为日志添加请求创建虚拟日志磁盘;磁盘信息反馈模块(34),用于将创建的虚拟日志磁盘信息反馈给日志磁盘动态插入模块⑵;虚拟日志磁盘块设备驱动(35),用于从虚拟机的文件系统中获取日志读写请求,在日志读写请求定向的虚拟日志磁盘上执行该日志读写请求。
3.根据权利要求1或2所述的文件系统日志存储系统,其特征在于,还包括位于虚拟机管理程序中的虚拟日志磁盘可靠性保证模块G),用于将虚拟日志磁盘管理模块(3)中的所有虚拟日志磁盘上的日志内容存储到物理磁盘。
全文摘要
本发明公开了一种虚拟化环境下的文件系统日志存储系统,包括位于虚拟机中的日志添加模块和日志磁盘动态插入模块,以及位于虚拟机管理程序中的虚拟日志磁盘管理模块;日志添加模块申请共享内存以存储日志添加请求,将日志读写请求定向到创建的虚拟日志磁盘上;日志磁盘动态插入模块将创建的虚拟日志磁盘挂载到文件系统上;虚拟日志磁盘管理模读取日志添加请求,为该请求创建虚拟日志磁盘,将创建的虚拟磁盘信息反馈给日志磁盘动态插入模块,在日志读写请求定向的虚拟日志磁盘上执行该日志读写请求。本发明利用高速设备存储原本存储于低速设备上的日志数据,在保证日志可靠性以及发挥正常日志作用的前提下,提高了写性能。
文档编号G06F17/30GK102521114SQ201110391530
公开日2012年6月27日 申请日期2011年11月30日 优先权日2011年11月30日
发明者周晔, 廖小飞, 李丁丁, 金海 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1