Xen虚拟化技术简介

Xen是 Red Hat Enterprise Linux 5 提供的新功能,通过Xen技术,可以让一台电脑同时执行多个操作系统,将计算机的效能发挥得淋漓尽致。本章将介绍 Xen 这个新功能的概念与实际配置的方法。

1  Xen简介

我们都知道,一个计算机中最重要也最昂贵的设备应该就是中央处理器(Central Processing Unit,CPU)了。现在计算机的中央处理器越来越快,除了增加频率外,中央处理器的架构也从单内核跃进到多内核。然而,中央处理器在大部分的时间都是闲置的。以"效能/成本"的比率来说,中央处理器可以说是不符合投资报酬率的设备。
为了提高中央处理器的使用率,后来人类发展了虚拟化技术,让中央处理器可以同时执行多个操作系统。如此一来,我们就可以把一台计算机当做很多台使用。通过虚拟化的技术,可以提高中央处理器的使用量。相对的,也提高了中央处理器的投资报酬率。
最早实现虚拟化技术的,应属IBM的Mainframe平台。它通过实体的切割,使一台计算机可以同时执行多个操作系统,如同许多台计算机一般。但Mainframe成本高,并不是每个用户都有能力购买的;后来虚拟化技术转往软件面来实现,这样就使一台低廉的个人计算机也可以享受虚拟化的好处了。在软件的虚拟化技术中,最著名的应属VMware, Inc.开发的系列产品。
在Linux领域中,也有许多软件虚拟化的产品 ,其中最广受好评的就是由XenSource 公司 (http://www.xensource.com/)发展的Xen。Red Hat也从Red Hat Enterprise Linux 5 开始正式收录Xen,使其成为Red Hat Enterprise Linux 自带的一个子系统。
在虚拟化子系统中,每一个虚拟产生的计算机都称为"虚拟机 (Virtual Machine)";而用来存储所有虚拟机的计算机则称为"宿主机 (Host Machine)"。

1.1  虚拟化类型

一般来说,软件的虚拟化技术又可分为两种。
全虚拟化(Full Virtualization)
中央处理器与其他的硬设备都虚拟化。
全虚拟化的好处是,由于全部都由虚拟化系统产生,所以操作系统只要有支持虚拟化系统提供的硬设备 ,就可以不修改操作系统而直接在虚拟机上安装该操作系统。但也因为所有的硬设备都由虚拟产生,所以当虚拟机上的操作系统要读取某一个硬设备时,还需通过虚拟化系统才能读取真实的硬设备,因而效能往往比较差。实现全虚拟化最著名的就是VMware, Inc. 产品。
半虚拟化 (Paravirtualization)
虚拟化系统仅提供中央处理器的虚拟化能力。
其他的硬设备则与真实机器共享同一个硬设备,因此使用硬设备的效率较佳。但缺点是操作系统必须修改其内核才能安装在半虚拟化系统中的虚拟机器中。UML就是一个实现半虚拟化的典型代表。


1.2  Xen 的功能

Xen 的主要功能是让你可以在一台计算机上同时执行多个操作系统。而Xen可以用于哪些用途则没有标准的答案,完全视你如何运用虚拟机的特性而定,例举如下用途。
测试新系统:你可以建置一个新的虚拟机,在该机器上安装新版的操作系统或软件,借以测试新系统是否可以正常运行。如果可以,才正式升级真正系统;如果失败,那就乖乖继续使用旧的版本吧!
提高安全性:你也可以把不同的服务建置在不同的虚拟机上,每一个虚拟机仅提供该项服务。这样一来,就算攻击者成功入侵,也会被局限在虚拟机上,而无法读取宿主机上的重要数据。
实际可用性:由于Xen提供了迁移(Migration)的功能,你可以把某一个虚拟机通过网络转移到另外一台宿主机上执行,而客户端,完全不知道服务已经被移转到另外一台计算机了。万一宿主机出现故障,你便可以利用迁移的功能将服务转移到另外一台计算机执行,再把濒临故障的计算机关机维修,借以提高服务的可用性了。

1.3  Xen 支持的虚拟化类型
这里有一个好消息和一个坏消息要跟你分享。
在"28.1.1 虚拟化类型"中提到,虚拟化技术可分为全虚拟化与半虚拟化两种。好消息是,Xen对这两种虚拟化技术都有支持!但坏消息是,并不是所有的中央处理器都可以执行全虚拟化!
如果想让Xen提供全虚拟化,那么你的中央处理器必须符合下列条件。
Intel 中央处理器提供vmx标签。
AMD中央处理器提供svm标签。
你可以利用直接查看/proc/cpuinfo 的flags参数来判断中央处理器是否拥有上述标签。以下是我在Intel Core 2 Duo机器上查询flags参数的结果。

[[email protected] ~]# grep vmx /proc/cpuinfo
flags  : fpu vme de pse tsc msr pae mce cx8 
apic mtrr pge mca cmov pat pse36                   
clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx
lm constant_tsc arch_pe rfmon pebs bts pni monitor 
ds_cpl vmx smx est tm2  ssse3 cx16 xtpr lahf_lm
flags  :fpu vme de pse tsc msr pae mce cx8 apic mtrr
pge mca cmov pat
pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe
nx lm constant_tsc arch_pe rfmon pebs bts pni monitor 
ds_cpl vmx smx est tm2 ssse3 cx16 xtpr lahf_lm
[[email protected] ~]#

上述的结果显示,我的计算机中央处理器支持vmx 标签。因此,我计算机的Xen子系统可以支持全虚拟化的功能。
为什么上面的执行结果会显示两个flags?
/proc/cpuinfo文件会记录该机器中每一个中央处理器的信息,如果计算机 有多个中央处理器,这个文件就会存储多笔数据。
因为该机器使用 Intel Core 2 Duo 的处理器,所以虽然实体上只有一个处理器,但却具备双内核功能。Red Hat Enterprise Linux 系统便将其视为两个处理器看待。因而/proc/cpuinfo中就会记录两个处理器的信息,当然,也就会有两个flags参数

1.4  Xen的虚拟机

Xen 允许建立多个虚拟机,每一个虚拟机都会在自己的区域(Domain)中执行。Xen提供了两种区域。
Domain-0
这是宿主机之区域。实体的计算机及实体计算机执行的Red Hat Enterprise Linux都在这个区域中执行。你无法修改Domain-0区域的设置与配置。
Domain-U
每一个虚拟机执行的区域称为 Domain-U。每当建立一个新的虚拟机时,Xen 就会产生一个 Domain-U 的区域,以供该虚拟机使用。你可以在新建虚拟机器时定义该区域的设置,也可在虚拟机启动后修改该区域的配置。

1.5  Xen的组件
Red Hat Enterprise Linux 5 提供的 Xen 包含了下列几项 RPM 软件包。
xen:这是Xen的主程序,以及执行Xen必备的组件。
kernel-xen:这是针对Xen改写的Linux内核软件包。
libvirt:提供虚拟化所需的链接库及管理工具。
python-virtinst:文字接口建立并安装虚拟机的工具。
virt-manager:一个图形化的Xen综合管理工具。
上述的软件包分布于虚拟化软件包群组中。如果使用yum安装,则虚拟化软件包群组名称为Virtualization。


2.1  安装虚拟化子系统

首先,你得安装虚拟化子系统,包含Xen及其所必须的组件。在Red Hat Enterprise Linux 5 中安装Xen子系统有两种方法。
通过"新增卸载软件(system-config-packages)"
你可以在GNOME桌面中依次选择【应用程序】→【添加/删除软件】命令,利用【添加/删除软件】这个工具程序来安装虚拟化子系统。此时,请选择【浏览】页面中左方的【虚拟化】复选框,然后单击【调用】按钮,即可安装完整的Xen子系统。
通过yum
使用yum安装Virtualization这个软件包群组。Virtualization软件包群组中包含所有Xen的组件,因此,你只需利用yum groupinstall便可安装Xen的所有组件。
如果你不是Red Hat Enterprise Linux 的合法用户,或者你安装Red  Hat Enterprise Linux 时未输入安装号码(Installation Number),那么你是无法安装虚拟化子系统的。
以下是我使用yum安装Xen虚拟化子系统的示范。

 [[email protected] ~]# yum -d 0 -y groupinstall ‘Virtualization‘
rhel-i386-server-5         100% |=========================|    1.4 KB 00:00
gnome-applet-vm-0.1.2-1.e  100% |=========================|    8.6 KB 00:00
xen-3.0.3-25.el5.i386.rpm   100% |=========================| 82 KB 00:00
Virtualization-en-US-5.0.    100% |=========================| 23 KB 00:00
libvirt-0.1.8-15.el5.i386     100% |=========================| 14 KB 00:00
kernel-xen-2.6.18-53.el5.    100% |=========================|  252 KB 00:01
virt-manager-0.2.6-7.el5.    100% |=========================| 26 KB 00:00
libvirt-python-0.1.8-15.e    100% |=========================| 11 KB 00:00
python-virtinst-0.99.0-2.    100% |=========================|    6.8 KB 00:00  
(6/8): kernel-xen-2.6.18-    100% |=========================|  14 MB 01:01
Installing: kernel-xen                     ######################### [1/8] 
Installing: Virtualization-en-US             ######################### [2/8] 
Installing: python-virtinst                     #########################[3/8] 
Installing: libvirt                         #########################[4/8] 
Installing: xen                             #########################[5/8] 
Installing: libvirt-python                     #########################[6/8] 
Installing: virt-manager                     ######################## [7/8] 
Installing: gnome-applet-vm                 #########################[8/8]
[[email protected] ~]#


2.2  启动 kernel-xen 内核

第二个步骤,你必须启动专为Xen打造的Linux内核。
Red Hat Enterprise Linux 5提供了一个名为kernel-xen 的软件包,这个软件包存储了执行 Xen所需的Linux内核。因此,你必须检查是否有这个软件包,如果没有,请手动安装kernel-xen软件包。
此外,你还必须以kernel-xen软件包提供的内核来启动计算机。通常安装kernel-xen软件包后,Red Hat Enterprise Linux并不会将kernel-xen软件包设置为开机时默认的内核,因此,请在重新启动时手动选择kernel-xen的内核!
以下是我检查目前启动中内核版本的方法。

[[email protected] ~]# rpm -q kernel-xen
kernel-xen-2.6.18-8.el5 ?①
[[email protected] ~]# uname -r
2.6.18-8.el5xen  ②
[[email protected] ~]#

① 由rpm的执行结果可知,我的Red Hat Enterprise Linux 系统已安装了kernel- xen软件包。
② uname -r 查询的结果指出,目前执行中的内核版本为2.6.18-8.el5.xen。版本数字的最后一段明显说明了这是Xen版本的内核。

2.3  启动 xend 服务

建置Domain-0的最后一个步骤,就是确保xend服务正常地执行。
xend 服务是Xen中用来管理所有虚拟机的一个服务,如果xend没有启动,你就无法使用本章提到的方法来管理所有的虚拟机。因此,为确保虚拟机能正常使用,你必须检查一下xend 的状态。如果xend尚未启动,请记得将其启动起来。
以下是我启动xend服务的示范。

[[email protected] ~]# service xend status
xend is stopped ?①
[[email protected] ~]# xm list
Error: Unable to connect to xend: Connection refused. Is xend running?  ②
[[email protected] ~]# service xend start ?③
正在激活 xend:                                    [确定]
[[email protected] ~]# service xend status
xend is running ?④
[[email protected] ~]# chkconfig xend on ?⑤
[[email protected] ~]#

① 目前我的 xend 服务为停止状态。
② 此时执行任何Xen管理工具都会失败。
③ 手动启动xend服务。
④ 检查一下xend服务是否成功启动了。
⑤ 为保证以后开机都能自动启动xend 服务,别忘记使用chkconfig启动xend。

鼎峰小胡
QQ.2881064155
[email protected]

时间: 2024-10-14 10:46:42

Xen虚拟化技术简介的相关文章

Xen虚拟化技术中PV和HVM的区别

转自 这里 Xen是一个开源的type-1或者裸机管理程序,它使得一个物理主机能够同时并行运行多个相同的或者不同的操作系统实例.Xen是目前唯一的开源可得的type-1管理程序.Xen被应用于许多商业和开源的应用程序中,比如:服务器虚拟化(server virtualization).基础设施即服务(Infrastructure as a Service).桌面虚拟化(desktop virtualization).安全应用程序(security applications).嵌入式和硬件设备(e

50 xen虚拟化技术基础、xen虚拟化技术进阶

01 xen虚拟化技术基础 配置环境: node1 192.168.1.61 CentOS6.6 [[email protected] ~]# uname -r 2.6.32-504.el6.x86_64 [[email protected] ~]# cd /etc/yum.repos.d/ [[email protected] yum.repos.d]# vim xen4.repo [xen4centos] name=Xen4 for CentOS 6 baseurl=ftp://192.16

虚拟化二、Xen虚拟化技术

一.Xen简介 1.Xen简介 Xen 英国剑桥大学研发,开源的VMM,是一种类型 1 虚拟机管理程序,它创建系统资源的逻辑池,使许多虚拟机可共享相同的物理资源. Xen 是一个直接在系统硬件上运行的虚拟机管理程序.Xen 在系统硬件与虚拟机之间插入一个虚拟化层,将系统硬件转换为一个逻辑计算资源池,Xen 可将其中的资源动态地分配给任何操作系统或应用程序.在虚拟机中运行的操作系统能够与虚拟资源交互,就好象它们是物理资源一样. Xen 架构 Xen 运行 3 个虚拟机.每个虚拟机与其他虚拟机都独自

虚拟化技术简介(转载学习)

虚拟化 虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行.虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程.CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率. 几种虚拟化软件 1.RedHat KVM虚拟化方式:完全虚拟化 架构:寄居架构(linux内核);祼金属架构RHEV-H 特点:祼金属架构RHEV-H或在关键的硬盘和网卡上支持半虚拟化VirtIO,达到最佳性能.

xen虚拟化技术

虚拟化技术的分类:(1) 模拟:Emulation:Qemu,PearPC,Bochs(2) 完全虚拟化:Full Virtualization,Native VirtualizationHVMVMware Workstation,VirtualBox,VMWare Server,Parallels Desktop,KVM,XEN(3) 半虚拟化:ParaVirtualizationGuestOS:知晓自己是运行VirtualizationHypercall(4) OS级别虚拟化:将用户控件分割

(12)虚拟化技术之虚拟化技术简介

虚拟化技术是伴随着计算机的出现而产生和发展起来的,虚拟化意味着对计算机资源的抽象. 虚拟化技术已经成为构建云计算环境的一项关键技术. 虚拟化技术的核心思想是利用软件或固件管理程序构成虚拟化层,把物理资源映射为虚拟资源.在虚拟资源上可以安装和部署多个虚拟机,实现多用户共享物理资源. 随着云计算的发展,传统的数据中心逐渐过渡到虚拟化数据中心,即采用虚拟化技术将原来数据中心的物理资源进行抽象整合. 4种主要虚拟化技术: (1)服务器虚拟化 将一个或多个物理服务器虚拟成多个逻辑上的服务器 (2)存储虚拟

KVM虚拟化技术简介

kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中.它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少.KVM目前已成为学术界的主流VMM之一. KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术).是基于硬件的完全虚拟化.而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化.

虚拟化三、Xen虚拟化技术2

一.使用DomU自有kernel来启动运行DomU 上篇博文中创建的pv格式的vm,内核和引导文件都是放在DomU中, 1.准备磁盘映像文件 losetup   losetup -a: 显示所有已用的loop设备相关信息 losetup -f: 显示第一个空闲的loop设备文件 [[email protected]_175 xen]# qemu-img create -f raw -o size=5G busybox3.img Formatting 'busybox3.img', fmt=raw

基于KVM、Xen、OpenVZ等虚拟化技术的WEB在线管理工具

1.Proxmox proxmox是一个开源的虚拟化管理平台,支持集群管理和HA.在存储方面,proxmox除了支持常用的lvm,nfs,iscsi,还支持集群存储glusterfs和ceph,这也是我们选择它的原因.官方网站http://www.proxmox.com. Proxmox VE (Proxmox VirtualEnvironment) 是一个非常棒的集成OPENVZ[1]支持KVM[2]应用的环境.有方面易用的WEB界面,基于JAVA的UI和内核接口,可以登录到VM客户方便的操作