虚拟化技术

虚拟化技术发展到现在已经从最早的软件模拟虚拟化转向了硬件虚拟化。在虚拟化技术应用到普通消费市场的早期,由于intel以及AMD的x86架构的CPU都不支持虚拟化技术,因此就需要hypervisor在硬件层之上再插入一个软件层来向上层提供虚拟化技术。hypervisor的主要功能就是完成底层硬件资源的分配和管理,并向上层提供构建多个客户机的环境。hypervisor为上层的客户机建立一个似乎是完全独立的运行系统,它需要完成CPU在不同VM操作系统之间状态的转换,以及完成物理I/O资源地址空间在物理机以及虚拟机之间的映射。对于上层VM来说,它的资源使用由下层的hypervisor来调度。因此在部署宿主机以及客户机时,都需要修改两者的系统内核,从而让客户机的资源使用通过下层的hypervisor来完成。而修改宿主机的内核则是让它提供虚拟化支持以及资源的调度。因此早期的虚拟化技术并不能支持Windows系统。由此可以看出,由于硬件的不支持,因此由软件来实现的虚拟化方案并不高效,资源使用的效率完全有hypervisor来决定,同时对VM的隔离也存在缺陷。


随着虚拟化需求的不断增长,intel以及AMD都在自己的CPU中加入了对虚拟化技术的支持,使得其可以支持多个客户机操作系统的状态保存和转换。因此以前由hypervisor来提供CPU虚拟化的工作可以完全交给硬件来完成。CPU硬件虚拟化使得其向上提供了虚拟化CPU的能力,客户机不再需要修改内核,物理资源的使用可是直接通到物理层, 而hypervisor的作用就变为如何在不同客户机之间调度资源。

但目前在I/O等资源的虚拟化功能上,如显卡资源,仍然需要软件来实现地址的映射以及I/O状态的保存以及转换。因此要完成整机的虚拟化仍然需要对I/O资源在硬件上提供虚拟化功能。

另,目前intel和AMD都提供了I/O directe path功能,也即是I/O资源直通,可以指定哪些I/O资源被哪个客户机使用。我们知道,CPU资源的虚拟化、隔离目前已经比较完善了,而I/O资源隔离一直没有很好的完成,这就造成在同一宿主机上客户机之间I/O资源的竞争。而如VT-D技术的出现,这样I/O资源的虚拟化又进入了一步。

评论

此博客中的热门博文

在Ubuntu 16.04上基于OpenBLAS 编译LAPACK

kindle 4(黑)去广告+换屏保

COIN-OR 源码编译安装要点记录