APP下载

云计算研究虚拟化技术的研究

2017-05-02苏朋程

计算机技术与发展 2017年4期
关键词:磁盘内核虚拟化

苏朋程

(贵州师范大学 教务处,贵州 贵阳 550025)

云计算研究虚拟化技术的研究

苏朋程

(贵州师范大学 教务处,贵州 贵阳 550025)

虚拟化是云计算的本质核心问题,由于所涉及的技术问题宽泛,从纵向及横向综合进行分析。结合云桌面应用系统实例、网络中间层驱动开发实例、Windows操作系统驱动例子程序FileDisk.c及HttpDisk.c,通过分析操作系统内核,研究云计算原理、体系结构,以及云计算实现的技术基础,从硬件的虚拟化、系统的虚拟化两个方面展开研究,并在此基础上结合驱动技术调用操作系统内核接口实现部分操作系统内核功能。采用网络中间驱动技术实现了虚拟网卡,同时结合其他云计算系统的应用及对其维护经验,分析了云计算虚拟技术底层有关问题及解决办法,得出云计算虚拟化技术设计及实现的分层结构、调用操作系统内核接口可解决系统蓝屏并提高实时响应效率的结论。实例应用表明,云计算的体系结构的构建及实现是基于软件、硬件及系统虚拟化的。

云计算;虚拟技术;内核;网络中间层驱动技术

0 引 言

云计算是继分布式计算、并行计算、网格计算等发展而来的一个新计算模式,具有分布式及并行处理等优点,同时还具备负载均衡、资源共享、便于维护等特点。基于这些优点及特点,近年来,云计算越来越受到学术界及IT行业的重视,相关技术日益成熟并实现产品商业化,云计算产品已投入到教育、医疗、交通等行业。随着云计算产品投入实际应用范围的增多,出现

了硬件兼容、虚拟设备的稳定性及可靠性问题,客户机电脑系统蓝屏、物理设备与虚拟设备的实时响应问题。要解决这些问题,需要从云计算虚拟底层技术进行分析,因为云计算系统只是提供了应用层面的功能及操作,虚拟技术屏蔽了应用层与硬件之间的驱动工作机理,给用户提供了各种虚拟应用。一般说来,云计算体系结构分为三层[1]:应用层、平台层和基础设施层。基础设施层即要研究的“虚拟技术底层”,该层经过虚拟化的硬件资源和相关管理功能的集合,实现了内部流程自动化和资源管理优化,从而向上层应用提供动态、灵活的基础设施层服务[2]。文献[3]采用虚拟机管理层、功能层、逻辑层、调度层、GUI层等七层结构研究了虚拟化条件下云平台故障排除问题。通过大量文献,并结合高校的云计算工程实例,以及作者所实现的虚拟网络接口卡等例程,分析总结了云计算的核心技术——虚拟化技术。

1 云计算虚拟技术框架

虚拟化概念及技术起源于20世纪50年代,20世纪60年代,IBM360系统首次采用了虚拟化平台Hypervisor。国外有以IBM、VMare、Xen/Citrix和Microsoft为代表的虚拟化业界的四大厂商,国内有联想、华为等公司使用自己的源代码开发出了虚拟化产品,他们提供了成熟、多方位、广泛的虚拟化产品,实现了从服务器、存储、网络到桌面、虚拟应用,甚至数据中心的虚拟化。

云计算模式的虚拟化,从宏观层面可以分为系统虚拟化、网络虚拟化、服务器虚拟化、虚拟机等等;从微观层面可分为CPU、内存、磁盘、网卡、I/O设备的虚拟化。根据虚拟技术底层开发的过程来看,宏观层面的虚拟化是建立在对计算机相关设备虚拟化的基础上的。云计算体系结构分为三层,因此,虚拟技术框架可以对应分为三层,从底层向上分别为:基础设施层、硬件虚拟层、应用虚拟层。基础设施层为硬件虚拟层、应用虚拟层提供基础设施保障,实现硬件设备在操作系统内核的无缝绑定与释放;硬件虚拟层实现对硬件设备的虚拟化,向下提供接口调用操作系统内核功能,向上提供接口与应用软件实现应用虚拟化;应用虚拟层,即应用系统的虚拟化,在基础设施层、硬件虚拟层的支持下,结合应用软件、网络通信,应用得以实现虚拟化,如虚拟桌面。

