摘 要:随着计算机网络应用的增多,其对企业中的数据中心提出了更高的要求。在数据中心服务器配置越来越高的工作环境中,其资源利用率却没有得到实质性的提高。本文探讨了虚拟化技术目前概要,如虚拟化技术的发展、虚拟技术的定义、虚拟技术的作用及分类等,进一步探讨了实现服务器虚拟化的核心技术,如Hypervisor的定义及功能和分类;还探讨了常用服务器虚拟化技术介绍、服务器虚拟化技术的选择。
关键词:虚拟化;服务器;虚拟机;云计算
中图分类号:TP391.9 文献标识码:A 文章编号:2096-4706(2019)12-0093-03
Abstract:With the increase of computer network applications,higher requirements are placed on data centers in enterprises. In the work environment where the data center server configuration is getting higher and higher,the resource utilization has not been substantially improved. This paper discusses the current outline of virtualization technology,such as the development of virtualization technology,the definition of virtualization technology,the role and classification of virtualization technology,and further explores the core technology of server virtualization,such as the definition and function and classification of Hypervisor,and also discusses the introduction of commonly used server virtualization technology and the choice of server virtualization technology.
Keywords:virtualization;server;virtual machine;cloud computing
0 引 言
现代信息技术的发展,极大地扩展了计算机网络的应用范围,不仅网上共享资源越来越多,网络使用者人数也逐年递增。服务器作为网络资源的集散地,负责将各种信息服务通过网络传递给客户机。因此为了使客户机能够得到快速而稳定的服务,服务器的整体性能、日常管理和维护工作就显得尤为重要。
企业数据中心在提供网络服务过程中,经常出现由于负载过重而导致服务器卡死故障,经过故障分析,在判定故障为服务器性能瓶颈问题时,采用的解决方案大多是对现有服务器进行硬件方面的升级换代。在选择相关服务器硬件参数时大多是按照网络访问的峰值流量进行配置的,但在实际使用过程中,服务器所提供的资源并没有得到充分的利用。据相关数据统计,目前服务器的利用率平均在15%左右。那么我们如何才能在不提高硬件成本的基础上,充分利用好现有的服务器资源,更好地为客户端提供优质的服务呢?这就要用到服务器虚拟化技术。
1 虚拟化技术概述
1.1 虚拟化技术的发展
虚拟化概念最早出现在20世纪60年代,由于当时大型机的硬件价格比较昂贵,研究虚拟化技术的初衷是为了对其进行分区。随着硬件成本的逐渐降低以及多用户操作系统的出现,计算机在进行资源分配和处理时,有了更加经济有效的方法。到20世纪80年代,虚拟化技术应用就没有那么广泛了。然而到了20世纪90年代,在计算机网络应用中出现了新的问题,如随着计算机硬件的更新换代而导致廉价硬件增多、高性能硬件资源空间利用率不高,服务器管理维护成本增加等问题。为了解决相关问题,研究人员开始对虚拟化技术进行了全新的探索。如今,运行在X86架构上的虚拟化技术,已成为企业应用的主流。
1.2 虚拟技术的定义
在计算机中,虚拟化实质上就是把磁盘、内存、I/O等物理资源加以抽象,转换为一种统一的逻辑资源并加以呈现的资源管理技术。它可以将系统中所有可以利用的资源以一个整体的形式提供给所有用户共同使用,打破了以往实体结构不可分割的障碍,也解除了地理位置不同、资源架设方式不同的限制。利用虚拟化技术在提高系统资源利用率的同时,可以为用户提供更优质的服务。
1.3 虚拟技术的作用及分类
首先,虚拟化技术能够对廉价的物理硬件进行重组利用。其次,虚拟化技术能够使物理层硬件对虚拟机客户不可见,从而更大程序上发挥物理硬件的功能。再次,各类资源的逻辑抽象和统一表示也离不开虚拟化技术。
虚拟化技术通过对物理资源的逻辑化表示,实现了对资源的统一管理和调度。在实际应用中能够实现资源的按需分配,使各类资源都得到充分的利用,解决了以往因缺乏资源而导致的网络应用服务性能下降的问题。运用虚拟化技术可以实现虚拟机的创建和动态迁移,提供了系统的容错性。当网络服务出现故障时,很容易就可以完成灾难恢复。虚拟化技术对云计算机的实现提供了很大的支持,它使得网络上的计算、存储、应用和服务都以资源的形式得以呈现,并可以根据用户的需求进行动态扩展,因此虚拟化技术也被视为云计算中的核心技术。
虚拟化技术包括服务器虚拟化、网络虚拟化和存储虚拟化等。其中服务器虚拟化是我们最常用的一种虚拟化技术。
2 实现服务器虚拟化的核心技术
2.1 Hypervisor的定义及功能
Hypervisor也叫虚拟机监视器,它是一个运行在服务器物理硬件和传统意义上操作系统之间的软件层。利用Hypervisor可以实现多个操作系统共享一组物理硬件,即所有虚拟机都可以利用它来对物理机的硬件进行访问控制。在进行服务器虚拟化时,利用Hypervisor来为虚拟机模拟分配各种硬件环境并加载所有的虚拟机操作系统。Hypervisor作为虚拟化技术的核心,其基本功能是非中断地支持多工作负载迁移。
2.2 Hypervisor的分类
Hypervisor可以划分为两大类:类型一和类型二。
类型一虚拟机监控程序运行在裸机上,系统主机加电后就被加载运行。被创建的虚拟机中运行着不同的操作系统。这一类虚拟机监控程序运行在最底层的软件层,需要完成原来由操作系统完成的如系统初始化、系统资源管理等任务。它会创建一个具有特殊功能的虚拟机,由这台虚拟机来运行操作系统环境,用来满足用户的日常操作需求。类型一虚拟机的典型代表有:微软的Hyper-V、商业软件VMware ESX/ESXi和著名的开源虚拟化软件Xen。
类型二虚拟机监控程序在系统主机加电后首先运行的是传统意义上的操作系统,即所谓的宿主机操作系统。其他虚拟机需要在此基础上进行创建。采用这一类型监控程序的虚拟机的优势在于,可以充分利用现有操作系统来实现系统资源的管理,从而实现起来更为简单。类型二虚拟机的典型代表有:著名的VirtualBox、VMware Workstation以及KVM。
3 常用服务器虚拟化技术介绍
服务器虚拟化是指将CPU、内存、磁盘和I/O等物理资源抽象成逻辑资源,并在此基础上创建多个虚拟机共享使用这些资源,从而达到整合服务器资源,提高资源利用率的目的。此外,它还有助于资源利用率的提升,根据IT业务的变化更好地做出调整。就目前来说,Citrix公司的Xen、VMare公司的ESX、Redhat的KVM以及微软公司的Hyper-V等都是目前比较流行的服务器虚拟化软件。
3.1 Xen
Xen最初源于剑桥大学的科研项目,它直接运行在裸机上,因此属于类型一虚拟机监控器。Xen采用了一种定制的微内核,把每个虚拟机都称为Domain域,每个Xen平台都有一个特殊的虚拟机Domain0,它运行了资源调度和管理程序作为管理平台,可以直接访问硬件的只有Domain0,至于其他虚拟机,则都必须借助虚拟I/O才能访问硬件。
Xen支持全虚拟化和准虚拟化的虚拟机运行方式。全虚拟化是指借助软件来完整地模拟客户机的硬件环境,包括机器指令、I/O操作、中断、内存访问等;准虚拟化是指不用软件来模拟完成硬件环境,而是利用一套适合软件平台的指令来简化硬件访问,在运行准虚拟化虚拟机时,需要更改客户机系统。Xen的核心框架替换掉了复杂的硬件指令,让客户机自己知道工作在虚拟的状态,并配合虚拟化工作,避免了效率低下的纯软件环境模拟,因此Xen可以运行在没有硬件虚拟化的平台上。
3.2 Vmware ESX
VMware ESX采用的是单内核的结构,该结构的特点是硬件的驱动程序都装载在虚拟机监控程序层中,被所有虚拟机所共用。这种单内核的Hypervisor不需要虚拟机操作系统做任何的改变,可以提供很好的性能,但也有一些弊端。由于Hypervisor层对于被使用的虚拟机是不可见的,而驱动程序和一些第三方代码需要运行在Hypervisor层,会导致无法通过防病毒软件对其实施监控,因此安全性无法保证;另外其稳定性和兼容性也存在一定的欠缺。一旦某个驱动程序中存在bug,所有的虚拟机都将受到影响。由于Hypervisor层支持所有的硬件驱动程序,导致该层体积较大。因此单内核的Hypervisor还有另一个别称——胖Hypervisor。
3.3 Hyper-V
Hyper-V采用的是微内核结构,里面没有装载驱动程序,被称为瘦Hypervisor。而且由于微内核体积较小,所以大大提升了它的运行效率。除此之外,由于驱动程序是跑在每一个分区里的,因此通过Hypervisor,硬件不仅可以被每一个分区内的虚拟机直接访问,而且还会使每一个分区都相互独立,这样就拥有更好的安全性和稳定性。
通常,大多数服务器虚拟化技术的硬件访问的兼容性问题大多是通过采用硬件模拟方式来解决的,这样的解决方案会造成极大的开销和性能损失。微软的Hyper-V并没有采用硬件模拟的方式,而是采用了Enlightenment技术来实现虚拟机操作系统与Hypervisor的通信。它通过对虚拟机操作系统的启蒙,让其记住自己的虚拟机身份。启蒙后的操作系统通过虚拟化服务提供者(VSP)/虚拟化服务消费者(VSC)这套组件来实现对硬件的访问。当某虚拟机中的操作系统需要访问硬件时,由虚拟机中的VSC通过VMBUS将request发给物理机中的VSP,实际的硬件服务由VSP提供。相对于传统使用硬件模拟的方法,采用这种使用硬件的方式,可以大大提高访问性能。
3.4 KVM
KVM英文全称为Kernel-based Virtual Machine,其中Kernel指的是Linux内核。KVM从Linux2.6.20版本开始与Linux打包发布,可以看出Linux社区对KVM的认同和支持,KVM必须运行在硬件虚拟化特性的物理机上,比如说Intel VT或AMD-V的虚拟机,因为KVM利用了硬件特性辅助来提高虚拟机访问物理硬件的性能,在形式上KVM是二型虚拟机监控器,KVM是和Linux操作系统打包发布的,并未独立地在裸机上工作,因此虚拟机需要通过硬件模拟器模拟出来的环境与物理硬件通信。在KVM工作模式中,KVM是与QEMU绑定发布的。其中KVM负责与硬件通信的部分,工作在Linux内核空间;QEMU负责把虚拟机的硬件环境模拟出来,工作在Linux用户空间。KVM最初只支持全虚拟化一种模式,利用QEMU虚拟模拟器来实现硬件环境的模拟。这样的优点在于虚拟机的操作系统完全不需要因为作为虚拟机在工作而做任何的改变;缺点在于纯粹的软件模拟速度很慢。因此为了改善性能,KVM采取了依赖硬件性能来实现虚拟化的方法,要求虚拟机一定要工作在具有虚拟化特性的硬件上,如支持Intel VT或AMD-V功能的硬件。
KVM在发展了一个阶段后,也实现了支持准虚拟化的驱动,以此来提升I/O的性能,这种驱动称为Virtio驱动。KVM在与物理硬件通信时,充分利用了Linux内核,虚拟机作为Linux内存进程存在着,可以利用很多Linux的原生功能,如进程调度模块、内存管理模块和电源管理等,对虚拟机的管理提供了很大的便利条件。可以说KVM把Linux操作系统变成了一个大的虚拟机监控器,用来支持虚拟环境下所要求的强大而稳定的资源管理功能。
4 服务器虚拟化技术的选择
通过前面的介绍大体了解了各服务器虚拟化软件的工作原理及特点,那么企业数据中心在具体应用时,应该选择哪一种虚拟化技术进行部署呢?此时我们还需要了各虚拟化软件除了功能之外的一些特性。
从是否需要付费的角度来看,KVM和Xen是开源且免费的虚拟化软件,VMware ESX则是需要付费的虚拟化软件,而Hyper-V是微软Windows Server 2008 R2自带的虚拟化组件,如果你购买了Windows Server的授权,则Hyper-V就可以免费使用。
如果用户使用Hyper-V或VMware ESX虚拟Windows,虚拟化软件和虚拟机所作用的操作系统都需支付许可费用。如果用户使用Hyper-V或VMware ESX(VMware ESXi是免费的)虚拟Linux,则只支付虚拟化软件本身的许可费用即可,虚拟机操作系统可用Linux来节省成本。
如果用户使用KVM或Xen虚拟Windows,仅需要支付虚拟机操作系统的许可费用。而如果用户使用KVM或Xen虚拟Linux,那么虚拟化软件和虚拟机操作系统不需要支付任何费用。
从虚拟机中运行操作系统的性能角度来看,如果购买厂商的许可,那么虚拟Windows时,利用前面提到的任何一款软件都能使系统资源利用率达到80%以上。此时还是建议优先选择Hyper-V,因为它是微软公司自己的产品,与其他软件相比是绝对有优势的。在虚拟Linux时,建议优先考虑Xen。该软件可以直接使用宿主系统的资源来支持虚拟机的操作,减少虚拟化调度操作,可实现极高的性能,但它的缺点在于操作比较复杂、维护成本高。其次推荐使用KVM,因为KVM本身就是集成在Linux内核中,Linux能够支持KVM的Virtio技术,很容易利用Linux系统中的功能来实现较高的系统性能。在虚拟Linux时,不建议使用Hyper-V,因为不可兼容性太多极有可能大幅降低虚拟化后的Linux系统性能。
如果用户在选购虚拟化软件产品时,不考虑后续厂商的服务与支持,而Hyper-V和Vmware ESX两种只有取得厂商授权才能允许使用,因此就不在考虑范围之内了。在备选的KVM和Xen中,如果选用KVM,用户可从Linux社区中免费获取许多针对Windows系统优化过的软件,从而使系统发挥出高效的性能(与用Hyper-V虚拟出来Windows系统性能不分伯仲)。如果选用Xen,用户很难获取到相关的软件支持。综上所述,企业数据中心在做服务器虚拟化时,需要从实际工作环境中需要的系统功能、软件授权、现有资源和管理成本等多方面进行综合考虑,最终选择一种适宜的服务器虚拟技术来完成最终的部署。
参考文献:
[1] 邢静宇.KVM虚拟化技术基础与实践 [M].西安:西安电子科技大学出版社,2015.
[2] 沈建国,陈永.OpenStack云计算机基础架构平台技术与应用 [M].北京:人民邮电出版社,2017.
[3] 王中刚,薛志红,项帅求.服务器虚拟化技术与应用 [M].北京:人民邮电出版社,2018.
作者简介:乔寿合(1979-),男,汉族,山东烟台人,副教授,硕士,研究方向:计算机网络技术。