一种多机虚拟环境下实现资源共享的通信系统及通信方法转让专利

申请号 : CN200610113638.1

文献号 : CN101163133B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 马一力冯硕沈玉良宋震

申请人 : 天津中科蓝鲸信息技术有限公司

摘要 :

本发明公开了一种多机虚拟环境下实现资源共享的通信系统,用于实现对至少包含两台计算主机的多机虚拟环境中的硬件资源的共享,包括至少两个用于模拟总线访问行为的总线虚拟资源模块,至少两个用于传递不同计算主机间资源访问请求和资源访问结果的资源共享模块,和一台为资源共享数据通信提供数据通路、并整合所有共享资源的资源共享交换机,一个所述的总线虚拟资源模块与一台计算主机连接,该总线虚拟资源模块还与一个所述的资源共享模块电连接,所述的资源共享模块通过网络与所述的资源共享交换机连接。本发明还公开了一种多机虚拟环境下实现资源共享的通信方法。本发明解决了传统多处理器服务器系统价格贵,技术难度大,扩展性有限的缺点。

权利要求 :

1.一种多机虚拟环境下实现资源共享的通信系统,用于实现对至少包含两台计算主机的多机虚拟环境中的硬件资源的共享,包括至少两个用于模拟总线访问行为的总线虚拟资源模块,至少两个用于传递不同计算主机间资源访问请求和资源访问结果的资源共享模块,和一台为资源共享数据通信提供数据通路,并整合所有共享资源的资源共享交换机,其特征在于,一个所述的总线虚拟资源模块与一台计算主机连接,该总线虚拟资源模块还与一个所述的资源共享模块电连接,所述的资源共享模块通过网络与所述的资源共享交换机连接;其中,所述的总线虚拟资源模块包括总线资源模拟单元和远程通信单元,所述的总线资源模拟单元模拟多机虚拟环境中的所有共享硬件资源,并响应计算主机对资源的访问,执行远程计算主机对共享资源的请求;所述的远程通信单元将本地计算主机对资源的访问请求转发到相连接的资源共享模块,并获取资源共享模块返回的资源访问结果,以及获得远程计算主机对共享资源的访问请求,并将资源访问的执行结果转发到所述的资源共享模块;

所述的资源共享模块包括本地通信单元和资源获取单元,所述的本地通信单元从所述的总线虚拟资源模块中获取计算主机对资源的访问请求,将资源访问结果返回所述的总线虚拟资源模块,并将远程计算主机对本地资源的请求转发到所述的总线虚拟资源模块,获得总线虚拟资源模块对远程计算主机资源请求的执行结果;所述的资源获取单元对资源访问请求进行解析和地址转换,将本地计算主机的资源访问地址转换为全局资源地址,并转发到拥有该资源的计算主机的资源共享模块,获取资源访问结果。

2.根据权利要求1所述的多机虚拟环境下实现资源共享的通信系统,其特征在于,所述的总线虚拟资源模块和资源共享模块在可编程逻辑器件上实现。

3.根据权利要求2所述的多机虚拟环境下实现资源共享的通信系统,其特征在于,所述的总线虚拟资源模块和资源共享模块在一块主机接口卡上,该接口卡安装在所述计算主机的通用总线接口插槽上。

4.根据权利要求1所述的多机虚拟环境下实现资源共享的通信系统,其特征在于,所述的资源共享交换机包括一个为各个资源共享模块提供数据交换通路的交换芯片,和用于对多机虚拟环境中的共享资源进行统一逻辑编址的嵌入式软件。

5.一种应用于权利要求1所述的多机虚拟环境下实现资源共享的通信系统上的通信方法,包括资源配置方法和资源访问方法,其中,所述的资源配置方法包括:

1)、在多机虚拟环境中的计算主机上运行虚拟机软件,获取本地的共享资源信息,并存储到与所述的计算主机相连的本地总线虚拟资源模块上,管理员为所述的资源共享交换机设置资源管理配置策略;

2)、资源共享交换机获得各个计算主机上可共享的物理资源的信息,并对所有共享资源信息进行整合,将同一类的资源作统一编址,根据步骤1)中设定的资源管理配置策略,建立资源池,然后将整合后的共享资源信息发送到总线虚拟资源模块;

3)、加载并运行操作系统软件,操作系统为共享资源建立本地资源地址,资源分配过程结束;

所述的资源访问方法包括:

4)、一台计算主机上的进程发出资源访问命令,根据步骤3)建立的本地资源地址,对资源进行访问,若所要访问的资源为本地资源,则执行下一步,否则执行步骤6);

5)、通过本地总线对本地资源进行访问,访问结束后回到步骤4),重新执行新的命令;

6)、所要访问的资源不在本地计算主机上,将访问请求转发到访问资源所在的计算主机,对资源进行访问,并返回访问的结果;

7)、与本地计算主机相连的总线虚拟资源模块收到访问结果后,由总线虚拟资源模块中的总线资源模拟单元,模拟本地总线行为,返回进程对所要访问资源的访问结果。

6.根据权利要求5所述的多机虚拟环境下实现资源共享的通信方法,其特征在于,所述的步骤2)包括:

2-1)、资源共享交换机对与之相连的各个资源共享模块发出查询命令,请求获得各个计算主机上可共享的物理资源的信息;

2-2)、资源共享模块收到查询命令后,通过其本地通信单元与所述的总线虚拟资源模块进行通信,得到步骤1)中保存在总线虚拟资源模块中的计算主机的共享资源信息,并将该信息发送到资源共享交换机;

2-3)、所述的资源共享交换机对步骤2-2)得到的所有共享资源信息进行整合, 将同一类的资源作统一编址,根据步骤1)中设定的资源管理配置策略,建立资源池;

2-4)、资源共享交换机将步骤2-3)得到的整合后的共享资源信息通过资源共享模块发送到总线虚拟资源模块。

7.根据权利要求5所述的多机虚拟环境下实现资源共享的通信方法,其特征在于,所述的步骤6)包括:

6-1)、所要访问的资源不在本地计算主机上,访问命令转发到总线虚拟资源模块中的总线资源模拟单元,总线资源模拟单元模拟外部总线的协议响应本地主机对总线资源的请求,并将请求转发给总线虚拟资源模块中的远程通信单元;

6-2)、远程通信单元与资源共享模块中的本地通信单元进行通信,将访问请求转发到资源共享模块;

6-3)、资源共享模块中的本地通信单元将所要访问资源的地址在步骤4)得到的整合后的共享资源信息中进行查找,得到所要访问资源所在计算主机的地址,然后通过资源共享交换机将访问请求转发到与访问资源所在计算主机相连的资源共享模块上;

6-4)、与访问资源所在计算主机相连的资源共享模块将访问请求转发到与之相连的总线虚拟资源模块;

6-5)、步骤6-4)中所述的总线虚拟资源模块中的总线资源模拟单元模拟总线访问行为,对所要访问的资源进行访问;

6-6)、总线虚拟资源模块将访问结果原路返回。

8.根据权利要求5所述的多机虚拟环境下实现资源共享的通信方法,其特征在于,在所述的步骤1)中,所述的资源管理配置策略描述了一个用户在多机虚拟环境下可用物理资源的多少。

9.根据权利要求6所述的多机虚拟环境下实现资源共享的通信方法,其特征在于,在所述的步骤2-3)中,根据不同的资源管理配置策略,所述的所有共享资源信息建立多个不同的独立资源池,资源池内的资源能共享,资源池间资源不能相互访问。

说明书 :

一种多机虚拟环境下实现资源共享的通信系统及通信方法

技术领域

[0001] 本发明涉及计算机通信技术,特别涉及一种在多机虚拟环境下实现资源共享的通信系统及通信方法。

背景技术

