掌桥专利:专业的专利平台
掌桥专利
首页

用于优化数据去重的强化学习

文献发布时间:2023-06-19 12:25:57


用于优化数据去重的强化学习

本申请要求于2019年1月15日提交的标题为“REINFORCEMENT LEARNING FOROPTIMIZING DATA DEDUPLICATION(用于优化数据去重的强化学习)”的第16/248,322号美国非临时专利申请的权益和优先权,其内容在此通过引用明确并入本文中。

技术领域

本公开的主题总体上涉及计算机网络领域,更具体地,涉及用于优化分布式计算系统的数据去重(data deduplication)的系统和方法。

背景技术

数据去重是一种用于消除重复数据或冗余数据以提高存储利用率和/或减少通过网络的数据传输的技术。去重(deduplication)可以包括涉及识别和存储数据字节的唯一序列或模式的第一阶段。例如,去重过程可以从存储装置中和/或在网络传输之前提取序列,计算序列的散列,并将散列值存储在数据去重数据库中。例如通过散列这些序列并在去重数据库中执行查找,去重还可以包括涉及将序列与存储副本进行比较的第二阶段。如果找到匹配,则可以用指向存储副本的指针或其他引用替换匹配的序列。匹配的频率可能取决于序列的大小,这进而会影响去重可减少的用于存储和/或通过网络传输的数据量。例如,较小的序列大小可以增加匹配率,而较大的序列大小可以导致更小的去重数据库大小、更快的去重和更少的碎片(fragmentation)。一些去重过程可能会在散列之前应用压缩以减少数据占位(data footprint),和/或应用碎片整理来合并多个连续的副本。关于如何实现去重、是否压缩数据以及数据应该压缩到什么程度、是否对数据进行散列并将散列映射到去重数据库、是否合并多个连续的数据序列以及序列大小的尺寸的这些不同的考虑均有各种权衡,确定正确的配置是网络运营商面临的一个尖锐问题。

附图说明

为了更全面地理解本公开及其特征和优点,结合附图参考以下描述,在附图中:

图1图示了根据一个实施例的存储数据平台的示例;

图2图示了根据一个实施例的存储数据服务层的示例;

图3图示了根据一个实施例的用于优化存储数据的去重的强化学习引擎的示例;

图4图示了根据一个实施例的用于优化存储数据的去重的过程的示例;和

图5A和图5B图示了根据一些实施例的系统的示例。

具体实施方式

下面阐述的详细描述旨在作为对实施例的各种配置的描述,并且不旨在表示其中可以实践本公开的主题的唯一配置。附图并入本文并构成详细描述的一部分。详细描述包括用于提供对本公开主题的更透彻理解的特定细节。然而,清楚和明显的是,本公开的主题不限于本文阐述的具体细节,并且可以在没有这些细节的情况下实践。在一些情况下,结构和部件以框图形式示出,以避免混淆本公开的主题的概念。

提供用于优化分布式存储数据系统的数据去重的系统和方法。系统的物理存储节点可以确定在预定数量的时期内执行与数据去重相关联的一组排他动作中的每个排他动作的成本,以填充排他动作成本矩阵。物理存储节点可以基于执行每个排他动作的成本从一组排他动作当中确定最佳排他动作。响应于随机数低于阈值,物理存储节点可以从一组排他动作中确定执行随机选择的排他动作的第一成本,并且用该第一成本更新排他动作成本矩阵。响应于随机数超过阈值,物理存储节点可以确定执行最佳排他动作的第二成本,并用第二成本更新排他动作成本矩阵。

数据去重可以涉及在存储期间和/或在通过网络传输数据之前消除重复数据或冗余数据。例如在处理、存储器和节点(也称为主机、服务器、端点、计算设备等)的存储利用率方面,可能存在与数据去重相关的成本,该节点存储数据、网络吞吐量以及源与目标节点之间的延迟。例如,可以使用一定量的处理和存储器来计算用于去重、压缩数据和/或碎片整理数据的散列值,并且可以根据去重、压缩和/或碎片整理的速度留出一定数量的存储用于存储数据,网络延迟可能会受到影响,并且取决于传输的速度和传输的数据量,可能会消耗一定数量的网络带宽。这些计算资源(例如,处理、存储器、存储装置、网络、功率等)在计算环境中通常是有限的。例如,公共云或网络中的多租户应用程序之间可能存在严重争用。作为另一个示例,私有云或企业网络中的虚拟实例(例如,虚拟机(VM)、容器等)可以对这些计算资源相互竞争。在此类环境中,数据和资源的可用性不可预测,网络运营商可能无法评估去重的回报(或成本)。

例如,在当网络中中央处理单元(CPU)处于严重争用下和待从源传输到目标的数据与低去重比(例如,移除副本之前用于存储数据的总容量与去重后的实际容量之间的比例)相关联的时期,计算数据散列所产生的CPU使用成本和发送去重散列所产生的网络往返时间(RTT)的成本可能超过去重在计算资源利用率方面的效益。在这种情况下,网络或网络运营商最好采取不同组的动作来更有效地利用计算资源。另一方面,当CPU争用很少且数据与高去重比相关联时,网络可以通过仅发送用于去重的数据散列并保留网络带宽而获益。

