免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1514 | 回复: 0

xen相关基本概念 [复制链接]

论坛徽章:
0
发表于 2009-12-02 21:17 |显示全部楼层

                                                                                                                [color="#000102"]Xen是一个开源的x86处理器架构的para-virtualizing虚拟机监控器(VMM)或者'系统管理程序(hypervisor)'
               
               
               
               
               
               
               
               
               
                [color="#333333"]1)        全虚拟的硬件需求[color="#333333"]  具有VT的Intel CPU 或者 SVM技术的ADM CPU  # cat /proc/cpuinfo | grep flags2) 半虚拟化的硬件需求[color="#333333"]        64位的X86主机或者支持PAE技术的32位主机        # cat /proc/cpuinfo | grep flags3)     禁用SELinux[color="#333333"]        设置SELINUX=disable
基于xen的系统架构        一个Xen系统有多个层,底层和大部分特权层是Xen本身。   Xen可以虚拟出多个客户操作系统,每一个都在一个安全的虚拟机中运行,用Xen术语来说,就是一个域(Domain)。Xen调度这些域以充分地利用可用的物理CPU。每一个客户操作系统管理它自己的应用程序。这个管理包括Xen安排给VM的时间里每一个应用程序的调度职责。   第一个域,域0(domain 0),当系统启动的时候自动创建,并有管理特权。域0创建其它的域、管理他们的虚拟设备。它也能执行管理任务,例如暂停、恢复和迁移其它的虚拟机。   在域0里,xend进程运行管理系统。Xend负责管理虚拟机和提供使用他们的控制台。通过一个命令行工具,命令通过一个HTTP接口被发给xend。
[color="#000102"]  我们介绍一下Xend,它是Xen控制器daemon,意思是说它负责处理创建 销毁 迁移以及其它许多domain管理的任务 它很大一部分动作是基于一个HTTP服务器的 大量对domain的控制请求都是通过发送HTTP请求来实现的 我们在引导进入Xen后通过命令行命令xend start来启动Xend daemon 它需要Python2.3的支持 Xend daemon的工作是建立在与XCS server(the control Switch)的交互上 所以,当我们启动Xend daemon时,需要检查一下XCS是否已经启动和运行了 如果没有,我们将试着去启动它 Srv Daemon是Xend的主要程序,启动Xend daemon就会创建一个Srv Daemon类的实例
虚拟机磁盘的几种使用方式:1、使用物理磁盘disk=[ ’phy:/dev/system/mainserver,xvda,w’, ’phy:/dev/cdrom,xvdb,r’, ][color="#333333"]2、使用镜像文件[color="#333333"]disk=[ ’file:/var/lib/xen/images/disk1,hda,w’, ’file:/isos/cdrom.iso,hdc,r’, ][color="#333333"]3、其它环境的镜像文件的使用[color="#333333"]disk=[ ’tap:vmdk:/var/lib/xen/server1.vmdk,hda,w’, ] #来源于vmware[color="#333333"]disk=[ ’tap:aio:/var/lib/xen/server2.img,xvda,w’, ]   #来源于xen本身的#Xen磁盘镜像文件是一种特殊的tap设备,它使用的是xen blktap内核模块。这个模块允许在完全虚拟化环境下作为准虚拟设备处理磁盘镜像文件。要使用这个模块,你需要有aio类型的设备。磁盘镜像文件本身可能是一个由dd命令创建的普通磁盘镜像文件。使用tap磁盘镜像有个好处,就是可以使用任何类型的磁盘镜像。然而,它有个缺点:目前的管理工具并不支持tap设备,如virtual manager。这就意味着你不得不利用这个设备手动配置虚拟机。[color="#333333"]4、使用网络块设备[color="#333333"]disk=[ ’iscsi:2007-08.nl.example:xendata,xvda,w’, ][color="#333333"]#需要在domain0中启动iSCSI启动程序,并在Xen虚拟机的配置文件中包含完整的iSCSI Qualifying Name(iqn),如上面所示你要使用的iqn为iqn.2007-08.nl.example:xendata
CPU管理
Xen允许一个域的虚拟CPU(s)和一个或者多个主机CPU关联。这可以用来在一个或者多个客户域之间分配实际的资源,或者优化使用处理器资源当使用双核、超线程或者其它高级CPU技术的时候。Xen采用'深度优先(depth first)'的方式仿真物理CPU。对于一个既有超线程又有双核心的系统,这就是在一个给定核心上的所有线程,然后是在一个给定插槽上的所有核心,然后是所有插槽。也就是,如果你有两个插槽,双核超线程Xen CPU,顺序将是:
socket0 socket1
core0 core1 core0 core1
ht0 ht1 ht0 ht1 ht0 ht1 ht0 ht1
#0 #1 #2 #3 #4 #5 #6 #7
让同一个域内的多个虚拟CPU影射到相同物理CPU很可能导致性能不佳。最好使用'vcpus-set'来热插拔其中一个虚拟CPU,确保其它的虚拟CPU在不同的CPUs上。如果你正在运行IO繁重的任务,典型地最好把一个超线程或者整个核心给正在运行的域0(domain 0),因此束缚其它的域让他们不能使用CPU 0.如果你的工作负载主要是计算,你可能想这样配置vcpus,所有的物理CUP线程对所有的客户域可用。
x86架构的设计从来就不支持完全的虚拟化。如果要正确实现x86架构虚拟化,VMM就必须能够对某几条特定的超级指令进行操作。但是,如果在没有足够特权的情况下执行这些超级指令会导致失败(如果特权级不够,那么会直接导致执行失败,不会产生其它响应),而并非产生一个便于我们使用的陷阱(trap)。
另外,将x86架构中的MMU进行有效的虚拟化也是一件很困难的事情。这些问题是可以被解决的,但是在解决的同时必须要付出操作复杂度增加和系统性能降低的代价。VMwareESXServer要动态地重写那些被VMM操控的机器码部分,在其中有可能需要VMM干涉的地方插入陷阱操作。因为务必要对所有那些不能够引起陷阱的特权指令进行捕捉和操作,所以这种转换(//动态重写代码)要被应用于整个guestOS的内核,这种方法会带来高昂的系统开销。
hvm ---- fully virtualized guestparavirt ---- paravirtualized guest
               
               
               
               
               
               
               
               
               
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/14754/showart_2109762.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP