CN115039077A - 为实时虚拟化执行环境迁移维护存储命名空间标识符 - Google Patents

为实时虚拟化执行环境迁移维护存储命名空间标识符 Download PDF

Info

Publication number
CN115039077A
CN115039077A CN202080095204.1A CN202080095204A CN115039077A CN 115039077 A CN115039077 A CN 115039077A CN 202080095204 A CN202080095204 A CN 202080095204A CN 115039077 A CN115039077 A CN 115039077A
Authority
CN
China
Prior art keywords
execution environment
storage
platform
interface
memory
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
CN202080095204.1A
Other languages
English (en)
Inventor
何塞·尼尔
布拉德利·A·伯雷斯
基尔·博伊尔
大卫·诺尔德纳
基思·肖
卡尔·P·布鲁梅尔
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 CN115039077A publication Critical patent/CN115039077A/zh
Pending legal-status Critical Current

Links

Images

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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

本文描述的示例涉及将虚拟化执行环境从第一平台迁移到第二平台,同时保留命名空间标识符的使用并允许虚拟化执行环境发布存储事务。第一平台可以包括第一中央处理单元或第一网络接口。第二平台可以包括与第一中央处理单元不同的中央处理单元和与第一网络接口相同或不同的网络接口。第二平台可以独立于与第二平台处的迁移的虚拟化执行环境相关联的一个或多个标识符保持访问许可和目标介质格式。未执行的存储事务可以迁移到第二平台执行。

Description

为实时虚拟化执行环境迁移维护存储命名空间标识符
优先权声明
本申请根据35U.S.C.§365(c)要求2020年3月10日提交的题为“MAINTAININGSTORAGE NAMESPACE IDENTIFIERS FOR LIVE VIRTUALIZED EXECUTION ENVIRONMENTMIGRATION”的美国申请号16/814,788的优先权,其全部内容被并入本文。
描述
分布式块存储系统通过呈现逻辑块设备来为应用程序提供块设备功能,这些逻辑块设备存储在分散于大型远程存储设备池中的段中。要使用这些逻辑块设备,应用程序需要确定它们需要访问的所有段的位置。计算平台可以使用结构(fabric)或网络访问存储设备。使用结构或网络访问存储装置的示例方案包括基于结构的非易失性存储器快速(NVMe-oF)或其他基于结构或网络规范的专有存储装置。NVMe-oF至少在NVM Express,Inc的2016年6月5日的“NVM Express Over Fabrics”修订版1.0及其变体和修订版中有所描述。
附图说明
图1A和1B描绘了存储网络拓扑的高级示例。
图2描绘了示例系统。
图3描绘了确定访问特定命名空间标识符的命令是否可以继续的示例。
图4描绘了与存储事务相关的命令执行的示例。
图5描绘了与虚拟化执行环境的迁移相关联的各种源和目的环境的示例。
图6描绘了用于虚拟化执行环境的迁移的过程。
图7描绘了系统。
图8描绘了环境。
图9描绘了网络接口。
具体实施方式
非易失性存储器快速(NVMe)规范描述了一种用于通过外围组件互连高速(PCIe)端口访问数据存储系统的系统。NVMe例如在NVM ExpressTM Base Specification,Revision1.3c(2018)中进行了描述,通过引用将其全部并入。NVMe允许主机将存储区域指定为单独的命名空间。命名空间可以是非易失性存储器中的可寻址域,其具有已格式化来用于块访问的选定数量的存储块。命名空间可以包括固态驱动器(SSD)中介质的可寻址部分,或跨越多个SSD或其他数据存储设备的多设备存储器空间。命名空间ID(NSID)是用于关联的命名空间的唯一标识符。主机设备可以通过指定命名空间、控制器ID和一个或多个块的关联逻辑地址(例如,逻辑块地址(LBA))来访问特定的非易失性存储器。
在一些情况下,智能网络接口控制器(SmartNIC)支持从主机计算机卸载存储基础设施协议处理堆栈。虚拟化执行环境和裸机实例(例如,在服务器上运行的单个客户端)可以运行NVMe驱动程序来处理存储事务,而无需将NVMe SSD直接附接到主机(例如,分解存储装置)或管理程序将NVMe协议转换为另一种传输层协议。例如,SmartNIC可以使用NVMe-oF卸载引擎向网络连接的SSD发出存储事务。SmartNIC可以提供配置接口,用于管理SmartNIC资源和NVMe-oF卸载引擎的配置。
图1A和1B描绘了可以使用NVMe-oF的存储网络拓扑的高级示例。在图1A中,示出了场景100,其中显示为H的各种主机设备使用发起者NIC通过网络向一个或多个目标NIC发出存储事务。目标NIC可以具有一个或多个NVMe兼容存储设备102。在图1B中,示出了场景150,其中示出了超融合拓扑,由此主机设备可以访问在本地连接到主机或通过网络远程连接到主机设备的存储装置152。如果主机设备通过网络请求存储事务,则主机设备的NIC形成包含存储事务的分组,并将该分组传输到目标存储设备的NIC。图1A和1B的拓扑可以混合。这些仅仅是说明性的更高级别的示例,这些示例示出了使用各种实施例的可能环境。
NVMe命名空间是可格式化为逻辑块的非易失性存储器(NVM)或其他类型的存储器的量。命名空间可以包括N个逻辑块,逻辑块地址从0到(N-1)。可以支持容量的精简配置和重新分配,因此命名空间的NVM容量可能小于命名空间的大小。命名空间ID(NSID)是至少由主机用来标识要访问的命名空间的标识符。在一些情况下,可以将NSID分配给虚拟执行环境。例如,可以为虚拟机VM1分配NSID1,为虚拟机VM2分配NSID2,等等。当使用SR-IOV时,NSID对功能(例如,物理功能(PF)或虚拟功能(VF))而言可以是唯一的。当使用SIOV时,命名空间对功能和队列组而言可以是唯一的。NVMe通过多个控制器提供对命名空间的访问。对于运行NVMe驱动程序的虚拟机(或其他隔离域或虚拟化执行环境),命名空间显示为可以在其上部署文件系统和应用程序的标准块设备。
在一些场景中,隔离域或虚拟化执行环境从服务器或计算平台迁移到另一个计算平台或使用不同的网络接口,包括可组合或复合节点。迁移还可能涉及更改虚拟化执行环境在其上运行的核或处理器,即使在相同的CPU节点、服务器、数据中心或机架中也是如此。当隔离域或虚拟化执行环境迁移到不同的计算平台或使用不同的网络接口时,在某些版本的NVMe或其他规范下,要保留命名空间ID(NSID)。
各种实施例允许从源平台迁移被分配使用NSID的隔离域或虚拟化执行环境,同时当在第二平台上运行时保留请求者和目标访问许可和排除。例如,源平台可以使用支持发送和接收存储命令的网络接口,该存储命令使用输入/输出(I/O)命令的映射和对主机计算机中共享存储器的响应,并允许到具有多核处理器的底层介质的并行I/O数据路径,以促进高吞吐量并缓解中央处理器(CPU)瓶颈。在一些示例中,网络接口支持NVMe-oF事务。与存储设备的NVMe-oF事务可以使用多种协议中的任何一种(例如,远程直接存储器访问(RDMA)、InfiniBand、FibreChannel、TCP/IP、聚合以太网上的RDMA(RoCE)、iWARP、快速UDP互联网连接(QUIC)等)。源平台可以是这样的计算平台,其使用其主机中央处理单元支持NVMe或NVMe-oF事务和/或将对NVMe-oF事务的支持卸载到网络接口。类似地,第二平台可以是这样的计算平台,其使用其主机中央处理单元支持NVMe或NVMe-oF事务和/或将对NVMe-oF事务的支持卸载到网络接口。
各种实施例允许将运行NVMe驱动程序的隔离域或虚拟化执行环境实时迁移到第二平台和/或NIC。在云数据中心中,隔离域或虚拟化执行环境可以从一个核迁移到另一个核或从一个计算节点迁移到另一个计算节点,而不会对NVMe驱动程序造成任何功能中断,以便它可以继续向一个或多个NSID发出存储事务。作为实时迁移的一部分,可以将不同的物理功能(PF)标识符、虚拟功能(VF)标识符或提交队列标识符分配给第二平台和/或NIC上的迁移的隔离域或虚拟化执行,但NSID不变。与确定许可和排除相关的参数(例如,请求者和目标)以及一个或多个NSID的由NSID引用的目标介质的格式没有改变,尽管使用了第二平台以及在第二平台处分配的PF标识符、VF标识符、提交队列标识符或其他参数的潜在变化。因此,通过将NSID和许可/排除以及目标介质格式迁移到第二平台和/或NIC,到具有对应于NSID的逻辑块的存储设备的存储事务可以在隔离域或虚拟化执行环境迁移之后继续而不会中断。
图2描绘了示例系统。主机系统200可以包括各种处理器202和存储器204。处理器202可以是能够执行指令的执行核或计算引擎。核可以访问自己的高速缓存和只读存储器(ROM),或者多个核可以共享高速缓存或ROM。核可以是同质和/或异构设备。可以使用任何类型的处理器间通信技术,例如但不限于消息传递、处理器间中断(IPI)、处理器间通信等。核可以以任何类型的方式连接,例如但不限于总线、环或网状结构。处理器102可以支持一个或多个指令集(例如,x86指令集(具有一些已添加到较新版本的扩展);加利福尼亚州Sunnyvale的MIPS科技公司的MIPS指令集;加利福尼亚州Sunnyvale的ARM公司的ARM指令集(具有可选的附加扩展,例如NEON)),包括此处描述的(一个或多个)指令。
处理器202可以执行操作系统和一个或多个虚拟化执行环境(例如,VM 206)。虚拟化执行环境可以至少包括虚拟机、进程容器、机器容器或应用进程。虚拟机(VM)可以是运行操作系统和一个或多个应用程序的软件。VM可以由规范、配置文件、虚拟磁盘文件、非易失性随机存取存储器(NVRAM)设置文件和日志文件来定义,并以主机计算平台的物理资源为后盾。VM可以是安装在模拟专用硬件的软件上的OS或应用程序环境。最终用户在虚拟机上的体验与在专用硬件上的体验相同。被称为管理程序的专门软件完全模拟PC客户端或服务器的CPU、存储器、硬盘、网络和其他硬件资源,从而使虚拟机能够共享资源。管理程序可以模拟多个相互隔离的虚拟硬件平台,从而允许虚拟机在同一底层物理主机上运行
Figure BDA0003773354600000051
Figure BDA0003773354600000052
Server操作系统。
容器可以是应用程序、配置和依赖关系的软件包,因此应用程序可以在一个计算环境到另一个计算环境上可靠地运行。容器可以共享安装在服务器平台上的操作系统并作为隔离进程运行。容器可以是软件包,其包含软件运行所需的一切,例如系统工具、库和设置。容器不像传统的软件程序那样安装,这允许它们与其他软件和操作系统本身隔离。隔离可以包括通过特定容器而不是另一容器对存储器的访问。容器的隔离性质提供了若干益处。首先,容器中的软件将在不同的环境中相同运行。例如,包含PHP和MySQL的容器可以在Linux计算机和Windows机器上以相同方式运行。其次,容器提供了额外的安全性,因为软件不会影响主机操作系统。虽然已安装的应用程序可能会更改系统设置并修改资源,例如Windows注册表,但容器只能修改容器内的设置。
可以使用单根I/O虚拟化(SR-IOV)扩展使多个虚拟化执行环境(例如,系统映像)能够在单节点系统(例如,单根联合体)下共享PCIe硬件资源。SR-IOV至少可从外围组件互连特殊兴趣组(PCI SIG)获得的规范兼容,这些规范包括诸如单根I/O虚拟化和共享规范修订版1.1(2010)及其变体和更新的规范。SR-IOV设备为PCIe层次结构内的虚拟功能提供总线设备功能(BDF)标识符;PCIe层次结构内虚拟功能(VF)的唯一存储器地址空间;独特的错误记录和升级方案;PCIe层次结构内每个VF的独特MSI/MSI-X能力;PCIe层次结构内每个VF的电源管理功能。此外,SR-IOV提供发现和配置虚拟化能力的能力,这些虚拟化能力包括多个VF,PCIe设备将这多个VF与设备以及VF支持的基地址寄存器(BAR)机制的类型相关联。
系统可以使用可扩展I/O虚拟化(S-IOV)。S-IOV是一种基于PCIe的虚拟化技术,其在I/O设备的虚拟化执行环境(例如跨大量虚拟化执行环境的网络控制器、存储控制器、图形处理单元和其他硬件加速器)之间提供可扩展共享。与SR-IOV在PF上创建多个VF的粗粒度设备分区方法不同,SIOV使软件能够利用硬件辅助灵活地组合虚拟设备,以更精细的粒度进行设备共享。组合的虚拟设备上的性能关键操作被直接映射到底层设备硬件,而非关键操作被通过主机中特定于设备的组合软件模拟。SIOV的技术规范是
Figure BDA0003773354600000061
可扩展I/O虚拟化技术规范,修订版1.0,2018年6月。
根据一些实施例,网络接口驱动程序208和212可以提供对远程存储设备的存储命令的使用。例如,虚拟化执行环境(例如,VM 206)可以发出存储命令,并且驱动程序208可以通过向SmartNIC 250中的队列发出命令来使用NVMe或NVMe-oF向远程存储设备发出存储命令。如果操作系统内核210或虚拟化执行环境(例如VM 206)使用SIOV或SR-IOV,驱动程序212和驱动程序208访问各自的物理功能(PF)和特定的虚拟功能(VF)。存储命令的示例包括但不限于:读取、写入、添加队列、删除队列、错误日志、启用控制器、或禁用控制器。
SmartNIC 250可以提供比在主机200上运行的软件解决方案更高性能和更低功耗的硬件卸载,从而实现对I/O操作的卸载。SmartNIC 250可以极大地扩展受支持的NSID和虚拟功能的数量。例如,为了向SmartNIC250发出存储命令,虚拟化执行环境(例如,VM 206)可以使用接口252将尾指针写入门铃寄存器。在一些示例中,接口252可以与PCIe兼容,尽管可以使用其他接口。在一些示例中,虚拟化执行环境为SmartNIC 250指定具有存储命令的表键(table key)以识别相关许可和目标驱动器格式。例如,表条目可以指定{FType[1:0],PF[2:0],ID[11:0],NSID[11:0]}。FType可以识别存储事务的源(例如,PF或VF)。PF可以表示物理功能编号。ID可以标识队列的唯一NSID范围。NSID可以表示存储事务的NSID。
SmartNIC 250可以包括远程存储事务电路254以使虚拟化执行环境能够定义NSID。远程存储事务电路254可以使用查找表(例如,内容可寻址存储器(CAM)或散列表)来访问来自一个或多个链接表的内容以确定是否允许来自请求者的存储命令以及是否允许向目标介质设备发出存储命令。当虚拟化执行环境安装在主机200上或从另一个计算节点迁移到主机200时,(一个或多个)表可以由控制平面软件来配置。在一些示例中,关于图3描述的方案可用于确定是否允许存储命令,并且如果允许存储命令,则提供目标介质格式。
注意,在一些示例中,接口可以指以下中的一个或多个:网络接口控制器、网络接口卡、智能网络接口、结构接口、到互连或总线的接口等等。
在一些示例中,与存储事务一起被提供的表键可以被转换为指向第一表中的条目的指针。第一表中的条目可以指示向存储命令的发出者提供什么许可(如果有的话)以及存储命令是被允许还是被拒绝。如果允许存储命令,则该条目还可以引用第二表中的条目。第二表中的条目可以指示在目标介质中给予什么许可(如果有的话)以及存储命令是被允许还是被拒绝。如果存储命令被允许由请求者发出并被允许访问与提供有表键的NSID相对应的地址处的介质,则目标介质格式被提供以供使用并且SmartNIC 250生成分组并将其发送到连接到目标存储设备的目的NIC。
传输层处理器256、分组处理管道258、加密/解密电路260和端口262可用于形成具有适当报头的分组并通过网络或其他连接(例如,结构、互连)利用存储命令将其传输到具有与存储命令的NSID关联的介质的存储设备。在一些示例中,远程直接复制主机控制器270以支持与远程存储设备的RDMA事务。以太网主机控制器272可用于管理涉及与主机200的以太网的多个通信通道。
主机200的处理器202和存储器204或SmartNIC 250的处理器280和存储器282可用于处理未使用远程事务电路254处理的异常路径,例如当在分组传输之前未针对存储命令或其他异常处理或这里描述的处理授予许可时。
图3描绘了确定是否允许请求者访问与NSID相关联的特定地址区域的示例。各种实施例提供了在虚拟化执行环境(其可以被迁移)和访问许可(例如,读或写)和目标介质访问信息之间的间接层。可以使用为特定主机平台、NIC或SmartNIC配置的查找操作来提供间接性。如前所述,源NIC或SmartNIC可以结合NVMe-oF事务使用目标驱动器的NSID和格式。当新的虚拟执行环境被分配给主机时,表304和306可以由控制平面软件配置。
表键的格式可以是{FType[1:0],PF[2:0],ID[11:0],NSID[11:0]}。表键可以索引比实现支持多个NSID范围的表大得多的表。当使用SR-IOV时,表键包括虚拟功能和物理功能标识符编号,以便功能(虚拟或物理)具有自己的NSID范围。当使用S-IOV时,表键支持使用提交队列ID(SQID)来为队列提供唯一的NSID范围。例如,FType可以具有以下值。
FType ID
2'b00(SR-IOV) VF[10:0]
2'b01(保留用于S-IOV) SQID[11:0]
2'b10(PF) 0
2'b11(保留) 0
表键到指向NSID表304的指针302的转换可以将表键转换为指向表304中的值的指针。例如,CAM或散列表可以用于基于表键值生成指针。指针可以引用NISD附件查找表304中的条目。在一些示例中,指针是12位,但是可以使用其他大小。
NISD附件查找表304可以使用指针来识别按源或请求者的许可以及分配给NSID的主要NSID(pNSID)值。NSID附件查找表304将驱动程序分配的NSID附加到内部分配的pNSID。在一些示例中,表304中的多个条目可以与相同的pNSID相关联。例如,不同功能使用的多个NSID可能指向用作引导分区的同一个命名空间。按源的许可可以识别对虚拟化执行环境和功能队列组唯一的存储驱动器的属性。按源的许可可以参考命名空间的配置设置,例如读写使能(Enable)、读使能或写使能。
下面提供了响应于接收到的指针的NSID附件查找表304的输出示例。
Figure BDA0003773354600000091
pNSID可以用作指向主要命名空间ID(pNSID)查找表306的指针。pNSID查找表306可以存储关于分配给pNSID的逻辑块的配置信息并指示按目标介质设备的许可。相反,NSID附件查找表304可以指示请求者的许可。对于pNSID值,表306提供驱动器格式表(例如,元数据大小、扇区或块格式、端到端保护格式、加密启用/禁用、目标(例如,软件队列或硬件卸载)等)以及目标许可(例如,读写使能、读使能、写使能)。在其他实施例中,可以使用单个表来指示请求者和目标许可,而不是使用两个查找。
在一些情况下,在表304中找不到从表键导出的指针的匹配,并且可以遵循异常路径以供主机或NIC进行特殊处理。在一些示例中,一些pNSID值与可由目标(例如SmartNIC的处理器或主机)执行的特殊处理或异常相关联。例如,当一些pNSID值的存储命令要使用SmartNIC不支持的协议传输、或者要使用加密、压缩以及执行NIC处使用目标(例如主机或处理器执行的软件)执行的操作时,可能会发生异常。
例如,如果介质是引导驱动器并且由9个VM(具有不同的表键)共享,则所有9个VM都可以被分配相同的pNSID并访问表306中的相同条目。但是,表304可以指示特定的VM是否能够在与NSID关联的地址处读取或写入目标介质。表304提供PF或VF特定的读和写权限,而表306具有pNSID级别的许可,并提供一种方式来进一步限制所有PF或VF超出PF或VF特定设置访问共享目标介质的访问权限。
图4描绘了与存储事务相关的命令执行的示例。动作402和404可以由主机系统执行,该主机系统支持来自请求者的远程存储IO(输入输出)事务。在一些示例中,主机及其NIC可以支持SR-IOV或SIOV。在402,在队列处从请求者接收IO提交。IO提交可以指示队列已被写入并且门铃已被利用写尾指针写入。请求者可以是一个或多个虚拟化执行环境、驱动程序、操作系统或其应用程序。
在404,从多个队列中选择一个队列来执行下一个IO事务。可以基于适用的服务质量(QoS)来选择队列,其中某些队列可能比其他队列具有优先级,或者基于循环或加权循环方案从队列中选择事务。可以选择存储器资源来存储命令。例如,存储器资源可以是SRAM,用于存储存储命令。存储命令可以是读取、写入、管理或异常中的一项或多项,并具有关联的NSID。
在406,NIC通过接口获取提交队列条目(SQE)。例如,该接口可以与PCIe兼容。在408,NIC解析来自存储器资源的存储命令以确定它的动作。在410,NIC查找请求者的许可权限以确定请求者是否被允许读取或写入与NSID关联的存储区域。表键可以被转换为指向标识请求者许可的表的指针。NIC还提供用于在目标介质设备处查找许可的标识符。该过程继续到412。但是,在不允许请求的操作的情况下可能发生许可违规,并且主机或NIC在420处理此类异常。在没有指示请求者及其命令是否具有许可的一些情况下,主机或NIC可以在420处理情况。
在412,对于来自请求者的被许可执行的命令,NIC在目标介质设备处针对许可执行主要命名空间查找。可以访问表以确定是否使用先前表中的标识符(例如pNSID)授予许可。如果有继续进行的许可,则过程进行到414。但是,在目标处不允许所请求的操作的情况下可能会发生许可违规,并且主机或NIC在420处理此类异常。
在414,执行分组形成和传输。提供驱动器格式表(例如,元数据大小、扇区或块格式、端到端保护格式、加密启用/禁用等)用于与存储命令的分组传输结合使用。在一些情况下,NIC通过复制有效负载或要传输的内容(例如,使用直接存储器访问(DMA))并将分组发送到可以接收目标介质的存储命令的目标NIC来执行分组形成。在一些示例中,NIC可以在传输之前对分组的内容进行加密。在一些情况下,主机处理有效负载提取和分组形成,并指示NIC传输分组。可以使用NIC或主机的任何使用组合来用于分组形成和传输。
在420,可以执行异常处理。例如,当NSID和请求者的某些组合的存储命令将使用NIC不支持的协议传输或将使用加密、压缩以及执行在NIC处使用指定目标主机或处理器执行的软件执行的操作时,可能会发生异常。例如,表可以基于键或指针(例如,pNSID值)指示特定目标的使用。在一些情况下,在不允许请求的动作时会发生异常,在这种情况下,主机可能会警告管理员并检查请求者是否是恶意的。在一些情况下,请求者及其存储事务未被识别,在这种情况下,主机和/或NIC可以向管理员发出错误消息或确定是否应授予许可。
图5描绘了与虚拟化执行环境的迁移相关联的各种源和目的环境的示例。虚拟化执行环境的迁移可以在多种情况下发生。例如,一些原因包括:服务器故障、工作负载平衡、服务器维护或其他原因。管理程序和/或协调器可以管理虚拟化执行环境迁移。控制平面软件可以管理用于在下一个平台和/或NIC处维护许可权限和目标驱动器格式的参数的传输,以提供使用相同NSID用于存储事务的连续性。控制平面可以在连接到源和目的主机和NIC的任何平台上执行。
在500,可以将虚拟化执行环境从使用第一NIC迁移到使用第二NIC用于远程存储事务。结合使用第二NIC的更改,与NSID相关的访问许可(针对请求者和目标NSID)和目标驱动器格式由第二NIC共享并用于远程存储事务。第二NIC可以使用与第一NIC类似的按请求和按目标许可方案,但Ftype、PF编号或ID(或其他参数)可以更改,同时保留支持在第二NIC处使用相同NSID。换句话说,目的平台(例如,主机和/或第二NIC)可以分配不同的Ftype、PF编号或ID(或其他参数),但保留目标驱动器的NSID和格式用于在第二NIC处使用。在一些示例中,第一和第二NIC都使用图3的转换格式,以确定特定存储事务的访问许可和目标驱动器格式。
在525,可以将虚拟化执行环境从使用第一主机迁移到使用第二NIC用于远程存储事务。在此示例中,第一主机使用CPU为虚拟化执行环境的远程存储事务(例如NVMe-oF)生成分组。迁移后,虚拟化执行环境可以使用第二NIC代替其主机系统为远程存储事务形成分组。第二NIC可以使用与第一主机类似的按请求和按目标许可方案,但Ftype、PF编号或ID(或其他参数)可以更改,同时保留支持在第二NIC处使用相同NSID。换句话说,目的平台(例如,运行虚拟化执行环境的第二NIC和/或相关联主机)可以分配不同的Ftype、PF编号或ID(或其他参数),但保留目标驱动器的NSID和格式用于在第二NIC处使用。
在550,可以将虚拟化执行环境从使用第一主机迁移到使用第二主机用于远程存储事务。第二主机可以是与第一主机不同的平台(例如,不同的服务器、机架或数据中心)。在一些情况下,第二主机可以是与第一主机相同的平台(例如,相同的服务器、机架或数据中心),但具有不同的CPU核或不同的CPU节点。在此示例中,第一主机使用CPU为虚拟化执行环境的远程存储事务(例如NVMe-oF)生成分组。迁移后,虚拟化执行环境可以使用不同的CPU为虚拟化执行环境的远程存储事务(例如NVMe-oF)生成分组。第二主机可以使用与第一主机类似的按请求和按目标许可方案,但Ftype、PF编号或ID(或其他参数)可能会发生变化,同时保留支持在第二NIC处使用相同NSID。换句话说,目的平台(例如,运行虚拟化执行环境的第二主机)可以分配不同的Ftype、PF编号或ID,但保留目标驱动器的NSID(或其他参数)和格式以供在第二主机处使用。
在575,可以将虚拟化执行环境从使用第一NIC迁移到使用第二主机用于远程存储事务。第二主机可以是与第一主机不同的平台(例如,不同的服务器、机架或数据中心)。在一些情况下,第二主机可以是与第一主机相同的平台(例如,相同的服务器、机架或数据中心),但具有不同的CPU核或不同的CPU节点。在此示例中,第一NIC为虚拟化执行环境的远程存储事务(例如NVMe-oF)生成分组。迁移后,虚拟化执行环境可以使用CPU为虚拟化执行环境的远程存储事务(例如NVMe-oF)生成分组。第二主机可以使用与第一NIC(及其主机)类似的按请求和按目标许可方案,但Ftype、PF编号或ID(或其他参数)可以更改,同时保留支持在第二主机处使用相同NSID。换句话说,目的平台(例如,运行虚拟化执行环境的第二主机)可以分配不同的Ftype、PF编号或ID(或其他参数),但保留目标驱动器的NSID和格式以供在第二主机处使用。
图6描绘了用于虚拟化执行环境的迁移的过程。该过程可以由管理程序、协调器、虚拟机管理器、驱动程序或控制平面软件中的任何一个或它们的组合来执行。在602,在与虚拟执行环境相关联的队列中的命令处设置停止点。停止点可以设置在最近收到的命令或其他命令处。在604,队列中的命令被允许执行直到到达停止点命令。换句话说,队列被排空,直到到达停止点。可以将新命令添加到队列中,但这些命令直到迁移后才会执行。
在606,队列的状态被迁移到目的设备。例如,状态(例如,头指针位置、尾指针位置)和未执行的存储命令可以迁移到目的NIC用于执行。如前所述,虚拟化执行环境从其迁移的源设备可以使用主机和/或NIC为远程存储事务执行生成分组,而要运行迁移的虚拟化执行环境的目的设备可以使用主机和/或NIC为远程存储事务生成分组。因此,来自前一个平台的队列状态和命令在下一个平台上可用,以便命令可以在下一个平台上执行。
在608,与目的平台共享用于远程存储事务的与NSID相关的访问许可和目标驱动器格式。如果使用涉及源许可和目标许可的查找方案,如关于图3所描述的,一个或多个NSID的由NSID引用的目标介质的许可和排除(例如,请求者和目标)、异常和格式保持不变,尽管使用了目的平台以及分配的PF标识符、VF标识符或提交队列标识符在目的平台处的潜在变化。
在610,可以在目的设备处执行迁移的命令以继续执行存储命令。
因此,各种实施例可以为远程存储事务提供对命名空间的持续使用,以允许虚拟化执行环境的迁移而不中断到相同的命名空间的存储事务。
图7描绘了系统。该系统可以使用本文描述的实施例以允许将虚拟执行环境迁移到具有NVMe-oF卸载引擎的另一个处理器或网络接口,同时至少维持分配给迁移的虚拟执行环境的访问权限/拒绝和扇区或块格式信息和NSID。系统700包括处理器710,其为系统700提供处理、操作管理和指令的执行。处理器710可以包括任何类型的微处理器、中央处理单元(CPU)、图形处理单元(GPU)、处理核或为系统700提供处理的其他处理硬件、或处理器的组合。处理器710控制系统700的整体操作,并且可以是或包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑器件(PLD)等、或此类设备的组合。
在一个示例中,系统700包括耦合到处理器710的接口712,该接口可以表示用于需要更高带宽连接的系统组件(例如存储器子系统720或图形接口组件740或加速器742)的更高速接口或高吞吐量接口。接口712代表接口电路,其可以是独立组件或集成到处理器管芯上。在存在的情况下,图形接口740与图形组件连接,用于向系统700的用户提供视觉显示。在一个示例中,图形接口740可以驱动向用户提供输出的高清(HD)显示器。高清可以指具有大约100PPI(每英寸像素)或更高像素密度的显示器,并且可以包括诸如全高清(例如,1080p)、视网膜显示器、4K(超高清或UHD)等格式。在一个示例中,显示器可以包括触摸屏显示器。在一个示例中,图形接口740基于存储在存储器730中的数据或基于由处理器710执行的操作或两者来生成显示。在一个示例中,图形接口740基于存储在存储器730中的数据或基于由处理器710执行的操作或两者来生成显示。
加速器742可以是处理器710可以访问或使用的固定功能或可编程卸载引擎。例如,加速器742中的加速器可以提供压缩(DC)能力、诸如公钥加密(PKE)、密码、散列/认证能力、解密的密码服务、或其他能力或服务。在一些实施例中,附加地或替代地,加速器742中的加速器提供如本文所述的场选择控制器能力。在一些情况下,加速器742可以集成到CPU插槽中(例如,到包括CPU并提供与CPU的电接口的主板或电路板的连接器)。例如,加速器742可以包括单核或多核处理器、图形处理单元、逻辑执行单元单级或多级高速缓存、可用于独立执行程序或线程的功能单元、专用集成电路(ASIC)、神经网络处理器(NNP)、可编程控制逻辑和可编程处理元件,例如现场可编程门阵列(FPGA)或可编程逻辑器件(PLD)。加速器742可以提供多个神经网络、CPU、处理器核、通用图形处理单元,或者可以使图形处理单元可供人工智能(AI)或机器学习(ML)模型使用。例如,AI模型可以使用或包括以下中的任意或组合:强化学习方案、Q学习方案、深度Q学习或异步优势执行者-评论者(A3C)、组合神经网络、循环组合神经网络、或其他AI或ML模型。多个神经网络、处理器核或图形处理单元可供AI或ML模型使用。
存储器子系统720代表系统700的主存储器并且为要由处理器710执行的代码或要在执行例程中使用的数据值提供存储。存储器子系统720可以包括一个或多个存储器设备730,例如只读存储器(ROM),闪存,一个或多个随机存取存储器(RAM)的变体,例如DRAM,或其他存储器设备,或这些设备的组合。存储器730尤其存储和托管操作系统(OS)732以提供用于在系统700中执行指令的软件平台。另外,应用734可以在来自存储器730的OS 732的软件平台上执行。应用734表示有自己的操作逻辑来执行一个或多个功能的执行的程序。进程736代表向OS 732或一个或多个应用734或组合提供辅助功能的代理或例程。OS 732、应用734和进程736提供软件逻辑来为系统700提供功能。在一个示例中,存储器子系统720包括存储器控制器722,存储器控制器722是用于生成并向存储器730发出命令的存储器控制器。将理解的是存储器控制器722可以是处理器710的物理部分或接口712的物理部分。例如,存储器控制器722可以是集成存储器控制器、被与处理器710集成到电路上。
虽然没有具体说明,但应当理解,系统700可以包括设备之间的一个或多个总线或总线系统,例如存储器总线、图形总线、接口总线或其他等等。总线或其他信号线可以将组件通信或电耦合在一起,或者将组件通信和电耦合。总线可以包括物理通信线路、点对点连接、桥接器、适配器、控制器或其他电路或组合。总线可以包括例如系统总线、外围组件互连(PCI)总线、超传输或工业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)、或电气和电子工程师协会(IEEE)标准1394总线(Firewire)中的一个或多个。
在一个示例中,系统700包括接口714,其可以耦合到接口712。在一个示例中,接口714表示接口电路,其可以包括独立组件和集成电路。在一个示例中,多个用户接口组件或外围组件或两者耦合到接口714。网络接口750为系统700提供通过一个或多个网络与远程设备(例如,服务器或其他计算设备)通信的能力。网络接口750可以包括以太网适配器、无线互连组件、蜂窝网络互连组件、USB(通用串行总线)或其他基于有线或无线标准或专有接口。网络接口750可以将数据传输到同一数据中心或机架中的设备或远程设备,这可以包括发送存储在存储器中的数据。
网络接口750可以从远程设备接收数据,这可以包括将接收到的数据存储到存储器中。各种实施例可以与网络接口750、处理器710和存储器子系统720结合使用。网络接口750的各种实施例使用本文描述的实施例来接收或发送与时序相关的信号,并提供保护以防止因错误配置的端口使用造成的电路损坏,同时提供可接受的传播延迟。
在一个示例中,系统700包括一个或多个输入/输出(I/O)接口760。I/O接口760可以包括一个或多个接口组件,用户通过该接口组件与系统700(例如,音频、字母数字、触觉/触摸或其他接口)交互。外围接口770可以包括上面没有具体提到的任何硬件接口。外围设备通常是指依赖连接到系统700的设备。依赖连接是系统700提供操作在其上执行并且用户与之交互的软件平台或硬件平台或两者的连接。
在一个示例中,系统700包括用于以非易失性方式存储数据的存储子系统780。在一个示例中,在某些系统实现方式中,存储子系统780的至少某些组件可以与存储器子系统720的组件重叠。存储子系统780包括存储设备784,其可以是或包括用于以非易失性方式存储大量数据的任何传统介质,例如一个或多个磁性、固态或光盘、或组合。存储装置784将代码或指令和数据786保持在持久状态(即,尽管系统700的电力中断,值仍被保留)。存储装置784通常可以被认为是“存储器”,尽管存储器730通常是执行或操作存储器以向处理器710提供指令。虽然存储装置784是非易失性的,但存储器730可以包括易失性存储器(即,如果系统700的电力中断,则数据的值或状态是不确定的)。在一个示例中,存储子系统780包括与存储装置784接口连接的控制器782。在一个示例中,控制器782是接口714或处理器710的物理部分,或者可以包括处理器710和接口714两者中的电路或逻辑。
易失性存储器是其状态(以及因此存储在其中的数据)在设备的电力中断时是不确定的存储器。动态易失性存储器使用刷新存储在设备中的数据来保持状态。动态易失性存储器的一个示例包括DRAM(动态随机存取存储器)或诸如同步DRAM(SDRAM)之类的一些变体。如本文所述的存储器子系统可以与多种存储器技术兼容,例如DDR3(双倍数据速率版本3,JEDEC(联合电子设备工程委员会)于2007年6月27日最初发布)、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)、使用硫属化物相变材料(例如硫属化物玻璃)的NVM设备、包括金属氧化物基、氧空位基和导电桥式随机存取存储器(CB-RAM)的电阻式存储器、纳米线存储器、铁电随机存取存储器(FeRAM、FRAM)、采用忆阻器技术的磁阻随机存取存储器(MRAM)、自旋转移矩(STT)-MRAM、基于自旋电子磁结存储器的器件、基于磁隧道结(MTJ)的器件、基于DW(畴壁)和SOT(自旋轨道转移)的器件、基于晶闸管的存储器件、或上述中任意的组合、或其他存储器。
电源(未描绘)为系统700的组件提供电力。更具体地,电源通常与系统700中的一个或多个电力供应源接口连接以向系统700的组件提供电力。在一个示例中,电源包括AC到DC(交流电到直流电)适配器,以插入墙壁插座。这种AC电力可以是可再生能源(例如太阳能)电源。在一个示例中,电源包括DC电源,例如外部AC到DC转换器。在一个示例中,电源或电力供应包括无线充电硬件以通过靠近充电场进行充电。在一个示例中,电源可以包括内部电池、交流供应源、基于运动的电力供应源、太阳能电力供应源、或者燃料电池源。
在示例中,系统700可以使用处理器、存储器、存储装置、网络接口和其他组件的互连计算托架来实现。可以使用高速互连,例如:以太网(IEEE 802.3)、远程直接存储器访问(RDMA)、InfiniBand、互联网广域RDMA协议(iWARP)、快速UDP互联网连接(QUIC)、融合以太网上的RDMA(RoCE)、外围组件互连高速(PCIe)、Intel快速通道互联(QPI)、Intel超路径互联(UPI)、Intel芯片上系统结构(IOSF)、OmniPath、计算快速链接(CXL)、HyperTransport、高速结构、NVLink、先进微控制器总线架构(AMBA)互连、OpenCAPI、Gen-Z、用于加速器的高速缓存相关互联(CCIX)、3GPP长期演进(LTE)(4G)、3GPP 5G及其变体。可以使用诸如NVMeover Fabrics(NVMe-oF)或NVMe的协议将数据复制或存储到虚拟化存储节点。
本文的实施例可以在各种类型的计算和网络设备中实现,例如交换机、路由器、机架和刀片服务器,例如在数据中心和/或服务器群中使用的那些。数据中心和服务器群中使用的服务器包括阵列服务器配置,例如基于机架的服务器或刀片服务器。这些服务器通过各种网络规定在通信中相互连接,例如将服务器组划分为局域网(LAN),在LAN之间使用适当的交换和路由设施,以形成私用内联网、互联网的一部分、公共云、私有云或混合云。例如,云托管设施通常可以使用具有大量服务器的大型数据中心。刀片包含单独的计算平台,该平台被配置为执行服务器类型的功能,即“卡上服务器”。因此,每个刀片都包括常规服务器共有的组件,包括主印刷电路板(主板),该主印刷电路板(主板)提供用于耦合适当的集成电路(IC)和安装到板上的其他组件的内部布线(即,总线)。
图8描绘了包括多个计算机架802的环境800,每个计算机架802包括架顶式(ToR)交换机804、机柜管理器806和多个池化系统抽屉。通常,池化系统抽屉可以包括池化计算抽屉和池化存储抽屉。可选地,池化系统抽屉还可以包括池化存储器抽屉和池化输入/输出(I/O)抽屉。在所示实施例中,池化系统抽屉包括
Figure BDA0003773354600000191
处理器池化计算机抽屉808和
Figure BDA0003773354600000192
ATOMTM处理器池化计算抽屉810、池化存储抽屉812、池化存储器抽屉814和池化I/O抽屉816。每个池化系统抽屉经由高速链路818连接到ToR交换机804,高速链路818例如为40吉比特/秒(Gb/s)或100Gb/s以太网链路或100+Gb/s硅光子(SiPh)光链路。在一个实施例中,高速链路818包括800Gb/s SiPh光链路。
图9描绘了可以使用实施例或被实施例使用的网络接口。网络接口900的各种处理器可以使用这里描述的技术来支持许可和目标扇区或块格式的确定,尽管有虚拟化执行环境迁移,并且为包括NVMe-oF的远程存储事务提供分组形成和分组传输。例如,如果处理器904的第一核执行分组处理并且处理器904的第二核执行功率管理过程,则根据本文描述的实施例,第二核可以修改第一核的操作参数。
网络接口900可以包括收发器902、处理器904、发送队列906、接收队列908、存储器910、总线接口912和DMA引擎926。收发器902可以能够接收和发送符合适用协议(例如IEEE802.3中描述的以太网,但也可以使用其他协议)的分组。收发器902可以通过网络介质(未描绘)从网络分组和向网络发送分组。收发器902可以包括物理层(PHY)电路914和介质访问控制(MAC)电路916。PHY电路914可以包括编码和解码电路(未示出),以根据适用的物理层规范或标准对数据分组进行编码和解码。MAC电路916可以被配置为将要传输的数据组装成分组,该分组包括目的地和源地址以及网络控制信息和错误检测散列值。MAC电路916可以被配置为通过验证数据完整性、去除前导码和填充以及提供分组内容以供更高层处理来处理接收分组的MAC报头。
处理器904可以是以下各项的任意组合:CPU、核、图形处理单元(GPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或允许对网络接口900进行编程的可编程硬件设备或固定功能硬件设备。例如,处理器904可以提供对中间队列的分配或解除分配。例如,“智能网络接口”可以使用处理器904在网络接口中提供分组处理能力。
分组分配器924可以提供对接收到的分组的分发以供多个CPU或核使用本文描述的时间槽分配或RSS进行处理。当分组分配器924使用RSS时,分组分配器924可以基于接收到的分组的内容计算散列或做出另一确定以确定哪个CPU或核将处理分组。
中断合并922可以执行中断调节,由此网络接口中断合并922在向主机系统生成中断以处理接收到的分组之前等待多个分组到达或超时到期。接收段合并(RSC)可以由网络接口900执行,由此将输入分组的部分组合成分组的段。网络接口900将该合并的分组提供给应用程序。
直接存储器访问(DMA)引擎926可以将分组报头、分组有效负载和/或描述符直接从主机存储器复制到网络接口,反之亦然,而不是将分组复制到主机处的中间缓冲区、然后使用从中间缓冲区到目的缓冲区的另一个复制操作。
存储器910可以是任何类型的易失性或非易失性存储器设备并且可以存储用于对网络接口900进行编程的任何队列或指令。发送队列906可以包括供网络接口发送的数据或对数据的引用。接收队列908可以包括由网络接口从网络接收的数据或对数据的引用。描述符队列920可以包括引用发送队列906或接收队列908中的数据或分组的描述符。总线接口912可以提供与主机设备(未描绘)的接口。例如,总线接口912可以与外围连接外围组件互连(PCI)、PCI Express、PCI-x、串行ATA(SATA)和/或通用串行总线(USB)兼容接口兼容(尽管可以使用其他互连标准)。
在一些示例中,本文描述的网络接口和其他实施例可以与基站(例如,3G、4G、5G等)、宏基站(例如,5G网络)、微微站(例如,IEEE 802.11兼容接入点)、纳米站(例如,用于点对多点(PtMP)应用)、本地数据中心、非本地数据中心、边缘网络元素、雾网络元素和/或混合数据中心(例如,使用虚拟化、云和软件定义的网络在物理数据中心和分布式多云环境中交付应用工作负载的数据中心)结合使用。
可以使用硬件元素、软件元素或两者的组合来实现各种示例。在一些示例中,硬件元素可以包括设备、组件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、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”。
下面提供本文公开的设备、系统和方法的说明性示例。设备、系统和方法的实施例可以包括下述示例中的任何一个或多个以及它们的任何组合。
示例1包括一种装置,包括:包含电路和逻辑的接口,所述接口用于:使用传输协议生成用于存储事务的分组,以及
结合虚拟执行环境在第二计算平台上的启动,在所述第二计算平台处为所述虚拟执行环境提供第一计算平台的能力以继续存储事务并保持使用相同的命名空间标识符(NSID)。
示例2包括任何示例,其中,所述接口用于执行以下中的一项或多项:将与存储事务许可相关联的参数迁移到所述第二计算平台或迁移目标介质驱动器的格式。
示例3包括任何示例,其中,许可包括以下中的一项或多项:按请求者许可或按目标介质许可。
示例4包括任何示例,其中,按请求者许可包括以下中的一项或多项:读使能、写使能、读和写使能,并且按目标介质许可包括以下中的一项或多项:读使能、写使能、读和写使能。
示例5包括任何示例,其中,所述目标介质驱动器的格式包括以下中的一项或多项:扇区或块格式、读或写使能、或端到端保护。
示例6包括任何示例,其中,所述接口用于:在将所述虚拟执行环境迁移到所述第二计算平台之前:执行至少一个接收到的存储命令,以及识别用于迁移到所述第二计算平台的未执行命令。
示例7包括任何示例,其中,所述启动是基于以下中的一项或多项发起的:虚拟执行环境迁移、服务器维护、或负载平衡。
示例8包括任何示例,其中,所述虚拟执行环境用于请求存储事务,所述存储事务被转换为基于传输协议的事务。
示例9包括任何示例,其中,为了将所述存储事务转换为基于传输协议的事务,所述虚拟执行环境将执行支持使用非易失性存储器快速(NVMe)的存储事务的驱动程序。
示例10包括任何示例,并且包括:服务器、数据中心或机架中的一个或多个。
示例11包括一种计算装置,包括:计算机,包括至少一个处理器和至少一个存储设备,以及接口,用于:响应于请求者对与目标介质相关联的命名空间标识符的请求访问确定访问权限,其中,所述请求者的访问权限和所述命名空间标识符独立于所述请求者的标识符。
示例12包括任何示例,其中,在所述请求者迁移到另一个计算系统或网络接口之后,所述计算系统或网络接口中的一者或多者基于接收到的参数并在迁移后独立于所述请求者的标识符,为所述请求者应用与迁移之前应用的访问权限相同的访问权限。
示例13包括任何示例,其中,所述访问权限包括以下中的一项或多项:读和写使能、读使能、或写使能。
示例14包括任何示例,其中,所述访问权限包括以下中的一项或多项:基于存储事务的请求者的访问权限或基于目标存储设备的访问权限。
示例15包括任何示例,其中,所述接口用于为所述请求者提供目标介质格式和独立于所述请求者的标识符的命名空间标识符,并且所述目标介质格式包括以下中的一项或多项:扇区或块格式、读或写使能、或端到端保护。
示例16包括任何示例,其中,所述接口用于接收在先前平台上生成的与所述请求者相关联的未执行的存储命令,并且所述接口用于存储所述未执行的存储命令以供执行。
示例17包括一种计算机实现的方法,包括:将虚拟化执行环境从第一平台迁移到第二平台,同时保留命名空间标识符的使用并允许所述虚拟化执行环境通过使用所述命名空间标识符来发布存储事务。
示例18包括任何示例,并且包括:独立于与所述第二平台处的迁移的虚拟化执行环境相关联的一个或多个标识符,保持访问许可和目标介质格式。
示例19包括任何示例,其中,允许所述虚拟化执行环境发布存储事务包括:在与所述虚拟化执行环境相关联的队列中执行存储事务,并将未执行的存储事务迁移到所述第二平台中的队列。
示例20包括任何示例,并且包括:使用所述第二平台执行所述未执行的存储事务。

Claims (20)

1.一种装置,包括:
包含电路和逻辑的接口,所述接口用于:
使用传输协议生成用于存储事务的分组,以及
结合虚拟执行环境在第二计算平台上的启动,在所述第二计算平台处为所述虚拟执行环境提供第一计算平台的能力以继续存储事务并保持使用相同的命名空间标识符(NSID)。
2.根据权利要求1所述的装置,其中,所述接口用于执行以下中的一项或多项:将与存储事务许可相关联的参数迁移到所述第二计算平台或迁移目标介质驱动器的格式。
3.根据权利要求2所述的装置,其中,许可包括以下中的一项或多项:按请求者许可或按目标介质许可。
4.根据权利要求3所述的装置,其中
按请求者许可包括以下中的一项或多项:读使能、写使能、读和写使能,并且
按目标介质许可包括以下中的一项或多项:读使能、写使能、读和写使能。
5.根据权利要求2所述的装置,其中,所述目标介质驱动器的格式包括以下中的一项或多项:扇区或块格式、读或写使能、或端到端保护。
6.根据权利要求2所述的装置,其中,所述接口用于:
在将所述虚拟执行环境迁移到所述第二计算平台之前:
执行至少一个接收到的存储命令,以及
识别用于迁移到所述第二计算平台的未执行命令。
7.根据权利要求1所述的装置,其中,所述启动是基于以下中的一项或多项发起的:虚拟执行环境迁移、服务器维护、或负载平衡。
8.根据权利要求1所述的装置,其中,所述虚拟执行环境用于请求存储事务,所述存储事务被转换为基于传输协议的事务。
9.根据权利要求8所述的装置,其中,为了将所述存储事务转换为基于传输协议的事务,所述虚拟执行环境执行支持使用非易失性存储器快速(NVMe)的存储事务的驱动程序。
10.根据权利要求1所述的装置,包括:服务器、数据中心或机架中的一个或多个,其中,所述服务器、数据中心或机架用于发起所述虚拟执行环境的迁移。
11.一种装置,包括:
计算系统,包括至少一个处理器和至少一个存储设备,以及
接口,用于:
响应于请求者对与目标介质相关联的命名空间标识符的请求访问确定访问权限,其中,所述请求者的访问权限和所述命名空间标识符独立于所述请求者的标识符。
12.根据权利要求11所述的装置,其中,在所述请求者迁移到另一计算系统或网络接口之后,所述计算系统或网络接口中的一者或多者基于接收到的参数并在迁移后独立于所述请求者的标识符,为所述请求者应用与迁移之前应用的访问权限相同的访问权限。
13.根据权利要求11所述的装置,其中,所述访问权限包括以下中的一项或多项:读和写使能、读使能、或写使能。
14.根据权利要求11所述的装置,其中,所述访问权限包括以下中的一项或多项:基于存储事务的请求者的访问权限,或基于目标存储设备的访问权限。
15.根据权利要求11所述的装置,其中,所述接口用于为所述请求者提供目标介质格式和独立于所述请求者的标识符的命名空间标识符,并且所述目标介质格式包括以下中的一项或多项:扇区或块格式、读或写使能、或端到端保护。
16.根据权利要求11所述的装置,其中,所述接口用于接收在先前平台上生成的与所述请求者相关联的未执行的存储命令,并且所述接口用于存储所述未执行的存储命令以供执行。
17.一种计算机实现的方法,包括:
将虚拟化执行环境从第一平台迁移到第二平台,同时保留命名空间标识符的使用并允许所述虚拟化执行环境通过使用所述命名空间标识符来发布存储事务。
18.根据权利要求17所述的计算机实现的方法,包括:
独立于与所述第二平台处的迁移的虚拟化执行环境相关联的一个或多个标识符,保持访问许可和目标介质格式。
19.根据权利要求17所述的计算机实现的方法,其中,允许所述虚拟化执行环境发布存储事务包括:
在与所述虚拟化执行环境相关联的队列中执行存储事务,并将未执行的存储事务迁移到所述第二平台中的队列。
20.根据权利要求19所述的计算机实现的方法,包括:
使用所述第二平台执行所述未执行的存储事务。
CN202080095204.1A 2020-03-10 2020-12-15 为实时虚拟化执行环境迁移维护存储命名空间标识符 Pending CN115039077A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/814,788 2020-03-10
US16/814,788 US11941458B2 (en) 2020-03-10 2020-03-10 Maintaining storage namespace identifiers for live virtualized execution environment migration
PCT/US2020/065073 WO2021183199A1 (en) 2020-03-10 2020-12-15 Maintaining storage namespace identifiers for live virtualized execution environment migration

Publications (1)

Publication Number Publication Date
CN115039077A true CN115039077A (zh) 2022-09-09

Family

ID=72237124

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080095204.1A Pending CN115039077A (zh) 2020-03-10 2020-12-15 为实时虚拟化执行环境迁移维护存储命名空间标识符

Country Status (4)

Country Link
US (1) US11941458B2 (zh)
CN (1) CN115039077A (zh)
DE (1) DE112020006859T5 (zh)
WO (1) WO2021183199A1 (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11962518B2 (en) 2020-06-02 2024-04-16 VMware LLC Hardware acceleration techniques using flow selection
US20220100432A1 (en) 2020-09-28 2022-03-31 Vmware, Inc. Distributed storage services supported by a nic
US11875172B2 (en) * 2020-09-28 2024-01-16 VMware LLC Bare metal computer for booting copies of VM images on multiple computing devices using a smart NIC
US11636053B2 (en) 2020-09-28 2023-04-25 Vmware, Inc. Emulating a local storage by accessing an external storage through a shared port of a NIC
US11593278B2 (en) 2020-09-28 2023-02-28 Vmware, Inc. Using machine executing on a NIC to access a third party storage not supported by a NIC or host
WO2022066270A1 (en) * 2020-09-28 2022-03-31 Vmware, Inc. Distributed storage services supported by a nic
US11792134B2 (en) 2020-09-28 2023-10-17 Vmware, Inc. Configuring PNIC to perform flow processing offload using virtual port identifiers
US20220086226A1 (en) * 2021-01-15 2022-03-17 Intel Corporation Virtual device portability
EP4030284A1 (en) * 2021-01-15 2022-07-20 Intel Corporation Virtual device portability
CN112905169B (zh) * 2021-01-25 2024-03-01 贝壳找房(北京)科技有限公司 一种自动化定位命名空间引用问题的方法及装置
US11818031B2 (en) 2021-03-04 2023-11-14 Dell Products L.P. Automated internet protocol (IP) route update service for ethernet layer 3 (L3) IP storage area networks (SANs)
US11805171B2 (en) * 2021-03-04 2023-10-31 Dell Products L.P. Automated ethernet layer 3 (L3) connectivity between non-volatile memory express over fabric (NVMe-oF) hosts and NVM-oF subsystems using bind
US11927999B2 (en) 2021-10-14 2024-03-12 Hewlett Packard Enterprise Development Lp Server network interface card-located baseboard management controllers
US11842050B2 (en) * 2021-10-21 2023-12-12 EMC IP Holding Company, LLC System and method for enabling smart network interface card (smartNIC) access to local storage resources
US11863376B2 (en) 2021-12-22 2024-01-02 Vmware, Inc. Smart NIC leader election
US11928062B2 (en) 2022-06-21 2024-03-12 VMware LLC Accelerating data message classification with smart NICs
US11899594B2 (en) 2022-06-21 2024-02-13 VMware LLC Maintenance of data message classification cache on smart NIC
US11928367B2 (en) 2022-06-21 2024-03-12 VMware LLC Logical memory addressing for network devices
US20240129305A1 (en) * 2022-10-12 2024-04-18 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for namespace identification for devices

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7370195B2 (en) 2003-09-22 2008-05-06 Microsoft Corporation Moving principals across security boundaries without service interruption
US9183035B2 (en) * 2013-11-08 2015-11-10 International Business Machines Corporation Virtual machine migration with swap pages
US9716753B2 (en) 2014-04-09 2017-07-25 Dropbox, Inc. Migrating shared content items between accounts
US9984017B2 (en) 2014-12-27 2018-05-29 Intel Corporation Intelligent network fabric to connect multiple computer nodes with one or more SR-IOV devices
US10148611B2 (en) 2015-03-30 2018-12-04 EMC IP Holding Company LLC Network address sharing in a multitenant, monolithic application environment
US10275361B2 (en) 2017-05-31 2019-04-30 Seagate Technology Llc Managing multiple namespaces in a non-volatile memory (NVM)
US10768820B2 (en) * 2017-11-16 2020-09-08 Samsung Electronics Co., Ltd. On-demand storage provisioning using distributed and virtual namespace management
US10708309B2 (en) 2018-01-10 2020-07-07 Cisco Technology, Inc. Fine granularity authorization control in FC-NVMe storage area network
US10951625B2 (en) * 2018-06-29 2021-03-16 Accenture Global Solutions Limited Cross-application identity and access management
US20190042329A1 (en) 2018-06-29 2019-02-07 Utkarsh Y. Kakaiya System with programmable multi-context accelerator circuitry
US20190317802A1 (en) 2019-06-21 2019-10-17 Intel Corporation Architecture for offload of linked work assignments
US11061599B2 (en) * 2019-07-29 2021-07-13 EMC IP Holding Company LLC Volume migration in a federated storage array with non-volatile memory express over fabric (NVMeoF) host attachment
JP2021026512A (ja) * 2019-08-05 2021-02-22 株式会社日立製作所 ストレージシステムおよびストレージ制御方法

Also Published As

Publication number Publication date
US20200278893A1 (en) 2020-09-03
WO2021183199A1 (en) 2021-09-16
US11941458B2 (en) 2024-03-26
DE112020006859T5 (de) 2023-01-26

Similar Documents

Publication Publication Date Title
US11941458B2 (en) Maintaining storage namespace identifiers for live virtualized execution environment migration
US11934330B2 (en) Memory allocation for distributed processing devices
US11748278B2 (en) Multi-protocol support for transactions
US11714763B2 (en) Configuration interface to offload capabilities to a network interface
EP3706394A1 (en) Writes to multiple memory destinations
US20200322287A1 (en) Switch-managed resource allocation and software execution
US11509606B2 (en) Offload of storage node scale-out management to a smart network interface controller
US20200319812A1 (en) Intermediary for storage command transfers
EP3754498B1 (en) Architecture for offload of linked work assignments
EP3748510A1 (en) Network interface for data transport in heterogeneous computing environments
US20200104275A1 (en) Shared memory space among devices
US20200210359A1 (en) Dynamic interrupt provisioning
US20220029929A1 (en) Technologies that provide policy enforcement for resource access
US20200379922A1 (en) Adaptive routing for pooled and tiered data architectures
US11681625B2 (en) Receive buffer management
EP3771180B1 (en) Offload of storage node scale-out management to a smart network interface controller
US20220138021A1 (en) Communications for workloads
US20200133367A1 (en) Power management for workload offload engines
CN114764369A (zh) 虚拟设备便携性
US20210149821A1 (en) Address translation technologies

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination