CN113424144A - 计算数据存储系统 - Google Patents

计算数据存储系统 Download PDF

Info

Publication number
CN113424144A
CN113424144A CN202080014116.4A CN202080014116A CN113424144A CN 113424144 A CN113424144 A CN 113424144A CN 202080014116 A CN202080014116 A CN 202080014116A CN 113424144 A CN113424144 A CN 113424144A
Authority
CN
China
Prior art keywords
data
storage
compute
computing
block
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
CN202080014116.4A
Other languages
English (en)
Inventor
M·P·梅斯尼尔
J·S·凯斯
I·F·亚当斯
Y·邹
L·C·马里亚雷米斯
D·R·迈克莱伦
M·巴尔扎克
A·拉古纳斯
L·W·孔
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 CN113424144A publication Critical patent/CN113424144A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/061Improving I/O performance
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

在一个实施例中,系统包括主机处理器和存储系统。存储系统包括一个或多个存储设备,并且每个存储设备包括非易失性存储器和计算迁移控制器。非易失性存储器存储数据,并且计算迁移控制器基于来自主机处理器的计算迁移命令来对数据执行计算任务。

Description

计算数据存储系统
相关申请的交叉引用
本专利申请要求于2019年3月12日提交的题为“计算数据存储系统(COMPUTATIONAL DATA STORAGE SYSTEMS)”的美国临时专利申请序列第62/817,510号的申请日的权益,其内容特此通过引用明确并入。
技术领域
本公开总体上涉及计算机数据存储领域,并且更具体地但非排他地涉及以计算能力实现的数据存储解决方案。
背景技术
在计算系统中,数据可以本地或通过网络存储在基于块的存储中,诸如固态驱动器(SSD)中的非易失性存储器(NVM)。例如,NVM可以是NAND闪存存储器或任何其他合适形式的稳定、持久存储。随着SSD的容量和内部速度的增加,NVM通常受限于它所附接的输入/输出(I/O)控制器的速度和/或本地总线或网络链接上的可用带宽。
附图说明
图1描绘了根据各实施例的包括主机和块存储设备的计算机系统的框图。
图2是根据各实施例的用于将计算操作迁移到块存储设备的技术的流程图。
图3是根据各实施例的用于利用块存储设备执行迁移的计算操作的技术的流程图。
图4示意性地示出了根据各实施例的示例计算设备,该示例计算设备包括具有如本文所述的非易失性存储器控制器的块存储设备。
图5示出了根据各实施例的具有被配置成使装备能够实施本公开的各方面的指令的示例存储介质。
图6示出了使用基于块的存储的存储中计算(compute-in-storage)堆栈的高级架构和数据流。
图7示出了用于单词计数操作的示例计算描述符。
图8示出了使用常规路径和迁移路径的该存储中计算解决方案的读取吞吐量。
图9示出了校验和的常规接入吞吐量。
图10示出了校验和的迁移吞吐量。
图11示出了典型的分布式存储,其中数据使用3路复制存储。
图12示出了并行使用多个存储中计算节点来搜索3路复制的文件的示例。
图13示出了出现在多个复制的存储节点的相邻区块的边界处的示例输入参数。
图14示出了端到端并行计算迁移架构。
图15示出了主机进程和SDS节点进程上的并行计算迁移操作的流程图。
图16示出了用于对使用复制的数据存储来存储的数据执行计算任务的流程图。
图17示出了单词计数的残余的示例。
图18示出了具有2个条带和每个条带4个区块的示例数据布局。
图19示出了具有2个条带和每个条带4个区块、块大小为12和子块大小为3的示例数据布局以及示例数据。
图20示出了返回用于重构的模糊残余数据的示例。
图21示出了标识半结构化数据上的残余的示例。
图22示出了搜索长度为2的字符串时的残余的示例。
图23示出了具有残余返回的示例边界列表。
图24示出了用于对存储在条带存储系统中的数据对象执行计算任务的流程图。
图25示出了用于擦除编码构造和重构的逻辑流程的示例。
图26示出了分布式软件定义存储系统上的存储中计算的示例。
图27示出了示例Ceph OSD配置,其中扩展了OSD的目标信息。
图28示出了用于降级模式中的存储的计算迁移的示例。
图29示出了用于对存储在擦除编码存储系统中的数据对象执行计算任务的流程图。
图30示出了用于链式存储中计算操作的整体架构和数据流的示例。
图31示出了用于对存储在存储系统中的数据对象执行链式计算任务的流程图。
图32示出了具有跨越区块或子块边界的多个数据元素的条带对象的示例。
图33示出了具有使用填充在区块和子块边界内对齐的多个数据元素的条带对象的示例。
图34示出了预先分配的循环缓冲器的示例。
图35示出了用于对存储在存储系统中的图像对象执行视觉计算任务的流程图。
图36示出了用于使用存储中计算的老化数据的示例计算架构。
图37示出了用于在新位置压缩和放置数据的示例计算描述符。
图38示出了用于将数据老化到不同目标机器上的预先分配位置的示例计算描述符。
图39示出了用于使用存储中计算将数据老化到不同目标的示例计算架构。
图40示出了用于将复制数据转换为擦除编码数据的示例计算描述符。
图41示出了用于将数据老化到第三方存储服务的示例计算描述符。
图42示出了用于对存储在存储系统中的数据对象执行数据老化计算任务的流程图。
图43示出了用于NAND存储的基于提示的生命周期预测的架构和数据流的示例。
图44示出了用于基于NAND的数据生命周期预测的端到端I/O分类和计算迁移描述符映射的示例实施例。
图45示出了用于使用数据生命周期预测将数据存储在NAND存储上的流程图。
图46示出了用于缓存驱逐和分配调整的示例处理流程。
图47示出了用于优化和配置存储系统的缓存的流程图。
图48示出了使用存储中计算来迁移CTC计算的示例实施例的流程图。
图49示出了用于对存储在存储系统中的数据对象执行CRC验证的流程图。
图50示出了针对边缘计算的边缘云配置的概览。
图51示出了跨在多个边缘节点和多个租户之间操作的边缘计算系统的虚拟边缘配置的部署和编排。
图52示出了涉及对边缘计算系统中的应用的移动接入的车辆计算和通信用例。
图53示出了多接入边缘计算(MEC)系统架构的框图。
图54示出了部署在边缘计算环境之间的分布式计算层的概览。
图55示出了用于实现边缘服务页表的系统图。
图56示出了边缘服务页表。
图57示出了用于在边缘设备处对数据进行聚合的架构的系统图。
图58A示出了计算节点的示例组件的概览。
图58B示出了计算设备内的示例组件的进一步概览。
图58C示出了可配置服务器机架内的示例组件的概览。
具体实施方式
本专利申请要求于2019年3月12日提交的题为“计算数据存储系统(COMPUTATIONAL DATA STORAGE SYSTEMS)”的美国临时专利申请序列第62/817,510号的申请日的权益,其内容特此通过引用明确并入。
下列公开提供用于实现本公开的不同特征的许多不同的实施例或示例。下文描述组件和布置的特定示例以简化本公开。当然,这些仅是示例,并且不旨在是限制性的。此外,本公开可以在各示例中重复附图标号和/或字母。这种重复只是为了简明和清晰,并且本身不规定所讨论的各实施例和/或配置之间的关系。不同的实施例可具有不同的优点,并且没有特定的优点对于任何实施例一定是必需的。
本公开提出了与计算存储或“存储中计算”相关的各实施例,其指代以计算能力实现的数据存储解决方案。
块存储中的计算迁移
图1是根据各实施例的计算机系统100的框图,该计算机系统100可以包括主机102和块存储设备104(例如,基于块的存储设备(诸如SSD)、基于块的存储服务器或任何其他合适的基于块的存储设备)。在一些实施例中,主机102可包括与存储器108耦合的处理器106。在各实施例中,计算进程110可以在主机102上运行(例如,通过存储器108中的处理器106)。在一些实施例中,计算进程110可以是应用、存储中间件、软件存储栈、操作系统或任何其他合适的计算进程。在各实施例中,主机102可进一步包括计算迁移器112,该迁移器112可包括客户端迁移逻辑114和启动器116。在一些实施例中,块存储设备104可以被称为存储目标或计算使能存储目标。在一些实施例中,客户端迁移逻辑114被称为客户端迁移器。
在一些实施例中,计算进程110可以向计算迁移器112发送计算迁移请求。在各实施例中,计算迁移请求可以指定更高级别的对象(例如,文件)和期望的操作(例如,散列函数,诸如MD5操作)。在一些实施例中,客户端迁移逻辑114可以至少部分地基于请求来构建基于块的计算描述符130并且可以将基于块的计算描述符130打包在计算迁移命令132中。在各实施例中,计算迁移命令132可以是供应商专用命令,其可以包含基于块的元数据(例如,作为基于块的计算描述符130的一部分)。在一些实施例中,客户端迁移逻辑114可以至少部分地基于由计算迁移请求指定的更高级别的对象来生成虚拟输入对象134。在一些实施例中,客户端迁移逻辑114可以确定与在基于块的存储(例如,NVM)中存储来生成虚拟输入对象134的更高级别对象的位置相对应的一个或多个块的列表。
在各实施例中,基于块的计算描述符130可以描述待被输入和/或输出用于计算的存储块(例如,如由虚拟对象映射的)、待被执行的函数138(例如,如由计算类型标识符或操作代码标识的所请求的计算操作),以及函数138的任何附加参数140(例如,搜索字符串)。在各实施例中,附加参数140也可被称为参数。在一些实施例中,计算迁移器112可包括客户端迁移库115,客户端迁移逻辑114可以使用该客户端迁移库115来创建基于块的计算描述符130。在一些实施例中,客户端迁移库115可能不存在并且/或者客户端迁移库115的一些或所有方面可包括在客户端迁移逻辑114中(例如,在ASIC中)。在各实施例中,客户端迁移逻辑114可以创建虚拟输入对象134和/或虚拟输出对象136(例如,块区段和对象长度的列表),并且可以为要使用这些虚拟对象执行的期望操作分配操作代码。在一些实施例中,具有基于块的计算描述符130的计算迁移命令132可以包含针对块存储设备104中的虚拟对象(例如,虚拟输入对象134)调度计算所需的所有信息。在各实施例中,基于块的计算描述符130可以以协议不可知的方式描述基于块的计算操作,该方式可以适用于任何基于块的存储设备或系统。在一些实施例中,虚拟输入对象134可包括将虚拟输入对象134映射到真实输入对象(例如,文件)的第一元数据集合。在各实施例中,第一元数据集合可包括真实输入对象的大小、组成真实输入对象的块列表和/或描述真实输入对象的任何其他元数据。在一些实施例中,虚拟输出对象136可包括将虚拟输出对象136映射到真实输出对象的第二元数据集合。
各实施例可以在基于块的存储中执行通用的、基于文件的计算,和/或可以在单个I/O命令(例如,计算迁移命令132)内携带所有执行上下文,这可以提供优于需要在主机与目标之间(例如,之间的通信)进行多次往返以便启动目标侧计算的传统方法和/或具有随文件中块的数量(例如,线性地)增长的调度开销的传统方法的性能优点。通过在单个I/O命令内携带所有执行上下文,各实施例可以提供优于使用可编程过滤器的传统方法的优点,该可编程过滤器跨读取操作持续存在和/或需要单独的初始化和结束命令(例如,将状态跟踪开销引入到SSD操作)。一些实施例可能不需要在主机上的任何地方引入基于对象的文件系统,这与传统方法相比可以降低复杂性。一些实施例可以提供通用的解决方案,该解决方案可以适用于与任何文件系统一起使用,并且可以与基于对象的存储堆栈一起工作,这与需要应用直接访问块存储和/或不适用于与文件系统一起使用的一些传统方法形成对比。
在一些实施例中,启动器116可以通过链路118将包括基于块的计算描述符130的计算迁移命令132传送到块存储设备104。在一些实施例中,链路118可以是传输结构,诸如互联网小型计算机系统接口(iSCSI)、结构上的NVM快速(NVMeOF)接口或任何其他合适的传输结构。在其他实施例中,链路118可以是本地总线接口,诸如外围组件互连快速(PCIe),或任何其他合适的接口。
在各实施例中,块存储设备104可包括NVM 120和计算迁移控制器122。在一些实施例中,计算迁移控制器122可以是NVM控制器、SSD控制器、存储服务器控制器或任何其他合适的基于块的存储控制器或其一部分。尽管为了清楚起见,NVM 120被示为单个元件,但是应当理解,在各实施例中,多个NVM 120可以存在于块存储设备104中和/或至少部分地由计算迁移控制器122控制。在一些实施例中,计算迁移控制器122可包括解析逻辑124和计算逻辑126。在各实施例中,解析逻辑124可以解析从主机102接收的计算迁移命令(例如,计算迁移命令132)和/或计算描述符(例如,基于块的计算描述符130)。在一些实施例中,解析逻辑124标识封装在计算迁移命令(例如,计算迁移命令132)中的计算描述符(例如,基于块的计算描述符130),并且解析所标识的计算描述符以标识虚拟输入对象(例如,虚拟输入对象134)、虚拟输出对象(例如,虚拟输出对象136)、所请求的计算操作(例如,函数138)和/或其他参数(例如,由附加参数140指定的搜索字符串)。在各实施例中,计算逻辑126执行所请求的计算操作。在一些实施例中,计算逻辑126可以针对虚拟输入对象134执行所请求的计算操作138并且可以将所请求的计算操作的结果存储在虚拟输出对象136中。在一些实施例中,计算迁移控制器122和/或计算逻辑126可以使用硬件加速器来实现,该硬件加速器被设计成对存储在非易失性存储器120上的数据执行某些计算操作。
在一些实施例中,在执行迁移的计算操作的同时,NVM 120的一个或多个标准操作(例如,读取和写入操作)可以继续正常发生。在一些实施例中,计算迁移控制器122可包括目标迁移库127,该计算迁移控制器122可以被解析逻辑124用于解析计算迁移命令和/或计算描述符,并且可以被计算逻辑126用于执行所请求的计算操作。在一些实施例中,目标迁移库127可能不存在并且/或者目标迁移库127的一些或所有方面可包括在解析逻辑124和/或计算逻辑126中(例如,在ASIC中)。在一些实施例中,如果一个或多个预期项目不包括在描述符(例如,虚拟输出对象)中,则可以使用默认值或者如果可能的话可以执行默认动作。各实施例可以通过在块存储系统中创建虚拟对象并针对该虚拟对象执行计算来避免与添加复杂的基于对象的设备或基于对象的文件系统的传统方法相关联的问题。在一些实施例中,解析逻辑124被称为解析器并且计算逻辑126被称为迁移执行器。
在各实施例中,虚拟输入对象134可包括一个或多个块的第一列表。在一些实施例中,一个或多个块的第一列表可包括起始地址的列表和块长度的相对应列表以形成第一块区段集合。在各实施例中,虚拟输出对象136可包括一个或多个块的第二列表。在一些实施例中,一个或多个块的第二列表可包括起始地址的列表和块长度的相对应列表以形成第二块区段集合。在其他实施例中,第一块区段集合和/或第二块区段集合可以用起始地址列表和结束地址列表指定,和/或可包括总虚拟对象长度(分别包括虚拟输入对象长度或虚拟输出对象长度)。在一些实施例中,所请求的计算操作138可以是可应用于一个或多个块的第一列表并写入一个或多个块的第二列表的函数(例如,压缩、散列化、搜索、图像大小重新调整、校验和计算或任何其他合适的函数)。在一些实施例中,与虚拟输入对象134和/或虚拟输出对象136相关联的块可以是扇区。在一些实施例中,起始地址可以是逻辑块地址(LBA),一个或多个块的第一列表和第二列表可以另外由LBA标识,或者一个或多个块的第一列表和/或第二列表可以以任何其他合适的方式标识。在各实施例中,虚拟输入对象134可以指定NVM 120中存储文件数据的块位置,和/或虚拟输出对象136可以指定NVM120中要写入结果的块位置。在一些实施例中,虚拟输出对象136可以指定将结果返回到主机102。
在各实施例中,解析逻辑124、计算逻辑126和/或计算迁移控制器122的其他功能可以用一个或多个处理器或中央处理单元(CPU)、一个或多个现场可编程门阵列(FPGA)、一个或多个专用集成电路(ASIC)、智能存储加速库(ISA-L)、数据流架构和/或任何其他合适的硬件和/或软件组合来执行,为了清楚起见未示出。在一些实施例中,计算迁移控制器122可包括一个或多个缓冲器128,该一个或多个缓冲器128在各实施例中可包括输入缓冲器、输出缓冲器和/或输入/输出缓冲器。在一些实施例中,计算迁移控制器122的一个或多个组件(例如,计算逻辑126和/或解析逻辑124)可以在对NVM 120的读取和/或写入操作中使用缓冲器128。
在一些实施例中,块存储设备104可以是SSD,在各实施例中,该SSD可以通过诸如PCIe的本地总线与主机102耦合,或者可以通过网络与主机102耦合。在一些实施例中,块存储设备104可以是存储服务器,该存储服务器可以是分解计算环境的一部分。在各实施例中,主机102和/或块存储设备104可包括附加元件,为了清楚未示出(例如,块存储设备104可包括一个或多个处理器和系统存储器)。
在各实施例中,NVM 120可以是即使到设备的电源被中断其状态也是确定的存储器。在一些实施例中,NVM 120可包括块可寻址模式存储器设备,诸如NAND或NOR技术,或更具体地,多阈值级NAND闪存存储器(例如,单级单元(“SLC”)、多级单元(“MLC”)、四级单元(“QLC”)、三级单元(“TLC”)或一些其他NAND)。在一些实施例中,NVM 120可包括字节可寻址就地写入三维交叉点存储器设备,或其他字节可寻址就地写入NVM设备,诸如单级或多级相变存储器(PCM)或带开关的相变存储器(PCMS)、使用硫属化物相变材料(例如,硫属化物玻璃)的NVM设备、包括金属氧化物基底、氧空位基底和导电桥随机存取存储器(CB-RAM)的电阻式存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、结合忆阻器技术的磁阻随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、基于自旋电子磁结存储器的设备、基于磁隧穿结(MTJ)的设备、基于DW(畴壁)和SOT(自旋轨道转移)的设备、基于晶闸管的存储器设备、上述任何的组合或其他合适的存储器。
在各实施例中,与传统方法相比,迁移的计算操作(例如,校验和的计算、bitrot(位衰减)检测)可以看到加速的完成时间和/或减少的I/O通信量。
图2是根据各实施例的用于将计算操作迁移到块存储设备的技术200的流程图。在一些实施例中,技术200的一些或全部可以通过关于图1的计算机系统100或其一部分(例如,计算迁移器112)、图4的计算机设备400或其一部分(例如,计算迁移器450)示出和/或描述的组件来实践,或通过关于任何其他附图在本文示出或描述的一些其他组件来实践。
在一些实施例中,在框202处,技术200可包括从计算进程接收请求(例如,通过计算迁移器112从计算进程110接收请求)。在各实施例中,请求可包括更高级别的对象(例如,文件)、所请求的操作或计算、以及一个或多个附加参数(例如,搜索字符串)。然而,应当理解,在其他实施例中,该请求可包括任何其他合适的参数。
在各实施例中,在框204处,技术200包括至少部分地基于请求来构建基于块的计算描述符(例如,基于块的计算描述符130)。在一些实施例中,构建基于块的计算描述符可包括至少部分地基于包括在请求中的更高级别的对象(例如,文件)来构建区段映射(例如,虚拟输入对象的块列表)。在一些实施例中,区段映射可包括LBA列表。
在一些实施例中,在框206处,技术200包括使用计算迁移命令将基于块的计算描述符发送到基于块的存储设备(例如,块存储设备104或块存储设备452)。在一些实施例中,将基于块的计算描述符发送到基于块的存储设备可包括将基于块的计算描述符加载到有效载荷中(例如,计算迁移命令)。在各实施例中,基于块的存储设备可以是NVM存储设备。
在一些实施例中,在框206处发送的计算迁移命令可以是使用iSCSI传输协议通过网络传输的SCSI命令。在一些实施例中,使用iSCSI传输协议通过网络传输的SCSI命令可以被称为iSCSI命令。在一些实施例中,在框206发送的计算迁移命令可以是iSCSI命令,其可以使用被指定为(0x99)的操作码(opcode)。在一些实施例中,(0x99)命令可以被定义为可包括输出缓冲器和输入缓冲器的双向命令。在一些实施例中,(0x99)命令的输出缓冲器可用于包含计算描述符,并且(0x99)命令的输入缓冲器可用于包含响应于计算描述符中描述的操作而执行的结果。在一些实施例中,(0x99)命令可被定义为供应商特定的命令,和/或可被称为EXEC命令。在其他实施例中,计算迁移命令可以是以与上面讨论的iSCSI命令类似的方式定义的SCSI命令,但是(例如,通过诸如PCIe总线之类的本地总线)直接传输到附接的设备。应当理解,提及(0x99)命令是为了说明示例的目的,并且可以在各实施例中使用任何合适的操作码指定或其他计算迁移命令标识符。
在一些实施例中,在框206处发送的计算迁移命令可包括一个或多个NVMe命令。在一些实施例中,计算迁移命令可以是包括两个操作码的融合NVMe命令。在一些实施例中,融合的NVMe命令可包括可用于将计算描述符从主机传输到基于块的存储设备的第一操作码,随后是可用于将结果从基于块的存储设备传输回主机的第二操作码。以此方式,融合的NVMe命令可以通过融合两个单向命令产生虚拟双向命令。在一些实施例中,第一操作码可以是指定为(0x99)的供应商特定的操作码和/或可被称为执行_写入(EXEC_WRITE)命令。在一些实施例中,第二操作码可以是指定为(0x9a)的供应商特定的操作码和/或可被称为执行_读取(EXEC_READ)命令。在一些实施例中,EXEC_WRITE命令可以等效于上述iSCSI双向EXEC命令的第一阶段(例如,包含计算描述符)和/或EXEC_READ命令可以等效于上述iSCSI双向EXEC命令的第二阶段(例如,返回操作的结果)。在一些实施例中,融合的NVMe命令可以使用NVMeOF传输协议通过网络发送。在一些实施例中,使用NVMeOF传输协议通过网络传输的NVMe命令可以被称为NVMeOF命令。在一些实施例中,融合的NVMe命令可以被直接传输到附接的设备(例如,通过诸如PCIe总线之类的本地总线)。在一些实施例中,iSCSI或SCSI计算迁移命令(例如,EXEC)可以在发送到NVM存储设备之前被转换为上面讨论的融合的NVMe命令。应当理解,在其他实施例中可以使用任何其他合适的计算迁移命令。应当理解,提及(0x99)和(0x9a)供应商特定的命令是为了说明示例的目的,并且在各实施例中可以使用任何合适的操作码指定或其他计算迁移命令标识符。
在一些实施例中,在框208处,技术200可包括响应于基于块的计算描述符而从基于块的存储设备接收结果。在各实施例中,在框210处,技术200可包括执行其他动作。
图3是根据各实施例的用于利用块存储设备执行迁移的计算操作的技术300的流程图。在一些实施例中,技术300的一些或全部可以通过关于图1的计算机系统100或其一部分(例如,块存储设备104和/或计算迁移控制器122)、图4的计算机设备400或其一部分(例如,块存储设备452和/或计算迁移控制器454)示出和/或描述的组件来实践,或通过关于任何其他附图在本文示出或描述的一些其他组件来实践。
在一些实施例中,在框302处,技术300可包括接收基于块的计算描述符(例如,在块存储设备104处从计算迁移器112接收基于块的计算描述符130或在块存储设备452处从计算迁移器450接收基于块的计算描述符130)。在各实施例中,在框304处,技术300可包括解析基于块的计算描述符(例如,使用解析逻辑124)。在一些实施例中,在框306处,技术300可包括创建上下文。在各实施例中,解析逻辑124和/或计算迁移控制器122或计算迁移控制器454的任何其他合适的组件可以创建上下文。在一些实施例中,上下文可包括以下中的一项或多项:待执行的操作(例如,文本搜索);操作的一个或多个参数(例如,搜索字符串);操作是否可以期望数据通过多次调用到达,或者需要所有数据作为单个缓冲器输入;和/或任何额外的操作特定的状态信息(例如,分块输入的校验和计算的当前状态)。在一些实施例中,操作是否可以期望数据通过多次调用到达可能对调用应用(例如,计算进程110)是不透明的,但可能与执行操作相关,这可能需要读取特定虚拟对象的多个块区段。在一些实施例中,上下文可以是可以为操作的输入和结果提供临时空间的操作上下文。
在各实施例中,在框308处,技术300可包括将数据读取到一个或多个缓冲器(例如,缓冲器128的输入缓冲器)中。在一些实施例中,将数据读取到一个或多个缓冲器中可包括执行检查以确定在进入决策框310之前是否已将足够的数据读取到一个或多个缓冲器中以供执行所请求的操作。在一些实施例中,在决策框310处,技术300可包括确定来自基于块的计算描述符的操作代码是否在可用操作列表中。如果在决策框310确定操作代码不在可用操作列表中,则技术300可包括在框312处返回错误。如果在决策框310确定操作代码在可用操作列表中,则技术300可包括在框314处至少部分地基于操作代码来执行操作。在一些实施例中(例如,其中可以对数据子集而不是整个数据集执行操作),技术300可包括循环通过在框308和框314处执行的动作以对虚拟输入对象的子集执行操作,直到整个虚拟输入对象已被处理。
在一些实施例中,在框316处,技术300可包括存储在框314处执行的操作的结果。在各实施例中,结果可以被存储在虚拟输出对象位置和/或可以被返回到主机(例如,主机102)。在一些实施例中,将结果返回到主机可包括将结果数据复制到计算迁移命令的返回有效载荷中。在一些实施例中,在框318处,技术300可包括执行其他动作。在各实施例中,利用技术300执行的一个或多个动作可以在硬件中指定、固定为静态库、在运行时动态加载,或者可以用硬件和/或软件的任何合适的组合来实现。在一些实施例中,关于技术300描述的一个或多个动作可以以不同的顺序执行(例如,可以在框308处将数据读取到一个或多个缓冲器中之前执行框310处确定操作代码是否在列表中,因此如果操作代码不在列表中,则可在将数据读取到缓冲器中之前返回错误)。
图4示出了根据各实施例的可以适合与图1的各种组件、图2的技术200和/或图3的技术300一起使用的示例计算设备400的框图。
如示出的,计算设备400可包括一个或多个处理器或处理器核402以及系统存储器404。出于本申请(包括权利要求书)的目的,可认为术语“处理器”和“处理器核”是同义的,除非上下文另外清楚地作出要求。处理器402可包括任意类型的处理器,诸如中央处理单元(CPU)、微处理器等等。处理器402可被实现为具有多核(例如,多核微处理器)的集成电路。在一些实施例中,除了核之外,处理器402可进一步包括硬件加速器(例如,用现场可编程门阵列(FPGA)实现的硬件加速器)。计算设备400可包括大容量存储设备406(诸如磁盘、硬驱动器、非易失性存储器(NVM)(例如,紧凑盘只读存储器(CD-ROM)、数字多功能盘(DVD)、任何其他类型的合适NVM等等))。一般而言,系统存储器404和/或大容量存储设备406可以是任何类型的暂时的和/或持久性的存储,包括但不限于,易失性存储器和非易失性存储器、光学的、磁性的和/或固态大容量存储等等。易失性存储器可包括但不限于静态和/或动态随机存取存储器。非易失性存储器可包括但不限于电可擦除可编程只读存储器、相变存储器、电阻存储器等等。在一些实施例中,大容量存储设备406可包括关于图1描述的NVM 120。
计算设备400可进一步包括I/O设备408(诸如显示器(例如,触摸屏显示器)、键盘、光标控制、远程控制、游戏控制器、图像捕获设备等等)和通信接口410(诸如网络接口卡、调制解调器、红外接收机、无线电接收机(例如,蓝牙)等等)、一个或多个天线和/或任何其他合适的组件。
通信接口410可包括通信芯片(为了清楚未示出),通信芯片可被配置成根据局域网(LAN)(例如,以太网)和/或全球移动通信系统(GSM)、通用分组无线电业务(GPRS)、通用移动电信系统(UMTS)、高速分组接入(HSPA)、演进的HSPA(E-HSPA)或长期演进(LTE)网络来操作计算设备400。通信芯片还可被配置成根据用于GSM演进的增强型数据(EDGE)、GSMEDGE无线电接入网络(GERAN)、通用陆地无线电接入网络(UTRAN)或演进的UTRAN(E-UTRAN)来进行操作。通信芯片可被配置成根据码分多址(CDMA)、时分多址(TDMA)、数字增强型无绳电信(DECT)、演进数据优化(EV-DO)、它们的衍生物以及被指定为3G、4G、5G及更高世代的任何其他无线协议来进行操作。在其他实施例中,通信接口410可根据其他无线协议来进行操作。
在各实施例中,计算设备400可包括块存储设备452,其可包括计算迁移控制器454和/或NVM 456。在一些实施例中,块存储设备452或其组件可以与计算设备400的其他组件耦合。在一些实施例中,块存储设备452可包括不同数量的组件(例如,NVM 456可以位于大容量存储406中)或者可包括计算设备400的附加组件(例如,处理器402和/或存储器404可以是块存储设备452的一部分)。在一些实施例中,计算迁移控制器454可以以与关于图1描述的计算迁移控制器122类似的方式配置。在一些实施例中,例如,计算迁移控制器454可包括硬件加速器,其设计成用于对存储在非易失性存储器456上的数据执行某些计算操作。
在各实施例中,计算设备400可包括计算迁移器450。在一些实施例中,计算迁移器450可以以与关于图1描述的计算迁移器112类似的方式配置。在一些实施例中,计算设备400可包括计算迁移器450和块存储设备452(例如,如SSD)两者,并且计算迁移器450可以将包含计算描述符的计算迁移命令(例如,NVMe或SCSI)通过本地总线发送到块存储设备452。在其他实施例中,第一计算设备400可包括计算迁移器450,第二计算设备400可包括块存储设备452,并且计算迁移器450可以将计算迁移命令(例如,iSCSI或NVMeOF)通过网络(例如,经由通信接口410)发送到块存储设备452。在一些实施例中,第一计算设备400和第二计算设备400可以是分解计算环境的组件,其中具有块存储设备452的第二计算设备400是可包括由块存储设备452提供的存储中计算能力的存储服务器。
以上所描述的计算设备400元件可经由系统总线412彼此耦合,该系统总线412可表示一个或多个总线。在多个总线的情况下,可通过一个或多个总线桥(未示出)来桥接它们。这些元件中的每个元件可执行在本领域中已知的其常规功能。特别地,系统存储器404和大容量存储设备406可以用于存储编程指令的工作副本和永久副本,这些编程指令用于计算设备400的各种组件的操作,包括但不限于计算设备400的操作系统、一个或多个应用、与计算设备400相关联的操作、与块存储设备452相关联的操作和/或与计算迁移器450相关联的操作,这些编程指令统称为计算逻辑422。可由(多个)处理器402支持的汇编程序指令或可被编译成此类指令的高级语言来实现各种元件。在一些实施例中,计算设备400可被实现为固定功能ASIC、FPGA、或者具有或不具有可编程性或配置选项的任何其他合适的设备。
可通过诸如紧凑盘(CD)之类的分布介质(未示出)或通过通信接口410(来自分布式服务器(未示出))来将编程指令的永久副本放置在工厂或现场的大容量存储设备406中。即,可采用具有代理程序的实现方式的一个或多个分布介质来分布代理并且对各计算设备进行编程。
取决于计算设备400用作诸如机顶盒或台式计算机之类的固定计算设备还是诸如平板计算设备、膝上型计算机、游戏控制台或智能电话之类的移动计算设备,元件408、410、412的数量、能力和/或容量可变化。它们的构造以其他方式已知,并且因此将不进一步描述。
对于一些实施例,处理器402的至少一个与配置成用于实施本文中所描述的多个实施例的方面的计算逻辑422封装在一起以形成系统级封装(SiP)或片上系统(SoC)。
在各种实现方式中,计算设备400可包括数据中心、膝上型计算机、上网本、笔记本、超级本、智能电话、平板、超移动PC或移动电话的一个或多个组件。在一些实施例中,计算设备400可包括服务器的一个或多个组件。在进一步的实现方式中,计算设备400可以是处理数据的任何其他电子设备。
图5示出了根据各实施例的具有指令的示例计算机可读存储介质502,该指令被配置成用于实践如之前关于图4描述的、与计算设备400相关联的所有或选定的操作;关于图1描述的计算机系统100、计算迁移控制器122和/或计算迁移器112;关于图2描述的技术200;和/或图3的技术300。
如所图示,计算机可读存储介质502可包括数个编程指令504。存储介质502可表示本领域已知的广泛的非暂态的持久性存储介质,包括但不限于闪存存储器、动态随机存取存储器、静态随机存取存储器、光盘、磁盘等。编程指令504可以被配置成用于响应于编程指令504的执行而启用设备(例如,计算机系统100和/或计算设备400的部分或全部,诸如计算迁移控制器122、计算迁移器112和/或计算机系统100的其他组件),用于执行例如但不限于,针对计算迁移控制器122、解析逻辑124、计算逻辑126、计算迁移器112、客户端迁移逻辑114、启动器116、图4的块存储设备452和/或计算迁移器450、关于图2描述的技术200和/或图3的技术300描述的各种操作。在替代实施例中,编程指令504可被设置在多个计算机可读存储介质502上。在替代实施例中,存储介质502可以是暂态的,例如,利用编程指令504编码的信号。
返回参考图4,对于一个实施例,处理器402中的至少一个可以与具有计算逻辑422的全部或部分的存储器封装在一起,该计算逻辑422被配置成用于实践针对计算迁移控制器122、解析逻辑124、计算逻辑126、计算迁移器112、客户端迁移逻辑114、启动器116和/或图1所示的计算机系统100的其他组件、计算设备400(包括图4的块存储设备452和/或计算迁移器450)、关于图2描述的技术200和/或图3的技术300所示或所描述的方面。对于一个实施例,处理器402中的至少一个可以与具有计算逻辑422的全部或部分的存储器封装在一起,以形成系统级封装(SiP),该计算逻辑422被配置成用于实践针对计算迁移控制器122、解析逻辑124、计算逻辑126、计算迁移器112、客户端迁移逻辑114、启动器116和/或图1所示的计算机系统100的其他组件、计算设备400(包括图4的块存储设备452和/或计算迁移器450)、关于图2描述的技术200和/或图3的技术300所描述的方面,。对于一个实施例,处理器402中的至少一个可以与具有计算逻辑422的全部或部分的存储器集成在同一管芯上,该计算逻辑422被配置成用于实践针对计算迁移控制器122、解析逻辑124、计算逻辑126、计算迁移器112、客户端迁移逻辑114、启动器116和/或图1所示的计算机系统100的其他组件、计算设备400(包括图4的块存储设备452和/或计算迁移器450)、关于图2描述的技术200和/或图3的技术300所描述的方面。对于一个实施例,处理器402中的至少一个可以与具有计算逻辑422的全部或部分的存储器封装在一起,以形成芯片上系统(SoC),该计算逻辑422被配置成用于实践针对计算迁移控制器122、解析逻辑124、计算逻辑126、计算迁移器112、客户端迁移逻辑114、启动器116和/或图1所示的计算机系统100的其他组件、计算设备400(包括图4的块存储设备452和/或计算迁移器450)、关于图2描述的技术200和/或图3的技术300所描述的方面。
使用虚拟对象的计算存储
计算存储是一个难捉摸的目标。尽管通过将计算靠近存储来最小化数据移动在技术上是合理的,但之前的许多尝试都失败了,因为它们需要存储设备首先从块协议演变为对计算更友好的对象或键值协议。这种演变尚未发生。
然而,为了实现计算存储的性能优势,不一定需要对块协议进行更改。例如,以下部分基于虚拟对象介绍了基于块(因此与传统兼容)的计算存储设计。与“真实”对象(例如,文件)类似,“虚拟”对象包含处理底层数据所需的元数据,因此现有块存储系统可能大量迁移。作为一个端到端的示例,可以通过迁移对象存储中的bitrot检测来减少99%的网络通信量。
存储技术的进步导致极快设备。特别地,我们看到各种形式的非易失性存储器被用于固态磁盘,特别是NAND和持久性存储器。但是,I/O速度跟不上,这导致在存储设备与CPU之间传输数据需要更多时间。这些快速设备的可用带宽由I/O堆栈控制,其包括各种传统软件和硬件。尽管I/O路径的改进正在进行中,但它们永远无法解决根本问题——移动数据需要时间。
考虑现代存储服务器。今天的SSD可以提供大约3.0GB/s(或24Gb/s)的速度,而商用以太网速度限于100Gb/s。在构建具有大约16到32个驱动器的存储服务器时,这种网络瓶颈立即变得明显,并且需要进行权衡。不幸的是,这通常意味着存储服务器中所有驱动器的并行带宽将不可用。同样的问题存在于单个SSD中,因为内部NAND带宽超过了存储控制器的带宽。
计算存储是解决数据移动问题的一种经常尝试的方法。通过保持计算在物理上接近其数据,可以以其他方式避免昂贵的I/O。
以前进行过各种设计,但其好处从未足以证明新存储协议的合理性。特别地,相对于之前的计算存储方法,对新的对象存储协议的要求几乎无处不在。这些方法不仅对计算机存储行业(例如,T10中的基于对象的存储设备SCSI标准)造成了极大的破坏,而且它们忽略了块存储的大量现有部署。
出于这个原因,下面描述了一种基于块的计算存储方法,它可以在不改变块协议的情况下实现许多不同的计算迁移。鉴于分块存储(例如,iSCSI和NVMeOF)的发展趋势,这尤其有益。
不是从基于对象的解决方案开始,而是使用基于块的解决方案并添加额外的部分(诸如元数据)。例如,可以利用块存储系统理解无序扇区组所需的元数据来定义“虚拟对象”。毕竟,对象仅是块、长度和其他元数据(诸如时间戳和所有权)的集合。此类元数据很小,可以很容易地与块存储系统共享,并且它允许存储将对象读取到存储器中以供进行后续处理。
虚拟对象,以及处理对象数据所需的任何附加信息(例如,要执行的方法及其参数)被包装到一个被称为“计算描述符”的构造中。然后使用新的SCSI或NVMe命令将计算描述符从主机发送到目标,该命令在贯穿本讨论称为“执行”(EXEC)命令。EXEC命令返回的数据是请求计算的结果。
客户端侧库管理虚拟对象的创建、计算描述符和EXEC命令的发布。块READ和块WRITE命令没有变化,并且传统应用可以继续使用其他未修改的块存储运行。
这种方法可以使用iSCSI和NVMeOF来实现,并且它实现各种可能的计算迁移(例如,单词计数、搜索、压缩、校验和、视频转码、图像转变、排序、合并)。相同的技术可以应用于其他形式的块存储,包括磁盘驱动器、固态驱动器、磁盘阵列和集群存储系统(例如,亚马逊的弹性块存储)。
图6示出了使用基于块的存储的存储中计算堆栈的高级架构和数据流。作为图6中架构的简单但说明性的示例,考虑单词计数应用。单词计数是存储中计算的理想示例用例,是因为它有大量数据输入,但输出很小,从而最大限度地减少通信量。在主机上,应用使用客户端对象感知存储(OAS)库来创建虚拟对象和计算描述符,并将命令发送到启动器以供传输。传输向目标发送EXEC命令(供应商特定的命令,指出有效载荷是计算描述符)。目标然后解释EXEC命令,并将其交给指定的迁移模块(在本例中为单词计数)以供处理。单词计数统计的结果作为有效载荷通过传输返回到主机,然后作为简单的存储器缓冲器返回给调用应用。
该解决方案是围绕块存储堆栈的新EXEC命令构建的。EXEC命令很容易集成到现有堆栈中,并且它使基本传输协议保持完全不变。EXEC命令包含虚拟对象和计算描述符。虚拟对象是块和数据长度的映射,描述要操作的对象,它嵌入在计算描述符中。计算描述符进而告诉目标在虚拟对象上运行哪些操作、任何函数参数以及如何/在何处输出结果。为了说明,图7示出了用于单词计数操作的示例计算描述符。由于该操作不需要参数和输出,因此参数和输出为空,并且结果可以直接返回给主机。
该计算存储方法的主机侧主要关注创建计算描述符,以及(潜在地)预先分配文件以存储输出结果。这主要是使用OAS库从底层应用中抽象出来的。
使用fiemap和stat的组合在“在后台(under the hood)”处理虚拟对象创建。操作和参数是用计算描述符内的简单操作码和字符串定义的。可以为输出创建预先分配的文件。一旦计算描述符被创建并作为有效载荷嵌入到期望的传输协议中,它就作为ioctl(例如,输入/输出控制系统调用)发送给启动器。
该解决方案可以使用iSCSI或NVMeOF(以及其他示例)来实现,并且在任何一种情况下,低级传输协议保持不变。在iSCSI的情况下,主机侧使用现有的双向命令,而对于NVMeOF,可以利用融合的命令,诸如经组合的写入和读取。写入包含计算描述符,而读取返回操作的结果。
当目标接收到EXEC命令及其计算描述符时,创建操作上下文。此上下文存储目标侧计算库及其相关联迁移模块理解的状态和指令。迁移模块对虚拟对象指定的数据进行实际计算。
结果要么直接存储在上下文中,并且然后返回给调用者,要么写入计算描述符中的位置。小于预先分配位置的结果在返回中注明并可在主机侧截断,但必须注意缓存以确保主机-目标一致性。
所有传统命令都可以照常传递,这意味着现有应用可以照常运行而无需任何修改。
为了说明该存储中计算架构的性能,提供了使用bitrot检测的性能评估作为示例。Bitrot检测有时称为审计或固定性检查,是这样的进程:其中对象数据被散列化并与先前计算的散列进行比较以检测损坏。该损坏可来自多种源,诸如软件错误或潜在的扇区错误。
在具有更小、直接附接的存储设备的传统对象存储中,bitrot检测的开销相对最小。然而,有两种趋势使这种常见的操作变得越来越令人不快。首先,存储设备变得越来越大,需要越来越多的吞吐量来有效地捕获对象损坏。其次,不仅有对象存储系统(诸如Ceph和Swift)形式的分解存储,而且在块级发生了进一步的分解层,导致对象存储系统的“无盘”部署。这些类型的部署对需要私有对象存储但不足以保证完全“裸机”部署的应用和环境很有吸引力。然而,该趋势意味着传统上是一种纯粹的本地操作的bitrot检测现在产生网络通信量,该网络通信量可与更有用的应用通信量竞争。
用于该评估的实验设置是简单的两盒设置。目标系统装有8个Intel P4600 1.6TBSSD,具有双Xeon Gold 6140。主机/启动器系统具有双Intel Xeon E52699。两个系统都使用NVMeOF在Ubuntu Linux 16.04上运行所描述的存储中计算堆栈,具有经修改的4.13.2核。主机和目标使用Chelsio T580-LP-CR卡经由40GbE链路连接。
自定义基准测试实用用于将传统操作(诸如通过网络读取数据和执行计算主机侧)与迁移操作进行比较,迁移操作是在块存储目标上原位计算的,结果作为NVMe有效载荷返回。
对于这些实验,每个SSD上放置了100个16MB文件,这些文件作为设备暴露给底层NVMeOF存储中计算堆栈。此外,对于所有实验,有48个工作线程。此评估执行单次运行,从1到8个设备中拉取数据,并测量指定操作的常规吞吐量和迁移吞吐量。所有常规操作通过强制SSD读取的冷页缓存和直接从(多个)SSD读取的迁移操作进行测量。
第一组实验侧重于读取性能(NOP),以了解存储中计算堆栈性能。图8示出了使用常规路径和迁移路径的该存储中计算解决方案的读取吞吐量。虚线表示网络和SSD的理论最大吞吐量。此外,由于迁移纯粹是在目标上完成的,因此它不通过网络选通。如图8中所示,如预期的那样,传统性能由40GbE链路快速选通。迁移读取随着正在从中读取的SSD数量而缩放,甚至在8个设备上达到每个SSD 3200MBPS的最大可能吞吐量的80%以上,超过20GBPS。这甚至超过了100GbE链路的预期。
接下来,图9示出了校验和的传统访问吞吐量,而图10示出了校验和的迁移吞吐量(虚线是指网络和SSD的理论最大吞吐量)。例如,在图9中,使用纯软件CRC-32C、ISA-L加速的CRC和AVX加速的高速路散列来评估传统访问,所有这些都代表用于bitrot检测的散列。不出所料,如图9所示,传统访问几乎立即受到40GbE链路的限制。如图10中所示,迁移的校验和随着从中读取的设备数量而缩放,不仅绕过了40GbE链路,还绕过了假设的100GbE链路。非加速的CRC最终有点滞后,但这是它的实现方式问题。高速路散列和ISA-L CRC以接近SSD速度的速度计算。因此,这些bitrot检查不仅避免消耗可用的有限网络资源,而且实际上运行得更快,这意味着它们可以更高效、更频繁地运行,从而降低数据丢失的风险。
此外,虽然这些附图没有示出,但迁移的校验和将网络通信量减少了99%以上,这是由于一个简单的事实,即,不是将大量数据从目标移动到主机,而是简单地返回摘要结果。
为了端到端地演示解决方案,校验和迁移也可以集成到对象存储解决方案中,诸如Ceph、Minio和Swift堆栈。除了上面提到的通信量减少(高达99%)之外,bitrot检查吞吐量也提高了2倍。此外,将该计算存储方法集成到这些解决方案中相对简单。例如,使用上述工具和库,在很多情况下可以使用不到20-30行代码实现集成,并且也可能导致bitrot检查函数由于其某些复杂性被去除而缩小尺寸。
虽然上述性能评估侧重于Bitrot检测作为示例用例,但使用此解决方案可以将无限范围的计算功能迁移到存储上。这些范围从应用特定的用例(诸如用于键值存储的日志结构合并树(LSM树)压缩和用于分类器的图像尺寸调整(例如,在Caffe流水线中实现90%的存储通信量减少)),到更一般的单词计数、排序、压缩等工具。该解决方案实现的性能改进是显著的,并且其模块化架构使添加新用例变得简单。
所描述的解决方案还可以解决与计算存储相关联的各种挑战,诸如处理条带数据(诸如具有擦除编码的数据)。如下文进一步描述的,条带数据可以通过识别许多类型的数据集(例如,CSV)具有固有结构来处理。因此,迁移模块可以容易地识别该结构,并标识它们何时有完整的记录供使用,或者何时需要与主机或其他目标协调以重新组合记录。
另一个挑战是处理大型结果以及“链接”操作,其中一个输出立即输入到另一个操作中。如下文进一步所述,可以使用预先分配存储池来应对这些挑战。这简化了主机-目标一致性问题,诸如页面-缓存一致性,并分摊了为多次计算的结果分配空间的成本。
此外,可以利用调度和工作安排逻辑来进一步提高性能。例如,并非所有操作都适合计算存储,有时应用可以通过有选择地迁移一些操作来与计算存储协调以最大化其吞吐量,从而在最大化吞吐量的同时最小化资源争用。
所描述的解决方案还可以为计算存储提供各种安全改进。虽然现代传输协议提供了基本安全级别,但可以提供额外的保护(包括通过使用加密)以确保计算存储不泄漏信息。此外,计算存储的一个有趣的额外优点在于,它可以减少“飞行中(in flight)”的数据量,这进而降低数据泄漏的风险。
存储与网络之间不断扩大的I/O差距,以及存储设备本身容量的增加,意味着真正利用现代存储性能的唯一方法是让计算更接近数据。所描述的解决方案利用了基于块的存储背后的现有动力,使用不干扰传统块存储应用的虚拟对象,并且可以使用简单库轻松地集成到应用中。对于各种操作,I/O通信量可减少高达99%,同时与现有的传统应用透明地共存。
与计算存储相关的附加实施例在以下部分中描述。
分布式存储系统中复制数据的并行和并发存储迁移
数据复制通常用于向外扩展软件定义分布式存储系统,无论是在开源解决方案中(诸如Red Hat公司的Ceph、Open Stack公司的Swift),还是私有解决方案(诸如阿里巴巴的Pangu)。确保数据的可靠存储是所有云服务提供商(CSP)的要求,有时用户可以以额外容量为代价来选择副本的数量。虽然使用复制消耗更多容量,但在很多时候,它是更好的读取等待时间以及更容易恢复的首选,是因为与擦除编码方法相比没有重组或重构成本。同时,鉴于转向分解存储以实现更好的资源模块化和独立可缩放性的行业趋势,采用存储中计算或接近数据计算技术(诸如本公开通篇描述的那些技术)具有吸引力。
图11是典型的分布式存储的简单图示,其中数据使用3路复制存储。在所图示的示例中,计算迁移始终指定为驻留在副本节点之一(诸如最左侧节点)中的目标对象文件“foo”的完整副本。
为了理解图11,以下术语定义如下并在本部分中进一步引用:
客户端:这是运行使用存储服务的应用的地方,诸如基于S3 API的应用从存储中获取文件并将文件放入存储中。在具有计算迁移能力的存储的情况下,还假设客户端能够发出命令来执行迁移的任务,诸如本示例中的“grep”。
主机:这是向客户端提供存储服务接口的地方。用于获取、放置或计算的客户端请求将被转换为相对应的存储实现特定的协议相关请求。对于Ceph,“主机”通常是RADOS网关、带有RBD的VMM主机(例如,QEMU)或Ceph FS驱动程序。对于Swift,这通常是Swift代理服务器。
SDS:软件定义存储(SDS)节点。这通常是分布式存储系统中的核心实体,负责基于需要的策略(诸如复制或擦除编码)来实际放置和检索客户端数据。在Ceph中,这称为OSD节点,而在Swift中,这称为存储节点。
目标:这通常是指NVMeOF结构的NVMeOF目标或光纤信道结构上的SCSI中的SCSI目标。这些是实际存储设备驻留在分解存储中的实体。
存储中计算架构将选定的主机计算移动到存储节点。示例可包括高级功能(如Hadoop的映射减少(map-reduce(映射-归约)))、简单的FS操作(如搜索)和低级存储系统操作(如CRC-32C完整性检查)。例如,在图11中,假设我们必须从目标对象文件“foo”中搜索给定的字符串“bar”,例如,Linux中的“grep”命令,其中“foo”驻留在3路复制分布式存储中。使用存储中计算,计算迁移将涉及构建操作计算描述符,通常是如下定义为计算迁移描述符的元组:=<操作,键,对象>(<op,key,object>)。在该示例中,我们有描述符=<操作:grep,键:bar,对象:foo>(desc=<op:grep,key:bar,obj:foo>)。
由于‘foo’有三个完整的副本,任何副本存储目标节点都可以用于此操作。然而,这些架构的迁移通常适用于单个副本持有者(例如,主要的),而让其他持有副本的存储节点处于空闲。就实现并发和并行性能而言,这是一个失去的机会。
不失一般性,图12给出了总大小为3KB的3路复制文件'foo'的简单示例,其中先前的搜索可以在'foo'的所有3个数据副本中并行并发地执行,使得没有具有存储中计算或接近数据计算能力的存储节点是空闲的,并且由于每个副本节点要处理的问题空间小得多,因此响应时间更短。
本发明利用来自数据复制的现有本地数据并行性,以在使用数据复制的分布式存储系统中实现并行和并发计算迁移。它建立在任何先前的通用计算迁移机制之上,并且对任何先前的通用计算迁移机制都是透明的,具有适应计算迁移任务的实际输入参数的最佳并行性的灵活性。
有若干现有的计算迁移解决方案(例如,Eideticom、NGD系统),这些计算迁移解决方案是使用用于计算迁移的FPGA或磁盘上解决方案来创建的。这些解决方案都针对单个磁盘内的数据。Amazon的S3选择存储功能似乎表明有一些迁移功能允许用户在S3侧过滤掉数据,而不是将数据拉给用户。现有的映射减少框架(诸如Hadoop和Spark)被设计成将并行性用于其计算任务,而不管其存储后端是否存在数据并行性。然而,这些现有解决方案都不能在基于复制的分布式存储上执行并发和并行计算迁移。例如,许多现有的迁移解决方案(例如,来自Eideticom和NGD系统的解决方案)仅专注于迁移到单个磁盘。Amazon的S3选择无法提供将存储系统级别的数据并行性考虑在内的迁移。现有的映射减少框架在其整体架构中没有考虑计算迁移,因此它们都无法利用存储后端的数据并行性。
本发明利用来自数据复制的现有本地数据并行性,以在使用数据复制的分布式存储系统中实现并行和并发计算迁移。它建立在任何先前的通用计算迁移机制之上,并且对任何先前的通用计算迁移机制都是透明的。它引入了并行计算迁移描述符作为在前计算迁移描述符的扩展。它还定义了涉及范围调整函数和并行因子函数的算法,以实现适用于感兴趣的输入数据的最佳并行迁移。它也不受处于降级模式的存储系统的影响,其中一个或多个副本节点不在服务中。
该解决方案有若干独特的优势,包括:
(1)为分解存储实现存储中计算:使用数据中心平台架构和非易失性存储产品,为基于NVMeOF的分解架构建立领导地位在战略上是重要的。特别地,该解决方案实现基于存储中计算的平台和用于基于NVMeOF的分解存储的规模的存储产品。更准确地说,能够进行并行存储中计算对于采用高密度大容量SSD非常重要。
(2)向外扩展存储中计算:本发明的一个独特方面是它能够利用使用数据复制的大多数分布式存储系统中的现有本地数据并行性。该独特特征允许存储中计算与分布式存储系统本身一起缩放。
(3)对降级存储的弹性:本公开的另一个独特特征是它旨在动态地依赖自适应并行性因子,因此它不受以一些副本节点离线的降级模式运行的存储系统的影响。这允许尽可能并行地充分利用计算迁移能力,即使存储系统以降级模式运行。
(4)更好的所用权总成本(TCO):此外,本发明实现在通常采用数据复制的存储中计算启用分布式存储系统中的提高的资源使用效率。换言之,本发明分摊了来自数据复制的不可避免的成本。该TCO降低将受到诸如云服务提供商(CSP)、电信公司之类的实体的极大赞赏,因为它降低了其数据中心的成本,并且从而降低了其客户的成本。
在一些实施例中,使用与输入长度限制相关的第一前提条件(前提条件1)。例如,作为前提条件,仅在满足以下条件时才调用存储中计算迁移功能:
长度(对象)>=长度(键)(Len(object)>=Len(key)) (1),
其中对象(object)是计算任务指定的输入目标对象文件,而键(key)是计算任务使用的输入参数,诸如图11中所示的字符串搜索示例中的对象='foo'并且键='bar'。Len()是一个长度函数,用于计算以数据为单位的总长度,与任何字符编码方案(诸如ASCII或UTF)无关。在前面的示例中,对象“foo”的长度为3KB而键“bar”的长度为3。这允许计算边界,而无需担心磁盘上的数据与来自客户端侧的输入中的数据之间的潜在不匹配。长度函数可以用C/C++strlen()来测量,也可以根据实际的计算任务进行定制。
此外,在一些实施例中,还使用与活动副本节点相关的第二前提条件(前提条件2)。该前提条件是副本因子。例如,假设R是给定输入对象的副本SDS节点集合。对象的公共副本因子由r=|R|给出。例如,在图11中,我们有R(对象='foo')={SDS1,SDS2,SDS3}和r=3。在Red Hat Ceph的真实示例中,下面给出了对象文件‘foo'的示例输出:
>ceph osd map test foo
osdmap e260 pool‘test’(4)object‘foo’->up[2,1,3],acting[2,1,3]
上面显示‘foo’有3个复制SDS节点‘1,2,3’,其中‘2’是主要的Ceph OSD SDS节点。令Ra为活动副本集合,其指示给定输入对象的节点集合。显然,当存储系统正常运行时,R=Ra。当存储系统在降级模式(其中一些节点出现故障并且在恢复进行的同时必须离线)下运行时,Ra将根据实际输入对象而变化。由于图11中的主机了解正在运行的分布式存储系统的健康状况,因此当前活动的副本节点集合Ra的信息始终可供主机随时使用。活动副本因子|Ra|用作以下部分中描述的并行计算迁移机制的输入副本因子r,如以下等式所示:
r=|Ra| (2)。
以上使得能够构建不受可用副本节点数量影响的解决方案,使得并行计算迁移对于处于降级模式的存储系统更具弹性。
该解决方案背后的基本思想涉及分治方法。特别地,该解决方案经由对目标文件的分治方法来利用现有的数据并行性。
图12示出了具有3个副本的示例3KB文件“foo”的分治。对目标文件‘foo'的计算工作可以基于副本因子(在该情况下为3)来平均分配,其中每个存储副本节点负责执行超过目标文件‘foo'的1/3的计算任务。
例如,假设目标文件‘foo’的大小为3KB,如图12所示。由于所有副本节点都具有文件‘foo’的完全相同的副本,因此该解决方案,通过将总文件“foo”均匀分布在其3个复制节点之间来本质上利用固有的数据并行性(因子为3)。换句话说,目标文件‘foo'可以被分成3个区块,并且3个副本节点可以并行并发地执行超过总文件'foo'的1/3的相同计算任务。这有效地将总计算时间减少到至少是r的因子,其中r是前面介绍的活动副本因子。
如上所述,计算迁移描述符可以概括为以下元组:
计算迁移描述符或描述符:=<操作,键,对象>(desc:=<op,key,object>)。 (3),
在图11中,我们有描述符=<操作:grep,键:bar,对象:foo>(desc=<op:grep,key:bar,obj:foo>)。此外,上述计算迁移描述符可以扩展为创建并行计算迁移描述符:
并行计算迁移描述符:描述符<操作,键,对象,范围>(desc<op,key,object,range>)。 (4),
其中新的“范围”参数表示目标“对象”的基于字节的起始和结束偏移,其中计算任务“操作”将基于输入参数“键”来进行承载。
在目标文件‘foo’被分成r个副本节点之间的r个区块后,即,图12中的r=3,必须注意在副本1节点上的计算任务与副本2节点上的计算任务之间跨越相邻区块边界(例如,[1KB–d,1KB+d](其中d>0))传播的数据。更准确地说,分配给副本节点的实际范围应该考虑输入参数跨相邻区块边界出现的可能性,如图13所示,该图13示出了出现在分配给副本1节点和副本2节点的相邻区块边界处的输入参数‘bar’。例如,在图13中,字符串‘bar’占用字节偏移量1024、1025和1026(基于1的地址)。
因此,该解决方案还添加了基于输入参数长度的范围调节机制。基于以下范围调节(RA)功能来定义范围调节:
RA(输入)=如果输入位于区块边界时需要的最小长度。 (5)。
该函数的输出表示为d。在图13的示例中,我们有:
d=RA(‘bar’)=strlen(‘bar’)–1=2 (6)。
注意,根据计算任务的性质,函数RA()的定义可以不同,并且可以在运行时进行配置。然而,在大多数情况下,目标输入数据的长度一般将足以处理最常见的场景。另请注意,RA功能可以在主机侧或目标侧完成。当在主机侧完成时,主机将转换客户端计算迁移请求以向存储节点发起并行计算迁移请求,其中存储节点相对应地创建计算迁移描述符。当在存储节点侧完成时,存储节点将采取计算来执行RA()并在构建并行计算迁移描述符在飞行中应用它。
假设给定对象文件的副本因子是r,我们希望能够充分利用现有的数据并行性。然而,我们是否能够实现最大并行性作为副本因子r取决于输入参数“键”的大小。我们将p作为并行性因子定义为:
Figure BDA0003209075040000281
在等式(7)中,‘\’是整数除法运算符。从等式(7),我们有以下含义。首先,当p=r时,如果输入参数“键”与目标对象文件的每个r区块相比相对较小,我们可以从所有可用的r副本中实现完全并行性。换句话说,并行计算迁移描述符中的‘范围’参数不应超过每个分块副本节点的长度数据。其次,当发生这种情况时,即,当Len(key)>Len(object)/r时,我们落入部分并行性,其中p<r。最后,当输入参数“键”非常大时,即,Len(key)>Len(object),我们将得到c=0,这意味着我们没有可以利用的并行性,因此,我们回退到如图11所示的原始迁移情况,其中我们将迁移请求发送到单个目标节点,以对输入对象(即,‘foo’)的完整副本进行操作。
由于并行性因子p<=r,因此该并行计算迁移中涉及的副本节点的确切数量也应等于p。令Rp为给定输入对象的并行计算副本集,显然我们有Rp是R(object)的子集和|Rp|=p。在很多情况下,我们可以使用全副本因子r作为p,当p<r时,主机必须执行操作,以从所有大小为r的副本SDS节点的现有集合中选择出大小为p的SDS节点子集。选择可以只是r中的第一p。或者,主机可以添加计数器,作为每个SDS节点有多少正在进行的计算迁移任务,然后从r中选择出占用最少的p。
Rp生成后,Rp中的每个SDS节点都被赋予索引i=1、……、p,其中第i个SDS节点负责Len(object)/p的第i个范围。例如,如图11中,我们将有Rp[1]=SDS1,范围[1]=[1,1KB];Rp[2]=SDS2,范围[2]=[1KB,2KB];Rp[3]=SDS3,范围[3]=[2KB,3KB]。注意,主机将范围调节函数输出d连同上述计算出的范围一起发送到Rp中的SDS节点,其中每个选定的SDS节点将在接收到的范围之上应用范围调整d以相对应地为其目标正确构建并行计算迁移描述符。
在现有的非并行计算迁移情况下,响应将从目标返回到SDS节点(存储节点),然后返回到主机服务器。在本发明中,参与并行计算的SDS节点将全部响应最初负责向这些SDS节点发起计算迁移请求的主机。响应将包括计算任务的结果以及结果从对象文件中的哪个位置导出。这是必需的,使得当在重叠边界区域中找到多个结果时,即,等式(2)中的d,地址(找到多个结果的地方)的比较将允许正确聚合这些结果。
图14示出了端到端并行计算迁移架构。特别地,图14提供了从客户端应用到分解目标的操作流程的架构视图。图15示出了主机进程和SDS节点进程上的并行计算迁移操作的流程图。
注意,一些实施例可以经由多播来自主机的请求潜在地将来自主机的请求合并到存储SDS节点。在该情况下,可以进一步改进并发性。对于多播此类请求,需要将范围参数修改为范围列表,其中每个SDS节点将相对应地从列表中选取其自己的范围。
图16示出了用于对使用复制的数据存储来存储的数据执行计算任务的流程图1600。在各实施例中,使用贯穿本公开描述的实施例和功能来实现流程图1600。
流程图开始于框1602,在框1602中接收对存储在存储系统上的数据对象执行计算任务的请求,其中在存储系统中的每个存储设备上复制该数据对象。
流程图然后进行到框1604以标识要在存储系统上并行处理的数据对象的多个区块,其中计算任务将由多个存储设备对多个区块执行。
流程图然后进行到框1606以向多个存储设备发送多个计算迁移命令,其中每个计算迁移命令用于指示相对应的存储设备对多个区块中的相对应区块执行计算任务。
在此处,流程图可以完成。然而,在一些实施例中,流程图可以重新开始和/或可以重复某些框。例如,在一些实施例中,流程图可以在框1602重新开始以继续接收和处理对存储在复制存储系统中的数据对象执行计算任务的请求。
将计算迁移到条带分布式存储
存储中的计算是减少I/O瓶颈的一种有吸引力的方法,因为操作可以“靠近”数据运行,而不是通过受限的I/O链路(例如,网络)将数据拉入。使用NVMeOF(结构上的NVMe)连接到目标存储服务器的主机服务器就是一个示例,其中将计算从主机移动到目标变得可期望。
然而,当前的存储中计算设计假设所有数据要么完美地离散化为易于解释的区块或副本,是完全并置在同一逻辑设备上(例如,Hadoop+HDFS),要么具有整理来自多个位置的数据的集中式机构,因此支付高昂的网络成本。例如,为了将“搜索”操作迁移到目标存储服务器,现有解决方案假设存储服务器可以访问整个文件或对象,并且因此可以在靠近存储的地方执行搜索,并将匹配结果简单地返回给主机。例如,此类解决方案显然不适用于擦除编码存储,其中存储系统(例如,服务器或单个设备)只能看到一部分数据。
由于许多存储系统出于性能或可靠性原因跨多个位置条带化数据,特别是那些建立在块存储上的系统,我们必须设计一种新机制用于将计算迁移到单个分片或数据对象的一部分。例如,在条带存储系统中,数据对象可以被分区成条带或更小的数据单元,这些条带分布在条带存储系统中的存储设备集合上。因此,数据对象的“分片”可以指在条带存储系统中相邻或连续地存储在特定存储设备上的数据对象的连续部分。
该解决方案使跨多个位置分布数据的系统能够获得与纯复制或单副本存储从存储中计算所获得的大致相同优势,同时最小化不同存储位置之间的所需的协调。它利用大多数数据固有的结构,并且仅返回可跨越存储目标的部分残余数据元素以及期望的结果。换句话说,虽然大文件可分布(条带化)在n个存储目标上,其中每个存储目标看到总文件的1/n,但我们可以将计算分别迁移到每个片并收集结果和残余。
例如,考虑单词计数用例,其中每个目标服务器对其分片中的单词进行计数并将结果返回给主机。然后,主机可以将跨分片的单词计数相加以获得文件的总数。跨存储服务的单词是“残余”,它们被返回到调用主机并重新组合成完整的单词以进行最终计数。这些残余很容易标识为简单的字符串,它在没有空格的边界处开始或结束,因此确定它是否是单词的结尾是微不足道的。
图17示出了单词计数的残余的示例。单词“counting”跨越边界,并且左区块看到“coun”,后面没有空格,所以它可以独立地将其标识为残余的,类似于右区块上的“ting”,没有前导空格。
该分布式计算的另一个好处是性能加速,因为可以通过利用数据存储的分布式特性并行操作数据。
该解决方案认识到许多数据集虽然在逻辑上存储为单个实体(例如,CSV文件),但由许多较小的、结构良好的元素(诸如CSV文件中的单个行或记录)组成。我们利用该结构在分布式数据上运行计算,因为可以对单个数据元素进行计算,并且跨目标服务器边界的那些数据元素可以返回到客户端并在那里重新组装和查询。这使该解决方案能够实现存储中计算的大部分优势(减少数据移动),而无需完全集中数据。
这为存储中计算应用打开了更多大门,这些应用可以利用各种硬件,从通用CPU和FPGA到专用硬件和加速器(诸如神经网络硬件)。特别是,该解决方案使存储中计算能够用于擦除编码数据。
首先,我们定义了以下词汇来概括描述分布式存储:
·数据对象(例如,文件)由多个区块组成。
о出于可靠性和性能目的,这些区块通常跨多个机器分布。
о这些区块可以经擦除编码(例如,以奇偶校验分布),尽管这不是需要的。注意,由于该解决方案不依赖于奇偶校验数据的存在,因此此类数据未包含在该解决方案的示例图中。
·区块组被组织成条带。
о该逻辑安排允许轻松计算擦除编码的奇偶校验、执行并行读取等。
·块是跨越整个条带的区块的数据的线性分组。
о如果数据没有填满块,则填充它。
о块的大小可能不同,但只要它们的大小已知,这不影响解决方案。
о注意,这些“块”与如SSD的基于块的设备上呈现的块不同。除非另有说明,以下讨论中的术语“块”指的是此处描述的更高级别的抽象。
·块中位于区块内的部分是子块。
·边界是一片数据转换到单独位置中的区块的位置。
一个简单的示例在图18中示出。图18示出了由每个条带4个区块的2个条带组成的示例数据布局。每个条带有2个块,并且每个块有4个子块。潜在的数据块和区块未示出,因为我们只对明文数据感兴趣。
原型和布局工作基于Minio系统,但具有更通用的词汇。这些原理和术语也适用于其他存储系统(诸如Ceph和Swift),而不失一般性。
该解决方案还利用了基于块的存储中计算系统(例如,对象感知存储和虚拟对象),这使得可以在基于块的存储中执行任意计算。
解决方案的要点在于独立检查每个区块及其组成的子块,并返回期望的数据。任何可跨越边界的残余数据元素部分被返回给调用者(例如,主机服务器)以进行组合和检查,从而在仍然探索整个对象的同时减少数据移动。
作为突出解决方案如何工作的说明性示例,考虑与图18相同的布局,其中块大小为12个字符并且子块大小为3,如图19中的示例所示。例如,下面的句子存储在图19中所示的对象中:“The quick brown fox jumped over the lazy dog(敏捷的棕色狐狸跳过了懒惰的狗)。”在该示例中,第二区块的第二块包含填充,并且单词“fox(狐狸)”跨越区块边界(例如,区块1b和区块1c中的第二块的边界)。
所选择的布局代表若干对象存储系统,其中数据以与跨页面的单词类似的模式逐块写出。通常这样做是为了让系统在将数据持久化到存储之前不必缓冲大量数据。
在传统系统中,搜索单词“fox”需要集中所有数据,然后针对特定单词扫描重构的字符串。单纯地分配搜索将错过搜索字符串,因为“fox”跨越了区块1b和区块1c的边界。然而,所描述的解决方案通知存储中计算系统边界在哪里,以及任何可能的数据元素的最大大小。在该示例中,它是一个长度为3的字符串,用于单词“fox”。
在该示例中,大多数区块及其子块可以容易地独立丢弃而无需协调,因为它们不匹配我们搜索字符串中的任何字母。然而,区块1b中的子块匹配应该返回给主机和/或客户端的前2个字母,类似地,区块1c匹配其第一字母中的字母x。它们都不能100%确定地验证它们是否找到了搜索字符串,因此它们将数据返回给主机上的调用应用以供验证。这两个区块将从它们各自的子块返回字符,并且(在主机服务器上运行的)调用应用将进行最终比较,如图20中所示。例如,图20示出了返回用于最终重构的模糊残余数据的示例。
该解决方案的关键在于标识我们所谓的残余。残余是跨越区块边界的数据元素(例如,CSV记录),并且需要与另一个残余结合才能理解它。尾随残余是跨越子块末尾处的边界的部分元素,而前导残余是位于子块开头的部分元素。除了调用客户端感兴趣的其他数据之外,还可以返回这些残余,其中它们将被重构为完整的数据元素并以其他方式正常操作。
有两种用于标识残余的基本方法:
(1)固定大小:如果数据元素都是固定大小的N字节,即使没有底层结构可以利用,简单地返回数据边界的一侧上的子块的第一字节和最后第N-1字节是微不足道的。
(2)结构化/半结构化数据:一些数据结构良好,而一些数据在相邻元素之间有明确的分隔符,例如,CSV有回车,JSON有括号等。
(i)尾随残余:如果元素在子块边界处被截断,则返回从在前结构(例如,在CSV中,这将是行)的末尾到子块的末尾的所有数据。
(ii)前导残余:如果元素“太短”(缺失片),标识下一个完整元素的开始。返回从子块的开头到第一完整元素的开头的所有数据。
此外,应用必须能够准确地描述存储中计算系统的数据布局,诸如通过提供一系列描述边界以及哪些边界相互映射的偏移量。在图19中,例如,应该认识到子块1c和1d、1d和2a等在逻辑上彼此相邻。该信息在许多系统中通常可用作元数据(例如,与Minio对象一起存储的xl.Json文件)。
图21示出了标识半结构化数据上的残余的简单示例。在该示例中,高亮的CSV值跨越边界,并且我们可以识别出我们有一个不完整的记录,因为它没有以回车符(\n)结束。
关于请求流,在主机侧(例如,调用应用)上,我们使用布局元数据来构建用于组织和排序残余的边界条目列表。每个边界条目包含对文件或对象区块的引用、描述子块的开头和末尾的偏移量、用于存储任何尾随残余或前导残余的缓冲器以及指向其逻辑邻居的指针。残余和边界列表的示例分别在图22和图23中示出。
例如,图22示出了搜索长度为2的字符串时的残余的示例,而图23示出了来自图22的条带1的具有残余返回的示例边界列表。该示例基于对长度为2的字符串的搜索,因此每个前导残余和尾随残余(如果存在)的长度为1(例如,n-1)。
在该构建期间,我们还整理了每个区块发生的所有边界,这允许每个区块位置通过单个请求计算和检索其所有残余。
这些经分组的边界被包括在计算描述符中。例如,计算描述符包含组成文件对象,以及要执行的操作(例如,搜索)和任何参数(例如,“fox”)的块列表。此外,描述符被扩展为包括每个区块的边界和偏移量。
(多个)区块所在的每个机器将独立运行操作并返回对所请求操作而言特定的任何残余。如前所述,任何完整的数据,以及这些部分残余将被正常返回。然后在将(多个)结果返回给调用应用之前,在主机侧上重构并操作这些残余。
完整流程总结如下:
(1)主机:主机从存储目标中检索布局元数据(例如,Minio中的XL.json)。
(2)主机:来自布局元数据:
(i)计算边界和偏移量,并创建初始边界列表。
(ii)同时,整理每个单独区块的偏移量。
(3)主机:计算描述符被创建并发送给(多个)目标。
(i)注意,每个区块将创建其自己的描述符。
(4)(多个)目标:每个目标处理每个描述符。
(i)如上所述,计算和收集任何残余数据以供返回。
(ii)对非残余数据进行操作,并且还收集任何相关结果以供返回。例如,在CSV中,完整的CSV行可以正常查询并返回匹配值。
(5)主机:残余被返回并重新组装和操作(例如,如图19所示)。
(6)主机:结果返回给调用应用。
图24示出了用于对存储在条带存储系统中的数据对象执行计算任务的流程图2400。在各实施例中,使用贯穿本公开描述的实施例和功能来实现流程图2400。
流程图开始于框2402,在框2402中接收对存储在存储系统上的数据对象执行计算任务的请求,其中数据对象跨存储系统中的多个存储设备条带化。
流程图然后进行到框2404以标识多个存储设备上的数据对象的多个分片,其中每个分片包括存储在多个存储设备之一上的数据对象的连续部分。
流程图然后进行到框2406以向多个存储设备发送多个计算迁移命令,其中每个计算迁移命令用于指示相对应的存储设备对存储在相对应存储设备上的相对应分片执行计算任务。
在此处,流程图可以完成。然而,在一些实施例中,流程图可以重新开始和/或可以重复某些框。例如,在一些实施例中,流程图可以在框2402重新开始以继续接收和处理对存储在条带存储系统中的数据对象执行计算任务的请求。
在降级模式下运行的分布式存储系统上的存储中计算
在机架级存储设计的上下文中(例如,如图26所示),存储中计算解决方案将数据密集型计算(例如,过滤、搜索和压缩)移动到运行协议的存储目标(诸如互联网SCSI(iSCSI)或结构上NVMe(NVMeOF))。目标是减少在存储主机服务器上执行这些任务所需的网络带宽。在擦除编码(EC)存储的情况下,由于其按比例提高的容量效率而变得越来越重要,数据跨存储节点进行擦除编码。但是,当一个或多个存储节点发生故障时,存储系统进入降级模式,在该降级模式中必须首先在存储节点侧重构数据,迫使数据从目标侧拉过来。因此,客户端应用无法从存储中计算中完全受益(例如,当数据通过网络复制以进行重构时)。这个问题可以通过引入一种机制来临时分配一个存储节点作为降级模式计算迁移存储节点来解决,从而允许它创建降级模式计算描述符,使得其目标可以根据其奇偶校验重构数据并执行请求的存储中计算任务。
大多数现有的行业分布式云存储系统(诸如Minio公司的私有云存储、Red Hat公司的Ceph、Open Stack公司的Swift或阿里云Pangu)都支持EC存储。EC通常可以用术语EC(k,m)来描述,其中输入数据被分割成k个数据区块,并且基于分布矩阵来计算m个奇偶校验区块。如果诸如由于系统崩溃或服务器故障之类的原因丢失了<=m个区块(例如,m个擦除),则仍可根据继续存在的k个区块重构原始数据。例如,图25示出了用于擦除编码构造和重构的逻辑流程的示例。在图25中,EC构造和重构的逻辑流程分别在子图(a)和(b)中示出,并且示例EC方案是具有3个数据区块和2个奇偶校验区块的(3,2)方案。
与此同时,行业正在转向分解存储,以实现更好的资源模块化和独立可扩展性,这特别适合云规模的大量客户端不断增长的存储容量需求。在分解存储中,存储服务器节点(例如,Ceph OSD节点、Swift存储节点或Minio服务器节点)是启动器(例如,NVMeOF或iSCSI),其存储位于远程目标。如所预期,由于数据从目标来回移动到存储服务器侧,因此这种方法导致大量额外网络带宽的消耗和等待时间的增加。
因此,以下讨论提出了一种在基于EC的分布式存储上进行存储中计算的机制,该基于EC的分布式存储在降级模式下运行、具有数据或奇偶校验擦除。
图26示出了分布式软件定义存储系统上的存储中计算的示例,其中EC(3,2)部署在NVMeOF分解存储上。注意,迁移的计算始终指定给‘foo’(y1、y2、y3)的所有普通数据区块。2个奇偶校验区块(y4,y5)不参与此过程。
为了理解图26,以下术语定义如下并在本部分中进一步引用:
客户端:这是一个使用存储服务(例如,经由S3、块或文件系统接口)的应用。对于具有计算迁移能力的存储,假设客户端能够发出命令来执行迁移任务,诸如本示例中的‘grep’。
主机:这是向客户端提供存储服务接口的地方。用于获取、放置和/或计算的客户端请求将被转换为相对应的存储实现特定的协议相关请求。例如,在Ceph中,‘主机’是RADOS网关或QEMU RBD;在Swift中,‘主机’是Swift代理服务器;而在Minio中,‘主机’被称为Minio服务器。
SDS:软件定义存储(SDS)服务器节点。这通常是分布式存储系统中的核心实体,负责基于需要的策略(诸如复制或擦除编码)来实际放置和检索客户端数据。在Ceph中,这称为OSD节点,而在Swift中,这称为存储节点。在Minio中,这简称为Minio服务器节点。
目标:这通常是指NVMeOF结构的NVMeOF目标或光纤信道结构上的SCSI中的SCSI目标。这些是实际存储设备驻留在分解存储中的实体。
存储中计算架构将选定的主机计算移动到存储节点。示例可包括高级功能(如Hadoop的映射减少(map-reduce))、简单的FS操作(如搜索)和低级存储系统操作(如CRC-32C完整性检查)。例如,在图26中,假设我们必须从目标对象文件‘foo’中搜索给定的字符串‘bar’(例如,Linux中的‘grep’命令),其中‘foo’驻留在EC(3,2)擦除编码分布式存储中。当所有普通数据区块(即,y1、y2、y3)都可用时,计算迁移将涉及为每个普通数据区块构建操作计算描述符,它通常是如下定义为计算迁移描述符的元组:=<操作,键,对象>(<op,key,object>)。在图26的示例中,我们有描述符=<操作:grep,键:bar,对象:foo的区块>(desc=<op:grep,key:bar,obj:chunk for foo>)。
然而,当系统由于磁盘故障或服务器崩溃而处于降级模式时,擦除编码方案EC(k,m)将允许在总共k+m个区块中进行最多m个擦除,但当m个擦除涉及k个数据区块中的任何一个时,没有实现存储中计算的解决方案。在图26的情况下,如果任何擦除区块来自d1、d2或d3,则在重构丢失的区块之前不能执行存储中计算。这意味着即使在降级模式下仍能保证存储服务的可用性,存储中计算服务的可用性也会丢失。
没有现有的解决方案可以在降级模式下为基于EC的分布式存储执行存储中计算。例如,当存储系统进入降级模式时,可以(例如,使用诸如小存储(Storelet)之类的方法)将计算任务指定给仍在运行的SDS节点之一。然而,从图28可以看出,如果要在y2丢失时使用SDS4进行数据重构,则必须首先将y1、y3和y5的继续存在块从目标侧拉过来到SDS1、SDS3和SDS5。其次,SDS4必须从SDS1、SDS3和SDS5中拉动y1、y3和y5来重构丢失的y2。不难看出由于数据从目标侧移动而导致的带宽浪费。同时,在向SDS4添加计算的同时,目标侧处的现有存储中计算能力完全处于闲置。
下面描述的解决方案支持在分布式存储上使用擦除代码方案EC(k,m)对m个擦除中的任何一个进行存储中计算。该机制利用目标侧处的目标到目标直接通信并且具有以下关键组成部分:(1)选择SDS节点作为降级模式计算迁移SDS节点的进程;(2)创建降级模式计算迁移描述符的机制。
该解决方案有若干独特的优势,包括:
(1)为分解存储启用存储中计算:使用数据中心平台架构和非易失性存储产品,为基于NVMeOF的分解架构建立领导地位在战略上是重要的。特别地,该解决方案实现基于平台的存储中计算和用于基于NVMeOF的分解存储的规模的存储产品。
(2)更好的存储中计算服务可用性:即使存储系统处于降级模式,该解决方案也可以实现存储中计算服务。这对于在部署了大规模存储的情况下经常面临磁盘故障或服务器崩溃的云客户来说尤其重要。这使得即使在存储处于降级模式时,客户也可以使用存储中计算服务,从而降低云服务提供商(CSP)的SLA违反的可能性。
(3)更好的总拥有成本(TCO):此外,该解决方案允许存储中计算在存储系统恢复时继续服务客户端,从而通过擦除代码在支持存储中计算的分布式存储系统中允许更高效的资源使用。换句话说,该解决方案通过擦除区块分摊了数据恢复中不可避免的成本,从而降低了诸如CSP、电信公司等之类的实体的TCO,因为它降低了数据中心的成本并且从而降低了客户的成本。
对于具有k个普通数据区块和m个奇偶校验区块的EC(k,m)擦除编码方案,当丢失的区块或擦除区块位于m个奇偶校验区块中的任何一个之中时,该问题已经由本公开中的其他解决方案解决,因为所有k个数据区块在条带中仍然可用。
以下解决方案解决了来自普通k数据区块的擦除或来自所有编码的k+m区块的任何m个擦除的EC存储,其中两种情况都需要经由矩阵逆运算进行重构。因此,在下面的讨论中,当我们提到e个擦除(e<=m)时,这n个擦除区块要么是丢失的普通数据区块,要么是丢失的编码区块(即,编码数据和奇偶校验)。
SDS节点通常负责构建计算迁移描述符并将其发送到相对应的目标,如图26所示。在降级模式的情况下,并非所有SDS节点都可用于此联合计算迁移工作。例如,在图27中,因为目标2已崩溃,所以SDS2不可用。除了仍然保存数据区块的传统操作SDS节点(例如,经由目标1对应于y1的SDS1和经由目标3对应于y3的SDS3),这些节点被称为正常模式计算迁移SDS节点(NMCO SDS),主机必须代表SDS2选择计算迁移操作的SDS节点,称为降级模式计算迁移SDS节点(DMCO SDS)。此外,选定的降级模式计算迁移SDS节点有责任构建与惯常计算迁移描述符不同的计算迁移描述符,其称为降级模式计算迁移描述符,这将在下面进一步描述。
在下面的讨论中,我们描述了基于跟踪主机上每个SDS节点上的计算迁移载荷指示符的选择算法的一个实施例。我们首先使用Li作为每个目标i的计算迁移载荷指示符,该每个目标i由其相对应的SDSi节点引导以执行计算迁移任务。对于每个计算迁移任务,我们简单地将Li定义为:
Li=∑lij (1),
其中lij是在目标i上运行的计算迁移任务j的载荷。单个载荷lij简单定义为:
lij=1,如果SDSi是迁移任务j的NMCO SDS节点 (2),
或者,
lij=2,如果SDSi是迁移任务j的DMCO SDS节点 (3)。
主机跟踪每个SDS节点i的载荷,在新任务j开始时将成本lij添加到Li,并在任务完成时从Li中移除成本lij。上述定义允许在所有SDS节点之间平衡计算迁移任务,因为一个SDS节点可以作为一个任务的NMCO节点,也可以作为不同任务的DMCO节点。
建立上述载荷指示符后,选择过程可描述为以下步骤:
(1)主机找到拥有所有数据区块的SDS节点集合,令其为Sk
(2)主机找到拥有所有奇偶校验区块的SDS节点集合,令其为Sm
(3)主机找到Sk中的擦除SDS节点集合,即,Sk中不服务的节点,令其为Se
(4)主机将Sk\Se中的所有节点指定为正常模式计算迁移SDS节点(NMCO)。
(5)主机基于当前迁移载荷指示符L来对集合Sm进行排序。
(6)主机从Sm选择多个节点|Se|作为具有最低载荷L的降级模式计算迁移SDS节点(DMCO)。
当分布式存储系统向外扩展时,用于选择DMCO节点的上述算法也是可缩放的。
如前所述,正常模式的计算迁移描述符可以描述为:
计算迁移描述符或描述符:=<操作,键,对象>(desc:=<op,key,object>)。(4)。
对于DMCO SDS节点,它必须首先基于所有对等区块执行重构,因为原始数据区块当前不可用。然后它可以对重构的数据执行需要的计算迁移任务。因此,与DMCO SDS节点相对应的目标必须从其对等SDS节点的目标中检索数据区块。为此,我们如下定义了降级模式计算迁移描述符(dmdesc):
dmdesc:=<操作,键,<对等区块1,目标1>,<对等区块2,目标2>,…>(dmdesc:=<op,key,<peer chunk1,target1>,<peer chunk2,target2>,…>) (5)。
注意,与描述区块所在位置的普通描述符相比,dmdesc具有<对等区块,目标>对的列表。此信息允许接收目标执行与其对等目标的目标到目标的直接通信,以检索用于EC重构的所有对等区块。
为了使存储中计算在降级模式下工作,选定的DMCO节点必须了解与其对等SDS节点相对应的目标。一个实施例可以经由对SDS集群配置文件的扩展,诸如Ceph集群配置文件的OSD部分,如图27所示。例如,图27示出了示例Ceph OSD配置,其中扩展了OSD的目标信息。示例配置示出了基于RDMA传输的NVMeOF目标。
然后,上述目标信息可用于所有SDS节点,并可用于构建降级模式计算迁移描述符。
对于目标到目标的通信协议,只要目标信息足够详细来供任何目标定位其对等方,就可以利用现有的方法(诸如T10 XCOPY)来允许目标从其他目标读取或写入其他目标。
图28示出了用于降级模式中的存储的计算迁移的示例。特别地,图28提供了从客户端应用到分解目标的操作流程的详细视图。在该示例中,分布式存储使用EC(3,2)方案以供数据冗余。此外,存储系统当前正在降级模式下运行,因为它正在遭受来自SDS2/目标2的一个数据区块的丢失。在该示例中,当SDS2/目标2失败时,选择SDS4来构建降级模式计算迁移描述符。目标4使用目标到目标的直接通信来检索对等区块以重构丢失的数据区块“y2”,然后在目标侧执行计算操作。
下面针对知道分布式存储中的计算迁移能力的客户端更详细地描述这些步骤:
(1)客户端发送请求以执行迁移到分布式存储的计算任务,例如,从文件‘foo’中找到字符串‘bar’。
(2)主机检查哪些SDS节点仍然可用,而哪些SDS节点停止服务。它选择SDS1和SDS3作为正常模式计算迁移SDS节点(NMCO)。然后,它根据等式(1)、等式(2)和等式(3)检查SDS4和SDS5的计算迁移载荷指示符。主机然后决定选择SDS4作为降级模式计算迁移节点,因为SDS4具有较低的计算迁移载荷。
(3)主机向SDS1、SDS3和SDS4发送计算迁移请求。它将SDS1和SDS3标记为NMCO节点,但将SDS4标记为DMCO节点以执行降级模式计算迁移(例如,以构建降级模式计算迁移描述符)。
(4)SDS1和SDS3作为NMCO节点接收请求并根据等式(4)构建正常模式计算迁移描述符。SDS1和SDS3将它们的描述符发送到它们相对应的目标。
(5)SDS4作为DMCO节点接收请求。SDS4(例如,从集群配置信息中)找出其对等SDS节点的目标信息。然后SDS4根据等式(5)构建降级模式计算迁移描述符。最后,SDS4将降级模式计算迁移描述符发送到其目标:目标4。
(6)基于接收到的降级模式计算描述符,目标4使用直接目标到目标通信协议从其对等目标检索对等区块。对于描述符中目标本身所在的对,它执行本地I/O以检索区块。目标4然后执行EC重构以恢复丢失的区块。
(7)目标1、目标2和目标4执行相对应的计算迁移任务。
注意,SDS4可潜在要求目标4返回重构的数据,以便将其放置到其他地方以永久恢复该数据区块,而不是在目标侧的存储中计算任务关闭后将其丢弃。这有效地使重构成为适合存储中计算的可迁移操作。
图29示出了用于对存储在擦除编码存储系统中的数据对象执行计算任务的流程图2900。在各实施例中,使用贯穿本公开描述的实施例和功能来实现流程图2900。
流程图开始于框2902,在框2902中接收对存储在存储系统上的数据对象执行计算任务的请求,其中数据对象跨存储系统中的多个存储设备擦除编码。
流程图然后进行到框2904,在那里确定存储系统在降级模式下操作,其中降级模式指示多个存储设备包括可用存储设备集合和不可用存储设备集合。
流程图然后进行到框2906以标识可用存储设备集合上的数据对象的可用区块集合。
流程图然后进行到框2908以标识不可用存储设备集合上的数据对象的不可用区块集合。
流程图然后进行到框2910以将该可用存储设备集合划分为正常模式存储设备集合和降级模式存储设备集合。
流程图然后进行到框2912以将第一计算迁移命令集合发送到该正常模式存储设备集合,其中该第一计算迁移命令集合用于指示该正常模式存储设备集合对该可用区块集合执行计算任务。
流程图然后进行到框2914以将第二计算迁移命令集合发送到该降级模式存储设备集合,其中该第二计算迁移命令集合用于指示该降级模式存储设备集合重构该不可用区块集合并且对相对应的重构区块集合执行计算任务。
在此处,流程图可以完成。然而,在一些实施例中,流程图可以重新开始和/或可以重复某些框。例如,在一些实施例中,流程图可以在框2902重新开始以继续接收和处理对存储在擦除码存储系统中的数据对象执行计算任务的请求。
计算块存储中带有预先分配的链式操作
本部分描述了一种将多个存储中计算操作链接在一起以实现更复杂的存储迁移的机制,诸如在块存储目标中原位创建搜索索引或布隆过滤器。
该技术问题基于与先前基于块的计算存储解决方案相关联的某些观测。例如,目前只有两种方法可以保持原位操作:
(1)来自主机的多次往返,例如,发送命令,标识结果到达的位置,发送附加命令以对该结果进行操作等。
(2)创建新的计算迁移,将整个流水线集成到一个方法中。这是有问题的,因为它可能导致多余的开发工作,这些多余的开发工作原本可以通过将现有功能链接在一起来轻松完成。
基于这些观测,下面提出了一种解决方案,通过使用循环缓冲器的预先分配来存储大量迁移结果,它消除了客户端与主机之间多次往返的需要,同时使现有的计算功能能够简单且高效地链接在一起。
没有先前的计算存储解决方案解决由下面提出的解决方案解决的问题。例如,虽然在对象存储级别有各种解决方案(例如,Ceph和Swift小存储中的动态类),但这些基于对象的解决方案需要使用重量级对象接口,并且它们没有解决链接结果中固有的往返问题。此外,对象接口虽然简单,但不灵活,并且在不需要更高级别协调(例如,来自客户端)的情况下与之共事可能具有挑战性。
该解决方案背后的基本思想是利用临时缓冲器空间来存储输出,然后将其用作另一操作的后续输入,所有这些都在基于块的计算存储系统的上下文中。该解决方案使用预先分配的块池来存储结果,或者如果结果足够小,则将结果简单地保存在存储器中并作为指针传递给下一操作。以此方式,可以有效地将存储中计算操作链接在一起以进一步提高性能。
特别地,该解决方案使用虚拟对象、计算描述符和用于计算存储结果的预先分配输出空间来实现存储中计算的链式操作。
虚拟对象是逻辑块的瞬时映射和描述对象的长度。例如,文件的区段映射以及文件长度是描述文件位置和大小的虚拟对象。
计算描述符包含至少一个输入虚拟对象(例如,输入文件的块区段映射和长度)以及方法/函数名称、函数参数和可选的输出虚拟对象,其中方法/函数的结果可被存储。这些计算描述符由块存储目标解释,该块存储目标完成指定的操作。
此外,在该解决方案中,计算描述符被扩展,以便将操作链接在一起。例如,操作流水线可以链接在一起成为一个操作链或流水线(例如,过滤文件,然后压缩结果)。该解决方案允许定义多个操作,然后按顺序或序列地处理这些操作。第一操作的输出将成为第二操作的输入,依此类推,直到所有操作完成。如果最终输出很小,则可能直接将其返回给主机应用,写入指定的块位置(例如,虚拟输出对象之一),或写入上述预先分配的缓冲器位置之一。如果写入这些预先分配的位置之一,LBA+偏移量+长度将返回给主机,以便主机可以稍后检索数据。
此外,(例如,在块存储上)创建了缓冲器池以存储大型中间结果。池的数量可等于要并行运行的预期操作的数量。这消除了可能同时运行的操作链之间复杂的进程间通信和锁定的需要。这些存储缓冲器的逻辑块地址(LBA)由存储目标中的计算引擎跟踪。简单的互斥锁可以跟踪哪些缓冲器可用或不可用。
链式操作的计算描述符可包括以下:
·虚拟对象:<扩展列表><对象长度>(<extent list><object length>)
·输出:<范围或预先分配或最佳工作直接返回>(<extent OR pre-allocated ORbest effort direct return>)
о注意:如果LBA位置太大而无法嵌入,最佳工作可最终仍以返回LBA位置为结束
·操作链:<操作1>、<操作2>、<操作3>、……
·操作参数:<操作1参数>、<操作2参数>、……
图30示出了用于链式存储中计算操作的整体架构和数据流的示例。在所示示例中,主机应用使用计算描述符向块存储目标发出请求。计算引擎读取初始输入并运行第一指定的操作。如果结果大于可配置的高水位线,则将其存储在中间缓冲池中的缓冲器中,否则可以直接将其作为输入交给下一指定的操作。一旦所有操作完成,结果要么写入最终结果位置(可以是预先分配的缓冲器位置),要么通过传输有效载荷直接返回给主机。
还应该注意的是,任何操作,即使是那些没有明确链接在一起的操作,都可以使用中间缓冲池。例如,递归合并操作可以将其中间结果存储在缓冲池中。
作为一个示例,考虑原位布隆过滤器创建的用例,它可涉及创建布隆过滤器,用于在大文本文件中快速搜索标签或关键字。输入将是描述文本文件位置和长度的虚拟对象。输出将是来自预先分配的缓冲池的“最佳拟合”文件。第一操作是简单的单词集合标识符,它为它以前从未见过的任何单词创建条目。该集合列表存储在中间缓冲器中,随后用于创建新的布隆过滤器。然后将此布隆过滤器存储在“最佳拟合”的预先分配文件中,并将位置和长度返回给主机。然后,主机可以在闲暇时读取和操作布隆过滤器。
作为另一个示例,考虑日志结构合并(LSM)树压缩的用例。LSM树通常用于键值(KV)存储(例如,LevelDB)。在这些KV存储中,随着数据的插入或删除,它记录在存储器中的只追加日志中。当日志填满时,它定期排序并输出到持久存储(例如,HDD、SSD等)。这些排序的日志本身定期合并和压缩,例如,在大致类似于传统合并排序算法的进程中。
通常,这需要从存储目标中读取数据并读入CPU存储器复合体,然后合并数据并迅速将数据写回目标,这对于所涉及的数据来说是一个完整的往返并且可通过竞争网络链路。鉴于此操作需要的多个步骤,即使是传统的存储中计算解决方案也可能遇到困难。然而,上述链接解决方案可以使用合并步骤的暂存区,从而简化过程并减少存储器开销,因为计算存储目标将不再需要为每个步骤在存储器中维护所有内容。
图31示出了用于对存储在存储系统中的数据对象执行链式计算任务的流程图3100。在各实施例中,使用贯穿本公开描述的实施例和功能来实现流程图3100。
流程图开始于框3102,在框3102中接收对存储在存储系统上的数据对象执行多个链式计算任务的请求,其中该数据对象存储在存储系统的相对应存储设备上。
流程图然后进行到框3104以将链式计算迁移命令发送到相对应的存储设备,其中链式计算迁移命令用于指示相对应的存储设备对数据对象执行多个链式计算任务。
流程图然后进行到框3106,在那里从相对应的存储设备接收链式计算迁移命令的结果。
在此处,流程图可以完成。然而,在一些实施例中,流程图可以重新开始和/或可以重复某些框。例如,在一些实施例中,流程图可以在框3102重新开始以继续接收和处理对存储在存储系统中的数据对象执行链式计算任务的请求。
用于视觉数据和分析的计算存储
本部分介绍了用于视觉数据和分析以及其他类似工作载荷的存储中计算解决方案。例如,提出的解决方案通常适用于具有输入文件、输出文件和某种形式的、将输入映射到输出的计算的任何工作载荷。
不是将数据从存储移动到CPU(例如,通常进行计算的地方),我们希望将计算移动到数据。过去,此类“主动存储”的好处并不能证明成本是合理的。例如,因为存储访问时间是限制因子,所以传统的基于块的存储从来没有足够快至显著受到I/O的限制。然而,今天我们看到了相反的情况——存储访问时间很快,而I/O路径相比之下较慢。
尤其是视觉数据(例如,图像、图片、视频)随着现代高性能机器学习和数据挖掘技术变得越来越有价值。考虑到这一点,有几点促使该解决方案使视觉数据的存储中计算成为可能:
(1)“条带化”数据,此类跨越多个目标的擦除编码数据不遵守数据元素边界。例如,视频中的关键帧可跨越目标边界,或者描述图像的特征向量列表可具有跨越目标边界的向量。这要么需要复杂的偏移算法和数据协调来处理,要么在对其进行操作之前完全集中数据,从而消除了存储中计算的好处。
(2)视觉数据消耗大量空间。这带来了一个挑战,因为我们通常希望数据“靠近”使用它的地方,但这意味着在正在处理它的机器上浪费复制/存储数据副本,或者生成大量网络通信量来检索被高效地存储但在机器外的单独存储目标上的数据。
(3)许多视觉数据操作产生的输出显著地小于输入。例如,描述图像中对象的特征向量的长度可能只有几千字节,或者用于输入到分类模型(诸如神经网络)的期望处理图像可能比原始图像小得多。
(4)即使假设存储中计算对于视觉数据的特定片是可行的,结果通常仍然足够大,以至于仅使用基于块的存储中计算协议可能低效率。结果可能太大而无法嵌入到返回中,这需要在存储目标上预先分配昂贵的空间来写入结果。
基于这些观察,提出的解决方案减少了对昂贵的数据预先分配的需求,并提供了一种对齐数据以使得单个数据元素不跨越目标边界,从而消除对复杂偏移算法的需要的方法。
没有现有的解决方案提供有效地将视觉操作迁移到块存储的能力。总的来说,当前解决方案过于复杂,并且他们忽略了昂贵的预先分配存储用于写入结果的问题,从而无法实现视觉数据在存储中计算的好处。
提出的解决方案包括两个部分。首先,我们通过在系统启动时在存储目标上预先分配一个大型循环缓冲器来写入结果,和/或预先分配不同大小的文件池来处理预先分配问题。这分摊了预先分配的成本,并将其隐藏在调用应用之外。其次,我们概述了一种在条带系统中对齐数据以使得数据编码在很大程度上保持不变,但移除复杂偏移算法和主机-目标协调的需要的方法。我们通过使用填充来有效地稍微调节数据元素的位置,以确保单个元素不跨越目标边界。
提出的解决方案改进了分解存储平台(例如,英特尔数据管理平台)的存储中计算和视觉分析,从而提高了整体性能并增加了现有计算生态系统中对存储中计算硬件的需求。
下面我们还概述了若干用例(例如,图像处理、分类、特征向量查询和提取)并解释它们如何适用于利用所提出的解决方案工作。
如本公开通篇所述,所提出的解决方案依赖于基于具有计算描述符的虚拟对象方法的操作。虚拟对象只是描述特定数据集合(诸如文件或对象)位置的瞬时映射。在我们的示例中,这是一个描述逻辑块位置的扩展列表,可以被块存储目标或设备解释。此映射是计算描述符的一部分,它描述了存储中计算函数的输入、输出、操作和参数。存储中计算目标解释这些计算描述符并基于其中包含的指令来进行操作。
首先,我们定义了以下有关分布式和/或基于块的存储的术语:
·条带对象(例如,文件)由多个区块组成。
о出于可靠性和性能目的,这些区块通常跨多个机器分布。
о这些区块可以经擦除编码(例如,以奇偶校验分布),尽管这不是需要的。注意,由于该解决方案不依赖于奇偶校验数据的存在,因此此类数据未包含在该解决方案的示例图中。
·区块组被组织成条带。
о该逻辑安排允许轻松计算擦除编码的奇偶校验、执行并行读取等。
·块是跨越整个条带的区块的数据的线性分组。
о如果数据没有填满块,则填充它。
о块的大小可能不同,但只要它们的大小已知,这不影响解决方案。
о注意,这些“块”与如SSD的基于块的设备上呈现的块不同。除非另有说明,以下讨论中的术语“块”指的是此处描述的更高级别的抽象。
·块中位于区块内的部分是子块。
首先,需要为条带化环境简化存储中计算。复制的数据易于操作,并且类似于在纯本地存储上工作。然而,如本公开的其他部分中所述,擦除编码数据需要了解数据元素边界(参见例如,图32)。这些边界及其处理方式因方法而异,但在简单的条带化环境中,它们给目标和主机两者带来复杂的问题。目标必须具有足够的智能来标识数据元素,而主机必须能够从组成部分重新组合任意数据元素。
图32示出了这些挑战的示例,其中条带对象中的大多数数据元素跨越边界,即使它们每个都可以轻松地与单个区块相配。例如,图32示出了具有跨越区块或子块边界的多个数据元素的条带对象的示例。在图32,只有第一数据元素(例如,“Foo”)完全包含在单个子块中,而其余数据元素跨越块或子块边界,因此不能在目标内轻松操作,而且相反地是必须在主机上整理回来。
为了解决这个问题,所提出的解决方案提供了一种用于使用填充稍微重新排列数据布局以使得各个数据元素可以干净地驻留在各个子块和区块中的工具。在一些情况下,这可能稍微增加存储开销,但它可以通过使许多存储中计算操作变得更加简单来获得回报,因为它们几乎不需要目标与主机之间的协调。在图33中示出该布局的简单示例。例如,图33示出了具有使用填充在子块和区块边界内对齐的多个数据元素的条带对象的示例。在图33中,条带对象的布局包括已添加到每个数据元素以便在子块和区块边界内干净地定位数据元素的填充。因此,这大大降低了目标与主机之间需要的复杂性和协调性。
存储中计算操作的这种降低的复杂性是通过稍微改变存储中计算应用的写入路径来处理的。写入路径需要知道目标存储系统的数据布局,这通常是微不足道的或经由固定策略在带外已知的(例如,Minio系统将每个对象的数据布局存储在与每个对象区块并置的单独文件中)。写入应用还需要能够标识单个数据元素的边界和大小,并且这些数据元素必须小于区块和子块的大小。然后它变成了一个简单的贪心装箱练习(greedy binpacking exercise)。如果数据元素大于子块大小,则该方法将不起作用,因为无论如何这些数据元素将跨越子块和区块边界。
以下伪代码示出了使用填充对齐数据元素的示例算法:
//假设所有数据元素(DE)<子块块大小(BS)。
对于每个数据元素:
如果DE数据计数+当前_子块_数据<子块_最大尺寸:(If DE datacount+current_subblock_data<subblock_maxsize:)
追加当前元素
调节当前子块大小
否则:
存储填充位置(我们稍后处理)
填充剩余的子块数据,根据需要创建新的子块/条带
将数据元素附加到新的子块并调节子块大小
在附加所有数据元素后,用填充填满剩余的子块/条带。
如果主机应用和目标可以本地标识边界,则可以忽略每个子块的填充信息。如果不是,则可以将该信息存储在带外(例如,另一个文件、数据库)或附加到子块流的末尾。
如果应用不知道填充,则可能需要稍微修改主机的读取路径。这可以通过替代读取路径来完成,该替代读取路径能够识别出边界并填充以及删除它们,或者具有路径的带外知识,可能存储在写入路径中(如上所述),诸如附加到文件、存储在单独的数据库或元数据文件中、存储为扩展文件系统元数据的一部分等等。
除了启用任何操作(诸如标识数据元素)所需的修改之外,对目标侧数据的典型存储中计算操作应该不需要额外的修改。
接下来,需要以高效的方式输出来自基于块的存储中计算操作的大量结果。例如,基于块的方法中的一个挑战是,虽然使用现有传输协议(例如,iSCSI双向命令、NVMeOF融合命令)可以很容易地嵌入和返回小的结果,但较大的结果必须写入存储目标并通过主机检索。这需要从主机分配存储并将其归零,从而增加了额外的昂贵操作,这消除了存储中计算的大部分优势。如果我们尝试单纯地使用诸如文件分配(fallocate)之类的方法,则在将实际数据(或零)写入磁盘之前,磁盘级别的块映射将不存在,这主要是出于安全目的。
为了解决该问题,我们必须在主机上预先分配一些数量的文件。然后,我们可以按需使用这些文件作为给定存储中计算操作的输出。在一些情况下,我们可以使用一个或多个预先分配的文件作为循环缓冲器(circular buffer),并根据需要指示目标覆盖缓冲器。
关于预先分配文件池,在存储中计算操作写出到预先分配文件之后,必须截断主机上的文件以反映新文件长度。假设目标将返回输出文件的长度。例如,如果文件被压缩并且输出被引导到预先分配的输出文件之一,则目标将向主机返回压缩文件的长度。从那里,主机可以将预先分配的文件截断为正确的大小。截断预先分配的文件需要首先(例如,通过卸载和重新安装文件系统)转储清除主机页面缓存或利用截断文件的最后一页来更新主机页面缓存(例如,通过使用SCSI或NVMe通道命令从磁盘读取文件并通过单次写入页面缓存来更新主机上的文件)。如果主机页面缓存没有被转储清除或更新,则陈旧的数据(例如,在预先分配期间创建的并且仍然存在于主机页面缓存中的数据)可能被写回磁盘。这将导致从目标上的存储中计算操作输出的数据损坏。
在一些情况下,主机可能选择在目标上使用预先分配的循环缓冲器,而不是使用预先分配的输出文件。存储中计算目标只需要维护非常少量的状态信息:循环缓冲器的当前“末尾”、其第一地址(开头)和缓冲器的总长度。换句话说,3个整数。当计算发生并将结果写入缓冲器时,目标将每个结果的偏移量和长度返回给主机,然后增加当前的缓冲器末尾指针。如果写入结果溢出缓冲器,“末尾”指针将移至开头,并从空间的开头开始覆盖旧结果,这将在返回主机时记录。这确实意味着必须注意提供足够的缓冲器空间,以允许主机在覆盖之前读取结果,但这取决于主机的策略。这个基本概念在图34中示出。
图34示出了使用中的预先分配的循环缓冲器的简单示例。它充当典型的循环缓冲器,尽管在目标侧维护的唯一状态是缓冲器的开头、长度和当前端点。随着写入的继续,它将环绕空间。
下面介绍了使用所提出的解决方案处理视觉数据的若干用例。虽然提出的解决方案用于这些用例,但应注意,此用例列表并非详尽的,因为提出的解决方案也可用于许多其他用例(视觉和非视觉)。
首先,提供了本公开通篇描述的存储中计算框架的简要概述。特别地,存储中计算框架依赖于虚拟对象的概念。虚拟对象只是描述特定数据集合(诸如文件或对象)位置的瞬时映射。在我们的示例中,这是一个描述逻辑块位置的扩展列表,可以被块存储目标或设备解释。此映射是计算描述符的一部分,它描述了存储中计算函数的输入、输出、操作和参数。存储中计算目标解释这些计算描述符并基于其中包含的指令来进行操作。结果要么通过传输(例如,iSCSI、NVMeOF等)返回,要么写入存储目标上的位置。该位置可以在描述符中详细说明,或者如果我们使用循环缓冲器或预先分配文件的方法,它可以作为地址和偏移量返回给主机,随后用于读取和操作。
图像预处理是一个示例用例。例如,视觉数据流水线的一个常见操作涉及图像的转换。这包括诸如调整大小和裁剪之类的操作。虽然这些往往导致最终图像的数据占用(foot print)更小,但它们的大小仍然可能不重要,并且可能不适合返回。此外,当成批图像一起存储在条带环境中时,它们可能以上述方式跨越子块边界。
使用提出的解决方案将成批图像写入条带存储很简单:如果一个或多个图像小于或等于子块大小,我们简单地应用前面详述的方法来避免图像跨越子块边界。
计算描述符输入将需要图像大小和偏移量、或分隔符,以区分单个图像边界。以此方式,然后可以使用常用的架子工具(例如,OpenCV)来执行操作。
非常小的结果可以直接嵌入到传输的返回有效载荷中(例如,iSCSI、NVMeOF等)。大的结果可以写入前面描述的预先分配空间。如果没有这些方法,图像将必须完整返回给主机,从而显著降低效率。
图像分类是另一个示例用例。例如,图像分类涉及通过经训练的机器学习模型运行图像以标识图像中有什么(例如,猫或狗)。上面提到的图像处理的同一基本布局要求也适用于此(实际上,图像处理的结果在一些情况下可能是分类的前兆)。计算描述符描述了图像的数据边界或如何标识它们,并且结果可以写入目标位置,或者可以作为载荷直接返回。
特征向量提取是另一个示例用例。特征向量提取涉及分析图像以提取图像或图像内对象的特征。特征向量的提取可以通过多种技术来完成,从手工挑选的图像特征(诸如颜色强度的直方图)到使用卷积神经网络的中间层进行更复杂的提取。在任何情况下,结果是浮点数向量,其描述感兴趣的元素,这些元素使特定的视觉对象与其他对象可区分。提取的特征向量的大小(以字节为单位)通常是固定的,并且比输入图像小几个数量级,因此不太可能需要额外的机制来返回结果。但是,如果用例需要在大量图像上执行特征提取,则可以使用上述循环缓冲器技术,并进行简化:因为所有特征向量的大小相等,因此无需计算偏移量。
与图像预处理一样,如果无法将图像存储在单个子块中,则该过程将需要在主机上进行集中化(例如,读取多个子块),从而消除了存储中计算的大部分优点。读取和写入要求与图像处理相同,计算描述符也是如此:它将需要描绘单个图像的偏移量或定义的分隔符。
特征向量查询是另一个示例用例。例如,一个常见的操作是搜索现有的数据库或特征向量表,以标识哪些向量是“相似的”,然后可以用于定位特定图像。与图像处理示例类似,批量存储的特征向量可以在分片内对齐,以降低复杂性并消除对复杂主机和目标协调的大部分需求。与多维搜索空间相对应的所有特征向量大小相等,这比上面描述的图像的情况(其中文件的大小取决于图像的内容)容易得多,并且特征向量中每一个的边界可以静态确定。
此操作的结果通常只是一组2元组<距离,id>,与相对于输入特征向量的k个最近元素相对应。如果请求结果的数量(“k”)少,可以直接返回给主机。如果“k”较大,则可以返回预先分配的缓冲器偏移量和长度,并且主机可以进行定期读取以检索结果,并进行简化:鉴于每对都是固定大小,因此偏移量是固定的。
图35示出了用于对存储在存储系统中的图像对象执行视觉计算任务的流程图3500。在各实施例中,使用贯穿本公开描述的实施例和功能来实现流程图3500。
流程图开始于框3502,其中接收将图像对象集合写入存储系统的请求。
流程图然后进行到框3504以将该图像对象集合划分成多个区块,其中多个区块中的每个区块包括来自该图像对象集合的一个或多个图像对象,并且其中多个区块被填充使得来自该图像对象集合的每个图像对象在多个区块的相对应区块的边界内对齐。
流程图然后进行到框3506以将多个区块写入存储系统,其中每个区块将被写入到多个存储设备中的相对应存储设备。
流程图然后进行到框3508,其中接收对该图像对象集合执行视觉计算任务的请求。
流程图然后进行到框3510以向多个存储设备发送多个计算迁移命令,其中每个计算迁移命令用于指示相对应的存储设备对来自该图像对象集合的相对应的图像对象子集执行视觉计算任务,其中相对应的图像对象子集存储在相对应的存储设备上。
在此处,流程图可以完成。然而,在一些实施例中,流程图可以重新开始和/或可以重复某些框。例如,在一些实施例中,流程图可以在框3502处重新开始以继续接收和处理将图像对象写入存储并对图像对象执行视觉计算任务的请求。
使用存储中计算的分解存储环境中的老化数据
本部分介绍了使用存储中计算的分解存储环境中老化数据的解决方案。
从物联网(IoT)传感器、音频/视频设备和无数互联网应用存储的数据量不断增加,给可用存储容量带来了压力。通常,数据的价值(以及对它的相对应访问)在一些依赖于应用的时间段之后减少,这导致了“老化”数据以减少其存储占用的策略。采用了用于老化的许多方法。老化的数据可以就地压缩,或者编码方案可以修改为减少数据占用的方案。另一种方法源于存储系统提供的持久性和可用性保证,其中存储单个数据项的多个副本。老化复制数据可以通过对数据进行擦除编码来完成(编码/解码需要更多的计算,但存储占用小得多)。最后,老化数据可被移动到更便宜/更慢的存储层(如SSD到HDD),或者按原样或通过在推送到更便宜的层之前压缩数据。所有这些方法的首要目标是降低存储成本。
一个不相关的趋势是存储分解,其中存储设备以刀片提供,具有最小的处理能力和最少的硬件资源。刀片上的存储介质作为块设备暴露给运行在单独服务器上的文件系统。这允许独立缩放存储容量,而不会在完全成熟的服务器容纳存储设备的情况下未充分利用(或过度支付)其他硬件资源。
存储中计算是一种具有广泛适用性的新兴技术。本部分中的解决方案解决了在分解存储系统(例如,iSCSI、NVMeOF)的上下文中高效地“老化”数据(例如,压缩、分层)的新存储中计算机制的需求(诸如机架规模设计,其中主机服务器和存储服务器经由存储结构在物理上分开)。
老化数据需要读取存储的数据,以某种方式对其进行转换(例如,压缩)并将其存储回来。当存储被分解时,数据需要从存储刀片读取到运行操作系统和文件系统的服务器。读取大量旧数据消耗大量网络带宽。例如,现有解决方案需要将数据从存储刀片传输到对数据进行转换的另一个服务器,然后再通过网络将其写出到最终位置。T-10标准定义了‘Xcopy’机制,该机制使数据能够直接从一个位置(如存储刀片)传输到另一个位置。但是,不能利用XCopy执行用于转换数据的操作。因此,现有解决方案消耗大量网络带宽来用于传输原始数据和将转换后的数据写回存储层两者。
因此,提出了一种存储中计算解决方案,以实现存储刀片上数据的老化,而不必将所有数据读到运行文件系统和/或应用的服务器上。例如,提出的解决方案发送命令来老化指定的数据,而不是来回传输数据。由于命令比数据小得多,因此避免了昂贵的数据传输。该命令描述了操作以及要对其执行操作的块的列表。该方法允许在块层处执行老化,而无需在存储目标上运行文件系统或其他存储堆栈(例如,对象存储系统)。
提出的解决方案提供了许多优点。例如,提出的解决方案能够直接在块层处的存储刀片中执行操作,而无需文件系统或其他存储堆栈(例如,对象存储堆栈)。因此,降低了存储刀片上需要的处理能力。这转化为经由更高效的整体系统降低总拥有成本(TCO),其中老化操作可以原位执行。
提出的解决方案还消除了仅为了老化而在网络内传输大量数据的需要。减少“后台”存储操作的网络带宽消耗进而减少了活动“前台”存储操作的扰动。此外,虽然运营商目前必须为此类后台通信量提供单独的集群网络(这增加部署的总体成本),但在提出的解决方案下不再需要这样做。
此外,所提出的解决方案能够使用更复杂的老化转换,这些转换可以是应用特定的。例如,数据最初可能是原始存储的(例如,用于应用的快速访问),但是一旦数据老化,就可以对数据进行编码以减少其占用。作为另一个示例,(诸如当视频在某个时间间隔内变化很小或没有变化时)视频应用可以添加元数据来标识与应用无关的帧,这在监控相机镜头中或体育记录中的活动播放之间以及其他示例中很常见。该元数据可以在老化期间在存储刀片上使用,以完全切除不相关的帧,从而节省大量存储容量。
图36示出了用于使用存储中计算的老化数据的示例计算架构。特别地,图36示出了不同的系统组件(例如,主机和存储目标机器上的系统堆栈)以及每个组件用于完成老化操作而执行的任务。
老化操作通常涉及转换数据并将其放置在存储系统中的适当位置。所提出的解决方案避免将数据从块存储目标传输出以进行老化转换,而是将具有适当信息的命令发送到存储目标,以便存储目标本身可以执行老化步骤。
该命令指定应该对其执行老化变换操作的块的列表。在本公开的其他部分中进一步描述了此类命令的基本流程。实际上,客户端与主机一起创建计算描述符,该计算描述符描述文件或对象的块位置以及要运行的操作。然而,对于老化,我们不是返回操作的结果,而是在目标侧转换数据并返回描述新数据位置或长度的元数据。
下面介绍了使用存储中计算来老化和迁移数据的若干不同方法和实施例,包括:
(1)将数据老化到同一目标上的预先分配位置;
(2)在同一目标上就地进行数据老化;
(3)将数据老化到不同目标上的预先分配位置;
(4)将复制数据老化到擦除编码数据;以及
(5)将数据老化到第三方存储服务。
将数据老化到同一目标上的预先分配位置:最简单的方法涉及在要写入经转换数据的同一存储目标上使用预先分配的位置。例如,压缩操作读入计算描述符中指定的数据,并将压缩数据写入目标位置,该目标位置也在计算描述符中指定。成功/失败和数据长度返回给主机/客户端,让他们知道指定位置中的压缩数据的长度,随后可以在方便时读取。类似地,当主机决定这样做时,可以丢弃旧的未压缩数据。使用该方法的计算描述符的示例在图37中示出。特别地,图37示出了用于以上述方式压缩数据并将数据放置在新位置的示例计算描述符。
预先分配文件时必须小心。特别地,在发出存储中计算操作之前,文件必须在主机上“同步”。如果文件未被同步,则预先分配的块将没有有效的块映射。
在同一目标上就地数据老化:另一种方法涉及“就地”压缩和写入文件,诸如通过利用压缩文件截断和覆盖原始文件。截断文件需要首先(例如,通过卸载和重新安装文件系统)转储清除主机页面缓存或利用截断文件的最后一页进行更新(例如,通过使用SCSI或NVMe通道命令从磁盘读取文件并通过单次写入页面缓存来更新主机上的文件)。注意,“清理缓存”的标准命令是建议性的,文件系统可能选择忽略它们。如果主机页面缓存没有被转储清除或更新,则陈旧的数据(例如,在预先分配阶段期间创建的并且仍然存在于主机页面缓存中的数据)可能被写回磁盘。这将导致从目标上的存储中计算操作输出的数据的损坏。因此,所提出的解决方案可以实施各种机制来确保陈旧的数据不被写出到存储。
将数据老化到不同目标上的预先分配位置:在该方法中,老化操作不仅涉及压缩数据,还涉及将压缩数据移动到另一个目标。最常见的情况是最终目标也由结构分隔之时。因此,老化命令除了目标命名空间中的块外,还需要有关目标位置的信息。
此类命令的示例在图38中示出。特别地,图38示出了用于将数据老化到不同目标机器上的预先分配位置的示例计算描述符。输入区段和长度指示要进行老化的数据的源块。输出目标地址标识必须放置老化数据的目标机器。输出区段和长度提供有关目标机器上要存储数据的块的信息。方法字段指示数据在发送到目标之前应该进行gzip压缩。
图39示出了用于使用存储中计算将数据老化到不同目标的示例计算架构。在图39中,接收到计算描述符的存储目标不仅需要读取数据并执行老化操作,还需要使用计算描述符中的输出信息调用块存储启动器。
将复制数据老化为擦除编码数据:在该方法中,复制数据通过将其转换为擦除编码数据来进行老化。例如,通常复制数据是为了持久性和高可用性以及为对数据的存储请求提供更好的吞吐量。但是,复制也增加存储占用。随着数据老化及其价值减少,减少存储占用的一种方法是对数据进行擦除编码。当前以这种方式老化的方法需要将其中一个数据副本读取到主机,对数据执行擦除编码,然后最后写出擦除编码区块。
然而,在所提出的解决方案中,可以使用存储中计算原位执行将复制数据老化为擦除编码数据。用于执行此类操作的示例存储中计算老化命令在图40中示出。特别地,图40示出了用于使用提出的解决方案将复制数据转换为擦除编码数据的示例计算描述符。计算描述符提供擦除编码(EC)配置概况信息,诸如数据和奇偶校验区块的数量。此外,描述符包括关于将放置各种擦除编码区块的存储目标的信息。当接收到操作的成功响应时,客户端应用可以更新元数据,以指示数据已经老化,并且现在使用位于计算描述符中指定的目标处的区块进行擦除编码。最后,客户端应用可以发送命令来删除数据的原始副本,从而释放存储空间。
将数据老化到第三方存储服务:另一种可能的方法是将数据老化到单独的存储服务(例如,Ceph、Swift、Minio等),该服务潜在地由单独的提供商管理。此类老化操作将需要端点信息以及第三方存储服务的凭据。例如,图41示出了用于将数据老化到第三方存储服务的示例计算描述符。在该示例中,计算描述符标识要老化的数据,并进一步指定数据要传输到Minio存储服务。
图42示出了用于对存储在存储系统中的数据对象执行数据老化计算任务的流程图4200。在各实施例中,使用贯穿本公开描述的实施例和功能来实现流程图4200。
流程图开始于框4202,在框4202中接收对存储在存储系统上的数据对象执行数据老化计算任务的请求,其中该数据对象存储在存储系统的相对应存储设备上。
流程图然后进行到框4204以将数据老化计算迁移命令发送到相对应的存储设备,其中数据老化计算迁移命令用于指示相对应的存储设备对数据对象执行数据老化计算任务。
流程图然后进行到框4206,其中从相对应的存储设备接收数据老化计算迁移命令的结果。
在此处,流程图可以完成。然而,在一些实施例中,流程图可以重新开始和/或可以重复某些框。例如,在一些实施例中,流程图可以在框4202重新开始以继续接收和处理对存储在存储系统中的数据对象执行数据老化计算任务的请求。
基于提示的NAND存储的生命周期预测
本部分介绍了一种解决方案,可提供基于提示的NAND存储的生命周期预测。
NAND性能对数据在设备内被如何分配非常敏感。与传统硬盘驱动器不同,NAND设备将主机写入重新映射到设备内的可用页面。这些页面被组织成更大的擦除块。当数据被覆盖时,擦除块中的旧页面必须无效并随后进行垃圾收集,从而使页面可用于新数据。为此,该擦除块中尚未覆盖的任何数据必须重新定位到同一驱动器上的另一个擦除块。
因为数据重新定位是昂贵的,所以希望擦除块内的所有页面具有相同的生命周期(例如,它们大约在同一时间被主机删除或覆盖)。因此,无需重新定位任何数据,并且可以有效地回收整个擦除块并使其可用于新数据。
然而,在许多情况下,数据的生命周期是未知的,这使得驱动器内的高效垃圾收集变得困难。
以前的解决方案依赖于操作系统向固态驱动器(SSD)发送“提示”。在所有情况下,这都需要修改应用以提供这些提示。基于应用的提示方法的最大缺点是应用必须对其数据的生命周期有一定的了解。在许多情况下,应用开发人员根本不知道数据的生命周期。此外,并非所有数据都是由应用创建的。某些数据(诸如文件系统元数据)也将具有相关联的生命周期,这对于知晓NAND存储管理的目的来说非常有用。
因此,本部分提出了一种解决方案,通过该解决方案,在NAND存储中分配页面时可以预测和使用数据生命周期。预计具有相同生命周期的页面将被分配到相同的擦除块。
该解决方案依赖于I/O分类,由此通过该I/O分类应用和文件系统将数据的“类别”告知块存储系统。这些类别可以包括各种信息,诸如数据类型、读取/写入数据的过程、预期的数据使用等。使用这些“特征”,我们可以训练机器学习模型来学习和预测生命周期。例如,我们可以发现所有归类为“元数据”的数据都是短期存在的,而归类为“归档”的数据是长期存在的。
该解决方案的核心涉及两个关键方面。首先,我们提供了一种机制,通过该机制应用可以将分类信息传送到(多个)操作和/或存储系统。其次,一旦分类到位,我们就利用分类和回归树模型(CART)进行实际预测。应该注意的是,用于分类数据的机制依赖于“存储中计算”,其中应用使用计算存储库将任意分类信息传送到存储系统。
该解决方案提供了许多优点。首先,使用存储中计算不需要对操作系统进行重大更改(依赖核补丁的其他提示方法并非如此)。其次,生命周期预测有助于提高SSD和/或任何其他类型的基于NAND的存储的性能。
提出的解决方案包括计算机系统,该计算机系统包含至少一个NAND存储设备和一个用作该NAND设备的缓存的Optane设备。英特尔的缓存加速软件(CAS)可用于管理缓存设备,并且它也是机器学习(ML)算法的I/O相关特征向量输入的来源。例如,使用特殊API(例如,存储中计算API)向CAS发送分类信息,并且使用机器学习(ML)算法来解析CAS产生的I/O跟踪数据。此外,将训练此ML算法以预测数据生命周期。
下面表1中提供了机器学习算法使用的I/O特征向量的示例。
表1:I/O特征向量
Figure BDA0003209075040000591
Figure BDA0003209075040000601
提出的解决方案还定期捕获一小组SSD计数器,这些计数器也作为输入特征向量提供给ML算法。这些计数器是通过使用NVMe获取日志管理命令读取的。下面表2中提供了机器学习算法使用的SSD特征向量的示例。
表2:SSD特征向量
Figure BDA0003209075040000602
应用可以提供额外的特征向量作为ML算法的输入,以帮助确定生命周期。应用使用特殊的API(例如,存储中计算API)将这些特征向量传递给CAS软件。下面表3中提供了机器学习算法使用的应用特征向量的示例。
表3:应用特征向量
名称 描述
进程名称 应用的名称
进程写入路径 如果应用包含多个写入路径,则标识唯一的写入路径
文件名 文件的名称
文件类型 文件的类型
Inode编号 允许应用特征与I/O特征相匹配
图43示出了用于NAND存储的基于提示的生命周期预测的架构和数据流的示例。
为了说明,在向外扩展多租户云存储(例如,在具有各种I/O特性的许多租户之间共享的分布式存储)的上下文中的端到端用例在图44中呈现。例如,为了在多租户环境(例如,使用Red Hat公司的Ceph)中实现作为端到端流水线的生命周期预测,图44图示了端到端I/O分类和计算迁移描述符映射的示例实施例。所示示例使用元数据和数据来利用两种类型的I/O。例如,如下文进一步描述的,在图44所示的机制中有两个部分。
第一部分是计算迁移描述符的I/O分类扩展。这允许应用级I/O分类沿着端到端路径一直传递到最终SSD存储设备。出于在该层处进行生命周期预测的目的,任何中间层都可以是该信息的消费者。例如,我们可以在QEMU Ceph RBD级别使用CAS来缓存QEMU主机上的数据。
第二部分是计算迁移描述符映射和转换。在应用侧看到的顺序或随机I/O操作不一定在端到端I/O路径上的各个层被视为顺序或随机。因此,我们必须正确地重新映射描述符并正确地转换它们,以允许I/O分类信息始终与该层的正确I/O相关联。例如,在由Ceph集群支持的虚拟磁盘图像上的客户虚拟机(VM)文件系统元数据操作需要被转换成相对应层的正确描述符格式,如图44所示。
例如,如图44中所示,“元”和“数据”I/O类别被添加到计算迁移描述符。I/O分类信息源自云租户的VM实例内部,然后通过所有中间层进行隧道传输,中间层诸如QEMU(虚拟机管理器)、Ceph RBD(块到对象存储映射服务)、Ceph协议(Ceph存储TCP/IP上的服务协议)、Ceph OSD(对象存储守护进程)、NVMeOF(分解存储结构)、存储目标,然后最终到达底层存储设备(SSD或HDD)。
对于生命周期预测,这可能发生在沿端到端I/O分类路径的任何层,取决于哪一层被设计为I/O分类的消费者。例如,如果目标是在QEMU VMM主机侧部署Optane缓存设备,则QEMU Ceph RBD可以作为这些I/O提示的消费者,以使用表1-3中显示的特征向量来预测生命周期。
图45示出了用于使用数据生命周期预测将数据存储在NAND存储上的流程图4500。在各实施例中,使用贯穿本公开描述的实施例和功能来实现流程图4500。
流程图开始于框4502,其中从主机处理器接收写命令,其中该写命令用于指示NAND存储设备执行写操作以将数据对象写入该NAND存储设备。
流程图然后进行到框4504以标识与写操作相关联的多个输入/输出(I/O)特征,其中多个I/O特征用于指示时间戳、数据类型和应用名称。
流程图然后进行到框4506以基于机器学习模型来预测数据对象的生命周期,其中训练机器学习模型以基于多个I/O特征来预测数据对象的生命周期。
流程图然后进行到框4508以在NAND存储设备上选择用于存储数据对象的相对应块,其中基于数据对象的生命周期从NAND存储设备上的多个块中选择相对应块。
流程图然后进行到框4510以将数据对象写入NAND存储设备上的相对应块。
在此处,流程图可以完成。然而,在一些实施例中,流程图可以重新开始和/或可以重复某些框。例如,在一些实施例中,流程图可在框4502处重新开始,以便继续接收和处理将数据对象写入NAND存储的请求。
一种高效探索缓存分配策略的启发式方法
本部分介绍了一种启发式探索缓存分配策略的解决方案。
存储分析是一个研究领域,它尝试帮助自动化日常存储管理任务,从缓存配置和供应开始。这是经由自动工作载荷监控(例如,I/O特征)、策略优化(例如,缓存建模和预测)和编排(例如,通过优化策略使缓存在线)来实现的。
考虑适当配置缓存软件的进程(例如,支持差异化存储服务的英特尔缓存加速软件(CAS))。在此类系统中,数据的每一个类别可以接收其自己的缓存策略。例如,我们可选择缓存文件系统日志而不缓存大文件。
然而,即使I/O类的数量相对少,我们仍然拥有指数数量的可能的缓存分配策略。单纯地搜索该配置空间以寻找最佳缓存策略是不可行的。相反,我们必须依靠启发式和模型来预测各种缓存策略的缓存性能。
特别地,缓存软件通常执行一个进程,用于自动配置自身,这个进程被称为“缓存实用”。例如,英特尔的缓存加速软件(CAS)执行以下过程以便自动配置自身(如图46所示):
步骤1-2。运行应用,跟踪其I/O,并在跟踪中包含每个I/O的类别。示例I/O类包括“元数据”、“小文件”、“中文件”和“大文件”。
步骤3-4。使用无限缓存大小的“缓存全部”策略配置CAS缓存模拟器。将不驱逐任何I/O。一切将缓存在模拟器中。通过模拟器重放跟踪,并在仿真器内记录每个I/O类的磁盘寻道数和消耗的缓存行数。将前者除以后者即可得出该类的缓存实用。换句话说,使用无限缓存,我们可以缓存所有数据以确定每个类别的大小,并且我们可以确定通过缓存整个类可以节省的磁盘寻道次数。这称为该类的“缓存实用”。越高越好。实用(类别)=寻道(类别)/大小(类别)。
步骤3-4(确定驱逐政策)。从最高到最低实用对所有n类别进行排名。该排名代表了I/O的每个类别的驱逐优先级。也就是说,当缓存填满时,我们将首先驱逐最低的实用类别,然后是第二低的实用类别,依此类推。较高的实用类别在缓存中具有优先权。
步骤5-6(确定分配政策)。使用在上一步中为n个类别找到的驱逐策略,CAS必须确定要分配哪些类别。并非所有类别都必须在缓存中分配。为此,CAS首先缓存最高优先级的类别并(经由仿真)记录缓存性能。然后添加第二高的优先级,然后是第三高的优先级,依此类推,直到所有类最终都被缓存。在此过程中,CAS可以记录缓存性能何时达到最大值,并将其用作缓存分配策略。在许多情况下,只需要缓存一定数量的类别即可达到最大性能。在那之后,“鞭打(thrash)”可以发展。注意,此步骤与类别的数量呈线性关系。我们必须为添加到缓存的每个新类别运行一次缓存模拟器。
步骤7。将驱逐排名和分配策略(哪些类别被缓存)传达给实际的CAS软件(与CAS模拟器相对),使得它可以在运行时设置适当的缓存策略。
分配调整过程时间是低效的。它随着类别的数量线性增加,也随着工作载荷的大小而增加(例如,通过模拟器重放给定的工作载荷跟踪需要时间)。希望有一个需要较少运行模拟器的解决方案。
因此,本部分介绍了一种自动探索缓存分配空间的方法(例如,哪些类别的数据在缓存中分配或未分配)。特别,提出的解决方案是一种新颖的自动缓存分配调整技术,它使用了爬山和建模方法的组合。例如,它使用所需的最小运行来开始拟合多项式、sigmoid和指数模型。然后,爬山搜索用于确定哪个模型给出的残差最少,然后该模型用于预测下一个优化的分配策略,同时丢弃其余的策略。当模型的残差接近零(~0)时,搜索停止。结果模型成为最终模型,预测的最佳分配策略成为优化的分配配置。以此方式,使用提出的解决方案自动优化和调整缓存,以最大限度地提高性能。
提出的解决方案涉及8个步骤,用于在CAS中自动配置分配策略。邮戳(Postmark)工作载荷的案例研究(建模SPEC SFS)用于详细说明。表5中示出了九个CAS类别和由缓存实用(如前所述)确定的驱逐策略。在模拟运行中,该基于实用的驱逐策略从未改变。相反,我们只专注于探索缓存分配空间。
与前面提到的线性解决方案(例如,一次一个地探索分配每个类别的效果)相反,我们执行一些看起来更像二分搜索的解决方案。也就是说,我们从只缓存第一类别(实用最高的类别)开始,然后记录模拟的缓存性能。然后我们缓存所有类别,并也记录该性能。然后我们可以在这两个点上拟合一条线,并在它们之间进行外推或内插,以便确定缓存其他组合的效果。然而,我们并没有在那停止,而是通过只缓存一半的类别来探索“中心”点。我们现在有3个可以拟合曲线的点,它不一定是线性的。相反,我们寻找最佳拟合(例如,线性vs.二次方vs.三次方)。我们重复这个过程,直到找到最佳拟合的曲线。然后,我们使用该曲线来预测缓存其他类别数据的结果。
表6中示出有关此过程的更多详细信息。我们示出了找到最佳缓存分配设置所需的循环数和测试/循环数。提出的解决方案的第1步是在相关驱逐顺序和I/O类别中的两个边界和中心点上运行三个分配仿真测试。在邮戳工作载荷中,三个仿真测试将通过分别分配I/O类别=元数据(第一边界)、I/O类别=所有(第二边界)和I/O类别=1、11、12、13、14(中心点)来运行。在步骤2中,我们拟合可以使用步骤2中的3个数据点拟合的模型。拟合各种模型所需的最小数据点如表4所示。用3个数据点拟合线性、二次、逻辑3P和指数3P。
表4:模型拟合所需的最少数据点
Figure BDA0003209075040000641
Figure BDA0003209075040000651
由于特定工作载荷将具有其独特的I/O类别组合,因此边界条件受到限制。只有一个完美的模型能够穿过边界内的点。因此,我们正在基于残差寻找受限边界问题的完美拟合模型。步骤3计算预测与实际测量值之间的平均残差,然后用于爬山搜索以搜索最适合的模型:
Figure BDA0003209075040000652
其中Y=测量值,
Figure BDA0003209075040000653
而m是总仿真运行次数。平方和均方根用于将负值转换为正值。
在使用三个数据点拟合的第一模型中,爬山搜索将从三个数据点的残差中搜索具有最小残差平均值的模型,并将使用该模型在步骤4中预测下一个最佳优化分配类别。在步骤5中,如果预测分配类别不在前三个数据点中,则仿真将在新的预测分配设置上运行。如表6所示,二次模型的平均残差约为零(~0),但它预测最佳优化分配配置涉及分配类别1、11、12、13、14、15和16,其之前没有测试过。然后,通过使用新的预测优化配置运行仿真来继续循环2。模型拟合将在之前的最佳模型上继续进行,并在步骤6中添加可以用四个数据点拟合新模型。循环2模型包括二次、三次和逻辑4P。在步骤7中,重复步骤3到6,直到满足平均残差标准的模型近似为零(~0),并且其预测优化设置是之前测量的数据点之一。这发生在邮戳工作载荷的循环3上,其中四次模型达到大约零(~0)平均残差,并预测将类别1、11、12、13和14分配为最佳。此预测设置在循环1中运行。因此,循环停止并选择最佳模型的预测优化作为步骤8中工作载荷的优化设置。
表5:由缓存实用确定的邮戳CAS类ID和驱逐策略
类别 邮戳CAS类别ID CAS驱逐策略
元数据 1 0
<=4KB 11 1
<=16KB 12 2
<=64KB 13 3
<=256KB 14 4
<=1MB 15 5
<=4MB 16 6
<=16MB 17 7
<=64MB 18 8
表6:邮戳CAS分配调整步骤和使用的模型
Figure BDA0003209075040000661
Figure BDA0003209075040000671
综上所述,分配策略搜索的循环如下:
(1)找到驱逐排名后,开始进行3次仿真运行(距离边界2个点+1个中心点);
(2)拟合需要最少3个点(m)的所有模型;
(3)计算并比较模型的平均残差以寻找最小值;
(4)使用最少残差的模型来预测优化的分配设置;
(5)如果预测的不在步骤1中的3个点中,则运行仿真;
(6)拟合至少需要4个点(m+1)的模型,并重新拟合之前在步骤3中找到的最佳模型;
(7)重复步骤3-步骤6,直到平均残差近似为零(~0)并且预测的优化分配设置在测试运行之中;以及
(8)将最佳模型的预测分配策略更新为CAS。
图47示出了用于优化和配置存储系统的缓存的流程图4700。在各实施例中,使用贯穿本公开描述的实施例和功能来实现流程图4700。
该流程图开始于框4702以标识用于数据类别集合的缓存驱逐策略,其中该缓存驱逐策略指示将从缓存中驱逐该数据类别集合中的每个数据类别的优先级。
流程图然后进行到框4704以标识缓存分配策略集合以基于缓存驱逐策略进行评估,其中每个缓存分配策略用于将数据类别集合的不同子集分配给缓存。
流程图然后进行到框4706以针对缓存分配策略集合中的第一缓存分配策略子集评估缓存的性能,其中基于评估缓存的性能来针对第一缓存分配策略子集获得第一性能指示符集合。
流程图然后进行到框4708以评估关于第一性能指示符集合的多个曲线拟合模型。
流程图然后进行到框4710以标识第一性能指示符集合的最佳曲线拟合模型,其中从对第一性能指示符集合评估的多个曲线拟合模型中标识最佳曲线拟合模型。
流程图然后进行到框4712以针对来自该缓存分配策略集合中的第二缓存分配策略子集预测缓存的性能,其中基于第一性能指示符集合的最佳曲线拟合模型来针对第二缓存分配策略子集预测第二性能指示符集合。
流程图然后进行到框4714以从缓存分配策略集合中选择最佳缓存分配策略,其中最佳缓存分配策略是基于第一性能指示符集合和第二性能指示符集合来选择的。
流程图然后进行到框4716以基于缓存驱逐策略和最佳缓存分配策略来配置缓存。
在此处,流程图可以完成。然而,在一些实施例中,流程图可以重新开始和/或可以重复某些框。例如,在一些实施例中,流程图可在框4702处重新开始以继续优化和配置缓存。
使用计算存储的CRC计算
本部分介绍了一种存储中计算解决方案,用于在SSD中通过一个或多个逻辑块地址(LBA)执行端到端CRC计算。
存储技术的进步导致设备极快。特别地,我们看到各种形式的非易失性存储器被用于固态磁盘,特别是NAND和持久性存储器。但是,I/O速度跟不上,这导致在存储设备与CPU之间传输数据需要更多时间。这些快速设备的可用带宽由I/O堆栈控制,其包括各种传统软件和硬件。尽管I/O路径的改进正在进行中,但它们永远无法解决根本问题——移动数据需要时间。非易失性存储器已经受到它们所附接到的I/O控制器的限制,并且随着存储密度的增加,这种情况预计变得更糟。
该解决方案提出了一种SSD的存储中计算替代方案。我们不想将数据移至CPU,而是将计算移至数据。我们特别关注CRC计算,它是数据密集型的并且常用于各种软件堆栈以确保数据完整性。
具体地,在SSD内,我们关于一个或多个LBA计算CRC,并将结果返回给主机,而不传输数据载荷。这允许主机将数据完整性检查迁移到存储设备,而不是传输整个有效载荷,然后执行数据完整性计算。
作为一个具体的示例,考虑对象存储系统中的“bitrot检测”或“审计”。这涉及计算整个对象的校验和(通常是CRC-32)以标识任何损坏并触发后续修复。问题在于,随着驱动器和存储系统的增加,越来越多的带宽必须专用于读取这些数据和计算这些校验和,从而给I/O路径带来重要但“无趣”的通信量压力。如果校验和可以迁移到SSD本身,这将释放CPU和I/O带宽,用于更高优先级、对等待时间敏感的操作。
在当前的解决方案中,主机需要通过传输接口传输整个数据有效载荷,并使用主机CPU执行数据完整性计算。因此,主机CPU和传输接口带宽都是执行数据完整性检查所需的资源。如果可以将CRC计算迁移到存储设备,则主机CPU和传输接口带宽可以用于更高价值的工作,但使用当前的解决方案是不可能的。
因此,本部分提出了一种存储中计算解决方案,其可以将CRC计算迁移到存储设备。例如,在传输硬件中提供了一个新功能,其中DMA操作在有效载荷大于等于1的(多个)扇区上累积CRC,并将计算出的CRC返回给主机以对供应商独有的命令作出响应。供应商独有的命令请求在1个或多个有效载荷的4K扇区上进行CRC计算,并且进一步包括最终长度,使得可以计算大小不是扇区长度倍数的数据。换句话说,最终扇区的长度可小于4k,并且最终CRC更新是在其数据的子集上计算的。SSD内的固件解释此命令并从NAND存储读取扇区。DMA描述符被编程到传输硬件中,它告诉传输硬件读取数据并在(多个)有效载荷上累积CRC,然后丢弃数据而不是通过相对应的接口(例如,SATA、PCIe等)将其传输到主机存储器中。在所有扇区通过传输硬件之后,最终的CRC值返回给主机。图48示出了如上所述的使用存储中计算来迁移CTC计算的示例实施例的流程图。
因此,该解决方案赋予传输硬件在大于等于1LBA上累积CRC的能力,如DMA描述符所描述的。CRC计算执行后丢弃数据有效载荷。此外,在处理完所有(多个)LBA并返回最终CRC值之前,不向主机进行数据传输。
通过实施供应商独有的命令以将CRC检查迁移到存储设备,用户和/或实体可以利用其主机侧CPU进行更高价值的工作,从而提高整体性能。
图49示出了用于对存储在存储系统中的数据对象执行CRC验证的流程图4900。在各实施例中,使用贯穿本公开描述的实施例和功能来实现流程图4900。
流程图开始于框4902,在框4902中接收对存储在存储系统上的数据对象执行循环冗余校验(CRC)验证的请求,其中该数据对象存储在存储系统的相对应存储设备上。
流程图然后进行到框4904以将CRC计算迁移命令发送到相对应的存储设备,其中CRC计算迁移命令用于指示相对应的存储设备对数据对象执行CRC验证。
流程图然后进行到框4906,其中从相对应的存储设备接收CRC计算迁移命令的结果。
在此处,流程图可以完成。然而,在一些实施例中,流程图可以重新开始和/或可以重复某些框。例如,在一些实施例中,流程图可以在框4902重新开始以继续接收和处理对存储在存储系统中的数据对象执行CRC验证的请求。
示例计算实施例
以下部分呈现可与本公开通篇描述的存储中计算功能结合使用的计算设备、系统、架构和环境的各种示例。
示例边缘计算架构
下列实施例总体上涉及数据处理、服务管理、资源分配、计算管理、网络通信、应用分区、以及通信系统实现方式,并且具体地涉及用于调整各种边缘计算设备和实体以动态地支持分布式边缘计算环境中的多种实体(例如,多个租户、用户、利益相关方、服务实例、应用等)的技术和配置。
在下列描述中,公开了用于对边缘计算架构的配置和功能能力、以及实现的边缘计算系统的各种改善的方法、配置、以及有关装置。这些改善可使各种用例获益,尤其是涉及边缘计算系统的多个利益相关方的那些用例——该多个利益相关方不论是以系统的多个用户的形式、系统上的多个租户的形式、与系统进行交互的多个设备或用户装备的形式、提供自系统的多个服务的形式、在系统内可用的或被管理的资源的形式、针对系统揭露的多种形式的网络访问、用于系统的多个操作位置等等。此类多维度的方面和考虑因素在本文中总体上被称为“多实体”约束,其中具体讨论在多租户和多服务边缘计算配置中管理或编排的资源。
在下文所描述的说明性边缘联网系统的情况下,计算和存储资源被移动到更靠近于网络的边缘(例如,更靠近于客户端、端点设备、或“物”)。通过将计算和存储资源移动成更靠近于产生或使用数据的设备,可相对于标准联网的(例如,云计算)系统实现各种等待时间、顺应性、和/或成本约束。为此,在一些示例中,计算池、存储器池、和/或存储资源池可位于本地服务器、路由器和/或其他网络装备中,或者以其他方式装配有本地服务器、路由器、和/或其他网络装备。此类本地资源促进满足被置于系统之上的约束。例如,本地计算和存储资源允许边缘系统实时地或接近实时地执行计算,这可以是诸如自主驾驶、视频监控、以及移动媒体消费之类的低等待时间用例中的考虑因素。另外,这些资源将受益于边缘系统中的服务管理,该服务管理提供了缩放和实现本地SLA、管理分层式服务要求、并暂时地或持久性地启用本地特征和功能的能力。
说明性边缘计算系统可支持各种服务和/或向端点设备(例如,客户端用户装备(UE))提供各种服务,这些服务中的每种服务可具有不同的要求或约束。例如,一些服务可具有优先级或服务质量(QoS)约束(例如,用于自主车辆的交通数据相比于温度传感器数据可具有更高的优先级)、可靠性和弹性(例如,交通数据可要求任务关键型可靠性,而温度数据可允许某种误差方差)、以及功率、冷却和形状因子约束。当应用于多利益相关方设置时,这些和其他技术约束可能提供显著的复杂性和技术挑战。
如本文中所使用,术语“边缘计算”可以涵盖致力于针对端点用户(客户端设备、用户装备等)减少等待时间并增加吞吐量而将处理活动和资源(例如,计算、存储、加速资源)朝向网络的“边缘”移动的分布式计算的许多实现方式。此类边缘计算实现方式典型地涉及从经由无线网络可访问的一个或多个位置在类云服务、功能、应用和子系统中提供此类活动和资源。由此,对本文中所使用的网络、集群、域、系统或计算布置的“边缘”的引用可指起作用的分布式计算元件的群组或分组,并且由此一般与图论中使用的“边缘”(链接或连接)无关。
经由移动无线网络(例如,蜂窝和Wi-Fi数据网络)可访问的边缘计算应用和服务的特定布置可被称为“移动边缘计算”或“多接入边缘计算”,其可通过缩写“MEC”来引用。本文中对“MEC”的使用也可指代由欧洲电信标准协会(ETSI)颁布的标准化实现方式,被称为“ETSI MEC”。ETSI MEC规范所使用的术语通过引用总体结合于此,除非本文中提供冲突的定义或使用。
如本文中所使用,术语“计算节点”或“计算设备”可指实现边缘计算操作的一方面的可标识的实体(不论是较大系统的部分、分布式系统集合、还是独立装置)。在一些示例中,计算节点可被称为“边缘节点”、“边缘设备”、“边缘系统”,而不论作为客户端、服务器还是中间实体来进行操作。计算节点的特定实现方式可被并入到服务器、基站、网关、路边单元、内部单元、UE或终端消费设备等等中。
如本文中所使用,术语“基站”可指无线电接入网络(RAN)中的网络元件,该无线电接入网络诸如负责一个或多个蜂窝小区中将无线电信号发送至用户装备(UE)或从用户装备(UE)接收无线电信号的第四代(4G)或第五代(5G)移动通信网络。基站可以具有集成式天线,或者可通过馈电电缆连接至天线阵列。基站可使用专门的数字信号处理和网络功能硬件。在一些示例中,出于灵活性、成本、以及性能,可将基站分成采用软件进行操作的多个功能块。在一些示例中,基站可包括演进节点B(eNB)或下一代节点B(gNB)。在一些示例中,基站可操作或包括计算硬件,以作为计算节点来进行操作。然而,在本文中所讨论的场景中的许多场景中,RAN基站可以以接入点(例如,无线网络接入点)或其他网络接入硬件来代替。
如本文中所使用,术语“中央局”(或CO)可指可访问或所限定的地理区域内的、用于电信基础设施的聚合点,通常电信服务提供商传统上将用于一种或多种类型的接入网络的切换装备定位在其中。CO可以在物理上被设计成用于容纳电信基础设施装备或计算、数据存储和网络资源。然而,CO不需要是由电信服务提供商指定的位置。CO可主控用于边缘应用和服务(或者甚至类云服务的本地实现方式)的任何数量的计算设备。
如本文中所使用,术语“云服务提供商”(或CSP)可指典型地对大规模的“云”资源进行操作的组织,这些大规模的“云”资源由集中式、区域的、和边缘数据中心组成(例如,如在公共云的情境中所使用)。在其他示例中,CSP也可被称为云服务运营商(CSO)。对“云计算”的引用一般是指在相对于边缘计算具有至少一些增加的等待时间、距离、或约束的远程位置处由CSP或CSO提供的计算资源和服务。
如本文中所使用,术语“数据中心(data center)”或“数据中心(datacenter)”可指旨在容纳多个高性能计算和数据存储节点以使得大量的计算、数据存储和网络资源存在于单个位置处的有目的设计的结构。这通常使得需要专门的机架和封装系统、合适的加热、冷却、通风、安全性、灭火、以及功率递送系统。在一些情境中,该术语还可指代计算和数据存储节点。在集中式数据中心或云数据中心(例如,最大的数据中心)、区域数据中心、以及边缘数据中心(例如,最小的数据中心)之间,数据中心的规模可能有所不同。
如本文中所使用,术语“接入边缘层”指示基础设施边缘的、最靠近于终端用户或设备的子层。例如,此类层可通过被部署在蜂窝网络位置处的边缘数据中心来满足。接入边缘层作为基础设施边缘的前线来起作用,并且可连接至层级结构中较高的聚合边缘层。
如本文中所使用,术语“聚合边缘层”指示距接入边缘层一跳的基础设施边缘的层。该层可以要么作为中等规模的数据中心存在于单个位置中,要么可由多个互连的微型数据中心形成,以形成具有接入边缘的分层拓扑,从而允许相比于仅有接入边缘更大的协作、工作载荷故障转移、以及可缩放性。
如本文中所使用,术语“网络功能虚拟化”(即NFV)指示使用工业标准虚拟化和云计算技术、将网络功能从专有硬件设备内的嵌入式服务迁移到在标准化CPU(例如,在标准
Figure BDA0003209075040000745
Figure BDA0003209075040000746
服务器内,诸如包括
Figure BDA0003209075040000747
至强TM(XeonTM)或者
Figure BDA0003209075040000748
EpycTM或OpteronTM处理器的那些标准化CPU)上运行的基于软件的虚拟化网络功能(即VNF)。在一些方面,NFV处理和数据存储将在基础设施边缘内的、直接连接至本地蜂窝站点的边缘数据中心处发生。
如本文中所使用,术语“虚拟化网络功能”(或VNF)指示在多功能多目的计算资源(例如,x86、ARM基础架构)上操作的基于软件的网络功能,其可代替于专用物理装备而被NFV使用。在一些方面,若干VNF可在基础设施边缘处的边缘数据中心上操作。
如本文中所使用,术语“边缘计算节点”是指以设备、网关、桥接器、系统或子系统、组件形式的能够进行计算的元件的真实世界的、逻辑的、或虚拟化的实现方式,而不论是在服务器、客户端、端点还是对等模式下操作,并且不论位于网络的“边缘”处还是位于进一步处于网络内的连接的位置处。一般而言,对本文中所使用的“节点”的引用与“设备”、“组件”和“子系统”是可互换的;然而,对“边缘计算系统”的引用一般是指分布式架构、组织、或多个节点和设备的集合,并且边缘计算系统被组织成用于完成或提供边缘计算设置中的服务或资源中的某个方面。
如本文中所使用,术语“集群”是指以物理实体(例如,不同的计算系统、网络或网络群组)、逻辑实体(例如,应用、功能、安全性构造、容器)等等的形式、作为边缘计算系统(或多个边缘计算系统)的部分的实体集合或实体分组。在一些位置中,“集群”也指代“群组”或“域”。集群的成员关系可基于包括来自动态成员关系或基于属性的成员关系、来自网络或系统管理场景、或来自下文所讨论的各种示例技术的、可添加、修改或移除集群中的实体的状况或功能而被修改或影响。集群还可包括多个层、级别或属性,或与多个层、级别或属性相关联,该多个层、级别或属性包括基于此类层、级别或属性的安全性特征和结果的变型。
虽然下列示例中的许多示例在使用特定的蜂窝/移动网络技术的情况下(包括在使用4G/5G 3GPP网络组件(或预期的基于太赫兹的6G/6G+技术)的情况下)被提供,但是将理解的是,这些示例可应用于广域无线网络和局域无线网络的许多其他部署、以及有线网络的整合(包括光学网络及相关联的光纤、收发机等)。
图50是示出用于边缘计算的配置的概览的框图5000,该配置包括在当前许多示例中被称为“边缘云”的处理层。如图所示,边缘云5010共同定位在边缘位置(诸如基站5040、本地处理中枢5050、或中央局5020),并且因此可以包括多个实体、设备、和装备实例。与云数据中心5030相比,边缘云5010被定位成更靠近端点(消费者和生产者)数据源5060(例如,自主车辆5061、用户装备5062、商业和工业装备5063、视频捕获设备5064、无人机5065、智能城市和建筑设备5066、传感器和IoT设备5067等)。在边缘云5010中的边缘处提供的计算、存储器、和存储资源对于为由端点数据源5060使用的服务和功能提供超低等待时间的响应时间以及减少从边缘云5010朝向云数据中心5030的网络回程通信量至关重要,因此改善能耗和整体网络使用等益处。
计算、存储器、和存储是稀缺资源,并且通常根据边缘位置而减少(例如,在消费者端点设备上可用的处理资源比在基站上或在中央局处可用的处理资源更少)。然而,边缘位置越靠近端点(例如,UE),空间和功率就越受限。因此,作为一般的设计原则,边缘计算试图通过分配被定位成既在地理上更靠近又在网络访问时间上更靠近的更多的资源来最小化网络服务所需的资源量。
以下描述了边缘云架构的各方面,该架构涵盖多种潜在的部署,并解决了一些网络运营商或服务提供商在其自身基础设施中可能具有的限制。这些包括基于边缘位置的配置变化(例如,因为处于基站级别的边缘可能具有更受限制的性能);基于边缘位置、位置的层、或位置的组可用的计算、存储器、存储、结构、加速等资源的类型的配置;服务、安全性、以及管理和编排能力;以及实现端服务的可用性和性能的相关目标。
边缘计算是一种开发范式,其中计算在网络的“边缘”处或靠近于网络的“边缘”被执行,典型地通过使用在基站、网关、网络路由器、或更靠近于产生和消耗数据的端点设备的其他设备处实现的计算平台来执行。例如,边缘网关服务器可装配有存储器池和存储资源,以针对连接的客户端设备的低等待时间用例(例如,自主驾驶或视频监控)实时地执行计算。或者作为示例,基站可被扩充有计算和加速资源,以直接为连接的用户装备处理服务工作载荷,而无需进一步经由回程网络传输数据。或者作为另一示例,中央局网络管理硬件能以执行虚拟化网络功能并为服务的执行提供计算资源并且为连接的设备提供消费者功能的计算硬件来代替。在边缘计算网络内,可能存在计算资源被“移动”到数据的服务中的场景,以及其中数据被“移动”到计算资源的场景。或者作为示例,基站计算、加速和网络资源可以提供服务,以便通过激活休眠容量(订阅、按需容量)来根据需要扩展工作载荷需求,以便管理极端情况、紧急情况或为部署的资源在显著更长的实现的生命周期中提供长生命周期。作为另一示例,本公开通篇描述的存储中计算功能可以贯穿云5030、边缘云5010和/或端点5060利用,以便减少与数据存储、检索和计算相关联的等待时间。
与图50的网络架构相反,传统端点(例如,UE、车对车(V2V)、车对外界(V2X)等)应用依赖于本地设备或远程云数据存储和处理来交换并协调信息。云数据安排允许长期的数据收集和存储,但对于高时变的数据(诸如,碰撞、交通信号灯等变化等)并不是最优的,并且可能无法尝试应对等待时间挑战。
取决于通信上下文中的实时要求,在边缘计算部署中可以定义数据处理和存储节点的层级结构。例如,此类部署可包括本地超低等待时间处理、区域存储和处理、以及基于远程云数据中心的存储和处理。关键性能指示符(KPI)可用于标识数据被最佳地传递到何处以及数据在何处被处理或存储。这典型地取决于数据的ISO层依赖关系。例如,较低的层(PHY、MAC、路由等)典型地快速变化,并且更好地在本地被处置以满足等待时间要求。较高层级的数据(诸如,应用层数据)典型地是时间较不关键的,并且可在远程云数据中心中被存储和处理。
图51示出了跨在多个边缘节点和多个租户之间操作的边缘计算系统的虚拟边缘配置的部署和编排。具体而言,图51描绘了边缘计算系统5100中的第一边缘节点5122和第二边缘节点5124的协调,以完成来自各种虚拟边缘实例的各种客户端端点5110的请求和响应。虚拟边缘实例在边缘云中提供边缘计算能力和处理,该边缘云接入云/数据中心5140以获得对网站、应用、数据库服务器等的更高等待时间请求。因此,边缘云使得能够协调多个租户或实体的多个边缘节点之间的处理。
在图51的示例中,这些虚拟边缘实例包括:提供给第一租户(租户1)的第一虚拟边缘5132,该第一虚拟边缘5132提供边缘存储、计算、和服务的第一组合;以及提供给第二租户(租户2)的第二虚拟边缘5134,该第二虚拟边缘5134提供边缘存储、计算、和服务的第二组合。虚拟边缘实例5132、5134分布在边缘节点5122、5124之间,并且可以包括其中从相同或不同的边缘节点满足请求和响应的场景。用于以分布式但协调的方式操作的每个边缘节点5122、5124的配置基于边缘供应功能5150来发生。用于在多个租户之间为应用和服务提供协调的操作的边缘节点5122、5124的功能基于编排功能5160来发生。
应该理解,5110中的一些设备是多租户设备,其中租户1可以在租户1‘片’内运行,而租户2可以在租户2片内运行。受信任的多租户设备可以进一步包含租户专用的加密密钥,使得密钥和片的组合可以被视为“信任根”(RoT)或租户专用的RoT。可以进一步使用安全性架构(诸如DICE(设备身份组合引擎)架构)组成动态计算的RoT,其中DICE硬件构建块用来构造用于对设备能力(诸如现场可编程门阵列(FPGA))进行分层的分层受信任的计算基础上下文。RoT还可用于受信任计算上下文以支持相应的租户操作等。
边缘计算节点可划分资源(存储器、CPU、GPU、中断控制器、I/O控制器、存储器控制器、总线控制器等),其中,相应的分区可能包含RoT能力,并且其中根据DICE模型的扇出和分层可进一步应用于边缘节点。由容器、FaaS(功能即服务)引擎、小型服务程序、服务器、或其他计算抽象组成的云计算节点可以根据DICE分层和扇出结构进行分区,以支持每个节点的RoT上下文。因此,跨越实体5110、5122和5140的相应的RoT可以协调分布式受信任计算基础(DTCB)的建立,使得可以建立端到端链接所有要素的租户专用的虚拟受信任安全信道。
附加地,边缘计算系统可被扩展以通过在多所有者、多租户环境中使用容器(提供代码和所需依赖关系的被容纳的、可部署的软件单元)来提供多个应用的编排。多租户编排器可用于执行密钥管理、信任锚管理以及与图51中的受信任的‘片’概念的供应和生命周期相关的其他安全性功能。编排器可以使用DICE分层和扇出构造来创建租户专用的RoT上下文。因此,由编排器提供的编排功能可以作为租户专用的编排提供者参与。
因此,边缘计算系统可被配置成用于满足来自多个虚拟边缘实例(以及,来自云或远程数据中心,未示出)的各种客户端端点的请求和响应。这些虚拟边缘实例的使用同时支持多个租户和多个应用(例如,AR/VR、企业应用、内容交付、游戏、计算迁移)。此外,虚拟边缘实例内可能存在多种类型的应用(例如,普通应用、等待时间敏感型应用、等待时间关键型应用、用户平面应用、联网应用等)。虚拟边缘实例还可以横跨处于不同地理位置的多个所有者的系统。
在进一步的示例中,边缘计算系统可以在边缘计算系统中部署容器。作为一个简化的例子,容器管理器适用于通过经由计算节点的执行来启动经容器化的舱、功能和功能即服务实例,或者通过经由计算节点的执行来单独执行经容器化的虚拟化网络功能。该布置可以适用于由系统布置中的多个租户来使用,其中经容器化的舱、功能和功能即服务实例在每个租户特定的虚拟机中启动(除了虚拟化网络功能的执行)。
在边缘云内,(例如,由第一所有者操作的)第一边缘节点5122和(例如,由第二所有者操作的)第二边缘节点5124可以操作容器编排器或对容器编排器作出响应,以协调为相应的租户提供的虚拟边缘实例中的各种应用的执行。例如,边缘节点5122、5124可基于边缘供应功能5150协调,而各种应用的操作利用编排功能5160来协调。
各种系统布置提供了在应用组成方面平等地对待VM、容器和功能(并且结果得到的应用是这三种组成部分的组合)的架构。每个组成部分可能涉及使用一个或多个加速器(例如,FPGA、ASIC)组件作为本地后端。以此方式,应用可以在多个边缘所有者之间被分割,由编排器进行协调。
此外,在一些实施例中,本公开通篇描述的存储中计算功能可以贯穿边缘计算系统5100利用,以便减少与数据存储、检索和计算相关联的等待时间。
应当领会,本文讨论的边缘计算系统和布置可适用于各种解决方案、服务和/或用例。作为示例,图52示出涉及对实现边缘云5010的边缘计算系统5200中的应用进行的移动访问的简化的车辆计算和通信用例。在该用例中,每个客户端计算节点5210可以被具体化为位于相对应车辆中的车载计算系统(例如,车载导航和/或信息娱乐系统),该车载计算系统在横越道路期间与边缘网关节点5220通信。例如,边缘网关节点5220可以位于可以沿着道路、在道路的交叉路口处、或在道路附近的其他位置放置的路边机柜。当每个车辆沿着道路行驶时,其客户端计算节点5210与特定边缘网关节点5220之间的连接可以传播,以便为客户端计算节点5210保持一致的连接和上下文。边缘网关节点5220中的每一个包括一些处理和存储能力,并且由此,客户端计算节点5210的一些数据处理和/或数据存储可以在边缘网关节点5220的一个或多个边缘网关节点上执行。
边缘网关节点5220中的每一个可以与一个或多个边缘资源节点5240通信,这些边缘资源节点被说明性地具体化为位于通信基站5242(例如,蜂窝网络的基站)处或在通信基站5242(例如,蜂窝网络的基站)中的计算服务器、设备或组件。如上文所讨论,每个边缘资源节点5240包括一些处理和存储能力,并且由此,客户端计算节点5210的一些数据处理和/或数据存储可以在边缘资源节点5240上执行。例如,不太紧急或不太重要的数据处理可以由边缘资源节点5240执行,而更高的紧急性或重要性的数据处理可以由边缘网关设备或客户端节点本身执行(例如,取决于每个组件的能力)。进一步地,各种有线或无线通信链路(例如,光纤有线回程、5G无线链路)可存在于边缘节点5220、(多个)边缘资源节点5240、核心数据中心5250和网络云5260之间。
(多个)边缘资源节点5240还与核心数据中心5250通信,核心数据中心5250可以包括位于中心位置(例如,蜂窝通信网络的中央局)的计算服务器、设备和/或其他组件。核心数据中心5250可以为由(多个)边缘资源节点5240和边缘网关节点5220形成的边缘云5010操作提供到全球网络云5260(例如,互联网)的网关。另外,在一些示例中,核心数据中心5250可以包括一定量的处理和存储能力,并且因此,可以在核心数据中心5250上执行用于客户端计算设备的一些数据处理和/或存储(例如,低紧急性或重要性或高复杂性的处理)。边缘网关节点5220或边缘资源节点5240可以提供状态型的应用5232和地理分布式数据存储5234(例如,数据库,数据储存等)的使用。
在进一步的示例中,图52可以利用各种类型的移动边缘节点(诸如在车辆(例如,汽车、卡车、电车、火车等)或其他移动单元中主管的边缘节点),因为边缘节点将沿着主管它的平台移动到其他地理位置。在车辆对车辆通信的情况下,单个车辆甚至可以充当其他车辆的网络边缘节点,(例如,以执行缓存、报告、数据聚合等)。因此,将理解,在各种边缘节点中提供的应用组件可以分布在各种设置中,包括在各个端点设备或边缘网关节点5220处的一些功能或操作、在边缘资源节点5240处的一些其他功能或操作、以及在核心数据中心5250或全球网络云5260中的其他功能或操作之间的协调。
此外,在一些实施例中,本公开通篇描述的存储中计算功能可以贯穿边缘计算系统5200利用,以便减少与数据存储、检索和计算相关联的等待时间。
在进一步的配置中,边缘计算系统可以通过使用相应的可执行应用和功能来实现FaaS或EaaS计算能力。在示例中,开发者编写表示一个或多个计算机功能的功能代码(例如,本文中的“计算机代码”),并且该功能代码被上传到由例如边缘节点或数据中心提供的FaaS平台。触发器(诸如例如,服务用例或边缘处理事件)发起利用FaaS平台执行功能代码。
在FaaS或EaaS部署的示例中,容器用于提供在其中执行功能代码的环境。容器可以是任何隔离执行的实体,诸如进程、Docker容器或Kubernetes容器、虚拟机等。在边缘计算系统内,各种数据中心、边缘、和端点(包括移动)设备被用于按需缩放的“旋转加速(spinup)”功能(例如,激活和/或分配功能动作)。功能代码在物理基础设施(例如,边缘计算节点)设备和底层虚拟化容器上得到执行。最后,容器响应于执行被完成而在基础设施上被“旋转减速”(例如,去激活和/或解除分配)。
FaaS和EaaS的其他方面可以使边缘功能以服务方式进行部署,包括对支持边缘计算即服务的相应功能的支持。FaaS和EaaS的附加特征可包括:使客户(例如,计算机代码开发者)仅在其代码被执行时进行支付的细粒度计费组件;用于存储数据以供一个或多个功能重新使用的通用数据存储;各个功能之间的编排和管理;功能执行管理、并行性和合并;容器和功能存储器空间的管理;功能可用的加速资源的协调;以及功能在容器之间的分布(包括已经部署或操作的“暖”容器,vs.需要部署或配置的“冷”容器)。
参考边缘计算讨论的一些技术和配置可以在(诸如由ETSI GS MEC-003“移动边缘计算(MEC);框架和参考架构”(例如,V2.0.3)中公开的标准和方法以及相关的MEC或网络化操作实现方式提供的)MEC环境中实现。
MEC旨在支持开发边缘计算的移动用例,以允许应用开发人员和内容提供商来访问网络的边缘处动态设置的计算能力和IT服务环境。MEC使用更靠近网络(例如,蜂窝网络)边缘的装备为应用开发人员和内容提供商提供云计算功能和IT服务环境。该环境的特点是超低等待时间和高带宽以及对应用可利用的无线电网络信息的实时访问。MEC技术允许运营商灵活、快速地向移动订户、企业和垂直细分市场部署创新应用和服务。
与其他边缘计算部署一样,MEC可以通过操作更接近用户(例如,移动设备、用户装备(UE)、站(STA)等)的应用、数据功能和发现等来减少网络拥塞。欧洲电信标准协会(ETSI)已颁布了一些涉及安全性(例如,用户安全性和应用完整性)、无线电使用等的MEC细节,诸如2014年9月1日发布的“移动边缘计算介绍性技术白皮书”中所述。ETSI作为ETSI MEC行业规范组(ISG)的一部分,正在不断开发和发布提供MEC场景的进一步详细信息和实施用例的一套规范和白皮书。
MEC架构为应用开发人员和内容提供商提供位于网络边缘的云计算功能以及IT服务环境。该环境的特点是超低等待时间和高带宽以及对应用利用的无线电网络信息的实时访问。因此MEC技术允许向移动订户、企业和垂直细分市场灵活并且快速地部署创新应用和服务。例如,在汽车环境中,诸如V2X(车辆对外界,基于IEEE 802.11p或基于3GPP LTE-V2X)之类的应用可以使用MEC技术来交换数据、向聚合点提供数据以及访问数据库中的数据以提供并从多个传感器(通过各种汽车、路边单元等)获得对本地情况的概览。
图53示出了示例多接入边缘计算(MEC)系统架构的框图5300。在示例中,MEC系统架构可以根据规范、标准或其他定义(例如,根据ETSI ISG MEC-003规范)来定义。在该图中,Mp参考点指MEC平台功能;Mm参考点指管理;而Mx指与外部实体的连接。本文所讨论的服务、应用、编排器和其他实体可以在图53中所示的MEC系统架构的任何数量的实体处实现,并且执行网络操作的通信可以在图53所示的MEC系统架构的任意数量的接口处实现。
例如,在客户端用户装备设备(例如,智能电话)处操作的设备应用5302可以访问多接入边缘编排器5310,因为编排器5310协调边缘计算主机的系统配置或特征以实现服务或应用。此外,特定的MEC主机5350可以操作一个或多个MEC应用5351、5352、5353或平台5360,其经由虚拟边缘设备提供MEC资源或服务。虚拟化基础设施管理器5340和MEC平台管理器5330提供对主机、平台和资源的使用的管理,并且还可以提供对证明服务或验证器(未示出)的受管理的访问。虚拟化基础设施管理器5340和MEC平台管理器5330还可以提供对其他MEC主机(例如,主机5370)或MEC平台(例如,平台5380)的受管理的访问,这也可能涉及如本文描述的证明功能的使用。
此外,在一些实施例中,MEC系统架构5300可以利用贯穿本公开描述的存储中计算功能,以便减少与数据存储、检索和计算相关联的等待时间。例如,MEC主机5350的虚拟化基础设施可以包括使用存储中计算功能实现的数据存储资源。例如,在一些实施例中,虚拟化基础设施可以包括数据存储设备,其利用相关联的处理器、控制器和/或加速器来对存储在存储设备上的数据执行某些计算任务。
在更一般的级别,边缘计算系统可以被描述为涵盖在边缘云5010中操作的任何数量的部署,其提供来自客户端和分布式计算设备的协调。为了说明的目的,图54提供了部署在边缘计算环境之中的分布式计算层的进一步抽象概览。
图54一般性地描绘了用于将边缘服务和应用提供给多利益相关者实体的边缘计算系统,这些多利益相关者实体如在一个或多个客户端计算节点5402、一个或多个边缘网关节点5412、一个或多个边缘聚合节点5422、一个或多个核心数据中心5432和全球网络云5442之间所分布的,如跨网络的各个层所分布的。可以在电信服务提供商(“telco”或“TSP”)、物联网服务提供商、云服务提供商(CSP)、企业实体或任何其他数量的实体处或以其名义提供边缘计算系统的实现。各种形式的有线或无线连接可以被配置成在节点5402、5412、5422、5432之间建立连接,包括此类节点之间的互连(例如,边缘网关节点5412之间的连接,以及边缘聚合节点5422之间的连接)。
边缘计算系统的每个节点或设备位于与层5410、5420、5430、5440、5450相对应的特定层。例如,客户端计算节点5402各自位于端点层5410,而边缘网关节点5412中的每一个位于边缘计算系统的边缘设备层5420(本地级别)。附加地,边缘聚合节点5422(和/或雾设备5424,如果与联网络配置5426一起布置或操作,或者在雾联网配置326中布置或操作的话)中的每一个位于网络接入层5430(中间级别)处。雾计算(或“雾化(fogging)”)通常指云计算扩展到企业的网络的边缘,通常在协调的分布式或多节点网络中。一些形式的雾计算在终端设备与代表云计算位置的云计算数据中心之间提供计算、存储和联网服务的部署。此类形式的雾计算提供与本文所讨论的边缘计算一致的操作;本文所讨论的许多边缘计算方面适用于雾网络、雾化、和雾配置。进一步地,本文所讨论的边缘计算系统的各方面可以被配置为雾,或者雾的各方面可以被集成到边缘计算架构中。
核心数据中心5432位于核心网络层5440(例如,区域或地理中心级别),而全球网络云5442位于云数据中心层5450(例如,国家或全球层)。“核心”的使用被提供为网络中较深的集中式网络位置的术语,该集中式网络位置可由多个边缘节点或组件访问;然而,“核心”不一定指定网络的“中心”或最深位置。因此,核心数据中心5432可位于边缘云5010内、边缘云5010处或边缘云5010附近。
虽然在图54中示出了说明性数量的客户端计算节点5402、边缘网关节点5412、边缘聚合节点5422、核心数据中心5432、全球网络云5442,但是应当领会,边缘计算系统可以在每一层处包括更多或更少的设备或系统。附加地,如图54所示,每一层5410、5420、5430、5440、5450的组件的数量通常在每个较低的层处增加(例如,当移动到靠近端点时)。由此,一个边缘网关节点5412可以服务多个客户端计算节点5402,而一个边缘聚合节点5422可以服务多个边缘网关节点5412。此外,在一些实施例中,本公开通篇描述的存储中计算功能可以贯穿边缘计算系统5400利用,以便减少与数据存储、检索和计算相关联的等待时间。
与本文提供的示例一致,每个客户端计算节点5402可以被具体化为任何类型的端点组件、设备、装置或能够作为数据的生产者或消费者进行通信的其他“物”。进一步地,如边缘计算系统5400中所使用的标签“节点”或“设备”不一定意指此类节点或设备以客户端或从属角色操作;相反,边缘计算系统5400中的节点或设备中的任一者指代包括分立的和/或连接的硬件或软件配置以促进和/或使用边缘云5010的各个实体、节点、或子系统。
由此,边缘云5010由分别由层5420、5430的边缘网关节点5412和边缘聚合节点5422操作并在层5420、5430的边缘网关节点5412和边缘聚合节点5422内被操作的网络组件和功能特征形成。边缘云5010可被具体化为提供边缘计算和/或存储资源的任何类型的网络,这些边缘计算和/或存储资源被定位成接近支持无线电接入网络(RAN)的端点设备(例如,移动计算设备、IoT设备、智能设备等),其在图54中被示出为客户端计算节点5402。换言之,边缘云5010可被预想为连接端点设备和传统网络接入点、同时还提供存储和/或计算能力的“边缘”,该“边缘”充当进入到包括移动运营商网络(例如,全球移动通信系统(GSM)网络、长期演进(LTE)网络、5G网络等)的服务提供商核心网络中的入口点。其他类型和形式的网络接入(例如,Wi-Fi、长程无线网络)也可替代此类3GPP运营商网络被利用或与此类3GPP运营商网络组合来利用。
在一些示例中,边缘云5010可以形成雾联网配置5426的一部分或以其他方式提供到雾联网配置5426(例如,雾设备5424的网络,未详细示出)中或跨雾联网配置5426的入口点,该雾联网配置可被具体化为系统级别横向且分布式架构,该架构分布资源和服务以执行特定的功能。例如,雾设备5424的经协调的和分布式网络可以在IoT系统布置的上下文中执行计算、存储、控制、或联网方面。在核心网络层5440与客户端端点(例如,客户端计算节点5402)之间的边缘云5010中可以存在其他联网的、聚合的和分布式的功能。下面各部分将在网络功能或服务虚拟化的上下文中讨论其中的一些,包括为多个利益相关者编排的虚拟边缘和虚拟服务的使用。
边缘网关节点5412和边缘聚合节点5422协作以将各种边缘服务和安全性提供给客户端计算节点5402。此外,因为每个客户端计算节点5402可以是静止的或移动的,因此当相对应的客户端计算节点5402围绕区域移动时,每个边缘网关节点5412可以与其他边缘网关设备协作以传播当前提供的边缘服务和安全性。为此,边缘网关节点5412和/或边缘聚合节点5422中的每一个可以支持多个租户和多个利益相关者配置,其中来自多个服务提供商和多个消费者的服务(或针对多个服务提供商和多个消费者而主管的服务)可以跨单个或多个计算设备被支持和被协调。
在边缘云5010的架构内可以利用各种安全性方法。在多利益相关者环境中,可以存在用于提供实施利益相关者的利益的策略的多个可加载的安全性模块(LSM)。实施点环境可以支持应用经加载的LSM策略组合的多个LSM(例如,在应用最受约束的有效策略的情况下,诸如如果A、B或C利益相关者中的任一者限制访问,则访问被限制)。在边缘云5010内,每个边缘实体可以提供实施边缘实体利益的LSM。云实体可以提供实施云实体利益的LSM。同样地,各种雾和IoT网络实体可以提供实施雾实体的利益的LSM。
在这些示例中,可以从事务的角度来考虑服务,这些服务是针对合同或组成部分的集合执行的,无论是在组成部分级别还是在人类可感知的级别考虑。因此,与服务提供商签订了服务协议的用户期望根据SLA的条款来交付服务。虽然没有详细讨论,但是本文所讨论的边缘计算技术的使用可能在协议的协商和协议的履行的度量期间中发挥作用(以标识系统需要哪些元素来进行服务,系统如何响应于服务条件和改变,等等)。
“服务”是通常应用于各种上下文的宽泛的术语,但一般来说,它指的是两个实体之间的关系,其中一个实体为另一个实体的利益提供和执行工作。然而,从一个实体交付给另一个实体的服务必须在某些指导下执行,以确保实体之间的信任,并按照在服务开始、服务期间和服务结束时提出的合同条款和条件来管理事务。
全局服务页表示例
对于特定服务或拥有不同服务的租户来说,其中跨多个边缘位置分布式发布数据的分布式架构中的挑战之一是如何管理这些服务集合具有的对特定数据集的权限。数据集的这些集合可存储在所谓的数据湖。在示例中,新的硬件方法使用页表概念来允许高效且低等待时间的数据分发(在存储器中)和对设备的访问。
现有解决方案基于用于分布式存储的软件栈。在此情况下,软件栈执行从服务到虚拟地址空间再到物理位置的转换访问,并且检查那些服务具有的、针对该特定数据集的许可。可缩放性是使用软件栈的主要限制。在针对租户和设备的服务的情况下出现类似问题。
本文中所描述的边缘计算系统(例如,边缘云5010、以及本公开通篇所描述和所描绘的边缘计算系统配置)通过实现边缘页表来扩展。边缘页表用于跟踪何种服务具有对何种数据的访问权、来自服务的虚拟地址如何被映射到物理地址、以及针对地址或数据的许可如何。在示例中,页表可使得服务能够跨多个边缘位置被实例化或迁移。边缘页表可改善端点设备上的安全性或租户隔离(包括通过使用基于租户、服务、或用户的数据加密来保护不同的页表区域)。此外,边缘页表可在“全局的”或系统范围/多系统的基础上被提供,从而改善租户特定的资源上下文切换的性能。
图55示出了用于实现边缘服务页表的系统5500。在一些示例中,边缘服务页表可与边缘云5010一起使用,以跨边缘云5010(例如,包括设备5530)的不同边缘节点和服务来管理存储器页5520。此类存储器页可具有不同的或设定的尺寸(例如,1GB)。例如,计算设备5800或边缘计算设备5850可存储数据、服务、或其他资源以供边缘云5010中的边缘设备使用,并且这些数据、服务、或其他资源可使用系统范围(“全局”)服务页表来管理。可将全局服务页表存储在计算设备5800上、或者在边缘计算设备5850上及在边缘云5010中的其他位置处(或者,在诸如边缘资源节点5240之类的计算资源处,诸如被实现在对于核心数据中心5250而言可访问的分布式数据库中的计算资源)。在示例中,可将全局服务页表存储在核心数据中心5250的设备或边缘云5010的设备(例如,云数据中心的服务器)处。
页表以平台级或CPU级被使用,以标识应用访问某些存储器页的权限。页表(或类似结构)可用于边缘情境中,以跟踪对于给定用户或租户而言、何种边缘资源或服务是可访问的。每个边缘位置可具有基于树的结构,该基于树的结构具有以下层级结构。树的根==>服务列表==>提供商列表==>针对具有执行服务的特权的租户或设备的列表。在进一步的示例中,提供商列表可以包括用于强化可用于该提供商的工作载荷的配置选项。(例如,VM、安全(例如,SGX)飞地、VM+飞地、容器、容器+飞地、VMM、VMM+飞地、OS、FPGA、FPGA+AFU等)。此外,包括英特尔软件防护扩展(SGX)或类似技术(例如,可适用于x86、ARM或其他架构的其他受信任执行或受信任计算技术)的工作载荷组合可以使用经强化的安全性环境来检查和实施预期组合。可利用受信任执行、CPU、或平台硬件的各种调整或修改来实现对地址空间的管理。
在示例中,用于对页进行跟踪的树可以是由硬件实体(例如,FPGA)管理的虚拟树。当租户想要执行来自给定的边缘服务提供商的服务A时,该租户可导航通过树层级结构,直到到达包含给定的租户资源、设备、存储、计算单元、或通信/网络单元所在的许可的叶。在示例中,存在作为租户资源的前端的服务,该服务可包括资源(例如,其可包括元数据的类型,诸如可用的SLA等)。在三个层中的任何层中具有转换后备缓冲器(TLB)查找未命中的情况下,(类似于用于PT的过程),可执行页走查来瞄准越来越集中的储存库(诸如在中央局或网络的核心的情况下)以检取针对该用户的该服务的特定许可。
在示例中,还可执行资源分配。使用页表作为示例,具有页表可包括三件事:(1)合法地址与非法地址之间(例如,有效性错误相对于分段错误)的区别,(2)访问控制(例如,R/W以及如PKEY(保护密钥)之类的其他位),以及(3)在需要(例如,处置故障)时实现或生成可用资源。所有的这三件事在资源管理方面都具有类似物,例如:(1)服务可以是被拒绝的某些资源以及被允许的对其他资源的潜在访问;(2)服务可能被给予其确实具有访问权的资源的不同部分,因此对此种多级走查的导航也可以是控制点,以及(3)服务可能仅在其实际需要资源时才被给予这些资源。
此种方法与集中式目录方法(诸如LDAP)的不同之处在于,可根据将根缓存置于核心数据中心并将多个副本置于基站或内部边缘节点以及其间的点上的方案,来分层地缓存租户访问特权。
租户SLA/SLO和编排上下文可用于基于预期位置、合作、或工作载荷来主动地对缓存进行预热。对缓存的频繁命中使得所缓存的内容对于后续请求保持‘温暖’。
端点设备、主机或服务可使用本地存储资源来参与缓存方案。例如,本地访问请求不需要离开本地平台(这可涉及网络等待时间)。在示例中,可将访问上下文缓存在被分配给特定租户的资源集合内。例如,如果平台支持存储器加密(例如,
Figure BDA0003209075040000881
MKTMETM),则加密用户密钥资源可用于包含由TLB缓存以其他方式缓存的密钥。其他租户特定的资源隔离方案可逐平台地或逐服务地应用。例如,持久性存储、功能加速、CPU分配、存储器分区、虚拟化、外围关联性、或IoT设备网络分区可具有租户特定的分区能力。
由于所缓存的上下文变得陈旧,因此访问策略的改变(诸如密钥的撤销、以及添加用于访问附加资源的许可)可能潜在地易受特权升级或对服务的拒绝的影响。系统5500使用发布-订阅或信息中心联网(ICN)配置,以基于缓存成为对租户特定上下文的话题的订户的策略,允许对资源的更新同时统一地应用于所有所缓存的副本。在示例中,温暖缓存在高QoS要求下订阅,以确保对于本地出现的资源访问请求的及时更新。
当新的数据或新的设备被添加到边缘数据湖时,可应用对边缘服务的特定访问限制。可将该信息多播至参与数据或设备的同一数据湖的一个或多个边缘。可将对现有数据或设备的改变多播至共享数据或设备的另一边缘或其他多个边缘。在示例中,可将特定的边缘位置(例如,在系统5500中的位置X处)分派给特定边缘设备内所主控的数据或功能。边缘TLB 5510可检查对应的服务是否具有访问设备、数据、或边缘设备内的位置的权限。
此外,在一些实施例中,本公开通篇描述的存储中计算功能可以贯穿系统5500利用,以便减少与数据存储、检索和计算相关联的等待时间。
图56示出边缘全局服务页表5610的实现方式。边缘全局服务页表5610示出虚拟地址和相对应的物理地址。边缘全局服务页表5610中的物理地址可包括边缘设备以及该特定边缘设备上的存储器中的物理地址。
边缘全局服务页表5610既包括本地存储器地址也包括远程存储器地址。当边缘全局服务页表5610指示存储器地址并非本地(例如,对操作服务或主控租户的边缘设备并非本地)时,边缘全局服务页表5610可向远程网络接口发送读取以获得远程设备处的远程存储器访问。响应于远程存储器访问被授权,可给予设备物理地址或写入访问的位置。在进一步的示例中,如果远程节点关闭,则系统可(基于页表中所包括的数据)包括该服务的复制以在请求被发送至该另一复制时实现弹性,否则对软件栈生成错误。
在示例中,在远程访问期间可考虑其他属性,诸如设备的安全性要求。在该示例中,发送回到原始平台可要求以安全方式发送。另一示例属性可要求向请求添加额外数据,诸如关于远程存储器中的认证信息(例如,当远程存储器数据安全时)。访问策略可具有指示要分配多少带宽或者需要多少等待时间的特性的元数据。当远程数据被返回至本地节点时,可能要求那些特性。
在进一步的示例中,用于实现边缘全局服务页表的方法可根据以下操作(例如,诸如被实现在节点或设备5800、5840或5850上或者由这些节点或设备实现的操作)来实现。方法包括用于以下步骤的第一操作:维护边缘全局服务页表,该边缘全局服务页表被配置成用于将虚拟地址映射到多个边缘节点上的物理地址。方法包括用于以下步骤的第二操作:接收对访问边缘全局服务页表中所维护的虚拟存储器地址的请求。在示例中,虚拟存储器地址与边缘服务相对应。方法包括用于以下步骤的第三操作:标识与虚拟存储器地址相关联的物理地址和边缘节点。在示例中,边缘节点是距发起请求的本地节点远程的边缘节点。方法结束于用于提供对与边缘节点上的物理地址对应的资源的访问的操作。在示例中,资源可包括边缘节点上的物理地址处所存储的数据、在边缘节点上的物理地址处操作的服务、或者边缘节点上物理地址的位置。
用于实现边缘服务页表的第一示例(示例F1)是一种设备,该设备包括:处理电路系统;以及存储器,该存储器具有嵌入在其上的指令,其中,这些指令在由处理电路系统执行时将该处理电路系统配置成执行用于管理边缘设备上的资源的操作,这些操作包括:维护边缘全局服务页表,该边缘全局服务页表被配置成用于将虚拟地址映射到多个边缘节点上的物理地址;接收对访问边缘全局服务页表中所维护的虚拟存储器地址处的资源的请求;标识与该虚拟存储器地址相关联的物理地址和相对应的边缘节点;提供对该物理地址处所存储的资源的访问。
在第二示例(示例F2)中,示例F1的主题包括:通过向请求设备或服务发送包括物理地址和相对应的边缘节点的信息来提供对资源的访问。
在第三示例(示例F3)中,示例F1–F2的主题包括:通过促进将资源从对应的边缘节点复制或转移至请求边缘节点来提供对资源的访问。
在第四示例(示例F4)中,示例F1–F3的主题包括:指令将处理电路系统配置成用于:在提供对资源的访问之前,执行包括通过检查边缘全局服务页表来确定请求设备是否具有访问资源的授权的操作。
在第五示例(示例F5)中,示例F1–F4的主题包括:其中,设备是多个边缘节点中的边缘节点,并且其中,边缘全局服务页表被本地地存储在该边缘节点上。
在第六示例(示例F6)中,示例F1–F5的主题包括:其中,提供对资源的访问包括向远程网络接口发送读取以获得对应边缘节点处的远程存储器访问。
在第七示例(示例F7)中,示例F1–F6的主题包括:其中,提供对资源的访问包括遵守资源、相对应的边缘节点或请求设备的安全性要求。
在各种设置中,可作为以下各项的结果来对示例F1-F7(以及全局页表的其他方面)进行观察或监视:所定义的应用编程接口或接口规范;对唤起或修改页表的协议或定义的使用;以及对跨边缘计算环境内的多个设备的页表的其他使用和实现方式。也可作为服务操作和服务功能(例如,用以在FaaS或EaaS设置中共享页和数据结构)的结果来观察或实现示例F1-F7和此种全局页配置的其他方面。另外,示例F1-F7的方法可在边缘计算系统中作为实现的指令(例如,在当指令执行时其执行方法的机器可读介质的情况下)或作为实现的硬件配置(例如,在包括用于执行或完成方法的配置的装置的情况下)来提供。由此,示例F1-F7的特征(以及全局页配置和使用的其他特征)可与本文中的其他示例中的任何示例组合,以如系统编排师或架构师所协调或设计的那样来对边缘集群或边缘云系统进行配置。
数据聚合策略示例
可使用边缘云基础设施来存储来自多个源的数据。可在边缘设备处收集数据并任选地组合数据。在边缘位置中共享数据资源可能引起租户或用户隐私问题。以下示例系统和方法解决边缘计算系统(例如,边缘云5010、以及本公开通篇所描述和所描绘的边缘计算系统配置)的数据供应链中的这些和其他问题,尤其是通过允许对数据进行聚合来解决与隐私性有关的那些问题。边缘设备处的数据聚合或处理对于节省低功率设备(例如,IoT)设备处的功率或者对于为不具有计算功率或不具有计算能力的传感器提供计算是有用的。
以下示例与在边缘设备处对许多种类型的数据进行聚合有关。诸如IoT设备、汽车、无人机、移动电话、传感器、以及产生数据的类似设备之类的设备通常用于特定目的。该数据可能超出其直接用途而有用,但是在设备上可能难以收集、维护和评估数据。
例如,移动设备(例如,自主汽车、无人机、电话等)可收集许多传感器数据但具有有限的计算功率来处理传感器数据。移动设备可针对特定任务(例如,为了将汽车保持在道路上)来收集数据。随后,诸如在任务已经被满足之后,数据可能变得对于移动设备无用的(例如,当汽车已经经过交叉路口时,其可删除与该交叉路口有关的传感器数据)。边缘处理节点(例如,基站、小型蜂窝小区等)具有更多的计算功率,并且可接收来自多个设备(包括这些移动设备)的数据。
边缘服务可对来自多个设备的传感器数据进行组合。例如,边缘设备可接收来自具有类似类型(例如,汽车)的多个设备的数据并对该数据进行聚合。在另一示例中,不同的设备可提供在边缘设备处被聚合的数据。例如,边缘设备可通过对来自多个相机(例如,在不同的汽车或无人机中)的视频拍摄进行组合来使用经聚合的数据创建区域的3D模型。数据的聚合可避免利用单独的设备数据情况下的问题(例如,当一辆汽车观察到车轮打滑时,其可能是测量误差)。使用经聚合的数据,例如若干辆汽车可能在同一位置处观察到打滑,这指示道路在该位置处是湿滑的。
图57图示出根据一些示例的、包括用于在边缘设备处对数据进行聚合的架构的系统5700的示图。
系统5700包括用于对来自数据提供方设备5730的数据进行聚合的边缘架构的不同组件。系统5700包括平台5710,该平台5710具有负责将聚合功能存储并注册在例如数据管理器组件5720内的指令(例如,实现算法、逻辑等)。注册接口允许变换功能的注册。变换功能可包括对其应用该功能的设备5741或传感器的类型(例如,传感器类型可包括在汽车处测得的温度)。
系统5700可包括聚合功能自身5742。例如,给定来自边缘设备的数据集的列表,聚合功能5742可执行计算并生成要被存储或被发送至云数据提供方5750的单个值。
系统5700可包括聚合间隔5743。该间隔5743指示:对于该设备类型id,在执行计算之前聚合器具有多少单位时间可用于存储数据(例如,在一时间间隔上,诸如一秒、一分钟等等)。在另一示例中,代替于时间单位或除时间单位之外,聚合间隔可包括数据被接收的次数。
系统5700包括由设备5730用来向聚合器发送数据的接口。聚合逻辑可负责实现接口(例如,由设备用来向聚合器发送数据的接口、或者与云数据提供方的接口)。聚合功能可以是本地存储存储器实施点,其中本地存储存储器5750包含或提供用于使用聚合来保护/混淆隐私敏感内容的安全策略。(由此,即使用户并未请求聚合,则本地存储存储器5750也可以应用聚合来保护隐私性)。此外,在一些实施例中,本地存储存储器5750可以利用贯穿本公开描述的存储中计算功能,以便减少与数据存储、检索和计算相关联的等待时间。
可使用计算上下文(例如,诸如传感器类型、同一源或相当的源的历史趋势数据、数据源比较值、或者可指示信任感的其他值之类的上下文)来确定接收到的数据的信任。例如,相比于来自较不“靠近”的传感器的数据,由“靠近”于被感测的数据的传感器供应的数据可以是更可靠的或更可信。在该上下文中,“靠近”可以是物理属性,或者可以是连通性属性(例如,传感器是否被验证到产生正在由该传感器感测的数据的系统)。对解释数据的功能的“靠近度”也可以是可信度中的考虑因素。相比于从具有“远”所在地的某个地点到达的数据,所在地的相对“靠近度”暗示该数据是更可信的。在进一步的示例中,可将靠近度的概念扩展为使得距离取决于提供方的类型(例如,与第一组织相关联的提供方具有利用第一度量计算的距离,诸如1英里=1英里,而与第二组织相关联的提供方具有利用第二度量计算的距离,诸如1英里=2英里)。
边缘设备可评估数据所在地作为信任测试的部分。当数据被保持但被传输回到远程节点时,数据可被认为是较不受信任的。当本地计算得到聚合(例如,用于遥测)时,节点可将其视为具有高完整性值。在该示例中,对等节点可基于其子集的所在地测试和信任语义(例如,第一节点的可信度)来降低它的值。
在进一步的示例中,用于在边缘设备处对数据进行聚合的方法可包括以下操作(例如由边缘云5010中的系统和设备实现的操作,该系统和设备诸如被实现在节点或设备5800、5840或5850上或者由这些节点或设备实现)。
方法包括用于以下步骤的第一操作:在边缘节点处接收来自多个移动设备的数据。
方法包括用于以下步骤的第二操作:使用边缘节点的聚合逻辑对接收到的数据进行聚合。在示例中,数据可在间隔上被聚合,该间隔诸如特定量的数据(例如,某一数量的传输或分组)被接收之前或者来自特定数量的设备的数据被接收之前的时间间隔。
方法包括用于以下步骤的第三操作:基于经聚合的数据和边缘节点处的聚合功能来生成值。
方法包括用于以下步骤的第四操作:将该值发送至云设备。在示例中,该值可用于验证稍后接收到的数据。在另一示例中,该值可用于创建区域的详细地图。在又另一示例中,该值可用于验证移动设备的运作。在仍另一示例中,该值可用于生成使用数据、提供反馈、或可用于安全性设置中。
方法包括用于以下步骤的第五操作:确定接收到的数据的可信度水平。可信度可与值一起被输出。在示例中,对数据的聚合可包括将接收到的数据的可信度作为因素,例如值可基于可信度来确定。
用于实现和使用多边缘数据聚合策略的进一步的示例方法(示例H1)是一种使用处理电路系统(例如,节点或设备5800、5840或5850的处理电路系统)执行的方法,该方法包括:在边缘节点处接收来自多个移动设备的数据;使用边缘节点的聚合逻辑对接收到的数据进行聚合;基于经聚合的数据和边缘节点处的聚合功能生成值;以及将该值发送至云设备。
在第二示例(示例H2)中,示例H1的主题包括:通过在间隔上对接收到的数据进行聚合来对接收到的数据进行聚合。
在第三示例(示例H3)中,示例H2的主题包括其中间隔包括时间间隔、要被接收的指定量的数据、或要从其接收数据的指定数量的设备的配置。
在第四示例(示例H4)中,示例H1–H3的主题包括其中值用于验证稍后接收到的数据的配置。
在第五示例(示例H5)中,示例H1–H4的主题包括其中值用于创建区域的详细地图的配置。
在第六示例(示例H6)中,示例H1–H5的主题包括其中值用于验证移动设备的运作的配置。
在第七示例(示例H7)中,示例H1–H6的主题包括其中值用于生成使用数据、提供反馈、或用于安全性设置中的配置。
在第八示例(示例H8)中,示例H1–H7的主题包括:确定接收到的数据的可信度水平。
在第九示例(示例H9)中,示例H8的主题包括:通过输出可信度水平来输出值。
在第十示例(示例H10)中,示例H1–H9的主题包括:通过使用接收到的数据的可信度来对接收到的数据进行聚合。
在各种设置中,可作为以下各项的结果来对示例H1-H10(以及数据聚合策略的其他方面)进行观察或监视:所定义的应用编程接口或接口规范;对唤起、接收或控制资源操作的协议或定义的使用;以及对边缘计算环境内的策略、逻辑、和映射(包括如经由数据传输来通信的)的其他使用和实现方式。如示例H1-H10中所表达的数据聚合策略还可在服务(例如,该服务作为FaaS或EaaS的部分被实现或完成)内进行的操作之后实现,或作为服务内进行的操作的部分来实现。另外,示例H1-H10的方法可在边缘计算系统中作为实现的指令(例如,在当指令执行时其执行方法的机器可读介质的情况下)或作为实现的硬件配置(例如在包括用于执行或实现方法的配置的装置的情况下)来提供。由此,示例H1-H10的特征(以及数据聚合的其他特征)可与本文中的其他示例中的任何示例组合,以如系统编排师或架构师所协调或设计的那样来对边缘集群或边缘云系统进行配置。
示例计算设备
在进一步的示例中,参考当前的边缘计算系统和环境讨论的计算节点或设备中的任一者可以基于图58A和图58B所描绘的组件来实现。相应的边缘计算节点可以被具体化为能够与其他边缘组件、联网组件或端点组件进行通信的设备、装置、计算机或其他“物”的类型。例如,边缘计算设备可以被具体化为智能电话、移动计算设备、智能装置、车载计算系统(例如,导航系统)、或能够执行所描述的功能的其他设备或系统。
在图58A中描绘的简化示例中,边缘计算节点5800包括计算引擎(本文中也称为“计算电路系统”)5802、输入/输出(I/O)子系统5808、数据存储5810、通信电路子系统5812,以及任选地,一个或多个外围设备5814。在其他示例中,相应的计算设备可以包括其他或附加组件,诸如通常在计算机中发现的那些组件(例如,显示器、外围设备等)。另外,在一些示例中,说明性组件中的一个或多个可被结合到另一组件中,或以其他方式形成另一组件的部分。
计算节点5800可被具体化为能够执行各种计算功能的任何类型的引擎、设备、或设备集合。在一些示例中,计算节点5800可被具体化为单个设备,诸如集成电路、嵌入式系统、现场可编程门阵列(FPGA)、片上系统(SOC)或其他集成系统或设备。在说明性示例中,计算节点5800包括或被具体化为处理器5804和存储器5806。处理器5804可被具体化为能够执行本文中所描述的功能(例如,执行应用)的任何类型的处理器。例如,处理器5804可被具体化为(多个)多核处理器、微控制器、或其他处理器或处理/控制电路。在一些示例中,处理器5804可被具体化为、包括或耦合到FPGA、专用集成电路(ASIC)、可重新配置的硬件或硬件电路系统、或用于促进本文中所描述的功能的执行的其他专用硬件。
主存储器5806可被具体化为能够执行本文中所描述的功能的任何类型的易失性(例如,动态随机存取存储器(DRAM)等)或非易失性存储器或数据存储。易失性存储器可以是需要维持由该介质存储的数据状态的能力的存储介质。易失性存储器的非限制性示例可包括各种类型的随机存取存储器(RAM),诸如DRAM或静态随机存取存储器(SRAM)。可以在存储模块中使用的一个特定类型的DRAM是同步动态随机存取存储器(SDRAM)。
在一个示例中,存储器设备是块可寻址存储器设备,诸如基于NAND或NOR技术的那些存储器设备。存储器设备还可包括三维交叉点存储器设备(例如,
Figure BDA0003209075040000963
3D XPointTM存储器)或其他字节可寻址的就地写入非易失性存储器设备。存储器设备可指代管芯本身和/或指代封装的存储器产品。在一些示例中,3D交叉点存储器(例如,
Figure BDA0003209075040000962
3D XPointTM存储器)可包括无晶体管的可堆叠的交叉点架构,其中存储单元位于字线和位线的交点处,并且可单独寻址,并且其中位存储基于体电阻的变化。在一些示例中,主存储器5806的全部或一部分可以被集成到处理器5804中。主存储器5806可以存储在操作期间使用的各种软件和数据,诸如一个或多个应用、通过(多个)应用、库以及驱动程序操作的数据。
计算电路系统5802经由I/O子系统5808通信地耦合到计算节点5800的其他组件,该I/O子系统5808可被具体化为用于促进与计算电路系统5802(例如,与处理器5804和/或主存储器5806)以及计算电路系统5802的其他组件的输入/输出操作的电路系统和/或组件。例如,I/O子系统5808可被具体化为或以其他方式包括存储器控制器中枢、输入/输出控制中枢、集成传感器中枢、固件设备、通信链路(即,点对点链路、总线链路、线路、电缆、光导、印刷电路板迹线等)和/或用于促进输入/输出操作的其他组件和子系统。在一些示例中,I/O子系统5808可以形成片上系统(SoC)的部分,并可与计算电路系统5802的处理器5804、主存储器5806、和其他组件中的一个或多个一起被合并到计算电路系统5802中。
一个或多个说明性数据存储设备5810可被具体化为被配置成用于数据的短期或长期存储的任何类型的设备,诸如例如,存储器设备和电路、存储器卡、硬盘驱动器、固态驱动器或其他数据存储设备。各个数据存储设备5810可包括存储数据存储设备5810的数据以及固件代码的系统分区。各个数据存储设备5810还可以包括一个或多个操作系统分区,该操作系统分区根据例如计算节点5800的类型来存储操作系统的数据文件和可执行文件。此外,在一些实施例中,数据存储设备5810可以利用贯穿本公开描述的存储中计算功能,以便减少与数据存储、检索和计算相关联的等待时间。
通信电路系统5812可被具体化为能够实现通过网络在计算电路系统5802与其他计算设备(例如,边缘计算系统5400的边缘网关节点5412)之间的进行通信的任何通信电路、设备或其集合。通信电路系统5812可以被配置成使用任何一种或多种通信技术(例如,有线或无线通信)和相关联的协议(例如,蜂窝联网协议(诸如3GPP 4G或5G标准)、无线局域网协议(诸如IEEE 802.11/
Figure BDA0003209075040000974
)、无线广域网协议,以太网、
Figure BDA0003209075040000975
蓝牙低能量、IoT协议(诸如IEEE 802.15.4或
Figure BDA0003209075040000976
)、低功率广域网(LPWAN)或低功率广域网(LPWA)协议等)来实行此类通信。
说明性通信电路系统5812包括网络接口控制器(NIC)5820,其也被称为主机结构接口(HFI)。NIC 5820可被具体化为一个或多个插入式板、子卡、网络接口卡、控制器芯片、芯片组或可由计算节点5800用来与另一计算设备(例如,边缘网关节点5412)连接的其他设备。在一些示例中,NIC 5820可被具体化为包括一个或多个处理器的片上系统(SoC)的一部分,或NIC 5820可被包括在也包含一个或多个处理器的多芯片封装上。在一些示例中,NIC5820可包括均位于NIC 5820本地的本地处理器(未示出)和/或本地存储器(未示出)。在此类示例中,NIC 5820的本地处理器可能能够执行本文中描述的计算电路系统5802的功能中的一个或多个功能。附加地或替代地,在此类示例中,NIC 5820的本地存储器可以在板级、插座级、芯片级和/或其他层级上被集成到客户端计算节点的一个或多个组件中。
另外,在一些示例中,相应的计算节点5800可以包括一个或多个外围设备5814。取决于计算节点5800的特定类型,此类外围设备5814可包括通常在计算设备或服务器中发现的任何类型的外围设备,诸如音频输入设备、显示器、其他输入/输出设备、接口设备和/或其他外围设备。在进一步的示例中,计算节点5800可以由边缘计算系统中的相应边缘计算节点(例如,客户端计算节点5402、边缘网关节点5412、边缘聚合节点5422)或类似形式的装置、计算机、子系统、电路系统、或其他组件来具体化。
在更详细的示例中,图58B图示出可以存在于边缘计算节点5850中的组件的示例的框图,该组件用于实现本文所描述的技术(例如,操作、过程、方法和方法论)。该边缘计算节点5850在被实现为计算设备(例如,移动设备、基站、服务器、网关等)或计算设备(例如,移动设备、基站、服务器、网关等)的一部分时提供节点5800的相应组件的更靠近的视图。边缘计算节点5850可以包括本文中所引用的硬件或逻辑组件的任何组合,并且该边缘计算节点5850可以包括或耦合可用于边缘通信网络或此类网络的组合的任何设备。这些组件可被实现为IC、IC的部分、分立电子器件,或其他模块、指令集、可编程逻辑或算法、硬件、硬件加速器、软件、固件或其适用于边缘计算节点5850中的组合,或作为以其他方式被并入在更大的系统的机架内的组件。
边缘计算设备5850可包括处理器5852形式的处理电路系统,该处理电路系统可以是微处理器、多核处理器、多线程处理器、超低电压处理器、嵌入式处理器,或其他已知的处理元件。处理器5852可以是芯片上系统(SoC)的部分,在该SoC中,处理器5852和其他组件形成到单个集成电路或单个封装中,诸如,来自加利福尼亚州圣克拉拉市的英特尔公司的爱迪生TM(EdisonTM)或伽利略TM(GalileoTM)SoC板。作为示例,处理器5852可包括基于
Figure BDA0003209075040000981
架构酷睿TM(CoreTM)的处理器(诸如,QuarkTM、AtomTM、i3、i5、i7或MCU级处理器)、或可从
Figure BDA0003209075040000982
获得的另一此类处理器。然而,可使用任何数量的其他处理器,诸如,可从加利福尼亚州桑尼威尔市的超微半导体公司
Figure BDA0003209075040000983
获得的处理器、来自加利福尼亚州桑尼威尔市的MIPS技术公司的基于
Figure BDA0003209075040000984
的设计、许可自ARM控股有限公司的基于
Figure BDA0003209075040000985
的设计,或从上述各公司的客户、被许可方或采纳方获得的处理器。处理器可包括诸如以下单元:来自
Figure BDA0003209075040000986
Figure BDA0003209075040000987
公司的A5-A12处理器、来自
Figure BDA0003209075040000988
技术公司的骁龙TM(SnapdragonTM)处理器或来自德州仪器公司的OMAPTM处理器。
处理器5852可通过互连5856(例如,总线)来与系统存储器5854通信。可使用任何数量的存储器设备来提供给定量的系统存储器。作为示例,存储器可以是根据联合电子器件工程委员会(JEDEC)设计的随机存取存储器(RAM),诸如DDR或移动DDR标准(例如,LPDDR、LPDDR2、LPDDR3或LPDDR4)。在特定示例中,存储器组件可符合JEDEC颁布的标准,诸如DDRSDRAM的JESD79F、DDR2 SDRAM的JESD79-2F、DDR3 SDRAM的JESD79-3F、DDR4 SDRAM的JESD79-4A、低功率DDR(LPDDR)的JESD209、LPDDR2的JESD209-2、LPDDR3的JESD209-3和LPDDR4的JESD209-4。此类标准(和类似的标准)可被称为基于DDR的标准,而存储设备的实现此类标准的通信接口可被称为基于DDR的接口。在各种实现中,单独的存储器设备可以是任何数量的不同封装类型,诸如单管芯封装(SDP)、双管芯封装(DDP)或四管芯封装(Q17P)。在一些示例中,这些设备可以直接焊接到主板上,以提供较低轮廓的解决方案,而在其他示例中,设备被配置为一个或多个存储器模块,这些存储器模块进而通过给定的连接器耦合至主板。可使用任何数量的其他存储器实现方式,诸如其他类型的存储器模块,例如,不同种类的双列直插存储器模块(DIMM),包括但不限于microDIMM(微DIMM)或MiniDIMM(迷你DIMM)。
为了提供对信息(诸如数据、应用、操作系统等)的持久性存储,存储5858还可经由互连5856而耦合至处理器5852。在示例中,存储5858可经由固态盘驱动器(SSDD)来实现。可用于存储5858的其他设备包括闪存卡(诸如SD卡、microSD卡、XD图片卡,等等)和USB闪存驱动器。在示例中,存储器设备可以是或者可以包括使用硫属化物玻璃的存储器设备、多阈值级别NAND闪存、NOR闪存、单级或多级相变存储器(PCM)、电阻式存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、反铁电存储器、包含忆阻器技术的磁阻随机存取存储器(MRAM)、包括金属氧化物基底、氧空位基底和导电桥随机存取存储器(CB-RAM)的电阻式存储器、或自旋转移力矩(STT)-MRAM、基于自旋电子磁结存储器的设备、基于磁隧穿结(MTJ)的设备、基于DW(畴壁)和SOT(自旋轨道转移)的设备、基于晶闸管的存储器设备、或者任何上述或其他存储器的组合。
在低功率实现方式中,存储5858可以是与处理器5852相关联的管芯上存储器或寄存器。然而,在一些示例中,存储5858可使用微硬盘驱动器(HDD)来实现。此外,附加于或替代所描述的技术,可将任何数量的新技术用于存储5858,诸如阻变存储器、相变存储器、全息存储器或化学存储器,等等。
此外,在一些实施例中,存储5858可以利用贯穿本公开描述的存储中计算功能,以便减少与数据存储、检索和计算相关联的等待时间。例如,存储5858可以利用相关联的控制器、处理器(例如,5852)和/或加速器(例如,加速电路系统5864)来对存储在存储5858上的数据执行某些计算任务。
组件可通过互连5856进行通信。互连5856可包括任何数量的技术,包括工业标准架构(ISA)、扩展ISA(EISA)、外围组件互连(PCI)、外围组件互连扩展(PCIx)、PCI快速(PCIe)或任何数量的其他技术。互连5856可以是例如在基于SoC的系统中使用的专有总线。其他总线系统可被包括,诸如I2C接口、SPI接口、点对点接口、功率总线,等等。
互连5856可将处理器5852耦合至收发机5866,以便例如与连接的边缘设备5862通信。收发机5866可使用任何数量的频率和协议,诸如IEEE802.15.4标准下的2.4千兆赫兹(GHz)传输,使用如由
Figure BDA0003209075040001001
特别兴趣小组定义的
Figure BDA0003209075040001002
低能量(BLE)标准、或
Figure BDA0003209075040001003
标准,等等。为特定的无线通信协议配置的任何数量的无线电可用于到连接的边缘设备5862的连接。例如,无限局域网(WLAN)单元可用于根据电气和电子工程师协会(IEEE)802.11标准实现
Figure BDA0003209075040001004
通信。另外,例如根据蜂窝或其他无线广域协议的无线广域通信可经由无线广域网(WWAN)单元发生。
无线网络收发机5866(或多个收发机)可以使用用于不同范围的通信的多种标准或无线电来进行通信。例如,边缘计算节点5850可使用基于BLE或另一低功率无线电的本地收发机与接近的(例如,在约10米内的)设备通信以节省功率。更远的(例如,在约50米内的)连接的边缘设备5862可通过
Figure BDA0003209075040001005
或其他中间功率的无线电而联络到。这两种通信技术能以不同的功率水平通过单个无线电发生,或者可通过分开的收发机而发生,分开的收发机例如使用BLE的本地收发机和分开的使用
Figure BDA0003209075040001013
的网格收发机。
无线网络收发机5866(例如,无线电收发机)可被包括,以经由局域网协议或广域网协议来与边缘云5890中的设备或服务通信。无线网络收发机5866可以是遵循IEEE802.15.4或IEEE 802.15.4g标准等的LPWA收发机。边缘计算节点5850可使用由Semtech和LoRa联盟开发的LoRaWANTM(长距离广域网)在广域上通信。本文中所描述的技术不限于这些技术,而是可与实现长距离、低带宽通信(诸如Sigfox和其他技术)的任何数量的其他云收发机一起使用。进一步地,可使用其他通信技术,诸如在IEEE 802.15.4e规范中描述的时分信道跳。
除了针对如本文中所描述的无线网络收发机5866而提及的系统之外,还可使用任何数量的其他无线电通信和协议。例如,收发机5866可包括使用扩展频谱(SPA/SAS)通信以实现高速通信的蜂窝收发机。进一步地,可使用任何数量的其他协议,诸如用于中速通信和供应网络通信的
Figure BDA0003209075040001012
网络。收发机5866可包括与任何数量的3GPP(第三代合作伙伴计划)规范(诸如在本公开的末尾处进一步详细讨论的长期演进(LTE)和第五代(5G)通信系统)兼容的无线电。网络接口控制器(NIC)5868可被包括以提供到边缘云5890的节点或到其他设备(诸如(例如,在网格中操作的)连接的边缘设备5862)的有线通信。有线通信可提供以太网连接,或可基于其他类型的网络,诸如控制器区域网(CAN)、本地互连网(LIN)、设备网络(DeviceNet)、控制网络(ControlNet)、数据高速路+、现场总线(PROFIBUS)或工业以太网(PROFINET),等等。附加的NIC 5868可被包括以实现到第二网络的连接,例如,第一NIC5868通过以太网提供到云的通信,并且第二NIC 5868通过另一类型的网络提供到其他设备的通信。
鉴于从设备到另一组件或网络的适用通信类型的多样性,设备使用的适用通信电路系统可以包括组件5864、5866、5868或5870中的任何一个或多个或由组件5864、5866、5868或5870中的任何一个或多个来具体化。因此,在各个示例中,用于通信(例如,接收、传送等)的适用装置可由此类通信电路系统来具体化。
边缘计算节点5850可以包括或被耦合到加速电路系统5864,该加速电路系统5864可以由一个或多个AI加速器、神经计算棒、神经形态硬件、FPGA、GPU的布置、一个或多个SoC、一个或多个CPU、一个或多个数字信号处理器、专用ASIC、或被设计用于完成一个或多个专有任务的其他形式的专用处理器或电路系统来具体化。这些任务可以包括AI处理(包括机器学习、训练、推断、和分类操作)、视觉数据处理、网络数据处理、对象检测、规则分析等。
互连5856可将处理器5852耦合至用于连接附加的设备或子系统的传感器中枢或外部接口5870。设备可包括传感器5872,诸如加速度计、水平传感器、流量传感器、光学光传感器、相机传感器、温度传感器、全球定位系统(例如,GPS)传感器、压力传感器、气压传感器,等等。中枢或接口5870可进一步用于将边缘计算节点5850连接至致动器5874,诸如功率开关、阀致动器、可听声音发生器、视觉警告设备等。
在一些任选的示例中,各种输入/输出(I/O)设备可存在于边缘计算节点5850内,或可连接至边缘计算节点5850。例如,显示器或其他输出设备5884可被包括以显示信息,诸如传感器读数或致动器位置。输入设备5886(诸如触摸屏或键区)可被包括以接受输入。输出设备5884可包括任何数量的音频或视觉显示形式,包括:简单视觉输出,诸如二进制状态指示器(例如,LED);多字符视觉输出;或更复杂的输出,诸如显示屏(例如,LCD屏),其具有从边缘计算节点5850的操作生成或产生的字符、图形、多媒体对象等的输出。在本系统的上下文中,显示器或控制台硬件可:用于提供边缘计算系统的输出和接收边缘计算系统的输入;用于管理边缘计算系统的组件或服务;标识边缘计算组件或服务的状态;或用于进行任何其他数量的管理或管理功能或服务用例。
电池5876可为边缘计算节点5850供电,但是在其中边缘计算节点5850被安装在固定位置的示例中,该边缘计算节点5850可具有耦合至电网的电源,或者电池可以用作备用或用于临时功能。电池5876可以是锂离子电池、金属-空气电池(诸如锌-空气电池、铝-空气电池、锂-空气电池),等等。
电池监测器/充电器5878可被包括在边缘计算节点5850中以跟踪电池5876(如果包括的话)的充电状态(SoCh)。电池监测器/充电器5878可用于监测电池5876的其他参数以提供失效预测,诸如电池5876的健康状态(SoH)和功能状态(SoF)。电池监测器/充电器5878可包括电池监测集成电路,诸如来自线性技术公司(Linear Technologies)的LTC4020或LTC2990、来自亚利桑那州的凤凰城的安森美半导体公司(ON Semiconductor)的ADT7488A、或来自德克萨斯州达拉斯的德州仪器公司的UCD90xxx族的IC。电池监测器/充电器5878可通过互连5856将关于电池5876的信息传递至处理器5852。电池监测器/充电器5878也可包括使处理器5852能够直接监测电池5876的电压或来自电池5876的电流的模数(ADC)转换器。电池参数可被用于确定边缘计算节点5850可执行的动作,诸如传输频率、网格网络操作、感测频率,等等。
功率块5880或耦合至电网的其他电源可与电池监测器/充电器5878耦合以对电池5876充电。在一些示例中,功率块5880可用无线功率接收机代替,以便例如通过边缘计算节点5850中的环形天线来无线地获得功率。无线电池充电电路(诸如来自加利福尼亚州的苗比达市的线性技术公司的LTC4020芯片,等等)可被包括在电池监测器/充电器5878中。可以基于电池5876的尺寸并且因此基于所要求的电流来选择特定的充电电路。可使用由无线充电联盟(Airfuel Alliance)颁布的Airfuel标准、由无线电力协会(Wireless PowerConsortium)颁布的Qi无线充电标准、或由无线电力联盟(Alliance for Wireless Power)颁布的Rezence充电标准等等来执行充电。
存储5858可包括用于实现本文中公开的技术的软件、固件或硬件命令形式的指令5882。虽然此类指令5882被示出为被包括在存储器5854和存储5858中的代码块,但是可以理解,可用例如被建立到专用集成电路(ASIC)中的硬连线电路替换代码块中的任一个。
在示例中,经由存储器5854、存储5858或处理器5852提供的指令5882可被具体化为非暂态机器可读介质5860,该非暂态机器可读介质5860包括用于指导处理器5852执行边缘计算节点5850中的电子操作的代码。处理器5852可通过互连5856访问非暂态机器可读介质5860。例如,非暂态机器可读介质5860可由针对存储5858所描述的设备来具体化,或者可包括特定的存储单元,诸如光盘、闪存驱动器或任何数量的其他硬件设备。非暂态机器可读介质5860可包括用于指示处理器5852执行例如像参照上文中描绘的操作和功能的(多个)流程图和(多个)框图而描述的特定的动作序列或动作流的指令。如本文所适用,术语“机器可读介质”和“计算机可读介质”是可互换的。
在进一步的示例中,机器可读介质也包括任何有形介质,该有形介质能够存储、编码或携带供由机器执行并且使机器执行本公开方法中的任何一种或多种方法的指令,或者该有形介质能够储存、编码或携带由此类指令利用或与此类指令相关联的数据结构。“机器可读介质”因此可包括但不限于固态存储器、光学介质和磁介质。机器可读介质的特定示例包括非易失性存储器,作为示例,包括但不限于:半导体存储器设备(例如,电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)和闪存设备);诸如内部硬盘及可移除盘之类的磁盘;磁光盘;以及CD-ROM和DVD-ROM盘。可使用传输介质,经由网络接口设备,利用多种传输协议中的任何一种协议(例如,HTTP),进一步通过通信网络来传送或接收由机器可读介质具体化的指令。
机器可读介质可以由能够以非暂态格式主管数据的存储设备或其他装置提供。在示例中,存储在机器可读介质上或以其他方式提供在机器可读介质上的信息可以表示指令,诸如指令本身或者可以从中导出指令的格式。可以从中导出指令的该格式可以包括源代码、经编码的指令(例如,以压缩或加密的形式)、经封装的指令(例如,分成多个封装)等。表示机器可读介质中的指令的信息可以通过处理电路系统处理成指令来实现本文所讨论的任何操作。例如,从(例如,由处理电路进行的处理的)信息中导出指令可以包括:(例如,从源代码、目标代码等)编译、解释、加载、组织(例如,动态地或静态地进行链接)、编码、解码、加密、解密、打包、拆包,或者以其他方式将信息操纵到指令中。
在示例中,指令的推导可以包括(例如,通过处理电路系统)对信息进行汇编、编译、或解释,以从机器可读介质提供的一些中间或预处理的格式创建指令。当信息以多个部分提供时,可以对其进行组合、拆包和修改以创建指令。例如,信息可以处于一个或若干远程服务器上的多个经压缩的源代码封装(或目标代码、或二进制可执行代码等)中。源代码封装可以在通过网络传输时被加密,并且可以在本地机器处被解密、被解压缩、(如果必要的话)被汇编(例如,被链接),并且被编译或被解释(例如被编译或被解释成库、独立的可执行文件等),并且由本地机器执行。
图58C图示出机架规模设计(RSD)组件,该组件可被包括作为边缘平台架构中的服务器或其他分立的计算节点的一部分。该布置在被实现为(例如,服务器机架、服务器刀片等中的)服务器时提供了节点5800或设备5850的可配置处理组件的近景。该可配置的架构通过分解现场可编程门阵列(FPGA)、非易失性存储器快速(NVMe)和输入输出(I/O)池化资源而不同于一些其他架构。FPGA和NVMe资源提供可用于任何类型的边缘服务(诸如视频或语音分析)的要素。I/O池化可用于提供灵活的网络功能。该架构根据特定虚拟网络功能(VNF)的预期数据速率或网络载荷来扩展网络接口。该架构还能够根据在给定节点处发生的网络处理类型,灵活地将不同的网卡映射到计算节点。
图示出的RSD架构包括交付点(POD)管理器5842。POD管理器5842负责管理POD(例如,一个或多个机架)内的资源--包括计算和分解的资源。POD管理器5842将接口暴露给编排器,以便创建、管理、或破坏组成的节点。管理组成的节点包括放大或缩小连接到特定计算撬板5840的经池化的资源5848的量的功能。POD管理器5842通常在节点控制器上运行。POD管理器5842负责发现POD中的资源、配置和管理资源、以及组成逻辑服务器。在示例中,POD管理器5842是可选的分开的组件,并且不会被要求在机架中。然而,在示例中,为了“符合RSD”,机架可以由经认证的POD管理器管理。
以下是POD管理器5842的一些示例属性。例如,机架可包括用于执行边缘服务和其他有关系统软件栈(例如诸如,编排或其他系统服务)的计算橇板5840的集合。一种类型的计算橇板5840可以是经池化的资源橇板。该计算橇板5840可管理分解资源集合。此处,计算橇板5840可包括经池化的系统管理引擎软件(PSME)5841。PSME 5841提供管理接口,以在抽屉级别下管理模块或刀片。在示例中,机架包含一个或多个逻辑PSME。例如,每个抽屉可具有PSME,或者服务器抽屉可共享PSME,或者PSME可在架顶(TOR)5844交换机上或在单独的主机上运行。在示例中,PSME 5841支持RSD API。
在示例中,计算橇板5840可包括用于运行RSD软件栈的处理器(CLX),该RSD软件栈实现充当目标系统并管理分解资源集合的NVM-oF或FPGA-oF。在示例中,处理器使用PCIex16分叉端口连接至PCIe交换机5846,从而提供对目标资源(RSD 5848中的FPGA或NVME)的访问。
在计算橇板5840中可使用各种RSD边缘组合节点风格来运行边缘服务。在那些节点上运行的服务可使用客户端软件库或驱动程序来提供对RSD5848中分解FPGA和NVME的透明访问。在进一步的示例中,机架包括一个或多个PCIE交换机,该一个或多个PCIE交换机将计算橇板5840连接至分解资源(例如,RSD 5848)的集合。
图58A、图58B和图58C的框图旨在描绘边缘计算节点的可变设备、子系统、或布置的组件的高级视图。然而,将理解,可以省略所示出组件中的一些组件,可存在附加组件,并且在其他实现方式中可发生对所示出的组件的不同布置。此外,这些布置可用于各种用例和环境中,这些用例和环境包括下文所讨论的那些用例和环境(例如,用于智慧城市或智慧工厂的工业计算中的移动UE,以及许多其他示例)。
图58A、图58B和图58C的相应计算平台可通过使用在单个计算平台上运行的租户容器来支持多个边缘实例(例如,边缘集群)。同样,多个边缘节点可作为在同一计算平台内的多个租户上运行的子节点而存在。相应地,基于可用的资源分区,可将单个系统或计算平台分区或划分为支持多个租户和边缘节点实例,该多个租户和边缘节点实例中的每一者可支持多个服务和功能——即使在潜在地在多个计算平台实例中由多个所有者操作或控制时也是如此。这些各种类型的分区可通过使用LSM或使用隔离/安全性策略的其他实现方式来支持复杂的多租户、以及多利益相关方的许多组合。由此在以下章节中记述对使用LSM、以及增强或实现此类安全性特征的安全性特征的引用。同样,在这些各种类型的多实体分区上运行的服务和功能可以是载荷平衡的、经迁移的、以及经编排的,以实现必要的服务目标和操作。
图中的流程图和框图示出根据本公开的各方面的系统、方法和计算机程序产品的可能的实现的架构、功能和操作。就这一点而言,流程图或框图中的每个框可表示包括用于实现指定的(多个)逻辑功能的一条或多条可执行指令的模块、代码段或代码的部分。应当注意,在一些替代实现方式中,框中所标注的功能可不按图中所标注的次序发生。例如,取决于所涉及的功能,实际上可基本上同时执行连续地示出的两个框,或者有时可按相反的顺序或替代的顺序来执行这些框。也将注意,可以由执行指定的功能或动作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合。
前述公开概述了若干实施例的特征,使得本领域技术人员可以更好地理解本公开的各方面。本领域技术人员应当理解,他们可以容易地使用本公开作为用于设计或修改其他过程和结构以执行相同的目的和/或实现本文中介绍的多个实施例的相同优点的基础。本领域技术人员还应当认识到,此类等效构造不背离本公开的精神和范围,并且他们可以作出各种更改、替换和改变而不背离本公开的精神和范围。
还应注意,在某些实施例中,可省略或合并组件中的一些组件。在一般意义上,附图中所描绘的布置应当理解为逻辑划分,而物理架构可以包括这些元件的各种排列、组合和/或混合。重要的是应注意到,可以使用无数可能的设计配置来实现本文中概述的操作目标。相应地,相关联的基础设施具有无数替代布置、设计选择、设备可能性、硬件配置、软件实现和装备选项。
众多其他改变、替换、变体、更改和修改对本领域技术人员而言可以是确定的,并且本公开旨在将所有此类改变、替换、变体、更改和修改涵盖为落在所附权利要求书的范围内。
示例实现方式
以下示例涉及贯穿本公开所述的实施例。
一个或多个实施例可以包括一种系统(例如,图1的系统100、图4的系统400),其包括:主机处理器(例如,处理器106、处理器402);以及包括一个或多个存储设备(例如,块存储设备104、块存储设备452)的存储系统,其中该一个或多个存储设备每个包括:用于存储数据的非易失性存储器(例如,NVM 120、NVM 456);以及用于基于来自主机处理器的计算迁移命令来对数据执行计算任务的计算迁移控制器(例如,计算迁移控制器122、计算迁移控制器454)。
在系统(例如,图1的系统100、图4的系统400、图11的系统1100)的一个示例实施例中:一个或多个存储设备包括多个存储设备(例如,块存储设备104和块存储设备452,系统1100的存储节点/目标);以及主机处理器(例如,处理器106、处理器402、系统1100的主机处理器)用于:接收对存储在存储系统上的数据对象执行计算任务的请求,其中该数据对象被复制到多个存储设备中的每个存储设备上;标识要在存储系统上并行处理的数据对象的多个区块,其中计算任务将由多个存储设备对多个区块执行;以及向多个存储设备发送多个计算迁移命令,其中每个计算迁移命令用于指示相对应的存储设备对多个区块中的相对应区块执行计算任务。
在系统(例如,图1的系统100、图4的系统400、图11的系统1100)的一个示例实施例中:一个或多个存储设备包括多个存储设备(例如,块存储设备104和块存储设备452,系统1100的存储节点/目标);以及主机处理器(例如,处理器106和处理器402、系统1100的主机处理器)用于:接收对存储在存储系统上的数据对象执行计算任务的请求,其中该数据对象在多个存储设备上条带化;标识在多个存储设备上的数据对象的多个分片,其中每个分片包括存储在多个存储设备中的一个存储设备上的数据对象的连续部分;以及向多个存储设备发送多个计算迁移命令,其中每个计算迁移命令用于指示相对应的存储设备对相对应存储设备(例如,系统1100的存储节点/目标)上存储的相对应分片执行计算任务。
在系统(例如,图1的系统100、图4的系统400、图26的系统2600、图28的系统2800)的一个示例实施例中:一个或多个存储设备包括多个存储设备(例如,块存储设备104和块存储设备452,系统2600、系统2800的存储节点/目标);以及主机处理器(例如,处理器106和处理器402、系统2600、系统2800的主机处理器)用于:接收对存储在存储系统上的数据对象执行计算任务的请求,其中数据对象跨多个存储设备擦除编码;确定存储系统在降级模式下操作,其中降级模式指示多个存储设备包括可用存储设备集合和不可用存储设备集合;标识可用存储设备集合上的数据对象的可用区块集合;标识不可用存储设备集合上的数据对象的不可用区块集合;将该可用存储设备集合划分为正常模式存储设备集合和降级模式存储设备集合;将第一计算迁移命令集合发送到该正常模式存储设备集合,其中该第一计算迁移命令集合用于指示该正常模式存储设备集合对该可用区块集合执行计算任务;以及将第二计算迁移命令集合发送到该降级模式存储设备集合,其中该第二计算迁移命令集合用于指示该降级模式存储设备集合重构该不可用区块集合并且对相对应的重构区块集合执行计算任务。
在系统(例如,图1的系统100、图4的系统400)的一个示例实施例中:一个或多个存储设备(例如,块存储设备104、块存储设备452)包括多个存储设备(例如,系统1100的存储节点/目标);以及主机处理器(例如,处理器106和处理器402、系统1100的主机处理器)用于:接收将图像对象集合写入存储系统的请求;将该图像对象集合划分成多个区块,其中多个区块中的每个区块包括来自该图像对象集合的一个或多个图像对象,并且其中多个区块被填充使得来自该图像对象集合的每个图像对象在多个区块的相对应区块的边界内对齐;将多个区块写入存储系统,其中每个区块被写入到多个存储设备中的相对应存储设备;接收对该图像对象集合执行视觉计算任务的请求;以及向多个存储设备发送多个计算迁移命令,其中每个计算迁移命令用于指示相对应的存储设备对来自该图像对象集合的相对应的图像对象子集执行视觉计算任务,其中相对应的图像对象子集存储在相对应的存储设备上。
在系统(例如,图1的系统100、图4的系统400、图30的系统3000)的一个示例实施例中:主机处理器(例如,处理器106、处理器402)用于:接收对存储在存储系统(例如,系统3000的块存储目标)上的数据对象执行多个链式计算任务的请求,其中该数据对象存储在一个或多个存储设备的相对应存储设备(例如,系统3000的块存储目标)上;将链式计算迁移命令发送到相对应的存储设备,其中链式计算迁移命令用于指示相对应的存储设备对数据对象执行多个链式计算任务;以及从相对应的存储设备接收链式计算迁移命令的结果。
在系统(例如,图1的系统100、图4的系统400、图36的系统3600)的一个示例实施例中:主机处理器(例如,处理器106、处理器402、系统3600的主机机器)用于:接收对存储在存储系统(例如,系统3600的存储机器)中的数据对象执行数据老化计算任务的请求,其中数据对象存储在一个或多个存储设备的相对应存储设备(例如,系统3600的块存储目标);将数据老化计算迁移命令发送到相对应的存储设备,其中数据老化计算迁移命令用于指示相对应的存储设备对数据对象执行数据老化计算任务;以及从相对应的存储设备接收数据老化计算迁移命令的结果。
在系统(例如,图1的系统100、图4的系统400)的一个示例实施例中,主机处理器(例如,处理器106、处理器402)用于:接收对存储在存储系统(例如,块存储设备104、块存储设备452)上的数据对象执行循环冗余校验(CRC)验证的请求,其中该数据对象存储在一个或多个存储设备(例如,块存储设备104、块存储设备452)的相对应存储设备上;将CRC计算迁移命令发送到相对应的存储设备,其中CRC计算迁移命令用于指示相对应的存储设备对数据对象执行CRC验证;以及从相对应的存储设备接收CRC计算迁移命令的结果。
在系统(例如,图1的系统100、图4的系统400、图44的系统4400)的一个示例实施例中,一个或多个存储设备包括NAND存储设备(例如,NVM120、NVM 456、系统4400的存储目标),其中NAND存储设备用于:从主机处理器(例如,处理器106、处理器402)接收写命令,其中该写命令用于指示NAND存储设备执行写操作以将数据对象写入该NAND存储设备;标识与写操作相关联的多个输入/输出(I/O)特征,其中多个I/O特征用于指示时间戳、数据类型和应用名称;基于机器学习模型来预测数据对象的生命周期,其中训练机器学习模型以基于多个I/O特征来预测数据对象的生命周期;在NAND存储设备上选择用于存储数据对象的相对应块,其中基于数据对象的生命周期来从NAND存储设备上的多个块中选择相对应块;以及将数据对象写入NAND存储设备上的相对应块。
在系统(例如,图1的系统100、图4的系统400)的一个示例实施例中,存储系统进一步包括缓存;以及主机处理器(例如,处理器106、处理器402)用于:标识用于数据类别集合的缓存驱逐策略,其中该缓存驱逐策略指示将从缓存中驱逐该数据类别集合中的每个数据类别的优先级;标识缓存分配策略集合以基于缓存驱逐策略进行评估,其中每个缓存分配策略将该数据类别集合的不同子集分配给缓存;针对该缓存分配策略集合中的第一缓存分配策略子集评估缓存的性能,其中基于评估缓存的性能来获得第一缓存分配策略子集的第一性能指示符集合;评估关于第一性能指示符集合的多个曲线拟合模型;标识第一性能指示符集合的最佳曲线拟合模型,其中从对第一性能指示符集合评估的多个曲线拟合模型中标识最佳曲线拟合模型;针对来自该缓存分配策略集合中的第二缓存分配策略子集预测缓存的性能,其中基于第一性能指示符集合的最佳曲线拟合模型来针对第二缓存分配策略子集预测第二性能指示符集合;从缓存分配策略集合中选择最佳缓存分配策略,其中最佳缓存分配策略是基于第一性能指示符集合和第二性能指示符集合来选择的;以及基于缓存驱逐策略和最佳缓存分配策略来配置缓存。
一个或多个实施例可包括存储设备(例如,块存储设备104、块存储设备452),其包括:用于存储数据的非易失性存储器(例如,NVM 120、NVM456);以及计算迁移控制器(例如,计算迁移控制器122、计算迁移控制器454),用于基于来自主机处理器(例如,处理器106、处理器402)的计算迁移命令来对数据执行计算任务。
一个或多个实施例可以包括其上存储有指令(例如,指令504)的至少一种非暂态机器可读存储介质(例如,存储介质502),其中当指令在机器(例如,系统100、系统400)上执行时,使机器用于:经由存储设备(例如,块存储设备104、块存储设备452)的计算迁移控制器(例如,计算迁移控制器122、计算迁移控制器454)接收来自主机处理器(例如,处理器106、处理器402)的计算迁移命令;以及基于来自主机处理器的计算迁移命令来经由计算迁移控制器对数据执行计算任务,其中数据存储在存储设备的非易失性存储器(例如,NVM120、NVM 456)上。
一个或多个实施例可包括一种方法,该方法包括:经由存储设备(例如,块存储设备104、块存储设备452)的计算迁移控制器(例如,计算迁移控制器122、计算迁移控制器454)接收来自主机处理器(例如,处理器106、处理器402)的计算迁移命令;以及基于来自主机处理器的计算迁移命令来经由计算迁移控制器对数据执行计算任务,其中数据存储在存储设备的非易失性存储器(例如,NVM 120、NVM 456)上。

Claims (11)

1.一种系统,包括:
主机处理器;以及
包括一个或多个存储设备的存储系统,其中所述一个或多个存储设备各自包括:
用于存储数据的非易失性存储器;以及
用于基于来自所述主机处理器的计算迁移命令来对所述数据执行计算任务的计算迁移控制器。
2.如权利要求1所述的系统,其特征在于:
所述系统进一步包括计算设备,其中所述计算设备包括所述主机处理器;或者
所述存储系统进一步包括所述主机处理器。
3.如权利要求1所述的系统,其特征在于:
所述一个或多个存储设备包括多个存储设备;以及
所述主机处理器用于:
接收对存储在所述存储系统上的数据对象执行计算任务的请求,其中所述数据对象被复制到所述多个存储设备中的每个存储设备上;
标识要在所述存储系统上并行处理的所述数据对象的多个区块,其中所述计算任务将由所述多个存储设备对所述多个区块执行;以及
向所述多个存储设备发送多个计算迁移命令,其中每个计算迁移命令用于指示相对应的存储设备对所述多个区块中的相对应区块执行所述计算任务。
4.如权利要求1所述的系统,其特征在于:
所述一个或多个存储设备包括多个存储设备;以及
所述主机处理器用于:
接收对存储在所述存储系统上的数据对象执行计算任务的请求,其中所述数据对象在所述多个存储设备上条带化;
标识在所述多个存储设备上的所述数据对象的多个分片,其中每个分片包括存储在所述多个存储设备中的一个存储设备上的所述数据对象的连续部分;以及
向所述多个存储设备发送多个计算迁移命令,其中每个计算迁移命令用于指示相对应的存储设备对所述相对应存储设备上存储的相对应分片执行所述计算任务。
5.如权利要求1所述的系统,其特征在于:
所述一个或多个存储设备包括多个存储设备;以及
所述主机处理器用于:
接收对存储在所述存储系统上的数据对象执行计算任务的请求,其中所述数据对象在所述多个存储设备上擦除编码;
确定所述存储系统在降级模式下操作,其中所述降级模式指示所述多个存储设备包括可用存储设备集合和不可用存储设备集合;
标识所述可用存储设备集合上的数据对象的可用区块集合;
标识所述不可用存储设备集合上的数据对象的不可用区块集合;
将所述可用存储设备集合划分为正常模式存储设备集合和降级模式存储设备集合;
将第一计算迁移命令集合发送到所述正常模式存储设备集合,其中所述第一计算迁移命令集合用于指示所述正常模式存储设备集合对所述可用区块集合执行计算任务;以及
将第二计算迁移命令集合发送到所述降级模式存储设备集合,其中所述第二计算迁移命令集合用于指示所述降级模式存储设备集合重构所述不可用区块集合并且对相对应的重构区块集合执行计算任务。
6.如权利要求1所述的系统,其特征在于:
所述一个或多个存储设备包括多个存储设备;以及
所述主机处理器用于:
接收将图像对象集合写入所述存储系统的请求;
将所述图像对象集合划分成多个区块,其中所述多个区块中的每个区块包括来自所述图像对象集合的一个或多个图像对象,并且其中所述多个区块被填充使得来自所述图像对象集合的每个图像对象在所述多个区块的相对应区块的边界内对齐;
将所述多个区块写入所述存储系统,其中每个区块将被写入到所述多个存储设备中的相对应存储设备;
接收对所述图像对象集合执行视觉计算任务的请求;以及
向所述多个存储设备发送多个计算迁移命令,其中每个计算迁移命令用于指示相对应的存储设备对来自所述图像对象集合的相对应的图像对象子集执行视觉计算任务,其中所述相对应的图像对象子集存储在所述相对应的存储设备上。
7.如权利要求1所述的系统,其特征在于,所述主机处理器用于:
接收对存储在所述存储系统上的数据对象执行多个链式计算任务的请求,其中所述数据对象存储在一个或多个存储设备的相对应存储设备上;
将链式计算迁移命令发送到所述相对应的存储设备,其中所述链式计算迁移命令用于指示所述相对应的存储设备对所述数据对象执行所述多个链式计算任务;以及
从所述相对应的存储设备接收所述链式计算迁移命令的结果。
8.如权利要求1所述的系统,其特征在于,所述主机处理器用于:
接收对存储在所述存储系统上的数据对象执行数据老化计算任务的请求,其中所述数据对象存储在一个或多个存储设备的相对应存储设备上;
将数据老化计算迁移命令发送到所述相对应的存储设备,其中所述数据老化计算迁移命令用于指示所述相对应的存储设备对所述数据对象执行所述数据老化计算任务;以及
从所述相对应的存储设备接收所述数据老化计算迁移命令的结果。
9.如权利要求1所述的系统,其特征在于,所述主机处理器用于:
接收对存储在所述存储系统上的数据对象执行循环冗余校验(CRC)验证的请求,其中所述数据对象存储在一个或多个存储设备的相对应存储设备上;
将CRC计算迁移命令发送到所述相对应的存储设备,其中所述CRC计算迁移命令用于指示所述相对应的存储设备对所述数据对象执行CRC验证;以及
从所述相对应的存储设备接收所述CRC计算迁移命令的结果。
10.如权利要求1所述的系统,其特征在于,所述一个或多个存储设备包括NAND存储设备,其中所述NAND存储设备用于:
从所述主机处理器接收写命令,其中所述写入命令用于指示所述NAND存储设备执行写入操作以将数据对象写入所述NAND存储设备;
标识与所述写入操作相关联的多个输入/输出(I/O)特征,其中所述多个I/O特征用于指示时间戳、数据类型和应用名称;
基于机器学习模型来预测所述数据对象的生命周期,其中所述机器学习模型被训练成基于所述多个I/O特征来预测所述数据对象的生命周期;
在所述NAND存储设备上选择用于存储所述数据对象的相对应块,其中基于所述数据对象的生命周期来从所述NAND存储设备上的多个块中选择所述相对应块;以及
将所述数据对象写入所述NAND存储设备上的所述相对应块。
11.如权利要求1所述的系统,其特征在于:
所述存储系统进一步包括缓存;以及
所述主机处理器用于:
标识用于数据类别集合的缓存驱逐策略,其中所述缓存驱逐策略指示所述数据类别集合中的每个数据类别将从所述缓存中被驱逐的优先级;
标识缓存分配策略集合以基于所述缓存驱逐策略进行评估,其中每个缓存分配策略用于将所述数据类别集合的不同子集分配给缓存;
针对所述缓存分配策略集合中的第一缓存分配策略子集评估所述缓存的性能,其中基于评估所述缓存的性能来获得所述第一缓存分配策略子集的第一性能指示符集合;
评估关于所述第一性能指示符集合的多个曲线拟合模型;
标识所述第一性能指示符集合的最佳曲线拟合模型,其中从对所述第一性能指示符集合评估的所述多个曲线拟合模型中标识所述最佳曲线拟合模型;
针对来自所述缓存分配策略集合中的第二缓存分配策略子集预测所述缓存的性能,其中基于所述第一性能指示符集合的所述最佳曲线拟合模型来针对所述第二缓存分配策略子集预测第二性能指示符集合;
从所述缓存分配策略集合中选择最佳缓存分配策略,其中所述最佳缓存分配策略是基于所述第一性能指示符集合和所述第二性能指示符集合来选择的;以及
基于所述缓存驱逐策略和所述最佳缓存分配策略来配置所述缓存。
CN202080014116.4A 2019-03-12 2020-03-12 计算数据存储系统 Pending CN113424144A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962817510P 2019-03-12 2019-03-12
US62/817,510 2019-03-12
PCT/US2020/022432 WO2020186081A1 (en) 2019-03-12 2020-03-12 Computational data storage systems

