pNFS系统高效支持海量虚拟机在线启动运行的方法

文档序号:6386459阅读:235来源:国知局
专利名称:pNFS系统高效支持海量虚拟机在线启动运行的方法
技术领域
本发明涉及云计算技术领域,特别涉及一种pNFS系统高效支持海量虚拟机在线启动运行的方法。
背景技术
近年来,随着计算机与互联网技术的飞速发展,各种各样的IT资源日趋庞大,大量的物理资源,包括计算资源、服务资源、软件资源以及海量的数据资源通过网络聚合起来。如何有效地利用这些物理资源、提高资源的有效利用率却一直困扰着资源所有者。为了满足各类复杂应用日益增长的对于大规模计算能力的需求,如何在这些物理资源上按照用户的需求来为用户快速构建满足要求的虚拟计算环境,提高资源综合利用率,就自然地成为当前急需解决的一个重要问题。本世纪初迅速兴起了一种新的商业计算模型-“云计算(Cloud Computing)”。
它将海量的计算机通过网络互连构成一个庞大的资源池,通过特定的软件系统来管理这些资源,为用户提供按需使用、按使付费的高可扩展服务。全球IT巨头微软提出的云计算参考架构图由资源层、虚拟化层、管理层和服务层四部分组成。资源层由底层各种各样的异构物理资源组成,这些物理资源通过虚拟化层的虚拟化之后可灵活地分配与收回,以使管理层方便地进行统一管理,并为资源监控和负载平衡提供可能。服务层为用户提供一些云计算相关的服务,方便用户有效地使用底层的物理资源来满足自身的应用需求。其中虚拟化层的相关技术是实现云计算最重要的也是研究最广的一块内容。云计算的解决方案离不开虚拟化,虚拟化技术可以有效地分离硬件和软件,它给云计算提供了坚实的基础,使得云计算只需要关心如何分配虚拟资源为用户提供更好的服务,而不必去直接管理底层的物理资源。当前存在着两种主流的虚拟化技术路线全虚拟化(full-virtualization)以及半虚拟化(para-virtualization)。全虚拟化以VMware为代表,其优点是操作系统可以不经过任何修改就直接在物理机上运行;但同时它所采用的对部分特权指令的动态二进制翻译技术也会带来一定的系统性能开销。半虚拟化以剑桥大学的Xen虚拟机为代表,它只需要修改部分操作系统代码即可实现虚拟化。目前,大多数虚拟机提供多种启动方式,既可以从虚拟镜像文件启动,也可以从网络启动,还可以从一个文件目录启动。云计算以虚拟机为计算单位提供给用户使用,为了同时给众多用户提供服务,需要海量的虚拟机。海量虚拟机需要从海量根文件系统启动,因为一个虚拟机必须对应一个根文件系统。为了存储海量的文件,目前比较流行的为分布式文件系统。但是传统的分布式文件系统都需要有一层文件系统节点,所有存储节点的数据流入流出都必须经过这个中间节点,这一额外的中间节点导致多个客户端进行并发访问时成为整个文件系统的瓶颈。为了解决这种“单服务节点”的瓶颈问题,在分布式文件系统中产生了一种元数据和文件数据分别存储的新架构。客户端可以通过不同的链路来获取文件的属性信息和文件实体内容,并且可以并行读取文件实体内容,以提高整个系统的并发吞吐量。目前比较流行的分布式文件系统GFS和HDFS,就采用元数据服务器和数据服务器分离的设计,但是都只包含一个元数据服务器(在GFS文件系统中称为Master,在HDFS中称为NameNode)以简化元数据管理,并且元数据信息都储存在元数据服务器的内存中以加快访问速度,这样元数据服务器的内存空间显然会成为文件系统可扩展性的瓶颈。Xen虚拟机为当前最为流行的开源虚拟机软件,可以将虚拟机的根文件系统安装在PNFS服务器上,提供从pNFS客户端启动虚拟机的方法。这一启动方法在Xen虚拟机迁移功能中非常有用,在进行虚拟机迁移时,需要将该虚拟机根文件系统从源宿主机迁移到目的宿主机,而PNFS正好提供了将文件系统同时挂载到两个宿主机的方法,这样只需通过改变根文件系统的路径即可完成虚拟机文件系统的迁移。pNFS也是采用元数据服务器和数据服务器分离的设计,并且可以让客户端并行地直接和数据服务器进行数据读写。PNFS分布式文件系统由一个元数据服务器(MetadataServer, MDS)和多个数据服务器(Data Server, DS)组成,MDS负责管理文件系统名称以及文件数据在DS上的分布信息,DS负责存储数据。虚拟机为云计算虚拟化中提供服务的最基本计算单元。通过将控制和数据流分开,PNFS允许客户端直接和存储节点进行交互。pNFS提供了许多吸引人的特点。首先,其支持多样的布局类型(block、file、object),可以建立在现有的任何输入/输出和存储协议上。其次,其提供了一个易行的迁移和升级方法,以提高系统性能和可伸缩性。再次,在目前众多的分布式文件系统中,PNFS是不多的开源项目之一。因此,pNFS应用范围非常广泛,从数据中心到工作站、高速服务器等。图1显示了在现有pNFS系统中,大文件与小文件随着客户端数目增加的聚合读写性能。从图1中可以看出,对于大文件,随着客户端数目的增加,聚合读写性能呈线性增长;然而小文件的聚合速度在两个或三个客户端时就达到了峰值。当PNFS存储小文件时,文件的大小小于PNFS存储文件的分块大小,所有的文件数据将存储在一个数据服务器上,其它的数据服务器都为空。在这种情况下,PNFS服务器实际上退化为只有一个数据服务器的NFS,无法进行数据的并行读写。通过统计得知,大多数Linux操作系统文件均为比较小的文件(在Ubuntu Serverll. 04中,96%的操作系统文件小于200KB),此时虚拟机系统运行在pNFS文件系统之上,如果海量虚拟机并发启动运行,会严重影响虚拟机的性能。

