云计算基础知识点

KVM  ---------- >        基于Linux内核实现 

其中一个内核模块为 kvm.ko ,用于管理虚拟CPU和内存

只关注虚拟机的调度和内存管理

 

KVM 的CPU虚拟化

KVM 的虚拟化需要 CPU 的硬件支持。一个 KVM 虚拟机在宿主机 (host,一般为物理机) 中是一个 qemu-kvm 进程,与其他的Linux进程一样被调度。

虚拟机中的每一个虚拟的 vCPU 则对应 qemu-kvm 进程中的一个线程。

云计算基础知识点

其中 , 宿主机 有两个物理 CPU ,上一层为两个虚拟机 VM1 和 VM2

VM1 有两个 vCPU 和 两个线程

VM2 有4个 vCPU 和 4 个线程

因此可以看出 ,虚拟机的 vCPU 总数可以超过物理 CPU 的数量,即 CPU 的超配。在使用超配时应需要 对虚拟机的负载情况有所了解,并进行测试。

 

KVM 的内存虚拟化

 KVM 通过 内存虚拟化共享物理系统内存,动态分配给虚拟机。

KVM需要实现 VA (虚拟内存) -> PA(物理内存)-> MA(机器内存)之间的地址转换。

虚拟 OS 控制虚拟地址到客户内存物理地址的映射,但是虚拟机 OS  不能直接访问实际机器的内存 ,因此 KVM 需要负责映射客户物理内存到实际机器内存。

 

 

 

IO的虚拟化,例如存储和网络设备由 Linux内核 和 Qemu 来实现

 

Libvirt    ---------->      KVM 的管理工具

包括 : 后台 daemon   程序  libvirtd 、API 库  和 命令行工具virsh

libvirtd 是服务程序,接收和处理API 的请求

API 库使得其他人可以开发基于Libvirt的高级工具

virsh 是经常要使用的KVM命令行工具

 

qemu-kvm 和 qemu-system 是 KVM 和 QEMU 的核心包,提供 CPU 、 内存 和 IO 虚拟化功能

libvirt-bin 即 libvirt ,用于管理 KVM 等 Hypervisor

virt-manager 是 KVM 图形化管理工具

bridge-utils 和 vlan  ,主要是网络虚拟化的需要,KVM 网络虚拟化的实现是基于linux-bridge 和 vlan