虚拟机Xen网络配置及原理
第19章 Xen虚拟机配置与应用

19.1 Xen虚拟机的概述
可以使用下列方法检查真实系统硬件的 CPU是否支持完全虚拟化。 (1)如果真实系统硬件的CPU是Intel,可使用命 令“grep vmx /proc/cpuinfo”检查CPU是否有 用于Intel支持的CPU flags 。 (2)如果真实系统硬件的CPU是AMD,可使用命 令“grep svm /proc/cpuinfo”检查CPU是否有 用于AMD支持的CPU flags。
19.3启动和停止Xen服务
4.自动启动Xen服务 如果需要让Xen服务随系统启动而自动加载,可以执行“ntsysv”命 令 启动服务配置程序,找到“xend”服务,在其前面加上星号(*),然后 选择“确定”即可 。
19.4创建Xen虚拟系统安装树
在Xen虚拟机半虚拟环境中安装Linux虚拟系统时需要使用系 统的安装树。安装树是一个包含所有的系统安装文件及相关程序 的目录,这个目录可以使用HTTP、FTP或NFS等方式提供给 Xen虚拟机用于系统的安装。具体步骤如下。 ① 安装Apache服务器,具体安装和设置方法参见第7章。 ② 将Red Hat Enterprise Linux 5安装映像ISO文件复制到Linux 系统中,这里以/tmp/iso目录为例。 ③ 从网站/centos/build/mkdvdiso.sh下载 RedHat公司提供的DVD ISO制作脚本,将它复制到Red Hat Enterprise Linux 5安装映像ISO文件所在的/tmp/iso目录内, 使用命令“chmod +x /tmp/iso/mkdvdiso.sh”修改 mkdvdiso.sh脚本权限。
第19章 Xen虚拟机配置与应用
本章导读 Xen虚拟机的概述 Xen的安装和配置 启动和停止Xen服务 创建Xen虚拟系统安装树 创建Xen虚拟系统 管理Xen虚拟机
xen虚拟化基础篇

Xen介绍:xen是一个开放的源代码虚拟机监视器,有剑桥大学研发。
它打算在单个计算机上运行多达128个满足特征的操作系统,操作系统必须进行显示地修改("移植")以在Xen上运行(但是提供对用户应用的兼容性)。
这使得无需特殊硬件支持,就能达到高性能的虚拟化。
Xen由三部分组成:第一部分:Xen Hypervisor,又称虚拟机监控程序(Virtual Machien Monitor简称VMM),VMM工作原有linux系统内核位置,替代了linux系统内核,用于虚拟CPU、Memeory等;第二部分:Xen Dom0,又称特殊区域;为vmm提供硬件驱动程序,用于协助vmm驱动各个底层硬件,同时又为XenDomU提供模拟IO等功能;由于特殊原因Linux-2.6.37以后的内核才支持Xen Dom0,建议大家在使用xen时使用linxu-3.0以后的内核;第三部分:XenDomU,非特权区域;实际生产中的操作系统Xen虚拟技术分类:(1)完全虚拟化:DomU中的各个硬件都是由VMM和Dom0虚拟和模拟实现;(2)半虚拟化:DomU中的CPU、Memory有VMM模拟实现,IO等设备分为前端(Front)和后端(Back),前端工作在DomU中,而后端工作在Dom0中;DomU中的网卡eth0与Dom0中的viif#中的设备对应,不再由Dom0模拟,这大大提升了IO性能(3)借助于硬件设备的半虚拟化;例如Intel的vt-d技术Xen Hypervisor分类:(1)default/xm(Xen-4.1):需要依赖于xend守护进程(2)defualt/xl(Xen-4.2):无须启动xend服务进程CPU虚拟化实现的方式:(1)模拟(emulation): 纯软件方式,性能较差(2)虚拟化(Virtualization):虚拟化由分为两类第一类:完全虚拟化BT: VMware软件实现的技术;称为二进制翻译HVM: 硬件辅助的虚拟化第二类:半虚拟化Memroy虚拟化实现的方式:在进程角度看memory是线性地址空间,而站在内核角度看memroy是物理地址空间;虚拟化实现方式:Intel:Intel的Extended Page Table技术,简称为EPTAMD: AMD的Nested Page Table技术,简称为NPTIO的虚拟化实现方式:(1)模拟:完全有软件来模拟真实的硬件来实现(2)半虚拟化:借助于前端(front)和后端(back)实现(3)IO透传(IO-Through): 例如Intel的VT-d技术,基于北桥硬件的辅助虚拟化虚拟化网络:由TUN或TAP实现在计算机网络中,TUN与TAP是操作系统内核中的虚拟网络设备。
Xen虚拟化技术

Xen虚拟化技术简介Xen是一种虚拟化技术,可用于创建和管理虚拟机。
它是一个开源的,基于x86架构的虚拟化解决方案。
Xen允许多个操作系统在同一台物理服务器上运行,并提供隔离和资源管理的功能。
本文将介绍Xen虚拟化技术的基本概念、架构和优势。
基本概念HypervisorHypervisor是Xen的核心组件,也是Xen与其他虚拟化技术的区别所在。
Hypervisor允许多个操作系统同时运行在宿主机上,每个操作系统都可以被认为是一个虚拟机。
Dom0是Xen虚拟化环境中的控制域。
它运行一个特殊的Xen内核,负责管理虚拟机的创建、销毁、资源分配等任务。
Dom0也可以运行其他操作系统,如Linux。
DomUDomU是Xen虚拟化环境中的客户域。
每个DomU都是一个独立的虚拟机,可以运行不同的操作系统,如Linux、Windows等。
DomU通过Hypervisor与Dom0进行通信和资源管理。
架构Xen虚拟化技术的架构可以分为四个层次:硬件层、Hypervisor层、Dom0层和DomU层。
硬件层是Xen虚拟化技术的底层,包括物理服务器、CPU、内存、存储等硬件设备。
Hypervisor层Hypervisor层是Xen的核心组件,负责虚拟化和资源管理。
它将物理硬件资源划分为多个虚拟资源,并为每个虚拟机提供独立的运行环境。
Dom0层Dom0层是控制域,运行一个特殊的Xen内核。
它负责管理虚拟机的创建、销毁、资源分配等任务,并提供管理接口供管理员使用。
DomU层是客户域,每个DomU都是一个独立的虚拟机。
DomU可以运行不同的操作系统,并通过Hypervisor与Dom0进行通信和资源管理。
优势Xen虚拟化技术相比其他虚拟化技术具有以下优势:高性能Xen采用了一种称为paravirtualization的虚拟化方式,它在虚拟机和物理硬件之间添加一层Hypervisor,使得虚拟机能够直接访问硬件资源,从而提高了性能。
Xen入门基本原理

Xen虚拟化入门
Xen虚拟化入门
Xen是一个监视与x86兼容的计算机的开源虚拟机程序。
Xen使用一个叫做hypervisor的软件层来调节对真实硬件的访问,实现在一台单独的计算机上运行多个子操作系统。
本指南将介绍Xen的原理以及虚拟化解决方案之SUSE Linux Enterprise Server。
含义及其工作原理
Xen的来源是什么?工作原理是什么?什么叫做完全虚拟化?什么叫做准虚拟化?本部分将对这些问题作出解答。
什么是Xen?
Xen的工作原理
SUSE Linux Enterprise Server 10
选定Xen为数据中心虚拟化解决方案之后,你需要决定运行何种Xen产品。
一般来说,有三种品牌的Xen可以提供现代数据中心所需的可支持性和稳定性。
本文主要介绍SUSE Linux Enterprise Server。
Xen:为虚拟化准备SUSE Linux Enterprise Server 10
创建并管理虚拟机
创建虚拟机的步骤在Linux版本之间是相当不同的。
本部分将学习使用Virtual Machine Manager工具创建虚拟机并探究xm工具提供的管理选项。
xen配置参数解释

xen配置参数解释# Kernel image file.kernel = "/usr/lib/xen/boot/hvmloader"设定该HVM虚拟机的内核镜像文件,默认是采用宿主机上/usr/lib/xen/boot/hvmloader这个来引导的。
# The domain build function. HVM domain uses 'hvm'.builder='hvm'设定虚拟域的建立方式,一个虚拟域对应了一个虚拟机,宿主机通过根域0来管理。
如果是HVM虚拟机的话,这项要设定为hvm。
# Initial memory allocation (in megabytes) for the new domain.# WARNING: Creating a domain with insufficient memory may cause out of emory errors. The domain needs enough memory to boot kernel and modules. Allocating less than 32MBs is not recommended.memory = 128设定虚拟机的占用的内存,如手册上说的,不建议设定低于32MB。
# Shadow pagetable memory for the domain, in MB.# Should be at least 2KB per MB of domain memory, plus a few MB per vcpu.shadow_memory = 8设定影内存?(这个术语的意思我还不了解,还烦请高手指点)这个配置项的默认值为8,单位MB。
虚拟机每多一个VCPU就应到增加一些。
# A name for your domain. All domains must have different names.name = "ExampleHVMDomain"设定虚拟机的域名实例。
Xen基本原理

