CN109496296A - 使远程存储访问在虚拟化环境中显示为本地的硬件 - Google Patents

使远程存储访问在虚拟化环境中显示为本地的硬件 Download PDF

Info

Publication number
CN109496296A
CN109496296A CN201780046590.3A CN201780046590A CN109496296A CN 109496296 A CN109496296 A CN 109496296A CN 201780046590 A CN201780046590 A CN 201780046590A CN 109496296 A CN109496296 A CN 109496296A
Authority
CN
China
Prior art keywords
nvmval
hardware device
host computer
long
nvm
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.)
Withdrawn
Application number
CN201780046590.3A
Other languages
English (en)
Inventor
V·马克赫瓦克斯
G·布班
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN109496296A publication Critical patent/CN109496296A/zh
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0667Virtualisation aspects at data level, e.g. file, record or object virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

主机计算机包括虚拟机,该虚拟机包括设备特定的非易失性存储器接口(NVMI)。非易失性存储器虚拟化抽象层(NVMVAL)硬件设备与虚拟机的设备特定的NVMI通信。NVMVAL驱动器由主机计算机执行并且与NVMVAL硬件设备通信。NVMVAL硬件设备向虚拟机的设备特定NVMI通告本地NVM设备。NVMVAL硬件设备和NVMVAL驱动器被配置为使虚拟机对远离虚拟机的远程NVM的访问虚拟化,使得远程NVM对于虚拟机就好像是本地的一样。

Description

