虚拟化是云计算的基础,在有虚拟化之前,一个物理主机上只能安装一个操作系统和运行一个核心业务程序。在有了虚拟化之后,一个物理主机上可以运行多台虚拟机,虚拟机上可以安装不同的操作系统和运行不同的核心业务程序,虚拟机共享物理主机的CPU、内存、I/O硬件资源,但是逻辑上虚拟机之间是相互隔离的。
1. 类型1和类型2虚拟化
物理主机是通过一个叫虚拟机监控器(Hypervisor)的软件程序实现硬件资源虚拟化的,那么根据Hypervisor是直接安装在硬件之上还是直接安装在宿主机操作系统之上,又将虚拟化分为类型1虚拟化和类型2虚拟化,如图1所示。
类型1虚拟化,宿主机上没有安装Linux或Windows常规操作系统,Hypervisor直接安装在宿主机之上,虚拟机运行在Hypervisor之上,由Hypervisor直接控制硬件资源以及虚拟机。典型的类型1虚拟化有Xen和VMware ESXi。
类型2虚拟化,宿主机上安装了Linux或Windows常规操作系统,Hypervisor直接安装在宿主机操作系统之上,也就是说这类型的Hypervisor是宿主机操作系统的一个应用程序,受宿主机操作系统的管理。典型的类型2虚拟化有KVM、VirtualBox和VMware Workstation。
2. KVM虚拟化介绍
KVM是在硬件辅助虚拟化技术之上构建起来的虚拟机监控器,所以小编在介绍KVM架构之前,假设各位看官对CPU、内存、I/O等硬件虚拟化技术有大概的了解,如果有不太了解的,可以到网上去了解相关的内容,这里就不再赘述。
KVM的全称是Kernel-based Virtual Machine,即基于内核的虚拟机,是采用硬件虚拟化技术的开源全虚拟化解决方案,也是业界主流的Linux虚拟化解决方案。
2.1. KVM功能
KVM是Linux操作系统的一个内核模块kvm.ko,通过直接加载kvm.ko模块将Linux内核转变为一个虚拟机监视器(Hypervisor),同时借助Linux内核来管理硬件,所以KVM是一个典型的类型2虚拟化,其功能框架如图2所示。注意,图2摘自危机百科,考虑到国内访问危机百科不方便,这里就不贴访问路径了。
小编将图2的英文翻译成中文,方便英文不好的小伙伴们去理解,如图3所示。
在介绍KVM功能之前,我们先来了解一下什么是“宿主机”,什么是“客户机”,什么是“物理机”,什么是“虚拟机”,这里我只是讲个大概,大家知道是那个意思就行了。虚拟机监视器(Hypervisor)运行的实际物理机,称为宿主机。虚拟机监视器(Hypervisor)上虚拟出来的虚拟机,称为客户机。所以在大约的情况下,宿主机等同于物理机,客户机等同于虚拟机。
下面我们开始介绍KVM功能框架。客户机是在宿主机操作系统上的一个抽象,通常抽象就是进程,所以一个KVM客户机对应于一个Linux进程,每个vCPU则是这个进程下的一个线程,还有单独的处理IO的线程,也在一个线程组内。所以宿主机上各个客户机是由宿主机内核像调度普通进程一样调度的,即可以通过Linux操作系统的各种进程调度的手段来实现不同客户机的权限限定、优先级等功能。
客户机所看到的硬件设备是QEMU模拟出来的(不包括VT-d直通设备),当客户机对模拟设备进行操作时,由QEMU截获并转换为对实际的物理设备的驱动操作来完成。
2.1.1. QEMU进程
在KVM虚拟化架构下,每个客户机就是一个QEMU进程,在一个宿主机上有多少个虚拟机就会有多少个QEMU进程;客户机中的每一个vCPU对应QEMU进程中的一个执行线程;一个宿主机中只有一个KVM内核模块,所有客户机都与这个内核模块进行交互。文章来源:https://www.toymoban.com/news/detail-494488.html
2.1.2. 实时迁移
KVM支持实时迁移,这提供了在宿主机之间转移正在运文章来源地址https://www.toymoban.com/news/detail-494488.html
到了这里,关于KVM虚拟化解决方案系列之KVM架构篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!