发明内容
(一)所要解决的技术问题本发明的目的在于提供一种pNFS系统高效支持海量虚拟机在线启动运行的方法,以解决现有PNFS分布式文件系统中存在的海量文件并发读写时元数据服务器压力过大,以及文件数据在各数据服务器上分布不均衡,从而无法良好支持海量虚拟机高效在线启动运行的问题。(二)技术方案为了解决上述技术问题,本发明提出了一种pNFS系统高效支持海量虚拟机在线启动运行的方法,所述方法包括以下步骤S1、客户端从元数据服务器获取pNFS系统的布局类型信息,并判断所述pNFS系统的布局类型是否与自身兼容,若兼容,则进入步骤S2,其中,所述pNFS系统包括若干个数据服务器;
S2、所述客户端向所述元数据服务器请求所需文件的布局信息,所述元数据服务器即时计算出所述文件的布局信息并发送给所述客户端;S3、所述客户端根据所述文件的布局信息,向对应的数据服务器并行存取所述文件的实体数据。可选的,步骤S3之后进一步包括步骤S4、所述客户端对所述文件进行写操作后,向所述元数据服务器提交所述文件的布局修改信息。可选的,所述布局信息包括数据服务器设备ID以及文件在数据服务器中的分布
信息,其中,所述数据服务器设备ID是所述元数据服务器分配给每个数据服务器的唯一标识号。可选的,所述文件在数据服务器中的分布信息使用文件句柄进行标识。可选的,步骤S2中,所述元数据服务器计算出所述文件的布局信息具体包括以所述文件的索引节点inode为特征码,进行哈希计算,并进一步得到所述文件的数据服务器设备ID。可选的,步骤S2进一步包括利用所述文件的数据服务器设备ID,生成对应的数据服务器的文件句柄序列。可选的,步骤S3具体包括所述客户端根据所述文件的数据服务器设备ID,向所述元数据服务器获取对应的数据服务器的IP地址及端口号,并根据所述数据服务器的IP地址及端口号,向所述数据服务器存取所述文件。(三)有益效果与现有的pNFS系统相比,本发明提出的技术方案具有如下优点1、简化了 MDS端元数据技术,减轻了海量文件并发读取时对MDS的压力。本发明提出的技术方案对MDS上存储的元数据信息进行了精简,只保留了文件在存储系统中的分布信息,并且不同于传统的将信息保存于内存中的方法,而是在客户端查询该信息时进行即时计算。2、能够动态均衡DS数据分布,使文件数据更加均匀地分布到各个DS。对于不同文件,以文件的inode作为特征码,进行哈希操作,计算出不同的DS分布情况,从而达到负载均衡的目的。本发明提出的技术方案尤其适用于通用场景下海量虚拟机在线启动和运行,能够大大提高PNFS分布式文件系统对海量虚拟机网络启动运行的支持能力,显著提升在高并发情况下虚拟机文件系统的读写性能。


