KVM虚拟化基础二(QEMU, KVM虚拟机监控程序,Libvirt)

  
  
QEMU是什么?
     

QEMU是一个通用的和开源机器仿真器和仿真器QEMU官网
QEMU是一套由法布里斯开发者编写的模拟处理器的自由软件,是一个完整的可以单独运行的软件。可独立模拟出整台计算机(CPU/内存/IO设备)它是通过一个特殊的“重编译器”对特定的处理器(CPU)的二进制代码进行翻译转换来提供一系列的硬件模拟,使来宾操作系统认为自己和硬件直接打交道(其实是同QEMU模拟出来的硬件打交道).QEMU再将这些指令翻译给真正硬件进行操作,通过这种模式来宾操作系统可以和主机上的各种IO类及USB设备等进行交互。但由于其所有指令都需要经过QEMU来翻译因而性能会比较差(存软件模拟);
QEMU有两种工作模式:
<代码>系统模式:可模拟出整个电脑系统
<代码>用户模式:可运行不同与当前硬件平台的其他平台上的程序(如在x86平台上运行跑在手臂平台上的程序)
<代码>代码地址:目前最新的版本是3.1,在1.3之后QEMU和QEMU-KVM合二为一叫QEUMU-KVM QEMU代码
 KVM虚拟化基础二(QEMU, KVM虚拟机监控程序,Libvirt)

  
  
KVM是什么?
     

红帽的官网KVM知识点参考红帽官网
KVM的知识点社区参考KVM社区
KVM(内核基础虚拟机)实际上是类Linux发行版内核中提供的虚拟化技术(内核级虚拟化),可将内核直接充当虚拟机监控程序来使用,在内核中独立存在可动态加载。
<强>注意:其处理器(CPU)自身必须支持虚拟化扩展
<>强工作原理:
KVM包含一个内核模块KVM。柯其用来实现核心虚拟化功能,以及一个和处理器强相关的模块kvm-intel.ko或kvm-amd。ko.KVM本身不实现任何模拟仅仅是暴露了一个/dev/KVM接口。这个接口可被宿主机用来主要负责个vCPU的创建,虚拟内存的地址空间分配,个vCPU寄存器的读写以及个vCPU的运行。有了KVM以后来宾操作系统的CPU指令不用再经过QEMU来转译便可直接运行,大大提高了运行速度。但KVM的KVM。柯本身只提供了CPU和内存的虚拟化,其它网络等IO的支持需配合另一组件QEMU-KVM;
<强>动态装载:
如果装载了kvm模块内核立即变为僵尸并变成了Hypervisor(悄悄并腐蚀了寄生在内核级宿主机之上的Hypervisor)用户空间就变为了其中一台虚拟机的管理控制台,完全寄生不驱动任何驱动管理程序;
 kvm虚拟化基础二(QEMU, kvm虚拟机监控程序,Libvirt)

  
  
管理程序是什么?
     

通俗来讲虚拟机监控程序是一种将操作系统与硬件抽象分离的一种技术实现方法。一种运行在物理服务器和操作系统之间的中间软件层(可以是软件程序,也可以是固件程序);
它允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系统;
它可以协调访问服务器上的所有物理设备和虚拟机,当服务器启动并执行程序时它会给每一台虚拟机分配适量的内存,CPU,网络和磁盘,并加载所有虚拟机的客户操作系统,它能够使得这些虚拟机可高效地去分享物理服务器的硬件资源。也叫虚拟机监视器VMM(虚拟机监视器);
Hypervisor是所有虚拟化技术的核心,非中断地支持多工作负载迁移的能力是管理程序的基本功能,
程序翻译过来就是超级监督者,被引申为超级管理程序,超多功能管理器,虚拟机管理器,VMM;
<强>管理程序(主机虚拟化)的两种类型
<代码> 1型虚拟化:在硬件上跑的不是宿主机(直接跑的是虚拟化软件,需驱动底层硬件)所创建每个主机都是虚拟机
<代码> 2型虚拟化:在硬件安装操作系统(操作系统安装虚拟软件vmware, virtualbox)
 KVM虚拟化基础二(QEMU, KVM虚拟机监控程序,Libvirt)

  
  
Libvirt是什么?
     

社区站点:libvirt社区站点
这是RedHat开始支持KVM后搞的一个用户空间虚拟机管理工具。目标是提供一个单一途径以管理多种不同虚拟化方案以及虚拟化主机,其包括:KVM/QEMU, Xen, LXC, OpenVZ或VirtualBox虚拟机监控程序等;
它libvirt内置的API广泛用于云解决方案开发中的虚拟机监视器编排层(编排层)。常用的管理工具,如virsh, virt-install, virt-manager等;

KVM虚拟化基础二(QEMU, KVM虚拟机监控程序,Libvirt)