Xen虚拟机Fork机制建立方法技术

技术编号:15541135 阅读:55 留言:0更新日期:2017-06-05 10:41
本发明专利技术属于计算机虚拟技术领域,具体涉及Xen虚拟机Fork机制建立方法。主要步骤:启动xen系统,在Xen内核的libxl模块主函数中,设置两个进程;父DomU构建完成并启动起来,读取Xenstore中自身DomU下的is_parent标志位,判断若等于1,执行父DomU的fork操作;子DomU构建完成并启动起来,读取Xenstore中自身DomU下的is_parent标志位,判断等于0,执行子DomU的操作;子DomU读取Xenstore中授权表下标和页内偏移、寄存器状态值和要执行的函数名称,映射授权页面,恢复寄存器状态,然后执行函数。

Xen virtual machine, Fork mechanism, building method

The invention belongs to the field of computer virtual technology, in particular to a method for establishing a Xen mechanism of a Fork virtual machine. The main steps: starting Xen in libxl system, the main function module of Xen core, set two process; the parent DomU built and start up, read the Xenstore in its DomU under the is_parent flag, judging if execution is equal to 1, the parent DomU fork operation; DomU construction completed and start up, read the Xenstore the DomU is_parent flag, the judgment is equal to 0, implementation of sub DomU; DomU read the Xenstore authorization table function register offset, subscript and page value and to execute the name mapping authorization page, restore the register state, and then perform the function.

