CN117242436A - 一个或多个网络装置中的高可用性内存复制 - Google Patents
一个或多个网络装置中的高可用性内存复制 Download PDFInfo
- Publication number
- CN117242436A CN117242436A CN202280032636.7A CN202280032636A CN117242436A CN 117242436 A CN117242436 A CN 117242436A CN 202280032636 A CN202280032636 A CN 202280032636A CN 117242436 A CN117242436 A CN 117242436A
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- nodes
- switch
- switch 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
- 230000015654 memory Effects 0.000 title claims abstract description 225
- 230000010076 replication Effects 0.000 title claims description 64
- 238000012545 processing Methods 0.000 claims description 39
- 238000000034 method Methods 0.000 claims description 34
- 239000004744 fabric Substances 0.000 claims description 17
- 238000012546 transfer Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 13
- 238000011084 recovery Methods 0.000 claims description 11
- 230000005540 biological transmission Effects 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 3
- 238000007726 management method Methods 0.000 description 15
- 230000009471 action Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 230000001360 synchronised effect Effects 0.000 description 8
- 238000013528 artificial neural network Methods 0.000 description 5
- 230000005012 migration Effects 0.000 description 5
- 238000013508 migration Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 230000002085 persistent effect Effects 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 4
- 238000012937 correction Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- QVGXLLKOCUKJST-UHFFFAOYSA-N atomic oxygen Chemical compound [O] QVGXLLKOCUKJST-UHFFFAOYSA-N 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000003139 buffering effect 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
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 239000000470 constituent Substances 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
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000000446 fuel Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 239000002070 nanowire Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229910052760 oxygen Inorganic materials 0.000 description 1
- 239000001301 oxygen Substances 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000002207 retinal effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1451—Management of the data involved in backup or backup restore by selection of backup contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
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)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本文中描述的示例涉及交换机装置。交换机装置可以执行将存储在源内存区域中的内容复制到从两个或多于两个节点可得到的两个或多于两个内存区域,其中从两个或多于两个节点可得到的两个或多于两个内存区域被识别给电路模块以用来存储复制的内容。两个或多于两个节点可以在与存储源内存区域的内存装置的机架不同的机架上。交换机装置可以至少部分基于与两个或多于两个节点相关联的弹性标准来选择从两个或多于两个节点可得到的两个或多于两个内存区域。
Description
优先权的要求
本申请依据美国法典第35编第365(c)条要求在2021年6月4日提交的、标题为“HIGH-AVAILABILITY MEMORY REPLICATION IN ONE ORMORE NETWORK DEVICES”的美国申请号为17/339,164的优先权,其全部内容被结合于此。
描述
虚拟化和容器化(containerization)已经出现以用于从底层硬件使软件执行模块化(例如虚拟机(VM)和容器),使能基于包括峰值流量、电源管理、服务水平协议(SLA)治理等等的实时特性的软件的迁移。特别地,使用VM或容器来启动(spin up)跨越数百个千兆字节的内存的内存内实例是可能的。对于在这些环境中运行的企业和关键任务应用,高可用性(HA)和灾难恢复对于业务连续性目的来说是重要的。例如,在数据库中托管其支付系统的小型企业在硬件故障或问题的情况下无法具有停机时间。用于跟踪“恢复”的关键度量中的一些是恢复点目标(RPO)和恢复时间目标(RTO)。RPO通过定义生产级备份和事故之间的可接受的时间水平来解决可允许的数据丢失水平。RTO是确保所有系统返回到正常所需的时间。
图1描绘了被关键任务应用使用来计算由于系统故障引起的业务停机时间的度量的示例。可以看到,存在有对副本执行的备份(或者同步的或者异步的)。在“系统停机”时间点之后,在系统再次运行之前的时间是系统TRO(恢复时间目标)。在将数据保存在内存内以用于近实时处理的内存内数据库的情况下,数据需要在内存内被复制以保持RTO可接受,因为将数据从共享存储设备加载进内存可消耗不可接受的时间量。
为了促进这些度量中的一些在可接受参数范围内,内存内复制可被用来确保如果存在有硬件故障则存在有足够覆盖。例如,硬件故障可以在节点级别、机架级别或数据中心级别。为了减少这些可能性,一种高可用性策略是在数据中心内的不同机架中保存内存内镜像复制品并且在不同数据中心中保存数据的第二个灾难恢复复制品。在数据中心中,高可用性复制品可被存储在不同机架中(例如同步复制品),并且灾难恢复复制品离得更远(例如异步复制品)。机架可以包括耦合到一个或多个服务器的交换机并且交换机可以提供对一个或多个服务器的网络访问。
对于Redis数据库,作为示例,由应用来管理副本。迁移策略确保VM距离是这样的以致不存在单点故障使得两个VM(主VM和副本VM)不会共享资源(例如物理机架、内存池或存储池)。当虚拟化和云计算的目标是要从终端用户和应用中抽象出这些物理细节并且可以由底层基础设施而不是由应用本身来决定迁移时,这可能是有挑战性的。
由应用管理的复制可涉及跟踪数据复制品并且将数据多播到其他内存装置的应用。这样的复制管理可涉及在本地节点中制作数据复制品(诸如写入时复制)以及调用网络栈以用于分组形成和传输的软件开销。运行应用的节点中的计算资源可能负担过重并且数据安全是个问题。在一些情况下,副本要被加密,但是将密钥存储在单个故障点中(例如仅在本地节点中)可导致密钥的丢失和不能解密数据。
附图说明
图1描绘了被关键任务应用使用来计算由于系统故障引起的业务停机时间的度量的示例。
图2描绘了由交换机提供的接口的示例。
图3A描绘了示例系统。
图3B描绘了系统的示例操作。
图4描绘了复制域的示例。
图5描绘了示例过程。
图6A描绘了示例交换机。
图6B描绘了示例可编程分组处理流水线。
图7描绘了示例计算系统。
具体实施方式
交换机可以代表应用(例如VM、容器、Docker容器、服务、微服务等等)来管理数据复制。交换机或网络装置可以被配置成执行到多个节点的数据的数据复制(例如HA)。内存区域(例如地址范围)可以被标记为镜像的,并且网络装置和服务器资源可以执行镜像的内存区域中的数据的镜像以按照预先配置的复制规则来复制数据。网络装置可以管理数据复制的调度并且可以将共同距离或位置用作用于决定什么装置要使用来复制数据的参数。网络装置可以多播数据以在不同的内存装置中制作一个或多个副本。可以将副本存储在不同的机架或不同的电源域(例如不同的电源)上,使得如果存储副本的内存装置出故障,则不同机架或电源域中的未出故障的另一内存装置可以提供数据。被复制的数据可以包括下列中的一个或多个:对象、二进制大对象(BLOB)、文件、图像、音频文件、视频文件和/或块。
管理程序和容器-基础设施(例如Kubernetes)可与网络装置协调以促进迁移和基于高可用性的复制规则。可以至少在下列中利用本文中描述的技术:(1)物联网(IOT)维护;(2)自动驾驶;或者(3)执行IOT采样或农业分析的其他无人驾驶飞行器(UAV)装置。可以至少在数据湖和/或数据仓库中利用本文中描述的技术。本文中描述的技术可以被Memcached(例如来自数据库调用、API调用或页面渲染的结果的诸如字符串或对象的数据的键值存储)利用。可以与来自灾难恢复的数据恢复有关地利用本文中描述的技术。
图2描绘了由交换机提供的接口的示例。交换机200可以显露允许访问和配置交换机200以执行到不同内存装置的数据复制的一个或多个接口。例如,接口可以包括应用程序接口(API)、命令行接口(CLI)、脚本、二进制、内核等等。主机250可以执行应用252并且包括内存装置中的目标内存区域254。应用252可以包括VM、容器、服务、微服务等等。一个或多个处理器可以执行应用252。
注册接口202可允许经由接口(例如装置接口、网络接口控制器、主机结构(fabric)接口、IPU等等)连接到交换机200的一个或多个节点注册关于数据复制能力的信息。例如,通过注册接口202传达的信息可以包括下列中的一个或多个:节点标识符(ID)、托管(一个或多个)节点的机架的机架ID和/或介质的弹性或可靠性。介质的弹性或可靠性可以表示在节点处存储数据的介质的可靠性水平。例如,介质的弹性或可靠性可以被表示为值(例如0-100),所述值可以基于下列中的一个或者组合:电源端口的数量;发送到目标的分组的复制;备用电源(例如不间断供电电源(UPS))的可用性;用来接收和/或传送分组以将数据写入介质或从介质读取数据的网络装置的数量;纠错能力(例如纠错译码(ECC)的使用);可靠性、可用性和可服务性(RAS)特征的使用;介质的使用期限;时间窗口中不可纠正的错误的数量等等。节点可以包括下列中的一个或多个:一个或多个内存装置、一个或多个存储装置、一个或多个持久性内存装置、一个或多个计算装置、一个或多个加速器、一个或多个网络接口等等。节点可以使用网络、结构、总线或其他接口与交换机200通信。
机架接口204可允许注册连接进交换机200的机架。使用机架接口204,机架中的节点可以提供机架ID和/或机架的弹性当中的一个或多个。例如,机架的弹性可以被表示为值(例如0-100),所述值可以表示针对机架中可用的内存和/或存储介质的电源端口的数量、备用电源的可用性、纠错能力、介质的使用期限、时间窗口中不可纠正的错误的数量等等。机架可以包括耦合到一个或多个服务器或者节点的交换机(例如架顶式(top ofrack)(ToR)交换机、行末式(end ofrow)(EoR)、或行中式(middle ofrow)(MoR)交换机)。
内存范围接口206(例如捐赠的内存管理(Donated Memory Management))可允许特定节点注册可用于或者被捐赠给交换机200以用于使用来复制数据的内存地址范围。通过内存范围接口206传达的信息可以包括节点ID和地址范围当中的一个或多个。例如,地址范围可以表示虚拟地址的范围。
复制镜像接口208可允许软件栈(例如用于交换机200的应用252、操作系统(OS)和/或驱动程序)为特定的应用创建复制镜像。复制镜像接口208可以从在服务器或主机系统上执行的软件栈接收下列中的一个或多个:应用ID、地址范围[A,B](例如目标内存区域254)、和/或机架和/或介质的最小可靠性或弹性水平。内存地址范围(例如目标内存区域254)可以表示内存地址的范围,借此存储的数据要被交换机200的电路模块复制到(一个或多个)其他节点。在一些示例中,可以通过应用ID和地址范围来识别内存地址范围。基于通过复制镜像接口208接收的信息,交换机200中的电路模块可以识别可存储复制的数据的一个或多个节点以至少实现可靠性或弹性水平。例如,可靠性水平可以基于一个或多个节点和/或机架的各种可靠性或弹性因子。云服务提供商(CSP)或租户可以定义如何基于一个或多个节点和/或机架的可靠性或弹性水平来确定可靠性或弹性水平。
编排接口210可以被编排器(例如Kubernetes、欧洲电信标准协会(ETSI)规范、来自ETSI的开源Mano(OSM)组的开源NFV管理和编排(MANO)等等)使用来检索其中复制了数据的地址范围和特定的应用的节点的标识符。编排器可以为VM或容器创建数据迁移和/或复制策略。在一些情况下,编排器可以将VM迁移到为那个VM存储复制的数据的节点并且允许本地访问这样的复制的数据(例如通过总线或装置接口而不是通过使用网络遍历分组)。
安全接口212可允许一个或多个应用或者编排器注册密钥。在一些示例中,在将数据发送到目的地内存区域之前,交换机200可以利用电路模块来使用用于数据写入的密钥来加密数据。复制的数据可以被加密并且被存储在另一节点的内存区域中。在一些示例中,可以将密钥的复制品存储在交换机200中的安全区域中,以便于在存储复制的数据的节点出故障并且要从另一节点访问数据的情况下具有密钥的复制品。
镜像接口214可允许应用252命令交换机200复制数据。应用252可以给交换机200识别下列中的一个或多个:净荷、地址范围(例如目标内存区域254)、复制的模式(例如异步的或同步的)、和/或在传输到另一节点之前数据是否要被加密。在一些示例中,写入内存装置中的注册的目标内存区域254可以触发交换机200复制写入目标内存区域254的数据。例如,当软件栈写入它的本地内存的这个内存地址区域时,在主机250上执行的应用、服务、OS和/或驱动程序可以利用净荷和/或净荷被写入的内存地址来生成到交换机200的远程直接内存访问(RDMA)写入命令。RDMA的各种示例包括但不限于因特网广域RDMA协议(iWARP)、融合以太网上的RDMA(RoCE)或者其他。
在RDMA请求到达交换机200之后,交换机200可以向包括复制内存区域的目的地节点发出一个或多个RDMA写入命令。
如本文中更详细描述的,交换机200可以识别其他节点处的哪些内存区域要用来存储副本数据。在一些示例中,交换机可以利用HA多播电路模块216以便于将数据的副本传送到一个或多个其他节点。如果复制数据的请求是异步的,则交换机200可以向应用252指示副本数据的复制品已经被发送但是没有接收到过复制完成的确认,并且在复制完成之后,HA多播电路模块216可以指示数据已经被复制。如果请求的数据复制是同步的,则在复制事务被(一个或多个)目标节点确认为完成之后可以向应用252发出完成的确认。
交换机200可以利用密钥存储设备218。密钥存储设备218可以包括被使用来备份用来加密和/或解密数据的配置和密钥的一组持久性存储内存块。在交换机200的故障(诸如交换机200的电源故障)的情况下,可以使用数据中心所有者的对应管理密钥来检索配置和密钥。
图3A描绘了示例系统。在这个示例中,平台320-0可以执行应用322,所述应用322指示数据要被写入地址空间324的镜像区域326内的内存地址(例如@X)。多目标镜像电路模块328可以促使写入镜像326的数据到平台320-1和平台320-2中的捐赠的内存区域的复制。捐赠的内存区域可以可用来存储写入镜像区域326的数据的副本。尽管多目标镜像的示例被示为在平台的XPU中执行,但是多目标镜像逻辑可以被实现为内存控制器、OS、驱动程序等等的一部分。接口330可以将平台320-0通信耦合到交换机300。接口330可以包括网络接口控制器、IPU、主机结构接口或装置接口。
多目标数据镜像管理302可以从平台320-1和320-2接收捐赠的内存区域的指示。多目标数据镜像管理302可以基于本文中描述的标准来选择使用来存储在镜像区域326中存储的数据的副本的一个或多个捐赠的内存。节点到位置映射308可以更新捐赠的内存地址空间314以表示平台320-1和320-2中的存储在镜像区域326中存储的数据的副本的位置。负载平衡304可以执行来自平台320-1和320-2的读取操作的负载平衡。HA多播306可以使用诸如远程直接内存访问(RDMA)、结构上的NVMe(NVMe-oF)、Gen-Z或者其他的技术来执行数据的副本复制品到平台320-1和320-2的传输。
在传输到平台320-1和320-2之前,密钥310可以被密码电路模块312使用来加密数据。平台320-1和320-2可以在捐赠的内存区域中存储加密的数据。
图3B描绘了交换机的示例操作。交换机300可以利用多目标数据镜像管理302来显露接口,所述接口可以被一个或多个数据中心和/或边缘网络元件的平台使用来分配内存地址区域以至少存储复制的数据。在(0)处,平台320-1和320-2可以向交换机300捐赠内存区域以存储副本数据。多目标数据镜像管理302可以显露第二接口(具有对应逻辑),所述第二接口可以被应用322(例如VM、容器、微服务等等)使用来请求分配映射进要被复制的内存区域326中的特定的内存大小以便于实现给定量的可靠性(例如99.9%)。例如,可以通过下列中的一个或多个来表征微服务:细粒度的接口的使用(用于可独立部署的服务)、多语言编程(例如以多种语言编写以捕获以单种语言不可得的额外功能性和效率的代码)、或者轻量级容器或虚拟机部署、以及分散式持续微服务交付。
在(1A)处,应用322可以向编排350指示镜像区域326的标识和要使用来加密要被复制的数据的密钥。在(1B)处,编排350可以将镜像区域326的标识和要使用来加密要被复制的数据的密钥提供给交换机300。在一些示例中,在(2)处,当应用322写入指定要被复制的镜像内存区域326时,则在(3)处平台320-0上的内存控制器和/或多目标数据镜像管理302可以经由接口330将数据发送到交换机300并且命令交换机300将内存区域的内容复制进平台320-1和320-2的内存装置的捐赠的内存区域中。平台320-0的本地内存可以是使用内存总线或内存接口连接到XPU的内存。在一些示例中,可以执行RDMA操作以将数据从镜像326复制到交换机300。在一些示例中,软件栈(例如库)可以代表应用322来促使镜像326中的数据的数据复制。
如果交换机300具有来自其他节点的足够的捐赠或分配的内存以覆盖用于应用的数据的复制,则交换机300可将存在有用于复制的足够内存通知在平台320-0上执行的应用322。交换机300可以选择不同的平台320-1和320-2以将数据存储在捐赠的内存区域中以便于实现请求的复制水平。例如,交换机300可以基于电源域、机架位置、弹性因子和其他因子来选择平台320-1和320-2的内存区域以存储复制的数据。
在(4)处,交换机300可促使净荷被传送到分配用于其他平台320-1和320-2中的复制的内存的一个或多个区域。交换机300可以执行异步和同步复制。同步复制可发生在相同数据中心中的不同机架中,而异步复制可发生在数据中心之外的节点中。同步复制可以在相同或重叠的时间将数据写入存储装置和它的一个或多个副本并且等待复制的完成以实现数据复制品的同步。异步复制可以在数据被写入主存储设备之后复制数据或者为数据复制的完成提供相对开放的时间帧。根据各种实施例,平台320-0可以创建对称或非对称密钥,所述对称或非对称密钥可被用来在被发送到目的地之前加密净荷。证书可被用来建立数据的安全。
应用322可以尝试从本地内存(包括高速缓存)访问数据。但是,如果数据被损坏,则应用可以检查以看看复制的数据是否未被损坏。应用322、OS和/或驱动程序可以向编排和管理系统350发出通知以指示数据被损坏或者是不可检索的。OS和内存控制器可以基于重复的错误来推断数据被损坏的内存区域,所述重复的错误来自从那个内存区域读取数据,并且OS和内存控制器可以改变物理地址以存储数据。例如,如果数据被损坏并且无法使用纠错译码(ECC)、XOR、循环冗余校验(CRC)等等来恢复数据,则内存故障可发生。例如,如果在存储在平台320-0处的数据中存在有两个或多于两个位错误,则其他副本可被视为真实并且一个或多个取出的副本可以被存储在平台320-0中以用于访问。
图4描绘了复制域的示例。为了辅助缩放或增加可用目标复制内存区域的数量,在应用或其他软件的请求下,编排器、操作系统或其他系统软件可以定义指示映射到交换机的一组机架和节点的复制域,并且所述一组机架和节点能够提供用来存储复制的数据的内存。例如,数据中心可以定义故障域,使得复制可发生在特定的域中。在这个示例中,域0包括用来执行到被机架0至3中的一个或多个机架的一个或多个服务器捐赠的内存域的数据的复制的复制电路模块406-0。在这个示例中,域1包括用来执行到被机架4至7中的一个或多个机架的一个或多个服务器捐赠的内存域的数据的复制的复制电路模块406-1。在一些示例中,复制电路模块406-0和/或406-1可以执行更早描述的多目标数据镜像管理302的一个或多个操作。
在一些示例中,交换机402包括存储目标内存装置处的数据复制的映射数据404的持久性内存。在交换机402的故障的情况下,映射数据404可以被服务器平台检索以用来执行数据复制或者被复制到另一交换机以执行数据复制。例如,映射数据404可以至少包括表1中的下列字段。注意到,机架可以与多个域相关联。
表1
复制域标识符 | 相关联的机架标识符 |
域1 | 机架1-4 |
域2 | 机架4-7 |
域3 | 机架7-15 |
图5描绘了示例过程。在502处,交换机可以被配置成将存储在本地节点中的内存的一个或多个区域中的数据复制到可用来存储复制的数据的内存的一个或多个区域。例如,交换机可以从一个或多个节点接收可用来存储复制的数据的内存地址的配置。在一些示例中,一个或多个节点可以利用与要复制数据的交换机的电源不同的电源。在一些示例中,一个或多个节点可以位于与要复制数据的交换机的机架不同的机架中。在504处,交换机可以确定复制的数据的一个或多个目标节点。例如,数据复制要发生的确定可以基于来自应用的复制数据的请求而发生。例如,数据复制要发生的确定可以基于应用写入被指定为由交换机触发复制的内存的区域而发生,并且交换机可以促使写入内存的这样的区域的数据复制到满足复制标准的一个或多个节点的一个或多个内存区域。例如,复制标准可以基于节点和/或包括节点的机架中的介质的弹性。
在506处,交换机可以执行到一个或多个目标节点的一个或多个内存区域的数据复制。在一些示例中,交换机可以通过使用发送和接收队列对来利用RDMA协议将数据复制到接收器内存区域。在508处,交换机可以向应用指示数据复制的完成。
尽管关于交换机描述了本文中的示例,但是诸如网络接口卡、网络接口控制器、SmartNIC、基础设施处理单元(IPU)、数据处理单元(DPU)或其组合的任何网络装置可以执行本文中描述的实施例的一个或多个方面。
图6A描绘了示例交换机。交换机中的各种资源(例如分组处理流水线612、处理器616和/或FPGA 618)可以执行如本文中描述的数据复制。交换机604可以将任何格式的分组或帧从任何端口602-0至602-X路由到端口606-0至606-Y中的任何端口(或反之亦然)或者根据任何规范将分组或帧从任何端口602-0至602-X路由到端口606-0至606-Y中的任何端口(或反之亦然)。可以将端口602-0至602-X中的任何端口连接到一个或多个互连装置的网络。类似地,可以将端口606-0至606-X中的任何端口连接到一个或多个互连装置的网络。
在一些示例中,交换机结构(switch fabric)610可提供来自一个或多个入口端口的分组的路由选择以用于在从交换机604外出之前进行处理。交换机结构610可以被实现为一个或多个多跳拓扑(其中示例拓扑包括环形、蝶形、缓冲多级等)、或者共享内存交换机结构(SMSF)、以及其他实现。SMSF可以是连接到交换机中的入口端口和所有出口端口的任何交换机结构,其中入口子系统将分组段写入(存储进)结构的内存中,而出口子系统从结构的内存读取(取出)分组段。
内存608可以被配置成在从一个或多个端口外出之前存储在端口处接收的分组。分组处理流水线612可以使用将分组特性与相关联的输出端口映射的表来确定要将分组或帧传输到哪个端口。在一些实施例中,分组处理流水线612可以被配置成对接收的分组执行匹配动作以使用存储在三态内容可寻址内存(TCAM)表或精确匹配表中的信息来识别分组处理规则和下一跳。例如,可以使用匹配动作表或电路模块,借此分组的一部分的散列被用作查找条目的索引。分组处理流水线612可以实现访问控制列表(ACL)或者由于队列溢出引起的分组丢弃。分组处理流水线612可以被配置成在其出口之前将关于交换机604的操作和遥测数据添加到分组。
可以使用P4、C、Python、Broadcom网络编程语言(NPL)、或者x86兼容的可执行二进制文件或其他可执行二进制文件对分组处理流水线612的操作配置(包括它的数据平面)进行编程。处理器616和FPGA 618可被用于分组处理或修改。
图6B描绘了可以在交换机或路由器中使用来执行如本文中描述的数据复制的示例可编程分组处理流水线。网络接口或IPU可以包括用来执行本文中描述的数据复制的可编程分组处理流水线。例如,图6B说明了若干入口流水线620、流量管理单元(被称为流量管理器)650和若干出口流水线630。尽管被示出为分开的结构,但是在一些实施例中,入口流水线620和出口流水线630可以使用相同的电路模块资源。在一些实施例中,流水线电路模块被配置成同步处理入口和/或出口流水线分组以及非分组数据。也就是,流水线的特定级可以在相同时钟周期中处理入口分组、出口分组和非分组数据的任何组合。然而,在其他实施例中,入口和出口流水线是分开的电路模块。在这些其他实施例中的一些实施例中,入口流水线还处理非分组数据。
在一些示例中,响应于接收到分组,分组被引导到入口流水线620中的一个,其中入口流水线可以对应于硬件转发元件的一个或多个端口。在经过选择的入口流水线620之后,将分组发送到流量管理器650,其中分组被排队并且被放进输出缓冲器654中。在一些实施例中,处理分组的入口流水线620指定分组要被流量管理器650放入哪个队列中(例如基于分组的目的地或分组的流标识符)。流量管理器650然后将分组分派到适当的出口流水线630,其中出口流水线可以对应于转发元件的一个或多个端口。在一些实施例中,在入口流水线620中的哪个入口流水线处理分组和流量管理器650将分组分派到出口流水线630中的哪个出口流水线之间不存在必要的关联。也就是,分组在通过第一端口接收之后最初可以被入口流水线620b处理并且然后随后可以被出口流水线630a处理以从第二端口被发送出去等。
至少一个入口流水线620包括解析器622、匹配动作单元(MAU)624和逆解析器(deparser)626。类似地,出口流水线630可以包括解析器632、MAU 634和逆解析器636。解析器622或632在一些实施例中接收作为按特定顺序的位的格式化集合的分组并且将分组解析成它的组成报头字段。在一些示例中,解析器从分组的开头开始并且将报头字段分配给字段(例如数据容器)以用于处理。在一些实施例中,解析器622或632从分组的净荷中分离出分组报头(直到指定的点)并且将净荷(或整个分组,包括报头和净荷)直接发送到逆解析器而不经过MAU处理。
MAU 624或634可以对分组数据执行处理。在一些实施例中,MAU包括一系列级(stages),其中每级包括一个或多个匹配表和动作引擎。匹配表可以包括分组报头字段与其进行匹配的一组匹配条目(例如使用散列表),其中匹配条目引用动作条目。当分组匹配特定的匹配条目时,那个特定的匹配条目引用特定的动作条目,所述特定的动作条目指定对分组执行的一组动作(例如,将分组发送到特定的端口,修改一个或多个分组报头字段值,丢弃分组,将分组镜像到镜像缓冲器等)。所述级的动作引擎可以对分组执行动作,所述分组然后被发送到MAU的下一级。
逆解析器626或636可使用如由MAU 624或634修改的分组报头矢量(PHY)和直接从解析器622或632接收的净荷来重建分组。逆解析器可以构建可以通过物理网络发送出去的或者发送到流量管理器650的分组。在一些实施例中,逆解析器可以基于与指定包括在分组报头中的协议的PHV一起接收的数据以及它自己存储的针对每个可能的协议的报头字段的数据容器位置的列表来构建这个分组。例如,可以由MAU 624或634来实现数据复制。
流量管理器650可以包括分组复制器652和输出缓冲器654。在一些实施例中,流量管理器650可以包括其他组件,诸如用于发送关于输出端口故障的信号的反馈生成器、一系列队列和用于这些队列的调度器、队列状态分析组件、以及附加组件。一些实施例的分组复制器652针对广播/多播分组执行复制,生成要被添加到输出缓冲器(例如要被分发给不同的出口流水线)的多个分组。
在一些实施例中,输出缓冲器654可以是流量管理器的排队和缓冲系统的一部分。流量管理器650可以提供容纳出口流水线中的任何排队延迟的共享缓冲器。在一些实施例中,这个共享输出缓冲器654可以存储分组数据,而对那个分组数据的引用(例如指针)被保存在针对每个出口流水线630的不同队列中。出口流水线可以使用控制平面可配置的排队策略向公共数据缓冲器请求它们相应的数据。当分组数据引用到达它的队列的头部并且被调度以用于出队时,对应的分组数据可以从输出缓冲器654中被读出并且被读入对应的出口流水线630。在一些实施例中,分组数据可以被多个流水线引用(例如针对多播分组)。在这种情况下,直到对分组数据的所有引用已经清除了它们的相应队列才从这个输出缓冲器654中移除分组数据。
图7描绘了示例计算系统。系统700的组件(例如处理器710、网络接口750等等)可被用来执行如本文中描述的数据的复制。系统700包括处理器710,所述处理器710为系统700提供处理、操作管理和指令的执行。处理器710可以包括任何类型的微处理器、中央处理单元(CPU)、图形处理单元(GPU)、处理核心、或用来为系统700提供处理的其他处理硬件、或处理器的组合。处理器710控制系统700的整体操作,并且可以是或包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑器件(PLD)等等、或者这样的装置的组合。注意到,在本文中提及GPU或CPU可以另外或备选地指XPU或xPU。xPU可以包括下列中的一个或多个:GPU、ASIC、FPGA或加速器装置。
在一个示例中,系统700包括耦合到处理器710的接口712,所述接口712可以表示用于需要更高带宽连接的系统组件(诸如内存子系统720或图形接口组件740或加速器742)的更高速接口或高吞吐量接口。接口712表示可以是独立的组件或者被集成到处理器管芯上的接口电路。在存在之处,图形接口740通过接口连接到图形组件以用于向系统700的用户提供视觉显示。在一个示例中,图形接口740可以驱动向用户提供输出的高清晰度(HD)显示器。高清晰度可以指具有大约100PPI(每英寸像素)或更大的像素密度的显示器并且可以包括诸如全HD(例如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学习、或异步优势动作评价(Asynchronous Advantage Actor-Critic)(A3C)、组合神经网络、递归组合神经网络、或者其他AI或ML模型。可以使多个神经网络、处理器核心或图形处理单元可用于供AI或ML模型使用。
内存子系统720表示系统700的主存储器并且为要被处理器710执行的代码或者要在执行例程时使用的数据值提供存储。内存子系统720可以包括一个或多个内存装置730,诸如只读存储器(ROM)、闪速存储器、比如DRAM的一种或多种随机存取存储器(RAM)、或其他内存装置、或者这样的装置的组合。内存730尤其还存储并托管操作系统(OS)732以便为系统700中的指令的执行提供软件平台。另外,应用734可以在来自内存730的OS 732的软件平台上执行。应用734表示具有它们自己的操作逻辑以执行一个或多个功能的执行的程序。过程736表示向OS 732或者一个或多个应用734或者组合提供辅助功能的代理或例程。OS732、应用734和过程736提供软件逻辑以便为系统700提供功能。在一个示例中,内存子系统720包括内存控制器722,所述内存控制器722是用来生成命令并且向内存730发出命令的内存控制器。将会理解,内存控制器722可以是处理器710的物理部分或者接口712的物理部分。例如,内存控制器722可以是集成到具有处理器710的电路上的集成的内存控制器。
在一些示例中,OS 732可以是服务器或个人计算机、VMware vSphere、openSUSE、RHEL、CentOS、Debian、Ubuntu、或任何其他操作系统。OS和驱动程序可以在由其中包括 Texas/>设计或销售的CPU上执行。
在一些示例中,根据本文中描述的实施例,驱动程序可以使得应用能够利用网络装置来执行数据复制。
虽然未具体说明,但是将会理解,系统700可以包括装置之间的一个或多个总线或者总线系统,诸如内存总线、图形总线、接口总线或其他。总线或其他信号线可以将组件通信或电耦合在一起,或者既通信又电耦合组件。总线可以包括物理通信线路、点对点连接、网桥、适配器、控制器、或其他电路模块或者组合。总线可以包括例如下列中的一个或多个:系统总线、外围组件互连(PCI)总线、超级传输或行业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)、或电气和电子工程师协会(IEEE)标准1394总线(火线)。
在一个示例中,系统700包括接口714,所述接口714可以被耦合到接口712。在一个示例中,接口714表示可以包括独立的组件和集成电路模块的接口电路。在一个示例中,多个用户接口组件或外围组件或两者耦合到接口714。网络接口750向系统700提供通过一个或多个网络与远程装置(例如服务器或其他计算装置)通信的能力。网络接口750可以包括以太网适配器、无线互连组件、蜂窝网络互连组件、USB(通用串行总线)、或者其他基于有线或无线标准的或专有的接口。网络接口750可以向处于相同数据中心或机架的装置或者远程装置传送数据,这可以包括发送存储在内存中的数据。网络接口750可以从远程装置接收数据,这可以包括将接收的数据存储进内存中。
网络接口750的一些示例是基础设施处理单元(IPU)或数据处理单元(DPU)的一部分或者被IPU或DPU利用。IPU或DPU可以包括具有一个或多个可编程或固定功能处理器的网络接口以执行本来可以被CPU执行的操作的卸载。IPU或DPU可以包括一个或多个内存装置。在一些示例中,IPU或DPU可以执行虚拟交换机操作,管理存储事务(例如压缩、加密、虚拟化)并且管理在其他IPU、DPU、服务器或装置上执行的操作。
在一个示例中,系统700包括一个或多个输入/输出(I/O)接口760。I/O接口760可以包括一个或多个接口组件,用户通过所述一个或多个接口组件与系统700交互(例如音频、字母数字、触觉/触摸、或其他通过接口连接)。外围接口770可以包括上面没有具体提到的任何硬件接口。外围设备通常指从属地连接到系统700的装置。从属连接是其中系统700提供操作在其上执行并且用户与其交互的软件平台或硬件平台或两者的连接。
在一个示例中,系统700包括用来以非易失性方式存储数据的存储子系统780。在一个示例中,在某些系统实现中,存储设备780的至少某些组件可以与内存子系统720的组件重叠。存储子系统780包括(一个或多个)存储装置784,所述(一个或多个)存储装置784可以是或者包括用于以非易失性方式存储大量数据的任何常规介质,诸如一个或多个基于磁、固态或光的盘或者组合。存储设备784以持久性状态保存代码或指令和数据786(例如,尽管系统700的电源中断,但是值被保留)。虽然内存730通常是用来向处理器710提供指令的执行或操作内存,但是存储设备784通常可以被认为是“内存”。尽管存储设备784是非易失性的,但是内存730可以包括易失性存储器(例如,如果系统700的电源被中断,则数据的值或状态是不确定的)。在一个示例中,存储子系统780包括用来与存储设备784通过接口连接的控制器782。在一个示例中,控制器782是接口714或处理器710的物理部分或者可以包括处理器710和接口714两者中的电路或逻辑。
易失性存储器是如果装置的电源被中断则其状态(以及因此存储在其中的数据)是不确定的存储器。动态易失性存储器使用刷新存储在装置中的数据来维持状态。动态易失性存储器的一个示例包括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在讨论中)、或其他或者存储器技术的组合、以及基于这样的规范的衍生物或扩展的技术。
非易失性存储器(NVM)装置是即使装置的电源被中断其状态也是确定的存储器。在一个实施例中,NVM装置可以包括块可寻址存储器装置,诸如NAND技术,或者更具体地,多阈值级NAND闪速存储器(例如单级单元(“SLC”)、多级单元(“MLC”)、四级单元(“QLC”)、三级单元(“TLC”)或者别的NAND)。NVM装置还可以包括字节可寻址原位写入三维交叉点存储器装置或其他字节可寻址原位写入NVM装置(还被称为持久性存储器),诸如单级或多级相变存储器(PCM)或者具有开关的相变存储器(PCMS);OptaneTM存储器;使用硫族化物相变材料(例如硫族化物玻璃)的NVM装置;包括金属氧化物基、氧空位基和导电桥随机存取存储器(CB-RAM)的电阻存储器;纳米线存储器;铁电随机存取存储器(FeRAM,FRAM);结合忆阻器技术的磁阻随机存取存储器(MRAM);自旋转移矩(STT)-MRAM;基于自旋电子磁结存储器的装置;基于磁隧道结(MTJ)的装置;基于DW(畴壁)和SOT(自旋轨道转移)的装置;基于晶闸管的存储器装置;或者上面的一个或多个的组合;或者其他存储器。
供电电源(未描绘)向系统700的组件供电。更具体地,供电电源通常通过接口连接到系统700中的一个或多个电源以向系统700的组件供电。在一个示例中,电源包括用来插入壁装电源插座的AC到DC(交流到直流)适配器。这样的AC电源可以是可再生能量(例如太阳能)供电电源。在一个示例中,供电电源包括DC供电电源,诸如外部AC到DC转换器。在一个示例中,供电电源或电源包括无线充电硬件以借助于接近充电场来进行充电。在一个示例中,供电电源可以包括内部电池、交流电源、基于运动的电源、太阳能电源或燃料电池电源。
在示例中,可以使用处理器、内存、存储设备、网络接口和其他组件的互连计算橇状件(interconnected compute sleds)来实现系统700。可以使用高速互连,诸如:以太网(IEEE 802.3)、远程直接内存访问(RDMA)、InfiniBand、因特网广域RDMA协议(iWARP)、传输控制协议(TCP)、用户数据报协议(UDP)、快速UDP因特网连接(QUIC)、融合以太网上的RDMA(RoCE)、外围组件快速互连(PCIe)、Intel快速路径互连(QPI)、Intel超路径互连(UPI)、Intel片上系统结构(IOSF)、全路径、计算快速链路(CXL)、超级传输、高速结构、NVLink、高级微控制器总线架构(AMBA)互连、OpenCAPI、Gen-Z、无限结构(Infinity Fabric)(IF)、用于加速器的高速缓存一致性互连(CCIX)、3GPP长期演进(LTE)(4G)、3GPP 5G及其变体。可以将数据复制或存储到虚拟化的存储节点,或者可以使用诸如结构上的NVMe(NVMe-oF)或NVMe的协议来访问数据。
可以在各种类型的计算和联网设备中实现本文中的实施例,诸如交换机、路由器、机架、以及比如数据中心和/或服务器场环境中采用的那些的刀片式服务器。数据中心和服务器场中使用的服务器包括阵列式服务器配置,诸如基于机架的服务器或刀片式服务器。经由各种网络供应在通信中互连这些服务器,诸如将服务器组划分成局域网(LAN),其中适当的交换和路由选择设施在LAN之间以形成专用内联网。例如,云托管设施可通常采用具有大量服务器的大型数据中心。刀片包括被配置成执行服务器类型功能的单独的计算平台,也就是“卡上的服务器”。因此,刀片可以包括为常规服务器所共有的组件,包括主印刷电路板(主板),所述主印刷电路板(主板)提供用于耦合适当的集成电路(IC)的内部布线(例如总线)和安装到所述板上的其他组件。
在一些示例中,可以与下列有关地使用本文中描述的网络接口和其他实施例:基站(例如3G、4G、5G等等)、宏基站(例如5G网络)、微微站(例如IEEE 802.11兼容接入点)、纳米站(例如用于点对多点(PtMP)应用)、本地数据中心(on-premises data center)、外部数据中心(off-premises data center)、边缘网络元件、边缘服务器、边缘交换机、雾网络元件(fog network element)和/或混合数据中心(例如使用虚拟化、云和软件定义的联网来跨物理数据中心和分布式多云环境交付应用工作负载的数据中心)。
可以使用硬件元件、软件元件或两者的组合来实现各种示例。在一些示例中,硬件元件可以包括装置、组件、处理器、微处理器、电路、电路元件(例如晶体管、电阻器、电容器、电感器等等)、集成电路、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包括一个或多个示例并且包括一种系统,所述系统包括:交换机装置,所述交换机装置包括:用来接收以太网分组的一个或多个输入端口;用来输出以太网分组的一个或多个输出端口;用来在从一个或多个输入端口接收之后处理分组并且用来在从一个或多个输出端口传输之前处理分组的一个或多个分组处理流水线;用来将一个或多个输入端口中的输入端口处的接收的分组路由到一个或多个输出端口中的输出端口的交换机结构;以及用来执行将存储在源内存区域中的内容复制到从两个或多于两个节点可得到的两个或多于两个内存区域的电路模块,其中从两个或多于两个节点可得到的两个或多于两个内存区域被识别给电路模块以用来存储复制的内容。
示例2包括一个或多个示例,其中交换机装置包括下列中的一个或多个:架顶式(ToR)交换机或基础设施处理单元(IPU)。
示例3包括一个或多个示例,其中两个或多于两个节点处于与存储源内存区域的内存装置的机架不同的机架中。
示例4包括一个或多个示例,其中交换机装置要至少部分基于与两个或多于两个节点相关联的弹性标准来选择从两个或多于两个节点可得到的两个或多于两个内存区域。
示例5包括一个或多个示例,其中源内存区域被指定使得将内容写入源内存区域要促使交换机装置将内容传送到从两个或多于两个节点可得到的两个或多于两个内存区域。
示例6包括一个或多个示例,其中交换机装置要利用远程直接内存访问协议来将内容传送到从两个或多于两个节点可得到的两个或多于两个内存区域。
示例7包括一个或多个示例并且包括一种平台,所述平台包括:用来执行应用的处理器,其中应用要将数据复制卸载到交换机装置,应用要访问内容,并且内容须经高可用性和/或灾难恢复。
示例8包括一个或多个示例并且包括一种方法,所述方法包括:交换机装置接收命令以执行与目标内存区域相关联的数据的复制;交换机装置接收可用来存储副本数据的一个或多个节点的一个或多个内存区域的标识;以及交换机装置从可用来存储副本数据的一个或多个内存区域中选择至少一个内存区域并且交换机装置将数据的复制品从目标内存区域传送到来自一个或多个内存区域的选择的至少一个内存区域。
示例9包括一个或多个示例,其中交换机装置从可用来存储副本数据的一个或多个内存区域中选择至少一个内存区域至少部分基于与来自可用来存储副本数据的一个或多个内存区域的至少一个内存区域相关联的弹性因子。
示例10包括一个或多个示例,其中弹性因子包括介质的可靠性水平和将复制的数据传送到请求者的能力。
示例11包括一个或多个示例,其中一个或多个节点处于与存储与目标内存区域相关联的数据的内存装置的机架不同的机架中。
示例12包括一个或多个示例并且包括基于将数据写入目标内存区域来促使交换机装置将写入的数据的复制品传送到选择的至少一个内存区域。
示例13包括一个或多个示例,其中交换机装置将数据的复制品从目标内存区域传送到来自一个或多个内存区域的选择的至少一个内存区域包括交换机装置利用远程直接内存访问(RDMA)协议来将数据的复制品从目标内存区域传送到来自一个或多个内存区域的选择的至少一个内存区域。
示例14包括一个或多个示例,其中交换机装置包括下列中的一个或多个:架顶式(ToR)交换机或基础设施处理单元(IPU)。
示例15包括一个或多个示例并且包括一种非暂时性计算机可读介质,所述非暂时性计算机可读介质包括指令,所述指令如果被一个或多个处理器执行则促使一个或多个处理器:接收查询以识别交换机装置是否能够通过从一个或多个节点的一个或多个内存区域之中选择用来存储复制的数据的内存区域来执行或不执行从应用卸载数据复制;以及提供对查询的响应以识别交换机装置是否能够通过从一个或多个节点的一个或多个内存区域之中选择用来存储复制的数据的内存区域来执行或不执行从应用卸载数据复制。
示例16包括一个或多个示例并且包括指令,所述指令如果被一个或多个处理器执行则促使一个或多个处理器:基于使得交换机装置能够通过从一个或多个节点的一个或多个内存区域之中选择用来存储复制的数据的内存区域来执行从应用卸载数据复制的请求而将交换机装置配置成通过从一个或多个节点的一个或多个内存区域之中选择用来存储复制的数据的内存区域来执行从应用卸载数据复制。
示例17包括一个或多个示例,其中交换机装置从一个或多个节点接收可用来存储复制数据的内存区域的指示。
示例18包括一个或多个示例,其中一个或多个节点处于与存储要被复制的数据的内存装置的机架不同的机架中。
示例19包括一个或多个示例,其中交换机装置基于与一个或多个节点相关联的弹性标准而从可用节点之中选择一个或多个节点。
示例20包括一个或多个示例,其中弹性标准包括要存储复制的数据的介质的可靠性水平和将复制的数据传送到请求者的能力。
Claims (20)
1.一种系统,包括:
交换机装置,所述交换机装置包括:
用来接收以太网分组的一个或多个输入端口;
用来输出以太网分组的一个或多个输出端口;
用来在从所述一个或多个输入端口接收之后处理分组并且用来在从所述一个或多个输出端口传输之前处理分组的一个或多个分组处理流水线;
用来将所述一个或多个输入端口中的输入端口处的接收的分组路由到所述一个或多个输出端口中的输出端口的交换机结构;以及
用来执行将存储在源内存区域中的内容复制到从两个或多于两个节点能够得到的两个或多于两个内存区域的电路模块,其中,从两个或多于两个节点能够得到的所述两个或多于两个内存区域被识别给所述电路模块以用来存储复制的内容。
2.如权利要求1所述的系统,其中,所述交换机装置包括下列中的一个或多个:架顶式(ToR)交换机或基础设施处理单元(IPU)。
3.如权利要求1所述的系统,其中,所述两个或多于两个节点处于与存储所述源内存区域的内存装置的机架不同的机架中。
4.如权利要求1所述的系统,其中,所述电路模块要至少部分基于与两个或多于两个节点相关联的弹性标准来选择从所述两个或多于两个节点能够得到的所述两个或多于两个内存区域。
5.如权利要求1至4中的任一项所述的系统,其中,所述源内存区域被指定使得将所述内容写入所述源内存区域要促使所述交换机装置将所述内容传送到从两个或多于两个节点能够得到的所述两个或多于两个内存区域。
6.如权利要求1至5中的任一项所述的系统,其中,所述交换机装置要利用远程直接内存访问协议来将所述内容传送到从两个或多于两个节点能够得到的所述两个或多于两个内存区域。
7.如权利要求1至6中的任一项所述的系统,包括:
平台,所述平台包括用来执行应用的处理器,其中,所述应用要将数据复制卸载到所述交换机装置,所述应用要访问所述内容,并且所述内容须经高可用性和/或灾难恢复。
8.一种方法,包括:
交换机装置接收命令以执行与目标内存区域相关联的数据的复制;
所述交换机装置接收能够用来存储副本数据的一个或多个节点的一个或多个内存区域的标识;以及
所述交换机装置从能够用来存储副本数据的所述一个或多个内存区域中选择至少一个内存区域并且所述交换机装置将数据的复制品从所述目标内存区域传送到来自所述一个或多个内存区域的选择的至少一个内存区域。
9.如权利要求8所述的方法,其中,所述交换机装置从能够用来存储副本数据的所述一个或多个内存区域中选择至少一个内存区域至少部分基于与来自能够用来存储副本数据的所述一个或多个内存区域的所述至少一个内存区域相关联的弹性因子。
10.如权利要求9所述的方法,其中,所述弹性因子包括介质的可靠性水平和将复制的数据传送到请求者的能力。
11.如权利要求8所述的方法,其中,所述一个或多个节点处于与存储与所述目标内存区域相关联的数据的内存装置的机架不同的机架中。
12.如权利要求8至11中的任一项所述的方法,包括:
基于将数据写入所述目标内存区域而促使所述交换机装置将写入的数据的复制品传送到所述选择的至少一个内存区域。
13.如权利要求8至12中的任一项所述的方法,其中,所述交换机装置将数据的复制品从所述目标内存区域传送到来自所述一个或多个内存区域的所述选择的至少一个内存区域包括所述交换机装置利用远程直接内存访问(RDMA)协议来将所述数据的复制品从所述目标内存区域传送到来自所述一个或多个内存区域的所述选择的至少一个内存区域。
14.如权利要求8所述的方法,其中,所述交换机装置包括下列中的一个或多个:架顶式(ToR)交换机或基础设施处理单元(IPU)。
15.一种非暂时性计算机可读介质,所述非暂时性计算机可读介质包括指令,所述指令如果被一个或多个处理器执行则促使所述一个或多个处理器:
接收查询以识别交换机装置是否能够通过从一个或多个节点的一个或多个内存区域之中选择用来存储复制的数据的内存区域来执行或不执行从应用卸载数据复制;以及
提供对所述查询的响应以识别所述交换机装置是否能够通过从一个或多个节点的一个或多个内存区域之中选择用来存储复制的数据的内存区域来执行或不执行从应用卸载数据复制。
16.如权利要求15所述的非暂时性计算机可读介质,包括指令,所述指令如果被一个或多个处理器执行则促使所述一个或多个处理器:
基于使得所述交换机装置能够通过从一个或多个节点的一个或多个内存区域之中选择用来存储复制的数据的内存区域来执行从应用卸载数据复制的请求,将所述交换机装置配置成通过从一个或多个节点的一个或多个内存区域之中选择用来存储复制的数据的内存区域来执行从应用卸载数据复制。
17.如权利要求15至16中的任一项所述的非暂时性计算机可读介质,其中
所述交换机装置从所述一个或多个节点接收能够用来存储复制的数据的内存区域的指示。
18.如权利要求16所述的非暂时性计算机可读介质,其中,所述一个或多个节点处于与存储要被复制的数据的内存装置的机架不同的机架中。
19.如权利要求16所述的非暂时性计算机可读介质,其中,所述交换机装置基于与所述一个或多个节点相关联的弹性标准而从可用节点之中选择所述一个或多个节点。
20.如权利要求19所述的非暂时性计算机可读介质,其中,所述弹性标准包括要存储复制的数据的介质的可靠性水平和将复制的数据传送到请求者的能力。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/339164 | 2021-06-04 | ||
US17/339,164 US20210294702A1 (en) | 2021-06-04 | 2021-06-04 | High-availability memory replication in one or more network devices |
PCT/US2022/021796 WO2022256071A1 (en) | 2021-06-04 | 2022-03-24 | High-availability memory replication in one or more network devices |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117242436A true CN117242436A (zh) | 2023-12-15 |
Family
ID=77747899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280032636.7A Pending CN117242436A (zh) | 2021-06-04 | 2022-03-24 | 一个或多个网络装置中的高可用性内存复制 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210294702A1 (zh) |
EP (1) | EP4298519A1 (zh) |
CN (1) | CN117242436A (zh) |
WO (1) | WO2022256071A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220385732A1 (en) * | 2021-05-26 | 2022-12-01 | Western Digital Technologies, Inc. | Allocation of distributed cache |
US20210294702A1 (en) * | 2021-06-04 | 2021-09-23 | Intel Corporation | High-availability memory replication in one or more network devices |
US20230081785A1 (en) * | 2021-09-10 | 2023-03-16 | Huawei Technologies Co., Ltd. | Data sending method and apparatus, data receiving method, apparatus, and system, and medium |
US11954073B2 (en) | 2022-03-16 | 2024-04-09 | International Business Machines Corporation | Multi-protocol multi-site replication |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11082515B2 (en) * | 2015-09-26 | 2021-08-03 | Intel Corporation | Technologies for offloading data object replication and service function chain management |
US10691368B2 (en) * | 2017-03-31 | 2020-06-23 | Samsung Electronics Co., Ltd. | System and method for providing data replication in NVMe-oF ethernet SSD |
US10778767B2 (en) * | 2017-04-28 | 2020-09-15 | International Business Machines Corporation | Persistent memory replication in RDMA-capable networks |
US10275180B2 (en) * | 2017-05-08 | 2019-04-30 | Samsung Electronics Co., Ltd. | Ethernet SSD system including storage offload engine (SoE) controller and ethernet switch |
US10565062B1 (en) * | 2017-08-03 | 2020-02-18 | Veritas Technologies Llc | Systems and methods for managing replication of data to a remote storage device |
US20210294702A1 (en) * | 2021-06-04 | 2021-09-23 | Intel Corporation | High-availability memory replication in one or more network devices |
-
2021
- 2021-06-04 US US17/339,164 patent/US20210294702A1/en active Pending
-
2022
- 2022-03-24 WO PCT/US2022/021796 patent/WO2022256071A1/en active Application Filing
- 2022-03-24 CN CN202280032636.7A patent/CN117242436A/zh active Pending
- 2022-03-24 EP EP22816602.1A patent/EP4298519A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022256071A1 (en) | 2022-12-08 |
EP4298519A1 (en) | 2024-01-03 |
US20210294702A1 (en) | 2021-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11934330B2 (en) | Memory allocation for distributed processing devices | |
US11748278B2 (en) | Multi-protocol support for transactions | |
US20210075633A1 (en) | Packet multi-cast for memory pool replication | |
US11941458B2 (en) | Maintaining storage namespace identifiers for live virtualized execution environment migration | |
US20210294702A1 (en) | High-availability memory replication in one or more network devices | |
US20200133909A1 (en) | Writes to multiple memory destinations | |
US20210211467A1 (en) | Offload of decryption operations | |
US20220103530A1 (en) | Transport and cryptography offload to a network interface device | |
US20210359955A1 (en) | Cache allocation system | |
US11681625B2 (en) | Receive buffer management | |
US11936571B2 (en) | Reliable transport offloaded to network devices | |
US20210326177A1 (en) | Queue scaling based, at least, in part, on processing load | |
CN115237550A (zh) | 网络处理资源的池化 | |
US20210258265A1 (en) | Resource management for components of a virtualized execution environment | |
US20210326221A1 (en) | Network interface device management of service execution failover | |
US20220086226A1 (en) | Virtual device portability | |
EP3996353A1 (en) | Em: extension of openswitch megaflow offloads to hardware to address hardware pipeline limitations | |
US20210329354A1 (en) | Telemetry collection technologies | |
US20220210097A1 (en) | Data access technologies | |
US20210326270A1 (en) | Address translation at a target network interface device | |
CN117651936A (zh) | 网络层7卸载到服务网格的基础设施处理单元 | |
WO2023075930A1 (en) | Network interface device-based computations | |
EP4020208A1 (en) | Memory pool data placement technologies | |
EP4030284A1 (en) | Virtual device portability | |
US20230153174A1 (en) | Device selection for workload execution |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |