CN115529291A - 目标网络接口设备上的地址转换 - Google Patents

目标网络接口设备上的地址转换 Download PDF

Info

Publication number
CN115529291A
CN115529291A CN202210698780.6A CN202210698780A CN115529291A CN 115529291 A CN115529291 A CN 115529291A CN 202210698780 A CN202210698780 A CN 202210698780A CN 115529291 A CN115529291 A CN 115529291A
Authority
CN
China
Prior art keywords
address
lba
network interface
target
translation
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
Application number
CN202210698780.6A
Other languages
English (en)
Inventor
邹毅
A·拉古纳斯
S·D·彼得森
S·森
Y·李
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 CN115529291A publication Critical patent/CN115529291A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本文所描述的示例涉及一种包含电路系统的网络接口设备,该电路系统用于:接收具有目标逻辑块地址(LBA)的访问请求以及基于存储至少一个对象的访问请求的目标介质,将目标LBA转换为地址,并基于地址访问目标介质中的内容。在一些示例中,将目标LBA转换为地址包括:访问将LBA映射到物理地址或虚拟地址中的一个或多个的转换条目。在一些示例中,将目标LBA转换为地址包括:请求软件定义存储(SDS)堆栈,以提供LBA到物理地址或虚拟地址中的一个或多个的转换;以及将转换存储到映射表中以供电路系统访问。在一些示例中,在接收到访问请求之前接收将LBA映射到物理地址或虚拟地址中的一个或多个的至少一个条目。

Description

目标网络接口设备上的地址转换
描述
非易失性存储器快速(NVMe)规范描述了一种用于通过外围组件互连快速(PCIe)端口访问数据存储系统的系统。例如,NVM快速TM基本规范1.3c修订版(2018年)以及前身、后继及其专有变体中描述了NVMe,这些通过引用以其整体合并于此。NVMe允许主机设备将存储的区域指定为单独的命名空间。命名空间可以是非易失性存储器中的可寻址域,该非易失性存储器具有选定数量的存储块,这些存储块已被格式化以供进行块访问。命名空间可包括固态驱动器(SSD)中介质的可寻址部分,或者跨越多个SSD或其他数据存储设备的多设备存储器空间。命名空间ID(NSID)可以是相关联命名空间的唯一标识符。主机设备可以通过指定一个或多个块的NSID、控制器ID和相关联逻辑地址(例如,逻辑块地址(LBA))来访问特定的非易失性存储器。
分布式向外扩展块存储提供诸如精简配置、容量向外扩展、高可用性(HA)和自愈之类的服务。这些服务可以通过在商品处理器的集群上运行的软件定义存储(SDS)堆栈提供。SDS可以公开客户端应用可以经由块驱动器连接的逻辑卷。SDS可以将逻辑卷分解为分片,这些分片作为集群内的对象在内部存储,并且对象可以在集群中分散存储以跨越不同的故障域。此外,SDS通过创建多个副本或擦除编码对象来启用HA。
数据可以使用诸如结构上NVMe(NVMe-oF)之类的协议被复制或存储到虚拟化存储节点或者被访问,通过该协议,客户端块I/O请求使用NVMe-oF发送。当请求在存储节点处接收时,请求可以通过SDS软件堆栈(例如,Ceph对象存储守护进程(OSD)软件堆栈)处理,该堆栈可以在请求被提供到存储设备之前执行协议转换。
因此,当客户端访问逻辑卷内的某个范围时,可以确定映射到此卷程度的集群内部对象以及当前存储它的服务器。通常,这是使用客户端侧软件组件完成的,该组件使用定制协议与分布式存储后端进行通信。云服务提供商(CSP)创建了定制的专有解决方案,以改善对其各个基础设施的访问,并且还包括定制硬件组成部分(诸如亚马逊Web服务(AWS)Nitro SmartNIC、阿里巴巴X-Dragon芯片和Azure Corsica ASIC)。
与行业标准的高性能NVMe-oF块协议相比,向外扩展块存储服务可能产生一个数量级的较高等待时间。例如,虽然NVMe-oF上的访问等待时间可为10-100微秒的数量级,但典型的向外扩展块存储提供毫秒的访问等待时间。因此,部署块存储可涉及在低等待时间的有限存储服务和具有向外扩展优势但等待时间较高的附加服务之间进行选择。
附图说明
图1是用于为非易失性存储器提供分布式存储位置提示的系统的实施例的图。
图2是包括在图1的系统中的计算设备的实施例的框图。
图3-图5是用于提供分布式存储位置提示的方法的实施例的流程图,该方法可以使用计算设备的重定向器设备执行。
图6是根据实施例映射到单个物理命名空间的逻辑命名空间的图。
图7描绘了一种系统。
图8描绘了一种进程。
图9描绘了一种网络接口设备。
图10描绘了一种系统。
具体实施方式
网络接口设备可以提供具有逻辑块地址(LBA)范围的访问请求,以读取自或写入到目标存储设备或池或目标存储器设备或池。使用LBA,存储在介质中的数据块的地址使用线性寻址方案进行标识,在该方案中块地址由整数索引标识,其中第一个块是LBA 0,依此类推。目标网络接口设备可以接收访问请求,并且(a)访问转换表,用于将LBA范围转换为目标存储设备或池或者目标存储器设备或池中的物理地址范围,或(b)请求将LBA范围映射到物理地址范围,并将映射存储在转换表中。如果转换表中尚未映射LBA范围与物理地址范围之间的映射,则软件定义存储(SDS)堆栈的数据平面可被访问来提供映射。目标网络接口设备的一些实现方式可潜在地减少块存储请求从请求到完成请求的端到端等待时间,并还允许使用上述一种或多种存储服务。请求访问请求的客户端要将LBA转换为SDS内部格式(例如,对象格式)转换的话无需被修改,而是可以依靠目标网络接口设备执行转换。访问请求可以使用NVMe-oF直接地被传输到着陆的NVMe存储设备,使用SDS协议或专有存储协议(例如,Ceph)移除任何中间协议转换(诸如块到物理地址或物理地址到块)。
图1描述了用于提供分布式存储位置提示的系统100,包括计算设备集合110,该计算设备集合110包括计算服务器120、122、124和存储服务器130、132、134。计算服务器120、122、124和存储服务器130、132、134可以与管理服务器140通信,该管理服务器140在操作中可以将应用(例如,进程、操作集等)150、152、154分配给计算服务器120、122、124以代表客户端设备144执行。在执行期间,应用(例如,应用150)可以请求访问在存储服务器130、132、134中的一个或多个中的一个或多个副本(例如,副本)可用的数据集160、162、164、170、172、174。计算设备110可包括重定向器设备180,实现为配置成用于从路由规则集合中标识目标设备(例如,存储服务器、另一个重定向器设备等)的任何设备或电路系统(例如,协处理器、专用集成电路(ASIC)等),其中用于访问特定数据集的请求被发送。
重定向器设备180可以存储默认路由规则集合(例如,由管理服务器140、配置文件、应用程序接口(API)、命令行接口(CLI)或其他源提供),这些规则可能无法准确标识每个数据集的位置,而是提供请求可被发送的一般方向。然而,随着时间推移(例如,当数据访问请求通过系统100通信时),系统100中的重定向器设备180共享有关数据集的精确位置的信息(例如,提示),从而减少跳的数量(例如,在重定向器设备180之间重新路由数据访问请求),以将请求更直接地发送到精确的位置(例如,实际存储特定数据集的存储服务器130、132、134)。如果重定向器设备180接收数据访问请求(例如,从该重定向器设备180使用的路由规则集合中)并确定数据访问请求可被发送到另一个目标设备(例如,存储服务器132中的重定向器设备180,该设备实际上存储请求的数据集),重定向器设备180可以将请求转发给另一个目标设备(“下游目标设备”)。进一步地,当前重定向器设备180可以在上游将下游目标设备(例如,请求要转发到的目标设备)的身份发送到启动器设备(例如,向当前重定向器设备180发送数据访问请求的设备),以供将来参考。当数据集在存储服务器130、132、134之间移动时,重定向器设备180可以使用上述方案传播对其路由规则的更新。因此,通过在重定向器设备180之间自动传播对数据集的位置的更新,系统100可以比典型的分布式存储系统提供更大的可靠性,在这些典型的分布式存储系统中,对数据集的位置的更改可能导致无法访问数据集。
图2描述了示例计算设备110(例如,计算服务器120、122、124、存储服务器130、132、134等),包括计算引擎(本文也称为“计算引擎电路系统”)210、输入/输出(I/O)子系统216、通信电路系统218,并可能包括(例如,在存储服务器的情况下)一个或多个数据存储设备224。当然,在其他实施例中,计算设备110可包括其他或附加组件,诸如在计算机中常见的那些组件(例如,显示器、外围设备等)。组件中的一个或多个可能距离计算设备110的另一个组件任何距离(例如,分布在数据中心)。计算引擎210可被具体化为能够执行如下文所描述的各种计算功能的任何类型的设备或设备集合。计算引擎210可被具体化为单个设备,诸如集成电路、嵌入式系统、现场可编程门阵列(FPGA)、片上系统(SOC)或其他集成系统或设备。计算引擎210包括或被具体化为处理器212和存储器214。例如,处理器212可被具体化为(多个)多核处理器、微控制器、或其他处理器或处理/控制电路。在一些实施例中,处理器212可以被具体化为、包括或耦合到现场可编程门阵列(FPGA)、专用集成电路(ASIC)、可重新配置的硬件或硬件电路或其他专用硬件以促进本文中所述的功能的执行。
主存储器214可被具体化为能够执行本文中所述的功能的任何类型的易失性(例如,动态随机存取存储器(DRAM)等)或非易失性存储器或数据存储。主存储器214可以作为存储器池或存储器节点。
计算引擎210可经由I/O子系统216通信地耦合到计算设备110的其他组件,该I/O子系统216可被具体化为用于促进与计算引擎210(例如,与处理器212和/或主存储器214)以及计算设备110的其他组件的输入/输出操作的电路系统和/或组件。例如,I/O子系统216可被具体化为或以其他方式包括存储器控制器中枢、输入/输出控制中枢、集成传感器中枢、固件设备、通信链路(即,点对点链路、总线链路、线路、电缆、光导、印刷电路板迹线等)和/或用于促进输入/输出操作的其他组件和子系统。I/O子系统216可以形成片上系统(SoC)的部分,并可与计算设备110的处理器212、主存储器214、和其他组件中的一个或多个一起被合并到计算引擎210中。I/O子系统216支持结构上NVMe(NVMe-oF)协议。
通信电路系统218可具体化为任何通信电路、设备或其集合,能够在计算设备110与另一计算设备(例如,计算服务器120、122、124、存储服务器130、132、134、管理服务器140、客户端设备144,诸如在客户端设备144与重定向器设备180等之间提供快速路径)之间通过网络142进行通信。通信电路系统218可以被配置成使用任何一种或多种通信技术(例如,有线或无线通信)和相关联的协议(例如,以太网、
Figure BDA0003703150150000051
4G、5G等)来实行此类通信。
通信电路系统218可包括网络接口控制器(NIC)220,其也可被称为主机结构接口(HFI)。NIC 220可被具体化为一个或多个插件板、子卡、网络接口卡、控制器芯片、芯片组或计算设备110可用于与另一计算设备(例如,计算服务器120、122、124、存储服务器130、132、134、管理服务器140、客户端设备144等)连接的其他设备。NIC 220可被具体化为包括一个或多个处理器的芯片上系统(SoC)的部分,或NIC 220可被包括在也包含一个或多个处理器的多芯片封装上。NIC 220可包括均位于NIC 220本地的本地处理器(未示出)和/或本地存储器(未示出)。NIC 220的本地处理器可能能够执行本文中描述的计算引擎210的功能中的一个或多个功能。附加地或替代地,NIC 220的本地存储器可以在板级、插座级、芯片级和/或其他层级上被集成到计算设备110的一个或多个组件中。NIC 220可包括重定向器设备180。
重定向器设备180可能包括复制器逻辑单元222,该单元可被具体化为配置成用于管理多个数据存储设备224之间(例如,跨多个存储服务器130、132、134)数据集的复制(例如,拷贝)的任何设备或电路系统(例如,协处理器、FPGA、ASIC等),包括将写入请求转发到多个下游目标设备(例如,其他存储服务器),检测重叠的写入请求(例如,写入到同一逻辑块地址(LBA)的请求),将应用写入与副本恢复协同,以及确保以相同的顺序对所有副本执行重叠写入(在任何地方以同样的方式解决重叠条件)。恢复可包括使存储设备的副本的内容与其复制的设备保持一致。这可能是一个新的复制设备,也可能是一个不知何故变得不一致的设备(例如,因为它断开了一段时间)。在系统100的一些实施例中,重定向器设备180中的一个或多个可能是独立的设备(例如,位于计算设备110之间,而不是集成到计算设备110中)。
数据存储设备224可被具体化为存储器设备和电路、存储器卡、硬盘驱动器、固态驱动器或其他数据存储设备。数据存储设备224可包括存储数据存储设备224的数据以及固件代码的系统分区。数据存储设备224还可包括一个或多个操作系统分区,操作系统分区存储操作系统的数据文件和可执行文件。如果计算设备110是存储服务器130、132、134,数据存储设备224可以存储一个或多个数据集160、162、164。
数据存储设备224可以由一个或多个存储器设备或模具组成,其中可能包括各种类型的易失性和/或非易失性存储器。访问数据存储设备224可以与2016年6月发布的NVMe和/或结构上NVMe(NVMe-oF)规范1.1修订版的任何版本或衍生版本或其稍早版本或稍晚版本或衍生版本一致。
计算服务器120、122、124、存储服务器130、132、134、管理服务器140和客户端设备144说明性地经由网络142进行通信,该网络可被具体化为任何类型的有线或无线通信网络,包括全球网络(例如,互联网)、局域网(LAN)或广域网(WAN)、蜂窝网络(例如,全球移动通信系统(GSM)、3G、长期演进(LTE)、5G等)、无线电接入网络(RAN)、数字用户线(DSL)网络、电缆网络(例如,同轴网络、光纤网络等)或其任意组合。
在一些示例中,计算设备110包括但不限于服务器、服务器阵列或服务器场、web服务器、网络服务器、因特网服务器、分解服务器、工作站、微型计算机、大型计算机、超级计算机、网络家电、web家电、分布式计算系统、多处理器系统、基于处理器的系统或者它们的组合。
图3描绘了重定向器设备的示例操作。在框302处,重定向器设备可以判定是否启用数据访问请求的自适应路由。重定向器设备可以确定启用自适应路由,以响应于执行自我诊断,并确定自我诊断没有检测到任何误差,以响应于确定系统中存在其他重定向器设备,和/或基于其他因素。响应于启用自适应路由的决定,在框304处,重定向器设备可以获得默认路由规则,该规则指示将向其发送数据访问请求的预定义目标设备。在此过程中,如框306所示,重定向器设备可(例如,通过网络)从管理服务器接收路由规则。或者,如框308所示,重定向器设备可以从另一个源获得路由规则,诸如从配置文件(例如,存在于数据存储设备或存储器中)。
在框310处,重定向器设备可能接收指示已经被移动的数据集的更新位置的数据(例如,路由规则)。在框312处,重定向器设备可以接收指示之前位于与当前重定向器设备相关联的存储服务器(例如,存储服务器)处的数据集已移动到不同的存储服务器的数据。或者,如框314所示,重定向器设备可接收指示之前位于不同的存储服务器的数据集已移动到与当前重定向器设备相关联的存储服务器(例如,存储服务器)的数据。
如框316所示,重定向器设备可从启动器设备接收标识要访问的数据集的请求。在此过程中,如框318所示,重定向器设备可接收来自由执行应用的计算服务器(例如,来自计算引擎)执行的应用的请求。如框320所示,重定向器设备可接收来自另一个重定向器设备(例如,另一个计算设备中包含的重定向器设备)的请求。此外,如框322中所示,在接收请求时,重定向器设备可接收访问指定逻辑块地址(LBA)的请求。如框324所示,请求可是访问卷的程度(例如,定义的部分)。程度可包括一组块。请求可以是从数据集读取的请求,如框326所示,或者可以是写入数据集的请求,如框328所示。在框330中,重定向器设备可以根据框316中是否接收到请求来确定后续操作的过程。如果请求没有接收,方法300循环回到框302,其中重定向器设备判定是否继续启用自适应路由。否则(例如,如果请求被接收),方法300前进到图4的框332,在框332中重定向器设备判定请求的数据集是否在与当前重定向器设备相关联的存储服务器上可用(例如,重定向器设备是否是存储请求的数据集的存储服务器130的组件)。
图4描述了一个过程,包括框334,其中重定向器设备在判定请求的数据集是否在存储服务器上可用时,判定数据集在存储服务器的数据存储设备中是否可用。进一步地,在确定请求的数据集是否在与当前重定向器设备相关联的存储服务器上可用时,重定向器设备可以附加地将发起请求(例如,读取请求)的计算服务器的身份与最接近计算服务器的数据集的副本(例如,在同一物理机架中,而不是在数据中心的另一个机架中)进行匹配,如框336中所指示。如果重定向器设备与具有发起请求的计算服务器的数据集的最近副本的存储服务器不相关联(例如,不是该存储服务器的组件),则重定向器设备可以确定请求的数据集在当前存储服务器上不可用,即使数据集实际上存储在当前存储服务器中。
如框338中所示,重定向器设备可以优先处理请求的数据集的更具体的路由规则,而不是不太具体的路由规则。例如,路由规则可包括一条规则,该规则指示与特定范围逻辑块地址关联的请求或与特定卷关联的请求通常可以被路由到存储服务器中的重定向器设备,而另一条路由规则指定,访问该较广泛范围内的特定逻辑块地址或特定程度的卷的请求可以被发送到存储服务器。在上述场景中,重定向器设备可以选择第二路由规则,因为它更具体,并将提供更直接的路由到请求的数据集的实际位置。如框340所示,重定向器设备可以在目标设备(例如,一个或多个存储服务器)的选择中排除任何具有已知不可操作副本的目标设备(例如,存储副本的数据存储设备出现故障)。重定向器设备可从主控(例如,存储)副本的一个或多个存储服务器、管理服务器或另一个源(例如,从另一个重定向器设备)接收有关不可操作副本的操作状态的数据。
如框342所示,重定向器设备可标识恢复写入请求(例如,将数据写入正在被创建的副本的请求)。在此过程中,如框344所示,重定向器设备丢弃任何冗余的恢复写入请求(例如,写入到同一逻辑块地址的请求)。随后,在框346中,重定向器设备基于请求的数据集是否已被确定在本地存储服务器上可用(例如,重定向器设备是其组成部分的存储服务器)来确定后续操作的过程。如果否,方法300前进到图5的框348,在框348中重定向器设备将数据访问请求转发到下游重定向器设备。否则,方法300前进到图5的框360,在框360中,重定向器设备访问与当前重定向器设备关联的存储服务器中请求的数据集。
图5描述了一个过程,包括将数据访问请求转发到下游重定向器设备,如果下游重定向器设备不可操作(例如,无响应),当前重定向器设备可以移除(例如删除)与下游重定向器设备关联的路由规则,并将数据访问请求转发到另一个重定向器设备,如框350所示。如框352所示,重定向器设备可以向上游重定向器设备(例如,向当前重定向器设备发送请求的重定向器设备)发送指示请求被转发到的下游重定向器设备的路由规则。然而,在此过程中,重定向器设备可能抑制(例如,防止重新发送)之前在预定义的时间段内(例如,在最后X分钟内)发送到同一上游重定向器设备的路由规则,如框354所示。如框356所示,重定向器设备可以从下游重定向器设备接收和存储一个或多个更新的路由规则,这些路由规则指示与请求的数据集关联的不同目标设备(例如,与数据集相关联的数据访问请求将来可以被发送到的不同的存储服务器或重定向器设备)。进一步地,如框358所示,在说明性实施例中的重定向器设备可以将(多个)路由规则转发到与数据访问请求相关联的上游重定向器设备(例如,将数据访问请求发送到当前重定向器设备)。随后,方法300循环回到图3的框302,在框302中重定向器设备判定是否继续启用数据访问请求的自适应路由。
如果方法300相反前进到框360,在框360中重定向器设备访问与当前重定向器设备关联的存储服务器中请求的数据集,则重定向器设备可以从数据集中读取,如框362所示,或者可以写入数据集,如框364所示。在写入数据集时,重定向器设备可以将写入请求转发到一个或多个其他存储服务器(例如,通过一个或多个重定向器设备),以将相同数据写入主控在这些存储服务器上的相对应副本。如框368所示,重定向器设备可以发送指示数据访问操作(例如,读或写)的完成的通知(例如,到上游设备)。在写入的情况下,如框370所示,重定向器设备等到所有副本都成功写入后再发送完成的通知。随后,方法300循环回到图3的框302,在框302中重定向器设备判定是否继续启用数据访问请求的自适应路由。
图3-4描述了适用于任何存储协议的重定向器。以下描述公开了支持NVMe-oF的存储设备的重定向器。回想一下,重定向器接受逻辑块设备的块I/O请求,并根据内部表(也称为映射器)将其完成到许多替代块设备中的一个。一些I/O请求的目的地可能是本地存储设备。如果I/O请求落入映射器确定为远程的区域,重定向器将I/O请求转发到那里,并向I/O请求的发起方发送位置提示。位置提示是用于标识特定逻辑块设备中的一系列块、以及网络存储设备的地址是该I/O请求的目的地而不是发送提示的重定向器的消息。发起方可以保留该位置提示,并将存储设备的该区域的后续I/O请求直接发送到该目的地。
主机(例如,计算机服务器)可以如本文所述扩展,也可以同时连接到标准和扩展的NVMe-oF子系统。未经修改的NVMe-oF主机可以通过扩展的NVMe-oF子系统访问分布式存储,但性能低于扩展的主机。
例如,LinuxTM卷管理器(LVM)模型,逻辑NVMe命名空间(LN)可以从跨越许多存储节点的池被映射到物理NVMe命名空间(PN)。PN可以是任何具有NVMe或NVMe-oF接口的存储设备。通过LVM,PN可以分为某一方便大小的范围,并且LN可以被映射到PN范围的集合,以从可用的未分配的PN范围中产生所需大小的LN。LN可以作为其预置块设备被暴露给主机。多个存储子系统可以暴露相同的命名空间,通过如NVMe-oF规范中定义的相同的命名空间全局唯一标识符(NSGUID)/EUI64。
存储位置提示提出存在坚持将LN映射到PN或PN范围的分布式卷管理器(DVM),可以从PN处的重定向器的映射器中添加或删除条目,以及给主机的初始提示。此类系统使用简单的位置提示。存储位置提示可包括标识LN的范围(例如,LBA的范围)、以及该I/O请求的目的地的消息。这至少可包括存储子系统NVMe限定命名(NQN),并且也可以包含(另一个命名空间的)NSGUID和可选的偏移量。简单的位置提示还可以指定它是否适用于读、写或两者。
LN可以被映射到一个或多个PN。图6是被映射到单个物理命名空间的逻辑命名空间的图600。主机H-1 602可以经由存储子系统S-1 604的端口P-1 620访问逻辑NVMe命名空间(表示为LN-A),该命名空间被保持在单个物理NVMe命名空间中(表示为PN-A)。在实施例中,主机H-1 602是计算机服务器120、122、124中的一个,子系统S-1是存储服务器130、132、134中的一个,并且NVM 632是数据存储设备224中的一个。NVM 632包括物理网络存储地址PN-A 634。
客户端设备144中的用户可以将子系统S-1 604配置成用于由分布式卷管理器(DVM)616管理,并且DVM知道DVM可以使用子系统S-1 604中的哪些资源(诸如端口、现有命名空间、未分配的NVM等)(在S-1组件处618表示为LN-A->PN-A)。用户可以将DVM配置成用于创建逻辑地址LN-A,其中NSGUID G-A由子系统S-1中的物理地址PN-A(可能创建PN-A)支持。在这里,DVM创建了LN-A,因此也可以为其创建标识符。G-A是逻辑命名空间LN-A的NSGUID(命名空间全局标识符)。也就是说,导致NVM(632)创建新的命名空间,该命名空间成为PN-A。
DVM 616可以在子系统S-1 604中填充LN-A映射器组件628,以将LN-A的传入I/O请求映射到本地命名空间(NS)PN-A(如组件630所示)。DVM将发现服务(DS)组件610配置成用于识别主机H-1 602,并将子系统S-1 614添加到主机H-1可以访问的子系统612列表中。主机H-1 602被配置成用于使用DVM 616管理的DS 610,并将网络存储与NSGUID G-A一起使用。
NVMe-oF发现服务可以向连接到它们并进行查询的主机提供NVMe-oF子系统的列表。这揭示了主机建立这些连接所需的信息(地址、端口、密钥等)。发现服务查询响应标识子系统,而不是它们可能包含的命名空间。发现服务可以免费识别出连接到它们的主机,并将不同的子系统列表返回到不同的主机。这是在这里执行的,以便H-1可以了解访问LN-A所需的子系统,在本示例中,LN-A可以是H-1可以访问的LN。NVMe-oF子系统将响应于标准NVMe-oF命令而将它们包含的命名空间的列表返回给连接的主机。子系统可能不会将所有命名空间暴露给所有主机。H-1可以在S-1上发现LN-A。PN-A或LN-B(如果存在)将不可用于H-1。
主机H-1 602可以查询DS 610,并接收子系统S-1 614的连接信息。主机H-1 602连接到子系统S-1 604中的控制器组件622。命名空间的状态可能为“已分配”。当主机连接到控制器时,主机枚举控制器,并在调出其本地块设备的过程中连接到控制器中的一个或全部。这是如上所述的同一LN-A。由于该子系统是重定向器,也是由DVM 616管理的分布式系统的一部分,因此该子系统将LN-A至少暴露给H-1。
通过一系列标识命令,主机H-1 602枚举了主机H-1可以在子系统S-1 604中看到的命名空间。其中之一可能有NSGUID G-A(例如,LN-A的NSGUID)。主机H-1 602更新LN-A606的主机的映射器组件,使子系统S-1作为默认目标(如ALL->S-1组件608所示)。然后,主机H-1 602中LN-A的所有I/O请求都被发送到子系统S-1 604。因此,可以在网络接口设备中映射特定存储器访问请求的目标节点。
图7描绘了一种示例系统。在客户端节点处,计算引擎702可以发出读取或写入数据的请求。请求可以标识要读取或写入数据的一个或多个LBA。例如,请求可以向NVMe存储设备提出,并由具有重定向器704的网络接口设备接收。重定向器704可包括本文描述的任何重定向器的一种或多种技术。如本文所述,重定向器704可以在发送读取或写入数据的请求的多个存储目标之中标识特定的存储目标。在本示例中,特定的存储目标是存储目标750。具有重定向器704的网络接口设备可以使用NVMe-oF连接将请求传输到存储目标750。虽然示出单个存储目标750,但网络接口设备可以访问多个存储目标,并且多个存储目标可以被配置为存储目标750。
存储目标750可以接收在目标网络接口设备760处标识一个或多个目标LBA的请求。目标网络接口设备760可以被实现为以下各项中的一个或多个:网络接口控制器(NIC)、SmartNIC、路由器、交换机、转发元件、基础设施处理单元(IPU)或数据处理单元(DPU)。目标网络接口设备760可以访问映射管理器758,以判定转换是否存储在查找映射表中。
映射表可包括一个或多个条目,其将逻辑块地址范围转换为物理地址和命名空间(驱动器)。网络接口设备760可以使用此映射表条目来确定物理地址,并驱动以供随后访问逻辑块地址。例如,表1示出了从LBA范围(例如,起始地址和长度)到物理地址的查找映射表的示例格式。表1的映射表可用于前面描述的特定逻辑命名空间,诸如LN-A或LN-B。存储器访问请求可包括指定的逻辑命名空间(例如,LN-A、LN-B等)。请注意,替代于物理地址,虚拟地址可被提供,并且虚拟地址到物理地址的转换可被执行。例如,输入输出存储器管理单元(IOMMU)可用于执行虚拟地址到物理地址转换。
Figure BDA0003703150150000131
表1
另一个示例映射表如表2所示。如表2的示例所示,条目可以跨越固定大小的块范围,其中为整个表指定跨度长度。表2的映射表可用于前面描述的特定逻辑命名空间,诸如LN-A或LN-B。
Figure BDA0003703150150000132
表2
如果后续请求引用适合映射表中现有条目的LBA范围,则线性插值可以在条目的跨度内执行,以确定与后续请求相对应的物理地址范围。但是,如果后续请求引用不在映射表中现有条目中的LBA范围,则可能发生表丢失,并可以使用对象转换器754确定从LBA到物理地址范围的转换,如下所述。
如果查找映射表不包括存储770中从LBA到物理地址范围的转换的条目,则目标网络接口设备760可以访问块到对象转换器754,以将LBA转换为物理地址范围。例如,LBA到物理地址转换可以使用Ceph中的可靠自主分布式对象存储(RADOS)块设备(RBD)库(librbd)将逻辑块地址转换为物理地址范围。Rados协议的librbd可以将偏移量和范围转换为对象标识符(例如,对象名称)。例如,Ceph BlueStore可以将对象标识符转换为物理驱动器上的物理地址或存储770中的持久存储器。对象可以与标识符(例如OID)、二进制数据和包含名称/值对的集合的元数据相关联。对象可以是任意大小,并存储在存储770上的一个或多个块中。在一些示例中,LBA可以对应于512字节,尽管LBA可以包括其他数量的字节。在确定从LBA到物理地址范围的转换后,确定的转换的条目可以被存储在映射表中。在一些示例中,如果存储770包括固态驱动器(SSD),物理地址可以是驱动器上的LBA。在一些示例中,当存储770包含可字节寻址的存储器时,地址可以是虚拟地址或物理地址。
在一些示例中,在没有映射表可用的情况下,将块地址转换为物理地址可能导致创建映射表,以供通过网络接口设备760进行访问。在一些示例中,在先访问中最常访问的LBA的转换条目可以被预先获取到映射表中。
在一些示例中,当网络接口设备760访问LBA到物理地址和命名空间的映射时,当任何正在进行的请求正在进行中时,可以阻止控制平面752更新映射或实际数据。为了修改映射表的条目,映射条目可被删除并且软件元数据上的锁被释放。
在一些示例中,如果对LBA到物理地址的转换进行更改,控制平面752可以使映射表中的条目无效或更新映射表中的条目。如本文所述,由网络接口设备760使用的映射条目可以与SDS控制平面同步,以尝试在数据访问过程中防止数据移动。例如,映射表的条目中的LBA到物理地址转换可能被锁定,而不被其他路径修改。当对LBA到物理地址转换进行修改时,SDS可以请求使表中的条目无效。接收到无效请求后,进行中请求可以通过网络接口设备760、从表中删除的条目以及从网络接口设备760发送到SDS的确认(ACK)完成。在接收到执行条目无效的ACK后,SDS可以继续修改LBA到物理地址的转换。在修改或无效请求后提出的转换请求可以被阻止,直到LBA到物理地址转换的修改完成。
在一些示例中,映射表条目可以基于映射表的完整级别满足阈值或超过阈值从映射表中删除。为了确定要驱逐或无效哪个LBA到物理地址的转换,基于优先级的保留可以被使用,最近使用最少的(LRU)条目可以被驱逐,等等。
从LBA转换为物理地址后,块管理器756可以使用设备接口(例如,外围组件互连快速(PCIe)或计算快速链路(CXL))向存储770发送写入或读取请求。针对读取请求,块管理器756可以返回请求的数据和数据驻留的物理NVMe命名空间/块的信息。
接下来描述以Ceph为示例对象存储守护进程的系统的操作。然而,示例不仅限于使用Ceph,并且可以使用任何对象存储,诸如Gluster、Minio、Swift、FreeNAS、Portworx、Hadoop等。在(1)处,客户端应用向卷发出块读取I/O。具有重定向器704的网络接口设备可以使用经由本文所述提示机制填充的映射来定位此客户端块I/O请求的NVMe命名空间的远程存储目标。在(2)处,重定向器可能导致I/O在NVMe-oF上作为NVMe请求发送到由重定向器位于的存储集群中的目标服务器750。
在(3)处,目标网络接口设备760可以查找NVMe请求与物理存储设备之间的映射,以将块地址转换为物理地址。如果找到匹配,在(3a)处,目标网络接口设备760可以直接向存储770提供具有物理地址范围的I/O请求。如果未找到匹配,在(3b)处,目标网络接口设备760可以将要阻止的I/O请求转发到在软件中主机上运行或在目标网络接口设备760的处理器中运行的物理地址转换器。
在(4)处,块到对象转换器754可以将块请求转换为Ceph对象请求,并将请求发送到块管理器756,以使用(例如,使用Ceph librbd)将块请求转换为物理地址访问请求。从块转换为物理地址后,在(5)处,块管理器756可以将I/O请求直接发送到目标存储770。在(6)处,块管理器756可以返回请求的数据(在读取操作的情况下)和数据驻留的物理NVMe命名空间/块的信息。
在(7)处,块I/O请求范围的实际NVMe命名空间/块的转换可以作为条目被存储在映射表中,以便将后续块I/O请求发送到同一LBA范围,以允许目标网络接口设备760直接访问目标存储770的物理地址,而不是使用转换服务来访问。例如,直接存储器访问(DMA)可用于从目标介质复制数据。在(8)处,目标网络接口设备760可以向请求方客户端发送响应。
在接收到块I/O请求之前或响应于接收到块I/O请求,网络接口设备可以被编程有从逻辑卷/LBA范围到物理命名空间范围的映射,并被编程成用于访问映射条目以将逻辑卷/LBA范围转换为物理命名空间范围。可以使用接口(例如,应用程序接口(API)、命令行接口(CLI)或配置文件)对网络接口设备进行编程。块管理器接口可以在存储对象(对应于卷范围)的物理驱动器上提供命名空间和LBA范围。因此,当网络接口设备包括块地址到物理地址的映射时,存储目标的网络接口设备可以拦截块请求并绕过SDS控制平面(例如,卷分片管理器),并直接向存储设备提供块请求。
图8描述了可用于结合I/O请求的示例流程。在802处,目标网络接口设备可以接收来自客户端的访问请求。访问请求可包括LBA的读或写请求。访问请求可以使用来自发送方网络接口设备的NVMe-oF连接接收。在804处,目标网络接口设备可以确定LBA到目标介质中的对象标识符和/或物理地址的转换是否可以在映射表中可用。如果LBA到目标介质中的对象和/或物理地址的转换在映射表中可用,那么该过程可以继续到806。如果LBA到目标介质中的对象和/或物理地址的转换在映射表中不可用,则该过程可以继续到820。
在806处,目标网络接口设备可以发布接收到的访问请求到具有与LBA相对应的对象标识符和/或物理地址的目标介质的转换。在访问请求是写操作的情况下,数据可以被写入到目标介质。在访问请求是读操作的情况下,数据可以从目标介质被读取并被发送到访问请求的发布方。
在820处,目标网络接口设备可以请求接收到的LBA到目标介质中的对象标识符和/或物理地址的转换。转换可以使用目标网络接口设备或主机系统中的处理器所执行的SDS或其他软件来进行。在822处,由目标网络接口设备或主机系统中的处理器执行的SDS或其他软件可以发布访问请求到具有与LBA相对应的对象标识符和/或物理地址的目标介质的转换。在824处,与转换相对应的条目可以被存储在映射表中,以供由目标网络接口设备访问。
图9描绘了一种网络接口。如本文所述,网络接口中的各种处理器资源可以访问映射表条目,以执行LBA到物理地址的转换并更新映射表条目。在一些示例中,网络接口900可以被实现为网络接口控制器、网络接口卡、网络设备、网络接口设备、主机结构接口(HFI)或主机总线适配器(HBA),并且此类示例可以互换。网络接口900可以使用总线、PCIe、CXL或双数据速率(DDR)标准耦合到一个或多个服务器。网络接口900可被具体化为包括一个或多个处理器的芯片上系统(SoC)的部分,或被包括在也包含一个或多个处理器的多芯片封装上。
网络设备900的一些示例是基础设施处理单元(IPU)或数据处理单元(DPU)的部分或者被IPU或DPU利用。xPU至少可以指IPU、DPU、图形处理单元(GPU)、通用GPU(GPGPU)或其他处理单元(例如,加速器设备)。IPU或DPU可包括网络接口,其中一个或多个可编程流水线或固定功能处理器用于进行可以已经被中央处理单元(CPU)执行的操作的转移。IPU或DPU可以包括一个或多个存储器设备。在一些示例中,IPU或DPU可以执行虚拟交换机操作,管理存储事务(例如,压缩、密码学、虚拟化),并且管理在其他IPU、DPU、服务器或设备上执行的操作。
网络接口900可以包括收发器902、处理器904、传输队列906、接收队列908、存储器910和总线接口912以及DMA引擎952。收发器902可能能够按照诸如IEEE 802.3中描述的以太网之类的适用协议接收和传输分组,但是也可以按照其他协议。收发器902可以经由网络介质(未描述)从网络接收分组并且将分组传输到网络。收发器902可以包括PHY电路系统914和介质访问控制(MAC)电路系统916。PHY电路系统914可以包括编码和解码电路系统(未示出),以根据适用的物理层规范或标准对数据分组进行编码和解码。MAC电路系统916可以被配置成用于对接收的分组进行MAC地址过滤,通过验证数据完整性处理接收的分组的MAC头,删除序言和填充,并提供分组内容以供由更高层处理。MAC电路系统916可被配置成用于组装要传输到分组中的数据,这些数据包括目的地地址和源地址以及网络控制信息和误差检测哈希值。
处理器904可以是处理器、核、图形处理单元(GPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或允许对网络接口900进行编程的其他可编程硬件设备的任何组合。例如,“智能网络接口”即SmartNIC可以使用处理器904在网络接口中提供分组处理能力。
处理器904可包括可编程处理流水线,该流水线可由P4、C、Python、Broadcom网络编程语言(NPL)或x86兼容的可执行二进制文件或其他可执行二进制文件进行编程。可编程处理流水线可以包括一个或多个匹配操作单元(MAU),其可被配置成用于访问映射表条目,以执行LBA到物理地址的转换,更新映射表条目,以及提供对对象存储的访问请求,如本文所述。处理器、FPGA、其他专用处理器、控制器、设备和/或电路可用于分组处理或分组修改。三元内容可寻址存储器(TCAM)可用于分组头内容的并行匹配操作或查找操作。
分组分配器924可以使用本文描述的时隙分配或接收端缩放(RSS)提供接收的分组的分发,以供由多个CPU或核进行处理。当分组分配器924使用RSS时,分组分配器924可以计算哈希值或基于接收的分组的内容进行其他确定,以确定用于处理分组的CPU或核。
中断合并922可以执行中断调整,由此网络接口中断合并922等待多个分组到达或等待超时过期,然后生成对主机系统的中断以处理(多个)接收的分组。接收片段合并(RSC)可以通过网络接口900执行,由此传入分组的部分被组合成分组的片段。网络接口900将该合并分组提供给应用。
直接存储器访问(DMA)引擎952可以将分组头、分组有效载荷和/或描述符直接从主机存储器复制到网络接口,反之亦然,而不是将分组复制到主机处的中间缓冲区,然后使用从中间缓冲区到目的地缓冲区的另一个复制操作。
存储器910可以是任何类型的易失性或非易失性存储器设备,并且可以存储用于对网络接口900进行编程的任何队列或指令。传输队列906可以包括数据或对数据的引用,以供通过网络接口传输。接收队列908可以包括通过网络接口从网络接收的数据或对数据的引用。描述符队列920可以包括引用传输队列906或接收队列908中的数据或分组的描述符。总线接口912可以提供与主机设备(未示出)的接口。例如,总线接口912可以与PCI、PCI快速、PCI-x、串行ATA和/或USB兼容接口兼容(尽管可以使用其他互连标准)。
图10描绘了一种示例计算系统。各实施例可以使用系统1000的组件(例如,处理器1010、网络接口1050等)来提供对对象存储设备的访问LBA,其中使用网络接口1050可访问的映射表进行LBA到物理地址的转换,如本文所述。系统1000包括处理器1010,该处理器1010提供对用于系统1000的指令的处理、操作管理和执行。处理器1010可以包括任何类型的微处理器、中央处理单元(CPU)、图形处理单元(GPU)、处理核、或用于为系统1000提供处理的其他处理硬件或处理器的组合。处理器1010控制系统1000的整体操作,并且可以是或可以包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑器件(PLD)等等或此类设备的组合。
在一个示例中,系统1000包括耦合至处理器1010的接口1012,该接口1012可以表示用于需要较高带宽连接的系统部件(诸如存储器子系统1020或图形接口部件1040或加速器1042)的较高速的接口或高吞吐量接口。接口1012表示接口电路,其可以是独立部件或被集成到处理器管芯上。在存在的情况下,图形接口1040对接至图形部件,以用于向系统1000的用户提供视觉显示。在一个示例中,图形接口1040可以驱动向用户提供输出的高清(HD)显示器。高清可以指具有约100PPI(像素每英寸)或更高的像素密度的显示器,并且可以包括诸如全高清(例如,1080p)、视网膜显示器、4K(超高清即UHD)或其他的格式。在一个示例中,显示器可以包括触摸屏显示器。在一个示例中,图形接口1040基于存储器1030中所存储的数据或基于由处理器1010执行的操作或基于这两者来生成显示。在一个示例中,图形接口1040基于存储器1030中所存储的数据或基于由处理器1010执行的操作或基于这两者来生成显示。
加速器1042可以是可以由处理器1010访问或使用的固定功能或可编程转移引擎。例如,加速器1042之中的加速器可以提供压缩(DC)能力、诸如公钥加密(PKE)之类密码学服务、密码、散列/认证能力、解密、或其他能力或服务。在一些实施例中,另外或替代地,加速器1042之中的加速器提供诸如本文中所描述的字段选择控制器能力。在一些情况下,加速器1042可以被集成到CPU插槽(例如,到包括CPU并提供与CPU的电气接口的主板或电路板的连接器)。例如,加速器1042可以包括单核或多核处理器、图形处理单元、逻辑执行单元、单级或多级高速缓存、可用于独立地执行程序或线程的功能单元、专用集成电路(ASIC)、神经网络处理器(NNP)、可编程控制逻辑、以及诸如现场可编程门阵列(FPGA)或可编程逻辑器件(PLD)之类的可编程处理元件。加速器1042可以提供多个神经网络、CPU、处理器核、通用图形处理单元,或者图形处理单元可以被变成可用于由人工智能(AI)或机器学习(ML)模型使用。例如,AI模型可以使用或包括以下各项中的一项或多项:强化学习方案、Q学习方案、深度Q学习或异步优势行为方-评论方(A3C)、组合式神经网络、循环组合式神经网络、或其他AI或ML模型。可以使得多个神经网络、处理器核或图形处理单元可用于由AI或ML模型使用。
存储器子系统1020表示系统1000的主存储器,并且提供用于由处理器1010执行的代码或者用于执行例程的数据值的存储。存储器子系统1020可以包括一个或多个存储器设备1030,诸如只读存储器(ROM)、闪存、随机存取存储器(RAM)的一种或多种变体(诸如DRAM)、或其他存储器设备或此类设备的组合。存储器1030存储并主控操作系统1032以提供用于指令在系统1000中的执行的软件平台,等等。另外,应用1034可以在来自存储器1030的OS 1032的软件平台上执行。应用1034表示具有其自身的操作逻辑以执行一个或多个功能的执行的程序。进程1036表示向OS 1032或一个或多个应用1034或组合提供辅助功能的代理或例程。OS 1032、应用1034和进程1036提供用于为系统1000提供功能的软件逻辑。在一个示例中,存储器子系统1020包括存储器控制器1022,该存储器控制器1022是用于生成命令并向存储器1030发出命令的存储器控制器。将理解,存储器控制器1022可以是处理器1010的实体部分或接口1012的实体部分。例如,存储器控制器1022可以是与处理器1010一起被集成到电路上的集成存储器控制器。
在一些示例中,OS 1032可以是
Figure BDA0003703150150000201
服务器或个人计算机、
Figure BDA0003703150150000202
VMware vSphere、openSUSE、RHEL、CentOS、Debian、Ubuntu或任何其他操作系统。OS和驱动程序可以在
Figure BDA0003703150150000203
等销售或设计的CPU上执行。在一些示例中,驱动程序可以将网络接口1050配置成用于使用LBA到物理地址的转换向对象存储设备提供具有LBA的访问请求,如本文所述。
尽管没有具体地图示,但是将理解,系统1000可以包括设备之间的一个或多个总线或总线系统,诸如存储器总线、图形总线、接口总线或其他总线。总线或其他信号线可以将组件通信地或电气地耦合在一起,或者将组件既通信地又电气地耦合。总线可以包括实体通信线、点对点连接、桥、适配器、控制器、或其他电路系统或组合。总线可以包括例如以下各项中的一项或多项:系统总线、外围组件互连(PCI)总线、超传输或工业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)、或电气和电子工程师协会(IEEE)标准1394总线(火线)。
在一个示例中,系统1000包括接口1014,该接口1014可以耦合至接口1012。在一个示例中,接口1014表示接口电路,其可以包括独立组件和集成电路系统。在一个示例中,多个用户接口组件或外围组件耦合至接口1014,或者这两者均耦合至接口1014。网络接口1050向系统1000提供通过一个或多个网络与远程设备(例如,服务器或其他计算设备)通信的能力。网络接口1050可以包括以太网适配器、无线互连组件、蜂窝网络互连组件、USB(通用串行总线)、或其他基于有线或无线标准的接口或专有接口。网络接口1050可以将数据传送至处于同一数据中心或机架的设备或传送至远程设备,这可以包括发送存储器中所存储的数据。网络接口1050可以接收来自远程设备的数据,这可以包括将接收到的数据存储到存储器中。
在一个示例中,系统1000包括一个或多个输入/输出(I/O)接口1060。I/O接口1060可以包括用户可以通过其与系统1000对接(例如,音频对接、字母数字对接、触觉/触摸对接或其他对接)的一个或多个接口组件。外围接口1070可以包括上面没有具体提到的任何硬件接口。外围设备一般是指依赖性地连接至系统1000的设备。依赖性连接是系统1000向在其上执行操作、并且用户与其进行交互的软件平台或硬件平台或这两者提供的连接。
在一个示例中,系统1000包括用于以非易失性方式存储数据的存储子系统1080。在一个示例中,在某些系统实现方式中,存储1080的至少某些部件可以与存储器子系统1020的组件重叠。存储子系统1080包括(多个)存储设备1084,其可以是或可以包括用于以非易失性方式存储大量数据的任何常规介质,诸如一个或多个基于磁性、固态或光学的盘、或组合。存储1084以持久状态来保持代码或指令和数据1086(例如,不论对系统1000的供电的中断,值均被保留)。存储1084一般可以被认为是“存储器”,但存储器1030典型地是向处理器1010提供指令的正在执行或操作的存储器。尽管存储1084是非易失性的,但存储器1030可以包括易失性存储器(例如,如果对系统1000的功率中断,则数据的值或状态是不确定的)。在一个示例中,存储子系统1080包括用于与存储1084对接的控制器1082。在一个示例中,控制器1082是接口1014或处理器1010的实体部分,或者可以包括处理器1010和接口1014两者中的电路或逻辑。
易失性存储器是在对设备的功率中断的情况下其状态(以及由此其中所存储的数据)是不确定的存储器。动态易失性存储器使用对设备中所存储的数据进行刷新以维持状态。动态易失性存储器的一个示例包括DRAM(动态随机存取存储器)或某种变型(诸如同步DRAM(SDRAM))。易失性存储器的示例包括高速缓存。本文所描述的存储器子系统可与数种存储器技术兼容,这些存储器技术诸如DDR3(双倍数据速率版本3,最初由JEDEC(联合电子设备工程委员会)于2007年6月16日发布)。DDR4(DDR版本4,由JEDEC于2012年9月发布的初始规范),DDR4E(DDR版本4),LPDDR3(低功率DDR版本3,JESD209-3B,由JEDEC于2013年8月发布),LPDDR4(LPDDR版本4,JESD209-4,最初由JEDEC于2014年8月发布),WIO2(宽输入/输出版本2,JESD229-2,最初由JEDEC于2014年8月发布),HBM(高带宽存储器,JESD325,最初由JEDEC于2013年10月发布),LPDDR5(目前在由JEDEC进行讨论),HBM2(HBM版本2,目前在由JEDEC进行讨论),或其他存储器技术或存储器技术的组合,以及基于此类规范的变型或扩展的技术。JEDEC标准可在www.jedec.org获得。
非易失性存储器(NVM)设备是即使到设备的功率中断其状态也是确定性的存储器。在一个实施例中,NVM设备可包括块可寻址存储器设备,诸如NAND技术,或更具体地,多阈值级NAND闪存(例如,单级单元(“SLC”)、多级单元(“MLC”)、四级单元(“QLC”)、三级单元(“TLC”)或某种其他NAND)。NVM设备可包括字节可寻址就地写入三维交叉点存储器设备、或其他字节可寻址就地写入NVM设备(也被称为持久性存储器),诸如单级或多级相变存储器(PCM)或带开关的相变存储器(PCMS)、
Figure BDA0003703150150000233
OptaneTM存储器、使用硫属化物相变材料(例如,硫属化物玻璃)的NVM设备、包括金属氧化物基底、氧空位基底和导电桥随机存取存储器(CB-RAM)的电阻式存储器、纳米线存储器、铁电随机存取存储器(FeTRAM、FRAM)、结合忆阻器技术的磁阻随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、基于自旋电子磁结存储器的设备、基于磁隧穿结(MTJ)的设备、基于DW(畴壁)和SOT(自旋轨道转移)的设备、基于晶闸管的存储器设备、上述中的一个或多个的组合或其他存储器。
功率源(未描绘)向系统1000的部件提供功率。更具体地,功率源典型地对接至系统1000中的一个或多个功率供应以向系统1000的组件提供功率。在一个示例中,功率供应包括用于插入到墙壁插座中的AC-DC(交流-直流)适配器。此类AC功率可以是可再生能源(例如,太阳能)功率源。在一个示例中,功率源包括DC功率源,诸如外部AC到DC转换器。在一个示例中,功率源或功率供应包括用于通过接近充电场来充电的无线充电硬件。在一个示例中,功率源可包括内部电池、交流供应、基于动作的电源、太阳能电源、或燃料电池源。
在示例中,系统1000可以使用处理器、存储器、存储、网络接口和其他组件的互连的计算橇板来实现。可以使用诸如以下各项的高速互连:以太网(IEEE 802.3)、远程直接存储器访问(RDMA)、无限带宽(InfiniBand)、网际广域RDMA协议(iWARP)、传输控制协议(TCP)、用户数据报协议(UDP)、快速UDP网际连接(QUIC)、通过汇聚以太网的RDMA(RoCE)、外围组件互连快捷(PCIe)、
Figure BDA0003703150150000231
快速路径互连(QPI)、英特尔超路径互连(UPI)、
Figure BDA0003703150150000232
芯片上系统结构(IOSF)、Onipath、计算快捷链路(CXL)、超传输、高速结构、NVLink、高级微控制器总线架构(AMBA)互连、OpenCAPI、Gen-Z、无限结构(IF)、用于加速器的高速缓存一致互连(CCIX)、3GPP长期演进(LTE)(4G)、3GPP 5G、及其变体。数据可以使用诸如结构上NVMe(NVMe-oF)或NVMe之类的协议被复制或存储到虚拟化存储节点或者被访问。
本文中的实施例可在各种类型的计算、智能手机、平板电脑、个人计算机和联网装备中实现,诸如在数据中心和/或服务器场环境中采用的那些交换机、路由器、机架和刀片式服务器。数据中心和服务器场中使用的服务器包括阵列式服务器配置,诸如基于机架的服务器或刀片式服务器。这些服务器经由各种网络规定而通信地被互连,这些网络规定诸如利用局域网(LAN)之间适当的交换和路由设施将服务器集合分区为LAN以形成私有内联网。例如,云主控设施可典型地采用具有众多服务器的大型数据中心。刀片包括被配置成用于执行服务器型功能的单独的计算平台,即“卡片上服务器”。相应地,每个刀片包括常规服务器常见的组件,包括主印刷电路板(主板)和安装至该板的其他组件,主印刷电路板提供用于耦合适当的集成电路(IC)的内部布线(例如,总线)。
在一些示例中,网络接口和本文中所描述的其他实施例可以与以下各项结合使用:基站(例如,3G、4G、5G等等)、宏基站(例如,5G网络)、微微站(picostation)(例如,兼容IEEE 802.11的接入点)、纳米站(例如,用于点对多点(PtMP)应用)、内部数据中心、外部数据中心、边缘网络元件、雾网络元件、和/或混合数据中心(例如,使用虚拟化、云和软件定义联网来跨物理数据中心和分布式多云环境递送应用工作负荷的数据中心)。
可使用硬件元件、软件元件或两者的组合来实现各示例。在一些示例中,硬件元件可包括器件、部件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等等)、集成电路、ASIC、PLD、DSP、FPGA、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等等。在一些示例中,软件元件可包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号,或其任何组合。确定是否使用硬件元件和/或软件元件来实现示例可能根据任何数量的因素而不同,这些因素诸如,如对于给定实现方式所期望的所需的计算速率、功率电平、热容限、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其他设计或性能约束。处理器可以是硬件状态机、数字控制逻辑、中央处理单元、或者任何硬件、固件和/或软件元件的一个或多个组合。
一些示例可使用制品或至少一种计算机可读介质来实现,或者可被实现为制品或至少一种计算机可读介质。计算机可读介质可包括用于存储逻辑的非瞬态存储介质。在一些示例中,非瞬态存储介质可包括能够存储电子数据的一种或多种类型的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移除存储器或不可移除存储器,可擦除存储器或不可擦除存储器,可写入存储器或可重写存储器等等。在一些示例中,逻辑可包括各种软件元件,诸如软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。
根据一些实施例,计算机可读介质可包括用于存储或维持指令的非瞬态存储介质,这些指令在由机器、计算设备或系统执行时使得机器、计算设备或系统执行根据所描述示例的方法和/或操作。指令可包括任何合适类型的代码,如源代码、经编译的代码、经解释的代码、可执行代码、静态代码、动态代码等等。指令可根据预定义的计算机语言、方式或语法来实现,以用于指令机器、计算设备或系统执行某一功能。指令可使用任何合适的高级的、低级的、面向对象的、可视的、经编译的和/或经解释的编程语言来实现。
至少一个示例的一个或多个方面可由存储在至少一个机器可读介质上的表示性指令来实现,指令表示处理器内的各种逻辑,指令在由机器、计算设备或系统读取时使得该机器、计算设备或系统制造用于执行本文中所描述的技术的逻辑。被称为“IP核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
短语“一个示例”或“示例”的出现不一定全部指代同一示例或实施例。本文中描述的任何方面可以与本文中描述的任何其他方面或类似方面组合,不论这些方面是否相对于同一附图或要素来描述。在附图中描绘的框功能的划分、省略或包括无法推断出用于实现这些功能的硬件部件、电路、软件和/或元件一定要被划分、省略或包括在各实施例中。
可以使用表达“耦合的”和“连接的”以及它们的派生词来描述一些示例。这些术语并不必旨在作为彼此的同义词。例如,使用术语“连接的”和/或“耦合的”的描述可指示两个或更多元件彼此处于直接的物理或电接触。然而,术语“耦合的”还可以意味着两个或更多个元件彼此未直接接触,但仍然彼此进行合作或交互。
本文中的术语“第一”、“第二”等不指示任何顺序、数量或重要性,而是用于在要素之间进行区分。本文中的术语“一(“a”和“an”)”不指示对数量的限制,而是指示存在至少一个所引用的项。本文中参考信号使用的术语“断言的”指示信号的状态,其中信号是活跃的,并且这可以通过向信号施加逻辑0或逻辑1的任何逻辑电平来实现。术语“接着”或“在……之后”可以指代紧接着或跟在另一个或另一些事件之后。也可以根据替代实施例执行步骤的其他序列。此外,可以取决于特定应用添加或移除附加步骤。可以使用变化的任何组合,并且受益于本公开的本领域普通技术人员将理解本公开的许多变型、修改和替代实施例。
除非专门另外陈述,否则应理解诸如短语“X、Y或Z中的至少一个”之类的分隔语言在一般用于呈现项、项目等可以是X、Y或Z或其任何组合(例如,X、Y和/或Z)的上下文之内。因此,此类分隔语言一般不旨在暗示并且不应暗示某些实施例需要至少一个X、至少一个Y或至少一个Z各自都存在。此外,除非专门另外陈述,否则还应理解诸如短语“X、Y和Z中的至少一个”之类的分隔语言意味着X、Y、Z或其任何组合,包括“X、Y和/或Z”。
下文提供本文中公开的设备、系统和方法的说明性示例。设备、系统和方法的实施例可包括以下所描述的示例中的任何一个或多个以及其任何组合。
示例1包括一个或多个示例,并包括一种设备,该设备包括:包含电路系统的网络接口设备,该电路系统用于:接收具有目标逻辑块地址(LBA)的访问请求;以及基于存储至少一个对象的访问请求的目标介质,将目标LBA转换为地址,并基于地址访问目标介质中的内容。
示例2包括一个或多个示例,其中将目标LBA转换为地址包括:访问将LBA映射到以下各项中的一个或多个的转换条目:物理地址或虚拟地址。
示例3包括一个或多个示例,其中将目标LBA转换为地址包括:请求软件定义存储(SDS)堆栈,以提供将LBA转换为以下各项中的一个或多个:物理地址或虚拟地址;以及将转换存储到映射表中,以供电路系统访问。
示例4包括一个或多个示例,并且包括在接收到访问请求之前接收至少一个条目,该至少一个条目包括将LBA映射到以下各项中的一个或多个的转换条目:物理地址或虚拟地址。
示例5包括一个或多个示例,其中网络接口设备包括以下各项中的一个或多个:网络接口控制器(NIC)、SmartNIC、路由器、交换机、转发元件、基础设施处理单元(IPU)或数据处理单元(DPU)。
示例6包括一个或多个示例,并包括与网络接口设备通信地耦合的存储介质,其中存储介质包括目标介质。
示例7包括一个或多个示例,并且包括与网络接口设备通信地耦合的主机系统,其中主机系统用于向网络接口设备提供至少一个条目,该至少一个条目包括将LBA映射到以下各项中的一个或多个的转换条目:物理地址或虚拟地址。
示例8包括一个或多个示例,其中至少一个条目是锁定且不可修改的,并且对至少一个条目的修改包括至少一个条目的无效以及将LBA映射到以下各项中的一个或多个的至少另一个条目的添加:物理地址或虚拟地址。
示例9包括一个或多个示例,其中网络接口设备用于基于以下各项中的一个或多个驱逐至少一个条目:优先级、最近使用最少(LRU)或LBA到地址的转换的改变。
示例10包括一个或多个示例,并包括一种方法,该方法包括:在网络接口设备处接收具有目标逻辑块地址(LBA)的访问请求,以及基于存储至少一个对象的访问请求的目标介质、以及目标LBA到网络接口设备可访问的地址的转换,在网络接口设备处将目标LBA转换为地址并基于地址访问目标介质中的内容。
示例11包括一个或多个示例,其中访问请求包括写请求或读请求。
示例12包括一个或多个示例,其中访问请求通过结构上非易失性存储器快速(NVMe-oF)接收。
示例13包括一个或多个示例,其中将目标LBA转换为地址并基于地址访问目标介质中的内容包括:访问将LBA映射到以下各项中的一个或多个的转换条目:物理地址或虚拟地址。
示例14包括一个或多个示例,其中将目标LBA转换为地址并基于地址访问目标介质中的内容包括:请求软件定义存储(SDS)堆栈,以提供LBA到以下各项中的一个或多个的转换:物理地址或虚拟地址;以及将转换存储到映射表中,以供网络接口设备访问。
示例15包括一个或多个示例,并且包括在接收到访问请求之前接收至少一个条目,该至少一个条目包括将LBA映射到以下各项中的一个或多个的转换条目:物理地址或虚拟地址。
示例16包括一个或多个示例,其中网络接口设备包括以下各项中的一个或多个:网络接口控制器(NIC)、SmartNIC、路由器、交换机、转发元件、基础设施处理单元(IPU)或数据处理单元(DPU)。
示例17包括一个或多个示例,并包括一种计算机可读介质,包括存储于其上的指令,该指令如果由一个或多个处理器执行则使得一个或多个处理器用于:在操作时将网络接口设备配置成用于:接收具有目标逻辑块地址(LBA)的访问请求;以及基于存储至少一个对象的访问请求的目标介质,将目标LBA转换为地址并基于地址访问目标介质中的内容。
示例18包括一个或多个示例,其中将访问请求转换为访问至少一个对象的格式包括:访问将LBA映射到以下各项中的一个或多个的转换条目:物理地址或虚拟地址。
示例19包括一个或多个示例,其中将访问请求转换为访问至少一个对象的格式包括:请求软件定义存储(SDS)堆栈,以提供LBA到以下各项中的一个或多个的转换:物理地址或虚拟地址;以及将转换存储到映射表中,以供网络接口设备访问。
示例20包括一个或多个示例,并包括存储在其上的指令,指令如果由一个或多个处理器执行,则使一个或多个处理器用于:在接收到访问请求之前,接收至少一个条目,该至少一个条目包括将LBA映射到以下各项中的一个或多个的转换条目:物理地址或虚拟地址。

