KVM虚拟化技术
大家好呀!我是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虚拟化技术的作用如下,如支持实时快照和批量部署等。