李 昕,吴剑平
(1.天水风动机械有限责任公司,甘肃 天水 741020;2.兰州理工大学计通学院,甘肃 兰州 730030)
虚拟化(Virtualization)技术最早出现于20 世纪60 年代的IBM 大型机系统, 当时IBM 发明了一种技术,允许在一台主机上通过执行虚拟机监控器(Virtual Machine Monitor,VMM) 程序在物理硬件上生成许多可以运行独立操作系统软件的虚拟机(Virtual Machine),让用户能充分利用大型机昂贵的资源。
随着X86 处理器的应用普及和性能提升,虚拟化技术开始导入X86 平台。2005 年11 月, 英特尔发布了Xeon MP 处理器系统7000 系列,X86 平台历史上第一个硬件辅助虚拟化技术VT(Vanderpool Technology)诞生。
进入 2006 年, 从处理器巨头 AMD 和Intel、网络霸主 Cisco 和 3com,到微软的加入,从众多的第三方软件厂商的涌现到服务器系统厂商的高调推广,一个趋于完整的虚拟化产业生态系统正在逐渐形成,虚拟化开始成为广受关注的热点话题。
虚拟化是一个广义的术语,在计算机科学领域,虚拟化是一种方法,代表对计算资源的抽象。 本质上是指从逻辑角度对资源进行配置,是物理实际的逻辑抽象。 是一种从单一的逻辑角度看待不同物理资源 (硬件、软件、数据、网络、存储)的方法。
对于用户,虚拟化技术实现了软件跟硬件分离,不用考虑后台的具体硬件实现,只需在虚拟层运行自己的系统和软件,这些系统和软件在运行时跟后台的物理平台无关。
从原理上看, 虚拟技术虚拟的是指令集。所有的IT 设备,不管是PC、服务器还是存储,都有一个共同点:它们被设计用来完成一组特定的指令。 这些指令组成一个指令集。 对于虚拟技术而言,“虚拟”就是指模拟实现这些指令集。
虚拟化技术主要分为以下几类:
1.3.1 平台虚拟化(Platform Virtualization)
针对计算机(主要指服务器)和操作系统,通过使用控制程序(Control Program,也被称为 Virtual Machine Monitor 或 Hypervisor), 隐藏特定计算平台的实际物理特性,为用户提供抽象、 统一、 模拟的计算环境(称为虚拟机Virtual Machine)。 虚拟机中运行的操作系统被称为Guest OS(客户机操作系统),运行虚拟机监控器的操作系统(某些虚拟机监控器可以直接运行在硬件)被称为Host OS(主机操作系统)。
平台虚拟化又可分为如下几类:
(1)全虚拟化(Full Virtualization)
可模拟完整的底层硬件, 包括处理器、物理内存、时钟、外设等,操作系统及其它系统软件不做任何修改就可以在虚拟机中运行。 代表产品有 Microsoft Virtual PC、VMware Workstation、Virtual Box 等 。
(2) 超虚拟化(Para virtualization)
部分硬件接口以软件的形式提供给Guest OS, 通 过 Hyper call (VMM 提 供 给Guest OS 的直接调用)的方式来提供。 代表产品有 Denali、Xen 和 L4。
(3)硬件辅助虚拟化(Hardware-Assisted Virtualization)
借助硬件(主要是CPU)的支持来实现高效的全虚拟化。 Intel-VT 和 AMD-V 是x86 体系结构上可用的两种技术。
(4)部分虚拟化(Partial Virtualization)
VMM 只模拟部分底层硬件,Guest OS需作适应性修改, 否则无法在虚拟机上运行。
(5) 操作系统级虚拟化(Operating System Level Virtualization)
一种在服务器操作系统中使用的轻量级虚拟化技术,内核通过创建多个虚拟的操作系统实例 (内核和库) 来隔离不同的进程,不同实例中的进程完全不知道对方的存在。 比较著名的有 Solaris Container、FreeBSD Jail 和 OpenVZ 等。
1.3.2 资源虚拟化(Resource Virtualization)
针对特定系统资源的虚拟化, 如内存、存储、网络资源等。
1.3.3 应用程序虚拟化(Application Virtualization)
包括仿真、模拟、解释技术等。
上述分类方法并不是绝对的,优秀的虚拟化软件往往融合了上述多项技术。
通常所说的虚拟化主要是指平台虚拟化中的服务器虚拟化[1]。
(1)降低管理成本,提高工作效率
虚拟化技术可通过如下途径实现上述目标:
减少被管理物理资源的数量;隐藏物理资源的部分复杂性;通过自动化、信息优化和中央管理来简化公共管理任务;实现负载管理自动化。 另外,虚拟化技术还支持在多个平台上使用公共的工具。
(2)提升使用灵活性
通过动态的资源部署和重配置来满足不断变化的业务需求。
(3)安全性能加强
通过共享机制无法实现的隔离和划分来实现对数据和服务进行安全可控的访问。另外由于应用程序和所访问的数据处于集中管理和维护之下,对数据的访问可以被轻易地监测和控制,从而避免数据被攻击或窃取。
(4)可用性增强
在用户不受影响的情况下对物理资源进行删除、升级或改变。
(5)更高的可扩展性
资源分区和汇聚可支持实现比个体物理资源小得多或大得多的虚拟资源,即可以在不改变物理资源配置的情况下进行规模调整。
(6)互操作性和投资保护
虚拟资源可提供底层物理资源无法提供的与各种接口和协议的兼容性。极大地降低了应用程序因终端设备、网络或远程接入场所的特性所带来的不兼容风险。
(7)资源供应改进
与个体物理资源单位相比,虚拟技术能够以更小的单位进行资源分配[2]。
同样, 基于虚拟化技术的工作原理,该技术也存在着较为明显的问题, 主要表现在:
(1)可靠性
如果物理系统出问题或被攻克,那么其所管理的虚拟系统均有可能出问题或被攻击。
(2)性能降低
由于生成虚拟系统极其方便,如果技术人员随心所欲地产生虚拟系统,将严重影响物理系统的性能。
(3)许可证成本
虚拟系统数量增加,用户购买许可证的成本和管理难度相应增加。
(4)系统维护难度
在虚拟系统出问题时,首先需判断是虚拟系统还是物理系统的问题,增加了系统维护的复杂性。
(5)技术人员成本
技术人员数量虽然有所降低,但是对其技能要求却更高,相应地增加了企业人力资源成本。
(6)应用工具
目前的应用工具主要支持物理环境。实施虚拟化后, 应用工具必须能够运行在虚拟系统上。 这对开发者和用户无疑都是一个不可忽视的难题。
在国内,虚拟化已从概念推广逐步进入到应用阶段,其应用范围日渐宽泛。
IDC 季度监测数据显示, 从 2009 年下半年开始,中国服务器虚拟化渗透率(即运行虚拟化软件的服务器占服务器出货量比例)已经超过了10%。
来自Gartner 的数据统计称 2009 年下半年至少有16%的企业级负载运行在虚拟服务器上, 且该比例到2012 年有望增长到50%,这意味着以X86 为基础的虚拟机将达到约5800 万个。
IDC 还发现虚拟化技术和高端x86 服务器捆绑的趋势更加明显。很多服务器厂商将虚拟化软件预装在刀片服务器或四路以上的X86 服务器中提供给用户。
总的来说,国内应用较好的行业及用户特点如下:
(1)银行
应用态度最积极, 得到技术支持最多,较为熟悉虚拟化, 期待程度和应用评价最高。 特点是对成本敏感度低,对虚拟技术的安全性和使用效率关注度高。
(2)政府部门
应用不如银行用户熟练,但通过技术人员的努力,仍能以最低的TCO(Total Cost of Ownership, 总体拥有成本)获得最多的计算性能。 特点是对预算较敏感,对系统效率提高感兴趣。
(3)科研单位
随着数据计算量的加大,需要使用虚拟化技术来提高系统使用效率。这类用户对预算敏感度高,对虚拟化不是特别了解。
(4)计算中心
大多采用高性能计算机集群,特点是对计算性能和系统稳定性要求很高,对系统管理控制要求较多,对预算敏感度低。
但从调查中也可以看出, 除上述行业外,国内虚拟化技术的应用与欧洲、北美等地区相比,不论从深度还是广度上均存在着较大差距,主要表现在:
(1)大多数用户(接近 70%)对虚拟化的了解和认知程度较肤浅。
(2)成熟方案和成功案例较少,且集中在较少的几个行业,不具有广泛的指导意义和示范作用。
(3)人才短缺,用户实施虚拟化的信心不足。
(4)可投入部署和实施虚拟化的预算资金有限。
(5)中小企业基本上没有虚拟化的规划或设想。
(6)出于安全和保密的需求,相当一部分用户无法实施虚拟化。
总之, 虚拟化技术在实际应用的过程中,受限于国情、政策、资金、技术等诸多方面因素的影响, 其发展可以说是任重而道远[3]-[4]。
(1)理解虚拟化的优缺点
在将物理系统迁移到虚拟系统,或部署新的虚拟系统之前, 务必了解虚拟化在CPU 的利用率、 内存和磁盘方面的限制和其它实际问题。
(2)了解不同的系统性能瓶颈不同
在部署虚拟系统时,必须像对待物理系统一样考虑其所承担的角色。 在评估虚拟系统的配置时,需采用与部署物理系统一样的设计方法。
(3)应用的特征是什么,是计算密集,还是网络密集? 不同的特征,虚拟化要求完全不同。
(4)虚拟化与实际投入物理系统的预算是否进行了比较? 是否虚拟化更节约成本?因为迁移有成本和代价,必须对虚拟化的成本进行仔细核算。
值得一提的是,由于企业级虚拟化产品的许可证价格不菲,对于广大的中小企业用户来说,在部署虚拟化前进行细致的调研及分析工作,并根据自身实际需求,选择一些能够满足企业需求且费用较低或免费的虚拟化产品,以减少实施虚拟化带来的资金压力,也不失为一条可行之道[5]。
(1)重视虚拟系统的管理、打补丁和安全性
(2)除非绝对必要,切勿将虚拟系统与物理系统区别对待
(3)及早备份,经常备份
(4)谨慎使用“撤消”技术
(5)了解故障转移和规模扩展战略
(6)控制虚拟机的泛滥
(7)集中存储
(8)了解安全范围,加强安全性管理
总之,在实施虚拟化时可能会遇到许多新的难题,用户需要在实施虚拟化之前进行详细、周密的考虑。
由于用户的旺盛需求极大地刺激了虚拟化技术的创新,再加上开源软件的发展进一步带动了该技术的应用,使其发展更加迅猛,新概念、新技术、新应用层出不穷,使得虚拟化技术正处于一个蓬勃发展的时期,展望未来,它必将给用户带来更多收益。
[1]David Chappell.Windows 虚 拟 化: 技 术 概 览[M].微软 microsoft 公司,2007.
[2]Thomas Burger.在企业中使用虚拟化技术的优势[Z].http://www.intel.com/technology/virtualization/.
[3]陈小军,张璟.虚拟化技术及其在制造业信息化中的应用综述[J].计算机工程与应用,2010,46(23).
[4]中国虚拟化技术及应用现状调查[A].中国虚拟化技术网络大会[C].2009.
[5]威睿 VMWARE 公司.虚拟化的优势:现在为什么是IT 的迁移时机[Z].2009.