虚拟化是云计算的基础,虚拟化可以让一台物理服务器上运行多台虚拟机,这些虚拟机虽然共享同一台服务器上的cpu、内存等资源,而它们之间又是彼此相互隔离,可以分配给多个人同时使用,互不影响。我们可以把这台做了虚拟化的物理服务器成为云计算服务器,当这些用户使用虚拟机时,所有的运算、资源调用都在服务器上进行,本地只负责显示和交互,这就是云计算的概念。
在说到云计算时,往往有一些专业术语,让初次接触虚拟化的小白不知所措,这里我们就来解释一下。
Hypervisor:Hypervisor是计算概念的一部分,作为虚拟化技术为人所知。基本上Hypervisor的目的是共享硬件资源,Hypervisor允许多个操作系统共享一个CPU,我们可以简单的把Hypervisor理解成像一个操作系统的的东西,但是它在操作系统的上层。
全虚拟化:把Hypervisor直接安装在物理机器上,在Hypervisor上运行多个虚拟的操作系统。
半虚拟化:在物理机器上先安装操作系统,比如:Linux,然后再操作系统上通过如KVM这些软件来虚拟机。
全虚拟化一般对硬件虚拟化功能进行了特别优化,性能上比半虚拟化要高。
半虚拟化因为基于普通的操作系统,会比较灵活,还可以支持虚拟机嵌套。
KVM:KVM全称是 Kernel-Based Virtual Machine。也就是基 Linux内核实现的虚拟机。
KVM主要包含两个模块:KVM内核模块和QEMU设备模块。
KVM内核模块:主要包括KVM虚拟化核心模块KVM.ko,以及硬件相关的KVM_intel或KVM_AMD模块;负责CPU与内存虚拟化,包括VM创建,内存分配与管理、vCPU执行模式切换等。
QEMU设备模拟:实现IO虚拟化与各设备模拟(磁盘、网卡、显卡、声卡等),通过IOCTL系统调用与KVM内核交互。KVM仅支持基于硬件辅助的虚拟化(如Intel-VT与AMD-V)。
在内核加载时,KVM先初始化内部数据结构,打开CPU控制寄存器CR4里面的虚拟化模式开关,执行VMXON指令将Host OS设置为root模式,并创建的特殊设备文件/dev/kvm等待来自用户空间的命令,然后由KVM内核与QEMU相互配合实现VM的管理。
KVM会复用部分Linux内核的能力,如进程管理调度、设备驱动,内存管理等。
作者:禹龙云 上传时间:2021-05-21 15:39:54