[0002] 随着电子技术和信息技术的发展,构成计算资源的基本部件,如CPU、内存等已经实现了标准化大批量的生产。使得标准化的个人计算机和低端服务器性能迅速上升,成本迅速下降,计算资源的生产总量相对于需求已经由紧缺转向饱和,甚至过剩。但是,计算资源的分配是不均衡的。在个人计算领域,通过大量生产的个人计算机可以获得充足的计算能力,却没有非常强大的需求。另一方面,在高端科学计算领域和商业计算领域,需要超强的计算能力和输入输出(I/O)带宽构成的超级计算环境,却由于技术的限制,无法满足应用的需求。造成这种矛盾的主要原因是资源聚合和共享方面的限制。具体来讲,高端科学计算和商业计算需要超过个人计算机几十倍甚至上百倍的计算资源,而在一台计算机的范围内,单纯依靠硬件频率的提升和电路密度的增加,很难满足这样的需求。解决问题的方法是多个计算资源的聚合,就是集中多个标准计算部件,组合成为超级计算机,满足高端计算的需求。
[0003] 现有计算资源聚合的主要方法有紧耦合的对称多处理(SMP)结构和松耦合的集群(cluster)结构。对称多处理结构通过内部总线连接多个处理器,多个处理器共享同样的物理内存。集群结构使用高速网络连接多个标准化计算机,每个计算机拥有各自独立的内存,通过消息通信的方法实现多个计算机之间的资源共享。
[0004] 这两种方法各有优缺点。SMP结构中,多处理器的资源共享由主板芯片组的硬件完成,处理器间的通信延迟小,而且不用占用CPU进行通信,比较适合于进程粒度比较小,交互频繁,资源交叉共享较多的场合,如大规模数据库应用,数据搜索,数据挖掘等高端商业计算。它的缺点是,由于高频电信号设计的限制,高速并行总线的扩展能力有限,系统中处理器的数目和物理内存总量都受到了限制,最终严重制约了系统的规模。
[0005] cluster结构中,由于使用松耦合的网络结构进行连接,计算机模的扩展所受的限制较小,可以比较容易地构建到几百台以上的计算环境,比较适合计算资源需求高,进程粒度大,资源共享比较少的大规模科学计算。cluster结构的缺点是,由于计算机之间的通信是通过访问通信设备进行的,计算资源,尤其是内存资源无法直接共享,不可避免地花费计算资源,用软件进行通信处理,导致通信延迟增加,和计算资源的损耗。另外,cluster结构需要由软件显式设计计算的并行性,增加了应用程序开发的难度;cluster结构需要对操作系统核心进行较大修改,也限制了通用商品化软件的应用。所以cluster结构更适合专用计算系统。
[0006] 在目前的高端应用中,高端商业计算的计算规模需求低于科学计算,但是应用范围比科学计算广泛,需求更加强烈,而用传统方法设计的SMP结构的计算机系统设计难度大,造价高,规模有限,导致高端商业应用所需要的计算资源紧缺。设计多计算机之间的软件透明的资源共享系统,充分利用现有标准低端服务器丰富的软硬件资源,构造大规模可扩展的SMP结构服务器系统,缓解高端商业应用计算资源压力,是急需解决的问题。 [0007] 发明内容
[0008] 本发明的目的是克服用传统方法设计的对称多处理结构的计算机系统设计难度大、造价高、规模有限的缺陷,从而提供一种在虚拟机环境下易设计,造价低廉,扩展方便的通信系统及方法,并以此为基础,用多计算机构建虚拟计算环境。
[0009] 为了实现上述目的,本发明提供了一种多机虚拟环境下实现资源共享的通信系统,用于实现对至少包含两台计算主机的多机虚拟环境中的硬件资源的共享,包括至少两个用于模拟总线访问行为的总线虚拟资源模块,至少两个用于传递不同计算主机间资源访问请求和资源访问结果的资源共享模块,和一台为资源共享数据通信提供数据通路,并整合所有共享资源的资源共享交换机,一个所述的总线虚拟资源模块与一台计算主机连接,该总线虚拟资源模块还与一个所述的资源共享模块电连接,所述的资源共享模块通过网络与所述的资源共享交换机连接;其中,
[0010] 所述的总线虚拟资源模块包括总线资源模拟单元和远程通信单元,所述的总线资源模拟单元模拟多机虚拟环境中的所有共享硬件资源,并响应计算主机对资源的访问,执行远程计算主机对共享资源的请求;所述的远程通信单元将本地计算主机对资源的访问请求转发到相连接的资源共享模块,并获取资源共享模块返回的资源 访问结果,以及获得远程计算主机对共享资源的访问请求,并将资源访问的执行结果转发到所述的资源共享模块;
[0011] 所述的资源共享模块包括本地通信单元和资源获取单元,所述的本地通信单元从所述的总线虚拟资源模块中获取计算主机对资源的访问请求,将资源访问结果返回所述的总线虚拟资源模块,并将远程计算主机对本地资源的请求转发到所述的总线虚拟资源模块,获得总线虚拟资源模块对远程计算主机资源请求的执行结果;所述的资源获取单元对资源访问请求进行解析和地址转换,将本地计算主机的资源访问地址转换为全局资源地址,并转发到拥有该资源的计算主机的资源共享模块,获取资源访问结果。 [0012] 上述技术方案中,所述的总线虚拟资源模块和资源共享模块在可编程逻辑器件上实现。
[0013] 所述的总线虚拟资源模块和资源共享模块在一块主机接口卡上,该接口卡安装在所述计算主机的通用总线接口插槽上。
[0014] 上述技术方案中,所述的资源共享交换机包括一个为各个资源共享模块提供数据交换通路的交换芯片,和用于对多机虚拟环境中的共享资源进行统一逻辑编址的嵌入式软件。
[0015] 本发明还提供了一种多机虚拟环境下实现资源共享的通信方法,包括资源配置方法和资源访问方法,其中,所述的资源配置方法包括:
[0016] 1)、在多机虚拟环境中的计算主机上运行虚拟机软件,获取本地的共享资源信息,并存储到与所述的计算主机相连的本地总线虚拟资源模块上,管理员为所述的资源共享交换机设置资源管理配置策略;
[0017] 2)、资源共享交换机获得各个计算主机上可共享的物理资源的信息,并对所有共享资源信息进行整合,将同一类的资源作统一编址,根据步骤1)中设定的资源管理配置策略,建立资源池,然后将整合后的共享资源信息发送到总线虚拟资源模块; [0018] 3)、加载并运行操作系统软件,操作系统为共享资源建立本地资源地址,资源分配过程结束;
[0019] 所述的资源访问方法包括:
[0020] 4)、一台计算主机上的进程发出资源访问命令,根据步骤3)建立的本地资源地址,对资源进行访问,若所要访问的资源为本地资源,则执行下一步,否则执行 步骤6); [0021] 5)、通过本地总线对本地资源进行访问,访问结束后回到步骤4),重新执行新的命令;
[0022] 6)、所要访问的资源不在本地计算主机上,将访问请求转发到访问资源所在的计算主机,对资源进行访问,并返回访问的结果;
[0023] 7)、与本地计算主机相连的总线虚拟资源模块收到访问结果后,由总线虚拟资源模块中的总线资源模拟单元,模拟本地总线行为,返回进程对所要访问资源的访问结果。 [0024] 上述技术方案中,所述的步骤2)包括:
[0025] 2-1)、资源共享交换机对与之相连的各个资源共享模块发出查询命令,请求获得各个计算主机上可共享的物理资源的信息;
[0026] 2-2)、资源共享模块收到查询命令后,通过其本地通信单元与所述的总线虚拟资源模块进行通信,得到步骤1)中保存在总线虚拟资源模块中的计算主机的共享资源信息,并将该信息发送到资源共享交换机;
[0027] 2-3)、所述的资源共享交换机对步骤2-2)得到的所有共享资源信息进行整合,将同一类的资源作统一编址,根据步骤1)中设定的资源管理配置策略,建立资源池; [0028] 2-4)、资源共享交换机将步骤2-3)得到的整合后的共享资源信息通过资源共享模块发送到总线虚拟资源模块。
[0029] 上述技术方案中,所述的步骤6)包括:
[0030] 6-1)、所要访问的资源不在本地计算主机上,访问命令转发到总线资源虚拟模块中的总线资源模拟单元,总线资源模拟单元模拟外部总线的协议响应本地主机对总线资源的请求,并将请求转发给总线资源虚拟模块中的远程通信单元;
[0031] 6-2)、远程通信单元与资源共享模块中的本地通信单元进行通信,将访问请求转发到资源共享模块;
[0032] 6-3)、资源共享模块中的本地通信单元将所要访问资源的地址在步骤4)得到的整合后的共享资源信息中进行查找,得到所要访问资源所在计算主机的地址,然后通过资源共享交换机将访问请求转发到与访问资源所在计算主机相连的资源共享模块上; [0033] 6-4)、与访问资源所在计算主机相连的资源共享模块将访问请求转发到与之相 连的总线虚拟资源模块;
[0034] 6-5)、步骤6-4)中所述的总线虚拟资源模块中的总线资源模拟单元模拟总线访问行为,对所要访问的资源进行访问;
[0035] 6-6)、总线虚拟资源模块将访问结果原路返回;
[0036] 上述技术方案中,在所述的步骤1)中,所述的资源管理配置策略描述了一个用户在多机虚拟环境下可用物理资源的多少。
[0037] 在所述的步骤2-3)中,根据不同的资源管理配置策略,所述的所有共享资源信息建立多个不同的独立资源池,资源池内的资源能共享,资源池间资源不能相互访问。 [0038] 本发明的优点在于:
[0039] 1、本发明提供了用标准通用计算机构造虚拟多处理器服务器的系统和方法,解决了传统多处理器服务器系统价格贵,技术难度大,扩展性有限的缺点。
[0040] 2、本发明使用硬件方法模拟计算机总线的行为,避免了软件对远程通信处理造成的计算效率的下降。
[0041] 3、本发明的多机虚拟环境下实现资源共享的通信方法避免了传统集群结构中需要修改操作系统内核的问题,提高了系统和应用程序的兼容性。
[0042] 4、本发明的多机虚拟环境下实现资源共享的通信方法提出了灵活的计算资源管理配置方法,使计算环境的规模可以根据应用的需求动态配置。
[0043] 5、本发明的多机虚拟环境下实现资源共享的通信方法建立了统一的资源逻辑地址空间,使多个计算机可以在同一个系统镜像内实现与软件无关的资源访问。 [0044] 附图说明
[0045] 图1为本发明的多机虚拟环境下实现资源共享的通信系统的结构图; [0046] 图2为本发明的多机虚拟环境下实现资源共享的通信方法中的资源配置方法的流程图;
[0047] 图3为本发明的多机虚拟环境下实现资源共享的通信方法中的资源访问方法的流程图。
[0048] 图面说明
[0049] 10计算主机 11计算主机 12计算主机
[0050] 13计算主机 20总线虚拟资源模块 21总线虚拟资源模块
[0051] 22总线虚拟资源模块 23总线虚拟资源模块 30资源共享模块
[0052] 31资源共享模块 32资源共享模块 33资源共享模块 [0053] 40资源共享交换机 201总线资源模拟单元 202远程通信单元 [0054] 211总线资源模拟单元 212远程通信单元 221总线资源模拟单元 [0055] 222远程通信单元 231总线资源模拟单元 232远程通信单元 [0056] 301本地通信单元 302资源获取单元 311本地通信单元 [0057] 312资源获取单元 321本地通信单元 322资源获取单元 [0058] 331本地通信单元 332资源获取单元

具体实施方式

[0059] 下面结合附图和具体实施方式对本发明的通信系统及通信方法作进一步的说明。 [0060] 如图1所示,在本发明的通信系统的一个实施例中,通信系统包括四个总线虚拟资源模块20、21、22、23,四个资源共享模块30、31、32、33,和一个资源共享交换机40。其中,总线虚拟资源模块20、21、22、23分别与外部的计算主机10、11、12、13相连接,同时总线虚拟资源模块20、21、22、23还分别连接到资源共享模块30、31、32、33上,资源共享模块30、31、32、33则通过网络与资源共享主机40连接。
[0061] 将本发明的通信系统与多台计算主机相连,可形成一个多机虚拟环境。在多机虚拟环境中,利用本发明的通信系统,可以实现对多台计算主机上资源的共享。 [0062] 对于一个总线虚拟资源模块,与它本身相连的计算主机视为本地计算主机,多机虚拟环境中的其他计算主机,对于该总线虚拟资源模块为远程计算主机。
[0063] 由于在实施例中,四个总线虚拟资源模块的功能与结构都相同,因此下面选择总线虚拟资源模块20进行详细说明。
[0064] 在本发明的通信系统中,总线虚拟资源模块20与计算主机10的总线接口相连接,并在硬件级别模拟总线上的硬件资源的行为,响应所述计算主机10对计算环境中所有共享资源的请求,也可以通过总线接口,对本地计算主机所提供的共享资源进行访问,完成远程计算主机对共享资源的访问请求。
[0065] 总线虚拟资源模块20又可以分为总线资源模拟单元201和远程通信单元202。其中的总线资源模拟单元201模拟多机虚拟环境中的所有共享硬件资源,并响应计算主机对资源的访问,并通过本地总线执行远程计算主机对共享资源的请求。远程通信单元202将本地计算主机对资源和访问请求转发到相连接的资源共享模块30, 并获取资源共享模块30返回的资源访问结果,以及获得远程计算主机对共享资源的访问请求,并将资源访问的执行结果转发到资源共享模块30。
[0066] 同样的,总线虚拟资源模块21可分为总线资源模拟单元211和远程通信单元212,总线虚拟资源模块22可分为总线资源模拟单元221和远程通信单元222,总线虚拟资源模块23可分为总线资源模拟单元231和远程通信单元232。
[0067] 在本实施例中,四个资源共享模块的功能与结构都相同,因此选择资源共享模块30作详细说明。
[0068] 在通信系统中,资源共享模块30与总线虚拟资源模块20连接,并将本地计算主机10对总线虚拟资源模块20所模拟出的硬件资源的访问,转化为虚拟计算环境真实资源的访问请求,通过资源共享模块之间的通信,获取资源访问结果,并将获得资源访问结果,通过所述总线虚拟资源模块20,返回到所述计算主机。资源共享模块30还可以接受其他计算主机对本地资源的访问请求,并将访问请求转发到本地总线虚拟资源模块20。 [0069] 资源共享模块30可分为本地通信单元301和资源获取单元302。其中,本地通信单元301从总线虚拟资源模块20中获取计算主机10对资源的访问请求,并将资源访问结果返回总线虚拟资源模块20;并将远程计算主机对本地资源的请求转发到所述的总线虚拟资源模块20,获得总线虚拟资源模块20对远程计算主机资源请求的执行结果。资源获取单元302对资源访问请求进行解析和地址转换,将本地计算主机10的资源访问地址转换为全局资源地址,并转发到拥有该资源的计算主机的资源共享模块,并获取资源访问结果。 [0070] 同样的,资源共享模块31可分为本地通信单元311和资源获取单元312,资源共享模块32可分为本地通信单元321和资源获取单元322,资源共享模块33可分为本地通信单元331和资源获取单元332。
[0071] 在本实施例中,上述的总线虚拟资源模块和资源共享模块在可编程逻辑器件上实现,为了连接方便,将总线资源模拟模块和资源共享模块的器件设计在一块主机接口卡上,该接口卡安装在计算主机的通用总线接口插槽上,以实现本发明的通信系统与计算主机间的连接。
[0072] 资源共享交换机40连接所有资源共享模块30、31、32、33,整合所述多机虚拟环境的所有共享资源,对所有资源统一定位和编址,建立统一的资源池,并向计算主机10、11、12、13提供资源共享机制。资源共享交换机40是一个独立的外部 设备,它包含一个为各个资源共享模块提供数据交换通路的交换芯片,在资源共享交换机40中还包括一个嵌入式软件,对交换芯片的地址进行统一配置。
[0073] 本发明的通信系统结合外部的计算主机形成一个多机虚拟环境,在该环境下,通信系统的工作流程分为资源配置和资源访问两大步骤,其具体实现如下。
[0074] 一、资源配置流程的实现如图2所示,包括:
[0075] 步骤100、在计算主机10、11、12、13上分别运行虚拟机软件,获得本机的资源信息,并且将资源信息分别存储到本地的总线虚拟资源模块20,21,22,23中,并通知资源共享交换机40开始一次新的配置,管理员将资源管理配置策略通知资源共享交换机。 [0076] 在本步骤中,所运行的虚拟机软件可以是名称为VMware或xen的虚拟机软件。所述的资源管理配置策略描述了一个用户在多机虚拟环境下可用物理资源的多少。在本实施例中,资源管理配置策略可设定为对计算主机10、11、12、13中的物理资源都可使用。 [0077] 在本实施例中,假设在计算主机10上,可供共享的物理资源包括一个CPU、一段内存,和五段IO端口空间。运行虚拟机软件后,得到物理资源信息,并将物理资源信息存储到总线虚拟资源模块20中的总线资源模拟单元201中。表1为存储在总线资源模拟单元201中的计算主机10可共享的物理资源信息。
[0078]名称 地址
CPU 计算主机10,cpu1
内存 计算主机10,内存地址 0x40000000-0x60000000
IO空间1 计算主机10,IO地址0x1000-0x1800
IO空间2 计算主机10,IO地址0x1900-0x2000
IO空间3 计算主机10,IO地址0x2100-0x2400
IO空间4 计算主机10,IO地址0x3000-0x3600
IO空间5 计算主机10,IO地址0x5000-0x5200
[0079] 表1
[0080] 同样的,计算主机11、12、13在运行虚拟软件后,都可得到计算主机中可供共享的物理资源信息,并保存在各自的总线资源模拟单元中。表2,表3,表4分别列出了计算主机11,12,13可以共享的资源。其中,表2为计算主机11可以共享的 物理资源,表3为计算主机12可以共享的物理资源,表4为计算主机13可以共享的物理资源。
[0081]名称 地址
CPU 计算主机11,cpu1
内存 计算主机11,内存地址 0x50000000-0x70000000
IO空间1 计算主机11,IO地址0x1200-0x1800
IO空间2 计算主机11,IO地址0x1900-0x2000
IO空间3 计算主机11,IO地址0x2200-0x2400
IO空间4 计算主机11,IO地址0x3000-0x3300
IO空间5 计算主机11,IO地址0x5000-0x5200
[0082] 表2
[0083]名称 地址
CPU 计算主机12,cpu1
内存 计算主机12,内存地址 0x20000000-0x60000000
IO空间1 计算主机12,IO地址0x3000-0x3800
IO空间2 计算主机12,IO地址0x1900-0x2000
IO空间3 计算主机12,IO地址0x2100-0x2400
IO空间4 计算主机12,IO地址0x3900-0x3f00
IO空间5 计算主机12,IO地址0x5000-0x5200
[0084] 表3
[0085]名称 地址
CPU 计算主机13,cpu1
内存 计算主机13,内存地址 0x40000000-0x50000000
IO空间1 计算主机13,IO地址0x2000-0x2800
IO空间2 计算主机13,IO地址0x1900-0x2300
IO空间3 计算主机13,IO地址0x3100-0x3400
IO空间4 计算主机13,IO地址0x6000-0x6800
IO空间5 计算主机13,IO地址0x5000-0x5200
[0086] 表4
[0087] 步骤200、资源共享交换机40开始工作,运行安装在资源共享交换机40上的嵌入式软件,查询资源共享模块30、31、32、33,请求获得计算主机10、11、12、13上可共享的物理资源的信息;
[0088] 步骤300、资源共享模块接收到资源共享交换机40发出的查询请求后,通过本地通信单元与总线虚拟资源模块进行通信,得到保存在总线资源模拟单元中的计算主机的资源信息,并将该资源信息传送到资源共享交换机40中。
[0089] 步骤400、资源共享交换机40将所有资源重新整合,将同一类的资源统一编址,构成统一的资源池,根据资源管理策略的不同,可以建立一个或多个不同尺度的资源池。然后将统一编址后的逻辑资源信息的总量和地址返回各个计算主机的资源共享模块30,31,32,33。表5是本实施例中对计算主机10、11、12、13统一编址后的资源列表。在该表中,计算主机10、11、12、13上的所有可共享资源都作了统一的编址,并建立了新地址与原地址间的映射关系。
[0090]资源名称 统一资源地址 物理资源地址
Cpu1 Cpu1 计算主机10,cpu1
Cpu2 Cpu2 计算主机11,cpu1
Cpu3 Cpu3 计算主机12,cpu1
Cpu4 Cpu4 计算主机13,cpu1
内存 0-0x90000000其中:
[0091]0-0x20000000 计算主机10,内存地址 0x40000000-0x60000000
0x20000000-0x40000000 计算主机11,内存地址 0x50000000-0x70000000
0x40000000-0x80000000 计算主机12,内存地址 0x40000000-0x60000000
0x80000000-0x90000000 计算主机13,内存地址 0x40000000-0x50000000
IO端口 0-0x6200其中
0-0x0800 计算主机10,IO地址 0x1000-0x1800
0x0800-0x0900 计算主机10,IO地址 0x 1900-0x2000
0x0900-0x0C00 计算主机10,IO地址 0x2100-0x2400
0x0C00-0x1200 计算主机10,IO地址 0x3000-0x3600
0x1200-0x1400 计算主机10,IO地址 0x5000-0x5200
0x1400-0x1A00 计算主机11,IO地址 0x1200-0x1800
0x1A00-0x2100 计算主机11,IO地址 0x 1900-0x2000
0x2100-0x2300 计算主机11,IO地址 0x2200-0x2400
0x2300-0x2600 计算主机11,IO地址 0x3000-0x3300
0x2600-0x2800 计算主机11,IO地址 0x5000-0x5200
0x2800-0x3000 计算主机12,IO地址
0x3000-0x3800

0x2000-0x3700 计算主机12,IO地址 0x1900-0x2000
0x3700-0x3a00 计算主机12,IO地址 0x2100-0x2400
0x3a00-0x4100 计算主机12,IO地址 0x3900-0x3f00
0x4100-0x4300 计算主机12,IO地址 0x5000-0x5200
0x4300-0x4b00 计算主机13,IO地址 0x2000-0x2800
0x4b00-0x5500 计算主机13,IO地址 0x1900-0x2300
0x5500-0x5800 计算主机13,IO地址 0x3100-0x3400
0x5800-0x6000 计算主机13,IO地址 0x6000-0x6800
0x6000-0x6200 计算主机13,IO地址 0x5000-0x5200
[0092] 表5
[0093] 步骤500、资源共享模块30,31,32,33分别与总线虚拟资源模块20,21,22,23通信,将步骤400得到的共享逻辑资源的信息返回到总线虚拟资源模块中。
[0094] 步骤600、虚拟机软件把操作系统软件加载到计算主机上,并运行该操作系统软件。
[0095] 步骤700、操作系统软件在初始化阶段进行资源查询时,将访问总线虚拟资源模块,获取当前系统中资源总量的信息,此时总线虚拟资源模块将会返回多机虚拟环境中所有共享的逻辑资源总量的信息。
[0096] 步骤800、操作系统软件将为共享的逻辑资源建立本地资源地址,资源分配过程完成。
[0097] 以计算主机10为例,表6为计算主机10的操作系统所能见到的逻辑资源列表。在该表中,左侧的逻辑资源地址就是操作系统软件为共享的逻辑资源所建立的本地资源地址,右侧为共享逻辑资源的物理地址。对于本地的逻辑资源,它们的物理地址可以直接查找到,对于远程的逻辑资源,它们需要通过总线虚拟资源模块作调度访问。
[0098]逻辑资源地址 物理资源位置
Cpu1 本地cpu
Cpu2,cpu3,cpu4 远程cpu,通过总线虚拟资源 模块调度访问
内存地址0-0x20000000 本地物理内存 0x40000000-0x60000000
内存地址 0x20000000-0x90000000 远程内存,通过总线虚拟资源 模块调度访问
IO地址空间
0-0x0800 本地IO地址 0x1000-0x1800
0x0800-0x0900 本地,IO地址 0x 1900-0x2000
0x0900-0x0C00 本地,IO地址 0x2100-0x2400
0x0C00-0x1200 本地,IO地址 0x3000-0x3600
0x1200-0x1400 本地,IO地址 0x5000-0x5200
0x1400-0x6200 远程io地址,通过总线虚拟 资源模块调度访问
[0099] 表6
[0100] 当多处理器操作系统软件运行结束后,将返回虚拟机软件。如果此时需要重新配置系统中的资源,建立新的多处理器计算环境,则返回步骤100。
[0101] 二、资源访问流程
[0102] 本发明的通信系统对资源配置结束后,即可实现对多机虚拟环境下,各种共享资源的访问。资源访问流程的具体实现步骤如图3所示,包括:
[0103] 步骤900、一台计算主机上的进程发出资源访问命令,根据步骤800建立的本地资源地址,对资源进行访问,若所要访问的资源为本地资源,则执行下一步,否则执行步骤1100;
[0104] 步骤1000、通过本地总线对本地资源进行访问,访问结束后回到步骤900,重新执行新的命令;
[0105] 步骤1100、所要访问的资源不在本地计算主机上,访问命令转发到资源虚拟模块中的总线资源模拟单元,总线资源模拟单元模拟外部总线的协议响应本地主机对总线资源的请求,并将请求转发给资源虚拟模块中的远程通信单元;
[0106] 步骤1200、远程通信单元与资源共享模块中的本地通信单元进行通信,将访问请求转发到资源共享模块;
[0107] 步骤1300、资源共享模块中的本地通信单元将所要访问资源的地址在步骤400得到的整合后的共享资源信息中进行查找,得到所要访问资源所在计算主机的地址,然后通过资源共享交换机将访问请求转发到与访问资源所在计算主机相连的资源共享模块上; [0108] 步骤1400、与访问资源所在计算主机相连的资源共享模块将访问请求转发到与之相连的总线虚拟资源模块;
[0109] 步骤1500、步骤1400中所述的总线虚拟资源模块中的总线资源模拟单元模拟总线访问行为,对所要访问的资源进行访问;
[0110] 步骤1600、总线虚拟资源模块将访问结果原路返回;
[0111] 步骤1700、与本地计算主机相连的总线虚拟资源模块收到访问结果后,由总线虚拟资源模块中的总线资源虚拟单元,模拟本地总线行为,返回进程对所要访问资源的访问结果。
[0112] 在本实施例中,以计算主机10为例,假设在计算主机10的操作系统中运行一个进程,该进程需要对内存进行访问。资源访问的具体过程包括:
[0113] 1)、根据表6的记载,对所要访问的内存的地址进行判断,若所要访问的内存的地址在计算主机10的地址范围内(0_0x20000000之间),则进行一次正常的本地内存总线访问,否则执行下一步;
[0114] 2)、所要访问的内存的地址在计算主机10的地址范围外,如所要访问的内存地址为0x30000000,则访问请求会被本地的资源虚拟模块中的总线资源模拟单元201获得,总线资源模拟单元201模拟外部总线的协议响应本地主机对总线资源的请求,并将请求转发给资源虚拟模块中的远程通信单元202。
[0115] 3)、远程通信单元202负责和资源共享模块30中的本地通信单元301通信,将请求再转发到资源共享模块30。
[0116] 4)、资源共享模块30中的本地通信单元301通过查表5,发现0x30000000地址对应的是计算主机11上的物理内存,所以将请求通过资源获取单元302转发出去,通过资源共享交换机40,到达计算主机11上资源共享模块31。
[0117] 5)、资源共享模块31上的资源获取单元312通过查表5发现,所请求的资源在本地共享物理内存范围内,则将请求传递到本地通信单元311中。
[0118] 6)、本地通信单元311负责和总线虚拟资源模块21中的远程通信单元212通信,将请求转发到总线虚拟资源模块21。
[0119] 7)、远程通信单元212将请求转发到总线资源模拟单元211
[0120] 8)、总线资源模拟单元211模拟总线访问的行为,访问计算主机11的物理内存地址0x60000000(即统一的虚拟地址0x30000000)
[0121] 9)、总线资源模拟单元211将内存访问结果转发到远程通信单元212。 [0122] 10)、远程通信单元212将内存访问结果转发到资源共享模块31中的本地通信单元311。
[0123] 11)、本地通信单元311将内存访问结果转发到资源获取单元312
[0124] 12)、资源获取单元312通过通资源共享交换机40将内存访问结果转发出去,到达计算主机10上资源共享模块30的资源获取单元302
[0125] 13)、资源获取单元302,将内存访问结果转发到本地通信单元301
[0126] 14)、本地通信单元通过和总线虚拟资源模块20中的远程通信单元202通信,将内存访问结果转发到远程通信单元202。
[0127] 15)、远程通信单元202,将内存访问结果转发到本地的总线虚拟资源模块中的总线资源模拟单元201。
[0128] 16)、总线资源模拟单元201,模拟本地总线行为,返回进程对内存访问的结果。 [0129] 上述步骤完成了虚拟服务器环境下的一次资源访问过程,从操作系统的角度看,上述过程是一次正常的总线访问过程,不需要附加任何软件的工作。