w1100n
This site is best viewed in Google Chrome
wiloon, 4/7/2012 20:16

宿主机Debian, 客户机winxp, 磁盘文件格式raw http://stackoverflow.com/questions/8171179/kvm-virtual-machine-running-windows-xp-how-to-get-files-from-guest-to-host winxp.img and loop1 is not a single partition (which can be mounted), it is image of full hard disk with own partition table. You should read partition table from loop1 with fdisk; compute offset of first partition … Continue reading

wiloon, 3/24/2012 13:41 | Tag:

After I finished the install of the “kvm ,qemu-kvm ,libvirt-bin,virtinst,virt-manager”. I want to connect to my vms through the virt-manager .But I come to this error: Unable to open a connection to the libvirt management daemon. Libvirt URI is: qemu:///system … Continue reading

wiloon, 12/14/2011 13:34 | Tag:

在启动KVM的时候,加入参数 “-usb”, 同时还要加入  “-usbdevice host:<VendorID>:<ProductID>”。 将 USB VendorID 和 ProductID 传给虚拟机,这样虚拟机就会知道有一个 USB设备插入了。 例如: 如何知道VendorID:ProductID,通过lsusb命令: ID后面的 xxxx:xxxx 就是<VendorID>:<ProductID>。如要挂载第2行的USB设备: $kvm -usb -usbdevice host:163c:0620 如果要加载网银盾,”-usbdevice host:” 后加网银盾的<VendorID>:<ProductID>就可以了。

wiloon, 12/12/2011 12:53 | Tag:

在图形模拟时,我们可以使用下面的这些组合键: Ctrl-Alt-f 全屏 Ctrl-Alt-n 切换虚拟终端’n’.标准的终端映射如下: n=1 : 目标系统显示 n=2 : 临视器 n=3 : 串口 Ctrl-Alt 抓取鼠标和键盘在虚拟控制台中,我们可以使用Ctrl-Up, Ctrl-Down, Ctrl-PageUp 和 Ctrl-PageDown在屏幕中进行移动. 在模拟时,如果我们使用`-nographic’选项,我们可以使用Ctrl-a h来得到终端命令: Ctrl-a h 打印帮助信息 Ctrl-a x 退出模拟 Ctrl-a s 将磁盘信息保存入文件(如果为-snapshot) Ctrl-a b 发出中断 Ctrl-a c 在控制台与监视器进行切换 Ctrl-a Ctrl-a 发送Ctrl-a

wiloon, 12/4/2011 1:13

http://forum.ubuntu.org.cn/viewtopic.php?f=65&t=302055 固定大小虚拟磁盘效率最高 虚拟磁盘效率最大决定因素在于碎片,而非格式。通常用的动态大小磁盘映像虽然灵活,但其效率自然不如固定大小。以往很多人因创建固定磁盘费时费力而直接使用物理磁盘,不仅有相当风险,且有不便之处,也未必能满足所需功能。 xfs 和 NTFS 早已支持空间预分配,但 ext 系列直到 ext4 才支持该功能。现如今,ext4 已然稳定。用 fallocate 命令在其上创建固定大小的 raw 格式映像甚为简单,创建速度与 qemu-img 创建的稀疏文件无异,瞬间完成。比如: fallocate -l 15G disk1.img virtio 提高的效率是什么效率 直接给 qemu 用 -hda 指定硬盘,谁用谁知道,慢如蜗牛不说,还能听见磁头辛勤地哀鸣,心痛不?网上有人说 cache=writeback ,没错,这是关键,速度快了不说,也不用再担心磁头累跨了。还有人说 if=virtio ,更有甚者 virtio 与 writeback 不可兼得,晕不?其实 virtio 节省的只不过是 CPU … Continue reading

wiloon, 12/3/2011 10:09 | Tag:

-bios file 指定虚拟机使用的BIOS,file指定BIOS文件路径 -smp n[,cores=cores][,threads=threads][,sockets=sockets][,maxcpus=maxcpus] 模拟一个有n个cpu的smp系统,可以简单的指定n为一个数值,或者分别指定socket数,core数/socket,线程数/core -m megs 指定虚拟机使用的内存数量,可以使用M或G后缀 -rtc [base=utc|localtime|date][,clock=host|vm][,driftfix=none|slew] 指定虚拟机使用的时间,linux客户机使用-rtc base=utc,clock=host,windows客户机使用-rtc base=localtime,clock=host -net nic,model=virtio,macaddr=52-54-00-12-34-01 -net tap,ifname=tap0 桥接网络,客户机网络接口通过tap接口桥接到主机网络,使用的tap接口名为tap0,由/etc/kvm/kvm-ifup来动态配置tap0接口。model=virtio指定虚拟机网卡使用半虚拟化驱动,如果有多个虚拟客户机同时运行则必须指定macaddr为一个独一无二的值,否则会出现mac地址冲突。如果通过主机的/etc/network/interfaces来静态配置tap接口,则此处应在-net tap接口处附加两个另外的参数script=no,downscript=no -drive file=debian.img,if=virtio,index=0,media=disk,format=qcow2,cache=writeback 指定客户机使用的硬盘驱动器,if=virtio指定使用半虚拟化驱动,index=0指定该硬盘为接口的第一个驱动器,media=disk指定为硬盘驱动器,如果是光盘则为media=cdrom。format=qcow2为硬盘格式(raw/qcow2),以创建磁盘镜像时的格式为准。旧式指定第一个硬盘驱动器的参数为-hda debian.img,已经不再推荐使用。 -drive file=debian.iso,index=2,media=cdrom或者-hdc debian.iso 指定光盘驱动器,debian.iso为使用的光驱映像文件 -fda file 指定软盘驱动器,file为软磁盘镜像 -no-fd-bootchk 客户机启动时不检查软盘驱动器,加速客户机启动 -boot [order=drives][,once=drives][,menu=on|off] ‘drives’: floppy (a), hard disk … Continue reading

wiloon, 12/3/2011 10:01

半虚拟化驱动Virtio Virtio是KVM/Linux的I/O虚拟化框架,以增强KVM的IO效率,是与其他虚拟化平台的半虚拟化(Paravirtualized)类似的东西,主要应用于磁盘设备和网络接口设备。主流的linux发行版已经默认支持Virtio,如果客户机是linux则无需其他设置,直接可以使用Virtio设备,但是如果客户机是windows,则需要在客户机安装Virtio设备驱动,甚至在windows开始安装之前需要提前加载块设备驱动。windows Virtio驱动可从Fedor

wiloon, 12/3/2011 9:17

-nographic  disable graphical output -m 1024 设置虚拟系统内存1024MB -localtime 使虚拟系统与宿主系统时间一致 -M pc 虚拟系统类型为pc -smp 1 1个CPU -drive file=Windows7_x86.img,cache=writeback,boot=on 硬盘选项,虚拟磁盘是Windows7_x86.img,cache方式为writeback,可引导型磁盘。 -net nic,macaddr=52:54:00:12:34:80 网卡选项,手工指定mac地址。 -net tap tap类型网络,相当于“桥模式” -cdrom Windows7.iso 光驱 -boot d 启动顺序。d代表光驱。 -name kvm-win7,process=kvm-win7 为虚拟机取名,便于识别 -vnc :2 这里是通过vnc连接控制窗口,这里是在5902端口。client可用IP:2连接。 -usb -usbdevice tablet 启用usb设备中的tablet功能。开启该功能可使虚拟机内外的鼠标同步。 … Continue reading

wiloon, 12/3/2011 9:11 | Tag:

宿主机: OS: Debian6/7 IP:192.168.1.100 网关:192.168.1.1 DNS:192.168.1.1 基于内核的虚拟机KVM(Kernel-based Virtual Machine)是linux平台上的全虚拟化解决方案 KVM需要包含虚拟化支持的x86硬件,intel VT或者AMD-V。KVM使用修改后的QEMU作为前端工具,QEMU通过/dev/kvm设备与KVM交互。自kernel版本2.6.20 KVM随主线内核一起发行。 前提条件(prerequisite) 可以使用KVM的前提条件是CPU支持虚拟化技术,Intel VT或者AMD-V $egrep ‘(svm|vmx)’ /proc/cpuinfo 如果有输出则说明CPU支持硬件虚拟化,SVM(Secure Virtual Machine)是AMD CPU支持硬件虚拟化的标志,VMX是INTEL CPU支持硬件虚拟化的标志 安装KVM 从squeeze开始KVM的包名改为qemu-kvm,kvm只是个占位dummy包 安装qemu-utils(ubuntu 10.04以上不需要这一步) This package provides QEMU related utilities: * qemu-img: QEMU disk image utility * … Continue reading

wiloon, 12/3/2011 6:42

kvm在btrfs上的IO效率极端的差。 kvm, winxp, 768M的实例,安装系统花了一天多…T_T…开机大约需要40分钟。这种效率已经远远超出了我的预期,于是我改用libvirt管理的kvm。结果依然出乎意料,debian实例的安装需要超过5分钟。由于怀疑是raw格式而非qcow2格式造成的速度差异,因此新建了一个实例,一时偷懒就放在了/下面,这个分区是ext3而非btrfs。结果安装大约在3分钟内结束,这似乎证明了我的猜想。于是我开始使用btrfs下的raw格式进行安装,结果速度依然异常缓慢。由此我怀疑到是btrfs文件系统的问题。 在ext3上创建一个qcow2格式的实例后,证实了我的猜想。问题在于btrfs的某种机制上。在网络上寻找类似问题,并没有发现。因此在blog上提出警告和问题。 有人知道为什么在btrfs上使用虚拟机会导致极端的效率问题么?hdparm和文件读写测试表明btrfs的平均效率并没有问题,磁盘也没有问题。

wiloon, 12/3/2011 6:33

转自: http://jobinson99.blog.163.com/blog/static/2591478201051194046840/ 曾经有过一段时间,徘徊于对虚拟机硬盘格式的迷惑中,2009年,终于得出了一些结论(下面的思路基本通用于其他虚拟机) 搜了下,发现大部分用qemu或者kvm的,都默认使用qcow2来作为虚拟硬盘,但qemu官方默认是用raw。 下面是qemu wiki对两种格式的描述: raw: Raw disk image format (default). This format has the advantage of being simple and easily exportable to all other emulators. If your file system supports holes (for example in ext2 or ext3 on Linux … Continue reading

wiloon, 12/3/2011 6:22

To set up your own guest OS image, you first need to create a blank disc image. QEMU has the qemu-img command for creating and manipulating disc images, and supports a variety of formats. If you don’t tell it what format to … Continue reading

wiloon, 12/3/2011 6:01

Qemu是一个模拟器,它向Guest OS模拟CPU和其他硬件,Guest OS认为自己和硬件直接打交道,其实是同Qemu模拟出来的硬件打交道,Qemu将这些指令转译给真正的硬件,由于所有的指令都要从Qemu里面过一手,因而性能较差。   KVM是linux内核的模块,它需要CPU的支持,采用硬件辅助虚拟化技术Intel-VT,AMD-V,内存的相关如Intel的EPT和AMD的RVI技术,Guest OS的CPU指令不用再经过Qemu转译,直接运行,大大提高了速度,KVM通过/dev/kvm暴露接口,用户态程序可以通过ioctl函数来访问这个接口。见如下伪代码: open(“/dev/kvm”) ioctl(KVM_CREATE_VM) ioctl(KVM_CREATE_VCPU) for (;;) { ioctl(KVM_RUN) switch (exit_reason) { case KVM_EXIT_IO: case KVM_EXIT_HLT: } } KVM内核模块本身只能提供CPU和内存的虚拟化,所以它必须结合QEMU才能构成一个完成的虚拟化技术,这就是下面要说的qemu-kvm。 qemu-kvm Qemu将KVM整合进来,通过ioctl调用/dev/kvm接口,将有关CPU指令的部分交由内核模块来做。kvm负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备。qemu模拟IO设备(网卡,磁盘等),kvm加上qemu之后就能实现真正意义上服务器虚拟化。因为用到了上面两个东西,所以称之为qemu-kvm。   Qemu模拟其他的硬件,如Network, Disk,同样会影响这些设备的性能,于是又产生了pass through半虚拟化设备virtio_blk, virtio_net,提高设备性能。   libvirt libvirt是目前使用最为广泛的对KVM虚拟机进行管理的工具和API。Libvirtd是一个daemon进程,可以被本地的virsh调用,也可以被远程的virsh调用,Libvirtd调用qemu-kvm操作虚拟机。     libvirt,virt-manager,virsh:由于qemu-kvm的效率及通用性问题,有组织开发了libvirt用于虚拟机的管理,带有一套基于文本的虚拟机的管理工具–virsh,以及一套用户渴望的图形界面管理工具–virt-manager。libvirt是用python语言写的通用的API,不仅可以管理KVM,也可用于管理XEN 内核版本是 2.6.22 或更新版本内建KVM模块,可以使用下面命令来检查你的内核版本是否支持KVM : modprobe -l kvm* 另外,KVM还需要修改过的QEMU(EXTRA仓库中的qemu-kvm)来启动和管理虚拟机。 此时,有两个选择(根据你需要,选一个即可,比如你不仅使用kvm还需要使用qemu,则选2,否则,一般选1就够用了。直观的区别就是qemu软件包很大,而qemu-kvm很小,qemu-kvm相当于qemu中的qemu-system-x86_64的一个定制版): 1、安装qemu-kvm,以后要运行kvm的时候,就输入qemu-kvm -enable-kvm这个命令 … Continue reading

wiloon, 11/26/2011 9:28

QEMU是一套由Fabrice Bellard所编写的模拟处理器的自由软件。它与Bochs,PearPC近似,但其具有某些后两者所不具备的特性,如高速度及跨平台的特性。经由kqemu这个开源的加速器,QEMU能模拟至接近真实电脑的速度。 简介   QEMU有两种主要运作模式: * User mode模拟模式,亦即是使用者模式。QEMU能启动那些为不同中央处理器编译的Linux程序。而Wine及Dosemu是其主要目标。 * System mode模拟模式,亦即是系统模式。QEMU能模拟整个电脑系统,包括中央处理器及其他周边设备。它使得为系统源代码进行测试及除错工作变得容易。其亦能用来在一部主机上虚拟数部不同虚拟电脑。QEMU的主体部份是在GPL下发布的,而其系统模式模拟与kqemu加速器则是在GPL下发布。使用kqemu可使QEMU能模拟至接近实机速度,但其在虚拟的操作系统是 Microsoft Windows 98或以下的情况下是无用的。 QEMU的优点 可以模拟 IA-32 (x86)个人电脑,AMD 64个人电脑,MIPS R4000, 升阳的 SPARC sun3 与 PowerPC (PReP 及 Power Macintosh)架构 支持其他架构,不论在主机或虚拟系统上 在支持硬件虚拟化的x86构架上可以使用KVM加速配合内核ksm大​页​面​备​份​内​存,速度稳定远超过VMware ESX 增加了模拟速度,某些程序甚至可以实时运行 可以在其他平台上运行Linux的程序 可以储存及还原运行状态(如运行中的程序) 可以虚拟网络卡 QEMU的缺点 对微软视窗及某些主机操作系统的不完善支持(某些模拟的系统仅能运行) 对不常用的架构的支持并不完善 除非使用kqemu加速器,否则其模拟速度仍不及其他虚拟软件,如VMware 比其他模拟软件难安装及使用 QEMU’s 使用实例 以下的指令可以建立一个500MB大小的”qcow”格式的硬盘映像。 qemu-img … Continue reading

wiloon, 11/26/2011 8:06

红帽专家解读:虚拟化技术KVM和XEN的区别 出处:CIOAge.com 文: 凌云通 问:想请问一下KVM的虚拟化技术和原来的XEN虚拟化技术有什么区别,而且在今后redhat是否不会在redhat里在集成XEN的功能,而转向对KVM的支持。 答:XEN目前支持Full Virtualization(全虚拟化) 和 Para Virtualization. Full Virtualization的好处在于现有的x86架构的操作系统可以不用修改,直接运行在虚拟机上。 Para Virtualization的好处是性能好,但是虚拟机上运行的操作系统内核要修改。 目前主流的厂家的虚拟化重点都是放在Full Virtualization上面。 KVM采用的是Full Virtualization,需要CPU支持VT。 如何确认你的CPU是否支持VT,查看cpu flag, intel cpu flag 会有 “vmx” , amd cpu flag 会有 “svm”. 从架构上讲,xen是自定制的hypervisor,对硬件的资源管理和调度,对虚拟机的生命周期管理等,都是从头开始写的。  KVM全称是Kernel-based Virtual Machine, kernel代表的是Linux kernel。KVM是一个特殊的模块,Linux kernel加载此模块后,可以将Linux kernel 变成hypervisor,因为Linux … Continue reading

wiloon, 11/26/2011 8:03

Linux虚拟化技术的用户目前有两种免费的开源管理程序可以选择:Xen和KVM。 作为较早出现的虚拟化技术,Xen是”第一类”运行在裸机上的虚拟化管理程序(Hypervisor),也是当前相当一部分商业化运作公司的基础技术,其中包括Citrix系统公司的XenServer和Oracle的虚拟机。Xen技术的倡导者们声称Xen的性能强劲,并且拥有一个广泛的管理工具和能够交付卓越性能,以及其它诸多优点。 但是最近有一些Linux厂商–包括Red Hat和Canonical把基于内核的虚拟机(KVM:Kernel-based Virtual Machine)技术内置在Ubuntu中。KVM是一个轻量级的虚拟化管理程序模块,该模块主要来自于Linux内核。虽然只是后来者,但是由于其性能和实施的简易性,以及对Linux重量级的持续支持,所以还是有必要认真对待KVM技术的。 在本期虚拟化面面观中,两位IT专家将会对Xen和KVM做出比较,并给出各自的理由。 Andi Mann:Xen比KVM优越的六大原因 Sander van Vugt:KVM比Xen能够带来更好的Linux集成 Xen比KVM优越的六大原因 投稿人:Andi Mann 作为开源的虚拟化技术,对比Xen和KVM可以看到,Xen以6个无与伦比的优势领先:更好的可用资源、平台支持、可管理性、实施、动态迁移和性能基准。 可用资源:Xen的问世要比KVM早4年之久(两者分别是2003年和2007年)。随着Citrix、Novell、Oracle、Sun、Ret Hat和Virtual Iron等公司在市场领域的实施,就比较容易找到精通Xen的IT技术人员,更容易让这些技术人员接受Xen相关的培训、更容易得到Xen的咨询帮助以及获得Xen证书。企业管理协会(EMA:Enterprise Management Associates)2008年这对虚拟化和管理趋势的研究报告表明,这些关键因素占到那些抱怨缺少必要虚拟化技术资源和技术企业的60%。 平台支持:Xen在新版本中支持更多的主机和客体工作环境,包括泛虚拟化技术、硬件辅助支持以及修改过或未修改过的客体操作系统;对UNIX、Linux和Microsoft Windows的特定支持;包括芯片组,如x86、IA64和AMD、Fujitsu、IBM、Sun等公司的ARM,以及x86/64 CPU商家和Intel嵌入式的支持等。 可管理性:EMA在2009年度针对虚拟系统管理的研究结果表明:对于83%的企业来讲,在选择虚拟化技术过程中,管理是一项非常关键或者重要的因素。在对比Xen和KVM时,就可以看到Xen具有一个更加宽泛的第三方配给、备份、存储管理、P2V、容量规划、性能监控、进程自动化、安全和其它管理规则的社区,比如Citrix、IBM、CA、Novell或者Platespin、Enomaly、Microsoft以及HP等。 实施:无论KVM是”第一类”还是”第二类”,这都是语义上的概念。Xen的运行和管理都是在较低级别的(Ring 0)。甚至对于新虚拟机创建,客体机器并不需要像KVM那样共享内存块、CPU指令或者任何底层的Linux操作系统(虽然偶尔也会越权)。 KVM不支持动态迁移:过去在证明VMware ESX比Microsoft Hyper-V优越的最重要的一个观点也同样适用于Xen和KVM的比较,但是这是一个很大的问题。与KVM不同,Xen支持非中断的动态迁移,可以允许动态工作负载平衡和例行维护而几乎没有任何宕机时间。KVM的固有属性决定了其肯定有宕机时间。 性能:大多数Xen和KVM性能基准的对比都表明Xen具有更好的处理性能(接近于本地处理),只有在磁盘I/O方面略逊于KVM。进一步来讲,独立测试表明随着工作负载的增加KVM的性能逐渐下降。通常情况下,在试图支持四个以上的客体虚拟机时就会崩溃。Xen支持一个客体虚拟机的数量呈线性增长,可以支持30个以上工作负载同时运行。 更加深入广泛的Xen与 KVM对比也将会表明Xen在虚拟网络支持、虚拟存储支持、安全增强、高可用性、容错处理、电源管理、HPC或者实时支持、虚拟CPU可扩展性、跨平台兼容性。虚拟机可移植性、虚拟应用设备市场以及已经建立起来的云服务社区等诸多方面都要比KVM优越。因此KVM只是在技术上比较与众不同,并且拥有几个不错的应用场景。但是作为企业级的服务器虚拟化技术,和Xen比起来,KVM尚有较大差距。 Andi Mann是企业管理协会(EMA:Enterprise Management Associates)IT分析部门中研究系统管理和存储管理的副总裁。Mann在技术和管理领域有20多年的IT经验,对主机、中型机、服务器和台式机上企业形态和软件方面都有深刻理解。Mann是EMA系统管理研究项目的主要负责人,他主要关注数据中心自动化和虚拟化。访问EMA的主页了解更多有关Mann的信息。 KVM在Linux整合中优于Xen 投稿人:Sander van … Continue reading

wiloon, 11/26/2011 7:53

KVM与Xen和VMware的PK 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://virtualizing.blog.51cto.com/687668/136544 【sudison】这篇文章翻译至KVM的maintainer Avi Kivity的一篇文章. 文中提到了KVM比ESX和Xen优越的一个地方:既能获得很好的performance,又能解决设备驱动的维护问题。还是有一定的道理。 —————— I/O的性能对一个hypervisor而言至关重要。同时,I/O也是一个很大的维护负担,因为有大量需要被支持的硬件设备,大量的I/O协议,高可用性,以及对这些设备的管理。 VMware选择性能,但是把I/O协议栈放到了hypervisor里面。不幸的是,VMware kernel是专有的,那就意味着VMware不得不开发和维护整个协议栈。那将意味着开发速度会减慢,你的硬件可能要等一段时间才会得到VMware的支持。 Xen选择了可维护这条道路,它将所有的I/O操作放到了Linux guest里面,也就是所谓的domain-0里面。重用Linux来做I/O, Xen的维护者就不用重写整个I/O协议栈了。但不幸的是,这样就牺牲了性能:每一个中断都必需经过Xen的调度,才能切换到domain 0, 并且所有的东西都不得不经过一个附加层的映射。 并不是说Xen已经完全解决了可维护性这个问题:Xen domain 0 kernel仍然是古老的Linux 2.6.18(尽管2.6.25也已经可用了。【sudison注:】现在Xen已经在通过domain 0 pv_ops在解决这个问题了) 那KVM是怎么处理的呢?像VMware一样,I/O是被放到hypervisor的上下文来执行的,所以性能上不会有损害。像Xen一样,KVM重用了整个Linux I/O协议栈,所以KVM的用户就自然就获得了最新的驱动和I/O协议栈的改进。

wiloon, 11/26/2011 7:49

关于KVM和Xen不得不说的事儿 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://virtualizing.blog.51cto.com/687668/136543 本文选择性的翻译了Xen/KVM的开发者Anthony Liguori的一篇blog。 在KVM刚出现的时候,媒体上有很多关于Xen的FUD。。。。比如Xen is dead啊,KVM进了Linux kernel,而Xen努力了很久也没有进啦等等。这篇文章从技术角度分析了KVM和Xen的差异,当然是站在一个Linux开发者的角度。 Anthony本人也是这两个项目的核心开发者,所以这篇文章就值得一读了。 —————————————– “…现在围绕着KVM,Xen和Linux虚拟化的言论已经非常的让人感到困惑了。我将尽我最大的努力来澄清这些事情。。。。” “我认为我们最终不得不承认我们–Linux 社区, 在Xen上犯了一个非常大的错误。Xen从来就不应该被包含进Linux发行版。我们已经开始考虑这个问题,已经在在密室里面低声谈论这个问题,已经开始尽我们的最大努力避免它。“ ”我这样说,并不是因为Xen不是一个有用的技术,当然也不是因为人们不应该用Xen。Xen是一个而非常有用的项目,能够真正在企业环境里面产生巨大的 影响力。只不过,Xen现在,将来,也不会成为Linux的一部分。因此,把Xen包含进Linux发行版只会使广大的用户对Linux和Xen之间的关 系感到困惑。“ ”Xen是一个基于Nemesis微内核的hypervisor。当前各Linux发行版包含Xen,默认安装了一个Linux guest(也就是dom0),并尽其最大努力掩盖Xen不是Linux的一部分的真相。他们这一点到做得很棒,以至于大多数的用户根本没有意识到他们正 在运行一个完全不同的OS。这看上去有些荒谬。这就好像Linux发行版自动包含一个NetBSD的kernel,当你想运行LAMP的时候就切换到这个 NetBSD内核。我们不会在发行版中包含一个purpose-build的kernel。我们包含一个kernel,并且确保它对所有的用户都工作正 常。这才是Linux发行版被成为Linux的原因。当你把Linux kernel拿走之后,它就不再是Linux了。“ ”当个Linux发行版第一次包含Xen的时候,这主要是出于绝望。Virtualization过去是,现在也是一个热门的技术。Linux过去 没有提供任何的native hypervisor的能力。大多数的Linux kernel开发者也对virtualization也知道得不多。因此Xen很容易的使用了一个purpose-build的kernel,并且这个 kernel还有一个相当好的community。我们做了一个龌龊的决定:包含Xen到发行版中,而不是把Linux变成一个合适的 hypervisor.“ ”这个决定开始让我们感到头疼了,因为它使得大量的用户感到困惑。当人们在谈论Xen没有被合并到Linux,我不认为他们认识到了Xen将来永远 也不会被合并到Linux。Xen将永远是一个独立的,purpose-build kernel。是有一些补丁能让Linux作为一个guest很好的运行在Xen之上。这些补丁很有可能在将来被合并到Linux,但Xen永远不会成为 Linux的一部分。“ ”这并不意味着Xen已经死亡或者不应该鼓励用户从一个开始就使用它。在那个时候,Xen是一个最好的,可行的解决方案。即使在当前这个瞬间,仍然不清楚 是否在所有的情况下,Linux作为一个hypervisor都要好于Xen. 我没有说,所有的用户都应该一股脑的从Xen迁移到Linux。。。“ ”我是一个Linux开发者,像所有其他尝试着让Linux能很好的运行在所有的平台上,从大型机到DVD播放器,的Linux hacker一样,我将继续工作,让Linux成为一个hypervisor. Linux社区将把Linux变成一个最好的hypervisor. Linux发行版将停止为了virtualization包含一个purpose-build … Continue reading

wiloon, 11/26/2011 7:34

2002年Xen首次发布时,进过8年的发展,Xen似乎成了曾经受宠的弃儿,当初力撑它的RedHat已经正式转向自家的KVM,而且KVM占有得天独厚的优势,因为它已经成功进入Linux内核。不得不承认虚拟化技术的发展是相当迅速的,如果你没有跟上KVM和Xen的发展速度,在考虑购买哪一种虚拟化平台时,你可能会很困惑。 KVM和Xen Xen是一个支持x86、x86_64、安腾和ARM架构的Hypervisor,可以在它支持的处理器架构上运行Linux、Windows、Solaris和部分BSD客户机操作系统,许多公司都支持Xen,当然主要还是思杰(Citrix),Oracle VM其实也是基于Xen包装而成的,当然还有更多的虚拟化解决方案都是以Xen为基础的,Xen可以安装在系统上,也可以直接安装到裸机上。 KVM是一个集成到Linux内核的Hypervisor,很明显,宿主操作系统必须是Linux,支持的客户机操作系统包括Linux、Windows、Solaris和BSD,运行在支持虚拟化扩展的x86和x86_64硬件架构上,这意味着KVM不能运行在老式CPU上,新CPU如果不支持虚拟化扩展也不能运行(如英特尔的Atom处理器),在大多数情况下,对于数据中心来说,这些限制都不是问题,因为每个几年硬件都会升级换代,但最近也有些数据中心选择Atom架构,那么注定它们不能使用KVM。 如果你想运行Xen宿主主机,你需要有一个支持的内核,Linux默认一般不会提供Xen宿主主机支持,从2.6.23内核开始支持作为客户机运行,如果你的Linux发行版不支持Xen,你必须自己定制内核,或直接选择如Citrix XenServer这样的商业解决方案,但问题是这些解决方案不是完全开源的。 许多人都是自己构建内核,Xen可以运行在很多服务器上,从低成本的虚拟专用服务器(Virtual Private Server,VPS)供应商,如Linode,到大型公司,如Amazon的EC2,这些公司都加大了这方面的投入,不会轻易转换到其它技术,即使技术上KVM超越了Xen,也不能一下就取代现有的解决方案,更何况KVM在技术上的优势并不明显,有些地方甚至还未超越Xen,因为Xen的历史比KVM更悠久,它也比KVM更成熟,你会发现Xen中的某些功能在KVM还未实现,因此我们看到KVM项目的Todo List很长,KVM的优势也仅限于它进入了Linux内核。从RHEL 5.4开始,RedHat就支持KVM了,从RHEL 6.0开始RedHat就完全抛弃Xen了。 RedHat弃用Xen给克隆REHL的公司带来了麻烦,迫使他们也接受KVM,要么只有自行维护一套包含Xen的分支,但这无疑会增加它们的成本。 KVM的发展相当迅速,虽然目前还在追赶Xen,但Xen的领先地位恐怕很快就会丧失,我们不得不担忧Xen的未来出路。 只能有一个存活下来吗? 选择KVM还是Xen其实就是选择厂商,如果你想使用RHEL,那么KVM无疑是首选,如果你想运行在Amazon EC2上,那么你将使用Xen,主流Linux厂商似乎都站在KVM一边,但它们也为Xen提供了大量的商业支持,Citrix可能不会很快就消失。 在IT行业想要成为永久的赢家是不可能的,技术不断地的提高更新,Xen和KVM将在相当长一段时间内共存,市场足够大,需要诸多解决方案,这两种技术背后都有充足的技术支持让它们在未来数年内和平共处

KVM
wiloon, 11/26/2011 7:28

  KVM:Kernel-based Virtual Machine的简写,是rhel5.4推出的最新虚拟化技术,目前红帽只支持在64位的rhel5.4上运行kvm,同时硬件需要支持VT技术,使用kvm虚拟机的时候需要关闭SELinux;   Red Hat从2009年6月中旬开始在部分企业级用户那里开始了对Red Hat Enterprise Virtualization(RHRV)的beta测试。RHEV是Red Hat去年收购虚拟化厂商Qumranet获得的一项hypervisor技术。Citrix通过收购获得的Xen就是因为Linux hypervisor而被人们所熟知。不过Red Hat的KVM被认为是将成为未来Linux hypervisor的主流。 Red Hat产品和技术总裁Paul Cormier表示:“KVM最大的好处就在于它是与Linux内核集成的。未来几年人们的关注焦点仍然集中在hypervisor上。hypervisor是操作系统的一项功能,自然能够被用户所接受。微软和Red Hat操作系统的不同中间件和管理功能将起到重要的作用。” 从Linux 2.6.20开始内核中已经开始集成KVM。因此,由Fedora社区开发的Fedora也开始支持KVM。Linux 2.6.20之后的Linux发行版本的内核中也都将KVM作为基本的hypervisor。 Red Hat从进行beta测试的Red Hat Enterprise Linux(RHEL)5.4也开始装载了KVM。Red Hat日本营销本部部长中井雅也先生解释说:“为了确保企业用户的稳定性,我们进行了严格的beta测试。这对与开源社区合作的Red Hat来说是很不寻常的。由此看来,这表明Red Hat非常重视KVM基本的虚拟化性能。” KVM是进入Linux内核的虚拟化项目,它刚刚起步,还不为众人所熟知。但随着RedHat下一步推广KVM力度的加大,相信不久的将来KVM会逐渐占据市场的主要位置。 现在所说的虚拟化,一般都是指在CPU硬件支持基础之上的虚拟化技术。KVM也同hyper-V、Xen一样依赖此项技术。没有CPU硬件虚拟化的支持,KVM是无法工作的。 准确来说,KVM是Linux的一个模块。可以用modprobe去加载KVM模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有KVM模块是远远不够的,因为用户无法直接控制内核模块去作事情:还必须有一个用户空间的工具才行。这个用户空间的工具,开发者选择了已经成型的开源虚拟化软件QEMU。说起来QEMU也是一个虚拟化软件。它的特点是可虚拟不同的CPU。比如说在x86的CPU上可虚拟一个Power的CPU,并可利用它编译出可运行在Power上的程序。KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM的用户空间工具了。所以你会看到,官方提供的KVM下载有两大部分三个文件,分别是KVM模块、QEMU工具以及二者的合集。也就是说,你可以只升级KVM模块,也可以只升级QEMU工具。这就是KVM和QEMU的关系。    至此,你已经可以使用QEMU工具创建虚拟机了。但我们会发现RedHat的虚拟化并非如此简单。与之相关的还有libvirt、VMM等。原因就是因为QEMU工具效率不高,不易于使用。libvirt是一套C语言的API,现在也有其他语言的了。它负责将不同类型的虚拟化工具的差异完全屏蔽掉。例如Xen的管理命令是xm,而KVM则是qemu-kvm。使用libvirt,你只需要通过libvirt提供的函数连接到Xen或者KVM宿主机,便可以用同样的命令指挥不同的虚拟机了。libvirt不仅提供了API,还自带了一套管理虚拟机的命令——virsh。你可以通过使用virsh命令来进一步了解libvirt。但最终用户更渴望的是图形用户界面,这就是VMM的事情了。VMM是一套用python写的虚拟机管理图形界面,用户可以通过它直观地操作不同的虚拟机。VMM就是利用了libvirt的API参数实现的。     以上这些就是RedHat虚拟化技术的大致架构了,RedHat还有一套用于大规模管理KVM虚拟机的工具,叫oVirt,现正处于开发过程中。有兴趣的朋友可以去看看。上述软件的官方链接在本网站首页上均有。

next page
辽ICP备14012896