计算系统(诸如基于云的计算系统)为具有各种计算和存储需求的各种用户和租户提供服务。这种基于云的计算系统包括数据密集型计算。这种基于云的计算系统中的数据通常被存储在sata兼容的磁性硬盘驱动器或固态驱动器(ssd)中。ssd和用于控制ssd的固件由ssd供应商提供。通常,ssd及其固件的硬件更新周期为三到五年,在此期间,ssd内的固件保持不变。在此期间,基于云的计算系统运营商没有其他选择而只能利用过时的硬件和固件进行工作。过时的硬件和固件阻碍了这种基于云的计算系统的运营商对创新软件的部署。
另外,基于云的计算系统中的数据可能遭受破坏,导致未授权人员可访问数据。当这样的数据是明文形式并且未加密时,未授权的访问可能为基于云的计算系统的操作员带来问题。
技术实现要素:
在一个示例中,本公开涉及一种包括计算控制器的计算系统,该计算控制器被配置为:(1)提供对与计算系统相对应的多个主机计算资源的访问,以及(2)以第一模式或第二模式中的至少一个模式操作。计算系统还可以包括存储控制器,其被配置为提供对与计算系统相对应的多个存储系统的访问,其中多个存储系统中的至少一个存储系统包括多个存储组件、至少一个计算组件和至少一个加密组件。在第一模式下,至少一个主机计算资源可以被配置为对至少第一数据集执行至少第一操作,并且其中第一数据集被存储在多个存储组件中的至少一个存储组件中。在第二模式下,至少一个计算组件可以被配置为对至少第二数据集执行至少第二操作,其中第二数据集的加密版本被存储在多个存储组件中的至少一个存储组件中,并且其中至少一个加密组件被配置为对至少第二数据集的加密版本进行解密,以及向至少一个计算组件提供第二数据集的未加密版本。至少一个计算组件还可以被配置为通过处理第二数据集的未加密版本来执行至少第二操作,以及基于该处理来生成至少一个结果。
在另一方面,本公开涉及一种包括计算控制器的计算系统,该计算控制器被配置为(1)提供对与计算系统相对应的多个主机计算资源的访问,以及(2)以第一模式或第二模式中的至少一个模式操作,其中多个主机计算资源对第一应用和第二应用可访问,并且其中第一应用被配置为至少执行延迟敏感存储操作并且第二应用被配置为至少执行吞吐量敏感存储操作。计算系统还可以包括存储控制器,其被配置为提供对与计算系统相对应的多个存储系统的访问,其中多个存储系统中的至少一个存储系统包括多个存储组件和至少一个计算组件。在第一模式下,主机计算资源中的至少一个可以被配置为基于来自第一应用或第二应用的请求来对至少第一数据集执行至少第一操作,并且其中至少第一数据集被存储在多个存储组件中的至少一个存储组件中,并且其中至少一个计算组件可以被配置为:与对至少第一数据集执行吞吐量敏感存储操作相比,允许用于对至少第一数据集执行延迟敏感存储操作的较高优先级访问。在第二模式下,至少一个计算组件可以被配置为:(1)基于来自第一应用或第二应用的请求,对至少第二数据集执行至少第二操作,其中至少第二数据集被存储在多个存储组件中的至少一个存储组件中,以及(2)与对至少第二数据集执行吞吐量敏感存储操作相比,允许用于对至少第二数据集执行延迟敏感存储操作的较高优先级访问。
在又一方面,本公开涉及一种计算系统中的方法,该计算系统包括计算控制器,该计算控制器被配置为:(1)提供对与计算系统相对应的多个主机计算资源的访问,以及(2)以第一模式或第二模式中的至少一个模式操作,并且该计算系统还包括存储控制器,其可以被配置为提供对与计算系统相对应的多个存储系统的访问,其中多个存储系统中的至少一个存储系统包括多个存储组件和至少一个计算组件。该方法可以包括,在第一模式下,使用至少一个主机计算资源来对存储在多个存储组件中的至少一个存储组件中的至少第一数据集执行至少第一操作。该方法还可以包括,在第二模式下,仅使用至少一个计算组件来对存储在多个存储组件中的至少一个存储组件中的至少第二数据集执行至少第二操作,其中第二操作与对第二数据集执行过滤操作相对应。
提供本“发明内容”是为了以简化的形式介绍一些概念,这些概念将在下面的“具体实施方式”中进一步描述。本“发明内容”不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
附图说明
本公开通过示例的方式来说明,并且不限于附图,附图中的相同的附图标记表示相似的元件。图中的元件为了简单和清楚起见而示出,并且不一定按比例绘制。
图1是根据一个示例的基于云的计算系统的框图;
图2是根据另一示例的存储系统的框图;
图3是根据一个示例的ssd控制器的框图;以及
图4是根据一个示例的方法的流程图。
具体实施方式
本公开中描述的示例涉及允许基于云的计算系统中的存储设备中的应用驱动的任意计算的系统和方法。其他示例涉及允许基于云的计算系统中的存储设备中的安全应用驱动的任意计算的系统和方法。相对于传统云计算平台,应用驱动的任意计算可以提供若干优势。作为示例,可以向与基于云的计算系统相关联的存储系统添加定制功能。这样的定制功能可以帮助弥合系统中运行的应用的需求与存储系统(诸如固态驱动器)的能力和限制之间的差距。此外,基于云的计算系统的运营商可以在云中部署创新功能,而无需等待下一代ssd硬件。与以计算为中心的处理相比,在ssd内部移动计算也可以帮助加速以数据为中心的处理。作为示例,在以数据为中心的处理中,跨存储设备、存储器(例如,dram)和cpu之间的接口移动数据以进行计算是非常低效的。在ssd内部移动计算的其他好处可以包括更高的吞吐量、更低的延迟和更低的能耗。作为示例,具有经由多个独立的闪存通道而被耦合到存储系统内的计算组件的多个存储组件(诸如闪存芯片)的存储系统可以具有更高的吞吐量。关于较低的延迟,以数据为中心的处理包括数据依赖的访问,其中对一个数据集的访问取决于对另一数据集的先前访问。利用存储系统内的计算,对具有多个存储组件(诸如闪存芯片)的存储系统的这种数据依赖的访问不会导致与主机(cpu)存储器和主机软件栈相关联的延迟开销。还可以通过避免需要将大量数据移动到主机存储器和主机cpu以进行计算来降低能耗。面向用户的应用(诸如各种在线服务)需要低延迟。
为了在在线服务中提供低延迟响应时间,很多应用必须获取ssd读取(例如,与web搜索索引相关的读取)的可预测的低延迟。这样的应用可能需要定期更新它们所服务的数据,但是,并发写入可能正在后台与面向用户的读取一起发生。由于写入的延迟是读取的延迟的数倍,并且因为单个闪存芯片在执行写入时无法提供读取,因此写入对用户读取产生的干扰可能导致读取延迟的不可预测的增加。这是可以通过可编程ssd来解决的很多在线服务应用中的主要问题。
此外,在基于云的计算系统中,数据的安全性是一个问题。数据泄露降低了消费者对基于云的数据存储的信心。改善数据泄露影响的一种方法是对数据进行加密然后计算。然而,计算加密数据并不容易。可以使用同态加密,但它是计算密集型的,并且它仅适用于某些类型的计算。本公开的目标之一是支持任意计算并且保护数据免受数据泄露。在基于云的计算系统中,多个客户副本(例如,某些数据库的副本)在同一机器上运行。当数据被解密时,数据是计算节点的存储器中的明文。与副本之一无关的过程可以访问明文数据。一种实现是使ssd成为受信平台并且将计算移动到ssd;在这种实现中,无需在ssd外部添加明文。用于加密/解密的密钥可以存储在ssd内。加密引擎将位于ssd内部。因此,具有多个太字节(tb)的这种ssd可以提供任意计算。利用这种可编程ssd,应用可以将计算请求发送到ssd并且获取答案。主机(例如,基于云的计算系统中的通用计算资源)可能永远不会看到数据。可编程ssd可以被配置为使得没有加密数据或明文从ssd出来。在某些情况下,加密数据可能仅离开ssd并且去往主机。可以在ssd内部执行任意计算。载代码之前代码可以被加密签名在加,ssd将验证签名。
图1是根据一个示例的基于云的计算系统(ccs)100的框图。在该示例中,ccs100可以包括计算控制器130、存储控制器140、计算资源150和存储资源160。计算控制器130和存储控制器140可以经由网络120耦合。与由用户在ccs100中运行的各种应用相关的计算任务可以经由网络120提交。计算控制器130可以控制对计算资源150的访问。计算资源150可以包括多个计算节点,其中每个计算节点可以包括至少一个cpu(其可以是多核的)和虚拟机管理器,其用于管理在计算节点上运行的虚拟机。在一个示例中,管理程序(hypervisor)可以提供与虚拟机管理器相对应的软件。网络130可以是有线网络、无线网络或这些的组合。网络130也可以是专用网络,使得ccs100可以是私有云。存储控制器140可以控制对存储资源160的访问。存储控制器140可以通过提供允许用户和应用安装文件系统的文件系统服务和直接访问存储系统两者来这样做。存储资源160可以包括可以提供不同类型的存储(包括永久存储)的存储系统。在一个示例中,存储资源160可以包括用于应用可以经由应用程序编程接口(api)访问的二进制对象的存储。应用可以使用这种类型的存储来存储数据库。可以复制数据库,使得可以存在可以被存储在不同存储系统中的相同数据的若干副本。存储资源160还可以包括允许用户将他们的虚拟机附加到卷的卷存储。虽然图1示出了以某种方式布置的ccs100的一定数目的组件,但是可以有以不同方式布置的更多或更少数目的组件。
图2是根据一个示例的存储系统200的框图。在该示例中,存储系统200可以包括非易失性存储器(nvm)组件(202、204、206、208、210和212),诸如闪存芯片、ssd控制器220、应用处理器230、存储器(例如,ram240)、加密模块250、压缩模块260和网络控制器270。ssd控制器220可以控制用于执行与存储在nvm组件中的数据相关的读取、写入或擦除操作的nvm组件。ssd控制器220可以使用一个或多个现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)或复杂可编程逻辑器件(cpld)来实现。ssd控制器220可以提供诸如纠错和直接存储器访问(dma)等功能。ssd控制器220可以使用独立通道203、205和207或类似的附加通道来并行地对nvm组件执行各种类型的操作。如图2所示,每个通道可以具有多个nvm组件,诸如通道203中的nvm组件202和204、通道205中的nvm组件206和208、以及通道207中的nvm组件210和212。ssd控制器220可以暴露可以探索包括nvm组件的原始闪存芯片的几何(geometry)的原始闪存接口。ssd控制器220可以支持nvm组件与主机计算资源和与主机计算资源相关联的存储器之间的数据传输。ssd控制器还可以高速缓存数据以及存储用于与闪存相关联的ftl的元数据。ssd控制器220可以使用诸如芯片级交织和通道级交织等技术来支持并行数据传输。备选地或附加地,ssd控制器220可以在闪存转换层(ftl)之上提供逻辑块地址空间。备选地或附加地,ssd控制器220可以提供文件系统服务,以允许访问ccs100的应用或用户执行与文件系统相关的操作,包括保存、取回和更新nvm组件中存储的基于文件的数据。备选地或附加地,ssd控制器220还可以向在ccs100中正被执行的应用提供应用程序框架。这样,应用可以直接对存储在nvm组件中的数据执行各种操作,而不依赖于任何其他应用程序编程接口。
继续参考图2,应用处理器230可以提供与用于存储系统200的至少一个计算元件相关的功能。应用处理器230可以使用一个或多个现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)或复杂可编程逻辑器件(cpld)来实现。应用处理器230的功能可以是经由软件可编程的,或者可以是用硬件可配置的。以这种方式,可以基于由ccs100的用户正在执行的应用来裁剪(tailor)或定制(customize)应用处理器230的功能。应用处理器230可以经由ssd控制器220来访问存储在nvm组件中的数据。应用处理器230还可以读取或写入ram240。这可以允许应用处理器230对存储在nvm组件中的数据执行各种计算操作,并且将计算结果提供给在ccs100上运行的应用。应用处理器230经由并行独立通道与nvm组件202-212的接近度可以有利地允许对存储的高带宽和低延迟访问。在一个示例中,应用处理器230和nvm组件202-212可以物理上位于同一卡上。在另一示例中,应用处理器230和nvm组件202-212可以位于相同的外壳中。在又一示例中,应用处理器230和nvm组件202-212可以物理上位于同一底板(chassis)中。在另一示例中,应用处理器230和nvm组件202-212可以物理上位于同一机架中。存储系统200的其他组件也可以被包括在任何前述示例中。应用处理器230可以通过使用在由存储系统200所使用的通信协议(例如,sata、sas、pciexpress或nvmexpress)之上实现的应用框架来与在ccs100中运行的应用和主机计算资源通信。
仍然参考图2,作为存储系统200的一部分,加密模块250可以提供加密/解密功能。在一个示例中,与被用作ccs100的一部分的应用相关的加密数据可以被存储在nvm组件中。加密数据可以由ssd控制器220从任何nvm组件取回并且被提供给加密模块250,加密模块250然后可以解密数据并且提供它以供应用处理器230使用。在该示例中,应用处理器230可以基于来自作为ccs100的一部分而执行的应用的请求来执行操作。可以将操作的结果提供给应用。这样,可以使用存储系统100来执行任意计算,而没有任何明文或未加密的数据离开存储系统200。在将从ccs100的其他部分接收的任何未加密或明文数据存储在nvm组件中之前,加密模块250还可以用于对这些数据进行加密。虽然图2示出了以某种方式布置的存储系统200的一定数目的组件,可以有以不同方式布置的更多或更少数目的组件。作为示例,存储系统200可以不包括加密模块。
继续参考图2,存储系统200可以包括压缩模块260。压缩模块260可以在将数据写入任何nvm组件202-212之前压缩数据。另外,压缩模块260可以在从任何nvm组件202-212读取数据之后对数据进行解压缩。在一个示例中,应用处理器230可以指定在存储数据之前是否需要压缩数据。某些应用可能需要更快地访问存储在nvm组件202-212中的数据。可以使用可以存储数据而不需要压缩或解压缩的应用处理器230来执行这样的应用。
仍然参考图2,存储系统200可以包括网络控制器270。在一个示例中,基于云的计算系统中的很多存储系统中的每个可以包括网络控制器270。这样存储系统中的每个可以彼此直接通信,而无需涉及与主机计算资源(诸如图1的计算资源150)相关联的网络控制器。此外,该通信可以在没有图1的计算控制器130的任何协调或参与的情况下发生。在该示例中,网络控制器270可以允许存储系统200之间的独立数据交换。这可以允许应用处理器230实现分布式计算而不涉及主机计算资源(例如,图1的150)或计算控制器130。因此,每个网络控制器270可以具有相关联的mac地址或类似地址,以允许存储系统彼此协作以按分布式方式来执行应用或其他计算。在一个示例中,存储控制器140可以包括附加网络资源(诸如交换机),以允许不与相同主机计算资源相关联的存储系统彼此通信,而不使用由主机计算资源使用的网络资源来彼此通信。
在一个示例中,任意计算可以涉及对数据集执行选择操作、投影操作和聚合类型的操作。在该示例中,数据可以被存储并使用列存储索引来索引数据。与传统的基于行的索引相比,列存储索引表按列存储数据而不是按行存储数据。无需从存储器中读取整行。相反,列1可以是一个数据块,列2可以是第二个数据块,以此类推。在该示例中,可用数据可以被划分为不同的行组(例如,分段)。这些段中的每个可以包括100万行,并且可以通过使用若干算法来对行进行编码和压缩。在该示例中,每列可以被分成它们自己的分段。在对数据进行编码和压缩之后,可以将这些分段存储在存储盘上。每个分段还可以包含关于行数、数据大小和最小/最大值的元数据。
在一个示例中,数据仓库查询可以包括断言(predicate)(例如,过滤器)和聚合(例如,总和、平均等)。因此,一个示例可以涉及确定由特定客户进行的季度购买。对于这些类型的查询工作负载,可以通过使用分段元数据(例如,最小值和最大值)来有效地跳过一些分段。但是,这可能仍然是低效的。例如,在存在从分段中过滤掉大部分数据的断言的情况下,无论分段中实际需要多少行,都可能必须从具有存储数据的磁盘中取出整个分段。在最坏的情况下,为了只使用单行,可能必须从存储磁盘加载100万行。如果行的平均大小是100位,则在该示例中,可能需要加载100位*100万=100mb的分段数据以仅使用来自一行的100位数据。解决该问题的一种可能方式可以是创建具有较少行数(例如,100或1000)的分段。然而,这将导致主机与存储器之间的大量小尺寸i/o的请求,这可能是低效的。在该示例中,为了提高性能,可以使用存储系统200来执行过滤操作。这是因为,过滤操作不是计算密集型的,因此这可以由图2的应用处理器200来有效地实现/处理。通过具有小尺寸段并且处理存储系统200内的断言,可以有利地不仅节省i/o带宽,而且还节省主机存储器消耗,以及节省解压缩/解码不必要数据所需要的主机cpu周期。如前所述,通过在存储系统200中使用多个独立通道,带宽(与存储系统200内的数据传输有关)可以等于或超过与主机计算资源相关联的存储器(例如,dram)的带宽。以这种方式,顺序扫描代码可以被发送到存储系统200,并且扫描可以在存储系统200内执行。除了过滤操作之外,处理聚合的成本也可以被降低。因此,可编程ssd可以通过处理ssd(诸如存储系统200)内的聚合操作而有利地带来更多益处。
基于云的计算系统(诸如ccs100)中的性能的相关问题是在共同位于同一服务器和相同ssd上的不同类型的服务之间提供资源管治。在一个示例中,延迟敏感应用(例如,面向用户的在线服务)和吞吐量贪婪的批量分析作业可以共同位于同一服务器上,目的是增加cpu利用率、增加服务密度以及降低cogs(商品和服务的成本)。在ssd内部,延迟敏感服务的i/o请求可能排在吞吐量贪婪作业的请求之后,从而导致延迟敏感服务的i/o完成延迟不可接受地增加。ccs100的主机计算资源中的软件优先考虑针对延迟敏感服务的i/o请求而不是针对吞吐量贪婪作业的i/o请求可能会限制其解决问题的能力,因为主机计算资源需要保持对ssd设备的足够多的未完成i/o请求以提高设备利用率。解决此问题的一种方法是在ssd设备内实现基于优先级的i/o请求处理,以提供来自延迟敏感服务的i/o请求“插队”针对吞吐量贪婪作业的请求的能力。
图3是根据一个示例的ssd控制器300的框图。ssd控制器300可以包括处理器310、ram320、i/o调度器330、闪存转换层(ftl)340和i/o队列350。如先前关于图2所述,ssd控制器310可以控制用于执行与存储在nvm组件中的数据相关的读取、写入或擦除操作的各种nvm组件。而且,如先前关于图2所述,ssd控制器310可以使用一个或多个现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)或复杂可编程逻辑器件(cpld)来实现。ssd控制器310可以使用如图2所示的独立通道来并行地对nvm组件执行各种类型的操作。此外,如图2所示,每个通道可以具有多个nvm组件,诸如通道203中的nvm组件202和204、通道205中的nvm组件206和208、以及通道207中的nvm组件210和212。ram320可以用于存储与ssd控制器310相关的指令。如稍后更详细地描述的,i/o调度器330可以用于对来自/去往nvm组件的i/o请求进行优先级化。ftl可以在固件中实现,并且可以提供闪存转换层功能,包括将与在主机计算资源上运行的操作系统相对应的逻辑块地址(lba)映射到nvm组件的物理块地址(pba)。如稍后更详细地描述的,i/o队列350可以用于存储去往/来自nvm组件的i/o请求。
继续参考图3,在一个示例中,i/o调度器可以处理与去往/来自nvm组件的每个i/o请求相关联的优先级值。优先级值可以被插入以作为由在ccs100中运行的各种应用正发出的数据请求的一部分。如前所述,应用可以由ccs100中的虚拟机执行。延迟敏感应用可以通过提供与较高优先级相对应的优先级值来请求较高的优先级i/o请求。类似地,吞吐量敏感应用可以通过提供与较低优先级相对应的优先级值来请求较低优先级的i/o请求。i/o调度器330可以分析优先级值,并且在i/o队列350中对数据请求进行排队。i/o队列350可以实现为以下存储器(例如,缓冲器),其可以用于将针对较高优先级i/o的请求存储在高优先级队列中,并且将针对较低优先级i/o的请求存储在低优先级队列中。i/o调度器330可以使用优先级调度算法或多级调度算法来执行调度。优先级值还可以由主机计算资源基于作出i/o请求的应用的类型来插入。因此,可以使用查找表或其他类型的数据结构来将延迟敏感应用与较高优先级i/o相关联,并且将吞吐量敏感应用与较低优先级i/o相关联。利用存储系统200内的i/o请求的优先级化,nvm组件可以更好地用于服务于延迟敏感应用,而不会延迟对其i/o请求的响应。
在另一示例中,ssd控制器300可以帮助管理ssd内的数据碎片。ssd是写时复制设备。通常,擦除块包含32-64个页面。块中的页面可以按顺序被写入。然而,为了更新数据,页面无法被擦除;必须擦除整个块。必须将有效页面复制到其他位置,并且然后才能擦除整个块。通常,数据经由单个写入流而被顺序写入。ccs100中的多租户产生多个副本,例如,可以正以不同速度运行并且正在访问相同存储的数据库副本。当i/o请求到达ssd设备(例如,存储系统200)时,设备不知道哪些写入属于哪个租户。副本可能不相关,并且以不同的速度运行,并且在不同的时间执行垃圾收集。如果相同的擦除块具有来自多个副本的数据,则流对象的生命周期是不同的。通常,最好使同一擦除块内的对象/页面具有相同的生命周期。这样,可以有效地替换整个块。因此,混合和匹配流不是一个好主意。避免混合和匹配流的一种方法是利用流id来标记写入,这样,存储系统200将在一个块中存储具有相同流id的写入,而不在同一块中存储具有不同流id的写入。在一个示例中,每个副本可以具有对应的流id。副本可以进而对应于ccs100的租户或用户。并非所有租户都可以访问存储系统200。因此,在一个示例中,主机计算资源可以基于写入是预期用于存储系统200还是其他类型的存储而选择性地将流id插入到存储流中。主机计算资源可以使用由ssd控制器220提供的应用程序接口来打开流。
图4是根据一个示例的方法400的流程图。方法400可以由ccs100的各种组件执行。步骤402可以包括确定操作对应于第一模式还是第二模式。在一个示例中,该步骤可以由图1的计算控制器130执行。如前所述,计算控制器130可以提供对主机计算资源(例如,图1的计算资源150)的访问。操作可以涉及可以使用存储系统中的任何主机计算资源或任何计算组件(例如,图2的应用处理器230)来执行的任何过程。操作可以包括但不限于过滤操作、选择操作、投影操作或聚合操作。操作模式可以由在ccs100中运行的应用指定。备选地,模式可以由在主机计算资源上运行的操作系统指定。该模式可能未被明确指定;相反,如果可以使用存储系统中的任何主机计算资源或任何计算组件(例如,图2的应用处理器230)执行对不同于另一数据集的数据集的任何操作,则可以暗示不同的模式。作为步骤404的一部分,在第一模式下,可以使用主机计算资源中的至少一个来对至少第一数据集执行至少一个操作。第一数据集可以被存储在存储系统200中或与ccs100相对应的另一存储设备中。备选地,作为步骤406的一部分,在第二模式下,可以使用存储系统200的至少一个计算组件来对至少第二数据集执行至少一个操作。在一个示例中,第二数据集可以仅被存储在存储系统200中。备选地,在另一示例中,第二数据集可以存储在存储系统200中或与ccs100相对应的另一存储设备中。
总之,本公开涉及一种计算系统,其包括计算控制器,该计算控制器被配置为:(1)提供对与计算系统相对应的多个主机计算资源的访问,以及(2)以第一模式或第二模式中的至少一个模式操作。计算系统还可以包括存储控制器,其被配置为提供对与计算系统相对应的多个存储系统的访问,其中多个存储系统中的至少一个存储系统包括多个存储组件、至少一个计算组件和至少一个加密组件。在第一模式下,至少一个主机计算资源可以被配置为对至少第一数据集执行至少第一操作,并且其中第一数据集被存储在多个存储组件中的至少一个存储组件中。在第二模式下,至少一个计算组件可以被配置为对至少第二数据集执行至少第二操作,其中第二数据集的加密版本被存储在多个存储组件中的至少一个存储组件中,并且其中至少一个加密组件被配置为对至少第二数据集的加密版本进行解密以及向至少一个计算组件提供第二数据集的未加密版本。至少一个计算组件还可以被配置为通过处理第二数据集的未加密版本来执行至少第二操作,以及基于该处理来生成至少一个结果。主机计算资源可以是对第一应用和第二应用可访问的,并且第一应用可以包括至少第一操作,并且第二应用可以包括至少第二操作。多个存储系统中的每个还可以包括网络控制器,其被配置为在不涉及计算控制器的情况下支持多个存储系统之间的通信。存储控制器可以被配置作为可信域,使得第二数据集的未加密版本在可信域之外不被允许。加密组件可以被配置为存储至少一个加密密钥和至少一个解密密钥。多个存储组件中的每个可以包括非易失性存储器设备。多个存储系统中的每个可以包括至少一个固态设备控制器、多个闪存设备、以及将多个闪存设备连接到固态设备控制器的多个并行独立通道。
在另一方面,本公开涉及一种计算系统,包括:计算控制器,被配置为(1)提供对与计算系统相对应的多个主机计算资源的访问,以及(2)在至少一个中操作。第一模式或第二模式,其中多个主机计算资源可由第一应用和第二应用访问,并且其中第一应用被配置为至少执行延迟敏感存储操作并且第二应用被配置为在吞吐量敏感存储操作。计算系统还可以包括存储控制器,其被配置为提供对与计算系统相对应的多个存储系统的访问,其中多个存储系统中的至少一个存储系统包括多个存储组件和至少一个计算组件。在第一模式下,主机计算资源中的至少一个可以被配置为基于来自第一应用或第二应用的请求来对至少第一数据集执行至少第一操作,并且其中至少第一数据集被存储在多个存储组件中的至少一个存储组件中,并且其中至少一个计算组件可以被配置为:与对至少第一数据集执行吞吐量敏感存储操作相比,允许更高优先级的访问以对至少第一数据集执行延迟敏感存储操作。在第二模式下,至少一个计算组件可以被配置为:(1)基于来自第一应用或第二应用的请求,对至少第二数据集执行至少第二操作,其中至少第二数据集被存储在多个存储组件中的至少一个存储组件中,以及(2)与对至少第二数据集执行吞吐量敏感存储操作相比,允许更高优先级访问以对至少第二数据集执行延迟敏感存储操作。第一优先级值可以标识每个延迟敏感操作,第二优先级值可以标识每个吞吐量敏感操作。计算组件可以被配置为:与对至少第一数据集或第二数据集执行吞吐量敏感操作相比,基于第一优先级值和第二优先级值以允许较高优先级以用于对至少第一数据集或第二数据集执行延迟敏感操作。存储控制器还可以包括至少一个加密组件。第二数据集的加密版本可以被存储在多个存储组件中的至少一个存储组件中,并且至少一个加密组件可以被配置为对至少第二数据集的加密版本进行解密,以及向至少一个计算组件提供第二数据集的未加密版本。存储控制器可以被配置作为可信域,使得第二数据集的未加密版本在可信域之外不被允许。多个存储系统中的每个还可以包括网络控制器,该网络控制器被配置为在不涉及计算控制器的情况下支持多个存储系统之间的通信。加密组件可以被配置为存储至少一个加密密钥和至少一个解密密钥。多个存储组件中的每个可以包括非易失性存储器设备。多个存储系统中的每个可以包括至少一个固态设备控制器、多个闪存设备、以及将多个闪存设备连接到固态设备控制器的多个并行独立通道。
在又一方面,本公开涉及一种计算系统中的方法,该计算系统包括计算控制器,该计算控制器被配置为:(1)提供对与计算系统相对应的多个主机计算资源的访问,以及(2)以第一模式或第二模式中的至少一个模式操作,该计算系统还包括存储控制器,其可以被配置为提供对与计算系统相对应的多个存储系统的访问,其中多个存储系统中的至少一个存储系统包括多个存储组件和至少一个计算组件。该方法可以包括,在第一模式下,使用至少一个主机计算资源来对被存储在多个存储组件中的至少一个存储组件中的至少第一数据集执行至少第一操作。该方法还可以包括,在第二模式下,仅使用至少一个计算组件来对存储在多个存储组件中的至少一个存储组件中的至少第二数据集执行至少第二操作,其中第二操作与对第二数据集执行过滤操作相对应。第二数据集可以仅被存储在多个存储系统中的一个存储系统中。多个存储系统中的每个可以包括至少一个固态设备控制器、多个闪存设备、以及将多个闪存设备连接到固态设备控制器的多个并行独立通道。
应当理解,本文中描绘的方法、模块和组件仅是示例性的。备选地或附加地,本文中描述的功能可以至少部分由一个或多个硬件逻辑组件来执行。作为示例而非限制,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)、复杂可编程逻辑器件(cpld)等。在抽象但仍然明确的意义上,实现相同功能的任何组件布置有效地“相关联”,使得能够实现期望的功能。因此,本文中被组合以实现特定功能的任何两个组件可以被视为彼此“相关联”,使得能够实现期望的功能,而不管架构或中间组件。同样地,如此相关联的任何两个组件也可以被视为彼此“可操作地连接”或“耦合”以实现期望的功能。
与本公开中描述的示例相关联的功能还可以包括存储在非暂态介质(例如,ram240或其他类型的非暂态介质)中的指令。本文中使用的术语“非暂态介质”是指存储使得诸如本公开中描述的任何处理器或控制器等机器以特定方式操作的数据和/或指令的任何介质。示例性非暂态介质包括非易失性介质和/或易失性介质。非易失性介质包括例如硬盘、固态驱动器、磁盘或磁带、光盘或磁带、闪存、eprom、nvram、pram或其他这样的介质、或网络版本的这样的介质。易失性介质包括例如动态存储器,诸如dram、sram、高速缓存或其他这样的介质。非暂态介质不同于传输介质,但可以与传输介质结合使用。传输介质用于向诸如处理器100等机器传输数据和/或指令。示例性传输介质包括同轴电缆、光纤电缆、铜线和无线介质(诸如无线电波)。
此外,本领域技术人员将认识到,上述操作的功能之间的界限仅仅是说明性的。多个操作的功能可以组合成单个操作,和/或单个操作的功能可以在附加操作中分发。此外,备选实施例可以包括特定操作的多个实例,并且操作的顺序在各种其他实施例中可以改变。
尽管本公开提供了具体示例,但是在不脱离如下面的权利要求中阐述的本公开的范围的情况下,可以进行各种修改和改变。因此,说明书和附图应当被视为说明性的而非限制性的,并且所有这样的修改旨在被包括在本发明的范围内。本文中关于特定示例描述的问题的任何益处、优点或解决方案不旨在被解释为任何或所有权利要求的关键、必需或必要的特征或元素。
此外,如本文中使用的术语“一个(a)”或“一个(an)”被定义为一个或多于一个。此外,在权利要求中使用诸如“至少一个”和“一个或多个”等介绍性短语不应当被解释为暗示由不定冠词“一个(a)”或“一个(an)”引入另一权利要求元素将包含这种引入的权利要求元素的任何特定权利要求限制为仅包含一个这样的元素的发明,即使相同的权利要求包括介绍性短语“一个或多个”或“至少一个”以及诸如“一个(a)”或“一个(an)”等不定冠词。定冠词的使用也是如此。
除非另有说明,否则诸如“第一”和“第二”等术语用于任意区分这些术语所描述的元素。因此,这些术语不一定旨在表示这些元素的时间或其他优先次序。