虚拟化 - KVM

2008年9月,红帽以1.07亿美元的价格收购Qumranet,后者为解决虚拟化桌面RDP的缺点开发了基于内核的虚拟机(KVM),从此,KVM频繁出现在大众视线中。

KVM(Kernel-based Virtual Machine,基于内核的虚拟机),比Xen晚生四年,完全内置于Linux。IT管理员只需几个内核模块的支持就能安装KVM,而Linux内核都支持这种hypervisor。

1、什么是KVM

KVM虚拟化技术发展史及未来: http://www.ha97.com/4881.html

”在的KVM肯定没有VMware和Xen那样成熟,比如在低延时、高网络I/O方面,KVM做的还不够好。目前能保证的,就是在用户有需求的时候,KVM能够在一台宿主机上创建超过300台虚拟机,并有可能实现理论上的最大可扩展性“。

KVM 的架构:

http://virtual.51cto.com/art/201212/374985.htm



从上图KVM架构中可以看到,KVM作为一个轻量级的虚拟化管理程序模块,利用Linux做大量hypervisor能做的事情,如任务调度、内存管理与硬件设备交互等。

KVM具有高性能、高扩展与高安全性特点,适合运行Linux或Windows的环境,在异构环境也能很好的进行管理,而在虚拟化桌面方面,可以提供可靠的可扩展的镜像服务器。 

KVM(Kernel-based Virtual Machine)是基于虚拟化扩展(Intel VT或AMD-V)的X86硬件平台实现的Linux的全虚拟化解决方案,其基本结构由两部分组成:

  • 一个是KVM Driver ,是Linux 内核的一个模块,负责虚拟机的创建,虚拟内存的分配,虚拟CPU寄存器的读写以及虚拟CPU的运行等;
  • 另一个部分是稍微修改过的Qemu,用于模拟PC硬件的用户空间组件,模拟I/O设备模型以及提供访问外设的途径。

KVM基本架构如下图所示。

如上图所示,客户模式即是guest,它自身有自己的用户模式和内核模式;guest是在host中是作为一个用户态进程存在的,这个进程就是qemu,qemu本身就是一个虚拟化程序,只是纯软件虚拟化效率很低,它被KVM进行改造后,作为KVM的前端存在,用来进行创建进程或者IO交互等;而KVM Driver则是Linux内核模式,它提供KVM fd给qemu调用,用来进行cpu虚拟化,内存虚拟化等。Qemu通KVM提供的LibKvm应用程序接口,通过ioctl系统调用创建和运行虚拟机。KVM Driver使得整个Linux成为一个虚拟机监控器,负责接收qemu模拟效率很低的命令。

其中 KVM 加入到标准的 Linux 内核中,被组织成Linux中标准的字符设备(/dev/kvm)。Qemu利用 KVM 提供的LibKvm应用程序接口,通过 ioctl 系统调用创建和运行虚拟机。KVM Driver使得整个Linux成为一个虚拟机监控器。并且在原有的Linux两种执行模式(内核模式和用户模式)的基础上,新增加了客户模式,客户模式拥有自己的内核模式和用户模式。在虚拟机运行下,三种模式的分工如下:

  • 客户模式:执行非I/O的客户代码,虚拟机运行在客户模式下。在KVM模型中,每一个Guest OS 都作为一个标准的Linux进程,可以使用Linux的进程管理指令管理。
  • Linux 用户模式:代表客户执行I/O指令。Qemu运行在这种模式下。
  • Linux 内核模式:实现到客户模式的切换,处理因为I/O或者其它指令引起的从客户模式的退出,KVM Driver工作在这种模式下。  

KVM 的基本工作原理:

用户模式的 Qemu 利用接口 libkvm 通过 ioctl 系统调用进入内核模式。KVM Driver 为虚拟机创建虚拟内存和虚拟CPU后执行VMLAUCH指令进入客户模式,然后装载Guest OS执行。如果Guest OS发生外部中断或者影子页表缺页之类的事件,暂停Guest OS的执行,退出客户模式进行一些必要的处理。然后重新进入客户模式,执行客户代码。如果发生I/O事件或者信号队列中有信号到达,就会进入用户模式处理。

上图是一个执行过程图,首先启动一个虚拟化管理软件qemu,开始启动一个虚拟机,通过ioctl等系统调用向内核中申请指定的资源,搭建好虚拟环境,启动虚拟机内的系统,虚拟机内的系统向内核反馈相关资源申请处理,如果是io请求,则提交给用户模式下的qemu处理,非io请求则将处理结果反馈给客户模式。



KVM 的特点:



  • kvm是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机)。
  • 是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的linux [全虚拟化] 解决方案。
  • 它包含一个为处理器提供底层虚拟化 可加载的核心模块kvm.ko(kvm-intel.ko 或 kvm-AMD.ko)。
  • kvm还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。
  • kvm能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(ps:它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)。
  • 在主流的linux内核,如2.6.20以上的内核均包含了kvm核心。 



KVM的作用:  



  • 提高物理服务器的资源利用率(较少的在硬件上的投入) 
  • 可以批量部署 
  • 实现实时快照技术 
  • 支持克隆技术 
  • 可以实现虚拟机的离线迁移和动态迁移(提高IT部署的灵活性) 
  • 可以将资源动态调整(传统的IT架构资源是固定的,无法动态分配) 

2、KVM的优势

 2.1 KVM与VMware的优势 

  • ESX的底层是 VMkernel + linux,VMkernel启动后开始接管对硬件管理,然后启动第一个linux虚拟机,协助VMkernel一起来管理和调度硬件资源。 
  • KVM 是直接将 linux kernel 变成hypervisor,只需要从标准linux内核启动即可,linux kernel拥有的特性可以全部利用上。KVM架构上的优势使得它非常简洁,在开发出来仅三个多月就被合并到了标准内核。 

2.2 KVM与Xen的优势 

  • Kvm和xen的最大区别就是架构,KVM是直接构建在linux kernel之上,把linux kernel变成hypervisor,是利用kernel已有的的功能基础上开发KVM所不具备的功能。 
  • Xen的 hypervisor 是自己从头开始构建的,对硬件资源的调度管理,虚拟机的管理,还有很多接口与linux kernel不兼容,然后对于xen,hypervisor需要通过Domain0对虚拟机提供硬件访问驱动支持。虽然说现在3.0的kernel中结合了xen,但是大部分linux OS的内核还是2.6,即便是一些新的发行版OS,也还是2.6的内核,新内核要单独去升级。
  • Kernel Virtual Machine (KVM) 虚拟化在很大程度上已取代 Xen,成为在大多数 Linux 系统上创建和支持虚拟机 (VM) 的默认开源方案。尽管这种变化的动机主要与构建和支持相关,而不是技术,但事实是许多对虚拟化感兴趣的企业 IT 小组需要学习 KVM 所使用的管理和控制工具。类似地,已投资 Xen 虚拟化且正在转向使用 KVM 的 IT 小组,可能希望尽可能将现有的虚拟机转换为 KVM 支持的格式,而不是重新创建它们。
  • Ubuntu和红帽这两家企业级Linux产品的主流供应商都明确表示选择KVM作为其hypervisor。这样的话,如果坚持在Linux平台上使用开源Xen,SUSE Linux Enterprise Server和Oracle将是唯一的选择。开源领域在红帽和Ubuntu的带领下已经明确选择了KVM。

2.3 KVM 与 vbox的区别

vbox 是由 qemu 改写而成,包含大量 qemu 代码。

  • 可以使用于"不支持"虚拟化技术的cpu。
  • 值得说的一点:vbox 在图形方面比较好,能进行2D 3D加速。
  • 但cpu控制不理想(估计是因为图形支持的缘故)。
  • 操作上有独立的图形界面,易于上手。

kvm 是linux内核包含的东西,使用qemu作为上层管理(命令行)。

  • 要求cpu 必须支持虚拟化。
  • 性能:作为服务器很好,可是图形能力十分的差。即使放电影,图像也是像刷油漆一样,一层一层的。
  • cpu使用率控制很好。
  • 控制上比较简洁,功能比较丰富:比如使用 “无敌功能”所有更改指向内存,你的镜像永远保持干净。 “母镜像”功能让你拥有n个独立快照点。 还有很多参数。另外,kvm作为内核级的虚拟机,刚开始发展关注的公司比较多——但是还没有达到商业应用的水平。

总体而言:在支持 虚拟化的情况下,vbox 和 kvm 的性能差不多,主要是面向对象不同:kvm适用于服务器,vbox适用于桌面应用。

 3、KVM 问答



http://www.vsharing.com/k/server/2013-2/679012.html



KVM是什么?

KVM (Kernel-based Virtual Machine,基于内核的虚拟机) 是Linux下 x86硬件平台上的全功能虚拟化解决方案,包含一个可加载的内核模块 kvm.ko提供和虚拟化核心架构和处理器规范模块。使用KVM可允许多个包括Linux和Windows每个虚拟机有私有的硬件,包括网卡、磁盘以及图形适配卡等。

由于KVM在性能、扩展性与安全等方面的优势,成为企业级的经济高效的虚拟化开放解决方案。红帽将KVM作为首选的虚拟化平台,IBM将KVM作为最佳虚拟化开放技术,参与KVM技术开发,涉及性能、安全和云计算等广泛领域。

如何获取KVM?

购买Linux版本获得KVM。很多Linux发行版本都内置有KVM,包括红帽企业Linux 5.4及以上版本,SUSE Linux Enterprise Server 11 SP1及以上版本,Canonical Ubuntu 10.04 LTS及以上版本。如果想虚拟运行Linux的服务器,或者虚拟运行Linux与Windows服务器的话,该购买方法最合适。

将KVM作为独立hypervisor购买。KVM与Linux的组合进行了优化,并拆开成交付hypervisor的模块。红帽企业虚拟化RHEV使用的就是这种方式。此种获取方式适合云环境,或者适合运行Windows服务器的(大型)环境。

KVM使用的存储类型有哪些?

KVM的存储选项有多种,包括虚拟磁盘文件LVM、基于文件系统的存储和基于设备的存储。

为实现KVM存储管理,可以使用LVM(Logical Volume Manager)和创建存储池。当系统创建KVM虚拟机的时候,默认使用虚拟磁盘文件作为后端存储。安装后,虚拟机认为在使用真实的磁盘,但实际上看到的是用于模拟硬盘的虚拟磁盘文件。这一额外的文件系统层会降低系统速度。

当然,基于磁盘镜像的虚拟磁盘并非全无益处,磁盘文件系统可以很轻松地用于其它的KVM虚拟化宿主机。但是如果您希望优化KVM虚拟化性能,最好考虑其它的存储方式。

如何运行KVM网络?

RHEL 6现在支持基于KVM管理程序。KVM的抽象层——称为libvirt——运行KVM网络,管理员能够在libvirt的配置文件中定制虚拟机连接并追踪网络设备。

在libvirt中运行KVM网络有两种方法:网络地址转换(NAT)和 桥接网络。网络地址转换是默认方法,桥接网络仅对非常特殊的基础设施有意义。

对大多数管理员来说,最好从理解KVM网络在默认安装中如何工作开始。如果想创建定制安装,通过学习导航用于网络地址转换的NAT配置文件,同样可以熟悉相关设置。例如,你可以创建多个允许你改变不同虚拟机之间的网络流量的NAT接口。

如何管理KVM?

首先是单个资源的基础虚拟化管理,有开源的虚拟化工具集libvirt,通过命令行接口提供安全的远程管理,可管理单个系统。

然后是管理全部运行KVM的多个服务器,有两种:用Red Hat Enterprise Virtualization-Management,即RHEV-M(管理多个RHEV-H系统)和IBM Systems Director VMControl(管理多个RHEL系统)。

最后有IBM Tivoli产品与开源虚拟化项目oVirt,为主机和子机提供高级功能,包括高可用性热迁移存储管理系统调度等。

如何提升KVM使用性能?

如果在主机上使用KVM,通常会激活数个客户操作系统,而且这些操作系统经常运行相同的OS,这意味着大量的内核页面被多次加载。通过应用KSM(kernel samepage merging,内核同页合并),许多虚拟机可以使用相同数量的内存启动。

在RHEL 6和Fedora 14中,KSM默认是打开的。KSM通过两个服务:ksmd和ksmtuned实现,这两个服务在系统初始化时自动启动。管理员应该判断他们的环境并决定保持KSM处于运行状态还是关闭它。



开源虚拟化联盟OVA



KVM一出现便收到各大厂商追捧。2011年五月,IBM、惠普、英特尔、红帽、BMC、Eucalyptus与SUSE宣布联合组建开放虚拟化联盟OVA,致力于促进KVM等开放虚拟化技术的应用。到目前为止,OVA的会员已经超过250个。

OVA不是一个开发组织或标准体。OVA主要承诺有五点:一是提升开源KVM虚拟化的采用率;二是加速建立围绕KVM的第三方解决方案生态系统;三是增加市场对KVM的整体认知度;四是鼓励互操作性;五是分享最佳实践与客户成功经验。

OVA为客户提供了一个平台,推销与KVM相关的最佳实践与KVM产品。此外,OVA还会组织教育博客与技术讲座,帮助客户了解学习KVM。

RedHat KVM 产品

多数主流Linux版本现在都内置KVM,比如Red Hat Enterprise Linux(RHEL),或者将KVM作为独立hypervisor获取,例如Red Hat Enterprise Virtualization(RHEV)。红帽的这两个方案都提供KVM虚拟化,但在管理、功能与实施中有重大区别。

RHEL为小型环境打造

Red Hat Enterprise Linux (RHEL)是款很通用的Linux服务器产品,依赖KVM虚拟化。它由Linux内核与大量包组成,包括Apache Web服务器与MySQL数据库,以及一些KVM管理工具。使用RHEL 6可以安装并管理少量虚拟机,但不能交付最佳的性能与最优的KVM管理平台。当然,在小型环境中,RHEL 6能满足你对开源虚拟化的所有要求。如果想虚拟运行Linux的服务器,或者虚拟运行Linux与Windows服务器的话,该购买方法最合适。

RHEL6.3提供了一个Virt-P2V工具,可以将Windows和RedHat Linux的物理机转换成虚拟机,使用KVM进行部署。将于2013年交付的RHEL 7将有几个关键主题,包括数据中心运行效率、虚拟化与云增强,以及集成开发工具的改进。

在管理方面,有开源的虚拟化工具集libvirt管理单个系统,IBM Systems Director VMControl管理多个RHEL系统。VMControl即能管理物理资源也能管理虚拟资源,还能管理异构hypervisor。新版VMControl 2.4,可管理KVM与其他hypervisor。

RHEV适合大型企业与云环境

如果虚拟化是你IT架构中的关键部分,那么你就不仅仅需要管理一些虚拟机了。对于企业级KVM虚拟化,你需要的是轻松的KVM管理、高可用性、最佳性能与其他高级功能。Red Hat Enterprise Virtualization (RHEV)包含RHEV Manager (RHEV-M),这个是集中的KVM管理平台,能同时管理物理与虚拟资源。

RHEV-M能管理虚拟机与其磁盘镜像,安装ISO,进行高可用性设置,创建虚拟机模板等,这些都能从图形web界面完成。也可使用RHEV-M管理两种类型的hypervisor。RHEV自身带有一个独立的裸机hypervisor,基于RHEL与KVM虚拟化,作为托管的物理节点使用。另外,如果你想从RHEV管理运行在RHEL上的虚拟机,可注册RHEL服务器到RHEV-M控制台。RHEV管理器同样还支持运行KVM的RHEL主机。这一特性使在现有RHEL环境中部署RHEV更加容易。

要管理云环境,红帽的合作伙伴IBM打造了一套SmartCloud解决方案。其中,IBM SmartCloud Provisioning是一款云端服务软件,提供面向虚拟基础设施的云服务(IaaS),它允许用户按照其需求对虚拟机以及数据存储进行操作与管理。无论你在后台采用KVM还是其他虚拟化技术都支持,存储采用Hadoop分布式文件系统,终端用户界面使用也更简单,易于操作。

4、KVM 和 QEMU、libvirt

4.1 QEMU

  qemu 也是一款虚拟化技术,就算不使用kvm,单传的qemu也可以完全实现一个虚拟机。那为何还会有qemu-kvm这个名词那。是因为虽然kvm的技术已经相当成熟而且可以对很多东西进行隔离,但是在某些方面还是无法虚拟出真实的机器。比如对网卡的虚拟,那这个时候就需要另外的技术来做补充,而qemu-kvm则是这样一种技术。它补充了kvm技术的不足,而且在性能上对kvm进行了优化。

准确来说,KVM是Linux kernel的一个模块,可以用命令modprobe去加载KVM模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有KVM模块是 远远不够的,因为用户无法直接控制内核模块去作事情,你还必须有一个运行在用户空间的工具才行。这个用户空间的工具,kvm开发者选择了已经成型的开源虚拟化软件 QEMU。

说起来QEMU也是一个虚拟化软件,它的特点是可虚拟不同的CPU。比如说在x86的CPU上可虚拟一个Power的CPU,并可利用它编译出可运行在Power上的程序。KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM的用户空间工具了。所以你会看到,官方提供的KVM下载有两大部分(qemu和kvm)三个文件(KVM模块、QEMU工具以及二者的合集)。也就是说,你可以只升级KVM模块,也可以只升级QEMU工具。这就是KVM和QEMU 的关系。

因此,除了在内核空间的KVM模块之外,在用户空间需要 QEMU 来模拟所需要CPU和设备模型以及用于启动客户机进程,这样才有了一个完整的KVM运行环境。而qemu-kvm是为了针对KVM专门做了修改和优化的QEMU分支,在2012年,qemu-kvm分支里面的小部分特性还没有完全合并进入到qemu的主干代码之中。

qemu 全称Quick Emulator。是独立虚拟软件,能独立运行虚拟机(根本不需要kvm)。kqemu是该软件的加速软件。kvm并不需要qemu进行虚拟处理,只是需要它的上层管理界面进行虚拟机控制。虚拟机依旧是由kvm驱动。

Qemu可以模拟CPU - 通过二进制翻译将一个指令集翻译成另一种指令集;可以模拟MMU - 管理用户os,或者用户进程(取决于qemu是工作在系统态还是用户态);可以模拟IO - 抽象实际的物理设备。以上三点都是软件模拟,强大但是效率较低。因此,qemu本身是个emulator,机器指令都由软件翻译执行。机器状态由软件数据结构保存。因此只要有时间,有闲心,理论上一个emulator可以虚拟任何硬件。

但是,qemu单独很慢,因为一条虚拟机的机器指令要翻译成host机的多条指令。在不考虑cache miss的情况下,速度会有十或者百数量级的降低(相比于直接运行在硬件上的机器)。kvm帮助qemu把很多代码扔到硬件上执行,这部分代码的速度就不慢了。因此qemu-kvm快很多。



 


KVM和QEMU关系


4.2 libvirt

  libvirt 是一系列提供出来的库函数,用以其他技术调用,来管理机器上的虚拟机,包括各种虚拟机技术,kvm、xen与lxc等,都可以调用libvirt提供的api对虚拟机进行管理。有这么多的虚拟机技术,它为何能提供这么多的管理功能那。是因为它的设计理念,它是面向驱动的架构设计。对任何一种虚拟机技术都开发设计相对于该技术的驱动。这样不同虚拟机技术就可以使用不同驱动,而且相互直接不会影响,方便扩展。而且libvirt提供了多种语言的编程接口,可以直接通过编程,调用libvirt提供的对外接口实现对虚拟机的操作。如今流行的云计算中的IaaS是与该库联系相当密切的。通过下图可以看出它的架构设计思想。

  从该图可以看出,在libvirt api之上会有很多个driver,对于每一种虚拟机技术都会有一种driver,用来充当该虚拟机技术与libvirt之间的包装接口。如此设计就可以避免libvirt需要设计各种针对不同虚拟机技术的接口,它主要关注底层的实现,提供对外接口调用,而不同的虚拟机技术通过调用libvirt提供的接口来完成自己所需要的功能。

kvm虚拟化和docker kvm虚拟化的优缺点_虚拟化技术

5. KVM 的安装和使用

http://baike.baidu.com/view/3474915.htm

5.1 安装方法



一、安装准备



1.确定机器有VT



终端输入命令: grep vmx /proc/cpuinfo (INTEL芯片)



grep  svm /proc/cpuinfo (AMD芯片)



不知道芯片的生产厂商则输入:egrep '(vmx| svm)' /proc/cpuinfo



如果flags: 里有vmx 或者 svm就说明支持VT;如果没有任何的输出,说明你的cpu不支持,将无法成功安装KVM虚拟机。



2. 确保BIOS里开启VT



Intel(R) Virtualization Tech [Enabled]



如有必要,还需在BIOS中开启VT-d



3. 确保 内核版本较新,支持KVM



用uname –r查看 内核版本,如果在2.6.20以下的linux版本,需升级内核。



 



二、安装KVM



 



下面就Ubuntu和CentOS下安装使用KVM虚拟机做介绍:



 



Ubuntu 中用guest登陆,安装KVM的命令为:



sudo  apt-get install kvm qemu qemu-kvm virt-manager kernel-package linux-source kqemu-source build-essential



 



kvm安装成功后会有/dev/kvm,如果无需图形管理器,只需要安装前三个即可。



再来查看下KVM是否安装成功,执行:virsh -c qemu:///system list



如果输入结果像下面这样的,那么成功了:



Connecting to uri: qemu:///system



Id Name State



----------------------------------



注1:CentOS中安装时,先要选择Selinux为enalble,使用命令



#system-config-securitylevel-tui



可查看或修改selinux的状态。



注2: CentOS中用root登陆时则安装命令为:



yum install kvm kmod-kvm qemu



再装入kvm模块:modprobe kvm-intel (Intel机器) 或者 modprobe kvm-amd (amd机器)



注3:可以用以下命令来检查是否装入kvm模块:



/sbin/lsmod | grep kvm



如果输出关于kvm版本的信息则已装入kvm模块



注4: 安装好后,可使用qemu-kvm命令,输入该命令,如果系统显示未知的命令,可查看/usr/libexec中是否有qemu-kvm 可执行文件,如果有,将其拷贝到/bin目录下即可。如果确实按照上面的步骤进行了,却在/bin,/usr/libexec,/usr/bin,/usr/sbin里都找不到qemu-kvm 可执行文件,可执行以下命令:



#yum provides "*/qemu-kvm"



注5:安装新 内核后,可能有部分 软件版本过低,不兼容。比如firefox因版本过低,无法启动。



CentOS下可使用如下命令更新该 软件(以firefox为例):



#yum update firefox 



5.2、在KVM下安装虚拟机 



1.用QEMU创建 磁盘镜像



sudo qemu-img create –f qcow windows.img 8G



注:在CentOS和新版Qemu中为:qemu-img create –f qcow2 windows.img 8G



 



2.使用KVM安装Guest VM



光盘安装:



sudo kvm –localtime –cdrom /dev/cdrom -m 512 -boot d win2.img



硬盘安装



sudo kvm –localtime –m 512 –hda windows.img –cdrom winxp.iso –boot d –clock –rtc –no-acpi



注:官方推荐使用 -no-acpi 参数,原因是 qemu/kvm不太支持,可能造成 cpu 的占用偏高。



注1:CentOS下 硬盘安装为 qemu-kvm –localtime –m 512 –hda windows.img –cdrom winxp.iso –boot d –no-acpi 即需要去掉了-clock rtc选项,否则会出现无法初始化时钟。



注2:CentOS quest mouse: export SDL_VIDEO_X11_DGAMOUSE=0可解决VM中无法识别USB鼠标的问题。



注3: 安装win 7时,不能使用-no-acpi选项。





5.3 KVM 使用



KVM启动Guest



① sudo kvm –boot c –m 512 –hda windows.img



② sudo kvm -boot c -m 512 -hda /home/lm/kvm/winxp.img -localtime -net nic,vlan=0,macaddr=52-54-00-12-34-01 -net tap,vlan=0,df=h,ifname=tap0,script=no -clock rtc -soundhw es1370 -smp 2



注意:在KVM-87下,请去掉df=h



-m 512 分配512MB的内存



-hda /home/lm/kvm/winxp.img



-localtime 使用本地时间(一定要加这个参数,不然虚拟机时间会有问题)



-net nic,vlan=0,macaddr=52-54-00-12-34-01 -net tap,vlan=0,df=h,ifname=tapo,script=no



使用网络,并连接到一个存在的网络设备tap0,注意mac地址一定要自己编一个,特别是如果你虚拟了多个系统并且要同时运行的话,不然就MAC冲突了,在KVM-87下去掉df=h



-boot d 从 光盘启动 (从 镜像启动也是用这个。从硬盘启动则为 -boot c )



-smp 2 smp处理器个数为2个,如果你是4核处理器,后面的数字就为4



-clock rtc



使用rtc时钟(如果不开启此选项,WINXP可能会很慢)





5.4 KVM管理工具



能够管理KVM的工具很多。



首先是单个资源的基础虚拟化管理,有开源的虚拟化工具集 libvirt,通过命令行接口提供安全的远程管理,可管理单个系统。



 



然后是管理全部运行KVM的多个服务器,有两种:用Red Hat Enterprise Virtualization-Management,即RHEV-M(管理多个RHEV-H系统)和IBM Systems Director VMControl(管理多个RHEL系统)。



 



最后有 Tivoli产品。包括Tivoli Provisioning Manager、Tivoli Service Automation Manager与Tivoli Monitoring for Virtual Servers。



 



RHEV-M



RHEV-M(Red Hat Enterprise Virtualization-Management)使用图形用户界面管理物理与逻辑资源。允许管理员查看并管理虚拟机及其镜像,还支持热迁移,配置高可用性集群。随着RHEV 3.0的发布,RHEV-M 3.0也已可用。



作为红帽虚拟化平台的核心组件,RHEV-M管理控制台还能运行虚拟机的主机节点。可将RHEV-H hypervisor或带有虚拟化授权的R红帽企业Linux服务器配置为节点。这两种类型的节点使用KVM作为底层的hypervisor。RHEV-H hypervisor是设置RHEV节点的默认选项,它是裸机 hypervisor,只包含了运行虚拟机RHEL代码的一个子集。正因为如此,RHEV-H主机的维护更加容易。此外,这些主机需要较少的补丁和维护就能确保其安全性。



RHEV-H基础文件系统只有100多MB而且运行在内存中,这避免了对基础镜像的改变。专用的安全增强型 Linux策略以及防火墙阻塞了所有流量,保证了RHEV-H节点的安全性。



RHEV管理器同样还支持运行KVM的RHEL主机。这一特性使在现有RHEL环境中部署RHEV更加容易。



 



此外,还有很多开源工具可以管理KVM。比如, IBM红帽等厂商加入到oVirt,这个开源虚拟化项目提供功能丰富的服务器虚拟化管理系统,为主机和子机提供高级功能,包括高可用性热迁移存储管理系统调度等。[1]



 



6. OpenStack, kvm, qemu-kvm以及libvirt之间的关系

http://www.huangwei.me/wiki/tech_cloud_kvm_qemu_libvirt_openstack.html



KVM 是最底层的hypervisor,它是用来模拟CPU的运行,它缺少了对network和周边I/O的支持,所以我们是没法直接用它的。

QEMU-KVM 就是一个完整的模拟器,它是构建基于KVM上面的,它提供了完整的网络和I/O支持。

Openstack 不会直接控制 qemu-kvm,它会用一个叫 libvirt 的库去间接控制 qemu-kvm。libvirt 提供了跨VM平台的功能,它可以控制除了QEMU之外的模拟器,包括vmware, virtualbox, xen等等。

所以为了 openstack 的跨VM性,所以openstack只会用 libvirt 而不直接用qemu-kvm。libvirt还提供了一些高级的功能,例如pool/vol管理。