目录
一、虚拟化基础
虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机(对计算机物理资源的抽象,实现资源的模拟、隔离和共享)。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。虚拟化是一种资源管理技术,打破实体结构的不可分割的障碍,可以对数据中心的所有资源进行虚拟化和管理,可以实现服务虚拟化、存储虚拟化、网络虚拟化和桌面虚拟化。
Ⅰ、虚拟化管理程序Hypervisor
虚拟化管理程序是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件,也称VMM(Virtual Machine Monitor),即虚拟机监视器。
hypervisor是一种在虚拟环境中的“元”操作系统。它们可以访问服务器上包括磁盘和内存在内的所有物理设备。hypervisor不但协调着这些硬件资源的访问,也同时在各个虚拟机之间施加防护。当服务器启动并执行hypervisor时,它会加载所有虚拟机客户端的操作系统,同时会分配给每一台虚拟机适量的内存、CPU、网络和磁盘。
(1)Hypervisor类型:半虚拟化
对客户端操作系统(VM)的内核进行修改,将运行在Ring0上指令转为调用Hypervisor。
例如:Xen
(若要安装linux,需要安装修改过内核后的操作系统,若安装Windows,因为内核不能修改,则无法安装。)
(2)Hypervisor类型:硬件辅助全虚拟化
对CPU指令集进行改造;客户操作系统可以直接使用Ring 0而无需修改。例如:KVM、ESXI。
(只是修改了CPU,网络和存储仍然没有,此时可以用支持虚拟化的网卡,也可以对网卡和存储使用半虚拟化驱动程序)对操作系统没有要求。
KVM:用来逻辑分割物理资源,抽象化为虚拟化资源,根据VMM里的配置,会逻辑分割出多少G,给应用程序,去进行虚拟化;只接受来自QEMU的请求指令。对于应用程序直接过来的敏感指令会拦截,然后通过接口发给QEMU,让QEMU判断是否需要执行,可以的话,再下来,不可以的话,打回去,不执行该敏感指令。
(3)Hypervisor类型:软件全虚拟化
模拟CPU让VM使用,即软件全虚拟化qemu,效率最低。(不依赖硬件,可以模拟出异构的系统)
QEMU:可以理解为队列,核心目的是调用资源内核中的资源,需要把KVM逻辑分割出来的资源运输给QEMU,再给虚拟机。QEMU它并不是直接调用,而是用I/O方式调用,QEMU把资源调用来的过程借用ioctl,QEMU借助libvirt这个工具调用ioctl,再通过接口,给虚拟机应用程序。
Ⅱ、虚拟化分类
(1)基于平台的平台虚拟化
如果把x86平台的CPU、内存和外设作为资源、那对应的虚拟化技术就是平台虚拟化,在同一个x86平台上,可以虚拟多个x86平台,每个平台可以运行自己独立完整的操作系统 (不提供操作系统、只提供操作系统运行的环境,不过可以实现系统的快速安装、迁移)