Publications (1)

Publication Number Publication Date
CN113424144A true CN113424144A (zh) 2021-09-21

Family

ID=72426311

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080014116.4A Pending CN113424144A (zh) 2019-03-12 2020-03-12 计算数据存储系统

Country Status (5)

Country Link
US (1) US20220188028A1 (zh)
EP (1) EP3938882A4 (zh)
JP (1) JP2022524487A (zh)
CN (1) CN113424144A (zh)
WO (1) WO2020186081A1 (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114398650A (zh) * 2021-12-16 2022-04-26 西安电子科技大学 一种支持多关键字子集检索的可搜索加密系统及方法
CN114546268A (zh) * 2022-02-15 2022-05-27 淮北鹏顺信息科技有限公司 一种大数据场景下的数据信息存储系统及方法
CN114629961A (zh) * 2022-03-17 2022-06-14 中国农业银行股份有限公司 一种报文格式校验方法及相关设备
CN114968127A (zh) * 2022-07-27 2022-08-30 北京超弦存储器研究院 对象计算存储系统、数据处理方法、客户端及存储介质
CN115061973A (zh) * 2022-04-14 2022-09-16 东方电子股份有限公司 一种基于非对称多处理模式的网卡映射方法及设备
CN115357540A (zh) * 2022-08-17 2022-11-18 北京超弦存储器研究院 存储系统及其计算存储处理器、固体硬盘和数据读写方法
WO2023051228A1 (zh) * 2021-09-28 2023-04-06 阿里巴巴(中国)有限公司 样例数据的处理方法、装置、设备和存储介质
CN116560859A (zh) * 2023-07-11 2023-08-08 恒辉信达技术有限公司 一种基于云计算的访问设备资源分配方法及相关装置
US11822797B1 (en) 2022-07-27 2023-11-21 Beijing Superstring Academy Of Memory Technology Object computational storage system, data processing method, client and storage medium
US11928345B1 (en) 2022-08-17 2024-03-12 Beijing Superstring Academy Of Memory Technology Method for efficiently processing instructions in a computational storage device

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111176577B (zh) * 2019-12-28 2021-11-19 浪潮电子信息产业股份有限公司 分布式块存储服务命令处理方法、装置、设备及介质
US11809908B2 (en) * 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11550949B2 (en) * 2020-07-21 2023-01-10 Constella Intelligence, Inc. Secure exchange of password presence data
US20220121930A1 (en) * 2020-10-20 2022-04-21 Western Digital Technologies, Inc. Embedded Multi-Attribute Machine Learning For Storage Devices
US20220121985A1 (en) * 2020-10-20 2022-04-21 Western Digital Technologies, Inc. Machine Learning Supplemented Storage Device Calibration
US20210064531A1 (en) * 2020-11-09 2021-03-04 Francesc Guim Bernat Software-defined coherent caching of pooled memory
CN114691412A (zh) * 2020-12-29 2022-07-01 华为技术有限公司 一种数据校验方法及其相关设备
CN112887402B (zh) * 2021-01-25 2021-12-28 北京云思畅想科技有限公司 一种加解密方法、系统、电子设备及存储介质
US20220236902A1 (en) * 2021-01-27 2022-07-28 Samsung Electronics Co., Ltd. Systems and methods for data transfer for computational storage devices
CN112969163B (zh) * 2021-02-22 2022-06-21 安徽大学 一种基于自适应任务卸载的蜂窝网络计算资源分配方法
US20220292819A1 (en) * 2021-03-10 2022-09-15 Rutgers, The State University Of New Jersey Computer Vision Systems and Methods for Acceleration of High-Resolution Mobile Deep Vision With Content-Aware Parallel Offloading
JP2022143959A (ja) * 2021-03-18 2022-10-03 キオクシア株式会社 メモリシステム、方法及びデータ処理システム
EP4064023A1 (en) * 2021-03-26 2022-09-28 INTEL Corporation Near-data processing in sharded storage environments
CN113311993B (zh) * 2021-03-26 2024-04-26 阿里巴巴创新公司 数据存储方法及数据读取方法
US11436145B1 (en) * 2021-03-30 2022-09-06 Kyndryl, Inc. Analytics-driven direction for computer storage subsystem device behavior
US12073116B2 (en) * 2021-05-06 2024-08-27 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for computational storage functions
CN113419673B (zh) * 2021-06-05 2022-05-27 济南浪潮数据技术有限公司 一种rbd访问存储集群的方法、系统、介质及设备
US11687253B2 (en) 2021-06-16 2023-06-27 Hewlett Packard Enterprise Development Lp Configuration of a computational drive
TWI771079B (zh) * 2021-06-24 2022-07-11 群聯電子股份有限公司 記憶體存取方法、記憶體儲存裝置及記憶體控制電路單元
US20220417269A1 (en) * 2021-06-25 2022-12-29 Centurylink Intellectual Property Llc Edge-based polymorphic network with advanced agentless security
US11829364B2 (en) * 2021-06-30 2023-11-28 Amazon Technologies, Inc. Making decisions for placing data in a multi-tenant cache
US20230281197A1 (en) * 2021-06-30 2023-09-07 Informex, Inc. Search apparatus, search method, and storage medium
US20230017732A1 (en) 2021-07-16 2023-01-19 Samsung Electronics Co., Ltd. Key packing for flash key value store operations
US20230042551A1 (en) * 2021-08-03 2023-02-09 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for the management of device local memory
US11675540B2 (en) 2021-08-05 2023-06-13 Seagate Technology Llc In-line data flow for computational storage
US20230055535A1 (en) * 2021-08-10 2023-02-23 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for dividing and compressing data
US20230049329A1 (en) * 2021-08-10 2023-02-16 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for processing data at a storage device
US12074962B2 (en) 2021-08-10 2024-08-27 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for dividing and encrypting data
US20230046030A1 (en) * 2021-08-10 2023-02-16 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for data resizing for computational storage
US20230049602A1 (en) * 2021-08-10 2023-02-16 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for hierarchical aggregation for computational storage
US20230050976A1 (en) * 2021-08-12 2023-02-16 Seagate Technology Llc File system aware computational storage block
US20230110401A1 (en) * 2021-10-08 2023-04-13 Marvell Asia Pte, Ltd. Machine Learning-Enabled Management of Storage Media Access
US11709611B2 (en) 2021-10-26 2023-07-25 SambaNova Systems, Inc. Determining and using memory unit partitioning solutions for reconfigurable dataflow computing systems
US11445045B1 (en) * 2021-12-21 2022-09-13 Akamai Technologies, Inc. Systems and methods for preventing the caching of rarely requested objects
US20230236764A1 (en) * 2022-01-26 2023-07-27 Pure Storage, Inc. Edge accelerator card
US20220245903A1 (en) * 2022-03-14 2022-08-04 Facebook Technologies, Llc Selective Offload of Workloads to Edge Devices
US11880950B2 (en) * 2022-03-14 2024-01-23 Meta Platforms Technologies, Llc Selective offload of workloads to edge devices
US12019548B2 (en) 2022-04-18 2024-06-25 Samsung Electronics Co., Ltd. Systems and methods for a cross-layer key-value store architecture with a computational storage device
US20230384944A1 (en) * 2022-05-31 2023-11-30 Samsung Electronics Co., Ltd. Storage system including battery module and method for operating the same
CN114844741A (zh) * 2022-07-01 2022-08-02 知迪汽车技术(北京)有限公司 Can总线数据存储方法、装置、电子设备和计算机可读介质
US11983434B2 (en) * 2022-07-15 2024-05-14 Micron Technology, Inc. Network-ready storage products with computational storage processors
US11947834B2 (en) 2022-07-15 2024-04-02 Micron Technology, Inc. Data storage devices with reduced buffering for storage access messages
US12050945B2 (en) 2022-07-15 2024-07-30 Micron Technology, Inc. Storage products with connectors to operate external network interfaces
US11960419B2 (en) 2022-07-19 2024-04-16 Samsung Electronics Co., Ltd. Systems and methods for data prefetching for low latency data read from a remote server
US20240095076A1 (en) * 2022-09-15 2024-03-21 Lemon Inc. Accelerating data processing by offloading thread computation
US11907080B1 (en) * 2022-10-20 2024-02-20 Dell Products L.P. Background-operation-based autonomous compute storage device system
CN116166477B (zh) * 2022-11-30 2024-02-13 郭东升 一种不同品牌对象存储双活网关系统及方法
US20240296153A1 (en) * 2023-03-02 2024-09-05 Qualcomm Incorporated Metadata updating
CN116107520B (zh) * 2023-04-13 2023-06-30 北京中科特瑞科技有限公司 S3对象存储协议的加密数据存储方法及系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6701316B1 (en) * 2000-04-07 2004-03-02 Nec Corporation Method and apparatus for intelligent network bandwidth and system resource utilization for web content fetch and refresh
US7484016B2 (en) * 2004-06-30 2009-01-27 Intel Corporation Apparatus and method for high performance volatile disk drive memory access using an integrated DMA engine
US7464218B2 (en) * 2004-08-31 2008-12-09 Seagate Technology Llc Method for improving data throughput for a data storage device
US10481799B2 (en) * 2016-03-25 2019-11-19 Samsung Electronics Co., Ltd. Data storage device and method including receiving an external multi-access command and generating first and second access commands for first and second nonvolatile memories
US10860508B2 (en) * 2017-05-25 2020-12-08 Western Digital Technologies, Inc. Offloaded disaggregated storage architecture
US10725859B2 (en) * 2017-05-25 2020-07-28 Western Digital Technologies, Inc. Parity generation offload using peer-to-peer data transfers in data storage system
US10635529B2 (en) * 2017-05-25 2020-04-28 Western Digital Technologies, Inc. Parity offload for multiple data storage devices
US10545921B2 (en) * 2017-08-07 2020-01-28 Weka.IO Ltd. Metadata control in a load-balanced distributed storage system
US10817176B2 (en) 2018-06-18 2020-10-27 Intel Corporation Compute offload in block storage using virtual objects

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023051228A1 (zh) * 2021-09-28 2023-04-06 阿里巴巴(中国)有限公司 样例数据的处理方法、装置、设备和存储介质
CN114398650A (zh) * 2021-12-16 2022-04-26 西安电子科技大学 一种支持多关键字子集检索的可搜索加密系统及方法
CN114546268A (zh) * 2022-02-15 2022-05-27 淮北鹏顺信息科技有限公司 一种大数据场景下的数据信息存储系统及方法
CN114546268B (zh) * 2022-02-15 2024-04-19 淮北鹏顺信息科技有限公司 一种大数据场景下的数据信息存储系统及方法
CN114629961A (zh) * 2022-03-17 2022-06-14 中国农业银行股份有限公司 一种报文格式校验方法及相关设备
CN115061973A (zh) * 2022-04-14 2022-09-16 东方电子股份有限公司 一种基于非对称多处理模式的网卡映射方法及设备
US11822797B1 (en) 2022-07-27 2023-11-21 Beijing Superstring Academy Of Memory Technology Object computational storage system, data processing method, client and storage medium
CN114968127A (zh) * 2022-07-27 2022-08-30 北京超弦存储器研究院 对象计算存储系统、数据处理方法、客户端及存储介质
CN114968127B (zh) * 2022-07-27 2022-10-21 北京超弦存储器研究院 对象计算存储系统、数据处理方法、客户端及存储介质
CN115357540A (zh) * 2022-08-17 2022-11-18 北京超弦存储器研究院 存储系统及其计算存储处理器、固体硬盘和数据读写方法
WO2024036985A1 (zh) * 2022-08-17 2024-02-22 北京超弦存储器研究院 存储系统及其计算存储处理器、固体硬盘和数据读写方法
US11928345B1 (en) 2022-08-17 2024-03-12 Beijing Superstring Academy Of Memory Technology Method for efficiently processing instructions in a computational storage device
CN116560859B (zh) * 2023-07-11 2023-09-22 恒辉信达技术有限公司 一种基于云计算的访问设备资源分配方法及相关装置
CN116560859A (zh) * 2023-07-11 2023-08-08 恒辉信达技术有限公司 一种基于云计算的访问设备资源分配方法及相关装置

Also Published As

Publication number Publication date
EP3938882A4 (en) 2022-12-07
WO2020186081A1 (en) 2020-09-17
US20220188028A1 (en) 2022-06-16
JP2022524487A (ja) 2022-05-06
EP3938882A1 (en) 2022-01-19

Similar Documents

Publication Publication Date Title
US20220188028A1 (en) Computational data storage systems
CN113302584B (zh) 基于云的存储系统的存储管理
CN111868676B (zh) 在基于云的存储系统中服务i/o操作
US20210182190A1 (en) Intelligent die aware storage device scheduler
CN111324308B (zh) 用于访问存储器的存储器装置
CN116018795A (zh) 基础设施处理单元
US11995336B2 (en) Bucket views
WO2021113488A1 (en) Creating a replica of a storage system
US11681640B2 (en) Multi-channel communications between controllers in a storage system
US11662909B2 (en) Metadata management in a storage system
KR20210075845A (ko) 네이티브 키-밸류 분산 스토리지 시스템
US11874733B2 (en) Recovering a container storage system
CN114338660A (zh) 用于边缘环境中数据生命周期管理的设备、系统、制品和方法
US20220014423A1 (en) Systems, apparatus, and methods for data resiliency in an edge network environment
CN115529291A (zh) 目标网络接口设备上的地址转换
KR20210124082A (ko) 구성 가능한 일관성 장치들을 위한 시스템 및 방법
US11768763B2 (en) Flash secure erase
US20220405200A1 (en) Compressed data management in zones
WO2023076354A1 (en) Storage operation routing in a container system
US20240256568A1 (en) Leveraging Snapshots Of Remote Datasets In The Cloud
US20230205591A1 (en) System Having Dynamic Power Management
JP2020166838A (ja) エッジ重複排除を提供するための技術
CN118575158A (zh) 边缘加速器卡
CN118591945A (zh) 改进的带状电缆对准装置
US20240289036A1 (en) Data storage system with managed flash

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