CN117642723A - 用于横向扩展存储装置的启动器侧卸载 - Google Patents
用于横向扩展存储装置的启动器侧卸载 Download PDFInfo
- Publication number
- CN117642723A CN117642723A CN202280046748.8A CN202280046748A CN117642723A CN 117642723 A CN117642723 A CN 117642723A CN 202280046748 A CN202280046748 A CN 202280046748A CN 117642723 A CN117642723 A CN 117642723A
- Authority
- CN
- China
- Prior art keywords
- network interface
- storage
- access command
- interface device
- storage device
- 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.)
- Pending
Links
- 238000003860 storage Methods 0.000 title claims abstract description 197
- 239000007858 starting material Substances 0.000 title description 2
- 238000012545 processing Methods 0.000 claims abstract description 64
- 230000015654 memory Effects 0.000 claims description 79
- 238000000034 method Methods 0.000 claims description 45
- 230000008569 process Effects 0.000 claims description 32
- 238000013507 mapping Methods 0.000 claims description 11
- 230000006870 function Effects 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 10
- 239000004744 fabric Substances 0.000 description 9
- 230000002093 peripheral effect Effects 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 5
- 101150055297 SET1 gene Proteins 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 239000003999 initiator Substances 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000005387 chalcogenide glass Substances 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000000446 fuel Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9017—Indexing; Data structures therefor; Storage structures using directory or table look-up
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本文所述的示例涉及一种网络接口设备,该网络接口设备包括电路,该电路执行从主机卸载的操作,这些操作用于基于从多个可用操作中选择的操作来识别与存储装置访问命令相关联的至少一个目标存储装置的至少一个定位符,其中,可用操作包括以下操作中的两个或更多个:由网络接口设备进行的条目查找、在网络接口设备上的基于散列的计算、或在网络接口设备上的控制平面处理。
Description
优先权要求
本申请要求2021年12月23日提交的标题为“INITIATOR-SIDE OFFLOAD FORSCALE-OUT STORAGE”的美国申请第17/560,881号在35 U.S.C.§365(c)下的优先权,该美国申请又要求2021年9月20日提交的标题为“INITIATOR-SIDE HARDWARE OFFLOAD FORSCALE-OUT STORAGE SOFTWARE”的美国临时申请第63/246,210号的优先权权益,两个申请在此全文并入。
背景技术
数据中心向虚拟机(virtual machine,VM)和容器提供对块可寻址存储装置的访问。块可寻址存储设备可以包括基于NAND或NOR技术的存储设备。块可以是任何大小,诸如但不限于512B、4KB、8KB等。临时块级存储装置可绑定到单个计算实例(例如,VM或容器),并且一旦实例被停止,则对数据的访问丢失。永久块级存储装置独立于计算实例并且可以与实例的执行附接或分离。当实例停止执行时,永久卷上的数据不会丢失。
存储卷可以直接附接到执行VM或容器的主机,但是这种本地存储装置的容量可能利用不足或过度受限。当将VM或容器迁移到不同的主机时,直接附接的存储装置还提出了基础设施挑战,从而导致原始存储卷不再被直接附接。远程分解式存储架构提供远离计算节点并且经由网络接口通过网络访问的存储服务器。主机可以使用诸如Ceph的开源软件栈来执行数据到可经由网络访问的位置的映射。
附图说明
图1描绘了示例系统。
图2描绘了示例系统。
图3描绘了示例过程。
图4描绘了对象和对象集的示例。
图5描绘了示例网络接口设备。
图6描绘了示例系统。
具体实施方式
远程分解式横向扩展存储(scale-out storage,SoS)启动器电路可从主机的执行卸载到网络接口设备的执行。在一些示例中,网络接口设备包括可编程电路,其可以将非易失性存储器高速(NVMe)命令映射到目标网络可访问存储位置。由网络接口设备执行的操作的示例可以包括以下操作中的一个或多个:通过查找或计算来确定指向命令的队列对(QP)和RDMA连接上下文的一个或多个指针,或者将命令发送到控制平面以供进一步处理。可编程电路可以向处理器执行的控制平面发送管理异常(诸如对准错误、结构(fabric)故障、或者当不与分布式存储系统中的节点进行连接时)的请求。
分解式SoS启动器电路可通过软件可访问寄存器(例如,控制与状态寄存器)或配置寄存器来编程。主机可以向网络接口设备发送与NVMe一致的输入输出(IO)操作(例如,数据读取或写入请求),而不管到目标节点的连接是否可用。如果网络接口设备可以发起到分布式存储系统中的节点的连接,则可编程电路可以管理IO操作的执行。如果网络接口设备不能识别或形成到一个存储节点的连接,但是可以形成与目标存储节点的第二连接,则网络接口设备的处理器执行的软件可以利用IO操作到目标存储节点的映射或者利用可以用于执行将NVMe命令映射到一个或多个远程存储目标的计算的值来配置可编程电路可访问的表。在一些示例中,该连接基于远程直接存储器访问(RDMA或其他),并且第二连接可以基于可靠的传输协议(例如,TCP、UDP或其他)。
因此,数据中心可以实施远程分解式存储装置,而不会招致使用服务器中的核心来将IO请求映射到远程存储设备的软件开销。网络接口设备的电路和处理器可以将IO请求映射到远程存储设备。
非易失性存储器高速(NVMe)规范描述了一种用于通过外围部件互连高速(PCIe)端口访问数据存储系统的系统。NVMe在例如NVM ExpressTM基础规范修订版1.3c(2018年)以及其前趋、后继和专有变体中描述。NVMe允许主机设备将存储区域指定为单独名称空间。名称空间可以是非易失性存储器中的可寻址域,非易失性存储器具有已被格式化以用于块访问的选定数量的存储块。名称空间可以包括固态驱动器(SSD)中的介质的可寻址部分或者跨越多个SSD或其他数据存储设备的多设备存储空间。名称空间ID(NSID)可以是相关联的名称空间的唯一标识符。主机设备可以通过指定NSID、控制器ID和一个或多个块的相关联的逻辑地址(例如,逻辑块地址(LBA))来访问特定的非易失性存储器。
分布式块存储系统通过呈现分散在远程存储设备的大池中的段中存储的逻辑块设备来向应用提供块设备功能。为了使用这些逻辑块设备,应用确定要访问的段的位置。计算平台可以使用结构或网络来访问存储设备。存在各种存储协议,其使得能够使用网络或结构来访问存储设备。例如,结构上的非易失性存储器高速(Non-volatile MemoryExpress over Fabrics,NVMe-oF)规范被设计为使得能够访问远程NVMe兼容固态驱动器(SSD)。例如,NVMe-oF至少在NVM高速基础规范修订版1.4(2019年)以及其前趋、后继和专有变体中描述。NVMe-oF兼容设备向通过网络或结构可访问的远程系统提供高性能的NVMe存储驱动器。
图1描绘了使用网络接口设备来执行存储装置访问操作的系统的高级视图。主机系统100可以包括执行请求数据读取或写入操作的进程的一个或多个处理器。例如,进程可以发出NVMe命令以向网络接口设备110请求数据读取或数据写入操作。
网络接口设备110可以被实施为以下项中的一个或多个:网络接口控制器(NIC)、远程直接存储器访问(RDMA)启用的NIC、智能NIC、路由器、交换机、转发元件、基础设施处理单元(IPU)、数据处理单元(DPU)或网络附接的电器或智能端点(例如存储装置、存储器、加速器、处理器、防护程序)等。NVMe驱动器可以被热插入到智能端点(SEP)交换机或网络接口设备中,或者可以经由服务器访问。
NVMe协议处理112可以处理NVMe命令和数据、命令补全、以及执行数据加密。NVMe协议处理112可以输出NVMe命令(iCMD)、指向数据的指针、以及加密的数据或未加密的数据。NVMe命令可以至少识别命令的起始逻辑块地址(LBA)、逻辑块范围和NSID。
横向扩展电路120可以执行启动器的操作以使用RDMA上的NVMe或其他协议来横向扩展存储装置。横向扩展电路120可以从NVMe协议处理112接收NVMe命令。由横向扩展电路120执行的操作的示例包括以下操作中的一个或多个:通过查找或计算来确定指向命令的队列对(QP)和RDMA连接上下文的一个或多个指针,将命令发送到控制平面150以供进一步处理,或者将命令发送到所附接的RDMA传输桥(RTB)。
所接收的读取或写入命令可以包括起始LBA和要访问的块的数量以及来自发送方进程(例如,VM或容器)的经转换的虚拟化NSID。横向扩展电路120可以访问表(例如,间接表)或数据结构,以基于命令和相关联的NSID来确定命令将如何被处理。该表可以由控制平面基于发现服务来配置,该发现服务确定其中存储数据的设备。横向扩展电路120允许控制平面软件改变表的内容,而不影响飞行中的命令或进入横向扩展电路120的输入命令的流。
横向扩展电路120可以根据以下项中的一个或多个来处理接收到的命令:直接映射处理、控制平面处理或基于与命令相关联的逻辑块地址(LBA)的范围查找。如果确定范围间接表中的范围检查导致未命中,则遵循散列流。注意,范围未命中可以利用散列流。在一些情况下,横向扩展电路120可被配置为将存储流量重定向到另一系统,直到该系统可通过在范围间接表中创建“捕获”或范围命中来被带回在线。
命令的直接映射处理122可以利用表来识别指向表的指针,以将NSID和NVMe提交队列(SQ)映射到结构NSID和RDMA QP。
基于与所接收的命令相关联的NSID,横向扩展电路120可以确定将用于处理的命令直接发送到控制平面150。控制平面150可以使用处理器执行的软件来实施。发送到控制平面软件的命令格式可以被标识为iCMD,其中,iCMD可以具有一个或多个RDMA{connection_id,fNSID}元组。可以发送命令以供控制平面150在各种场景中处理。第一场景是NSID间接表指示不支持NSID的硬件卸载,并且来自该NSID的命令应当被发送到控制平面软件以供处理。第二场景是查找操作的结果使得命令由控制平面150处理,并且控制平面150与RDMA接口连接以通过网络发送命令。第三场景是在查找期间识别出硬件处理器不能解析的条件(例如,范围或条带化查找,但是LBA没有落入范围内)。其他场景是可能的,并且控制平面150可以被配置为处理其他场景。控制平面150可以确定这是否是直接映射处理122的硬件表要被更新的条件,或者这是否是异常情况并且它将继续处理NSID的命令而不更新表。
控制平面150可以用新的范围来更新横向扩展电路120的查找表,然后通过使用队列和门铃重新注入命令来使命令再循环通过横向扩展电路120。这可以节省处理器处理异常路径或处理在经常使用的路径中丢失的第一个分组的开销。控制平面150可以将命令重新注入到横向扩展电路120中以进行发送。控制平面150可以更新可访问的表以分配{fNSID和RDMA QP},从而将驱动器映射到网络位置。
控制平面150可以学习流以确定处理与该流相关联的命令的方式以及如何处理相同流中的其他命令。控制平面150可以对由横向扩展电路120访问的表进行编程,以确定如何处理相同流中的其他命令。在由控制平面150处理之后,可以发送命令以供通过利用可靠传输的RDMA进行传输或者传输到局域网(LAN)。控制平面150可以执行配置操作,包括数据加密和使用TCP或通过可靠传输的RDMA 190使用局域网(LAN)180将分组中的数据发送到网络。
在来自控制平面150的请求下,可以将命令发送到与RDMA硬件接口连接的硬件远程传输桥(RTB)。如本文所述,取决于命令的LBA是否跨越两个或更多个对象,命令可能已被分成两个或更多个命令。
基于LBA的处理124可以基于与命令相关联的LBA来执行范围查找。LBA可以表示与地址范围(例如,4KB)相关联的块编号。范围未命中130处理可以识别不在与基于LBA的处理124所支持的一个或多个对象集相对应的LBA范围内的LBA。命令的LBA无法使用可由基于LBA的处理124访问的表条目来转换。范围未命中130处理可以使命令由存储控制平面150处理,或者利用用于范围未命中的散列126。
用于范围未命中的散列126可以使用表查找来识别与LBA相关联的一个或多个对象以分配以下项:串、用于生成散列(例如,Ceph Jenkins散列或其他散列)的对串的操作、以及用于生成指向表的指针的对散列的模操作,该表识别NVMe命令所映射到的RDMA{connection_id,结构NSID(fNSID)}。将指针分配给表查找132可以识别指向表的指针。
用于范围未命中的散列126可以将待处理的命令号连同由硬件卸载产生的额外信息一起发送到存储控制平面150,额外信息例如是RDMA{connection_id,fNSID}和散列操作的输出。对于散列流,预置串(prestring)和对象串与NSID相关联,并且可以在散列预置串查找表中可用。可以基于NVMe请求的LBA和对象大小来计算对象ID号。对象ID可以被重新格式化为对象串,并与预置串级联以创建对象串。可以使用Jenkins散列来处理对象串,并将其压缩到32位或其它大小。可以使用stable_mod函数进一步删减位。经删减的输出可用于索引到本文所述的更大的全局查找表中。可以支持一个或多个可以被分配给Ceph散列池的散列池。可以如下计算全局查找表中的索引:
全局查找表索引=全局查找表基[散列池]+全局查找表Ptr
横向扩展电路120可以由以下项中的一个或多个实施:处理器执行的软件、电路、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等。横向扩展电路120可以包括散列计算引擎的多个实例。在一些示例中,Jenkins散列可用作散列操作。Jenkins散列可以使用可编程的初始种子,其被实施为硬件中的寄存器中的值。
横向扩展电路120可以按以下项中的一个或多个来编程:查找表内容、在存储器中扩展的表的基地址、stable_mod函数模值(b)、Jenkins散列的散列种子、散列预置串大小(例如,32B-128B)和预置串表、散列命令提交队列基地址、或帮助识别表条目被使用得有多频繁的读取统计。例如,横向扩展电路120可以通过写入寄存器来编程。
基于在对应于由基于LBA的处理124支持的一个或多个对象集的LBA范围内的LBA,范围命中128可处理命令。例如,将命令重定向到目标存储设备可以通过配置与基于LBA的处理124所支持的一个或多个对象集相对应的LBA范围来进行。对象集可以包括一个或多个对象。当对象集包括多于一个对象时,对象可以跨对象集被条带化。以下可以是每个范围可配置的:对象大小、每个对象集的对象数量以及条带大小。
命令的LBA可以在对象条带内,跨越不同对象的条带,或跨越两个对象集。映射到对象集并执行对象条带化可根据所跨越的对象集的数量来提供具有对象ID的一个或多个命令。将指针分配给表查找132可以基于对象ID识别指向表的指针。分配{fNSID和RDMA QP}可以使用由指针识别的表基于对象ID来识别fNSID和RDMA QP。
该表可以包括全局查找表(GLT),其可以使用网络接口设备经由网络或结构来访问。在一些示例中,GLT可以存储在网络接口设备110的存储器或存储装置中。在其他示例中,GLT可以使用一个或多个分组传输和接收经由网络访问。可以执行GLT中的查找以生成NVMe命令所映射到的RDMA{connection_id,结构NSID(fNSID)}的一个或多个条目。RDMA{connection_id,结构NSID(fNSID)}可以指一个或多个设备,包括以下项中的一个或多个:服务器、服务器群集、到一个或多个服务器和/或存储设备的网关、或者一个或多个存储设备。
在命令请求向目标设备写入数据的情况下,可以对特定对象集进行写入,或者跨多个对象(例如,独立磁盘冗余阵列模式0)将写入条带化。
可以使用NVMe-oF或另一协议(使用TCP、UDP、通过融合以太网的远程直接存储器访问(Remote Direct Memory Access,RDMA)(RDMA over Converged Ethernet,RoCE)v2等)将一个或多个命令从网络接口设备110发送到一个或多个目标设备。
图2描绘了示例系统。该系统可以包括横向扩展电路120和网络接口设备110的其他部件。诸如NVMe命令的存储装置访问命令可以经由主机接口(例如,PCIe、CXL或其他)接收,并且被提供用于使用横向扩展电路120或其他路径进行处理。具有以目的地设备为目标的NVMe命令的分组可以使用局域网(LAN)或经由利用可靠传输的RDMA来传输。
图3描绘了示例过程。该过程可以由网络接口设备基于接收到NVMe命令或访问存储器或存储设备的其他命令来执行。第一查找302可以使用与NVMe命令相关联的名称空间ID(NSID)来确定是否需要对该命令执行进一步的查找或者是否要将该命令发送到控制平面以进行处理。第一查找302可以访问pNSID间接表(PIT)以确定命令是可以使用直接映射操作304处理还是可以使用控制平面306处理。
如果要执行进一步的查找以发出命令,则PIT可以指示要执行的查找。查找可包括范围间接查找(用于跨存储目标分片的存储);条带化查找(用于跨存储目标条带化的存储);或散列查找(用于对象存储)。
范围间接查找310和范围计算312可以识别用于输入LBA开始地址和范围的一个或多个对象集。例如,一个或多个对象集可以与范围起点和终点相关联,并且基于输入LBA开始地址和范围在范围起点和终点内,可以识别该对象集。命令的LBA开始地址和范围可以在数据条带内或跨多个条带。
对于地址范围适合条带、地址范围适合一个对象并且命令可被发送到单个目标的情况,可执行条带计算320。对于与命令相关联的地址范围跨越多个条带的情况,可执行条带计算320。在与命令相关联的地址范围跨越多个条带的一些场景中,多个对象ID和命令可以由网络接口设备发送到多个存储目标。
对于命令的块地址不适合对象或对象集地址范围(完全未命中)的情况,范围计算312可以使得执行散列计算322,以确定指向表的指针,从而查找针对命令的一个或多个目标,或者可以生成异常,并且命令被引导到控制平面软件以进行处理。例如,可以针对对象跨越执行一个或多个Jenkins散列计算。在与命令相关联的地址范围跨越多个对象的一些场景中,命令可以由控制平面306处理。
散列计算322可确定哪个散列对象映射到命令。条带化对象可以与散列对象的大小不同。串或网址可用于访问存储目标的存储卷。例如,ASCII串可以经受散列计算。例如,32位值的模可用于确定指向本文所述的大指针表(例如,全局查找表(GLT))的指针。
范围可以表示一个或多个对象集。如果命令跨越两个对象,则范围计算312可将该命令拆分成两个结构命令(fCMD)。如果命令跨越两个范围,则范围计算312可以调用异常并将命令发送到控制平面306以进行处理。控制平面306可以处理由网络接口设备的操作者提供的异常。
对于从范围查找、条带化查找或散列查找中发现条带对象计算或散列流的情况,可以执行全局查找表(GLT)中的查找以生成NVMe命令所映射到的RDMA{connection_id,结构NSID(fNSID)}的条目。该条目可以用于生成NVMe命令的一个或多个分组报头字段,其将一个或多个分组通过网络引导到特定目标。在一些示例中,可以将指向RDMA{connection_id,结构NSID(fNSID)}的全局查找表指针编程到控制平面306中。
图4描绘了将一系列逻辑块映射到对象集和对象的示例。在一些示例中,LB可以在对象条带内、跨越不同对象的条带、或跨越两个对象集。在该示例中,存在两个对象集,对象集0(ObjectSet0)和对象集1(ObjectSet1)。对象集0可以包括对象0和对象1。对象集0的对象0可包括条带0、2、4和6。对象集0的对象1可包括条带1、3、5和7。对象集1可以包括对象2和对象3。对象集1的对象2可包括条带8、10、12和14。对象集1的对象3可包括条带9、11、13和15。其它示例可包括不同数量的条带、对象和/或对象集。
图5描绘了示例网络接口设备。网络接口设备可以包括处理器,其使用条目查找、散列计算或控制平面处理中的一个或多个基于接收的存储装置访问命令来确定存储目标,如本文所述。网络接口500可以包括收发器502、处理器504、发送队列506、接收队列508、存储器510和总线接口512以及DMA引擎552。收发器502能够依照适用的协议(诸如如IEEE802.3中描述的以太网)接收和发送分组,但也可以使用其它协议。收发器502可以经由网络介质(未示出)从网络接收分组和向网络发送分组。收发器502可以包括PHY电路514和介质访问控制(MAC)电路516。PHY电路514可以包括编码和解码电路(未示出),其根据可应用的物理层规范或标准来编码和解码数据分组。MAC电路516可以被配置为将要发送的数据组装成分组,分组包括目的地和源地址以及网络控制信息和错误检测散列值。
处理器504可以是以下各项的任意组合:处理器、核心、图形处理单元(GPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或允许对网络接口500进行编程的其他可编程硬件设备。例如,“智能网络接口”可以使用处理器504在网络接口中提供分组处理能力。处理器504的操作的配置(包括其数据平面)可以使用编程协议无关的分组处理器(P4)、C、Python、Broadcom网络编程语言(NPL)或x86兼容的可执行二进制或其他可执行二进制来编程。处理器504和/或片上系统550可以执行指令,其使用条目查找、散列计算或控制平面处理中的一个或多个基于接收的存储装置访问命令来确定存储目标,如本文所述。
分组分配器524可以使用本文所述的时隙分配或RSS来提供所接收分组的分发,以供多个CPU或核心处理。当分组分配器524使用RSS时,分组分配器524可以基于接收到的分组的内容来计算散列或做出另一确定,以确定哪个CPU或核心将处理分组。
中断合并522可以执行中断调整,由此网络接口中断合并522在生成到主机系统的中断以处理接收到的分组之前等待多个分组到达,或者等待超时期满。接收分段合并(RSC)可以由网络接口500执行,由此将输入分组的部分组合成分组的分段。网络接口500将该合并的分组提供给应用。
直接存储器访问(DMA)引擎552可将分组报头、分组有效负载和/或描述符直接从主机存储器复制到网络接口或反之,而不是将分组复制到主机处的中间缓冲器然后使用另一复制操作从中间缓冲器复制到目的地缓冲器。
存储器510可以是任何类型的易失性或非易失性存储设备,并且可以存储用于对网络接口500进行编程的任何队列或指令。发送队列506可以包括用于由网络接口发送的数据或对数据的引用。接收队列508可以包括由网络接口从网络接收的数据或对数据的引用。描述符队列520可以包括引用发送队列506或接收队列508中的数据或分组的描述符。总线接口512可以提供与主机设备(未示出)的接口。例如,总线接口512可以与PCI、PCI高速、PCI-x、串行ATA和/或USB兼容接口(但可以使用其它互连标准)兼容。
图6描绘了系统。系统可以使用本文所述的实施例来将使用条目查找、散列计算或控制平面处理中的一个或多个基于接收的存储装置访问命令确定存储目标的执行卸载到网络接口650,如本文描述。系统600包括处理器610,其提供用于系统600的处理、操作管理和指令的执行。处理器610可以包括任何类型的微处理器、中央处理单元(CPU)、图形处理单元(GPU)、XPU、处理核心或为系统600提供处理的其他处理硬件、或者处理器的组合。XPU可以包括以下项中的一个或多个:CPU、图形处理单元(GPU)、通用GPU(GPGPU)和/或其他处理单元(例如,加速器或可编程或固定功能FPGA)。处理器610控制系统600的整体操作,并且可以是或包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑器件(PLD)等、或这些设备的组合。
在一个示例中,系统600包括耦合到处理器610的接口612,其可以表示用于需要更高带宽连接的系统部件(诸如存储器子系统620或图形接口部件640或加速器642)的更高速接口或高吞吐量接口。接口612表示接口电路,其可以是独立的部件或集成到处理器管芯上。在存在的情况下,图形接口640与图形部件接口连接,以便向系统600的用户提供视觉显示。在一个示例中,图形接口640可以驱动向用户提供输出的显示器。在一个示例中,显示器可以包括触摸屏显示器。在一个示例中,图形接口640基于存储在存储器630中的数据或基于由处理器610执行的操作或基于这两者来生成显示。在一个示例中,图形接口640基于存储在存储器630中的数据或基于由处理器610执行的操作或基于这两者来生成显示。
加速器642可以是可由处理器610访问或使用的可编程或固定功能卸载引擎。例如,加速器642中的加速器可以提供压缩(DC)能力、诸如公钥加密(PKE)的密码服务、密码、散列/认证能力、解密或其他能力或服务。在一些实施例中,另外或替代地,加速器642中的加速器提供如本文所述的字段选择控制器能力。在一些情况下,加速器642可以集成到CPU插槽(例如,到包括CPU并提供与CPU的电接口的主板或电路板的连接器)中。例如,加速器642可以包括单核或多核处理器、图形处理单元、逻辑执行单元、单级或多级缓存、可用于独立执行程序或线程的功能单元、专用集成电路(ASIC)、神经网络处理器(NNP)、可编程控制逻辑、以及诸如现场可编程门阵列(FPGA)的可编程处理元件。加速器642可以提供多个神经网络、CPU、处理器核心、通用图形处理单元、或者可用于由人工智能(AI)或机器学习(ML)模型使用的图形处理单元。例如,AI模型可以使用或包括以下项中的任何一个或组合:强化学习方案、Q学习方案、深度Q学习或异步优势动作评价(A3C)、组合神经网络、递归组合神经网络或其他AI或ML模型。多个神经网络、处理器核心或图形处理单元可用于由AI或ML模型使用以执行学习和/或推断操作。
存储器子系统620表示系统600的主存储器,并且提供用于将由处理器610执行的代码或将在执行例程中使用的数据值的存储。存储器子系统620可以包括一个或多个存储器设备630,诸如只读存储器(ROM)、闪存、诸如DRAM的一种或多种随机存取存储器(RAM)、或其他存储器设备、或这样的设备的组合。存储器630存储和托管操作系统(OS)632等,以提供用于执行系统600中的指令的软件平台。另外,应用634可以在来自存储器630的OS 632的软件平台上执行。应用634表示具有其自己的操作逻辑以执行一个或多个功能的程序。进程636表示向OS 632或一个或多个应用634或其组合提供辅助功能的代理或例程。OS 632、应用634和进程636提供软件逻辑以提供系统600的功能。在一个示例中,存储器子系统620包括存储器控制器622,其是生成命令并将命令发布到存储器630的存储器控制器。应当理解,存储器控制器622可以是处理器610的物理部分或接口612的物理部分。例如,存储器控制器622可以是集成到具有处理器610的电路上的集成存储器控制器。
在一些示例中,OS 632可以是服务器或个人计算机、VMware vSphere、openSUSE、RHEL、CentOS、Devian、Ubuntu或任何其他操作系统。OS和驱动程序可以在由 Texas/>等出售或设计的处理器上执行。
在一些示例中,驱动程序可以配置网络接口650以执行使用条目查找、散列计算或控制平面处理中的一个或多个基于接收的存储装置访问命令确定存储目标的卸载操作,如本文所述。在一些示例中,驱动程序可以启用或禁用执行使用条目查找、散列计算或控制平面处理中的一个或多个基于接收的存储装置访问命令确定存储目标到网络接口650的卸载,如本文所述。驱动程序可以通告网络接口650执行使用条目查找、散列计算或控制平面处理中的一个或多个基于接收的存储装置访问命令来确定存储目标的能力,如本文所述。OS 632可以与驱动程序通信以确定网络接口650可以执行使用条目查找、散列计算或控制平面处理中的一个或多个基于接收的存储装置访问命令来确定存储目标,如本文所述。OS632可以命令驱动程序开启网络接口650的执行使用条目查找、散列计算或控制平面处理中的一个或多个基于接收的存储装置访问命令来确定存储目标的能力,如本文所述。
在一些示例中,操作系统632可以使用设备驱动程序向网络接口650提供命令(例如,NVMe命令),就好像网络接口650是与NVMe一致的存储设备,并且网络接口设备650可以使用条目查找、散列计算或控制平面处理中的一个或多个基于接收的存储装置访问命令来确定存储目标,如本文所述。在一些示例中,目标存储设备使用设备接口直接附接到网络接口650。在一些示例中,目标存储设备使用设备接口直接附接到系统600。
虽然没有具体例示,但是应当理解,系统600可以包括设备之间的一个或多个总线或总线系统,诸如存储器总线、图形总线、接口总线或其他。总线或其它信号线可以将部件通信地或电气地耦合在一起,或者既通信地又电气地耦合部件。总线可以包括物理通信线、点对点连接、桥、适配器、控制器或其他电路或组合。总线可以包括例如以下项中的一个或多个:系统总线、外围部件互连(PCI)总线、超传输或工业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)或电气和电子工程师协会(IEEE)标准1394总线(火线)。
在一个示例中,系统600包括接口614,其可以耦合到接口612。在一个示例中,接口614表示接口电路,其可以包括独立部件和集成电路。在一个示例中,多个用户接口部件或外围部件或两者耦合到接口614。网络接口650向系统600提供通过一个或多个网络与远程设备(例如,服务器或其他计算设备)通信的能力。网络接口650可以包括以太网适配器、无线互连部件、蜂窝网络互连部件、USB(通用串行总线)或其他基于有线或无线标准的或专有的接口。网络接口650可以将数据传输到在相同数据中心或机架中的设备或远程设备,这可以包括发送存储在存储器中的数据。网络接口650可以从远程设备接收数据,这可以包括将所接收的数据存储到存储器中。各种实施例可以结合网络接口650、处理器610和存储器子系统620使用。
在一个示例中,系统600包括一个或多个输入/输出(I/O)接口660。I/O接口660可以包括一个或多个接口部件,用户通过接口部件与系统600交互(例如,音频、字母数字、触觉/触摸或其他接口连接)。外围接口670可包括上面没有具体提及的任何硬件接口。外围设备通常指代相关地连接到系统600的设备。相关连接是系统600提供在其上执行操作并且用户与其交互的软件平台或硬件平台或两者的连接。
在一个示例中,系统600包括以非易失性方式存储数据的存储子系统680。在一个示例中,在某些系统实施方式中,存储子系统680的至少某些部件可以与存储器子系统620的部件重叠。存储子系统680包括存储装置684,其可以是或包括用于以非易失性方式存储大量数据的任何常规介质,诸如一个或多个基于磁、固态或光的盘或其组合。存储装置684以永久状态保持代码或指令和数据686(例如,尽管到系统600的电力中断,但值被保留)。存储装置684一般可被视为“存储器”,但存储器630通常是向处理器610提供指令的执行或操作存储器。尽管存储装置684是非易失性的,但是存储器630可以包括易失性存储器(例如,如果到系统600的电力被中断,则数据的值或状态是不确定的)。在一个示例中,存储子系统680包括与存储装置684接口连接的控制器682。在一个示例中,控制器682是接口614或处理器610的物理部分,或者可以包括处理器610和接口614中的电路或逻辑。
易失性存储器是在到设备的电力中断的情况下状态(以及因此存储在其中的数据)不确定的存储器。动态易失性存储器需要刷新存储在设备中的数据以维持状态。动态易失性存储器的一个示例包括DRAM(动态随机存取存储器)或一些变型(诸如同步DRAM(SDRAM))。易失性存储器的另一个示例包括缓存或静态随机存取存储器(SRAM)。
非易失性存储器(NVM)设备是即使到设备的电力中断其状态也是确定的存储器。在一个实施例中,NVM设备可以包括块可寻址存储器设备,诸如NAND技术或者更具体地为多阈值级NAND闪存(例如,单级单元(“SLC”)、多级单元(“MLC”)、四级单元(“QLC”)、三级单元(“TLC”)或一些其他NAND)。NVM设备还可包括字节可寻址就地写入三维交叉点存储器设备或其它字节可寻址就地写入NVM设备(也称为永久存储器),诸如单级或多级相变存储器(PCM)或具有开关的相变存储器(PCMS)、OptaneTM存储器、或使用硫属化物相变材料(例如,硫属玻璃)的NVM设备。
电源(未描绘)向系统600的部件提供电力。更具体地,电源通常与系统600中的一个或多个供电装置接口连接,以向系统600的部件供电。在一个示例中,供电装置包括AC到DC(交流到直流)适配器,其插入到壁装电源插座中。这种AC电力可以是可再生能源(例如太阳能)电源。在一个示例中,电源包括DC电源,诸如外部AC到DC转换器。在一个示例中,电源或供电装置包括无线充电硬件,其通过接近充电场进行充电。在一个示例中,电源可以包括内部电池、交流电源、基于运动的电源、太阳能电源或燃料电池源。
在一个示例中,系统600可以使用处理器、存储器、存储装置、网络接口和其他部件的互连计算滑轨来实施。可以使用高速互连,诸如:以太网(IEEE 802.3)、远程直接存储器访问(RDMA)、无限带宽、因特网广域RDMA协议(iWARP)、传输控制协议(TCP)、用户数据报协议(UDP)、快速UDP因特网连接(QUIC)、融合以太网上的RDMA(RoCE)、外围部件互连高速(PCIe)、英特尔快速通道互连(QPI)、英特尔超级通道互连(UPI)、英特尔片上系统结构(IOSF)、Omni-Path、计算快速链接(CXL)、超传输、高速结构、NVLink、高级微控制器总线架构(AMBA)互连、OpenCAPI、Gen-Z、无限结构(IF)、加速器缓存相干互连(CCIX)、3GPP长期演进(LTE)(4G)、3GPP 5G及其变型。数据可以被复制或存储到虚拟化的存储节点,或者使用诸如结构上的NVMe(NVMe-oF)或NVMe之类的协议来访问。
在一个示例中,系统600可以使用处理器、存储器、存储装置、网络接口和其他部件的互连计算滑轨来实施。可以使用高速互连,诸如PCIe、以太网或光互连(或其组合)。
本文的实施例可以在各种类型的计算和联网设备中实施,诸如交换机、路由器、机架和刀片(blade)服务器,诸如在数据中心和/或服务器场环境中采用的那些。在数据中心和服务器场中使用的服务器包括阵列服务器配置,诸如基于机架的服务器或刀片服务器。这些服务器经由各种网络规定来通信地互连,诸如将服务器集合划分为局域网(LAN),在LAN之间具有适当的交换和路由设施,以形成专用内联网。例如,云托管设施通常可以采用具有多个服务器的大型数据中心。刀片包括被配置为执行服务器类型功能的单独的计算平台,即“卡上的服务器”。因此,各个刀片包括常规服务器所共有的部件,包括主印刷电路板(主板),其提供内部布线(例如,总线)以用于耦合适当的集成电路(IC)和安装到板的其它部件。
可以使用硬件元件、软件元件或两者的组合来实施各种示例。在一些示例中,硬件元件可以包括设备、部件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、ASIC、PLD、DSP、FPGA、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等。在一些示例中,软件元件可以包括软件部件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、规程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任意组合。确定是否使用硬件元件和/或软件元件来实施示例可以根据任意数量的因素而变化,诸如期望的计算速率、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其他设计或性能约束,如给定实施方式所期望的。注意,硬件、固件和/或软件元件在本文中可以被共同地或单独地称为“模块”或“逻辑”。处理器可以是硬件状态机、数字控制逻辑、中央处理单元或任何硬件、固件和/或软件元件的一个或多个组合。
一些示例可以使用或作为制品或至少一个计算机可读介质来实施。计算机可读介质可以包括用于存储逻辑的非瞬态存储介质。在一些示例中,非瞬态存储介质可以包括能够存储电子数据的一种或多种类型的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移除或不可移除存储器、可擦或不可擦存储器、可写或可重写存储器等。在一些示例中,逻辑可以包括各种软件元件,诸如软件部件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、规程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任意组合。
根据一些示例,计算机可读介质可以包括非瞬态存储介质,其存储或维护指令,指令在由机器、计算设备或系统执行时,使得机器、计算设备或系统执行根据所述示例的方法和/或操作。指令可以包括任何合适类型的代码,诸如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码等。指令可以根据预定义的计算机语言、方式或语法来实施,以用于指示机器、计算设备或系统执行特定功能。指令可以使用任何合适的高级、低级、面向对象、视觉、编译和/或解释编程语言来实施。
至少一个示例的一个或多个方面可以由存储在至少一个机器可读介质上的代表性指令来实施,这些代表性指令表示处理器内的各种逻辑,这些代表性指令在由机器、计算设备或系统读取时,使得机器、计算设备或系统制造逻辑以执行本文所述的技术。被称为“IP核心”的这种表示可以存储在有形的机器可读介质上,并且提供给各种客户或制造设施以加载到实际制造逻辑或处理器的制造机器中。
短语“一个示例”或“示例”的出现不必全部指代相同的示例或实施例。本文所述的任何方面可以与本文所述的任何其他方面或类似方面组合,而不管这些方面是否是关于相同的附图或元素来描述。附图中描绘的块功能的划分、省略或包括不暗示用于实施这些功能的硬件部件、电路、软件和/或元件将必须在实施例中被划分、被省略或被包括。
一些示例可以使用表述“耦合”和“连接”以及它们的派生词来描述。这些术语不一定意图作为彼此的同义词。例如,使用术语“连接”和/或“耦合”的描述可以指示两个或更多个元件彼此直接物理或电接触。然而,术语“耦合”也可以意指两个或更多个元件彼此不直接接触,但是仍然彼此协作或交互。
术语“第一”、“第二”等在本文中不表示任何顺序、数量或重要性,而是用于将一个元件与另一个元件区分开。术语“一”和“一个”在本文中不表示数量的限制,而是表示存在至少一个所引用的项目。本文中参考信号使用的术语“宣称”表示信号的状态,其中信号是有效的,并且可以通过向信号施加逻辑0或逻辑1中的任何逻辑电平来实现。术语“跟随”或“之后”可以指紧随或跟随在某一个或多个其他事件之后。根据替代实施例,也可以执行其它操作序列。此外,根据特定应用,可以添加或移除额外操作。可以使用改变的任何组合,并且受益于本公开的本领域普通技术人员将理解其许多变化、修改和替代实施例。
除非另外具体陈述,否则诸如短语“X、Y或Z中的至少一个”的析取语言在如一般用于呈现项目、术语等可以是X、Y或Z或其任何组合(例如,X、Y和/或Z)的上下文内理解。因此,这种析取语言通常不旨在并且不应当暗示某些实施例需要X中的至少一个、Y中的至少一个或Z中的至少一个各自存在。另外,除非另外具体陈述,诸如短语“X、Y和Z中的至少一个”的连接语言也应当被理解为意指X、Y、Z或其任意组合,包括“X、Y和/或Z”。
下面提供了本文公开的设备、系统和方法的说明性示例。设备、系统和方法的实施例可包括以下描述的示例中的任何一个或多个以及任何组合。
如本文例示的流程图提供各种过程动作的序列的示例。流程图可以指示要由软件或固件例程执行的操作以及物理操作。在一些实施例中,流程图可以例示有限状态机(FSM)的状态,该有限状态机可以以硬件和/或软件实施。尽管以特定序列或顺序示出,但是除非另外指定,否则动作的顺序可以修改。由此,所例示的实施例应仅被理解为示例,且过程可以以不同顺序执行,并且一些动作可并行执行。另外,在各种实施例中可省略一个或多个动作;由此,并非所有动作都是每个实施例中需要的。其它过程流程也是可能的。
本文所述的各种部件可以是用于执行所描述的操作或功能的装置。本文所述的各个部件包括软件、硬件或其组合。部件可以实施为软件模块、硬件模块、专用硬件(例如,专用硬件、专用集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬连线电路等。
示例1包括一个或多个示例,并且包括一种装置,包括:网络接口设备,其包括电路,电路执行从主机卸载的操作,这些操作用于基于从多个可用操作中选择的操作来识别与存储装置访问命令相关联的至少一个目标存储装置的至少一个定位符,其中,可用操作包括以下操作中的两个或更多个:由网络接口设备进行的条目查找、在网络接口设备上的基于散列的计算、或在网络接口设备上的控制平面处理。
示例2包括一个或多个示例,其中,目标存储装置包括以下项中的一个或多个:服务器、服务器集群、网关、或一个或多个存储设备。
示例3包括一个或多个示例,其中,由网络接口设备进行的条目查找是基于与存储装置访问命令相关联的逻辑块地址范围和映射的逻辑块范围的,并且包括基于查找表确定与存储装置访问命令相关联的至少一个目标存储装置的至少一个定位符。
示例4包括一个或多个示例,其中,基于查找表确定与存储装置访问命令相关联的至少一个目标存储装置的至少一个定位符包括:基于与存储装置访问命令相关联的数据确定与存储装置访问命令相关联的至少一个目标存储装置的至少一个定位符,存储装置访问命令与单个对象、多个对象或多个对象集相关联。
示例5包括一个或多个示例,其中,在网络接口设备上的基于散列的计算是基于与存储装置访问命令相关联的逻辑块地址和映射的逻辑块范围的,并且包括在基于散列的计算的基础上确定至少一个目标存储装置的至少一个定位符。
示例6包括一个或多个示例,其中,在网络接口设备上的控制平面处理是基于与存储装置访问命令相关联的逻辑块地址和映射的逻辑块范围的,并且包括以下操作中的一个或多个:处理存储装置访问命令并使存储装置访问命令被发送,更新由网络接口设备通过条目查找访问的表,或者执行流学习以确定处理与存储装置访问命令的流相同的流的其他命令的方式。
示例7包括一个或多个示例,其中,至少一个目标存储装置的至少一个定位符包括至少一个远程直接存储器访问(RDMA)连接标识符和至少一个结构名称空间标识符(NSID)。
示例8包括一个或多个示例,其中,网络接口设备包括使得一个或多个分组被传输到至少一个目标存储装置的电路,并且其中,一个或多个分组包括基于存储装置访问命令的一个或多个命令。
示例9包括一个或多个示例,其中,网络接口设备包括以下项中的一个或多个:网络接口控制器(NIC)、远程直接存储器访问(RDMA)启用的NIC、智能NIC、路由器、交换机、转发元件、基础设施处理单元(IPU)、数据处理单元(DPU)或网络附接的电器或智能端点。
示例10包括一个或多个示例,并且包括耦合到网络接口设备的服务器,其中,服务器请求执行存储装置访问命令,并且其中,存储装置访问命令与结构上的非易失性存储器高速(NVMe-oF)一致。
示例11包括一个或多个示例,并且包括数据中心,其包括第二服务器,第二服务器从网络接口设备接收包括存储装置访问命令的至少一个分组,其中,第二服务器包括至少一个目标存储装置。
示例12包括一个或多个示例,并且包括一种计算机可读介质,包括存储在其上的指令,指令在由一个或多个处理器执行时使得一个或多个处理器执行以下操作:通过使用网络接口设备处的多个可用操作中的一个来将非易失性存储器高速(NVMe)命令的映射卸载到远程分解式目标存储装置。
示例13包括一个或多个示例,并且包括存储在其上的指令,指令在由一个或多个处理器执行时使得一个或多个处理器执行以下操作:执行操作系统以经由驱动程序向网络接口设备提供NVMe命令以执行存储装置访问操作。
示例14包括一个或多个示例,其中,远程分解式目标存储装置包括以下项中的一个或多个:服务器、服务器集群、网关、或一个或多个存储设备。
示例15包括一个或多个示例,其中,网络接口设备处的多个可用操作包括:由网络接口设备进行的条目查找、在网络接口设备上的基于散列的计算、或在网络接口设备上的控制平面处理。
示例16包括一个或多个示例,其中,由网络接口设备进行的条目查找是基于与存储装置访问命令相关联的逻辑块地址范围和映射的逻辑块范围的,并且包括基于查找表确定与存储装置访问命令相关联的至少一个目标存储装置的至少一个定位符。
示例17包括一个或多个示例,其中,基于查找表确定与存储装置访问命令相关联的至少一个目标存储装置的至少一个定位符包括:基于与存储装置访问命令相关联的数据确定与存储装置访问命令相关联的至少一个目标存储装置的至少一个定位符,存储装置访问命令与单个对象、多个对象或多个对象集相关联。
示例18包括一个或多个示例,其中,在网络接口设备上的基于散列的计算是基于与存储装置访问命令相关联的逻辑块地址和映射的逻辑块范围的,并且包括在基于散列的计算的基础上确定至少一个目标存储装置的至少一个定位符。
示例19包括一个或多个示例,其中,在网络接口设备上的控制平面处理是基于与存储装置访问命令相关联的逻辑块地址和映射的逻辑块范围的,并且包括以下操作中的一个或多个:处理存储装置访问命令并使存储装置访问命令被发送,更新由网络接口设备通过条目查找访问的表,或者执行流学习以确定处理与存储装置访问命令的流相同的流的其他命令的方式。
示例20包括一个或多个示例,其中,网络接口设备包括以下项中的一个或多个:网络接口控制器(NIC)、远程直接存储器访问(RDMA)启用的NIC、智能NIC、路由器、交换机、转发元件、基础设施处理单元(IPU)、数据处理单元(DPU)或网络附接的电器或智能端点。
Claims (25)
1.一种装置,包括:
网络接口设备,其包括:
电路,所述电路执行从主机卸载的操作,所述操作用于基于从多个可用操作中选择的操作来识别与存储装置访问命令相关联的至少一个目标存储装置的至少一个定位符,其中,所述多个可用操作包括以下操作中的两个或更多个:由所述网络接口设备进行的条目查找、在所述网络接口设备上的基于散列的计算、或在所述网络接口设备上的控制平面处理。
2.根据权利要求1所述的装置,其中,所述目标存储装置包括以下项中的一个或多个:服务器、服务器集群、网关、或一个或多个存储设备。
3.根据权利要求1所述的装置,其中,由所述网络接口设备进行的所述条目查找是基于与所述存储装置访问命令相关联的逻辑块地址范围和映射的逻辑块范围的,并且包括基于查找表确定与存储装置访问命令相关联的至少一个目标存储装置的所述至少一个定位符。
4.根据权利要求3所述的装置,其中,所述基于查找表确定与存储装置访问命令相关联的至少一个目标存储装置的所述至少一个定位符包括:
基于与存储装置访问命令相关联的数据确定与所述存储装置访问命令相关联的至少一个目标存储装置的所述至少一个定位符,所述存储装置访问命令与单个对象、多个对象或多个对象集相关联。
5.根据权利要求1所述的装置,其中,在所述网络接口设备上的所述基于散列的计算是基于与所述存储装置访问命令相关联的逻辑块地址和映射的逻辑块范围的,并且包括在基于散列的计算的基础上确定至少一个目标存储装置的所述至少一个定位符。
6.根据权利要求1所述的装置,其中,在所述网络接口设备上的所述控制平面处理是基于与所述存储装置访问命令相关联的逻辑块地址和映射的逻辑块范围的,并且包括以下操作中的一个或多个:处理所述存储装置访问命令并使所述存储装置访问命令被发送,更新由所述网络接口设备通过所述条目查找访问的表,或者执行流学习以确定处理与所述存储装置访问命令的流相同的流的其他命令的方式。
7.根据权利要求1所述的装置,其中,至少一个目标存储装置的所述至少一个定位符包括至少一个远程直接存储器访问(RDMA)连接标识符和至少一个结构名称空间标识符(NSID)。
8.根据权利要求1所述的装置,其中,所述网络接口设备包括使得一个或多个分组被传输到所述至少一个目标存储装置的电路,并且其中,所述一个或多个分组包括基于所述存储装置访问命令的一个或多个命令。
9.根据权利要求1所述的装置,其中,所述网络接口设备包括以下项中的一个或多个:网络接口控制器(NIC)、远程直接存储器访问(RDMA)启用的NIC、智能NIC、路由器、交换机、转发元件、基础设施处理单元(IPU)、数据处理单元(DPU)或网络附接的电器或智能端点。
10.根据权利要求1所述的装置,包括耦合到所述网络接口设备的服务器,其中,所述服务器请求执行所述存储装置访问命令,并且其中,所述存储装置访问命令与结构上的非易失性存储器高速(NVMe-oF)一致。
11.根据权利要求10所述的装置,包括数据中心,所述数据中心包括第二服务器,所述第二服务器从所述网络接口设备接收包括所述存储装置访问命令的至少一个分组,其中,所述第二服务器包括所述至少一个目标存储装置。
12.一种计算机可读介质,包括存储在其上的指令,所述指令在由一个或多个处理器执行时使得所述一个或多个处理器执行以下操作:
通过使用网络接口设备处的多个可用操作中的一个来将非易失性存储器高速(NVMe)命令的映射卸载到远程分解式目标存储装置。
13.根据权利要求12所述的计算机可读介质,包括存储在其上的指令,所述指令在由一个或多个处理器执行时使得所述一个或多个处理器执行以下操作:
执行操作系统以经由驱动程序向所述网络接口设备提供所述NVMe命令以执行存储装置访问操作。
14.根据权利要求12所述的计算机可读介质,其中,所述远程分解式目标存储装置包括以下项中的一个或多个:服务器、服务器集群、网关、或一个或多个存储设备。
15.根据权利要求12所述的计算机可读介质,其中,网络接口设备处的所述多个可用操作包括:由所述网络接口设备进行的条目查找、在所述网络接口设备上的基于散列的计算、或在所述网络接口设备上的控制平面处理。
16.根据权利要求15所述的计算机可读介质,其中,由所述网络接口设备进行的所述条目查找是基于与所述存储装置访问命令相关联的逻辑块地址范围和映射的逻辑块范围的,并且包括基于查找表确定与存储装置访问命令相关联的至少一个目标存储装置的至少一个定位符。
17.根据权利要求16所述的计算机可读介质,其中,所述基于查找表确定与存储装置访问命令相关联的至少一个目标存储装置的所述至少一个定位符包括:
基于与存储装置访问命令相关联的数据确定与所述存储装置访问命令相关联的至少一个目标存储装置的所述至少一个定位符,所述存储装置访问命令与单个对象、多个对象或多个对象集相关联。
18.根据权利要求15所述的计算机可读介质,其中,在所述网络接口设备上的所述基于散列的计算是基于与所述存储装置访问命令相关联的逻辑块地址和映射的逻辑块范围的,并且包括在基于散列的计算的基础上确定至少一个目标存储装置的至少一个定位符。
19.根据权利要求15所述的计算机可读介质,其中,在所述网络接口设备上的所述控制平面处理是基于与所述存储装置访问命令相关联的逻辑块地址和映射的逻辑块范围的,并且包括以下操作中的一个或多个:处理所述存储装置访问命令并使所述存储装置访问命令被发送,更新由所述网络接口设备通过所述条目查找访问的表,或者执行流学习以确定处理与所述存储装置访问命令的流相同的流的其他命令的方式。
20.根据权利要求12所述的计算机可读介质,其中,所述网络接口设备包括以下项中的一个或多个:网络接口控制器(NIC)、远程直接存储器访问(RDMA)启用的NIC、智能NIC、路由器、交换机、转发元件、基础设施处理单元(IPU)、数据处理单元(DPU)或网络附接的电器或智能端点。
21.一种方法,包括:
在网络接口设备处执行以下项:
从主机卸载的操作,所述操作用于基于从多个可用操作中选择的操作来识别与存储装置访问命令相关联的至少一个目标存储装置的至少一个定位符,其中,所述多个可用操作包括以下操作中的两个或更多个:由所述网络接口设备进行的条目查找、在所述网络接口设备上的基于散列的计算、或在所述网络接口设备上的控制平面处理。
22.根据权利要求21所述的方法,其中,由所述网络接口设备进行的所述条目查找是基于与所述存储装置访问命令相关联的逻辑块地址范围和映射的逻辑块范围的,并且包括基于查找表确定与存储装置访问命令相关联的至少一个目标存储装置的所述至少一个定位符。
23.根据权利要求22所述的方法,其中,所述基于查找表确定与存储装置访问命令相关联的至少一个目标存储装置的所述至少一个定位符包括:
基于与存储装置访问命令相关联的数据确定与所述存储装置访问命令相关联的至少一个目标存储装置的所述至少一个定位符,所述存储装置访问命令与单个对象、多个对象或多个对象集相关联。
24.根据权利要求21所述的方法,其中,在所述网络接口设备上的所述基于散列的计算是基于与所述存储装置访问命令相关联的逻辑块地址和映射的逻辑块范围的,并且包括在基于散列的计算的基础上确定至少一个目标存储装置的所述至少一个定位符。
25.根据权利要求21所述的方法,其中,在所述网络接口设备上的所述控制平面处理是基于与所述存储装置访问命令相关联的逻辑块地址和映射的逻辑块范围的,并且包括以下操作中的一个或多个:处理所述存储装置访问命令并使所述存储装置访问命令被发送,更新由所述网络接口设备通过所述条目查找访问的表,或者执行流学习以确定处理与所述存储装置访问命令的流相同的流的其他命令的方式。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163246210P | 2021-09-20 | 2021-09-20 | |
US63/246,210 | 2021-09-20 | ||
US17/560,881 | 2021-12-23 | ||
US17/560,881 US20220114030A1 (en) | 2021-09-20 | 2021-12-23 | Initiator-side offload for scale-out storage |
PCT/US2022/040590 WO2023043561A1 (en) | 2021-09-20 | 2022-08-17 | Initiator-side offload for scale-out storage |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117642723A true CN117642723A (zh) | 2024-03-01 |
Family
ID=81077733
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280046748.8A Pending CN117642723A (zh) | 2021-09-20 | 2022-08-17 | 用于横向扩展存储装置的启动器侧卸载 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220114030A1 (zh) |
CN (1) | CN117642723A (zh) |
DE (1) | DE112022002198T5 (zh) |
WO (1) | WO2023043561A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220114030A1 (en) * | 2021-09-20 | 2022-04-14 | Intel Corporation | Initiator-side offload for scale-out storage |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7965714B2 (en) * | 2008-02-29 | 2011-06-21 | Oracle America, Inc. | Method and system for offloading network processing |
US10936200B2 (en) * | 2014-07-30 | 2021-03-02 | Excelero Storage Ltd. | System and method for improved RDMA techniques for multi-host network interface controllers |
US9699110B2 (en) * | 2014-08-11 | 2017-07-04 | Mellanox Technologies, Ltd. | Accelerating and offloading lock access over a network |
US11509606B2 (en) * | 2018-06-29 | 2022-11-22 | Intel Corporation | Offload of storage node scale-out management to a smart network interface controller |
US10592144B2 (en) * | 2018-08-03 | 2020-03-17 | Western Digital Technologies, Inc. | Storage system fabric with multichannel compute complex |
US20220114030A1 (en) * | 2021-09-20 | 2022-04-14 | Intel Corporation | Initiator-side offload for scale-out storage |
-
2021
- 2021-12-23 US US17/560,881 patent/US20220114030A1/en active Pending
-
2022
- 2022-08-17 DE DE112022002198.5T patent/DE112022002198T5/de active Pending
- 2022-08-17 CN CN202280046748.8A patent/CN117642723A/zh active Pending
- 2022-08-17 WO PCT/US2022/040590 patent/WO2023043561A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20220114030A1 (en) | 2022-04-14 |
DE112022002198T5 (de) | 2024-04-04 |
WO2023043561A1 (en) | 2023-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11509606B2 (en) | Offload of storage node scale-out management to a smart network interface controller | |
US11934330B2 (en) | Memory allocation for distributed processing devices | |
US20200322287A1 (en) | Switch-managed resource allocation and software execution | |
EP3706394B1 (en) | Writes to multiple memory destinations | |
US11929927B2 (en) | Network interface for data transport in heterogeneous computing environments | |
CN115039077A (zh) | 为实时虚拟化执行环境迁移维护存储命名空间标识符 | |
US20200136971A1 (en) | Hash-table lookup with controlled latency | |
US20210359955A1 (en) | Cache allocation system | |
US20200379922A1 (en) | Adaptive routing for pooled and tiered data architectures | |
US20210326270A1 (en) | Address translation at a target network interface device | |
CN117651936A (zh) | 网络层7卸载到服务网格的基础设施处理单元 | |
US20220210097A1 (en) | Data access technologies | |
CN116266827A (zh) | 对分组处理管道进行编程 | |
CN117529904A (zh) | 分组格式调整技术 | |
EP3771180B1 (en) | Offload of storage node scale-out management to a smart network interface controller | |
CN117157957A (zh) | 交换机引发的拥塞消息 | |
US20220138021A1 (en) | Communications for workloads | |
CN117642723A (zh) | 用于横向扩展存储装置的启动器侧卸载 | |
US20220124046A1 (en) | System for storage of received messages | |
EP4202626A1 (en) | Target offload for scale-out storage | |
US20210328945A1 (en) | Configurable receive buffer size | |
EP4134804A1 (en) | Data access technologies | |
US20230043461A1 (en) | Packet processing configurations | |
US20230082780A1 (en) | Packet processing load balancer | |
CN115858139A (zh) | 封包处理负载平衡器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |