CN103077055B - pNFS***支持海量虚拟机在线启动运行的方法 - Google Patents

pNFS***支持海量虚拟机在线启动运行的方法 Download PDF

Info

Publication number
CN103077055B
CN103077055B CN201210592629.0A CN201210592629A CN103077055B CN 103077055 B CN103077055 B CN 103077055B CN 201210592629 A CN201210592629 A CN 201210592629A CN 103077055 B CN103077055 B CN 103077055B
Authority
CN
China
Prior art keywords
file
data server
pnfs
virtual machine
client
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.)
Active
Application number
CN201210592629.0A
Other languages
English (en)
Other versions
CN103077055A (zh
Inventor
王博
姜进磊
杨广文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN201210592629.0A priority Critical patent/CN103077055B/zh
Publication of CN103077055A publication Critical patent/CN103077055A/zh
Application granted granted Critical
Publication of CN103077055B publication Critical patent/CN103077055B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及云计算技术,具体公开了一种pNFS***高效支持海量虚拟机在线启动运行的方法。所述方法包括:客户端从元数据服务器获取pNFS***的布局类型信息,并判断pNFS***的布局类型是否与自身兼容,若兼容,则进入下一步;客户端向元数据服务器请求所需文件的布局信息,元数据服务器即时计算出文件的布局信息并发送给客户端;客户端根据文件的布局信息,向对应的数据服务器并行存取文件数据。本发明的技术方案简化了MDS端元数据信息,以减轻海量文件并发读取时对MDS的压力,同时能够动态均衡DS数据分布,使文件数据更加均匀地分布到各个DS,尤其适用于通用场景下海量虚拟机在线启动和运行。

Description

pNFS***支持海量虚拟机在线启动运行的方法
技术领域
本发明涉及云计算技术领域,特别涉及一种pNFS***支持海量虚拟机在线启动运行的方法。
背景技术
近年来,随着计算机与互联网技术的飞速发展,各种各样的IT资源日趋庞大,大量的物理资源,包括计算资源、服务资源、软件资源以及海量的数据资源通过网络聚合起来。如何有效地利用这些物理资源、提高资源的有效利用率却一直困扰着资源所有者。为了满足各类复杂应用日益增长的对于大规模计算能力的需求,如何在这些物理资源上按照用户的需求来为用户快速构建满足要求的虚拟计算环境,提高资源综合利用率,就自然地成为当前急需解决的一个重要问题。
本世纪初迅速兴起了一种新的商业计算模型——“云计算(CloudComputing)”。它将海量的计算机通过网络互连构成一个庞大的资源池,通过特定的软件***来管理这些资源,为用户提供按需使用、按使付费的高可扩展服务。全球IT巨头微软提出的云计算参考架构图由资源层、虚拟化层、管理层和服务层四部分组成。资源层由底层各种各样的异构物理资源组成,这些物理资源通过虚拟化层的虚拟化之后可灵活地分配与收回,以使管理层方便地进行统一管理,并为资源监控和负载平衡提供可能。服务层为用户提供一些云计算相关的服务,方便用户有效地使用底层的物理资源来满足自身的应用需求。其中虚拟化层的相关技术是实现云计算最重要的也是研究最广的一块内容。云计算的解决方案离不开虚拟化,虚拟化技术可以有效地分离硬件和软件,它给云计算提供了坚实的基础,使得云计算只需要关心如何分配虚拟资源为用户提供更好的服务,而不必去直接管理底层的物理资源。
当前存在着两种主流的虚拟化技术路线:全虚拟化(full-virtualization)以及半虚拟化(para-virtualization)。全虚拟化以VMware为代表,其优点是操作***可以不经过任何修改就直接在物理机上运行;但同时它所采用的对部分特权指令的动态二进制翻译技术也会带来一定的***性能开销。半虚拟化以剑桥大学的Xen虚拟机为代表,它只需要修改部分操作***代码即可实现虚拟化。
目前,大多数虚拟机提供多种启动方式,既可以从虚拟镜像文件启动,也可以从网络启动,还可以从一个文件目录启动。云计算以虚拟机为计算单位提供给用户使用,为了同时给众多用户提供服务,需要海量的虚拟机。海量虚拟机需要从海量根文件***启动,因为一个虚拟机必须对应一个根文件***。为了存储海量的文件,目前比较流行的为分布式文件***。但是传统的分布式文件***都需要有一层文件***节点,所有存储节点的数据流入流出都必须经过这个中间节点,这一额外的中间节点导致多个客户端进行并发访问时成为整个文件***的瓶颈。为了解决这种“单服务节点”的瓶颈问题,在分布式文件***中产生了一种元数据和文件数据分别存储的新架构。客户端可以通过不同的链路来获取文件的属性信息和文件实体内容,并且可以并行读取文件实体内容,以提高整个***的并发吞吐量。目前比较流行的分布式文件***GFS和HDFS,就采用元数据服务器和数据服务器分离的设计,但是都只包含一个元数据服务器(在GFS文件***中称为Master,在HDFS中称为NameNode)以简化元数据管理,并且元数据信息都储存在元数据服务器的内存中以加快访问速度,这样元数据服务器的内存空间显然会成为文件***可扩展性的瓶颈。
Xen虚拟机为当前最为流行的开源虚拟机软件,可以将虚拟机的根文件***安装在pNFS服务器上,提供从pNFS客户端启动虚拟机的方法。这一启动方法在Xen虚拟机迁移功能中非常有用,在进行虚拟机迁移时,需要将该虚拟机根文件***从源宿主机迁移到目的宿主机,而pNFS正好提供了将文件***同时挂载到两个宿主机的方法,这样只需通过改变根文件***的路径即可完成虚拟机文件***的迁移。
pNFS也是采用元数据服务器和数据服务器分离的设计,并且可以让客户端并行地直接和数据服务器进行数据读写。pNFS分布式文件***由一个元数据服务器(MetadataServer,MDS)和多个数据服务器(DataServer,DS)组成,MDS负责管理文件***名称以及文件数据在DS上的分布信息,DS负责存储数据。虚拟机为云计算虚拟化中提供服务的最基本计算单元。通过将控制和数据流分开,pNFS允许客户端直接和存储节点进行交互。pNFS提供了许多吸引人的特点。首先,其支持多样的布局类型(block、file、object),可以建立在现有的任何输入/输出和存储协议上。其次,其提供了一个易行的迁移和升级方法,以提高***性能和可伸缩性。再次,在目前众多的分布式文件***中,pNFS是不多的开源项目之一。因此,pNFS应用范围非常广泛,从数据中心到工作站、高速服务器等。
图1显示了在现有pNFS***中,大文件与小文件随着客户端数目增加的聚合读写性能。从图1中可以看出,对于大文件,随着客户端数目的增加,聚合读写性能呈线性增长;然而小文件的聚合速度在两个或三个客户端时就达到了峰值。当pNFS存储小文件时,文件的大小小于pNFS存储文件的分块大小,所有的文件数据将存储在一个数据服务器上,其它的数据服务器都为空。在这种情况下,pNFS服务器实际上退化为只有一个数据服务器的NFS,无法进行数据的并行读写。通过统计得知,大多数Linux操作***文件均为比较小的文件(在UbuntuServer11.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分布式文件***的基础上,针对其元数据和文件数据分离的特性,以及虚拟机操作***文件大多为小文件的特性,提出了:(1)简化MetaServer端元数据技术,减轻海量操作***文件并发读取时对MetaServer的压力;(2)动态均衡DataServer数据分布技术,使文件数据更加均匀地分布到各个DataServer。
pNFS分布式文件***分为Block、File、Object三种布局形式,在本发明的一种优选实施方式中,可选用基于File布局的文件***。如图2所示,pNFS分布式文件***结构主要包括元数据服务器(MDS)、数据服务器(DS)和pNFS客户端,其中pNFS客户端为虚拟机运行的宿主机。客户端通过向MDS端查询获取文件数据在DS上的分布情况,然后直接和DS存储节点进行文件数据的并行读写。对于海量文件存储***,往往要求并发度非常高,这个时候对MDS的过度访问往往会成为***的瓶颈。为了缓解这一问题,本发明对MDS上存储的元数据信息进行了精简,只保留了文件在存储设备上的分布信息,并且不同于传统的将信息保存于内存中的方法,而是在客户端查询该信息时进行即时计算。
如图2所示,当客户端在该存储***中进行读写文件时,其流程如下:
S1、客户端向元数据服务器发送GETATTR操作请求,获取当前存储***的布局类型信息,只有元数据服务器返回的布局类型为客户端所支持的,才可以进行后续的操作。
S2、客户端向元数据服务器请求需要读写文件的布局信息,该布局信息包括数据服务器设备ID和文件在数据服务器上的分布信息。其中数据服务器设备ID对应于一组数据服务器,该数据服务器的顺序也指示了文件数据在各个DS的读写顺序,也就是说,文件的第一数据块分布于DS1,第二个数据块分布于DS2上,依次类推。为了使文件数据均匀分布到各个DS上,不同的文件使用不同的DS序列,DS序列使用以下公式生成:
DeviceID_Locator=((Hash(file_inode)+i)modDataServers_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存储的启动时间进行比较。
实验中,首先将UbuntuServer11.04的操作***根文件分别存储在传统pNFS和本发明提出的存储***(tpNFS)上。如图3所示,图中pNFS表示传统pNFS,tpNFS表示采用本发明提出的文件存取方法的存储***,当根文件***存储在传统pNFS上时,文件数据集中分布在前面5个数据服务器上,后面的数据服务器上分布的文件很少(不到3%的文件有数据分布在上面),基本为空;当把根文件***存储在本发明提出的存储***上时,各个数据服务器上的数据分布更加均匀,基本上所有的文件平均分布在数据服务器上。然后,测试不同数量的虚拟机分别在两个存储***上的启动时间。如图4所示,在不同虚拟机数量下本发明提出的文件存取方法都要比传统pNFS的读写方法快,并且随着虚拟机数量的增加(从2台DomU虚拟机到32台DomU虚拟机,每个宿主机启动2台DomU虚拟机),本发明提出的技术方案的效果比传统pNFS好的越来越多,当虚拟机数量为32时,采用本发明的技术方案的虚拟机启动时间减少为传统pNFS上启动时间的46.97%。从实验结果可以看出,本发明提出的文件存取方法和***对于虚拟机根文件***提供了良好的存储支持,高效支持了虚拟机网络启动运行,特别是在多个虚拟机高并发的情况下,其优点更加明显。
以上所述仅是本发明的优选实施方式,应当指出,对于本领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和替换,这些改进和替换也应视为本发明的保护范围。

Claims (6)

1.一种pNFS***支持海量虚拟机在线启动运行的方法,其特征在于,所述方法包括以下步骤:
S1、客户端从元数据服务器获取pNFS***的布局类型信息,并判断所述pNFS***的布局类型是否与自身兼容,若兼容,则进入步骤S2,
其中,所述pNFS***包括若干个数据服务器;
S2、所述客户端向所述元数据服务器请求所需文件的布局信息,所述元数据服务器即时计算出所述文件的布局信息并发送给所述客户端;
S3、所述客户端根据所述文件的布局信息,向对应的数据服务器并行存取所述文件的实体数据;
其中,步骤S2进一步包括:
利用所述文件的数据服务器设备ID,生成对应的数据服务器的文件句柄序列。
2.根据权利要求1所述的pNFS***支持海量虚拟机在线启动运行的方法,其特征在于,步骤S3之后进一步包括步骤:
S4、所述客户端对所述文件进行写操作后,向所述元数据服务器提交所述文件的布局修改信息。
3.根据权利要求1或2所述的pNFS***支持海量虚拟机在线启动运行的方法,其特征在于,所述布局信息包括数据服务器设备ID以及文件在数据服务器中的分布信息,
其中,所述数据服务器设备ID是所述元数据服务器分配给每个数据服务器的唯一标识号。
4.根据权利要求3所述的pNFS***支持海量虚拟机在线启动运行的方法,其特征在于,所述文件在数据服务器中的分布信息使用文件句柄进行标识。
5.根据权利要求4所述的pNFS***支持海量虚拟机在线启动运行的方法,其特征在于,步骤S2中,所述元数据服务器计算出所述文件的布局信息具体包括:
以所述文件的索引节点inode为特征码,进行哈希计算,并进一步得到所述文件的数据服务器设备ID。
6.根据权利要求3所述的pNFS***支持海量虚拟机在线启动运行的方法,其特征在于,步骤S3具体包括:
所述客户端根据所述文件的数据服务器设备ID,向所述元数据服务器获取对应的数据服务器的IP地址及端口号,并根据所述数据服务器的IP地址及端口号,向所述数据服务器存取所述文件。
CN201210592629.0A 2012-12-31 2012-12-31 pNFS***支持海量虚拟机在线启动运行的方法 Active CN103077055B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210592629.0A CN103077055B (zh) 2012-12-31 2012-12-31 pNFS***支持海量虚拟机在线启动运行的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210592629.0A CN103077055B (zh) 2012-12-31 2012-12-31 pNFS***支持海量虚拟机在线启动运行的方法

Publications (2)

Publication Number Publication Date
CN103077055A CN103077055A (zh) 2013-05-01
CN103077055B true CN103077055B (zh) 2016-01-13

Family

ID=48153592

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210592629.0A Active CN103077055B (zh) 2012-12-31 2012-12-31 pNFS***支持海量虚拟机在线启动运行的方法

Country Status (1)

Country Link
CN (1) CN103077055B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106506587B (zh) * 2016-09-23 2021-08-06 中国人民解放军国防科学技术大学 一种基于分布式存储的Docker镜像下载方法
CN107678836B (zh) * 2017-10-12 2021-09-03 新华三大数据技术有限公司 集群的测试数据获取方法及装置
CN111399764B (zh) * 2019-12-25 2023-04-14 杭州海康威视***技术有限公司 数据存储方法、读取方法、装置、设备及存储介质
CN114116655A (zh) * 2021-12-08 2022-03-01 北京交研智慧科技有限公司 基于虚拟机的并行文件存储方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101996217A (zh) * 2009-08-24 2011-03-30 华为技术有限公司 一种存储数据的方法及其存储设备
CN102164161A (zh) * 2011-01-10 2011-08-24 清华大学 一种对并行文件***进行文件布局提取的方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8825789B2 (en) * 2008-12-16 2014-09-02 Netapp, Inc. Method and apparatus to implement a hierarchical cache system with pNFS

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101996217A (zh) * 2009-08-24 2011-03-30 华为技术有限公司 一种存储数据的方法及其存储设备
CN102164161A (zh) * 2011-01-10 2011-08-24 清华大学 一种对并行文件***进行文件布局提取的方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"一种基于pNFS协议的对象文件***的设计与实现";李洪昌等;;《小型微型计算机***》;20121130;第33卷(第11期);第2336-2340页 *
李洪昌 等;."一种基于pNFS协议的对象文件***的设计与实现".《小型微型计算机***》.2012,第33卷(第11期), *

Also Published As

Publication number Publication date
CN103077055A (zh) 2013-05-01

Similar Documents

Publication Publication Date Title
CN108885582B (zh) 存储器池结构的多租户存储器服务
US11562091B2 (en) Low latency access to physical storage locations by implementing multiple levels of metadata
CN102521063B (zh) 一种适用于虚拟机迁移和容错的共享存储方法
Liu et al. Research on the improvement of MongoDB Auto-Sharding in cloud environment
US9933956B2 (en) Systems and methods for implementing stretch clusters in a virtualization environment
US8972986B2 (en) Locality-aware resource allocation for cloud computing
US20190370043A1 (en) Cooperative memory management
US10990441B2 (en) Multi-level job processing queues
CN103793534B (zh) 分布式文件***及均衡元数据存储和访问负载的实现方法
US10824369B2 (en) Elastic method of remote direct memory access memory advertisement
CN103077055B (zh) pNFS***支持海量虚拟机在线启动运行的方法
US11080207B2 (en) Caching framework for big-data engines in the cloud
CN109933312A (zh) 一种有效降低容器化关系型数据库i/o消耗的方法
Ma et al. Dependency-aware data locality for MapReduce
Shen et al. VMAR: Optimizing I/O performance and resource utilization in the cloud
CN102420850B (zh) 一种资源调度方法及***
US9971785B1 (en) System and methods for performing distributed data replication in a networked virtualization environment
CN103049546B (zh) 一种管理、访问***日志的方法和装置
Zhu et al. An IoT-oriented real-time storage mechanism for massive small files based on Swift
CN105930202B (zh) 一种三阈值的虚拟机迁移方法
Waseem et al. A taxonomy and survey of data partitioning algorithms for big data distributed systems
Zhu et al. Marlin: Taming the big streaming data in large scale video similarity search
US11914556B2 (en) Lazy virtual filesystem instantiation and caching
Jin et al. Optimization of task assignment strategy for map-reduce
CN107967165A (zh) 基于lvm的虚拟机离线迁移方法

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