CN103823638A - 一种虚拟设备访问方法及装置 - Google Patents

一种虚拟设备访问方法及装置 Download PDF

Info

Publication number
CN103823638A
CN103823638A CN201410046060.7A CN201410046060A CN103823638A CN 103823638 A CN103823638 A CN 103823638A CN 201410046060 A CN201410046060 A CN 201410046060A CN 103823638 A CN103823638 A CN 103823638A
Authority
CN
China
Prior art keywords
physical server
address
far
virtual
virtual memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410046060.7A
Other languages
English (en)
Other versions
CN103823638B (zh
Inventor
王海波
李利江
卢自聪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201410046060.7A priority Critical patent/CN103823638B/zh
Publication of CN103823638A publication Critical patent/CN103823638A/zh
Priority to PCT/CN2014/086183 priority patent/WO2015117303A1/zh
Application granted granted Critical
Publication of CN103823638B publication Critical patent/CN103823638B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种虚拟内存访问方法、装置,应用在本地服务器,本地服务器与远端服务器通过非透明PCI桥连接,非透明PCI桥用于将对远端服务器映射到本地服务器上地址的访问转换为对远端服务器上地址的访问;本地服务器中保存有本地服务器与远端服务器间的地址空间映射关系;该方法包括:根据接收的访问虚拟内存指令中的虚拟地址获得虚拟内存所在远端服务器,及虚拟内存在该远端服务器上的地址;根据地址空间映射关系及虚拟内存在所在远端服务器上的地址,获得虚拟内存映射到本地服务器上的地址;通过对虚拟内存映射到本地服务器上地址的访问,访问虚拟内存。本发明还公开了一种虚拟直通设备访问方法、装置。提高了分布式虚拟化系统的性能。

Description

一种虚拟设备访问方法及装置
技术领域
本发明涉及计算机技术领域,具体涉及一种虚拟设备访问方法及装置。
背景技术
虚拟化技术是指在物理服务器上用软件方式模拟出一个或多个虚拟机,并让操作系统运行在虚拟机上,从而达到在有限的物理资源条件下实现较大利用率和节省能耗。分布式虚拟化技术则可以将多个物理服务器上的物理资源进行整合,统一分配给所模拟的虚拟机,从而实现更高的资源利用率。在分布式虚拟化的环境下,因为虚拟机的虚拟CPU(Central Processing Unit,中央处理器)、虚拟内存、虚拟直通设备即一种虚拟输入输出IO设备均可能被划分且分布在不同物理服务器上,所述当虚拟CPU执行软件指令时,需要根据指令访问不同物理服务器上的虚拟硬件资源,实现跨节点访问。
在分布式虚拟化中,当虚拟机试图访问虚拟内存或虚拟直通设备时,需要找到该虚拟内存或虚拟直通设备所位于的物理服务器以及在该物理服务器中的实际位置,并实现对它的访问。在现有技术中,每个物理服务器中均有一通信模块,当虚拟内存或虚拟直通设备在远端物理服务器时,需要由发起访问的物理服务器中的通信模块利用互联网向远端物理服务器发送访问请求,当发送写访问请求时,还需要由通信模块向远端物理服务器发送需要写入的数据,当发送读访问请求时,还需要由远端物理服务器的通信模块向发起访问的物理服务器的通信模块传输读取的数据。
但是,所有物理服务器间信息、请求和数据的传递全部需要同时借助物理服务器中额外的通信模块,且物理服务器间信息、请求和数据的传递需要借助互联网络,而目前很多的互联网络速度较慢,导致物理服务器间通信速度慢,不仅降低了虚拟机指令的运行速度也额外占用了处理器运行时间,因而降低了分布式虚拟化系统的性能。
发明内容
有鉴于此,本发明提供了一种虚拟设备访问方法及装置,可以解决现有技术中物理服务器间通信速度慢,从而降低了分布式虚拟化系统性能的问题。
为解决上述问题,本发明提供的技术方案如下:
第一方面,本发明提供了一种虚拟内存访问方法,应用在本地物理服务器中,所述本地物理服务器通过本地非透明PCI桥与远端物理服务器的非透明PCI桥连接,所述非透明PCI桥用于将对远端物理服务器映射到本地物理服务器上的地址的访问转换为对远端物理服务器上的物理地址的访问;所述本地物理服务器中保存有利用所述非透明PCI桥建立的所述本地物理服务器与所述远端物理服务器之间的地址空间映射关系;所述方法包括:
接收访问虚拟内存指令,根据所述访问虚拟内存指令中包含的虚拟地址获得所述虚拟内存所位于的远端物理服务器,并获得所述虚拟内存在所位于的远端物理服务器上的物理地址;
根据所述地址空间映射关系以及所述虚拟内存在所位于的远端物理服务器上的物理地址,获得所述虚拟内存映射到本地物理服务器上的地址;
通过对所述虚拟内存映射到本地物理服务器上的地址的访问,访问所述虚拟内存。
在第一方面的第一种实现方式中,所述根据所述访问虚拟内存指令中包含的虚拟地址获得所述虚拟内存所位于的远端物理服务器,包括:
根据所述访问虚拟内存指令中包含的虚拟内存的虚拟地址,查找保存的虚拟内存分布信息,获得所述虚拟内存所位于的远端物理服务器。
在第一方面的第二种实现方式中,所述本地物理服务器中还保存有远端物理服务器中的P2M表的地址,所述远端物理服务器中的P2M表包括位于该远端物理服务器中的虚拟内存的虚拟地址与该远端服务器的物理地址的对应关系;
所述获得所述虚拟内存在所位于的远端物理服务器上的物理地址,包括:
根据所述地址空间映射关系以及所述虚拟内存所位于的远端物理服务器中的P2M表的地址,获得所述虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址;
通过对所述虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址的访问,访问所述虚拟内存所位于的远端物理服务器中的P2M表,在所述P2M表中查找所述虚拟内存的虚拟地址获得所述虚拟内存在所位于的物理服务器上的物理地址。
第二方面,本发明提供了一种虚拟直通设备访问方法,应用在本地物理服务器中,所述本地物理服务器通过本地非透明PCI桥与远端物理服务器的非透明PCI桥连接,所述非透明PCI桥用于将对远端物理服务器映射到本地物理服务器上的地址的访问转换为对远端物理服务器上的物理地址的访问;所述本地物理服务器中保存有利用所述非透明PCI桥建立的所述本地物理服务器与所述远端物理服务器之间的地址空间映射关系;所述方法包括:
接收访问虚拟直通设备指令,根据所述访问虚拟直通设备指令中包含的虚拟地址获得所述虚拟直通设备所位于的远端物理服务器,并获得所述虚拟直通设备在所位于的远端物理服务器上的物理地址;
根据所述地址空间映射关系以及所述虚拟直通设备在所位于的远端物理服务器上的物理地址,获得所述虚拟直通设备映射到本地物理服务器上的地址;
通过对所述虚拟直通设备映射到本地物理服务器上的地址的访问,访问所述虚拟直通设备。
在第二方面的第一种实现方式中,所述根据所述访问虚拟直通设备指令中包含的虚拟地址获得所述虚拟直通设备所位于的远端物理服务器,并获得所述虚拟直通设备在所位于的远端物理服务器上的物理地址,包括:
根据所述访问虚拟直通设备指令中包含的虚拟直通设备的虚拟地址,查找保存的虚拟直通设备分布信息,获得所述虚拟直通设备所位于的远端物理服务器,并获得所述虚拟直通设备在所位于的远端物理服务器上的物理地址。
结合第二方面或者第二方面的第一种实现方式,在第二方面的第二种实现方式中,所述方法还包括:
根据所述访问虚拟直通设备指令,判断所述虚拟直通设备是否需要写入数据到虚拟内存,如果是,获得所述虚拟内存所位于的远端物理服务器,并获得所述虚拟内存在所位于的远端物理服务器上的物理地址;
根据所述地址空间映射关系以及所述虚拟内存在所位于的物理服务器上的物理地址,获得所述虚拟内存映射到所述虚拟直通设备所位于的物理服务器上的地址;
将所述虚拟内存映射到虚拟直通设备所位于的物理服务器上的地址写入所述虚拟直通设备映射到本地物理服务器上的地址,使所述虚拟直通设备将需要写入的数据写入所述虚拟内存。
结合第二方面的第二种实现方式,在第二方面的第三种实现方式中,所述获得所述虚拟内存所位于的远端物理服务器,包括:
根据所述访问虚拟直通设备指令中包含的虚拟内存的虚拟地址,查找保存的虚拟内存分布信息,获得所述虚拟内存所位于的物理服务器。
结合第二方面的第二种实现方式,在第二方面的第四种实现方式中,所述本地物理服务器中还保存有远端物理服务器中的P2M表的地址,所述远端物理服务器中的P2M表包括位于该远端物理服务器中的虚拟内存的虚拟地址与该远端服务器的物理地址的对应关系;
所述获得所述虚拟内存在所位于的远端物理服务器上的物理地址,包括:
根据所述地址空间映射关系以及所述虚拟内存所位于的远端物理服务器中的P2M表的地址,获得所述虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址;
通过对所述虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址的访问,访问所述虚拟内存所位于的远端物理服务器中的P2M表,在所述P2M表中查找所述虚拟内存的虚拟地址获得所述虚拟内存在所位于的物理服务器上的物理地址。
第三方面,本发明提供了一种虚拟内存访问装置,应用在本地物理服务器中,所述本地物理服务器通过本地非透明PCI桥与远端物理服务器的非透明PCI桥连接,所述非透明PCI桥用于将对远端物理服务器映射到本地物理服务器上的地址的访问转换为对远端物理服务器上的物理地址的访问;所述本地物理服务器中保存有利用所述非透明PCI桥建立的所述本地物理服务器与所述远端物理服务器之间的地址空间映射关系;所述装置包括:
接收单元,用于接收访问虚拟内存指令;
第一获得单元,用于根据所述接收单元接收到的访问虚拟内存指令包含的虚拟地址获得所述虚拟内存所位于的远端物理服务器;
第二获得单元,用于在所述第一获得单元获得所述虚拟内存所位于的远端物理服务器后,获得所述虚拟内存在所位于的远端物理服务器上的物理地址;
第三获得单元,用于根据所述地址空间映射关系以及所述第二获得单元获得的所述虚拟内存在所位于的远端物理服务器上的物理地址,获得所述虚拟内存映射到本地物理服务器上的地址;
访问单元,用于通过对所述第三获得单元获得的所述虚拟内存映射到本地物理服务器上的地址的访问,访问所述虚拟内存。
在第三方面的第一种实现方式中,所述本地物理服务器中还保存有远端物理服务器中的P2M表的地址,所述远端物理服务器中的P2M表包括位于该远端物理服务器中的虚拟内存的虚拟地址与该远端服务器的物理地址的对应关系;
所述第二获得单元包括:
第一获得子单元,用于根据所述地址空间映射关系以及所述虚拟内存所位于的远端物理服务器中的P2M表的地址,获得所述虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址;
访问子单元,用于通过对所述第一获得子单元获得的所述虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址的访问,访问所述虚拟内存所位于的远端物理服务器中的P2M表,在所述P2M表中查找所述虚拟内存的虚拟地址获得所述虚拟内存在所位于的物理服务器上的物理地址。
第四方面,本发明提供了一种虚拟直通设备访问装置,应用在本地物理服务器中,所述本地物理服务器通过本地非透明PCI桥与远端物理服务器的非透明PCI桥连接,所述非透明PCI桥用于将对远端物理服务器映射到本地物理服务器上的地址的访问转换为对远端物理服务器上的物理地址的访问;所述本地物理服务器中保存有利用所述非透明PCI桥建立的所述本地物理服务器与所述远端物理服务器之间的地址空间映射关系;所述装置包括:
接收单元,用于接收访问虚拟直通设备指令;
第一获得单元,用于根据所述访问虚拟直通设备指令中包含的虚拟地址获得所述虚拟直通设备所位于的远端物理服务器,并获得所述虚拟直通设备在所位于的远端物理服务器上的物理地址;
第二获得单元,用于根据所述地址空间映射关系以及所述第一获得单元获得的所述虚拟直通设备在所位于的远端物理服务器上的物理地址,获得所述虚拟直通设备映射到本地物理服务器上的地址;
访问单元,用于通过对所述第二获得单元获得的所述虚拟直通设备映射到本地物理服务器上的地址的访问,访问所述虚拟直通设备。
在第四方面的第一种实现方式中,所述第一获得单元包括:
接收子单元,用于接收访问虚拟直通设备指令;
第一查找子单元,用于根据所述接收子单元接收到的访问虚拟直通设备指令中包含的虚拟直通设备的虚拟地址,查找保存的虚拟直通设备分布信息;
第一获得子单元,用于根据所述第一查找子单元的结果获得所述虚拟直通设备所位于的远端物理服务器,并获得所述虚拟直通设备在所位于的远端物理服务器上的物理地址。
结合第四方面或者第四方面的第一种实现方式,在第四方面的第二种实现方式中,所述装置还包括:
判断单元,用于根据所述接收单元接收到的访问虚拟直通设备指令,判断所述虚拟直通设备是否需要写入数据到虚拟内存;
第三获得单元,用于如果所述判断单元的判断结果为是,获得所述虚拟内存所位于的远端物理服务器;
第四获得单元,用于如果所述判断单元的判断结果为是,在所述第三获得单元获得所述虚拟内存所位于的远端物理服务器后,获得所述虚拟内存在所位于的远端物理服务器上的物理地址;
第五获得单元,用于根据所述地址空间映射关系以及所述第四获得单元获得的所述虚拟内存在所位于的物理服务器上的物理地址,获得所述虚拟内存映射到所述虚拟直通设备所位于的物理服务器上的地址;
写入单元,用于将所述第五获得单元获得的所述虚拟内存映射到虚拟直通设备所位于的物理服务器上的地址写入所述虚拟直通设备映射到本地物理服务器上的地址,使所述虚拟直通设备将需要写入的数据写入所述虚拟内存。
结合第四方面的第二种实现方式,在第四方面的第三种实现方式中,所述本地物理服务器中还保存有远端物理服务器中的P2M表的地址,所述远端物理服务器中的P2M表包括位于该远端物理服务器中的虚拟内存的虚拟地址与该远端服务器的物理地址的对应关系;
所述第四获得单元包括:
第二获得子单元,用于根据所述地址空间映射关系以及所述虚拟内存所位于的远端物理服务器中的P2M表的地址,获得所述虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址;
访问子单元,用于通过对所述第二获得子单元获得的所述虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址的访问,访问所述虚拟内存所位于的远端物理服务器中的P2M表,在所述P2M表中查找所述虚拟内存的虚拟地址获得所述虚拟内存在所位于的物理服务器上的物理地址。
由此可见,本发明实施例具有如下有益效果:
本发明实施例非透明PCI桥建立各个物理服务器之间的地址空间映射关系,基于地址空间映射关系利用非透明PCI桥实现物理服务器之间直接互访彼此的地址空间,可以使物理服务器中运行的虚拟机直接访问远端物理服务器中虚拟设备所占用的物理设备,不需要各物理服务器之间基于互联网的通信即可实现分布式访问虚拟内存和分布式访问虚拟直通设备,提高了物理服务器间通信速度,从而提高了分布式虚拟化系统的性能。
附图说明
图1为本发明实施例提供的虚拟内存访问方法实施例一的流程图;
图2为本发明实施例中各个物理服务器间地址空间映射关系的示意图;
图3为本发明实施例提供的虚拟内存访问方法实施例二的流程图;
图4为本发明实施例提供的虚拟直通设备访问方法实施例一的流程图;
图5为本发明实施例提供的虚拟直通设备访问方法实施例二的流程图;
图6为本发明实施例提供的虚拟内存访问装置实施例的示意图;
图7为本发明实施例提供的虚拟内存访问装置实施例中第二获得单元的示意图;
图8为本发明实施例提供的本地服务器实施例一的示意图;
图9为本发明实施例提供的虚拟直通设备访问装置实施例一的示意图;
图10为本发明实施例提供的虚拟直通设备访问装置实施例二的示意图;
图11为本发明实施例提供的本地服务器实施例二的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明实施例提供的虚拟设备访问方法及装置,可以应用在分布式虚拟化系统中,分布式虚拟化系统通常包括多个物理服务器,在多个物理服务器中可以运行统一的分布式虚拟机监视器(DVMM,Distributed Virtual MachineMonitor),将多个物理服务器上的物理资源进行整合,统一分配给所模拟的虚拟机使用。在虚拟机启动后,在物理服务器上运行的DVMM会拦截虚拟机所发出的指令,如果指令访问分布在不同物理服务器上的虚拟硬件资源,则不同物理服务器之间需要跨网络通信合作模拟出指令的执行效果。但是,现有技术中物理服务器间信息、请求和数据的传递全部需要同时借助物理服务器中额外的通信模块,且物理服务器间信息、请求和数据的传递需要借助互联网络,而目前很多的互联网络速度较慢,导致物理服务器间通信速度慢,降低了分布式虚拟化系统的性能,为此本发明实施例提供了如下的虚拟设备访问方法及装置,分别从访问虚拟内存的实现以及访问虚拟直通设备的实现两方面进行说明。
参见图1所示,本发明实施例中所提供的虚拟内存访问方法实施例一,本发明实施例可以应用在本地物理服务器中,本地物理服务器通过本地非透明PCI桥与远端物理服务器的非透明PCI桥连接,非透明PCI桥用于将对远端物理服务器映射到本地物理服务器上的地址的访问转换为对远端物理服务器上的物理地址的访问;本地物理服务器中保存有利用非透明PCI桥建立的本地物理服务器与远端物理服务器之间的地址空间映射关系。
非透明PCI(Peripheral Component Interconnect,外设部件互连标准)桥(NTB,non-transparent bridge)用于实现两个物理服务器之间直接互访彼此的地址空间,NTB的两端可以分别连接一个物理服务器,并且通过对NTB的两端进行配置,可以分别把两个物理服务器的地址空间映射到对方的地址空间中,那么通过访问对方服务器所映射到本地服务器的一段地址就能够直接访问对方服务器的地址空间。
本地物理服务器可以保存有本地物理服务器与其他各个远端物理服务器之间的地址空间映射关系,为后续步骤本地物理服务器访问其他远端物理服务器的地址空间做好准备。需要注意的是,地址空间映射关系的建立方案并不唯一,只要满足地址空间映射关系建立之后,本地物理服务器可以保存有本地物理服务器与其他各个物理服务器之间的地址空间映射关系即可。
以三个物理服务器为例,具体说明建立各个物理服务器之间的地址空间映射关系的过程,基于NTB的物理服务器互联架构可以参见图2所示,其中物理服务器1、物理服务器2、物理服务器3分别通过NTB1、NTB2、NTB3与控制节点C(即地址空间映射配置节点)相连。由此物理服务器1、物理服务器2、物理服务器3可以分别实现与控制节点C之间的地址空间映射。间接地,物理服务器1、物理服务器2、物理服务器3两两之间也可以建立相互的地址空间映射。
具体的,每个NTB有两端,分别称为虚拟端(Virtual端)和连接端(Link端)。配置NTB过程就是其他远端物理服务器中的一段有用地址空间映射为本地物理服务器的一段地址空间,当本地服务器去访问这段地址空间时,NTB会自动翻译转而去访问其他远端物理服务器当中这段有用地址空间。即NTB用于将对远端物理服务器映射到本地物理服务器上的地址的访问转换为对远端物理服务器上的物理地址的访问。
例如,参见图2所示,将物理服务器1、物理服务器2、物理服务器3地址空间上的4G-16G通过NTB映射为控制节点C地址空间上的4G-16G,也即当物理服务器访问4G-16G的这段地址空间时,就会去访问控制节点C中4G-16G的地址空间;
将控制节点C地址空间上的4G-8G通过NTB映射为物理服务器1上的实用地址空间0G-4G,也即在控制节点C中访问4G-8G这段地址空间时,就会转去访问物理服务器1中0G-4G的地址空间;将控制节点C地址空间上的8G-12G通过NTB映射为物理服务器2上的实用地址空间0G-4G,也即在控制节点C中访问8G-12G这段地址空间时,就会转去访问物理服务器2中0G-4G的地址空间;将控制节点C地址空间上的12G-16G通过NTB映射为服务器3上的实用地址空间0G-4G,也即在控制节点C中访问12G-16G这段地址空间时,就会转去访问物理服务器3中0G-4G的地址空间;
经过以上配置过程,如果物理服务器1要访问物理服务器2上的实用地址空间0G-4G中的一个地址,只要在本地物理服务器访问8G-12G中的一个对应地址就可以实现。因为该访问会被NTB转去访问控制节点地址空间中的8G-12G中的一个对应地址,再进而被另一个NTB转去访问物理服务器2上的实用地址空间0G-4G中的一个对应地址。
因此,对于物理服务器1而言,物理服务器2和物理服务器3的实用地址空间在本地地址空间的映射基地址分别为8G和12G。同理,可以得到物理服务器2和物理服务器3中要保存的地址空间映射的基地址的信息。从而,各个物理服务器可以保存通过非透明PCI桥建立的本地物理服务器与其他各个物理服务器之间的地址空间映射关系,在实际应用中可以以各物理服务器在本地地址空间的映射基地址作为地址空间映射关系进行保存,其中基地址就是一个地址空间的起始地址。
可以用B(x,y)表示远端物理服务器x的地址空间映射到本地物理服务器y的地址空间时的映射基地址,也就是说如果要访问远端物理服务器x中的一个地址Address,等效于在本地物理服务器y中访问地址(Address+B(x,y))。继续以图2为例,B(3,1)可以表示远端物理服务器3的有用地址空间映射到本地物理服务器1中后的映射基地址,即B(3,1)=12G,如果要从本地物理服务器1中访问远端物理服务器3中地址为A位置的数据时,只需要在本地物理服务器1中访问(12G+A)这个地址即可。
则本发明实施例中所提供的虚拟内存访问方法实施例一可以包括以下步骤:
步骤101:本地物理服务器接收访问虚拟内存指令,根据访问虚拟内存指令中包含的虚拟地址获得虚拟内存所位于的远端物理服务器,并获得虚拟内存在所位于的远端物理服务器上的物理地址。
在本发明的一些实施例中,根据访问虚拟内存指令中包含的虚拟地址获得虚拟内存所位于的远端物理服务器的具体实现可以包括:
根据访问虚拟内存指令中包含的虚拟内存的虚拟地址,查找保存的虚拟内存分布信息,获得虚拟内存所位于的远端物理服务器。
物理服务器中的DVMM可以有一分布式内存虚拟化模块,当运行在本地物理服务器上的虚拟机需要访问一块虚拟内存时,本地物理服务器可以接收到访问虚拟内存指令,本地物理服务器的分布式内存虚拟化模块可以根据保存的虚拟内存分布信息判断出该虚拟内存所位于的物理服务器,例如该虚拟内存位于本地物理服务器或者处于其他哪个远端物理服务器。在本发明实施例中,具体针对虚拟内存位于远端物理服务器的情况,也即根据虚拟内存指令中包含的虚拟内存的虚拟地址,查找保存的虚拟内存分布信息,获得虚拟内存所位于的远端物理服务器。
又由于虚拟机实际是一个模拟出来的机器,它里面的每个物理地址都只有对应或者说映射到真实宿主机的地址才有实际意义。访问虚拟内存指令中会包括所要访问的虚拟内存的地址GPA(Guest Physical Address,客户机物理地址,即虚拟机伪物理地址),因此需要进一步获得所要访问的虚拟内存在所位于的远端物理服务器上的实际物理地址HPA(Host Physical Address,宿主机物理地址)。
步骤102:本地物理服务器根据地址空间映射关系以及虚拟内存在所位于的远端物理服务器上的物理地址,获得虚拟内存映射到本地物理服务器上的地址。
步骤103:本地物理服务器通过对虚拟内存映射到本地物理服务器上的地址的访问,访问虚拟内存。
如果该虚拟内存占用的是本地物理服务器的物理内存,则虚拟内存对应在所位于的物理服务器上的地址则为虚拟内存对应在本地物理服务器上的地址,虚拟机可以直接访问本地物理服务器的物理内存,在此不再赘述。
如果该虚拟内存占用的是其他远端物理服务器的物理内存,基于上述说明,可以用B(x,y)表示远端物理服务器x的地址空间映射到本地物理服务器y的地址空间时的映射基地址,则也就是说如果要访问远端物理服务器x中的一个地址Address,在可以在本地物理服务器y中访问地址(Address+B(x,y))。具体的,是由NTB将访问远端物理服务器映射到本地物理服务器上的地址(Address+B(x,y))转换为了访问远端物理服务器x中的地址Address。
这时,设本地物理服务器为物理服务器y,虚拟内存所位于的物理服务器为物理服务器x,虚拟内存对应在所位于的物理服务器上的地址为addr_HPA,则虚拟内存映射到本地物理服务器上的地址为addr_HPA+B(x,y)。如果要访问虚拟内存即需要访问物理服务器x中的一个地址addr_HPA,则可以等效访问虚拟内存映射到本地物理服务器上的地址,即直接访问物理服务器y中的地址addr_HPA+B(x,y)。访问本地物理服务器y中的地址addr_HPA+B(x,y)会被NTB转换为访问远端物理服务器x中的地址addr_HPA,这样就实现了在本地物理服务器访问位于远端物理服务器的虚拟内存。
由于分布式内存虚拟化需要牵扯到各个物理服务器上的实用地址空间,利用非透明PCI桥NTB,则可以把各个服务器上的实用地址空间映射到本地地址空间当中,本地物理服务器上的分布式内存虚拟化模块就可以处理客户机物理地址到所有其他物理服务器的实用地址空间的映射。
这样,本实施例中非透明PCI桥建立各个物理服务器之间的地址空间映射关系,基于地址空间映射关系利用非透明PCI桥实现物理服务器之间直接互访彼此的地址空间,可以使物理服务器中运行的虚拟机直接访问远端物理服务器中虚拟内存所占用的物理内存,不需要各物理服务器之间基于互联网的通信即可实现分布式内存虚拟化,提高了物理服务器间通信速度,从而提高了分布式内存虚拟化系统的性能。
参见图3所示,是本发明实施例中所提供的虚拟内存访问方法实施例二,本地物理服务器中还保存有远端物理服务器中的P2M表的地址,远端物理服务器中的P2M表包括位于该远端物理服务器中的虚拟内存的虚拟地址与该远端服务器的物理地址的对应关系;
P2M(Pseudo-physical Address to Machine Physical Address,客户机伪物理地址到宿主机物理地址映射)表可以保存在物理服务器的分布式内存虚拟化模块当中,P2M表保存的就是虚拟内存的地址即客户机物理地址GPA到所位于的物理服务器地址HPA的映射关系,P2M表的作用是虚拟机指令中的地址是访问客户机物理地址GPA,而虚拟化系统需要借助P2M表找到这个客户机物理地址GPA对应在实际物理服务器中真正的位置(宿主机物理地址HPA)。
对于一个物理服务器来说,任一物理服务器中的P2M表的地址均是可知的,这里的可知表示物理服务器x中需要知道另一个物理服务器y的P2M表在物理服务器y的地址空间中的地址,例如,可以通过网络通讯接收各个物理服务器中的P2M表的地址,或者每个物理服务器的P2M表均固定保存的某个地址位置。
则本地物理服务器获得虚拟内存在所位于的远端物理服务器上的物理地址的具体实现过程可以包括以下步骤:
步骤301:本地物理服务器根据地址空间映射关系以及虚拟内存所位于的远端物理服务器中的P2M表的地址,获得虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址。
基于前述说明,设本地物理服务器为物理服务器y,虚拟内存所位于的远端物理服务器为物理服务器x,虚拟内存所位于的物理服务器中的P2M表地址addr_P2M,则虚拟内存所位于的物理服务器中的P2M表映射到本地物理服务器的地址为addr_P2M+B(x,y)。
步骤302:通过对虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址的访问,访问虚拟内存所位于的远端物理服务器中的P2M表,在P2M表中查找虚拟内存的虚拟地址获得虚拟内存在所位于的物理服务器上的物理地址。
访问虚拟内存所位于的物理服务器中的P2M表映射到本地物理服务器的地址addr_P2M+B(x,y),则由NTB转换为访问虚拟内存所位于的物理服务器中的P2M表的地址addr_P2M,这样可以在虚拟内存所位于的物理服务器的P2M表中查找该虚拟内存的GPA对应的HPA,即获得虚拟内存对应在所位于的物理服务器上的物理地址。
进一步就可以获得虚拟内存映射到本地物理服务器上的地址,访问虚拟内存映射到本地物理服务器上的地址,NTB将访问虚拟内存映射到本地物理服务器上的地址转换为访问虚拟内存在所位于的远端物理服务器上的物理地址,就可以实现访问该虚拟内存。
在物理服务器上运行的虚拟机访问虚拟内存的模拟的基本原理是根据截获的GPA在P2M表中查找对应HPA,最后去访问HPA,以达到模拟虚拟机访问虚拟内存的效果,下面再以一个具体的例子说明一下分布式内存虚拟化的实现过程。
假设本地物理服务器为物理服务器y,虚拟内存所位于的远端物理服务器为物理服务器x,远端物理服务器x的地址空间映射到本地物理服务器y的地址空间上时的基地址为B(x,y),每个P2M表在各自服务器中的基地址为addr_P2M,P2M表的每个表项的长度为len_item,截获的内存访问指令中的目标GPA即所要访问的虚拟内存的虚拟地址为addr_GPA,该addr_GPA在P2M表对应的宿主机物理地址即虚拟内存对应在所位于的物理服务器上的物理地址为addr_HPA。
分布式内存虚拟化的实现过程为:
获取远端物理服务器x的P2M表映射到本地物理服务器y的地址空间上时的地址B(x,y)+addr_P2M;在本地物理服务器y中去查找这个P2M表中的GPA值为addr_GPA的表项,并获取该表项中的HPA值,具体的,可以通过循环在本地物理服务器y中去访问B(x,y)+addr_P2M+i*len_item这个地址来实现(i=0,1,2,3…),当i不断一次增加1的时候,访问这个地址就是去遍历远端物理服务器x上P2M表上的每个表项,在访问P2M表中每个表项时,如果发现表项中的GPA值为addr_GPA,那么就获取表项中的HPA值,即addr_HPA;当获取了addr_HPA,也就是知道了要访问的虚拟内存在远端物理服务器x的地址空间中的物理地址,最后只需在本地物理服务器y中访问B(x,y)+addr_HPA即访问在远端物理服务器x中的虚拟内存映射在本地物理服务器y中的地址,NTB会将对B(x,y)+addr_HPA的访问转换为在远端物理服务器x中对地址addr_HPA的访问,完成对该虚拟内存的访问。
也就是说P2M表保存了客户机物理地址到对应的宿主机地址的转换映射信息,NTB则负责宿主机地址空间到其他各个物理服务器的实用地址空间的转换,两者协同起来,可以实现客户机物理地址到各个服务器的真实地址空间中的地址的转换映射。
参见图4所示,是本发明实施例中所提供的虚拟直通设备访问方法实施例一,本发明实施例可以应用在本地物理服务器中,本地物理服务器通过本地非透明PCI桥与远端物理服务器的非透明PCI桥连接,非透明PCI桥用于将对远端物理服务器映射到本地物理服务器上的地址的访问转换为对远端物理服务器上的物理地址的访问;本地物理服务器中保存有利用非透明PCI桥建立的本地物理服务器与远端物理服务器之间的地址空间映射关系。
在虚拟直通设备访问中,同样需要预先通过非透明PCI桥建立的本地物理服务器与其他各个物理服务器之间的地址空间映射关系,与虚拟内存访问类似,在此不再赘述。虚拟直通设备(VMDC,Virtual Machine Direct ConnectDevice),虚拟直通设备虽然是为虚拟机模拟的,但是当虚拟机要使用这个虚拟直通设备时(访问这个虚拟直通设备),这个访问操作会被直接转到真实的物理设备上,因此这样的虚拟IO设备被称为虚拟直通设备。
则本发明实施例中所提供的虚拟直通设备访问方法实施例一可以包括以下步骤:
步骤401:本地物理服务器接收访问虚拟直通设备指令,根据访问虚拟直通设备指令中包含的虚拟地址获得虚拟直通设备所位于的远端物理服务器,并获得虚拟直通设备在所位于的远端物理服务器上的物理地址。
在本发明的一些实施例中,本地物理服务器根据访问虚拟直通设备指令中包含的虚拟地址获得虚拟直通设备所位于的远端物理服务器,并获得虚拟直通设备在所位于的远端物理服务器上的物理地址的具体实现可以包括:
本地物理服务器根据访问虚拟直通设备指令中包含的虚拟直通设备的虚拟地址,查找保存的虚拟直通设备分布信息,获得虚拟直通设备所位于的远端物理服务器,并获得虚拟直通设备在所位于的远端物理服务器上的物理地址。
在一个物理服务器里全部直通设备需要接受物理服务器或者说是物理服务器中的处理器的查询和控制,因此直通设备在一个物理服务器中需要有相互区别的地址,可以称为统一编址。这种在同一个物理服务器中统一编址的地址有两类:PORT地址(端口地址)和MMIO(Memory mapping I/O,内存映射I/O)地址。
在本实施例中,物理服务器中的DVMM可以有一分布式直通设备虚拟化模块,当运行在本地物理服务器上的虚拟机需要访问直通设备,本地物理服务器可以接收到访问虚拟直通设备指令,分布式直通设备虚拟化模块会根据所截获访问虚拟直通设备指令中所要访问的虚拟Port地址或者虚拟MMIO地址和保存的该虚拟机的虚拟直通设备分布信息,判断出该虚拟直通设备所位于的物理服务器,并找出该虚拟Port地址或者虚拟MMIO地址在该直通设备所位于的服务器中映射到得真实物理Port地址或MMIO地址。
步骤402:本地物理服务器根据地址空间映射关系以及虚拟直通设备在所位于的远端物理服务器上的物理地址,获得虚拟直通设备映射到本地物理服务器上的地址。
步骤403:本地物理服务器通过对虚拟直通设备映射到本地物理服务器上的地址的访问,访问虚拟直通设备。
如果该虚拟直通设备占用的是本地物理服务器的物理直通设备,则虚拟直通设备对应在所位于的物理服务器上的地址则为虚拟直通设备对应在本地物理服务器上的地址,虚拟机可以直接访问本地物理服务器的物理直通设备,在此不再赘述。
如果该虚拟直通设备占用的是其他物理服务器的物理直通设备,基于上述实施例中的说明,可以用B(x,y)表示远端物理服务器x的地址空间映射到本地物理服务器y的地址空间时的映射基地址,也就是说如果要访问远端物理服务器x中的一个地址Address,等效于在本地物理服务器y中访问地址(Address+B(x,y))。
这时,设本地物理服务器为物理服务器y,虚拟直通设备所位于的远端物理服务器为物理服务器x,如果要访问虚拟直通设备即需要访问物理服务器x中的真实Port地址或MMIO地址,则可以等效访问虚拟直通设备映射到本地物理服务器上的地址,即利用非透明PCI桥将访问物理服务器y中的B(x,y)+地址真实Port地址或MMIO地址,转换为访问物理服务器x中的真实Port地址或MMIO地址,完成对远端物理服务器x中的虚拟直通设备的访问。
由于分布式直通设备虚拟化需要牵扯到各个物理服务器上的实用地址空间,利用非透明PCI桥NTB,则可以把各个服务器上的实用地址空间映射到本地地址空间当中,本地物理服务器上的分布式直通设备虚拟化模块就可以处理客户机物理地址到所有其他物理服务器的实用地址空间的映射。
这样,本实施例中非透明PCI桥建立各个物理服务器之间的地址空间映射关系,基于地址空间映射关系利用非透明PCI桥实现物理服务器之间直接互访彼此的地址空间,可以使物理服务器中运行的虚拟机直接访问远端物理服务器中虚拟直通设备所占用的物理直通设备,不需要各物理服务器之间基于互联网的通信即可实现分布式直通设备虚拟化,提高了物理服务器间通信速度,从而提高了分布式直通设备虚拟化系统的性能。
分布式直通设备虚拟化相较于分布式内存虚拟化会有更复杂的情况,具体对虚拟直通设备的访问需要解决两方面问题,第一,当访问虚拟直通设备指令所要访问的虚拟直通设备不位于本地物理服务器时,如何定位并访问该虚拟直通设备所占用的物理直通设备,在虚拟直通设备访问方法实施例一中是对该问题的解决方案;第二,当访问虚拟直通设备指令为一个写设备指令,且该访问虚拟直通设备指令中包括虚拟直通设备需要进一步写入数据到虚拟内存,则该指令中可以包括虚拟直通设备进一步使用的虚拟内存的客户机物理地址GPA,当虚拟直通设备与虚拟内存又处于不同物理服务器时,应该如何正确写该虚拟直通设备所占用物理直通设备,为此,本发明实施例进一步提供了虚拟直通设备访问方法实施例二以解决该问题。
具体的,在本发明的一些实施例中,虚拟直通设备的访问方法还可以包括:
本地物理服务器根据访问虚拟直通设备指令,判断虚拟直通设备是否需要写入数据到虚拟内存,如果是,获得虚拟内存所位于的远端物理服务器,并获得虚拟内存在所位于的远端物理服务器上的物理地址;
本地物理服务器根据地址空间映射关系以及虚拟内存在所位于的物理服务器上的物理地址,获得虚拟内存映射到虚拟直通设备所位于的物理服务器上的地址;
本地物理服务器将虚拟内存映射到虚拟直通设备所位于的物理服务器上的地址写入虚拟直通设备映射到本地物理服务器上的地址,使虚拟直通设备将需要写入的数据写入虚拟内存。
其中,与访问虚拟内存类似,在本发明的一些实施例中,获得虚拟内存所位于的远端物理服务器的具体实现可以包括:
本地物理服务器根据访问虚拟直通设备指令中包含的虚拟内存的虚拟地址,查找保存的虚拟内存分布信息,获得虚拟内存所位于的物理服务器。
在本发明的一些实施例中,本地物理服务器中还保存有远端物理服务器中的P2M表的地址,远端物理服务器中的P2M表包括位于该远端物理服务器中的虚拟内存的虚拟地址与该远端服务器的物理地址的对应关系;则获得虚拟内存在所位于的远端物理服务器上的物理地址的具体实现可以包括:
本地物理服务器根据地址空间映射关系以及虚拟内存所位于的远端物理服务器中的P2M表的地址,获得虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址;
本地物理服务器通过对虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址的访问,访问虚拟内存所位于的远端物理服务器中的P2M表,在P2M表中查找虚拟内存的虚拟地址获得虚拟内存在所位于的物理服务器上的物理地址。
参见图5所示,是本发明实施例中所提供的虚拟直通设备访问方法实施例二,本地物理服务器通过本地非透明PCI桥与远端物理服务器的非透明PCI桥连接,非透明PCI桥用于将对远端物理服务器映射到本地物理服务器上的地址的访问转换为对远端物理服务器上的物理地址的访问;本地物理服务器中保存有利用非透明PCI桥建立的本地物理服务器与远端物理服务器之间的地址空间映射关系;本地物理服务器中还保存有远端物理服务器中的P2M表的地址,远端物理服务器中的P2M表包括位于该远端物理服务器中的虚拟内存的虚拟地址与该远端服务器的物理地址的对应关系。
则虚拟直通设备访问方法实施例二可以包括以下步骤:
步骤501:本地物理服务器接收访问虚拟直通设备指令,根据访问虚拟直通设备指令中包含的虚拟地址获得虚拟直通设备所位于的远端物理服务器,并获得虚拟直通设备在所位于的远端物理服务器上的物理地址。
步骤502:本地物理服务器根据地址空间映射关系以及虚拟直通设备在所位于的远端物理服务器上的物理地址,获得虚拟直通设备映射到本地物理服务器上的地址。
步骤503:本地物理服务器根据访问虚拟直通设备指令,判断虚拟直通设备是否需要写入数据到虚拟内存,如果是,进入步骤504,如果否,进入步骤509。
步骤504:本地物理服务器根据访问虚拟直通设备指令中包含的虚拟内存的虚拟地址,查找保存的虚拟内存分布信息,获得虚拟内存所位于的物理服务器。
步骤505:本地物理服务器根据地址空间映射关系以及虚拟内存所位于的远端物理服务器中的P2M表的地址,获得虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址。
步骤506:本地物理服务器通过对虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址的访问,访问虚拟内存所位于的远端物理服务器中的P2M表,在P2M表中查找虚拟内存的虚拟地址获得虚拟内存在所位于的物理服务器上的物理地址。
步骤507:本地物理服务器根据地址空间映射关系以及虚拟内存在所位于的物理服务器上的物理地址,获得虚拟内存映射到虚拟直通设备所位于的物理服务器上的地址。
步骤508:本地物理服务器将虚拟内存映射到虚拟直通设备所位于的物理服务器上的地址写入虚拟直通设备映射到本地物理服务器上的地址,使虚拟直通设备将需要写入的数据写入虚拟内存。
步骤509:本地物理服务器通过对虚拟直通设备映射到本地物理服务器上的地址的访问,访问虚拟直通设备。
也即假设本地物理服务器为物理服务器i,虚拟直通设备和虚拟内存分别处于物理服务器d和物理服务器m,首先,物理服务器i中的分布式直通设备虚拟化模块会判断出虚拟直通设备所位于的物理服务器是物理服务器d,以及虚拟直通设备在物理服务器d中的地址;还可以根据访问虚拟直通设备指令中包含的表示接下来虚拟直通设备可以使用的虚拟内存的GPA,和虚拟内存分布信息,判断出该虚拟内存所在服务器是物理服务器m;然后根据各物理服务器间地址空间映射关系和已经预知的P2M表在物理服务器m中的地址,计算出该P2M表在物理服务器i中的映射地址B(m,i)+P2M表的地址,并直接利用NTB去查找该P2M表,获取该GPA所映射到得HPA也即虚拟内存对应在所位于的物理服务器上的地址;分布式直通设备虚拟化模块会根据各节点间地址空间映射关系和该HPA,计算出虚拟内存在物理服务器d中的映射地址,把该映射地址去写入虚拟直通设备。这样,以后当虚拟直通设备需要把数据写入虚拟机虚拟内存时,就可以直接根据这个地址,利用NTB将数据写到虚拟内存中供虚拟机使用。从而实现当访问虚拟直通设备指令为一个写设备指令,且该访问虚拟直通设备指令中包括虚拟直通设备需要进一步写入数据到虚拟内存时的分布式虚拟化方案。
参见图6所示,本发明实施例中还提供一种虚拟内存访问装置实施例,可以应用在本地物理服务器中,本地物理服务器通过本地非透明PCI桥与远端物理服务器的非透明PCI桥连接,非透明PCI桥用于将对远端物理服务器映射到本地物理服务器上的地址的访问转换为对远端物理服务器上的物理地址的访问;本地物理服务器中保存有利用非透明PCI桥建立的本地物理服务器与远端物理服务器之间的地址空间映射关系。
虚拟内存访问装置实施例可以包括:
接收单元601,用于接收访问虚拟内存指令。
第一获得单元602,用于根据接收单元接收到的访问虚拟内存指令包含的虚拟地址获得虚拟内存所位于的远端物理服务器。
第二获得单元603,用于在第一获得单元获得虚拟内存所位于的远端物理服务器后,获得虚拟内存在所位于的远端物理服务器上的物理地址。
第三获得单元604,用于根据地址空间映射关系以及第二获得单元获得的虚拟内存在所位于的远端物理服务器上的物理地址,获得虚拟内存映射到本地物理服务器上的地址。
访问单元605,用于通过对第三获得单元获得的虚拟内存映射到本地物理服务器上的地址的访问,访问虚拟内存。
其中,在本发明的一些实施例中,第一获得单元可以具体用于:
根据访问虚拟内存指令中包含的虚拟内存的虚拟地址,查找保存的虚拟内存分布信息,获得虚拟内存所位于的远端物理服务器。
参见图7所示,在本发明的一些实施例中,本地物理服务器中还保存有远端物理服务器中的P2M表的地址,远端物理服务器中的P2M表包括位于该远端物理服务器中的虚拟内存的虚拟地址与该远端服务器的物理地址的对应关系。
第二获得单元603可以包括:
第一获得子单元701,用于根据地址空间映射关系以及虚拟内存所位于的远端物理服务器中的P2M表的地址,获得虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址;
访问子单元702,用于通过对第一获得子单元获得的虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址的访问,访问虚拟内存所位于的远端物理服务器中的P2M表,在P2M表中查找虚拟内存的虚拟地址获得虚拟内存在所位于的物理服务器上的物理地址。
本实施例中利用非透明PCI桥建立各个物理服务器之间的地址空间映射关系,基于地址空间映射关系利用非透明PCI桥实现物理服务器之间直接互访彼此的地址空间,可以使物理服务器中运行的虚拟机直接访问远端物理服务器中虚拟内存所占用的物理内存,不需要各物理服务器之间基于互联网的通信即可实现分布式内存虚拟化,提高了物理服务器间通信速度,从而提高了分布式内存虚拟化系统的性能。
上面从模块化功能实体的角度对本发明实施例中的虚拟内存访问装置进行描述,下面从硬件处理的角度对本发明实施例中的虚拟内存访问装置进行描述,参见图8所示,本发明实施例中虚拟内存访问装置可以应用在本地物理服务器中,本地物理服务器通过本地非透明PCI桥与远端物理服务器的非透明PCI桥连接,非透明PCI桥用于将对远端物理服务器映射到本地物理服务器上的地址的访问转换为对远端物理服务器上的物理地址的访问。在本发明的实施例中,本地服务器实施例一可以包括:
输入装置801、输出装置802、处理器803和存储器804(其中从终端800中的处理器801的数量可以一个或多个,图8中以一个处理器801为例)。在本发明的一些实施例中,输入装置801、输出装置802、处理器803和存储器804可通过总线或其它方式连接,其中,图8中以通过总线连接为例。
其中,通过调用存储器804存储的操作指令,存储器804中保存有利用非透明PCI桥建立的本地物理服务器与远端物理服务器之间的地址空间映射关系;存储器804中还保存有远端物理服务器中的P2M表的地址,远端物理服务器中的P2M表包括位于该远端物理服务器中的虚拟内存的虚拟地址与该远端服务器的物理地址的对应关系。处理器803用于执行如下步骤:
接收访问虚拟内存指令,根据访问虚拟内存指令中包含的虚拟地址获得虚拟内存所位于的远端物理服务器,并获得虚拟内存在所位于的远端物理服务器上的物理地址;
根据地址空间映射关系以及虚拟内存在所位于的远端物理服务器上的物理地址,获得虚拟内存映射到本地物理服务器上的地址;
通过对虚拟内存映射到本地物理服务器上的地址的访问,访问虚拟内存。
处理器803还用于执行根据访问虚拟内存指令中包含的虚拟内存的虚拟地址,查找保存的虚拟内存分布信息,获得虚拟内存所位于的远端物理服务器。
处理器803还用于执行根据地址空间映射关系以及虚拟内存所位于的远端物理服务器中的P2M表的地址,获得虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址;
通过对虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址的访问,访问虚拟内存所位于的远端物理服务器中的P2M表,在P2M表中查找虚拟内存的虚拟地址获得虚拟内存在所位于的物理服务器上的物理地址。
本实施例中,通过非透明PCI桥建立各个物理服务器之间的地址空间映射关系,处理器803基于地址空间映射关系利用非透明PCI桥实现物理服务器之间直接互访彼此的地址空间,可以使物理服务器中运行的虚拟机直接访问远端物理服务器中虚拟内存所占用的物理内存,不需要各物理服务器之间基于互联网的通信即可实现分布式内存虚拟化,提高了物理服务器间通信速度,从而提高了分布式内存虚拟化系统的性能。
参见图9所示,是本发明实施例中提供的一种虚拟直通设备访问装置实施例一,可以应用在本地物理服务器中,本地物理服务器通过本地非透明PCI桥与远端物理服务器的非透明PCI桥连接,非透明PCI桥用于将对远端物理服务器映射到本地物理服务器上的地址的访问转换为对远端物理服务器上的物理地址的访问;本地物理服务器中保存有利用非透明PCI桥建立的本地物理服务器与远端物理服务器之间的地址空间映射关系。
虚拟直通设备访问装置实施例一可以包括:
接收单元901,用于接收访问虚拟直通设备指令。
第一获得单元902,用于根据访问虚拟直通设备指令中包含的虚拟地址获得虚拟直通设备所位于的远端物理服务器,并获得虚拟直通设备在所位于的远端物理服务器上的物理地址。
第二获得单元903,用于根据地址空间映射关系以及第一获得单元获得的虚拟直通设备在所位于的远端物理服务器上的物理地址,获得虚拟直通设备映射到本地物理服务器上的地址。
访问单元904,用于通过对第二获得单元获得的虚拟直通设备映射到本地物理服务器上的地址的访问,访问虚拟直通设备。
其中,在本发明的一些实施例中,第一获得单元902可以包括:
接收子单元,用于接收访问虚拟直通设备指令;
第一查找子单元,用于根据接收子单元接收到的访问虚拟直通设备指令中包含的虚拟直通设备的虚拟地址,查找保存的虚拟直通设备分布信息;
第一获得子单元,用于根据第一查找子单元的结果获得虚拟直通设备所位于的远端物理服务器,并获得虚拟直通设备在所位于的远端物理服务器上的物理地址。
也即第一获得单元可以具体用于根据访问虚拟直通设备指令中包含的虚拟直通设备的虚拟地址,查找保存的虚拟直通设备分布信息,获得虚拟直通设备所位于的远端物理服务器,并获得虚拟直通设备在所位于的远端物理服务器上的物理地址。
参见图10所示,是本发明实施例中提供的虚拟直通设备访问装置实施例二,可以应用在本地物理服务器中,本地物理服务器通过本地非透明PCI桥与远端物理服务器的非透明PCI桥连接,非透明PCI桥用于将对远端物理服务器映射到本地物理服务器上的地址的访问转换为对远端物理服务器上的物理地址的访问;本地物理服务器中保存有利用非透明PCI桥建立的本地物理服务器与远端物理服务器之间的地址空间映射关系。
则虚拟直通设备访问装置实施例二可以包括:
接收单元901,用于接收访问虚拟直通设备指令。
第一获得单元902,用于根据访问虚拟直通设备指令中包含的虚拟地址获得虚拟直通设备所位于的远端物理服务器,并获得虚拟直通设备在所位于的远端物理服务器上的物理地址。
第二获得单元903,用于根据地址空间映射关系以及第一获得单元获得的虚拟直通设备在所位于的远端物理服务器上的物理地址,获得虚拟直通设备映射到本地物理服务器上的地址。
判断单元1001,用于根据接收单元接收到的访问虚拟直通设备指令,判断虚拟直通设备是否需要写入数据到虚拟内存。
第三获得单元1002,用于如果判断单元的判断结果为是,获得虚拟内存所位于的远端物理服务器。
第四获得单元1003,用于如果判断单元的判断结果为是,在第三获得单元获得虚拟内存所位于的远端物理服务器后,获得虚拟内存在所位于的远端物理服务器上的物理地址。
第五获得单元1004,用于根据地址空间映射关系以及第四获得单元获得的虚拟内存在所位于的物理服务器上的物理地址,获得虚拟内存映射到虚拟直通设备所位于的物理服务器上的地址。
写入单元1005,用于将第五获得单元获得的虚拟内存映射到虚拟直通设备所位于的物理服务器上的地址写入虚拟直通设备映射到本地物理服务器上的地址,使虚拟直通设备将需要写入的数据写入虚拟内存。
访问单元904,用于通过对第二获得单元获得的虚拟直通设备映射到本地物理服务器上的地址的访问,访问虚拟直通设备。
其中,在本发明的一些实施例中,第三获得单元1002可以具体用于:根据访问虚拟直通设备指令中包含的虚拟内存的虚拟地址,查找保存的虚拟内存分布信息,获得虚拟内存所位于的物理服务器。
在本发明的一些实施例中,本地物理服务器中还保存有远端物理服务器中的P2M表的地址,远端物理服务器中的P2M表包括位于该远端物理服务器中的虚拟内存的虚拟地址与该远端服务器的物理地址的对应关系;则第四获得单元1004可以包括:
第二获得子单元,用于根据地址空间映射关系以及虚拟内存所位于的远端物理服务器中的P2M表的地址,获得虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址;
访问子单元,用于通过对第二获得子单元获得的虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址的访问,访问虚拟内存所位于的远端物理服务器中的P2M表,在P2M表中查找虚拟内存的虚拟地址获得虚拟内存在所位于的物理服务器上的物理地址。
这样,本实施例中利用非透明PCI桥建立各个物理服务器之间的地址空间映射关系,基于地址空间映射关系利用非透明PCI桥实现物理服务器之间直接互访彼此的地址空间,可以使物理服务器中运行的虚拟机直接访问远端物理服务器中虚拟直通设备所占用的物理直通设备,不需要各物理服务器之间基于互联网的通信即可实现分布式直通设备虚拟化,提高了物理服务器间通信速度,从而提高了分布式直通设备虚拟化系统的性能。
上面从模块化功能实体的角度对本发明实施例中的虚拟直通设备访问装置进行描述,下面从硬件处理的角度对本发明实施例中的虚拟直通设备访问装置进行描述,本发明实施例虚拟直通设备访问装置可以应用在本地物理服务器中,本地物理服务器通过本地非透明PCI桥与远端物理服务器的非透明PCI桥连接,非透明PCI桥用于将对远端物理服务器映射到本地物理服务器上的地址的访问转换为对远端物理服务器上的物理地址的访问。参见图11所示,本发明实施例中本地服务器的实施例二可以包括:
输入装置1101、输出装置1102、处理器1103和存储器1104(其中从终端1100中的处理器1101的数量可以一个或多个,图11中以一个处理器1101为例)。在本发明的一些实施例中,输入装置1101、输出装置1102、处理器1103和存储器1104可通过总线或其它方式连接,其中,图11中以通过总线连接为例。
其中,通过调用存储器1104存储的操作指令,存储器1104中保存有利用非透明PCI桥建立的本地物理服务器与远端物理服务器之间的地址空间映射关系;存储器1104中还保存有远端物理服务器中的P2M表的地址,远端物理服务器中的P2M表包括位于该远端物理服务器中的虚拟内存的虚拟地址与该远端服务器的物理地址的对应关系;处理器1103用于执行如下步骤:
接收访问虚拟直通设备指令,根据访问虚拟直通设备指令中包含的虚拟地址获得虚拟直通设备所位于的远端物理服务器,并获得虚拟直通设备在所位于的远端物理服务器上的物理地址;
根据地址空间映射关系以及虚拟直通设备在所位于的远端物理服务器上的物理地址,获得虚拟直通设备映射到本地物理服务器上的地址;
通过对虚拟直通设备映射到本地物理服务器上的地址的访问,访问虚拟直通设备。
处理器1103还用于执行根据访问虚拟直通设备指令中包含的虚拟直通设备的虚拟地址,查找保存的虚拟直通设备分布信息,获得虚拟直通设备所位于的远端物理服务器,并获得虚拟直通设备在所位于的远端物理服务器上的物理地址。
处理器1103还用于执行根据访问虚拟直通设备指令,判断虚拟直通设备是否需要写入数据到虚拟内存,如果是,获得虚拟内存所位于的远端物理服务器,并获得虚拟内存在所位于的远端物理服务器上的物理地址;
根据地址空间映射关系以及虚拟内存在所位于的物理服务器上的物理地址,获得虚拟内存映射到虚拟直通设备所位于的物理服务器上的地址;
将虚拟内存映射到虚拟直通设备所位于的物理服务器上的地址写入虚拟直通设备映射到本地物理服务器上的地址,使虚拟直通设备将需要写入的数据写入虚拟内存。
处理器1103还用于执行根据访问虚拟直通设备指令中包含的虚拟内存的虚拟地址,查找保存的虚拟内存分布信息,获得虚拟内存所位于的物理服务器。
处理器1103还用于执行根据地址空间映射关系以及虚拟内存所位于的远端物理服务器中的P2M表的地址,获得虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址;
通过对虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址的访问,访问虚拟内存所位于的远端物理服务器中的P2M表,在P2M表中查找虚拟内存的虚拟地址获得虚拟内存在所位于的物理服务器上的物理地址。
本实施例中利用非透明PCI桥建立各个物理服务器之间的地址空间映射关系,处理器1103基于地址空间映射关系利用非透明PCI桥实现物理服务器之间直接互访彼此的地址空间,可以使物理服务器中运行的虚拟机直接访问远端物理服务器中虚拟直通设备所占用的物理直通设备,不需要各物理服务器之间基于互联网的通信即可实现分布式直通设备虚拟化,提高了物理服务器间通信速度,从而提高了分布式直通设备虚拟化系统的性能。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (14)

1.一种虚拟内存访问方法,应用在本地物理服务器中,其特征在于,所述本地物理服务器通过本地非透明PCI桥与远端物理服务器的非透明PCI桥连接,所述非透明PCI桥用于将对远端物理服务器映射到本地物理服务器上的地址的访问转换为对远端物理服务器上的物理地址的访问;所述本地物理服务器中保存有利用所述非透明PCI桥建立的所述本地物理服务器与所述远端物理服务器之间的地址空间映射关系;所述方法包括:
接收访问虚拟内存指令,根据所述访问虚拟内存指令中包含的虚拟地址获得所述虚拟内存所位于的远端物理服务器,并获得所述虚拟内存在所位于的远端物理服务器上的物理地址;
根据所述地址空间映射关系以及所述虚拟内存在所位于的远端物理服务器上的物理地址,获得所述虚拟内存映射到本地物理服务器上的地址;
通过对所述虚拟内存映射到本地物理服务器上的地址的访问,访问所述虚拟内存。
2.根据权利要求1所述的方法,其特征在于,所述根据所述访问虚拟内存指令中包含的虚拟地址获得所述虚拟内存所位于的远端物理服务器,包括:
根据所述访问虚拟内存指令中包含的虚拟内存的虚拟地址,查找保存的虚拟内存分布信息,获得所述虚拟内存所位于的远端物理服务器。
3.根据权利要求1所述的方法,其特征在于,所述本地物理服务器中还保存有远端物理服务器中的P2M表的地址,所述远端物理服务器中的P2M表包括位于该远端物理服务器中的虚拟内存的虚拟地址与该远端服务器的物理地址的对应关系;
所述获得所述虚拟内存在所位于的远端物理服务器上的物理地址,包括:
根据所述地址空间映射关系以及所述虚拟内存所位于的远端物理服务器中的P2M表的地址,获得所述虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址;
通过对所述虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址的访问,访问所述虚拟内存所位于的远端物理服务器中的P2M表,在所述P2M表中查找所述虚拟内存的虚拟地址获得所述虚拟内存在所位于的物理服务器上的物理地址。
4.一种虚拟直通设备访问方法,应用在本地物理服务器中,其特征在于,所述本地物理服务器通过本地非透明PCI桥与远端物理服务器的非透明PCI桥连接,所述非透明PCI桥用于将对远端物理服务器映射到本地物理服务器上的地址的访问转换为对远端物理服务器上的物理地址的访问;所述本地物理服务器中保存有利用所述非透明PCI桥建立的所述本地物理服务器与所述远端物理服务器之间的地址空间映射关系;所述方法包括:
接收访问虚拟直通设备指令,根据所述访问虚拟直通设备指令中包含的虚拟地址获得所述虚拟直通设备所位于的远端物理服务器,并获得所述虚拟直通设备在所位于的远端物理服务器上的物理地址;
根据所述地址空间映射关系以及所述虚拟直通设备在所位于的远端物理服务器上的物理地址,获得所述虚拟直通设备映射到本地物理服务器上的地址;
通过对所述虚拟直通设备映射到本地物理服务器上的地址的访问,访问所述虚拟直通设备。
5.根据权利要求4所述的方法,其特征在于,所述根据所述访问虚拟直通设备指令中包含的虚拟地址获得所述虚拟直通设备所位于的远端物理服务器,并获得所述虚拟直通设备在所位于的远端物理服务器上的物理地址,包括:
根据所述访问虚拟直通设备指令中包含的虚拟直通设备的虚拟地址,查找保存的虚拟直通设备分布信息,获得所述虚拟直通设备所位于的远端物理服务器,并获得所述虚拟直通设备在所位于的远端物理服务器上的物理地址。
6.根据权利要求4或5所述的方法,其特征在于,所述方法还包括:
根据所述访问虚拟直通设备指令,判断所述虚拟直通设备是否需要写入数据到虚拟内存,如果是,获得所述虚拟内存所位于的远端物理服务器,并获得所述虚拟内存在所位于的远端物理服务器上的物理地址;
根据所述地址空间映射关系以及所述虚拟内存在所位于的物理服务器上的物理地址,获得所述虚拟内存映射到所述虚拟直通设备所位于的物理服务器上的地址;
将所述虚拟内存映射到虚拟直通设备所位于的物理服务器上的地址写入所述虚拟直通设备映射到本地物理服务器上的地址,使所述虚拟直通设备将需要写入的数据写入所述虚拟内存。
7.根据权利要求6所述的方法,其特征在于,所述获得所述虚拟内存所位于的远端物理服务器,包括:
根据所述访问虚拟直通设备指令中包含的虚拟内存的虚拟地址,查找保存的虚拟内存分布信息,获得所述虚拟内存所位于的物理服务器。
8.根据权利要求6所述的方法,其特征在于,所述本地物理服务器中还保存有远端物理服务器中的P2M表的地址,所述远端物理服务器中的P2M表包括位于该远端物理服务器中的虚拟内存的虚拟地址与该远端服务器的物理地址的对应关系;
所述获得所述虚拟内存在所位于的远端物理服务器上的物理地址,包括:
根据所述地址空间映射关系以及所述虚拟内存所位于的远端物理服务器中的P2M表的地址,获得所述虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址;
通过对所述虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址的访问,访问所述虚拟内存所位于的远端物理服务器中的P2M表,在所述P2M表中查找所述虚拟内存的虚拟地址获得所述虚拟内存在所位于的物理服务器上的物理地址。
9.一种虚拟内存访问装置,应用在本地物理服务器中,其特征在于,所述本地物理服务器通过本地非透明PCI桥与远端物理服务器的非透明PCI桥连接,所述非透明PCI桥用于将对远端物理服务器映射到本地物理服务器上的地址的访问转换为对远端物理服务器上的物理地址的访问;所述本地物理服务器中保存有利用所述非透明PCI桥建立的所述本地物理服务器与所述远端物理服务器之间的地址空间映射关系;所述装置包括:
接收单元,用于接收访问虚拟内存指令;
第一获得单元,用于根据所述接收单元接收到的访问虚拟内存指令包含的虚拟地址获得所述虚拟内存所位于的远端物理服务器;
第二获得单元,用于在所述第一获得单元获得所述虚拟内存所位于的远端物理服务器后,获得所述虚拟内存在所位于的远端物理服务器上的物理地址;
第三获得单元,用于根据所述地址空间映射关系以及所述第二获得单元获得的所述虚拟内存在所位于的远端物理服务器上的物理地址,获得所述虚拟内存映射到本地物理服务器上的地址;
访问单元,用于通过对所述第三获得单元获得的所述虚拟内存映射到本地物理服务器上的地址的访问,访问所述虚拟内存。
10.根据权利要求9所述的装置,其特征在于,所述本地物理服务器中还保存有远端物理服务器中的P2M表的地址,所述远端物理服务器中的P2M表包括位于该远端物理服务器中的虚拟内存的虚拟地址与该远端服务器的物理地址的对应关系;
所述第二获得单元包括:
第一获得子单元,用于根据所述地址空间映射关系以及所述虚拟内存所位于的远端物理服务器中的P2M表的地址,获得所述虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址;
访问子单元,用于通过对所述第一获得子单元获得的所述虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址的访问,访问所述虚拟内存所位于的远端物理服务器中的P2M表,在所述P2M表中查找所述虚拟内存的虚拟地址获得所述虚拟内存在所位于的物理服务器上的物理地址。
11.一种虚拟直通设备访问装置,应用在本地物理服务器中,其特征在于,所述本地物理服务器通过本地非透明PCI桥与远端物理服务器的非透明PCI桥连接,所述非透明PCI桥用于将对远端物理服务器映射到本地物理服务器上的地址的访问转换为对远端物理服务器上的物理地址的访问;所述本地物理服务器中保存有利用所述非透明PCI桥建立的所述本地物理服务器与所述远端物理服务器之间的地址空间映射关系;所述装置包括:
接收单元,用于接收访问虚拟直通设备指令;
第一获得单元,用于根据所述访问虚拟直通设备指令中包含的虚拟地址获得所述虚拟直通设备所位于的远端物理服务器,并获得所述虚拟直通设备在所位于的远端物理服务器上的物理地址;
第二获得单元,用于根据所述地址空间映射关系以及所述第一获得单元获得的所述虚拟直通设备在所位于的远端物理服务器上的物理地址,获得所述虚拟直通设备映射到本地物理服务器上的地址;
访问单元,用于通过对所述第二获得单元获得的所述虚拟直通设备映射到本地物理服务器上的地址的访问,访问所述虚拟直通设备。
12.根据权利要求11所述的装置,其特征在于,所述第一获得单元包括:
接收子单元,用于接收访问虚拟直通设备指令;
第一查找子单元,用于根据所述接收子单元接收到的访问虚拟直通设备指令中包含的虚拟直通设备的虚拟地址,查找保存的虚拟直通设备分布信息;
第一获得子单元,用于根据所述第一查找子单元的结果获得所述虚拟直通设备所位于的远端物理服务器,并获得所述虚拟直通设备在所位于的远端物理服务器上的物理地址。
13.根据权利要求11或12所述的装置,其特征在于,所述装置还包括:
判断单元,用于根据所述接收单元接收到的访问虚拟直通设备指令,判断所述虚拟直通设备是否需要写入数据到虚拟内存;
第三获得单元,用于如果所述判断单元的判断结果为是,获得所述虚拟内存所位于的远端物理服务器;
第四获得单元,用于如果所述判断单元的判断结果为是,在所述第三获得单元获得所述虚拟内存所位于的远端物理服务器后,获得所述虚拟内存在所位于的远端物理服务器上的物理地址;
第五获得单元,用于根据所述地址空间映射关系以及所述第四获得单元获得的所述虚拟内存在所位于的物理服务器上的物理地址,获得所述虚拟内存映射到所述虚拟直通设备所位于的物理服务器上的地址;
写入单元,用于将所述第五获得单元获得的所述虚拟内存映射到虚拟直通设备所位于的物理服务器上的地址写入所述虚拟直通设备映射到本地物理服务器上的地址,使所述虚拟直通设备将需要写入的数据写入所述虚拟内存。
14.根据权利要求13所述的装置,其特征在于,所述本地物理服务器中还保存有远端物理服务器中的P2M表的地址,所述远端物理服务器中的P2M表包括位于该远端物理服务器中的虚拟内存的虚拟地址与该远端服务器的物理地址的对应关系;
所述第四获得单元包括:
第二获得子单元,用于根据所述地址空间映射关系以及所述虚拟内存所位于的远端物理服务器中的P2M表的地址,获得所述虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址;
访问子单元,用于通过对所述第二获得子单元获得的所述虚拟内存所位于的远端物理服务器中的P2M表映射到本地物理服务器的地址的访问,访问所述虚拟内存所位于的远端物理服务器中的P2M表,在所述P2M表中查找所述虚拟内存的虚拟地址获得所述虚拟内存在所位于的物理服务器上的物理地址。
CN201410046060.7A 2014-02-08 2014-02-08 一种虚拟设备访问方法及装置 Active CN103823638B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201410046060.7A CN103823638B (zh) 2014-02-08 2014-02-08 一种虚拟设备访问方法及装置
PCT/CN2014/086183 WO2015117303A1 (zh) 2014-02-08 2014-09-10 一种虚拟设备访问方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410046060.7A CN103823638B (zh) 2014-02-08 2014-02-08 一种虚拟设备访问方法及装置

Publications (2)

Publication Number Publication Date
CN103823638A true CN103823638A (zh) 2014-05-28
CN103823638B CN103823638B (zh) 2017-01-18

Family

ID=50758728

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410046060.7A Active CN103823638B (zh) 2014-02-08 2014-02-08 一种虚拟设备访问方法及装置

Country Status (2)

Country Link
CN (1) CN103823638B (zh)
WO (1) WO2015117303A1 (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015117303A1 (zh) * 2014-02-08 2015-08-13 华为技术有限公司 一种虚拟设备访问方法及装置
CN105491082A (zh) * 2014-09-16 2016-04-13 华为技术有限公司 远程资源访问方法和交换设备
CN105786398A (zh) * 2014-11-18 2016-07-20 财团法人工业技术研究院 存储器映射方法和存储器映射系统
CN107113210A (zh) * 2014-11-07 2017-08-29 华为技术有限公司 用于配置高阶快捷pci网络的非透明桥式方法和装置
WO2018001023A1 (zh) * 2016-06-30 2018-01-04 中兴通讯股份有限公司 一种云终端登录虚拟桌面方法及装置
CN108874506A (zh) * 2018-06-08 2018-11-23 北京百度网讯科技有限公司 虚拟机直通设备的热迁移方法和装置
CN109343928A (zh) * 2018-08-28 2019-02-15 广东微云科技股份有限公司 虚拟化集群中虚拟机的虚拟内存文件重定向方法及其系统
WO2019227883A1 (zh) * 2018-05-31 2019-12-05 华为技术有限公司 地址转换方法、装置及系统
CN112948149A (zh) * 2021-03-29 2021-06-11 江苏为是科技有限公司 一种远端内存共享方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101477477A (zh) * 2009-01-12 2009-07-08 华为技术有限公司 内核空间隔离方法、空间管理实体及系统
CN101819564A (zh) * 2009-02-26 2010-09-01 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
CN102541805A (zh) * 2010-12-09 2012-07-04 沈阳高精数控技术有限公司 一种基于共享内存的多处理器通信方法及其实现装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103823638B (zh) * 2014-02-08 2017-01-18 华为技术有限公司 一种虚拟设备访问方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101477477A (zh) * 2009-01-12 2009-07-08 华为技术有限公司 内核空间隔离方法、空间管理实体及系统
CN101819564A (zh) * 2009-02-26 2010-09-01 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
CN102541805A (zh) * 2010-12-09 2012-07-04 沈阳高精数控技术有限公司 一种基于共享内存的多处理器通信方法及其实现装置

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015117303A1 (zh) * 2014-02-08 2015-08-13 华为技术有限公司 一种虚拟设备访问方法及装置
US10216664B2 (en) 2014-09-16 2019-02-26 Huawei Technologies Co., Ltd. Remote resource access method and switching device
CN105491082A (zh) * 2014-09-16 2016-04-13 华为技术有限公司 远程资源访问方法和交换设备
CN105491082B (zh) * 2014-09-16 2019-02-19 华为技术有限公司 远程资源访问方法和交换设备
CN107113210A (zh) * 2014-11-07 2017-08-29 华为技术有限公司 用于配置高阶快捷pci网络的非透明桥式方法和装置
CN107113210B (zh) * 2014-11-07 2019-09-20 华为技术有限公司 用于配置高阶快捷pci网络的非透明桥式方法和装置
CN105786398A (zh) * 2014-11-18 2016-07-20 财团法人工业技术研究院 存储器映射方法和存储器映射系统
CN105786398B (zh) * 2014-11-18 2019-04-05 财团法人工业技术研究院 存储器映射方法和存储器映射系统
WO2018001023A1 (zh) * 2016-06-30 2018-01-04 中兴通讯股份有限公司 一种云终端登录虚拟桌面方法及装置
WO2019227883A1 (zh) * 2018-05-31 2019-12-05 华为技术有限公司 地址转换方法、装置及系统
US11341061B2 (en) 2018-05-31 2022-05-24 Huawei Technologies Co., Ltd. Address translation method, apparatus, and system
CN108874506A (zh) * 2018-06-08 2018-11-23 北京百度网讯科技有限公司 虚拟机直通设备的热迁移方法和装置
CN108874506B (zh) * 2018-06-08 2020-07-24 北京百度网讯科技有限公司 虚拟机直通设备的热迁移方法和装置
US10963286B2 (en) 2018-06-08 2021-03-30 Beijing Baidu Netcom Science And Technology Co., Ltd. Live migration method and apparatus for virtual machine passthrough device
CN109343928A (zh) * 2018-08-28 2019-02-15 广东微云科技股份有限公司 虚拟化集群中虚拟机的虚拟内存文件重定向方法及其系统
CN109343928B (zh) * 2018-08-28 2022-02-08 广东微云科技股份有限公司 虚拟化集群中虚拟机的虚拟内存文件重定向方法及其系统
CN112948149A (zh) * 2021-03-29 2021-06-11 江苏为是科技有限公司 一种远端内存共享方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
WO2015117303A1 (zh) 2015-08-13
CN103823638B (zh) 2017-01-18

Similar Documents

Publication Publication Date Title
CN103823638A (zh) 一种虚拟设备访问方法及装置
US10592159B2 (en) Processing device configured for data integrity testing utilizing replicated test metadata file
CN102523264B (zh) 面向虚拟机的usb设备远程共享方法和系统
US11016954B1 (en) Distributed data set extraction for migration
KR102317657B1 (ko) Nvdimm을 포함하는 장치 및 그것의 엑세스 방법
KR102028252B1 (ko) 자율 메모리 아키텍처
CN105283855B (zh) 一种寻址方法及装置
US8943294B2 (en) Software architecture for service of collective memory and method for providing service of collective memory using the same
US9563569B2 (en) Memory transformation in virtual machine live migration
CN104133775A (zh) 一种用于管理存储器的方法和装置
CN104850502A (zh) 一种数据的访问方法、装置及设备
CN103488588A (zh) 一种内存保护方法、系统及网络接口控制器
US9336032B2 (en) Zoning data to a virtual machine
CN103064632A (zh) 固态硬盘及其虚拟化方法、系统
US20110066796A1 (en) Autonomous subsystem architecture
CN105335309A (zh) 一种数据传输方法及计算机
CN103986602A (zh) 一种启动操作系统的方法、相关设备和系统
CN104205780A (zh) 一种存储数据的方法和装置
GB2604770A (en) Ontology-based data storage for distributed knowledge bases
CN104899159A (zh) 高速缓冲存储器Cache地址的映射处理方法和装置
US11429543B2 (en) Managed NAND flash memory region control against endurance hacking
CN105190576A (zh) 共享的存储器系统
CN105278880A (zh) 一种基于云计算虚拟化的内存优化装置和方法
US10339065B2 (en) Optimizing memory mapping(s) associated with network nodes
CN105450754A (zh) 一种物理机和虚拟机相互共享云盘的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant