P2P技术提升桌面虚拟化中镜像下载速度研究

2018-05-15 08:31程良胡丹婷
软件导刊 2018年4期

程良 胡丹婷

摘 要:在大规模桌面虚拟化集群部署过程中,虚拟机镜像创建时,大量镜像数据在镜像服务器和计算节点服务器之间传输,下载速度直接影响着虚拟桌面的创建和更新速度。为了提高虚拟机镜像模板部署和系统的整体性能,从网络传输角度,提出一种基于BitTorrent的P2P技术提升镜像下载速度的方法。该方法在计算节点数量较多的情况下,能大幅提高镜像下载速度,从而保证镜像模板的快速分发,提升用户对桌面虚拟化系统的使用体验。

关键词:P2P;BitTorrent;桌面虚拟化;镜像下载

DOI:10.11907/rjdk.172620

中图分类号:TP319

文献标识码:A 文章编号:1672-7800(2018)004-0151-04

Abstract:In the process of mass desktop virtualization cluster deployment, when the image of virtual machines is being created, massive image data are transmitted between image storage servers and computing node servers, whose download speed directly influences the speed of creating and of updating the virtual desktop. In terms of network transmission, the paper proposes the technique of P2P based on BitTorrent to accelerate image download and to improve the deployment of virtual machine image templates and the performance of the whole system. The approach is able to considerably accelerate the image download when there are a comparatively large number of computing nodes, so as to ensure the rapid distribution of image templates and to refine the user experience in the desktop virtualization system.

Key Words:P2P; BitTorrent; desktop virtualization; image download

0 引言

随着我国教育信息化改革的不断深入,教学方式也在不断创新,很多高校的机房基础设施建设都采用了桌面虚拟化技术[1](VDI技术),以期为教学提供高效灵活的实验环境。研究表明,桌面虚拟化技术的应用,能显著提高系统的资源利用率,并大幅降低能源消耗[2],因此被越来越多的高校作为机房系统建设目标。目前在桌面虚拟化系统中,虚拟机镜像的创建流程和方法如下:所有镜像都存放在镜像服务器上,由镜像服务进行管理,计算节点需要从镜像创建第一个虚拟机时,通过HTTP从镜像服务器下载镜像。在计算节点较少时,这种HTTP下载方式基本能满足镜像的下载需求,不会影响下载效率,但在計算节点数量相对较多的情况下,并发从镜像服务器下载镜像,所有节点同时向服务器提出请求,镜像服务器必将成为一个瓶颈,从而降低镜像下载速度,以及桌面创建、更新速度,影响系统的整体性能和用户使用体验。

假定镜像服务器的网络带宽为N,计算节点数量为M,需同时下载的镜像大小为P,计算出在理想情况下需要花费的时间T为:T=P/(N/M)。

根据公式,结合实际使用环境得出以下数据,如表1所示。

从表1数据可以看出:①当集群规模较大时,下载数据耗时非常长;②将镜像服务器网络带宽扩充到万兆,能有效减少下载耗时,但随着集群规模增加,仍会存在明显瓶颈。

针对上述问题,文献[3]从镜像管理的角度提出镜像按需分发框架,根据虚拟机启动和运行过程中只对有限数据块访问的特性,仅传输虚拟机启动和运行所需的数据块,避免了存储节点和网络瓶颈问题,并采用差异化的数据块划分方法,提高了镜像分发速度;文献[4]从虚拟机镜像存储系统方面,设计了一种系统层的虚拟机镜像数据协作式缓存机制,通过充分利用各节点缓存的服务能力,使其暂存的虚拟机镜像数据能够为其它节点提供读取服务。协作式缓存实现了物理节点间类P2P模式的数据传输,可有效减少虚拟机读取数据的传输开销,提升虚拟机存储系统性能;文献[5]设计了一种桌面虚拟化镜像分布式存储系统,通过把频繁访问的只读根镜像数据块缓存在本地,采用轻量级元数据服务器架构,结合中心化设计和去中心化设计的优点,进一步提升了虚拟机镜像的读写性能;文献[6]发明了一种将虚拟机镜像文件中的系统文件按预定规则划分成逻辑块的方法,通过判断逻辑块对应的数据,去除镜像文件中的冗余数据,进而有效降低桌面云系统虚拟机镜像在数据存储时的存储量。

综上所述,目前在桌面虚拟化场景中,现有大部分方法都是通过改进虚拟机镜像文件存储及降低镜像文件体积,以提升镜像文件的传输性能。然而,本文提出一种更为简单、直接、易于实施的方法,该方法从网络传输的角度,在桌面虚拟化中基于P2P技术[7]提升镜像下载速度,使计算节点采用P2P方式进行镜像下载。在多个计算节点同时下载同一镜像的过程中,不同计算节点会直接连接并交换数据,使镜像服务器不会成为瓶颈。在大规模部署桌面云的环境中,系统效能提升尤为明显。

1 BitTorrent技术原理

BitTorrent[8]是一个基于P2P(Peer to Peer)的文件分发协议,其用途是多用户的文件上传和下载,仅占用文件发布者极少的带宽资源,具有很高的效率[9]。基于BitTorrent协议的下载方式被称为BitTorrent下载,简称“BT下载”。传统的HTTP、FTP下载方式需要在网络中存在一个文件服务器,所有文件下载客户端均需连接到该服务器进行下载,从而增加了文件服务器及其所载网络的负荷,降低网络使用效率,甚至造成网络瘫痪[10]。BT协议与其不同,特点是下载的人越多,下载速度越快,原因在于每个下载者可将已下载的数据提供给其他下载者下载,充分利用了用户的上载带宽。同时,通过一定策略保证上传速度越快,下载速度也越快。

普通的HTTP/FTP下载使用TCP/IP协议,BitTorrent协议是架构于TCP/IP协议之上的一个P2P文件传输协议,处于TCP/IP结构的应用层。BitTorrent协议本身也包含了很多具体的内容协议和扩展协议,并在不断扩充中。

根据BitTorrent协议,文件发布者根据要发布的文件生成一个.torrent文件,即种子文件,简称为“种子”。.torrent文件本质上是文本文件,包含Tracker信息和文件信息两部分[11]。Tracker信息主要是BT下载中需要用到的Tracker服务器地址和针对Tracker服务器的设置;文件信息是根据对目标文件的计算生成的,计算结果根据BitTorrent协议内的B编码规则进行编码。其主要原理是把提供下载的文件虚拟分成大小相等的块,大小一般为2k的n次方(实际硬盘上不会生成每个块文件),并把每个块的索引信息和Hash校验码写入种子文件(.torrent)中。所以,种子文件(.torrent)是被下载文件的“索引”[12]。

在VDI场景中,往往需要从某个镜像批量创建多个虚拟机,而且要求虚拟机分布到多个计算节点上,以满足并发快速启动的需求,这意味着需要完成镜像文件从镜像服务器快速分发到多个计算节点上。由于每个节点都能提供上传服务,所以系统总体服务能力会随着下载节点个数的增加而增加,使系统具有良好的可扩展性[13],这与BT和P2P解决的问题是一致的。

2 系统架构与工作流程

2.1 系统框架

在桌面虚拟化(VDI技术)场景中实现P2P下载,系统架构主要包括以下3个组件:镜像服务、计算节点服务、BT-Tracker服务,如图1所示。

镜像服务:完成镜像文件的保存、做种等功能。

BT-Tracker:維护每个种子文件连接的节点信息,在本文提出的方案中,节点包含镜像服务和计算节点服务。

计算节点服务:创建虚拟机前,通过P2P技术从镜像服务器下载镜像。

镜像服务和计算节点服务通过BT-Tracker连接进行信息交换后,直接连接进行数据交换。

以一个需要从镜像服务分发镜像文件到2个计算节点的场景,描述镜像文件下发的整体过程如下:①镜像服务对镜像文件做种,并对BT-Tracker报告拥有镜像完整文件;②计算节点1、2对BT-Tracker报告,并取回镜像服务拥有完整文件的信息;③计算节点1、2直接连接镜像服务,下载镜像文件;④计算节点1、2在下载过程中,计算节点报告BT-Tracker服务拥有镜像文件的部分内容;⑤计算节点1同时连接镜像服务与计算节点2进行数据交换;⑥计算节点2同时连接镜像服务与计算节点1进行数据交换。

2.2 BT-Tracker模块内部工作流程

BT-Tracker服务为镜像服务与计算节点沟通的纽带,镜像服务和计算节点作为P2P下载中的客户端。在系统刚开始运行时并不知晓对方存在,所有客户端需向BT-tracker报告自己的状态,并获取其它客户端信息。当其它客户端有需要下载的数据时,会直接发起与该客户端的连接,并完成下载操作。

BT-Tracker在收到客户端报告时,如果该客户端报告的状态为非stopped,则会保存该报告信息,并将其返回给客户端,否则会将该信息移除。工作流程如图2所示。

其中生成种子文件的核心伪代码如下:

(1)构建libtorrent文件存储对象:

fs <- lt.file_storage()

(2)将做种的文件加入到文件存储对象中:

lt.add_files fs, image_file

(3)创建libtorrent种子文件对象:

t <- lt.create_torrent fs, trunk_size

(4)对镜像文件分块计算HASH值,并设置到种子文件对象中:

FOR 每个分块设置每块HASH

(5)生成种子文件。通过HASH信息生成种子文件。

2.3 镜像下载工作流程

