CN106471469A - 在虚拟化信息处理系统中的输入/输出加速 - Google Patents

在虚拟化信息处理系统中的输入/输出加速 Download PDF

Info

Publication number
CN106471469A
CN106471469A CN201480080327.2A CN201480080327A CN106471469A CN 106471469 A CN106471469 A CN 106471469A CN 201480080327 A CN201480080327 A CN 201480080327A CN 106471469 A CN106471469 A CN 106471469A
Authority
CN
China
Prior art keywords
memory space
storage
peripheral parts
transparent bridge
virtual unit
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
CN201480080327.2A
Other languages
English (en)
Other versions
CN106471469B (zh
Inventor
G·舒拉
R·W·霍尔穆特
M·K·莫洛伊
S·T·伊耶
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.)
Dell Products LP
Original Assignee
Dell Products LP
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 Dell Products LP filed Critical Dell Products LP
Publication of CN106471469A publication Critical patent/CN106471469A/zh
Application granted granted Critical
Publication of CN106471469B publication Critical patent/CN106471469B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • 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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0058Bus-related hardware virtualisation
    • 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/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Abstract

在虚拟化信息处理系统上的I/O加速包括装入存储虚拟设备以作为在管理程序上的虚拟机。管理程序可使用第一处理器和第二处理器来执行。存储虚拟设备由管理程序使用PCI‑E设备驱动器来访问,PCI‑E设备驱动器被映射到在第一处理器的第一PCI‑E NTB的逻辑端点。可在存储虚拟设备上装入第二PCI‑E设备驱动器,存储虚拟设备访问管理程序并被映射到在第二处理器的第二PCI‑E NTB的逻辑端点。可在包括被映射到第一PCI‑E NTB的逻辑端点的第一存储空间和被映射到第二PCI‑E NTB的逻辑端点的第二存储空间之间执行数据传输操作。数据传输操作可以是读取操作或写入操作。

Description