然而,网络或网络运营商可能无法预测与去重的特定实施方式相关联的回报(或成本),因为数据的特性和计算资源的争用可能是不可预测的。网络或网络运营商可能需要警惕地监视数据以了解其性质,并根据计算资源的可用性确定如何执行去重以实现最佳结果(例如,根据用户指定的分配来分布计算资源)。本公开的各种实施例可以通过利用强化学习以确定针对数据去重所采取的优化计算资源利用的一组动作来克服现有技术的这些和其他缺陷。在一些实施例中,可以利用强化学习来确定如何在分布式计算系统内实现去重。例如,去重可以被建模为多臂老虎机(MAB)问题,其中每组动作(或臂)均具有相关联的回报(或成本),并且在给定时间内不知道哪组动作(或臂)产生最佳结果。MAB问题和解决方案源自这样一种场景:其中赌徒必须决定玩一组吃角子老虎机(例如,单臂老虎机)中的哪台吃角子老虎机,每台机器玩多少次,玩它们的顺序,以及是继续使用当前的机器还是尝试不同的机器。

在MAB问题和解决方案中,每组动作均可以从特定于该组动作的概率分布中提供随机回报(或成本)。赌徒的目标是最大化通过一系列拉杆获得的回报总和(或最小化成本总和)。在每一轮中,赌徒必须在“利用”具有最高预期收益的机器和“探索”以获取有关其他机器的预期收益的更多信息之间取得平衡。

现在转向附图,图1示出了可用于部署本技术的各种实施例的分布式存储数据平台100的逻辑架构的示例。分布式存储数据平台100的实施方式的示例是CiscoHyperFlex

分布式存储数据平台100通常可以向利用系统提供的存储和/或存储服务的一个或多个应用程序提供数据的分布式存储。在该示例中,分布式存储数据平台100包括管理层102、控制器层120和物理层140。管理层102可以包括用于分布式存储数据平台100的集中管理的一个或多个接口,例如命令行接口104、本地数据管理系统接口106(例如,CiscoHyperFlex

控制器层120可以包括一个或多个虚拟化平台(包括一个或多个基于管理程序的虚拟化平台、基于容器的虚拟化平台或其他虚拟化平台)和存储数据服务层136。在该示例中,控制器层120包括第一基于管理程序的虚拟化平台122A、第二基于管理程序的虚拟化平台122B和基于容器的虚拟化平台124(统称为虚拟化平台122和124)。虚拟化平台122A、122B和124可以分别包括数据平台控制器128A、128B和128C(统称为128)。数据平台控制器128可以用于将由存储节点(在本公开中也称为服务器或主机)和分布式存储数据平台100实现的特定虚拟化平台一体化。数据平台控制器128可以通过高速数据链路(例如,10或40Gb以太网连接)彼此通信,以呈现跨越物理层140的存储节点的单个存储池。

虚拟化平台122和124中的每一个均可以在物理层140的一个或多个物理服务器上运行。在一些实施例中,分布式存储数据平台100还可以支持裸机实例(例如,不实现虚拟化的物理服务器)。除了数据平台控制器128之外,基于管理程序的虚拟化平台122A和122B(统称为122)还可以分别包括管理程序130A和管理程序130B(统称为管理程序130或虚拟实例管理器130)(例如,Microsoft

存储数据服务层136可以向应用程序提供存储和存储服务,该应用程序可以在虚拟机126、容器134、裸机服务器或访问分布式存储数据平台100的其他物理或虚拟计算设备中执行。分布式存储数据平台100的存储节点可以通过数据层使用数据抽象(例如文件、块、对象或其他存储单元)的数据层访问数据。存储数据服务层136的操作在下面关于图2和本公开的其他地方进一步讨论。

物理层140可以包括一个或多个物理节点142A-C(统称为142)和一个或多个网络设备156A-B(统称为156)。物理节点142可以包括任何数量的节点以及任何配置和形状因数。作为示例,物理节点142A包括一个或多个网络元件144A(例如,网络接口卡或控制器(NIC)、网络适配器、局域网(LAN)适配器、无线LAN(WLAN)适配器、以太网适配器、物理网络接口等);中央处理单元(CPU)和存储器146A;硬盘驱动器(HDD)148A;固态硬盘(SSD)150A;和图形处理单元(GPU)152A。物理节点142A可以被表征为混合存储节点,因为它包括两种不同类型的存储装置,即HDD 148和SSD 150A。物理节点142B可以包括一个或多个网络元件144B、CPU和存储器146B、SSD 150B、非易失性随机存取存储器标准(NVMe)存储设备154和GPU 152B。物理节点142B可以被表征为全闪存存储节点(或闪存存储节点),因为它仅包括用于存储的闪存存储器(例如,SSD 150B和NVMe存储设备154)。物理节点142C可以包括一个或多个网络元件144C、CPU和存储器146C以及GPU 152C。物理节点142C可以被表征为仅计算存储节点,因为它可用于处理分布式存储数据平台100中的存储请求,但不包括可被分布式存储数据平台100用于持久存储数据的存储装置。在其他实施例中,存储节点142还可以包括:仅包括HDD、SSD或NVMe存储器的服务器;包括自加密驱动器、大形状因数驱动器或其他类型的存储器的服务器;存储数据平台边缘节点(例如,为在网络边缘运行而专门构建的节点,例如Cisco HyperFlex

网络设备156可以包括任何数量的物理和/或虚拟网络设备以及各种配置和物理形状因数,例如网络架构互连(例如,Cisco

在一些实施例中,单个的数据平台控制器128可以驻留在每个物理节点142中的单独的虚拟机、容器或其他虚拟实例(统称为虚拟实例126或134)中。虚拟实例126或134可以使用专用CPU内核和存储器,因此其工作负载波动可能对其主机上运行的应用程序几乎没有影响。数据平台控制器128可以通过由管理程序、虚拟机管理器、虚拟机监视器、容器编排器、容器引擎或其他虚拟化软件(统称为虚拟实例管理器130或132)提供的旁路机构访问其主机的所有存储器。数据平台控制器128可以实现分布式日志结构文件系统,该分布式日志结构文件系统使用高性能存储器(例如,其主机的存储器、固态驱动器(SSD)、非易失性存储器标准(NVMe)存储装置或其他快速存储器/存储装置)作为分布式缓存层的一部分,以用于加速写响应和读请求。数据平台控制器128可以使用其节点的HDD、SSD、NVMe存储装置或其他存储装置作为分布式容量层的一部分。

每个物理节点142中的数据平台控制器128可以以各种方式与虚拟实例管理器130或132接口连接。在一些实施例中,数据平台控制器128可以包括代理(例如,IOVisor)(未示出),该代理拦截输入/输出(I/O)请求,并将请求路由到物理节点142,该物理节点142负责存储或检索请求的存储数据。代理可以向虚拟实例管理器130或132呈现文件系统、设备接口或其他数据管理抽象,以抽象掉存储装置在分布式存储数据平台100中的分布性质。替代地或另外地,数据平台控制器128可以利用虚拟实例管理器130或132的应用编程接口(API)来卸载某些存储操作,例如快照和克隆。这些操作可以通过虚拟实例管理器130或132访问。

图2示出了存储数据服务层136的逻辑架构的示例。存储数据服务层136可以包括接口200、认证、授权和记账(AAA)服务202、基于管理程序的网关204A、基于管理程序的网关204B、基于容器的网关和管理器206、集群服务208、数据服务210和系统服务212。

接口200可以提供存储数据服务层136(即分布式存储数据平台100的其他元件(例如,管理层102的接口、在虚拟机126和容器134中运行的应用程序、虚拟实例管理器130和132和物理节点142等))与外部元素(例如,其他网络、网络设备、物理服务器、虚拟实例等)之间的互操作性。接口200可以包括一个或多个应用程序编程接口(API),例如静态状态传输(REST)API、远程过程调用(例如,gRPC远程过程调用(gRPC))、查询语言(例如,

AAA服务202可以包括用于验证用户、组和/或系统凭证以及将会话与登录到分布式存储数据平台100的实体相关联的认证服务;授权服务允许或禁止用户、组和/或系统在分布式存储数据平台100内执行各种动作,例如基于实体的身份或角色创建、读取、更新或删除存储资源或执行程序;以及核算用于记录保存和跟踪实体活动(例如登录会话和命令执行)的服务。在一些实施方式中,

基于管理程序的网关204A和204B和基于容器的网关206(统称为虚拟化网关204和206)每个均可以支持它们各自的虚拟化平台122和124,并为在每个虚拟化平台内的更高层的软件提供适合于虚拟化平台的需求的存储访问。

集群服务208可以负责分布式存储数据平台100的各种部件的协调、委派责任和维护分布式存储数据平台100的一致全局状态。集群服务208可以包括角色分配、分布式同步、组服务等等。集群服务208还可以负责弹性,并确保即使在分布式存储数据平台100的软件或硬件部件(磁盘、服务器、网络等)发生故障之后数据也是可用和一致的。因此,集群服务208可以包括镜像、故障转移、镜像重新同步服务。在一些实施例中,集群服务208还可以包括逻辑可用性区域、本地复制、拉伸集群、克隆和高可用性,如下文进一步讨论的。

数据服务210可以包括数据分发、数据读写操作、数据优化、数据去重、数据压缩、日志结构分布式对象、加密、精简配置、快照、本地复制和数据重新平衡,以及其他存储数据服务,如下面进一步讨论。

系统服务212可以包括用于由于删除或更新资源而回收存储器和存储装置的垃圾收集服务和用于配置、监视、分析和报告分布式存储数据平台100、集群、逻辑可用性区220、物理节点组142或单个物理节点142的整体的系统管理服务。管理层102的一个或多个接口可以直接或间接地与系统管理服务交互。

核心文件系统214可以是分布式的日志结构文件系统,该分布式的日志结构文件系统可以根据个体物理节点142的配置动态地处理缓存和存储容量。例如,混合节点142A的SSD150A可以用作存储缓存层的一部分,以加速读取请求和写入响应,并且混合节点142A的HDD148可以用作容量层的一部分,用于持久存储。作为另一个示例,全闪存节点142B的SSD150B和/或NVMe存储设备154可以用作缓存层的一部分,以加速写响应,并且全闪存节点142B的SSD150B和/或NVMe存储设备154可以用作容量层的一部分,用于持久存储。对全闪存节点142B的读取请求可以直接从容量层中获得的数据来满足,并且可以不需要专用的读取缓存来加速读取操作。

在该示例中,核心文件系统214可以包括文件块216A-D(统称为216)。在一些实施方式中,数据服务210可以通过跨物理节点142分配传入数据以使用缓存层优化性能来提供数据分布。可以通过将传入数据映射到可以跨物理节点142均匀存储的条带单元来实现有效的数据分布,其中数据副本的数量由最终用户可以配置的策略确定。例如,图2显示了文件块216A如何跨物理节点142α-δ和142ε-θ作为条带单元A1-A4分布,文件块216B如何跨物理节点142α-δ和142ε-θ作为条带单元B1-B4分布,文件块216C如何跨物理节点142α-δ和142ε-θ作为条带单元C1-C4分布,文件块216D如何跨物理节点142α-δ和142ε-θ作为条带单元D1-D4分布。当虚拟实例126或134中的应用程序写入数据时,可以基于条带单元将数据发送到适当的物理节点142(例如,包括相关信息块的单元)。这种方法结合具有同时写入多个流的能力可以防止网络和存储热点两者,可以跨分布式存储数据平台100的任何存储节点提供相同或相似的I/O性能,而不管虚拟实例126或135的位置如何,并且可以在工作负载放置方面提供更大的灵活性。相比之下,传统系统可能使用不充分利用可用网络和I/O资源的局部性方法。此外,当虚拟实例126或134迁移到新位置时,分布式存储数据平台100不需要数据被移除。这可以显着降低迁移虚拟实例126或134的影响和成本。

在一些实施例中,跨物理节点142的数据条带化可以支持两个或更多个逻辑可用性区域220A和220B(统称为220)。该特征可以基于集群中的节点数量和数据的复制因子将分布式存储数据平台100的一组节点142自动划分为一组可用区。每个可用区220均可以具有每个文件块216的一个副本(例如,逻辑可用区220A和220B均包括以条带单元A1-A4、B1-B4、C1-C4和D1-D4的形式的一组文件块-D)。因此,当在单个可用区220中发生多个部件或节点故障并使单个可用区不可用时,如果另一个逻辑可用区220具有数据的副本,则分布式存储数据平台100可以继续运行。例如,一个不支持逻辑可用性区域并由20个节点组成并配置为复制因子为3的传统系统,在传统系统不必关闭的情况下,最多可以有两个节点发生故障。另一方面,具有相同节点数和相同复制因子的分布式存储数据平台100可以划分为五个逻辑可用区(其中三个未在图2中示出),每个区中有四个节点,即使最多两个可用区中的所有节点均发生故障,也可以继续运行。

在一些实施方式中,数据服务210可以组装块以缓存,直到可配置大小的写日志已满或直到工作负载条件规定它可以传播到容量层。当现有数据被逻辑覆盖时,数据服务210可以将新块附加到写入日志并更新元数据。当数据传播到HDD时,写入操作可以包括单个查找操作,并写入大量顺序数据。相对于使用读取-修改-写入模型的传统系统而言,这可以提高性能,该读取-修改-写入模型的特征在于HDD上的大量寻道操作,其中一次写入少量数据。这种方法还可以通过降低SSD的写入放大级别和闪存由于传入可以产生传统系统的数据的写入操作和随机覆盖操作而经历的写入总数来对固态配置(其中查找操作可能不那么耗时)有益。

在一些实施例中,当数据被传播到单个物理节点142中的磁盘时,可以对数据进行去重复、压缩和/或碎片整理。这可能发生在写入操作被确认之后,使得这些操作不会导致性能损失。然后可以将数据移动到容量层,并且可以释放相应的写缓存段以供再使用。在一些实施例中,分布式存储数据平台100可以利用强化学习来自动化如何实现去重,例如是否压缩数据以及数据应该压缩到什么程度、是否对数据进行散列并将散列映射到去重数据库、是否合并多个连续文件块、文件块的大小等等,以优化计算资源利用和性能,如下面关于图3和本公开的其他地方进一步讨论的。

在一些实施例中,数据服务210还可以支持热数据集(例如,在存储器中缓存可能经常或最近从容量层读取的数据)。在物理节点142中,热数据集也可以缓存在SSD150、NVMe存储设备154和/或其他快速存储器/存储装置中。这对于包括用于持久存储的HDD148的物理节点142A尤其有利,因为在缓存层中具有最常用的数据可以帮助加速工作负载的性能。例如,当物理节点142A中的应用程序和虚拟机126和容器134尝试修改数据时,可以从缓存中读取数据,使得可能不需要读取和扩展HDD148上的数据。由于分布式存储数据平台100将缓存层和容量层解耦,因此网络运营商可以独立地缩放I/O性能和存储容量。

如前所述,所有闪存或所有NVMe节点均可能不使用读取缓存。数据缓存可能不会提供任何性能优势,因为持久数据副本已经驻留在用于全闪存和所有NVMe节点的高性能存储上。相反,跨整组SSD或NVMe存储设备分派读取请求可以防止特定缓存成为瓶颈。

在一些实施例中,数据服务210可以通过去重、压缩和/或碎片管理来提供数据优化,该去重、压缩和/或碎片管理继续用于缓存中的对象(例如,SSD、NVMe、存储器等)和容量(SSD、NVMe、HDD等)层。与需要关闭这些特征以维持性能的常规系统不同,数据服务210的去重、压缩和碎片整理能力可以被设计为维持和增强性能,并显著降低物理存储容量需求。

在一些实施例中,数据去重可用于存储数据平台100中的所有存储装置上,包括存储器、SSD、NVMe和HDD。数据可以在容量层中去重以节省空间,并且当它被读入混合节点142A中的缓存层时可以保持去重复。这可以允许将更大的工作集存储在缓存层中,并加快使用HDD的配置的读取性能。

在一些实施例中,数据服务210可以对数据应用压缩,以节省存储容量。数据服务210平台可以使用CPU卸载指令来减少压缩操作的性能影响。此外,可以利用日志结构的分布式对象存储,使得压缩对先前压缩数据的修改(写入操作)几乎没有影响。例如,传入的修改可以被压缩并写入新位置,并且可以将现有(旧)数据标记为删除(除非需要为快照保留数据)。

在一些实施例中,数据服务210可以对数据应用碎片整理。数据服务210可以使用CPU卸载指令来合并多个连续文件块,以优化性能。此外,数据服务210可以利用日志结构的分布式对象存储来进一步优化碎片整理的性能。例如,可以对传入的修改进行碎片整理并将其写入新位置,并且可以将现有(旧)数据标记为删除(除非需要为快照保留数据)。

在一些实施例中,数据服务210可以使用日志结构的分布式对象存储,该日志结构的分布式对象存储将通过去重服务过滤的数据分组和压缩成可自寻址的对象。这些对象可以以日志结构的顺序方式写入磁盘。传入的I/O,包括随机I/O请求,可以顺序写入缓存层和容量层两者。对象可以分布在分布式存储数据平台100中的所有节点142上,以统一使用存储容量。通过使用顺序布局,数据服务210可以帮助增加闪存耐久性,并充分利用可能非常适合顺序I/O操作的HDD的读取和写入性能特征。因为可以避免读-修改-写操作,因此压缩、快照和克隆操作可能对整体性能几乎没有影响。

在一些实施例中,数据服务210可以将数据块压缩成在固定大小的段中顺序布置的对象,并且这些对象又可以以日志结构的方式顺序布置。日志结构段中的每个压缩对象均可以使用密钥进行唯一寻址,每个密钥均带有指纹并与校验和一起存储,以提供高级别的数据完整性。此外,对象的时间顺序写入可以帮助分布式存储数据平台100通过仅重写由于故障而被截断后进入平台的数据来快速从媒体或节点故障中恢复。

在一些实施例中,存储数据服务层136可以包括自加密驱动器(SED),该自加密驱动器(SED)用于加密分布式存储数据平台100的缓存和/或容量层两者。通过与密钥管理软件或密码保护的密钥集成,持久存储数据的加密有助于遵守法规和行业标准,例如健康保险流通与责任法案(HIPAA)、支付卡行业数据安全标准(PCI-DSS)、联邦信息安全管理法案(FISMA)、Sarbanes-Oxley法规和联邦信息处理标准(FIPS)等。

在一些实施例中,数据服务210可以包括服务开通特征,该服务开通特征用于通过消除预测、购买和安装可能长时间未使用的磁盘容量的需要来提供存储的有效使用。数据服务210可以将具有任意逻辑空间量的虚拟数据存储呈现给应用程序,而实际需要的物理存储空间量可以在写入数据时确定。结果,网络运营商可以根据业务需求通过添加更多存储密集型节点来扩展现有节点上的存储和/或扩展存储平台100,消除在可能需要之前购买大量存储的需要。

在一些实施例中,分布式存储数据平台100可以使用基于元数据的零拷贝快照来促进可能需要永远在线的数据可用性的应用的备份操作和远程复制。通过这种方式,节省空间的快照可以允许对数据进行频繁的在线备份,而无需担心物理存储容量的消耗。数据可以离线移动或立即从这些快照中恢复。快照服务可以包括:快速快照更新,其中可以将包含在快照中的修改数据写入新位置,并且可以在不需要读-修改-写操作的情况下更新元数据;快速快照删除,其中与使用需要长时间整合过程的增量磁盘技术的传统解决方案相比,仅可以删除位于SSD上的少量元数据;和高度特定的快照,其中快照可以在单个文件的基础上拍摄,并可以映射到虚拟实例中的驱动器,以在不同的虚拟实例上启用不同的快照策略。

在一些实施例中,分布式存储数据平台100可以包括本地复制服务,该本地复制服务向灾难恢复和虚拟实例迁移目的提供基于策略的远程复制。通过管理层102,管理员可以创建指定修复点目标(RPO)的复制策略,并将虚拟实例添加到继承用户定义策略的保护组。本机复制可用于计划内的数据移动(例如,在位置之间迁移应用程序)或计划外的事件,例如数据中心故障。测试恢复、计划迁移和故障转移可以通过

在一些实施例中,分布式存储数据平台100可以在每个虚拟实例的基础上复制数据。因此,与可以复制整个卷的传统系统不同,复制可以在分布式存储数据平台100中在细粒度的基础上仅在管理员感兴趣的数据的那些远程副本上发生。分布式存储数据平台100可以协调数据的移动,并且物理节点142可以使用多对多连接模型参与数据移动。该模型可以在所有参与节点之间分配工作负载,从而避免热点并最大限度地减少性能影响。复制第一数据后,后续复制可以基于自上次传输以来更改的数据块。例如,恢复点目标(RPO)可以设置在15分钟到25小时的范围内。管理员可以利用配置设置来限制带宽,使得远程复制不会淹没广域网(WAN)连接。

在一些示例中,分布式存储数据平台100可以包括对拉伸集群的支持。拉伸集群可以允许两个位置的两个相同配置的集群作为单个集群运行。通过站点之间的同步复制,可能会发生完整的数据中心故障,并且应用程序仍然可以在零数据丢失的情况下可用。换句话说,应用程序可以继续运行而不会丢失数据。恢复时间目标可以是识别故障并使故障转移生效所需的时间。

在一些示例中,分布式存储数据平台100可包括对克隆或可写快照的支持,该克隆或可写快照可用于快速服务开通,例如用于实例化虚拟实例,该虚拟实例执行虚拟桌面或测试和开发环境的应用程序。通过元数据操作复制虚拟实例的存储卷,可以实现快速且节省空间的克隆,而实际数据复制仅针对写操作执行。使用这种方法,可以在很短的时间内创建和删除任意数量的克隆。与使用全拷贝方法的传统系统相比,这种方法可以节省大量时间,提高操作敏捷性,并提高开发人员的生产力。克隆可以在创建时去重。当克隆开始彼此发散时,它们之间共有的数据可以共享,其中只有唯一的数据占用新的存储空间。去重服务可以消除发散克隆中的数据重复,以进一步减少克隆的存储占位。因此,可以在相对较少的存储容量下部署大量应用环境。

在一些实施例中,分布式存储数据平台100可以通过使用日志结构分布式对象存储来复制传入数据来支持高可用性。基于用户可配置的策略,在写入操作被应用程序确认之前,写入写入缓存的数据可以同步复制到位于不同节点的一个或多个缓存。这可以允许快速确认传入的写入操作,同时保护数据免受存储设备或节点故障的影响。如果SSD、NVMe设备或节点出现故障,可以使用可用的数据副本在其他存储设备或节点上快速重新创建副本。

在一些示例中,日志结构的分布式对象存储还可以复制从写缓存移动到容量层的数据。同样可以保护这种复制的数据免受存储设备或节点故障的影响。通过两个副本或总共三个数据副本,集群可以在两个存储设备或两个节点的不相关故障(例如,发生在不同物理节点上的故障)中保存下来,而没有数据丢失的风险。发生在同一节点上的故障可能会影响相同的数据副本,并可能被视为单个故障。例如,如果节点中的一个磁盘出现故障,随后同一节点上的另一个磁盘出现故障,则这些相关故障可以算作系统中的一个故障。在这种情况下,集群可以承受另一个节点上的另一个不相关的故障。

如果在单个物理节点142的数据平台控制器128中出现问题,来自驻留在该节点中的应用程序的数据请求可以自动路由到分布式存储数据平台100中的其他控制器。该相同能力可用于在滚动基础上升级或对数据平台控制器128执行维护,而不影响分布式存储数据平台100或数据的可用性。

在一些实施例中,数据服务210可以包括数据重新平衡功能。在分布式存储数据平台100中,没有与元数据访问相关联的开销,并且重新平衡可以非常有效。重新平衡可以是无破坏的在线过程,该无破坏的在线过程发生在缓存层和容量层,并且可以在特定的精细级别上移动,以提高存储容量的使用。当添加或移除节点和驱动器或者当它们出现故障时,数据服务210可以自动重新平衡现有数据。当新节点被添加到分布式存储数据平台100时,其容量和性能可用于新的和现有的数据。重新平衡服务可以将现有数据分发到新节点,并帮助确保分布式存储数据平台100中的所有节点从容量和性能角度统一使用。如果节点发生故障或从分布式存储数据平台100中移除,则再平衡引擎可以重建并将数据的副本从发生故障或移除的节点分发到分布式存储数据平台100中的可用节点。

图3示出了图示存储数据服务层136(例如,诸如数据服务210的一部分)可以如何实施去重的框图300的示例。在该示例中,框图300包括通过网络302连接到目标存储节点142Y的源存储节点142X。网络302可以包括任意数量的网络设备和任意配置的任意数量的节点。例如,源存储节点142X和目标节点142Y可以跨跨越一个或多个分散地理区域的广域网(WAN)连接;连接在同一数据中心、主机托管、校园网络或其他类型的局域网中的局域网(LAN)内;位于同一机架或机架内;等等。

源存储节点142X可以包括用于执行去重操作的强化学习(RL)引擎310和复制引擎320。目标存储节点142Y可以包括相同或相似的元素和/或互补元素(例如,用于重构去重数据或解压缩压缩数据的元素),但是为了简单和简洁的目的,这里没有示出。通常,RL引擎310可以将去重作为多臂老虎机(MAB)问题来处理,该去重适用于在一个或多个动作的单独集合中最大化回报(或最小化成本),该一个或多个动作用于去重从源存储节点142X到目标存储节点142Y的数据。

在该示例中,RL引擎310包括MAB排他动作选择器元件312和排他动作成本矩阵314。MAB排他动作选择器元件312可以阐明RL引擎310可以为去重复而采取的一组排他动作(或臂)和用于选择特定排他动作(或臂)的逻辑。作为简单的示例,一组独立的动作可以包括:

·压缩数据(例如,行程编码(RLE)、霍夫曼编码、部分匹配预测(PPM)、Burrows-Wheeler、Lempel-Ziv(LZ)和变体等);

·计算数据的散列(例如,循环冗余校验(32位)(CRC-32)、消息验证代码(MAC)、通用散列消息验证代码(UMAC)、消息摘要算法编号5(MD5)、安全散列算法(SHA-1)、高级通信技术研究与开发((RACE)完整性原语评估(RIPE))消息摘要(160位)(RIPEMD-160)等)并将散列映射到去重数据库;和

·合并连续的重复文件块。

本领域普通技术人员将理解,在各种其他示例中可以有任意数量的不同动作和任意数量的不同动作的组合,但是为了简洁和方便理解,这三个动作在本文中被提供为一组独立且排他的去重动作。表1列出了从独立动作导出的一组排他动作(或臂)。例如,由于在此示例中存在三个独立动作“M”,因此可以有2

表1用于去重的RL引擎的排他动作“A”示例

排他动作成本矩阵314阐述了RL引擎310采取的每个排他动作的成本以及用于计算成本的逻辑。本领域普通技术人员将理解,对于所有相关目的,最小化成本“C”等同于最大化回报“R”(例如,R=-C)。在此示例中,可以根据计算资源来确定每个排他动作的成本,该计算资源在当这些资源正被其他进程使用时可用于去重。例如,可用CPU=总CPU-通过除数据复制外的进程(例如,与数据复制无关的进程)使用的CPU。可用CPU可用于压缩数据、合并数据或计算不同数量的散列。同样,可用网络带宽可用于发送数据和/或散列。在一些实施例中,可以在共同度量下量化不同的计算资源。表2列出了用于标准化与排他性动作相关联的不同计算资源的度量的方法的示例。

表2标准化排他动作成本的示例性方法

以这种方式,RL引擎310可以为一批‘b’块计算每个排他动作消耗的总成本。例如,RL引擎310可以将每个排他性动作的成本相对于随机变量“R”定义为成本集{R

其中

选择回报的次数可以定义为:

其中a

表3列出了在选择每个时期的排他动作之后每个动作的排他动作成本(或回报)矩阵314的示例。在每个时期,动作R

表3最后N个动作的成本(或回报)矩阵示例

最后一列(例如,l+N+1)时期是RL引擎310可以为动作“i”做出决定的时间。表4-表6列出了示出在一些实施例中可以如何选择动作的伪代码。

表4主函数伪代码示例

表5 Update_Bandit的示例性伪代码

表6 Get_Best_Bandit函数的示例性伪代码

图4图示了用于根据计算资源的用户指定分配来执行数据去重的过程400的示例。普通技术人员将理解,对于本文讨论的任何过程,除非另有说明,否则在各种示例的范围内,可以存在以类似或替代顺序或并行执行的附加步骤、更少步骤或替代步骤。在一些实施例中,过程400可以至少部分地由存储数据平台(例如,分布式存储数据平台100)、存储数据平台的存储服务层(例如,存储数据服务层136)、存储数据平台的数据服务(例如,数据服务210)、存储数据平台的物理存储节点(例如,物理存储节点142)、物理存储节点(例如,RL引擎310)的加强学习(RL)和/或物理存储节点的复制引擎(例如,复制引擎320)。

过程400可以从步骤402开始,其中物理存储节点可以计算用于在预定数量的时期执行与数据去重相关联的一组排他动作中的每个排他动作的相应成本。每个排他动作可以包括一个或多个独立的去重动作,例如压缩数据、计算数据的一个或多个散列并将散列映射到去重数据库(例如,如果散列值不匹配数据去重数据库中的任何其他条目,则将散列值存储为新条目,或如果散列与现有条目匹配,则将数据指向现有条目)和/或合并数据的多个连续块。在一些实施例中,成本可以计算为物理存储节点的计算资源(例如,处理、存储器、存储装置、网络、功率等)的可用量,或者总计算资源量与该物理存储节点上运行的由除了复制之外的进程利用的计算资源之间的差值。例如,可用CPU=总CPU-由非复制的进程使用的CPU。在一些示例中,计算用于执行与数据去重相关联的一组排他动作中的每个排他动作的成本还可以包括标准化每种类型计算资源的不同度量并将它们组合,例如表2中所示。在预定时间量的时期之后,物理存储节点将填充排他动作成本矩阵(例如,排他动作成本矩阵314,其示例在表3中阐述)。

在步骤404,物理存储节点可以根据计算资源的用户指定的分配确定执行去重的最佳策略。例如,物理存储节点可以确定数据去重策略,该数据去重策略使CPU利用率、存储器利用率、存储利用率、网络带宽利用率、网络时延、功率等中的一个或多个最小化。表6的伪代码中列出了这种方法的一个示例。作为另一个示例,物理存储节点可以确定去重策略,该去重策略在这些目标中的两个或多个之间取得平衡。作为又一示例,物理存储节点可以确定去重策略,使得一个或多个计算资源的利用率不超过预定阈值。在一些实施例中,还可以组合这些各种去重策略,例如最小化一个计算资源的利用率,并确保另一计算资源的利用率不超过预定阈值。

过程400可以接着行进到物理存储节点,该物理存储节点应用多臂赌徒(MAB)算法,以选择在步骤402的预定时间量的时期之后要执行的下一个排他动作,例如表4的伪代码中列出的。例如,在步骤406处,物理存储节点可以选择随机数。MAB算法可以继续到决策块408,其中物理存储节点可以将随机数与阈值进行比较。若随机数小于阈值,流程400可继续进行步骤410,其中物理存储节点可选择随机排他动作作为待执行的下一动作,执行随机选择的排他动作,并使用执行随机选择的排他动作的结果更新排他动作成本矩阵。过程400然后可以返回到步骤406,以再次应用MAB算法,用于选择下一个要执行的排他动作以去重。

如果随机值大于或等于阈值,则过程400可以进行到步骤412,其中物理存储节点可以执行与最小成本(或最大回报)相关联的排他动作,例如在步骤404中确定的。在步骤412之后,过程400可以返回到步骤406,以再次应用MAB算法,以选择下一个要执行的排他动作以进行去重。

通过这种方式,物理存储可以战略性地计算去重的回报,以动态更改数据和计算资源的可用性。在一些实施例中,强化学习可以使物理存储节点能够在没有来自管理员的配置、预设模型和/或调整参数的情况下执行去重。在其他实施例中,物理存储节点能够在了解到可用资源的同时最佳地执行去重复操作(例如,根据计算资源的用户可指定分配)。

图5A和图5B图示了根据各种实施例的系统。当实践各种实施例时,更合适的系统对于本领域普通技术人员将是显而易见的。本领域普通技术人员也将容易理解其他系统也是可能的。

图5A图示了总线计算系统500的示例,其中系统的部件使用总线505彼此电通信。计算系统500可以包括处理单元(CPU或处理器)510和系统总线505,该系统总线505可以将包括系统存储器515的各种系统部件(例如只读存储器(ROM)520和随机存取存储器(RAM)525)耦合到处理器510。计算系统500可以包括高速存储器的缓存512,该缓存512与处理器510直接连接、紧邻或集成为处理器510的一部分。计算系统500可以将数据从存储器515、ROM520、RAM525和/或存储设备530复制到缓存512,以供处理器510快速访问。以此方式,缓存512可提供性能提升,该性能提升避免处理器在等待数据时延迟。这些和其他模块可以控制处理器510执行各种动作。也可以使用其他系统存存储器515。存储器515可以包括具有不同性能特征的多种不同类型的存储器。处理器510可以包括用于控制处理器510的任何通用处理器和硬件模块或软件模块(例如存储在存储设备530中的模块1532、模块2534和模块3536)以及其中软件指令被合并到实际的处理器设计中的专用处理器。处理器510本质上可以是完全自我容纳的计算系统,包含多个核或处理器、总线、存储器控制器、缓存等。多核处理器可以是对称的或非对称的。

为了使用户能够与计算系统500交互,输入设备545可以表示任何数量的输入机制,例如用于语音的麦克风、用于手势或图形输入的触摸保护屏幕、键盘、鼠标、运动输入和语音等。输出设备535也可以是本领域技术人员已知的多种输出机构中的一种或多种。在一些情况下,多模式系统可以使用户能够提供多种类型的输入,以与计算系统500通信。通信接口540可以支配和管理用户输入和系统输出。对任何特定硬件配置的操作可能没有限制,因此本文的基本特征可以很容易地替换为改进的硬件或固件配置,如它们被开发的。

存储设备530可以是非易失性存储器并且可以是硬盘或其他类型的可以存储由计算机可访问的数据的计算机可读介质,例如磁带、闪存卡、固态存储设备、数字多功能磁盘、盒式磁带、随机存取存储器、只读存储器及其组合。

如上所述,存储设备530可以包括用于控制处理器510的软件模块532、534、536。其他硬件或软件模块也被考虑在内。存储设备530可以连接到系统总线505。在一些实施例中,执行特定功能的硬件模块可以包括软件部件,该软件部件存储在计算机可读介质中与诸如处理器510、总线505、输出设备535等的必要硬件部件相关,以执行该功能。

图5B图示了可以根据实施例使用的芯片组计算系统550的示例架构。计算系统550可以包括处理器555,该处理器表示能够执行软件、固件和硬件的任何数量的物理和/或逻辑不同的资源,该软件、固件和硬件被配置为执行所识别的计算。处理器555可以与芯片组560通信,芯片组560可以控制处理器555的输入和输出。在该示例中,芯片组560可以向输出设备565(例如显示器)输出信息,并且可以向存储设备570读取和写入信息,存储设备570可以包括磁介质、固态介质和其他合适的存储介质。芯片组560还可以从RAM575读取数据和向RAM575写入数据。可以提供用于与各种用户接口部件585接口的桥接器580,用于与芯片组560接口。用户界面部件585可以包括键盘、麦克风、触摸检测和处理电路、和诸如鼠标之类的指向设备等。计算系统550的输入可以来自机器生成和/或人为生成的各种源中的任一个。

芯片组560还可与一个或多个通信接口590接口,该通信接口590具有不同物理接口。通信接口590可以包括用于有线和无线LAN、用于宽带无线网络以及个人区域网络的接口。用于生成、显示和使用本文公开的技术的方法的一些应用可以包括通过物理接口接收有序数据集或者由机器本身通过处理器555分析存储在存储设备570或RAM575中的数据而生成。此外,计算系统550可以经由用户界面部件585从用户接收输入,并且通过使用处理器555解释这些输入来执行适当的功能,例如浏览功能。

应当理解,计算系统500和550可以分别具有多于一个的处理器510和555,或者是联网在一起以提供更大处理能力的一组或集群的一部分的计算设备。

为了解释的清楚,在一些实例中,各种实施例均可以被呈现为包括单独的功能块,所述功能块包括包含设备、设备部件、以软件体现的方法中的步骤或例程或者硬件和软件的组合。

在一些示例中,计算机可读存储设备、介质和存储器可以包括包含位流等的电缆或无线信号。然而,当提及时,非暂时性计算机可读存储介质明确排除诸如能量、载波信号、电磁波和信号本身的介质。

根据上述示例的方法可以使用计算机可执行指令来实现,该计算机可执行指令被存储或以其他方式从计算机可读介质可用。此类指令可以包括例如指令和数据,该指令和数据导致或以其他方式配置通用计算机、专用计算机或专用处理设备,以执行特定功能或功能组。使用的部分计算机资源可以通过网络访问。计算机可执行指令可以是例如二进制、中间格式指令,例如汇编语言、固件或源代码。可用于存储指令、使用的信息和/或在根据所描述的示例的方法期间创建的信息的计算机可读介质的示例包括磁盘或光盘、闪存、提供有非易失性存储器的USB设备、网络存储设备等。

实现根据这些公开内容的方法的设备可以包括硬件、固件和/或软件,并且可以采用多种形式因素中的任一种。此类形式因素的一些示例包括通用计算设备(例如服务器、机架安装设备、台式计算机、膝上型计算机等)或通用移动计算设备(例如平板电脑、智能手机、个人数字助理、可穿戴设备等)。本文描述的功能也可以体现在外围设备或附加卡中。作为进一步的示例,此类功能也可以在不同芯片或在单个设备中执行的不同进程之间的电路板上实现。

指令、用于传送此类指令的介质、用于执行它们的计算资源以及用于支持此类计算资源的其他结构是用于提供在这些公开内容中描述的功能的手段。

尽管使用了各种示例和其他信息来解释所附权利要求范围内的方面,但不应基于此类示例中的特定特征或布置来暗示对权利要求的限制,因为普通技术人员将能够使用这些示例以推导出各种实现。此外,虽然一些主题可能已经以特定于结构特征和/或方法步骤的示例的语言进行了描述,但是应当理解,所附权利要求书中限定的主题不一定限于这些描述的特征或动作。例如,此类功能可以不同地分布或在不同于本文所标识的部件的部件中执行。相反,所描述的特征和步骤被公开为所附权利要求书范围内的系统和方法的部件的示例。

相关技术
  • 用于优化数据去重的强化学习
  • 用于库存控制和优化的强化学习系统和方法
技术分类

06120113293658