什么是虚拟化技术

描述

成本是永恒的话题。

虚拟化的目标也是降低成本,体现为对IT资源的充分利用。

一、虚拟化发展脉络

20世纪50~70年代,大型机应用广泛。但也比较贵,如何节省成本成为考虑的因素。一种简单的想法,多个终端用户能够共享同一大型机。

从时间的角度来考虑,就是将CPU时间划分成非常小的时间片,每个时间片执行不同用户的工作任务,并通过轮询的方式进行调度。这样,表面上不同用户的任务在同一硬件资源上都得到了执行,本质上是后台是“分时共享”大型机。20世纪60年代,IBM在其System/360中实现了该分时系统,并在System/370正式命名为虚拟机。

20世纪80年代,硬件成本降低,虚拟化技术逐步被放弃。

20世纪90年代,Win-Intel联盟、Linux操作系统的发展,x86服务器架构应用广泛,成为服务器硬件设施的主流。但X86计算机架构,最早着眼于性能要求不高的场景,没有考虑对虚拟化技术的支持。

人们在使用x86服务器时,为了满足业务的需求,通常会对业务流程进行压测,得到业务所需的x86服务器配置,这种配置往往采用按照业务最高的要求。这样,在日常运行中,就会导致服务器的CPU利用率比较低,处于10%~30%之间,也就是服务器资源没有得到充分利用。

随后,各个公司推出了各种虚拟化解决方案:

  • VMware将虚拟化技术引入到x86服务器中,发布了ESX产品。
  • Xen虚拟化平台由剑桥大学研究,成为开源虚拟化资源的代表。
  • 微软推出Hyper-V。
  • Intel硬件虚拟化VT-x方案。

二、虚拟化概念与架构

虚拟化是什么?

IBM公司给出的定义比较有代表性:“虚拟化是资源的逻辑表示,它不受物理限制的约束。”

简单地说,就将X86服务器硬件资源进行抽象,在其上构建一台台虚拟机。虚拟机与X86服务器没有什么不同,可以安装操作系统,部署用户APP并运行。

那么,如何实现虚拟化呢?

在硬件资源和虚拟机之间,需要有一个抽象层,向下对硬件进行抽象,向上提供人虚拟机,并确保这些虚拟机之间是独立且隔离的。这个抽象层称为虚拟机监控器(Virtual Machine Monitor,VMM)。

操作系统

通常情况下,将X86服务器上的操作系统称为Host OS(宿主),将虚拟机的操作系统称为Guest OS(客户)。 

根据VMM是否直接部署在硬件上,又分为宿主型、裸机型和混合型。

  • 宿主型:硬件资源仍由Host OS来管理,VMM是OS的内核,体现为一个进程。
  • 裸机型:VMM直接部署并运行在硬件上。
  • 混合型:宿主型和裸机型的融合。

根据虚拟的资源类型来划分,虚拟化又可以分为计算虚拟化、存储虚拟化和网络虚拟化。

三、实现机制

前面提到,X86架构在初始设计时,并未考虑虚拟化的情况。这意味着后续硬件支持虚拟化时,必然采用打补丁的方式。

这里仅讨论CPU虚拟化。

在x86架构的CPU指令集中,有Ring0、Ring2、Ring2、Ring3四个状态,其中,Ring0权限最高,操作系统拥有此权限,能够直接管控所有资源。Ring3权限最低,应用程序拥有此权限。应用程序可以访问自己权限内的硬件资源,不能访问Ring0权限内的硬件资源。

操作系统

从运行态上来看,虚拟机是x86服务器上的进程,拥有Ring3权限。不具有Host OS的Ring0权限,无法访问整个硬件资源,此时如果直接访问,则会被Host OS捕捉到并触发异常,弹出警告窗口。

操作系统

那么,如何才能Guest OS拥有Ring0权限呢?从x86架构的原始设计来看,不可能。

退一步,让Guest OS自认为的拥有Ring0权限。这就需要底层VMM或者硬件做到“Guest OS自认为的权限”,以此来欺骗Guest OS。

先来看看VMM如何做?

一种方法是将欺骗进行到底。

Guest OS不做任何修改,依然是那个追风少年,VMM依然变成一个保姆,有求必应。但VMM也是有策略的:

针对一些不敏感的指令,VMM直接进行“翻译”,调用Host OS,为Guest OS模拟出它所需要的包括CPU、磁盘、内存、网卡、显卡等抽象硬件资源。

针对一些敏感指令,如reboot,VMM考虑到会影响整个x86服务器,则将进行“模拟”,转换为只针对特定Guest OS 的reboot指令。

另一种是认清现实,就是一个虚拟机。

告知Guest OS一些细节,Guest OS自身做一些调整,修改指令集中的敏感指令和核心态指令,使得Host OS能够判断出是谁要访问硬件资源,从而提供相应的硬件抽象。

再来看看,硬件如何做?

原来x86架构包含4个权限的指令集,现在打补丁。引入VMX新模式:也就是Virtual Machine eXtension,包括根操作模式(VMX Root Operation)和非根操作模式(VMX Non-Root Operation)。

操作系统

VMM运行在根操作模式,Guest OS运行在非根操作模式,具有Ring 0权限,可直接访问硬件资源,同时,对于reboot等敏感指令,则由硬件辅助,直接切换到 VMM 执行,转换为只针对特定Guest OS 的指令。

这就是Intel的VT-x方案基本思想。

四、实现技术

虚拟化有很多实现技术,如KVM、Xen、VMware、Virtual Box、Hyper-V 等,这里仅介绍KVM。

KVM(Kernal-based Virtual Machine)是基于Linux内核的开源虚拟化方案。KVM提供CPU虚拟化、内存虚拟化,而I/O部分,则借助于QEMU实现( QEMU早于KVM )。

KVM虚拟化方案使用的是VT-x的VMX模式。其技术架构如下:

操作系统

五、工具

针对众多的虚拟化实现技术,云计算IaaS平台通常采用兼容并包的策略,为了简化处理,引入了中间适配层:libvirt。libvirt支持界面和CLI命令行的方式,如virsh、virt-manager。

操作系统

事实上,现有的云计算框架平台使用了libvirt的API 来管理虚拟机,如 OpenStack。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分