使远程存储访问在虚拟化环境中显示为本地的硬件
技术领域
本公开涉及主机计算机系统,并且更具体地涉及包括虚拟机和硬件的主机计算机系统,以使远程存储访问在虚拟化环境中显示为本地。
背景技术
本文提供的背景描述是为了总体上呈现本公开的背景的目的。目前被称为发明人的工作在本背景技术部分中对该工作进行描述的范围内、以及在申请时不能以其他方式证明是现有技术的本描述的多个方面,既不明确也不暗示地被承认是本公开的现有技术。
在主机操作系统(OS)中运行的虚拟机(VM)通常经由主机OS中的虚拟化层提供的软件仿真层来访问诸如存储的硬件资源。与直接访问硬件资源相比,仿真层增加了延迟并且通常降低了性能。
该问题的一个解决方案涉及单根输入输出虚拟化(SR-IOV)的使用。SR-IOV允许诸如附接PCIE的存储控制器等的硬件设备针对每个VM创建虚拟功能。虚拟功能可以由VM直接访问,从而绕过主机OS的软件仿真层。
虽然SR-IOV允许硬件直接由VM使用,但硬件必须用于其特定目的。换句话说,存储设备必须用于存储数据。网络接口卡(NIC)必须用于在网络上进行通信。虽然SR-IOV有用,但它不允许更高级的存储系统通过网络而被访问。当访问远程存储时,VM想要使用的设备功能是存储,但是VM需要使用以访问远程存储的物理设备是NIC。因此,使用逻辑以将存储命令转换为网络命令。在一种方式中,逻辑可以位于运行在VM中的软件中,并且VM可以使用SR-IOV以与NIC通信。备选地,逻辑可以由主机OS运行,并且VM使用主机OS的软件仿真层。
发明内容
主机计算机包括虚拟机,其包括设备特定的非易失性存储器接口(NVMI)。非易失性存储器虚拟化抽象层(NVMVAL)硬件设备与虚拟机的设备特定的NVMI通信。NVMVAL驱动器由主机计算机执行并且与NVMVAL硬件设备通信。NVMVAL硬件设备将本地NVM设备通告给虚拟机的设备特定的NVMI。NVMVAL硬件设备和NVMVAL驱动器被配置为使虚拟机对远离虚拟机的远程NVM的访问虚拟化,使得远程NVM对于虚拟机就好像是本地的一样。
在其他特征中,NVMVAL硬件设备和NVMVAL驱动器被配置为安装远程存储卷并且使虚拟机对远程存储卷的访问虚拟化。NVMVAL驱动器从对应于远程存储卷的远程存储系统请求位置信息,将位置信息存储在NVMVAL硬件设备可访问的存储器中,并且将远程存储卷通知给NVMVAL硬件设备。NVMVAL硬件设备和NVMVAL驱动器被配置为卸装远程存储卷。
在其他特征中,NVMVAL硬件设备和NVMVAL驱动器被配置为向远程NVM写入数据。NVMVAL硬件设备访问存储器以确定写入的数据的存储位置是否已知,如果写入的数据的存储位置已知,则向远程NVM发送写入请求,并且如果写入的数据的存储位置未知,则联系NVMVAL驱动器。NVMVAL硬件设备和NVMVAL驱动器被配置为从远程NVM读取数据。
在其他特征中,NVMVAL硬件设备访问存储器以确定读取的数据的存储位置是否已知,如果读取的数据的存储位置已知,则向远程NVM发送读取请求,并且如果读取的数据的存储位置未知,则联系NVMVAL驱动器。NVMVAL硬件设备使用客户密钥执行加密。
在其他特征中,NVMI包括非易失性存储器快速(NVMe)接口。
NVMI执行设备虚拟化。NVMI包括具有单根输入/输出虚拟化(SR-IOV)的非易失性存储器快速(NVMe)接口。在错误状况发生时,NVMVAL硬件设备通知NVMVAL驱动器。NVMVAL驱动器使用远程NVM的协议来执行错误处置。在错误状况被解决时,NVMVAL驱动器通知NVMVAL硬件设备。
在其他特征中,NVMVAL硬件设备包括:安装/卸装控制器,用以安装对应于远程NVM的远程存储卷并且卸装远程存储卷;写入控制器,用以向远程NVM写入数据;以及读取控制器,用以从远程NVM读取数据。
在其他特征中,主机计算机的操作系统包括监视器(hypervisor)和主机堆栈。NVMVAL硬件设备绕过监视器和主机堆栈以进行数据路径操作。NVMVAL硬件设备包括现场可编程门阵列(FPGA)。NVMVAL硬件设备包括专用集成电路。
在其他特征中,NVMVAL驱动器针对来自虚拟机的从远程NVM的读取请求和来自虚拟机的向远程NVM的写入请求来处置控制路径处理。NVMVAL硬件设备针对来自虚拟机的从远程NVM的读取请求和来自虚拟机的向远程NVM的写入请求来处置数据路径处理。NVMI包括具有单根输入/输出虚拟化(SR-IOV)的非易失性存储器快速(NVMe)接口。
本公开的其他应用领域将根据详细描述、权利要求和附图而变得明显。详细描述和特定示例仅旨在用于说明的目的,并不旨在限制本公开的范围。
附图说明
图1是根据本公开的包括虚拟机和非易失性存储器虚拟化抽象层(NVMVAL)硬件设备的主机计算机的示例的功能性框图。
图2是根据本公开的NVMVAL硬件设备的示例的功能性框图。
图3是图示根据本公开的用于安装和卸装远程存储卷的方法的示例的流程图。
图4是图示根据本公开的用于将数据从虚拟机写入远程存储卷的方法的示例的流程图。
图5是图示根据本公开的用于从远程存储卷读取数据的方法的示例的流程图。
图6是图示根据本公开的用于读取或写入数据流期间的错误处置的方法的示例的流程图。
图7是根据本公开的包括NVMVAL硬件设备的系统架构的示例的功能性框图。
图8是根据本公开的虚拟机的虚拟化模型的示例的功能性框图。
图9是根据本公开的本地NVMe设备的虚拟化的示例的功能性框图。
图10是根据本公开的命名空间虚拟化的示例的功能性框图。
图11是根据本公开的本地NVM的虚拟化的示例的功能性框图。
图12是根据本公开的NVM访问隔离的示例的功能性框图。
图13A和图13B是根据本公开的远程NVMe访问的虚拟化的示例的功能性框图。
图14A和图14B是根据本公开的远程NVMe访问的虚拟化的另一示例的功能性框图。
图15是图示根据本公开的对远程NVM的访问的虚拟化的示例的功能性框图。
图16A和图16B是图示根据本公开的远程NVM访问隔离的示例的功能性框图。
图17A和图17B是图示根据本公开的对本地NVMe设备和远程NVMe设备的复制的示例的功能性框图。
图18A和图18B是图示根据本公开的对本地NVM和远程NVM的复制的示例的功能性框图。
图19A和图19B是图示根据本公开的对用于分布式存储系统的服务器的虚拟化访问的示例的功能性框图。
图20A和20B是图示根据本公开的对用于具有高速缓存的分布式存储系统的服务器的虚拟化访问的示例的功能性框图。
图21是图示根据本公开的存储和转发模型的示例的功能性框图。
图22是图示根据本公开的RNIC直接访问模型的示例的功能性框图。
图23是图示根据本公开的直通(cut-through)模型的示例的功能性框图。
图24是图示根据本公开的完全集成模型的示例的功能性框图。
图25A至图25C是图示根据本公开的高级别磁盘写入流程的示例的功能性框图和流程图。
图26A至图26C是图示根据本公开的高级磁盘读取流程的示例的功能性框图和流程图。
在附图中,附图标记可以被复用,以标识相似和/或相同的元件。
具体实施方式
数据中心要求对存储在诸如闪存存储和硬盘驱动(HDD)的永久存储器设备上的NVM的低延迟访问。数据中心中的闪存存储也可以用于存储数据以支持虚拟机(VM)。与HDD相比,闪存设备具有更高的吞吐量和更低的延迟。
针对HDD,最初对诸如Windows或Linux的主机操作系统(OS)中已有的存储软件堆栈进行了优化。然而,HDD通常针对输入/输出(IO)操作具有若干毫秒的延迟。由于HDD的高延迟,对存储软件堆栈的代码效率的关注不是最高优先级。随着闪存存储器的成本效率提高以及使用闪存存储和非易失性存储器作为主要后备存储以用于基础设施即服务(IaaS)存储或IaaS存储的高速缓存,转移关注点以改进IO堆栈的性能可以为托管VM提供重要的优势。
诸如但不限于非易失性存储器快速(NVMe)的设备特定标准存储接口已经被用于改进性能。设备特定的标准存储接口是提供对闪存存储设备和其他快速存储器设备的VM访问的相对快速的方式。Windows和Linux生态系统都包含设备特定的NVMI,以向VM和应用提供高性能存储。
利用设备特定的NVMI提供了进入主机OS的存储堆栈的最快路径。使用设备特定的NVMI作为非易失性存储的前端将通过使用针对每个OS的最优化的软件堆栈并且通过减少用于向VM传递存储功能的总本地CPU负载来改进VM托管的效率。
根据本公开的计算机系统使用硬件设备充当非易失性存储器存储虚拟化抽象层(NVMVAL)。在前文的描述中,图1至图6描述了架构的示例,非易失性存储器存储虚拟化抽象层(NVMVAL)硬件设备的功能性框图,以及用于安装/卸装,读取和写入以及错误处置过程的流程的示例。图7至图28C呈现了附加的用例。
现在参考图1至图2,示出了主机计算机60和一个或多个远程存储系统64。主机计算机60运行主机操作系统(OS)。主机计算机60包括一个或多个虚拟机(VM)70-1、70-2、......(统称为VM 70)。VM 70-1和70-2分别包括设备特定的非易失性存储器接口(NVMI)74-1和74-2(统称为设备特定的NVMI 74)。在一些示例中,设备特定的NVMI 74执行设备虚拟化。
仅作为示例,设备特定的NVMI 74可以包括非易失性存储器快速(NVMe)接口,但是可以使用其他设备特定的NVMI。仅作为示例,可以使用单根输入/输出虚拟化(SR-IOV)来执行设备特定的NVMI 74中的设备虚拟化,但是可以使用其他设备虚拟化。
主机计算机60还包括非易失性存储器虚拟化抽象层(NVMVAL)硬件设备80。NVMMAL硬件设备80通告将由与主机计算机60相关联的VM 70使用的设备特定的NVMI。NVMVAL硬件设备80抽象实际的存储和/或联网硬件以及用于与实际的存储和/或联网硬件通信的协议。该方式去除了在VM 70内部运行硬件和协议特定的驱动器的需要,同时仍允许VM 70使用诸如SR-IOV的设备虚拟化来利用直接硬件访问。
在一些示例中,NVMVAL硬件设备80包括附加卡,该附加卡向VM 70提供具有设备虚拟化的设备特定NVMI。在一些示例中,附加卡是外围组件互连快速(PCIE)附加卡。在一些示例中,具有设备虚拟化的设备特定NVMI包括具有使用SR-IOV的直接硬件访问的NVMe接口。在一些示例中,NVMe接口允许VM绕过主机OS监视器(诸如Hyper-V)和主机堆栈而与硬件直接通信,以进行数据路径操作。
NVMVAL硬件设备80可以使用现场可编程门阵列(FPGA)或专用集成电路(ASIC)来实现。NVMVAL硬件设备80被编程为通告一个或多个虚拟非易失性存储器接口(NVMI)设备82-1和82-2(统称为NVMI设备82)。在一些示例中,虚拟NVMI设备82是虚拟的非易失性存储器快速(NVMe)设备。NVMVAL硬件设备80支持设备虚拟化,因此在主机OS中运行的单独的VM70可以独立地访问NVMVAL硬件设备80。VM 70可以使用诸如NVMe驱动器的标准NVMI驱动器与NVMVAL硬件设备80交互。在一些示例中,VM70中不要求专用的软件。
NVMVAL硬件设备80与在主机OS中运行的NVMVAL驱动器84一起工作,以将数据存储在远程存储系统64之一中。NVMVAL驱动器84处置控制流和错误处置功能。NVMVAL硬件设备80处置数据流功能。
主机计算机60还包括随机存取存储器88,其向NVMVAL硬件设备80和NVMVAL驱动器84提供存储。主机计算机60还包括网络接口卡(NIC)92,其向网络(诸如向一个或多个远程存储系统64提供连接的本地网络、广域网、云网络、分布式通信系统等)提供网络接口。一个或多个远程存储系统64经由NIC 92与主机计算机60通信。在一些示例中,可以提供高速缓存94,以减少读取和写入访问期间的延迟。
在图2中,示出了NVMVAL硬件设备80的示例。NVMVAL硬件设备80分别向VM 74-1和74-2通告虚拟NVMI设备82-1和82-2。加密和循环冗余校验(CRC)设备110针对数据写入和读取路径进行加密并且生成和/或检查CRC。安装和卸装控制器114安装一个或多个远程存储卷并且根据需要卸装远程存储卷。如下文将进一步描述的,写入控制器118处置向远程NVM的写入数据流期间的处理,并且读取控制器122处置从远程NVM的读取数据流期间的处理。可选的高速缓存接口126分别在写入高速缓存操作和读取高速缓存操作期间存储写入数据和读取数据,以改进延迟。错误控制器124标识错误状况并且启动由NVMVAL驱动器84进行的错误处置。驱动器接口128和RAM接口130分别向NVMVAL驱动器84和RAM 88提供接口。RAM 88可以位于主机计算机中的NVMVAL驱动器84上,并且可以被高速缓存在NVMVAL驱动器84上。
现在参考图3至图6,示出了用于执行各种操作的方法。在图3中,示出了用于安装和卸装远程存储卷的方法。当在154处安装新的远程存储卷时,在158处,NVMVAL驱动器84联系远程存储系统64之一并且取回远程存储系统64中的各个存储块的位置信息。在160处,NVMVAL驱动器84将位置信息存储在由NVMVAL硬件设备80访问的RAM 88中。然后,在162处,NVMVAL驱动器84将新远程存储卷通知给NVMVAL硬件设备80并且指令NVMVAL硬件设备80开始服务针对新远程存储卷的请求。
在图3中,当在164处接收到卸装远程存储卷之一的请求时,在168处,NVMVAL驱动器84通知NVMVAL硬件设备80停止服务针对该远程存储卷的请求。在172处,NVMVAL驱动器84释放RAM 88中用于存储正被卸装的远程存储卷的位置信息的相应存储器。
在图4中,当在210处NVMVAL硬件设备80从VM 70之一接收到写入请求时,在214处,NVMVAL硬件设备80查询被存储在RAM 88中的位置信息,以确定写入的远程位置是否已知。如果该远程位置已知,则在222处NVMVAL硬件设备80使用NIC 92将写入请求发送到对应的远程存储系统之一。在224处,NVMVAL硬件设备80可以可选地将写入数据存储在诸如高速缓存94(用作写入缓存)的本地存储设备中。
为了完成222和224,NVMVAL硬件设备80使用由NVMVAL驱动器84提供的控制信息与NIC 92和高速缓存94直接通信。如果在218处用于写入的远程位置信息未知,则在230处NVMVAL硬件设备80联系NVMVAL驱动器84并且使NVMVAL驱动器84处理该请求。NVMVAL驱动器84在234处从远程存储系统64之一取回远程位置信息,在238处更新RAM 88中的位置信息,并且然后通知NVMVAL硬件设备80再次尝试处理该请求。
在图5中,在254处,NVMVAL硬件设备80接收来自VM 70之一的读取请求。如果在256处NVMVAL硬件设备80如所确定的正在使用高速缓存94,则在258处NVMVAL硬件设备80确定数据是否被存储在高速缓存94中。如果在262处数据被存储在高速缓存94中,则在260处利用从NVMVAL硬件设备80到高速缓存94的直接请求,读取从高速缓存94得以满足。
如果在262处数据未被存储在高速缓存94中,则在264处NVMVAL硬件设备80查询RAM 88中的位置信息,以在268处确定RAM 88是否存储了读取的远程位置。如果在268处RAM88存储了读取的远程位置,则在272处NVMVAL硬件设备80使用NIC 92将读取请求发送到远程位置。在274处,当接收到数据时,NVMVAL硬件设备80可以可选地将读取数据存储在高速缓存94(用作读取高速缓存)中。如果用于读取的远程位置信息未知,则在280处NVMVAL硬件设备80联系NVMVAL驱动器84并且指令NVMVAL驱动器84处理该请求。NVMVAL驱动器84在284处从远程存储系统64之一取回远程位置信息,在286处更新RAM 88中的位置信息,并且指令NVMVAL硬件设备80再次尝试处理该请求。
在图6中,如果在310处NVMVAL硬件设备80在处理向远程存储系统64之一的读取请求或写入请求时遇到错误,则NVMVAL硬件设备80在314处发送指令NVMVAL驱动器84纠正错误状况的消息(如果可能的话)。在318处,NVMVAL驱动器84执行与远程存储系统64中的对应的远程存储系统的协议相对应的错误处置路径。
在一些示例中,NVMVAL驱动器84联系远程控制器服务以报告错误并且请求解决错误状况。仅作为示例,远程存储节点可能是不可访问的。NVMVAL驱动器84要求控制器服务将不可访问的节点的职责分配给不同的节点。一旦完成重新分配,NVMVAL驱动器84就更新RAM88中的位置信息以指示新节点。当在322处解决了错误时,则NVMVAL驱动器84在326处通知NVMVAL硬件设备80重试该请求。
附加示例和用例
现在参考图7,主机计算机400运行主机OS并且包括一个或多个VM 410。主机计算机400包括NVMVAL硬件设备414,其向本地NVMe设备420、一个或多个分布式存储系统服务器428、以及一个或多个远程主机430提供虚拟化的直接访问。虽然在以下的示例中示出了NVMe设备,但可以使用NVMI设备。虚拟化的直接访问经由RNIC 434从VM 410向远程存储集群424提供。虚拟化的直接访问还经由RNIC 434从VM 410向分布式存储系统服务器428提供。虚拟化的直接访问和复制访问经由RNIC 434而被提供给远程NVM。虚拟化的直接访问和复制访问还经由RNIC 434而被提供给连接到远程主机430的远程NVMe设备。
在一些示例中,NVMVAL硬件设备414允许对各种各样的存储技术进行高性能和低延迟的虚拟化的硬件访问,同时完全绕过数据路径上的本地软件堆栈和远程软件堆栈。在一些示例中,NVMVAL硬件设备414提供对本地附接的标准NVMe设备和NVM的虚拟化的直接硬件访问。
在一些示例中,NVMVAL硬件设备414利用标准RDMA NIC(RNIC)的高性能和低延迟的远程直接存储器访问(RDMA)能力来提供对远程标准NVMe设备和NVM的虚拟化的直接硬件访问。
在一些示例中,NVMVAL硬件设备使用本地和远程附接的标准NVMe设备和非易失性存储器来提供对复制存储库的虚拟化的直接硬件访问。还提供了对诸如分布式存储系统服务器的高性能分布式存储堆栈的虚拟化的直接硬件访问。
NVMVAL硬件设备414不要求对NVMe规范的SR-IOV扩展。在一些部署模型中,NVMVAL硬件设备414被附接到托管VM 410的计算节点上的Pcie总线。在一些示例中,NVMVAL硬件设备414通告标准NVMI或NVMe接口。VM认为它正在访问标准的直接附接的NVMI或NVMe设备。
现在参考图8,更详细地示出了主机计算机400和VM 410。VM410包括软件堆栈,其包括NVMe设备驱动器450、队列452(诸如管理队列(AdmQ)、提交队列(SQ)和完成队列(CQ))、消息信号中断(MSIX)454和NVMe设备接口456。
主机计算机400包括NVMVAL驱动器460、诸如软件控制和异常队列的队列462、消息信号中断(MSIX)464和NVMVAL接口466。NVMVAL硬件设备414向VM 410提供虚拟功能(VF)接口468并且向主机计算机400提供物理功能(PF)接口470。
在一些示例中,由NVMVAL硬件设备414向VM 410暴露的虚拟NVMe设备具有多个NVMe队列和MSIX中断,以允许VM 410的NVMe堆栈利用可用的核心并且优化NVMe堆栈的性能。在一些示例中,无需对VM 410的NVMe软件堆栈修改或增强。在一些示例中,NVMVAL硬件设备414支持多个VF 468。VF 468附接到VM 410并且被VM 410认为是标准的NVMe设备。
在一些示例中,NVMVAL硬件设备414是存储虚拟化设备,其向VM 410暴露NVMe硬件接口,处理和解释NVMe命令,并且与其他硬件设备直接通信以读取或写入VM 410的非易失性VM数据。
NVMVAL硬件设备414不是NVMe存储设备,不携带针对数据访问可用的NVM,并且不实现利用RDMA联网进行远程访问的RNIC功能。相反,NVMVAL硬件设备414利用已有和现场验证的硬件设备已经提供的功能,并且与这些设备直接通信以完成必要的任务而完全绕过热数据路径上的软件堆栈。
软件和驱动器被用于控制路径上并且执行硬件初始化和异常处置。解耦架构实现了提高的性能,并且专注于开发NVMVAL硬件设备414的增值特征,同时复用已经可用的硬件以用于商品功能。
现在参考图9至图20B,示出了由NVMVAL硬件设备414支持的各种部署模型。在一些示例中,模型利用NVMVAL硬件设备414的共享核心逻辑、处理原理和核心流。虽然下文示出了NVMe设备和接口,但可以使用其他设备特定的NVMI或具有设备虚拟化的设备特定的NVMI。
在图9中,示出了本地NVMe设备的虚拟化的示例。主机计算机400包括本地NVM480、NVMe驱动器481、NVMe队列483、MSIX485和NVMe设备接口487。NVMVAL硬件设备414允许不支持SR-IOV虚拟化的标准NVMe设备473的虚拟化。图9中的系统去除了对NVMe标准的SR-IOV扩展的批准(以及NVMe供应商的采用)的依赖性,并且将标准(已有)NVMe设备的虚拟化带入市场。该方式假设使用一个或多个标准的本地附接的NVMe设备,并且不要求任何设备修改。在一些示例中,修改了在主机计算机400上运行的NVMe设备驱动器481。
NVMe标准定义了提交队列(SQ)、管理队列(AdmQ)和完成队列(CQ)。AdmQ用于控制流和设备管理。SQ和CQ用于数据路径。NVMVAL硬件设备414暴露并且虚拟化SQ、CQ和AdmQ。
以下是由VM NVMe堆栈发布到NVMVAL硬件设备的NVMe队列的NVMe命令的高级别处理流程。被发布到AdmQ 452的命令由在主机计算机400上运行的NVMVAL硬件设备414的NVMVAL驱动器460转发和处置。NVMVAL驱动器460与主机NVMe驱动器481通信,以将经处理的命令传播到本地NVMe设备473。在一些示例中,该流程可能要求扩展主机NVMe驱动器481。
被发布到NVMe提交队列(SQ)452的命令由NVMVAL硬件设备414处理和处置。NVMVAL硬件设备414解析应该处置NVMe命令的本地NVMe设备并且将命令发布到各个本地附接的NVMe设备482的硬件NVMe SQ 452。
由本地NVMe设备487处理的NVMe命令的完成被NVMVAL硬件设备414的NVMe CQ 537拦截并且被传递到指示相应的NVMe命令的完成的VM NVMe CQ。
在图10至图11所示的一些示例中,NVMVAL硬件设备414通过主机计算机400中的回弹(bounce)缓冲器491复制NVMe命令的数据。该方式简化了实现并且减少了对RNIC和本地NVMe设备的行为和实现的依赖性。
在图10中,使用NVMe命名空间启用本地NVMe存储的虚拟化。本地NVMe设备被配置有多个命名空间。管理堆栈将一个或多个命名空间分配给VM 410。管理堆栈使用主机计算机400中的NVMVAL驱动器460来配置NVMVAL硬件设备414中的命名空间访问控制表493。管理堆栈经由主机计算机400的NVMVAL接口466向VM 410暴露NVMe设备473的命名空间495。NVMVAL硬件设备414还通过提供具有VM提供的加密密钥的数据加密来提供由VM 410进行的本地NVMe设备命名空间访问的性能和安全性隔离。
在图11中,示出了主机计算机400的本地NVM 480的虚拟化。该方式允许本地NVM480的虚拟化。该模型的效率低于向VM 410提供对映射到本地NVM 480的文件的直接访问。然而,该方式允许更动态的配置,提供改进的安全性、服务质量(QoS)和性能隔离。
NVMVAL硬件设备414使用客户提供的加密密钥来对VM 410之一的数据进行加密。NVMVAL硬件设备414还提供NVM访问的QoS以及性能隔离,并且去除噪声环境问题。
NVMVAL硬件设备414提供块级别访问和资源分配和隔离。利用对NVMe API的扩展,NVMVAL硬件设备414提供字节级别访问。NVMVAL硬件设备414处理NVMe命令,从VM地址空间中的缓冲器453读取数据,处理数据(加密、CRC),并且将数据直接写入主机计算机400的本地NVM480。在完成对本地NVM 480的直接存储器访问(DMA)时,经由NVMVAL硬件设备414向VM410中的NVMe CQ 452报告相应的NVMe完成。NVMe管理流被传播到在主机计算机400上运行的NVMVAL驱动器460,以进行进一步处理。
在一些示例中,NVMVAL硬件设备414去除了刷新主机CPU高速缓存以保持本地NVM480中的数据的需要。NVMVAL硬件驱动器414将数据传递到异步DRAM刷新(ADR)域而不依赖于执行主机CPU上的特殊指令,并且不依赖于VM 410执行动作以实现对本地NVM 480的持续访问。
在一些示例中,在CPU将迅速消耗IO的假设下,直接数据输入/输出(DDIO)用于允许由主机CPU通过机会性地将IO放置到CPU高速缓存来进行加速IO处理。在一些示例中,当NVMVAL硬件设备414将数据写入本地NVM 480时,以本地NVM 480为目标的数据不被存储到CPU高速缓存。
在图12中,使用文件500来启用主机计算机400的本地NVM 480的虚拟化,文件500经由针对本地NVM 480的已有FS扩展而被创建。文件500被映射到NVMe命名空间。管理堆栈针对VM 410分配一个或多个NVM映射的文件,将一个或多个NVM映射的文件映射到对应的NVMe命名空间,以及使用NVMVAL驱动器460来配置NVMVAL硬件设备414并且经由NVMVAL硬件设备414的NVMe接口向VM 410暴露/分配NVMVAL命名空间。
在图13A和图13B中,示出了远程主机计算机400R的远程NVMe设备473的虚拟化。该模型允许经由远程主机计算机400R的RNIC434和NVMVAL硬件设备414对远程NVMe设备473进行虚拟化和直接VM访问。示出了诸如RNIC434的附加设备。主机计算机400包括RNIC驱动器476、RNIC队列477、MSIX 478和RNIC设备接口479。该模型假设存在管理堆栈,其管理可用于远程访问的共享NVMe设备并且处置远程NVMe设备资源分配。
远程主机计算机400R的NVMe设备473没有被要求支持除了由NVMe标准当前定义的功能之外的附加功能,并且没有被要求支持SR-IOV虚拟化。主机计算机400的NVMVAL硬件设备414使用RNIC434。在一些示例中,RNIC434是经由Pcie总线可访问的,并且实现与远程主机计算机400R的NVMe设备473的通信。
在一些示例中,用于通信的线路协议符合NVMe-over-Fabric的定义。对远程主机计算机400R的NVMe设备473的访问不包括热数据路径上的软件。NVMe管理命令由在主机计算机400上运行的NVMVAL驱动器460处置,并且经处理的命令在必要时被传播到远程主机计算机400R的NVMe设备473。
使用NVMe-over-Fabric协议将NVMe命令(例如磁盘读取/磁盘写入)发送到远程节点,由远程节点处的远程主机计算机400R的NVMVAL硬件设备414处置该NVMe命令,并且将该NVMe命令放置到远程主机计算机400R的NVMe设备473的相应NVMe Q 483。
使用RDMA读取/写入将数据传播到远程主机计算机400R中的回弹缓冲器491,并且由在远程主机计算机400R处发布到NVMe设备473的NVMe Q 483的相应NVMe命令引用该数据。
远程节点上的NVMe操作的完成被远程主机计算机400R的NVMVAL硬件设备414的NVMe CQ 536拦截并且被发送回起始节点。起始节点处的NVMVAL硬件设备414处理完成并且将NVMe完成用信号通知给VM 410中的NVMe CQ 452。
NVMVAL硬件设备414负责对远程主机计算机400R的NVMe设备473的QoS、安全性和细粒度访问控制。如可以被理解的,NVMVAL硬件设备414与在不同节点上运行的多个VM共享标准NVMe设备。在一些示例中,被存储在远程主机计算机400R的共享NVMe设备473上的数据由NVMVAL硬件设备414使用客户提供的加密密钥加密。
现在参考图14A和图14B,可以以不同的方式执行远程主机计算机400R的NVMe设备473的虚拟化。使用NVMe命名空间实现远程和共享NVMe存储的虚拟化。利用多个命名空间配置远程主机计算机400R的NVMe设备473。管理堆栈将来自远程主机计算机400R的一个或多个NVMe设备473的一个或多个命名空间分配给VM 410。管理堆栈使用NVMVAL驱动器460来配置NVMVAL硬件设备414并且经由NVMe接口456向VM 410暴露/分配NVMe命名空间。NVMVAL硬件设备414提供对远程主机计算机400R的NVMe设备473的访问的性能和安全性隔离。
现在参考图15A和图15B,示出了远程NVM的虚拟化。该模型允许直接从虚拟机410对远程NVM进行虚拟化和访问。管理堆栈管理可用于远程访问的集群范围的NVM资源。
与本地NVM访问类似,该模型提供安全性和性能访问隔离。VM410的数据由NVMVAL硬件设备414使用客户提供的加密密钥来加密。NVMVAL硬件设备414使用经由Pcie总线可访问的RNIC434以进行与关联于远程主机计算机400R的NVM 480的通信。
在一些示例中,用于通信的线路协议是标准RDMA协议。分别使用RDMA读取操作和RDMA写入操作来访问远程NVM 480,该远程NVM 480被映射到向VM 410中的NVMe Q 452发布的磁盘读取操作和磁盘写入操作。
NVMVAL硬件设备414处理由VM 410发布的NVMe命令,从VM地址空间中的缓冲器453读取数据,处理数据(加密、CRC),并且使用RDMA操作将数据直接写入远程主机计算机400R上的NVM 480。在完成RDMA操作后(可能涉及附加消息以确确保持续性),经由VM 410中的NVMe CQ 452报告相应的NVMe完成。NVMe管理流被传播到在主机计算机400上运行的NVMVAL驱动器460以进行进一步的处理。
NVMVAL硬件设备414仅在本地节点上使用,该本地节点向VM410提供支持SR-IOV的NVMe接口以允许直接硬件访问,并且与(附接Pcie的)RNIC434直接通信以使用RDMA协议与远程节点通信。在远程节点上,远程主机计算机400R的NVMVAL硬件设备414不被用于提供对远程主机计算机400R的NVM 480的访问。使用远程主机计算机400R的RNIC434直接执行对NVM的访问。
在一些示例中,远程主机计算机400R的NVMVAL硬件设备414在一些情况下可以被用作临时解决方案。在一些示例中,NVMVAL硬件设备414提供块级别访问以及资源分配和隔离。在其他示例中,对NVMe API的扩展用于提供字节级访问。
数据可以直接被传递到远程节点上的ADR域,而不依赖于CPU上的特殊指令的执行,并且不依赖于VM 410来实现对NVM的持续访问。
现在参考图16,示出了远程NVM访问隔离。远程NVM的虚拟化在概念上类似于对本地NVM的访问的虚拟化。虚拟化基于针对NVM的FS扩展和将文件映射到NVMe命名空间。在一些示例中,管理堆栈分配和管理NVM文件和NVMe命名空间、文件与命名空间的相关性、访问协调和NVMVAL硬件设备配置。
现在参考图17A和图17B,示出了对主机计算机400的本地NVMe设备473和远程主机计算机400R的NVMe设备473的复制。该模型允许直接从VM 410虚拟化和访问本地和远程NVMe设备473以及数据复制。
NVMVAL硬件设备414加速跨本地NVMe设备473和远程主机计算机400R的一个或多个NVMe设备473的数据路径操作和复制。管理、共享和分配本地和远程NVMe设备473的资源以及健康监测和故障转移是管理堆栈与NVMVAL驱动器460协调的责任。
该模型依赖于在图9和图13A和图13B中描述的、由NVMVAL硬件设备414启用的技术和对本地和远程NVMe设备473的直接硬件访问。
NVMe命名空间是虚拟化和复制的单元。管理堆栈在本地和远程NVMe设备473上分配命名空间,并且将命名空间的复制集合映射到向VM 410暴露的NVMVAL硬件设备NVMe命名空间。
现在参考图18A和图18B,示出了对本地和远程NVMe设备473的复制。例如,示出了分别经由远程主机计算机400R1、400R2和400R3的远程RNIC471对远程主机计算机400R1、400R2和400R3的复制。由VM 410发布到NVMVAL硬件设备NVMe CQ 452的磁盘写入命令由NVMVAL硬件设备414处理并且被复制到与对应的NVMVAL硬件设备NVMe命名空间相关联的本地和远程NVMe设备473。在完成复制的命令后,NVMVAL硬件设备414向VM 410的地址空间中的NVMe CQ 452报告磁盘写入操作的完成。
NVMVAL硬件设备414检测故障并且经由NVMVAL驱动器460将故障报告给管理堆栈。异常处置和故障恢复是软件堆栈的责任。
由VM 410发布到NVMe SQ 452的磁盘写入命令被转发到保存数据副本的本地和远程NVMe设备473之一。经由NVMVAL硬件设备NVMe CQ 537向VM 410报告读取操作的完成。
该模型允许直接从VM 410虚拟化和访问本地和远程NVM以及数据复制。该模型非常类似于图18A和图18B中描述的将数据复制到本地和远程NVMe设备,仅替换为使用NVM技术。
该模型依赖于分别在图12和图16中描述的、由NVMVAL硬件设备414支持的技术和对本地和远程NVM的直接硬件访问。该模型还提供了分别在图12和图16中讨论的平台依赖性和解决方案。
现在参考图19A至图19B和图20A至图20B,示出了对分布式存储系统服务器后端的虚拟化的直接访问。该模型提供诸如Microsoft Azure等的分布式存储平台的虚拟化。
分布式存储系统服务器600包括堆栈602、RNIC驱动器604、RNIC Q 606、MSIX 608和RNIC设备接口610。分布式存储系统服务器600包括NVM 614。图22A中的NVMVAL硬件设备414实现了分布式存储系统服务器协议的客户端端点的数据路径操作。控制操作由NVMVAL驱动器460与堆栈602协作来实现。
NVMVAL硬件设备414解释被发布到向VM 410直接暴露的NVMe SQ 452的磁盘读取命令和磁盘写入命令,将这些命令转换为分布式存储系统服务器600的相应命令,解析分布式存储系统服务器600,并且将命令发送到分布式存储系统服务器600以进行进一步的处理。
NVMVAL硬件设备414读取并且处理VM数据(加密、CRC),并且使数据可用于分布式存储系统服务器600的远程访问。分布式存储系统服务器600使用RDMA读取或RDMA写入来访问由NVMVAL硬件设备414加密和CRC化的VM数据,并且根据分布式存储系统服务器协议将VM410的数据可靠且持久地存储到多个副本。
一旦VM 410的数据可靠且持久地被存储在多个位置,分布式存储系统服务器600就发送完成消息。完成消息由NVMVAL硬件设备414转换为VM 410中的NVMe CQ 452。
NVMVAL硬件设备414使用与RNIC434的直接硬件通信来与分布式存储系统服务器600通信。NVMVAL硬件设备414不在分布式存储系统服务器600上部署并且使用远程主机计算机400R3的远程RNIC434来完成所有通信。在一些示例中,NVMVAL硬件设备414使用线路协议来与分布式存储系统服务器600通信。
分布式存储系统服务器协议的虚拟化单元是虚拟磁盘(VDisk)。VDisk被映射到由NVMVAL硬件设备414向VM 410暴露的NVMe命名空间。单个VDisk可以由跨不同分布式存储系统服务器划分的多个分布式存储系统服务器片表示。NVMe命名空间到VDisk的映射以及片分辨率由分布式存储系统服务器管理堆栈经由NVMVAL驱动器460来配置并且由NVMVAL硬件设备414执行。
NVMVAL硬件设备414可以与相同主机计算机上的分布式存储系统服务器协议的软件客户端端点共存,并且可以同时访问相同或不同的分布式存储系统服务器并且与其通信。特定VDisk由NVMVAL硬件设备414或软件分布式存储系统服务器客户端处理。在一些示例中,NVMVAL硬件设备414实现块高速缓存功能,其允许分布式存储系统服务器利用本地NVMe存储作为直写式高速缓存。直写式高速缓存减少了针对磁盘读取操作的来自分布式存储系统服务器的联网和处理负载。高速缓存是可选特征并且可以按VDisk粒度启用和禁用。
现在参考图21至图24,示出了集成模型的示例。在图21中,示出了存储和转发模型。主机计算机400中的回弹缓冲器491用于将数据存储且转发到VM 410以及存储且转发来自VM 410的数据。NVMVAL硬件设备414被示为包括PCIe接口660、NVMe DMA 662、主机DMA664和协议引擎668。下文将提供对存储和转发模型的进一步讨论。
在图22中,RNIC434被提供对位于VM 410中的数据缓冲器453的直接访问。由于数据不经过NVMVAL硬件设备414流动,所以在该模型中不能由NVMVAL硬件设备414进行数据处理。还存在若干需要被解决的技术挑战,并且可能需要RNIC434或主机软件堆栈/监视器(诸如Hyper V)的专门支持。
在图23中,示出了直通模型。该对等PCIE通信模型类似于图21中示出的存储和转发模型,除了数据是根据来自RNIC434或NVMe设备的PCIE请求而经过NVMVAL硬件设备414流式传输而不是通过主机计算机400中的回弹缓冲器491被存储和转发。
在图24中,示出了完全集成的模型。除了图21至图23示出的软件组件之外,NVMVAL还包括融合以太网(RoCE)引擎680上的RDMA和以太网接口682。在该模型中,提供了所有组件到相同板/NVMVAL硬件设备414的完全集成。数据在内部经过不同组件流式传输,而不消耗系统存储器或PCIE总线吞吐量。
在下文更详细的讨论中,RNIC434被用作NVMVAL硬件设备414直接与之交互的本地附接的硬件设备的示例。
参见图21,该模型假设利用主机计算机400中的回弹缓冲器491在往返VM 410途中存储和转发数据。从VM 410中的数据缓冲器453将数据复制到主机计算机400中的回弹缓冲器491。然后,请求RNIC434将数据从主机计算机400中的回弹缓冲器491发送到分布式存储系统服务器,反之亦然。在NVMVAL硬件设备414将数据复制到VM 410中的数据缓冲器453之前,整个IO由RNIC434完全存储到回弹缓冲器491。RNIC Q 477位于主机计算机400中并且由NVMVAL硬件设备414直接编程。
该模型以增加处理延迟为代价简化了实现。NVMVAL硬件设备414进行两次数据访问,并且RNIC434进行一次数据访问。
针对短IO,延迟增加是不显著的并且可以与NVMVAL硬件设备414中的其余处理被管线化。针对长IO,可能存在处理延迟的显著增加。
从存储器和PCIE吞吐量角度来看,NVMVAL硬件设备414处理VM数据(CRC、压缩、加密)。将数据复制到回弹缓冲器491允许这发生,并且即使应用决定重写数据,所计算的CRC仍然有效。该方式还允许在使用回弹缓冲器491作为平滑缓冲器的同时将NVMVAL硬件设备414和RNIC434流解耦。
参见图22,RNIC直接访问模型使RNIC434能够直接访问位于VM 410中的数据缓冲器453的数据。该模型避免了图21中的存储和转发模型的延迟和PCIE/存储器开销。
RNIC Q 477位于主机计算机400中,并且由NVMVAL硬件设备414以类似于图21中的存储和转发模型的方式编程。用RNIC描述符提供的数据缓冲器地址是指VM 410中的数据缓冲器453。RNIC 434可以直接访问VM 410中的数据缓冲器453,而不要求NVMVAL硬件设备414将数据复制到主机计算机400中的回弹缓冲器491。
因为数据不是经过NVMVAL硬件设备414流式传输的,所以NVMVAL硬件设备414不能用于卸载数据处理(诸如压缩、加密和CRC)。此选项的部署假设数据不要求附加处理。
参见图23,直通方式允许RNIC 434直接访问VM 410中的数据缓冲器453,而不要求NVMVAL硬件设备414复制经过主机计算机400中的回弹缓冲器491的数据,同时保留NVMVAL硬件设备414的数据处理卸载能力。
RNIC Q 477位于主机计算机400中并且由NVMVAL硬件设备414(类似于图21中的存储和转发模型)编程。用RNIC描述符提供的数据缓冲器地址被映射到NVMVAL硬件设备414的地址空间。无论何时RNIC 434访问数据缓冲器,其PCIE读取事务和写入事务都以NVMVAL硬件设备地址空间(PCIE对等)为目标。NVMVAL硬件设备414解码这些访问,解析VM存储器中的数据缓冲器地址,并且发布以VM存储器中的数据缓冲器为目标的相应PCIE请求。PCIE事务的完成被解析并且作为RNIC请求的完成被传播回来。
该模型避免了通过回弹缓冲器491的数据复制并且保留了NVMVAL硬件设备414的数据处理卸载能力,但是该模型具有一些劣势。因为RNIC 434进行的所有数据缓冲器访问都经过NVMVAL硬件设备414进行隧道传输,所以这些请求的完成延迟趋于增加并且可能影响RNIC性能(例如,具体是PCIE读取请求的延迟)。
参见图24,在完全集成的模型中,没有控制或数据路径通过主机计算机400,并且所有控制和数据处理完全被包含在NVMVAL硬件设备414内。从数据流的角度来看,该模型避免了通过主机计算机400的回弹缓冲器491的数据复制,保留了NVMVAL硬件设备414的数据处理卸载,不增加PCIE访问延迟,并且不要求双端口PCIE接口来解决写入到写入依赖性。然而,该模型是比图21至图23中的模型更复杂的模型。
现在参考图25A至图25C和图26A至图26C,示出了以分布式存储系统服务器后端存储平台为目标的磁盘读取操作和磁盘写入操作的高级别数据流的示例。类似的数据流适用于其他部署模型。
在图25A至图25C中,简化的数据流假设快速路径操作和请求的成功完成。在1a处,VM 410中的NVMe软件向NVMe SQ发布新的磁盘写入请求。在1b处,VM 410中的NVMe通知NVMVAL硬件设备414新工作可用(例如,使用门铃(DB))。在2a处,NVMVAL硬件设备从VM NVMeSQ读取NVMe请求。在2b处,NVMVAL硬件设备414从VM数据缓冲器读取磁盘写入数据。在2c处,NVMVAL硬件设备414加密数据、计算LBA CRC、并且将数据和LBA CRC写入主机计算机400中的回弹缓冲器。在一些示例中,在请求被发送分布式存储系统服务器后端700之前,整个IO可以在主机计算机400中被存储和转发。
在2d处,NVMVAL硬件设备414将分布式存储系统服务器请求写入主机计算机400中的请求缓冲器。在2e处,NVMVAL硬件设备414向RNIC434的SQ写入引用分布式存储系统请求的写入队列元素(WQE)。在2f处,NVMVAL硬件设备414通知RNIC434新工作可用(例如,使用DB)。
在3a处,RNIC434读取RNIC SQ WQE。在3b处,RNIC 434从主机计算机400中的请求缓冲器读取分布式存储系统服务器请求,并从回弹缓冲器491中的CRC页面读取LBA CRC。在3c处,RNIC 434将分布式存储系统服务器请求发送到分布式存储系统服务器后端700。在3d处,RNIC 434接收以临时被存储在回弹缓冲器491中的数据为目标的RDMA读取请求。在3e处,RNIC从回弹缓冲器读取数据,并且将数据流式传输到分布式存储系统服务器后端700作为RDMA读取响应。在3f处,RNIC 434接收分布式存储系统服务器响应消息。
在3g处,RNIC 434将分布式存储系统服务器响应消息写入主机计算机400中的响应缓冲器。在3h处,RNIC 434将CQE写入主机计算机400中的RNIC RCQ。在3i处,RNIC 434将完成事件写入被映射到NVMVAL硬件设备414的PCIe地址空间的RNIC完成事件队列元素(CEQE)。
在4a处,NVMVAL硬件设备414从主机计算机400中的RNIC RCQ读取CQE。在4b处,NVMVAL硬件设备414从主机计算机400中的响应缓冲器读取分布式存储系统服务器响应消息。在4c处,NVMVAL硬件设备414将NVMe完成写入VM NVMe CQ。在4d处,NVMVAL硬件设备414中断VM 410的NVMe堆栈。
在5a处,VM 410的NVMe堆栈处置中断。在5b处,VM 410的NVMe栈从NVMe CQ读取磁盘写入操作的完成。
现在参考图26A至26C,示出了高级别磁盘读取流程的示例。该流程假设快速路径操作和请求的成功完成。
在1a处,VM 410的NVMe堆栈向NVMe SQ发布新的磁盘读取请求。在1b处,VM 410的NVMe堆栈通知NVMVAL硬件设备414新工作可用(经由DB)。
在2a处,NVMVAL硬件设备414从VM NVMe SQ读取NVMe请求。在2b处,NVMVAL硬件设备414将分布式存储系统服务器请求写入主机计算机400中的请求缓冲器。在2c处,NVMVAL硬件设备414将引用分布式存储系统服务器请求的WQE写入RNIC 434的SQ。在2d处,NVMVAL硬件设备414通知RNIC 434新工作可用。
在3a处,RNIC 434读取RNIC SQ WQE。在3b处,RNIC 434从主机计算机400中的请求缓冲器读取分布式存储系统服务器请求。在3c处,RNIC 434将分布式存储系统服务器请求发送到分布式存储系统服务器后端700。在3d处,RNIC 434接收以回弹缓冲器491中的数据和LBA CRC为目标的RDMA写入请求。在3e处,RNIC 434将数据和LBA CRC写入回弹缓冲器491。在一些示例中,在处理分布式存储系统服务器响应之前,整个IO在主机存储器中被存储和转发,并且数据被复制到VM 410。
在3f处,RNIC 434接收分布式存储系统服务器响应消息。在3g处,RNIC 434将分布式存储系统服务器响应消息写入主机计算机400中的响应缓冲器。在3h处,RNIC434将CQE写入RNIC RCQ。在3i处,RNIC 434将完成事件写入被映射到NVMVAL硬件设备414的PCIe地址空间的RNIC CEQE。
在4a处,NVMVAL硬件设备414从主机计算机400中的RNIC RCQ读取CQE。在4b处,NVMVAL硬件设备414从主机计算机400中的响应缓冲器读取分布式存储系统服务器响应消息。在4c处,NVMVAL硬件设备414从回弹缓冲器491读取数据和LBA CRC、解密数据并且验证CRC。在4d处,NVMVAL硬件设备414将经解密的数据写入VM 410中的数据缓冲器。在4e处,NVMVAL硬件设备414将NVMe完成写入VM NVMe CQ。在4f处,NVMVAL硬件设备414中断VM 410的NVMe堆栈。
在5a处,VM 410的NVMe堆栈处置中断。在5b处,VM 410的NVMe堆栈从NVMe CQ读取磁盘读取操作的完成。
前面的描述本质上仅是说明性的,决不是旨在限制本公开、其应用或用途。本公开的广泛教导可以以各种形式实现。因此,尽管本公开包括特定示例,但是本公开的真实范围不应该如此限制,因为其他修改将在研究了附图、说明书和所附权利要求之后变得明显。应该理解,方法内的一个或多个步骤可以以不同的顺序(或同时)执行而不改变本公开的原理。此外,尽管上文将实施例中的每个描述为具有一定特征,但是关于本公开的任何实施例描述的那些特征中的任何一个或多个可以在任何其他实施例的特征中实现和/或与任何其他实施例的特征组合,即便该组合没有被明确描述。换句话说,所描述的实施例不是相互排斥的,并且一个或多个实施例彼此的交换仍然在本公开的范围内。
使用各种术语来描述元件之间(例如,模块、电路元件、半导体层等之间)的空间和功能性关系,术语包括“连接”、“接合”、“耦合”、“相邻”、“下一个”、“顶部”、“上方”、“下方”和“放置”。除非明确地被描述为“直接”,否则当在上述公开内容中描述第一元件和第二元件之间的关系时,该关系可以是在第一元件和第二元件之间不存在其他中间元件的直接关系,但也可以是在第一元件和第二元件之间(空间地或功能性地)存在一个或多个中间元件的间接关系。如本文所使用的,短语“A、B和C中的至少一个”应该被解释为使用非排他性逻辑“或”表示逻辑(A“或”B“或”C),并且不应该被解释为表示“A中的至少一个、B中的至少一个和C中的至少一个”。
在附图中,由箭头指示的箭头方向通常表示图示的感兴趣的信息(诸如数据或指令)的流动。例如,当元件A和元件B交换各种信息但从元件A传输到元件B的信息与图示相关时,箭头可以从元件A指向元件B。该单向箭头不意味着没有其他信息从元件B传输到元件A。此外,对于从元件A发送到元件B的信息,元件B可以向元件A发送对信息的请求或接收确认。
如上文所使用的,术语“代码”可以包括软件、固件和/或微代码,并且可以指程序、例程、函数、类、数据结构和/或对象。术语“共享处理器电路”包含单个处理器电路,其执行来自多个模块的一些或所有代码。术语“共享存储器电路”包含单个存储器电路,其存储来自多个模块的一些或所有代码。术语“群组存储器电路”包含存储器电路,其与附加的存储器组合以存储来自一个或多个模块的一些或所有代码。
术语“存储器电路”是术语“计算机可读介质”的子集。如本文所使用的,术语“计算机可读介质”不包含(例如在载波上的)通过介质传播的瞬时电信号或电磁信号;因此,术语“计算机可读介质”可以被认为是有形的和非瞬态的。非瞬态的有形计算机可读介质的非限制性示例是非易失性存储器电路(诸如闪存存储器电路、可擦除可编程只读存储器电路或掩模只读存储器电路)、易失性存储器电路(诸如静态随机存取存储器电路或动态随机存取存储器电路)、磁存储介质(诸如模拟或数字磁带或硬盘驱动器)和光存储介质(诸如CD、DVD或蓝光光盘)。
在本申请中,被描述为具有特定属性或执行特定操作的装置元件被具体配置为具有这些特定属性并且执行这些特定操作。具体地,对执行动作的元件的描述意味着该元件被配置为执行该动作。元件的配置可以包括对元件的编程,诸如通过在与元件相关联的非瞬态的有形计算机可读介质上编码指令。
本申请中描述的装置和方法可以部分地或全部地由专用计算机实现,该专用计算机通过配置通用计算机以执行被实施在计算机程序中的一个或多个特定功能而创建。上文描述的功能块、流程图组件和其他元件充当软件规范,其可以通过熟练的技术人员或程序员的日常工作转换成计算机程序。
计算机程序包括被存储在至少一个非瞬态的有形计算机可读介质上的处理器可执行指令。计算机程序还可以包括或依赖于所存储的数据。计算机程序可以包含与专用计算机的硬件交互的基本输入/输出系统(BIOS)、与专用计算机的特定设备交互的设备驱动器、一个或多个操作系统、用户应用、后台服务、后台应用等。
计算机程序可以包括:(i)待解析的描述性文本,例如JSON(JavaScript对象表示)、HTML(超文本标记语言)或XML(可扩展标记语言),(ii)汇编代码,(iii)由编译器从源代码生成的目标代码,(iv)由解释器执行的源代码,(v)由即时编译器编译和执行的源代码等。仅作为示例,可以使用来自包括以下的语言的语法来编写源代码:C、C++、C#、ObjectiveC、Haskell、Go、SQL、R、Lisp、Fortran、Perl、Pascal、Curl、OCaml、HTML5、Ada、ASP(活动服务器页面)、PHP、Scala、Eiffel、Smalltalk、Erlang、Ruby、Lua和
除非使用短语“用于…的部件”来明确描述元件或在使用短语“用于…的操作”或“用于…的步骤”的方法权利要求的情况下,否则权利要求中所述的元件中没有一个旨在是35U.S.C§112(f)意义上的“部件加功能”的元件。

Claims (15)

1.一种主机计算机,包括:
虚拟机,其包括设备特定的非易失性存储器接口(NVMI);
非易失性存储器虚拟化抽象层(NVMVAL)硬件设备,其与所述虚拟机的所述设备特定的NVMI通信;以及
NVMVAL驱动器,其由所述主机计算机执行并且与所述NVMVAL硬件设备通信,
其中所述NVMVAL硬件设备将本地NVM设备通告给所述虚拟机的所述设备特定的NVMI,并且
其中所述NVMVAL硬件设备和所述NVMVAL驱动器被配置为使所述虚拟机对远离所述虚拟机的远程NVM的访问虚拟化,使得所述远程NVM对于所述虚拟机就好像是本地的一样。
2.根据权利要求1所述的主机计算机,其中所述NVMVAL硬件设备和所述NVMVAL驱动器被配置为安装远程存储卷并且使所述虚拟机对所述远程存储卷的访问虚拟化。
3.根据权利要求2所述的主机计算机,其中所述NVMVAL驱动器从对应于所述远程存储卷的远程存储系统请求位置信息,将所述位置信息存储在所述NVMVAL硬件设备可访问的存储器中,并且将所述远程存储卷通知给所述NVMVAL硬件设备。
4.根据权利要求2所述的主机计算机,其中所述NVMVAL硬件设备和所述NVMVAL驱动器被配置为卸装所述远程存储卷。
5.根据权利要求1所述的主机计算机,其中所述NVMVAL硬件设备和所述NVMVAL驱动器被配置为向所述远程NVM写入数据。
6.根据权利要求5所述的主机计算机,其中所述NVMVAL硬件设备访问存储器以确定所写入的数据的存储位置是否已知,在所写入的数据的所述存储位置已知的情况下向所述远程NVM发送写入请求,并且在所写入的数据的所述存储位置未知的情况下联系所述NVMVAL驱动器。
7.根据权利要求1所述的主机计算机,其中所述NVMVAL硬件设备和所述NVMVAL驱动器被配置为从所述远程NVM读取数据。
8.根据权利要求7所述的主机计算机,其中所述NVMVAL硬件设备访问存储器以确定所读取的数据的存储位置是否已知,在所读取的数据的所述存储位置已知的情况下向所述远程NVM发送读取请求,并且在所读取的数据的所述存储位置未知的情况下联系所述NVMVAL驱动器。
9.根据权利要求1所述的主机计算机,其中所述NVMVAL硬件设备使用客户密钥执行加密。
10.根据权利要求1所述的主机计算机,其中:
所述NVMVAL驱动器针对来自所述虚拟机的从所述远程NVM的读取请求和来自所述虚拟机的向所述远程NVM的写入请求来处置控制路径处理;
所述NVMVAL硬件设备针对所述虚拟机的从所述远程NVM的所述读取请求和来自所述虚拟机的向所述远程NVM的所述写入请求来处置数据路径处理,并且其中所述NVMI包括具有单根输入/输出虚拟化(SR-IOV)的非易失性存储器快速(NVMe)接口。
11.根据权利要求1所述的主机计算机,其中所述NVMI包括非易失性存储器快速(NVMe)接口。
12.根据权利要求1所述的主机计算机,其中所述NVMI执行设备虚拟化。
13.根据权利要求1所述的主机计算机,其中所述NVMI包括具有单根输入/输出虚拟化(SR-IOV)的非易失性存储器快速(NVMe)接口。
14.根据权利要求1所述的主机计算机,其中:
所述NVMVAL硬件设备在错误状况发生时通知所述NVMVAL驱动器,并且其中所述NVMVAL驱动器使用所述远程NVM的协议来执行错误处置;并且
所述NVMVAL驱动器在所述错误状况被解决时通知所述NVMVAL硬件设备。
15.根据权利要求1所述的主机计算机,其中所述NVMVAL硬件设备包括:
安装/卸装控制器,用以安装对应于所述远程NVM的远程存储卷以及卸装所述远程存储卷;
写入控制器,用以向所述远程NVM写入数据;以及
读取控制器,用以从所述远程NVM读取数据。
CN201780046590.3A 2016-07-26 2017-07-04 使远程存储访问在虚拟化环境中显示为本地的硬件 Withdrawn CN109496296A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/219,667 US20180032249A1 (en) 2016-07-26 2016-07-26 Hardware to make remote storage access appear as local in a virtualized environment
US15/219,667 2016-07-26
PCT/US2017/040635 WO2018022258A1 (en) 2016-07-26 2017-07-04 Hardware to make remote storage access appear as local in a virtualized environment

Publications (1)

Publication Number Publication Date
CN109496296A true CN109496296A (zh) 2019-03-19

Family

ID=59366512

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780046590.3A Withdrawn CN109496296A (zh) 2016-07-26 2017-07-04 使远程存储访问在虚拟化环境中显示为本地的硬件

Country Status (4)

Country Link
US (1) US20180032249A1 (zh)
EP (1) EP3491523A1 (zh)
CN (1) CN109496296A (zh)
WO (1) WO2018022258A1 (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110941392A (zh) * 2019-10-31 2020-03-31 联想企业解决方案(新加坡)有限公司 将远程存储设备模拟为本地存储设备的方法和装置
CN111061538A (zh) * 2019-11-14 2020-04-24 珠海金山网络游戏科技有限公司 一种多Lua虚拟机内存优化方法及其系统
CN111651269A (zh) * 2020-05-18 2020-09-11 青岛镕铭半导体有限公司 实现设备虚拟化的方法、装置及计算机可读存储介质
CN111737176A (zh) * 2020-05-11 2020-10-02 福州瑞芯微电子股份有限公司 一种基于pcie数据的同步装置及驱动方法
WO2020199489A1 (zh) * 2019-04-01 2020-10-08 江苏华存电子科技有限公司 一种适用于NVMe命名空间配置的双接口架构
CN112214302A (zh) * 2020-10-30 2021-01-12 中国科学院计算技术研究所 一种进程调度方法
CN112256601A (zh) * 2020-10-19 2021-01-22 凌云光技术股份有限公司 数据存取控制方法、嵌入式存储系统及嵌入式设备
CN112988468A (zh) * 2021-04-27 2021-06-18 云宏信息科技股份有限公司 虚拟化操作系统使用Ceph的方法和计算机可读存储介质
CN114089926A (zh) * 2022-01-20 2022-02-25 阿里云计算有限公司 分布式存储空间的管理方法、计算设备及存储介质

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10802732B2 (en) * 2014-04-30 2020-10-13 Pure Storage, Inc. Multi-level stage locality selection on a large system
US10228874B2 (en) * 2016-12-29 2019-03-12 Intel Corporation Persistent storage device with a virtual function controller
US10503237B2 (en) 2017-02-13 2019-12-10 Gbs Laboratories, Llc Mobile device virtualization solution based on bare-metal hypervisor with optimal resource usage and power consumption
JP6709180B2 (ja) * 2017-02-28 2020-06-10 キオクシア株式会社 メモリシステムおよび制御方法
US20180275871A1 (en) * 2017-03-22 2018-09-27 Intel Corporation Simulation of a plurality of storage devices from a single storage device coupled to a computational device
US10282094B2 (en) * 2017-03-31 2019-05-07 Samsung Electronics Co., Ltd. Method for aggregated NVME-over-fabrics ESSD
US10733137B2 (en) * 2017-04-25 2020-08-04 Samsung Electronics Co., Ltd. Low latency direct access block storage in NVME-of ethernet SSD
JP7105870B2 (ja) * 2017-08-10 2022-07-25 華為技術有限公司 データアクセス方法、装置およびシステム
US11656775B2 (en) 2018-08-07 2023-05-23 Marvell Asia Pte, Ltd. Virtualizing isolation areas of solid-state storage media
US11372580B2 (en) 2018-08-07 2022-06-28 Marvell Asia Pte, Ltd. Enabling virtual functions on 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
US10999397B2 (en) 2019-07-23 2021-05-04 Microsoft Technology Licensing, Llc Clustered coherent cloud read cache without coherency messaging
CN110765450A (zh) * 2019-10-31 2020-02-07 江苏华存电子科技有限公司 非易失性内存主机控制器接口权限设置和非对称加密方法
US11741056B2 (en) 2019-11-01 2023-08-29 EMC IP Holding Company LLC Methods and systems for allocating free space in a sparse file system
CN111708719B (zh) * 2020-05-28 2023-06-23 西安纸贵互联网科技有限公司 计算机存储加速方法、电子设备及存储介质
US11962518B2 (en) 2020-06-02 2024-04-16 VMware LLC Hardware acceleration techniques using flow selection
US11824931B2 (en) 2020-09-28 2023-11-21 Vmware, Inc. Using physical and virtual functions associated with a NIC to access an external storage through network fabric driver
US11606310B2 (en) 2020-09-28 2023-03-14 Vmware, Inc. Flow processing offload using virtual port identifiers
US11636053B2 (en) 2020-09-28 2023-04-25 Vmware, Inc. Emulating a local storage by accessing an external storage through a shared port of a NIC
US11593278B2 (en) 2020-09-28 2023-02-28 Vmware, Inc. Using machine executing on a NIC to access a third party storage not supported by a NIC or host
US11875172B2 (en) 2020-09-28 2024-01-16 VMware LLC Bare metal computer for booting copies of VM images on multiple computing devices using a smart NIC
US20220179675A1 (en) 2020-12-03 2022-06-09 Nutanix, Inc. Memory registration for optimizing rdma performance in hyperconverged computing environments
US11567704B2 (en) 2021-04-29 2023-01-31 EMC IP Holding Company LLC Method and systems for storing data in a storage pool using memory semantics with applications interacting with emulated block devices
US11579976B2 (en) 2021-04-29 2023-02-14 EMC IP Holding Company LLC Methods and systems parallel raid rebuild in a distributed storage system
US11669259B2 (en) 2021-04-29 2023-06-06 EMC IP Holding Company LLC Methods and systems for methods and systems for in-line deduplication in a distributed storage system
US11892983B2 (en) 2021-04-29 2024-02-06 EMC IP Holding Company LLC Methods and systems for seamless tiering in a distributed storage system
US11604610B2 (en) * 2021-04-29 2023-03-14 EMC IP Holding Company LLC Methods and systems for storing data in a distributed system using offload components
US11740822B2 (en) 2021-04-29 2023-08-29 EMC IP Holding Company LLC Methods and systems for error detection and correction in a distributed storage system
US11922071B2 (en) 2021-10-27 2024-03-05 EMC IP Holding Company LLC Methods and systems for storing data in a distributed system using offload components and a GPU module
US11762682B2 (en) 2021-10-27 2023-09-19 EMC IP Holding Company LLC Methods and systems for storing data in a distributed system using offload components with advanced data services
US11677633B2 (en) 2021-10-27 2023-06-13 EMC IP Holding Company LLC Methods and systems for distributing topology information to client nodes
US11863376B2 (en) 2021-12-22 2024-01-02 Vmware, Inc. Smart NIC leader election
US11995024B2 (en) 2021-12-22 2024-05-28 VMware LLC State sharing between smart NICs
US11928367B2 (en) 2022-06-21 2024-03-12 VMware LLC Logical memory addressing for network devices
US11899594B2 (en) 2022-06-21 2024-02-13 VMware LLC Maintenance of data message classification cache on smart NIC
US11928062B2 (en) 2022-06-21 2024-03-12 VMware LLC Accelerating data message classification with smart NICs

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070011444A1 (en) * 2005-06-09 2007-01-11 Grobman Steven L Method, apparatus and system for bundling virtualized and non-virtualized components in a single binary
US9098347B2 (en) * 2006-12-21 2015-08-04 Vmware Implementation of virtual machine operations using storage system functionality
US8868852B2 (en) * 2010-07-07 2014-10-21 Marvell World Trade Ltd. Interface management control systems and methods for non-volatile semiconductor memory
WO2015138245A1 (en) * 2014-03-08 2015-09-17 Datawise Systems, Inc. Methods and systems for converged networking and storage
US20150317176A1 (en) * 2014-05-02 2015-11-05 Cavium, Inc. Systems and methods for enabling value added services for extensible storage devices over a network via nvme controller
US9294567B2 (en) * 2014-05-02 2016-03-22 Cavium, Inc. Systems and methods for enabling access to extensible storage devices over a network as local storage via NVME controller

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020199489A1 (zh) * 2019-04-01 2020-10-08 江苏华存电子科技有限公司 一种适用于NVMe命名空间配置的双接口架构
CN110941392A (zh) * 2019-10-31 2020-03-31 联想企业解决方案(新加坡)有限公司 将远程存储设备模拟为本地存储设备的方法和装置
CN111061538A (zh) * 2019-11-14 2020-04-24 珠海金山网络游戏科技有限公司 一种多Lua虚拟机内存优化方法及其系统
CN111737176A (zh) * 2020-05-11 2020-10-02 福州瑞芯微电子股份有限公司 一种基于pcie数据的同步装置及驱动方法
CN111737176B (zh) * 2020-05-11 2022-07-15 瑞芯微电子股份有限公司 一种基于pcie数据的同步装置及驱动方法
CN111651269A (zh) * 2020-05-18 2020-09-11 青岛镕铭半导体有限公司 实现设备虚拟化的方法、装置及计算机可读存储介质
CN112256601A (zh) * 2020-10-19 2021-01-22 凌云光技术股份有限公司 数据存取控制方法、嵌入式存储系统及嵌入式设备
CN112214302A (zh) * 2020-10-30 2021-01-12 中国科学院计算技术研究所 一种进程调度方法
CN112214302B (zh) * 2020-10-30 2023-07-21 中国科学院计算技术研究所 一种进程调度方法
CN112988468A (zh) * 2021-04-27 2021-06-18 云宏信息科技股份有限公司 虚拟化操作系统使用Ceph的方法和计算机可读存储介质
CN114089926A (zh) * 2022-01-20 2022-02-25 阿里云计算有限公司 分布式存储空间的管理方法、计算设备及存储介质
WO2023138460A1 (zh) * 2022-01-20 2023-07-27 阿里云计算有限公司 分布式存储空间的管理方法、计算设备及存储介质

Also Published As

Publication number Publication date
EP3491523A1 (en) 2019-06-05
US20180032249A1 (en) 2018-02-01
WO2018022258A1 (en) 2018-02-01

Similar Documents

Publication Publication Date Title
CN109496296A (zh) 使远程存储访问在虚拟化环境中显示为本地的硬件
US10713074B2 (en) Method, apparatus, and system for accessing storage device
KR101993915B1 (ko) 원격으로 액세스되는 데이터의 효율적인 라이브-이송
TWI621023B (zh) 用於支持對經由nvme控制器、通過網路存取的遠端存儲設備的熱插拔的系統和方法
TWI647573B (zh) 用於支援對經由nvme控制器、通過網路訪問遠端存放設備的虛擬機器的遷移的系統和方法
US9342448B2 (en) Local direct storage class memory access
US10423332B2 (en) Fibre channel storage array having standby controller with ALUA standby mode for forwarding SCSI commands
US20110125951A1 (en) Distributed storage through a volume device architecture
US9092426B1 (en) Zero-copy direct memory access (DMA) network-attached storage (NAS) file system block writing
US8073674B2 (en) SCSI device emulation in user space facilitating storage virtualization
US10983920B2 (en) Customizable multi queue DMA interface
CN111352583A (zh) 具有发起方模式的固态驱动
US20220263913A1 (en) Data center cluster architecture
US10013370B2 (en) Method and system for providing access of a storage system using a shared storage module as a transport mechanism
EP2318945A2 (en) System and method for achieving high performance data flow among user space processes in storage systems
US11863469B2 (en) Utilizing coherently attached interfaces in a network stack framework
US10872036B1 (en) Methods for facilitating efficient storage operations using host-managed solid-state disks and devices thereof
KR20210000268A (ko) 경량 브릿지, 이를 포함하는 물품 및 이를 이용한 방법
CN115129625A (zh) 外围设备中的增强的存储协议仿真
US9135043B1 (en) Interface for enabling an application in a virtual machine to access high performance devices
US9921753B2 (en) Data replication across host systems via storage controller
US10120594B1 (en) Remote access latency in a reliable distributed computing system
WO2016188014A1 (zh) 数据存储方法和装置
US11086559B2 (en) Cloud based store and restore with copy services
JP6653786B2 (ja) I/o制御方法およびi/o制御システム

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
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20190319