云计算核心技术虚拟化

2026年01月25日/ 浏览 8

虚拟化技术解决的问题?

任何技术都是为了解决实际问题而产生的,那虚拟化技术又是为了解决什么实际问题呢?那我们就得回到传统IT架构,也就是虚拟化前的架构。如下图所示。虚拟化前的架构是一台服务器上安装一套操作系统,然后再在操作系统上部署相应的APP也就是应用系统。这样部署的好处就是该应用系统独享该服务器的计算、存储、网络资源。但是这样会有一个最大的缺点,那就是服务器的资源的利用率很低,很多时候,服务器利用率基本也就20%-30%。所以,为了提升资源的利用率,提出了虚拟化。

从上可以得出,虚拟化主要解决计算资源利用率低,成本高的问题。

虚拟化前后IT架构图

虚拟化技术是什么呢?

为了提升资源的利用率,想到了一个解决方法,就是在硬件资源上添加一个虚拟化层,然后再在虚拟化层上安装相应的虚拟机,再在虚拟机中安装相应的操作系统,这样在操作系统上就可以安装相应不同的应用系统。这样就实现了在一个硬件服务器上安装多个应用系统,提高了资源的利用率。

实际情况:非虚拟化因为是app独享硬件资源,虚拟化因为虚拟出了各项资源,总体情况是提升了资源的利用率。但是性能上是会有相应的折损的。

左边传统架构,是OS系统直接使用硬件资源,这样的app是独享硬件资源的。

而右边的虚拟化架构是在硬件资源之上还有一层,虚拟化层(VMM,虚拟机监控器),通过虚拟化层实现资源的共享,vmm可以把虚拟机内的app需要的计算、存储、网络资源以虚拟资源的方式提供给app使用,且不同app所在的虚拟机之间是独立的,隔离的。

那虚拟化有什么好处呢?

1、提高硬件利用率

2、降低能耗,绿色节能

3、提高IT运维效率,系统管理人员减少

4、操作系统和硬件的解耦,便于系统迁移

虚拟化的实现方式有哪些种类呢?

针对vmm的需要实现的功能,则需要相应的硬件资源也能支撑虚拟化,根据实现的原来不同。相应的有三种方式:

1、全虚拟化:软件实现,软件虚拟所有硬件和功能,比如你在Vmware station上安装GustOS非常的简单,无需再安装其他什么软件,就像在硬件上安装系统一样简单。但是性能低。

2、半虚拟化:简单来说就是你在安装Gust OS时候,并不是像在硬件上安装一样简单,你还是需要再安装一些相关的驱动(tools),需要重定向,需要修改内核。能让你知道你这个系统是安装在VMM 之上的。这种虚拟化,使得vmm参与到调用底层硬件的工作相对于全虚拟化来说变少了,从而性能得到提升。

3、硬件虚拟化

虚拟化类型

根据vmm所在的位置不同有了三种主要的虚拟化方式,寄居虚拟化、裸金属虚拟化、混合虚拟化

寄居虚拟化vmm是在宿主操作系统之上。

裸金属虚拟化vmm是在硬件之上。

混合虚拟化vmm是在宿主操作系统内核之上,它是把kvm的vmm软件装到了宿主操作系统的内核中。

寄居虚拟化个人安装模式,开销大是因为需要跨越好几层才能驱动相应的硬件资源支撑应用系统的服务。

这里的宿主操作系统,比如个人电脑上的windows10。然后你在本地电脑上安装了Vmware workstation虚拟机,再在上面安装一个linux的比如centos7.9的系统,再在这个系统上安装一个dhcp的服务软件。

这种通过软件来实现的虚拟化,叫做全虚拟化。

裸金属虚拟化企业常用方式,它可以实现直接调用硬件资源。ESX就是裸金属虚拟化。这种就是在硬件之上直接安装VMM虚拟化层,这个vmm其实就是集成了很多的硬件的驱动软件。这个vmm就像操作系统一样。可以直接调用底层的硬件。由于它不用再通过宿主操作系统,所以性能上肯定要优于寄居虚拟化。是全虚拟化

操作系统虚拟化:用得很少,必须保证操作系统一致,宿主用的linux,那系统模板库中用的也得是linux。

混合虚拟化:kvm就是混合虚拟化。是把vmm安装到了宿主操作系统的内核中,这种虚拟化的方式非常灵活,即有了虚拟机可以直接调用硬件资源的性能,它也可以在宿主操作系统之上,再安装其他的app。不用使用vmm。

kvm是硬件辅助虚拟化,这是未来发展方向。kvm非常的小巧,它能实现cpu和内存的虚拟化,但是无法实现IO的虚拟化。

虚拟化本质是什么?

虚拟化的本质

重要概念

物理机和虚拟机架构图

传统架构,我们知道cpu会分很多核,有应用程序的空间,我们成为用户态,也有操作系统的空间,我们称为内核态。不同的空间有不同的硬件使用权限。应用程序的用户态使用的是非特权指令,操作系统的内核态使用的指令是特权指令(可以对硬件进行操作的底层指令)。

那根据这种指令权限的不同,设计了Ring的几层结构,有ring0到ring3的4个级别。

cpu指令权限

Ring0是最高级别,也就是内核,这是操作系统对应的级别。

Ring3一般是应用系统对应的级别

但是到了虚拟化机构后,在硬件之上多了一个vmm层,如上图所示:

虚拟机监控层处在ring0

Guest Machine内的Gust OS处在了ring1

Guest OS上安装的app则是ring3

由于不同的ring执行不同的指令

那我们回到传统架构下发现,原来的Gust OS是处在ring0,它发出的是特权指令。然后现在在虚拟化架构下,由于是采用的虚拟化技术,虚拟机中的Gust OS并不知道自己是在虚拟机的环境中,对于它来说,它还是直接会发出ring0的特权指令去调用底层的硬件资源。所以对于虚拟机中的Gust OS来说,它自己认为自己还是处在ring0级别中,它发出的还是ring0的特权指令。这样就会引起系统异常。因此而提出了CPU的虚拟化。

如需要查看其他相关文章也可关注微信公众号:信息化笔记

picture loss