论文总字数:26906字
摘 要
服务器虚拟化已经是简化数据中心管理、提高资源利用效率和服务可靠性的重要工具。现代虚拟机管理器可以在单个物理服务器上运行大量虚拟机,将多个正在使用的服务器集成到一个物理机器中,同时也会在各虚拟机实例间维持故障和资源相互隔绝的特性。
各种各样的管理接口使得开发者创建能够支持任意虚拟化环境的虚拟化管理方案变得十分困难。Libvirt库是目前为止应用非常广泛的能够对较多商用和开源虚拟机提供管理程序接口开源管理库。本文使用libvirt管理库,以其作为虚拟机管理的中间层,在Linux环境下实现对QEMU-KVM虚拟机监控器的资源使用情况监控,包括CPU使用率、内存使用情况等数据;同时使用php网络编程框架,实现了基于Web的可视化界面。本文也会对在Xen虚拟机监控器上进行资源使用监测进行讨论。
关键词:虚拟化,libvirt,QEMU-KVM,Xen,云计算
IMPLEMENTATION OF RESOURCE USAGE MONITOR MODULE FOR VIRTUAL MACHINE
Abstract
Server virtualization has proven to be a valuable tool to simplify data center management and to increase resource efficiency as well as service reliability. The ability of modern virtual machine managers to run a huge number of virtual machines on a single physical server enables the consolidation of multiple under-utilized physical servers inside a single one, while keeping the property of failure and resource isolation between the virtual machine instances[1].
The different management APIs make it very difficult for developers to build virtualization management solutions, which are able to support arbitrary virtualization environments. By now libvirt is an open source management library, widely utilized to provide API for many commercial and open source virtual machine monitors. It is used in this thesis to implement resource usage monitor module for QEMU-KVM virtual machine monitor under Linux circumstance, including monitoring CPU and memory usages, etc. Also the thesis will discuss monitoring resource usage in Xen.
KEY WORDS: virtualization, libvirt, QEMU-KVM, Xen, cloud computing
目 录
虚拟环境下资源可视化模块的设计与实现 I
摘 要 I
Abstract II
第一章 绪 论 1
1.1 引言 1
1.2 虚拟化技术发展现状 2
1.2.1 KVM 3
1.2.2 Xen 4
1.3 虚拟机监测常用方法 6
1.3.1 使用CIM进行虚拟机监测 6
1.3.2 使用libvirt建立抽象层 7
1.4 本文研究目的和研究内容 9
1.5 本文组织结构 9
第二章 资源可视化模块设计思路 11
2.1 基于libvirt库的管理工具 11
2.1.1 Virt-manager 12
2.1.2 virsh 12
2.1.3 其他基于libvirt的虚拟机管理工具 14
2.2 使用libvirt构建资源可视化模块 14
2.3 模块工作流程 16
2.4 模块设计特色 16
2.5 本章小结 17
第三章 资源可视化模块实现技术研究 18
3.1 libvirt管理库接口介绍 18
3.2 资源可视化模块主要实现方式 18
3.3 本章小结 24
第四章 资源可视化模块测试分析 25
4.1 测试环境 25
4.1.1 硬件环境 25
4.1.2 软件和操作系统环境 25
4.2 功能测试 26
4.2.1 资源可视化模块功能测试 26
4.2.2 virt-manager使用示例 27
4.3 本章小结 28
第五章 工作总结与展望 29
致谢 31
参考文献(References) 33
绪 论
本章首先介绍了云计算和虚拟化技术的研究背景,特别是虚拟化的意义和主要研究内容,概述了当前比较流行的几种虚拟机管理系统,列举了现有的几种虚拟机管理解决方案。最后指出本文的研究重点与组织结构。
引言
大数据时代的到来,使得我们对计算能力的需求远远超出自身IT 架构的计算能力,需要不断加大系统硬件投入来实现系统的可扩展性。同时,由于传统并行编程模型应用的局限性,客观上要求一种容易学习、使用、部署的新的并行编程框架。在这种情况下,为了节省成本和实现系统的可扩放性,云计算的概念被提了出来。云计算是分布式计算、并行处理和网格计算的进一步发展,它是基于互联网的计算,能够向各种互联网应用提供硬件服务、基础架构服务、平台服务、软件服务、存储服务的系统。
在云计算环境下,网络由传送信息数据到直接传送服务。数据中心作为企业构建私有云的硬件平台或者公有云的骨干资源,运行其上的网络服务更加多样化、复杂化,在性能、可靠性和可管理性上的要求越来越细化,这就需要新的设计理念和运行机制的支持,特别是作为信息传输的基础部分——网络层的数据转发和管理机制需要重新设计以满足越来越复杂和多样的数据流传输需求。
虚拟机技术的发展已有四十多年的历史了,但是在很长一段时间内并没有引起大多数研究人员的重视,发展长期处于停滞状态。直到最近几年,全球服务器数量激增,对服务器整合、服务质量、按需服务和系统安全等各方面的需求日益突出,而虚拟机这个原本运用于大型机的技术,却可以从多个方面满足这些需求,于是重新得到了人们的普遍重视,广泛运用于服务器的研制,取得了较快速度的发展。虚拟化技术的发展,特别是服务器虚拟化成为了简化数据中心管理、提高资源利用效率和服务可靠性的重要工具。现代虚拟机管理器可以在单个物理服务器上运行大量虚拟机,将多个正在使用的服务器集成到一个物理机器中,同时也会在各虚拟机实例间维持故障和资源相互隔绝的特性。虚拟化技术更简化了故障处理,各虚拟机可以在经历硬件故障后在不同物理机上重启,即达到处理故障的效果。负载均衡由很多特性支持,例如热迁移,它将把一个逻辑设备在不同物理设备上迁移的时间降到了毫秒级,对很多应用并不会有明显的影响。
图 1 ‑1 虚拟机体系结构示意图
并行运行虚拟机很大的简化了许多管理任务。这样的简化不仅促使管理员,同时促使很多端用户在一台机器里集成成百上千个虚拟机。不过,像这样虚拟机数量的爆炸式增长由带来了新问题:最显著的问题便是虚拟机的物理位置问题,虚拟机在何地运行,以及运行的虚拟机的名称和类别。如果没有一个虚拟机管理方案来解决这些问题,很快便会导致在物理故障时要经历长期的人工恢复阶段,失去使用虚拟化技术本应有的好处。如今,虚拟机管理仍然是现在数据中心管理最重要的问题之一,不同虚拟化实现方案有着显著的管理理念和对应接口的差异。开源管理解决方案的发展经常受限于市场驱动,市场存在着各种各样或开源或商业化的虚拟机管理系统。对大部分虚拟机进行支持需要为种类繁多的虚拟机提供管理接口。
虚拟化技术发展现状
虚拟化技术最早由IBM提出,出现在20世纪60年代的IBM大型机系统,在70年代的System 370 系列中逐渐流行起来[2]。这些机器通过一种叫虚拟机监控器的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机实例。随着近年多核系统、集群、网格甚至云计算的广泛部署,虚拟化技术在商业应用上的优势日益体现,不仅降低了IT 成本,而且还增强了系统安全性和可靠性;不仅提供操作系统之间的逻辑去耦和底层硬件,也在服务器整合和共享托管上受到用户的青睐。在虚拟化系统中,被称为虚拟机监控器(virtual machine monitor或Hypervisor)的软件负责监测虚拟机底层硬件的资源使用和并发执行的虚拟机的运行状态。
通过模拟物理资源和各平台应用程序接口(API),虚拟机监控器能够在其中并行运行多个虚拟机。虚拟机对于硬件和操作系统的不同需求引发了很多不同的虚拟化途径和方案,如全虚拟化,半虚拟化,硬件辅助虚拟化等。全虚拟化向端操作系统提供了硬件接口的完全仿真,使用二进制翻译的方法在虚拟机监视器上层运行任意未被改动的操作系统如KVM[3],QEMU[4,5]和VMware[6];半虚拟化仅对端操作系统提供了类似但和底层硬件不完全相同的抽象虚拟机,因此操作系统在被导入至虚拟机之前需要做改动,像Xen[7],Denali[8]和User Mode Linux(UML)[9]均采用了此类方法;硬件辅助虚拟化改进了传统x86平台不支持虚拟化的缺陷,通过扩展此类处理器的架构,使用CPU用户态到内核态的转化来处理敏感指令,如英特尔的Vanderpool技术和AMD的Pacifica。本章主要介绍两款开源虚拟机监控器——KVM和Xen。
- KVM
KVM(Kernel-based Virtual Machine)[3]是一款全虚拟化的虚拟机监控器,其平台需要CPU对虚拟化的支持,它由位于以色列的Qumranet开发和赞助。作为加入到Linux内核的一项驱动,KVM具有标准Linux内核拥有的所有优点。现在KVM正在朝半虚拟化方向发展。
KVM通过向Linux的传统内核和用户态增加一个新的进程态称为访客模式[10]实现了虚拟化功能,该模式有自己的内核态和用户态,并对端操作系统的所有程序执行进行应答。KVM包含两部分:内核模块和用户空间。内核模块(即kvm.ko)作为设备驱动器,呈现管理虚拟硬件的能力,并通过一个文件/dev/kvm看到内存的虚拟化。在/dev/kvm中,每一个虚拟机会在初始化时由Linux调度器分配自己的内存空间。为虚拟机分配的虚拟内存其实是为该虚拟机内部运行的进程分配的内存。KVM利用kill命令和/dev/kvm可以方便的管理端操作系统;用户空间用来实现I/O操作虚拟化,通过使用一个设备驱动器来模拟I/O操作,当发生一些事务,如在以太网内传递包时也会触发真正的I/O 操作。KVM也为用户空间捕捉端系统的中断提供了相关机制。实际上,用户空间是一个稍被修改过的QEMU,QEMU是一个平台式的虚拟化方案,虚拟包括硬盘、图像调试期和网络设备等完整PC环境。KVM中所有端系统的I/O 请求都是在用户空间中由QEMU仿真生成的I/O硬件处理的[11]。例如,在网络相关应用中,QEMU一方面会向虚拟机提供仿真网卡,另一方面与宿主系统内的tun-tap进行交互,该设备通过一个软件桥梁与主机的物理网卡相连。所以通常我们都会用QEMU-KVM来指代KVM(本文中QEMU-KVM与KVM同义)。
图1-2是一个涉及到网络相关应用的典型KVM架构。网络数据包按照以下方式流经KVM虚拟机:当数据包到达物理网卡后,网卡向主机请求中断,物理设备驱动处理终端并将数据包发送至软件桥;软件桥把包传递到目标虚拟机的tap装置上,该tap是一个虚拟网络设备,能够向KVM发送请求信号。KVM收到信号后向目标虚拟机用户空间的QEMU发送中断,QEMU从tap上复制数据包,并向端系统的虚拟网卡发送中断。最后,端系统里的物理设备驱动将数据包送到虚拟机地址空间。
图 1‑2 KVM结构示意图[12]
综上所述,对于在KVM中运行的虚拟机,访客模式的运行(内核和用户态)对应着虚拟机的运行,其他的模块,包括用户态的QEMU和内核态的KVM内核,tun-tap以及桥接对应着监控器的运行。在这些模块中,QEMU的I/O模块独立于各虚拟机运行,由一个KVM模块进行统一调度,通过信号和虚拟化中断管理虚拟机。不难理解,当宿主机上同时运行多个虚拟机时,KVM便会出现潜在的性能瓶颈。
- Xen
Xen是一个最初由剑桥大学开发的基于x86平台的开源虚拟机监控器[13]。正如之前所说,Xen采用了半虚拟化解决方案,宿主系统需要显式的被移植到虚拟机接口中,以便于数个虚拟机能够在一台主机上运行,达到高性能虚拟化(较少的效能损失,典型的情况下大约损失2%,在最糟的情况下会有8%的效能耗损;与其它使用完全的虚拟化却造成最高到20%损耗的其他解决方案形成一个明显的对比)。Xen不需要修改应用二进制接口,因此现有的应用可以直接使用,无需修改。随着硬件对虚拟化的支持,Xen也逐渐实现了全虚拟化[10]。
图1-3展示了Xen虚拟机监控器的结构[14],它由两部分构成:监控器程序和驱动域。监控器负责在底层硬件和各虚拟机内的端系统间提供抽象层,该层可以进行CPU调度和内存分配,同时可以访问真正的I/O设备,其他客体域不能直接访问。因此,所有虚拟机的I/O操作都必须经过驱动域。
剩余内容已隐藏,请支付后下载全文,论文总字数:26906字
相关图片展示:
该课题毕业论文、开题报告、外文翻译、程序设计、图纸设计等资料可联系客服协助查找;