在虚拟化信息处理系统中的输入/输出加速
技术领域
本公开一般涉及虚拟化信息处理系统,且更具体地涉及用于在虚拟化信息处理系统中的输入/输出(I/O)加速的系统和方法。
背景技术
随着信息的价值和使用持续增加,个人和企业正寻找额外的方式来处理并存储信息。用户可采用的其中一个选择是信息处理系统。信息处理系统通常处理、编译、存储和/或传递信息或数据以用于商业、个人或其它目的,从而允许用户利用信息的价值。由于技术和信息处理的需要和要求在不同的用户或应用之间可能不同,因此信息处理系统也可相对于要处理什么信息、如何处理信息、处理、存储或传递多少信息以及可多么快和有效地处理、存储或传递信息而改变。在信息处理系统中的变化使得信息处理系统可以是通用的或被配置成用于特定的用户或特定的使用,例如财务交易处理、机位预订、企业数据存储或全球通信。此外,信息处理系统可包括可被配置成处理、存储和传递信息的各种硬件和软件部件,并可包括一个或多个计算机系统、数据存储系统和联网系统。
信息处理系统越来越多被部署在允许多个操作系统在单个信息处理系统上运行的体系结构中。被标记为“虚拟化”的这种类型的信息处理系统体系结构将软件和硬件分离,并将物理硬件的逻辑视图呈递给软件。在虚拟化信息处理系统中,单个物理层服务器可代表多个独立的虚拟服务器。服务器虚拟化主要由在服务器硬件和也被称为客户操作系统(客户OS)的多个操作系统之间提供的软件层的一件软件(常常被称为“管理程序”)启用。管理程序软件提供将逻辑硬件接口呈递到客户操作系统的容器。单独的客户OS以及在客户OS之下执行的各种应用或其它软件可能不知道操作正在虚拟化服务器环境中执行(与专用物理服务器相反)。在管理程序之下执行的客户OS的这种实例可被称为“虚拟机”或“VM”。
在通常情况下,使用虚拟化体系结构的原因有很多,这些原因包括但不限于:(1)增加的硬件资源利用;(2)在整个公共的、基于标准的基础设施中的有成本效益的可扩展性;(3)在多个服务器当中的工作负荷便携性;(4)通过向公共虚拟接口而不是物理硬件的多个实施的证明来使应用发展更精简;以及(5)将复杂配置封装到容易被复制和预备的文件内,等等。如上面提到的,信息处理系统可包括例如作为客户操作系统在相应的虚拟机中执行的一个或多个操作系统。
操作系统提供很多功能,例如控制对硬件资源的访问以及控制应用软件的执行。操作系统还提供资源和服务以支持应用软件。这些资源和服务可包括数据存储、对至少一个文件系统的支持、集中式配置数据库(例如在Microsoft Windows操作系统中找到的注册表)、目录服务、图形用户界面、联网堆栈、设备驱动器和设备管理软件。在一些实例中,服务可由在信息处理系统(例如数据库服务器)上运行的其它应用软件提供。
信息处理系统可包括连接到各种设备(例如外围部件互连(“PCI”)设备和快捷外围部件互连(“PCI-E”)设备)的多个处理器。操作系统可包括被配置成便于设备的使用的一个或多个驱动器。如以上提到的,信息处理系统还可运行一个或多个虚拟机,其中每个虚拟机可代表客户操作系统。虚拟机可由虚拟机管理器(例如管理程序)管理。可为了设备直通而配置某些虚拟机,以使得虚拟机可直接利用物理设备,而不需要使用中间的操作系统驱动器。
常规的虚拟化信息处理系统可受益于虚拟机增加的性能。提高的性能也有益于其中多个虚拟机同时操作的虚拟化系统。在虚拟机的客户OS中执行的应用也可受益于某些计算资源(例如存储资源)的较高的性能。
发明内容
在本公开的一个方面中,使用至少两个处理器(包括第一处理器和第二处理器)来执行以下一种方法。该方法可包括装入存储虚拟设备以作为在使用第一处理器和第二处理器执行的管理程序上的虚拟机。存储虚拟设备可由管理程序使用第一快捷外围部件互连(PCI-E)设备驱动器来访问,第一快捷外围部件互连(PCI-E)设备驱动器被映射到在第一处理器的第一PCI-E NTB的逻辑端点处的PCI-E非透明桥(NTB)。该方法可包括在存储虚拟设备上装入第二PCI-E设备驱动器,存储虚拟设备访问管理程序并被映射到在第二处理器的第二PCI-E NTB的逻辑端点处的PCI-E NTB。该方法还可包括在被映射到第一PCI-E NTB的逻辑端点的第一存储空间和被映射到第二PCI-E NTB的逻辑端点的第二存储空间之间执行数据传输操作。管理程序可在第一存储空间中执行。存储虚拟设备可在第二存储空间中执行。PCI NTB可提供在第一存储空间和第二存储空间之间的地址转换。
本公开的其它方面包括一种制品和一种信息处理系统。该制品包括存储由至少两个处理器可执行的指令的非临时计算机可读介质。该信息处理系统包括处理器子系统,处理器子系统包括第一处理器和第二处理器,其可访问存储了可由处理器子系统执行的指令的存储器子系统。
附图说明
为了更完整地理解本发明及其特征和优点,现在结合附图来参考以下的描述,其中:
图1是如本文所述用于I/O加速的信息处理系统的实施方式的选定元件的方框图;
图2是如本文所述用于I/O加速的信息处理系统的实施方式的选定元件的方框图;
图3是如本文所述用于I/O加速的存储空间的实施方式的选定元件的方框图;
图4A是用于写入操作的如本文所述I/O加速的实施方式的选定元件的过程图;
图4B是用于写入操作的如本文所述I/O加速的实施方式的选定元件的过程图;
图5A是用于读取操作的如本文所述I/O加速的实施方式的选定元件的过程图;
图5B是用于读取操作的如本文所述I/O加速的实施方式的选定元件的过程图;以及
图6是描绘如本文所述用于I/O加速的方法的实施方式的流程图。
具体实施方式
在以下的描述中,以例子阐述了细节以便于描述本公开的主题。然而,本领域中的普通技术人员应清楚理解,本公开的实施方式是示例性的,而不是对所有可能的实施方式的无遗漏的描述。
在本公开中,用连字符连接的参考数字是指元件的特定实例,而无连字符连接的参考数字是指一般的或共同的元件。例如,设备“12-1”指的是设备类别的实例,其可共同被称为设备“12”,且其中任一个可一般被称为设备“12”。
如以上提到的,当前的虚拟信息处理系统可要求计算资源(例如由在客户操作系统之下执行的应用使用的存储资源)有较高的性能。很多虚拟化服务器平台可能期望以在同一服务器上执行(应用在该服务器上执行)的软件的形式对这样的应用提供存储资源,这可通过将应用带近数据来提供某些优点。这样的软件定义的存储可进一步允许新技术的实现,例如但不限于:(1)使用固态设备(SSD)来缓存存储操作和数据的闪存高速缓存器和缓存网络;(2)虚拟存储区域网络(SAN);以及(3)根据I/O负载和访问模式来通过将数据存储在本地存储资源、SAN存储器和网络存储器中而进行数据分层。通过允许多个工作负荷在单个物理机上运行,服务器虚拟化是软件定义的存储器的关键推动因素。这样的工作负荷也通过使得存储资源最接近访问存储在存储资源上的数据的应用来得益。
提供这样的功能的存储软件可与多个较低级别设备驱动器交互作用。例如:在存储设备驱动器的顶部上的一层可使用各种类型的互连结构(即iSCSI、光纤通道、以太网光纤通道等)提供对存在于服务器上的硬盘驱动器、闪存SSD驱动器、非易失性存储器设备和/或SAN存储器的访问。在另一例子中,在网络驱动器上的一层可提供对在其它服务器实例上运行的存储软件的访问(即访问云)。这样基于驱动器的实施从支持多个管理程序和给予足够的性能的观点来看具有挑战性的。现时在使用中的某些管理程序可能不支持驱动器的第三方开发,其可能排除了基于在管理程序内核中的优化滤波器驱动器的体系结构。其它管理程序可能具有不同的I/O体系结构和设备驱动器模型,其可能对发展各种管理程序平台的统一存储软件提供挑战。
另一解决方案是将存储软件实现为具有对物理存储设备和资源的直通访问的虚拟机。然而,当与在邻近的虚拟机上执行的应用通信时,这样的解决方案可能会因为低的数据吞吐量和在管理程序驱动器堆栈中的高时延而面临严重的性能问题。因此,即使基础的存储资源可给予实质上提高的性能(例如闪存高速缓存器和缓存网络),使用一般管理程序驱动器堆栈的客户OS中的应用可能不能经历到性能优点。
如将更详细描述的那样,本公开的发明人发明了本文公开的新颖的方法和系统,其用于通过使用提供对本地和远程存储资源的被管理的访问的存储虚拟设备,同时利用用于对来回到虚拟信息处理系统中的客户OS的存储操作的直接存储器存取(DMA),以提高对存储资源的访问。直接存储器存取涉及来/回系统存储器的数据传输,其没有明显使用处理器子系统,由此提高数据吞吐量并减小处理器子系统的工作负荷。具体地,本公开公开了用于I/O加速的机制,其使用处理器集成的I/O和DMA引擎来实现PCI-E非透明桥接(NTB)。如将更详细描述的那样,本公开涉及加速来自经由存储虚拟设备(SVA)在VM中执行的应用的I/O。在其它实施方式中,本文公开的I/O加速可应用于以下情形:在操作系统中运行的两个软件模块或驱动器需要将消息或数据发送到彼此,但被OS性能限制约束。
为了本公开的目的,信息处理系统可包括可操作来计算、分类、处理、传输、接收、取回、创造、切换、存储、显示、证明、检测、记录、再现、处置或利用各种形式的信息、情报或数据以用于商业、科学、控制、娱乐或其它目的的工具或工具的集合。例如,信息处理系统可以是个人计算机、PDA、消费电子设备、网络存储设备或其它适当的设备,并可在尺寸、形状、性能、功能和价格上有所不同。信息处理系统可包括存储器、一个或多个处理资源,例如中央处理单元(CPU)或硬件或软件控制逻辑。额外的部件或信息处理系统可包括一个或多个存储设备、用于与外部设备通信的一个或多个通信端口以及各种输入和输出(I/O)设备,例如键盘、鼠标和视频显示器。信息处理系统还可包括可操作来在各种硬件部件之间传输信息的一个或多个总线。
此外,信息处理系统可包括用于控制硬盘驱动器、网络电路、存储器设备、I/O设备和其它外围设备和/或与硬盘驱动器、网络电路、存储器设备、I/O设备和其它外围设备通信的固件。例如,管理程序和/或其它部件可包括固件。如在本公开中使用的,固件包括用于执行预定任务的嵌在信息处理系统部件中的软件。固件通常被存储在非易失性存储器或在当功率失去时不失去所存储的数据的存储器中。在某些实施方式中,与信息处理系统部件相关的固件被存储在可被一个或多个信息处理系统部件访问的非易失性存储器中。在相同或可选的实施方式中,与信息处理系统部件相关的固件被存储在专用于那个部件并包括那个部件的部分的非易失性存储器中。
为了本公开的目的,计算机可读介质可包括可将数据和/或指令保留一段时间的工具或工具的集合。例如,计算机可读介质可包括存储介质:例如直接存取存储设备(例如硬盘驱动器或软盘)、连续存取存储设备(例如磁带磁盘驱动器)、光盘、CD-ROM、DVD、随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)和/或闪存(SSD);以及通信介质:例如电线、光纤、微波、无线电波和其它电磁和/或光学载体;和/或前述项的任何组合。
通过图1、图2、图3、图4A、图4B、图5A、图5B和图6可最好地理解特定的实施方式,其中相同的数字用于指示相同和相应的部件。
现在参考附图,图1示出描绘根据本公开、使用存储虚拟设备的、用于I/O加速的系统100-1的实施方式的选定元件的方框图。如在图1中描绘的,系统100-1代表包括物理硬件102、可执行指令180(包括管理程序104、一个或多个虚拟机105和存储虚拟设备110)的信息处理系统。与系统100-1一起示出的是外部或远程元件,即网络155和网络存储资源170。
如图1所示,物理硬件102的部件可包括但不限于:可包括一个或多个处理器的处理器子系统120以及将各种系统部件通信地耦合到处理器子系统120(包括例如存储器子系统130、I/O子系统140、本地存储资源150和网络接口160)的系统总线121。系统总线121可代表各种适当类型的总线结构,例如在选定实施方式中使用各种总线体系结构的存储器总线、外围总线或局部总线。例如,这样的体系结构可包括但不限于微通道体系结构(MCA)总线、工业标准体系结构(ISA)总线、增强型ISA(EISA)总线、外围部件互连(PCI)总线、快捷外围部件互连(PCI-Express)总线、HyperTransport(HT)总线和视频电子标准协会(VESA)局部总线。
在图1中,网络接口160是可操作来用作在信息处理系统100-1和网络155之间的接口的适当的系统、装置或设备。网络接口160使信息处理系统100-1能够通过网络155使用适当的传输协议或标准(包括但不限于以下关于网络155的讨论所列举的传输协议或标准)来通信。在一些实施方式中,网络接口160可经由网络155通信地耦合到网络存储资源170。网络155可被实现为存储区域网(SAN)、个人区域网(PAN)、局域网(LAN)、城域网(MAN)、广域网(WAN)、无线局域网(WLAN)、虚拟专用网(VPN)、内联网、互联网或便于信号、数据或消息(通常被称为数据)的传递的其它适当的体系结构或系统,或可被实现为存储区域网(SAN)、个人区域网(PAN)、局域网(LAN)、城域网(MAN)、广域网(WAN)、无线局域网(WLAN)、虚拟专用网(VPN)、内联网、互联网或便于信号、数据或消息(通常被称为数据)的传递的其它适当的体系结构或系统的一部分。网络155可使用期望存储或通信协议来传输数据,这些协议包括但不限于光纤通道、帧中继、异步传输模式(ATM)、互联网协议(IP)、其它基于分组的协议、小计算机接口(SCSI)、互联网SCSI(iSCSI)、串行附加SCSI(SAS)或使用SCSI协议来操作的另一传输工具、高级技术附件(ATA)、串行ATA(SATA)、高级技术附件分组接口(ATAPI)、串行存储体系结构(SSA)、集成驱动电子设备(IDE)和/或其任何组合。网络155及其各种部件可使用硬件、软件或其任何组合来实现。
如在图1中描绘的,处理器子系统120包括可操作来解释和/或执行程序指令和/或处理数据并可包括微处理器、微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)或被配置成解释和/或执行程序指令和/或处理数据的其它数字或模拟电路的系统、设备或装置。在一些实施方式中,处理器子系统120可解释并执行存储在本地(例如在存储器子系统130或物理硬件102的另一部件中)的程序指令或处理存储在本地(例如在存储器子系统130或物理硬件102的另一部件中)的数据。在同一或可选的实施方式中,处理器子系统120可解释并执行远程地(例如在网络存储资源170中)存储的程序指令或处理远程地(例如在网络存储资源170中)存储的数据。具体地,处理器子系统120可代表包括至少第一处理器和第二处理器(参见图2)的多处理器配置。
在图1中,存储器子系统130包括可操作来在一段时间期间保留并取回程序指令和数据的系统、设备或装置(例如计算机可读介质)。存储器子系统130可包括随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、PCMCIA卡、闪存、磁性存储器、光学磁性存储器或在到相关信息处理系统(例如系统100-1)的功率被切断之后能保留数据的易失性或非易失性存储器的适当选择或阵列。本地存储资源150包括计算机可读介质(例如硬盘驱动器、软盘驱动器、CD-ROM和/或其它类型的旋转存储介质、闪存、EEPROM和/或其它类型的固态存储介质),并通常可操作来存储指令和数据。同样,网络存储资源170包括计算机可读介质(例如硬盘驱动器、软盘驱动器、CD-ROM或其它类型的旋转存储介质、闪存、EEPROM或其它类型的固态存储介质),并通常可操作来存储指令和数据。在系统100-1中,I/O子系统140包括通常可操作来从系统100-1接收数据、将数据传输到系统100-1、并在系统100-1内传输数据的系统、设备或装置。例如,I/O子系统140可代表各种通信接口、图形接口、视频接口、用户输入接口和外围接口中的任一个或多个。
在图1中,管理程序104包括通常可操作来允许多个操作系统同时在单个信息处理系统上运行的软件(即可执行代码或指令)和固件。通常经由虚拟化(一种用于从其它系统、应用或终端用户与那些资源交互作用的方式隐藏信息处理系统资源的物理特征的技术)来允许这个可操作性。管理程序104可以是各种专用和/或市场上可买到的虚拟化平台之一,包括但不限于:IBM的Z/VM、XEN、ORACLE VM、VMWARE的ESX SERVER、L4MICROKERNEL、TRANGO、MICROSOFT的HYPER-V、SUN的LOGICAL DOMAINS、HITACHI的VIRTAGE、KVM、VMWARE SERVER、VMWARE WORKSTATION、VMWARE FUSION、QEMU、MICROSOFT的VIRTUAL PC和VIRTUAL SERVER、INNOTEK的VIRTUALBOX以及SWSOFT的PARALLELS WORKSTATION和PARALLELS DESKTOP。在一个实施方式中,管理程序104可包括具有本机虚拟化能力的特别设计的操作系统(OS)。在另一实施方式中,管理程序104可包括标准OS,其具有用于执行虚拟化的合并的虚拟化部件。在另一实施方式中,管理程序104可包括与单独的虚拟化应用一起运行的标准OS。在这个实施方式中,管理程序104的虚拟化应用可以是在OS上运行并且只通过OS与物理硬件102交互作用的应用。可选地,管理程序104的虚拟化应用在一些级别上可经由OS间接地与物理硬件102交互作用,而在其它级别上直接与物理硬件102交互作用(例如类似于OS直接与物理硬件102交互作用的方式,且作为在物理硬件102上运行的固件),也被称为设备直通。通过使用设备直通,虚拟机可直接利用物理设备而不使用中间的操作系统驱动器。作为另一可选方案,管理程序104的虚拟化应用可在各种级别上直接与物理硬件102交互作用(例如类似于OS直接与物理硬件102交互作用的方式,且作为在物理硬件102上运行的固件)而不利用OS,尽管仍然与OS交互作用以协调物理硬件102的使用。
如图1所示,虚拟机1 105-1代表客户OS 108-1的主机,而虚拟机2 105-2代表客户OS 108-2的主机。为了允许多个操作系统同时在系统100-1上执行,管理程序104可虚拟化物理硬件102的硬件资源并将虚拟化计算机硬件表示呈递到每个虚拟机105。换句话说,管理程序104可向每个虚拟机105分配例如来自处理器子系统120的一个或多个处理器、在存储器子系统130中的存储器的一个或多个区、I/O子系统140的一个或多个部件等。被呈递到每个虚拟机105的虚拟化硬件表示可包括对于每个虚拟机105的硬件资源的互斥(即不相交或非重叠)集合(例如没有硬件资源在虚拟机105之间被共享)。在其它实施方式中,虚拟化硬件表示可包括对于每个虚拟机105的硬件资源的重叠集合(例如一个或多个硬件资源由两个或多个虚拟机105共享)。
在一个实施方式中,管理程序104可静态地分配物理硬件102的硬件资源,使得某些硬件资源被分配到某些虚拟机,且这分配不会随着时间的过去而改变。此外或可选地,根据在单独的虚拟机上运行的应用的特定需要,管理程序104可动态地分配物理硬件102的硬件资源,使得硬件资源到虚拟机的分配随着时间而改变。此外或可选的,管理程序104可记录硬件资源到虚拟机映射,使得管理程序104能够确定物理硬件102的给定硬件资源被分配到哪个虚拟机。
在图1中,每个虚拟机105可分别包括客户操作系统(客户OS)108,以及在客户OS108上运行的任何应用或其它软件。每个客户OS 108可代表与管理程序104兼容并被管理程序104支持的OS,即使客户OS 108在某个程度上与由管理程序104虚拟化的物理硬件102不兼容。此外,每个客户OS 108可以是相同的操作系统或不同的操作系统。例如,在一个实施方式中,每个客户OS 108可包括LINUX OS。作为另一例子,客户OS 108-1可包括LINUX OS,客户OS 108-1可包括MICROSOFT WINDOWS OS,而在另一虚拟机(未示出)上的另一客户OS可包括VXWORKS OS。虽然系统100-1被描绘为具有两个虚拟机105-1、105-2和存储虚拟设备110,但应理解,在特定的实施方式中,不同数量的虚拟机105可在任何给定的时间在信息处理系统100上执行。
在图1中,存储虚拟设备110可代表在管理程序104上执行的存储软件。虽然存储虚拟设备110可被实现为虚拟机并可以在与上面相对于虚拟机105所述的类似的环境和地址空间中执行,但是存储虚拟设备110可专用于提供对客户OS 108的实例的存储资源的访问。因此,存储虚拟设备110本身可以不作为资源被提供给用户的客户OS的主机,但可以是信息处理系统100的嵌入式特征。然而应该理解,存储虚拟设备110可包括类似于以上在本文描述的客户OS 108的各种实现的嵌入式虚拟化OS(未示出)。具体地,存储虚拟设备110可使用享有对用于访问存储资源(本地和/或远程)的各种设备和接口的直通设备访问,并可被启用以使用直接存储器接入来提供在期望存储资源和客户OS 108之间的逻辑通信连接,从而用于非常高的数据吞吐量速率和非常低的时延传输操作(如在本文描述的)。
在图1所示的系统100的操作中,信息处理系统100的管理程序104可将物理硬件102的硬件资源虚拟化并将虚拟化计算机硬件表示呈递到每个虚拟机105。虚拟机105的每个客户OS 108可接着开始操作并运行应用和/或其它软件。在操作时,每个客户OS 108可利用由管理程序104分配到相应的虚拟机的物理硬件102的一个或多个硬件资源。每个客户OS108和/或在客户OS 108之下执行的应用可被呈递由存储虚拟设备110管理的存储资源。换句话说,存储虚拟设备110可被启用以安装并划分物理存储资源(包括本地存储资源和远程存储资源)的各种组合,并如所需的将这些物理存储资源呈递为逻辑存储设备以用于由客户OS 108访问(也见图2)。具体地,存储虚拟设备110可使用处理器DMA和PCI-E NTB来启动I/O加速,以用于由在虚拟机105的客户OS 108下执行的应用访问存储资源。此外,本文所述的存储虚拟设备110的特征还可以用独立于或大体独立于管理程序104的任何特定实现的方式来实现。
现在参考图2,示出系统100-2的实施方式的选定元件的方框图。在图2中,系统100-2可代表作为系统100-1(见图1)的实施方式的信息处理系统。如图2所示,系统100-2还包括关于存储虚拟设备110的操作和使用的细节。为了清楚起见,从图2省去了在系统100-1中所示的其它元件。在图2中,虽然虚拟机105和客户OS 108被示为单数,但是它们可代表虚拟机105和客户OS 108的任何数量的实例。
在图2中,虚拟机105被示为执行应用202和客户OS 108,存储驱动器204被安装和装入在客户OS 108下。存储驱动器204使虚拟机105能够经由被装入到管理程序104内的I/O堆栈244、虚拟文件系统246和管理程序(HV)存储驱动器248来访问存储资源。I/O堆栈244通过管理程序104提供面向VM的I/O的接口以与在虚拟机105上执行的存储驱动器204交互作用。虚拟文件系统246是由管理程序104提供以例如用于由客户OS 108访问的文件系统。
如图2所示,虚拟文件系统210与被配置成访问处理器CPU2 120-2的资源的HV存储驱动器248交互作用。具体地,HV存储驱动器248可使用CPU DMA驱动器242-2或PCI-NTB驱动器214-2来访问处理器CPU2 120-2。CPU DMA驱动器242-2支持用于对代表被包括在处理器CPU2 120-2内的DMA引擎的DMA(CPU2)240-2编程。PCI-E NTB驱动器214-2支持用于对代表用于在处理器CPU2 120-2和处理器CPU1 120-1之间通信的处理器间总线220的可选形式的PCI-E NTB 221编程。具体地,DMA 240和PCI-E NTB221允许在高数据速率下的DMA传输,同时使处理器120经受最小工作负荷,且因此代表用于I/O加速的有效机制(如在本文所述的)。此外,由于每个处理器在具有物理存储器的本地存储器库(未示出)的单独物理存储空间(见图3)中操作,在本文对I/O加速所描述的方法可防止由处理器120-2访问处理器120-1的存储器库,并且反之亦然。这可通过进一步减少不希望有的处理器间通信和代表处理器120的不合乎需要的工作负荷的冗余存储器访问操作。
如图2所示,PCI-E NTB 221可代表不透明桥,其中在桥的两侧上有被示为处理器CPU1 120-1和处理器CPU2 120-2的主机。如上面提到的,PCI-E NTB 221的主机具有它自己的独立地址空间(即存储空间),并可具有到另一主机的地址空间的某个部分内的可见性。每个主机可将另一主机当作为PCI-E NTB 221的端点,并可将另一主机的地址段映射到它的本机存储空间。在给定实施方式中,在存储虚拟设备110上的SVA存储驱动器206可代表在PCI-E NTB 221的端点处的一个端口(在本文被称为CPU1 NTB),而HV存储驱动器248可代表在PCI-E NTB 221的另一端点处的另一端口(在本文被称为CPU2 NTB)。
此外,在图2的示例性实施方式中,存储虚拟设备110被示为包括SVA存储驱动器206和SVAI/O驱动器212。在图2的示例性布置中,SVA存储驱动器206被配置成访问处理器CPU1 120-1的资源。具体地,SVA存储驱动器206可使用CPU DMA驱动器242-1或PCI-NTB驱动器214-1来访问处理器CPU1 120-1。CPU DMA驱动器242-1支持用于对代表被包括在处理器CPU1 120-1内的DMA引擎的DMA(CPU2)240-1编程。
在图2中,SVA I/O驱动器212代表允许存储虚拟设备100访问并提供对各种存储资源的访问的“后端”驱动器。如图所示,SVA I/O驱动器212具有对远程直接存储器存取(RDMA)218、iSCSI/光纤通道(FC)/以太网222和闪存SSD 224的直通访问。例如,RDMA 218或闪存SSD 224或iSCSI/FC/以太网222可参与高速缓存网络230,其可以是用于在多个信息处理系统(未示出)(例如系统100)之间缓存存储操作和/或数据的高性能网络。如图所示,iSCSI/FC/以太网222也可提供对可包括各种外部存储资源(例如网络可访问的存储阵列)的存储区域网(SAN)240的访问。
现在参考图3,其示出存储空间300的实施方式的选定元件的方框图。在图3中,存储空间300描绘各种存储寻址空间或仅仅描绘被包括在信息处理系统100(见图1和图2)中的各种虚拟化层的“地址空间”。
如图3所示,存储空间300包括用于对物理存储器寻址的物理存储器地址空间(A4)340。如上所述,当在信息处理系统100中使用第一处理器和第二处理器时,每个处理器可具有被示为CPU物理存储器340-1和CPU2物理存储器340-2的物理存储器的独立存储器库。由于管理程序104在物理计算资源上执行,管理程序虚拟地址空间(A3)330代表基于物理存储器地址空间(A4)340的虚拟地址空间。虚拟地址空间允许在有限数量的物理存储器中的较大的存储空间的寻址,并可依赖于用于卸载或缓存操作的外部存储资源(未在图3中示出)。相应于图2所示的布置,HV扩展页表客户OS 314使得与客户OS 108(例如HV存储驱动器248)相关的管理程序对象能够解析与CPU2相关的物理存储器地址。类似地,HV扩展页表SVA 324使得与存储虚拟设备110(例如SVA存储驱动器206)相关的管理程序对象能够解析与CPU1相关的物理存储器地址。管理程序虚拟地址空间(A3)330代表由管理程序104使用的内部地址空间。管理程序104还可产生在管理程序虚拟地址空间(A3)330内的所谓的“物理”地址空间,并将这些“物理”地址空间呈递到虚拟机105和存储虚拟设备110以用于虚拟化执行。从虚拟机105和存储虚拟设备110的观点看,由管理程序104提供的“物理”地址空间可被视为真实物理存储空间。如图所示,客户OS“phys”地址空间(A2)310和SVA“phys”地址空间(A2)320代表分别由管理程序104提供到客户OS 108和存储虚拟设备110的“物理”地址空间。最后,客户OS虚拟地址空间(A1)312代表客户OS 108使用客户OS“phys”地址空间(A2)310实现的虚拟地址空间。SVA虚拟地址空间(A1)322代表存储虚拟设备110使用SVA“phys”地址空间(A2)320实现的虚拟地址空间。
应当注意,标签A1、A2、A3和A4指示相对于信息处理系统100的真实或虚拟化存储空间的特定分级水平(如上所述)。为了清楚起见,标签A1、A2、A3和A4在随后的图4A、图4B、图5A和图5B中用于指存储空间的特定分级水平,并被注释为与特定的对象和元件(例如SVA(A2)、HV(A4)、G-OS(A2)等)相关。
现在参考图4A,其示出过程图400的实施方式的选定元件的方框图。在图4A中,过程图400描绘在信息处理系统100(参见图1和图2)中的I/O加速的操作(如在本文所述的)。具体地,过程图400描绘由应用202对存储资源的写入操作的I/O加速,其中DMA编程由HV存储驱动器248执行。
在过程图400中,在步骤402,应用202可将对存储在目标设备上的目标文件的写入文件请求(WR)发出到客户OS 108,这在地址空间A1或G-OS(A1)中发生。接着,在步骤404,客户OS 108将WR从G-OS(A1)转换到G-OS(A2),并将WR转发到虚拟文件系统(VFS)246。此外,在步骤404,包括在WR的文件指標和偏移被转换成用于目标设备的虚拟磁盘块地址,其中WR的目标文件被存储在该目标设备上。在步骤406,VFS 246将虚拟磁盘块地址转换成物理磁盘块地址,将WR从G-OS(A2)转换到HV(A4),并将WR连同所转换的地址一起发送到HV存储驱动器248。此外,在步骤406,VFS 246牵制用于写入数据的HV(A4)以为WR进行写入。在步骤408-1,HV存储驱动器248经由CPU2 NTB 221发送具有物理块地址和缓冲器尺寸(即WR信息)的NTB消息(即按门铃)。在步骤408-2,NTB消息由CPU1NTB 221接收。在步骤410-1,CPU1 NTB221中断SVA存储驱动器204,且SVA存储驱动器204读取NTB消息。在步骤410-2,SVA OS 110接收WR信息。在步骤412,SVA OS 110在WR信息中给出的缓冲器尺寸的SVA(A1)中分配缓冲器,并记录用于缓冲器的相应的SVA(A2)地址。在步骤414,SVA存储驱动器204将用于缓冲器的SVA(A2)地址装入CPU1-NTB 221。接着,在步骤416-1,CPU1 NTB 221执行NTB按门铃。在步骤416-2,CPU2NTB 221中断具有SVA(A2)地址的HV存储驱动器248。在步骤418,HV存储驱动器248装入CPU2DMA 240-2以用于DMA操作。在步骤420,开始DMA操作。在步骤422,DMA操作将写入数据从HV(A4)传输到CPU2 NTB221。在步骤424,DMA操作将写入数据从CPU2 NTB 221传输到CPU1 NTB221。在步骤425,DMA操作将写入数据从CPU1 NTB 221传输到在SVA OS110处的SVA(A2)。在步骤426,CPU2DMA 240-2使用指示DMA操作已完成的中断来中断HV存储驱动器248。在步骤428-1,HV存储驱动器248在CPU2 NTB 221处执行NTB按门铃。在步骤428-2,CPU2 NTB 221在CPU1NTB 221处按门铃。在步骤428-3,CPU1 NTB 221中断SVA存储驱动器204以在SVA(A2)中写入数据。接着,写入数据可被写入到目标设备(未示出)。在步骤434,HV存储驱动器248将WR已完成的消息发送到VFS 246。在步骤436,VFS 246将WR已完成的消息发送到G-OS 108。在步骤438,G-OS108将WR已完成的消息发送到应用102。
现在参考图4B,示出过程图401的实施方式的选定元件的方框图。在图4B中,过程图401描绘在信息处理系统100(参见图1和图2)中的I/O加速的操作(如在本文所述的)。具体地,过程图401描绘由应用202对存储资源的写入操作的I/O加速,其中DMA编程由SVA存储驱动器204执行。
在过程图401中,在步骤402,应用202可将对存储在目标设备上的目标文件的写到文件请求(WR)发出到客户OS 108,这在地址空间A1或G-OS(A1)中发生。接着,在步骤404,客户OS 108将WR从G-OS(A1)转换到G-OS(A2),并将WR转发到虚拟文件系统(VFS)246。此外,在步骤404,包括在WR的文件指標和偏移被转换成用于目标设备的虚拟磁盘块地址,W其中R的目标文件被存储在该目标设备上。在步骤406,VFS 246将虚拟磁盘块地址转换成物理磁盘块地址,将WR从G-OS(A2)转换到HV(A4),并将WR连同所转换的地址一起发送到HV存储驱动器248。此外,在步骤406,VFS 246牵制用于写入数据的HV(A4)以为WR进行写入。在步骤440,HV存储驱动器248将HV(A4)地址装入CPU2 NTB 221,并经由CPU2 NTB 221发送具有物理块地址、缓冲器尺寸和HV(A4)地址(即WR信息)的NTB消息(即按门铃)。在步骤442,NTB消息由CPU1 NTB 221接收。在步骤444-1,CPU1 NTB 221利用WR信息中断SVA存储驱动器204。在步骤444-2,SVA OS 110接收WR信息。在步骤446,SVA OS 110在WR信息中给出的缓冲器尺寸的SVA(A1)中分配缓冲器,并记录用于缓冲器的相应的SVA(A2)地址。在步骤448,SVA存储驱动器204将被牵制为用于缓冲器的SVA(A2)地址装入CPU1-DMA 240-1。在步骤450,开始DMA操作。在步骤452,DMA操作将写入数据从HV(A4)传输到CPU2 NTB 221。在步骤454,DMA操作将写入数据从CPU2 NTB 221传输到CPU1 NTB 221。在步骤456,DMA操作将写入数据从CPU1NTB 221传输到在SVA存储驱动器处的SVA(A2)。在步骤458,CPU1DMA 240-1使用指示DMA操作已完成以及写入数据在SVA(A2)中的中断来中断HV存储驱动器204。然后,写入数据可被写到目标设备(未示出)。在步骤460-1,SVA存储驱动器204在CPU1 NTB 221处执行NTB按门铃。在步骤460-2,CPU1 NTB 221在CPU2 NTB 221处按门铃。在步骤462,CPU2 NTB 221使用WR已完成的消息中断HV存储驱动器248。在步骤434,HV存储驱动器248将WR已完成的消息发送到VFS 246。在步骤436,VFS 246将WR已完成的消息发送到G-OS 108。在步骤438,G-OS108将WR已完成的消息发送到应用102。
现在参考图5A,示出过程图500的实施方式的选定元件的方框图。在图5A中,过程图500描绘在信息处理系统100(参见图1和图2)中的I/O加速的操作(如在本文所述的)。具体地,过程图500描绘由应用202对存储资源的读取操作的I/O加速,其中DMA编程由SVA存储驱动器248执行。
在过程图500中,在步骤502,应用202可将文件读取请求(RR)从存储在目标设备上的目标文件发出到客户OS 108,这在地址空间A1或G-OS(A1)中发生。接着,在步骤504,客户OS 108将RR从G-OS(A1)转换到G-OS(A2),并将RR转发到虚拟文件系统(VFS)246。此外,在步骤504,包括在RR中的文件指標和偏移被转换成用于目标设备的虚拟磁盘块地址,其中RR的目标文件被存储在该目标设备上。在步骤506,VFS 246将虚拟磁盘块地址转换成物理磁盘块地址,将RR从G-OS(A2)转换到HV(A4),并将RR连同所转换的地址一起发送到HV存储驱动器248。此外,在步骤506,VFS 246牵制用于读取数据的HV(A4)以为RR进行读取。在步骤508-1,HV存储驱动器248经由CPU2 NTB 221发送具有物理块地址和缓冲器尺寸(即RR信息)的NTB消息(即按门铃)。在步骤508-2,NTB消息由CPU1 NTB221接收。在步骤510-1,CPU1 NTB221中断SVA存储驱动器204,且SVA存储驱动器204读取具有RR信息的NTB消息。在步骤510-2,SVA OS 110接收RR信息。在步骤512,SVA OS 110在RR信息中给出的缓冲器尺寸的SVA(A1)中分配缓冲器,从目标文件读取数据,并将SVA(A1)地址提供到SVA存储驱动器204。在步骤514,SVA存储驱动器204从SVA(A1)转换相应的SVA(A2)地址,将该SVA(A2)地址装入CPU1-NTB 211,牵制用于缓冲器的SVA(A2),并在CPU1 NTB 221按门铃。接着在步骤516-1,CPU1 NTB221在CPU2 NTB 221执行NTB按门铃。在步骤516-2,CPU2 NTB 221利用SVA(A2)地址中断HV存储驱动器248。在步骤518,HV存储驱动器248装入CPU2DMA 240-2以用于DMA操作。在步骤520,开始DMA操作。在步骤522,DMA操作将读取数据从HV(A2)传输到CPU1 NTB221。在步骤524,DMA操作将读取数据从CPU1 NTB 221传输到CPU2 NTB 221。在步骤525,DMA操作将读取数据从CPU2 NTB 221传输到在HV存储驱动器248处的HV(A4)。接着,读取数据可由应用202(未示出)访问。在步骤526,CPU2DMA 240-2使用指示DMA操作已完成的中断来中断HV存储驱动器248。在步骤528-1,HV存储驱动器248在CPU2 NTB 221处执行NTB按门铃。在步骤528-2,CPU2 NTB 221在CPU1 NTB 221处按门铃。在步骤528-3,CPU1 NTB 221对用于HV(A4)中的读取数据中断SVA存储驱动器204。在步骤534,HV存储驱动器248将RR已完成的消息发送到VFS 246。在步骤536,VFS 246将RR已完成的消息发送到G-OS 108。在步骤538,G-OS108将RR已完成的消息发送到应用102。
现在参考图5B,示出过程图501的实施方式的选定元件的方框图。在图5B中,过程图501描绘在信息处理系统100(参见图1和图2)中的I/O加速的操作(如在本文所述的)。具体地,过程图501描绘由应用202对存储资源的读取操作的I/O加速,其中DMA编程由SVA存储驱动器204执行。
在过程图501中,在步骤502,应用202可将文件读取请求(RR)从存储在目标设备上的目标文件发出到客户OS 108,这在地址空间A1或G-OS(A1)中发生。接着,在步骤504,客户OS 108将RR从G-OS(A1)转换到G-OS(A2),并将RR转发到虚拟文件系统(VFS)246。此外,在步骤504,包括在RR中的文件指標和偏移被转换成用于目标设备的虚拟磁盘块地址,其中RR的目标文件存储在目标设备上。在步骤506,VFS 246将虚拟磁盘块地址转换成物理磁盘块地址,将RR从G-OS(A2)转换到HV(A4),并将RR连同所转换的地址一起发送到HV存储驱动器248。此外,在步骤506,VFS 246牵制用于读取数据的HV(A4)以为RR进行读取。在步骤540,HV存储驱动器248将HV(A4)地址装入CPU2 NTB 221,并经由CPU2 NTB 221发送具有物理块地址、缓冲器尺寸和HV(A4)地址(即RR信息)的NTB消息(即按门铃)。在步骤542,NTB消息由CPU1 NTB 221接收。在步骤544-1,CPU1 NTB 221利用RR信息中断SVA存储驱动器204。在步骤544-2,SVA OS 110接收RR信息。在步骤546,SVA OS 110在RR信息中给出的缓冲器尺寸的SVA(A1)中分配缓冲器,从目标文件读取数据,并将SVA(A1)地址提供到SVA存储驱动器204。在步骤548,SVA存储驱动器204从SVA(A1)转换相应的SVA(A2)地址,将SVA(A2)地址装入CPU1-DMA 240-1,并牵制用于缓冲器的SVA(A2)。在步骤550,开始DMA操作。在步骤552,DMA操作将读取数据从SVA(A2)传输到CPU1 NTB 221。在步骤554,DMA操作将读取数据从CPU1NTB 221传输到CPU2 NTB 221。在步骤556,DMA操作将读取数据从CPU2 NTB 221传输到在HV存储驱动器248处的HV(A4)。在步骤558,CPU1DMA 240-1使用指示DMA操作已完成以及读取数据在HV(A4)中的中断来中断SVA存储驱动器204。在步骤560-1,SVA存储驱动器204在CPU1NTB 221处执行NTB按门铃。在步骤560-2,CPU1 NTB 221在CPU2 NTB 221处按门铃。在步骤562,CPU2 NTB 221使用RR已完成的消息中断HV存储驱动器248。在步骤534,HV存储驱动器248将RR已完成的消息发送到VFS 246。在步骤536,VFS 246将RR已完成的消息发送到G-OS108。在步骤538,G-OS 108将RR已完成的消息发送到应用102。
现在参考图6,该图为以流程图形式描绘的、用于在虚拟化信息处理系统中的I/O加速的方法600的实施方式的选定元件的方框图(如在本文所述的)。可使用信息处理系统100(参见图1和图2)来执行方法600。应当注意,在方法600中描述的某些操作可以是可选的,或可在不同的实施方式中被重新布置。
在图6中,方法600可首先(操作602)装入存储虚拟设备以作为在使用第一处理器和第二处理器执行的管理程序上的虚拟机,其中存储虚拟设备由管理程序使用第一快捷外围部件互连(PCI-E)设备驱动器访问,该第一快捷外围部件互连(PCI-E)设备驱动器被映射到在第一处理器的第一PCI-E NTB逻辑端点处的PCI-E非透明桥(NTB)。可在存储虚拟设备上装入第二PCI-E设备驱动器(操作604),该存储虚拟设备访问管理程序并被映射到在第二处理器的第二PCI-E NTB逻辑端点处的PCI-E NTB。可在被映射到第一PCI-E NTB逻辑端点的第一存储空间和被映射到第二PCI-E NTB逻辑端点的第二存储空间之间执行(操作606)数据传输操作,其中管理程序在第一存储空间中执行,其中存储虚拟设备在第二存储空间中执行,以及其中PCI NTB提供在第一存储空间和第二存储空间之间的地址转换。
本文详细描述了用于虚拟化信息处理系统中的I/O加速的方法和系统,其包括装入存储虚拟设备以作为在管理程序上的虚拟机。管理程序可使用第一处理器和第二处理器来执行。存储虚拟设备可由管理程序使用PCI-E设备驱动器来访问,该PCI-E设备驱动器被映射到在第一处理器处的第一PCI-E NTB逻辑端点。第二PCI-E设备驱动器可位于存储虚拟设备上,存储虚拟设备访问管理程序并被映射到在第二处理器的第二PCI-E NTB逻辑端点。可在被映射到第一PCI-E NTB逻辑端点的第一存储空间和被映射到第二PCI-E NTB逻辑端点的第二存储空间之间执行数据传输操作。该数据传输操作可以是读取操作或写入操作。
以上公开的主题应被示为是例证性的而不是限制性的。所附权利要求意欲涵盖所有落入在本公开的真实精神和范围内的修改、增强和其它实施方式。因此,在法律上许可的最大程度上,本公开的范围应由以下的权利要求及其等效形式的最宽泛围的、可允许的解释确定,而不应被以上详细描述约束或限制。

Claims (21)

1.一种使用至少两个处理器来执行的方法,所述至少两个处理器包括第一处理器和第二处理器,所述方法包括:
装入存储虚拟设备以作为在使用所述第一处理器和所述第二处理器执行的管理程序上的虚拟机,其中所述存储虚拟设备由所述管理程序使用第一快捷外围部件互连设备驱动器来访问,所述第一快捷外围部件互连设备驱动器被映射到在所述第一处理器的第一快捷外围部件互连非透明桥的逻辑端点处的快捷外围部件互连非透明桥;
将第二快捷外围部件互连设备驱动器装入所述存储虚拟设备,所述存储虚拟设备访问所述管理程序并被映射到在所述第二处理器的第二快捷外围部件互连非透明桥的逻辑端点处的快捷外围部件互连非透明桥;以及
在被映射到所述第一快捷外围部件互连非透明桥的逻辑端点的第一存储空间和被映射到所述第二快捷外围部件互连非透明桥的逻辑端点的第二存储空间之间执行数据传输操作,
其中所述管理程序在所述第一存储空间中执行,
其中所述存储虚拟设备在所述第二存储空间中执行,以及
其中所述外围部件互连非透明桥提供在所述第一存储空间和所述第二存储空间之间的地址转换。
2.如权利要求1所述的方法,其中所述数据传输操作从以下一项发起:所述第一存储空间和所述第二存储空间。
3.如权利要求1所述的方法,其中所述数据传输操作包括直接存储器存取操作。
4.如权利要求3所述的方法,其中所述直接存储器存取操作从所述第一存储空间到所述第二存储空间发生。
5.如权利要求3所述的方法,其中所述直接存储器存取操作从所述第二存储空间到所述第一存储空间发生。
6.如权利要求1所述的方法,其中所述数据传输操作包括被编程的输入/输出。
7.如权利要求1所述的方法,其中所述第一处理器与第一物理存储器库相关联,而所述第二处理器与第二物理存储器库相关联;
其中装入所述存储虚拟设备包括指定用于数据传输操作的所述第二处理器;以及
其中所述第二快捷外围部件互连非透明桥的逻辑端点被仅仅映射到所述第二物理存储器库。
8.一种包括存储指令的非临时计算机可读介质的制品,当指令由至少两个处理器执行时,所述指令使所述两个处理器执行以下操作,其中所述至少两个处理器包括第一处理器和第二处理器:
装入存储虚拟设备以作为在使用所述第一处理器和所述第二处理器执行的管理程序上的虚拟机,其中所述存储虚拟设备由所述管理程序使用第一快捷外围部件互连设备驱动器来访问,所述第一快捷外围部件互连设备驱动器被映射到在所述第一处理器的第一快捷外围部件互连非透明桥的逻辑端点处的快捷外围部件互连非透明桥;
将第二快捷外围部件互连设备驱动器装入所述存储虚拟设备,所述存储虚拟设备访问所述管理程序并被映射到在所述第二处理器的第二快捷外围部件互连非透明桥的逻辑端点处的快捷外围部件互连非透明桥;以及
在被映射到所述第一快捷外围部件互连非透明桥的逻辑端点的第一存储空间和被映射到所述第二快捷外围部件互连非透明桥的逻辑端点的第二存储空间之间执行数据传输操作,
其中所述管理程序在所述第一存储空间中执行,
其中所述存储虚拟设备在所述第二存储空间中执行,以及
其中所述外围部件互连非透明桥提供在所述第一存储空间和所述第二存储空间之间的地址转换。
9.如权利要求8所述的制品,其中所述数据传输操作从以下一项发起:所述第一存储空间和所述第二存储空间。
10.如权利要求8所述的制品,其中所述数据传输操作包括直接存储器存取操作。
11.如权利要求10所述的制品,其中所述直接存储器存取操作从所述第一存储空间到所述第二存储空间发生。
12.如权利要求10所述的制品,其中所述直接存储器存取操作从所述第二存储空间到所述第一存储空间发生。
13.如权利要求8所述的制品,其中所述数据传输操作包括被编程的输入/输出。
14.如权利要求8所述的制品,其中所述第一处理器与第一物理存储器库相关联,而所述第二处理器与第二物理存储器库相关联;
其中装入所述存储虚拟设备包括指定用于数据传输操作的所述第二处理器;以及
其中所述第二快捷外围部件互连非透明桥的逻辑端点被仅仅映射到所述第二物理存储器库。
15.一种信息处理系统,包括:
处理器子系统,其访问存储器子系统,所述处理器子系统包括第一处理器和第二处理器,其中所述存储器子系统存储可由所述处理器子系统执行的指令,当所述指令由所述处理器子系统执行时,所述指令使所述处理器子系统执行以下操作:
装入存储虚拟设备以作为在使用所述第一处理器和所述第二处理器执行的管理程序上的虚拟机,其中所述存储虚拟设备由所述管理程序使用第一快捷外围部件互连设备驱动器来访问,所述第一快捷外围部件互连设备驱动器被映射到在所述第一处理器的第一快捷外围部件互连非透明桥的逻辑端点处的快捷外围部件互连非透明桥;
将第二快捷外围部件互连设备驱动器装入所述存储虚拟设备,所述存储虚拟设备访问所述管理程序并被映射到在所述第二处理器的第二快捷外围部件互连非透明桥的逻辑端点处的快捷外围部件互连非透明桥;以及
在被映射到所述第一快捷外围部件互连非透明桥的逻辑端点的第一存储空间和被映射到所述第二快捷外围部件互连非透明桥的逻辑端点的第二存储空间之间执行数据传输操作,
其中所述管理程序在所述第一存储空间中执行,
其中所述存储虚拟设备在所述第二存储空间中执行,以及
其中所述外围部件互连非透明桥提供在所述第一存储空间和所述第二存储空间之间的地址转换。
16.如权利要求15所述的信息处理系统,其中所述数据传输操作从以下一项发起:所述第一存储空间和所述第二存储空间。
17.如权利要求15所述的信息处理系统,其中所述数据传输操作包括直接存储器存取操作。
18.如权利要求17所述的信息处理系统,其中所述直接存储器存取操作从所述第一存储空间到所述第二存储空间发生。
19.如权利要求17所述的信息处理系统,其中所述直接存储器存取操作从所述第二存储空间到所述第一存储空间发生。
20.如权利要求15所述的信息处理系统,其中所述数据传输操作包括被编程的输入/输出。
21.如权利要求15所述的信息处理系统,其中所述第一处理器与第一物理存储器库相关联,而所述第二处理器与第二物理存储器库相关联;
其中装入所述存储虚拟设备包括指定用于数据传输操作的所述第二处理器;以及
其中所述第二快捷外围部件互连非透明桥的逻辑端点被仅仅映射到所述第二物理存储器库。
CN201480080327.2A 2014-07-08 2014-10-29 在虚拟化信息处理系统中的输入/输出加速 Active CN106471469B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/326,122 2014-07-08
US14/326,122 US9626324B2 (en) 2014-07-08 2014-07-08 Input/output acceleration in virtualized information handling systems
PCT/US2014/062914 WO2016007189A1 (en) 2014-07-08 2014-10-29 Input/output acceleration in virtualized information handling systems

Publications (2)

Publication Number Publication Date
CN106471469A true CN106471469A (zh) 2017-03-01
CN106471469B CN106471469B (zh) 2020-06-23

Family

ID=51894248

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480080327.2A Active CN106471469B (zh) 2014-07-08 2014-10-29 在虚拟化信息处理系统中的输入/输出加速

Country Status (4)

Country Link
US (1) US9626324B2 (zh)
EP (1) EP3167365B1 (zh)
CN (1) CN106471469B (zh)
WO (1) WO2016007189A1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105264506B (zh) * 2013-01-29 2018-01-26 慧与发展有限责任合伙企业 向内存映射配置分配处理器
JP6380084B2 (ja) * 2014-12-19 2018-08-29 富士ゼロックス株式会社 情報処理装置及び情報処理プログラム
US10387343B2 (en) * 2015-04-07 2019-08-20 International Business Machines Corporation Processing of events for accelerators utilized for parallel processing
US10409762B2 (en) * 2016-03-08 2019-09-10 International Business Machines Corporation Remote direct memory access-based on static analysis of asynchronous blocks
US20180181421A1 (en) * 2016-12-27 2018-06-28 Intel Corporation Transferring packets between virtual machines via a direct memory access device
JP6731434B2 (ja) * 2018-03-15 2020-07-29 日本電信電話株式会社 デバイス割り当て方法、システムおよびプログラム
WO2020055921A1 (en) * 2018-09-10 2020-03-19 GigaIO Networks, Inc. Methods and apparatus for high-speed data bus connection and fabric management
CN109213574A (zh) * 2018-09-26 2019-01-15 郑州云海信息技术有限公司 一种用于存储系统之间的信息传输方法、装置及介质
US11487567B2 (en) * 2018-11-05 2022-11-01 Intel Corporation Techniques for network packet classification, transmission and receipt
US20190391940A1 (en) * 2019-06-28 2019-12-26 Intel Corporation Technologies for interrupt disassociated queuing for multi-queue i/o devices
US10929301B1 (en) * 2019-08-22 2021-02-23 Micron Technology, Inc. Hierarchical memory systems
US10996975B2 (en) * 2019-08-22 2021-05-04 Micron Technology, Inc. Hierarchical memory systems
US11403247B2 (en) 2019-09-10 2022-08-02 GigaIO Networks, Inc. Methods and apparatus for network interface fabric send/receive operations
US11593288B2 (en) 2019-10-02 2023-02-28 GigalO Networks, Inc. Methods and apparatus for fabric interface polling
US11392528B2 (en) 2019-10-25 2022-07-19 Cigaio Networks, Inc. Methods and apparatus for DMA engine descriptors for high speed data systems
US11106607B1 (en) * 2020-03-31 2021-08-31 Dell Products L.P. NUMA-aware storage system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120271981A1 (en) * 2011-04-20 2012-10-25 International Business Machines Corporation Direct memory access-like data transfer between guest operating systems
CN103873489A (zh) * 2012-12-10 2014-06-18 鸿富锦精密工业(深圳)有限公司 具有PCIe接口的装置共享系统及方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4448878B2 (ja) 2007-12-06 2010-04-14 株式会社日立製作所 障害回復環境の設定方法
US20120167082A1 (en) 2010-12-23 2012-06-28 Sanjay Kumar Direct sharing of smart devices through virtualization
US20140258577A1 (en) 2013-03-11 2014-09-11 Futurewei Technologies, Inc. Wire Level Virtualization Over PCI-Express
US9223737B1 (en) * 2013-03-14 2015-12-29 Google Inc. Computer interconnect isolation
US9734096B2 (en) * 2013-05-06 2017-08-15 Industrial Technology Research Institute Method and system for single root input/output virtualization virtual functions sharing on multi-hosts
US9405566B2 (en) * 2013-05-24 2016-08-02 Dell Products L.P. Access to storage resources using a virtual storage appliance

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120271981A1 (en) * 2011-04-20 2012-10-25 International Business Machines Corporation Direct memory access-like data transfer between guest operating systems
CN103873489A (zh) * 2012-12-10 2014-06-18 鸿富锦精密工业(深圳)有限公司 具有PCIe接口的装置共享系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CHENG-CHUN TU等: "Secure I/O device sharing among virtual machines on multiple hosts", 《ACM SIGARCH COMPUTER ARCHITECTURE NEWS》 *

Also Published As

Publication number Publication date
US9626324B2 (en) 2017-04-18
WO2016007189A1 (en) 2016-01-14
US20160012003A1 (en) 2016-01-14
CN106471469B (zh) 2020-06-23
EP3167365A1 (en) 2017-05-17
EP3167365B1 (en) 2021-08-18

Similar Documents

Publication Publication Date Title
CN106471469A (zh) 在虚拟化信息处理系统中的输入/输出加速
JP6607901B2 (ja) スケーラブル分散ストレージアーキテクチャ
US10936535B2 (en) Providing remote, reliant and high performance PCI express device in cloud computing environments
US11093402B2 (en) Transparent host-side caching of virtual disks located on shared storage
JP6798960B2 (ja) 仮想化ストレージエリアネットワークのための仮想ディスクブループリント
US9684545B2 (en) Distributed and continuous computing in a fabric environment
CN106537340A (zh) 虚拟化信息操纵系统的输入/输出加速设备和方法
US20170031699A1 (en) Multiprocessing Within a Storage Array System Executing Controller Firmware Designed for a Uniprocessor Environment
US9575786B2 (en) System and method for raw device mapping in traditional NAS subsystems
US20160162316A1 (en) Offloading and parallelizing translation table operations
US20150127975A1 (en) Distributed virtual array data storage system and method
CN103176845B (zh) 一种虚拟机部署方法、系统和装置
US10346065B2 (en) Method for performing hot-swap of a storage device in a virtualization environment
US8990520B1 (en) Global memory as non-volatile random access memory for guest operating systems
WO2016101282A1 (zh) 一种i/o任务处理的方法、设备和系统
US10977073B2 (en) Architectural data mover for RAID XOR acceleration in a virtualized storage appliance
Fang et al. Future enterprise computing looking into 2020
US10379912B2 (en) Data storage allocation utilizing virtual machine resource allocation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant