大家好呀!我是reload。今天来带大家学习一下什么是虚拟化,以及学习KVM虚拟化技术。

一、虚拟化技术

1、概述

虚拟化(Virtualization)的含义很广泛。将任何一种形式的资源抽象成另一种形式的技术都是虚拟化。虚拟化是资源的逻辑表示,其不受物理限制的约束。

2、特点

虚拟化技术有资源共享、成本降低、灵活性提高、易于管理和维护等优点。

1)IT资源独立
2)资源抽象成共享资源池
3)操作系统必须与硬件紧耦合(即模块或系统之间关系非常紧密,存在相互调用)
4)上层操作系统与硬件解耦,操作系统从资源池中分配资源。

3、虚拟化类型

包括硬件虚拟化、操作系统虚拟化、网络虚拟化和存储虚拟化等。

硬件虚拟化可提高硬件利用率,操作系统虚拟化可提供灵活的测试和开发环境,网络虚拟化可提高网络的灵活性和可扩展性,存储虚拟化可提高存储的灵活性和可扩展性。

二、虚拟化技术的几个重要概念

如Guest OS、Host OS等,如下

三、KVM虚拟化技术发展史

KVM(Kernel-based Virtual machine)是一种开源的虚拟化技术,基于Linux内核的虚拟化基础设施。KVM的历史可以追溯到2006年,当时由Qumranet公司的工程师首次开发并发布。

四、KVM虚拟化技术的系统架构

KVM与QEMU的作用及关系如下

五、KVM虚拟化技术的组件架构

KVM、QEMU和Libvirt各自的用处及关系如下

六、KVM虚拟化技术–CPU虚拟化

KVM虚拟化是一种硬件辅助虚拟化技术,利用了现代处理器提供的虚拟化扩展,如Intel的VT-x和AMD的AMD-V。

这些扩展引入了两种操作模式:VMX Root mode(根模式)和VMX Non-Root mode(非根模式,相当于Ring-1)。KVM模块在VMX Root mode下运行,管理和执行虚拟机(Guest OS),而虚拟机在VMX Non-Root mode下运行

在该模式下,KVM模块可直接与硬件交互,管理虚拟机的执行,而虚拟机的操作系统内核(Guest OS)则认为自己在传统的Ring 0级别运行。KVM通过处理VM-Exit和VM-Entry事件来管理虚拟机的特权指令和中断,从而提供高效的虚拟化性能和良好的隔离性

七、KVM虚拟化技术–内存虚拟化

虚拟机中运行的操作系统会像在物理机上一样管理内存,包括维护自己的页表来将虚拟地址(GVA)转换为虚拟机的物理地址(GPA)。但由于虚拟机并不直接控制实际的物理内存,故还需将虚拟机的物理地址(GPA)转换为宿主机的物理地址(HPA),从而实现虚拟机内存的高效访问和隔离。

MMU负责整个转换过程的地址转换。

八、KVM虚拟化技术–存储虚拟化

在KVM中,存储虚拟化通过模拟和管理虚拟机的存储资源实现,使得虚拟机能像直接访问物理设备一样使用存储资源

首先,虚拟机通过前端驱动(Virtio)将存储I/O请求转换为宿主机可理解的请求。然后,这些请求被发送到宿主机的后端挂载驱动,进一步传递给宿主机的存储子系统。宿主机的存储资源通过逻辑卷管理(LVM),为虚拟机提供存储空间。接着,宿主机的通用块层将I/O请求转换为对应的块设备操作,并进行缓存和调度。最后,设备驱动层将通用块层的操作请求转换为特定于硬件的命令。整个过程实现了KVM的存储虚拟化。

九、KVM虚拟化技术–网络虚拟化

KVM默认的网络虚拟化方法是全虚拟化网卡技术,即由QEMU在Linux系统的用户空间中模拟出网卡,然后分配绐虚拟机使用。该方法虽然可以灵活模拟多种类型的网卡,但网络I/O是基于虚拟化引擎的,效率很低,因此促成了全虚拟化半虚拟化网卡技术的产生。

与系统的虚拟化技术类似,全虚拟化网卡与半虚拟化网卡的区别在于,全虚拟化网卡是由虚拟化层完全模拟出来的,而半虚拟化网卡则通过驱动程序对操作系统进行了改造。通过Virtio半虚拟化网卡技术改造虚拟机的操作系统后,可让虚拟机直接与虚拟化层通信,减少了通信的层次,从而提高虚拟机的网络性能。

十、KVM虚拟化技术的作用

KVM虚拟化技术的作用如下,如支持实时快照和批量部署等。