1、虚拟化技术的分类
1.1 虚拟化技术分类
参考《docker技术入门与实战》,从大类上分,虚拟化技术可分为基于硬件的虚拟化和基于软件的虚拟化,如下图1所示。
Tips:
(1)看着分类挺复杂,常用的就VMware、VirtualBox、Xen、KVM、docker等几个。也就是我们只需要关注完全虚拟化、硬件辅助虚拟化、半虚拟化以及操作系统级虚拟化几个即可。
(2)半虚拟化的名称比较多,在不同的资料、文献中有不同的称呼,“超虚拟化、操作系统辅助初始化、部分虚拟化、半虚拟化”都是指这个。
正是由于常用的虚拟化技术也就是图1中“平台虚拟化”中的那几个,而那几个除了“操作系统级虚拟化”外,其余几个都用到了Hypervisor(虚拟机监控程序) ,所以有些专家、书籍直接将虚拟化归为两类,如图2所示。
如图2所示,Hypervisor有两种类型:type1和type2。type1的Hypervisor可以直接运行在硬件上,type2的Hypervisor运行在HostOs上。
问题:在使用KVM的时候,不也是直接在linux里面安装KVM,然后使用吗?怎么图2里面说KVM是直接运行与硬件上?
答:Kvm 模块让Linux 主机成为一个虚拟机监视/管理器(Hypervisor或VMM)。
1.2 全虚拟化、半虚拟化、硬件辅助的虚拟化
关于全虚拟化、半虚拟化、硬件辅助的虚拟化的讲解可以参考如下链接:
kvm是基于硬件支持的完全虚拟化(kvm虚拟化技术的实现方式)-聚名号 (jumingjt.com)
简单来说:
(1)全虚拟化,不需要修改GuestOs内核。
(2)半虚拟化,需要修改GuestOs内核,替换掉不能虚拟化的指令。
(3)硬件辅助虚拟化,就是有硬件虚拟化的支持,简化虚拟化技术。
如果在硬件辅助虚拟化的帮助下,还需要修改GuestOs内核,那就是仍然属于半虚拟化,反之,如果在硬件辅助虚拟化的帮助下,不需要修改GuestOs内核,则属于全虚拟化(完整的是就是:“ 硬件辅助的全虚拟化”)。
Tips:
这也就是为什么有的资料、文献中一会儿把KVM称作是“硬件辅助虚拟化”、一会儿又说KVM是“完全虚拟化”的原因。 因为KVM确实是硬件辅助的虚拟化,但也确实不需要修改GuestOs内核就可以运行。
同理,Xen也支持半虚拟化和硬件辅助虚拟化(全虚拟化),如图3所示。
同时,Xen是半虚拟化的领导者。