Xen、KVM、Qemu间的关系和区别
- 格式:docx
- 大小:14.72 KB
- 文档页数:2
详解虚拟化技术QEMU-KVM⼊门⼀.QEMU、KVM、QEMU-KVMQEMU提供⼀系列的硬件模拟设备(CPU,⽹卡,磁盘等),客户机指令都需要QEMU翻译,因⽽性能较差。
KVM是linux内核提供的虚拟化,可以⽤来进⾏vCPU的创建与运⾏,虚拟内存的地址空间分配,指令执⾏效率较⾼,但缺少IO设备的虚拟化。
QEMU-KVM就是KVM与QEMU的结合,KVM负责CPU虚拟化+内存虚拟化,QEMU模拟其它IO设备。
⼆.安装并创建虚拟机安装qemu-kvm软件faramita2016@linux-l9e6:~> zypper install qemu-kvm // Ubuntu系统使⽤apt-get install qemu-kvm创建qcow2格式虚拟机磁盘⽂件faramita2016@linux-l9e6:~> qemu-img create -f qcow2 vdisk.img 5G // 磁盘⼤⼩5G使⽤debian镜像安装虚拟机,order=dc优先使⽤CD-ROW(d),后使⽤硬盘(c),内存默认128m,使⽤-m 512指定faramita2016@linux-l9e6:~> qemu-kvm -cpu host -cdrom debian-9.4.0.iso -hda vdisk.img -boot order=dc三.设置虚拟机使⽤⽹桥bridge模式宿主机中执⾏,qemu-bridge-helper增加当前⽤户可执⾏权限,⽤来⾃动添加⽹络后端tap设备faramita2016@linux-l9e6:~> sudo chmod o+x /usr/lib/qemu-bridge-helper宿主机中执⾏,-net nic为虚拟机创建nic⽹卡(⽹络前端),-net bridge指定宿主机中使⽤⽹桥(⽹络后端)faramita2016@linux-l9e6:~> qemu-kvm -cpu host -hda vdisk.img -net nic -net bridge,br=br0 // 指定⽹桥br0虚拟机中执⾏,编辑/etc/network/interfaces,设置静态IProot@debian:~# vi /etc/network/interfaces# The primary network interfaceallow-hotplug ens3#iface ens3 inet dhcpiface ens3 inet staticaddress 10.0.0.8netmask 255.0.0.0gateway 10.0.0.1hwaddress ether 52:54:00:12:34:56 // 设置mac地址,前3组不变root@debian:~# ifup ens3 // 打开ens3⽹络接⼝,ifdown关闭⽹络接⼝root@debian:~# /etc/init.d/networking restart // 重启⽹络服务虚拟机中执⾏,编辑/etc/resolv.conf,设置DNSroot@debian:~# vi /etc/resolv.confnameserver 8.8.8.8 // Google DNS四.设置虚拟机为⾮图形模式虚拟机中执⾏,编辑/etc/default/grub⽂件,添加console=ttyS0启动参数root@debian:~# vi /etc/default/grubGRUB_DEFAULT=0 // 默认启动项GRUB_TIMEOUT=0 // 默认菜单项停留时间GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`GRUB_CMDLINE_LINUX_DEFAULT="quiet" // 默认内核启动参数GRUB_CMDLINE_LINUX="console=ttyS0" // ⼿动添加内核启动参数,添加console=ttyS0虚拟机中执⾏,更新grub配置,并重启root@debian:~# update-grubroot@debian:~# shutdown -h nowa.宿主机中执⾏,添加-nographic参数创建虚拟机,当前shell前台创建虚拟机faramita2016@linux-l9e6:~> qemu-kvm -cpu host -hda vdisk.img -net nic -net bridge,br=br0 -nographicb.宿主机中执⾏,添加-display none -daemonize参数创建虚拟机,当前shell后台创建虚拟机faramita2016@linux-l9e6:~> qemu-kvm -cpu host -hda vdisk.img -net nic -net bridge,br=br0 -display none -daemonize五.以只读⽅式启动虚拟机a.创建⼀个快照⽤qemu-img命令创建⼀个原始镜像的快照faramita2016@linux-l9e6:~> qemu-img create -f qcow2 -b vdisk.img snapshot.img使⽤快照⽂件启动虚拟机faramita2016@linux-l9e6:~> qemu-kvm -cpu host -hda snapshot.img -net nic -net bridge,br=br0 -nographicb.使⽤临时快照原理:创建⼀个临时快照,虚拟机启动之后,⾃动删除快照⽂件faramita2016@linux-l9e6:~> qemu-kvm -cpu host -hda vdisk.img -net nic -net bridge,br=br0 -snapshot -nographic以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
服务器虚拟化技术简介中提到云计算最重要的就是服务器虚拟化和调度(Scheduler),本⽂将简单介绍服务器虚拟化原理。
服务器虚拟化是指将⼀台计算机(称为物理机、物理服务器)通过hypervisor虚拟为多台逻辑计算机的技术,这些逻辑计算机⼜被称为虚拟机(VM,Virtual Machine),每台虚拟机都拥有独⽴的“硬件”。
虽然你可以在虚拟机的操作系统中看到这些“硬件”,不过它们并不是真实存在的,⽽是通过hypervisor将物理机的硬件虚拟⽽来。
虚拟机运⾏时,虚拟机硬件的⼯作实际是由物理机的硬件完成的。
hypervisor⼜被称为虚拟机监视器(VMM,Virtual Machine Monitor),是实现物理机虚拟为虚拟机的操作系统或者软件,它为虚拟机提供虚拟的硬件资源,负责管理和分配这些资源,并确保上层虚拟机之间的相互隔离。
hypervisor有两种类型:⼀种是操作系统,直接安装在物理机上;另⼀种是应⽤程序,需要先在物理机上安装操作系统,再在操作系统中安装hypervisor。
服务器虚拟化的分类服务器虚拟化的有多种划分⽅式,可以根据虚拟化架构划分为裸⾦属/寄居,根据虚拟化层次硬件辅助虚拟化/软件辅助虚拟化,根据虚拟化平台划分为全虚拟化/半虚拟化。
裸⾦属/寄居未虚拟化的x86服务器架构,⾃下⽽上是物理硬件(Hardware)、操作系统(OS),应⽤程序(APP)。
这和我们个⼈计算机⼀样,就是在计算机上装操作系统,再在操作系统⾥⾯安装应⽤程序。
未虚拟化的x86服务器裸⾦属裸⾦属(bare-metal)架构也叫bare-metal hypervisor、Ⅰ型,最有代表性就是VMware ESX(i)。
VMware ESXiESXi是VMware的企业级服务器虚拟化技术,本⾝是⼀个操作系统,直接安装的物理服务器上。
使⽤ESXi需要先在物理服务器上安装ESXi,然后在ESXi中创建各种虚拟硬件(相应虚拟硬件的集合,不包括操作系统,也可以称为虚拟机),再在虚拟机上安装操作系统,最后才能在这些操作系统中安装应⽤程序。
服务器虚拟化技术Xen和KVM的比较在现代信息技术迅速发展的今天,服务器虚拟化技术成为企业及个人管理和应用服务器的重要工具和方法。
而Xen和KVM是目前应用较为广泛的两种服务器虚拟化技术。
本文将对它们的特点、优缺点以及适用场景进行比较和分析。
Xen是一种基于x86平台的开源虚拟化技术,由剑桥大学开发并于2003年发布。
Xen使用宿主机(Host)和客户机(Guest)的模式,即宿主机上运行宿主操作系统(Host OS),而客户机上则运行被虚拟化的操作系统(Guest OS)。
这种架构使得Xen可以实现高效的资源分配和管理,提供良好的隔离性和稳定性。
Xen采用了“半虚拟化”技术,它需要对Guest OS进行修改以适应虚拟化环境。
这一特点使得Xen相对于完全虚拟化技术来说,具有更高的性能和效率。
与Xen不同,KVM(Kernel-based Virtual Machine)是一种基于Linux内核的虚拟化技术,它于2006年由Red Hat公司发布。
KVM通过使用Linux内核的虚拟化功能,将宿主机作为一个虚拟机管理程序运行,从而提供了一种轻量级而高效的虚拟化解决方案。
KVM可以通过硬件的虚拟化扩展(Intel VT和AMD-V)来提供虚拟机的运行环境,同时它还能够利用Linux的丰富资源管理功能,实现更好的资源调度和利用效率。
相比于Xen的半虚拟化技术,KVM采用了全虚拟化技术,无需修改Guest OS,因此更加容易部署和维护。
就性能而言,Xen和KVM各有优势。
Xen的半虚拟化技术使得Guest OS可以直接访问物理硬件,因此在I/O密集型应用场景下具有较好的性能表现。
而KVM在处理CPU密集型任务时表现更加出色,因为它利用了硬件虚拟化扩展来提高CPU虚拟化的效率。
在可移植性方面,Xen相比于KVM更具优势。
Xen可以在多个操作系统平台上运行,包括Linux、Windows、FreeBSD等,这为多平台的应用提供了更好的支持。
Xen、KVM、Qemu间的关系和区别Aha,忽然发现我也是个标题党,十分钟搞定某某技能这种标题最吸引人了。
当然我也不是华而不实,是不是干货,你读了才知道。
话说,接触Xen这么久了,现在才花时间搞清楚这个问题,要不是需要给别人解释,还不知道要等到什么时候才来写这篇博客。
闲话少说,进入正题。
关于qemuQemu是一个独立的虚拟化解决方案,通过intel-VT 或AMD SVM实现全虚拟化,安装qemu的系统,可以直接模拟出另一个完全不同的系统环境,虚拟机的创建通过qemu-image既可完成。
QEMU本身可以不依赖于KVM,但是如果有KVM的存在并且硬件(处理器)支持比如Intel VT功能,那么QEMU在对处理器虚拟化这一块可以利用KVM提供的功能来提升性能。
关于KVMKVM是集成到Linux内核的Hypervisor,是X86架构且硬件支持虚拟化技术(IntelVT或AMD-V)的Linux的全虚拟化解决方案。
它是Linux的一个很小的模块,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等。
准确来说,KVM是Linuxkernel的一个模块。
可以用命令modprobe去加载KVM模块。
加载了模块后,才能进一步通过其他工具创建虚拟机。
但仅有KVM模块是远远不够的,因为用户无法直接控制内核模块去作事情,你还必须有一个运行在用户空间的工具才行。
这个用户空间的工具,kvm开发者选择了已经成型的开源虚拟化软件QEMU。
说起来QEMU也是一个虚拟化软件。
它的特点是可虚拟不同的CPU。
比如说在x86的CPU上可虚拟一个Power的CPU,并可利用它编译出可运行在Power上的程序。
KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM的用户空间工具了。
所以你会看到,官方提供的KVM下载有两大部分(qemu和kvm)三个文件(KVM模块、QEMU 工具以及二者的合集)。
也就是说,你可以只升级KVM模块,也可以只升级QEMU工具。
操作系统虚拟化软件使用技巧分享第一章:什么是操作系统虚拟化软件操作系统虚拟化软件是一种将一台物理计算机划分为多个虚拟计算机的技术。
通过虚拟化软件,用户可以在同一物理计算机上同时运行多个独立的操作系统实例,并将它们隔离开来,使每个实例看起来像在一台独立的计算机上运行一样。
虚拟化软件可以提高计算机资源的利用率,并简化计算机管理。
第二章:常见的操作系统虚拟化软件1. VMwareVMware是一家知名的虚拟化技术提供商,其虚拟化软件VMware Workstation和VMware ESXi广泛应用于办公室和数据中心环境中。
VMware提供了强大的管理工具和高度可配置的虚拟机设置,使用户能够轻松创建、配置和管理虚拟机。
2. XenXen是一种开源的操作系统虚拟化软件,它提供了高性能和高安全性的虚拟化解决方案。
Xen通过将物理计算机划分为多个虚拟机并运行各个虚拟机的操作系统来实现虚拟化。
Xen还支持动态迁移功能,可以将虚拟机从一台物理计算机迁移到另一台物理计算机上。
3. KVMKVM是一种基于Linux内核的虚拟化软件,它使用虚拟化扩展的x86处理器来实现虚拟化。
KVM提供了强大的性能和可伸缩性,可以在物理计算机上同时运行大量的虚拟机。
KVM还支持多种操作系统,包括Linux、Windows等。
第三章:操作系统虚拟化软件的安装与配置1. 安装虚拟化软件安装虚拟化软件时,需要注意选择适合自己需求的版本。
安装过程通常很简单,只需按照软件的指导进行操作即可。
2. 虚拟机配置创建虚拟机时,需要指定虚拟机的内存、CPU、硬盘等资源分配情况。
根据自己的需求合理分配资源,避免资源浪费或不足的情况。
3. 网络配置虚拟机通常需要与外部网络进行通信,可以选择桥接、NAT或仅主机等网络模式来配置虚拟机的网络连接。
根据实际情况选择合适的网络配置方式。
第四章:操作系统虚拟化软件的使用技巧1. 快照功能虚拟化软件通常都支持快照功能,可以将虚拟机的状态保存为一个快照,以便在需要时恢复到该状态。
KVM、Xen、VMware的对比首先:KVM、Xen是开源、免费的,而VMware的源代码不开放。
详细的性能指标如下:Xen的6大优势:1. 可用资源,Xen比KVM问世早四年(2003),市场占有率大,可用资源丰富2. 平台支持:Xen在新版本中支持更多的主机和客体工作环境,包括泛虚拟化技术、硬件辅助支持以及修改过或未修改过的客体操作系统;对UNIX、Linux和Windows的特定支持;包括芯片组,如x86、IA64和AMD、Fujitsu、IBM、Sun等公司的ARM,以及x86/64 CPU商家和Intel嵌入式的支持等。
3. 可管理性,Xen具有一个更加宽泛的第三方配给、备份、存储管理、P2V、容量规划、性能监控、进程自动化、安全和其它管理规则社区,如IBM、Microsoft以及HP等。
4. 实施,Xen的运行和管理都是在较低级别的(Ring 0)。
甚至对于新虚拟机创建,客体机器并不需要像KVM那样共享内存块、CPU指令或者任何底层的Linux操作系统。
5. 动态迁移,Xen支持非中断的动态迁移,允许动态工作负载平衡和例行维护而没有任何宕机时间,KVM的固有属性决定其必然有宕机时间。
6. 性能,大多数的KVM和Xen性能基准的对比都表明Xen具有更好的处理机性能,只有在I/O方面逊于KVM。
Xen在虚拟网络支持、虚拟存储支持、安全增强、高可用性、容错处理、电源管理、HPC或者实时支持、虚拟CPU可扩展性、跨平台兼容性。
虚拟机可移植性、虚拟应用设备市场以及已经建立起来的云服务社区等诸多方面都要比KVM优越KVM的优势:1. Xen是Linux内核下的一个产品,而KVM是Linux内核的一部分,所以很容易控制虚拟化进程,得到Linux厂商(红帽、Ubuntu)的大力支持。
2. Xen的泛虚拟化技术需要修改操作系统,默认的windows安装并不支持泛虚拟化。
而KVM是一个轻量级的虚拟化程序管理模块,补丁包能和Linux很好的兼容,不需要需改操作系统,就可以直接和硬件进行交互,3. Xen缺少很好的整合,所以将会是Linux内核的负担越来越重。
qemu虚拟化原理QEMU(全称为Quick EMUlator)是一种开源的虚拟化软件,它能够模拟不同的硬件平台,并在其上运行各种操作系统。
QEMU虚拟化原理基于硬件虚拟化技术,通过模拟硬件环境,使得在一台物理机上能够同时运行多个虚拟机,并且各个虚拟机之间互不干扰。
QEMU的虚拟化原理主要分为两个关键部分:模拟器和加速器。
模拟器负责模拟虚拟机的硬件环境,包括处理器、内存、设备等,而加速器则通过一些优化技术提高虚拟机的性能。
在QEMU中,虚拟机通过模拟器来模拟不同的硬件平台。
QEMU 支持多种处理器架构,如x86、ARM、MIPS等,因此可以运行不同架构的操作系统。
模拟器会将虚拟机的指令翻译成宿主机的指令,然后再由宿主机的处理器执行。
这个过程中,模拟器需要处理指令的翻译、内存的访问等,因此会引入一定的性能损耗。
为了提高虚拟机的性能,QEMU引入了加速器。
加速器通过直接执行虚拟机指令来避免指令的翻译,从而加快虚拟机的运行速度。
QEMU中常用的加速器有KVM(Kernel-based Virtual Machine)、Xen、HAXM(Intel Hardware Accelerated Execution Manager)等。
这些加速器利用硬件虚拟化技术,将指令直接交给宿主机的处理器执行,避免了模拟器的性能损耗,提高了虚拟机的运行效率。
除了模拟器和加速器,QEMU还提供了一些其他的功能。
例如,QEMU支持虚拟机的快照功能,可以保存虚拟机的状态,并在需要时恢复到该状态。
这对于虚拟机的测试和调试非常有用。
此外,QEMU还支持虚拟机之间的网络连接,可以实现虚拟机之间的通信和互联网访问。
QEMU的虚拟化原理使得用户可以在一台物理机上同时运行多个虚拟机,实现资源的共享和隔离。
虚拟机之间相互独立,可以运行不同的操作系统和应用程序,而不会相互干扰。
这为开发人员和系统管理员提供了更灵活的环境,可以在同一台物理机上进行不同操作系统的开发、测试和部署。
KVM,QEMU核⼼分析现在的问题是学习虚拟化软件KVM相关实施原则、处理,的源代码的分析总结,,若有不对的地⽅,希望⼤家提出。
因为有⼀些代码结构图或者是架构图上传⽐較⿇烦。
所以博⽂都放在了⾃⼰的个⼈博客上。
⿇烦⼤家移步查看:⽂章列表(可直接点击进⼊)依据这段时间对Linux KVM的研究。
现将KVM的安装与Virtual OS的启动进⾏总结说明。
《kvm安装与启动过程说明》进⾏了通⽤桌⾯系统的虚拟机安装。
在本⽂中将介绍⾃⾏编译linux Kernel内核源代码,⽆桌⾯OS虚拟机安装和启动。
为兴许内核调试打下基础。
传统OS环境中,CPU对内存的訪问都必须通过MMU将虚拟地址VA转换为物理地址PA从⽽得到真正的Physical Memory Access,即:VA->MMU->PA。
虚拟执⾏环境中因为Guest OS所使⽤的物理地址空间并⾮真正的物理内存,⽽是由VMM供其所使⽤⼀层虚拟的物理地址空间,为使MMU可以正确的转换虚实地址,Guest中的地址空间的转换和訪问都必须借助VMM来实现,这就是内存虚拟化的主要任务。
即:GVA->MMU Virtualation->HPA。
在嵌套虚拟环境(Nested Virtualization)下,执⾏在hypervisor上的Virtual Machine仍能够作为hypervisor去执⾏其他的Virutal Machine,⽽KVM也⽀持了这样的强⼤的特性。
⽽在《KVM硬件辅助虚拟化之EPT》⼀⽂中,我们具体分析了单层虚拟机并引⼊硬件辅助虚拟化EPT功能的环境下,Guest OS中的虚拟地址到真实物理地址的訪问⽅法,即在EPT页表的帮助下,通过⼆维的页表机制。
终于实现GVA到HPA的转换。
那么在多层嵌套虚拟机情况下,EPT⼜是怎样发挥作⽤的呢?相信⾮常多的⼈对虚拟机并不陌⽣。
眼下也有⾮常多优秀的虚拟机软件,⽐如:VMware, VirtualBox, Xen, KVM等。
kvm介绍⼀、KVM概念1、什么是KVM? KVM 全称 Kernel-Based Virtual Machine。
也就是说 KVM 是基于 Linux 内核实现的,这就使得linux内核本⾝就相当于⼀个Hypervisor。
Hypervisor是⼀种运⾏在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应⽤共享⼀套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系统,它可以协调访问服务器上的所有物理设备和虚拟机,也叫虚拟机监视器(Virtual Machine Monitor),即vmm。
主要功能就是⽤来控制⽣成vm,并管理多个vm的运⾏,不同的vm中可以安装不同的操作系统,这些操作系统共⽤⼀台硬件主机, 因为直接使⽤linux内核的调度器进⾏管理,所以⽐xen的代码少很多2、为何要⽤KVM? 虚拟化是云计算的基础之⼀,⽽⽆论是在部署,还是在研发、测试⽅⾯,kvm都是排在第⼀位的Hypervisor(即vmm,虚拟机监视器)。
kvm以⾼性能,可扩展性、⾼安全性,以及低成本⽽深受⽤户喜爱,这⼀切也与他基于linux内核实现有关。
3、KVM的功能 kvm⽤⼀个个进程来运⾏虚拟机。
(1)最主要的功能1. 基于kvm,可以执⾏热迁移,将⼀个运⾏的虚拟机从⼀个运⾏vm从⼀台物理机移动到另外⼀台物理主机,⽽vm⾥的运⾏不受影响(⼏台部署kvm虚拟化的物理机共享⼀个存储,存储内存放虚拟机的xml⽂件,这样在另外⼀台主机启⼀个虚拟机的进程是很快的,然后关联上待迁移主机的xml⽂件,就实现了热迁移);2. 可以保存当前虚拟机的运⾏状态到硬盘,然后可以重新启动虚拟机,这是虚拟机的运⾏状态和之前⼀样。
(2)其余功能⽀持CPU 和 memory 超分(Overcommit)⽀持半虚拟化I/O (virtio)⽀持热插拔(cpu,块设备、⽹络设备等)⽀持对称多处理(Symmetric Multi-Processing,缩写为 SMP )⽀持 PCI 设备直接分配和单根I/O 虚拟化(SR-IOV)⽀持内核同页合并(KSM )⽀持 NUMA (Non-Uniform Memory Access,⾮⼀致存储访问结构)⼆、常见虚拟化模式 按照Hypervisor的实现⽅式和位置不同,常见的形式分两种。
VPS采⽤的⼏种常见技术(OVZ、Xen、KVM)介绍与对⽐很多⼈看到同样配置的VPS价格相差很⼤,甚是不理解,其实VPS使⽤的虚拟技术种类有很多,如OpenVZ、Xen、KVM、Xen和HVM与PV。
在+XEN中pv是半虚拟化,hvm是全虚拟化,pv只能⽤于linux内核的系统,效率更⾼,hvm可以虚拟所有常见操作系统(可以使⽤windows),+理论效率⽐pv略低,另外,hvm需要cpu虚拟化指令⽀持,pv⽆此要求。
KVM是新兴的虚拟化项⽬,出售KVM的VPS商家不多,但据说KVM虚拟技+术是⽐较强悍的。
⽽OpenVZ是⼀个类似于Linux-VServer的操作系级全虚拟化解决⽅案,⽬前基于Xen和 OpenVZ的VPS服务商⽐较+多。
下⾯是⼏种常见技术OpenVZ、Xen、KVM做简单介绍和对⽐,以备你选购⾃⼰合适的VPS。
OpenVZOpenVZ是操作系统级别的虚拟化技术,是底层操作系统上的⼀层应⽤,这意味着易于理解和低权重开销,⼀般来说也意味着更优的性能。
但是OpenVZ配置起来⽐较灵活,给⿊⼼服务商改低限制的机会。
优势:现在外⾯卖的这种类型,许可的内存都超⼤,CPU也强劲,⽽且卖家很多,可⽐性也很强。
性价⽐超⾼。
劣势:超卖,没有不超卖的,导致各种⽯头盘,钻⽯盘。
连带的cpu也被过度分割导致性能升值不如其标明的1/10。
再有就是内存,基本上OpenVZ技术没有独占的,都是共享,别⼈多了你就少了,⽽且这种技术最⼤的劣势就是内存下来后直接就是当机。
还有开设vpn各种不⽅便。
XenXen是半虚拟化技术,它并不是⼀个真正的虚拟机,⽽是相当于⾃⼰运⾏了⼀个内核的实例,可以⾃由的加载内核模块,虚拟的内存和IO,稳定⽽且可预测。
分Xen+pv+和Xen+hvm,区别就是pv只⽀持linux,⽽hvm⽀持win系统。
优势:内存独占,虽然⼩但是保证分配的到。
部分虚拟技术决定了就算是超卖也不会超太离谱。
所以⼀般的母鸡就算超了,也很少导致⽯头盘。
Xen、KVM、Qemu间的关系和区别
Aha,忽然发现我也是个标题党,十分钟搞定某某技能这种标题最吸引人了。
当然我也不是华而不实,是不是干货,你读了才知道。
话说,接触Xen这么久了,现在才花时间搞清楚这个问题,要不是需要给别人解释,还不知道要等到什么时候才来写这篇博客。
闲话少说,进入正题。
关于qemu
Qemu是一个独立的虚拟化解决方案,通过intel-VT 或AMD SVM实现全虚拟化,安装qemu的系统,可以直接模拟出另一个完全不同的系统环境,虚拟机的创建通过
qemu-image既可完成。
QEMU本身可以不依赖于KVM,但是如果有KVM的存在并且硬件(处理器)支持比如Intel VT功能,那么QEMU在对处理器虚拟化这一块可以利用KVM 提供的功能来提升性能。
关于KVM
KVM是集成到Linux内核的Hypervisor,是X86架构且硬件支持虚拟化技术(IntelVT 或AMD-V)的Linux的全虚拟化解决方案。
它是Linux的一个很小的模块,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等。
准确来说,KVM是Linuxkernel的一个模块。
可以用命令modprobe去加载KVM模块。
加载了模块后,才能进一步通过其他工具创建虚拟机。
但仅有KVM模块是远远不够的,因为用户无法直接控制内核模块去作事情,你还必须有一个运行在用户空间的工具才行。
这个用户空间的工具,kvm开发者选择了已经成型的开源虚拟化软件QEMU。
说起来QEMU也是一个虚拟化软件。
它的特点是可虚拟不同的CPU。
比如说在x86的CPU上可虚拟一个Power的CPU,并可利用它编译出
可运行在Power上的程序。
KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM 的用户空间工具了。
所以你会看到,官方提供的KVM下载有两大部分(qemu和kvm)三个文件(KVM模块、QEMU工具以及二者的合集)。
也就是说,你可以只升级KVM模块,也可以只升级QEMU工具。
这就是KVM和QEMU的关系。
关于Xen
实验室课题缘故,从一开始接触的就是Xen虚拟机,关于Xen的使用和开发都做了,也算是熟悉。
Xen的编译安装是第一个要掌握的东西,首先你需要下载Xen的源码,然后执行configure、make 、make install。
当然你也可以选择性的安装make install-xen,这种方法仅限于第二次使用Xen,并对源码做了更改后,可以不去编译安装tools文件夹下的东西,直接编译安装xen即可。
那么tools下有什么东西呢?实际tools除了实现xl 、xm 命令之外,还有很重要的一部分,也就是qemu-xen,qemu-xen-traditional等一些与qemu 有关的程序。
这也就是我们今天要解释的xen中是如何使用qemu的。
总结
Qemu是一套独立的虚拟化解决方案,KVM是另一套虚拟化解决方案,不过因为这个方案实际上只实现了内核中对处理器(Intel VT, AMDSVM)虚拟化特性的支持,换言之,它缺乏设备虚拟化以及相应的用户空间管理虚拟机的工具,所以它借用了QEMU的代码并加以精简,连同KVM一起构成了另一个独立的虚拟化解决方案,不妨称之为:KVM+QEMU.。
Xen是另一套独立的虚拟化解决方案,最初的Xen只支持半虚拟化,Intel VT技术出现后,添加了全虚拟化功能,这个全虚拟化功能也是借助了qemu实现,但不是完全依赖qemu。