图1是现有技术中pNFS系统的聚合读与性能不意图。图2是本发明提出的技术方案的系统结构示意图。图3是本发明的一个实施例中文件在数据服务器上的分布对比示意4是本发明的一个实施例中DomU虚拟机的启动时间对比示意图。
具体实施例方式本发明提出了一种pNFS系统高效支持海量虚拟机在线启动运行的方法,所述方法包括以下步骤:S1、客户端从元数据服务器获取pNFS系统的布局类型信息,并判断所述pNFS系统的布局类型是否与自身兼容,若兼容,则进入步骤S2,其中,所述pNFS系统包括若干个数据服务器;S2、所述客户端向所述元数据服务器请求所需文件的布局信息,所述元数据服务器即时计算出所述文件的布局信息并发送给所述客户端;S3、所述客户端根据所述文件的布局信息,向对应的数据服务器并行存取所述文件的实体数据。优选的,步骤S3之后进一步包括步骤:S4、所述客户端对所述文件进行写操作后,向所述元数据服务器提交所述文件的布局修改信息。下面结合附图和实施例,对本发明的具体实施方式
作进一步详细描述。本发明在pNFS分布式文件系统的基础上,针对其元数据和文件数据分离的特性,以及虚拟机操作系统文件大多为小文件的特性,提出了:( I)简化Meta Server端元数据技术,减轻海量操作系统文件并发读取时对Meta Server的压力;(2)动态均衡Data Server数据分布技术,使文件数据更加均勻地分布到各个Data Server。pNFS分布式文件系统分为Block、File、Object三种布局形式,在本发明的一种优选实施方式中,可选用基于File布局的文件系统。如图2 Ktj^pNFS分布式文件系统结构主要包括元数据服务器(MDS)、数据服务器(DS)和pNFS客户端,其中pNFS客户端为虚拟机运行的宿主机。客户端通过向MDS端查询获取文件数据在DS上的分布情况,然后直接和DS存储节点进行文件数据的并行读写。对于海量文件存储系统,往往要求并发度非常高,这个时候对MDS的过度访问往往会成为系统的瓶颈。为了缓解这一问题,本发明对MDS上存储的元数据信息进行了精简,只保留了文件在存储设备上的分布信息,并且不同于传统的将信息保存于内存中的方法,而是在客户端查询该信息时进行即时计算。如图2所示,当客户端在该存储系统中进行读写文件时,其流程如下:S1、客户端向元数据服务器发送GETATTR操作请求,获取当前存储系统的布局类型信息,只有元数据服务器返回的布局类型为客户端所支持的,才可以进行后续的操作。S2、客户端向元数据服务器请求需要读写文件的布局信息,该布局信息包括数据服务器设备ID和文件在数据服务器上的分布信息。其中数据服务器设备ID对应于一组数据服务器,该数据服务器的顺序也指示了文件数据在各个DS的读写顺序,也就是说,文件的第一数据块分布于DS1,第二个数据块分布于DS2上,依次类推。为了使文件数据均匀分布到各个DS上,不同的文件使用不同的DS序列,DS序列使用以下公式生成:DeviceID_Loc ator=((Hash(file_inode)+i)mod DataServers_Length)其中,file_inode为该文件的索引节点inode信息(每个文件的inode唯一),i表示该文件的第i个数据块。在进行哈希计算时,将数据块的标识不放在哈希函数里可以保证对于大文件的分布也均勻分布。如果使用Hash(file_inode+i),实验证明当数据服务器增加时,会造成存储量最多的服务器和存储最少的服务器差值明显增大,从而造成负载不均衡。文件在数据服务器上的分布信息使用文件句柄进行标识,不同句柄序列对应于不同的数据服务器,文件句柄序列使用以下公式生成FILEHANDLES[i]=GET_FH(file_path[(Hash(file_inode)+i)modDataServers_Length])S3、客户端通过步骤S2获取的数据服务器设备ID向元数据服务器获取文件数据存储设备的详细信息。客户端通过该信息获取需要进行读取的存储设备IP、端口号等信息。存储设备信息必须对应步骤S2中的文件句柄信息以保证客户端可以正确地进行读写。对于不同设备ID,存储节点信息通过以下公式生成DSLIST[i] = GET_DSADDR(DataServers[(DeviceID+i)%N])客户端获取到存储设备信息以及文件句柄信息后,就可以直接和存储设备(即数据服务器)进行并行的文件数据读写操作。S4、如果该文件操作为写操作,则客户端需要向元数据服务器提交之前分配的布局信息的修改情况,更新文件的真实大小以及文件末尾情况。为了验证本发明提出的方法对虚拟机在线启动运行的支持效果,我们设计了虚拟机并发启动时间的实验来和传统pNFS存储的启动时间进行比较。实验中,首先将Ubuntu Serverll. 04的操作系统根文件分别存储在传统pNFS和本发明提出的存储系统(tpNFS)上。如图3所示,图中pNFS表示传统pNFS,tpNFS表示采用本发明提出的文件存取方法的存储系统,当根文件系统存储在传统PNFS上时,文件数据集中分布在前面5个数据服务器上,后面的数据服务器上分布的文件很少(不到3%的文件有数据分布在上面),基本为空;当把根文件系统存储在本发明提出的存储系统上时,各个数据服务器上的数据分布更加均匀,基本上所有的文件平均分布在数据服务器上。然后,测试不同数量的虚拟机分别在两个存储系统上的启动时间。如图4所示,在不同虚拟机数量下本发明提出的文件存取方法都要比传统PNFS的读写方法快,并且随着虚拟机数量的增加(从2台DomU虚拟机到32台DomU虚拟机,每个宿主机启动2台DomU虚拟机),本发明提出的技术方案的效果比传统PNFS好的越来越多,当虚拟机数量为32时,采用本发明的技术方案的虚拟机启动时间减少为传统pNFS上启动时间的46. 97%。从实验结果可以看出,本发明提出的文件存取方法和系统对于虚拟机根文件系统提供了良好的存储支持,高效支持了虚拟机网络启动运行,特别是在多个虚拟机高并发的情况下,其优点更加明显。以上所述仅是本发明的优选实施方式,应当指出,对于本领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和替换,这些改进和替换也应视为本发明的保护范围。
权利要求
1.一种PNFS系统高效支持海量虚拟机在线启动运行的方法,其特征在于,所述方法包括以下步骤:51、客户端从元数据服务器获取pNFS系统的布局类型信息,并判断所述pNFS系统的布局类型是否与自身兼容,若兼容,则进入步骤S2,其中,所述PNFS系统包括若干个数据服务器;52、所述客户端向所述元数据服务器请求所需文件的布局信息,所述元数据服务器即时计算出所述文件的布局信息并发送给所述客户端;53、所述客户端根据所述文件的布局信息,向对应的数据服务器并行存取所述文件的实体数据。
2.根据权利要求1所述的pNFS系统高效支持海量虚拟机在线启动运行的方法,其特征在于,步骤S3之后进一步包括步骤:54、所述客户端对所述文件进行写操作后,向所述元数据服务器提交所述文件的布局修改信息。
3.根据权利要求1或2所述的pNFS系统高效支持海量虚拟机在线启动运行的方法,其特征在于,所述布局信息包括数据服务器设备ID以及文件在数据服务器中的分布信息,其中,所述数据服务器设备ID是所述元数据服务器分配给每个数据服务器的唯一标识号。
4.根据权利要求3所述的pNFS系统高效支持海量虚拟机在线启动运行的方法,其特征在于,所述文件在数据服务器中的分布信息使用文件句柄进行标识。
5.根据权利要求4所述的pNFS系统高效支持海量虚拟机在线启动运行的方法,其特征在于,步骤S2中,所述元数据服务器计算出所述文件的布局信息具体包括:以所述文件的索引节点inode为特征码,进行哈希计算,并进一步得到所述文件的数据服务器设备ID。
6.根据权利要求5所述的pNFS系统高效支持海量虚拟机在线启动运行的方法,其特征在于,步骤S2进一步包括:利用所述文件的数据服务器设备ID,生成对应的数据服务器的文件句柄序列。
7.根据权利要求3所述的pNFS系统高效支持海量虚拟机在线启动运行的方法,其特征在于,步骤S3具体包括:所述客户端根据所述文件的数据服务器设备ID,向所述元数据服务器获取对应的数据服务器的IP地址及端口号,并根据所述数据服务器的IP地址及端口号,向所述数据服务器存取所述文件。
全文摘要
本发明涉及云计算技术,具体公开了一种pNFS系统高效支持海量虚拟机在线启动运行的方法。所述方法包括客户端从元数据服务器获取pNFS系统的布局类型信息,并判断pNFS系统的布局类型是否与自身兼容,若兼容,则进入下一步;客户端向元数据服务器请求所需文件的布局信息,元数据服务器即时计算出文件的布局信息并发送给客户端;客户端根据文件的布局信息,向对应的数据服务器并行存取文件数据。本发明的技术方案简化了MDS端元数据信息,以减轻海量文件并发读取时对MDS的压力,同时能够动态均衡DS数据分布,使文件数据更加均匀地分布到各个DS,尤其适用于通用场景下海量虚拟机在线启动和运行。
文档编号G06F9/455GK103077055SQ201210592629
公开日2013年5月1日 申请日期2012年12月31日 优先权日2012年12月31日
发明者王博, 姜进磊, 杨广文 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1