专利名称:面向多核平台和分布式虚拟化环境的i/o系统及工作方法
技术领域:
本发明涉及虚拟化技术和计算机i/o技术领域,特别是涉及面向多核平台和分布
式虚拟化环境的1/0系统及工作方法。
背景技术:
虚拟化是一个广义的术语,在计算机方面通常是指计算元件在虚拟的基础上而不
是真实的基础上运行。通过虚拟化技术,把单个硬件虚拟为数量更多的虚拟部件,从而使得 更多的应用能够并行运行,以充分利用多核平台的并行计算能力。虚拟化技术可以扩大硬 件的容量,简化软件的重新配置过程。 计算机I/O技术在计算机技术的发展中始终是一个十分重要的关键技术。其技术 特性决定了计算机的1/0性能对计算机的整体性能有重要影响。从根本上讲,无论现在还 是将来,I/O技术都将制约着计算机技术的应用与发展,尤其在高端计算领域。
要对I/0设备进行虚拟化,就需要监视客户虚拟机的行为,截获客户虛拟机的1/ 0操作,对其加以分析解释,然后发送给设备驱动程序,由设备驱动程序来完成对设备的操 作。其中,根据是否修改Guest OS,可以把本地设备的虚拟化分为两大类全虚拟化中的1/ 0设备虚拟化和半虚拟中的I/O设备虚拟化。 半虚拟化是剑桥大学提出的概念,与之相伴的是XEN项目的研究与开发,它的出 现,是如何改进全虚拟化带来的较大的性能损失的研究结果。图1为Xen(—种半虚拟化的 体系结构)中l/0虚拟化的体系结构图。图中最底层为硬件资源,Xen VMM(virtual machine monitor)运行于硬件资源之上,对硬件资源进行管理,并虚拟化出若干个虚拟硬件环境。在 Xen VMM上面运行多个Guest 0S。无修改的用户应用程序运行于Guest OS的应用层。在 Guest OS的内核层运行有前端设备驱动程序,用户应用程序通过前端设备驱动程序对设备 进行操作。而前端设备驱动程序并不真正对设备进行操作,它通过后端设备驱动程序实现 对真正的设备操作。后端设备驱动程序位于VMO中。VMO是一个特殊的Guest OS,我们也 称之为有特权的Guest 0S。在VMO的内核中,运行了一个后端设备驱动程序的服务。它的 职责就是接受从其它Guest OS发出的1/0操作请求,转交给VM0中的真实设备驱动程序, 由真实设备驱动程序完成对设备的操作,并把从真实设备驱动程序返回的操作结果返回给 前端设备驱动程序。 但是,面临多核平台时,上述半虚拟化1/0架构会产生很多的缺点和问题 1.由于引入了虚拟化层次和半虚拟化策略下的1/0处理架构,应用从发出1/0请
求到i/o请求最终被处理并返回处理结果,要经过多个层次,每个层次都要对i/o请求进行
处理,大大增加了 1/0请求的中间处理层次,降低了 1/0处理的效率; 2.由于所有的物理I/O设备驱动都位于特权虚拟机DomO中, 一旦某个物理I/O设 备驱动产生问题,可能会导致整个多核平台的崩溃,使得此平台上运行的数量众多的虚拟 机和用户应用的崩溃,造成严重的后果; 3.由于所有的物理1/0设备驱动都位于特权虚拟机DomO中,所有的1/0请求都要交由特权虚拟机DomO来执行,这使得特权虚拟机DomO成为系统的1/0性能瓶颈。多核平 台的计算能力越强,能够支持的虚拟机和应用越多,这种情况就越明显。当某个多核平台上 运行的虚拟机和应用的数量超过特权虚拟机DomO所能支持的极限后,很多虚拟机和应用 在运行过程中不得不经常暂停运行以等待特权虚拟机DomO对它们所发出的I/O请求进行 处理并返回结果。这样会造成多核平台计算能力的极大浪费; 4.在上述半虚拟化下的I/0架构中,对I/0访问的迁移井没有提供很好的支持,人 们需要借助集中的远程I/O资源等技术才能实现对分布式虚拟化环境中I/O访问的迁移的 支持。如果虚拟机或者应用访问的是本地物理节点上资源,则这些虚拟机和应用无法迁移 到其它物理节点上,这也限制了分布式计算系统中动态负载平衡的实现和资源利用率的提高。
发明内容
本发明的目的在于提供面向多核平台和分布式虚拟化环境的1/0系统及工作方
法,实现了多核平台和分布式虚拟化环境中的简洁高效、安全可靠、可扩展性好的1/o访问 机制,并且能够为多核平台上并行运行的众多虚拟机和用户应用提供高效I/O访问机制, 为分布式虚拟化环境中的虚拟机和用户应用的迁移提供良好的支持。 为实现本发明的目的而提供的面向多核平台和分布式虚拟化环境的1/0系统,所 述系统包括特权虚拟机、I/O资源管理模块、至少一个专用I/O域、至少一个本地物理1/0 设备和用户虚拟机,其中 特权虚拟机,用于接收管理员的资源管理命令,并把所述资源管理命令转发给1/0 资源管理模块; 1/0资源管理模块,用于根据所述资源管理命令,检测本地物理1/0设备,为每个 本地物理1/0设备创建一个专用1/0域;以及在用户虚拟机和专用1/0域之间建立1/0访 问通道; 至少一个专用1/0域,用于对自己负责的本地物理1/0设备进行初始化,在本地物 理1/0设备初始化完成后,此专用1/0域开始对外提供1/0服务接收其它用户虚拟机发送 过来的针对此本地物理1/0设备的1/0访问请求,进行处理后,将结果返回给对应的用户虚 拟机; 至少一个本地物理I/O设备,与所述专用I/O域一一对应; 用户虚拟机,与所述专用I/O域建立1/0访问通道,通过所述1/0访问通道与所述 专用I/O域进行交互。
所述系统,还包括 本地代理域,由所述I/O资源管理模块创建,针对迁移到其它物理节点使用本地 物理I/O设备的远程用户虚拟机,接收远程用户虚拟机发来的访问本地物理I/O设备的请 求,并将此请求转发给对应的专用I/O域,并接收专用I/O域处理此I/O请求后发送回来的 I/O请求处理结果,并将此结果转发给对应的远程用户虚拟机。
所述用户虚拟机,还包括 1/0前端模块,用于与专用1/0域连接,把I/0请求发送给对应的专用1/0域,由专 用1/0域来处理,并接收专用1/0域返回的1/0请求处理结果。
所述特权虚拟机,包括 管理命令接口模块,用于与管理员与进行交互,转发命令。 为实现本发明的目的,还提供面向多核平台和分布式虚拟化环境的1/0系统的工
作方法,包括下列步骤 步骤100. I/O系统初始化; 步骤200.用户虚拟机中的应用发出1/0请求,此1/0请求通过系统调用交给用户 虚拟机的内核处理,用户虚拟机的内核进行必要的处理后,将此1/0请求发给用户虚拟机 的I/O前端模块; 步骤300.用户虚拟机的I/O前端模块对此I/O请求做必要的处理后,通过用户虚 拟机和与所述用户虚拟机对应的专用I/O域之间的I/0访问通道将此I/0请求发送给专用 1/0域; 步骤400.所述专用I/O域接收到此I/O请求后,处理此I/O请求,并将处理结果 通过用户虚拟机和与其对应的专用1/0域之间的1/0访问通道返回给用户虚拟机的1/0前 端模块; 步骤500.所述1/0前端模块将处理结果返回给用户虚拟机的内核,用户虚拟机的 内核将处理结果返回给发出此1/0请求的应用。
所述步骤100,包括下列步骤 步骤IIO.在系统启动时,管理员通过特权虚拟机向1/0资源管理模块发出资源管 理命令,检测本地的物理I/O设备,I/O资源管理模块为所述对于本地物理I/O设备创建专 用I/O域; 步骤120.系统根据用户的需求创建用户虚拟机,由1/0资源管理模块在用户虚拟 机和专用I/O域之间建立I/O访问通道; 步骤130.所述专用1/0域被创建后,对自己负责的本地物理1/0设备进行初始 化,在初始化完成后,此专用I/O域对外提供I/O服务; 为实现本发明的目的,还提供面向多核平台和分布式虚拟化环境的1/0系统的工
作方法,包括下列步骤 步骤100' . I/O系统初始化; 步骤200'.远程用户虚拟机中的应用发出访问本地物理I/O设备的远程I/O请
求,此远程I/O请求通过系统调用交给远程用户虚拟机的内核处理,远程用户虚拟机的内
核进行必要的处理后,将此远程I/O请求发给远程用户虚拟机的I/O前端模块; 步骤300'.远程虚拟机的I/O前端模块对此I/O请求做必要的处理后,通过远程
虚拟机和本地代理域之间的1/0访问通道把此I/O请求发送给本地代理域; 步骤400'本地代理域通过与欲访问的本地物理I/O设备对应的专用1/0_域之间
的I/O访问通道将此远程I/O请求发送给所述专用I/O域; 步骤500'所述专用I/O域接收到此远程I/O请求后,处理此远程I/O请求,并将 处理结果通过本地代理域和欲访问的本地物理1/0设备对应的专用1/0_域之间的1/0访 问通道返回给本地代理域; 步骤600'.本地代理域将此处理结果通过与远程用户虚拟机的1/0前端模块之间 的1/0访问通道将此处理结果返回给远程用户虚拟机的I/O前端模块;
7
步骤700'.所述I/O前端模块将处理结果返回给远程用户虚拟机的内核,远程用 户虚拟机的内核将处理结果返回给发出此远程1/0请求的应用。
所述步骤100',包括下列步骤 步骤110'.在系统启动时,管理员通过特权虚拟机向I/O资源管理模块发出资源 管理命令,检测本地的物理I/O设备,I/O资源管理模块为所述对于本地物理I/O设备创建 专用I/O域; 步骤120'.系统根据用户的需求创建用户虚拟机,由I/O资源管理模块在用户虚 拟机和专用I/O域之间建立I/O访问通道; 步骤130'.所述专用I/O域被创建后,对自己负责的本地物理I/O设备进行初始 化,在初始化完成后,此专用1/0域对外提供1/0服务; 步骤140' . I/O资源管理模块创建一个本地代理域,系统在迁移到远程物理节点 的用户虚拟机的I/O前端模块和本地代理域之间建立I/O访问通道,并在本地代理域和专 用I/O域之间建立I/O访问通道,并使得两个I/O访问通道在本地代理域处关联起来。
本发明的有益效果是 1.本发明的I/O系统及其构建方法,大大减少了半虚拟化下处理I/O请求需要 经过的中间层次和中间处理次数,因此大大减少了处理1/0请求对系统带来的开销,有效 提高了系统I/0性能;同时,也因此大大减少了层次之间的跳转带来的运行集合跳转的 次数,使得因频繁在多个处理集合之间跳转造成的缓存缺失率和TLB (TLB translation Lookaside Buffer,旁路转换缓冲)缺失率大大减少。这些,都能够大幅提高计算机系统的 整体性能,使得同样的系统能够支持更多的用户,并能够为用户提供更快捷的服务;
2.原来的半虚拟化下的I/O架构中,所有的物理I/O设备都由DomO管理,所有的 1/0请求都需要交由DomO来完成,随着系统核数的增加和用户应用的增加,此架构显然已 经成为系统的性能瓶颈。而在本发明的1/0系统中,每个物理1/0设备都有对应的专用1/ 0 domain,专门负责处理与其相关的l/0请求。这样,系统的I/O性能瓶颈会从软件架构层 次转移到物理1/0设备层次。因此,本发明提出的1/0系统能够有效发挥物理1/0设备的
性能,而不会因核数和用户应用的增加而造成物理i/o设备的性能不能得到充分发挥的问
题。这样,系统能够充分利用物理I/0设备,从而支持更多的用户和应用;
3.在前面所述的半虚拟化I/O架构中,所有的物理I/O设备驱动都位于DomO中, 相互之间没有隔离性。 一旦某个物理1/0设备驱动产生问题,可能会导致整个多核平台的 崩溃,使得此平台上运行的数量众多的虚拟机和用户应用的崩溃,造成严重的后果。而在本 发明提出的I/O系统中,每个物理I/O设备都有专用的I/O domain专门负责处理与其相关 的I/O请求,各个I/Odomain之间具有很好的隔离性,有效提高了整个系统的可靠性;
4.在前述的半虚拟化下的1/0架构中,其对1/0访问的迁移并没有提供很好的支 持。而在本发明提出的1/0系统中,用户虚拟机和应用在迁移到远程物理节点后,仍然能够 通过原物理节点上的代理domain对原物理节点上的I/O资源进行访问,用户虚拟机和应用 在分布式系统中的迁移因此得到了很好的支持,也使得系统内的负载平衡能够更有效的实 现,系统也能够更为有效的利用分布于系统全局的计算资源。
图1为Xen ( —种半虚拟化的体系结构)中I/O虚拟化的体系结构图; 图2是本发明的面向多核平台和分布式虚拟化环境的1/0系统的结构示意图; 图3是本发明中用户虚拟机迁移到其它物理节点时的I/O系统的结构示意图; 图4是本发明所述I/O系统的工作方法的流程图; 图5是本发明中用户虚拟机迁移到其它物理节点时的I/O系统的工作方法的流程图; 图6是本发明中I/O系统初始化的方法流程图; 图7是本发明中用户虚拟机迁移到远程物理节点的I/O系统初始化的方法流程 图; 图8是本发明中典型I/O访问的流程图; 图9是本发明中迁移后典型I/O访问流程图。
具体实施例方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对
本发明的面向多核平台和分布式虚拟化环境的i/o系统及工作方法进行进一步详细说明。
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的面向多核平台和分布式虚拟化环境的I/0系统及工作方法,实现了多孩 平台和分布式虚拟化环境中的简洁高效、安全可靠、可扩展性好的1/0访问机制,并且能够 为多核平台上并行运行的众多虚拟机和用户应用提供高效I/O访问机制,为分布式虚拟化 环境中的虚拟机和用户应用的迁移提供良好的支持。 下面结合上述目标详细介绍本发明的面向多核平台和分布式虚拟化环境的I/O 系统,图2是本发明的面向多核平台和分布式虚拟化环境的1/0系统的结构示意图,如图2 所示,所述1/0系统,包括 特权虚拟机DomO,用于接收管理员的资源管理命令,并把命令转发给I/O资源管 理模块; 较佳地,所述特权虚拟机DomO,包括 管理命令接口模块,用于与管理员与进行交互、转发命令。 所述管理命令接口模块,具有三个作用(l)作为命令转发接口,用于与管理员进 行交互,转发命令。(2)搜集本地节点1/0资源信息,并向系统管理员提供,以备管理员发布 资源管理命令时参考;(3)搜集本地I/O域的状态信息,并向管理员提供,以备管理员对1/ 0系统的运行进行监控和管理员发布资源管理命令时参考。 I/O资源管理模块,用于根据所述资源管理命令,检测本地物理I/O设备,为每个 本地物理I/0设备创建一个专用I/O域(domain);以及在用户虚拟机和专用I/O domain之 间建立1/0访问通道; 同时,赋予这些专用I/O domain管理一个或多个物理I/O设备的权力。I/O资源 管理模块还要根据资源管理命令中的资源分配命令,向对应的应用和专用I/O domain发出 I/O通道创建指令,构建I/O访问通道。 较佳地,每个所述本地物理I/O设备都有对应的专用I/O domain,这些专用I/O domain基于非常简洁高效的运行环境,并且其中只运行与I/O处理相关的代码,减少了相当多的中间处理层次,提高了 I/O处理的效率。 原来的半虚拟化下的1/0架构中,所有的物理1/0设备都由特权虚拟机(以下用DomO表示)管理,所有的I/O请求都需要交由DomO来完成,随着计算平台核数的增加和用户应用的增加,此架构显然已经成为系统的性能瓶颈。而在本发明的1/0架构中,每个物理1/0设备都有对应的专用I/O domain,专门负责处理与其相关的1/0请求。这样,系统的1/0性能瓶颈会从软件架构层次转移到物理I/O设备层次(也即,在软件架构层次还能够满足
系统需求时,物理i/o设备已经有可能因为负载的增加而达到物理性能的峰值了,这个峰
值是硬件所决定的,软件对其已经无能为力)。因此,本发明提出的1/0架构能够有效发挥物理I/O设备的性能,而不会因核数和用户应用的增加而造成物理I/O设备的性能不能得到充分发挥的问题。这样,系统能够充分利用物理1/0设备,从而支持更多的用户和应用。
至少一个专用I/O domain,用于对自己负责的本地物理I/O设备进行初始化,在本地物理I/O设备初始化完成后,此专用I/O domain开始对外提供I/O服务接收其它用户虚拟机发送过来的针对此本地物理I/O设备的I/O访问请求,进行处理后,将结果返回给对应的用户虚拟机。 至少一个本地物理I/O设备,与所述专用I/O domain——对应; 用户虚拟机,与所述专用I/O domain建立I/O访问通道,通过所述I/O访问通道
与所述专用I/O domain进行交互。 所述用户虚拟机,还包括 1/0前端模块,用于与专用I/O domain连接,把I/O请求发送给对应的专用I/Odomain,由专用I/O domain来处理,并接收专用I/O domain返回的1/0请求处理结果。
在原有的虚拟化系统中,I/O前端模块与DomO中的后端驱动程序连接,把I/O请求发送给DomO的后端驱动程序,由DomO来处理,并接收DomO的后端驱动程序中返回的I/O请求处理结果。因此本发明减轻了 DomO的负担,避免虚拟机和应用在运行过程中暂停运行以等待DomO对它们所发出的1/0请求进行处理并返回结果,充分发挥多核平台计算能力;同时,避免由于某个物理I/O设备驱动产生问题,可能会导致整个多核平台的崩溃,进而使得此平台上运行的数量众多的虚拟机和用户应用全都崩溃,造成严重的后果。
图3是本发明中用户虚拟机迁移到其它物理节点时的1/0系统的结构示意图,如图3所示,针对迁移到其它物理节点使用本地物理I/O设备的用户虚拟机,I/O资源管理模块还创建一个本地代理域(domain)。在迁移时,系统在迁移到远程物理节点之间的用户虚拟机的I/O前端模块和本地代理domain之间建立I/O访问通道,并在本地代理domain和本地物理I/O设备之间建立I/O访问通道,并使得两个I/O访问通道在本地代理domain处关联起来。 本地代理域(domain)的主要任务是接收远程用户虚拟机发来的访问本地物理1/O设备的请求,并将此请求转发给对应的专用I/O domain,并接收专用I/O domain处理此1/0请求后发送回来的1/0请求处理结果,并将此结果转发给对应的远程用户虚拟机。这样,本地物理节点上的用户虚拟机即使被迁移走,也仍然能够继续正常访问本地物理1/0资源。 相应于本发明面向多核平台和分布式虚拟化环境的1/0系统,还提供该1/0系统的工作方法。图4是本发明所述面向多核平台和分布式虚拟化环境的I/0系统的工作方法的流程图,如图4所示,所述方法,包括下列步骤
步骤100. I/O系统初始化; 步骤200.用户虚拟机中的应用发出1/0请求,此1/0请求通过系统调用交给用户虚拟机的内核处理,用户虚拟机的内核进行必要的处理后,将此1/0请求发给用户虚拟机的I/O前端模块; 步骤300.用户虚拟机的I/O前端模块对此I/O请求做必要的处理后,通过用户虚拟机和与所述用户虚拟机对应的专用I/O domain之间的I/O访问通道将此I/O请求发送给专用I/O domain ; 步骤400.所述专用I/O domain接收到此I/O请求后,处理此I/O请求,并将处理结果通过用户虚拟机和与其对应的专用I/O domain之间的I/O访问通道返回给用户虚拟机的I/O前端模块; 步骤500.所述1/0前端模块将处理结果返回给用户虚拟机的内核,用户虚拟机的内核将处理结果返回给发出此1/0请求的应用。 图5是本发明中用户虚拟机迁移到其它物理节点时的I/0系统的工作方法的流程图,如图5所示,当运行于本地物理节点上的用户虚拟机因全局需要迁移到远程物理节点后,位于远程物理节点上的用户虚拟机(下面简称远程用户虚拟机)中的应用发出访问本地物理I/0设备的I/0请求(下面简称远程I/0请求)时,本发明的I/0系统的工作方法,由下述步骤完成 步骤100' . I/O系统初始化; 步骤200'.远程用户虚拟机中的应用发出访问本地物理I/O设备的远程I/O请求,此远程I/O请求通过系统调用交给远程用户虚拟机的内核处理,远程用户虚拟机的内核进行必要的处理后,将此远程I/O请求发给远程用户虚拟机的I/O前端模块;
当运行于本地物理节点上的用户虚拟机因全局需要迁移到远程物理节点后,位于远程物理节点上的用户虚拟机中的应用发出访问本她物理I/0设备的1/0请求时,该远程I/O请求在远程虚拟机内部的处理方法与在本地中的情处理况相同(如步骤200所述)。
步骤300'.远程虚拟机的I/O前端模块对此I/O请求做必要的处理后,通过远程虚拟机和本地代理domain之间的I/O访问通道把此I/O请求发送给本地代理domain ;
步骤400'本地代理domain通过与欲访问的本地物理I/O设备对应的专用I/0_domain之间的I/O访问通道将此远程I/O请求发送给所述专用I/Odomain ;
步骤500'所述专用I/O domain接收到此远程I/O请求后,处理此远程I/O请求,并将处理结果通过本地代理domain和欲访问的本地物理I/O设备对应的专用I/0_domain之间的I/O访问通道返回给本地代理domain ; 步骤600'.本地代理domain将此处理结果通过与远程用户虚拟机的I/O前端模块之间的1/0访问通道将此处理结果返回给远程用户虚拟机的I/O前端模块;
步骤700'.所述I/O前端模块将处理结果返回给远程用户虚拟机的内核,远程用户虚拟机的内核将处理结果返回给发出此远程1/0请求的应用。 所述步骤700'将处理结果返回的步骤与在本地用户虚拟机中的情况一致,如步骤500所述。 图6是本发明中I/O系统初始化的方法流程图,如图6所示,所述步骤100,包括下列步骤 步骤110.在系统启动时,管理员通过特权虚拟机Dom0向I/O资源管理模块发出资源管理命令,检测本地的物理I/O设备,I/O资源管理模块为所述对于本地物理I/O设备创建专用I/O domain ; 步骤120.系统根据用户的需求创建用户虚拟机,由1/0资源管理模块在用户虚拟机和专用I/O domain之间建立I/O访问通道; 步骤130.所述专用I/O domain被创建后,对自己负责的本地物理I/O设备进行初始化,在初始化完成后,此专用I/O domain对外提供I/O服务; 图7是本发明中用户虚拟机迁移到远程物理节点的I/O系统初始化的方法流程图,如图7所示,当运行于本地物理节点上的用户虚拟机因全局需要迁移到远程物理节点时,所述方法还包括 步骤140. I/O资源管理模块创建一个本地代理domain,系统在迁移到远程物理节点的用户虚拟机的I/O前端模块和本地代理domain之间建立I/O访问通道,并在本地代理domain和专用I/O domain之间建立I/O访问通道,并使得两个I/O访问通道在本地代理domain处关联起来。 所述本地代理domain,它的主要任务是接收远程用户虚拟机发来的访问本地物理1/0设备的请求,并将此请求转发给对应的专用I/O domain,并接收专用I/O domain处理此1/0请求后发送回来的1/0请求处理结果,并将此结果转发给对应的远程用户虚拟机。这
样,本地物理节点上的用户虚拟机即使被迁移走,也仍然能够继续正常访问本地i/o资源。 作为一种可实施方式,下面以块设备I/O为例,来说明本发明的I/O系统处理I/O请求的过程。在典型的半虚拟化环境中,特权虚拟机DomO中运行管理命令接口模块,并通过I/O资源管理模块对物理I/O设备和专用I/Odomain进行管理。用户虚拟机在与专用1/0 domain建立I/O访问通道后,通过此I/O访问通道与专用I/O domain进行交互。
图8是本发明中典型1/0访问的流程图。如图8所示,我们设想一个典型的场景。假设此时用户虚拟机VM1正在运行,其中的一个应用需要访问物理块设备devl,其对应的专用I/O domain为io_doml。其典型1/0访问的过程如下 1.用户虚拟机vml中的应用发出I/O请求,此I/O请求通过系统调用交给vml的内核处理; 2. Vml的内核进行必要的处理后,将此I/O请求发给vml的I/O前端模块;
3. Vml的1/0前端模块对此1/0请求做必要的处理后,通过vml和io_doml之间的1/0访问通道将此1/0请求发送给专用I/O domain io_doml ; 4.专用I/O domain io_doml接收到此I/O请求后,处理此I/O请求,并将处理结果通过vml和io_doml之间的I/O访问通道返回给vml的I/O前端模块;
5. Vml的I/O前端模块将处理结果返回给vml的内核。
6. Vml的内核将处理结果返回给发出此1/0请求的应用。 在整个过程中,I/O请求的整个处理过程仅需要通过vml内核、I/O前端模块和专用I/O domain3个层次,经过vml内核、I/O前端模块、专用1/0domain、 I/O前端模块和vml内核5次中间的处理。 相对于现有技术所述的半虚拟化下的1/0架构中,用户虚拟机在创建时,要首先在Dom0中创建用户虚拟机所对应的I/O后端模块,并在用户虚拟机中创建I/O前端模块,
其I/0请求处理的步骤如下(我们仍以块设备1/0访问为例) 1.首先应用通过系统调用把请求交给用户虚拟机的内核; 2.用户虚拟机的内核把1/0请求经处理后交给用户虚拟机的1/0前端模块; 3. I/O前端模块再经过处理后把I/O请求交给DomO中的I/O后端模块;4. DomO中的I/O后端模块把I/O请求经处理后交给DomO中的文件系统模块; 5. DomO中的文件系统模块把I/O请求经处理后交给DomO中的通用块设备模块;6. DomO中的通用块设备模块把I/O请求经处理后交给DomO中真正的物理I/O设
备驱动,由它来完成真正的1/0请求。 7.当1/0请求被处理完后,需要按原路返回。 在整个I/O处理过程,I/O请求从应用发出到应用得到处理结果需要经过6个层 次,经过11次中间处理。这种繁琐的中间处理过程极大的降低了系统的1/0性能,从而也 极大的限制了整个计算机系统计算能力的发挥。 而在我们提出的新型的1/0架构中,应用发出的1/0请求不需要再经过这么多的 层次应用到达用户虚拟机的前端1/0模块后,由前端1/0模块直接交由专用I/O domain, 由专用I/0 domain进行处理,然后把结果返回给用户虚拟机中的I/O前端模块。这样,就 大大简化了 1/0请求的处理过程,有效提高了系统的I/0性能。同时,中间层次和中间处理 次数的减少大大减少了 1/0请求处理过程中的层次跳转次数,使得因频繁在多个处理集合 之间跳转造成的缓存缺失率和TLB (TLB -translation Lookaside Buffer,旁路转换缓冲) 缺失率大大减少,大大提高了系统的整体性能。1/0性能的提升和缓存缺失率和TLB缺失率 的降低,使得整个计算机系统的计算能力能够得到充分发挥。 图9是本发明中迁移后典型1/0访问流程图,如图9所示,当运行于本地物理节点 上的用户虚拟机因全局需要迁移到远程物理节点后,我们假设迁移到其它物理节点上的用 户虚拟机为vm2,其需要访问的物理I/O设备仍为devl,其典型的1/0访问过程如下
1.用户虚拟机vm2中的应用发出I/O请求,此I/O请求通过系统调用交给vm2的 内核处理; 2. Vm2的内核进行必要的处理后,将此I/O请求发给vm2的I/O前端模块; 3. Vm2的I/O前端模块对此I/O请求做必要的处理后,通过vm2和本地代理domain
之间的I/O访问通道把此I/O请求发送给本地代理domain ; 4.本地代理domain通过与io_doml之间的I/O访问通道将此I/O请求发送给专 用I/O domain io_doml ; 5.专用I/O domain io_doml接收到此I/O请求后,处理此I/O请求,并将处理结
果通过本地代理domain和io_doml之间的I/O访问通道返回给本地代理domain ; 6.本地代理domain将此处理结果通过与vm2的I/O前端模块之间的I/O访问通
道将此处理结果返回给vm2的I/O前端模块; 7. Vm2的I/O前端模块将处理结果返回给vm2的内核; 8. Vm2的内核将处理结果返回给发出此I/O请求的应用。 通过以上处理过程,用户虚拟机在迁移到系统中的其它物理节点后,仍然能够对 原来分配给它的物理1/0设备进行访问。这样,用户虚拟机和应用在分布式系统中的迁移因此得到了很好的支持,也使得系统内的负载平衡能够更有效的实现,系统也能够更为有 效的利用分布于系统全局的计算资源。 本发明的有益效果在于 1.本发明的1/0系统及其构建方法,大大减少了半虚拟化下处理I/0请求需要 经过的中间层次和中间处理次数,因此大大减少了处理1/0请求对系统带来的开销,有效 提高了系统I/0性能;同时,也因此大大减少了层次之间的跳转带来的运行集合跳转的 次数,使得因频繁在多个处理集合之间跳转造成的缓存缺失率和TLB (TLB translation Lookaside Buffer,旁路转换缓冲)缺失率大大减少。这些,都能够大幅提高计算机系统的 整体性能,使得同样的系统能够支持更多的用户,并能够为用户提供更快捷的服务;
2.原来的半虚拟化下的I/O架构中,所有的物理I/O设备都由DomO管理,所有的 1/0请求都需要交由DomO来完成,随着系统核数的增加和用户应用的增加,此架构显然已 经成为系统的性能瓶颈。而在本发明的1/0系统中,每个物理1/0设备都有对应的专用1/ 0 domain,专门负责处理与其相关的l/0请求。这样,系统的I/O性能瓶颈会从软件架构层 次转移到物理1/0设备层次。因此,本发明提出的1/0系统能够有效发挥物理1/0设备的
性能,而不会因核数和用户应用的增加而造成物理i/o设备的性能不能得到充分发挥的问
题。这样,系统能够充分利用物理I/0设备,从而支持更多的用户和应用;
3.在前面所述的半虚拟化I/O架构中,所有的物理I/O设备驱动都位于DomO中, 相互之间没有隔离性。 一旦某个物理1/0设备驱动产生问题,可能会导致整个多核平台的 崩溃,使得此平台上运行的数量众多的虚拟机和用户应用的崩溃,造成严重的后果。而在本 发明提出的I/O系统中,每个物理I/O设备都有专用的I/O domain专门负责处理与其相关 的I/O请求,各个I/Odomain之间具有很好的隔离性,有效提高了整个系统的可靠性;
4.在前述的半虚拟化下的1/0架构中,其对1/0访问的迁移并没有提供很好的支 持。而在本发明提出的1/0系统中,用户虚拟机和应用在迁移到远程物理节点后,仍然能够 通过原物理节点上的代理domain对原物理节点上的I/O资源进行访问,用户虚拟机和应用 在分布式系统中的迁移因此得到了很好的支持,也使得系统内的负载平衡能够更有效的实 现,系统也能够更为有效的利用分布于系统全局的计算资源。 通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的 技术人员而言是显而易见的。 以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例 性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。
权利要求
面向多核平台和分布式虚拟化环境的I/O系统,其特征在于,所述系统包括特权虚拟机、I/O资源管理模块、至少一个专用I/O域、至少一个本地物理I/O设备和用户虚拟机,其中特权虚拟机,用于接收管理员的资源管理命令,并把所述资源管理命令转发给I/O资源管理模块;I/O资源管理模块,用于根据所述资源管理命令,检测本地物理I/O设备,为每个本地物理I/O设备创建一个专用I/O域;以及在用户虚拟机和专用I/O域之间建立I/O访问通道;至少一个专用I/O域,用于对自己负责的本地物理I/O设备进行初始化,在本地物理I/O设备初始化完成后,此专用I/O域开始对外提供I/O服务接收其它用户虚拟机发送过来的针对此本地物理I/O设备的I/O访问请求,进行处理后,将结果返回给对应的用户虚拟机;至少一个本地物理I/O设备,与所述专用I/O域一一对应;用户虚拟机,与所述专用I/O域建立I/O访问通道,通过所述I/O访问通道与所述专用I/O域进行交互。
2. 根据权和要求l所述的面向多核平台和分布式虚拟化环境的I/0系统,其特征在于, 所述系统,还包括本地代理域,由所述I/O资源管理模块创建,针对迁移到其它物理节点使用本地物理 1/0设备的远程用户虚拟机,接收远程用户虚拟机发来的访问本地物理I/0设备的请求,并 将此请求转发给对应的专用I/O域,并接收专用I/O域处理此I/O请求后发送回来的I/O 请求处理结果,并将此结果转发给对应的远程用户虚拟机。
3. 根据权利要求1或2所述的面向多核平台和分布式虚拟化环境的I/O系统,其特征 在于,所述用户虚拟机,还包括I/O前端模块,用于与专用1/0域连接,把I/0请求发送给对应的专用1/0域,由专用 1/0域来处理,并接收专用1/0域返回的1/0请求处理结果。
4. 根据权和要求l所述的面向多核平台和分布式虚拟化环境的I/0系统,其特征在于, 所述特权虚拟机,包括管理命令接口模块,用于与管理员与进行交互,转发命令。
5. 面向多核平台和分布式虚拟化环境的1/0系统的工作方法,其特征在于,所述方法,包括下列步骤步骤100. I/O系统初始化;步骤200.用户虚拟机中的应用发出1/0请求,此I/0请求通过系统调用交给用户虚拟 机的内核处理,用户虚拟机的内核进行必要的处理后,将此1/0请求发给用户虚拟机的I/O 前端模块;步骤300.用户虚拟机的I/O前端模块对此I/O请求做必要的处理后,通过用户虚拟机 和与所述用户虚拟机对应的专用I/O域之间的I/O访问通道将此I/O请求发送给专用I/O 域;步骤400.所述专用I/O域接收到此I/O请求后,处理此I/O请求,并将处理结果通过 用户虚拟机和与其对应的专用I/O域之间的1/0访问通道返回给用户虚拟机的I/O前端模块;步骤500.所述I/0前端模块将处理结果返回给用户虚拟机的内核,用户虚拟机的内孩 将处理结果返回给发出此1/0请求的应用。
6. 根据权利要求5所述的面向多核平台和分布式虚拟化环境的1/0系统的工作方法, 其特征在于,所述步骤IOO,包括下列步骤步骤IIO.在系统启动时,管理员通过特权虚拟机向1/0资源管理模块发出资源管理命 令,检测本地的物理I/O设备,I/O资源管理模块为所述对于本地物理I/O设备创建专用1/ 0域;步骤120.系统根据用户的需求创建用户虚拟机,由1/0资源管理模块在用户虚拟机和 专用I/O域之间建立I/O访问通道;步骤130.所述专用1/0域被创建后,对自己负责的本地物理I/0设备进行初始化,在 初始化完成后,此专用1/0域对外提供1/0服务;
7. 面向多核平台和分布式虚拟化环境的1/0系统的工作方法,其特征在于,所述方法,包括下列步骤步骤100' . 1/0系统初始化;步骤200'.远程用户虚拟机中的应用发出访问本地物理I/O设备的远程I/O请求,此远程i/o请求通过系统调用交给远程用户虚拟机的内核处理,远程用户虚拟机的内核进行必要的处理后,将此远程I/O请求发给远程用户虚拟机的I/O前端模块;步骤300'.远程虚拟机的I/O前端模块对此I/O请求做必要的处理后,通过远程虚拟机和本地代理域之间的1/0访问通道把此I/O请求发送给本地代理域;步骤400'本地代理域通过与欲访问的本地物理I/O设备对应的专用I/O域之间的1/0访问通道将此远程I/O请求发送给所述专用I/O域;步骤500'所述专用I/O域接收到此远程I/0请求后,处理此远程I/0请求,并将处理 结果通过本地代理域和欲访问的本地物理I/O设备对应的专用I/O域之间的I/O访问通道 返回给本地代理域;步骤600'.本地代理域将此处理结果通过与远程用户虚拟机的I/0前端模块之问的 I/O访问通道将此处理结果返回给远程用户虚拟机的I/O前端模块;步骤700'.所述I/0前端模块将处理结果返回给远程用户虚拟机的内核,远程用户虛 拟机的内核将处理结果返回给发出此远程1/0请求的应用。
8. 根据权利要求7所述的面向多核平台和分布式虚拟化环境的1/0系统的工作方法, 其特征在于,所述步骤100',包括下列步骤步骤110'.在系统启动时,管理员通过特权虚拟机向1/0资源管理模块发出资源管理 命令,检测本地的物理I/O设备,I/O资源管理模块为所述对于本地物理I/O设备创建专用 1/0域;步骤120'.系统根据用户的需求创建用户虚拟机,由I/O资源管理模块在用户虚拟机 和专用I/O域之间建立I/O访问通道;步骤130'.所述专用1/0域被创建后,对自己负责的本地物理I/0设备进行初始化,在 初始化完成后,此专用I/O域对外提供I/O服务;步骤140' . I/O资源管理模块创建一个本地代理域,系统在迁移到远程物理节点的用户虚拟机的I/O前端模块和本地代理域之间建立I/O访问通道,并在本地代理域和专用1/ 0域之间建立I/O访问通道,并使得两个I/O访问通道在本地代理域处关联起来。
全文摘要
本发明公开了面向多核平台和分布式虚拟化环境的I/O系统,所述系统包括特权虚拟机,用于接收管理员的资源管理命令,并把所述资源管理命令转发给I/O资源管理模块;I/O资源管理模块,用于根据所述资源管理命令,检测本地物理I/O设备,为每个本地物理I/O设备创建一个专用I/O域;至少一个专用I/O域,用于对自己负责的本地物理I/O设备进行初始化,在本地物理I/O设备初始化完成后,此专用I/O域开始对外提供I/O服务至少一个本地物理I/O设备,与所述专用I/O域一一对应;用户虚拟机,与所述专用I/O域建立I/O访问通道,通过所述I/O访问通道与所述专用I/O域进行交互。
文档编号G06F13/10GK101706757SQ20091009345
公开日2010年5月12日 申请日期2009年9月21日 优先权日2009年9月21日
发明者孙毓忠, 杨亚军, 王若倪 申请人:中国科学院计算技术研究所