Username:
Password:
Remember Me?
深入学习Xen新起点 全面介绍Xen虚拟机
< 上一篇
|
下一篇 >
来源:linuxsky作者:linuxsky 发布时间:2008-04-07 02:56:06
您的位置: Linux时代 > 技术文档 > 系统安全 >
深入学习Xen新起点 全面介绍Xen虚拟机
日期:2006-07-27 来自:linuxsky
Xen VMM(virtual machine monitor)
是由剑桥大学电脑实验室研发的一个开源项目,他能够让我们创建更多的虚拟机,每一个虚拟机都是运行在同一个操作系统上的实例。
这些客户OS能够是修补过的Linux内核2.4或2.6,也能够是修补过的NetBSD/FreeBSD内核。用户应用程式就运行在这些客户OS上,并无需修改任何代码。
我曾紧密跟踪Xen项目一年多。对Xen产生兴趣是在读了2004年的OLS(Ottawa Linux Symposium)论文集之后。
完全虚拟化已被一些硬件仿真程式实现了。硬件仿真器的不利因素是他们的性能。
Xen项目(半虚拟化)的思想已不是很新鲜了。性能度量和他达到的高效性,能够被看作是个突破,运行Xen的系统开销确实很小,大约占3%。
就像刚才所说的那样,现在的Xen要为内核打补丁,但是,将来的处理器能支持虚拟化,内核也就无需打补丁了。比如说,Intel的VT和AMD的Pacifica处理器都将包括这种支持。
XenSource公司
2005年8月在Intel研发者论坛(IDF)上发表声明说,他已利用Intel的VT-Enabled平台和Xen技术虚拟化了Linux和Windows XP SP 2。
假如没有其他虚拟化方法的话,Intel的VT和AMD的Pacifica将会在对Xen的支持上展开竞争。
同时参和竞争的更有
VMWare
公司的ESX Server,他不是基于Xen的虚拟化解决方案。VMWare公司2005年8月初声明,他将通过一个叫VMware Community Source的计划允许他的合作伙伴使用VMware ESX Server的源代码和接口。
VMware的一个显著优势就是他无需在客户OS上打补丁。VMware可能比Xen运行地慢一些,因为他使用影子页表(shadow page tables),而Xen同时使用直接和影子页表。
Xen已在像Fedora Core 4、Debian和SuSE Professional 9.3这些产品中捆绑发行了,他也将被包含在RHEL 5中。
针对其他处理器的支持正在有条不紊地进行着。Xen小组致力于x86_64 port,同时IBM着手于提供Power 5芯片的支持。
保护环
在Xen中,一个“系统管理程式”运行在0环,客户OS运行在1环,应用程式运行在3环。这种关系对于x64/64有一点不同,就是客户内核和应用程式都运行在3环上。
Xen自身被称为“系统管理程式”,是因为他比客户OS的系统管理代码运行所需的特权级还高。
当系统引导的时候,Xen被装载到0环的内存中。他在1环上启动修补过的内核,这被称作是domain 0(译者注:domain是指一个运行中的虚拟机,在其上有一个guest OS在执行)。从这个domain开始,您能够创建更多的domain,也能够销毁他们,能够进行domain的迁移、配置参数等等。您创建的那些 domain也运行在1环他们的内核中。用户应用程式运行在3环。
现在,修补过的Linux内核2.4和2.6能够作为domain 0。据Xen研发者所说,将来domain 0仅支持2.6的内核补丁。构造domain 0的大部分工作是在xen/arch/x86/domain_build.c中的construct_dom0()方法中实现的。
物理设备驱动程式只能运行在特权级,也就是domain 0上。Xen依靠Linux或其他修补过的OS内核对他任何的设备提供虚拟化支持。这样的好处就是Xen的研发者不必再去研发设备驱动程式。
在一个有标签TLB的处理器上使用Xen能够大大提高性能。标签TLB能够把ASID(address space identifier)放在TLB入口处。有了这个特性,当处理器在系统管理程式和客户OS之间转换时就无需刷新TLB了,这大大减少了系统开销。
Xend Deamon
首先,我们介绍一下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类的实例。
接下来在createFactories()方法中创建一个Channel Factory。Channel Factory有一个隐含的notifier对象。Xend daemon的大量工作都是基于这个notifier接收的消息的。这个factory创建一个线程,在一个无限循环中读取这个notifier。
创建domain
创建一个domain是通过使用一个hypercall(DOM0_CREATEDOMAIN)来完成的。Hypercall是Linux内核中的一个系统调用,通过他,用户空间能够调用内核中的方法,他通过一个中断(Int 0x80)来完成。在Xen中,类似的系统调用就是hypervisor,通过他,domain 0 调用hypervisor中的方法,他也是通过中断(Int 0x82)来完成的。hypervisor通过他的虚拟CPU访问每一个domain。
XendDomain类和XendDomainInfo类在创建和销毁domain中扮演着很重要的角色。我们通过调用XendDomain中的domain_create()方法创建一个新的domain。
XendDomainInfo类和他的方法主要用于一个domain的实际构造。
XCS Server
XCS server有两个TCP套接字,分别是控制连接和数据连接,他们不同的地方在于前者是同步的,后者是异步的。前面提到的notifier对象,就是XCS服务器的一个客户端。
创建虚拟设备
XendDomainInfo中的create()方法启动一个创建domain的动作链。首先被创建的是这个domain的虚拟设备。这个create ()方法调用create_blkif()创建一个块设备接口(blkif),即使VM无需磁盘他也是必须被创建的。另一个虚拟设备通过 create_configured_devices()创建。
任何的设备类都从Dev继承,Dev是个联系设备控制器的抽象类。他的attach()抽象方法在每一个Dev类的子类中实现,这个方法把前端和后端联系了起来。
Domain 0运行后端驱动,同时最新创建domain运行前端驱动。许多消息在后端和前端驱动之间传送。前端驱动感觉上是虚拟的,他无需使用特定硬件的周详信息。
联系虚拟设备的中断是虚拟中断。
结论
Xen项目是个很有趣同时充满了希望的项目。他的代码很复杂,特别是虚拟内存管理、活动域合并工具和授权表机制。本文仅仅是介绍性的,并不涉及这些话题。然而,我希望他能够成为想要了解和深入研究代码的一个出发点。
喜欢本文,那就收藏到:
上一篇:
配置FreeBSD内核
下一篇:
Xen:用于Linux?内核的虚拟化技术简介
相关评论
我也要评论
还没有关于此文章的相关评论!
首页
上一页
下一页
尾页
昵称:
(为空则显示guest)
评论分数:
★
★ ★
★★★
★★★★
★★★★★
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
相关推荐
xml轻松学习手册(3)xml的术语_xml教程
xml轻松学习手册(4)xml语法_xml教程
xml轻松学习手册(5)xml实例解析_xml教程
了解web页面工具语言xml(一)产生背景_xml教程
了解web页面工具语言xml(二)定义_xml教程
了解web页面工具语言xml(三)支持工具_xml教程
了解web页面工具语言xml(四)应用分类_xml教程
了解web页面工具语言xml(五)好处_xml教程
了解web页面工具语言xml(六)展望_xml教程
xml技术上传文档_xml技巧
相关资讯
perl实例分析教程之四
perl实例分析教程之三
perl实例分析教程之二
perl实例分析教程之一
perl实例分析教程之十四
perl实例分析教程之十五
什么是Perl6,关于perl6
Perl教学第十二篇Perl5中的引用(指针)
Perl教学第十三篇Perl的面向对象编程
Perl教学第十四篇Perl5的包和模块
点击发布文章
导航
主页
设为首页
加入收藏
联系我们
赞助商
文章类别
行业资讯
域名资讯
虚拟主机
托管租用
VPS
CDN
网站运营
技术资讯
Mac OS
网络设备
路由技术
网络技术
HTML/DHTML
源码天堂
网络编程
Java
Perl
C/C++
Shell
数据库其他
DB2
Sybase
存储备份
硬件技术
网站建设
通信技术
虚拟化技术
安全其他
安全工具
加密和破解
数据库安全
程序安全
网络安全
系统安全
防火墙
VPN
网管技术其他
Informix
Oracle
PostgreSQL
Dreamweaver教程
windows操作系统
XML编程
NET编程
JSP编程
PHP编程
ASP编程
Mssql
Mysql
Access
Coreldraw
flash
web服务器
ftp服务器
mail服务器
邮件系统
IBM-AIX
HP-UX
Sco
Solaris
FreeBSD
Linux
Proxy
CSS教程
Javascript教程
Ajax
dns服务器
Photoshop教程
站长资讯
冲浪宝典
帮助中心
首页新闻
其它相关问题
安全漏洞相关问题
网站推广相关问题
虚拟主机相关问题
网站建设相关问题
服务器相关问题
备案相关问题
支付相关问题
后台操作指南
代理相关问题
邮件相关问题
域名相关问题
vps相关问题
行业资讯
名网动态
新手指南
代理帮助
订阅
Rss Feed
主机赞助商连接:
华夏名网虚拟主机域名注册
关于我们 | 网站声明 | 联系我们 | 广告服务 IDC中文资讯站-客观公证的IDC产业权威媒体
Copyright
@
2007-2008 IDCNEWS.NET, All Rights Reserved
蜀ICP备07504800号