云计算虚拟技术所实现的硬件、操作系统多样化,因此,有关公司、学术机构采用的具体实现技术也不完全一样,但它们有一个共同点,那就是离不开对物理设备的虚拟化、调用已有操作系统内核功能[4]。例如虚拟化存储,袁东风等研究了基于KVM的B/S架构虚拟化[5],实现对磁盘的虚拟化,如新建和删除虚拟磁盘,并将虚拟磁盘名作为参数传递给Web服务器。KVM全称为Kernel-based Virtual Machine,由此可看出虚拟技术离不开对操作系统内核功能的调用。对于操作系统内核功能的调用,Windows操作系统提供了文件驱动开发包用于实现对磁盘文件的虚拟化开发,可虚拟出新的文件磁盘盘符;微软公司提供的NDIS网络驱动开发包,用于实现网络协议、将网络设备虚拟化,笔者采用NDIS网络中间层驱动技术,实现了对RJ45接口类型网络接口卡的虚拟化。

2 设备虚拟化

2.1 网络接口卡虚拟化

网络接口卡虚拟化要完成两个主要功能,一是需要绑定物理设备,即绑定物理网络接口卡,通过网络中间驱动层的协议接口实现对物理网络接口卡的控制,即对物理网络接口卡收发的网络数据进行数据成帧处理,控制通过它的网络数据出或入;二是要通过网络中间层驱动提供的微端口向上一层协议层(TCP/IP协议)提供微端口,即虚拟的网络接口卡,实现对物理网络数据包的重新封装,可以实现对网络数据的加解密等功能,通过重写微软提供的中间层驱动程序passthru.c源程序里的receive()和send()函数实现。这样,网络中间层驱动程序就实现了网络接口卡虚拟化,安装好驱动程序后,在电脑控制面板的网络适配器的属性处可看见新增了一个跟物理网络接口卡一模一样的图标,这就是虚拟网卡。虚拟网卡的名称是通过安装驱动程序的inf安装文件里“设备名称”指定的。

物理网卡、虚拟网卡、应用程序接口关系结构图如图1所示。

图1 物理网卡、虚拟网卡、应用程序接口关系结构图

文中采用微软公司提供的DDK(Driver Development Kit)开发出了虚拟网卡驱动程序Passthru.sys,实验对象为Windows XP操作系统,实验结果见图2。

2.2 虚拟机内存

虚拟机内存可以理解成虚拟内存,是虚拟机使用的内存。虚拟内存是通过驱动技术对操作系统所使用的物理内存将部分除外的空闲部分绑定后返回给用户的又一个虚拟设备,即虚拟机内存。在虚拟机里,它和物理机系统一样是独立的线性连续可寻址的存储单元,具有独自的虚拟机内存地址,与物理内存地址存在映射对应关系。驱动程序实现物理内存与虚拟机内存的映射转换。在此基础上[6],虚拟机Xen使用影子页表实现对虚拟内存与物理内存的映射转换[7],实现用户虚拟内存、虚拟机内存、物理内存三者之间的相互映射转换,具体分析如下。

图2 虚拟网卡实验安装结果图

硬件抽象层中的虚拟机系统存在三个层次内存概念:一是用户虚拟内存,虚拟机系统运行的服务、进程所访问的内存,即用户应用程序在虚拟机系统运行时所使用的内存[8];二是虚拟机实时内存,即虚拟机运行环境的物理内存;三是物理内存,即物理主机的内存。三者之间的映射关系如图3所示。

图3 虚拟机系统的内存映射关系图

因此,云计算虚拟技术的内存调度是两级调度,从用户的角度自上而下为:第一级,用户应用程序所使用内存到虚拟机实时内存的调度;第二级,虚拟机内存调度物理内存。在第二级的内存调度方面,主要是通过内核驱动技术在底层实现对物理内存的绑定、创建、使用自旋锁对某段地址空间的内存独占使用,使用完毕释放该自旋锁以达到释放虚拟机系统所独占内存。在第一级,可以通过API接口实现用户程序对虚拟机内存的申请使用、释放。目前,内存的底层分配问题得到了解决,而且在虚拟机之间对何时分配内存、如何分配等问题也有大量研究。文献[6]研究了虚拟机之间的内存调度算法,通过逻辑地址空间和全局扩展地址空闲空间构成,以提高内存资源利用率。虚拟机内存与物理内存之间是一一映射的关系,而且虚拟机内存与物理内存之间是无地址冲突的。

2.3 磁盘文件虚拟化

从物理磁盘文件到虚拟机文件系统的映射,可通过三层映射转换实现寻址读写功能[6]。磁盘文件虚拟化,与网络驱动开发类似,微软提供了文件系统驱动开发包IFS DDK,并提供了相关例程filedisk.c、httpdisk.c。文件系统可分为本地文件系统、网络文件系统,filedisk.c用于开发本地文件系统,httpdisk.c用于开发网络文件系统,用户可以根据实际需要在这两个源程序文件的相关函数中添加特定功能的源代码,实现虚拟文件系统,以及对文件的加解密等功能。在上述两个源程序文件中,可实现文件系统的操作有:磁盘文件创建、磁盘文件加载、磁盘文件的控制(打开、读写)、磁盘文件的卸载。与本地文件系统不同的是,网络文件系统创建了远程磁盘设备对象,具体实现技术方面增加了网络套接字的链接及断开,远程磁盘存储空间的创建、读写、释放等功能。本地文件系统、网络文件系统在底层技术方面,都采用了IRP实现对物理磁盘的绑定后向用户提供一个虚拟的磁盘设备,并且需要解决对共享存储空间的独占及共享问题。无论是微软所提供的DDK开发工具,还是开源文件系统OpenStack、Hadoop、Linux工具,都不可避免调用操作系统的内核接口[7]。

2.4 指令集虚拟化

指令集虚拟化对于大家来说并不陌生,Java虚拟机之所以能跨操作系统运行,是因为Java虚拟机运行时执行其指令,将Java源程序解释成字节码,这些字节码经过浏览器这一应用程序解释成目标代码后运行。虚拟服务器、微软虚拟机的运行同样也执行虚拟指令,虚拟指令集是将各种处理器的指令翻译为虚拟指令,是对原处理器指令的重新构建。虚拟指令可屏蔽不同型号CPU处理器指令之间的差异,该项功能正是云计算架构在不同的硬件设备、不同系统、不同平台上的底层技术基础及优点。

2.5 其他设备虚拟化

其他设备的虚拟化包括CPU、光驱等设备的虚拟化。虚拟光驱的应用已历经多年,如以VMare公司推出的虚拟光驱为代表,应用于多操作系统的安装等。CPU虚拟化主要应用在云计算服务器上,根据云端应用数量的多少动态分配CPU资源,在虚拟系统软件及硬件的支持下,CPU可虚拟出2n指数级的数量,但实际应用环境中其数量有限,必须根据实际需求进行分配。CPU的虚拟化需要电脑主板硬件支持,否则不可实现。

3 系统及应用虚拟化

系统及应用虚拟化是虚拟技术在宏观层面的实现结果,是在上述设备、磁盘文件等虚拟化实现的基础之上,如虚拟机、虚拟服务器。虚拟机是一套完整的计算机软硬件虚拟系统,包括操作系统、内存、CPU、硬盘等软硬件。虚拟计算机概念最早由IBM公司在二十世纪六七十年代提出。虚拟化技术通过在现有硬件平台上增加一层虚拟机监控器(VirtualMachineMonitor,VMM)软件来实现对系统的虚拟化[8-11]。应用虚拟化在教育行业中的方式之一是虚拟云桌面,如广州杰赛科技的云桌面系统。该系统采用KVM架构,其核心是建立在Linux内核基础上的虚拟机,虚拟桌面以模板的方式建立并保存在云服务器上,教师可根据不同的教学需求安装不同的教学软件后保存为新的模板。采用基于KVM架构的虚拟云桌面的优点是:系统安全稳定,病毒感染减少,便于教学软硬件的集中维护,节省硬件及人力资源投入。

4 云计算技术虚拟技术底层关键问题分类及解决办法

4.1 稳定性及可靠性问题

由于虚拟设备、虚拟系统是建立在硬件设备、操作系统基础之上,在技术实现方面需要绑定物理设备,而且同时要调用操作系统中断、内存资源等,因此不可避免地与操作系统因抢占中断资源、内存读写而发生冲突,表现为电脑蓝屏、死机。要解决此类问题,必须在底层(操作系统内核)绑定硬件设备,可以采用操作系统开发公司提供的驱动开发工具、开发平台进行设备虚拟化、应用虚拟化。

4.2 物理设备与虚拟设备实时响应问题

虚拟设备有本地虚拟设备、远程虚拟设备之分,远程虚拟设备是远程服务器上为用户定制的虚拟桌面上显示的设备,容易将本地虚拟设备与远程虚拟设备混淆。虚拟设备的响应速度远比不上实际硬件设备,虚拟设备是通过程序在功能上模拟实现硬件设备的功能,对于如虚拟桌面这样的应用来说,其桌面上显示的如扬声器等设备,即使用鼠标调整其音量大小,也会出现用于其绑定的硬件设备位于远端网络中心机房而在本地无法听见声音效果等现象。此外,对虚拟桌面的应用软件实时响应问题,特别是图形、视频类教学软件,这些软件对服务器的CPU主频、内存、网络带宽都有较高要求,因此会导致教学出现实时性差、网络延迟等问题。可以利用从服务器方面增加如内存、更换更高主频的CPU,在网络方面通过端口汇聚以增加网络交换机的背板带宽、增加校园骨干网到楼的光纤数量及其带宽等方式予以解决。针对应用于教育行业的虚拟桌面VDI系统,在学生客户机运行Photoshop、3Dmax等图形教学软件,以解决虚拟服务器的瓶颈问题,在硬件方面国内外推出了GPU,提高了网络通信及图形处理速度及效率[12]。

4.3 系统蓝屏问题

系统蓝屏问题比较复杂,有操作系统本身的原因,也有软硬件兼容的原因,实际问题应具体分析。

(1)中断请求冲突。根据系统蓝屏的提示信息,知道其主要原因是硬件对于中断请求入口地址与系统的中断请求入口地址相冲突(操作系统启动时出现蓝屏,提示信息中有地址访问冲突,冲突地址为0x0000**),可修改硬件设备的中断请求的入口地址。

(2)硬件未通过微软公司的认证。对于该问题,在安装硬件驱动程序时,如果此硬件设备驱动未通过微软公司的认证,系统会给出提示消息,解决办法就是获得微软公司的认证通过。虚拟化涉及硬件、软操作系统,因此,在中断请求、内存的申请使用[13]、CPU及系统时间片的使用方面[14],如果处理不当,将会导致系统蓝屏。

(3)目标内存、磁盘被其他程序锁定使用,当虚拟化软件访问该内存、磁盘时会导致蓝屏。在实际使用虚拟云桌面的过程中,不可避免会遇到蓝屏情况,解决办法是:

①对于Windows系统,修改IRP结构的指向相应设备对象(device object)的指针,修改为指向其他地址空间的内存或空闲磁盘;

②增加I/O通道数量,避免虚拟化与操作系统争用I/O中断而导致蓝屏,此方案是笔者所在学校建设云实验室使用华为技术有限公司的云计算应用系统技术的解决方案;

③对于如Linux等开源工具,可重写操作系统内核程序、云系统软件并编译替换之。

5 结束语

近年来,云计算产品层出不穷,应用广泛。云计算可在已有软硬件资源上实施整合实现,高效地利用现存的软硬件资源,涉及存储、数据处理、计算、网络通信等领域,在底层技术实现方面则必须无缝地与硬件绑定和释放,同时在内核层必须与操作系统协调地调配软硬件资源,在应用层如何高效地与应用软件实时动态交互,做到稳定、安全可靠、高效是云计算的重点研究课题,虚拟技术底层问题是其核心重点。随着技术的日趋完善,云计算与大数据将完美地结合在一起,其产品将广泛地应用到人们的工作、学习、商贸、生活及娱乐等领域。其中,最核心的仍然是虚拟化技术,虚拟化的对象及内容也越来越多,相关技术将统一标准化,虚拟化所支持的应用系统也日趋稳定完善。通过调查大量文献,在总结已有研究成果的基础上,结合高校云计算系统实际工程的建设及维护工程,使人们对云计算系统及其核心技术有一个系统本质的认识,在开发云计算应用工程或维护工作中有一个重点把握方向。

[1] 汪 恺,张功萱,周秀敏.基于容器虚拟化技术研究[J].计算机技术与发展,2015,25(8):138-141.