客户端在进行镜像下载时,会先判断客户端所在节点与镜像服务是否在同一节点,如果是则直接使用文件拷贝,如果不是,则判断是否启用了P2P机制。如果未启用,则使用HTTP方式进行下载,如已启用P2P,则判断种子文件是否存在。如种子不存在,则使用HTTP方式进行下载,否则使用P2P下载。详细流程如图3所示。

下载镜像文件的核心伪代码如下:

(1)构建OEBitTorrent对象:

bt <- OEBitTorrent()

(2)加入种子文件到OEBitTorrent对象,自动开始下载:

torrent_handle <- bt.add_torrent torrent_file_path, save_path, new_file_name, new_tracker_urls

(3)等待下载完成:

WHILE下载未完成

SLEEP 10

(4)从OEBitTorrent中移除种子文件:

bt.remove_torrent(torrent_handle)

3 实验结果与分析

3.1 实验环境设置

实验共使用5台硬件配置相同的服务器,包含1个2.0GHz Xeon E5-2640 CPU,32GB内存,存储设备为1块2 TB SATA硬盘。工作过程完全相同,只是服务器数量不同。镜像存储节点和计算节点通过千兆交换机连接。其中1个节点运行镜像服务和BT-Tracker服务,剩余节点运行计算节点服务。

3.2 实验结果与分析

本文所设置的实验过程描述如下:①分别准备20G和40G的磁盘镜像文件;②使用镜像服务分别对2个镜像文件做种,生成种子文件;③种子文件存放在共享文件系统NFS中,使4个计算节点都能正常访问;④3/4个运行计算节点的服务器同时进行文件下载,分别针对使用HTTP方式和P2P方式下载进行计时,下载完成后记录下载平均时间。在本次实验中,每次都在同样环境中进行3次下载,取平均值。实验结果如表2所示。

由表2可知,使用HTTP下载时,因镜像服务器所在节点网络带宽存在瓶颈,所有节点总下载速度为100.2MB/S左右。节点越多,同样大小的镜像文件下载时间越长。使用P2P下载,当节点数为3时,所有节点总下载速度为180.1MB/S左右;节点数为4时,所有节点的总下载速度为276.3MB/S左右。随着节点数增多,下载速度随之提升,同样镜像大小的文件下载时间会缩短。

综上所述,在计算节点数为3个以上时,P2P技术能有效提升镜像下载速度,并且节点数越多,速度提升表现越明显。这意味着虚拟桌面数量规模越大、计算节点越多,采用P2P技术越能提升镜像下载速度。

4 结语

在桌面虚拟化(VDI技术)系统中,虚拟机镜像分发采用P2P方式,在使多个计算节点同时下载同一镜像过程中,不同计算节点可直接连接并交换数据,从而使镜像服务器不会成为瓶颈,提升了镜像下载速度及桌面创建速度,同时提升了系统整体性能和用户使用体验。实验结果也证实了P2P技术对于多个计算节点同时下载镜像文件时的速度提升较为明显。

参考文献:

[1] 盛雯雯,李家峰.基于桌面虚拟化的多媒体机房设计——桌面虚拟化引导机房建设革命[J].硅谷,2011(18):49,14.

[2] DEBOOSERE L, VANKEIRSBILCK B, SIMONES P, et al. Efficient resource management for virtual desktop cloud computing[J]. The Journal of Supercomputing,2012,62(2):741-767.

[3] 刘圣卓,姜进磊,杨广文.一种用于虚拟集群的镜像按需分发框架[J].计算机工程与应用,2016(2):1-6.

[4] 李紫阳.云环境下虚拟机镜像数据的协作式缓存研究[D].长沙:国防科技大学,2012.

[5] 姜跃.面向桌面虚拟化的分布式镜像存储研究[D].武汉:华中科技大学,2012.

[6] 江云飞,裘杰,徐红仙.虚拟机镜像文件处理方法、装置及系统[P].中国:CN103942292A,2014.

[7] 周文莉,吴晓非.P2P技术综述[J].计算机工程与设计,2006(1):76-79.

[8] BitTorrent.org. Bittorrent[EB/OL].http://www.bittorrent.org.2015.

[9] 孔彬,徐良贤.BitTorrent原理分析及改进[J].计算机工程,2004,30(A1):257-259.

[10] 王玨,周莉.BitTorrent模型原理分析[J].华东交通大学学报,2009(1):82.

[11] 黄江勇.基于非结构化P2P网络的可扩展性研究[D].长沙:湖南大学,2012.

[12] 柳斌,李芝棠.基于访问控制列表的BitTorrent流量控制策略[J].计算机应用与软件,2006(5):19-34.

[13] YANG X Y, GUSTAVO D V. Service capacity of peer to peer networks[C]. Proceedings of the 23rd Conference of the IEEE Computer and Communications Societies,2004:2242-2252.

(责任编辑:黄 健)