【技术实现步骤摘要】
Xen虚拟机Fork机制建立方法
本专利技术属于计算机虚拟
,具体涉及Xen虚拟机Fork机制建立方法。
技术介绍
Xen是一个开放源代码的虚拟机监视器,在Xen上运行的虚拟机称为Domain(域),在Xen上的众多Domain中存在一个特权域用来辅助Xen管理其他Domain,提供相应的虚拟资源服务,特别是其他Domain对I/O设备的访问,这个特权域称为Domain0(简称:Dom0),而其他则称为DomainU(简称:DomU),本文中Fork机制所指虚拟机均指DomU,Fork表示分叉,克隆的意思。Xen系统实现了共享内存机制,用于Domain之间数据的共享和传递。它建立在Domain之间的授权机制之上,即对共享内存的访问须要预先通过授权。Domain之间的授权机制称为授权表机制,它是一种基于页(Pages)的授权访问机制。Xenstore是Xen提供的一个域间共享的存储系统,这个系统由Dom0管理和维持。Xenstore是一个具有层次结构的目录,类似于Linux中的树形目录。Xenstore中存储了Domain之间共享的配置信息,Dom0作为管理域,可以查看整个结构的内容,而DomU只能查看自身的信息。MiniOS是包含在Xen源代码中的一个轻量级的操作系统内核,主要作为存根域的操作系统,存根域是一个为分解Dom0Qemu设备模型(为Xen的全虚拟化功能提供支持)运行在Xen之上的特殊的系统域。经过修改的MiniOS成为可以提供单一服务的虚拟机,称作Unikernel。由此可以将Xen看作一个整体的操作系统,其上运行的各个提供单一服务的Domain看作操作系统中的进程。实际上,Domain在Xen系统中的地位与传统Linux系统中的进程无异。在Linux系统中,进程通过Fork(分叉)产生子进程,Fork过程首先会对父进程进行克隆,产生一个几乎完全一样的子进程,之后父子进程会执行不同的代码,从而完成不同任务,进程的Fork是Linux中产生新进程的主要方式。受Linux进程Fork的启发,因此提出Xen之上虚拟机的Fork机制。使虚拟机能在运行过程中Fork出具有相同初始状态的子虚拟机,去完成其他任务。虚拟机Fork机制本质上是虚拟机的克隆,但是目前的虚拟机克隆都是属于静态克隆,即先将要克隆的虚拟机挂起或关闭,然后手动执行克隆操作,最后恢复原始虚拟机并启动新虚拟机。不同的虚拟机监视器有着不同的克隆策略。目前业界主流的虚拟机监视器有VMware、KVM和Xen等。VMware支持两种类型的克隆:完整克隆和链接克隆,一个完整克隆是和原始虚拟机完全独立的一个拷贝,它不和原始虚拟机共享任何资源。可以脱离原始虚拟机独立使用。一个链接克隆需要和原始虚拟机共享同一虚拟磁盘文件,不能脱离原始虚拟机独立运行。但采用共享磁盘文件却大大缩短了创建克隆虚拟机的时间,同时还节省了宝贵的物理磁盘空间。KVM与Xen有着相同的两种虚拟机克隆方式,一个是将虚拟机关闭之后,使用Virt-manager(一个开源的虚拟机管理工具)的Virt-clone工具(或者使用其他虚拟机管理工具)对虚拟机进行克隆,然后修改新虚拟机的主机名和IP地址等;另外一种方式是手动直接复制磁盘文件与配置文件,然后修改配置文件。这两种方式本质上都是对虚拟机的磁盘文件和配置文件进行了拷贝,均需要挂起或关闭原始虚拟机。目前各种虚拟机监视器中,类似于Linux进程Fork机制这种动态克隆虚拟机的机制还未实现。现有虚拟机的克隆技术均是静态克隆,先将要克隆的虚拟机挂起或关闭,然后手动执行克隆操作,最后恢复原始虚拟机并启动新虚拟机,这种方式不符合虚拟机Fork这种在原虚拟机运行过程中克隆出一个子虚拟机场景的自动化需求,这种克隆方式可以称为动态克隆。而且静态克隆因为挂起或关闭了原虚拟机,有着明确的一段服务不可用的时间,违背了模仿Linux进程Fork机制的思想。
技术实现思路
针对上述技术问题,本专利技术的目的是使Xen之上的虚拟机在运行过程中就能克隆出子虚拟机,然后自动去运行其他服务,而不必挂起或关闭原虚拟机,一是使虚拟机的克隆和运行不同服务达到了自动化需求,二是节省了由于原虚拟机挂起或关闭而造成了服务中断。使整个虚拟机的克隆过程更加类似于Linux中进程的Fork机制。本专利技术提出了一种Xen虚拟机Fork机制建立方法,包括以下步骤:(S1)启动xen系统,将在Xen上运行的虚拟机分为两类,第一类是用来辅助Xen管理和提供虚拟服务资源的虚拟机,记为Dom0(也称为特权域),第二类是除第一类外的虚拟机,记为DomU(也称为非特权域);初始的DomU称为父DomU,对应的父DomU通过Fork产生的虚拟机称为子DomU;(S2)在Xen内核的libxl模块主函数中,设置两个进程,进程一用于创建父DomU,进程二用于轮询Xenstore中父DomU的done_fork标志位;并定义全局变量is_parent,在进程一中设置is_parent=1,进程二中设置is_parent=0;(S3)在libxl模块的DomU构建函数中,判断全局变量is_parent是否等于1,若is_parent=1,开始构建父DomU,在Xenstore的父DomU节点下写入标志位is_parent=1;父DomU构建完成并启动起来,进入到DomU的用户进程主函数,读取Xenstore中自身DomU下的is_parent标志位,判断若等于1,执行父DomU的fork操作;(S4)父DomU进行Fork开始时,首先授权父DomU内存页面,并在Xenstore中记录授权表下标和页内偏移,然后在Xenstore对应的父DomU节点中写入done_fork标志位等于1,并记录父DomU各寄存器状态和派发给将要启动的子DomU执行的任务函数名;(S5)当Dom0中进程二轮询到Xenstore中父DomU的done_fork标志位等于1,跳出循环,进入到DomU构建函数中;(S6)在DomU构建函数中,判断全局变量是否等于1,若is_parent不等于1,开始构建子DomU,在Xenstore的子DomU节点下写入标志位is_parent=0,此过程中,Dom0读取Xenstore中父DomU节点下的各数据值,并写入到子DomU节点中;子DomU构建完成并启动起来,进入到DomU的用户进程主函数,读取Xenstore中自身DomU下的is_parent标志位,判断等于0,执行子DomU的操作;(S7)子DomU读取Xenstore中授权表下标和页内偏移、寄存器状态值和需要执行的函数名称,映射授权页面,恢复寄存器状态,然后执行函数(即:需要执行的函数名称对应的函数)。进一步地,所述步骤(S4)中父DomU通知Dom0启动子DomU是通过设置done_fork标志位让Dom0轮询的方式,替换为事件通知方式,采用Xen的事件通道机制,即DomU通过发送事件来让Dom0启动子DomU。进一步地,所述父DomU将授权表下标、自身寄存器状态、执行函数名等消息值发送给子DomU用写入XenstoreDom0作为中介的方式替换为域间通信方式,即待子DomU启动完成,父DomU将所述消息值直接发送给子DomU。进一本文档来自技高网
...
Xen虚拟机Fork机制建立方法

【技术保护点】
一种Xen虚拟机Fork机制建立方法,其特征在于,包括以下步骤:(S1)启动xen系统,将在Xen上运行的虚拟机分为两类,第一类是用来辅助Xen管理和提供虚拟服务资源的虚拟机,记为Dom0,第二类是除第一类外的虚拟机,记为DomU;初始的DomU称为父DomU,对应的父DomU通过Fork产生的虚拟机称为子DomU;(S2)在Xen内核的libxl模块主函数中,设置两个进程,进程一用于创建父DomU,进程二用于轮询Xenstore中父DomU的done_fork标志位;并定义全局变量is_parent,在进程一中设置is_parent=1,进程二中设置is_parent=0;(S3)在libxl模块的DomU构建函数中,判断全局变量is_parent是否等于1,若is_parent=1,开始构建父DomU,在Xenstore的父DomU节点下写入标志位is_parent=1;父DomU构建完成并启动起来,进入到DomU的用户进程主函数,读取Xenstore中自身DomU下的is_parent标志位,判断若等于1,执行父DomU的fork操作;(S4)父DomU进行Fork开始时,首先授权父DomU内存页面,并在Xenstore中记录授权表下标和页内偏移,然后在Xenstore对应的父DomU节点中写入done_fork标志位等于1,并记录父DomU各寄存器状态和派发给待启动的子DomU执行的任务函数名;(S5)Dom0中进程二此时轮询到Xenstore中父DomU的done_fork标志位等于1,跳出循环,进入到DomU构建函数中;(S6)在DomU构建函数中,判断全局变量是否等于1,若is_parent不等于1,开始构建子DomU,在Xenstore的子DomU节点下写入标志位is_parent=0,此过程中,Dom0读取Xenstore中父DomU节点下的各数据值,并写入到子DomU节点中;子DomU构建完成并启动起来,进入到DomU的用户进程主函数,读取Xenstore中自身DomU下的is_parent标志位,判断等于0,执行子DomU的操作;(S7)子DomU读取Xenstore中授权表下标和页内偏移、寄存器状态值和要执行的函数名称,映射授权页面,恢复寄存器状态,然后执行函数。...

【技术特征摘要】
1.一种Xen虚拟机Fork机制建立方法,其特征在于,包括以下步骤:(S1)启动xen系统,将在Xen上运行的虚拟机分为两类,第一类是用来辅助Xen管理和提供虚拟服务资源的虚拟机,记为Dom0,第二类是除第一类外的虚拟机,记为DomU;初始的DomU称为父DomU,对应的父DomU通过Fork产生的虚拟机称为子DomU;(S2)在Xen内核的libxl模块主函数中,设置两个进程,进程一用于创建父DomU,进程二用于轮询Xenstore中父DomU的done_fork标志位;并定义全局变量is_parent,在进程一中设置is_parent=1,进程二中设置is_parent=0;(S3)在libxl模块的DomU构建函数中,判断全局变量is_parent是否等于1,若is_parent=1,开始构建父DomU,在Xenstore的父DomU节点下写入标志位is_parent=1;父DomU构建完成并启动起来,进入到DomU的用户进程主函数,读取Xenstore中自身DomU下的is_parent标志位,判断若等于1,执行父DomU的fork操作;(...

【专利技术属性】
技术研发人员:张一鸣章成飞喻凯李东升
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:湖南,43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1