服务器虚拟化技术简介

服务器虚拟化的方式

服务器虚拟化的有多种划分方式,可以根据虚拟化架构划分为裸金属/寄居,根据虚拟化层次硬件辅助虚拟化/软件辅助虚拟化,根据虚拟化平台划分为全虚拟化/半虚拟化。

裸金属/寄居

未虚拟化

未虚拟化的普通x86服务器架构,自下而上是物理硬件(Hardware)、操作系统(OS),应用程序(APP)。

 

未虚拟化的x86服务器

寄居

 

Windows中使用VMware workstation实现服务器虚拟化

应该大多数人都使用过VMware workstation和VirtualBox这两个软件,它们就属于是寄居架构。一般我们会把这两个软件装在Windows系统中(它们也有Linux版),再在软件中创建虚拟机。

以Windows中安装VMware workstation为例,自下而上是物理硬件、宿主机(Host OS,这里是Windows)、hypervisor(这里是VMware workstation)、虚拟硬件(vHardware,由hypervisor提供),虚拟机(VM,也叫Gust OS),APP(工作在虚拟机中的应用程序)。

Tips:hypervisor也叫虚拟机监视器(Virtual Machine Monitor,VMM),是实现物理机虚拟为虚拟机的系统或者软件,包括提供虚拟化硬件,管理虚拟机等功能。

裸金属

 VMware ESXi

VMware workstation一般是用作个人学习、测试,ESXi则是VMware的企业级服务器虚拟化技术,本身就是一个操作系统,直接安装的物理服务器上,是典型的裸金属架构。与寄居架构的workstation很明显的区别在于,ESXi以系统的形式安装在硬件之上,而workstation则以软件的形式安装在操作系统中。

Tips:早期VMware的企业级服务器虚拟化版本称为ESX,后来升级版本称为ESXi。

真正判断虚拟化类型是裸金属还是寄居架构,还要看虚拟化层控制的硬件是由谁来提供的。寄居架构将虚拟化层(hypervisor)以一个应用程序的方式安装运行于操作系统之上,支持最为广泛的各种硬件配置。裸金属架构将虚拟化层(hypervisor)直接安装到干净的x86系统上,裸金属架构相对于寄居架构效率更高,且具有更好的可扩展性、健壮性和性能。

企业级服务器虚拟化都是裸金属架构(效率更高),像主流的企业级服务器虚拟化ESXi、KVM、Xen、Hyper-v都是裸金属架构。

*有点特殊的裸金属KVM

KVM

通常所说的KVM实际上是KVM和qemu两种技术的结合,qemu本身是一种完整的寄居架构,采用二进制翻译的方式虚拟化CPU,KVM则采用效率更高的硬件辅助虚拟化CPU。由于KVM只能虚拟化CPU、内存,其它硬件(网卡、硬盘)的虚拟化则是由qemu来负责。qemu是寄居架构,自然工作在用户空间,通俗来讲就是qemu以软件的形式工作在Linux上。

KVM就相当于“给内核的一个补丁”,将Linux内核转换为hypervisor,这样看来KVM-QEMU的hypervisor既有寄居(qemu)又有裸金属(kvm),算是比较特殊的裸金属。

Tips:以CentOS系统部署KVM为例,仅简单体验KVM可以通过yum安装。因为我们习惯了yum安装各种软件,这样看起来KVM是yum安装的“软件”,应该属于寄居架构,实际上KVM应该属于裸金属。举个例子,升级操作系统也可以是通过yum(yum install kernel),很明显升级操作系统不能认为是通过yum安装kernel这个软件。

参考文章:https://www.cnblogs.com/echo1937/p/7138294.html

yum部署KVM:

*有点特殊的裸金属的Hyper-v和Xen

 把他们放在一起是因为他们都有一个非常相似的概念,Hyper-v叫做父分区、Xen叫做Domain 0 。Hyper-v是Windows Server的一个功能,没有开启的时候Windows Server就是普通的x86服务器结构。Xen需要部署在Linux系统上,没有部署的时候也是普通的x86服务器结构,未部署的时候两者都可以用如下结构图。

部署虚拟化之后,两者非常相似。同样是硬件位于最底层,hypervisor则分别是Xen和Hyper-v。对于Xen来说原来的Linux将使用Xen内核运行在Domain 0,对于Hyper-v来说,Windows Server运行在父分区,他们都相当各自的于第一台虚拟机,并且拥有部分物理硬件直接权限,之后的Domain 1、子分区1等上的虚拟机的虚拟硬件功能则是由Hypervisor和Domai 0、父分区共同提供的。

部署Hyper-v:

部署Xen:

硬件辅助虚拟化/软件辅助虚拟化

通常根据CPU虚拟化的方式划分为硬件辅助虚拟化、软件辅助虚拟化,软件辅助虚拟化(或者说叫仿真虚拟化)是通过优先级压缩或者二进制代码翻译,硬件辅助虚拟化则是使用intel vt-x或者AMD-v等硬件技术。

软件辅助虚拟化参考文章:https://www.cnblogs.com/echo1937/p/7222606.html

硬件服务虚拟化参考文章:

现在主流的企业级服务器虚拟化都是采用硬件辅助虚拟化技术(intel vt-x或AMD-v),KVM和Hyper-v仅支持硬件辅助虚拟化(不支持软件辅助虚拟化),ESXi、Xen和VMware workstation都是两者都支持,不过现在没理由不使用硬件辅助虚拟化。

Tips:现在不单是CPU有硬件辅助虚拟化,网卡和芯片组也有硬件辅助虚拟化。比如以Intel VT虚拟化技术就包括分别针对处理器、芯片组、网络的IntelVT-x、IntelVT-d和IntelVT-c技术。不过划分标准还是根据CPU虚拟化的方式决定的。

全虚拟化/半(准)虚拟化

至少从现在(2018)来看,主流企业级服务器虚拟化都是全虚拟化技术,Xen本就日薄西山,若要使用其半虚拟化模式(Xen也支持全虚拟化),其创建的虚拟机要使用定制内核的Linux,Windows由于未开源,不支持半虚拟化,这样用户量肯定是较少的。

本节的参考文章从CPU虚拟化的角度,介绍了全虚拟化和半虚拟化的区别。

参考文章: https://baijiahao.baidu.com/s?id=1588195141957451187&wfr=spider&for=pc

两种虚拟化的实质区别就是操作系统能否意识到自己是虚拟机,对于全虚拟化虚拟来说:

全虚拟化操作系统:“CPU你去帮我算一下这个!”

vCPU:“好的”

对于半虚拟化操作系统来说:

半虚拟化操作系统:“vCPU你去帮我算一下这个!”

vCPU:“好的”

Tips:半虚拟化涉及定制操作系统,安装驱动等等,全虚拟化则是支持普通安装在x86服务器上的操作系统。

小结

当前(2018)服务器虚拟化类型的概念已经很淡了,主流的企业级服务器虚拟化技术(ESXi、KVM、Hyper-v、Xen)都是裸金属架构,虽然Xen和ESXi支持软件辅助虚拟化,但一般情况下都会使用硬件虚拟化,至于KVM和Hyper-v更是只支持硬件虚拟化。仅有Xen还支持半虚拟化,但是Xen是使用率现在已经很低了。

各厂商服务器虚拟化类型已经趋于一致(裸金属、硬件辅助、全虚拟化),所以在类型方面也不必过多纠结,所以在选择服务器虚拟化技术的时候应该更多关注各种服务器虚拟化技术的性能、稳定性、成熟性等等。

附一张2017年5月企业级服务器虚拟化市场占有率的图片,VMware使用的肯定是ESXi,微软则是Hyper-v,华为、新华三都是基于开源的KVM二次开发的产品。

参考文章:http://virtual.51cto.com/art/201803/569228.htm

参考文章:https://blog.csdn.net/flyforfreedom2008/article/details/45113635

参考文章:http://www.ctiforum.com/forum/2012/02/forum12_0228.htm?2

猜你喜欢

转载自www.cnblogs.com/yogurtwu/p/9989200.html