Claims (22)

1.一种设备,包括:
包含电路系统的网络接口设备,所述电路系统用于:
接收与目标逻辑块地址LBA相关联的访问请求;以及
基于存储至少一个对象的访问请求的目标介质,将所述目标LBA转换为地址,并基于所述地址访问所述目标介质中的内容。
2.如权利要求1所述的设备,其特征在于,将所述目标LBA转换为地址包括:
访问将所述LBA映射到以下各项中的一个或多个的转换条目:物理地址或虚拟地址。
3.如权利要求1所述的设备,其特征在于,将所述目标LBA转换为地址包括:
请求软件定义存储SDS堆栈,以提供所述LBA到以下各项中的一个或多个的转换;物理地址或虚拟地址;以及
将转换存储到映射表中以供所述电路系统访问。
4.如权利要求1所述的设备,包括:
在接收到所述访问请求之前,接收至少一个条目,所述至少一个条目包括将所述LBA映射到以下各项中的一个或多个的转换条目:物理地址或虚拟地址。
5.如权利要求1所述的设备,包括:
与所述网络接口设备通信地耦合的主机系统,其中所述主机系统用于向所述网络接口设备提供至少一个条目,所述至少一个条目包括将所述LBA映射到以下各项中的一个或多个的转换条目:物理地址或虚拟地址。
6.如权利要求5所述的设备,其特征在于,
所述至少一个条目是锁定且被标记为不可修改,并且
对所述至少一个条目的修改包括所述至少一个条目的无效以及将所述LBA映射到以下各项中的一个或多个的至少一个其他条目的添加:物理地址或虚拟地址。
7.如权利要求5所述的设备,其特征在于,所述网络接口设备用于基于以下各项中的一个或多个驱逐至少一个条目:优先级、最近使用最少LRU或LBA到地址的转换的改变。
8.如权利要求1-7中任一项所述的设备,包括:
与所述网络接口设备通信地耦合的存储介质,其中所述存储介质包括所述目标介质。
9.如权利要求1-8中任一项所述的设备,其特征在于,所述网络接口设备包括以下各项中的一项或多项:网络接口控制器(NIC)、SmartNIC、路由器、交换机、转发元件、基础设施处理单元(IPU)或数据处理单元(DPU)。
10.一种方法,包括:
在网络接口设备处接收与目标逻辑块地址LBA相关联的访问请求;以及
基于存储至少一个对象的访问请求的目标介质、以及所述目标LBA到所述网络接口设备可访问的地址的转换,在所述网络接口设备处将所述目标LBA转换为地址并基于所述地址访问所述目标介质中的内容。
11.如权利要求10所述的方法,其特征在于,所述访问请求包括写请求或读请求。
12.如权利要求10所述的方法,其特征在于,将所述目标LBA转换为地址并基于所述地址访问所述目标介质中的内容包括:
访问将所述LBA映射到以下各项中的一个或多个的转换条目:物理地址或虚拟地址。
13.如权利要求10所述的方法,其特征在于,将所述目标LBA转换为地址并基于所述地址访问所述目标介质中的内容包括:
请求软件定义存储SDS堆栈,以提供所述LBA到以下各项中的一个或多个的转换;物理地址或虚拟地址;以及
将所述转换存储到映射表中以供所述网络接口设备访问。
14.如权利要求10所述的方法,包括:
在接收到所述访问请求之前,接收至少一个条目,所述至少一个条目包括将所述LBA映射到以下各项中的一个或多个的转换条目:物理地址或虚拟地址。
15.如权利要求10-14中任一项所述的方法,其特征在于,所述访问请求通过基于结构上非易失性存储器快速NVMe-oF的通信接收。
16.如权利要求10-15中任一项所述的方法,其特征在于,所述网络接口设备包括以下各项中的一项或多项:网络接口控制器(NIC)、SmartNIC、路由器、交换机、转发元件、基础设施处理单元(IPU)或数据处理单元(DPU)。
17.一种计算机可读介质,包括存储于其上的指令,所述指令如果由一个或多个处理器执行则使得所述一个或多个处理器用于:
在操作时将网络接口设备配置成用于:
接收具有目标逻辑块地址LBA的访问请求;以及
基于存储至少一个对象的访问请求的目标介质,将所述目标LBA转换为地址并基于所述地址访问所述目标介质中的内容。
18.如权利要求17所述的计算机可读介质,其特征在于,将所述访问请求转换为访问至少一个对象的格式包括:
访问将所述LBA映射到以下各项中的一个或多个的转换条目:物理地址或虚拟地址。
19.如权利要求17所述的计算机可读介质,其特征在于,将所述访问请求转换为访问至少一个对象的格式包括:
请求软件定义存储SDS堆栈,以提供所述LBA到以下各项中的一个或多个的转换;物理地址或虚拟地址;以及
将转换存储到映射表中以供所述网络接口设备访问。
20.如权利要求17所述的计算机可读介质,包括存储于其上的指令,所述指令如果由一个或多个处理器执行则使得所述一个或多个处理器用于:
在接收到所述访问请求之前,接收至少一个条目,所述至少一个条目包括将所述LBA映射到以下各项中的一个或多个的转换条目:物理地址或虚拟地址。
21.如权利要求17-20中任一项所述的计算机可读介质,其特征在于,所述访问请求通过基于结构上非易失性存储器快速NVMe-oF的通信接收。
22.如权利要求17-21中任一项所述的计算机可读介质,其特征在于,所述网络接口设备包括以下各项中的一项或多项:网络接口控制器(NIC)、SmartNIC、路由器、交换机、转发元件、基础设施处理单元(IPU)或数据处理单元(DPU)。
CN202210698780.6A 2021-06-26 2022-06-20 目标网络接口设备上的地址转换 Pending CN115529291A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/359,554 US20210326270A1 (en) 2021-06-26 2021-06-26 Address translation at a target network interface device
US17/359,554 2021-06-26

Publications (1)

Publication Number Publication Date
CN115529291A true CN115529291A (zh) 2022-12-27

Family

ID=78082483

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210698780.6A Pending CN115529291A (zh) 2021-06-26 2022-06-20 目标网络接口设备上的地址转换

Country Status (3)

Country Link
US (1) US20210326270A1 (zh)
CN (1) CN115529291A (zh)
DE (1) DE102022107778A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11487690B2 (en) * 2019-06-28 2022-11-01 Hewlett Packard Enterprise Development Lp Universal host and non-volatile memory express storage domain discovery for non-volatile memory express over fabrics
CN115220936B (zh) * 2022-09-20 2023-01-10 之江实验室 一种多类传感器数据在控制器中零拷贝的方法和装置
CN116339916B (zh) * 2023-03-17 2023-11-10 摩尔线程智能科技(北京)有限责任公司 一种内存虚拟化方法及装置、电子设备和存储介质

Also Published As

Publication number Publication date
DE102022107778A1 (de) 2022-12-29
US20210326270A1 (en) 2021-10-21

Similar Documents

Publication Publication Date Title
US11934330B2 (en) Memory allocation for distributed processing devices
US11487675B1 (en) Collecting statistics for persistent memory
US11929927B2 (en) Network interface for data transport in heterogeneous computing environments
US11748278B2 (en) Multi-protocol support for transactions
US20210073151A1 (en) Page-based remote memory access using system memory interface network device
EP3706394B1 (en) Writes to multiple memory destinations
US11132328B2 (en) High level instructions with lower-level assembly code style primitives within a memory appliance for accessing memory
CN106688217B (zh) 用于融合联网和存储的方法和系统
CN115039077A (zh) 为实时虚拟化执行环境迁移维护存储命名空间标识符
US20210359955A1 (en) Cache allocation system
US20210326270A1 (en) Address translation at a target network interface device
US20200379922A1 (en) Adaptive routing for pooled and tiered data architectures
US11709774B2 (en) Data consistency and durability over distributed persistent memory systems
US11210240B2 (en) Memory appliance couplings and operations
US20210303477A1 (en) Management of distributed shared memory
CN117529904A (zh) 分组格式调整技术
US20220137864A1 (en) Memory expander, host device using memory expander, and operation method of sever system including memory expander
US20220114030A1 (en) Initiator-side offload for scale-out storage
US20220113913A1 (en) Target offload for scale-out storage
US20210328945A1 (en) Configurable receive buffer size
KR20230100522A (ko) 스토리지 장치, 스토리지 장치의 동작 방법 및 스토리지 시스템
CN114661639A (zh) 地址转换技术

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication