【个人总结系列-15】搭建虚拟网络环境总结-XEN-创建及克隆虚拟机-安装配置OpenvSwitch-NOX

【个人总结系列-15】搭建虚拟网络环境总结-XEN-创建及克隆虚拟机-安装配置OpenvSwitch-NOX
【个人总结系列-15】搭建虚拟网络环境总结-XEN-创建及克隆虚拟机-安装配置OpenvSwitch-NOX

搭建虚拟网络环境总结-XEN-创建及克隆虚拟机-安装配置

OpenvSwitch-NOX

搭建虚拟网络环境的工作内容主要涉及到安装xen、创建虚拟机、复制虚拟机、安装ovs、配置ovs和安装nox等这些方面。以下各节是对这些主要内容的介绍。

1.1.1 安装xen

编写本文档所对应的Xen的安装环境是CentOS5.6。具体的安装步骤如下:?安装xen相关的软件包:

[root@localhost ~]# yum -y install kernel-xen virt-manager virt-viewer libvirt xen

?修改启动顺序并重启电脑:

[root@localhost ~]# vi /boot/grub/grub.conf

default=1改为default=0,使得电脑优先以包含xen的内核启动(不然的话要每次启动的时候手动选

择与xen相关的内核来启动)

?检查xen列表:

[root@localhost ~]# xm list

Name ID Mem(MiB) VCPUs State Time(s)

Domain-0 0 423 4 r----- 65.3

?如果xen进程未启动,手动执行:

[root@localhost ~]# /etc/init.d/xend start

[root@localhost ~]# /etc/init.d/xendomains start #正常情况xend启动后将默认启动xendomains

1.1.2 创建虚拟机

如上面安装好xen之后,打开virt-manager(在终端里输入:virt-manager),用virt-manager新建一个CentOS5.6的虚拟机。创建Xen虚拟机的步骤如下图所示:

?在virt-manager的图形界面中点击右键,选择新建虚拟机,为虚拟机选择

一个名称,设置虚拟机的各项参数,步骤如截图所示:

图2-1 创建虚拟机

图2-2 为虚拟机选择名称

图2-3 选择半虚拟化

图2-4 选择网络安装树

半虚拟化的需要网络安装,网络安装的地址是:http://202.115.44.135/centos5.6。剩下的步骤如下图所示:

图2-5 填写安装的URL

图2-6 选择映像文件的存放位置及大小

图2-7 选择虚拟网络

图2-8 设置虚拟机的内存等信息

图2-9 完成虚拟机的创建

图2-10 安装虚拟机

这样就开始了一个虚拟机的安装,接下去的步骤同普通安装基本一样。

1.1.3 快速克隆虚拟机

安装完之后,在/var/lib/xen/images中有一个vmpc1.img文件,即虚拟机的映像文件。在/etc/xen中有一个vmpc1的配置文件。如果想再建一个虚拟机的话,可以通过克隆前面安装的那台虚拟机。克隆一台虚拟机非常方便,只要复制一份那台虚拟机的映像文件(即.img文件,但是文件必须重命名)和配置文

件(需要修改部分内容,如主机名、mac地址等)即可。

复制一台虚拟机的步骤如下:

?首先关闭被复制的那台虚拟机(假如复制vmpc1)

xm shutdown vmpc1

?复制虚拟机映像文件和配置文件

cp /var/lib/xen/images /vmpc1.img /var/lib/xen/images /vmpc2.img

cp /etc/xen/vmpc1 /etc/xen/vmpc2

?修改虚拟机配置文件

vi /etc/xen/vmpc2

配置文件如下所示:

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

name = "vmpc1"

uuid = "85386e79-9f79-e243-9b62-3c9da736ae9f"

maxmem = 2048

memory = 2048

vcpus = 2

bootloader = "/usr/bin/pygrub"

on_poweroff = "destroy"

on_reboot = "restart"

on_crash = "restart"

disk = [ "tap:aio:/opt/vm1/vm1.img,xvda,w" ]

vif = [ "mac=00:16:36:47:a2:89,bridge=virbr0,script=vif-bridge" ]

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

修改name、uuid、mac保持唯一,通常将最后一位加1。修改disk路径,vmpc1的配置文件中的disk路径对应vmpc1.img这个映像文件

?启动并进入虚拟机

vm create vmpc2 -c

?修改主机名

hostname vmpc2

vi /etc/sysconfig/network

vi /etc/hosts

?修改网卡ip和mac,使得和和xen配置对应

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=static

BROADCAST=192.168.122.255

HWADDR=00:16:36:47:A2:80

IPADDR=192.168.122.12

NETMASK=255.255.255.0

NETWORK=192.168.122.0

ONBOOT=yes

?重启网络,完成修改

/etc/init.d/network restart

1.1.4 安装ovs

Linux的发行版本比较多,下面的安装说明只针对于安装有Xen 虚拟化平台的CentOS 64 位操作系统。安装步骤如下:

?安装Xen虚拟化环境,并保证Xend启动成功,网络可正常连接,如不讲究

Xen 版本,可利用CentOS 更新源已有的Xen 虚拟化平台,采取下面的简单办法:

[root@localhost ~]# yum install xen.x86_64

?安装完成后重启,启动菜单中选择包含xen的操作系统选项,启动成功之

后,如不出异常,xend将正常运行于后台,进入dom0客户操作系统。通过以下命令可并判断xend是否正常启动,正常启动的情况下该命令将显示客户操作系统dom列表。

?启动成功后安装内核源码,如下

[root@localhost ~]# yum install kernel.x86_64

?从官方网站https://www.360docs.net/doc/e817206672.html,/中下载Open vSwitch源代码包,最新版

本可使用下面的链接:https://www.360docs.net/doc/e817206672.html,/releases/openvswitch-

1.1.0pre

2.tar.gz,下载完后输入以下命令解压

[root@localhost ~]# tar –xzvf openvswitch-1.1.0pre2.tar.gz

?进入解压后目录,输入以下命令配置Open vSwitch工程,生成Makefile文

件。

[root@localhost ~]# ./configure --with-l26=/lib/modules/`uname -r`/build

--with-l26:生成内核模式的Open vSwitch时需指定的内核源码编译目录

指定Open vSwitch的安装位置加参数:--prefix=/…

如有其他问题可参考源码根目录下的帮助文件:INSTALL.Linux

?编译、链接、生成和安装Open vSwitch,命令如下,make install目录只安

装Open vSwitch除内核模块外的其他所有模块,如ovs-vsctl、ovs-vswitchd、ovs-ofctl等

[root@localhost ~]# make

[root@localhost ~]# make install

?卸载原有虚拟网桥模块,命令如下,如果Xend正常启动,将自动加载linux

虚拟网桥模块bridge.ko。

[root@localhost ~]# rmmod bridge

?如果无法卸载,可用―lsmod‖命令查看已加载的依赖于bridge的内核模块,

并用“rmmod 模块名”卸载,常见的无法卸载的情况可通过预先执行下面两条命令解决。

[root@localhost ~]# /etc/init.d/iptables stop

[root@localhost ~]# rmmod xt_physdev

?加载Open vSwitch内核模块openvswitch_mod.ko和linux虚拟网桥兼容模

块brcompat_mod.ko

[root@localhost~]#insmod openvswitch-1.1.0pre2/datapath/linux-2.6/openvswitch_mod.ko

[root@localhost ~]# insmod openvswitch-1.1.0pre2/datapath/linux-2.6/brcompat_mod.ko

?根据ovsdb模板vswitch.ovsschema创建ovsdb数据库

ovs-vswitchd.conf.db,用于存储虚拟交换机的配置信息,只需第一次运行Open vSwitch时创建

[root@localhost ~]# ovsdb-tool create

/usr/local/etc/ovs-vswitchd.conf.db

openvswitch-1.1.0pre2/vswitchd/vswitch.ovsschema

?启动ovsdb数据库服务器,Open vSwitch虚拟网桥模块将通过

ovsdb-server获得虚拟交换机配置信息,―—detach‖表示以后台方式运行,ovsdb-server其他参数请参考―ovsdb-server –help‖

[root@localhost ~]# ovsdb-server

/usr/local/etc/ovs-vswitchd.conf.db

--remote=punix:/usr/local/var/run/openvswitch/db.sock

--remote=db:Open_vSwitch,managers

--private-key=db:SSL,private_key

--certificate=db:SSL,certificate

--bootstrap-ca-cert=db:SSL,ca_cert

--detach

?初始化Open vSwitch控制接口,以便用ovs-vsctl管理配置虚拟交换机

[root@localhost ~]# ovs-vsctl --no-wait init

?启动Open vSwitch用户态模块,unix:后的文件为socket文件,为

ovsdb-server监听的socket文件。

[root@localhost ~]# ovs-vswitchd unix:/usr/local/var/run/openvswitch/db.sock --detach

?启动linux原有虚拟网桥兼容模块用户态组件ovs-brcompatd,该模块必须

在ovsdb-server和ovs-vswitchd启动后才能启动。

[root@localhost ~]# ovs-brcompatd

--pidfile

--detach

-vANY:console:EMER unix:/usr/local/var/run/openvswitch/db.sock

1.1.5 配置ovs

在安装了xen的主机中,当使用ifconfig命令时,除了熟悉的eth0以外还会出现许多平常没有见到过的网络接口,这些接口的出现的原因是因为xen会自动为虚拟机创建一些虚拟的网络接口,装有xen的主机在启动时网络的配置过程为:

1.执行在/etc/xen/xend-config.sxp中指定的/etc/xen/scripts/network-bridge脚本

https://www.360docs.net/doc/e817206672.html,work-bridge脚本创建一个新网桥,名字为xenbr0

3.复制物理网卡接口eth0的MAC地址和IP地址

4.停止物理网卡接口eth0

5.创建一对相连的虚拟网卡接口,veth0和vif0.0

6.将之前复制的物理网卡接口的MAC,IP分配给虚拟接口veth0

7.重命名物理网卡接口,从eth0改名为peth0

8.重名名虚拟网卡接口,从veth0改名为eth0

9.将物理网卡接口peth0,虚拟网卡接口vif0.0加入到网桥xenbr0中

10.启动网桥xenbr0,启动其他网络接口peth0,eth0,vif0.0

对于每一个新的domU,Xen会创建“一对相连的虚拟网卡”,其中一块在新建的domU上,另一块在dom0上。对于Linux的domU来说,其虚拟网卡名字是eth0,而在dom0这端的这一块的网卡名字是vif.0。当一台domU 关机的时候,相关的虚拟网卡会被删除。所以在装有xen的主机中网络端口的状态如下图所示:

图2-11 装有xen的主机中网络端口的状态

数据包到达物理网卡之后的处理流程为:数据包到达硬件物理网卡接口peth0,dom0上的网卡驱动会进行处理。因为peth0绑定在网桥上,所以数据包被发送到网桥上。观察ifconfig的输出,你会发现peth0,xenbr0,vif0.0和

vif1.0都共享一个相同的MAC地址FE:FF:FF:FF:FF:FF,该地址是以太网广播地址。这表明物理网卡接口,dom0的loopback接口,所有guest domain的后端接口都广播到网桥接口xenbr0。当物理网卡接口peth0接收到一个数据包,它会将数据包直接发送到网桥接口xenbr0上。然后网桥会分发数据包,像交换机一样(话说交换机也是网桥的一种)。网桥会根据数据包接收者的MAC地址将其转发到正确的网络接口上。所以peth0这个接口不需要配置ip地址,只有MAC地址就够了。然后vif接口会将数据包发送给domU上相连的接口,然后domU中返回的数据包也通过vif发送回来。dom0也是一样的操作模式,通过vif0.0->eth0这一对相连的网卡。

vif0.1:表示ID为0的第二个网络接口,vif6.0:表示ID为6的第一个网络接口

virbr0:是虚拟系统和真实系统进行连接的接口,实现NAT功能

xenbr1:是虚拟系统和真实系统进行连接的接口,桥接功能

图2-11 装有xen的主机中网桥的转发原理

以上就是在装有虚拟机的主机上网桥的转发原理,使用ovs进行基于网桥的转发也是同上面描述的原理类似,只是要使用ovs自己建一个网桥(假设为br0),然后把物理网卡、虚拟网卡0、虚拟网卡1……连接在这个br0上,具体的命令如下:

添加网桥br0

[root@localhost ~]# ovs-vsctl add-br br0

激活网桥br0

[root@localhost ~]# ifconfig br0 up

配置网桥br0的ip地址和子网掩码

[root@localhost ~]# ifconfig br0 192.168.203.100/24

将需要添加到网桥br0上的网络接口添加到br0中

[root@localhost ~]# ovs-vsctl add-port br0 peth0

[root@localhost ~]# ovs-vsctl add-port br0 vif0.0

然后把虚拟机的网桥设置为br0,原来可能是xenbr0,修改虚拟机的配置文件即可,然后重启虚拟机。

1.1.6 安装nox

首先是NOX的安装,安装的环境是Ubuntu10.04,安装操作的过程如下:cd /etc/apt/sources.list.d

sudo wget https://www.360docs.net/doc/e817206672.html,/downloads/debian/nox.list

sudo apt-get update

sudo apt-get install nox-dependencies

git clone git://https://www.360docs.net/doc/e817206672.html,/nox

cd nox

?如果需要启动gui 必须做branch这一步

git branch –a

git checkout -b destiny origin/destiny

./boot.sh

mkdir build/

cd build/

../configure

make -j 5

?启动控制器

./nox_core -v -i ptcp:6633 monitoring

?有时候会因为依赖包的问题而使安装出现问题,所以建议执行以下操作

apt-get install python-qt4 python-simplejson

apt-get install python-qt4-sql

?使open vswitch连接到控制器,查看安装是否成功

ovs-vsctl set-controller br0 tcp:172.16.1.230

Xen与虚拟化技术

目录 2010-6-21 1.虚拟化发展历史 (2) 1.1硬件虚拟化 (2) 1.2处理器虚拟化 (2) 1.3指令集虚拟化 (2) 2.虚拟化技术的类型 (3) 2.1硬件仿真 (3) 2.2完全虚拟化 (3) 2.3超虚拟化 (3) 2.4操作系统级的虚拟化 (4) 2.5内核虚拟机(Linux KVM) (4) 3.与Linux相关的虚拟化项目 (5) 4.Xen (6) 4.1Xen的体系架构 (6) 4.2Xen Hypervisor,操作系统,应用程序 (8) 4.3Xen的半虚拟化和全虚拟化 (9) 4.4Xen的网络架构 (11) 4.4.1Xen支持三种网络工作模式 (11) 4.4.2Xen Domain U Guests发送数据包处理流程 (12) 4.4.3xen中虚拟网卡与物理网卡之间的关系 (12) 5.Xen的配置和管理 (13) 5.1Xen相关配置文件 (13) 5.2/etc/xen/下的配置文件 (14)

1.虚拟化发展历史 1.1硬件虚拟化 IBM早在20世纪60年代开发System/360?Model67大型机时就开始使用该技术。Model67通过VMM(Virtual Machine Monitor)对所有的硬件接口都进行了虚拟化。在早期计算机中,操作系统被称为supervisor。能够在其他操作系统上运行的操作系统被称为hypervisor(这个术语是在20世纪70年代出现的)。 VMM可以直接在底层硬件上运行,允许运行多个虚拟机(VM)。每个VM都可以运行一个自己私有操作系统的实例——称为CMS(Conversational Monitor System) 1.2处理器虚拟化 虚拟化早期的另外一种用法是P-code(或伪码)机。P-code是一种机器语言,运行于虚拟机而不是实际硬件。它将Pascal程序编译成P-code,然后在一个P-code虚拟机上运行。这就使P-code程序具有了高度的可移植性,而且,只要有可用的P-code虚拟机,P-code 程序就可以运行。Java语言的虚拟机沿用了这种P-code模型。 1.3指令集虚拟化 虚拟化最新的发展称为指令集虚拟化,或者二进制转换。在这种模型中,虚拟指令集被转换成底层硬件的物理指令集,这个过程通常都是动态的。当代码执行时,就会对代码的某个段进行转换。如果出现分支情况,就会导入新代码集并进行转换。这使它与缓存操作非常类似,后者是将指令块从内存移动到本地快速缓存中执行。

虚拟机Xen网络配置及原理

虚拟机Xen网络配置 虚拟化是目前一门炙手可热的技术,它给我们带来的好处在各个层次都有体现,作为一个网络管理者来说,搭建和维护服务器更是我们职责所在!目前的服务器配置可以说是相当高了,单核cpu的时代也已经渐渐离我们远去,在我们使用多核cpu以及大内存服务器的的同时,我们是否想过这些服务器的性能是否完全都使用上了?举个例子来说,假设公司有一台IBM System x3650,它配备Xeon 5450cpu(四核心),二级缓存高达12M,最大支持48gb内存,在这样一台如此强劲的服务器上如果只跑一两个应用的话是否浪费了很多的性能呢? 当然,你完全可以把企业中很多的应用都跑在这一台服务器上,这样做虽然是可以的,但是大家都知道,在单个OS上跑的应用越多,出问题的系数也就越高,往往会因为其中某一个应用的问题而导致整个OS崩溃,再或者某个应用支持的系统平台不同,我们需要多个OS来支持,如此以来是否又要购买服务器来达到我们的需求?如果在虚拟化技术没出现之前,我们只能购买更多的服务器来支持更多的应用,无论在维护还是资金上都是一笔不小的投入,不过此刻的我们非常幸运,在这个虚拟化技术流行的时代,那些曾经不可能实现的问题已经不再是问题了,在此我也非常感谢那些在虚拟化技术上投入心血的人们.我们现在完全可以实现在一台物理机上同时跑多个OS! 很多管理员都用过VMware Workstation或者vpc,我们把它们称作虚拟机软件,我们可以在其上安装和物理机不同的OS,在我们需要测试某些程序或者搭建一些环境的时候经常使用到他们,在虚拟机上跑的OS即便是崩溃了也不会影响我们物理机上的任何应用,那我们是否把他们应用在服务器虚拟化层面呢?在这里我不建议这么去做,因为以上提到的两款虚拟机软件只不过是在物理机OS上运行的一个软件而已,此软件运行后会模拟一台真实计算机的环境,只不过是模拟罢了,模拟出来的东西要和物理机上的内核打交道是要经过很多道关卡的,在通过一层一层二进制转换后才能把I/O操作传送到内核中,从而我们会感觉到它们性能是不怎么强的,而服务器在性能上的要求是非常高. 简单介绍一下,在目前的服务器虚拟化方面使用较多的有Xen,hyper-v,VMware esX server等,hyper-v集成在windows server 2k8 64位版中,必须购买windows 2k8以后才可以使用.VMware esX server是一款相当成熟的虚拟机管理器,也是需要购买后才可使用,而Xen则是开源软件,可以直接下载后在linux上编译即可使用,并且最新的Xen3已经支持硬件虚拟化,可以在不修改内核源码的情况下虚拟OS,当然还有其他更多的可以在google上找

Xen虚拟化技术

7.5.2 Xen虚拟化技术 本节中将以主流的Xen体系架构为例,说明虚拟化系统的一般技术架构和工作原理。 1.Xen体系结构(Xen Hypervisor) Xen Hypervisor(即Xen的VMM)位于操作系统和硬件之间,负责为上层运行的操作系统内核提供虚拟化的硬件资源,负责管理和分配这些资源,并确保上层虚拟机(称为域)之间的相互隔离。Xen采用混合模式,因而设定了一个特权域用以辅助Xen管理其他的域,并提供虚拟的资源服务,该特权域称为 Domain 0,而其余的域则称为Domain U。 Xen的体系架构如图7-25所示。Xen向Domain提供了一个抽象层,其中包含了管理和虚拟硬件的API。Dom0内部包含了真实的设备驱动(原生设备驱动),可直接访问物理硬件,负责与Xen提供的管理API交互,并通过用户模式下的管理工具来管理Xen的虚拟机环境。

Xen向Domain提供了VCPU、虚拟MMU(Memory Management Unit)等基本的 虚拟硬件和基本机制(事件通道),并向Domain提供了虚拟域管理API(控制接口)。对Domain设备的访问,Xen也提供了相应的硬件接口(安全硬件接口), 以保证设备访问得以安全进行。 在Xen体系架构中涉及到的基本概念包括: 控制接口:仅能被Dom0使用,用于帮助Dom0控制和管理其他的Domain。控制 接口提供的具体功能包括Domain的创建、销毁、暂停、恢复及迁移,对其他Domain的CPU调度、内存分配及设备访问等。 安全硬件接口:提供除虚拟CPU、MMU之外的所有硬件虚拟工作,包括DMA/IO、驱动程序、虚拟的PCI地址配置、虚拟硬件中断等。该接口只能被具有原生设备 驱动的Domain使用,而向其他Domain则仅通过设备通道提供虚拟硬件服务。 VCPU:Xen为每个Domain建立了VCPU结构,用以接收Guest OS中传递的指令,其中大部分的指令被VCPU直接提交到物理CPU执行,而对于特权指令则需要经 过确认后交由Xen代为执行。 虚拟MMU:用于帮助Guest OS完成虚拟地址到机器地址的转换。Xen系统中增加了客户物理地址层,因而地址由原来的二层结构变为三层结构。Xen通过虚拟 MMU仍能使用硬件MMU来完成地址转换。 事件通道:是用于Domain和Xen之间、Domain相互之间的一种异步事件通知机制,用于处理Guest OS中的虚拟中断、物理中断以及Domain之间的通信。 设备管理器:位于Dom0和IDD(Independent Device Domain)中,可作为系统BIOS的扩展,用于向所有的设备提供通用的管理接口,并负责在Domain启动时 加载特定的设备驱动、建立管理设备通道、提供硬件设备配置接口并处理设备访问错误。 2.CPU虚拟化 (1)半虚拟化 对CPU指令集不提供硬件支持的情况,Xen只能采取半虚拟化的方案,通过修改Guest OS的内核对有缺陷的指令进行替换。在这种模式下,Xen位于操作系统和硬件之间,为其上运行的Guest OS内核提供虚拟化的硬件环境,因而Xen具有最高

Xen-VMware-ESXi-Hyper-V和KVM等虚拟化技术的原理解析

Xen,VMware ESXi,Hyper-V和KVM等虚拟化技术的原理解 析 XEN 与 VMware ESXi,Hyper-V 以及 KVM 特点比较: XEN 有简化虚拟模式,不需要设备驱动,能够保证每个虚拟用户系统相互独立,依赖于 service domains 来完成一些功能; Vmware ESXI 与 XEN 比较类似,包含设备驱动以及管理栈等基本要素,硬件支持依赖于 VMware 创建的驱动; Hyper-V 是基于 XEN 管理栈的修改; KVM 与XEN 方式不同,KVM 是以Linux 内核作为管理工具得。 虚拟机的体系结构 XEN 体系结构 图 3. XEN 体系结构图 一个XEN 虚拟机环境主要由以下几部分组成: XEN Hypervisor; Domain 0 —— Domain Management and Control(XEN DM&C); Domain U Guest(Dom U) 下图4 显示除了各部分之间的关系: 图 4. Xen 三部分组成之间关系图

XEN Hypervisor : XEN Hypervisor 是介于操作系统和硬件之间的一个软件描述层。它负责在各个虚拟机之间进行CPU 调度和内存分配。XEN Hypervisor 不仅抽象出虚拟机的硬件,同时还控制着各个虚拟机的执行。XEN Hypervisor 不会处理网络、存储设备、视频以及其他I/O. Domain 0: Domain 0 是一个修改过的Linux kernel,是唯一运行在Xen Hypervisor 之上的虚拟机,它拥有访问物理I/O 资源的权限,同时和系统上运行的其他虚拟机进行交互。Domain 0 需要在其它Domain 启动之前启动。 Domain U: 运行在Xen Hypervisor 上的所有半虚拟化(paravirtualized)虚拟机被称为“Domain U PV Guests”,其上运行着被修改过内核的操作系统,如Linux、Solaris、FreeBSD 等其它UNIX 操作系统。所有的全虚拟化虚拟机被称为“Domain U HVM Guests”,其上运行着不用修改内核的操作系统,如Windows 等。 2.Hyper-V 体系结构 图 5. Hyper-V 体系结构图 Hyper-V 是微软提出的一种系统管理程序虚拟化技术,采用微内核的架构,兼顾了安全性和性能的要求。Hyper-V 底层的Hypervisor 运行在最高的特权级别下,微软将其称为ring -1(而Intel 则将其称为root mode),而虚机的OS 内核和驱动运行在ring 0,应用程序运行在ring 3 下,这种架构就不需要采用复杂的BT(二进制特权指令翻译)技术,可以进一步提高安全性。从架构上讲Hyper-V 只有“硬件-Hyper-V-虚拟机”三层,本身非常小巧,代码简单,且不包含任何第三方驱动,所以安全可靠、执行效率高,能充分利用硬件资源,使虚拟机系统性能更接近真实系统性能。 Hyper-V 支持分区层面的隔离。分区是逻辑隔离单位,受虚拟机监控程序支持,并且操作系统在其中执行。Microsoft 虚拟机监控程序必须至少有一个父/ 根分区,用于运行64 位版本的Windows Server 2008 操作系统。虚拟化堆栈在父分区中运行,并且可以直接访问硬

Xen KVM VMware对比

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内核的负担越来越重。而KVM是Linux内核 的一部分,有Red Hat的技术支持和推广,有比Xen更加美好的发展前景。VMware&KVM的优势: 1. 目前企业内常见的虚拟换平台,国外的商业化成熟的软件,丰富的虚拟化产品和完整的解决方案,代码完全封闭。 2. VMware虚拟化平台的CPU性能高, 3. 网络性能指标VMware整体较好 4. 当内存数据块较小时,VMware性能较好,内存数据块较大时KVM较好;KVM在内 存写方面较好,VMware在内存读较好。 5. KVM的磁盘读相关操作表现较强,而VMware的磁盘写相关操作表现较强。

Xen安装windows和linux虚拟机

Xen安装windows和linux虚拟机 实验环境: 物理机系统:CentOS 5.5 32位yum源:安装镜像 Xen 简介 Xen 是一个开放源代码的para-virtualizing虚拟机(VMM),或“管理程序”,是为x86架构的机器而设计的。Xen 可以在一套物理硬件上安全的执行多个虚拟机;Xen是基于内核的虚拟程序,它和操作平台结合的极为密切,所以它占用的资源最少。 一、安装Xen和支持Xen的内核 1、挂载本机镜像 mount -o loop /iso/CentOS-5.5-i386-bin-DVD.iso /media/cdrom/ 2、使用yum安装 yum --disablerepo=\* --enablerepo=c5-media install -y xen* 3、检查/boot/grub/grub.conf 文件,是否默认启动支持Xen内核 4、重启系统,启动后检查内核和xend运行是否正常 二、安装Linux虚拟机(半虚拟化) 虚拟系统磁盘使用的映像文件,安装源使用的是HTTP服务提供的本机挂载的系统盘。 1、创建映像文件 dd if=/dev/zero of=centos5.5.img bs=2k seek=2048k count=1 2、创建虚拟机 virt-install -n centos -r 256 -f /virtual/centos/centos5.5.img --nographics -p -l http://127.0.0.1/cdrom

运行命令后正常的如下图所示: 接下来就和普通安装一样了。 三、安装Windows 虚拟机(全虚拟化) PS:安装windows一般都使用全虚拟化,但要使用全虚拟化,CPU必须支持虚拟化技术,这个在BIOS中设置。 安装Windows使用VNC远程到服务器,使用Virtual Machine Manger (virt-manager包)进行安装。

xen虚拟机搭建

Domain0操作系统安装: E:\utorrent\CentOS-6.5-x86_64-bin-DVD1to2\CentOS-6.5-x86_64-bin-DVD1.iso 配置yum代理: /etc/yum.conf proxy=http://192.168.150.49:3128 /etc/profile export http_proxy=http://192.168.150.49:3128 安装必要软件: yum install transfig dracut wget texi2html libaio-devel dev86 glibc-devel e2fsprogs-devel gitk mkinitrd iasl xz-devel bzip2-devel pciutils-libs pciutils-devel SDL-devel libX11-devel gtk2-devel bridge-utils PyXML qemu-common qemu-img mercurial texinfo libuuid-devel openssl-devel python-twisted python python-devel ncurses-devel glibc-devel.i686 yajl yajl-devel.x86_64 bridge-utils 下载linux内核,xen源码 linux-3.13.6.tar.gz xen-4.4.0.tar.gz 编译linux内核3.13.6: yum install gcc ncurses-devel.x86_64 make menuconfig Processor type and features-> Linux guest support-> Device Drivers-> Block devices->

xen虚拟化方案及应注意问题

虚拟化方案及应注意问题 Xen是一款虚拟化软件,支持半虚拟化和完全虚拟化。它在不支持VT技术的cpu上也能使用,但是只能以半虚拟化模式运行。 VMware是一款完全虚拟化软件。完全虚拟的弱点是效率不如半虚拟化的高。半虚拟化系统性能可以接近在裸机上的性能。 同时也因为vmware在基于xen内核的redhat系统上不能安装,因此,此次我给出的方案是xen的方案。 1、机房的选择 建议将服务器摆放在通信线路好而且比较稳定的机房,因为一旦网络中断,将造成多台服务器的服务同时中断。 2、半虚拟化与完全虚拟化的选择 Xen虚拟机有两种运行方式:完全虚拟化(full virtualization)和半虚拟化(para virtualization)。完全虚拟化提供底层物理系统的全部抽象化,且创建一个新的虚拟系统,客户机操作系统可以在里面运行。不需要对客户机操作系统或者应用程序进行修改(客户机操作系统或者应用程序像往常一样运行,意识不到虚拟环境的存在)。半虚拟化需要对运行在虚拟机上的客户机操作系统进行修改(这些客户机操作系统会意识到它们运行在虚拟环境里)并提供相近的性能,但半虚拟化的性能要比完全虚拟化更优越。 也因为vmware是完全虚拟化的产品,而且为商业软件,性能也不比xen,所以我采用了xen来实现虚拟化方案。 3、分区采用方式,用lvm方式去创建,boot独立分区,swap独立分区,/挂到lvm下面,分配5G 空间。。。。待空间不够用的时候,可以挂多个硬盘上去,设置为: [root@manifold xen]# cat /etc/xen/lv # Automatically generated xen config file name = "virt" memory = "512" disk = [ 'phy:/dev/VolGroup00/LogVol03,xvda,w', 'phy:/dev/VolGroup01/LogVol12,xvdb,w' ] vif = [ 'mac=00:16:3e:76:ce:86, bridge=xenbr0', ] vfb = ["type=vnc,vncunused=1"] uuid = "7217a051-2514-9e7a-e95e-df3fa7f5b611" bootloader="/usr/bin/pygrub" vcpus=2 on_reboot = 'restart' on_crash = 'restart' 然后在xvdb上创建pv,再将其加入vg,lvextend将所需的空间扩展,再resize2fs就行了。 这种是最灵活的分区解决方案,但灵活的同时,也带来的维护难度的上升,建议运维小心谨慎。 注意:(1)千万别直接在xen系统所在的lv做lvextend的动作,因为那只能是白费空间,因为xen 系统会识别不到硬盘空间的更改,同时因为其找不到superblock,我们不能对其进行数据的恢复,只能采用其他方式。 (2)应注意备份好/etc/xen下的系统配置文件。 4、最好使用支持Intel VT或AMD PT虚拟化技术的CPU,要检查中央处理器是否支持,用命令:INTEL grep vmx /proc/cpuinfo AMD grep svm /proc/cpuinfo

xen、kvm、vmware、hyper-v比较

最近在实战Xen中,xen和kvm,是开源免费的虚拟化软件;vmware是付费的虚拟化软件;hyper-v 比较特别,是微软windows 2008 R2附带的虚拟化组件,如果你买了足够的授权,hyper-v(包括hyper-v 2008 core)都可以免费使用。 如果是vmware或hyper-v虚拟windows系统,不管是虚拟化软件本身,还是其中的子系统,都要支付许可费用。 如果是vmware或hyper-v虚拟linux,虚拟化软件本身要支付许可费用,子系统可以用linux来节省成本。 如果是xen或kvm虚拟windows,其中的子系统要支付许可费用。 如果是xen或kvm虚拟linux,那么虚拟化软件本身和其中的子系统无需产生任何费用。 从性能上来讲,虚拟windows,如果都能得到厂商的支持,那么,性能优化可以不用担心。这几款软件全都能达到主系统至少80%以上的性能(磁盘,CPU,网络,内存),这时建议使用hyper-v来虚拟windows,微软自身的产品,虚拟windows是绝对有优势的。 如果是虚拟linux,建议首先使用xen,支持linux的半虚拟化,可以直接使用主系统的cpu和磁盘及网络资源,达到较少的虚拟化调度操作,可以达到非常高的性能,但xen操作复杂,维护成本较高。其次我们推荐kvm来虚拟linux,linux本身支持kvm的virtio技术,可以达到少量的虚拟化调度操作,得到较高的系统性能。不推荐使用hyper-v来虚拟linux,太多的不兼容性导致linux基本无法在hyper-v 上跑。 如果以上产品我们不打算买厂商支持,其中vmware和hyper-v,是不建议使用的,主要是授权问题。 这时就剩下kvm和xen了,如果虚拟windows,建议使用kvm,我们可以从redhat那里免费拿到针对windows优化过的磁盘和网络的驱动程序,可以达到较高的性能(几乎与hyper-v性能持平)。而xen的windows优化驱动不是那么容易就能拿到的(由于redhat以后不支持xen了,看看novell是否放水了,呵呵,就开放程度上来讲,redhat要好于novell)。 综上所述, 在有授权的情况下,虚拟windows,建议使用hyper-v 在有授权的情况下,虚拟linux,建议使用xen,如考虑到需要降低管理维护和学习成本,建议使用kvm。 在没有授权的情况下,虚拟windows,建议使用KVM 在没有授权的情况下,虚拟linux,建议使用xen,如考虑到需要降低管理维护和学习成本,建议使用kv

Linux 中的 XEN 虚拟化技术(一)Xen 虚拟化概述

Xen是剑桥大学计算机实验室开发的一个开放源代码的虚拟化软件,功能与 VMware 类似。此外 Xen 是基于 Linux 内核的虚拟程序,使用一个叫 hypervisor 的软件层来调节操作系统对真实硬件的访问和控制,实现在一套物理硬件上安装运行多个虚拟操作系统。 Xen 同时支持完全虚拟化(Full-Virtualized)和半虚拟化(Para-Virtualized)两种运行模式。 完全虚拟化提供底层物理系统的全部抽象化,虚拟系统不需要修改操作系统内核就可以直接运行在Xen 上面,VMware 是完全虚拟化技术的代表。 完全虚拟化功能需要依赖于 CPU 指令集的支持,例如:Intel CPU 的 VT 指令集,AMD CPU 的 SVM 指令集。如果服务器 CPU 不支持虚拟化指令集,Xen 只能以半虚拟化模式运行,在Xen上“Full-Virtualized”这个选项是灰色的,即功能不能启用。 半虚拟化需要对运行在 Xen上的操作系统内核进行修改,这些修改提高了操作系统与 hypervisor 间通讯的有效性和性能,所以半虚拟化的性能比全虚拟化更佳。 只支持半虚拟化的 Xen 不支持安装运行无法修改系统内核的 Windows 系列操作系统,但支持安装运行经过修改的 Linux 系统。 Xen 启动运行后,第一个虚拟的操作系统 Domain 0,就是 Xen 本身。Domain 0是其它虚拟主机的管理者和控制者,Domain 0可以构建其它的更多的 Domain,并管理虚拟设备Xen的应用范围: 服务器整合:在虚拟机范围内,在一台物理主机上安装多个服务器,用于演示及故障隔绝;无硬件依赖:允许应用程序和操作系统对新硬件的移值测试; 多操作系统配置:以开发和测试为目的,同时运行多个操作系统;

ubuntu10.04安装xen虚拟机

按照以下的步骤,在ubuntu10.04安装xen4.0.1成功.在ubuntu11.04下面安装xen 失败,提示错误/boot/xen version number does not start with digit 1.安装步骤 首先,需要下载一些后面安装虚拟机将要用到的工具 # apt-get install gcc g++ make patch libssl-dev bzip2 gettext # apt-get install zlib1g-dev python libncurses5-dev libjpeg62-dev libx11-dev # apt-get install libgcrypt11-dev pkg-config bridge-utils bcc bin86 libpci-dev # apt-get install libsdl-dev python-dev texinfo libc6-dev uuid-dev bison flex fakeroot # apt-get install build-essential crash kexec-tools makedumpfile libncurses5 # apt-get install libncurses5-dev iasl 1.1 编译并安装xen 先从网上下载xen-4.0.1.tar.gz,在root目录下建立xen文件夹,并将其置于/root/xen/目录下,以便于管理。 准备工作已经结束了,现在来编译并安装xen。首先解压缩软件包 # cd /root/xen # tar vxzf xen-4.0.1.tar.gz 然后进入软件包目录: $ cd xen-4.0.1 编译并安装: # make xen # make tools # make stubdom # make install-xen # make install-tools PYTHON_PREFIX_ARG= # make install-stubdom # ls /boot 将会发现有xen.gz xen-4.gz xen-4.0.gz xen-4.0.1.gz 这几项,证明xen已经安装成功。 将xend工具以及domian0加入启动项:

虚拟化二之Xen的基本部署和使用

Xen简介: 早期xen是基于半虚拟化的方式运行,大致损失硬件平台性能的5%。然而它十分怪异,因为它仅负责管理cpu和内存。所有I/O设备xen本身是不负责驱动和管理的。因为xen hypervisor仅提供最基本的管理功能,如虚拟化cpu,mmu,内存和中断等。然后将这些虚拟化资源向上输出接口供各虚拟机调用。因此,它必须先启动第一个虚拟机对硬件资源进行分配和管理。而Xen使用域来描述各虚拟机,并且根据ID号来唯一标识。因此第一个启动的虚拟机称为Dom0。虚拟机和hypervisor共同组成xen。 下面说说如何安装Dom0和以及在Dom0上安装启用虚拟机。 安装Dom0: 1.下载并安装好基本操作系统,本次操作使用CentOS6.5_x86-64为配置样例。 2.安装软件包bridge-utils,并且建立网桥并开启STP协议。 # yum install bridge-utils 建立和配置网桥部分,请查看上篇《虚拟化一之虚拟机网络模型简介》。 配置后信息如下: 3.下载官方的yum源: 4.选择要安装的Xen版本: Xen 4.5 # yum install xen45 # ls -l /boot/xen.gz lrwxrwxrwx 1 root root 12 Sep 10 02:54 /boot/xen.gz -> xen-4.5.0.gz Xen 4.6 # yum install xen46 # ls -l /boot/xen.gz lrwxrwxrwx 1 root root 12 Sep 10 02:54 /boot/xen.gz -> xen-4.6.0.gz Xen 4.7 # yum install xen47 # ls -l /boot/xen.gz lrwxrwxrwx 1 root root 12 Sep 10 02:54 /boot/xen.gz -> xen-4.7.0.gz

Xen、KVM、VMware、hyper-v等虚拟化技术的比较

xen和kvm,是开源免费的虚拟化软件。 vmware是付费的虚拟化软件。 hyper-v比较特别,是微软windows 2008 R2附带的虚拟化组件,如果你买了足够的授权,hyper-v(包括hyper-v 2008 core)都可以免费使用。 如果是vmware或hyper-v虚拟windows系统,不管是虚拟化软件本身,还是其中的子系统,都要支付许可费用。 如果是vmware或hyper-v虚拟linux,虚拟化软件本身要支付许可费用,子系统可以用linux来节省成本。 如果是xen或kvm虚拟windows,其中的子系统要支付许可费用。 如果是xen或kvm虚拟linux,那么虚拟化软件本身和其中的子系统无需产生任何费用。 从性能上来讲,虚拟windows,如果都能得到厂商的支持,那么,性能优化可以不用担心。这几款软件全都能达到主系统至少80%以上的性能(磁盘,CPU,网络,内存),这时建议使用hyper-v来虚拟windows,微软自身的产品,虚拟windows 是绝对有优势的。如果是虚拟linux,建议首先使用xen,支持linux的半虚拟化,可以直接使用主系统的cpu和磁盘及网络资源,达到较少的虚拟化调度操作,可以达到非常高的性能,但xen操作复杂,维护成本较高。其次我们推荐kvm 来虚拟linux,linux本身支持kvm的virtio技术,可以达到少量的虚拟化调度操作,得到较高的系统性能。不推荐使用hyper-v来虚拟linux,太多的不兼容性导致linux基本无法在hyper-v上跑。 如果以上产品我们不打算买厂商支持,其中vmware和hyper-v,是不建议使用的,主要是授权问题。 这时就剩下kvm和xen了,如果虚拟windows,建议使用kvm,我们可以从redhat 那里免费拿到针对windows优化过的磁盘和网络的驱动程序,可以达到较高的性能(几乎与hyper-v性能持平)。而xen的windows优化驱动不是那么容易就能拿到的(由于redhat以后不支持xen了,看看novell是否放水了,呵呵,就开放程度上来讲,redhat要好于novell)。 综上所述, 在有授权的情况下,虚拟windows,建议使用hyper-v 在有授权的情况下,虚拟linux,建议使用xen,如考虑到需要降低管理维护和学习成本,建议使用kvm。 在没有授权的情况下,虚拟windows,建议使用KVM

xen下安装虚拟机

使用xm命令管理虚拟机 我们安装虚拟机时,给虚拟机启的名字叫做 "domain" ,我们在真机中,使用xm命令来管理"domain". xm命令主要选项如下图 xm需要了解和撑握的命令选项如下: xm list 列出当前系统中所有的"domain"

在我的机器里,现在没有启用的虚拟机,只有1个 Domain-0 也就是本机,刚才已经在本机上建立了一个"domain"并安装了虚拟系统,可是在这里并没有出现。 xm create "domainname" 或 xm create /etc/xen/"domain配置文件" 我刚才建立的domainname 是“centos”所以,在这里,我输入xm create centos 这条命令也可以这样 xm create /etc/xen/centos xm console "domainname" 连入"domain"控制台 xm console 后面可以直接跟着"domainname" 也可以使用xm list 查看domain ID 使用xm console "ID" 的方式连入虚拟机系统的控制台 上图是使用"domainname"的形式

使用 xm console "ID" 形式 xm destroy "domainname" 立即终止一个domain,在使用这条命令之后,再用xm list 就查看不到被终止的 domain 如果想要再次启用被终止的domain 就要使用 xm create "domainname" 还有一部分选项比较的简单,这里就不详细去说明了,例如: pause 暂停一个 domain reboot 重新引导一个domain save&restore save是保存domain的运行状态,restore 主用于恢复用svae保存的domain机状态 shuadown 关闭一个domain 等等,相信大家看一下帮助都能懂的 xen virt-install命令 2009年06月17日星期三下午 04:15 virt-install其实就是我们常使用的virt-manager的命令行。 看一下它的用法: [root@maxcm ~]# virt-install --help

KVM和Xen虚拟化平台对比分析

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并不是一个完善的模拟器,而只是一个提供虚拟化功能的内核插件,具体的模拟器工作是借助工具(QEMU)来完成。

XEN常用命令

沧海桑田故人陌 花开花落几多情 1、cd /var/run/sr-mount/afb6b781-0d02-4e88-796f-ba46532af99f/ 将ISO盘加载到当前系统中. 2、dd if=/dev/VG_XenStorage-36cf02b8-bdbe-7c18-18fa-547c49327f66/VHD-0a9e97d6-1d92-4d77-85 7f-94b3530d8c94 of=VHD-0a9e97d6-1d92-4d77-857f-94b3530d8c94_yiyouD bs=2M 使用DD进行拷贝。 3、# xe vdi-list uuid=ff6f5301-baa0-432f-93b2-67b06d7aec70 params=all 追寻VDI链 4、vhd-parent: ff6f5301-baa0-432f-93b2-67b06d7aec70; vdi_type: vhd 根源VDI 5、# vhd-util scan -f -m "VHD*" -l VG_XenStorage-36cf02b8-bdbe-7c18-18fa-547c49327f66 -p 扫描指定SR上的VDI vhd=VHD-7d065179-28dc-4f0a-a64d-def9b7edfd26 capacity=858993459200 size=7025459200 hidden=0 parent=none无父链 vhd=VHD-60d1aefb-f0cb-4806-a2ea-a1c496afcbaa capacity=858993459200 size=860679569408 hidden=0 parent=VHD-7d065179-28dc-4f0a-a64d-def9b7edfd26有父链 6、lvscan | grep 扫描指定VDI的UUID状态 例如: lvscan | grep ff6f 7、lvscan 扫描全部 例如: ACTIVE '/dev/VG_XenStorage-36cf02b8-bdbe-7c18-18fa-547c49327f66/MGT' [4.00 MB] inherit 活动

Xen虚拟化环境下显卡透传实现

Xen VGA graphics adapter passthrough 一.显卡虚拟化调研报告 1.1 简介 Xen VGA graphics adapter passthrough是指将显卡绑定到虚拟机,虚拟机可以直接的独占的使用显卡,获得更好的3D和视频加速性能。 Xen VGA passthrough只能用于全虚拟化虚拟机,不支持半虚拟化虚拟机。Xen VGA passthrough需要Xen4.0或更新版本,需要dom0内核包含pci后端驱动。 Xen VGA passthrough需要硬件(CPU,主板,芯片组,BIOS)支持IOMMU(Intel VT-d或 AMD IOMMU)技术,满足要求的硬件参考https://www.360docs.net/doc/e817206672.html,/xenwiki/VTdHowTo。 1.2 原理 VGA passthrough的技术基础是PCI passthrough,PCI passthrough需要硬件支持IOMMU,主要用于网卡,U盘等PCI设备的直接访问。显卡的一些特殊性使其不能直接使用PCI passthrough,比如VGA显卡有自己的bios,集成显卡需要固定内存作为显存等。 VGA passthrough的步骤如下: 1)映射VGA帧缓存到虚拟机。 2)拷贝VGA BIOS 到虚拟机。 3)映射VGA I/O 端口。 4)关闭Xen的VGA模式,即禁止dom0使用该VGA显卡。 1.3 显卡支持情况 Xen4.0的显卡支持情况 ●支持intel集成显卡 ●支持主显卡适配器(primary graphics adapters),即开机启动时默认使用 的显卡。 ●部分Nvidia和ATI的显卡需要而外的patch来支持FLR(Function Level Reset)。 ●部分Nvidia显卡需要而外的使vBAR=pBAR的patch。 ●部分显卡需要修改VGA BIOS。

xen准虚拟化和完全虚拟化

如今,虚拟化市场上满是各种不同的虚拟化解决方案。多年以来,VMware一直控制着基于i386的虚拟化市场。然而,现在的开源解决方案Xen也在迅速地扩张自己的市场。在本文中,TechTarget中国的特约虚拟化专家Sander van Vugt 将介绍什么是Xen、它如何工作以及Xen如何与其它虚拟化解决方案一争高下。 要理解Xen的虚拟化方法,首先你必须了解什么是虚拟化。在计算时代早期,虚拟化并不存在。那时,使用的是模拟(Emulation)。在模拟技术中,软件程序模拟了计算机(硬件和软件)的行为。模拟层与操作系统对话,而操作系统与计算机硬件对话。在模拟层中安装的操作系统并不知道自己是被安装在模拟环境下的,你可以按照常规的方法安装操作系统。市场上有两大开源的模拟器:QEMU 和Bochs。 模拟技术最重要的特点之一是所有硬件都是模拟的,包括CPU。此外,还能在自己的架构中运行为其它架构开发的操作系统。不过,它也有一个缺点:虚拟完整的CPU要付出很大的性能代价。 在下一代中,虚拟化被带到了一个更高的级别。在模拟层(负责被虚拟机器的指令翻译)和硬件之间,不需要任何主机操作系统运行硬件上的虚拟机。虚拟机监控器(也称hypervisor或管理程序)被直接放在硬件之上运行。有了这种新型架构之后,虚拟化变得更加高效。例如,VMware在VMware ESX中应用了该架构,取得了巨大的成功。 在基于hypervisor的虚拟化中,有两种实现方法。第一种,虚拟机器产生的所有指令都需要被翻译成CPU能识别的指令格式,这会给 hypervisor带来大量的工作负荷。另一种方法(VMware ESX Server采用的就是这种方法)直接执行大部分子机CPU指令,直接在主机物理CPU中运行指令,性能负担很小。 在Xen使用的方法中,没有指令翻译。这是通过两种方法之一实现的。第一,使用一个能理解和翻译虚拟操作系统发出的未修改指令的CPU(此方法称作完全虚拟化或full virtualization)。另一种,修改操作系统,从而使它发出的指令最优化,便于在虚拟化环境中执行(此方法称作准虚拟化或paravirtualization)。 完全虚拟化与准虚拟化 完全虚拟化(full virtualization)是虚拟一台机器的一种方法。在此方法中,虚拟机与一个叫做虚拟机监控器(VMM)的部件进行通信,而VMM则与硬件平台进行通信。要在Xen中利用完全虚拟化方法,需要一个特殊的CPU,此CPU能理解虚拟操作系统发出的未修改指令。如果没有这样的特殊CPU功能,是不可能在Xen中使用完全虚拟化的。这是因为,在Xen方法中不是每条虚拟操作系统发出的指令都可以被翻译为每个CPU都能识别的格式,因为这非常耗费资源。完全虚拟化的主要优势在于,它安装了一个未修改的操作系统,这意味着运行于同样架构的所有操作系统都可以被虚拟化。

相关主题
相关文档
最新文档