CN109791471B - 虚拟化外围装置处的非易失性存储装置 - Google Patents
虚拟化外围装置处的非易失性存储装置 Download PDFInfo
- Publication number
- CN109791471B CN109791471B CN201780059898.1A CN201780059898A CN109791471B CN 109791471 B CN109791471 B CN 109791471B CN 201780059898 A CN201780059898 A CN 201780059898A CN 109791471 B CN109791471 B CN 109791471B
- Authority
- CN
- China
- Prior art keywords
- request
- peripheral device
- storage
- virtual
- interface
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/402—Encrypted data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种外围装置可以为连接到所述外围装置的非易失性存储装置实施存储虚拟化。连接到所述外围装置的主机系统可以托管一个或多个虚拟机。所述外围装置可以为所述虚拟机或所述主机系统实施不同的虚拟接口,所述虚拟接口将非易失性存储装置处的存储分区呈现给所述虚拟机或所述主机系统以供存储。来自所述虚拟机或所述主机系统的访问请求被引导到所述外围装置处的相应虚拟接口。所述外围装置可以执行数据加密或解密,或者可以执行对访问请求的限制。所述外围装置可以生成执行经由所述虚拟接口接收的所述访问请求的物理访问请求并将其发送到所述非易失性存储装置。可以经由所述虚拟接口向所述虚拟机指示所述访问请求的完成。
Description
背景技术
对计算服务的需求继续推动开发以增加硬件资源满足需求的能力。然而,替换整组硬件资源以便获得最新技术能力(例如,替换整个服务器或服务器机架)可能非常昂贵。外围装置提供了一种扩展固定计算资源的能力的成本效益方式。例如,在没有外围装置的情况下,服务器将会被限于服务器母板上的内置功能(例如,内置存储器、处理器和其他计算资源)。通过在扩展接口(例如,PCI或PCIe插槽)中安装外围装置,可以提高服务器的能力。例如,可以添加图形卡、网络接口卡、附加存储器或用于存储的装置控制器或接口以增强服务器的功能性。此外,具有更高性能能力的更新型外围装置对安装和替换现有外围装置可能更具成本效益。因此,外围装置对于通过提供对现有硬件资源的成本有效升级来满足计算服务需求至关重要。
附图说明
图1示出了根据一些实施方案的虚拟化外围装置处的非易失性存储的逻辑框图。
图2是示出根据一些实施方案的实施多个基于网络的服务的提供商网络的框图,所述基于网络的服务包括资源主机,所述资源主机利用外围装置来提供在所述资源主机处实施的非易失性存储装置的虚拟化。
图3是示出根据一些实施方案的实施外围网络处理装置的资源主机的逻辑框图,所述外围网络处理装置提供连接到资源主机处的外围装置的非易失性存储装置的虚拟化。
图4是示出根据一些实施方案的主机、外围装置和由外围装置虚拟化的非易失性存储装置之间的控制交互的逻辑框图。
图5是示出根据一些实施方案的处理经由在外围装置处针对虚拟计算实例实施的虚拟接口写入数据的请求的逻辑框图。
图6是示出根据一些实施方案的处理经由在外围装置处针对虚拟计算实例实施的虚拟接口读取数据的请求的逻辑框图。
图7是示出根据一些实施方案的虚拟化外围装置处的非易失性存储装置的各种方法和技术的高级流程图。
图8是示出根据一些实施方案的用于对外围装置处的存储虚拟化应用执行实时更新的各种方法和技术的高级流程图。
图9是示出根据一些实施方案的示例性计算系统的框图。
虽然本文通过若干实施方案和说明性附图以示例方式描述了各实施方案,但是本领域技术人员将认识到,所述实施方案并不限于所述实施方案或附图。应理解,附图及其详细描述并不意图将各实施方案限于所公开的特定形式,而是本发明将涵盖落在如所附权利要求所限定的精神和范围内的所有修改、等效物和替代方案。本文中使用的标题仅是为了组织目的,而并不意图用于限制说明书或权利要求的范围。如贯穿本申请所使用,词语“可以”是在许可的意义上(即意指具有可能性)而非强制的意义上(即,意指必须)使用。类似地,词语“包括(include、including和includes)”意指包括但不限于。
具体实施方式
本文中描述的系统和方法可以实施虚拟化外围装置处的非易失性存储。诸如各种服务器、计算机等计算资源和其他计算装置可以利用外围装置来扩展计算资源的能力,所述能力超出了计算资源的底层硬件可以提供的能力。因此,由于安装了外围装置,因此可以改变附加的图形处理能力、网络处理能力、存储处理能力或其他计算能力。例如,计算资源可以虚拟地实施为虚拟机。为了向虚拟机提供对底层硬件的访问,主机系统可以实施虚拟化管理以访问底层硬件。例如,已经开发了用于共享处理资源、网络资源和诸如存储装置等其他计算资源的各种技术。
随着不同资源能力的变化,虚拟化技术必须与变化保持同步使得虚拟机能够充分利用底层硬件的能力。例如,为虚拟机提供持久的基于块的存储的持久性存储资源已经改变为包括非机械存储访问技术。例如,固态驱动器(SSD)实现快闪存储器单元阵列以存储数据,使得访问数据不受机械读取器的速度限制(基于磁盘的存储装置的情况就是这样)。虽然虚拟化技术能够提供对不依赖于机械访问机制的新存储装置(SSD或其他非易失性存储装置)的访问,但是尚未在存储虚拟化中最佳地考虑用于访问非易失性存储装置的经改进的接口规范(其利用了非易失性存储装置的更快访问能力)。在各种实施方案中,外围装置可以为非易失性存储提供存储虚拟化,而不是依赖于对主机系统的改进来提供用于利用经改进的接口规范的经改进的虚拟化技术(诸如非易失性存储器标准(NVMe))。通过这种方式,可以在不必修改现有虚拟化技术的情况下扩展主机系统的能力,或者在一些实施方案中,可以将所有虚拟化或管理转移到一个或多个外围装置,使得主机系统在不必为硬件资源实施虚拟化的情况下操作用户期望的软件栈。此外,通过使存储虚拟化在外围装置处独立,当新的存储接口规范和/或新的非易失性存储装置变得可用时,可以易于更新外围装置。
图1示出了根据一些实施方案的虚拟化外围装置处的非易失性存储的逻辑框图。外围装置120可以实施存储装置虚拟化122,使得主机110(或者在没有虚拟机的操作系统的控制下直接操作的主机110)上的不同的相应虚拟机112可以提交虚拟I/O请求140,所述虚拟I/O请求利用具有非易失性存储装置130的高速接口规范的能力。例如,存储装置虚拟化可以实施单独的虚拟接口(如下面关于图3至图6所讨论的)以便向虚拟机呈现接口,所述接口对于虚拟机作为存储分区(例如,存储装置的格式化和分配部分,诸如分区)出现,所述存储分区可以被视为直接连接到主机(而不是连接到与主机110连接的外围装置120)的存储装置的控制器。例如,如果外围装置120经由外围部件互连快速(PCIe)连接到主机110,则可以通过利用单根输入/输出虚拟化(SR-IOV)创建虚拟功能来创建虚拟接口,所述虚拟功能将所述接口镜像、将会被非易失性存储装置130的控制器暴露。通过这种方式,存储装置虚拟化可以提供可以易于由虚拟机112利用(或者直接由主机110利用,如主机110与外围装置120之间的箭头所指示)的公共接口,而与单独的后端非易失性存储装置130(所述后端非易失性存储装置可以具有因制造商不同而稍微变化的接口,即使总体上符合接口规范)对接的特性可以由存储装置虚拟化122来处理。然后,存储装置虚拟化122的虚拟接口可以提交物理I/O请求150以执行虚拟I/O请求,同时保持不同虚拟机112之间的隔离。
存储装置虚拟化122可以是无状态的,使得数据并非持久地保持在外围装置上。通过这种方式,存储装置虚拟化122不必实施从主机110和非易失性存储装置130提交的数据之间的一致性机制(因为尚没有数据被认为是持久的且仅存在于外围装置120上)。无状态实施方式还可以通过物理地移除外围装置来防止潜在的数据被盗,因为没有数据持久地存储在外围装置120上。
外围装置120可以包括硬件和/或软件部件的配置(例如,一个或多个通用或专用处理器(例如,一个或多个多核处理器)、主机接口总线、存储器、网络接口和内部I/O接口),所述硬件和/或软件部件被实施以提供存储装置虚拟化122,诸如下面在图4至图6讨论的。在一些实施方案中,外围装置120可以提供附加特征,诸如透明加密(从虚拟机112和/或主机110的角度来看)、透明压缩,或对存储在非易失性存储装置中的数据的任何其他透明修改以及用于单独的虚拟机的I/O请求限制。除了虚拟接口之外,存储装置虚拟化122还可以包括诸如下面关于图4所讨论的控制接口,所述控制接口可以允许主机对非易失性存储装置130或存储装置虚拟化122执行管理或配置操作。
请注意,先前的描述并非意图为限制性的,而是仅作为外围装置处的存储虚拟化的示例而提供。可以实施各种类型的外围装置、主机系统和虚拟机,以及可以执行除了在上面讨论的示例中给出的那些请求之外的不同I/O请求。
本说明书以对提供商网络的总体描述开始,所述提供商网络可以实施用于利用外围装置实施非易失性存储的虚拟化的资源(诸如经由虚拟计算服务提供的虚拟计算实例)的资源主机。然后讨论资源主机和外围装置的各种示例,包括不同的部件/模块,或可以用作外围装置的替代性事件报告的一部分的部件/模块的布置。然后讨论实施外围装置处的非易失性存储装置的虚拟化的许多不同方法和技术,其中的一些方法和技术在所附流程图中示出。最后,提供对可以在其上实施各种主机、部件、模块、系统、装置和/或节点的示例性计算系统的描述。贯穿本说明书提供各个示例。
图2是示出根据一些实施方案的实施多个基于网络的服务的提供商网络的框图,所述基于网络的服务包括资源主机,所述资源主机利用外围装置来提供在所述资源主机处实施的非易失性存储装置的虚拟化。提供商网络200可以由诸如公司或公共部门组织等实体设立,以向客户端210提供可经由互联网和/或其他网络访问的一种或多种服务(诸如各种类型的基于云的计算或存储)。提供商网络200可以包括许多数据中心,所述数据中心托管实施和分布由提供商网络200供应的基础设施和服务所需要的各种资源池(诸如物理和/或虚拟化计算机服务器、存储装置、联网设备等的集合(例如,下面关于图9描述的计算系统1000)。
在一些实施方案中,提供商网络200可以提供诸如虚拟计算服务220等计算资源、诸如基于块的存储服务和其他存储服务230等存储服务(其可以包括各种存储类型,诸如基于对象/键值的数据存储,或各种类型的数据库系统和/或任何其他类型的基于网络的服务。客户端210可以经由网络260访问由提供商网络200提供的这些各种服务。同样地,基于网络的服务本身可以彼此通信和/或利用来提供不同服务。例如,计算资源以被称为“实例”的单元提供给客户端210,诸如虚拟或物理计算实例或存储实例,其可以利用实施实例的资源主机本地的非易失性存储装置(例如,直接连接到也与资源主机处理硬件直接连接的外围装置的存储装置)。
如上所述,虚拟计算服务220可以向客户端210提供各种计算实例。虚拟计算服务220可以实施各种资源主机224(例如,服务器或其他计算装置,诸如下面关于图9所描述的),所述资源主机提供虚拟计算实例利用来操作的各种物理计算资源。资源主机可以托管一种或多种类型的虚拟计算实例。例如,虚拟计算实例可以包括具有指定计算能力(其可以通过指示CPU的类型和数量、主存储器大小等等来指定)和指定软件栈(例如,操作系统的特定版本,其继而可以在管理程序之上运行)的一个或多个服务器。在不同的实施方案中,许多不同类型的计算装置可以单独或组合使用以实施虚拟计算服务230的计算实例,所述计算实例包括专用计算机服务器、存储装置、网络装置等。在一些实施方案中,实例客户端210或其他任何其他用户可以被配置(和/或被授权)为将网络流量引导到计算实例。在各种实施方案中,计算实例可以附加或映射到由其他基于网络的服务230提供的一个或多个数据卷或资源。
计算实例可以操作或实施适合于在(例如)不需要客户端210访问实例的情况下执行客户端应用的各种不同的平台,诸如应用服务器实例、JavaTM虚拟机(JVM)、专用操作系统、支持各种解释或编译的程序设计语言(诸如Ruby、Perl、Python、C、C++等)的平台或高性能计算平台。在一些实施方案中,基于预期的正常运行时间比率,计算实例具有不同的类型或配置。特定计算实例的正常运行时间比率可以被定义为实例被激活的时间量与实例被保留的总时间量之比。在一些实施方式中,正常运行时间比率也可以被定义为利用率。如果客户端预期在实例被保留的时间的相对较小部分内(例如,为期一年保留的30%至35%)使用计算实例,则客户端可以决定将所述实例保留为低正常运行时间比率实例,并且根据相关定价政策支付打折扣的每小时使用费用。如果客户端预期具有需要实例在部分时间内工作的稳态工作负载,则客户端可以保留高正常运行时间比率实例并且潜在地支付更低的每小时使用费用,尽管在一些实施方案中,不管实际使用小时数如何,根据定价政策,都可能对整个保留持续时间收取每小时费用。在一些实施方案中也可以支持具有相应定价政策的中间正常运行时间比率实例的选项,其中预付成本和每小时成本落在相应的高正常运行时间比率成本与低正常运行时间比率成本之间。在至少一些实施方案中,可以提供一种计算实例,其利用高速接口上的本地非易失性存储装置,所述高速接口诸如在下面关于图3至图6讨论的非易失性存储器(NVMe)。
计算实例配置还可以包括通用或专用计算实例,诸如,用于计算密集型应用(例如,高流量网络应用、广告投放、批量处理、视频编码、分布式分析学、高能物理学、基因组分析和计算流体动力学)的计算工作负载、图形密集型工作负载(例如,游戏流、3D应用流、服务器端图形工作负载、渲染、金融建模和工程设计)、存储器密集型工作负载(例如,高性能数据库、分布式存储器高速缓冲、存储器中分析学、基因组拼接和分析),以及存储优化工作负载(例如,数据仓库和集群文件系统)。计算实例的大小,诸如特定数量的虚拟CPU核心、存储器、高速缓冲、存储装置以及任何其他性能特性。计算实例的配置还可以包括它们在特定数据中心、可用区、地理位置等中的位置等以及(在保留的计算实例的情况下)保留期限长度。
除了提供虚拟计算实例之外,在一些实施方案中,虚拟计算服务220还可以提供“裸机(bare metal)”实例,其在没有其他实例或虚拟化管理的情况下直接操作或控制资源主机。相反,资源主机可以由其他外围装置(其可以处理配置在提供商网络200内操作的资源主机网络、软件安装、安全性等的操作)供应或控制。通过这种方式,裸机实例可以直接在资源主机的硬件上执行由客户端(例如,通过图像)提供的操作系统和应用。可以使用在下面针对虚拟计算实例所讨论的相同技术将非易失性存储装置的虚拟化呈现给裸机实例。
客户端210可以包含可配置以向网络提供商200提交请求的任何类型的客户端。例如,给定客户端210可以包括合适版本的网络浏览器,或可以包括插件模块或被配置为作为对由网络浏览器提供的执行环境的扩展执行或在所述执行环境内执行的其他类型的代码模块。替代地,客户端210可以包含应用,诸如数据库应用(或其用户界面)、媒体应用、办公室应用,或可以利用虚拟计算服务220或提供商网络200中的其他基于网络的服务230中的计算实例来执行各种操作的任何其他应用。在一些实施方案中,此类应用可以包括足够的协议支持(例如,针对合适版本的超文本传输协议(HTTP))以用于生成和处理基于网络的服务请求,而不必针对所有类型的基于网络的数据实施完整浏览器支持。在一些实施方案中,客户端210可以被配置为根据表述性状态转移(REST)风格的基于网络的服务架构、基于文件或消息的基于网络的服务架构或另一种合适的基于网络的服务架构来生成基于网络的服务请求。在一些实施方案中,客户端210(例如,计算型客户端)可以被配置为通过对在客户端210上利用由计算实例提供的计算资源实施的应用透明的方式来提供对计算实例的访问。
客户端210可以经由外部网络260向提供商网络200传达基于网络的服务请求。在各种实施方案中,外部网络260可以包含在客户端210与提供商网络200之间建立基于网络的通信所必需的联网硬件和协议的任何合适组合。例如,网络260通常可以包含共同实施互联网的各种电信网络和服务提供商。网络260还可以包括专用网络(诸如局域网(LAN)或广域网(WAN))以及公用或专用无线网络。例如,给定客户端210和提供商网络200两者都可以分别被供应在具有其自身内部网络的企业内。在此类环境中,网络260可以包括在给定客户端210与互联网之间以及在互联网与提供商网络200之间建立联网链路所必需的硬件(例如,调制解调器、路由器、交换器、负载均衡器、代理服务器等)和软件(例如,协议栈、会计软件、防火墙/安全软件等)。应注意,在一些实施方案中,客户端210可以使用专用网络而不是公用互联网来与提供商网络200通信。
图3是示出根据一些实施方案的实施外围装置的资源主机的逻辑框图,所述外围装置提供连接到资源主机处的外围装置的非易失性存储装置的虚拟化。资源主机300示出了外围装置310,其实施不同的虚拟存储接口314以提供对用于虚拟计算实例380的非易失性存储装置320的存储分区的访问。如图3示出,在提供商网络200的至少一些实施方案中,提供给提供商网络200的客户端的至少一些计算资源可以是在为一个或多个其他客户端所共享的多租户硬件和/或专用于特定客户端的硬件上实施的虚拟化计算资源(例如,虚拟计算实例380a可以与虚拟计算实例380b、380c和380d被托管用于不同的客户端)。
提供商网络200上的至少一些虚拟计算实例380可以根据硬件虚拟化技术来实施,所述硬件虚拟化技术使得多个操作系统能够同时在主计算机(诸如资源主机300)上运行,即,作为主机上的虚拟机(VM)运行。主机300上的管理程序或虚拟机监视器、域零或其他虚拟化管理370使用虚拟平台呈现相应主机300上的虚拟计算实例380,并监视主机300上的客户端资源实例380的执行。可以通过访问为虚拟计算实例380分配的存储分区来向每个虚拟计算实例380提供对非易失性存储装置320的访问。如图3中所示,虚拟化管理370和客户端资源实例380可以在主机300的主机装置处理部件360(例如由主机300实施的一个或多个处理器和存储器)的上实施并由其执行。图9是示出可以在一些实施方案中用作主机300的示例性计算机系统的框图。
在至少一些实施方案中,主机300可以包括或可以耦接到一个或多个外围装置310,所述外围装置为主机300和非易失性存储装置320上的虚拟计算实例380提供存储虚拟化。一个或多个外围装置310可以根据外围互连350(其可以是任何类型的扩展总线标准,诸如外围组件互连(PCI)、PCI扩展(PCI-X)、PCI express(PCIe)或加速图形端口(AGP))连接到主机系统处理360并与所述主机系统处理通信。例如,外围网络处理装置310可以是实施专用集成电路(ASIC)、现场可编程门阵列(FPGA)或执行(execute和/或perform)在下面关于图4至图8描述的技术的片上系统(SoC)的卡,以及插入主机300的PCIe扩展插槽或PCIe总线的PCIe接口。
诸如装置320a、320b和320c等非易失性存储装置可以是基于闪存的存储装置或其他随机存取存储装置,其可以不使用机械访问机制(例如,电子访问机制)的情况下代表客户端提供持久性的基于块的存储。例如,固态驱动器可以是非易失性存储装置,如可以是非易失性双列直插式存储器模块(NVDIMM)或电池支持的随机存取存储器,且因此前面的示例并非意图为限制性的。非易失性存储装置可以经由外围互连330(例如,外围部件互连(PCI)、PCI扩展(PCI-X)、PCI express(PCIe))与外围装置310连接。在至少一些实施方案中,非易失性存储装置可以实施控制器,所述控制器被配置为根据用于非易失性存储装置的高速接口规范(诸如非易失性存储器标准(NVMe))来处理I/O的控制器。
外围装置310可以实施控制接口312以相对于存储虚拟化的实施执行各种配置动作。例如,在一些实施方案中,控制接口312可以被实施为SR-IOV物理功能以将非易失性存储装置320的配置特征和能力呈现给虚拟化管理370以执行各种管理和配置操作。另外,控制接口312还可以为外围装置310上的存储虚拟化的操作提供定制或专用控制。图4是示出根据一些实施方案的主机、外围装置和由外围装置虚拟化的非易失性存储装置之间的控制交互的逻辑框图。可以实施控制接口(诸如控制接口410)以便为资源主机的虚拟化管理370提供管理连接到外围装置的非易失性存储装置的虚拟化的能力以及外围装置的操作。例如,如在402处所指示,虚拟化管理可以代表在资源主机处执行的虚拟计算实例来提交对配置一个或多个虚拟接口402的请求。
考虑发起新实例的场景。虚拟化管理370可以提交配置请求402以在非易失性存储装置处分配存储分区(诸如存储分区422)。所述配置请求可以包括外围装置可能需要分区、格式化和/或绑定存储分区422的任何信息。例如,配置请求402可以包括存储分区的分区大小或格式类型。与典型的存储分区绑定相比,可以延迟执行存储分区绑定,所述典型的存储分区绑定由作为虚拟计算实例的一部分实施的操作系统来引导。相反,用于外围装置的控制接口410根据配置请求402执行412存储分区的分区和格式化,然后将存储分区附接或绑定到已为新存储分区发起/创建/实例化的虚拟接口(例如,虚拟接口432绑定440到存储分区422)。类似地,配置请求402可以释放、收回虚拟计算实例的存储分区和/或解除对所述存储分区的绑定。例如,可以关闭将请求引导到虚拟接口434的虚拟计算实例。虚拟化管理370可以发送请求402以收回存储分区424(例如,将它重新格式化或使它可用于创建新的存储分区)、解除虚拟接口434与存储分区424的绑定,以及关闭或中止虚拟接口434。配置请求402还可以用于为资源主机处的新实例设立新的虚拟接口。例如,外围装置处的存储虚拟化可以创建或实例化新的SR-IOV虚拟功能,所述虚拟功能将非易失性存储装置的I/O特征镜像,所述非易失性存储装置可以保持将被绑定到所述虚拟功能的存储分区。
虚拟化管理370还可以执行各种其他请求。例如,虚拟化管理370可以提交请求404以获得在外围装置处收集的装置信息。尽管外围装置处的虚拟化可以被实施为无状态应用,但是可以周期性地从外围装置推送或请求各种不同的度量、日志或关于外围装置本身或非易失性存储装置的其他信息。例如,可以收集外围装置的部件(诸如CPU或存储器)的硬件性能度量,以及关于非易失性存储装置的健康状况信息,诸如自我监控、分析和报告技术(SMART)数据。响应于检索该信息,主机系统可以基于所接收的信息(例如,非易失性存储装置的故障指示)来评估和/或触发警报或事件。
虚拟化管理370还能够配置外围装置处的存储虚拟化的各种特征的操作,诸如启用、禁用或以其他方式配置每个虚拟接口的加密或限制。例如,加密配置请求406可以为一个虚拟接口(诸如虚拟接口434)提供密钥,而另一个加密配置请求可以为虚拟接口432提供不同的密钥。类似地,限制配置请求408可以指定用于对虚拟接口的访问请求(在一些实施方案中,包括用于不同虚拟接口的不同访问请求)的限制阈值。虚拟化管理370还可以发起实时固件更新414以用于在外围装置处存储虚拟化应用,如在下面关于图8所讨论的,以在不禁用非易失性存储装置或资源主机的情况下提供对存储虚拟化的实时更新。请注意,配置接口412能够接收和响应于各种不同的配置命令,且因此,就可以经由控制接口412处理的其他类型的请求而言,先前的示例并非意图为限制并非性的。
返回到图3,外围装置还可以实施不同的虚拟接口314,其代表不同的虚拟计算实例被绑定到相应的存储分区。通过这种方式,可以在不知道计算实例的情况下维持计算实例之间的隔离。例如,可以向虚拟实例呈现虚拟接口,就如同用于非易失性存储装置320的控制器向虚拟计算实例呈现虚拟接口一样。加密和/或限制也可以基于每个虚拟接口来实施,扩展单独的虚拟接口可以提供给实例的特征。
在至少一些实施方案中,虚拟接口可以提供非易失性存储器标准(NVMe)接口的镜像或子集。图5和图6提供了外围装置处的NVMe的示例性虚拟化。图5是示出根据一些实施方案的处理经由在外围装置处针对虚拟计算实例实施的虚拟接口写入数据的请求的逻辑框图。主机物理存储器500可以是在资源处实施的一个或多个存储器装置,其用于为虚拟计算实例提供物理地址空间(诸如实例存储器空间510)。作为实施用于与非易失性存储装置550通信的驱动器或机制的一部分,用于虚拟计算实例的操作系统可以在实例存储器空间510内创建I/O提交队列514以及I/O完成队列516。通过这种方式,可以创建并获得一对提交条目和完成条目(条目524和条目526)作为执行I/O请求的一部分。在图5中,虚拟计算实例可以创建指示写入数据522的请求的条目524。条目524可以包括将数据522写入到也在存储空间510中实例化的单独数据缓冲器512中的链接或指针。
然后,虚拟计算实例可以通过与虚拟接口530是用于非易失性存储装置550的控制器相同的方式向虚拟接口530发送I/O提交条目570的指示。例如,指示570可以是通过对用于虚拟接口530的外围装置处的寄存器的直接存储器访问502(例如,通过利用输入/输出存储器管理单元(IOMMU))对酒吧的门铃寄存器的写入。可以响应于对门铃寄存器的写入而触发事件,并且所述事件被置于环形缓冲器中(所述环形缓冲器可以被访问以评估所述事件以进行处理)。在一些实施方案中,虚拟接口530可以实施I/O限制533,其可以确定是否将限制对所指示事件的I/O请求(例如,根据在下面关于图7所讨论的限制阈值)。如果没有被限制,则虚拟接口530可以经由直接存储器访问502获得572I/O提交524条目,并且经由直接存储器访问502获得574由条目524指向的写入数据522。
在至少一些实施方案中,虚拟接口530可以实施加密引擎531(其可以是将一个或多个加密方案应用于针对虚拟接口530接收的数据的软件和/或硬件实施方式。通过这种方式,加密可以作为外围装置处的虚拟化的一部分在线执行。可以将加密数据写入576到维护在虚拟接口530中的数据缓冲器535。然后,虚拟接口可以在I/O提交队列537中创建578相应条目544,其指向加密的写入数据542(例如,指向缓冲器535中的地址范围)。然后,虚拟接口530可以通过向非易失性存储装置550的控制器指示I/O提交条目580来执行物理写入请求。注意,在一些实施方案中,I/O提交队列537和I/O完成队列539可以在多个虚拟接口之间共享,所述虚拟接口由同一非易失性存储装置(例如,存储装置550)提交条目以供执行。与上面讨论的指示570类似,指示580可以是经由直接存储器访问504到非易失性存储装置550处的控制器的门铃寄存器的写入。然后,控制器可以检测由门铃寄存器触发的事件并获得I/O提交条目582。I/O提交条目可以指示对将加密的写入数据542写入非易失性存储装置550中的存储分区560的请求。控制器可以从数据缓冲器535(如条目544所指向的)获得写入数据584并将加密的写入数据542存储在所述存储分区560中。然后,控制器可以将完成条目586写入到I/O完成队列539。虚拟接口530可以检测I/O完成队列539中I/O完成条目546的存在,并在I/O完成队列516中写入相应的完成条目526。条目526的写入可以触发消息信号中断(MSI),其可以向虚拟计算实例通知写入请求完成。
图6是示出根据一些实施方案的处理经由在外围装置处针对虚拟计算实例实施的虚拟接口读取数据的请求的逻辑框图。正如上面的图5,主机物理存储器600可以是在资源处实施的一个或多个存储器装置,其用于为虚拟计算实例提供物理地址空间(诸如实例存储器空间610)。作为实施用于与非易失性存储装置650通信的驱动器或机制的一部分,用于虚拟计算实例的操作系统可以在实例存储器空间610内创建I/O提交队列614以及I/O完成队列616。通过这种方式,可以创建并获得一对提交条目和完成条目(条目624和条目626)作为执行I/O请求的一部分。在图6中,虚拟计算实例可以创建条目624,其指示对从非易失性存储装置650中的存储分区660读取数据的请求。
然后,虚拟计算实例可以通过与虚拟接口630是用于非易失性存储装置650的控制器相同的方式向虚拟接口630发送I/O提交条目670的指示。例如,指示670可以是通过对用于虚拟接口630的外围装置处的寄存器的直接存储器访问602对酒吧的门铃寄存器的写入。可以响应于对门铃寄存器的写入而触发事件,并且所述事件被置于环形缓冲器中(所述环形缓冲器可以被访问以评估所述事件以进行处理)。在一些实施方案中,虚拟接口630可以实施I/O限制633,其可以确定是否将限制对所指示事件的I/O请求(例如,根据在下面关于图7所讨论的限制阈值)。如果没有被限制,则虚拟接口630可以经由直接存储器访问602获得672I/O提交624条目。
然后,虚拟接口630可以在I/O提交队列637中创建674相应条目644。注意,在一些实施方案中,I/O提交队列637和I/O完成队列639可以在多个虚拟接口之间共享,所述虚拟接口由同一非易失性存储装置(例如,存储装置650)提交条目以供执行。然后,虚拟接口630可以通过向非易失性存储装置650的控制器指示I/O提交条目676来执行物理读取请求。与上面讨论的指示670类似,指示676可以是经由直接存储器访问604到非易失性存储装置650处的控制器的门铃寄存器的写入。然后,控制器可以检测由门铃寄存器触发的事件并获得I/O提交条目678。I/O提交条目可以指示对从非易失性存储装置650中的存储分区660读取加密的读取数据642的请求。然后,控制器可以将数据642从存储分区660写入680到数据缓冲器635中的位置。然后,控制器可以将完成条目646写入682到I/O完成队列639。
虚拟接口630可以检测I/O完成队列639中I/O完成条目646的存在、向虚拟计算实例提供读取数据。例如,在至少一些实施方案中,虚拟接口630可以实施加密引擎631(其可以是将一个或多个加密方案应用于针对虚拟接口630接收的数据的软件和/或硬件实施方式)。通过这种方式,加密可以作为外围装置处的虚拟化的一部分在线执行。可以从维护在虚拟接口630中的数据缓冲器635读取加密数据642,并根据用于加密数据的相同加密方案在加密引擎631处对所述加密数据进行解密684。然后,虚拟接口630可以经由直接存储器访问602将解密数据622写入686到数据缓冲器612。然后,虚拟接口630可以在I/O完成队列616中写入688相应的完成条目626,其指向从存储分区660读取的数据在数据缓冲器612中的位置。条目626的写入可以触发消息信号中断(MSI),其可以向虚拟计算实例通知读取请求完成。
请注意,图5和图6描述了处理对诸如NVMe等虚拟接口的访问请求的示例。可以调整其他处理技术或部件以针对与NVMe不同的接口规范执行非易失性存储装置的虚拟化。此外,可以不同地实施虚拟接口中所包括的诸如加密或限制等特征,或者可以实施对数据的其他特征或修改。例如,在一些实施方案中,除了加密之外或代替加密,可以透明地将压缩技术应用于数据。从主机接收的数据可以通过压缩形式写入到非易失性存储装置。类似地,当从非易失性存储装置检索数据时,所述数据可以在经由虚拟接口提供给主机之前进行解压缩。
已经关于连接到提供商网络中的资源主机的外围装置给出了在如上面关于图2至图6所讨论的虚拟化外围装置处的非易失性存储的示例。具有连接到非易失性存储装置和主机的能力的主机系统或外围装置的各种其他类型或配置可以实施这些技术。此外,上述各种模块、部件、系统和或服务的不同配置,可以实施虚拟化外围装置处的非易失性存储。图7是示出根据一些实施方案的虚拟化外围装置处的非易失性存储装置的各种方法和技术的高级流程图。这些技术可以由如上面关于图2至图6所述的外围装置来实施。
如在710处所指示,在各种实施方案中,虚拟接口可以在外围装置处实施,所述虚拟接口作为连接到外围装置的非易失性存储装置的存储分区被呈现给在主机系统处操作的虚拟机或直接呈现给主机系统(例如,在没有任何虚拟机或实例在主机系统处操作的情况下作为如上面关于图2讨论的“裸机”实例或工作负载运行)。虚拟接口可以镜像或近似镜像用于访问非易失性存储器存储装置的接口规范(诸如NVMe),使得虚拟机对于外围装置的实施是不可知的(但是反过来似乎表现为用于非易失性存储装置的控制器所在的虚拟接口)。
如在720处所指示,可以接收经由虚拟接口从虚拟机引导到存储分区的访问请求。如在730处所指示,在一些实施方案中可以实施限制。例如,可以对存储分区实施限制阈值(例如,速率限制或请求限制),所述限制阈值通过以下操作来限制所接收的超过限制阈值的访问请求(如在732处所指示):延迟处理访问请求,直到所述限制阈值用于处理访问请求的能力变得可用为止(例如,通过实施令牌桶(token bucket)技术)。在一些实施方案中,可以为单独的虚拟接口配置或设定限制阈值,使得允许用于一个存储分区的访问请求速率可以高于或低于用于另一个虚拟机的另一个存储分区(例如,因为一种类型的虚拟计算实例可能具有比另一种类型的虚拟计算实例更高的I/O带宽供应)。可以经由如上面关于图4所讨论的控制接口来配置限制阀阈值。
在一些实施方案中,可以不同地处理不同类型的访问请求,如在740处所指示。例如,加密方案可以应用于被存储用于虚拟机的数据,因此如在752处所指示,作为对将数据写入到存储分区的请求的一部分写入非易失性存储装置的数据可以被加密。可以实施各种加密方案(例如,包括对称密钥加密、公钥-私钥加密等)。在一些实施方案中,加密可以由外围装置处的加密引擎来执行,所述加密引擎可以在专用电路中实施。可以将加密密钥作为配置如上面在图4中所讨论的虚拟接口的加密的一部分提供给加密引擎。与限制类似,(例如,通过利用不同的密钥)可以为每个存储分区实施不同的加密方案。在一些实施方案中,加密密钥无法永久地保持在外围装置或非易失性存储装置处,而是可以由主机系统维护。
一旦加密,就会生成物理写入请求并将其发送到非易失性存储装置以便写入数据(或者如果不执行加密,则写入原始数据),如在762处所指示。例如,执行直接存储器访问以在非易失性存储装置处为控制器写入门铃寄存器,指示要执行的物理写入请求。然后,非易失性存储装置处的控制器可以完成写入请求或者不能完成写入请求,如在772处所指示。如果物理写入请求失败,则如在786处所指示,可以经由虚拟接口将访问请求失败的指示发送到虚拟机或主机系统。中断或其他信号(例如,在写入到主机的中断控制器的消息信号中断(MSI)向量中)。如果写入请求成功完成,则可以经由虚拟接口发送写入请求的完成的指示,如在782处所指示。类似地,可以经由接口将指示写入请求的成功完成的中断或其他信号提供回到虚拟机实例。
在各种实施方案中,可以与写入请求不同地处理读取请求。例如,如在754处所指示,可以生成物理读取请求并将其发送到非易失性存储装置以从非易失性存储装置读取数据。当存储数据时,可以根据在外围装置处执行的加密方案来加密所述数据(如上面关于元素752所讨论)。如果读取请求不成功并且没有接收到数据,则如764的否定退出所指示,可以经由虚拟接口发送访问请求失败的指示,如在786处所指示。如果接收到数据,则可以根据与应用于加密数据相同的加密方案来解密数据,如在774处所指示。例如,可以从存储器中检索由加密引擎应用于虚拟接口的密钥,并利用所述密钥解密来从非易失性存储装置读取的数据。如果不执行加密,则可以跳过元素774。一旦解密,解密数据可以经由虚拟接口发送到虚拟机,如在784处所指示。例如,可以通过直接存储器访问和写入到读取请求的信号完成的门铃寄存器将解密数据写入虚拟机的存储器空间中的缓冲器。
注意,除了上面讨论的加密或代替加密,可以执行对主机系统/虚拟机透明的其他数据修改。例如,可以实施压缩方案以减小静态存储的数据的大小。可以实施无损压缩方案,例如诸如行程编码(run-length encoding)或Lempel-Ziv,使得将数据返回到主机系统或虚拟机,而不会因压缩而发生任何变化或数据丢失,从而节省非易失性装置上的存储空间且不会牺牲数据。可以类似地实施其他数据编码技术(例如,将数据从一种格式转换成另一种格式)。
非易失性存储装置的虚拟化通常发生在动态环境中。提供商网络(诸如上面在图2中讨论的提供商网络200)可以不断地在各种系统上进行软件或硬件改变,以确保由提供商网络提供的资源适于资源性能的变化或提供对资源性能的改进。对于为非易失性存储装置提供存储虚拟化的外围装置,可以添加利用不同的驱动器的新的非易失性存储装置,或者可以安装用于存储数据的接口,或者可以添加附加能力(例如,如添加可以从外围装置中检索的附加信息等控制能力)。为了考虑这些变化,可能需要对存储虚拟化应用(例如,存储在外围装置上的存储器装置中的固件)进行改变或更新。虽然更新应用通常涉及关闭主机系统、非易失性存储装置或外围装置中的一者或多者,但是对外围装置的实时更新将会最小化对虚拟机、主机、存储装置和外围装置操作的干扰,同时仍然获得安装新版本的存储虚拟化应用所提供的特征。图8是示出根据一些实施方案的用于对外围装置处的存储虚拟化应用执行实时更新的各种方法和技术的高级流程图。
如在810处所指示,可以在连接到一个或多个非易失性存储装置的外围装置处的存储器中接收新版本的存储虚拟化应用。例如,(例如,根据存储虚拟化应用的规范)可以预定义或同意存储器中的存储位置,从而将外围装置处的存储器中的存储位置识别为被分配用于接收新版本的固件。主机系统可以利用直接存储器访问技术(如上面所讨论的)将新版本写入到存储位置中。一旦写入,主机系统就可以向外围装置发送请求以对新版本的存储虚拟化应用执行实时更新。
外围装置可以经由在外围装置处实施的控制接口来接收对执行实时更新的请求,如在820处所指示。响应于接收到实时更新请求,在各种实施方案中,外围装置可以暂停在外围装置中处理新的访问请求,如在830处所指示。例如,外围装置可以忽略门铃寄存器触发的事件,而不从主机中的I/O提交队列中检索新的条目提交。如果未决访问请求在外围装置处,如840的肯定退出所指示,则可以在外围装置处完成一个或多个未决访问请求。例如,可以完成不同虚拟接口的一个或多个I/O提交队列中的条目,以及控制接口的提交队列。外围装置还可以将用于存储虚拟化应用的操作状态保存、写入或以其他方式存储于在虚拟化应用的重启期间持久存在的位置,如在860处所指示。例如,操作状态可以包括但不限于虚拟机可见伪像,诸如用于存储分区的寄存器或配置信息,以及影响虚拟机可见状态的信息,诸如未决飞行中I/O。分配给存储虚拟化应用的地址空间之外的存储器位置可以存储操作状态。
如在870处所指示,在各种实施方案中,可以基于存储器中的存储版本应用的新版本和所保存的操作状态来重启存储虚拟化应用。例如,可以重新实例化虚拟接口并将其绑定到适当的存储分区,并且可以使用诸如可以包括在操作状态中的其他配置信息来重置新版本的存储虚拟化应用的状态以在发起实时更新时匹配存储虚拟化应用的先前版本的状态。一旦重启,就可以在外围装置处恢复对新访问请求的处理,如在880处所指示。
在各种实施方案中,本文中所述的方法可以由硬件和软件的任何组合来实施。例如,在一个实施方案中,所述方法可以由包括执行程序指令的一个或多个处理器的计算机系统(例如,如图9中的计算机系统)来实施,所述程序指令存储在耦接到处理器的计算机可读存储介质上。所述程序指令可以被配置为实施本文中所述的功能性(例如,各种服务器、资源主机、控制平面、管理器和/或其他部件(诸如实施本文中所述的基于块的存储服务的那些部件)的功能性)。如附图中示出并且本文中描述的各种方法表示方法的示例性实施方案。可以改变任何方法的顺序,并且可以添加、重新排序、组合、忽略、修改各种元件,等等。
本公开的实施方案可以鉴于以下条款来描述:
1.一种系统,其包括:
一个或多个计算节点,其分别包括至少一个处理器和存储器,所述一个或多个计算节点实施资源主机,其中所述资源主机实施多个虚拟计算实例;
外围装置,其在实施于所述主机系统处的总线处连接到所述主机系统,其中所述外围装置还经由用于所述一个或多个非易失性存储装置的相应总线连接到一个或多个非易失性存储装置,所述相应总线与在所述主机系统处实施的总线分开;
外围装置,其被配置为:
维护所述虚拟计算实例的相应虚拟接口,其将一个所述非易失性存储装置处的存储分区呈现给所述虚拟计算实例;
经由所述相应虚拟接口从一个所述虚拟计算实例接收对所述虚拟计算实例的输入/输出(I/O)请求;
生成物理I/O请求以相对于所述非易失性存储装置处的所述存储分区执行所述I/O请求;
经由从所述外围装置到所述非易失性存储装置的所述相应总线向所述非易失性存储装置的控制器传输所述物理I/O请求;
经由所述相应总线从所述控制器接收对完成所述物理I/O请求的确认;以及
经由所述虚拟接口向所述虚拟计算实例发送所述I/O请求的完成的指示。
2.如条款1所述的系统,
其中所述I/O请求是将数据写入到所述存储分区的请求;
其中所述外围装置还被配置为根据用于所述虚拟接口的加密方案来加密所述数据;并且
其中所述物理I/O请求是将所述加密数据写入到所述存储分区的请求。
3.如条款1所述的系统,
其中所述I/O请求是从所述存储分区读取数据的请求,其中根据加密方案来加密存储在所述存储分区中的所述数据;
其中所述物理I/O请求是从所述存储分区读取所述加密数据的请求;
其中所述外围装置还被配置为:
根据用于所述虚拟接口的所述加密方案来解密所述数据;以及
经由所述虚拟接口向虚拟计算实例发送所述解密数据。
4.如条款1所述的系统,其中所述资源主机被实施为基于网络的虚拟计算服务的一部分,所述虚拟计算服务向所述基于网络的虚拟计算服务的客户端提供不同类型的虚拟计算实例,其中所述虚拟接口被配置为接收包括所述I/O请求的多个I/O请求,所述多个I/O请求根据非易失性存储器标准(NVMe)接口格式化,并且其中所述多个不同的虚拟计算实例是一种虚拟计算实例,所述虚拟计算实例经由NVMe提供对虚拟计算实例本地的非易失性存储装置的访问。
5.一种方法,其包括:
由连接到主机系统的外围装置执行:
将虚拟接口作为连接到所述外围装置的非易失性存储装置的存储分区呈现给主机系统;
经由所述虚拟接口从所述主机系统接收被引导到所述存储分区的访问请求;
向所述非易失性存储装置发送物理访问请求以相对于所述非易失性存储装置处的所述存储分区执行所述访问请求;以及
基于对来自所述非易失性存储装置的所述物理访问请求的确认,经由所述虚拟接口向所述主机系统提供对所述访问请求的完成的指示。
6.如条款5所述的方法,
其中所述访问请求是将数据写入到所述存储分区的请求;
其中所述方法还包括根据用于所述虚拟接口的压缩方案来压缩所述数据;并且
其中所述物理访问请求是将所述压缩数据写入到所述存储分区的请求。
7.如条款5所述的方法,
其中所述访问请求是从所述存储分区读取数据的请求,其中根据压缩方案来压缩存储在所述存储分区中的所述数据;
其中所述物理访问请求是从所述存储分区读取所述压缩数据的请求;
其中所述方法还包括:
根据用于所述虚拟接口的所述压缩方案来解压缩所述数据;以及
经由所述虚拟接口向虚拟计算实例发送所述解压缩数据。
8.如条款5所述的方法,其还包括:
经由所述虚拟接口从所述虚拟机接收被引导到所述存储分区的另一个访问请求;
确定所述另一个访问请求超过所述存储分区的限制阈值;以及
限制所述另一个访问请求。
9.如条款8所述的方法,其中所述虚拟接口被呈现给所述主机系统处的虚拟机操作,其中在所述外围装置处实施另一个虚拟接口,所述另一个虚拟接口将所述非易失性存储装置的不同存储分区呈现给在所述主机系统处操作的不同虚拟机,其中关于与应用于从所述虚拟机指向所述存储分区的所述另一个请求的所述限制阈值不同的限制阈值来评估经由所述另一个虚拟接口从被引导到所述非易失性存储装置处的所述不同存储分区的所述不同虚拟机接收的访问请求。
10.如条款8所述的方法,其还包括:
为所述外围装置实施控制接口,所述控制接口被呈现给所述主机系统处的虚拟化管理;
经由所述控制接口接收指定所述虚拟接口的所述限制阈值的请求。
11.如条款5所述的方法,其还包括:
为所述外围装置实施控制接口,所述控制接口被呈现给所述主机系统处的虚拟化管理;
在接收到所述访问请求之前:
经由所述控制接口接收在所述非易失性存储装置处为所述主机系统创建所述存储分区的请求;
划分所述非易失性存储装置以创建所述存储分区;
格式化所述存储分区;以及
将所述虚拟接口绑定到所述存储分区。
12.如条款5所述的方法,其中所述呈现所述虚拟接口、所述接收所述访问请求、所述发送所述物理访问请求以及所述提供所述指示是作为存储在所述外围装置处的存储器中的虚拟化应用的一部分来执行的,所述虚拟化应用通过所述外围装置执行,并且其中所述方法还包括:
为所述外围装置实施控制接口,所述控制接口被呈现给所述主机系统处的虚拟化管理;
接收所述存储器中的所述存储虚拟化应用的新版本;
经由所述控制接口接收对所述存储虚拟化应用执行实时更新的请求;
在对执行所述实时更新的所述请求之后,暂停处理在所述外围装置处接收的访问请求;
在所述外围装置处完成一个或多个未决访问请求;
将所述存储虚拟化应用的操作状态保存在持续重启所述存储虚拟化应用的位置中;
基于所述存储器中的所述新版本和所述操作状态来重启所述存储虚拟化应用;以及
在所述重启所述存储虚拟化应用之后,恢复处理要在所述外围装置处理的访问请求。
13.如条款5所述的方法,其还包括:
为所述外围装置实施控制接口,所述控制接口被呈现给所述主机系统;
经由所述控制接口接收对在所述外围装置处收集的信息的请求;以及
经由所述控制接口向所述虚拟化管理发送一个或多个度量。
14.一种存储程序指令的非暂时性计算机可读存储介质,所述程序指令在由连接到主机系统的外围装置执行时使所述外围装置实施:
将虚拟接口作为连接到所述外围装置的非易失性存储装置的存储分区呈现给在所述主机系统处操作的虚拟机,其中在所述外围装置处实施另一个虚拟接口,所述另一个虚拟接口将所述非易失性存储装置的不同存储分区呈现给在所述主机系统处操作的不同虚拟机;
经由所述虚拟接口从所述虚拟机接收被引导到所述存储分区的输入/输出(I/O)请求;
生成物理I/O请求以相对于所述非易失性存储装置处的所述存储分区执行所述I/O请求;
经由从所述外围装置到所述非易失性存储装置的连接向所述非易失性存储装置发送所述物理I/O请求;以及
基于对来自所述非易失性存储装置的所述物理I/O请求的确认,经由所述虚拟接口向所述虚拟机提供对所述I/O请求的完成的指示。
15.如条款14所述的非暂时性计算机可读存储介质,
其中所述I/O请求是将数据写入到所述存储分区的请求;
其中所述程序指令使所述外围装置根据用于所述虚拟接口的加密方案来进一步实施对所述数据加密;并且
其中所述物理I/O请求是将所述加密数据写入到所述存储分区的请求。
16.如条款14所述的非暂时性计算机可读存储介质,
其中所述I/O请求是从所述存储分区读取数据的请求,其中根据加密方案来加密存储在所述存储分区中的所述数据;
其中所述物理I/O请求是从所述存储分区读取所述加密数据的请求;
其中所述程序指令使所述外围装置进一步实施:
根据用于所述虚拟接口的所述加密方案来解密所述数据;以及
经由所述虚拟接口向虚拟计算实例发送所述解密数据。
17.如条款16所述的非暂时性计算机可读存储介质,其中根据用于所述另一个虚拟接口的不同加密方案来加密存储在所述非易失性存储装置处的所述不同存储分区中的数据,并且其中编程指令使所述外围装置进一步实施:
经由所述另一个虚拟接口从所述不同的虚拟机接收对读取存储在所述不同存储分区中的所述数据的请求;
生成物理读取请求以相对于所述非易失性存储装置处的所述不同存储分区执行所述读取请求;
经由从所述外围装置到所述非易失性存储装置的所述连接向所述非易失性存储装置发送所述物理读取请求;
根据所述不同的加密方案来解密从所述不同存储分区读取的所述数据;以及
经由所述另一个虚拟接口将来自不同的名称空间的解密数据发送到所述不同的虚拟机。
18.如条款16所述的非暂时性计算机可读存储介质,其中所述程序指令使所述外围装置进一步实施:
为所述外围装置实施控制接口,所述控制接口被呈现给所述主机系统处的虚拟化管理;
经由所述控制接口接收提供用于应用所述加密方案的加密密钥的请求,其中所述加密密钥并非持久地保持在所述外围装置处。
19.如条款14所述的非暂时性计算机可读存储介质,其中所述程序指令使所述外围装置进一步实施:
经由所述虚拟接口从所述虚拟机接收被引导到所述存储分区的另一个I/O请求;
确定所述另一个I/O请求超过所述存储分区的限制阈值;以及
限制所述另一个I/O请求。
20.如条款14所述的非暂时性计算机可读存储介质,其中所述资源主机被实施为基于网络的虚拟计算服务的一部分,所述虚拟计算服务向所述基于网络的虚拟计算服务的客户端提供不同类型的虚拟计算实例,并且其中所述多个不同的虚拟计算实例是一种虚拟计算实例,所述虚拟计算实例提供对虚拟计算实例本地的非易失性存储装置的访问。
虚拟化外围装置处的非易失性存储的实施方案可以在一个或多个计算机系统上执行,所述计算机系统可以与各种其他装置交互。图9是示出根据各种实施方案的示例性计算机系统的框图。例如,在不同实施方案中,计算机系统1000可以被配置为实施计算集群、数据存储区和/或客户端的存储节点和/或计算节点。计算机系统1000可以是各种类型的装置中的任何一种,包括但不限于:个人计算机系统、台式计算机、膝上型计算机或笔记本计算机、主机计算机系统、手持式计算机、工作站、网络计算机、消费者装置、应用服务器、存储装置、电话、移动电话或大致上任何类型的计算装置。
计算机系统1000包括经由输入/输出(I/O)接口1030耦接到系统存储器1020的一个或多个处理器1010(其中的任何一个都可以包括多个核心,所述多个核心可以是单线程的或多线程的)。计算机系统1000还包括耦接到I/O接口1030的网络接口1040。在各种实施方案中,计算机系统1000可以是包括一个处理器1010的单处理器系统,或者是包括若干个处理器1010(例如,两个、四个、八个或者另一合适数量)的多处理器系统。处理器1010可以是能够执行指令的任何合适的处理器。例如,在各种实施方案中,处理器1010可以为实施多种指令集架构(ISA)中的任一者(诸如x86、PowerPC、SPARC或MIPSISA或者任何其他合适的ISA)的通用或嵌入式处理器。在多处理器系统中,处理器1010中的每一个通常可以但不一定实施相同的ISA。计算机系统1000还包括一个或多个网络通信装置(例如,网络接口1040)以通过通信网络(例如,互联网、LAN等)与其他系统和/或部件通信。
在所示实施方案中,计算机系统1000还包括一个或多个持久性存储装置1060和/或一个或多个I/O装置1080。在各种实施方案中,持久性存储装置1060可以对应于磁盘驱动盘、磁带驱动器、固态存储器、其他大容量存储装置、基于块的存储装置或任何其他持久性存储装置。计算机系统1000(或分布式应用或在其上操作的操作系统)可以根据需要将指令和/或数据存储在持久性存储装置1060中,并且可以按需检索存储的指令和/或数据。例如,在一些实施方案中,计算机系统1000可以托管存储系统服务器节点,并且持久性存储装置1060可以包括附接到该服务器节点的SSD。
计算机系统1000包括被配置为存储可由一个或多个处理器1010访问的指令和数据的一个或多个系统存储器1020。在各种实施方案中,系统存储器1020可以使用任何合适的存储器技术(例如,高速缓冲、静态随机存取存储器(SRAM)、DRAM、RDRAM、EDO RAM、DDR10RAM、同步动态RAM(SDRAM)、Rambus RAM、EEPROM、非易失性/快闪类型的存储器或任何其他类型的存储器中的一者或多者)来实施。系统存储器1020可以包含程序指令1025,所述程序指令可由一个或多个处理器1010执行以便实施本文所述的方法和技术。在各种实施方案中,程序指令1025可以平台本地二进制、任何解释型语言(诸如JavaTM字节代码)或以任何其他语言(诸如C/C++、JavaTM等)或以其任何组合来编码。例如,在所示实施方案中,程序指令1025包括在不同实施方案中可执行来实施资源主机的功能性的程序指令。在一些实施方案中,程序指令1025可以实施多个单独的客户端、节点和/或其他部件。
在一些实施方案中,程序指令1025可以包括可执行来实施一种操作系统(未示出)的指令,所述操作系统可以是各种操作系统(诸如UNIX、LINUX、SolarisTM、MacOSTM、WindowsTM等)中的任一种。任何或所有程序指令1025都可以作为计算机程序产品或软件来提供,所述计算机程序产品或软件可以包括其上存储有指令的非暂时性计算机可读存储介质,所述指令可以用于对计算机系统(或其他电子装置)进行编程以执行根据各种实施方案的过程。非暂时性计算机可读存储介质可以包括用于存储机器(例如,计算机)可读的形式(例如软件、处理应用)的信息的任何机构。一般来说,非暂时性计算机可访问介质可以包括非暂时性存储介质或存储器介质,诸如磁性或光学介质,例如经由I/O接口1030耦接到计算装置1000的磁盘或DVD/CD-ROM。非暂时性计算机可读存储介质还可以包括任何易失性或非易失性介质,诸如RAM(例如,SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等,所述易失性或非易失性介质可以作为系统存储器1020或另一种类型的存储器包括在计算机装置1000的一些实施方案中。在其他实施方案中,程序指令可以使用经由通信介质(诸如网络和/或无线链路)传达的光学、声学或其他形式的传播信号(例如,载波、红外线信号、数字信号等)来通信,诸如可以经由网络接口1040来实施。
在一些实施方案中,系统存储器1020可以包括可以如本文所述般配置的数据存储区1045。一般而言,系统存储器1020(例如,系统存储器1020内的数据存储区1045)、持久性存储装置1060和/或远程存储装置1070可以存储数据块、数据块的副本、与数据块和/或它们的状态相关联的元数据、配置信息和/或可在实施本文所述的方法和技术中使用的任何其他信息。
在一个实施方案中,I/O接口1030可以被配置为包括通过网络接口1040或其他外围接口来协调处理器1010、系统存储器1020与系统中的任何外围装置之间的I/O流量。在一些实施方案中,I/O接口1030可以执行任何必需协议、时序或其他数据变换以将来自一个部件(例如,系统存储器1020)的数据信号转换成适于由另一个部件(例如,处理器1010)使用的格式。在一些实施方案中,I/O接口1030可以包括支持通过各种类型的外围总线(诸如例如外围部件互连(PCI)总线标准(例如,PCIe)或通用串行总线(USB)标准的变型)附接的装置。在一些实施方案中,I/O接口1030的功能可以分成两个或更多个单独的部件,诸如例如北桥和南桥。此外,在一些实施方案中,I/O接口1030(诸如到系统存储器1020的接口)的一些或所有功能性可以直接并入到处理器1010中。
网络接口1040可以被配置为允许数据在计算机系统1000与附接到网络的其他装置(诸如例如其他计算机系统1090)之间交换。另外,网络接口1040可以被配置为允许在计算机系统1000与各种I/O装置1050和/或远程存储装置1070之间的通信。在一些实施方案中,输入/输出装置1050可以包括一个或多个显示终端、键盘、小键盘、触摸屏、扫描装置、语音或光学识别装置或适合于由一个或多个计算机系统1000输入或检索数据的任何其他装置。多个输入/输出装置1050可以存在于计算机系统1000中或可以分布于包括计算机系统1000的分布式系统的各个节点上。在一些实施方案中,类似输入/输出装置可以与计算机系统1000分开并且可以通过有线或无线连接(诸如通过网络接口1040)来与包括计算机系统1000的分布式系统的一个或多个节点交互。网络接口1040通常可以支持一个或多个无线联网协议(例如,Wi-Fi/IEEE 802.11或另一种无线联网标准)。然而,在各种实施方案中,网络接口1040可以支持经由任何合适的有线或无线通用数据网络(诸如例如其他类型的以太网)进行的通信。另外,网络接口1040可以支持经由诸如模拟语音网络或数字光纤通信网络等电信/电话网络、经由诸如光纤通道SAN等存储区域网路或经由任何其他合适类型的网络和/或协议进行的通信。在各种实施方案中,计算机系统1000可以包括多于、少于、或不同于图9中所示的那些部件的部件(例如,显示器、视频卡、音频卡、外围装置、其他网络接口,诸如ATM接口、以太网接口、帧中继接口等)。
应注意,本文所述的任何分布式系统实施方案、或它们的部件中的任一者可以被实施为一种或多种基于网络的服务。例如,计算服务内的计算集群可以将计算和/或存储服务和/或采用本文所述的分布式计算系统的其他类型的服务作为基于网络的服务呈现给客户端。在一些实施方案中,基于网络的服务可以由被设计来支持通过网络进行的彼此协作的机对机交互的软件和/或硬件系统来实施。基于网络的服务可以具有以机器可处理格式(诸如网络服务描述语言(WSDL))描述的接口。其他系统可以通过对基于网络的服务的接口的描述所规定的方式与基于网络的服务进行交互。例如,基于网络的服务可以限定其他系统可以调用的各种操作,并且可以限定特定的应用程序设计接口(API),当请求各种操作时,其他系统可能期望符合所述特定的应用程序设计接口。虽然
在各种实施方案中,基于网络的服务可以通过使用包括与基于网络的服务请求相关联的参数和/或数据的消息来请求或调用。此类消息可以根据特定的标记语言(诸如可扩展标记语言(XML))来格式化,和/或可以使用协议(诸如简单对象访问协议(SOAP))来封装。为了执行基于网络的服务请求,基于网络的服务客户端可以汇编包括所述请求的消息,并且使用基于互联网的应用层传输协议(诸如超文本传输协议(HTTP))将所述消息传达给与基于网络的服务对应的可寻址端点(例如,统一资源定位符(URL))。
在一些实施方案中,基于网络的服务可以使用表述性状态转移(“RESTful”)技术而不是基于消息的技术来实施。例如,根据RESTful技术实施的基于网络的服务可以通过包括在HTTP方法(诸如PUT、GET或DELETE)内而不是封装在SOAP消息内的参数来调用。
尽管已相当详细地描述了以上实施方案,但是一旦完全了解以上公开内容,各种改变和修改对本领域技术人员来说将变为显而易见。意图所附权利要求应被解译为涵盖所有此类修改和改变,且因此以上描述意图被视为说明性而非限制性意义。
Claims (15)
1.一种用于虚拟化非易失性存储装置的方法,其包括:
由在主机系统上实现的总线处连接到所述主机系统的外围装置执行:
将虚拟接口作为非易失性存储装置的存储分区呈现给主机系统,其中所述外围装置经由与在所述主机系统上实现的所述总线分离的一个或多个总线还连接到包括所述非易失性存储装置的一个或多个非易失性存储装置;
经由所述虚拟接口从所述主机系统接收被引导到所述存储分区的访问请求;
向所述非易失性存储装置发送物理访问请求以相对于所述非易失性存储装置处的所述存储分区执行所述访问请求;以及
基于对来自所述非易失性存储装置的所述物理访问请求的确认,经由所述虚拟接口向所述主机系统提供对所述访问请求的完成的指示。
2.如权利要求1所述的方法,
其中所述访问请求是将数据写入到所述存储分区的请求;
其中所述方法还包括根据用于所述虚拟接口的压缩方案来压缩所述数据;并且
其中所述物理访问请求是将压缩数据写入到所述存储分区的请求。
3.如权利要求1所述的方法,
其中所述访问请求是从所述存储分区读取数据的请求,其中根据压缩方案来压缩存储在所述存储分区中的所述数据;
其中所述物理访问请求是从所述存储分区读取压缩数据的请求;
其中所述方法还包括:
根据用于所述虚拟接口的所述压缩方案来解压缩所述数据;以及
经由所述虚拟接口向虚拟计算实例发送解压缩数据。
4.如权利要求1所述的方法,其还包括:
经由所述虚拟接口从虚拟机接收被引导到所述存储分区的另一个访问请求;
确定所述另一个访问请求超过所述存储分区的限制阈值;以及
限制所述另一个访问请求。
5.如权利要求4所述的方法,其中所述虚拟接口被呈现给所述主机系统处的虚拟机操作,其中在所述外围装置处实施另一个虚拟接口,所述另一个虚拟接口将所述非易失性存储装置的不同存储分区呈现给在所述主机系统处操作的不同虚拟机,其中关于与应用于从所述虚拟机指向所述存储分区的所述另一个请求的所述限制阈值不同的限制阈值来评估经由所述另一个虚拟接口从被引导到所述非易失性存储装置处的所述不同存储分区的所述不同虚拟机接收的访问请求。
6.如权利要求4所述的方法,其还包括:
为所述外围装置实施控制接口,所述控制接口被呈现给所述主机系统处的虚拟化管理;
经由所述控制接口接收指定所述虚拟接口的所述限制阈值的请求。
7.如权利要求1所述的方法,其还包括:
为所述外围装置实施控制接口,所述控制接口被呈现给所述主机系统处的虚拟化管理;
在接收到所述访问请求之前:
经由所述控制接口接收在所述非易失性存储装置处为所述主机系统创建所述存储分区的请求;
划分所述非易失性存储装置以创建所述存储分区;
格式化所述存储分区;以及
将所述虚拟接口绑定到所述存储分区。
8.如权利要求1所述的方法,其中所述呈现所述虚拟接口、所述接收所述访问请求、所述发送所述物理访问请求以及所述提供所述指示是作为存储在所述外围装置处的存储器中的存储虚拟化应用的一部分来执行的,所述虚拟化应用通过所述外围装置执行,并且其中所述方法还包括:
为所述外围装置实施控制接口,所述控制接口被呈现给所述主机系统处的虚拟化管理;
接收所述存储器中的所述存储虚拟化应用的新版本;
经由所述控制接口接收对所述存储虚拟化应用执行实时更新的请求;
在对执行所述实时更新的所述请求之后,暂停处理在所述外围装置处接收的访问请求;
在所述外围装置处完成一个或多个未决访问请求;
将所述存储虚拟化应用的操作状态保存在持续重启所述存储虚拟化应用的位置中;
基于所述存储器中的所述新版本和所述操作状态来重启所述存储虚拟化应用;以及
在所述重启所述存储虚拟化应用之后,恢复处理要在所述外围装置处理的访问请求。
9.如权利要求1所述的方法,其还包括:
为所述外围装置实施控制接口,所述控制接口被呈现给所述主机系统;
经由所述控制接口接收对在所述外围装置处收集的信息的请求;以及
经由所述控制接口向所述虚拟化管理发送一个或多个度量。
10.一种用于虚拟化非易失性存储装置的外围装置,所述外围装置包括耦接到存储器的处理器,所述存储器包括程序指令,所述程序指令在由在主机系统上实现的总线处连接到所述主机系统的所述外围装置执行时使所述外围装置实施:
将虚拟接口作为非易失性存储装置的存储分区呈现给在所述主机系统处操作的虚拟机,其中所述外围装置经由与在所述主机系统上实现的所述总线分离的一个或多个总线还连接到包括所述非易失性存储装置的一个或多个非易失性存储装置,其中在所述外围装置处实施另一个虚拟接口,所述另一个虚拟接口将所述非易失性存储装置的不同存储分区呈现给在所述主机系统处操作的不同虚拟机;
经由所述虚拟接口从所述虚拟机接收被引导到所述存储分区的输入/输出I/O请求;
生成物理I/O请求以相对于所述非易失性存储装置处的所述存储分区执行所述I/O请求;
经由从所述外围装置到所述非易失性存储装置的连接向所述非易失性存储装置发送所述物理I/O请求;以及
基于对来自所述非易失性存储装置的所述物理I/O请求的确认,经由所述虚拟接口向所述虚拟机提供对所述I/O请求的完成的指示。
11.如权利要求10所述的外围装置,
其中所述I/O请求是将数据写入到所述存储分区的请求;
其中所述程序指令使所述外围装置根据用于所述虚拟接口的加密方案来进一步实施对所述数据加密;并且
其中所述物理I/O请求是将加密数据写入到所述存储分区的请求。
12.如权利要求10所述的外围装置,
其中所述I/O请求是从所述存储分区读取数据的请求,其中根据加密方案来加密存储在所述存储分区中的所述数据;
其中所述物理I/O请求是从所述存储分区读取加密数据的请求;
其中所述程序指令使所述外围装置进一步实施:
根据用于所述虚拟接口的所述加密方案来解密所述数据;以及
经由所述虚拟接口向虚拟计算实例发送解密数据。
13.如权利要求12所述的外围装置,其中根据用于所述另一个虚拟接口的不同加密方案来加密存储在所述非易失性存储装置处的所述不同存储分区中的数据,并且其中编程指令使所述外围装置进一步实施:
经由所述另一个虚拟接口从所述不同的虚拟机接收对读取存储在所述不同存储分区中的所述数据的请求;
生成物理读取请求以相对于所述非易失性存储装置处的所述不同存储分区执行所述读取请求;
经由从所述外围装置到所述非易失性存储装置的所述连接向所述非易失性存储装置发送所述物理读取请求;
根据所述不同的加密方案来解密从所述不同存储分区读取的所述数据;以及
经由所述另一个虚拟接口将来自不同的名称空间的解密数据发送到所述不同的虚拟机。
14.如权利要求12所述的外围装置,其中所述程序指令使所述外围装置进一步实施:
为所述外围装置实施控制接口,所述控制接口被呈现给所述主机系统处的虚拟化管理;
经由所述控制接口接收提供用于应用所述加密方案的加密密钥的请求,其中所述加密密钥并非持久地保持在所述外围装置处。
15.如权利要求10所述的外围装置,其中所述程序指令使所述外围装置进一步实施:
经由所述虚拟接口从所述虚拟机接收被引导到所述存储分区的另一个I/O请求;
确定所述另一个I/O请求超过所述存储分区的限制阈值;以及
限制所述另一个I/O请求。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/279,352 US10318162B2 (en) | 2016-09-28 | 2016-09-28 | Peripheral device providing virtualized non-volatile storage |
US15/279,352 | 2016-09-28 | ||
PCT/US2017/053869 WO2018064247A1 (en) | 2016-09-28 | 2017-09-28 | Virtualizing non-volatile storage at a peripheral device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109791471A CN109791471A (zh) | 2019-05-21 |
CN109791471B true CN109791471B (zh) | 2023-01-03 |
Family
ID=60081307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780059898.1A Active CN109791471B (zh) | 2016-09-28 | 2017-09-28 | 虚拟化外围装置处的非易失性存储装置 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10318162B2 (zh) |
EP (1) | EP3519933B1 (zh) |
CN (1) | CN109791471B (zh) |
WO (1) | WO2018064247A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10318162B2 (en) * | 2016-09-28 | 2019-06-11 | Amazon Technologies, Inc. | Peripheral device providing virtualized non-volatile storage |
US10985967B1 (en) * | 2017-03-10 | 2021-04-20 | Loop Commerce, Inc. | Cross-network differential determination |
US10656987B1 (en) * | 2017-04-26 | 2020-05-19 | EMC IP Holding Company LLC | Analysis system and method |
JP7221585B2 (ja) * | 2017-07-20 | 2023-02-14 | 富士通株式会社 | 情報処理装置、情報処理システム、情報処理装置制御方法及び情報処理装置制御プログラム |
US11755753B2 (en) * | 2018-06-13 | 2023-09-12 | Kyndryl, Inc. | Mechanism to enable secure memory sharing between enclaves and I/O adapters |
US10943032B2 (en) * | 2018-07-31 | 2021-03-09 | EMC IP Holding Company LLC | Data encryption and decryption techniques |
US11074013B2 (en) | 2018-08-07 | 2021-07-27 | Marvell Asia Pte, Ltd. | Apparatus and methods for providing quality of service over a virtual interface for solid-state storage |
US11656775B2 (en) * | 2018-08-07 | 2023-05-23 | Marvell Asia Pte, Ltd. | Virtualizing isolation areas of solid-state storage media |
US11010314B2 (en) | 2018-10-30 | 2021-05-18 | Marvell Asia Pte. Ltd. | Artificial intelligence-enabled management of storage media access |
US11481118B2 (en) | 2019-01-11 | 2022-10-25 | Marvell Asia Pte, Ltd. | Storage media programming with adaptive write buffer release |
CN110308971A (zh) * | 2019-06-28 | 2019-10-08 | 北京首都在线科技股份有限公司 | 基于虚拟机的存储设备的控制方法和装置 |
US11226870B2 (en) * | 2019-09-06 | 2022-01-18 | Veritas Technologies Llc | Systems and methods for marking application-consistent points-in-time |
US11966765B2 (en) * | 2020-09-09 | 2024-04-23 | Nvidia Corporation | Memory bandwidth throttling for virtual machines |
US11403093B1 (en) * | 2021-04-28 | 2022-08-02 | Oracle International Corporation | Application modification with proxy service process |
WO2022251991A1 (en) | 2021-05-31 | 2022-12-08 | Citrix Systems, Inc. | Resource recommendation system |
CN114691298A (zh) * | 2022-03-16 | 2022-07-01 | 阿里云计算有限公司 | 数据处理方法、装置、设备和存储介质 |
CN115460172B (zh) * | 2022-08-22 | 2023-12-05 | 曙光信息产业股份有限公司 | 设备地址分配方法、装置、计算机设备、介质及程序产品 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681899A (zh) * | 2011-03-14 | 2012-09-19 | 金剑 | 云计算服务平台的虚拟计算资源动态管理系统 |
CN105184113A (zh) * | 2014-03-27 | 2015-12-23 | 英特尔公司 | 用于实现安全视频输出路径的硬件辅助虚拟化 |
CN105745627A (zh) * | 2013-08-14 | 2016-07-06 | 思凯拉有限责任公司 | 用于非易失性存储器存储设备的地址转换 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6185629B1 (en) * | 1994-03-08 | 2001-02-06 | Texas Instruments Incorporated | Data transfer controller employing differing memory interface protocols dependent upon external input at predetermined time |
US7827558B2 (en) * | 2004-06-30 | 2010-11-02 | Devicevm, Inc. | Mechanism for enabling a program to be executed while the execution of an operating system is suspended |
US20080040519A1 (en) * | 2006-05-02 | 2008-02-14 | Alacritech, Inc. | Network interface device with 10 Gb/s full-duplex transfer rate |
US9392078B2 (en) * | 2006-06-23 | 2016-07-12 | Microsoft Technology Licensing, Llc | Remote network access via virtual machine |
US7930513B2 (en) * | 2006-11-04 | 2011-04-19 | Virident Systems Inc. | Writing to asymmetric memory |
US8468310B2 (en) * | 2007-07-31 | 2013-06-18 | Vmware, Inc. | Method and system for tracking data correspondences |
US8369975B2 (en) * | 2007-09-21 | 2013-02-05 | Fisher-Rosemount Systems, Inc. | Online recipe synchronization in a real-time batch executive environment |
US8989187B2 (en) * | 2010-06-04 | 2015-03-24 | Coraid, Inc. | Method and system of scaling a cloud computing network |
WO2012151392A1 (en) * | 2011-05-04 | 2012-11-08 | Citrix Systems, Inc. | Systems and methods for sr-iov pass-thru via an intermediary device |
CN102594660B (zh) * | 2012-01-19 | 2015-09-09 | 华为技术有限公司 | 一种虚拟接口交换方法、装置及系统 |
US9501224B2 (en) * | 2012-04-03 | 2016-11-22 | Goolge Inc. | Method and system for memory oversubscription for virtual machines |
US8949848B2 (en) * | 2012-08-20 | 2015-02-03 | International Business Machines Corporation | Reducing usage of resource utilized by a virtual machine whose resource utilization is adversely affecting neighboring virtual machines |
US20140237475A1 (en) * | 2013-02-15 | 2014-08-21 | Apple Inc. | Sleep/wake with suppression and donated importance |
US9881581B2 (en) * | 2013-04-16 | 2018-01-30 | Oohms Ny Llc | System and method for the distribution of audio and projected visual content |
EP2813945A1 (en) * | 2013-06-14 | 2014-12-17 | Tocario GmbH | Method and system for enabling access of a client device to a remote desktop |
US9875115B2 (en) * | 2013-12-20 | 2018-01-23 | Microsoft Technology Licensing, Llc | Memory-preserving reboot |
US9430223B2 (en) * | 2014-09-25 | 2016-08-30 | International Business Machines Corporation | Live operating system update mechanisms |
WO2016056140A1 (ja) | 2014-10-10 | 2016-04-14 | 株式会社日立製作所 | インターフェースデバイス、及びインターフェースデバイスを含む計算機システム |
US9424021B2 (en) * | 2014-12-09 | 2016-08-23 | Vmware, Inc. | Capturing updates to applications and operating systems |
US9424067B2 (en) * | 2014-12-11 | 2016-08-23 | Amazon Technologies, Inc. | Managing virtual machine instances utilizing an offload device |
US9292332B1 (en) * | 2014-12-11 | 2016-03-22 | Amazon Technologies, Inc. | Live updates for virtual machine monitor |
US20160350099A1 (en) * | 2015-05-29 | 2016-12-01 | Hewlett Packard Enterprise Development Lp | Application deployment to virtual machines |
WO2017062571A2 (en) * | 2015-10-09 | 2017-04-13 | Milwaukee Silicon, Llc | Purified silicon, devices and systems for producing same |
US10209899B2 (en) * | 2015-11-06 | 2019-02-19 | Microsoft Technology Licensing, Llc | Storage virtualization offload |
US10248468B2 (en) * | 2016-01-11 | 2019-04-02 | International Business Machines Corporation | Using hypervisor for PCI device memory mapping |
US10310893B2 (en) * | 2016-04-05 | 2019-06-04 | Microsoft Technology Licensing, Llc | Managing container pause and resume |
US10318162B2 (en) | 2016-09-28 | 2019-06-11 | Amazon Technologies, Inc. | Peripheral device providing virtualized non-volatile storage |
US10795708B1 (en) * | 2016-11-10 | 2020-10-06 | Parallels International Gmbh | Transparent disk caching for virtual machines and applications |
-
2016
- 2016-09-28 US US15/279,352 patent/US10318162B2/en active Active
-
2017
- 2017-09-28 EP EP17783666.5A patent/EP3519933B1/en active Active
- 2017-09-28 CN CN201780059898.1A patent/CN109791471B/zh active Active
- 2017-09-28 WO PCT/US2017/053869 patent/WO2018064247A1/en unknown
-
2019
- 2019-06-07 US US16/435,372 patent/US11249647B2/en active Active
-
2022
- 2022-02-11 US US17/670,342 patent/US11868617B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681899A (zh) * | 2011-03-14 | 2012-09-19 | 金剑 | 云计算服务平台的虚拟计算资源动态管理系统 |
CN105745627A (zh) * | 2013-08-14 | 2016-07-06 | 思凯拉有限责任公司 | 用于非易失性存储器存储设备的地址转换 |
CN105184113A (zh) * | 2014-03-27 | 2015-12-23 | 英特尔公司 | 用于实现安全视频输出路径的硬件辅助虚拟化 |
Also Published As
Publication number | Publication date |
---|---|
US20190294328A1 (en) | 2019-09-26 |
US20220164104A1 (en) | 2022-05-26 |
EP3519933A1 (en) | 2019-08-07 |
CN109791471A (zh) | 2019-05-21 |
WO2018064247A1 (en) | 2018-04-05 |
US20180088804A1 (en) | 2018-03-29 |
US10318162B2 (en) | 2019-06-11 |
US11249647B2 (en) | 2022-02-15 |
US11868617B2 (en) | 2024-01-09 |
EP3519933B1 (en) | 2023-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109791471B (zh) | 虚拟化外围装置处的非易失性存储装置 | |
US11093148B1 (en) | Accelerated volumes | |
US11729073B2 (en) | Dynamic scaling of storage volumes for storage client file systems | |
US9792060B2 (en) | Optimized write performance at block-based storage during volume snapshot operations | |
US10169068B2 (en) | Live migration for virtual computing resources utilizing network-based storage | |
US9983825B2 (en) | Efficient data volume replication for block-based storage | |
JP6353924B2 (ja) | ブロックベースストレージに対するデータボリュームの耐久性状態の低減 | |
US9836327B1 (en) | Network-based storage access control for migrating live storage clients | |
US10860380B1 (en) | Peripheral device for accelerating virtual computing resource deployment | |
US10057187B1 (en) | Dynamic resource creation to connect client resources in a distributed system | |
US20150324388A1 (en) | Dataset replica migration | |
US9910881B1 (en) | Maintaining versions of control plane data for a network-based service control plane | |
US10728169B1 (en) | Instance upgrade migration | |
CN115413338A (zh) | 在计算环境中提供加速器与存储装置之间的直接数据访问 | |
CN110928935B (zh) | 数据的访问命令处理方法、装置和系统 | |
US11347413B2 (en) | Opportunistic storage service | |
CN110692043B (zh) | 用于对备份数据进行负载平衡的系统和方法 | |
US10812408B1 (en) | Preventing concentrated selection of resource hosts for placing resources | |
US11030100B1 (en) | Expansion of HBA write cache using NVDIMM | |
CN115136133A (zh) | 按需代码执行的单次使用执行环境 | |
US11323331B2 (en) | Cloud server and operating method of the same | |
US11121981B1 (en) | Optimistically granting permission to host computing resources |
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 |