1Xen概述1.1 简介Xen是由剑桥大学计算机实验室开发的一个开源项目。
是一个直接运行在计算机硬件之上的用以替代操作系统的软件层,它能够在计算机硬件上并发的运行多个客户操作系统(Guest OS)。
目前已经在开源社区中得到了极大的推动。
Xen支持x86、x86-64、安腾( Itanium)、Power PC和ARM多种处理器,因此Xen可以在大量的计算设备上运行,目前Xen支持Linux、NetBSD、FreeBSD、Solaris、Windows和其他常用的操作系统作为客户操作系统在其管理程序上运行。
标准计算机硬件和操作系统使用Xen进行虚拟化的计算机硬件和操作系统1.2 Xen虚拟化类型Xen对虚拟机的虚拟化分为两大类,半虚拟化(Paravirtualization)和完全虚拟化(Hardware Virtual Machine)。
1.2.1 半虚拟化半虚拟化(Paravirtualization)有些资料称为“超虚拟化”,简称为PV,是Xen主导的虚拟化技术。
这种技术允许虚拟机操作系统感知到自己运行在Xen Hypervisor上而不是直接运行在硬件上,同时也可以识别出其他运行在相同环境中的客户虚拟机。
在Xen Hypervisor上运行的半虚拟化的操作系统,为了调用系统管理程序(Xen Hypervisor),要有选择地修改操作系统,然而却不需要修改操作系统上运行的应用程序。
由于Xen 需要修改操作系统内核,所以您不能直接让当前的Linux 内核在Xen 系统管理程序中运行,除非它已经移植到了Xen 架构。
不过,如果当前系统可以使用新的已经移植到Xen 架构的Linux 内核,那么您就可以不加修改地运行现有的系统。
半虚拟化虚拟机示意图1.2.2 完全虚拟化完全虚拟化(Hardware Virtual Machine)又称“硬件虚拟化”,简称HVM,是指运行在虚拟环境上的虚拟机在运行过程中始终感觉自己是直接运行在硬件之上的,并且感知不到在相同硬件环境下运行着其他虚拟机的虚拟技术。
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 操作系统。
XenServer设置虚拟网络

XenServer设置虚拟网络每个托管服务器都有一个或多个网络,XenServer 网络是虚拟的以太网交换机,可以连接到外部接口,或者是单个服务器或池内部完全虚拟的网络。
在物理服务器上安装XenServer 后,系统将为该服务器上的每个物理NIC 创建一个网络。
该网络在虚拟机上的虚拟网络接口(VIF )与和足迹服务器上的网络接口卡(NIC )所关联的物理网络接口(PIF )之间起桥接作用,如下图所示:在创建XenServer网络之前,需要先把交换机的端口更改为trunk模式调试二层交换机(华为S5700,48口)1、1,13---17端口设置为trunk模式,做为业务口:[Quidway]interface GigabitEthernet 0/0/13[Quidway-GigabitEthernet0/0/13]port link-type trunk[Quidway-GigabitEthernet0/0/13]port trunk allow-pass vlan all注:三层交换机上有5个vlan,vlan对应的网段分别是:vlan101:172.21.0.0vlan102:172.21.1.0vlan103:172.21.2.0vlan104:172.21.3.0vlan105:172.21.4.02、其余端口添加vlan105中,vlan105为三层交换机上的172.21.4.0网段,一台交换机上如果已经设置了某个端口为hybrid端口,则不可以再把另外的端口设置为trunk端。
3、查看vlan配置信息:[Quidway]display port vlanPort Link Type PVID Trunk VLAN List-------------------------------------------------------------------------------GigabitEthernet0/0/1 trunk 1 1-4094GigabitEthernet0/0/2 access 105 -GigabitEthernet0/0/3 access 105 -GigabitEthernet0/0/4 access 105 -GigabitEthernet0/0/5 access 105 -GigabitEthernet0/0/6 access 105 -GigabitEthernet0/0/7 access 105 -GigabitEthernet0/0/8 access 105 -GigabitEthernet0/0/9 access 105 -GigabitEthernet0/0/10 access 105 -GigabitEthernet0/0/11 access 105 -GigabitEthernet0/0/12 access 105 -GigabitEthernet0/0/13 trunk 1 1-4094GigabitEthernet0/0/14 trunk 1 1-4094GigabitEthernet0/0/15 trunk 1 1-4094GigabitEthernet0/0/16 trunk 1 1-4094GigabitEthernet0/0/17 trunk 1 1-4094GigabitEthernet0/0/18 access 105 -GigabitEthernet0/0/19 access 105 -GigabitEthernet0/0/20 access 105 -GigabitEthernet0/0/21 access 105 -GigabitEthernet0/0/22 access 105 -GigabitEthernet0/0/23 access 105 -GigabitEthernet0/0/24 access 105 -GigabitEthernet0/0/25 access 105 -GigabitEthernet0/0/26 access 105 -GigabitEthernet0/0/27 access 105 -GigabitEthernet0/0/28 access 105 -GigabitEthernet0/0/29 access 105 -GigabitEthernet0/0/30 access 105 -GigabitEthernet0/0/31 access 105 -GigabitEthernet0/0/32 access 105 -GigabitEthernet0/0/33 access 105 -GigabitEthernet0/0/34 access 105 -GigabitEthernet0/0/35 access 105 -GigabitEthernet0/0/36 access 105 -GigabitEthernet0/0/37 access 105 -GigabitEthernet0/0/38 access 105 -GigabitEthernet0/0/39 access 105 -GigabitEthernet0/0/40 access 105 -GigabitEthernet0/0/41 access 105 -GigabitEthernet0/0/42 access 105 -GigabitEthernet0/0/43 access 105 -GigabitEthernet0/0/44 access 105 -GigabitEthernet0/0/45 access 105 -GigabitEthernet0/0/46 access 105 -GigabitEthernet0/0/47 access 105 -GigabitEthernet0/0/48 access 1 -4、二层交换机上已把端口设置为trunk模式,13—17端口允许所有的vlan通过。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
虚拟机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的原理可以在/ 学习到,在这里提一下什么是hypervisor,简单的说hypervisor其实就是由一些微代码构成,其最先被载入内存,用来隔离每一个OS.在/ 有官方的ppt,可以更加详细的了解Xen的原理.经常看到一些喜爱Linux的用户和喜爱使用Windows的用户针锋相对,甚至破口大骂的时候我非常不理解,我对Linux和windows都非常喜爱,在搭建服务器的时候总是喜欢把两者结合起来使用,评价谁好谁坏毫无意义,应该尽量结合两者的优势来管理好服务器才是正道.平时用Linux的时候很多,我比较爱用centos和suse,这里就拿Centos5来说说Xen在网络上的配置,让我们把Xen更好的应用于生产环境中.首先在centos上安装xen内核,这个很简单,在centos中有rpm包,直接使用dvd挂载上去后安装即可,具体安装哪些包在这里就不多废话了,网络上有很多教程,在这个地方浪费篇幅就跑题了,现在假设已经安装好了Xen内核,并且在Xen内核中已经安装成功一台guestOS,(半虚拟化环境)那么在多网卡的环境下如何去配置?这里只是讲解多网卡桥接环境.先来分析几个脚本,更加深刻的理解xen的网络配置情况.如果你是用rpm包安装的话,那么可以看到如下的结构..引用[root@target xen]# auto xend-config.sxp xmexample2qemu-ifup xend-pci permissive.sxp xmexample.hvmscripts xend-pci-quirks.sxp xmexample.vtitest1 xmexample1blktap vif-common.shblock vif-natblock-common.sh vif-routeblock-enbd vtpmblock-nbd vtpm-common.shexternal-device-migrate vtpm-deletelocking.sh vtpm-hotplug-common.shlogging.sh vtpm-implnetwork-bridge vtpm-migration.shnetwork-custom xen-hotplug-cleanupnetwork-nat xen-hotplug-common.shnetwork-route xen-network-common.shvif-bridge xen-script-common.sh其中用显示为红色的几个文件和xen的网络配置关系密切.那么xend进程启动以后是如何调用这几个文件的?这几个文件又做了些什么动作?在官方说明中有这样一段话:When xend starts up, it runs the network-bridge script, which:1。
creates a new bridge named xenbr0 (建立一个网桥名称为xenbr0)2。
real ethernet interface eth0 is brought down (关闭真实的以太网接口eth0) 3。
the IP and MAC addresses of eth0 are copied to virtual network interface veth0 (将eth0的IP和MAC地址拷贝给虚拟以太网接口veth0)4。
real interface eth0 is renamed peth0 (将真实的接口eth0重命名为peth0)5。
virtual interface veth0 is renamed eth0 (将虚拟以太网接口veth0重命名为eth0) 6。
peth0 and vif0.0 are attached to bridge xenbr0. Please notice that in xen 3.3, the default bridge name is the same than the interface it is attached to. Eg: bridge name eth0, eth1 or ethX.VlanID (将peth0和vif0.0连接到网桥xenbr0)7。
the bridge, peth0, eth0 and vif0.0 are brought up (激活peth0 eth0 vif0.0) xenbr0是什么?我们知道,在xen环境里domU要和网络中的计算机通信是要通过xen总线来调用后端驱动来实现的.在xend脚本启动时,我们用ifconfig命令会发现多了一个xenbr0,xenbr0是一个网桥,众所周知,网桥是工作在链路层,在网桥中的设备都在一个广播域中,使用以下命令可以查看xenbr0的信息。
引用[root@target ~]# brctl show | grep xenbr0 ; ip link show | grep xenbr0xenbr0 8000.feffffffffff no peth0vif0.0xenbr0: BROADCAST,NOARP,UP,LOWER_UP mtu 1500 qdisc noqueue可以看出在网桥已经桥接了两块网卡,并且关闭了arp,在xend进程未启动之前,我们是看不到vethX接口的,因为此时netbk和netloop没有被载入,当进程启动后会通过xend脚本载入,此时虚拟接口以及被创建,但是down掉的,然后通过上面几个步骤后veth0会重命名为eth0,并且peth0,eth0以及vif0.0会被激活,此过程是通过network-bridge 脚本实现的,为什么看不到veth0,因为此时已经被重命名为eth0.打开脚本会看到。
先看看创建网桥的代码,在network-bridge第198行定义了一个op_start函数引用198 op_start () {199 if [ "${bridge}" = "null" ] ; then200 return201 fi202203 if is_network_root ; then204 [ -x /usr/bin/logger ] && /usr/bin/logger "network-bridge: bridging not supported on networkroot; not starting"205 return206 fi207208 if ! link_exists "$vdev"; then209 if link_exists "$pdev"; then210 # The device is already up.211 return212 else213 echo "214 Link $vdev is missing.215 This may be because you have reached the limit of the number of interfaces 216 that the loopback driver supports. If the loopback driver is a module, you217 may raise this limit by passing it as a parameter (nloopbacks=); if the 218 driver is compiled statically into the kernel, then you may set the parameter219 using loopback.nloopbacks= on the domain 0 kernel command line.220 " >&2221 exit 1222 fi223 fi224225 create_bridge ${bridge}这一段前面是一些判断语句,比如bridge变量没设置或者vdev不存在的时候将给出提示信息并且退出,而最后create_bridge ${bridge}则是调用了create_bridge函数来创建一个网桥,create_bridge函数在xen-network-common.sh中有如下定义:使用brctl命令创建网桥,关闭了生成树协议,转发延迟设置为0,并且关闭了arp和multicast引用109 create_bridge () {110 local bridge=$1111112 # Don't create the bridge if it already exists.113 if [ ! -e "/sys/class/net/${bridge}/bridge" ]; then114 brctl addbr ${bridge}115 brctl stp ${bridge} off116 brctl setfd ${bridge} 0117 sysctl -w "net.bridge.bridge-nf-call-arptables=0"118 sysctl -w "net.bridge.bridge-nf-call-ip6tables=0"119 sysctl -w "net.bridge.bridge-nf-call-iptables=0"120 ip link set ${bridge} arp off121 ip link set ${bridge} multicast off122 fi123124 # A small MTU disables IPv6 (and therefore IPv6 addrconf).125 mtu=$(ip link show ${bridge} | sed -n 's/.* mtu \([0-9]\+\).*/\1/p') 126 ip link set ${bridge} mtu 68127 ip link set ${bridge} up128 ip link set ${bridge} mtu ${mtu:-1500}129 }替换ip和mac,并且重命名网卡等后续工作引用if link_exists "$vdev"; thenmac=`ip link show ${netdev} | grep 'link\/ether' | sed -e 's/.*ether \(..:..:..:..:..:..\).*/\1/'`preiftransfer ${netdev}transfer_addrs ${netdev} ${vdev}if is_bonding ${netdev} || ! ifdown ${netdev}; then# Remember the IP details if necessary.get_ip_info ${netdev}ip link set ${netdev} downip addr flush ${netdev}fiip link set ${netdev} name ${pdev}ip link set ${vdev} name ${netdev}setup_bridge_port ${pdev}setup_bridge_port ${vif0}ip link set ${netdev} addr ${mac} arp onip link set ${bridge} upadd_to_bridge ${bridge} ${vif0}add_to_bridge2 ${bridge} ${pdev}do_ifup ${netdev}else# old style without ${vdev}transfer_addrs ${netdev} ${bridge}transfer_routes ${netdev} ${bridge}fiif [ ${antispoof} = 'yes' ] ; thenantispoofingfi}明白了这些就好办了,这些动作都可以手工完成。