QEMU是什么?
QEMU is a generic and open source machine emulator and virtualizer QEMU官网
QEMU是一套由 Fabrice Bellard 开发者编写的模拟处理器的自由软件,是一个完整的能够单独运行的软件。可独立模拟出整台计算机(CPU/内存/IO设备)它是经过一个特殊的“重编译器”对特定的处理器(CPU)的二进制代码进行翻译转换来提供一系列的硬件模拟,使Guest OS认为本身和硬件直接打交道(实际上是同QEMU模拟出来的硬件打交道)。QEMU再将这些指令翻译给真正硬件进行操做,经过这种模式Guest OS能够和主机上的各类IO类及USB设备等进行交互。但因为其全部指令都须要通过QEMU来翻译于是性能会比较差(存软件模拟);
QEMU有两种工做模式:系统模式:可模拟出整个电脑系统
用户模式:可运行不一样与当前硬件平台的其余平台上的程序(如在x86平台上运行跑在ARM平台上的程序)
代码地址:目前最新的版本是3.1,在1.3以后QEMU和QEMU-KVM合二为一叫QEUMU-KVM
QEMU 代码 php
KVM 是什么?
红帽的官网KVM知识点参考 红帽官网
KVM的知识点社区参考 KVM社区
KVM(Kernel -base-virtual machine)其实是类Linux发行版内核中提供的虚拟化技术(内核级虚拟化),可将内核直接充当Hypervisor来使用,在内核中独立存在可动态加载。
注意:其处理器(CPU)自身必须支持虚拟化扩展
工做原理:
KVM包含一个内核模块kvm.ko其用来实现核心虚拟化功能,以及一个和处理器强相关的模块 kvm-intel.ko或kvm-amd.ko。KVM自己不实现任何模拟仅仅是暴露了一个 /dev/kvm 接口。这个接口可被宿主机用来主要负责vCPU的建立、虚拟内存的地址空间分配、vCPU寄存器的读写以及vCPU的运行。有了KVM之后Guest OS的CPU指令不用再通过QEMU来转译即可直接运行,大大提升了运行速度。但KVM的kvm.ko自己只提供了CPU和内存的虚拟化,其它网络等IO的支持需配合另外一组件 QEMU-KVM;
动态装载:
若是装载了kvm模块内核当即变为僵尸并变成了Hypervisor(悄悄并腐蚀了寄生在内核级宿主机之上的Hypervisor)用户空间就变为了其中一台虚拟机的管理控制台,彻底寄生不驱动任何驱动管理程序;html
Hypervisor 是什么?
通俗来说 Hypervisor 是一种将操做系统与硬件抽象分离的一种技术实现方法。一种运行在物理服务器和操做系统之间的中间软件层(能够是软件程序,也能够是固件程序);
它容许多个操做系统和应用共享一套基础物理硬件,所以也能够看做是虚拟环境中的“元”操做系统;
它能够协调访问服务器上的全部物理设备和虚拟机,当服务器启动并执行Hypervisor时它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载全部虚拟机的客户操做系统,它可以使得这些虚拟机可高效地去分享物理服务器的硬件资源。也叫虚拟机监视器VMM(Virtual Machine Monitor);
Hypervisor是全部虚拟化技术的核心,非中断地支持多工做负载迁移的能力是Hypervisor的基本功能;
Hypervisor 翻译过来就是超级监督者,被引伸为超级管理程序、超多功能管理器、虚拟机管理器、VMM;
Hypervisor(主机虚拟化)的两种类型1型虚拟化:在硬件上跑的不是宿主机(直接跑的是虚拟化软件,需驱动底层硬件)所建立每一个主机都是虚拟机
2型虚拟化:在硬件安装操做系统(操做系统安装虚拟软件vmware,virtualbox)
linux
Libvirt 是什么?
社区站点:libvirt 社区站点
这是 RedHat 开始支持KVM后搞的一个用户空间虚拟机管理工具。目标是提供一个单一途径以管理多种不一样虚拟化方案以及虚拟化主机,其包括:KVM/QEMU,Xen,LXC,OpenVZ 或 VirtualBox hypervisors等 ;
它Libvirt内置的API普遍用于云解决方案开发中的虚拟机监视器编排层(Orchestration Layer)。经常使用的管理工具如,virsh,virt-install,virt-manager等;
Libvirt 的一些主要功能git
各类虚拟机生命周期的操做,如:启动、中止、暂停、保存、恢复和迁移等;多种不一样类型设备的热插拔操做,包括磁盘、网络接口、内存、CPU等
Libvirt 的全部功能均可以在运行着 libvirt 守护进程的机器上执行,包括远程机器。经过最简便且无需额外配置的 SSH 协议,远程链接可支持多种网络链接方式
任何运行 libvirt 守护进程的主机均可以用于管理多种类型的存储:建立多种类型的文件镜像(qcow2,vmdk,raw,...),挂载 NFS 共享,枚举现有 LVM 卷组,建立新的 LVM 卷组和逻辑卷,对裸磁盘设备分区,挂载 iSCSI 共享,以及更多......
任何运行 libvirt 守护进程的主机均可以用于管理物理的和逻辑的网络接口,枚举现有接口,配置(和建立)接口、桥接、VLAN、端口绑定
任何运行 libvirt 守护进程的主机均可以管理和建立虚拟网络。Libvirt 虚拟网络使用防火墙规则实现一个路由器,为虚拟机提供到主机网络的透明访问
安装:安装 libvirt 以及至少一个虚拟运行环境(hypervisor)基于守护进程/客户端架构的 libvirt 只需装在须要实现虚拟化的机器上,服务及客户端能够是相同的物理机器
Libvirt 的 KVM/QEMU 驱动
KVM/QEMU驱动站点服务器
Archlinux站点上的Libvirt参考?