[2] Chapman M, Magenheimer D J, Ranganathan P. MagiXen:combining binary translation and virtualization[R].[s.l.]:[s.n.],2007.

[3] 崔竞松,路昊宇,郭 迟,等.基于事件驱动机制的虚拟化故障检测恢复系统[J].计算机工程,2015,41(2):7-11.

[4] Smith E, Nair R. The architecture of virtual machines[J].Computer,2005,38(5):32-38.

[5] 党 飞,江铭炎,袁东风.基于KVM的B/S架构虚拟化管理系统[J].计算机工程与设计,2013,34(6):2252-2256.

[6] 蔡志强,丁丽萍,贺也平.一种基于虚拟机的动态内存泄露检测方法[J].计算机应用与软件,2012,29(9):10-13.

[7] Devine S W,Bugnion E,Rosenblum M.Virtualization system including a virtual machine monitor for a compute with a segmented architecture:US,6397242 B1[P].2002-05-28.

[8] King S T,Dunlap G W,Chen P M.Debugging operating systems with time-traveling virtual machine[C]//Proc of the 2005 USENIX annual technical conference.[s.l.]:USENIX,2005:1-15.

[9] 李雪竹,陈国龙.云计算虚拟化平台的内存资源全局优化研究[J].计算机工程,2015,41(7):55-59.

[10]Intelvirtualization technology: hardware support for efficient processor virtualization[S].[s.l.]:[s.n.],2006.

[11] 鲁志军,祖立军.云计算虚拟化环境下开源镜像对比分析[J].计算机应用与软件,2015,32(8):84-87.

[12] 张玉洁,吕相文,张云洲.GPU虚拟化环境下的数据通信策略研究[J].计算机技术与发展,2015,25(8):24-28.

[13] 赵少卡,李立耀,凌 晓,等.基于OpenStack的清华云平台构建与调度方案设计[J].计算机应用,2013,33(12):3335-3338.

[14] 王 凯,侯紫峰.Xen虚拟CPU空闲调度算法[J].计算机研究与发展,2013,50(11):2429-2435.

Investigation on Cloud Computing for Virtualization Technology

SU Peng-cheng

(Department of Teaching,Guizhou Normal University,Guiyang 550025,China)

Virtualization is the essential core of the cloud computing.Because the technical issues involved are broad,analysis with the vertical and horizontal integration point of view have been conducted.Some cases and examples have been investigated,such as cloud desktop application system which is used in colleges and universities,NDIS programming cases,and windows operating system driver programming cases both FileDisk.c and HttpDisk.c.The research processing has been carried on two factors,one of which is virtualization of hardware,the other is virtualization of system,and in the research processing,several factors are to be considered,such as the kernel operating system,the theory of cloud computing and structure,and the implementation techniques of cloud computing.Based on analyzing these programming cases and examples,the bottom technologies concerned with cloud computing and virtualization problems have been resolved.Experimental results show that to design and implement cloud computing and virtualization are based on layered structure system,also based on invoking operation system kernel interface,not only Blue Screen of Death can be solved but also computing and virtualization system efficiency can be promoted in this way.Results of practical application show that the architecture and implementation of cloud computing architecture is based on software,hardware and system virtualization.

cloud computing;virtualization technology;kernel;intermediate NDIS drivers technology

2016-04-25

2016-08-17

时间:2017-03-07

贵州省科技计划基金项目(黔科合J字[2011]2216)

苏朋程(1976-),男,硕士,高级实验师,研究方向为大数据、云计算。

http://kns.cnki.net/kcms/detail/61.1450.TP.20170307.0920.008.html

TP316

A

1673-629X(2017)04-0029-05

10.3969/j.issn.1673-629X.2017.04.007

猜你喜欢

磁盘内核虚拟化
多内核操作系统综述①
强化『高新』内核 打造农业『硅谷』
活化非遗文化 承启设计内核
它的好 它的坏 详解动态磁盘
创建虚拟机磁盘方式的选择
解决Windows磁盘签名冲突
微软发布新Edge浏览器预览版下载换装Chrome内核
基于OpenStack虚拟化网络管理平台的设计与实现
对基于Docker的虚拟化技术的几点探讨
Windows系统下动态磁盘卷的分析与研究