CN104683430A - 用于从远程可访问存储设备进行初始化的技术 - Google Patents

用于从远程可访问存储设备进行初始化的技术 Download PDF

Info

Publication number
CN104683430A
CN104683430A CN201410321181.8A CN201410321181A CN104683430A CN 104683430 A CN104683430 A CN 104683430A CN 201410321181 A CN201410321181 A CN 201410321181A CN 104683430 A CN104683430 A CN 104683430A
Authority
CN
China
Prior art keywords
equipment
rdma
memory
server
access
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
CN201410321181.8A
Other languages
English (en)
Other versions
CN104683430B (zh
Inventor
E·塔米尔
P·德斯卡
P·C·凯顿
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN104683430A publication Critical patent/CN104683430A/zh
Application granted granted Critical
Publication of CN104683430B publication Critical patent/CN104683430B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4416Network booting; Remote initial program loading [RIPL]
    • 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/4401Bootstrapping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Abstract

描述了用于从远程可访问存储设备进行初始化的技术。公开了用于远程初始化或引导客户端或主机设备的示例。在某些示例中,耦合到主机设备的网络(NW)输入/输出(I/O)设备可以通过NW通信链路连接到远程服务器。对于这些示例,网络I/O设备的模块可以使用远程直接存储器访问(RDMA)协议,建立到在远程服务器中维护的非易失性存储器快速(NVMe)控制器的控制路径。由NVMe控制器控制的存储设备的特性也具有RDMA服务标记(STag),用以指示可获得的存储设备中的分配部分。系统基本I/O系统(BIOS)可以能够使用RDMA STag来访问存储设备并加载操作系统(OS)内核和一个或多个设备驱动器以远程引导主机设备。描述并要求保护其他示例。

Description

用于从远程可访问存储设备进行初始化的技术
技术领域
此处所描述的各示例一般涉及从位于远程的存储设备初始化设备(例如,“引导”)。
背景技术
在计算资源的某些部署中,可以使用从网络初始化或引导计算设备的能力。在某些示例中,从网络引导可以允许客户端设备在没有硬盘或固态驱动器的情况下被部署和操作。缺乏硬盘或硬盘驱动器可以允许存储器资源的降低的成本,比较简单的维护管理和较大的合并。此外,在没有附接的存储设备的情况下,安全地锁定联网客户端或主机设备可能更加容易。
根据某些示例,客户端或主机设备可以通过经由至网络上的存储器服务器的连接来加载它们的操作系统(OS)远程引导。通过网络的远程引导可以提供灵活的部署。灵活性可以部分地归因于存储器服务器集中式控制可以在给定远程引导的客户端设备处加载的OS以及其配置。
附图说明
图1示出了第一示例系统。
图2示出了示例完成队列元素。
图3示出了第二示例系统。
图4示出了远程引导方案。
图5示出了第一设备的示例框图。
图6示出第一逻辑流程的示例。
图7示出第一存储介质的示例。
图8示出了第一网络输入/输出设备的示例。
图9示出了第二设备的示例框图。
图10示出第二逻辑流程的示例。
图11示出第二存储介质的示例。
图12示出了第二网络输入/输出设备的示例。
具体实施方式
如在本发明中设想的,远程引导可以允许灵活的部署,因为给定客户端设备中的OS可以由存储器服务器控制,通过该存储器服务器,给定客户端设备可以被远程引导。最近,存储器服务器开始包括网络(NW)输入/输出(I/O)设备和增强了试图最小化操作系统和主机处理器参与的能力的存储控制器。例如,诸如命令提交和命令完成队列之类的硬件元件可以被存储器服务器的NWI/O设备和存储控制器用来允许客户端或主机设备远程通过被称为远程直接存储器访问(RDMA)的过程来访问存储器。
在这些远程可访问的存储器服务器上维护的存储控制器还被设计成可以遵循可以与RDMA一起良好工作的相对新的互连通信协议来操作。进一步地,这些存储控制器可以控制对硬盘驱动器(HDD)或固态驱动器(SSD)的访问。SSD可以包括,但不仅限于,各种类型的非易失性存储器,诸如3维交叉点存储器、闪存、铁电存储器、硅氧化物氮化物氧化物硅(SONOS)存储器、聚合物存储器、纳米线、铁电晶体管随机存取存储器(FeTRAM或FeRAM)、纳米线或电可擦可编程只读存储器(EEPROM)。在某些示例中,对HDD或SSD的访问可以包括使用行业标准或规范(包括后代或变体)(诸如2010年11月发布的外围组件互连(PCI)Express(快速)基本规范(“PCI Express”或“PCIe”))中所描述的互连通信协议,和/或使用各种基于PCIe的SSD的控制器接口(诸如2012年10月发布的非易失性存储器Express(nvme)规范修订版1.1)。
遵循NVMe规范操作的存储控制器(“NVMe控制器”)当允许远程客户端或主机设备访问诸如SSD之类的存储设备时可以能够最小化操作系统和主机处理器参与。这些类型的远程可访问的,NVMe受控存储器设备,当与高速网络连接(例如,10千兆每秒钟(Gbps)或更高)耦合时,与传统类型的本地附接的旋转存储介质相比,可允许相对快速的引导时间。然而,被配置成与NVMe控制器一起操作的诸如SSD之类的存储设备常常是昂贵的,并且存在很强的动机来合并客户端使用并优化这些类型的存储设备的硬件预设(provision)。正是针对这些和其它挑战才需要此处所描述的示例。
在某些示例中,可以实现用于从远程可访问存储设备初始化或引导客户端或主机设备的技术。对于这些示例,耦合到主机设备的NW I/O设备的电路可以能够执行各种模块以促进主机设备的远程引导。各种模块可以包括用于接收使NW I/O设备通过网络通信链路连接到远程服务器(例如,存储器服务器)的一个或多个参数的参数模块。各种模块也可以包括用于使用一个或多个参数连接到远程服务器的连接模块,以及用于使用RDMA协议建立到在远程服务器中维护的NVMe控制器的控制路径的路径模块。
根据某些示例,用于由NW I/O设备的电路执行的各种模块也可以包括用于从NVMe控制器接收RDMA服务标记(STag)的接收模块,RDMA服务标记(STag)表示由NVMe控制器控制的存储设备中使用RDMA Stag可访问的分配部分。在某些示例中,分配部分可以存储操作系统(OS)内核和一个或多个设备驱动器。各种模块也可以包括用于将RDMA STag存储在NW I/O设备上的非易失性存储器中的存储模块,该非易失性存储器可以被系统基本输入/输出系统(BIOS)访问,以使系统BIOS能够使用RDMA STag来访问存储设备,并加载OS内核和一个或多个设备驱动器,以远程引导主机设备。
图1示出了第一示例系统。如图1所示,第一示例系统包括具有通过网络50通信地耦合到服务器20的客户端10的系统100。根据某些示例,术语“主机计算机”、“主机设备”、“主机”、“客户端设备”、“客户端”、“网络节点”和“节点”可互换地使用,并且可表示,例如但并不限于,一个或多个终端站、移动因特网设备、智能电话、媒体设备、输入/输出(I/O)设备、平板计算机、装置、中间站、网络接口、客户机、和/或其部分。此外,在某些示例中,术语“服务器”、“存储器服务器”或“远程服务器”可以可互换地使用,并可以表示例如但不限于:可被“主机计算机”、“主机设备”、“主机”、“客户端设备”、“客户端”、“网络节点”,以及“节点”远程访问的(例如,通过网络连接)的服务器。虽然客户端10、服务器20以及网络50将以单数引用的,但是应该理解,每一这样的相应的组件都可以包括多个这样的相应的组件,而不会偏离这些示例。
根据某些示例,“网络”可以是或包括任何机构、工具、模态和/或其部分,其至少部分地准许、便于和/或允许两个或更多个实体通信地耦合到一起。也在某些示例中,如果第一实体能够向第二实体传输和/或从第二实体接收一个或多个命令和/或数据,则第一实体可以“通信地耦合”到第二实体。此外,数据和信息还以可互换地使用,并可以是或包括一个或多个命令(例如,一个或多个程序指令),和/或一个或多个这样的命令可以是或包括数据和/或信息。此外,对于这些示例,“指令”可包括数据和/或一个或多个命令。
客户端10可以包括此处被称为网络(NW)I/O设备106的远程直接存储器访问(RDMA)启用的网络接口控制器(RNIC)和/或一个或多个(以及在图1所示出的示例中,多个)缓冲器13。
如图1所示,服务器20可以包括一个或多个集成电路(IC)芯片180、存储器21,和/或存储150。一个或多个芯片180可以具有可以包括NW I/O设备108、可管理性模块109或NVMe控制器112的电路118。虽然在图1中未示出,但是,在某些示例中,NW I/O设备108和/或NVMe控制器112可以分别地是耦合到服务器20并包括如下面进一步描述的电路的可附连设备。
也如图1所示,一个或多个芯片180可以被整合到一个或多个多核主机处理器(HP)和/或中央处理单元(CPU)12内。尽管在图中未示出,然而,服务器20也可包括一个或多个芯片组或设备,以包括,但不仅限于,存储器或输入/输出控制器电路)。NW I/O设备108、NVMe控制器112,和/或HP/CPU 12可以能够相互进行通信。另外,NW I/O设备108、NVMe控制器112、可管理性模块109和/或HP/CPU 12可以能够通过一个或多个这样的芯片组,访问服务器20的一个或多个其他组件(诸如存储器21和/或存储150)和/或与它们进行通信。在某些示例中,客户端10和/或NW I/O设备106可以远离(例如,在地理位置上远离)服务器20和/或NW I/O设备108。在其他示例中,客户端10和/或NW I/O设备106可以位于服务器20和/或NW I/O设备108的附近,两者都位于在服务器机架内或者甚至在微服务器配置中在同一芯片上。
根据某些示例,“电路”可包括例如单个或任意组合形式的模拟电路、数字电路、硬连线电路、可编程电路、协处理器电路、状态机电路和/或可包括程序指令的存储器,该程序指令可由可编程电路执行。也在某些示例中,处理器、HP、CPU、处理器核(PC)、核和控制器中的每一个都可以包括能够执行一个或多个算术和/或逻辑操作和/或执行一个或多个指令的相应的电路。集成电路芯片可以包括一个或多个微电子器件、衬底,和/或管芯。虽然在图1中未示出,但是,服务器20可以具有图形用户界面系统,该系统可以包括,例如,相应的键盘、指示设备以及可以允许个人用户向服务器20和/或系统100输入命令以及监测服务器20和/或系统100的操作的显示系统。此外,存储器还可包括以下类型的存储器中的一个或多个:半导体固件存储器、可编程存储器、非易失性存储器、只读存储器、电可编程存储器、随机存取存储器、闪存、磁盘存储器、光盘存储器和/或其它或以后开发的计算机可读和/或可写存储器。
在某些示例中,存储150可以包括大容量存储156。对于这些示例,存储150可以包括一个或多个设备,可以分别向其中存储数据和/或从其中检索数据。此外,对于这些示例,大容量存储还可以包括能够对数据进行非易失性存储的存储。例如,大容量存储156可包括但不限于一个或多个非易失性电机械、磁、光学和/或半导体存储设备。这些设备可以包括硬盘驱动器(HDD)或固态驱动器(SSD)。SSD可以具有非易失性存储器,诸如3维交叉点存储器、闪存、铁电存储器、硅氧化物氮化物氧化物硅(SONOS)存储器、聚合物存储器、纳米线、铁电晶体管随机存取存储器(FeTRAM或FeRAM)、纳米线或电可擦可编程只读存储器(EEPROM)。
根据某些示例,可管理性模块109、NVMe控制器112、存储150或大容量存储156可以能够遵循PCIe规范和/或NVMe规范操作。
一个或多个机器可读程序指令可以存储在存储器21中。在服务器20的操作中,这些机器可读指令可以由一个或多个主机处理器12、NW I/O设备108,和/或NVMe控制器112来访问和执行。当被一个或多个HP12执行时,这些一个或多个机器可读指令可以导致一个或多个操作系统环境(OSE)31由一个或多个HP12执行,并变成驻留在存储器21中。此外,当这些机器可读指令由NW I/O设备108和/或NVMe控制器112执行时,这一个或多个指令可以导致NVMe控制器112的一个或多个命令接口、一个或多个门铃(doorbell)192、一个或多个指针202、一个或多个代理194、一个或多个完成队列124,和/或一个或多个提交队列126被建立和/或由NW I/O设备108和/或NVMe控制器112执行,和/或变成驻留在存储器21中。
根据某些示例,一个或多个OSE 32可以包括一个或多个操作系统(OS)31和/或一个或多个NW I/O设备和/或NVMe控制器驱动器33。这一个或多个驱动器33可以与一个或多个OS 31相互不同。另选地或另外地,在不偏离这些示例的情况下,一个或多个OS 32和/或驱动器33的一个或多个相应的部分可以相互不同,和/或可以包括在彼此中。同样,在不偏离这些示例的情况下,电路118、NW I/O设备108、可管理性模块109和/或NVMe控制器112可以不同于一个或多个未示出的芯片组和/或HP 12,或者可另选地,可以被包括在一个或多个未示出的芯片组和/或HP 12中。此外,在不偏离这些示例的情况下,存储器21的一个或多个部分可以被包括在或维护在NW I/O设备108、可管理性模块109、NVMe控制器112、电路118、HP 12,和/或IC 180。
在某些示例中,实体的一部分或子集可以包括实体的全部或少于实体的全部。同时,对于这些示例,进程、线程、守护进程(daemon)、程序、驱动器、操作系统、应用程序、内核和/或虚拟机监视器中的每一个都可以(1)包括,和/或(2)导致和/或来源于,一个或多个操作和/或程序指令的执行。
根据某些示例,命令接口可以至少部分地促进,允许,和/或实现数据和/或一个或多个命令的交换、传输,和/或接收。对于这些示例,队列、缓冲器和/或门铃可以是存储器中可以至少临时地存储数据和/或一个或多个命令的一个或多个位置(例如,由一个或多个地址指定的和/或指出的)。此外,队列元素还可以包括要被存储和/或存储在一个或多个队列中的数据和/或一个或多个命令,诸如,例如,一个或多个描述符和/或一个或多个命令。另外,对于这些示例,指针可以指示,寻址,和/或指定存储器中的一个或多个位置和/或一个或多个项。
在某些示例中,NW I/O设备106和NW I/O设备108可以通过网络50,根据一个或多个协议交换数据和/或命令,该一个或多个协议可以符合和/或兼容于RDMA协议,诸如因特网广域RDMA协议(iWARP)、Infiniband(IB)协议、以太网协议、传输控制协议/网际协议(TCP/IP)协议和/或汇聚以太网上RDMA(RDMA over converged Ethernet:RoCE)协议。例如,iWARP协议可以符合和/或兼容于Recio等人所著的″An RDMA Protocol Specification(RDMA协议规范)″(因特网草案规范(Internet Draft Specification),互联网工程任务组(IETF),2002年10月21日)。还例如,以太网协议可以符合和/或兼容于2008年12月26日电气与电子工程师学会,Inc.(IEEE)标准802.3-2008。另外,例如,TCP/IP协议可以符合和/或兼容于在1981年9月发布的因特网工程任务组(IETF)征求意见资料(RFC)791和793中所描述的协议。此外,IB协议还可以符合和/或兼容于2012年11月发布的InfinibandTM体系结构规范,卷2版本1.3。另外,例如,RoCE协议可以符合和/或兼容于2010年4月发布的Infiniband架构规范的增补,Vol.1,Rel.1.2.1,附录A16:“汇聚以太网上RDMA(RoCE)”。许多不同的,额外的,和/或其他协议可以用于这样的数据和/或命令交换,而不会偏离这些示例(例如,如上所述的,相关的,和/或其他协议的以前的和/或以后开发的版本)。
根据某些示例,电路118可以允许和/或促进NW I/O设备106通过NW I/O设备108对一个或多个命令接口110的访问。例如,电路118可以允许和/或促进NW I/O设备106能够以独立于服务器20中的OSE32的方式访问一个或多个命令接口110。此访问可以包括,例如,将至少一个队列元素(例如,一个或多个队列元素(QE)116)写入到一个或多个命令接口110中的一个或多个提交队列114。这可以会导致NW I/O设备108将命令转发到NVMe控制器112以执行涉及与NVMe控制器112相关联的存储150和/或大容量存储156的一个或多个操作。NVMe控制器112可以响应于一个或多个队列元素116(例如,在一个或多个队列元素116被写入到一个或多个提交队列114然后由NW I/O设备108转发之后,并响应于此)执行这些一个或多个操作。涉及存储150和/或大容量存储156的这一个或多个操作可以包括涉及存储150和/或大容量存储156的一个或多个写入操作和/或一个或多个读取操作。对于这些示例,客户端10由此能够通过由NVMe控制器112执行的一个或多个读取操作和/或一个或多个写入操作访问存储150和/或大容量存储156。
作为示例,在系统100的操作中,客户端10和/或NW I/O设备106可以向服务器20认证客户端10和/或NW I/O设备106和/或NW I/O设备108处的逻辑和/或特征。这可能会导致客户端10和/或NW I/O设备106被给予访问在服务器20的元件中维护的或由该元件控制的设备的权限(例如,通过NW I/O设备108)。与此同时,在此之后或之前,NVMe控制器112、一个或多个代理194,和/或OSE32可以在存储器21中生成、建立,和/或维持一个或多个接口110和/或一个或多个指示符181。一个或多个接口110和/或指示符181可以指示一个或多个接口110和/或其组件可以位于存储器21中的什么位置(例如,一个或多个位置)。例如,一个或多个指示符181可以指示存储器21中的一个或多个提交队列114、一个或多个完成队列120、一个或多个门铃170,和/或一个或多个缓冲器130A...130N可能所在的一个或多个位置。NW I/O设备108可以通过网络50向NW I/O设备106提供一个或多个指示符181。此后,NW I/O设备106可以使用一个或多个指示符181中的一个或多个来访问一个或多个命令接口110和/或一个或多个命令接口110的一个或多个组件。一个或多个指示符181可以是或包括存储器21中的一个或多个区域的一个或多个句柄(例如,被指派给事务上下文),诸如,在此示例中,可符合和/或可兼容于RDMA(例如,iWARP、IB、RoCE)协议的一个或多个服务标记(STag)。在某些示例中,存储器21中的一个或多个区域可以被包括在维护的一个或多个缓冲器中,以促进客户端10对存储150或大容量存储156的远程访问。
在接收一个或多个指示符181之后,客户端10和/或NW I/O设备106可以通过网络50以及NVMe控制器112的NW I/O设备108以绕过和/或独立于OSE32的参与的方式向服务器20发出一个或多个命令105。一个或多个命令105可以命令NVMe控制器112执行涉及存储150和/或大容量存储156的一个或多个操作。
根据某些示例,一个或多个命令105可以符合和/或兼容于RDMA(例如,iWARP、IB、RoCE)协议。一个或多个命令105可以包括和/或指定可以实现和/或指出涉及存储150和/或大容量存储156的正在被命令的一个或多个操作的一个或多个队列元素116。虽然在图1中未示出,一个或多个命令105可以包括,指定,和/或指示指示符181中的一个或多个,这些指示符可以指示一个或多个提交队列114中的一个或多个位置作为一个或多个队列元素116的一个或多个预期目的地。
在某些示例中,一个或多个队列元素116可以导致NW I/O设备108转发让NVMe控制器112执行涉及存储150和/或大容量存储156的一个或多个写入操作的命令。因此,作为NW I/O设备108向NVMe控制器112转发一个或多个队列元素116的结果,一个或多个命令105还可以包括和/或指定数据199将被写入存储150和/或大容量存储156。一个或多个命令105可以包括,指定,和/或指示指示符志181中的一个或多个,这些指示符可以指示客户端10的一个或多个缓冲器(例如,缓冲器13)中数据199将被(至少临时)写入到的一个或多个位置。
在某些示例中,响应于接收到一个或多个命令105,NW I/O设备108可以(例如,根据RDMA(例如,iWARP、IB、RoCE)协议和/或以绕过和/或独立于OSE32的方式),以由一个或多个命令105命令的方式,将一个或多个队列元素116和数据199直接分别写入到一个或多个提交队列114和一个或多个缓冲器130A。如此,事实上,通过向NW I/O设备108发出一个或多个命令105,NW I/O设备106可以将一个或多个队列元素116和数据199分别写入到一个或多个提交队列114和一个或多个缓冲器130A。
一个或多个命令105还可以包括和/或指定一个或多个值201以及一个或多个指示符181,这些指示符可以指示一个或多个门铃170中一个或多个值201可以被写入到的一个或多个位置。响应于一个或多个命令105中的这一个或多个值201以及这一个或多个指示符181,NW I/O设备108可以(例如,根据RDMA(例如,iWARP、IB、RoCE)协议和/或以绕过和/或独立于OSE 32的方式),以由一个或多个命令105命令的方式,直接在门铃170中写入一个或多个值201。在门铃170中写入一个或多个值201可以振铃门铃170。如此,事实上,通过向NW I/O设备108发出一个或多个命令105,NW I/O设备106可以振铃门铃170。
根据某些示例,与实体相关联的门铃的振铃可以包括和/或涉及将一个或多个值写入到一个或多个存储器位置(例如,与门铃相关联,包括门铃,和/或实现门铃),这些值可能会导致和/或触发实体执行一个或多个操作和/或动作。在某些示例中,门铃170和/或192可以对CPU 12和/或服务器20分别表现为NVMe控制器112和/或NW I/O设备108中的相应的存储器(未示出)中的一个或多个相应的存储器位置(未示出)。
在某些示例中,响应于门铃170的振铃,NVMe控制器112可以返回到完全操作状态(例如,如果NVMe控制器112先前进入了相对于此完全操作状态的功率降低状态),并可以读取被写入到一个或多个提交队列114的一个或多个队列元素116。NVMe控制器112可以执行由一个或多个队列元素116指定和/或实现的一个或多个命令。这可能会导致NVMe控制器112执行涉及存储150和/或大容量存储156的一个或多个操作(例如,存储在一个或多个缓冲器130A中的数据199的向存储150和/或大容量存储156的一个或多个写入)。
根据某些示例,在涉及存储150和/或大容量存储156的这一个或多个操作的完成之后,NVMe控制器112可以生成一个或多个完成队列元素(CQE)129并将它们写入到一个或多个完成队列124。也在涉及存储150和/或大容量存储156的这一个或多个操作完成之后,NVMe控制器112或可管理性模块109可以将一个或多个值写入到与NW I/O设备108相关联的一个或多个门铃192。这可以振铃一个或多个门铃192。响应于一个或多个门铃192的振铃,NW I/O设备108可以(例如,通过一个或多个RDMA写入操作)将一个或多个完成队列元素190写入到一个或多个完成队列120,然后,(例如,通过一个或多个响应197)将一个或多个完成队列元素190转发到客户端10中的一个或多个缓冲器13。
在某些示例中,在执行涉及存储150和/或大容量存储156的一个或多个(例如,若干个)这样的写入和/或读取操作之后,一个或多个代理194可以实现某些管理功能。例如,一个或多个代理194可以在与NW I/O设备108相关联的一个或多个提交队列126中建立一个或多个提交队列条目/元素(E)和/或在表250中建立一个或多个提交队列条目/元素QE A...QE N(参见图2)。如下面比较详细地讨论的,这些元素196A...196N和/或QE A...QE N,当由NW I/O设备108执行时,可以允许和/或促进一个或多个其他队列条目(例如,一个或多个NVMe控制器112完成条目129)向客户端10和/或NW I/O设备106的复制或转发,和/或由NVMe控制器112读取的数据的复制或转发。
根据某些示例,这些管理功能还可以包括由一个或多个代理194更新(例如,适当地推进)与(同NW I/O控制器108和NVMe控制器112相关联的)一个或多个队列对(例如,提交/完成队列对114、120和/或提交/完成队列对126,124)相关联的一个或多个指针(例如,振铃指针PNTR 202)。这可以允许将队列对的新条目存储在将不会导致队列对中的其他条目的错误的改写的位置处。另外,作为这些管理功能的一部分,一个或多个代理194可以指示也可以重复使用的缓冲器130A...130N中的一个或多个。
作为另一个示例,一个或多个队列元素116可以命令NVMe控制器112执行涉及存储150和/或大容量存储156的一个或多个读取操作。因此,作为执行一个或多个队列元素116的结果,一个或多个命令105还可以包括和/或指定存储150和/或大容量存储156中NVMe控制器112将从中读取数据199的一个或多个位置(例如,名称空间)。
根据某些示例,响应于接收到一个或多个命令105,NW I/O设备108可以(例如,根据RDMA(例如,iWARP、IB、RoCE)协议和/或以绕过和/或独立于OSE 32的方式),以由一个或多个命令105命令的方式,将一个或多个队列元素116直接写入到一个或多个提交队列114。如此,事实上,通过向NW I/O设备108发出一个或多个命令105,NW I/O设备106可以将一个或多个队列元素116分别写入到一个或多个提交队列114和一个或多个缓冲器130A。
在此示例中,一个或多个命令105还可以包括和/或指定一个或多个值201和指示符181中的一个或多个,这些指示符可以指示一个或多个门铃170中一个或多个值201可以被写入到的一个或多个位置。响应于一个或多个命令105中的这些一个或多个值201和这一个或多个指示符181,NW I/O设备108可以(例如,根据RDMA(例如,iWARP、IB、RoCE)协议和/或以绕过和/或独立于OSE 32的方式),以由一个或多个命令105命令的方式,直接在门铃170中写入一个或多个值201。在门铃170中写入一个或多个值201可以振铃门铃170。如此,事实上,通过向NW I/O设备108发出一个或多个命令105,NW I/O设备106可以振铃门铃170。
根据某些示例,响应于门铃170的振铃,NVMe控制器112可以返回到完全操作状态(例如,如果NVMe控制器112先前进入了相对于此完全操作状态的功率降低状态),并可以读取被写入到一个或多个提交队列114的一个或多个队列元素116。NVMe控制器112随后可以执行由一个或多个队列元素116指定和/或体现的一个或多个命令。这可能会导致NVMe控制器112执行涉及存储150和/或大容量存储156的一个或多个操作(例如,对存储150和/或大容量存储156的获得数据199的一个或多个读取),并将数据199存储在一个或多个缓冲器中(例如,一个或多个缓冲器130A)。
在某些示例中,在涉及存储150和/或大容量存储156的这些一个或多个操作的完成之后,NVMe控制器112可以生成一个或多个完成队列元素(CQE)129并将它们写入到一个或多个完成队列124。也在涉及存储150和/或大容量存储156的这些一个或多个操作完成之后,NVMe控制器112还可以将一个或多个值写入到与NW I/O设备108相关联的一个或多个门铃192。这可以振铃一个或多个门铃192。响应于一个或多个门铃192的振铃,NW I/O设备108可以从一个或多个完成队列124获得队列元素129,并将一个或多个完成队列元素190转发到或写入到一个或多个完成队列120,以促进数据199(例如,通过利用NW I/O device106的一个或多个RDMA写入操作)向客户端10中的一个或多个缓冲器13的传输(例如,通过一个或多个响应197)。可另选地,可管理性模块109可以从完成队列124获取队列元素129,并将完成队列元素190转发到或写入到完成队列120,以促进数据199向缓冲器13的传输。
根据某些示例,命令接口110可以是异步的,因为,例如,完成队列元素可以不以一顺序存储在一个或多个完成队列120中,该顺序对应于(1)命令队列元素存储在一个或多个提交队列114中的顺序,(2)这样的命令队列元素被转发供由NVMe控制器112执行和/或完成的顺序,和/或(3)完成队列元素190存储在一个或多个完成队列120和/或被提供给NW I/O设备106和/或客户端10的顺序。在操作中,在从客户端10和/或NW I/O设备106发出的写入命令的情况下,NW I/O设备106和/或客户端10可以适当地重新排序从NW I/O设备108接收到的相应的完成队列元素190。然而,在此实施例中,在读取命令的情况下,为了允许从存储150和/或大容量存储156中读取的相应的数据被适当地与对应的完成队列元素190相关联,以传输到客户端10和/或NW I/O设备106,由被NW I/O设备108置于完成队列120中的完成指示所产生的每一个完成队列元素(例如,完成队列元素190)可以包括图2中所示出的元素。
如图2所示,完成队列元素200(例如,完成队列元素190)可以包括一个或多个命令参数304、一个或多个命令队列标识符306、一个或多个命令队列头部(head)位置指示符308、状态信息310、一个或多个队列相位比特(P)312,和/或一个或多个命令标识符302。一个或多个命令参数304可以是和/或指示一个或多个队列元素116和/或命令105的一个或多个命令特定参数,这些参数可以对应于一个或多个完成队列元素190和/或与它们相关联。一个或多个命令队列标识符306可以指示和/或指定一个或多个队列元素116被写入其中的一个或多个提交队列114。一个或多个命令队列头部位置指示符308可以指示一个或多个队列元素116可位于的当前位置(例如,在由一个或多个命令队列标识符306所标识的一个或多个提交队列114中)。状态信息310可以指示一个或多个命令105和/或一个或多个队列元素116是否由NVMe控制器112成功地执行。一个或多个相位比特312可以指示一个或多个完成队列元素190是否构成一个或多个完成队列120中的最近添加的有效条目(例如,用于服务)。一个或多个命令标识符302可以指示对应的一个或多个队列元素116中的一个或多个对应的命令标识符和/或与它们相同。作为这些一个或多个对应的队列元素116的执行的结果,命令标识符302可以允许将一个或多个完成队列元素190正确地与一个或多个对应的队列元素116相关联和/或与从存储150和/或大容量存储156中读取的相应的数据199相关联。
在某些示例中,可以选择一个或多个命令标识符302,以使得不与可能当前被任何完成队列元素使用的、还没有被NW I/O设备108提供给客户端10和/或NW I/O设备的任何其他命令标识符冲突和/或相同。可以在系统100中使用的命令标识符可以是预先计算出的和/或预先生成的,并可以被用作可以存储在可被存储于存储器21中的表250中的相应的条目ENTRY(条目)A...ENTRY N的相应的索引INDEX(索引)A...INDEX N。表250中的每一个条目ENTRY A...ENTRY N都可以存储可与NW I/O设备108的相关联的一个或多个相应的预先计算出的和/或预先生成的命令队列元素QE A...QE N。每一个相应的元素QE A...QE N都可以与一个或多个缓冲器130A...130N中的一个或多个相应的缓冲器相关联。NVMe控制器112可以向其中存储从存储150和/或大容量存储156中读取的数据的一个或多个缓冲器130A...130N中的缓冲器中的每一个也可以与系统100中所使用的一个或多个相应的提交标识符和/或相应的条目ENTRY A...ENTRY N相关联。
命令队列元素QE A...QE N可以由客户端10和/或一个或多个代理194存储在和/或维护在表250中。如果一个或多个缓冲器130A...130N是静态地分配的,则表250可以是静态的,并就例如分配特征而言可以对应于可在客户端10中分配的一个或多个缓冲器13。
作为示例,在NVMe控制器112从存储150和/或大容量存储156读取数据199之后,NVMe控制器112可以将数据199存储在可以与一个或多个命令标识符302相关联的一个或多个缓冲器中(例如,一个或多个缓冲器130A),并可以向NW I/O设备108发送访问命令已经完成的指示,例如,振铃一个或多个门铃192。响应于NVMe控制器112振铃一个或多个门铃192,NW I/O设备108可以基于一个或多个队列相位比特312,确定一个或多个完成队列120中的一个或多个最近添加的有效完成队列。NW I/O设备108可以使用一个或多个完成队列元素190中的一个或多个命令标识符302以索引到表250中,以定位表250中可与一个或多个命令标识符302相关联的和/或可以由一个或多个命令标识符302所标识的一个或多个条目(例如,一个或多个条目ENTRY A)和一个或多个命令队列元素(例如,一个或多个队列元素QE A)。NW I/O设备108可以执行可与这一个或多个命令队列元素QE A相关联的和/或由这一个或多个命令队列元素QE A体现的一个或多个命令。对于这些示例,这可以导致NW I/O108读取一个或多个缓冲器130A以获取数据199,并将数据199和一个或多个完成队列元素190传输到NW I/O设备106和/或客户端10(例如,通过一个或多个响应197)。结果,数据199和/或一个或多个完成队列元素190可以被复制到一个或多个客户端缓冲器13中。
可另选地,在某些示例中,NW I/O设备108可以包括状态机(未示出)。此状态机可以是独立的和/或与可与NW I/O设备108相关联和/或由NW I/O设备108使用的一个或多个提交队列114分开。此状态机可以基于一个或多个命令标识符302,定位表250中的一个或多个命令队列元素QE A,并可以将一个或多个队列元素QE A复制到一个或多个提交队列126中的一个或多个对应的提交队列元素196A。然后,状态机可以发信号指令NW I/O设备108访问并执行一个或多个提交队列126中的一个或多个提交队列元素196A。
进一步可另选地,在不偏离这些示例的情况下,在完成涉及存储150和/或大容量存储156的一个或多个读取操作之前,NVMe控制器112可以基于一个或多个命令标识符302,定位和/或选择表250中的一个或多个队列元素QEA。然后,NVMe控制器112可以将一个或多个完成队列元素190写入到一个或多个完成队列120中,并可以将一个或多个队列元素QE A写入到一个或多个提交队列126中的一个或多个对应的提交队列元素196A中。然后,NVMe控制器112可以振铃一个或多个门铃192。这可以导致NW I/O设备108访问和执行一个或多个提交队列126中的一个或多个提交队列元素196A。对于这些示例,这可以导致NW I/O设备108读取一个或多个缓冲器130A,以获取数据199,并将数据199和一个或多个完成队列元素190传输到NW I/O设备106和/或客户端10(例如,通过一个或多个响应197)。结果,数据199和/或一个或多个完成队列元素190可以被复制到一个或多个客户端缓冲器13中。
在此替换的示例中,由NW I/O设备108、NVMe控制器112或可管理性模块109执行的固件和/或一个或多个代理194可以维护每队列对(per-queue-pair)上下文信息,以指示用于RDMA事务的一个或多个队列对。此上下文信息还可以包括各种指针(例如,指向提交队列元素196A...196N的一个或多个阵列以将数据从一个或多个缓冲器130A...130N移动到一个或多个缓冲器13,和/或一个或多个提交队列126的头部),一个或多个门铃192的一个或多个位置和用于振铃一个或多个门铃192的一个或多个值,以及一个或多个提交队列126的头部的本地副本和/或指向该一个或多个提交队列126的指针。这些指针(例如,头和尾指针)可以通过由NVMe控制器112执行的固件来动态地更新。
另选地或另外地,在不偏离这些示例的情况下,NW I/O设备108、可管理性模块109和/或NVMe控制器112可以被包括在未示出的芯片组,或包括在未示出的电路板或设备。也另选地或另外地,在不偏离此实施例的情况下,存储150和/或大容量存储156可以是服务器20内部的,或可以是服务器20外部的。
进一步地,虽然前面的描述是参考NW I/O设备108是RNIC而NVMe控制器112是NVMe顺应主机控制器接口来作出的,但是,此实施例的原理可以应用于其中可以使用与RDMA或NVMe不同和/或作为其补充的协议的情况,和/或其中在执行和/或促进不涉及存储150的操作(例如,其他和/或附加的输入/输出和/或通信相关操作)时可能涉及NVMe控制器112的情况。相应地,在不偏离上文所提及的示例的情况下,NW I/O设备108可以利用,和/或客户端10和服务器20之间的通信可以使用,与RDMA不同和/或作为其补充的协议。此外,在不偏离此实施例的情况下,NW I/O设备108、可管理性模块109或NVMe控制器112可以在执行时被涉及,和/或可以促进这样的可根据PCIe协议或NVMe接口操作的其他和/或附加的操作。在这些附加的和/或备选方案中,硬件和/或固件电路(未示出)可以被包括在电路118中,该电路118可以允许通过例如一个或多个中断机制(例如,一个或多个消息中断((MSI/MSI-X)和/或其他机制)向门铃170和/或192写入。此实施例应该被广泛地视为包含所有这样的替代方案、修改方案,以及变体。
如此,在某些示例中,电路可以被布置为允许客户端中的第一NW I/O设备,通过远离客户端中的服务器中的第二NW I/O设备并以独立于服务器中的操作系统环境的方式,访问服务器的另一(例如,存储器,和/或另一/附加的类型的)控制器的命令接口。客户端中的NW I/O设备和服务器中的NW I/O设备可以是或包括相应的远程直接存储器访问启用的网络接口控制器(例如,能够使用RDMA和/或通过RDMA进行通信的控制器)。命令接口可以包括至少一个(例如,存储器,和/或其他/附加的类型的)控制器命令队列。这样的访问可以包括将至少一个队列元素写入到至少一个提交队列,以命令另一控制器来执行与另一控制器(例如,NVMe控制器)相关联的至少一个操作(例如,涉及存储器,和/或涉及一个或多个其他和/或附加的类型的操作,诸如,其他和/或附加的输入/输出操作)。其他控制器可以响应于至少一个队列元素,执行至少一个操作。许多替代方案、变化,以及修改也是可以的。这些替代方案中的某些可以包括使用耦合在NW I/O设备和服务器中的NVMe控制器之间的可管理性模块(例如,可管理性模块109),以促进远程NW I/O设备对至少一个命令接口的访问。
如此,在某些示例中,服务器20中的NVMe控制器112的一个或多个命令接口110可以由客户端的NW I/O设备106通过一个或多个RDMA事务,以绕过、独立于、和/或不会涉及服务器的OSE 32和/或CPU 12的方式来直接访问。有利地,这可以允许存储命令、数据,以及完成消息在客户端和服务器之间快速地并且高效地传递,且具有缩短的等待时间。此外,在此实施例中,NWI/O设备108和NVMe控制器112之间的交互可以完全地或几乎完全地由硬件执行(例如,使用对等存储器和门铃写入),并且还以绕过、独立于、和/或不会涉及服务器的OSE 32和/或CPU 12的方式来执行。有利地,这可以允许这样的交互被快速地并且高效地执行,且具有缩短的等待时间。另外,此实施例的上面的特征可以降低服务器的功耗,热耗散,以及由OSE 32和CPU 12消费的带宽量。
很多修改是可能的。例如,如前所述,在此实施例中,客户端10可以包括多个客户端。如果RDMA用于服务器20和客户端10之间的通信,则在此实施例中,有利地,客户端10可以在客户端10与服务器20、NW I/O设备108,和/或NVMe控制器112之间的通信中动态地共享缓冲器130A...130N,作为公共缓冲器池。为了允许这样的缓冲器共享,NW I/O设备108可以能够操纵、调整,和/或修改可在由客户端10提供给服务器20的命令105中指示的缓冲器指定信息,以便允许在客户端10之间共享缓冲器130A...130N和/或其他服务器资源,而不会导致例如竞争相关问题。
例如,一个或多个指示符181和/或由一个或多个指示符181指示的STag可以包括NW I/O设备108可以将其与一个或多个缓冲器和/或缓冲器130A中的缓冲池进行关联的相应的信息(作为一个或多个存储器区句柄的替代和/或补充)。在此布局中,客户端10可以使用这样的指示符181来执行RDMA读取操作,而NW I/O设备108可以对由相应的信息和/或指示符181指示的一个或多个缓冲器和/或缓冲池执行写入操作。在执行其操作时,NW I/O设备108可以适当地调整提供给NVMe控制器112的实际命令和/或命令队列元素,以便当NVMe控制器112执行这样的命令和/或命令队列元素时导致正确的缓冲器等等被NVMe控制器112写入。
替代或补充地,在不偏离上面的示例的情况下,NW I/O设备108可以包括共享接收队列(未示出)和/或与其相关联,用以从多个客户端10接收例如命令105。NW I/O设备108可以能够将一个或多个合适的服务器缓冲器地址,值,和/或其他信息替换到接收到的命令105的一个或多个部分(例如,队列元素116、值201、指示符181,和/或其他信息),以允许在多个客户端10之间共享一个或多个命令接口110中的结构,而不会导致竞争或性能的其他降级。在此布置中,客户端可能不被提供和/或使用存储器制器的命令队列和/或门铃的一个或多个STag,并且向这些结构写入可以由服务器的NW I/O设备108来执行。有利地,这可以允许可与共享的接收队列相关联和/或使用共享的接收队列的多个客户端10来使用和/或共享相同存储控制器命令队列、门铃,和/或其他结构。
例如,在写入操作的情况下,一个或多个命令105中的一个或多个指示符181、一个或多个值201,和/或其他信息可以指示用于写入操作的一个或多个存储控制器STag(以及相关的信息),和/或一个或多个完成队列元素可以被写入到其中的一个或多个缓冲器的一个或多个RDMA STag。对于这些示例,基于一个或多个接收到的命令105和/或存储在NW I/O设备108中的其他信息,NW I/O设备108可以选择缓冲器130A...130N中的一个或多个缓冲器以及提交队列114中的一个或多个位置,要向该一个或多个位置张贴待写入数据199及将被转发到与NVMe控制器112相关联的提交队列126的一个或多个对应的命令队列元素。NW I/O设备108可以根据这样的选择,张贴数据199和一个或多个对应的命令队列元素,此后,可以振铃门铃170。如由NW I/O设备108张贴的,一个或多个命令队列元素可以指示在一个或多个命令105中所提供的一个或多个存储控制器STag、命令标识符302、安全上下文信息(例如,用以允许验证一个或多个存储控制器STag),和/或数据199已经被张贴到其中的一个或多个缓冲器的一个或多个STag。在NVMe控制器112完成了请求的一个或多个写入操作并张贴一个或多个完成队列元素(例如,向完成队列124)之后,NVMe控制器112可以振铃门铃192。基于表250中的信息,NW I/O设备108可以生成一个或多个合适的响应197,并通过将来自完成队列124的完成队列元素转发到完成队列120,来将一个或多个合适的响应197转发到提供接收到的命令105的一个或多个客户端。
在读取操作的情况下,可以在命令105中提供一般类似的信息,并可以由NW I/O设备108和/或NVMe控制器112执行一般类似的操作。然而,在读取操作的情况下,由NVMe控制器112读取的数据199可以由NVMe控制器112存储到由NW I/O设备108所指定的缓冲器130A...130N中的一个或多个中,并可以由NW I/O设备108读取,而不是相反(例如,如可能是写入操作中的情况那样)。NW I/O设备108可以将读取的数据199传输到在一个或多个响应197中提供接收到的命令105的一个或多个客户端。在前面的布局中,至少从启动这样的访问的一个或多个客户端执行的应用程序的观点来看,命令105可以与可被客户端用来访问客户端本地的存储的命令相类似或与其相同。有利地,这可以允许前面所描述的类型的远程操作和/或RDMA事务基本上对这些一个或多个客户端执行的应用程序是透明的。
如此,在某些示例中,有利地,多个客户端可以共享存储控制器的命令队列、门铃,和/或服务器的缓冲器,和/或使用RDMA协议,写入到这些结构(通过服务器的NW I/O设备),而不会遭受原本可能会发生的资源竞争问题(和/或其他缺点)。服务器的NW I/O设备可以能够修改与客户端的命令105相关联和/或包含在客户端的命令105中的信息,以在客户端之间或当中促进这样的共享和/或RDMA STag信息的共享。有利地,这可以允许RDMA协议用于服务器和多个客户端之间的命令通信和/或完成信息,且具有改进的可缩放性,而同时降低实现这样的特征所需的存储器消耗,且没有通信线路速率的降级。
图3示出了第二示例系统。如图3所示,第二示例包括系统300。根据某些示例,系统300可以包括多个客户端305-1到305-n(其中,“n”表示大于1的任何正整数)和服务器350。对于这些示例,每一个客户端都可以包括NWI/O设备310、存储器320、主机处理器(HP)330和非易失性存储器(NVM)340。此外,服务器350还可以包括NW I/O设备352、NVMe控制器354和存储设备356。客户端305-1到305-n或服务器350可以包括图3中未示出的附加的元件或组件。在此上下文中,示例不受限制。
在某些示例中,与服务器350中的逻辑和/或特征协作的客户端305-1到305-n中的逻辑和/或特征可以能够使用由在服务器350中维护的NVMe控制器354控制的存储设备356来远程引导。客户端305-1到305-n中的任何一个的远程引导可以在客户端305-1到305-n中的至少一个上或附近启动(触发(toggle)电源按钮),在服务器350上或附近,或在可以管理系统300的操作的集中式控制点(未示出)(例如,操作员发起的)启动。远程引导也可以由于功率循环(power cycling)(有意或非有意故意的)或由于客户端在给定网络中上线而启动。
根据某些示例,作为预先引导活动的一部分,NW I/O设备310-1到310-n和352可以能够根据可以符合和/或兼容于诸如iWARP、Infiniband、以太网、TCP/IP或RoCE之类的一个或多个RDMA协议的一个或多个协议,通过耦合到网络360的相应的NW通信链路360-1,36-2和360-3来交换数据和/或命令。例如,逻辑和/或特征可以由客户端305-1中的NW I/O设备310-1的电路312-1执行,以使用这些RDMA协议中的至少一种,通过耦合到网络360的NW通信链路360-1,连接到位于远处的服务器350。
在某些示例中,由电路312-1执行的逻辑和/或特征可以接收一个或多个参数,以使NW I/O设备310-1能通过NW通信链路360-1连接到服务器350。根据某些示例,可以从在NW I/O设备310-1中维护的非易失性存储器(NVM)314-1接收或获取一个参数。一个或多个参数可以包括与建立到服务器350的网络连接相关联的信息。例如,一个或多个参数可以包括,但不仅限于,服务器350的网际协议(IP)地址、向服务器350认证NW I/O设备310-1和/或客户端305-1的认证信息、或客户端305-1的标识符(例如,节点标识)。一个或多个参数也可以包括NW通信链路360-1的网络标识信息,用以促进通过网络360,经由到服务器350的网络连接,交换数据和/或命令。网络信息可以包括,但不仅限于,局部访问网(LAN)标识符或虚拟LAN(VLAN)标识符。
根据某些示例,由电路312-1执行的逻辑和/或特征可以从源的组合接收一个或多个参数。例如,可以从NVM 314-1接收一个或多个参数的第一部分,并且可以从服务器350接收第二部分(例如,维护/存储在NVM353中)。第一部分可以包括,但不仅限于,客户端305-1的标识符或用于向服务器350认证客户端305-1的认证信息。第二部分可以包括被客户端305-1用来定位服务器350并与其进行通信的信息,诸如服务器350的IP地址,或网络标识信息,包括,但不仅限于,LAN或VLAN标识符。
在某些示例中,由电路321-1执行的逻辑和/或特征也可以建立到在服务器350中维护的NVMe控制器354的控制路径。对于这些示例,可以按如上文为图1的建立到NVMe控制器112的控制路径所描述的类似的方式,使用诸如iWARP、Infiniband、以太网、TCP/IP或RoCE之类的RDMA协议来建立到NVMe控制器354的控制路径。一旦建立了控制路径,逻辑和/或特征可随后能够发现存储设备356的一个或多个特性。一个或多个特性可以包括,但不仅限于,存储设备特性,诸如存储设备数量、每一个存储设备的存储器的类型、可用存储器容量或访问权限(例如,只读存储器(ROM)或读/写(R/W)存储器),目录信息或共享名。
根据某些示例,由NW I/O设备310-1中的电路321-1执行的逻辑和/或特征可以能够向系统BIOS 341-1注册一个或多个发现的特性。如图3所示,对于某些示例,系统BIOS 341-1可以被维护在NVM 340-1,且可以由诸如HP 330-1之类的客户端305-1的电路执行。如下文比较详细地描述的,可以使用注册的一个或多个发现的特性来促进通过对存储设备356的远程访问对客户端305-1的远程引导。
虽然在图3中未示出,在某些示例中,并非向系统BIOS注册一个或多个发现的特性,而是由NW I/O设备310-1中的电路321-1执行的逻辑和/或特征也可以能够与可能存储在NVM340-1中的其他类型的引导相关的/启动固件合作。例如,固件可以用于统一可扩展固件接口(UEFI)或用于广泛的固件接口(EFI)。此UEFI或EFI固件可以执行如在本发明中对于BIOS 341-1所描述的类似的功能。
在某些示例中,由NW I/O设备310-1中的电路321-1执行的逻辑和/或特征可以能够从NVMe控制器354接收RDMA STag(例如,通过建立的控制路径)。对于这些示例,RDMA STag可以表示存储设备356中可以使用RDMASTag来访问的分配部分。例如,接收到的RDMA STag可以表示对分配部分355-1、355-2或355-3中的一个的访问。此外,对于这些示例,由接收到的RDMASTag所表示的给定分配部分可以存储可以被用来远程引导客户端305-1的OS内核和一个或多个设备驱动器。
根据某些示例,由电路321-1执行的逻辑和/或特征可以存储接收到的RDMA STag,RDMA STag表示在NW I/O设备310中维护的诸如NVM 314-1之类的非易失性存储器中的分配部分。对于这些示例,RDMA STag可以被BIOS 341-1访问,以使系统BIOS 341-1能使用RDMA STag来访问存储设备356,并将OS内核322-1以及设备驱动器324-1加载到存储器320-1中,以便远程引导客户端305-1。
在某些示例中,存储设备356中可使用接收到的RDMA STag访问的分配部分可共同地被通过相应的单独的网络通信链路连接到远程服务器350的其他远程客户端访问。对于这些示例,为了合并存储器资源,存储设备356的相同的分配部分可以在客户端305-1到305-n之间被共享。例如,表示分配部分355-1的RDMA STag可以允许对分配部分355-1的只读访问。对相同OS内核以及设备驱动器的共享访问可以允许客户端305-1到305-n的均匀的远程引导。
在某些其他示例中,接收到的RDMA STag可以允许对存储设备356的分配部分的共享只读访问和对存储设备356的分配部分的私有读/写访问。对于这些示例,存储设备356的共享分配部分可以是用于远程引导系统300的全部客户端的系统范围相关信息。同时,私有读/写访问可以允许客户端特定的信息用于远程引导给定客户端。例如,RDMA STag可以表示分配部分355-2,并且服务器350中的逻辑和/或特征可以能够判断RDMA STag是否还允许给定客户端访问共享(只读355-3A)和私有分配部分(R/W 335-381或335-3Bn)。根据某些示例,如果给定客户端是客户端305-1,则服务器350中的逻辑和/或特征可以判断,客户端305-1访问分配部分355-2所使用的RDMA STag允许访问只读355-3A和R/W 355-381两者。此外,如果给定客户端是客户端305-n,则服务器350中的逻辑和/或特征可以判断,客户端305-n访问分配部分355-2所使用的RDMA STag允许访问只读355-3A和R/W 355-3Bn两者。如此,对于这些示例,给定客户端中的逻辑和/或特征可能不知晓可通过RDMA STag访问的第一和第二部分。在某些其他示例中,可以使用单独的RDMA STag(一个用于只读355-3A,一个用于R/W 355B)来提供对分配部分355-2的访问。对于这些其他示例,给定客户端中的逻辑和/或特征可以作出关于远程引导给定客户端设备要访问哪一个分配部分的判断。
根据某些示例,诸如客户端305-1之类的客户端可以使用RDMA STag,该RDMA STag允许访问分配部分355-2,以使系统BIOS341-1能从只读355-3A OS内核322-1以及设备驱动器324-1首先加载到存储器320-1。对于这些示例,OS内核322-1以及设备驱动器324-1随后可以使用RDMA STag从R/W355-381中获取客户端305-1的配置所特有的和/或被指派用于客户端305-1的配置的信息。对于某些示例,客户端305-1的配置所特有的和/或被指派用于客户端305-1的配置的信息可以包括,但不仅限于,配置客户端305-1作为数据库服务器、文件服务器、邮件服务器、打印服务器、web服务器、应用程序服务器、游戏服务器或主存一个或多个承租人的虚拟服务器来操作。
图4示出了远程引导方案400。如图4所示,远程引导方案400包括预先引导和OS运行时部分。根据某些示例,远程引导方案400可以通过客户端305-1的元件来实现。例如,如图4所示,NW I/O设备310的电路312可以执行逻辑和/或特征以使用NW通信链路360-1通过网络360连接到诸如服务器350之类的远程服务器,如上文对于图3所提及的。此外,还可以使用系统BIOS341-1来从预先引导过渡到OS运行时操作,如下面更详细地描述的。
根据某些示例,远程NVMe引导只读存储器(ROM)410可以由网络I/O设备310中的电路312定位、加载,然后执行。对于这些示例,远程NVMe引导ROM 410可以最初被维护/存储在NVM 314中,并且一旦加载,可以提供预先引导网络I/O驱动器,远程NVMe传输和BIOS磁盘服务,如在图4中指出的。例如,使用预先引导网络I/O驱动器和远程NVMe传输,由电路312执行的逻辑和/或特征可以连接到远程服务器,建立到在服务器中维护的NVMe控制器的控制路径,并发现由NVMe控制器控制的存储设备的一个或多个特性。此外,BIOS盘服务还可以被逻辑和/或特征用来向系统BIOS 341-1传递或注册存储设备的一个或多个发现的特性。
在某些示例中,作为远程NVMe引导ROM 410的一部分包括的BIOS盘服务可以包括加载BIOS中断调用13hex(INT13h)服务,以供系统BIOS 314-1使用,以促进OS内核以及设备驱动器从由在远程服务器中维护的NVMe控制器控制的存储设备进行初始加载。对于这些示例,可以加载OS内核322-1以及设备驱动器324-1(例如,加载到存储器320-1),且OS运行时操作可以开始。作为OS运行时的一部分,远程NVMe存储栈420可以通过OS内核322-1来实现。如图4所示,NW I/O设备驱动器430也可以从设备驱动器324-1之中被设置/实现,以使用RDMA协议来维护远程NVMe连接以与远程服务器上的NVMe控制器进行通信。
根据某些示例,如由NVM314和NW I/O设备驱动器430之间的箭头突出显示的,可以提供NVM 314中存储的/维护的信息,以促进对远程NVMe连接的维护。例如,NW I/O设备310的逻辑和/或特征可以能够支持BIOS增强的盘驱动器(EDD)服务。对于BIOS EDD的支持可以使NW I/O设备310的逻辑和/或特征能从预先引导无缝过渡到OS运行时,因为在OS运行时,在预先引导过程中获取的参数、特性和/或RDMA STag被交换/使它们对OS内核322-1或设备驱动器324-1可用。
图5示出了第一设备的示例框图。如图5所示,第一设备包括设备500。尽管图5中示出的设备500具有处于特定拓扑中的有限数量的元素,但可以明白,设备500可包括给定实现所需的处于替换拓扑中的更多或更少元素。
设备500可以由在耦合到客户端或主机设备的NW I/O设备中维护的电路520支持。电路520可以被配置为执行一个或多个软件或固件实现的组件或模块522-a。值得注意的是,如此处所使用的“a”和“b”和“c”以及类似的符号旨在作为表示任何正整数的变量。如此,例如,如果实现设置a=7的值,那么,模块522-a的完整的一组的软件或固件可以包括模块522-1、522-2、522-3、522-4、522-5、522-6或522-7。呈现的示例在此上下文不受限制,所使用的不同的变量可以表示相同或不同的整数值。
根据某些示例,电路520可以包括处理器或处理器电路。处理器或处理器电路可以是各种市场上可买到的处理器中的任一种,包括但不仅限于, 处理器;应用程序、嵌入式和安全处理器;以及处理器;IBM和Cell处理器;Core(2)Core(核)i3、Core i5、Core i7、处理器;以及类似的处理器。根据某些示例,电路520也可以是专用集成电路(ASIC),至少某些模块522-a可以实现为ASIC的硬件元件。
根据某些示例,设备500可以包括供电路520执行的参数模块522-1。参数模块522-1可以能够接收参数505以使具有设备500的NW I/O设备通过NW通信链路连接到远程服务器。在某些示例中,可以从在NW I/O设备中维护的非易失性存储器接收一个或多个参数,或者可以从远程服务器接收参数的至少一部分。
在某些示例中,设备500也可以包括供电路520执行的连接模块522-2。连接模块522-2可以能够使用由参数模块522-1接收到的一个或多个参数连接到远程服务器。连接模块522-2可以能够至少临时存储参数信息524-a(例如,在诸如查询表(LUT)之类的数据结构中),以促进连接到远程服务器。参数信息524-a可以包括连接模块522-2用于定位远程服务器(例如,IP地址)、向远程服务器标识客户端或主机设备、向远程服务器认证客户端或主机设备的信息,或诸如LAN标识符或VLAN标识符之类的网络标识信息。
在某些示例中,设备500也可以包括供电路520执行的路径模块522-3。路径模块522-3可以能够使用一个或多个RDMA协议,建立到在远程服务器中维护的NVMe控制器的控制路径。对于这些示例,路径模块522-3可以能够至少临时存储RDMA协议信息525-b(例如,在LUT中),以便建立控制路径。一个或多个RDMA协议可以包括,但不仅限于,iWARP、Infiniband或RoCE协议。
根据某些示例,设备500也可以包括供电路520执行的特性模块522-4。特性模块522-4可以能够发现由远程服务器中的NVMe控制器控制的一个或多个存储设备的一个或多个特性510。对于这些示例,特性模块522-4可以至少将从特性510发现的特性信息526-c临时存储在诸如LUT之类的数据结构中或存储在包括设备500的NW I/O设备中维护的非易失性存储器中。发现的一个或多个特性可以包括,但不仅限于,由NVMe控制器控制的存储设备的数量,存储设备的特性,诸如存储器的类型,可用容量或访问权限,例如,ROM或R/W存储器。
在某些示例中,设备500也可以包括供电路520执行的注册模块522-5。注册模块522-5可以能够向耦合到具有设备500的NW I/O设备的主机或客户端设备的系统BIOS注册存储设备和一个或多个发现的特性。对于这些示例,注册模块522-5可以至少将存储设备/特性信息527-d临时存储在诸如在NWI/O设备中维护的非易失性存储器之类的数据结构中。此外,作为注册存储设备和一个或多个发现的特性的一部分,注册模块522-5可以向系统BIOS提供注册的信息535。注册的信息535可以包括系统BIOS定位存储器/设备特性信息527-d的信息,例如,指向由NW I/O设备维护的非易失性存储器的存储器地址的指针。
根据某些示例,设备500也可以包括供电路520执行的接收模块522-6。接收模块522-6可以能够从远程服务器处的NVMe控制器接收RDMA STag515。对于这些示例,RDMA STag 515可以包括RDMA STag,该RDMA STag表示由NVMe控制器控制的存储设备的、可使用RDMA STag访问的分配部分。此外,对于这些示例,分配部分可以存储OS内核和一个或多个设备驱动器,其将被用于耦合到具有设备500的NW I/O设备的主机或客户端设备的远程引导。
在某些示例中,设备500也可以包括供电路520执行的存储模块522-7。存储模块522-7可以能够将RDMA Stag 515中所包括的接收到的RDMA STag存储在非易失性存储器中,作为具有设备500的NW I/O设备中的存储的RDMA STag 530。对于这些示例,存储的RDMA STag 530可以被耦合到NWI/O设备的主机或客户端设备的系统BIOS访问。根据某些示例,系统BIOS可以使用存储的RDMA STag 530中所包括的RDMA STag来访问存储设备并加载OS内核和一个或多个设备驱动器以远程引导主机或客户端设备。
此处所包括的是表示用于执行所公开的体系结构的新颖方面的示例方法的一组逻辑流程。尽管为了简洁起见,作为一系列动作示出和描述了一个或多个方法,但是,所属领域的技术人员将了解和明白,方法不受动作的顺序的限制。某些动作可以按与此处所示出和描述的不同的顺序进行和/或与其他动作并行地进行。例如,本领域技术人员将会明白并理解,方法可被替换地表示为一系列相互关联的状态或事件,诸如以状态图的形式。此外,并非在一方法中示出的所有动作都是新颖实现所必需的。
逻辑流程可以以软件、固件,和/或硬件来实现。在软件和固件实施例中,逻辑流程可通过计算机执行的指令来实现,该计算机执行的指令被存储在例如光学存储、磁存储或半导体存储之类的至少一种非临时计算机可读介质或机器可读介质上。这些实施例不限于这种背景。
图6示出第一逻辑流程的示例。如图6所示,第一逻辑流程包括逻辑流程600。逻辑流程600可表示诸如设备500之类的本文所述的一个或多个逻辑、特征或设备所执行的操作中的一些或全部。更具体而言,逻辑流程600可以通过参数模块522-1、连接模块522-2、路径模块522-3、接收模块522-6或存储模块522-7来实现。
根据某些示例,逻辑流程600在框602可以在耦合到主机设备的NW I/O设备处接收一个或多个参数以使NW I/O设备能通过NW通信链路连接到远程服务器。例如,包括一个或多个参数的参数505可以由耦合到主机设备的NWI/O设备的设备500中所包括的参数模块522-1接收。
在某些示例中,在框604,逻辑流程600可以使用一个或多个参数连接到远程服务器。例如,连接模块522-2可以使用参数505中所包括的一个或多个参数连接到远程服务器。一个或多个参数可以包括促进通过NW通信链路的连接的信息,以包括远程服务器的IP地址、主机设备的标识符信息或向远程服务器认证主机设备的认证信息。
根据某些示例,逻辑流程600在框606可以使用RDMA协议,建立到在远程服务器中维护的NVMe控制器的控制路径。例如,路径模块522-3可以使用RDMA协议信息524-b,RDMA协议信息524-b具有使用诸如iWARP、Infiniband或RoCE之类的协议来建立控制路径的信息。
在某些示例中,逻辑流程600在框608可以从NVMe控制器接收RDMASTag,该RDMA STag表示存储设备中可使用RDMA STag访问的分配部分。对于这些示例,分配部分可以存储OS内核和一个或多个设备驱动器。例如,接收模块522-6可以接收RDMA STag 515,该RDMA STag 515包括表示存储设备的分配部分的RDMA STag。
根据某些示例,逻辑流程600在框610可以在随后将RDMA STag存储在NW I/O设备上的非易失性存储器中,非易失性存储器可以被主机设备的系统BIOS访问,以使系统BIOS能够使用RDMA STag来访问存储设备,并加载OS内核和一个或多个设备驱动器,以远程引导主机设备。例如,存储模块522-7可以将接收到的RDMA STag存储在存储的RDMA STag 530中,该存储的RDMA STag 530被维护在具有设备500的NW I/O设备处的非易失性存储器中。然后,系统BIOS可以使用存储的RDMA STag 530中的RDMA STag来加载OS内核和一个或多个设备驱动器,以便远程引导主机设备。
图7示出第一存储介质的示例。如图7所示,第一存储介质包括存储介质700。存储介质700可以包括制品。在某些示例中,存储介质700可以包括任何非瞬态计算机可读介质或机器可读介质,诸如光学存储、磁存储或半导体存储。存储介质700可以存储各种类型的计算机可执行指令,诸如实现逻辑流程600的指令。计算机可读或机器可读存储介质的示例可包括能够存储电子数据的任何有形介质,包括易失性存储器或非易失性存储器,可移动或不可移动存储器,可擦除或不可擦存储器,可写入或可重写的存储器等等。计算机可执行指令的示例可包括任何合适类型的代码,如源代码、已编译的代码、已解释的代码、可执行代码、静态代码、动态代码、面向对象代码、可视代码等等。在此上下文中,示例不受限制。
图8示出了示例NW I/O设备800。在某些示例中,如图8所示,NW I/O设备800可以包括处理组件840、其他平台组件或通信接口860。根据某些示例,如上文所提及的,NW I/O设备800可以在耦合到主机或客户端设备的NWI/O设备中实现。
根据某些示例,处理组件840可以执行设备500和/或存储介质700的处理操作或逻辑。处理组件840可包括各硬件元素、软件元素或两者的组合。硬件元件的例子可包括器件、逻辑器件、组件、处理器、微处理器、电路、处理器电路、电路元件(例如晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片集等等。软件元素的示例可包括软件组件、程序、应用、计算机程序、应用程序、设备驱动器、系统程序、软件开发程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或它们的任意组合。判断一个示例是否使用硬件元素或软件元素来实现可以根据任意数量的因素而不同,如所希望的计算速率、功率级别、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度,及给定示例所需要的其他设计或性能约束。
在某些示例中,其他平台组件850可以包括常见的计算元件,诸如一个或多个处理器、多核处理器、协处理器、存储器单元、芯片组、控制器、外围设备、接口、振荡器、定时设备等等。存储器单元的示例可以包括,但不仅限于,一种或多种更高的速度存储器单元形式的各种类型的计算机可读的和机器可读的存储介质,诸如ROM、RAM、DRAM、DDRAM、SDRAM、SRAM、PROM、EPROM、EEPROM、闪存或适用于存储信息的任何其他类型的存储介质。
在某些示例中,通信接口860可以包括用于支持通信接口的逻辑和/或特征。对于这些示例,通信接口860可以包括根据各种通信协议或标准来操作以通过直接或网络通信链路进行通信的一种或多种通信接口。直接通信可以通过使用在一个或多个行业标准(包括后代和变体)(诸如那些与PCIe规范、NVMe规范、RDMA协议规范、IEEE802-2-2008规范、RFC791或RFC793相关联的)中所描述的通信协议或标准来进行。
可利用分立电路、专用集成电路(ASIC)、逻辑门和/或单芯片架构的任意组合来实现NW I/O设备800的组件和特征。此外,在适当情况下,可利用微控制器、可编程逻辑阵列和/或微处理器或上述的任意组合来实现NW I/O设备800的特征。注意,在本文中硬件、固件和/或软件元素可合称或单独地称为“逻辑”或“电路”。
应意识到,在图8的框图中示出的示例性NW I/O设备800可表示很多可能实现的一个功能描述性示例。因此,在附图中描述的框功能的划分、省略或包含不能推定用于实现这些功能的硬件组件、电路、软件和/或元件一定要被划分、省略或包含在各实施例中。
图9示出了第二设备的示例框图。如图9所示,第二设备包括设备900。尽管图9中示出的设备900具有处于特定拓扑中的有限数量的元素,但可以明白,设备900可包括给定实现所需的处于替换拓扑中的更多或更少元素。
设备900可以由位于或耦合到服务器的NW I/O设备中维护的电路920支持,服务器可以远离一个或多个客户端或主机设备。电路920可以被布置为执行一个或多个软件或固件实现的组件或模块922-a。值得注意的是,如此处所使用的“a”和“b”和“c”以及类似的指示符旨在作为表示任何正整数的变量。如此,例如,如果实现设置a=5的值,那么,模块922-a的完整的一组的软件或固件可以包括模块922-1、922-2、922-3、922-4或922-5。呈现的示例在此上下文不受限制,所使用的不同的变量可以表示相同或不同的整数值。
根据某些示例,电路920可以包括处理器或处理器电路。处理器或处理器电路可以是各种市场上可买到的处理器中的任一种,包括但不仅限于, 处理器;应用程序、嵌入式和安全处理器;以及处理器;IBM和Cell处理器;Core(2)Core i3、Core i5、Core i7、处理器;以及类似的处理器。根据某些示例,电路920也可以是专用集成电路(ASIC),并且至少某些模块922-a可以实现为ASIC的硬件元件。
根据某些示例,设备900可以包括供电路920执行的参数模块922-1。参数模块922-1可以能够接收参数905以使具有设备900的NW I/O设备能通过NW通信链路连接到远程客户端。在某些示例中,可以从在NW I/O设备中维护的非易失性存储器接收一个或多个参数,或者可以从远程客户端接收参数的至少一部分(例如,认证信息)。
在某些示例中,设备900也可以包括供电路920执行的连接模块922-2。连接模块922-2可以能够使用由参数模块922-1接收到的参数905中所包括的一个或多个参数连接到远程客户端。连接模块922-2可以能够至少临时存储来自参数信息924-a中的参数905的信息(例如,在诸如查询表(LUT)之类的数据结构中),以促进连接到远程客户端。参数信息924-a可以包括连接模块922-2用于定位远程客户端(例如,IP地址)、标识远程客户端、认证远程客户端的信息,或诸如LAN标识符或VLAN标识符之类的网络标识信息。
在某些示例中,设备900也可以包括供电路920执行的路径模块922-3。路径模块922-3可以能够使用一个或多个RDMA协议,在远程客户端和在服务器中维护的NVMe控制器之间建立控制路径。对于这些示例,路径模块922-3可以能够至少临时存储RDMA协议信息925-b(例如,在LUT中),以便建立控制路径。一个或多个RDMA协议可以包括,但不仅限于,iWARP、Infiniband或RoCE协议。
根据某些示例,设备900也可以包括供电路920执行的转发模块922-4。转发模块922-4可以能够将由服务器中的NVMe控制器控制的一个或多个存储设备的一个或多个特性910转发到远程客户端。转发的一个或多个特性可以包括,但不仅限于,由NVMe控制器控制的存储设备的数量,存储设备的特性,诸如存储器的类型,可用容量或访问权限,例如,ROM或R/W存储器。转发模块922-4也可以能够转发由NVMe控制器所生成的RDMA STag 915,RDMASTag 915表示给定一个或多个存储设备中可以使用RDMA STag 915中所包括的一个或多个RDMA STag访问的分配部分。对于这些示例,分配部分可以包括OS内核和一个或多个设备驱动器。
根据某些示例,设备900也可以包括供电路920执行的接收模块922-5。接收模块922-5可以能够接收由转发模块922-4转发到远程客户端的RDMASTag 915中所包括的一个或多个RDMA STag。对于这些示例,接收到的RDMASTag 915随后可以被转发到NVMe控制器,以使远程客户端能够访问由NVMe控制器控制的一个或多个存储设备并加载OS内核和一个或多个设备驱动器以远程引导远程客户端。
图10示出第二逻辑流程的示例。如图10所示,第二逻辑流程包括逻辑流程1000。逻辑流程1000可表示诸如设备900之类的本文所述的一个或多个逻辑、特征或设备所执行的操作中的一些或全部。更具体而言,逻辑流程1000可以通过参数模块922-1、连接模块922-2、路径模块922-3、转发模块922-4或接收模块922-5来实现。
根据某些示例,逻辑流程1000在框1002可以接收与通过NW通信链路连接到远程客户端相关联的一个或多个参数。例如,参数905可以由耦合到服务器的NW I/O设备的设备900中所包括的参数模块922-1来接收,服务器可以远离客户端。
在某些示例中,逻辑流程1000在框1004可以使用一个或多个参数,通过NW通信链路连接到远程客户端。例如,连接模块922-2可以使用参数505中所包括的一个参数连接到远程客户端。一个或多个参数可以包括用于促进通过NW通信链路的连接的信息,以包括远程客户端的IP地址、服务器的标识符信息或使服务器能认证远程客户端的认证信息。
根据某些示例,逻辑流程1000在框1006可以在远程客户端和在远程服务器中维护的NVMe控制器之间建立控制路径。对于这些示例,可以使用RDMA协议来建立控制路径。例如,路径模块922-3可以使用RDMA协议信息924-b,RDMA协议信息924-b具有用于使用诸如iWARP、Infiniband或RoCE之类的协议来促进在NVMe控制器和远程客户端之间建立控制路径的信息。
在某些示例中,逻辑流程1000在框1008也可以将由NVMe控制器控制的存储设备的一个或多个特性转发到远程客户端,以及发送由NVMe控制器所生成的RDMA STag,该RDMA STag表示存储设备中可使用RDMA STag访问的分配部分。对于这些示例,分配部分可以包括OS内核和一个或多个设备驱动器。例如,转发模块922-4可以将特性910和RDMA STag915转发到远程客户端。
根据某些示例,逻辑流程1000在框1010也可以从远程客户端接收RDMASTag,并可以将RDMA STag转发到NVMe控制器,以使远程客户端能够访问存储设备并加载OS内核和一个或多个设备驱动器以远程引导远程客户端。例如,接收模块922-5可以接收RDMA STag 915,然后,将RDMA STag 915转发到NVMe控制器,以使远程客户端能够访问由NVMe控制器控制的存储设备。
图11示出第二存储介质的示例。如图11所示,第二存储介质包括存储介质1100。存储介质1100可以包括制品。在某些示例中,存储介质1100可以包括任何非瞬态计算机可读介质或机器可读介质,诸如光学存储、磁存储或半导体存储。存储介质1100可以存储各种类型的计算机可执行指令,诸如用于实现逻辑流程1000的指令。计算机可读或机器可读存储介质的示例可包括能够存储电子数据的任何有形的介质,包括易失性存储器或非易失性存储器,可移动或不可移动存储器,可擦除或不可擦存储器,可写入或可重写的存储器等等。计算机可执行指令的示例可包括任何合适类型的代码,如源代码、已编译的代码、已解释的代码、可执行代码、静态代码、动态代码、面向对象的代码、可视代码等等。在此上下文中,示例不受限制。
图12示出了示例NW I/O设备1200。在某些示例中,如图12所示,NWI/O设备1200可以包括处理组件1240、其他平台组件或通信接口1260。根据某些示例,如上文所提及的,NW I/O设备1200可以在耦合到能够耦合到远程客户端或主机设备的服务器的NW I/O设备中实现。
根据某些示例,处理组件1240可以执行设备900和/或存储介质1100的处理操作或逻辑。处理组件1240可包括各硬件元素、软件元素或两者的组合。
在某些示例中,其他平台组件1250可以包括常见的计算元件,诸如一个或多个处理器、多核处理器、协处理器、存储器单元、芯片组、控制器、外围设备、接口、振荡器、定时设备等等。
在某些示例中,通信接口1260可以包括支持通信接口的逻辑和/或特征。对于这些示例,通信接口1260可以包括根据各种通信协议或标准来操作以通过直接或网络通信链路进行通信的一种或多种通信接口。直接通信可以通过使用在一个或多个行业标准(包括后代和变体)(诸如那些与PCIe规范、NVMe规范、RDMA协议规范、IEEE 802-2-2008规范、RFC 791或RFC 793相关联的)中所描述的通信协议或标准来进行。
可利用分立电路、专用集成电路(ASIC)、逻辑门和/或单芯片架构的任意组合来实现NW I/O设备1200的组件和特征。此外,在适当情况下,可利用微控制器、可编程逻辑阵列和/或微处理器或上述的任意组合来实现NW I/O设备1200的特征。注意,在本文中硬件、固件和/或软件元素可合称或单独地称为“逻辑”或“电路”。
应意识到,在图12的框图中示出的示例性NW I/O设备1200可表示很多可能实现的一个功能描述性示例。因此,在附图中描述的框功能的划分、省略或包含不能推定用于实现这些功能的硬件组件、电路、软件和/或元件一定要被划分、省略或包含在各实施例中。
至少一个示例的一个或多个方面可通过存储在至少一个机器可读介质上的表征性指令来实现,所述指令表征处理器中的多种逻辑,当由机器、计算设备或系统读取所述指令时,使机器、计算设备或系统制作逻辑以执行本文描述的技术。被称为“IP核”的这些表征可被存储在有形的、机器可读介质中并被提供给各消费者或制造设施以加载入制造机器,该制造机器实际上制造逻辑或处理器。
各示例可以使用硬件元素、软件元素或两者的组合来实现。在某些示例中,硬件元件可包括器件、组件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等等。在某些示例中,软件元素可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号,或其任何组合。然而,判断一个示例是否使用硬件元素或软件元素来实现可以根据任意数量的因素而不同,如所希望的计算速率、功率级别、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度,及给定实现所需要的其他设计或性能约束。
某些示例可以包括制品或至少一种计算机可读介质。计算机可读介质可以包括用于存储逻辑的非瞬态存储介质。在某些示例中,非瞬态存储介质可包括一种或多种类型的能够存储电子数据的计算机可读存储介质,包括易失性存储器或非易失性存储器,可移动或不可移动存储器,可擦除或不可擦存储器,可写入或可重写的存储器等等。在某些示例中,逻辑可包括各种软件元素,如软件组件、程序、应用程序、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号,或其任何组合。
根据某些示例,计算机可读介质可以包括存储或维护指令的非瞬态存储介质,所述指令,当由机器、计算设备或系统执行时,导致机器、计算设备或系统执行根据所描述的示例的方法和/或操作。指令可包括任何合适类型的代码,如源代码、已编译的代码、已解释的代码、可执行代码、静态代码、动态代码等等。指令可以根据预定义的计算机语言、方式或语法来实现,以便指示机器、计算设备或系统来执行某一功能。指令可以使用任何合适的高级、低级、面向对象、可视、已编译和/或解释性编程语言来实现。
可以使用表达“在一个示例中”或“示例”以及它们的派生词来描述某些示例。这些术语意味着,参考示例所描述的特定功能、结构或特征包括在至少一个示例中。在本说明书中的不同位置出现短语“在一个示例中”不一定都是指同一个示例。
可以使用表达“耦合”和“连接”以及它们的派生词来描述某些示例。这些术语不一定作为彼此的同义词。例如,使用术语“连接”和/或“耦合”的描述可以表示,两个或更多元件彼此处于直接的物理或电接触的状态。然而,术语“耦合”也可以指两个或更多个元件彼此并非直接接触,但是仍然彼此协作或交互。
在某些示例中,网络I/O设备的示例第一设备可以包括电路。示例第一设备也可以包括由电路执行以接收一个或多个参数以使网络I/O设备能通过网络通信链路连接到远程服务器的参数模块。示例第一设备也可以包括由电路执行以使用一个或多个参数连接到远程服务器的连接模块。示例第一设备也可以包括由电路执行以使用RDMA协议来建立到在远程服务器中维护的NVMe控制器的控制路径的路径模块。示例第一设备也可以包括由电路执行以从NVMe控制器接收RDMA STag以访问操作系统(OS)内核和一个或多个设备驱动器的接收模块。
在示例第一设备的某些示例中,RDMA STag可以表示由NVMe控制器控制的存储设备的分配部分,该分配部分可使用RDMA STag访问,以访问OS内核和一个或多个设备驱动器。
根据某些示例,示例第一设备也可以包括由电路执行以将RDMA STag存储在网络I/O设备上的非易失性存储器中的存储模块,非易失性存储器可以被耦合到网络I/O I/O的主机设备的系统BIOS访问,以使系统BIOS能够使用RDMA STag来访问存储设备,并加载OS内核和一个或多个设备驱动器,以远程引导主机设备。
在示例第一设备的某些示例中,示例第一设备的连接模块可以将对通过网络通信链路与远程服务器的连接的控制让与OS内核或一个或多个设备驱动器。此外,存储模块可以导致存储在网络I/O设备上的非易失性存储器中的RDMA STag能够被OS内核或一个或多个设备驱动器访问,以促进由OS内核或一个或多个设备驱动器通过使用RDMA STag来对存储设备的访问。
根据示例第一设备的某些示例,存储设备中可使用RDMA STag访问的分配部分可共同地被通过相应的单独的网络通信链路连接到远程服务器的一个或多个其他主机设备访问。
在某些示例中,存储设备中可以使用RDMA STag访问的分配部分可以包括第一部分和第二部分。对于这些示例,第一部分可以是只读的,并可共同地被通过相应的单独的网络通信链路连接到远程服务器的一个或多个其他主机设备访问。第二部分可以是可读/写的,并只能可以被主机设备访问。根据某些示例,第二部分可以包括指派给主机设备并被用于加载OS内核或一个或多个设备驱动器以供主机设备上的电路执行的信息。
根据示例第一设备的某些示例,指派给主机设备的信息可以包括将主机设备配置为数据库服务器、文件服务器、邮件服务器、打印服务器、web服务器、应用程序服务器、游戏服务器或虚拟服务器中的一种或多种的信息。
在某些示例中,示例第一设备也可以包括由电路执行以发现由NVMe控制器控制的存储设备的一个或多个特性的特性模块。示例第一设备也可以包括由电路执行以向系统BIOS注册存储设备和一个或多个特性的注册模块。
根据示例第一设备的某些示例,存储设备的一个或多个特性可以是所标识的对存储设备的访问权限。对于这些示例,所标识的访问权限可以包括只读访问权限或读/写访问权限。
在某些示例中,示例第一设备可以能够支持BIOS增强的盘驱动器(EDD)服务,用以向OS内核或一个或多个设备驱动器提供用于访问存储在非易失性存储器中的RDMA STag的信息的至少一种。对于这些示例,可以使用一个或多个参数来连接到远程服务器或存储设备的一个或多个发现的特性。
根据示例第一设备的某些示例,系统BIOS可以使用BIOS中断调用13hex(INT13h)服务来加载OS内核和一个或多个设备驱动器。
在示例第一设备的某些示例中,网络I/O设备上的非易失性存储器包括3维交叉点存储器、闪存、铁电存储器、SONOS存储器、聚合物存储器、纳米线、FeTRAM、FeRAM、纳米线或EEPROM中的至少一种。
根据示例第一设备的某些示例,参数模块可以从网络I/O设备中维护的非易失性存储器接收一个或多个参数。对于这些示例,一个或多个参数包括远程服务器的IP地址、向远程服务器认证耦合到网络I/O设备的主机设备的认证信息、主机设备的标识符或包括LAN标识符或VLAN标识符的网络通信链路的网络标识信息。
在示例第一设备的某些示例中,参数模块可以从在网络I/O设备处维护的非易失性存储器接收一个或多个参数的第一部分,并从远程服务器接收一个或多个参数的第二部分。对于这些示例,第一部分可以包括耦合到网络I/O设备的主机设备的标识符或向远程服务器认证主机设备的认证信息。第二部分可以包括远程服务器的IP地址,或包括LAN标识符或VLAN标识符的网络通信链路的网络标识信息。
根据示例第一设备的某些示例,RDMA协议可以包括iWARP、Infiniband或RoCE中的一个。
在某些示例中,在网络I/O设备中实现的示例第一方法可以包括接收一个或多个参数以使网络I/O设备能通过网络通信链路连接到远程服务器。示例第一方法也可以包括使用一个或多个参数连接到远程服务器,以及使用RDMA协议建立到在远程服务器中维护的NVMe控制器的控制路径。示例第一方法也可以包括从NVMe控制器接收RDMA STag以访问OS内核和一个或多个设备驱动器,以及将RDMA STag存储在网络I/O设备上的非易失性存储器中,所述非易失性存储器可以被耦合到网络I/O设备的主机设备的系统基本输入/输出系统(BIOS)访问。存储RDMA Stag可以使系统BIOS能使用RDMA STag来访问存储设备,并加载OS内核和一个或多个设备驱动器以远程引导主机设备。
根据示例第一方法的某些示例,RDMA STag可以表示存储设备的分配部分,所述分配部分可使用RDMA Stag来访问,以访问OS内核和一个或多个驱动器。
在示例第一方法的某些示例中,存储设备中可使用RDMA STag访问的分配部分可共同地被通过相应的单独的网络通信链路连接到远程服务器的一个或多个其他主机设备访问。
根据示例第一方法的某些示例,存储设备中可以使用RDMA STag访问的分配部分可以包括第一部分和第二部分。对于这些示例,第一部分可以是只读的,并可共同地被通过相应的单独的网络通信链路连接到远程服务器的一个或多个其他主机设备访问。第二部分可以是可读/写的,并只能可以被主机设备访问。
在示例第一方法的某些示例中,第二部分可以包括指派给主机设备并被用于加载OS内核或一个或多个设备驱动器以供主机设备上的电路执行的信息。
根据示例第一方法的某些示例,指派给主机设备的信息可以包括用于将主机设备配置为数据库服务器、文件服务器、邮件服务器、打印服务器、web服务器、应用程序服务器、游戏服务器或虚拟服务器中的一种或多种的信息。
在某些示例中,示例第一方法也可以包括将对通过网络通信链路与远程服务器的连接的控制让与OS内核或一个或多个设备驱动器。对于这些示例,存储在网络I/O设备上的非易失性存储器中的RDMA STag也可以能够被OS内核或一个或多个设备驱动器访问,以促进由OS内核或一个或多个设备驱动器通过使用RDMA STag来对存储设备的访问。
根据某些示例,示例第一方法也可以包括从网络I/O设备中维护的非易失性存储器接收一个或多个参数。对于这些示例,一个或多个参数可以包括远程服务器的IP地址、向远程服务器认证主机设备的认证信息、主机设备的标识符或包括LAN标识符或VLAN标识符的网络通信链路的网络标识信息。
在某些示例中,示例第一方法也可以包括从网络I/O设备中维护的非易失性存储器接收一个或多个参数的第一部分,以及从远程服务器接收一个或多个参数的第二部分。对于这些示例,第一部分可以包括主机设备的标识符或用于向远程服务器认证主机设备的认证信息。第二部分可以包括远程服务器的IP地址,或包括LAN标识符或VLAN标识符的网络通信链路的网络标识信息。
根据示例第一方法的某些示例,RDMA协议可以包括iWARP、Infiniband或RoCE中的一个。
在某些示例中,示例第一方法也可以包括发现由NVMe控制器控制的存储设备的一个或多个特性,以及向系统BIOS注册存储设备和一个或多个特性。
根据示例第一方法的某些示例,发现存储设备的一个或多个特性可以包括标识对存储设备的访问权限。对于这些示例,所标识的访问权限可以包括只读访问权限或读/写访问权限。
在某些示例中,示例第一方法也可以包括支持BIOS EDD服务,以向OS内核或一个或多个设备驱动器提供访问存储在非易失性存储器中的RDMASTag的信息,用于连接到远程服务器的一个或多个参数,或存储设备的一个或多个发现的特性中的至少一个。
根据示例第一方法的某些示例,系统BIOS可以使用BIOS中断调用13hex(INT 13h)服务来加载OS内核和一个或多个方法驱动器。
在某些示例中,包括多个指令的第一至少一种机器可读的介质,所述指令,响应于在耦合到主机设备的网络I/O设备上执行,导致网络I/O设备接收使网络I/O设备通过网络通信链路连接到远程服务器的一个或多个参数。指令也可以导致网络I/O设备使用一个或多个参数连接到远程服务器,以及使用RDMA协议建立到在远程服务器中维护的NVMe控制器的控制路径。指令也可以导致网络I/O设备发现由NVMe控制器控制的存储设备的一个或多个特性。指令也可以导致网络I/O设备向主机设备的系统BIOS注册存储设备和一个或多个特性。指令也可以导致网络I/O设备从NVMe控制器接收RDMA STag,该RDMASTag表示存储设备中可以使用RDMA STag来访问的分配部分。分配部分可以存储OS内核和一个或多个设备驱动器。指令也可以导致网络I/O设备将RDMASTag存储在网络I/O设备上的非易失性存储器中,非易失性存储器可以被主机设备的系统BIOS访问,以使系统BIOS能够使用RDMA STag来访问存储设备,并加载OS内核和一个或多个设备驱动器,以远程引导主机设备。
根据第一至少一种机器可读的介质的某些示例,指令也可以导致网络I/O设备将对通过网络通信链路与远程服务器的连接的控制让与OS内核或一个或多个设备驱动器。对于这些示例,存储在网络I/O设备上的非易失性存储器中的RDMA STag也可以能够被OS内核或一个或多个设备驱动器访问,以促进由OS内核或一个或多个设备驱动器通过使用RDMA STag来对存储设备的访问。
在第一至少一种机器可读介质的某些示例中,可以从在网络I/O设备中维护的非易失性存储器接收一个或多个参数。对于这些示例,一个或多个参数可以包括远程服务器的IP地址、向远程服务器认证主机设备的认证信息、主机设备的标识符或包括LAN标识符或VLAN标识符的网络通信链路的网络标识信息。
根据第一至少一种机器可读介质的某些示例,可以从网络I/O设备中维护的非易失性存储器接收一个或多个参数的第一部分,以及可以从远程服务器接收一个或多个参数的第二部分。第一部分可以包括主机设备的标识符或用于向远程服务器认证主机设备的认证信息。第二部分包括远程服务器的IP地址或包括LAN标识符或VLAN标识符的网络通信链路的网络标识信息。
在第一至少一种机器可读的介质的某些示例中,RDMA协议可以包括iWARP、Infiniband或RoCE中的一个。
根据第一至少一种机器可读介质的某些示例,存储设备的发现的一个或多个特性可以包括标识对存储设备的访问权限,所标识的访问权限包括只读访问权限或读/写访问权限。
在第一至少一种机器可读介质的某些示例中,系统BIOS可以使用BIOS中断调用13hex(INT13h)服务来加载OS内核和一个或多个设备驱动器。
根据第一至少一种机器可读介质的某些示例,指令还导致网络I/O设备支持BIOS EDD服务,以给OS内核或一个或多个设备驱动器提供用于访问存储在非易失性存储器中的RDMA STag的信息的至少一种。对于这些示例,可以使用一个或多个参数来连接到远程服务器或存储设备的一个或多个发现的特性。
在第一至少一种机器可读介质的某些示例中,存储设备中可使用RDMASTag访问的分配部分可共同地被通过相应的单独的网络通信链路连接到远程服务器的一个或多个其他主机设备访问。
根据第一至少一种机器可读介质的某些示例,存储设备中可使用RDMASTag访问的分配部分可以包括第一部分和第一部分。第一部分可以是只读的,并可共同地被通过相应的单独的网络通信链路连接到远程服务器的一个或多个其他主机设备访问。第二部分可以是可读/写的,并只能可以被主机设备访问。
在第一至少一种机器可读介质的某些示例中,第一部分可以包括指派给主机设备并被用于加载OS内核或一个或多个设备驱动器以供主机设备上的电路执行的信息。
根据第一至少一种机器可读介质的某些示例,指派给主机设备的信息可以包括用于将主机设备配置为数据库服务器、文件服务器、邮件服务器、打印服务器、web服务器、应用程序服务器、游戏服务器或虚拟服务器中的一种或多种的信息。
在某些示例中,网络I/O设备的示例第二设备可以包括电路。示例第二设备也可以包括由电路执行以接收与通过网络通信链路连接到远程客户端相关联的一个或多个参数的参数模块。示例第二设备也可以包括由电路执行以使用一个或多个参数通过网络通信链路连接到远程服务器的连接模块。示例第二设备也可以包括由电路执行以在远程客户端和在耦合到网络I/O设备的服务器中维护的NVMe控制器之间建立控制路径的路径模块,控制路径是使用RDMA协议建立的。示例第二设备也可以包括由电路执行以将由NVMe控制器控制的存储设备的一个或多个特性转发到远程客户端并转发由NVMe控制器所生成的RDMA服务标记(STag)的转发模块,RDMA服务标记(STag)表示存储设备中可使用RDMA STag访问的分配部分。分配部分可以包括OS内核和一个或多个设备驱动器。示例第二设备也可以包括接收模块,接收模块由电路执行以从远程客户端接收RDMA STag,并将RDMA STag转发到NVMe控制器,以使远程客户端能够访问存储设备并加载OS内核和一个或多个设备驱动器以远程引导远程客户端。
在示例第二设备的某些示例中,一个或多个参数可以包括远程客户端的标识符、用于向服务器认证远程客户端的认证信息或包括LAN标识符或VLAN标识符的网络通信链路的网络标识信息。
根据示例第二设备的某些示例,参数特征可以从远程客户端接收一个或多个参数的第一部分并从在网络I/O设备中维护的非易失性存储器接收一个或多个参数的第二部分。第一部分可以包括远程客户端的标识符或用于向服务器认证远程客户端的认证信息。第二部分可以包括服务器的IP地址,或包括LAN标识符或VLAN标识符的网络通信链路的网络标识信息。
在示例第二设备的某些示例中,存储设备的一个或多个特性可以包括授予远程客户端访问存储设备的访问权限,所授予的访问权限包括只读访问权限或读/写访问权限。
根据示例第二设备的某些示例,RDMA协议可以包括iWARP、Infiniband或RoCE中的一个。
在示例第二设备的某些示例中,存储设备中可使用RDMA STag访问的分配部分可共同地被通过相应的单独的网络通信链路连接到远程服务器的一个或多个其他远程客户端访问。
根据示例第二设备的某些示例,存储设备中可以使用RDMA STag访问的分配部分可以包括第一部分和第二部分。第一部分可以是只读的,并可共同地被通过相应的单独的网络通信链路连接到服务器的一个或多个其他远程客户端访问。第二部分可以是可读/写的,并只能可以被远程客户端访问。
在示例第二设备的某些示例中,第二部分可以包括指派给远程客户端并被用于加载OS内核或一个或多个设备驱动器以供远程客户端上的电路执行的信息。
在示例第二设备的某些示例中,指派给远程客户端的信息可以包括用于将远程客户端配置为数据库服务器、文件服务器、邮件服务器、打印服务器、web服务器、应用程序服务器、游戏服务器或虚拟服务器中的一种或多种的信息。
根据示例第二设备的某些示例,存储设备可以包括固态驱动器(SSD),固态驱动器(SSD)具有非易失性存储器,所述非易失性存储器包括3维交叉点存储器、闪存、铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、聚合物存储器、纳米线、铁电晶体管随机存取存储器(FeTRAM或FeRAM)、纳米线或电可擦可编程只读存储器(EEPROM)中的至少一种。
在某些示例中,在网络I/O设备中实现的示例第二方法可以包括接收与通过网络通信链路连接到远程客户端相关联的一个或多个参数。示例第二方法也可以包括通过网络通信链路,使用一个或多个参数,连接到远程客户端,并在远程客户端和在耦合到网络I/O设备的服务器中维护的NVMe控制器之间建立控制路径。可以使用RDMA协议来建立控制路径。示例第二方法也可以包括将由NVMe控制器控制的存储设备的一个或多个特性转发到远程客户端,以及发送由NVMe控制器所生成的RDMA STag,所述RDMA STag表示存储设备中可使用RDMA STag访问的分配部分。分配部分可以包括OS内核和一个或多个设备驱动器。示例第二方法也可以包括从远程客户端接收RDMA STag,并将RDMA STag转发到NVMe控制器,以使远程客户端能够访问存储设备并加载OS内核和一个或多个设备驱动器以远程引导远程客户端。
根据示例第二方法的某些示例,一个或多个参数可以包括远程客户端的标识符、用于向服务器认证远程客户端的认证信息或包括LAN标识符或VLAN标识符的网络通信链路的网络标识信息。
在某些示例中,示例第二方法也可以包括从远程客户端接收一个或多个参数的第一部分,以及从在服务器中维护的存储器接收一个或多个参数的第二部分。第一部分可以包括远程客户端的标识符或用于向服务器认证远程客户端的认证信息,第二部分包括服务器的IP地址或包括LAN标识符或VLAN标识符的网络通信链路的网络标识信息。
根据示例第二方法的某些示例,存储设备的一个或多个特性可以包括授予远程客户端访问存储设备的访问权限,所授予的访问权限包括只读访问权限或读/写访问权限。
在示例第二方法的某些示例中,RDMA协议可以包括iWARP、infinband或RoCE中的一个。
在示例第二方法的某些示例中,存储设备中可使用RDMA STag访问的分配部分可共同地被通过相应的单独的网络通信链路连接到远程服务器的一个或多个其他远程客户端访问。
根据示例第二方法的某些示例,存储设备中可以使用RDMA STag可访问的分配部分可以包括第一部分和第二部分。对于这些示例,第一部分可以是只读的,并可共同地被通过相应的单独的网络通信链路连接到服务器的一个或多个其他远程客户端访问。第二部分可以是可读/写的,并只能可以被远程客户端访问。
在示例第二方法的某些示例中,第二部分可以包括指派给远程客户端并被用于加载OS内核或一个或多个设备驱动器以供远程客户端上的电路执行的信息。
根据示例第二方法的某些示例,指派给远程客户端的信息可以包括用于将远程客户端配置为数据库服务器、文件服务器、邮件服务器、打印服务器、web服务器、应用程序服务器、游戏服务器或虚拟服务器中的一种或多种的信息。
在示例第二方法的某些示例中,存储设备可以包括具有非易失性存储器的SSD,所述非易失性存储器包括3维交叉点存储器、闪存、SONOS存储器、聚合物存储器、纳米线、FeTRAM、FeRAM、纳米线或EEPROM中的至少一种。
在某些示例中,包括多个指令的第二至少一种机器可读介质,所述指令,响应于在耦合到服务器的网络I/O设备上执行,导致网络I/O设备接收与通过网络通信链路连接到远程客户端相关联的一个或多个参数。指令还导致网络I/O通过网络通信链路使用一个或多个参数连接到远程客户端。指令还导致网络I/O在远程客户端和在服务器中维护的NVMe控制器之间建立控制路径,控制路径是使用RDMA协议建立的。指令还导致网络I/O将由NVMe控制器控制的存储设备的一个或多个特性转发到远程客户端,以及发送由NVMe控制器所生成的RDMA STag,该RDMA STag表示存储设备中使用RDMA STag可被访问的分配部分。分配部分可以包括OS内核和一个或多个设备驱动器。指令还导致网络I/O从远程客户端接收RDMA STag,并将RDMA STag转发到NVMe控制器,以使远程客户端能够访问存储设备并加载OS内核和一个或多个设备驱动器以远程引导远程客户端。
根据第二至少一种机器可读介质的某些示例,RDMA协议可以包括iWARP、Infiniband或RoCE中的一个。
在第二至少一种机器可读的介质的某些示例中,存储设备中可使用RDMA STag可以访问的分配部分可共同地被通过相应的单独的网络通信链路连接到远程服务器的一个或多个其他远程客户端访问。
根据第二至少一种机器可读的介质的某些示例,存储设备中可以使用RDMA STag可访问的分配部分包括第一部分和第二部分。第一部分可以是只读的,并可共同地被通过相应的单独的网络通信链路连接到服务器的一个或多个其他远程客户端访问。第二部分可以是可读/写的,并只能可以被远程客户端访问。
在第二至少一种机器可读的介质的某些示例中,第二部分可以包括指派给远程客户端并被用于加载OS内核或一个或多个设备驱动器以供远程客户端上的电路执行的信息。
根据第二至少一种机器可读介质的某些示例,指派给远程客户端的信息可以包括用于将远程客户端配置为数据库服务器、文件服务器、邮件服务器、打印服务器、web服务器、应用程序服务器、游戏服务器或虚拟服务器中的一种或多种的信息。
要强调的是,提供可公开内容的摘要以符合37C.F.R.第1.72(b)段,要求将可使读者快速地弄清本技术公开的特征的摘要。该摘要是以不用于解释或限制权利要求的范围或含义的理解而提交的。此外,在前面的“具体实施方式”中,可以看出,各种特征可以组合在一个示例中,以便简化说明。本发明的此方法不应被解释为反映如下意图:所请求保护的各示例需要比每一个权利要求中所明确地描述的特征更多的特征。相反,如所附的权利要求所反映的,本发明的主题体现于少于所公开的单一示例的所有特征。如此,下面的权利要求被包括到“详细描述”中,每一个权利要求本身也作为单独的示例。在所附权利要求中,术语″包括″和″其中″分别被用作相应术语“包括”和“其中”的平文英语等同物。此外,术语“第一”、“第二”、“第三”等等只用作标记,并不旨在对它们的对象施加数值要求。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作被公开为实现所附权利要求的示例形式。

Claims (25)

1.一种用于网络输入/输出(I/O)设备的装置,包括:
电路;
参数模块,所述参数模块用于由所述电路执行以接收一个或多个参数以使所述网络I/O设备能够经由网络通信链路连接到远程服务器;
连接模块,所述连接模块用于由所述电路执行以使用所述一个或多个参数连接到所述远程服务器;
路径模块,所述路径模块用于由所述电路执行以使用远程直接存储器访问(RDMA)协议,建立到在所述远程服务器中维护的非易失性存储器快速(NVMe)控制器的控制路径;以及
接收模块,所述接收模块用于由所述电路执行以从所述NVMe控制器接收RDMA服务标记(STag)以访问操作系统(OS)内核和一个或多个设备驱动器。
2.如权利要求1所述的装置,其特征在于,还包括:
用于表示由所述NVMe控制器控制的存储设备中的分配部分的所述RDMA STag,所述分配部分可使用所述RDMA STag访问,以访问所述OS内核和所述一个或多个设备驱动器;以及
存储模块,所述存储模块用于由所述电路执行以将所述RDMA STag存储在所述网络I/O设备处的非易失性存储器中,所述非易失性存储器可以被耦合到所述网络I/O设备的主机设备的系统基本输入/输出系统(BIOS)访问,以使所述系统BIOS能够使用所述RDMA STag来访问所述存储设备,并加载所述OS内核和所述一个或多个设备驱动器,以远程引导所述主机设备。
3.如权利要求2所述的装置,其特征在于,还包括:
所述连接模块将对经由所述网络通信链路与所述远程服务器的所述连接的控制让与所述OS内核或所述一个或多个设备驱动器;以及
所述存储模块导致存储在所述网络I/O设备处的所述非易失性存储器中的所述RDMA STag能够被所述OS内核或所述一个或多个设备驱动器访问,以促进由所述OS内核或所述一个或多个设备驱动器经由使用所述RDMA STag对所述存储设备的访问。
4.如权利要求2所述的装置,其特征在于,还包括:
特性模块,所述特性模块由所述电路执行以发现由所述NVMe控制器控制的所述存储设备的一个或多个特性,所述一个或多个特性包括对所述存储设备的所标识访问权限中的至少一个,所述所标识访问权限包括只读访问权限或读/写访问权限;以及
注册模块,所述注册模块用于由所述电路执行以向所述系统BIOS注册所述存储设备以及所述一个或多个特性。
5.如权利要求2所述的设备,其特征在于,所述网络I/O设备处的所述非易失性存储器包括3维交叉点存储器、闪存、铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、聚合物存储器、纳米线、铁电晶体管随机存取存储器(FeTRAM或FeRAM)、纳米线或电可擦可编程只读存储器(EEPROM)中的至少一种。
6.如权利要求1所述的设备,其特征在于,包括所述RDMA协议,所述RDMA协议包括因特网广域RDMA协议(iWARP)、Infiniband或汇聚以太网上RDMA(RoCE)中的一种。
7.一种在网络I/O设备处实现的方法,包括:
接收使所述网络I/O设备能够经由网络通信链路连接到远程服务器的一个或多个参数;
使用所述一个或多个参数连接到所述远程服务器;
使用远程直接存储器访问(RDMA)协议,建立到在所述远程服务器中维护的非易失性存储器快速(NVMe)控制器的控制路径;以及
从所述NVMe控制器接收RDMA服务标记(STag)以访问操作系统(OS)内核和一个或多个设备驱动器;以及
将所述RDMA STag存储在所述网络I/O设备处的非易失性存储器中,所述非易失性存储器可以被耦合到所述网络I/O设备的主机设备的系统基本输入/输出系统(BIOS)访问,以使所述系统BIOS能够使用所述RDMA STag来访问所述存储设备,并加载所述OS内核和所述一个或多个设备驱动器,以远程引导所述主机设备。
8.如权利要求7所述的方法,其特征在于,包括所述RDMA STag,所述RDMA STag表示所述存储设备中的分配部分,所述分配部分可使用所述RDMA STag访问,以访问所述OS内核和所述一个或多个驱动器。
9.如权利要求8所述的方法,其特征在于,包括所述存储设备中可使用所述RDMA STag访问的所述分配部分可共同地被经由相应的单独网络通信链路连接到所述远程服务器的一个或多个其他主机设备访问。
10.如权利要求8所述的方法,其特征在于,所述存储设备中可使用所述RDMA STag访问的所述分配部分包括第一部分和第二部分,所述第一部分是只读的,并可共同地被经由相应的单独网络通信链路连接到所述远程服务器的一个或多个其他主机设备访问,所述第二部分是可读/写访问的并只能被所述主机设备访问。
11.如权利要求10所述的方法,其特征在于,包括所述第二部分,所述第二部分包括指派给所述主机设备并被用于加载所述OS内核或所述一个或多个设备驱动器以供所述主机设备处的所述电路执行的信息。
12.如权利要求11所述的方法,其特征在于,包括指派给所述主机设备的所述信息,其包括用于将所述主机设备配置为数据库服务器、文件服务器、邮件服务器、打印服务器、web服务器、应用程序服务器、游戏服务器或虚拟服务器中的一种或多种的信息。
13.如权利要求7所述的方法,其特征在于,包括从在所述网络I/O设备中维护的非易失性存储器接收所述一个或多个参数,所述一个或多个参数包括所述远程服务器的网际协议(IP)地址、用于向所述远程服务器认证所述主机设备的认证信息、所述主机设备的标识符或包括局部访问网(LAN)标识符或虚拟LAN(VLAN)标识符的所述网络通信链路的网络标识信息。
14.如权利要求7所述的方法,其特征在于,包括从在所述网络I/O设备中维护的非易失性存储器接收所述一个或多个参数的第一部分,以及从所述远程服务器接收所述一个或多个参数的第二部分,所述第一部分包括所述主机设备的标识符或用于向所述远程服务器认证所述主机设备的认证信息,所述第二部分包括所述远程服务器的网际协议(IP)地址或包括局部访问网(LAN)标识符或虚拟LAN(VLAN)标识符的所述网络通信链路的网络标识信息。
15.如权利要求7所述的方法,其特征在于,包括:
发现由所述NVMe控制器控制的所述存储设备的一个或多个特性;以及
向所述系统BIOS注册所述存储设备以及所述一个或多个特性。
16.如权利要求15所述的方法,其特征在于,发现所述存储设备的所述一个或多个特性包括标识对所述存储设备的访问权限,所述所标识的访问权限包括只读访问权限或读/写访问权限。
17.如权利要求16所述的方法,其特征在于,包括:
支持BIOS增强的盘驱动器(EDD)服务,以向所述OS内核或所述一个或多个设备驱动器提供以下各项中的至少一个:用于访问存储在所述非易失性存储器中的所述RDMA STag的信息、被用来连接到所述远程服务器的所述一个或多个参数、或所述存储设备的所述一个或多个发现的特性。
18.包括多个指令的至少一个机器可读介质,响应于在计算设备上执行,所述指令使得所述设备执行如权利要求7-17中的任一项所述的方法。
19.一种包括用于执行权利要求7-17中的任一项所述的方法的装置的设备。
20.一种用于网络输入/输出(I/O)设备的装置,包括:
电路;
参数模块,所述参数模块用于由所述电路执行以接收与经由网络通信链路连接到远程客户端相关联的一个或多个参数;
连接模块,所述连接模块用于由所述电路执行以使用所述一个或多个参数经由所述网络通信链路连接到所述远程客户端;
路径模块,所述路径模块用于由所述电路执行以在所述远程客户端和在耦合到所述网络I/O设备的服务器中维护的非易失性存储器快速(NVMe)控制器之间建立控制路径,所述控制路径是使用远程直接存储器访问(RDMA)协议建立的;
转发模块,所述转发模块由所述电路执行以将由所述NVMe控制器控制的存储设备的一个或多个特性转发到所述远程客户端,并转发由所述NVMe控制器所生成的RDMA服务标记(STag),所述RDMA服务标记(STag)表示所述存储设备中可使用所述RDMA STag访问的分配部分,所述分配部分包括操作系统(OS)内核和一个或多个设备驱动器;以及
接收模块,所述接收模块由所述电路执行以从所述远程客户端接收所述RDMA STag,并将所述RDMA STag转发到所述NVMe控制器,以使所述远程客户端能够访问所述存储设备并加载所述OS内核和所述一个或多个设备驱动器以远程引导所述远程客户端。
21.如权利要求20所述的设备,其特征在于,所述一个或多个参数包括所述远程客户端的标识符、用于向所述服务器认证所述远程客户端的认证信息,或包括局部访问网(LAN)标识符或虚拟LAN(VLAN)标识符的所述网络通信链路的网络标识信息。
22.如权利要求20所述的设备,其特征在于,所述存储设备包括固态驱动器(SSD),所述固态驱动器(SSD)具有非易失性存储器,所述非易失性存储器包括3维交叉点存储器、闪存、铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、聚合物存储器、纳米线、铁电晶体管随机存取存储器(FeTRAM或FeRAM)、纳米线或电可擦可编程只读存储器(EEPROM)中的至少一种。
23.一种用于耦合到服务器的网络输入/输出(I/O)设备的装备,包括:
用于接收与经由网络通信链路连接到远程客户端相关联的一个或多个参数的装置;
用于使用所述一个或多个参数经由所述网络通信链路连接到所述远程客户端的装置;
用于在所述远程客户端和在所述服务器中维护的非易失性存储器快速(NVMe)控制器之间建立控制路径的装置,所述控制路径是使用远程直接存储器访问(RDMA)协议建立的;
用于将由所述NVMe控制器控制的存储设备的一个或多个特性转发到所述远程客户端并发送由所述NVMe控制器所生成的RDMA服务标记(STag)的装置,所述RDMA服务标记(STag)表示所述存储设备中可使用所述RDMASTag访问的分配部分,所述分配部分包括操作系统(OS)内核和一个或多个设备驱动器;以及
用于从所述远程客户端接收所述RDMA STag,并将所述RDMA STag转发到所述NVMe控制器,以使所述远程客户端能够访问所述存储设备并加载所述OS内核和所述一个或多个设备驱动器以远程引导所述远程客户端的装置。
24.如权利要求23所述的装备,其特征在于,包括所述RDMA协议,所述RDMA协议包括因特网广域RDMA协议(iWARP)、Infiniband或汇聚以太网上RDMA(RoCE)中的一种。
25.如权利要求23所述的装备,其特征在于,包括所述存储设备中可使用所述RDMA STag访问的所述分配部分可共同地被经由相应的单独网络通信链路连接到所述远程服务器的一个或多个其他远程客户端访问。
CN201410321181.8A 2013-07-08 2014-07-07 用于从远程可访问存储设备进行初始化的技术 Active CN104683430B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/936,964 US9311110B2 (en) 2013-07-08 2013-07-08 Techniques to initialize from a remotely accessible storage device
US13/936,964 2013-07-08

Publications (2)

Publication Number Publication Date
CN104683430A true CN104683430A (zh) 2015-06-03
CN104683430B CN104683430B (zh) 2018-06-08

Family

ID=52106461

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410321181.8A Active CN104683430B (zh) 2013-07-08 2014-07-07 用于从远程可访问存储设备进行初始化的技术

Country Status (3)

Country Link
US (1) US9311110B2 (zh)
CN (1) CN104683430B (zh)
DE (1) DE102014109518A1 (zh)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106126200A (zh) * 2016-06-13 2016-11-16 房玮 一种能够远程引导客户端计算机的云计算系统
CN107957695A (zh) * 2016-10-18 2018-04-24 普林斯卡思特有限公司 具有可调系统行为的模块化保持容器
WO2018113030A1 (en) * 2016-12-23 2018-06-28 Intel Corporation Technology to implement bifurcated non-volatile memory express driver
CN108733601A (zh) * 2017-04-25 2018-11-02 三星电子株式会社 NVMe-oF以太网SSD中的低延迟直接访问块存储
CN108768669A (zh) * 2018-08-14 2018-11-06 杭州创谐信息技术股份有限公司 基于asic可信远程内存交换卡及其数据交换方法
CN108885597A (zh) * 2016-04-04 2018-11-23 马维尔国际贸易有限公司 用于使用直接目标访问经由通过结构的非易失性存储器桥接访问主机存储器的方法和系统
CN109416712A (zh) * 2016-09-20 2019-03-01 惠普发展公司,有限责任合伙企业 远程临场机器人的访问权限
CN109416675A (zh) * 2016-07-22 2019-03-01 英特尔公司 自动化数据中心维护
CN109690510A (zh) * 2016-09-08 2019-04-26 微软技术许可有限责任公司 用于将数据分发到高性能计算网络和基于云的网络中的多个接收器的多播装置和方法
CN110235098A (zh) * 2017-12-26 2019-09-13 华为技术有限公司 存储系统访问方法及装置
CN110247860A (zh) * 2018-03-09 2019-09-17 三星电子株式会社 多模式和/或多速度NVMe-oF装置
CN110313163A (zh) * 2017-02-21 2019-10-08 微软技术许可有限责任公司 分布式计算系统中的负载平衡
CN110908715A (zh) * 2018-09-18 2020-03-24 三星电子株式会社 多装置的配对系统及配对方法
CN111149341A (zh) * 2017-08-03 2020-05-12 铠侠股份有限公司 网状架构上的高速nvm
CN112347012A (zh) * 2016-06-20 2021-02-09 北京忆芯科技有限公司 支持SR-IOV的NVMe控制器及方法
CN112422394A (zh) * 2016-12-28 2021-02-26 华为技术有限公司 NVMe over Fabric中转发报文的方法、设备和系统
CN112534412A (zh) * 2018-08-06 2021-03-19 甲骨文国际公司 单侧可靠的远程直接存储器操作
CN112615917A (zh) * 2017-12-26 2021-04-06 华为技术有限公司 存储系统中存储设备的管理方法及存储系统
CN114731327A (zh) * 2019-11-25 2022-07-08 思科技术公司 为远程用户动态生成移动软件定义广域网网关位置的系统和方法
US11860672B2 (en) 2018-03-02 2024-01-02 Samsung Electronics Co., Ltd. Method for supporting erasure code data protection with embedded PCIE switch inside FPGA+SSD

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9785355B2 (en) 2013-06-26 2017-10-10 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over ethernet-type networks
US10063638B2 (en) 2013-06-26 2018-08-28 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over ethernet-type networks
US9785356B2 (en) 2013-06-26 2017-10-10 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over ethernet-type networks
US9430412B2 (en) 2013-06-26 2016-08-30 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over Ethernet-type networks
US10223326B2 (en) * 2013-07-31 2019-03-05 Oracle International Corporation Direct access persistent memory shared storage
US9841927B2 (en) * 2013-09-23 2017-12-12 Red Hat Israel, Ltd Remote direct memory access with copy-on-write support
US9696942B2 (en) 2014-03-17 2017-07-04 Mellanox Technologies, Ltd. Accessing remote storage devices using a local bus protocol
US9727503B2 (en) * 2014-03-17 2017-08-08 Mellanox Technologies, Ltd. Storage system and server
US10691440B2 (en) * 2014-06-06 2020-06-23 Hewlett Packard Enterprise Development Lp Action execution based on management controller action request
US9760314B2 (en) * 2015-05-29 2017-09-12 Netapp, Inc. Methods for sharing NVM SSD across a cluster group and devices thereof
US10509764B1 (en) * 2015-06-19 2019-12-17 Amazon Technologies, Inc. Flexible remote direct memory access
KR102430187B1 (ko) * 2015-07-08 2022-08-05 삼성전자주식회사 RDMA NVMe 디바이스의 구현 방법
US9892071B2 (en) * 2015-08-03 2018-02-13 Pure Storage, Inc. Emulating a remote direct memory access (‘RDMA’) link between controllers in a storage array
WO2017040706A1 (en) * 2015-09-02 2017-03-09 Cnex Labs, Inc. Nvm express controller for remote access of memory and i/o over ethernet-type networks
US10114792B2 (en) * 2015-09-14 2018-10-30 Cisco Technology, Inc Low latency remote direct memory access for microservers
US10877922B2 (en) 2016-01-29 2020-12-29 Hewlett Packard Enterprise Development Lp Flushes based on intent log entry states
US10877674B2 (en) 2016-01-29 2020-12-29 Hewlett Packard Enterprise Development Lp Determining layout templates identifying storage drives
EP3286631A4 (en) 2016-01-29 2018-05-30 Hewlett-Packard Enterprise Development LP Remote direct memory access
US10728331B2 (en) * 2016-06-22 2020-07-28 Excelero Storage Ltd. Techniques for dynamic cache use by an input/output device
US10735513B2 (en) 2016-09-08 2020-08-04 Toshiba Memory Corporation Remote NVMe activation
US10509759B2 (en) 2017-03-31 2019-12-17 Intel Corporation Multiple storage devices implemented using a common connector
US10803039B2 (en) 2017-05-26 2020-10-13 Oracle International Corporation Method for efficient primary key based queries using atomic RDMA reads on cache friendly in-memory hash index
US10719446B2 (en) 2017-08-31 2020-07-21 Oracle International Corporation Directly mapped buffer cache on non-volatile memory
US10732836B2 (en) 2017-09-29 2020-08-04 Oracle International Corporation Remote one-sided persistent writes
US10956335B2 (en) 2017-09-29 2021-03-23 Oracle International Corporation Non-volatile cache access using RDMA
US20190102287A1 (en) * 2017-09-29 2019-04-04 Intel Corporation Remote persistent memory access device
US10802766B2 (en) 2017-09-29 2020-10-13 Oracle International Corporation Database with NVDIMM as persistent storage
US11086876B2 (en) 2017-09-29 2021-08-10 Oracle International Corporation Storing derived summaries on persistent memory of a storage device
US10949110B2 (en) 2018-06-29 2021-03-16 Seagate Technology Llc Configurable mapping system in a non-volatile memory
EP3796149B1 (en) 2018-07-17 2024-02-21 Huawei Technologies Co., Ltd. Method and device for processing i/o request
US11934333B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Storage protocol emulation in a peripheral device
US11934658B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Enhanced storage protocol emulation in a peripheral device
US11334419B1 (en) * 2021-04-29 2022-05-17 Dell Products L.P. Information handling system fault analysis with remote remediation file system
US11726666B2 (en) 2021-07-11 2023-08-15 Mellanox Technologies, Ltd. Network adapter with efficient storage-protocol emulation
US20230102680A1 (en) * 2021-09-30 2023-03-30 Advanced Micro Devices, Inc. Stacked command queue

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1578308A (zh) * 2003-07-18 2005-02-09 微软公司 在多nic rdma激活设备中的状态迁移
US7275152B2 (en) * 2003-09-26 2007-09-25 Intel Corporation Firmware interfacing with network protocol offload engines to provide fast network booting, system repurposing, system provisioning, system manageability, and disaster recovery
CN101123567A (zh) * 2006-05-01 2008-02-13 美国博通公司 用于处理网络信息的方法及系统
US7921178B2 (en) * 2008-12-04 2011-04-05 Voltaire Ltd. Device, system, and method of accessing storage

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8700724B2 (en) * 2002-08-19 2014-04-15 Broadcom Corporation System and method for transferring data over a remote direct memory access (RDMA) network
US7730221B2 (en) 2005-06-30 2010-06-01 Intel Corporation LAN controller with bootable host bus adapter
US8402201B2 (en) * 2006-12-06 2013-03-19 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery in solid-state storage
US8966172B2 (en) * 2011-11-15 2015-02-24 Pavilion Data Systems, Inc. Processor agnostic data storage in a PCIE based shared storage enviroment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1578308A (zh) * 2003-07-18 2005-02-09 微软公司 在多nic rdma激活设备中的状态迁移
US7275152B2 (en) * 2003-09-26 2007-09-25 Intel Corporation Firmware interfacing with network protocol offload engines to provide fast network booting, system repurposing, system provisioning, system manageability, and disaster recovery
CN101123567A (zh) * 2006-05-01 2008-02-13 美国博通公司 用于处理网络信息的方法及系统
US7921178B2 (en) * 2008-12-04 2011-04-05 Voltaire Ltd. Device, system, and method of accessing storage

Cited By (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11397703B2 (en) 2016-04-04 2022-07-26 Marvell Asia Pte, Ltd. Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access
CN108885597A (zh) * 2016-04-04 2018-11-23 马维尔国际贸易有限公司 用于使用直接目标访问经由通过结构的非易失性存储器桥接访问主机存储器的方法和系统
CN106126200B (zh) * 2016-06-13 2019-07-19 房玮 一种能够远程引导客户端计算机的云计算系统
CN106126200A (zh) * 2016-06-13 2016-11-16 房玮 一种能够远程引导客户端计算机的云计算系统
CN112347012A (zh) * 2016-06-20 2021-02-09 北京忆芯科技有限公司 支持SR-IOV的NVMe控制器及方法
CN109416675A (zh) * 2016-07-22 2019-03-01 英特尔公司 自动化数据中心维护
CN109690510A (zh) * 2016-09-08 2019-04-26 微软技术许可有限责任公司 用于将数据分发到高性能计算网络和基于云的网络中的多个接收器的多播装置和方法
CN109690510B (zh) * 2016-09-08 2022-07-01 微软技术许可有限责任公司 用于将数据分发到高性能计算网络和基于云的网络中的多个接收器的多播装置和方法
CN109416712A (zh) * 2016-09-20 2019-03-01 惠普发展公司,有限责任合伙企业 远程临场机器人的访问权限
CN107957695A (zh) * 2016-10-18 2018-04-24 普林斯卡思特有限公司 具有可调系统行为的模块化保持容器
WO2018113030A1 (en) * 2016-12-23 2018-06-28 Intel Corporation Technology to implement bifurcated non-volatile memory express driver
CN112422394B (zh) * 2016-12-28 2024-03-05 华为技术有限公司 NVMe over Fabric中转发报文的方法、设备和系统
CN112422394A (zh) * 2016-12-28 2021-02-26 华为技术有限公司 NVMe over Fabric中转发报文的方法、设备和系统
US11218537B2 (en) 2017-02-21 2022-01-04 Microsoft Technology Licensing, Llc Load balancing in distributed computing systems
CN110313163A (zh) * 2017-02-21 2019-10-08 微软技术许可有限责任公司 分布式计算系统中的负载平衡
CN110313163B (zh) * 2017-02-21 2022-03-04 微软技术许可有限责任公司 分布式计算系统中的负载平衡
CN108733601A (zh) * 2017-04-25 2018-11-02 三星电子株式会社 NVMe-oF以太网SSD中的低延迟直接访问块存储
CN108733601B (zh) * 2017-04-25 2023-08-04 三星电子株式会社 NVMe-oF以太网SSD中的低延迟直接访问块存储
CN111149341B (zh) * 2017-08-03 2022-07-29 铠侠股份有限公司 网状架构上的高速nvm
CN111149341A (zh) * 2017-08-03 2020-05-12 铠侠股份有限公司 网状架构上的高速nvm
CN112615917A (zh) * 2017-12-26 2021-04-06 华为技术有限公司 存储系统中存储设备的管理方法及存储系统
CN112615917B (zh) * 2017-12-26 2024-04-12 华为技术有限公司 存储系统中存储设备的管理方法及存储系统
CN110235098A (zh) * 2017-12-26 2019-09-13 华为技术有限公司 存储系统访问方法及装置
US11436157B2 (en) 2017-12-26 2022-09-06 Huawei Technologies Co., Ltd. Method and apparatus for accessing storage system
US11860672B2 (en) 2018-03-02 2024-01-02 Samsung Electronics Co., Ltd. Method for supporting erasure code data protection with embedded PCIE switch inside FPGA+SSD
CN110247860A (zh) * 2018-03-09 2019-09-17 三星电子株式会社 多模式和/或多速度NVMe-oF装置
CN110247860B (zh) * 2018-03-09 2022-09-27 三星电子株式会社 多模式和/或多速度NVMe-oF装置
US11588261B2 (en) 2018-03-09 2023-02-21 Samsung Electronics Co., Ltd. Multi-mode and/or multi-speed non-volatile memory (NVM) express (NVMe) over fabrics (NVMe-oF) device
CN112534412A (zh) * 2018-08-06 2021-03-19 甲骨文国际公司 单侧可靠的远程直接存储器操作
CN108768669A (zh) * 2018-08-14 2018-11-06 杭州创谐信息技术股份有限公司 基于asic可信远程内存交换卡及其数据交换方法
CN110908715A (zh) * 2018-09-18 2020-03-24 三星电子株式会社 多装置的配对系统及配对方法
CN110908715B (zh) * 2018-09-18 2022-03-22 三星电子株式会社 多装置的配对系统
CN114731327A (zh) * 2019-11-25 2022-07-08 思科技术公司 为远程用户动态生成移动软件定义广域网网关位置的系统和方法

Also Published As

Publication number Publication date
CN104683430B (zh) 2018-06-08
US9311110B2 (en) 2016-04-12
DE102014109518A1 (de) 2015-01-08
US20150012735A1 (en) 2015-01-08

Similar Documents

Publication Publication Date Title
CN104683430A (zh) 用于从远程可访问存储设备进行初始化的技术
CN104283938A (zh) 用于在存储服务器之间复制数据的技术
US11121915B2 (en) FPGA-enabled compute instances
US10296328B2 (en) Infrastructure configuration and inventory manager
CN103324498A (zh) 用于引导裸机计算设备的方法和设备
US20170249281A1 (en) Techniques for Use of Vendor Defined Messages to Execute a Command to Access a Storage Device
CN111984269B (zh) 提供应用构建服务的方法及应用构建平台
EP3663913B1 (en) Techniques for processor boot-up
US11665060B2 (en) System and method for remote configuration of scalable datacenter
CN103460202A (zh) 至少部分地通过电路来促进对至少一个控制器命令接口的访问
CN107408090A (zh) 输入/输出控制器访问通道的动态配置
US20160011886A1 (en) Adaptive device driver method and system
CN106873970A (zh) 一种操作系统的安装方法和装置
US9753883B2 (en) Network interface device that maps host bus writes of configuration information for virtual NIDs into a small transactional memory
US10122417B2 (en) Communicating via near field communications
US20150358213A1 (en) Systems and methods for sharing a single firmware image in a chassis configured to receive a plurality of modular information handling systems
JP6305758B2 (ja) 管理システム、管理システムによる管理方法、管理装置、管理装置の制御方法及びプログラム
US9535851B2 (en) Transactional memory that performs a programmable address translation if a DAT bit in a transactional memory write command is set
US20080256348A1 (en) Method for configuration of a processing unit
US11163537B1 (en) Tiered application pattern
CN104301297A (zh) 生成指示命令的分组和/或发出该命令的部分执行结果
CN108958797A (zh) 应用处理器和集成电路
JP2020047277A (ja) 多数の装置環境でペアリングするfpgaとssdを識別するためのストレージ装置及びコプロセッサを含むシステム及び方法
CN113222174B (zh) 模型管理方法及装置
CN117938641A (zh) 一种网络地址的配置方法及计算设备

Legal Events

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