Xen虚拟化计算图解Word下载.docx
《Xen虚拟化计算图解Word下载.docx》由会员分享,可在线阅读,更多相关《Xen虚拟化计算图解Word下载.docx(12页珍藏版)》请在冰点文库上搜索。
![Xen虚拟化计算图解Word下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/10/e3470597-6b8c-4898-80a3-ec86de10ba67/e3470597-6b8c-4898-80a3-ec86de10ba671.gif)
Java语言的虚拟机沿用了这种P-code模型。
1.3指令集虚拟化
虚拟化最新的发展称为指令集虚拟化,或者二进制转换。
在这种模型中,虚拟指令集被转换成底层硬件的物理指令集,这个过程通常都是动态的。
当代码执行时,就会对代码的某个段进行转换。
如果出现分支情况,就会导入新代码集并进行转换。
这使它与缓存操作非常类似,后者是将指令块从内存移动到本地快速缓存中执行。
2.虚拟化技术的类型
2.1硬件仿真
最复杂的虚拟化实现技术。
可以在宿主系统上创建一个硬件VM来仿真所想要的硬件。
每条指令都必须在底层硬件上进行仿真,因此速度会减慢100倍甚至1000倍。
但优点是可以在一个ARM处理器主机上运行为PowerPC设计的操作系统,而不需要任何修改。
主要应用在硬件开发。
2.2完全虚拟化
也称为原始虚拟化,是另外一种虚拟化方法。
这种模型使用一个虚拟机,它在客户操作系统和原始硬件之间进行协调。
“协调”在这里是一个关键,因为VMM在客户操作系统和裸硬件之间提供协调。
特定受保护的指令必须被捕获下来并在hypervisor中进行处理,因为这些底层硬件并不由操作系统所拥有,而是由操作系统通过hypervisor共享。
完全虚拟化的最大优点是操作系统无需任何修改就可以直接运行。
惟一的限制是操作系统必须要支持底层硬件。
有些比较老的硬件,例如x86,会给完全虚拟化带来一些问题。
例如,需要VMM处理的一些特定敏感指令并没有捕获。
因此,hypervisor必须要动态扫描并捕获这些特权模式代码来解决这一问题。
2.3超虚拟化
超虚拟化(paravirtualization)也称为半虚拟化。
是另外一种流行的虚拟化技术,它与完全虚拟化有一些类似。
这种方法使用了一个hypervisor来实现对底层硬件的共享访问,还将与虚拟化有关的代码集成到了操作系统本身中。
这种方法不再需要重新编译或捕获特权指令,因为操作系统本身在虚拟化进程中会相互紧密协作。
超虚拟化技术需要为hypervisor修改客户操作系统,这是它的一个缺点。
但是超虚拟化提供了与未经虚拟化的系统相接近的性能。
2.4操作系统级的虚拟化
它使用的技术与前面所介绍的有所不同。
这种技术在操作系统本身之上实现服务器的虚拟化。
这种方法支持单个操作系统,并可以将独立的服务器相互简单地隔离开来。
操作系统级的虚拟化要求对操作系统的内核进行一些修改,但是其优点是可以获得原始性能。
2.5内核虚拟机(LinuxKVM)
KVM是一种完全虚拟化解决方案,它有一个方面非常独特:
它将Linux内核转换为一个使用内核模块的hypervisor。
这个模块允许使用其他客户操作系统,然后在宿主Linux内核的用户空间中运行。
内核中的KVM通过/dev/kvm字符设备来公开虚拟化后的硬件。
客户操作系统使用为PC硬件仿真修改过的QEMU进程与KVM模块接口。
KVM模块向内核中引入了一个新的执行模块。
普通内核支持内核模式和用户模式,而KVM则引入了一种客户模式。
客户模式用来执行所有非I/O客户代码,而普通用户模式支持客户I/O。
3.与Linux相关的虚拟化项目
项目名称类型Bochs硬件仿真QEMU硬件仿真VMware完全虚拟化z/VM完全虚拟化
Kvm完全虚拟化(内核虚拟化)Xen超虚拟化UML超虚拟化Linux-Vserver操作系统级虚拟化OpenVZ
操作系统级虚拟化
4.Xen
Xen采用超虚拟化技术和完全虚拟化技术。
一个Xen虚拟化环境由以下部件构成:
1)XenHypervisor
2)Domain0(包括Domain管理和控制工具)
3)DomainU(DomainUPV客户系统和DomainUHVM客户系统)
4.1Xen的体系架构
Xen的VMM(XenHyperviso)位于操作系统和硬件之间,负责为上层运行的操作系统内核提供虚拟化的硬件资源,负责管理和分配这些资源,并确保上层虚拟机(称为域)之间的相互隔离。
Xen采用混合模式,因而设定了一个特权域用以辅助Xen管理其他的域,并提供虚拟的资源服务,该特权域称为Domain0,而其余的域则称为DomainU。
Xen的体系架构如图所示。
Xen向Domain提供了一个抽象层,其中包含了管理和虚拟硬件的API。
Dom0内部包含了真实的设备驱动(原生设备驱动),可直接访问物理硬件,负责与Xen提供的管理API交互,并通过用户模式下的管理工具来管理Xen的虚拟机环境。
xen2.0之后,引入了分离设备驱动模式。
该模式在每个用户域中建立前端(frontend)设备,在特权域(Dom0)中建立后端(backend)设备。
所有的用户域操作系统像使用普通设备一样向前端设备发送请求,而前端设备通过IO请求描述符(IOdescriprorring)和设备通道(devicechannel)将这些请求以及用户域的身份信息发送到处于特权域中的后端设备。
这种体系将控制信息传递和数据传递分开处理。
在xen体系结构设计中,后端设别运行的特权域被赋予一个特有的名字---隔离设备域(IsolationDeviceDomain,IDD),而在实际设计中,IDD就处在Dom0中。
所有的真实硬件访问都由特权域的后端设备调用本地设备驱动(nativedevicedrive)发起。
前端设备的设计十分简单,只需要完成数据的转发操作,由于它们不是真实的设备驱动程序,所以也不用进行请求调度操作。
而运行在IDD中的后端设备,可以利用linux的现有设备驱动来完成硬件访问,需要增加的只是IO请求的桥接功能---能完成任务的分发和回送。
xen的实际体系架构如下:
为了提升IO操作的性能,xen采用零拷贝的策略处理数据传递。
当数据从用户域送出时,用户域允许IDD域中的设备驱动程序将包含数据的页面映射到IDD得地址空间并用于DMA传输,从而避免了从用户域到IDD,从IDD再到设备的多次拷贝。
当IDD域将数据送往用户域时,xen通过页面交换重映射操作,将IDD域中的数据页面和用户域提供的一个空白页进行也表交换。
交换之后,空白页面进入到设备域中,而数据页面进入到用户域中,该技术也称为page-flipping方法。
4.2XenHypervisor,操作系统,应用程序
4.3Xen的半虚拟化和全虚拟化
半虚拟化:
子操作系统使用一个专门的API与VMM通信,VMM则负责处理虚拟化请求,
并将这些请求递交到硬件上,由于有了这个特殊的API,VMM不需要去做好为资源的指令翻译工作。
而且使用准虚拟化API时,虚拟操作系统能够发出更有效的指令。
优点:
使用准虚拟化API时,虚拟操作系统能够发出更有效的指令,效率更高。
缺点:
需要修改包含这个特殊API的操作系统,而且这个缺点对于某些操作系统(主要是Windows)来说是致命的,因为它们不提供这种API。
完全虚拟化:
虚拟机与虚拟机监控器(VMM)的部件进行通信,而VMM则与硬件平
台进行通信,要在Xen中利用完全虚拟化方法,需要一个特殊的CPU,此CPU能解释虚拟操作系统发出的未修改的指令,如果没有这样的特殊CPU功能,是不可能在Xen中使用完全虚拟化的。
完全虚拟化的优势在于,它安装了一个未修改的操作系统,这意味着运行于同样架构的所有操作系统都可以被虚拟化。
因为在Xen方法中不是每条虚拟操作系统发出的指令都可以被翻译为每个CPU都能识别的格式,因为这非常耗资源。
运行在xen上的半虚拟化虚拟机被称为“DomainUPVGuests”,全虚拟化虚拟机被称为“DomainUHVMGuests”。
Domain0中包含两个驱动:
4.4Xen的网络架构
4.4.1Xen支持三种网络工作模式
1)Bridge安装虚拟机时默认使用Bridge模式
2)Route3)NAT
Bridge模式下,Xend启动时的流程:
1)创建虚拟网桥xenbr02)停止物理网卡eth0
3)物理网卡eth0的MAC地址和IP地址被复制到虚拟网卡veth04)物理网卡eth0重命令为peth05)Veth0重命名为eth0
6)Peth0的MAC地址更改(FE:
FF:
FF),ARP功能关闭7)连接peth0、vif0.0到网桥xenbr08)启动peth0、vif0.0、xenbr0DomainU启动时的流程:
1)vif<
domainID>
.0连接到xenbr02)启动vif<
.0
Route模式下,xend启动时的流程1)开启Domain0的IPforwardDomainU启动时的流程:
1)创建vif<
.0,domUeth0的IP地址被拷贝到vif<
.02)启动vif<
3)为domU的配置文件中指向虚拟接口vif.0分配的IP地址增加静态路由NAT模式(不清楚)
NAT模式会使用虚拟局域网virbr0
4.4.2XenDomainUGuests发送数据包处理流程
4.4.3xen中虚拟网卡与物理网卡之间的关系
安装了xen的Linux机器,在Dom0中能看到以下几类网卡(网络接口设备):
(X,Y都为数字)pethYethYxenbrYvirbrY
vifX.Y(X为DomaiID,Y表示该虚拟网卡是该Domain的第几块虚拟网卡)vethY(一般在xend启动完成以后就不存在了)这些网络接口设备之间的关系如下:
5.Xen的配置和管理
5.1Xen相关配置文件
Xen以及支持Xen的linux内核:
/boot/内核模块:
/lib/modules/Xen配置文件:
/etc/xen/
Xen守护进程:
/etc/init.d/xend(bash脚本)
Domain启动脚本:
/etc/init.d/xendomains负责第一个虚拟机Domain0以及其他DomainU
启动,非守护进程
Xen相关可执行命令:
/usr/sbin/
xm、brct1、virt-clone命令
5.2/etc/xen/下的配置文件