虚拟机Xen网络配置及原理
- 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 xmexample2
qemu-ifup xend-pci permissive.sxp xmexample.hvm
scripts xend-pci-quirks.sxp xmexample.vti
test1 xmexample1
blktap vif-common.sh
block vif-nat
block-common.sh vif-route
block-enbd vtpm
block-nbd vtpm-common.sh
external-device-migrate vtpm-delete
locking.sh vtpm-hotplug-common.sh
logging.sh vtpm-impl
network-bridge vtpm-migration.sh
network-custom xen-hotplug-cleanup
network-nat xen-hotplug-common.sh
network-route xen-network-common.sh
vif-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 xenbr0
xenbr0 8000.feffffffffff no peth0
vif0.0