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系统。
优势:内存独占,虽然⼩但是保证分配的到。
部分虚拟技术决定了就算是超卖也不会超太离谱。
所以⼀般的母鸡就算超了,也很少导致⽯头盘。
虚拟化技术概览您的评价: 收藏该经验阅读目录• 1. 全虚拟化(Full Virtualization)• 2. 半虚拟化(Para Virtualization)• 1. KVM• 2. Xen• 3. Hyper-V• 4. Vmware ESXI• 5. QEMU• 6. KVM和QEMU的关系• 1. Linux虚拟化技术Xen和KVM的优势特点对比• 2. 虚拟化Xen和虚拟化KVM在Linux下的区别• 3. VPS 选择本篇文章所有资料均收集自网上,本文仅做了一下梳理和汇总。
本文首先介绍了虚拟化技术:全虚拟化和半虚拟化,然后介绍了KVM、Xen、Hyper-V、VMWARE EXSI的原理和架构,接着重点对KVM和Xen做了比较,并对两者的未来发展提供了一些业界人士的观点,最后对Google、Amazon、IBM、Microsoft的云计算产品进行了介绍。
一、虚拟化技术:全虚拟化、半虚拟化1. 全虚拟化(Full Virtualization)全虚拟化也成为原始虚拟化技术,该模型使用虚拟机协调guest操作系统和原始硬件,VMM在guest操作系统和裸硬件之间用于工作协调,一些受保护指令必须由Hypervisor (虚拟机管理程序)来捕获处理。
全虚拟化模型全虚拟化的运行速度要快于硬件模拟,但是性能方面不如裸机,因为Hypervisor需要占用一些资源回到顶部2. 半虚拟化(Para Virtualization)半虚拟化是另一种类似于全虚拟化的技术,它使用Hypervisor分享存取底层的硬件,但是它的guest操作系统集成了虚拟化方面的代码。
该方法无需重新编译或引起陷阱,因为操作系统自身能够与虚拟进程进行很好的协作。
半虚拟化模型半虚拟化需要guest操作系统做一些修改,使guest操作系统意识到自己是处于虚拟化环境的,但是半虚拟化提供了与原操作系统相近的性能。
二、KVM、Xen、Hyper-V、VMware EXSI原理和架构回到顶部1. KVMKVM全称是Kernel-based Virtual Machine,即基于内核的虚拟机。
KVM和Xen虚拟化平台对比分析1、 概述Xen是一个开放源代码虚拟机监视器,由剑桥大学开发。
其目标是为了实现在单个计算机上运行128个有完全功能的操作系统。
在旧(无虚拟硬件)的处理器上执行Xen,操作系统必须进行显式地修改(“移植”)以在Xen上运行(但是提供对用户应用的兼容性)。
这使得Xen无需特殊硬件支持,就能达到高性能的虚拟化。
2013年4月,Linux基金会宣布Xen成为Linux基金会合作项目。
KVM,全称为Kernel-based Virtual Machine(基于内核的虚拟机),是一种用于Linux内核中的虚拟化基础设施。
KVM目前支持Intel VT及AMD-V的原生虚拟技术。
KVM在2007年2月被导入Linux 2.6.20核心中。
本文分别从架构原理、相关技术和各自优势来对比分析Xen和KVM虚拟化平台,并讲述了对这两种虚拟化技术发展趋势的看法。
二、架构和原理Xen通过hypervisor软件层来访问物理硬件,实现在一台单独的计算机上运行多个各自独立彼此隔离的子操作系统。
hypervisor指挥硬件访问和协调来自各子操作系统的请求。
在Xen环境中,主要有两个组成部分。
一个是虚拟机监控器(VMM),也叫hypervisor。
Hypervisor层硬件与虚拟机之间,最先被载入到硬件的第一层。
Hypervisor载入就可部署虚拟机。
在Xen中,虚拟机叫做Domain。
在这些虚拟机中,Domain0具有很高的特权,负责一些专门的工作。
由于hypervisor中不包含任何与硬件对话的驱动,也没有与管理员对话的接口,这些驱动就由 domain0来提供了。
通过domain0,管理员可以利用一些Xen工具来创建其它虚拟机(DomainU)。
这些domainU属于无特权domain。
而KVM是基于Linux环境的开源虚拟化解决方案,其思想是在Linux内核的基础上添加虚拟机管理模块,重用Linux内核中已经完善的进程调度、内存管理与硬件设备交互等部分,使之成为一个可以支持运行虚拟机的Hypervisor。
服务器虚拟化技术了解KVM、Xen、VMware等常见方案服务器虚拟化技术是当今互联网时代中不可或缺的重要技术之一,它可以帮助企业提高服务器资源的利用率,降低硬件成本,简化管理维护,提高灵活性和可靠性。
在众多的服务器虚拟化技术中,KVM、Xen和VMware是比较常见的方案。
本文将对这三种常见的服务器虚拟化技术进行介绍和比较,帮助读者更好地了解它们的特点和适用场景。
一、KVM(Kernel-based Virtual Machine)KVM是一种基于Linux内核的开源虚拟化技术,它将Linux内核转变为一个虚拟化的hypervisor,可以让Linux作为主机操作系统来运行多个虚拟机。
KVM支持硬件虚拟化,可以充分利用现代处理器的虚拟化扩展功能,提供接近原生性能的虚拟化体验。
KVM的优点:1. 性能优秀:KVM利用硬件虚拟化技术,可以实现接近原生性能的虚拟化,适合对性能要求较高的应用场景。
2. 安全可靠:KVM作为Linux内核的一部分,得到了广泛的社区支持和更新,具有较高的安全性和稳定性。
3. 成本低廉:KVM是开源软件,免费使用,可以帮助企业降低虚拟化成本。
KVM的缺点:1. 管理复杂:KVM的管理工具相对较为简陋,对于初学者来说可能需要一定的学习成本。
2. 生态相对较弱:相比商业虚拟化解决方案,KVM的生态系统相对较弱,可能无法提供完善的支持和解决方案。
二、XenXen是一种开源的虚拟化软件,最初由剑桥大学开发,后来成为Linux Foundation的项目之一。
Xen采用裸机hypervisor的架构,可以在硬件和操作系统之间提供一个独立的虚拟化层,实现多个虚拟机的隔离运行。
Xen的优点:1. 高性能:Xen采用裸机hypervisor的设计,可以实现接近原生性能的虚拟化,适合对性能要求较高的应用场景。
2. 安全稳定:Xen具有较高的安全性和稳定性,可以提供可靠的虚拟化环境。
3. 灵活性:Xen支持多种虚拟化模式,可以根据不同的需求选择适合的虚拟化方式。
Xen与KVM的比较Xen与KVM的比较Xen也是Linux下的一个虚拟化解决方案,也将很快被编入内核中。
Xen的实现方法是,运行支持Xen功能的kernel,这个kernel是工作在Xen的控制之下,叫做Domain0,使用这个kernel启动机器后,你可以在这个机器上使用qemu软件,虚拟出多个系统。
Xen的缺点是,如果你需要更新Xen的版本,你需要重新编译整个内核,而且,稍有设置不慎,系统就无法启动。
相比较,KVM就简化的多了。
它不需要重新编译内核,也不需要对当前kernel做任何修改,它只是几个可以动态加载的.ko模块。
它结构更加精简、代码量更小,所以,出错的可能性更小。
并且在某些方面,性能比Xen更胜一筹。
不难看出,xen和KVM是linux下两个重要的虚拟化解决方案。
xen的工作方式是直接修改kernel,变成一个xen kernel,也就是Domain 0.然后在这个Domain 0的控制下虚拟出多个Domain u的方式,可以看出这种方式其实是在kernel与硬件之间加了一个xen控制层,来实现虚拟化。
Virtual machines are created by a software layer called the virtual machine monitor (VMM)。
linus对于这种方法看来很抵触。
而kvm的实现方法却有所不同,它首先是需要CPU 虚拟功能的支持,本身是以模块的形式加入到kernel中,你可以把KVM理解为一个绿色软件。
KVM是后起之秀,在目前的功能和应用上还远不及Xen,不过可以预见,不久的将来,以及各大厂商,特别是intel对于虚拟化的重视,虚拟化的实现更多依赖于CPU,KVM的简洁和绿色将会更加成功。
Qemu-kvm虚拟化技术介绍技术创新,变革未来目录Contents05Qemu 支持的磁盘格式介绍06Qemu-kvm 虚拟化环境搭建07Qemu-img 生产虚拟机硬盘08Qemu-kvm 命令创建虚拟机01KVM 原理简介02Qemu 原理介绍03KVM 和Qemu 的关系04Qemu 工具介绍01 KVM原理简介KVM 工作流程用户模式的qemu 利用libkvm 通过ioctl 进入内核模式,kvm 模块为虚拟机创建虚拟内存,虚拟CPU 后执行VMLauch 指令进入客户模式。
加载Guest OS 并执行。
如果Guest OS 发生外部中断或者影子页表缺页之类的情况,会暂停Guest OS 的执行,退出客户模式,执行异常处理,之后重新进入客户模式,执行客户代码。
如果发生I/O 事件或者信号队列中有信号到达,就会进入用户模式处理。
开始用户模式Qemu执行LOCTL 系统调用处理I/O内核模式KVM Driver进入客户模式处理退出I/O 信号到达执行客户代码客户模式Guest OSVMX Non-Root OperationVMX Root Operation No YesKVM 架构如图所示,左侧部分是一个标准的Linux 操作系统,可以是RHEL 、Fedora 、Ubuntu 等。
KVM 内核模块在运行时按需加载进入内核空间运行。
KVM 本身不执行任何设备模拟,需要用户空间程序QEMU 通过/dev/kvm 接口设置一个虚拟客户机的地址空间,向它提供模拟的I/O 设备,并将它的视频显示映射回宿主机的显示屏。
处理器内存输入输出设备硬件系统KVM 模块Linux (Host )虚拟机1虚拟硬件虚拟机1虚拟硬件内核空间用户空间QEMUKVM模块KVM模块是KVM虚拟机的核心部分。
其主要功能是初始化CPU硬件,打开虚拟化模式,然后将虚拟客户机运行在虚拟机模式下,并对虚拟客户机的运行提供一定的支持。
服务器虚拟化技术比较KVMvsXen 服务器虚拟化技术比较:KVM vs Xen在现代信息技术发展的背景下,企业和数据中心越来越依赖于虚拟化技术来实现服务器资源的高效利用和管理。
服务器虚拟化技术使一台物理服务器可以运行多个虚拟机实例,从而提高了硬件资源的利用率,简化了服务器管理和维护的复杂性。
在众多可选择的服务器虚拟化技术中,KVM(Kernel-based Virtual Machine)和Xen是两种备受关注的重要选择。
本文将对这两种技术进行比较和分析。
一、KVMKVM是一种开源的服务器虚拟化技术,作为Linux内核的一部分,它利用了Linux操作系统作为宿主机管理工具。
KVM基于硬件辅助虚拟化的技术,通过扩展x86处理器的指令集,提供了更好的虚拟化性能。
KVM支持将多个虚拟机实例运行在同一台物理服务器上,并且每个虚拟机可以独立地运行自己的操作系统和应用程序。
相对于其他虚拟化技术,KVM的主要优势如下:1. 性能:由于KVM利用了硬件辅助虚拟化的特性,因此具有较高的性能和良好的扩展性。
KVM可以通过直接访问物理硬件资源来提供更快的I/O响应和更低的延迟。
2. 安全性:KVM提供了一个隔离的虚拟环境,每个虚拟机都运行在独立的沙箱中,相互之间不会相互干扰。
这种隔离性可以提高系统的安全性,并且减少了各虚拟机之间的风险。
3. 生态系统:由于KVM是开源的虚拟化技术,因此有一个庞大的开发人员社区在后台支持和更新。
这意味着用户可以获得及时的技术支持和新功能的添加。
二、XenXen是另一种开源的服务器虚拟化技术,它是一种基于半虚拟化的技术,与KVM不同,Xen需要对客户操作系统进行修改以适应虚拟化环境。
Xen通过在宿主操作系统和客户操作系统之间引入一个虚拟机监视器(Hypervisor)来实现多实例运行。
Xen的主要优势如下:1. 性能:Xen在性能方面表现出色,通过半虚拟化技术,可以更好地利用硬件资源和提供卓越的性能。
一项目背景为公司其他部门提供的虚拟机运行在Vmware,Citrix的产品上,它们各自都是由相应的客户端管理虚拟机。
为了能够通过WEB方式对虚拟机进行统一化管理,我们开始寻找已有产品的官方解决方案,但是Vmware,Citrix官方的虚拟化WEB管理工具都是需要付费购买。
本身Vmware,Citrix的产品也不是开源的,从公司的利益以及其他技术方面的角度考虑,我们将采用开源的虚拟化平台软件来完全更换现有的商用虚拟化平台软件。
二开源虚拟化管理程序的选用熟知的开源虚拟化管理程序有XEN和KVM两种。
1.XEN介绍XEN是一个开放源代码的虚拟机管理程序。
由剑桥大学开发,它打算在单个计算上运行多达128个具有完全功能的操作系统。
在旧的处理器上运行XEN,操作系统必需进行显式地修改以在XEN上运行。
这使得XEN无需特殊硬件平台支持,就能达到高性能的虚拟化。
XEN通过一种叫做半虚拟化的技术获得高性能的表现。
在比较旧的硬件平台上,没有CPU的虚拟化支持,XEN可以通过半虚拟化获得比较高的性能。
半虚拟化使用虚拟机管理程序分享存取底层的硬件,但是它的客户操作系统集成了虚拟化方面的代码,该方法无需重新编译或引起陷阱,因为操作系统自身能够与虚拟化管理程序进行很好地协作,半虚拟化技术的优点是性能高,特别是I/0方面,但是操作系统需要进行更改,用户体验方面不强。
XEN也支持全虚拟化技术。
全虚拟化技术也称为原始虚拟化技术。
它使用虚拟机协调客户操作系统和原始硬件。
全虚拟化最大的优点是操作系统不需经过任何修改,但是性能方面不如半虚拟化。
2.KVM介绍KVM全称是Kernel-based Virtual Machine,即基于内核的虚拟机。
KVM项目代表下一代开源虚拟化。
该项目的目标是通过建立在先前的技术和充分利用当今的硬件条件下创造出一个现代的虚拟化管理程序。
KVM以一种可加载模块的方式移植到linux内核中,它将linux 转换成一种可以裸机安装的虚拟化管理程序。
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。