CN116601596A - 使用数据相似度来选择分段进行垃圾收集 - Google Patents

使用数据相似度来选择分段进行垃圾收集 Download PDF

Info

Publication number
CN116601596A
CN116601596A CN202180085082.2A CN202180085082A CN116601596A CN 116601596 A CN116601596 A CN 116601596A CN 202180085082 A CN202180085082 A CN 202180085082A CN 116601596 A CN116601596 A CN 116601596A
Authority
CN
China
Prior art keywords
data
storage
data segments
storage system
hash
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
CN202180085082.2A
Other languages
English (en)
Inventor
伊桑·L·米勒
约翰·科尔格洛夫
罗纳德·卡尔
罗伯特·李
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.)
Pure Storage Inc
Original Assignee
Pure Storage Inc
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 Pure Storage Inc filed Critical Pure Storage Inc
Publication of CN116601596A publication Critical patent/CN116601596A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • 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/0608Saving storage space on storage systems
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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
    • 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
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

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

Abstract

一种存储系统在存储式存储器中利用数据压缩来执行垃圾收集。所述系统从数据分段获得哈希结果。所述系统基于所述哈希结果确定数据分段的内容相似度。所述系统对具有满足相似度阈值的内容相似度的两个或更多个数据分段的实时数据执行数据压缩。所述系统将所述两个或更多个数据分段的经压缩实时数据写入到所述存储式存储器中。

Description

使用数据相似度来选择分段进行垃圾收集
交叉参考
本申请案主张2021年1月25日提出申请的美国非临时申请案第17/156,979号的权益,所述申请案的整个内容特此以引用的方式并入。
技术领域
本发明所涉及的技术领域大体来说是数据存储系统,更具体来说是数据存储系统中的垃圾收集及数据压缩。
背景技术
数据存储系统存在许多类型及架构,其具有各种类型的存储式存储器及针对数据可靠性及数据存储效率的各种方案。许多存储系统在存储式存储器中采用垃圾收集,其中在存储式存储器中对实时数据重新定位,使得可擦除并再使用具有死数据的擦除块,也称作回收存储式存储器。许多存储系统采用各种类型的数据压缩,其中辨识并压缩相同及/或相似数据以实现较大数据存储效率。重复数据删除是针对数据存储效率的另一策略。随着存储系统纵向扩展且因对更多数据的存储的不断增加的需要,持续需要数据存储技术、垃圾收集技术及数据压缩技术的改进。在计算及数据存储技术的此环境中产生了本发明实施例。
附图说明
图1A图解说明根据一些实施方案的用于数据存储的第一实例系统。
图1B图解说明根据一些实施方案的用于数据存储的第二实例系统。
图1C图解说明根据一些实施方案的用于数据存储的第三实例系统。
图1D图解说明根据一些实施方案的用于数据存储的第四实例系统。
图2A是根据一些实施例的具有多个存储节点及耦合到每一存储节点的内部存储装置以提供网络附接存储装置的存储群集的透视图。
图2B是展示根据一些实施例的耦合多个存储节点的互连交换器的框图。
图2C是根据一些实施例的多层级框图,其展示存储节点的内容及非易失性固态存储单元中的一者的内容。
图2D展示根据一些实施例的存储服务器环境,其使用一些前述各图的存储节点及存储单元的实施例。
图2E是根据一些实施例的叶片硬件框图,其展示控制平面、计算及存储平面,以及与基础物理资源交互的权威。
图2F描绘根据一些实施例的存储群集的叶片中的弹性软件层。
图2G描绘根据一些实施例的存储群集的叶片中的权威及存储资源。
图3A陈述根据本公开的一些实施例的经耦合以用于与云服务提供者进行数据通信的存储系统的图式。
图3B陈述根据本公开的一些实施例的存储系统的图式。
图3C陈述根据本公开的一些实施例的基于云的存储系统的实例。
图3D图解说明可具体经配置以执行本文中所描述的过程中的一或多者的示范性计算装置350。
图4图解说明本公开的实施例中的适合于具有存储式存储器的各种存储系统的利用数据压缩执行垃圾收集的垃圾收集模块。
图5图解说明各种实施例中的一种类型的相似度度量,即杰卡德(Jaccard)距离,其应用于存储系统中的数据分段以选择要压缩在一起以实现存储效率的数据分段。
图6图解说明用于图4中的垃圾收集模块的分段选择器的实施例。
图7图解说明作为图4的垃圾收集模块的实施例中的适合机制的滑动窗口哈希函数及哈希值的确定性选择。
图8图解说明图4的垃圾收集模块的实施例中的适合的数据压缩模块及变化形式的实施例。
图9陈述在存储系统的各种实施例中或由存储系统的各种实施例实践的利用数据压缩的垃圾收集方法的流程图。
具体实施方式
存储系统(也称为数据存储系统)参考图1A-3D描述为具有用于数据可靠性及数据存储效率的各种机构,并且参考图4-9具有用于垃圾收集、数据压缩及提高的数据存储效率的各种机构。仅接在下面介绍数据缩减技术中使用数据相似度来选择分段进行垃圾收集的存储系统的概念及实施例,后续接着对各种存储系统进行描述。
在垃圾收集期间且为了提高数据存储效率,本文中所描述的数据存储系统实施例及其变化形式将具有相似内容的块分组在一起并将那些块压缩在一起以实现改进的数据缩减。为此,存储系统识别哪些分段中具有相似的块,因此存储系统可同时对那些分段运行垃圾收集(GC)以允许此种分组。一旦存储系统完成此种分组,存储系统便可压缩并写出含有相似块的新分段,从而获得更好的数据压缩。
存储系统可使用记录分段中数据组块的哈希的分段指纹来描述每一分段。这些组块可能很小(大约几十个字节);由于其数量相对较多,存储系统仅存储哈希的子集,这可通过取k个最小哈希(即,在分段的原始完整哈希集中具有较低哈希值的计数k个哈希)、k个最大哈希(即,在分段的原始完整哈希集中具有较高哈希值的计数k个哈希)或存储系统确定性地选择哈希(也称为哈希值或哈希结果)使得独立的选择过程选取相同的哈希的一些其他技术来完成。这些哈希可与分段一起存储,或可在存储系统每次要进行GC时计算。存储系统然后计算分段之间的杰卡德距离,或使用一些其它相似度度量,并将其用作度量来选择要一起进行垃圾收集的分段。在一些实施例中,存储系统可进一步计算经历GC的分段中的个别块的相似度量,并使用所述信息将活动块路由到具有其它相似数据的分段,使得具有根据相似度度量确定的相似度量的数据的数据分段被进行垃圾收集并压缩在一起。
在一些实施例中,此信息可联合其它信息(例如,年龄、脏百分比或其它数据特性)一起用于选择分段进行GC。存储系统的实施例还可使用此信息来将系统中的数据路由到将“专门”存储具有特定数据型式(例如数据类型、特定应用或客户端的数据等)的块的节点。
相似度哈希是用于确定两个或更多个块具有相似或相同内容的技术。文献中提供了几种计算哈希的方案,并且通常将其结果表示为一个块与另一块之间的距离程度。
快速确定两个块的相似度的最常见技术之一是产生各种大小的相对较小的哈希的较大集合,并选择那些哈希的子集来表示整个块。举例来说,可对重叠的k字节序列(通常k介于4与8之间)执行“滚动”哈希,从而每4KiB块产生将近4096个哈希。应了解,在一些实施例中,实际上对值进行哈希(例如,使用cityhash或相似方法)以确保值的良好分布是重要的。然后,算法选择n个最小的哈希作为块的指纹。如果对两个不同的块进行此操作,那么两个块中相似的k字节序列的数目与指纹中匹配的哈希的数目约相同。
鉴于两个或更多个块以某种方式相似,将其分组在一起以运行压缩算法通常具有数据缩减的益处,因为其可能具有共同子串或者共同字节值的相似分布。在一些实例中,如果两个原始数据组块使用相同算法被压缩并产生相似的压缩字典(在此情形中,经压缩数据的至少字典部分可包含共同子串),那么即使是不同的预压缩数据(例如存储系统接收的各种已压缩数据块,其本身是从相似但不相同的数据中压缩的)可进一步压缩。
本文中所描述的存储系统实施例安排在写入大型数据分段时将相似的块聚集在一起,以供在可将来自多个源的块聚集在一起以写出到共享的大型数据分段中的存储系统中使用。举例来说,在跨越一组快闪存储装置或跨越支持分区式存储的一组驱动器写入分片的大型经擦除编码的条带的存储系统中,通常将数据聚集在大小为大约兆字节或者甚至数十或数百兆字节的大型数据分段中,以作为分片的经擦除编码的条带写出。即使存储系统的逻辑内容被替换,存储系统也越来越普遍避免覆写那些所存储大型数据分段,而是使用垃圾收集技术来从这些大型数据分段中删除不再需要的内容。来自那些大型分段的剩余内容可写入到新的大型数据分段,所述新的大型数据分段本身是从多个源聚集在一起的,以保持来自早期大型数据分段的仍然被存储系统存储的数据集需要的内容。
在通过从多个源收集数据以存储在集合式大型数据分段中而操作的此存储系统中,逻辑内容的映射可能基于对大型数据分段的参考与一些额外数据的某种组合,所述额外数据描述可如何从所述大型数据分段或块中提取特定较小数据组块。所述额外数据可为大型数据分段内的块索引或字节索引,或者其可为压缩在一起的块集合内的逻辑索引(例如,数据组块集的字节10,000到16,000,其然被压缩,此后存储于大型数据分段中)。这些技术可组合,其中大型数据分段中的块或字节索引可指向含有多个数据块的经压缩块,所述数据块应该与经压缩数据中的索引一起解压缩,以定位特定所存储逻辑内容。
将这些想法组合在一起,存储系统可使用相似度哈希来决定哪些大型数据分段或者甚至大型数据分段的哪些部分、特定数据块应该聚集在一起,从而使得可高效压缩在一起的数据被汇集在一起以一起进行压缩并写入在同一大型数据分段内。此算法可在数据被收集到某一数目的大型数据分段中的任何时候使用,包含在数据首次写入到存储系统时(或者在数据首次写入到某个第一级持久高速缓冲存储器并随后写入到大容量持久存储装置之后)及任何后续的垃圾收集遍次。在一些实施例中,垃圾收集遍次提供了最多的机会,因为相似度哈希本身可驱动对特定现有大型数据分段进行垃圾收集的优先级及调度,以形成新的大型数据分段。
应了解,用于在横向扩展存储系统中按比例管理性能的常用技术是在逻辑层级处划分管理特定数据子集的责任,其中具有计算及存储器资源的不同处理节点处置数据的不同子集或逻辑存储数据内的不同逻辑结构的互锁、逻辑一致性及恰当存储处置的其它方面。举例来说,可基于文件的索引节点号或某一其它文件识别符将文件划分并指派给处理节点;或者,可按范围划分文件的子范围或卷的块范围,使得可通过跨越多个处理节点并行处理文件的单独部分提高大文件的性能。
横向扩展存储装置的另一共同特征是物理持久存储装置(例如,快闪存储器)的特定元件可从所有处理节点的小子集访问。另外,在许多情形中,物理持久存储装置的特定元件含在处理节点内,并且仅可通过与可访问(或物理含有)所述物理持久存储装置元件的处理节点通信来访问。在写入大型数据分段的横向扩展存储系统中,使每一不同的节点处置将数据累积到特定的大型数据分段中可特别高效。因此,大型数据分段被擦除编码并跨越物理持久存储装置的元件分片,所述元件通过单独的处理节点访问(或含在单独的处理节点内),使得写入大型数据分段需要将数据发送到其它处理节点以便写入大型数据分段作为经擦除编码条带。即使在此情形中,在一个处理节点内处置对特定逻辑元素的控制也有许多优点,因为其大大降低了锁定的复杂性并确保针对每一特定逻辑元素的操作的一致性。
然而,通过相似度哈希将单独的数据组块放在一起会引入另一类型的协调,其可被认为与按逻辑元素划分正交。相似且应作为组合压缩块一起写入的特定数据组块不遵循可通过例如文件识别符或块地址等逻辑元素哈希到处理节点的型式,因为相似度哈希是从内容衍生的,而不是通过如何在逻辑上寻址所述内容。应了解,此特征赋予了解决可能问题的机会。现在存在跨越必须协调的处理节点操作的两个层。一个层是处置逻辑结构协调的层,可由逻辑元素处理节点来处置。另一层确定哪些数据组块是相似的,并安排将相似的数据组块压缩在一起(例如由相似度压缩处理节点处置),其全部发生在所述压缩的结果然后可跨越存储元素处理节点进行分片以作为经擦除编码条带写入到物理持久存储装置的单独元件之前(所有这些类型的处理节点通常是在相同组处理节点上运行的计算逻辑的不同方面)。要压缩在一起的数据应驻存于同一相似度压缩处理节点上的同一存储器中以通过压缩算法一起运行,其全部发生在最终被传送到各种其它存储元素处理节点以作为大型经擦除编码数据分段条带的分片写出之前。另外,特定大型数据分段中可包含的压缩量及因此数据量在处置特定逻辑元素的内容的逻辑元素处理节点正在将针对所述内容的写入分配到大型数据分段中时无法被知晓。因此,当处理特定逻辑元素时,进行所述处理的逻辑无法真正知晓其将以哪一大型数据分段结束。
可通过将通过相似度哈希将内容聚集在一起、压缩及累积到大型数据分段中的时间与针对存储系统的操作影响逻辑元素的时间解耦来减轻这些机会中的一些或所有机会。举例来说,垃圾收集遍次可在很大程度上与针对逻辑元素的操作解耦,唯一的交互是更新指向特定数据所存储之处的任何指针,无论如何进行垃圾收集时通常需要执行此任务。如果在数据进入存储系统时或在数据最初被存储时计算相似度哈希,那么可更新存储器内或持久索引,使得垃圾收集遍次可在垃圾收集遍次中知晓哪些数据组块相似并且受益于被压缩在一起。相似度压缩处理节点可从多种大型数据分段中读取通过相似度哈希匹配在一起的组块,并将其压缩在一起。处理节点可继续累积具有额外相似度哈希的额外数据组块,然后可单独将所述数据组块压缩在一起、累积并将所得到的经压缩数据写出到新的大型数据分段中以通过存储元素处理节点写出。然后也许通过逻辑元素处理节点可更新对数据组块的参考,并且当现有大型数据分段最终被进行垃圾收集时,那些现有大型数据分段内的剩余组块然后可被认为是垃圾,其剩余数据被写入其它处,然后最终被擦除并重新使用。
应了解,上述处理步骤与逻辑元素的交互最少,并且不比正常的垃圾收集遍次的交互更多。不同的是,所涉及的处理节点是以如下方式划分的,具有相同相似度哈希的数据在任何垃圾收集遍次中均由同一相似度压缩处理节点处理。任何数目的此类处理节点可针对不同相似度哈希集并发操作,这与不使用相似度哈希操作的横向扩展存储大型数据分段垃圾收集的常见实施方案相似。
实施此相似度哈希压缩模型可提出组合问题,其中现有大型数据分段可包含与许多其它大型数据分段中的相似度哈希匹配的数据组块,并且其中那些其它大型数据分段包含与许多其它大型数据分段中的相似度哈希匹配的数据组块,等等。因此,在给出尚未将具有匹配的相似度哈希的数据组块压缩在一起的所存储的数据集(特别是具有大量随机分散的匹配的相似度哈希的数据集)的情况下,将其作为垃圾收集的部分汇集在一起在计算上可为非常昂贵的。在一些实施例中,单独运行两个过程可能更有意义,其中一个过程识别相似的块并将其汇集在一起,导致位于其原始位置的块变成“垃圾”,最终由标准垃圾收集器进行垃圾收集。
在新到达的数据已经存储于第一级持久高速缓冲存储器中之后重新处理所述新到达的数据时可采用相同的算法。在一些实施例中,在数据在写入到大容量持久存储装置的过程中被变换时,所述数据可与上文所描述的用于基于匹配的相似度哈希将现有数据重写到大型数据分段中的过程合并。
应进一步了解,在本文中所描述的具有权威的存储系统中,权威在其整个生命期处置分段的管理。此模型假设来自任何源的数据可汇集在一起以共同压缩到同一分段中,这又意味着一个实施方案会减少权威内的数据。一些存储系统实施例可具有分段所有权及更高级结构之间的分离,这将需要叶片之间的不同消息传递模型,并且将影响权威(及垃圾收集)如何工作的逻辑。
一些实施例可通过查看作为垃圾收集候选者的分段群组且然后按相似度距离对那些分段内的块进行排序来随时间对分段进行排序,从而在不需要全局表的情况下产生益处。一些实施例可通过随机取样随时间寻找更好的候选块,这可提高识别应同时共同进行垃圾收集的分段的几率。在具有权威的情况下,此排序可在个别权威内实施,从而改进权威管理的数据集内的数据缩减,但不一定达到更全局的实施方案可能实现的程度。
一些实施例找到共同基块并将其构建为字典(其可用作差分压缩的基础)。此实施例适合于具有权威的存储系统,因为其可能界定相对有限的一组不变的基块,权威可在逐权威的基础上将差异存储到所述基块。或者,一些实施例概括所述过程以运行用于将相似块压缩在一起的完整的跨权威模型。一些实施例可采用直接映射快闪存储器来通过移动远离金字塔的复杂性来简化前瞻性特征开发。在一些实施例中,可在系统中利用各种驱动器狭槽中的驱动器类型的混合。这些实施例可以更随机的存储形式利用边桌,例如3D交叉点。
参考所附图式描述根据本公开的实施例的用于数据存储系统的实例方法、设备及产品,所附图式以图1A开始。图1A图解说明根据一些实施方案的用于数据存储的实例系统。出于图解说明而非限制目的,系统100(本文中也称为“存储系统”)包含诸多元件。可注意,在其它实施方案中,系统100可包含以相同或不同方式配置的相同、较多或较少元件。
系统100包含若干个计算装置164A-B。计算装置(本文中也称为“客户端装置”)可体现为例如数据中心中的服务器、工作站、个人计算机、笔记型计算机,或诸如此类。计算装置164A-B可针对数据通信通过存储区域网络(‘SAN’)158或局域网(‘LAN’)160耦合到一或多个存储阵列102A-B。
SAN 158可利用多种数据通信网状架构、装置及协议来实施。举例来说,用于SAN158的网状架构可包含光纤通道、以太网、无线带宽、串行附接小型计算机系统接口(‘SAS’),或诸如此类。供与SAN 158一起使用的数据通信协议可包含高级技术附接(‘ATA’)、光纤通道协议、小型计算机系统接口(‘SCSI’)、因特网小型计算机系统接口(‘iSCSI’)、HyperSCSI、经由网状架构的快速非易失性存储器(‘NVMe’),或诸如此类。可注意,SAN 158係为了图解说明而非限制而提供。可在计算装置164A-B与存储阵列102A-B之间实施其它数据通信耦合件。
LAN 160也可利用多种网状架构、装置及协议来实施。举例来说,用于LAN 160的网状架构可包含以太网(802.3)、无线(802.11),或诸如此类。供在LAN 160中使用的数据通信协议可包含传输控制协议(‘TCP’)、用户数据报协议(‘UDP’)、因特网协议(‘IP’)、超文本传送协议(‘HTTP’)、无线访问协议(‘WAP’)、手持式装置输送协议(‘HDTP’)、会话起始协议(‘SIP’)、实时协议(‘RTP’),或诸如此类。
存储阵列102A-B可为计算装置164A-B提供持续性数据存储。在实施方案中,存储阵列102A可含于一底盘(未展示)中,且存储阵列102B可含于另一底盘(未展示)中。存储阵列102A及102B可包含一或多个存储阵列控制器110A-D(本文中也称为“控制器”)。存储阵列控制器110A-D可体现为包括计算机硬件、计算机软件或计算机硬件与软件的组合的自动计算机械的模块。在一些实施方案中,存储阵列控制器110A-D可经配置以执行各种存储任务。存储任务可包含将从计算装置164A-B接收的数据写入到存储阵列102A-B、从存储阵列102A-B中擦除数据、从存储阵列102A-B检索数据且将数据提供到计算装置164A-B、监测及报告磁盘利用率及性能、执行冗余操作(例如独立驱动器冗余阵列(‘RAID’)或类RAID数据冗余操作)、压缩数据、加密数据,等等。
存储阵列控制器110A-D可以多种方式实施,包含实施为现场可编程门阵列(‘FPGA’)、可编程逻辑芯片(‘PLC’)、专用集成电路(‘ASIC’)、系统单芯片(‘SOC’)或包含离散组件(例如处理装置、中央处理单元、计算机存储器或各种适配器)的任何计算装置。存储阵列控制器110A-D可包含例如经配置以支持经由SAN 158或LAN 160进行通信的数据通信适配器。在一些实施方案中,存储阵列控制器110A-D可独立地耦合到LAN 160。在实施方案中,存储阵列控制器110A-D可包含针对数据通信通过中间平面(未展示)将存储阵列控制器110A-D耦合到持续性存储资源170A-B(本文中也称为“存储资源”)的I/O控制器或诸如此类。持续性存储资源170A-B主要包含任何数目的存储驱动器171A-F(本文中也称为“存储装置”)及任何数目的非易失性随机存取存储器(‘NVRAM’)装置(未展示)。
在一些实施方案中,持续性存储资源170A-B的NVRAM装置可经配置以从存储阵列控制器110A-D接收待存储于存储驱动器171A-F中的数据。在一些实例中,所述数据可来源于计算装置164A-B。在一些实例中,将数据写入到NVRAM装置可比将数据直接写入到存储驱动器171A-F更快地执行。在实施方案中,存储阵列控制器110A-D可经配置以利用NVRAM装置作为用于旨在写入到存储驱动器171A-F的数据的可快速存取的缓冲器。使用NVRAM装置作为缓冲器的写入请求的等待时间可相对于其中存储阵列控制器110A-D将数据直接写入到存储驱动器171A-F的系统而改进。在一些实施方案中,NVRAM装置可利用呈高带宽、低等待时间RAM的形式的计算机存储器来实施。NVRAM装置称为“非易失性”,这是因为NVRAM装置可接收或包含在NVRAM装置失去主电源之后维持RAM的状态的独特电源。此电源可为电池、一或多个电容器,或诸如此类。响应于失去电源,NVRAM装置可经配置以将RAM的内容写入到持续性存储装置,例如存储驱动器171A-F。
在实施方案中,存储驱动器171A-F可指经配置以持续地记录数据的任何装置,其中“持续地”或“持续性”是指装置在失去电源之后维持所记录数据的能力。在一些实施方案中,存储驱动器171A-F可对应于非磁盘存储媒体。举例来说,存储驱动器171A-F可为一或多个固态驱动器(‘SSD’)、基于快闪存储器的存储装置、任何类型的固态非易失性存储器,或任何其它类型的非机械存储装置。在其它实施方案中,存储驱动器171A-F可包含机械或旋转硬盘,例如硬盘驱动器(‘HDD’)。
在一些实施方案中,存储阵列控制器110A-D可经配置用于从存储阵列102A-B中的存储驱动器171A-F卸下装置管理责任。举例来说,存储阵列控制器110A-D可管理可描述存储驱动器171A-F中的一或多个存储器块的状态的控制信息。举例来说,所述控制信息可指示特定存储器块已发生故障且不应再被写入、特定存储器块含有用于存储阵列控制器110A-D的启动代码、已在特定存储器块上执行的编程-擦除(‘P/E’)循环的数目、存储于特定存储器块中的数据的年龄、存储于特定存储器块中的数据的类型,等等。在一些实施方案中,所述控制信息可作为元数据利用相关联存储器块来存储。在其它实施方案中,存储驱动器171A-F的控制信息可存储于由存储阵列控制器110A-D选择的存储驱动器171A-F的一或多个特定存储器块中。所选择存储器块可以指示所选择存储器块含有控制信息的识别符加标签。所述识别符可由存储阵列控制器110A-D联合存储驱动器171A-F利用来快速识别含有控制信息的存储器块。举例来说,存储控制器110A-D可发出要对含有控制信息的存储器块进行定位的命令。可注意,控制信息可如此大使得控制信息的部分可存储于多个位置中、控制信息可存储于多个位置中(例如出于冗余目的),或控制信息可以其它方式跨越存储驱动器171A-F中的多个存储器块分布。
在实施方案中,存储阵列控制器110A-D可通过以下操作从存储阵列102A-B的存储驱动器171A-F卸下装置管理责任:从存储驱动器171A-F检索描述存储驱动器171A-F中的一或多个存储器块的状态的控制信息。从存储驱动器171A-F检索控制信息可例如通过存储阵列控制器110A-D向存储驱动器171A-F查询特定存储驱动器171A-F的控制信息的位置来执行。存储驱动器171A-F可经配置以执行使得存储驱动器171A-F能够识别控制信息的位置的指令。所述指令可由与存储驱动器171A-F相关联或以其它方式位于所述存储驱动器上的控制器(未展示)执行,且可致使存储驱动器171A-F扫描每一存储器块的一部分以识别存储有存储驱动器171A-F的控制信息的存储器块。存储驱动器171A-F可通过将包含存储驱动器171A-F的控制信息的位置的响应消息发送到存储阵列控制器110A-D而做出响应。响应于接收到响应消息,存储阵列控制器110A-D可发出要读取存储于与存储驱动器171A-F的控制信息的位置相关联的地址处的数据的请求。
在其它实施方案中,存储阵列控制器110A-D可通过以下操作从存储驱动器171A-F进一步卸下装置管理责任:响应于接收到控制信息而执行存储驱动器管理操作。举例来说,存储驱动器管理操作可包含通常由存储驱动器171A-F(例如,与特定存储驱动器171A-F相关联的控制器(未展示))执行的操作。举例来说,存储驱动器管理操作可包含确保数据不被写入到存储驱动器171A-F内的有故障的存储器块、确保数据以使得实现充分损耗均衡的方式被写入到存储驱动器171A-F内的存储器块,等等。
在实施方案中,存储阵列102A-B可实施两个或更多个存储阵列控制器110A-D。举例来说,存储阵列102A可包含存储阵列控制器110A及存储阵列控制器110B。在给定实例下,存储系统100的单个存储阵列控制器110A-D(例如,存储阵列控制器110A)可指定为具有主要状态(本文中也称为“主要控制器”),且其它存储阵列控制器110A-D(例如,存储阵列控制器110A)可指定为具有辅助状态(本文中也称为“辅助控制器”)。主要控制器可具有特定权利,例如更改持续性存储资源170A-B中的数据(例如,将数据写入到持续性存储资源170A-B)的权限。主要控制器的权利中的至少一些可取代辅助控制器的权利。例如,在主要控制器具有更改持续性存储资源170A-B中的数据的权利时,辅助控制器可不具有该权限。存储阵列控制器110A-D的状态可改变。举例来说,存储阵列控制器110A可指定为具有辅助状态,且存储阵列控制器110B可指定为具有主要状态。
在一些实施方案中,主要控制器(例如存储阵列控制器110A)可充当一或多个存储阵列102A-B的主要控制器,且第二控制器(例如存储阵列控制器110B)可充当一或多个存储阵列102A-B的辅助控制器。举例来说,存储阵列控制器110A可为存储阵列102A及存储阵列102B的主要控制器,且存储阵列控制器110B可为存储阵列102A及102B的辅助控制器。在一些实施方案中,存储阵列控制器110C及110D(也称为“存储处理模块”)两者可不具有主要或辅助状态。实施为存储处理模块的存储阵列控制器110C及110D可用作主要及辅助控制器(例如,分别地,存储阵列控制器110A及110B)与存储阵列102B之间的通信接口。举例来说,存储阵列102A的存储阵列控制器110A可经由SAN 158将写入请求发送到存储阵列102B。所述写入请求可由存储阵列102B的存储阵列控制器110C及110D两者接收。存储阵列控制器110C及110D促进通信,例如,将写入请求发送到适当存储驱动器171A-F。可注意,在一些实施方案中,存储处理模块可用于增加由主要及辅助控制器控制的存储驱动器的数目。
在实施方案中,存储阵列控制器110A-D经由中间平面(未展示)通信地耦合到一或多个存储驱动器171A-F且耦合到包含为存储阵列102A-B的部分的一或多个NVRAM装置(未展示)。存储阵列控制器110A-D可经由一或多个数据通信链路耦合到中间平面,且中间平面可经由一或多个数据通信链路耦合到存储驱动器171A-F及NVRAM装置。本文中所描述的数据通信链路共同由数据通信链路108A-D图解说明且可包含例如快速外围组件互连(‘PCIe’)总线。
图1B图解说明根据一些实施方案的用于数据存储的实例系统。图1B中所图解说明的存储阵列控制器101可与关于图1A所描述的存储阵列控制器110A-D相似。在一个实例中,存储阵列控制器101可与存储阵列控制器110A或存储阵列控制器110B相似。出于图解说明而非限制目的,存储阵列控制器101包含诸多元件。可注意,在其它实施方案中,存储阵列控制器101可包含以相同或不同方式配置的相同、较多或较少元件。可注意,下文可包含图1A的元件以帮助图解说明存储阵列控制器101的特征。
存储阵列控制器101可包含一或多个处理装置104及随机存取存储器(‘RAM’)111。处理装置104(或控制器101)表示一或多个通用处理装置,例如微处理器、中央处理单元,或诸如此类。更特定来说,处理装置104(或控制器101)可为复杂指令集计算(‘CISC’)微处理器、精简指令集计算(‘RISC’)微处理器、极长指令字(‘VLIW’)微处理器或实施其它指令集的处理器或者实施指令集的组合的处理器。处理装置104(或控制器101)还可为一或多个专用处理装置,例如ASIC、FPGA、数字信号处理器(‘DSP’)、网络处理器,或诸如此类。
处理装置104可经由可体现为高速存储器总线(例如双倍数据速率4(‘DDR4’)总线)的数据通信链路106连接到RAM 111。操作系统112存储于RAM 111中。在一些实施方案中,指令113存储于RAM 111中。指令113可包含用于执行直接映射式快闪存储系统中的操作的计算机程序指令。在一个实施例中,直接映射式快闪存储系统是直接且在快闪驱动器的存储控制器不执行地址翻译的情况下对快闪驱动器内的数据块进行寻址的系统。
在实施方案中,存储阵列控制器101包含经由数据通信链路105A-C耦合到处理装置104的一或多个主机总线适配器103A-C。在实施方案中,主机总线适配器103A-C可为将主机系统(例如,存储阵列控制器)连接到其它网络及存储阵列的计算机硬件。在一些实例中,主机总线适配器103A-C可为使得存储阵列控制器101能够连接到SAN的光纤通道适配器、使得存储阵列控制器101能够连接到LAN的以太网适配器,或诸如此类。主机总线适配器103A-C可经由数据通信链路105A-C(例如PCIe总线)耦合到处理装置104。
在实施方案中,存储阵列控制器101可包含耦合到扩展器115的主机总线适配器114。扩展器115可用于将主机系统附接到大量存储驱动器。举例来说,在其中主机总线适配器114体现为SAS控制器的实施方案中,扩展器115可为利用来使得主机总线适配器114能够附接到存储驱动器的SAS扩展器。
在实施方案中,存储阵列控制器101可包含经由数据通信链路109耦合到处理装置104的交换器116。交换器116可为可由单个端点创建多个端点借此使得多个装置能够共享单个端点的计算机硬件装置。举例来说,交换器116可为耦合到PCIe总线(例如,数据通信链路109)且呈现到中间平面的多个PCIe连接点的PCIe交换器。
在实施方案中,存储阵列控制器101包含用于将存储阵列控制器101耦合到其它存储阵列控制器的数据通信链路107。在一些实例中,数据通信链路107可为QuickPath互连(QPI)互连件。
使用传统快闪驱动器的传统存储系统可实施跨越作为传统存储系统的部分的快闪驱动器的过程。举例来说,存储系统的较高级过程可起始并控制跨越快闪驱动器的过程。然而,传统存储系统的快闪驱动器可包含其自身的也执行过程的存储控制器。因此,针对传统存储系统,可执行较高级过程(例如,由存储系统起始)及较低级过程(例如,由存储系统的存储控制器起始)两者。
为解决传统存储系统的各种缺陷,可通过较高级过程且不通过较低级过程执行操作。举例来说,快闪存储系统可包含快闪驱动器,所述快闪驱动器不包含提供过程的存储控制器。因此,快闪存储系统的操作系统本身可起始并控制过程。这可由直接且在快闪驱动器的存储控制器不执行地址翻译的情况下对快闪驱动器内的数据块进行寻址的直接映射式快闪存储系统实现。
在实施方案中,存储驱动器171A-F可为一或多个分区式存储装置。在一些实施方案中,一或多个分区式存储装置可为叠瓦式HDD。在实施方案中,一或多个存储装置可为基于快闪的SSD。在分区式存储装置中,分区式存储装置上的分区式命名空间可通过按实际大小分组并对齐的块群组来寻址,从而形成若干个可寻址区。在利用SSD的实施方案中,所述实际大小可基于SSD的擦除块大小。
从区到擦除块(或到HDD中的叠瓦式轨道)的映射可为任意的、动态的及在视图中隐藏的。开放区的过程可为允许新区动态地映射到分区式存储装置的基础存储区且然后允许通过追加写入将数据写入到区中直到区达到容量为止的操作。区可在任一时刻结束,此后其它数据可不被写入到区中。当存储于区处的数据不再被需要时,可使区复位,这会有效地将区的内容从分区式存储装置删除,从而使得由所述区保持的物理存储区可用于后续数据存储。一旦区已被写入且结束,分区式存储装置便确保存储于区处的数据不会丢失直到区被复位。在将数据写入到区与使区复位之间的时间,作为分区式存储装置内的维护操作的部分,区可例如通过复制数据以保持数据刷新或处置SSD中的存储器胞元老化而在叠瓦轨道或擦除块之间来回移动。
在利用HDD的实施方案中,使区复位可允许叠瓦轨道被分配可在未来的某一时刻开放的新开放的区。在利用SSD的实施方案中,使区复位可致使区的相关联物理擦除块被擦除且随后再用于数据存储。在一些实施方案中,分区式存储装置可对某一时间点开放区的数目进行限制,以减少专用于保持区开放的开销量。
快闪存储系统的操作系统可识别且维持跨越快闪存储系统的多个快闪驱动器的分配单位的列表。分配单位可为整个擦除块或多个擦除块。操作系统可维持将地址直接映射到快闪存储系统的快闪驱动器的擦除块的映射或地址范围。
直接映射到快闪驱动器的擦除块可用于重写数据及擦除数据。举例来说,可对包含第一数据及第二数据的一或多个分配单位执行操作,其中第一数据将被存留且第二数据不再由快闪存储系统使用。操作系统可起始将第一数据写入到其它分配单位内的新位置及擦除第二数据并将分配单位标记为可用于供后续数据使用的过程。因此,所述过程可仅由快闪存储系统的较高级操作系统执行,快闪驱动器的控制器不执行额外较低级过程。
过程仅由快闪存储系统的操作系统执行的优点包含快闪存储系统的快闪驱动器的可靠性提高,因为在过程期间不执行不必要或冗余写入操作。本文中的一个可能新颖点是在快闪存储系统的操作系统处起始并控制过程的概念。另外,过程可由跨越多个快闪驱动器的操作系统控制。这与过程由快闪驱动器的存储控制器执行形成对比。
存储系统可由出于故障转移目的共享一组驱动器的两个存储阵列控制器组成,或者其可由提供利用多个驱动器的存储服务的单个存储阵列控制器组成,或者其可由存储阵列控制器的分布式网络组成,每一存储阵列控制器具有某一数目的驱动器或某一量的快闪存储装置,其中网络中的存储阵列控制器协作以提供完整存储服务且在包含存储分配及垃圾收集的存储服务的各个方面协作。
图1C图解说明根据一些实施方案的用于数据存储的第三实例系统117。出于图解说明而非限制目的,系统117(本文中也称为“存储系统”)包含诸多元件。可注意,在其它实施方案中,系统117可包含以相同或不同方式配置的相同、较多或较少元件。
在一个实施例中,系统117包含具有可单独寻址的快速写入存储区的双外围组件互连(‘PCI’)快闪存储装置118。系统117可包含存储控制器119。在一个实施例中,存储控制器119A-D可为CPU、ASIC、FPGA,或根据本公开的可实施必要控制结构的任何其它电路系统。在一个实施例中,系统117包含快闪存储器装置(例如,包含快闪存储器装置120a-n),其操作地耦合到存储装置控制器119的各种通道。快闪存储器装置120a-n可作为足以允许存储装置控制器119A-D对快闪存储器的各个方面进行编程及检索的快闪页、擦除块及/或控制元件的可寻址集合呈现到控制器119A-D。在一个实施例中,存储装置控制器119A-D可对快闪存储器装置120a-n执行包含存储及检索各页的数据内容,布置及擦除任何块,跟踪与快闪存储器页、擦除块及胞元的使用及再使用相关的统计,跟踪及预测快闪存储器内的错误代码及故障,控制与对快闪胞元的内容进行编程及检索相关联的电压电平等的操作。
在一个实施例中,系统117可包含用以单独存储可寻址快速写入数据的RAM 121。在一个实施例中,RAM 121可为一或多个单独离散装置。在另一实施例中,RAM 121可集成到存储装置控制器119A-D或多个存储装置控制器中。RAM 121还可用于其它目的,例如用于存储装置控制器119中的处理装置(例如,CPU)的暂时性程序存储器。
在一个实施例中,系统117可包含能量存储装置122,例如可再充电电池或电容器。能量存储装置122可存储足以为存储装置控制器119、某一量的RAM(例如,RAM 121)及某一量的快闪存储器(例如,快闪存储器120a-120n)供电充分时间以将RAM的内容写入到快闪存储器的能量。在一个实施例中,如果存储装置控制器检测到失去外部电源,那么存储装置控制器119A-D可将RAM的内容写入到快闪存储器。
在一个实施例中,系统117包含两个数据通信链路123a、123b。在一个实施例中,数据通信链路123a、123b可为PCI接口。在另一实施例中,数据通信链路123a、123b可基于其它通信标准(例如,超输送、无线带宽等)。数据通信链路123a、123b可基于允许从存储系统117中的其它组件向存储装置控制器119A-D的外部连接的快速非易失性存储器(‘NVMe’)或经由网状架构的NVMe(‘NVMf’)规范。应注意,数据通信链路可在本文中为了方便互换地称为PCI总线。
系统117还可包含外部电源(未展示),其可经由一个或两个数据通信链路123a、123b提供或可单独提供。替代实施例包含专用于存储RAM 121的内容的单独快闪存储器(未展示)。存储装置控制器119A-D可经由PCI总线呈现逻辑装置,其可包含可寻址快速写入逻辑装置,或可呈现为PCI存储器或持续性存储装置的存储装置118的逻辑地址空间的不同部分。在一个实施例中,向装置中进行存储的操作被引导到RAM 121中。在发生电源故障时,存储装置控制器119A-D可将与可寻址快速写入逻辑存储区相关联的所存储内容写入到快闪存储器(例如,快闪存储器120a-n)以供长期持续性存储。
在一个实施例中,逻辑装置可包含快闪存储器装置120a-n的内容中的一些或全部的一些呈现,其中所述呈现允许包含存储装置118的存储系统(例如,存储系统117)通过PCI总线对快闪存储器页进行直接寻址且对来自存储装置外部的存储系统组件的擦除块进行直接重新编程。所述呈现还可允许外部组件中的一或多者控制及检索快闪存储器的其它方面,包含以下各项中的一些或全部:跟踪与跨越所有快闪存储器装置的快闪存储器页、擦除块及胞元的使用及再使用相关的统计;跟踪及预测快闪存储器装置内及跨越快闪存储器装置的错误代码及故障;控制与对快闪胞元的内容进行编程及检索相关联的电压电平等。
在一个实施例中,能量存储装置122可足以确保完成对快闪存储器装置120a-120n的进行中操作,能量存储装置122可为存储装置控制器119A-D及相关联快闪存储器装置(例如,120a-n)供电以供进行那些操作以及将快速写入RAM存储到快闪存储器。能量存储装置122可用于存储由快闪存储器装置120a-n及/或存储装置控制器119保持及跟踪的累积统计及其它参数。单独电容器或能量存储装置(例如快闪存储器装置附近或嵌入于快闪存储器装置内的较小电容器本身)可用于本文中所描述的操作中的一些或全部。
各种方案可用于跟踪及优化能量存储组件的生命期,例如随时间调整电压电平、使存储能量装置122部分地放电以测量对应放电特性等。如果可用能量随时间减少,那么可寻址快速写入存储区的有效可用容量可减少以确保其可基于当前可用的所存储能量被安全地写入。
图1D图解说明根据一些实施方案的用于数据存储的第三实例系统124。在一个实施例中,系统124包含存储控制器125a、125b。在一个实施例中,存储控制器125a、125b分别操作地耦合到双PCI存储装置119a、119b及119c、119d。存储控制器125a、125b可操作地耦合(例如,经由存储网络130)到某一数目的主机计算机127a-n。
在一个实施例中,两个存储控制器(例如,125a及125b)提供存储服务,例如SCS)块存储阵列、文件服务器、对象服务器、数据库或数据分析服务等。存储控制器125a、125b可通过某一数目的网络接口(例如,126a-d)为存储系统124外部的主机计算机127a-n提供服务。存储控制器125a、125b可完全在存储系统124内提供集成服务或应用,从而形成融合存储与计算系统。存储控制器125a、125b可利用存储装置119a-d内或跨越所述存储装置的快速写入存储器来记录进行中操作,以确保在发生电源故障、存储控制器移除、存储控制器或存储系统关机或存储系统124内的一或多个软件或硬件组件的某一故障时所述操作不丢失。
在一个实施例中,控制器125a、125b作为一个或另一PCI总线128a、128b的PCI主控器来操作。在另一实施例中,128a及128b可基于其它通信标准(例如,超输送、无线带宽等)。其它存储系统实施例可使存储控制器125a、125b作为PCI总线128a、128b两者的多主控器来操作。替代地,PCI/NVMe/NVMf交换基础设施或网状架构可连接多个存储控制器。一些存储系统实施例可允许存储装置彼此直接通信而非仅与存储控制器通信。在一个实施例中,存储装置控制器119a可为可在来自存储控制器125a的引导下操作,以由已存储于RAM(例如,图1C的RAM 121)中的数据合成且传送数据来存储到快闪存储器装置中。举例来说,可在存储控制器已确定操作已跨越存储系统完全提交之后或在装置上的快速写入存储器已达到特定所使用容量时或在特定时间量之后传送RAM内容的经重新计算版本,以确保提高数据的安全性或释放可寻址快速写入容量以供再使用。举例来说,此机制可用于避免从存储控制器125a、125b经由总线(例如,128a、128b)进行第二次传送。在一个实施例中,重新计算可包含压缩数据、附加索引或其它元数据、将多个数据分段组合在一起、执行擦除代码计算等。
在一个实施例中,在来自存储控制器125a、125b的引导下,存储装置控制器119a、119b可为可操作的,以在存储控制器125a、125b不参与的情况下由存储于RAM(例如,图1C的RAM 121)中的数据计算并传送数据到其它存储装置。此操作可用于将存储于一个控制器125a中的数据镜像到另一控制器125b,或者其可用于卸载压缩、数据聚合及/或擦除编码计算及向存储装置的传送,以减少到PCI总线128a、128b的存储控制器或存储控制器接口129a、129b上的负载。
存储装置控制器119A-D可包含用于实施高可用性原语以供存储系统的在双PCI存储装置118外部的其它部分使用的机制。举例来说,可提供保留或排除原语,使得在具有提供高度可用的存储服务的两个存储控制器的存储系统中,一个存储控制器可防止另一存储控制器存取或继续存取存储装置。举例来说,这可在其中一个控制器检测到另一控制器未恰当地起作用或其中两个存储控制器之间的互连件本身可能未恰当地起作用的情形中使用。
在一个实施例中,供与具有可单独寻址的快速写入存储区的双PCI直接映射式存储装置一起使用的存储系统包含将擦除块或擦除块群组作为分配单位来管理或用于存储系统本身的恰当管理的系统,所述分配单位用于代表存储服务存储数据或用于存储与存储服务相关联的元数据(例如,索引、日志等)。可为几千字节大小的快闪页可在数据到达时或在存储系统要使数据存续长时间间隔(例如,超过经界定时间阈值)时被写入。为了更快速地提交数据或为了减少向快闪存储器装置写入的次数,存储控制器可首先将数据写入到一或多个存储装置上的可单独寻址的快速写入存储区中。
在一个实施例中,存储控制器125a、125b可起始在存储装置(例如,118)内及跨越所述存储装置根据存储装置的年龄及预期剩余生命期或基于其它统计使用擦除块。存储控制器125a、125b可起始在存储装置之间根据不再需要的页以及为了管理快闪页及擦除块生命期且管理总体系统性能而进行垃圾收集及数据迁移数据。
在一个实施例中,存储系统124可利用镜像及/或擦除编码方案作为将数据存储到可寻址快速写入存储区中的部分及/或作为将数据写入到与擦除块相关联的分配单位中的部分。可跨越存储装置以及在擦除块或分配单位内或者在单个存储装置上的快闪存储器装置内及跨越所述快闪存储器装置使用擦除代码,以提供冗余来对抗单个或多个存储装置故障或防范因快闪存储器操作或因快闪存储器胞元降级导致的快闪存储器页的内部损坏。各种层级处的镜像及擦除编码可用于从单独或组合发生的多种类型的故障中恢复。
参考图2A-G所描绘的实施例图解说明存储群集,其存储用户数据,例如来源于一或多个用户或客户端系统或存储群集外部的其它源的用户数据。存储群集使用擦除编码及元数据的冗余副本使用户数据跨越装纳于底盘内的存储节点或跨越多个底盘分布。擦除编码是指其中跨越一组不同位置(例如磁盘、存储节点或地理位置)存储数据的数据保护或重构方法。尽管实施例可扩展到其它类型的固态存储器或包含非固态存储器的其它存储媒体,但快闪存储器是可与实施例集成的一种类型的固态存储器。对存储位置及工作负载的控制是跨越群集式对等系统中的存储位置分布。例如中介各种存储节点之间的通信、检测存储节点何时变得不可用及平衡跨越各种存储节点的I/O(输入及输出)等任务全部是在分布式基础上处置。在一些实施例中,数据以支持数据恢复的数据段或条带跨越多个存储节点布局或分布。独立于输入及输出型式,数据的所有权可在群集内重新指派。下文更详细地描述的此架构允许群集中的存储节点出故障,而系统保持操作,这是因为数据可从其它存储节点重构且因此保持可用于输入及输出操作。在各种实施例中,存储节点可称为群集节点、叶片或服务器。
存储群集可含纳于底盘(即,装纳一或多个存储节点的壳体)内。用以将电力提供到每一存储节点的机构(例如电力分布总线)及使得存储节点之间能够通信的通信机构(例如通信总线)包含于底盘内。根据一些实施例,存储群集可作为独立系统在一个位置中运行。在一个实施例中,底盘含纳可独立启用或停用的电力分布及通信总线两者的至少两个实例。内部通信总线可为以太网总线,然而,其它技术(例如PCIe、无线带宽及其它)同样是适合的。底盘为外部通信总线提供使得多个底盘之间能够直接或通过交换器通信且与客户端系统通信的端口。外部通信可使用例如以太网、无线带宽、光纤通道等技术。在一些实施例中,外部通信总线针对底盘间及客户端通信使用不同通信总线技术。如果交换器部署在底盘内或之间,那么交换器可用作多个协议或技术之间的翻译。当多个底盘经连接以界定存储群集时,存储群集可由客户端使用专有接口或标准接口(例如网络文件系统(‘NFS’)、共同因特网文件系统(‘CIFS’)、小型计算机系统接口(‘SCSI’)或超文本传送协议(‘HTTP’))来存取。从客户端协议的翻译可发生在交换器、底盘外部通信总线处或每一存储节点内。在一些实施例中,多个底盘可通过聚合器交换器彼此耦合或连接。所耦合或连接底盘的一部分及/或全部可指定为存储群集。如上文所论述,每一底盘可具有多个叶片,每一叶片具有媒体存取控制(‘MAC’)地址,但在一些实施例中,存储群集向外部网络呈现为具有单个群集IP地址及单个MAC地址。
每一存储节点可为一或多个存储服务器,且每一存储服务器连接到可称为存储单元或存储装置的一或多个非易失性固态存储器单元。一个实施例包含每一存储节点中及一到八个非易失性固态存储器单元之间的单个存储服务器,然而此一个实例并不意在是限制性的。存储服务器可包含处理器、DRAM及用于内部通信总线以及电源总线中的每一者的电力分布的接口。在一些实施例中,接口及存储单元在存储节点内部共享通信总线,例如,快速PCI。非易失性固态存储器单元可通过存储节点通信总线直接访问内部通信总线接口,或请求存储节点访问总线接口。在一些实施例中,非易失性固态存储器单元含有嵌入式CPU、固态存储控制器及一定量的固态大容量存储装置,例如,介于2-32万亿字节(‘TB’)之间。嵌入式易失性存储媒体(例如DRAM)及能量储备设备包含于非易失性固态存储器单元中。在一些实施例中,能量储备设备是在失去电源的情形中使得能够将DRAM内容的子集传送到稳定存储媒体的电容器、超级电容器或电池。在一些实施例中,非易失性固态存储器单元构造有存储类存储器,例如替代DRAM且实现功率减小的保持设备的相变或磁阻式随机存取存储器(‘MRAM’)。
存储节点及非易失性固态存储装置的许多特征之一是在存储群集中主动重建数据的能力。存储节点及非易失性固态存储装置可确定存储群集中的存储节点或非易失性固态存储装置何时不可接达,这独立于是否存在要读取涉及所述存储节点或非易失性固态存储装置的数据的尝试。存储节点及非易失性固态存储装置然后合作以在至少部分新位置中恢复并重建数据。这构成主动重建,因为系统并不是等到由采用存储群集的客户端系统起始的读取存取需要数据才重建数据。下文论述存储式存储器及其操作的这些及进一步细节。
图2A是根据一些实施例的存储群集161的透视图,所述存储群集具有多个存储节点150及耦合到每一存储节点的内部固态存储器以提供网络附接存储装置或存储区域网络。网络附接存储装置、存储区域网络或存储群集或其它存储式存储器可包含呈物理组件及借此提供的一定量的存储式存储器两者的灵活且可重新配置的布置的一或多个存储群集161,每一存储群集具有一或多个存储节点150。存储群集161经设计以装配于机架中,且一或多个机架可按存储式存储器的需要来设置及填充。存储群集161具有具多个狭槽142的底盘138。应了解,底盘138可称为外壳、壳体或机架单元。尽管可容易地设想其它数目的狭槽,但在一个实施例中,底盘138具有14个狭槽142。举例来说,一些实施例具有4个狭槽、8个狭槽、16个狭槽、32个狭槽,或其它适合数目的狭槽。在一些实施例中,每一狭槽142可容纳一个存储节点150。底盘138包含可利用来将底盘138安装于机架上的翼片148。尽管可使用其它冷却组件或可设想不具有冷却组件的实施例,但风扇144提供空气循环来冷却存储节点150及其组件。交换器网状架构146将底盘138内的存储节点150耦合在一起并耦合到网络以供向存储器通信。在本文中所描绘的实施例中,出于图解说明性目的,交换器网状架构146及风扇144左侧的狭槽142展示为由存储节点150占据,而交换器网状架构146及风扇144右侧的狭槽142是空的且可用于插入存储节点150。此配置是一个实例,且在各种进一步布置中,一或多个存储节点150可占据狭槽142。在一些实施例中,存储节点布置不必为顺序或邻近的。存储节点150是可热插拔的,这意味着在不使系统停止或关闭电源的情况下可将存储节点150插入到底盘138中的狭槽142中或从狭槽142移除。在相对于狭槽142插入或移除存储节点150后,系统即刻自动重新配置以便辨识且适应所述改变。在一些实施例中,重新配置包含恢复冗余及/或重新平衡数据或负载。
每一存储节点150可具有多个组件。尽管在进一步实施例中可使用其它座架及/或组件,但在本文中所展示的实施例中,存储节点150包含由CPU 156(即,处理器)、耦合到CPU156的存储器154及耦合到CPU 156的非易失性固态存储装置152填充的印刷电路板159。存储器154具有由CPU 156执行的指令及/或由CPU 156操作的数据。如下文进一步解释,非易失性固态存储装置152包含快闪或(在进一步实施例中)其它类型的固态存储器。
参考图2A,存储群集161是可扩缩的,这意味着可容易地添加具有非统一存储大小的存储容量,如上文所描述。在一些实施例中,一或多个存储节点150可插塞到每一底盘中或从每一底盘移除,且存储群集进行自配置。插塞式存储节点150无论是交付时安装于底盘中还是后来添加的,可具有不同大小。举例来说,在一个实施例中,存储节点150可具有4TB的任何倍数,例如,8TB、12TB、16TB、32TB等。在进一步实施例中,存储节点150可具有其它存储量或容量的任何倍数。每一存储节点150的存储容量被广播,且影响如何将数据条带化的决策。为了最大存储效率,实施例可自配置为条带尽可能宽的,这受制于在损失底盘内的最多一个或最多两个非易失性固态存储单元152或存储节点150的情况下继续操作的预定要求。
图2B是展示耦合多个存储节点150的通信互连件173及电力分布总线172的框图。往回参考图2A,在一些实施例中,通信互连件173可包含于交换器网状架构146中或利用所述交换器网状架构来实施。在一些实施例中,在多个存储群集161占据机架的情况下,通信互连件173可包含于机架交换器的顶部中或利用机架交换器的顶部来实施。如图2B中所图解说明,存储群集161围封于单个底盘138内。外部端口176通过通信互连件173耦合到存储节点150,而外部端口174直接耦合到存储节点。外部电源端口178耦合到电力分布总线172。存储节点150可包含变化量及不同容量的非易失性固态存储装置152,如参考图2A所描述。另外,一或多个存储节点150可为仅计算型存储节点,如图2B中所图解说明。权威168在非易失性固态存储装置152上实施为例如存储于存储器中的列表或其它数据结构。在一些实施例中,权威存储于非易失性固态存储装置152内且由在非易失性固态存储装置152的控制器或其它处理器上执行的软件支持。在进一步实施例中,权威168在存储节点150上实施为例如存储于存储器154中且由在存储节点150的CPU 156上执行的软件支持的列表或其它数据结构。在一些实施例中,权威168控制数据如何及在何处存储于非易失性固态存储装置152中。此控制帮助确定将哪一类型的擦除编码方案应用于数据,及哪些存储节点150具有数据的哪些部分。每一权威168可指派给非易失性固态存储装置152。在各种实施例中,每一权威可控制由文件系统、由存储节点150或由非易失性固态存储装置152指派给数据的一定范围的索引节点号、分段号或其它数据识别符。
在一些实施例中,每一数据片段及每一元数据片段在系统中具有冗余。另外,每一数据片段及每一元数据片段具有所有者,可称为权威。如果所述权威例如由于存储节点故障而不可接达,那么存在关于如何找到所述数据或所述元数据的继任计划。在各种实施例中,存在权威168的冗余副本。在一些实施例中,权威168与存储节点150及非易失性固态存储装置152有关系。覆盖一定范围的数据分段号或数据的其它识别符的每一权威168可指派给特定非易失性固态存储装置152。在一些实施例中,所有此类范围的权威168分布遍及存储群集的非易失性固态存储装置152。每一存储节点150具有提供对所述存储节点150的非易失性固态存储装置152的存取的网络端口。在一些实施例中,数据可以分段形式存储,所述分段与分段号相关联且所述分段号是RAID(独立磁盘冗余阵列)条带的配置的间接取值(indirection)。权威168的指派及使用因此建立对数据的间接取值。根据一些实施例,间接取值可称为间接(在此情形中,经由权威168)参考数据的能力。分段识别一组非易失性固态存储装置152及所述组非易失性固态存储装置152中可含有数据的本地识别符。在一些实施例中,本地识别符是装置中的偏移且可由多个分段顺序地再使用。在其它实施例中,本地识别符是特定分段唯一的且从不再使用。非易失性固态存储装置152中的偏移应用于定位数据以供写入到非易失性固态存储装置152(呈RAID条带的形式)或从所述非易失性固态存储装置读取。数据跨越非易失性固态存储装置152的多个单元被条带化,其可包含或不同于具有特定数据分段的权威168的非易失性固态存储装置152。
如果特定数据分段所在的位置发生改变(例如,在数据移动或数据重构期间),那么应在具有所述数据分段的权威168的非易失性固态存储装置152或存储节点150处咨询所述权威168。为了定位特定数据片段,实施例计算数据分段的哈希值或者应用索引节点号或数据分段号。此操作的输出指向具有所述特定数据片段的权威168的非易失性固态存储装置152。在一些实施例中,此操作存在两个阶段。第一阶段将实体识别符(ID)(例如,分段号、索引节点号或目录号)映射到权威识别符。此映射可包含计算,例如哈希或位掩码。第二阶段是将权威识别符映射到特定非易失性固态存储装置152,这可通过显式映射进行。所述操作是可重复的,使得在执行计算时,计算结果可重复地且可靠地指向具有所述权威168的特定非易失性固态存储装置152。所述操作可包含可接达存储节点的集合作为输入。如果可接达非易失性固态存储单元的集合改变,那么最优集合改变。在一些实施例中,所存续的值是当前指派(其始终为真),且经计算值是群集将尝试重新配置所指向的目标指派。此计算可用于在存在可接达且构成同一群集的非易失性固态存储装置152的集合的情况下确定权威的最优非易失性固态存储装置152。所述计算还确定对等非易失性固态存储装置152的有序集合,其还将记录权威到非易失性固态存储装置的映射,使得即使指派的非易失性固态存储装置不可接达,也可以确定权威。在一些实施例中,如果特定权威168不可用,那么可咨询复制或替代权威168。
参考图2A及2B,存储节点150上的CPU 156的许多任务中的两个是分解写入数据及重组读取数据。当系统已确定要写入数据时,如上文所述定位所述数据的权威168。当已确定数据的分段ID时,要写入的请求被转发到当前确定为依据分段确定的权威168的主机的非易失性固态存储装置152。存储节点150的主机CPU 156(非易失性固态存储装置152及对应权威168驻存于上面)然后对数据进行分解或分片且将数据向外传输到各种非易失性固态存储装置152。根据擦除编码方案,所传输数据被写入为数据条带。在一些实施例中,请求拉取数据,且在其它实施例中,推送数据。相反,当读取数据时,如上文所描述定位含有数据的分段ID的权威168。存储节点150的主机CPU 156(非易失性固态存储装置152及对应权威168驻存于上面)向权威指向的非易失性固态存储装置及对应存储节点请求数据。在一些实施例中,数据作为数据条带从快闪存储装置读取。存储节点150的主机CPU 156然后重组读取的数据,根据适当擦除编码方案校正任何错误(如果存在的话),并将重组的数据转发到网络。在进一步实施例中,这些任务中的一些或全部可在非易失性固态存储装置152中处置。在一些实施例中,分段主机通过向存储装置请求页且然后将数据发送到做出原始请求的存储节点来请求将数据发送到存储节点150。
在实施例中,权威168操作以确定操作将如何针对特定逻辑元素进行。逻辑元素中的每一者可通过跨越存储系统的多个存储控制器的特定权威来操作。权威168可与多个存储控制器通信,使得多个存储控制器共同执行针对那些特定逻辑元素的操作。
在实施例中,举例来说,逻辑元素可为文件、目录、对象桶、个别对象、文件或对象的描画部分、其它形式的键值对数据库或表格。在实施例中,举例来说,执行操作可涉及确保与针对同一逻辑元素的其它操作的一致性、结构完整性及/或可恢复性,读取与所述逻辑元素相关联的元数据及数据,确定应该将什么数据持久地写入到存储系统中以存续操作的任何改变,或者可确定元数据及数据存储在跨越附接到存储系统中的多个存储控制器的模块化存储装置的何处。
在一些实施例中,所述操作是基于令牌的事务以在分布式系统内高效地通信。每一事务可伴随或关联一令牌,所述令牌赋予执行事务的权限。在一些实施例中,权威168能够维持系统的事务前状态直到操作完成。基于令牌的通信可在不具有跨越系统的全局锁定的情况下完成,并且还使得能够在中断或其它故障的情形中重新开始操作。
在一些系统中,例如在UNIX风格的文件系统中,数据是用索引节点(index node或inode)处置的,索引节点规定表示文件系统中的对象的数据结构。举例来说,对象可为文件或目录。元数据可作为属性(例如权限数据及创建时间戳,以及其它属性)伴随对象。分段号可指派给文件系统中此类对象的全部或一部分。在其它系统中,数据分段利用别处指派的分段号来处置。出于论述的目的,分布的单位是实体,且实体可为文件、目录或分段。即,实体是由存储系统存储的数据或元数据的单位。实体被分组成称作权威的集合。每一权威具有权威所有者,其为具有更新权威中的实体的排他性权利的存储节点。换句话说,存储节点含有权威,且权威又含有实体。
根据一些实施例,分段是数据的逻辑容器。分段是介于媒体地址空间与物理快闪位置之间的地址空间,即,数据分段号位于此地址空间中。分段还可含有元数据,其使得能够在更高级软件不参与的情况下恢复数据冗余(重写到不同的快闪位置或装置)。在一个实施例中,分段的内部格式含有客户端数据及媒体映射以确定所述数据的位置。通过将分段分解成若干数据及奇偶校验分片(在适用的情况下)来保护每一数据分段免受例如存储器及其它故障影响。根据擦除编码方案,数据及奇偶校验分片跨越耦合到主机CPU 156(参见图2E及2G)的非易失性固态存储装置152分布,即条带化。在一些实施例中,术语分段的使用是指容器及其在分段的地址空间中的位置。根据一些实施例,术语条带的使用是指与分段相同的分片集合,并且包含分片如何与冗余或奇偶校验信息一起分布。
一系列地址空间变换发生在整个存储系统中。顶部处是链接到索引节点的目录条目(文件名)。索引节点指向媒体地址空间,数据在逻辑上存储在所述空间中。媒体地址可通过一系列间接媒体进行映射,以分散大文件的负载,或者实施如删除重复或快照等数据服务。媒体地址可通过一系列间接媒体进行映射,以分散大文件的负载,或者实施如删除重复或快照等数据服务。分段地址然后被翻译成物理快闪位置。根据一些实施例,物理快闪位置具有受系统中的快闪量约束的地址范围。媒体地址及分段地址是逻辑容器,且在一些实施例中使用128位或更大的识别符以实际上是无限的,具有计算为比系统的预期寿命更长的再使用可能性。在一些实施例中,来自逻辑容器的地址以阶层方式分配。最初,每一非易失性固态存储单元152可被指派一定范围的地址空间。在此经指派范围内,非易失性固态存储装置152能够在不与其它非易失性固态存储装置152同步的情况下分配地址。
数据及元数据由一组基础存储布局存储,所述布局针对不同的工作负载型式及存储装置进行了优化。这些布局并入有多个冗余方案、压缩格式及索引算法。这些布局中的一些存储关于权威及权威主控器的信息,而其它布局存储文件元数据及文件数据。冗余方案包含容忍单个存储装置(例如NAND快闪芯片)内的损坏位的错误校正码、容忍多个存储节点的故障的擦除代码以及容忍数据中心或区域故障的复制方案。在一些实施例中,在单个存储单元内使用低密度奇偶校验(‘LDPC’)代码。在一些实施例中,在存储群集内使用里德所罗门(Reed-Solomon)编码,并且在存储网格内使用镜像。元数据可使用有序的日志结构化索引(例如日志结构化合并树)来存储,且大型数据可不存储于日志结构化布局中。
为了维持跨越实体的多个副本的一致性,存储节点通过计算在两件事上隐含地达成一致:(1)含有实体的权威,以及(2)含有权威的存储节点。实体到权威的指派可通过伪随机指派实体到权威、通过基于外部产生的密钥将实体分成若干范围或者通过将单个实体放置到每一权威中来完成。伪随机方案的实例是线性哈希及依据可扩缩哈希的复制(‘RUSH’)哈希系列,包含依据可扩缩哈希的受控复制(‘CRUSH’)。在一些实施例中,伪随机指派仅用于将权威指派给节点,因为节点集合可改变。在这些实施例中,权威集合无法改变,因此可应用任何主观函数。一些放置方案自动将权威放置于存储节点上,而其它放置方案依赖于权威到存储节点的显式映射。在一些实施例中,利用伪随机方案来从每一权威映射到一组候选权威所有者。与CRUSH相关的伪随机数据分布函数可为存储节点指派权威,并创建权威指派地点的列表。每一存储节点具有伪随机数据分布函数的副本,且可达到相同的分布计算,并稍后找到或定位权威。在一些实施例中,伪随机方案中的每一者需要可接达的存储节点集合作为输入,以便得出相同的目标节点。一旦实体被放置在权威中,所述实体便可存储在物理装置上,使得预期的故障将不会导致意外的数据丢失。在一些实施例中,重新平衡算法试图以相同的布局及在相同的一组机器上存储权威内的所有实体的副本。
预期故障的实例包含装置故障、机器被盗、数据中心火灾及区域灾难,例如核事件或地质事件。不同故障导致不同等级的可接受数据丢失。在一些实施例中,被盗的存储节点既不影响系统的安全性也不影响系统的可靠性,而端视系统配置,区域事件可能不导致数据丢失、导致更新丢失几秒或几分钟,导致甚至完全数据丢失。
在实施例中,用于存储冗余的数据放置独立于用于数据一致性的权威放置。在一些实施例中,含有权威的存储节点不含有任何持续性存储装置。而是,所述存储节点连接到不含有权威的非易失性固态存储单元。存储节点与非易失性固态存储单元之间的通信互连件由多种通信技术组成且具有非统一的性能及容错特性。在一些实施例中,如上文所提及,非易失性固态存储单元经由快速PCI连接到存储节点,存储节点使用以太网底板在单个底盘内连接在一起,且底盘连接在一起以形成存储群集。在一些实施例中,存储群集使用以太网或光纤通道连接到客户端。如果多个存储群集配置成存储网格,那么多个存储群集使用因特网或其它长距离网络链路(例如“城域规模”链路或不穿越因特网的私有链路)连接。
权威所有者具有修改实体、将实体从一个非易失性固态存储单元迁移到另一非易失性固态存储单元以及添加及移除实体副本的排他性权利。这允许维持基础数据的冗余。当权威所有者发生故障、即将解除授权或过载时,权威将转移到新的存储节点。瞬态故障使得确保所有非故障机器均同意新的权威位置变得非常重要。由于瞬态故障而产生的歧义可通过共识协议(例如Paxos、热温故障转移方案)经由远程系统管理员或本地硬件管理员的手动干预(例如通过从群集物理移除故障机器,或按下故障机器上的按钮)自动实现。在一些实施例中,使用共识协议,并且故障转移是自动的。根据一些实施例,如果在太短的时间段内发生太多故障或复制事件,那么系统进入自我保护模式并停止复制及数据移动活动,直到管理员进行干预。
当权威在存储节点之间转移并且权威所有者更新其权威中的实体时,系统在存储节点及非易失性固态存储单元之间传送消息。关于持续性消息,具有不同目的的消息具有不同的类型。端视消息的类型,系统维持不同的排序及持久性保证。在处理持续性消息时,消息暂时以多种持久及非持久存储硬件技术存储。在一些实施例中,消息存储于RAM、NVRAM中及NAND快闪装置上,且使用多种协议以便高效地使用每一存储媒体。对等待时间敏感的客户端请求可存续于复制的NVRAM中,且然后稍后存续于NAND中,而后台重新平衡操作直接存续到NAND。
持续性消息在被传输之前被持续地存储。这允许系统即使发生故障及组件更换仍继续服务于客户端请求。尽管许多硬件组件含有系统管理员、制造商、硬件供应链及持续监测质量控制基础设施可见的唯一识别符,但运行在基础设施地址上的应用对地址进行虚拟化。这些虚拟化地址在存储系统的整个寿命期内不会改变,无论组件故障及更换如何。这允许随着时间的推移更换存储系统的每一组件,而无需重新配置或中断客户端请求处理,即系统支持无中断升级。
在一些实施例中,虚拟化地址以充分的冗余存储。连续监测系统使硬件及软件状态与硬件识别符相关。这允许检测及预测由于故障组件及制造细节引起的故障。在一些实施例中,通过从关键路径移除组件,监测系统还使得能够在故障发生之前主动转移权威及实体远离受影响的装置。
图2C是多层级框图,其展示存储节点150的内容及存储节点150的非易失性固态存储装置152的内容。在一些实施例中,数据通过网络接口控制器(‘NIC’)202传递到存储节点150及从所述存储节点传递。每一存储节点150具有CPU 156及一或多个非易失性固态存储装置152,如上文所论述。在图2C中向下移动一个层级,每一非易失性固态存储装置152具有相对快速的非易失性固态存储器,例如非易失性随机存取存储器(‘NVRAM’)204,及快闪存储器206。在一些实施例中,NVRAM 204可为不需要编程/擦除循环的组件(DRAM、MRAM、PCM),且可为可支持被写入比存储器被读取频繁得多的存储器。在图2C中向下移动另一层级,在一个实施例中,NVRAM 204实施为由能量储备218支持的高速易失性存储器,例如动态随机存取存储器(DRAM)216。能量储备218提供充足电力来使DRAM 216保持被供电足够长时间以在电源故障的情况下将内容传送到快闪存储器206。在一些实施例中,能量储备218是电容器、超级电容器、电池,或供应足以使得能够在失去电源的情形中将DRAM 216的内容传送到稳定存储媒体的适合能量供应的其它装置。快闪存储器206实施为多个快闪裸片222,其可称为快闪裸片222的封装或快闪裸片222的阵列。应了解,快闪裸片222可以任何数目的方式封装,包含每封装单个裸片、每封装多个裸片(即,多芯片封装)、以混合封装形式、作为印刷电路板或其它衬底上的裸露裸片、作为囊封式裸片等。在所展示的实施例中,非易失性固态存储装置152具有控制器212或其它处理器,及耦合到控制器212的输入输出(I/O)端口210。I/O端口210耦合到快闪存储节点150的CPU 156及/或网络接口控制器202。快闪输入输出(I/O)端口220耦合到快闪裸片222,且直接存储器存取单元(DMA)214耦合到控制器212、DRAM 216及快闪裸片222。在所展示的实施例中,I/O端口210、控制器212、DMA单元214及快闪I/O端口220实施于可编程逻辑装置(‘PLD’)208(例如,FPGA)上。在此实施例中,每一快闪裸片222具有组织为16kB(千字节)页224的页及寄存器226,数据可通过所述寄存器写入到快闪裸片222或从所述快闪裸片读取。在进一步实施例中,代替或除快闪裸片222内所图解说明的快闪存储器外,还使用其它类型的固态存储器。
在如本文中所公开的各种实施例中,存储群集161可与一般的存储阵列形成对比。存储节点150是创建存储群集161的集合的部分。每一存储节点150拥有数据切片及提供数据所需的计算。多个存储节点150合作以存储且检索数据。一般的存储阵列中所使用的存储式存储器或存储装置较少涉及数据的处理及操纵。存储阵列中的存储式存储器或存储装置接收读取、写入或擦除数据的命令。存储阵列中的存储式存储器或存储装置不知晓其嵌入的较大系统或数据的意义如何。存储阵列中的存储式存储器或存储装置可包含各种类型的存储式存储器,例如RAM、固态驱动器、硬盘驱动器等。本文中所描述的存储单元152具有同时活动且服务于多个目的的多个接口。在一些实施例中,存储节点150的功能性中的一些移位到存储单元152中,从而将存储单元152变换成存储单元152与存储节点150的组合。将计算(相对于存储数据)放置到存储单元152中会将此计算放置成更接近于数据本身。各种系统实施例具有具不同能力的存储节点层的阶层。相比来说,在存储阵列中,控制器拥有并知晓关于控制器在板架或存储装置中管理的所有数据的一切事物。在存储群集161中,如本文中所描述,多个存储单元152及/或存储节点150中的多个控制器以各种方式合作(例如,用于擦除编码、数据分片、元数据通信及冗余、存储容量扩展或收缩、数据恢复,等等)。
图2D展示存储服务器环境,其使用图2A-C的存储节点150及存储单元152的实施例。在此版本中,每一存储单元152在底盘138(参见图2A)中的PCIe(快速外围组件互连)板上具有处理器(例如控制器212(参见图2C))、FPGA、快闪存储器206及NVRAM 204(其是超级电容器支持的DRAM 216,参见图2B及2C)。存储单元152可实施为含有存储装置的单个板,且可为底盘内部的最大可容忍故障域。在一些实施例中,最多两个存储单元152可出故障,且装置将继续而不会丢失数据。
在一些实施例中,物理存储区基于应用使用情况划分成若干经命名区域。NVRAM204是存储单元152DRAM 216中保留的存储器的连续块,并且由NAND快闪支持。NVRAM 204在逻辑上划分成每两个作为假脱机被写入的多个存储器区域(例如,spool_region)。NVRAM204假脱机内的空间由每一权威168独立管理。每一装置为每一权威168提供一定量的存储空间。所述权威168进一步管理所述空间内的寿命期及分配。假脱机的实例包含分布式事务或概念。当存储单元152的主要电源出现故障时,机载超级电容器提供短持续时间的电力保持。在此保持间隔期间,NVRAM 204的内容被刷新到快闪存储器206。在下一次接通电源时,NVRAM 204的内容从快闪存储器206恢复。
至于存储单元控制器,逻辑“控制器”的责任分布在含有权威168的叶片中的每一者上。逻辑控制的此分布在图2D中展示为主机控制器242、中间层次控制器244及存储单元控制器246。尽管部件可能在物理上共同位于同一叶片上,但控制平面及存储平面的管理是独立处理的。每一权威168有效地充当独立的控制器。每一权威168提供其自身的数据及元数据结构、其自身的后台工作者,并维护其自身的生命周期。
图2E是叶片252硬件框图,其展示控制平面254、计算平面256及存储平面258,以及在图2D的存储服务器环境中使用图2A-C的存储节点150及存储单元152的实施例与基础物理资源交互的权威168。控制平面254被分区成若干个权威168,所述权威可使用计算平面256中的计算资源来在叶片252中的任一者上运行。存储平面258被分区成一组装置,所述装置中的每一者提供对快闪206资源及NVRAM 204资源的访问。在一个实施例中,计算平面256可对存储平面258(例如,存储阵列)的一或多个装置执行存储阵列控制器的操作,如本文中所描述。
在图2E的计算平面256及存储平面258中,权威168与基础物理资源(即,装置)交互。从权威168的角度,其资源在所有物理装置上条带化。从装置的角度,其将资源提供到所有权威168,而不管权威碰巧在何处运行。每一权威168已经分配或已经被分配存储单元152中的存储式存储器的一个或多个分区260,例如快闪存储器206及NVRAM 204中的分区260。每一权威168使用属于其的那些经分配分区260来写入或读取用户数据。权威可与系统的不同量的物理存储区相关联。举例来说,与一或多个其它权威168相比,一个权威168可在一或多个存储单元152中具有更大数目的分区260或更大尺寸的分区260。
图2F描绘根据一些实施例的存储群集的叶片252中的弹性软件层。在弹性结构中,弹性软件是对称的,即,每一叶片的计算模块270运行图2F中所描绘的三个相同的过程层。存储管理器274执行来自其它叶片252的对存储在本地存储单元152NVRAM 204及快闪206中的数据及元数据的读取及写入请求。权威168通过向叶片252发出必要的读取及写入来履行客户端请求,对应的数据或元数据驻存在所述叶片的存储单元152上。端点272解析从交换器网状架构146监督软件接收到的客户端连接请求,将客户端连接请求中继到负责履行的权威168,并将权威168的响应中继到客户端。对称三层结构使得存储系统具有高并发性。在这些实施例中,弹性高效且可靠地横向扩展。另外,弹性实施独特的横向扩展技术,其跨越所有资源均匀地平衡工作(无论客户端访问型式如何),并通过消除通常在常规分布式锁定中出现的大部分叶片间协调需要来最大化并发性。
仍参考图2F,在叶片252的计算模块270中运行的权威168执行履行客户端请求所需的内部操作。弹性的一个特征是权威168是无状态的,即,其将活动数据及元数据高速缓冲在其自身的叶片252DRAM中以进行快速存取,但权威将每一更新存储于其在三个单独的叶片252上的NVRAM 204分区中,直到更新已写入到快闪206。在一些实施例中,所有存储系统对NVRAM 204的写入一式三份地写入到三个单独的叶片252上的分区。借助三重镜像NVRAM 204及受奇偶校验及里德所罗门RAID校验和保护的持续性存储,存储系统可在两个叶片252并发故障的情况下幸存下来,而不会丢失数据、元数据或对任一者的存取。
因为权威168是无状态的,所以其可在叶片252之间迁移。每一权威168具有唯一的识别符。NVRAM 204及快闪206分区与权威168的识别符相关联,而不与叶片252相关联,所述分区在所述叶片中的一些上运行。因此,当权威168迁移时,权威168从其新位置继续管理相同的存储分区。当新叶片252安装在存储群集的实施例中时,系统通过以下方式自动重新平衡负载:将新叶片252的存储分区以供系统的权威168使用,将所选择权威168迁移到新叶片252,开始新叶片252上的端点272并将其包含在交换器网状架构146的客户端连接分布算法中。
从其新位置,迁移的权威168将其NVRAM 204分区的内容存续在快闪206上,处理来自其它权威168的读取及写入请求,并履行端点272指向其的客户端请求。相似地,如果叶片252发生故障或被移除,那么系统在系统的剩余叶片252之间重新分布其权威168。重新分布的权威168从其新位置继续执行其原来的功能。
图2G描绘根据一些实施例的存储群集的叶片252中的权威168及存储资源。每一权威168排他地负责每一叶片252上的快闪206及NVRAM 204的一分区。权威168独立于其它权威168而管理其分区的内容及完整性。权威168压缩传入数据并将其暂时保持在其NVRAM204分区中,且然后对存储分段中的数据进行合并、RAID保护并存续在其快闪206分区中。当权威168将数据写入到快闪206时,存储管理器274执行必要的快闪翻译以优化写入性能并最大化媒体寿命。在后台,权威168对客户端已通过覆写数据而使之过时的数据所占据的空间进行“垃圾收集”或回收。应了解,由于权威168的分区是不相交的,因此不需要分布式锁定来执行客户端及写入或执行后台功能。
本文中所描述的实施例可利用各种软件、通信及/或网络协议。另外,可调整硬件及/或软件的配置以适应各种协议。举例来说,实施例可利用活动目录(ActiveDirectory),其是在WINDOWSTM环境中提供身份验证、目录、策略及其它服务的基于数据库的系统。在这些实施例中,LDAP(轻型目录访问协议)是用于查询及修改目录服务提供者(例如活动目录)中的项目的实例应用协议。在一些实施例中,网络锁管理器(“NLM”)被用作与网络文件系统(‘NFS’)合作工作的设施,以提供系统V风格的咨询文件及网络上的记录锁定。服务器消息块(‘SMB’)协议(其一个版本也被称作共同因特网文件系统(‘CIFS’))可与本文中所论述的存储系统集成。SMP作为应用层网络协议操作,通常用于提供对文件、打印机及串行端口的共享访问以及网络上的节点之间的混杂通信。SMB还提供经过身份验证的过程间通信机制。AMAZONTM S3(简单存储服务)是亚马逊网络服务(Amazon Web Service)提供的网络服务,且本文中所描述的系统可通过网络服务接口(REST(表述性状态转移)、SOAP(简单对象访问协议)及BitTorrent)与Amazon S3介接。RESTful API(应用编程接口)分解事务以创建一系列小模块。每一模块解决事务的特定基础部分。这些实施例尤其是针对对象数据提供的控制或权限可包含访问控制列表(‘ACL’)的利用。ACL是附加到对象的权限列表,且ACL规定哪些用户或系统过程被授予访问对象的权限,以及允许对给定对象执行哪些操作。系统可利用第6版因特网协议(‘IPv6’)及IPv4作为通信协议来为网络上的计算机提供识别及定位系统,并使流量跨越因特网路由。网络系统之间的包路由可包含等价多路径路由(‘ECMP’),其是一种路由策略,其中下一跳包转发到单个目的地可在多个“最佳路径”上发生,这些路径在路由度量计算中并列首位。多路径路由可与大多数路由协议联合使用,因为其是限于单个路由器的每跳决策。软件可能支持多租户,其为其中软件应用的单个实例服务于多个客户的架构。每一客户可称为租户。在一些实施例中,租户可被赋予定制应用的一些部分的能力,但不能定制应用的代码。实施例可维护审核日志。审核日志是记录计算系统中的事件的文档。除了将访问了哪些资源建档之外,审核日志条目通常还包含目的地地址及源地址、时间戳以及用户登录信息,以符合各种法规。实施例可支持各种密钥管理策略,例如加密密钥轮换。另外,系统可支持动态根密码或动态更改密码的一些变化形式。
图3A陈述根据本公开的一些实施例的经耦合以与云服务提供者302进行数据通信的存储系统306的图式。尽管较不详细地描绘,但图3A中所描绘的存储系统306可与上文参考图1A-1D及图2A-2G所描述的存储系统相似。在一些实施例中,图3A中所描绘的存储系统306可体现为包含不平衡活动/活动控制器的存储系统,体现为包含平衡活动/活动控制器的存储系统,体现为包含其中利用每一控制器的资源中的少于所有资源使得每一控制器具有可用于支持故障转移的保留资源的活动/活动控制器的存储系统,体现为包含全活动/活动控制器的存储系统,体现为包含数据集分离式控制器的存储系统,体现为包含具有前端控制器及后端集成存储控制器的双层架构的存储系统,体现为包含双控制器阵列的横向扩展群集的存储系统,以及此些实施例的组合。
在图3A中所描绘的实例中,存储系统306经由数据通信链路304耦合到云服务提供者302。数据通信链路304可体现为专用数据通信链路,体现为通过使用一或多个数据通信网络(例如广域网(‘WAN’)或LAN)提供的数据通信路径,或体现为能够在存储系统306与云服务提供者302之间输送数字信息的某一其它机构。此数据通信链路304可为完全有线、完全无线,或有线与无线数据通信路径的某一聚合。在此实例中,数字信息可经由数据通信链路304使用一或多个数据通信协议在存储系统306与云服务提供者302之间交换。举例来说,数字信息可经由数据通信链路304使用以下协议在存储系统306与云服务提供者302之间交换:手持式装置传送协议(‘HDTP’)、超文本传送协议(‘HTTP’)、因特网协议(‘IP’)、实时传送协议(‘RTP’)、传输控制协议(‘TCP’)、用户数据报协议(‘UDP’)、无线应用协议(‘WAP’),或其它协议。
图3A中所描绘的云服务提供者302可体现为例如通过经由数据通信链路304共享计算资源而为云服务提供者302的用户提供多种多样的服务的系统及计算环境。云服务提供者302可提供对例如计算机网络、服务器、存储装置、应用及服务等等的可配置计算资源的共享池的按需访问。可配置资源的共享池可以最少的管理工作被迅速预配并发布到云服务提供者302的用户。通常,云服务提供者302的用户不知晓云服务提供者302利用来提供服务的确切计算资源。尽管在许多情形中此云服务提供者302可经由因特网来访问,但所属领域中有技术的读者将认识到,使共享资源的使用抽象化以通过任何数据通信链路为用户提供服务的任何系统可被视为云服务提供者302。
在图3A中所描绘的实例中,云服务提供者302可经配置以通过实施各种服务模型而为存储系统306及存储系统306的用户提供多种服务。举例来说,云服务提供者302可经配置以通过实施基础设施即服务(‘'IaaS’)服务模型、通过实施平台即服务(‘PaaS’)服务模型、通过实施软件即服务(‘SaaS’)服务模型、通过实施身份验证即服务(‘AaaS’)服务模型、通过实施其中云服务提供者302提供对其存储基础设施的访问以供存储系统306及存储系统306的用户使用的存储即服务模型等等而提供服务。读者将了解,云服务提供者302可经配置以通过实施额外服务模型而为存储系统306及存储系统306的用户提供额外服务,因为上文所描述的服务模型是仅出于解释目的而包含在内且绝不表示对云服务提供者302可提供的服务的限制或关于云服务提供者302可实施的服务模型的限制。
在图3A中所描绘的实例中,云服务提供者302可体现为例如私有云、体现为公有云或体现为私有云与公有云的组合。在其中云服务提供者302体现为私有云的实施例中,云服务提供者302可专用于为单个组织提供服务而非为多个组织提供服务。在其中云服务提供者302体现为公有云的实施例中,云服务提供者302可为多个组织提供服务。在又一些替代实施例中,云服务提供者302可以混合云部署体现为私有云与公有云服务的混合。
尽管图3A中未明确描绘,但读者将了解,大量额外硬件组件及额外软件组件可对于促进将云服务递送到存储系统306及存储系统306的用户是必要的。举例来说,存储系统306可耦合到(或甚至包含)云存储网关。此云存储网关可体现为例如与存储系统306一起定位成内部部署(on premise)的基于硬件或基于软件的器具。此云存储网关可作为在存储阵列306上执行的本地应用与存储阵列306所利用的远程基于云的存储装置之间的桥接器来操作。通过使用云存储网关,组织可将主要iSCSI或NAS移动到云服务提供者302,借此使得组织能够节省其内部部署存储系统上的空间。此云存储网关可经配置以效仿磁盘阵列、基于块的装置、文件服务器,或可将SCSI命令、文件服务器命令或其它适当命令翻译成促进与云服务提供者302通信的REST空间协议的其它存储系统。
为了使得存储系统306及存储系统306的用户能够利用云服务提供者302提供的服务,可发生云迁移过程,在此期间数据、应用或其它元素从组织的本地系统(或甚至从另一云环境)移动到云服务提供者302。为了将数据、应用或其它元素成功迁移到云服务提供者302的环境,可利用例如云迁移工具等的中间件来桥接云服务提供者302的环境与组织的环境之间的间隙。此类云迁移工具还可经配置以解决与将大量数据迁移到云服务提供者302相关联的潜在高网络成本及长传送时间,以及解决与数据通信网络上对云服务提供者302敏感的数据相关联的安全性担忧。为了进一步使得存储系统306及存储系统306的用户能够利用云服务提供者302提供的服务,还可使用云编排程序来布置及协调自动任务以追求创建合并过程或工作流。此云编排程序可执行例如配置各种组件(无论那些组件是云组件还是内部部署组件)以及管理此些组件之间的互连等任务。云编排程序可简化组件间通信及连接以确保链路被正确配置及维护。
在图3A中所描绘的实例中且如上文简要描述,云服务提供者302可经配置以通过使用SaaS服务模型而为存储系统306及存储系统306的用户提供服务,从而消除对在本地计算机上安装并运行应用的需要,这可简化应用的维护及支持。根据本公开的各种实施例,此类应用可采取许多形式。举例来说,云服务提供者302可经配置以为存储系统306及存储系统306的用户提供对数据分析应用的访问。此类数据分析应用可例如经配置以接收由存储系统306以电话方式传回(phone home)的大量遥测数据。此类遥测数据可描述存储系统306的各种操作特性且可被分析用于多种多样的目的,包含例如确定存储系统306的健康状况、识别在存储系统306上执行的工作负载、预测存储系统306何时将耗尽各种资源、建议配置改变、硬件或软件升级、工作流迁移,或可改进存储系统306的操作的其它行动。
云服务提供者302还可经配置以为存储系统306及存储系统306的用户提供对虚拟化计算环境的访问。此类虚拟化计算环境可体现为例如虚拟机或其它虚拟化计算机硬件平台、虚拟存储装置、虚拟化计算机网络资源等等。此类虚拟化环境的实例可包含经创建以效仿实际计算机的虚拟机、使逻辑桌面与物理机分开的虚拟化桌面环境、允许对不同类型的具体文件系统的统一访问的虚拟化文件系统,以及许多其它虚拟化环境。
尽管图3A中所描绘的实例图解说明经耦合以与云服务提供者302进行数据通信的存储系统306,但在其它实施例中,存储系统306可为其中私有云元素(例如,私有云服务、内部部署基础设施等等)与公有云元素(例如,可由一或多个云服务提供者提供的公有云服务、基础设施等等)组合以利用各种平台之间的编排形成单个解决方案的混合云部署的部分。此混合云部署可利用混合云管理软件,例如来自MicrosoftTM的AzureTM Arc,其将混合云部署的管理集中到任何基础设施,并使服务能够部署在任何地方。在此实例中,混合云管理软件可经配置以创建、更新及删除形成混合云部署的资源(物理及虚拟两种),将计算及存储分配给特定工作负载,监测工作负载及资源的性能、策略合规性、更新及修补、安全状态,或执行多种其它任务。
读者将了解,通过将本文中所描述的存储系统与一或多个云服务提供者配对,可实现各种供应。举例来说,可提供灾难恢复即服务(‘DRaaS’),其中利用云资源来保护应用及数据免受灾难造成的破坏,包含在其中存储系统可充当主要数据存储器件的实施例中。在此类实施例中,可采取在系统故障的情况下允许业务连续性的总系统备份。在此类实施例中,还可将云数据备份技术(自身或作为较大DRaaS解决方案的部分)集成到包含本文中所描述的存储系统及云服务提供者的总体解决方案中。
本文中所描述的存储系统以及云服务提供者可利用来提供各种各样的安全特征。举例来说,存储系统可加密静态数据(且数据可加密地发送到存储系统及从存储系统发送)且可利用秘钥管理即服务(‘KMaaS’)来管理加密秘钥、用于锁定及解锁存储装置的秘钥等等。同样地,可利用云数据安全网关或相似机构来确保存储于存储系统内的数据不会作为云数据备份操作的部分不恰当地最终存储于云中。此外,可在包含存储系统的数据中心中或在云服务提供者内利用微分段或基于身份的分段来在数据中心及云部署中创建安全区,从而使得工作负载能够彼此隔离。
为了进一步解释,图3B陈述根据本公开的一些实施例的存储系统306的图式。尽管较不详细地描绘,但图3B中所描绘的存储系统306可与上文参考图1A-1D及图2A-2G所描述的存储系统相似,因为所述存储系统可包含上文所描述的组件中的许多组件。
图3B中所描绘的存储系统306可包含可以许多形式体现的大量存储资源308。举例来说,存储资源308可包含纳米RAM或利用沉积于衬底上的碳纳米管的另一形式的非易失性随机存取存储器、3D交叉点非易失性存储器、快闪存储器,包含单层胞元(‘SLC’)NAND快闪、多层胞元(‘MLC’)NAND快闪、三层胞元(‘TLC’)NAND快闪、四层胞元(‘QLC’)NAND快闪,或其它。同样地,存储资源308可包含非易失性磁阻式随机存取存储器(‘MRAM’),包含自旋转移扭矩(‘STT’)MRAM。或者,实例存储资源308可包含非易失性相变存储器(‘PCM’)、允许存储及检索光子量子信息的量子存储器、电阻式随机存取存储器(‘ReRAM’)、存储类存储器(‘SCM’),或其它形式的存储资源,包含本文中所描述的资源的任何组合。读者将了解上文所描述的存储系统可利用其它形式的计算机存储器及存储装置,包含DRAM、SRAM、EEPROM、通用存储器,及许多其它存储器。图3A中所描绘的存储资源308可以多种形式因子体现,包含但不限于,双直列存储器模块(‘DIMM’)、非易失性双直列存储器模块(‘NVDIMM’)、M.2、U.2,及其它。
图3B中所描绘的存储资源308可包含各种形式的SCM。SCM可有效地将快速非易失性存储器(例如,NAND快闪)视为DRAM的扩展,使得整个数据集可被视为整个驻存在DRAM中的存储器中数据集。SCM可包含非易失性媒体,例如NAND快闪。此NAND快闪可利用NVMe来存取,NVMe可使用PCIe总线作为其输送,从而提供与旧协议相比相对低的存取等待时间。事实上,用于全快闪阵列中的SSD的网络协议可包含使用以太网的NVMe(ROCE、NVME TCP)、光纤通道(NVMe FC)、无线带宽(iWARP),及使得可将快速非易失性存储器视为DRAM的扩展的其它协议。鉴于DRAM通常是字节可寻址及快速的、例如NAND快闪等的非易失性存储器是块可寻址的事实,可需要控制器软件/硬件堆叠来将块数据转换为存储于媒体中的字节。举例来说,可用作SCM的媒体及软件的实例可包含3D Xpoint、因特尔存储器驱动技术、三星(Samsung)的Z-SSD,及其它。
图3B中所描绘的存储资源308还可包含赛道存储器(也称为畴壁存储器)。此赛道存储器可体现为依赖于电子在固态装置中自旋时形成的磁场以及其电子电荷的固有强度及定向的非易失性固态存储器形式。通过使用自旋相干电流来使磁畴沿着纳米级坡莫合金金属线移动,当电流通过金属线时,磁畴可能会经过位于金属线附近的磁读/写头,从而改变磁畴以记录位型式。为了创建赛道存储器装置,可将许多此类写入及读/写元件封装在一起。
图3B中所描绘的实例存储系统306可实施多种存储架构。举例来说,根据本公开的一些实施例的存储系统可利用块存储,其中数据以块为单位进行存储,且每一块基本上用作个别硬驱动器。根据本公开的一些实施例的存储系统可利用对象存储,其中数据被作为对象来管理。每一对象可包含数据本身、可变量的元数据,及全局唯一识别符,其中对象存储可在多个层级(例如,装置层级、系统层级、接口层级)处实施。根据本公开的一些实施例的存储系统利用文件存储,其中数据存储于阶层结构中。此数据可以文件及文件夹形式保存,并呈现给以相同格式存储数据的系统及检索数据的系统两者。
图3B中所描绘的实例存储系统306可体现为其中可通过使用纵向扩展模型添加额外存储资源、可通过使用横向扩展模型添加额外存储资源或通过其某一组合添加额外存储资源的存储系统。在纵向扩展模型中,可通过添加额外存储装置而添加额外存储。然而,在横向扩展模型中,可将额外存储节点添加到存储节点群集,其中此类存储节点可包含额外处理资源、额外网络资源等等。
图3B中所描绘的实例存储系统306可以多种不同方式利用上文所描述的存储资源。举例来说,存储资源的某一部分可利用来充当写入高速缓冲存储器,其中数据最初写入到具有相对快速写入等待时间、相对高写入带宽或相似特性的存储资源。在此实例中,写入到充当写入高速缓冲存储器的存储资源的数据可稍后写入到其它存储资源,所述其它存储资源可由与利用来充当写入高速缓冲存储器的存储资源相比较慢的写入等待时间、较低的写入带宽或相似的特性表征。以相似方式,存储系统内的存储资源可用作读取高速缓冲存储器,其中读取高速缓冲存储器是根据一组预定规则或启发法来填充。在其它实施例中,可通过根据一或多个策略将数据放置在存储系统内来在存储系统内实现分层,使得例如频繁存取的数据存储于较快存储层次中,而较不频繁存取的数据存储于较慢存储层次中。
图3B中所描绘的存储系统306还包含可用于促进存储系统306内的组件之间的数据通信以及存储系统306与存储系统306外部的计算装置之间的数据通信的通信资源310,包含其中那些资源被相对广阔的区域分开的实施例。通信资源310可经配置以利用多种不同协议及数据通信网状架构来促进存储系统内的组件以及与存储系统外部的计算装置之间的数据通信。举例来说,通信资源310可包含:光纤通道(‘FC’)技术,例如可经由FC网络输送SCSI命令的FC网状架构及FC协议;经由以太网的FC(‘FCoE’)技术,通过所述技术囊封且在以太网络上传输FC帧;无线带宽(‘IB’)技术,其中利用交换式网状架构拓扑来促进通道适配器之间的传输;快速NVM(‘NVMe’)技术及经由网状架构的NVMe(‘NVMeoF’)技术,通过所述技术可存取经由快速PCI(‘PCIe’)总线附接的非易失性存储媒体;以及其它。事实上,上文所描述的存储系统可直接或间接利用中微子通信技术及装置,通过所述技术及装置使用中微子束传输来传输信息(包含二进制信息)。
通信资源310还可包含用于利用串行附接SCSI(‘SAS’)存取存储系统306内的存储资源308的机构、用于将存储系统306内的存储资源308连接到存储系统306内的主机总线适配器的串行ATA(‘SATA’)总线接口、用以提供对存储系统306内的存储资源308的块层级存取的因特网小型计算机系统接口(‘iSCSI’)技术,及可用于促进存储系统306内的组件之间的数据通信以及存储系统306与存储系统306外部的计算装置之间的数据通信的其它通信资源。
图3B中所描绘的存储系统306还包含可用于执行计算机程序指令及执行存储系统306内的其它计算任务的处理资源312。处理资源312可包含针对某一特定目的定制的一或多个ASIC以及一或多个CPU。处理资源312还可包含一或多个DSP、一或多个FPGA、一或多个系统单芯片(‘SoC’),或其它形式的处理资源312。存储系统306可利用存储资源312来执行多种任务,包含但不限于支持下文将更详细描述的软件资源314的执行。
图3B中所描绘的存储系统306还包含在由存储系统306内的处理资源312执行时可执行多种多样的任务的软件资源314。举例来说,软件资源314可包含在由存储系统306内的处理资源312执行时用于执行各种数据保护技术以保持存储于存储系统内的数据的完整性的一或多个计算机程序指令模块。读者将了解,此类数据保护技术可例如由在存储系统内的计算机硬件上执行的系统软件、由云服务提供者或以其它方式执行。举例来说,此类数据保护技术可包含:数据归档技术,其导致不再主动使用的数据被移动到单独的存储装置或单独的存储系统以供长期存留;数据备份技术,通过所述技术,存储于存储系统中的数据可被复制并存储于不同位置中,以避免在装备故障或存储系统发生某种其它形式的灾难的情况下数据丢失;数据复制技术,通过所述技术,存储于存储系统中的数据被复制到另一存储系统,使得数据可经由多个存储系统存取;数据快照技术,通过所述技术,可在各种时间点捕获存储系统内数据的状态;数据及数据库克隆技术,通过所述技术,可创建数据及数据库的复制副本;以及其它数据保护技术。
软件资源314还可包含用于实施软件定义的存储(‘SDS’)的软件。在此实例中,软件资源314可包含在被执行时用于独立于基础硬件进行数据存储的基于策略的预配及管理的一或多个计算机程序指令模块。此类软件资源314可用于实施存储虚拟化以将存储硬件与管理存储硬件的软件分开。
软件资源314还可包含用于促进及优化针对于存储系统306中的存储资源308的I/O操作的软件。举例来说,软件资源314可包含执行各种数据缩减技术(例如,数据压缩、重复数据删除及其它)的软件模块。软件资源314可包含智能地将I/O操作分组在一起以促进基础存储资源308的较佳使用的软件模块、执行从存储系统内进行迁移的数据迁移操作的软件模块,以及执行其它功能的软件模块。此类软件资源314可体现为一或多个软件容器或以许多其它方式体现。
为了进一步解释,图3C陈述根据本公开的一些实施例的基于云的存储系统318的实例。在图3C中所描绘的实例中,基于云的存储系统318整个创建于云计算环境316(例如,亚马逊网络服务(‘AWS’)、Microsoft Azure、谷歌云平台、IBM云、甲骨文云(Oracle Cloud)及其它)中。基于云的存储系统318可用于提供与可由上文所描述的存储系统提供的服务相似的服务。举例来说,基于云的存储系统318可用于为基于云的存储系统318的用户提供块存储服务,基于云的存储系统318可用于通过使用固态存储装置为基于云的存储系统318的用户提供存储服务,等等。
图3C中所描绘的基于云的存储系统318包含各自用于支持存储控制器应用324、326的执行的两个云计算实例320、322。云计算实例320、322可体现为例如可由云计算环境316提供以支持软件应用(例如存储控制器应用324、326)的执行的云计算资源(例如,虚拟机)的实例。在一个实施例中,云计算实例320、322可体现为亚马逊弹性计算云(‘EC2’)实例。在此实例中,包含存储控制器应用324、326的亚马逊机器图像(‘AMI’)可经启动以创建并配置可执行存储控制器应用324、326的虚拟机。
在图3C中所描绘的实例方法中,存储控制器应用324、326可体现为在被执行时执行各种存储任务的计算机程序指令模块。举例来说,存储控制器应用324、326可体现为在被执行时执行与上文所描述的图1A中的控制器110A、110B相同的任务的计算机程序指令模块,所述任务是例如将从基于云的存储系统318的用户接收的数据写入到基于云的存储系统318、从基于云的存储系统318擦除数据、从基于云的存储系统318检索数据并将此数据提供到基于云的存储系统318的用户、监测及报告磁盘利用率及性能、执行冗余操作,例如RAID或类RAID数据冗余操作、压缩数据、加密数据、重复数据删除,等等。读者将了解,由于存在各自包含存储控制器应用324、326的两个云计算实例320、322,因此在一些实施例中,一个云计算实例320可作为如上文所描述的主要控制器操作,而另一云计算实例322可作为如上文所描述的辅助控制器操作。读者将了解,图3C中所描绘的存储控制器应用324、326可包含在不同云计算实例320、322内执行的相同源代码。
考虑其中云计算环境316体现为AWS且云计算实例体现为EC2实例的实例。在此实例中,作为主要控制器操作的云计算实例320可部署于具有相对大量存储器及处理能力的实例类型中的一者上,而作为辅助控制器操作的云计算实例322可部署于具有相对小量存储器及处理能力的实例类型中的一者上。在此实例中,在发生其中主要与辅助的作用切换的故障转移事件后,可实际上即刻执行双故障转移使得:1)发生第一故障转移事件,其中先前作为辅助控制器操作的云计算实例322开始作为主要控制器操作;及2)作为具有相对大量存储器及处理能力的实例类型的第三云计算实例(未展示)通过存储控制器应用的副本启动,其中第三云计算实例开始作为主要控制器操作,而原本作为辅助控制器操作的云计算实例322再次开始作为辅助控制器操作。在此实例中,先前作为主要控制器操作的云计算实例320可终止。读者将了解,在替代实施例中,在故障转移事件之后作为辅助控制器操作的云计算实例320可继续作为辅助控制器操作,且一旦主要作用已被第三云计算实例(未展示)承担,则在发生故障转移事件之后作为主要控制器操作的云计算实例322可终止。
读者将了解,虽然上文所描述的实施例涉及其中一个云计算实例320作为主要控制器操作且第二云计算实例322作为辅助控制器操作的实施例,但其它实施例在本公开的范围内。举例来说,每一云计算实例320、322可作为用于由基于云的存储系统318支持的地址空间的某一部分的主要控制器操作,每一云计算实例320、322可在针对于基于云的存储系统318的I/O操作服务以某一其它方式划分的情况下作为主要控制器操作,等等。事实上,在其中成本节省可优先于性能需求的其它实施例中,可存在含有存储控制器应用的仅单个云计算实例。
图3C中所描绘的基于云的存储系统318包含具有本地存储装置330、334、338的云计算实例340a、340b、340n。图3C中所描绘的云计算实例340a、340b、340n可体现为例如可由云计算环境316提供以支持软件应用的执行的云计算资源的实例。图3C的云计算实例340a、340b、340n可不同于上文所描述的云计算实例320、322,因为图3C的云计算实例340a、340b、340n具有本地存储装置330、334、338资源,而支持存储控制器应用324、326的执行的云计算实例320、322不必具有本地存储资源。具有本地存储装置330、334、338的云计算实例340a、340b、340n可体现为例如包含一或多个SSD的EC2 M5实例,体现为包含一或多个SSD的EC2R5实例,体现为包含一或多个SSD的EC2 I3实例,等等。在一些实施例中,本地存储装置330、334、338必须体现为固态存储装置(例如,SSD)而非利用硬盘驱动器的存储装置。
在图3C中所描绘的实例中,具有本地存储装置330、334、338的云计算实例340a、340b、340n中的每一者可包含软件守护程序328、332、336,所述软件守护程序在由云计算实例340a、340b、340n执行时可将本身呈现给存储控制器应用324、326,如同云计算实例340a、340b、340n是物理存储装置(例如,一或多个SSD)。在此实例中,软件守护程序328、332、336可包含与存储装置上通常含有的那些相似的计算机程序指令,使得存储控制器应用324、326可发送及接收存储控制器会向存储装置发送的相同的命令。以此方式,存储控制器应用324、326可包含与由上文所描述的存储系统中的控制器执行的代码相同(或基本上相同)的代码。在这些及相似实施例中,存储控制器应用324、326与具有本地存储装置330、334、338的云计算实例340a、340b、340n之间的通信可利用iSCSI、经由TCP的NVMe、消息传递、定制协议,或以某一其它机制。
在图3C中所描绘的实例中,具有本地存储装置330、334、338的云计算实例340a、340b、340n中的每一者还可耦合到由云计算环境316提供的块存储装置342、344、346。由云计算环境316提供的块存储装置342、344、346可体现为例如亚马逊弹性块存储(‘EBS’)卷。举例来说,第一EBS卷可耦合到第一云计算实例340a,第二EBS卷可耦合到第二云计算实例340b,且第三EBS卷可耦合到第三云计算实例340n。在此实例中,由云计算环境316提供的块存储装置342、344、346可以与如何利用上文所描述的NVRAM装置的方式相似的方式来利用,因为在特定云计算实例340a、340b、340n内执行的软件守护程序328、332、336(或某一其它模块)可在接收到要写入数据的请求后即刻起始将数据写入到其所附接EBS卷以及将数据写入到其本地存储装置330、334、338资源。在一些替代实施例中,可仅将数据写入到特定云计算实例340a、340b、340n内的本地存储装置330、334、338资源。在替代实施例中,替代使用由云计算环境316提供的块存储装置342、344、346作为NVRAM,具有本地存储装置330、334、338的云计算实例340a、340b、340n中的每一者上的实际RAM可用作NVRAM,借此减少与使用EBS卷作为NVRAM相关联的网络利用成本。
在图3C中所描绘的实例中,具有本地存储装置330、334、338的云计算实例340a、340b、340n可由支持存储控制器应用324、326的执行的云计算实例320、322利用来服务于针对于基于云的存储系统318的I/O操作。考虑其中执行存储控制器应用324的第一云计算实例320作为主要控制器操作的实例。在此实例中,执行存储控制器应用324的第一云计算实例320可接收(直接或经由辅助控制器间接)要将数据从基于云的存储系统318的用户写入到基于云的存储系统318的请求。在此实例中,执行存储控制器应用324的第一云计算实例320可在最终将要写入数据的经删除重复、经加密或以其它方式可能更新的版本的请求发送到具有本地存储装置330、334、338的云计算实例340a、340b、340n中的一或多者之前执行各种任务,例如对所述请求中所含的数据进行删除重复、压缩所述请求中所含的数据、确定将所述请求中所含的数据写入到何处,等等。在一些实施例中,云计算实例320或322可接收要从基于云的存储系统318读取数据的请求且可最终将要读取数据的请求发送到具有本地存储装置330、334、338的云计算实例340a、340b、340n中的一或多者。
读者将了解,当具有本地存储装置330、334、338的特定云计算实例340a、340b、340n接收到要写入数据的请求时,软件守护程序328、332、336或在特定云计算实例340a、340b、340n上执行的某一其它计算机程序指令模块可经配置以不仅将数据写入到其自身的本地存储装置330、334、338资源及由云计算环境316提供的任何适当块存储装置342、344、346,而且软件守护程序328、332、336或在特定云计算实例340a、340b、340n上执行的某一其它计算机程序指令模块还可经配置以将数据写入到附接到特定云计算实例340a、340b、340n的基于云的对象存储装置348。附接到特定云计算实例340a、340b、340n的基于云的对象存储装置348可体现为例如可由特定云计算实例340a、340b、340n存取的亚马逊简单存储服务(‘S3’)存储装置。在其它实施例中,各自包含存储控制器应用324、326的云计算实例320、322可起始将数据存储于云计算实例340a、340b、340n的本地存储装置330、334、338以及基于云的对象存储装置348中。
读者将了解,如上文所描述,基于云的存储系统318可用于为基于云的存储系统318的用户提供块存储服务。虽然由云计算实例340a、340b、340n利用的本地存储装置330、334、338资源及块存储装置342、344、346资源可支持块层级存取,但附接到特定云计算实例340a、340b、340n的基于云的对象存储装置348仅支持基于对象的存取。为了解决此问题,软件守护程序328、332、336或在特定云计算实例340a、340b、340n上执行的某一其它计算机程序指令模块可经配置以获取数据块、将那些块封装成对象,且将对象写入到附接到特定云计算实例340a、340b、340n的基于云的对象存储装置348。
考虑其中数据以1MB块为单位写入到由云计算实例340a、340b、340n利用的本地存储装置330、334、338资源及块存储装置342、344、346资源。在此实例中,假设基于云的存储系统318的用户发出要写入数据的请求,在数据由存储控制器应用324、326压缩且删除重复之后,所述请求导致需要写入5MB的数据。在此实例中,将数据写入到由云计算实例340a、340b、340n利用的本地存储装置330、334、338资源及块存储装置342、344、346资源是相对直截了当的,因为大小为1MB的5个块被写入到由云计算实例340a、340b、340n利用的本地存储装置330、334、338资源及块存储装置342、344、346资源。在此实例中,软件守护程序328、332、336或在特定云计算实例340a、340b、340n上执行的某一其它计算机程序指令模块可经配置以:1)创建包含第一1MB的数据的第一对象且将第一对象写入到基于云的对象存储装置348,2)创建包含第二1MB的数据的第二对象且将第二对象写入到基于云的对象存储装置348,3)创建包含第三1MB的数据的第三对象且将第三对象写入到基于云的对象存储装置348,等等。因此,在一些实施例中,写入到基于云的对象存储装置348的每一对象可为大小相同(或几乎相同)的。读者将了解,在此实例中,与数据本身相关联的元数据可包含于每一对象中(例如,对象的第一1MB是数据且剩余部分是与数据相关联的元数据)。
读者将了解,基于云的对象存储装置348可并入到基于云的存储系统318中以增加基于云的存储系统318的持久性。继续其中云计算实例340a、340b、340n是EC2实例的上文所描述的实例,读者将理解,EC2实例仅保证具有99.9%的每月正常运行时间且存储于本地实例存储器件中的数据仅在EC2实例的寿命期期间存续。因此,依赖于具有本地存储装置330、334、338的云计算实例340a、340b、340n作为基于云的存储系统318中的持续性数据存储的唯一源可导致存储系统相对不可靠。同样地,EBS卷经设计以实现99.999%可用性。因此,即使依赖于EBS作为基于云的存储系统318中的持续性数据存储器件,也可能导致存储系统不充分持久。然而,Amazon S3经设计以提供99.999999999%持久性,这意味着可将S3并入到其存储池中的基于云的存储系统318基本上比各种其它选项更持久。
读者将了解,虽然可将S3并入到其存储池中的基于云的存储系统318基本上比各种其它选项更持久,但利用S3作为主要存储池可导致存储系统具有相对缓慢响应时间及相对长I/O等待时间。因此,图3C中所描绘的基于云的存储系统318不仅将数据存储于S3中而且基于云的存储系统318还将数据存储于由云计算实例340a、340b、340n利用的本地存储装置330、334、338资源及块存储装置342、344、346资源中,使得读取操作可从由云计算实例340a、340b、340n利用的本地存储装置330、334、338资源及块存储装置342、344、346资源服务,借此减少在基于云的存储系统318的用户尝试从基于云的存储系统318读取数据时的读取等待时间。
在一些实施例中,由基于云的存储系统318存储的所有数据可存储于以下两者中:1)基于云的对象存储装置348,及2)由云计算实例340a、340b、340n利用的本地存储装置330、334、338资源或块存储装置342、344、346资源中的至少一者。在此类实施例中,由云计算实例340a、340b、340n利用的本地存储装置330、334、338资源及块存储装置342、344、346资源可有效地作为通常包含也存储于S3中的所有数据的高速缓冲存储器操作,使得对数据的所有读取可由云计算实例340a、340b、340n服务而不需要云计算实例340a、340b、340n存取基于云的对象存储装置348。然而,读者将了解,在其它实施例中,由基于云的存储系统318存储的所有数据可存储于基于云的对象存储装置348中,但由基于云的存储系统318存储的少于所有数据可存储于由云计算实例340a、340b、340n利用的本地存储装置330、334、338资源或块存储装置342、344、346资源中的至少一者中。在此实例中,可利用各种策略来确定由基于云的存储系统318存储的数据的哪一子集应驻存于以下两者中:1)基于云的对象存储装置348,及2)由云计算实例340a、340b、340n利用的本地存储装置330、334、338资源或块存储装置342、344、346资源中的至少一者。
如上文所描述,当具有本地存储装置330、334、338的云计算实例340a、340b、340n体现为EC2实例时,具有本地存储装置330、334、338的云计算实例340a、340b、340n仅保证具有99.9%的每月正常运行时间且存储于本地实例存储器件中的数据仅在具有本地存储装置330、334、338的每一云计算实例340a、340b、340n的寿命期期间存续。因此,在基于云的存储系统318内执行的一或多个计算机程序指令模块(例如,在其自身的EC2实例上执行的监测模块)可经设计以处置具有本地存储装置330、334、338的云计算实例340a、340b、340n中的一或多者的故障。在此实例中,监测模块可通过创建具有本地存储装置的一或多个新的云计算实例、从基于云的对象存储装置348检索存储于出故障的云计算实例340a、340b、340n上的数据且将从基于云的对象存储装置348检索的数据存储于新创建的云计算实例上的本地存储装置中而处置具有本地存储装置330、334、338的云计算实例340a、340b、340n中的一或多者的故障。读者将了解,可实施此过程的许多变体。
考虑其中具有本地存储装置330、334、338的所有云计算实例340a、340b、340n发生故障的实例。在此实例中,监测模块可创建具有本地存储装置的新的云计算实例,其中选择高带宽实例类型以允许具有本地存储装置的新创建的高带宽云计算实例与基于云的对象存储装置348之间的最大数据传送速率。读者将了解,选择实例类型以允许新的云计算实例与基于云的对象存储装置348之间的最大数据传送速率,使得新的高带宽云计算实例可尽快用来自基于云的对象存储装置348的数据再水化。一旦新的高带宽云计算实例用来自基于云的对象存储装置348的数据再水化,便可创建较不昂贵的较低带宽云计算实例,数据可迁移到较不昂贵的较低带宽云计算实例,并且高带宽云计算实例可终止。
读者将了解,在一些实施例中,所创建的新的云计算实例的数目可基本上超过在本地存储由基于云的存储系统318存储的所有数据所需的云计算实例的数目。所创建的新的云计算实例的数目可基本上超过在本地存储由基于云的存储系统318存储的所有数据所需的云计算实例的数目,以便更快速地从基于云的对象存储装置348拉取数据并将数据拉取到新的云计算实例中,因为每一新的云计算实例可(并行地)检索由基于云的存储系统318存储的数据的某一部分。在此类实施例中,一旦由基于云的存储系统318存储的数据已经被拉取到新创建的云计算实例中,那么所述数据可被合并在新创建的云计算实例的子集中并且那些新创建的过多的云计算实例可终止。
考虑其中需要1000个云计算实例以便在本地存储基于云的存储系统318的用户已经写入到基于云的存储系统318的所有有效数据的实例。在此实例中,假设所有1,000个云计算实例均发生故障。在此实例中,监测模块可致使创建100,000个云计算实例,其中每一云计算实例负责从基于云的对象存储装置348检索基于云的存储系统318的用户已经写入到基于云的存储系统318的有效数据的不同1/100,000个组块并且在本地存储其检索到的数据集的不同组块。在此实例中,由于100,000个云计算实例中的每一者可并行地从基于云的对象存储装置348检索数据,因此与监测模块仅创建1000个替换云计算实例的实施例相比,高速缓冲层的恢复速度可快100倍。在此实例中,随着时间的推移,在本地存储在所述100,000个中的数据可合并到1,000个云计算实例中,并且剩余的99,000个云计算实例可终止。
读者将了解,可监测(例如,通过在EC2实例中执行的监测模块)基于云的存储系统318的各种性能方面,使得基于云的存储系统318可根据需要纵向扩展或横向扩展。考虑其中监测模块通过以下方式监测基于云的存储系统318的性能的实例:经由与各自用于支持存储控制器应用324、326的执行的云计算实例320、322中的一或多者的通信;经由监测云计算实例320、322、340a、340b、340n之间的通信;经由监测云计算实例320、322、340a、340b、340n与基于云的对象存储装置348之间的通信,或以某一其它方式。在此实例中,假设监测模块确定用于支持存储控制器应用324、326的执行的云计算实例320、322大小过小并且未充分服务于基于云的存储系统318的用户发出的I/O请求。在此实例中,监测模块可创建包含存储控制器应用的新的、较强大的云计算实例(例如,包含更多处理能力、更多存储器等的类型的云计算实例),使得新的、较强大的云计算实例可开始作为主要控制器操作。同样地,如果监测模块确定用于支持存储控制器应用324、326的执行的云计算实例320、322大小过大并且可通过切换到较小、较不强大的云计算实例来得到成本节省,那么监测模块可创建包含存储控制器应用的新的、较不强大(且较不昂贵)的云计算实例,使得新的、较不强大的云计算实例可开始作为主要控制器操作。
考虑其中监测模块确定由云计算实例340a、340b、340n共同提供的本地存储装置的利用率已达到预定利用率阈值(例如,95%)的实例作为动态调整基于云的存储系统318大小的额外实例。在此实例中,监测模块可创建具有本地存储装置的额外云计算实例以扩展由云计算实例提供的本地存储池。或者,监测模块可创建具有比已经存在的云计算实例340a、340b、340n更大的本地存储量的一或多个新的云计算实例,使得存储于已经存在的云计算实例340a、340b、340n中的数据可迁移到一或多个新的云计算实例并且已经存在的云计算实例340a、340b、340n可终止,借此扩展由云计算实例提供的本地存储池。同样地,如果由云计算实例提供的本地存储池过大,那么可合并数据且可终止一些云计算实例。
读者将了解,通过监测模块应用可能相对简单或相对复杂的一组预定规则,基于云的存储系统318可自动调整大小。事实上,监测模块可不仅计及基于云的存储系统318的当前状态,而且监测模块还可应用基于例如观察到的行为(例如,每晚从10PM到6AM存储系统的使用相对较少)、预定指纹(例如,虚拟桌面基础设施每增加100个虚拟桌面,针对于存储系统的IOPS数目增加X)等等的预测策略。在此实例中,基于云的存储系统318的动态扩缩可基于当前性能度量、预测工作负载及许多其它因素,包含其组合。
读者将进一步了解,由于基于云的存储系统318可动态扩缩,因此基于云的存储系统318可甚至以更动态的方式操作。考虑垃圾收集的实例。在传统存储系统中,存储量是固定的。因此,在某一时刻,存储系统可能被迫执行垃圾收集,因为可用存储量变得非常受限,以至于存储系统处于存储即将耗尽的边缘。相比来说,本文所描述的基于云的存储系统318总是可‘添加’额外的存储(例如,通过添加具有本地存储装置的更多云计算实例)。由于本文所描述的基于云的存储系统318总是可‘添加’额外的存储,因此基于云的存储系统318可做出关于何时执行垃圾收集的更智能的决策。举例来说,基于云的存储系统318可实施仅当由基于云的存储系统318服务的IOPS的数目下降到特定水平以下时才执行垃圾收集的策略。在一些实施例中,鉴于基于云的存储系统318的大小不以与传统存储系统受约束的方式相同的方式来约束,其它系统级功能(例如,删除重复、压缩)也可响应于系统负载而关闭及打开。
读者将了解,本公开的实施例解决了一些云计算环境提供的块存储服务的问题,因为一些云计算环境仅允许一个云计算实例一次连接到块存储卷。举例来说,在AmazonAWS中,仅单个EC2实例可连接到EBS卷。通过使用具有本地存储装置的EC2实例,本公开的实施例可提供多连接能力,其中多个EC2实例可连接到具有本地存储装置的另一EC2实例(‘驱动器实例’)。在此类实施例中,驱动器实例可包含在驱动器实例内执行的软件,所述软件允许驱动器实例支持从每一所连接EC2实例针对于特定卷的I/O。因此,本公开的一些实施例可体现为可能不包含图3C中所描绘的所有组件的多连接块存储服务。
在一些实施例中,尤其是在其中基于云的对象存储装置348资源体现为Amazon S3的实施例中,基于云的存储系统318可包含经配置以确保当特定云计算实例的本地存储装置用来自S3的数据再水化时适当的数据实际上在S3中的一或多个模块(例如,在EC2实例上执行的计算机程序指令模块)。此问题的出现很大程度上是因为S3实施最终一致性模型,在所述模型中,当对现有对象进行覆写时,对象的读取最终(但不一定立即)变得一致,并最终(但不一定立即)返回对象的覆写版本。为解决此问题,在本公开的一些实施例中,S3中的对象从不被覆写。替代地,传统‘覆写’将导致创建新对象(包含数据的经更新版本)并最终删除旧对象(包含数据的先前版本)。
在本公开的一些实施例中,作为从不(或几乎从不)覆写对象的尝试的一部分,当数据被写入到S3时,所得对象可以序列号加标签。在一些实施例中,这些序列号可存续在别处(例如,在数据库中),使得在任何时间点,可知晓与一些数据片段的最新版本相关联的序列号。以此方式,可通过仅读取与对象关联的序列号来做出关于S3是否具有一些数据片段的最新版本的确定,而无需实际从S3读取数据。当具有本地存储装置的云计算实例崩溃时,做出所述确定的能力可能特别重要,因为用过时的数据将替换云计算实例的本地存储装置再水化是不合意的。事实上,由于基于云的存储系统318不需要存取数据来验证其有效性,因此数据可保持加密并且可避免存取费用。
上文所描述的存储系统可执行智能数据备份技术,通过所述技术,存储于存储系统中的数据可被复制并存储于不同的位置中以避免在装备故障或一些其它形式的灾难事件中丢失数据。举例来说,上文所描述的存储系统可经配置以检查每一备份以避免将存储系统恢复到不合意的状态。考虑其中恶意软件感染存储系统的实例。在此实例中,存储系统可包含可扫描每一备份以识别在恶意软件感染存储系统之前捕获的备份及在恶意软件感染存储系统之后捕获的那些备份的软件资源314。在此实例中,存储系统可从不包含恶意软件的备份中恢复本身,或者至少不恢复含有恶意软件的备份部分。在此实例中,存储系统可包含可例如通过以下操作扫描每一备份以识别恶意软件(或病毒,或一些其它不合意软件)的存在的软件资源314:通过识别由存储系统服务并源自怀疑已递送恶意软件的网络子网的写入操作;通过识别由存储系统服务并源自怀疑已递送恶意软件的用户的写入操作;通过识别由存储系统服务的写入操作并根据恶意软件的指纹检查写入操作的内容,及以许多其它方式。
读者将进一步了解,备份(通常呈一或多个快照的形式)还可利用来执行存储系统的快速恢复。考虑其中存储系统感染了勒索软件而将用户锁定在存储系统之外的实例。在此实例中,存储系统内的软件资源314可经配置以检测勒索软件的存在并且可进一步经配置以使用保留的备份将存储系统恢复到勒索软件感染存储系统的时间点之前的时间点。在此实例中,勒索软件的存在可通过使用系统所利用的软件工具、通过使用插入到存储系统中的密钥(例如,USB驱动器)或以相似的方式来明确检测。同样地,勒索软件的存在可响应于系统活动满足预定指纹(例如,在预定时间段内未发生读取或向系统的写入)来推断。
读者将了解,上文所描述的各种组件可分组到一或多个优化的计算封装中作为融合基础设施。此类融合基础设施可包含计算机、存储装置及网络资源池,其可由多个应用共享并使用策略驱动的过程以集合方式进行管理。此类融合基础设施可通过融合基础设施参考架构、通过独立器具、通过软件驱动的超融合方法(例如,超融合基础设施)或以其它方式来实施。
读者将了解,上文所描述的存储系统可用于支持各种类型的软件应用。举例来说,存储系统306可通过为以下应用提供存储资源而用于支持此类应用:人工智能(‘AI’)应用、数据库应用、DevOps项目、电子设计自动化工具、事件驱动的软件应用、高性能计算应用、仿真应用、高速数据捕获及分析应用、机器学习应用、媒体制作应用、媒体服务应用、图片归档及通信系统(‘PACS’)应用、软件开发应用、虚拟现实应用、增强现实应用及许多其它类型的应用。
上文所描述的存储系统可操作以支持各种各样的应用。鉴于存储系统包含计算资源、存储资源及各种各样的其它资源的事实,存储系统可非常适于支持资源密集型应用,例如,AI应用。AI应用可部署在多种领域,包含:制造及相关领域的预测性维护、例如患者数据及风险分析等医疗保健应用、零售及营销部署(例如,搜索广告、社交媒体广告)、供应链解决方案、例如业务分析及报告工具等金融科技解决方案、操作部署,例如实时分析工具、应用性能管理工具、IT基础设施管理工具,及许多其它领域。
此类AI应用可使得装置能够感知其环境并采取最大化其在某个目标上的成功机会的行动。此类AI应用的实例可包含IBM Watson、Microsoft Oxford、Google DeepMind、Baidu Minwa,及其它。上文所描述的存储系统还可非常适于支持其它类型的资源密集型应用,例如机器学习应用。机器学习应用可执行各种类型的数据分析以使分析模型构建自动化。使用从数据中迭代学习的算法,机器学习应用可使计算机无需明确编程即可学习。机器学习的一个特定领域被称为强化学习,其涉及在特定情况下采取适合行动来最大化奖励。可采用强化学习来找到特定软件应用或机器在特定情况下应采取的最佳可能行为或路径。强化学习不同于机器学习的其它领域(例如,监督式学习、无监督式学习),因为不需要为强化学习呈现正确的输入/输出对,且不需要明确校正次优行动。
除了已经描述的资源之外,上文所描述的存储系统还可包含图形处理单元(‘GPU’),有时被称为视觉处理单元(‘VPU’)。此类GPU可体现为专门的电子电路,其快速操纵及更改存储器以加速在旨在输出到显示装置的帧缓冲器中的图像的创建。此类GPU可包含在作为上文所描述的存储系统的部分的计算装置中的任一者中,包含作为存储系统的许多可个别扩缩的组件中的一者,其中此存储系统的可个别扩缩的组件的其它实例可包含存储组件、存储器组件、计算组件(例如CPU、FPGA、ASIC)、网络组件、软件组件及其它组件。除GPU外,上文所描述的存储系统还可包含供在神经网络处理的各个方面中使用的神经网络处理器(‘NNP’)。此类NNP可用于代替(或补充)GPU,并且还可独立扩缩。
如上文所描述,本文中所描述的存储系统可经配置以支持人工智能应用、机器学习应用、大数据分析应用,及许多其它类型的应用。这些种类的应用的迅速成长受三种技术驱动:深度学习(DL)、GPU处理器及大数据。深度学习是利用受人脑激励的大规模并行神经网络的计算模型。深度学习模型不是专家手工制作软件,而是通过从大量实例中学习来撰写其自身的软件。此类GPU可能包含数千个核心,所述核心非常适于运行宽松地代表人脑的并行性质的算法。
深度神经网络的进步(包含多层神经网络的发展)已经点燃了数据科学家利用人工智能(AI)挖掘其数据的算法及工具的新一波浪潮。通过改进的算法、更大的数据集及各种框架(包含用于跨越一系列任务的机器学习的开源软件库),数据科学家正在应对新的用例,例如自动驾驶交通工具、自然语言处理及理解、计算机视觉、机器推理、强大的AI,及许多其它用例。此类技术的应用可能包含:机器及交通工具对象检测、识别及避让;视觉识别、分类及加标签;算法金融交易策略绩效管理;同时定位及映射;高价值机械的预测性维护;预防网络安全威胁,专业知识自动化;图像辨识及分类;问题解答;机器人技术;文本分析(提取、分类)以及文本产生及翻译;及许多其它应用。AI技术的应用已经在各种各样的产品中实现,例如,Amazon Echo的语音辨识技术允许用户与其机器交谈,Google TranslateTM允许基于机器的语言翻译,Spotify的Discover Weekly基于用户的使用情况及流量分析提供关于用户可能喜欢的新歌曲及艺术家的推荐,Quill的文本产生产品采用结构化数据并将其转化为叙事故事,聊天机器人以对话格式提供实时的、上下文特定的问题答案,及许多其它产品。
数据是现代AI及深度学习算法的核心。在可开始训练之前,必须解决的一个问题围绕收集对训练准确的AI模型至关重要的标记数据。可能需要全尺度AI部署以连续收集、清理、变换、标记及存储大量数据。添加额外的高质量数据点会直接转化为更准确的模型及更好的见解。数据样本可能会经历一系列处理步骤,包含但不限于:1)将来自外部源的数据引入到训练系统中并以原始形式存储数据,2)以便于训练的格式对数据进行清理及变换,包含将数据样本链接到适当的标记,3)探索参数及模型,使用较小的数据集快速测试,并迭代以收敛到最有希望的模型以推送到生产群集中,4)执行训练阶段以选择包含新样本及旧样本两者的随机批次的输入数据,并将那些数据馈入生产GPU服务器进行计算以更新模型参数,以及5)评估,包含使用训练中未使用的数据的保留部分,以评估保留数据的模型准确性。此生命周期可适用于任何类型的并行机器学习,而不仅仅是神经网络或深度学习。举例来说,标准机器学习框架可依赖于CPU而不是GPU,但数据引入及训练工作流程可能是相同的。读者将了解,单个共享存储数据枢纽在整个生命周期中创建协调点,而在引入、预处理及训练阶段之间不需要额外的数据副本。引入的数据很少仅用于一个目的,且共享存储可赋予训练多个不同的模型或将传统分析应用于数据的灵活性。
读者将了解,AI数据流水线中的每一阶段可对数据枢纽(例如,存储系统或存储系统集合)有不同的要求。横向扩展存储系统必须为各种各类的存取类型及型式(从小型、元数据密集型到大型文件,从随机到顺序存取型式,及从低并发到高并发)提供不妥协的性能。上文所描述的存储系统可充当理想的AI数据枢纽,因为所述系统可服务于非结构化工作负载。在第一阶段,理想情况下,数据被引入并存储到后续阶段将使用的同一数据枢纽上,以避免过多的数据复制。接下来的两个步骤可在可选地包含GPU的标准计算服务器上完成,且然后在第四个也是最后一个阶段,完整的训练生产作业在强大的GPU加速服务器上运行。通常,实验流水线旁边存在生产流水线,其对相同数据集操作。此外,GPU加速服务器可独立用于不同的模型,或可联合起来对一个更大的模型进行训练,甚至横跨多个系统进行分布式训练。如果共享存储层次较慢,那么每一阶段必须将数据复制到本地存储装置,而导致浪费将数据暂存到不同服务器上的时间。AI训练流水线的理想数据枢纽提供与在本地存储于服务器节点上的数据相似的性能,同时还具有使所有流水线阶段能够并发操作的简单性及性能。
为了使上文所描述的存储系统充当数据枢纽或充当AI部署的部分,在一些实施例中,所述存储系统可经配置以在包含于存储系统中的存储装置与用于AI或大数据分析流水线的一或多个GPU之间提供DMA。一或多个GPU可例如通过经由网状架构的NVMe(‘NVMe-oF’)耦合到存储系统,使得可绕过例如主机CPU等的瓶颈,并且存储系统(或其中所含的组件中的一者)可直接存取GPU存储器。在此实例中,存储系统可利用与GPU的API挂钩将数据直接传送到GPU。举例来说,GPU可体现为NvidiaTM GPU,且存储系统可支持使存储系统能够经由RDMA或相似机制将数据传送到GPU的GPUDirect存储(‘GDS’)软件或具有相似的专有软件。读者将了解,在其中存储系统体现为下文所描述的基于云的存储系统的实施例中,还可配置虚拟驱动器或此基于云的存储系统内的其它组件。
尽管前面的段落论述了深度学习应用,但读者将了解,本文中所描述的存储系统也可为分布式深度学习(‘DDL’)平台的一部分以支持DDL算法的执行。上文所描述的存储系统还可与其它技术配对,例如TensorFlow,其为开源软件库,用于跨越可用于例如神经网络等机器学习应用的一系列任务进行数据流编程,以促进此类机器学习模型的开发、应用等等。
上文所描述的存储系统还可用于神经形态计算环境中。神经形态计算呈模仿脑细胞的计算形式。为支持神经形态计算,经互连的“神经元”的架构用直接在神经元之间行进的低功率信号取代了传统的计算模型,以实现更高效的计算。神经形态计算可利用含有用以模仿神经系统中存在的神经生物学架构的电子模拟电路的超大规模集成(VLSI)系统,以及模拟、数字、混合模式模拟/数字VLSI,及实施用于感知、马达控制或多感官集成的神经系统模型的软件系统。
读者将了解,上文所描述的存储系统可经配置以支持区块链(在其它类型的数据当中)的存储或使用。除了支持区块链技术的存储及使用之外,上文所描述的存储系统还可支持衍生项目的存储及使用,例如作为IBMTM Hyperledger项目的部分的开源区块链及相关工具、其中允许特定数目的可信方存取区块链的权限式区块链、使开发人员能够构建其自身的分布式分类账项目的区块链产品,及其它。可利用本文中所描述的区块链及存储系统来支持数据的链上存储以及数据的链外存储。
数据的链外存储可以多种方式实施,并且可在数据本身未存储在区块链内时发生。举例来说,在一个实施例中,可利用哈希函数并且可将数据本身馈入到哈希函数中以产生哈希值。在此实例中,大型数据片段而不是数据本身的哈希可嵌入事务内。读者将了解,在其它实施例中,可使用区块链的替代方案来促进信息的分散存储。举例来说,可使用的区块链的一种替代方案是区块纺(blockweave)。虽然常规区块链每事务进行存储以实现验证,但区块纺准许安全分散而不使用整个链,借此实现数据的低成本链上存储。此类区块纺可利用基于访问证明(PoA)及工作量证明(PoW)的共识机制。
上文所描述的存储系统可单独地或与其它计算装置组合地用于支持存储器内计算应用。存储器内计算涉及将信息存储于跨越计算机群集分布的RAM中。读者将了解,上文所描述的存储系统(尤其是可配置有可定制量的处理资源、存储资源及存储器资源的那些系统(例如,其中叶片含有可配置量的每一类型的资源的那些系统))可以使得提供可支持存储器内计算的基础设施的方式配置。同样地,上文所描述的存储系统可包含组件部分(例如,NVDIMM、提供持续性的快速随机存取存储器的3D交叉点存储装置),所述组件部分实际上可提供与依赖跨越专用服务器分布的RAM的存储器内计算环境相比改进的存储器内计算环境。
在一些实施例中,上文所描述的存储系统可经配置以作为包含到所有存储媒体(例如,RAM、快闪存储装置、3D交叉点存储装置)的通用接口的混合存储器内计算环境操作。在此类实施例中,用户可能不知晓其数据存储在何处的细节,但其仍然可使用相同的完整、统一的API来对数据进行寻址。在此类实施例中,存储系统可(在后台)将数据移动到可用的最快层,包含端视数据的各种特性或端视一些其它启发法智能地放置数据。在此实例中,存储系统甚至可利用现有产品(例如Apache Ignite及GridGain)来使数据在各个存储层之间移动,或者存储系统可利用定制软件来使数据在各个存储层之间移动。本文中所描述的存储系统可实施各种优化以提高存储器内计算的性能,例如使计算尽可能接近数据发生。
读者将进一步了解,在一些实施例中,上文所描述的存储系统可与其它资源配对以支持上文所描述的应用。举例来说,一个基础设施可包含呈服务器及工作站形式的主要计算,其专门使用图形处理单元上的通用计算(‘GPGPU’)来加速深度学习应用,所述应用互连到计算引擎中以训练深度神经网络的参数。每一系统可具有以太网外部连接、无线带宽外部连接、某一其它形式的外部连接或其某一组合。在此实例中,GPU可经分组用于单个大型训练或独立用于训练多个模型。基础设施还可包含用以提供例如横向扩展的全快闪文件或对象存储的例如上文所描述的那些的存储系统,通过所述存储系统可经由例如NFS、S3等等高性能协议存取数据。基础设施还可包含例如经由MLAG端口通道中的端口连接到存储及计算以实现冗余的冗余架顶式以太网交换器。基础设施还可包含用于数据引入、预处理及模型调试的可选地具有GPU的呈白盒服务器的形式的额外计算。读者将了解,额外基础设施也是可能的。
读者将了解,上文所描述的存储系统单独地或与其它计算机械协调地可经配置以支持其它AI相关工具。举例来说,存储系统可利用使其更容易地传送以不同AI框架撰写的模型的例如ONXX或其它开放式神经网络交换格式等工具。同样地,存储系统可经配置以支持允许开发人员制作原型、构建及训练深度学习模型的例如亚马逊的Gluon等工具。事实上,上文所描述的存储系统可为包含集成的数据科学、数据工程及应用构建服务的例如IBMTM数据私有云等更大平台的部分。
读者将进一步了解,上文所描述的存储系统还可部署为边缘解决方案。此边缘解决方案可用于通过在接近数据源的网络边缘处执行数据处理来优化云计算系统。边缘计算可将应用、数据及计算能力(即,服务)从集中点推向网络的逻辑极端。通过使用例如上文所描述的存储系统等的边缘解决方案,可使用由此类存储系统提供的计算资源来执行计算任务,可使用存储系统的存储资源来存储数据,并且可通过使用存储系统的各种资源(包含网络资源)访问基于云的服务。通过基于边缘解决方案执行计算任务、基于边缘解决方案存储数据以及大体上利用边缘解决方案,可避免消耗昂贵的基于云的资源,且事实上,相对于对基于云的资源的较严重的依赖,可体验到性能改进。
虽然许多任务可能受益于边缘解决方案的利用,但一些特定用途可能尤其适于部署在此环境中。举例来说,例如无人机、自动驾驶汽车、机器人及其它等装置可能需要极快的处理速度,事实上速度如此之快,以至于将数据发送到云环境并返回接收数据处理支持可能太慢了。作为额外实例,例如连接的摄像机等一些IoT装置可能非常不适于利用基于云的资源,因为其发送数据到云可能只是因为涉及的纯数据量而不切实际(不仅从隐私角度、安全角度或财务角度)。因此,真正涉及数据处理、存储或通信的许多任务可能更适于包含边缘解决方案(例如上文所描述的存储系统)的平台。
上文所描述的存储系统可单独或与其它计算资源组合地充当组合计算资源、存储资源、网络资源、云技术及网络虚拟化技术等等的网络边缘平台。作为网络的部分,边缘可能具有与从客户终端及回程聚合设施到存在点(PoP)及区域数据中心等其它网络设施相似的特性。读者将了解,例如虚拟网络功能(VNF)及其它等网络工作负载将驻存在网络边缘平台上。具有容器及虚拟机的组合的能力的网络边缘平台可依赖于不再与数据处理资源在地理上位于同一位置的控制器及调度器。作为微服务,所述功能可分成控制平面、用户及数据平面,或甚至状态机,从而允许应用独立的优化及扩缩技术。此类用户及数据平面可通过增加加速器来实现,两者均驻存在服务器平台(例如FPGA及智能NIC中),且可通过具有SDN能力的商用硅及可编程ASIC来实现。
上文所描述的存储系统还可经优化以供在大数据分析中使用。大数据分析通常可描述为检查大量且不同的数据集以发现隐藏型式、未知相关性、市场趋势、客户偏好及其它有用信息的过程,所述信息可帮助组织做出更明智的业务决策。作为所述过程的部分,半结构化及非结构化数据(例如因特网点击流数据、网络服务器日志、社交媒体内容、来自客户电子邮件及调查响应的文本、移动电话通话详细记录、IoT传感器数据,及其它数据)可转换为结构化形式。
上文所描述的存储系统还可支持(包含作为系统接口实施)响应于人类语音而执行任务的应用。举例来说,存储系统可支持执行智能个人助理应用,例如亚马逊的Alexa、Apple Siri、Google Voice、Samsung Bixby、Microsoft Cortana,及其它。虽然上一句中描述的实例利用话音作为输入,但上文所描述的存储系统还可支持聊天机器人(chatbot)、谈话机器人、聊天机器人(chatterbot)或人工对话实体或经配置以经由听觉或文本方法进行对话的其它应用。同样地,存储系统实际上可执行此类应用,以使例如系统管理员等用户能够经由语音与存储系统进行交互。尽管在根据本公开的实施例中,此类应用可用作各种系统管理操作的接口,但此类应用通常能够进行话音交互、音乐播放、制作待办事项列表、设定闹钟、流播播客、播放有声读物以及提供天气、交通及其它实时信息(例如新闻)。
上文所描述的存储系统还可实施AI平台,以实现自动驾驶存储的愿景。此类AI平台可经配置以通过收集及分析大量存储系统遥测数据点来提供全局预测智能,从而实现轻松的管理、分析及支持。事实上,此类存储系统可能能够预测容量及性能两者,以及产生有关工作负载部署、交互及优化的智能建议。此类AI平台可经配置以根据问题指纹库扫描所有传入的存储系统遥测数据,以在事故影响客户环境之前实时预测及解决事故,并捕获用于预报性能负载的与性能相关的数百个变量。
上文所描述的存储系统可支持人工智能应用、机器学习应用、数据分析应用、数据转换及可共同形成AI阶梯的其它任务的串行化或同时执行。此类AI阶梯可通过组合此类元素有效地形成,以形成完整的数据科学流水线,其中AI阶梯的元素之间存在依赖关系。举例来说,AI可需要进行某种形式的机器学习,机器学习可需要进行某种形式的分析,分析可需要进行某种形式的数据及信息架构,等等。因此,每一元素可看作是AI阶梯中的一梯级,其可共同形成完整且复杂的AI解决方案。
上文所描述的存储系统还可单独或与其它计算环境组合地用于提供AI无处不在的体验,其中AI渗透到商业及生活的宽广且广泛的各方面。举例来说,AI可在以下方面起重要作用:提供深度学习解决方案、深度强化学习解决方案、通用人工智能解决方案、自动驾驶交通工具、认知计算解决方案、商用UAV或无人机、对话用户界面、企业分类法、本体管理解决方案、机器学习解决方案、智能微尘、智能机器人、智能工作场所,及许多其它方面。
上文所描述的存储系统还可单独或与其它计算环境组合地用于提供范围广泛的透明沉浸式体验(包含使用例如人、地点、过程、系统等等各种“事物”的数字孪生的那些体验),技术可在其中引入人、企业及事物之间的透明度。此类透明沉浸式体验可作为增强现实技术、连接家庭、虚拟现实技术、脑机接口、人体增强技术、纳米管电子装置、体积显示器、4D打印技术或其它技术提供。
上文所描述的存储系统还可单独或与其它计算环境组合地用于支持各种各样的数字平台。举例来说,此类数字平台可包含,5G无线系统及平台、数字孪生平台、边缘计算平台、IoT平台、量子计算平台、无服务器PaaS、软件定义安全、神经形态计算平台等等。
上文所描述的存储系统还可为多云环境的部分,其中多个云计算及存储服务被部署在单个异构架构中。为了促进此多云环境的操作,可部署DevOps工具以实现跨越云的编排。同样地,可部署连续开发及连续集成工具来将围绕连续集成及交付、新特征推出及预配云工作负载的过程标准化。通过将这些过程标准化,可实施使得能够针对每一工作负载利用最佳提供者的多云策略。
上文所描述的存储系统可用作平台的部分,以使得能够使用加密锚,加密锚可用于对产品的来源及内容进行身份验证,以确保其与关联于产品的区块链记录相匹配。相似地,作为保护存储于存储系统上的数据的一套工具的部分,上文所描述的存储系统可实施各种加密技术及方案,包含格密码术。格密码术可涉及在构造本身或在安全证明中涉及格的密码原语的构造。与容易受到量子计算机攻击的例如RSA、Diffie-Hellman或椭圆曲线密码系统等公钥方案不同,一些基于格的构造似乎可抵抗经典计算机及量子计算机两者的攻击。
量子计算机是执行量子计算的装置。量子计算使用例如叠加及纠缠等量子力学现象进行计算。量子计算机不同于基于晶体管的传统计算机,因为此类传统计算机需要将数据编码成二进制数字(位),所述二进制数字(位)中的每一者始终处于两个确定状态(0或1)中之一者。与传统计算机相比,量子计算机使用量子位,其可处于状态的叠加。量子计算机维持量子位序列,其中单个量子位可表示1、0或那两个量子位状态的任何量子叠加。一对量子位可处于4个状态的任何量子叠加,且三个量子位可处于8个状态的任何叠加。具有n个量子位的量子计算机通常可同时处于最多2^n个不同状态的任意叠加,而传统计算机可在任一时间只能处于这些状态中的一种。量子图灵机是此计算机的理论模型。
上文所描述的存储系统还可与FPGA加速服务器配对,作为更大的AI或ML基础设施的部分。此类FPGA加速服务器可驻存于上文所描述的存储系统附近(例如,在同一数据中心中),或者甚至并入到包含一或多个存储系统、一或多个FPGA加速服务器、支持一或多个存储系统与一或多个FPGA加速服务器之间的通信的网络基础设施以及其它硬件及软件组件的器具中。或者,FPGA加速服务器可驻存于云计算环境内,所述云计算环境可用于执行AI及ML作业的计算相关任务。上文所描述的实施例中的任一者可共同用于充当基于FPGA的AI或ML平台。读者将了解,在基于FPGA的AI或ML平台的一些实施例中,FPGA加速服务器内所含的FPGA可针对不同类型的ML模型(例如,LSTM、CNN、GRU)进行重新配置。重新配置FPGA加速服务器内所含的FPGA的能力可使得能够基于所使用的最优数值精度及存储器模型来加速ML或AI应用。读者将了解,通过将FPGA加速服务器的集合视为FPGA池,数据中心中的任何CPU可将FPGA池用作共享硬件微服务,而不是将服务器限制于插塞到其中的专用加速器。
上文所描述的FPGA加速服务器及GPU加速服务器可实施计算模型,其中机器学习模型及参数被固定到高带宽芯片上存储器中(其中大量数据流经所述高带宽芯片上存储器),而不是像更传统的计算模型中那样将少量数据保持于CPU中并在其上运行长指令流。对于此计算模型,FPGA甚至可能比GPU更高效,因为FPGA可仅使用运行此种计算模型所需的指令进行编程。
上文所描述的存储系统可经配置以例如通过使用例如BeeGFS等的并行文件系统提供并行存储。此类并行文件系统可包含分布式元数据架构。举例来说,并行文件系统可包含元数据分布所跨越的多个元数据服务器,以及包含用于客户端及存储服务器的服务的组件。
上文所描述的系统可支持各种各样的软件应用的执行。此类软件应用可以多种方式部署,包含基于容器的部署模型。可使用多种工具来管理容器化应用。举例来说,可使用Docker Swarm、Kubernetes及其它来管理容器化应用。容器化应用可用于促进软件应用的无服务器、云原生计算部署及管理模型。为了支持软件应用的无服务器、云原生计算部署及管理模型,容器可用作事件处置机制(例如AWS Lambdas)的部分,使得各种事件会导致容器化应用启动以作为事件处置程序操作。
上文所描述的系统可以多种方式部署,包含以支持第5代(‘5G’)网络的方式部署。5G网络可支持比前几代移动通信网络基本上更快的数据通信,且因此可能导致数据及计算资源的解裂,因为现代海量数据中心可能变得较不突出,并可能被例如接近移动网络塔的更本地的微型数据中心取代。上文所描述的系统可包含在此类本地微型数据中心中,并且可为多接入边缘计算(‘MEC’)系统的部分或与之配对。此类MEC系统可使蜂窝式网络的边缘处具有云计算能力及IT服务环境。通过在更接近蜂窝式客户之处运行应用及执行相关处理任务,可减少网络拥塞并且可更好地执行应用。
上文所描述的存储系统还可经配置以实施NVMe分区式命名空间。通过使用NVMe分区式命名空间,命名空间的逻辑地址空间被划分成若干区。每一区提供必须按顺序写入并在重写之前显式复位的逻辑块地址范围,借此使得能够创建公开装置的自然边界的命名空间,并将内部映射表的管理卸载到主机。为了实施NVMe分区式命名空间(‘ZNS’),可利用使用区来公开命名空间逻辑地址空间的ZNS SSD或一些其它形式的分区式块装置。通过将区与装置的内部物理性质对齐,可消除数据放置方面的一些低效问题。在此类实施例中,每一区可被映射到例如单独的应用,使得可在每区或每应用的基础上而不是跨越整个装置来执行例如损耗均衡及垃圾收集等的功能。为了支持ZNS,本文中所描述的存储控制器可经配置以通过使用例如LinuxTM内核分区式块装置接口或其它工具与分区式块装置交互。
上文所描述的存储系统还可经配置以例如通过使用叠瓦式磁性记录(SMR)存储装置以其它方式实施分区式存储。在其中使用分区式存储的实例中,可部署装置管理的实施例,其中存储装置通过在固件中管理所述装置管理的实施例来隐藏此复杂性,从而呈现与任何其它存储装置相似的接口。或者,可经由主机管理的实施例来实施分区式存储,所述实施例取决于操作系统知晓如何处置驱动器,并且仅顺序地向驱动器的某些区域写入。分区式存储可相似地使用主机感知实施例来实施,其中部署了驱动器管理实施方案及主机管理实施方案的组合。
为了进一步解释,图3D图解说明可具体经配置以执行本文中所描述的过程中的一或多者的示范性计算装置350。如图3D中所展示,计算装置350可包含经由通信基础设施360彼此通信地连接的通信接口352、处理器354、存储装置356,及输入/输出(“I/O”)模块358。虽然图3D中展示示范性计算装置350,但图3D中所图解说明的组件不打算为限制性的。在其它实施例中可使用额外或替代组件。现在将以额外细节描述图3D中所展示的计算装置350的组件。
通信接口352可经配置以与一或多个计算装置通信。通信接口352的实例包含但不限于有线网络接口(例如网络接口卡)、无线网络接口(例如无线网络接口卡)、调制解调器、音频/视频连接,及任何其它适合接口。
处理器354通常表示能够处理数据及/或解译、执行及/或引导本文中所描述的指令、过程及/或操作中的一或多者的执行的任何类型或形式的处理单元。处理器354可通过执行存储于存储装置356中的计算机可执行指令362(例如,应用、软件、代码及/或其它可执行数据实例)而执行操作。
存储装置356可包含一或多个数据存储媒体、装置或配置,且可采用任何类型、形式及组合的数据存储媒体及/或装置。举例来说,存储装置356可包含但不限于本文中所描述的非易失性媒体及/或易失性媒体的任何组合。包含本文中所描述的数据的电子数据可暂时及/或永久地存储于存储装置356中。举例来说,表示经配置以引导处理器354执行本文中所描述的操作中的任一者的计算机可执行指令362的数据可存储于存储装置356内。在一些实例中,数据可布置于驻存在存储装置356内的一或多个数据库中。
I/O模块358可包含经配置以接收用户输入且提供用户输出的一或多个I/O模块。I/O模块358可包含支持输入及输出能力的任何硬件、固件、软件或其组合。举例来说,I/O模块358可包含用于捕获用户输入的硬件及/或软件,包含但不限于键盘或小键盘、触摸屏组件(例如,触摸屏显示器)、接收器(例如,RF或红外接收器)、运动传感器,及/或一或多个输入按钮。
I/O模块358可包含用于将输出呈现给用户的一或多个装置,包含但不限于图形引擎、显示器(例如,显示屏)、一或多个输出驱动器(例如,显示驱动器)、一或多个音频扬声器,及一或多个音频驱动器。在某些实施例中,I/O模块358经配置以提供图形数据到显示器以供呈现给用户。图形数据可表示一或多个图形用户界面及/或可充当特定实施方案的任何其它图形内容。在一些实例中,本文中所描述的系统、计算装置及/或其它组件中的任一者可由计算装置350实施。
上文所描述的存储系统可单独或组合地经配置以充当连续数据保护存储器件。连续数据保护存储器件是存储系统的特征,其以如下方式记录对数据集的更新,即可以低时间粒度(通常大约几秒,甚至更短)存取数据集先前内容的一致图像,并向后延长一段合理的时间(通常是数小时或数天)。这些允许存取数据集的最近的一致时间点,且还允许存取数据集的可能刚刚发生在某一事件之前的时间点,所述事件例如导致数据集的部分损坏或以其它方式丢失,同时保留接近所述事件之前的最大更新数目。在概念上,其如同非常频繁地拍摄并保存很长时间段的数据集快照序列,尽管连续数据保护存储器件的实施方式通常与快照截然不同。实施数据连续数据保护存储器件的存储系统可进一步提供存取这些时间点、存取这些时间点中的一或多者作为快照或克隆副本或者将数据集回复到那些所记录时间点中的一者的手段。
随着时间的推移,为了减少开销,连续数据保护存储器件中保持的一些时间点可与其它附近的时间点合并,基本上从存储器件中删除这些时间点中的一些。这可减少存储更新所需的容量。也可将有限数目的这些时间点转换为持续时间更长的快照。举例来说,此存储器件可能会保持从现在开始回溯几个小时的时间点的低粒度的序列,其中合并或删除一些时间点以减少多达额外一天的开销。追溯到更久远的过去,这些时间点中的一些可每隔几个小时转换为表示一致时间点图像的快照。
图4图解说明本公开的实施例中的适合于具有存储式存储器404的各种存储系统的利用数据压缩414执行垃圾收集的垃圾收集模块402。可包含存储系统的一或多个处理器的处理装置406执行各种过程且为垃圾收集模块402或与所述垃圾收集模块合作地执行各种行动,在各种实施例中,所述垃圾收集模块可以软件、固件、硬件或其组合实施。存储式存储器404具有已被写入且可用于垃圾收集以便存储系统回收物理存储式存储器的各种数据分段426。由垃圾收集模块402执行的垃圾收集过程找到具有内容相似度的数据分段426,且将具有内容相似度的那些数据分段426的实时数据422压缩在一起。经压缩实时数据422然后被写入到存储式存储器404中,此后垃圾收集模块402可激活擦除420过程且回收擦除块,已通过垃圾收集过程使那些擦除块的实时数据422重新定位。
为了识别具有内容相似度的数据分段426以供共同进行垃圾收集及数据压缩,分段选择器408与哈希函数410合作且向数据压缩模块414告知所选择数据分段426。垃圾收集模块402计算所选择数据分段426的部分的哈希,从而形成哈希集412,例如,每数据分段的一个哈希或哈希值集(哈希函数的实例运算参见图7)。在一个实施例中,哈希集412被存储,然后由分段选择器408存取以进行分段选择。在另一实施例中,在按需基础上即时(实时)对哈希集412进行计算以用于分段选择器408。在被告知由分段选择器408所选择的具有内容相似度的两个或更多个数据分段426的情况下,数据压缩模块414执行从存储式存储器404读取416所选择数据分段426的实时数据422。数据压缩模块414将那些所选择数据分段的实时数据422压缩在一起,且执行将所得经压缩数据424写入418到存储式存储器404中。
图5图解说明各种实施例中的一种类型的相似度度量510,即杰卡德距离512,其被应用于存储系统中的数据分段以供选择数据分段来压缩在一起以实现存储效率。应了解,杰卡德距离512计量样本集之间的相似度,且与集合的交集(与集合的并集相比)相关。杰卡德指数(也称为交并比及杰卡德相似度系数)定义为集合的交集的大小除以并集的大小。杰卡德距离512测量集合之间的非相似度,是杰卡德指数的补集,且可通过1减去杰卡德相似度系数而获得。在图5中所描绘的实例中,杰卡德距离512应用于分段X的数据502与分段Y的数据504的交集506(阴影),其是与分段X的数据502与分段Y的数据504的并集508(阴影)相比来说。交集506中的量越多暗示两个分段的相似度越大,交集506中的量越少暗示两个分段的相似度越小。
尽管可设想地,存储系统可直接将两个分段的数据进行比较,但应了解,此将是计算上昂贵的。为了计算效率起见,存储系统的实际实施例在应用相似度度量510(例如杰卡德距离512)时将两个或更多个分段的数据部分的哈希值的确定性子集进行比较。应了解,还可设想除杰卡德距离外的其它相似度度量用于进一步实施例,以与本文中的教示一致。
图6图解说明根据一些实施例的用于图4中的垃圾收集模块402的分段选择器408的实施例。分段选择器408使用分段选择器408内部的组件及来自分段选择器408外部的信息执行分段选择过程602(参见虚线框),以识别及选择具有充分内容相似度以供共同进行高效数据压缩的数据分段。数据分段610的哈希值606输入到子集选择器614,所述子集选择器选择每一数据分段610的哈希值606的子集。应了解,此是确定性选择,使得在将存在于两个分段中的数据部分进行匹配时,来自一个分段的哈希值(参见图7)的所得子集与另一分段的哈希值的所得子集中的一些或许多哈希值具有相对高的匹配可能性或概率。
继续图6,比较模块616将来自子集选择器614的两个或更多个数据分段的哈希值的子集进行比较,且触发或告知选择器618比较是否展示满足相似度阈值608的匹配的哈希值,即,是否指示跨越两个或更多个数据分段的哈希值的充分相似度或共同性。选择器618还可在选择两个或更多个数据分段进行组合数据压缩时计及数据分段610的特性612。以此方式,分段选择器408及更具体来说分段选择过程602执行数据分段内容相似度确定604。对组合分段以进行数据压缩的指示(例如分段ID或其它数据指针)一直传达到数据压缩414(参见图4及8)。
图7图解说明作为图4的垃圾收集模块402的实施例中的适合机制的对哈希值606的滑动窗口哈希函数702及确定性选择704。哈希函数702对特定量的数据(称为哈希函数的长度,例如数据分段426中的数据的一定数目的字节)进行运算,以产生哈希值606。哈希函数702作为滑动窗口以离散偏移708对数据分段426进行运算,以产生跨越数据分段426的哈希值606。在哈希函数702的整个滑动窗口运算中,偏移708可小于哈希函数本身的长度。滑动窗口哈希函数702尤其非常适于两个或更多个数据分段426中可具有重复数据、重复型式或相似数据的非对齐数据,所述数据未必在数据分段426中与零或其它规定偏移对齐。滑动窗口哈希函数702可产生在一些实施例中利用固定偏移或固定窗口哈希函数可能遗漏的匹配的哈希值。滑动窗口哈希函数702可产生相对大量的哈希值606,例如,与哈希函数702利用来运算的偏移708的数目一样多。保持将来自一个数据分段426的内容与另一数据分段进行比较的能力的用于缩减哈希值606的数目的一些机制是合意的。
继续图7,在一些实施例中采用确定性选择704哈希值606以形成哈希值子集706来减少哈希值的数目。在一些实施例中,确定性选择704可仅保存数值最低的哈希值606直到规定计数,或仅保存数值最高的哈希值606直到规定计数。举例来说,如果计数是k,那么此分别称为k最小哈希或k最大哈希。在一些实施例中,用于确定性选择哈希值的实施例可采用用于对数据分段的数据部分取样的伪随机函数。可设想其它类型的确定性选择用于各种实施例。
图8图解说明图4的垃圾收集模块402的实施例中的适合的数据压缩模块804以及变化形式的实施例。数据802的部分被馈入数据压缩模块804中。在各种实施例中,数据802的这些部分来自已识别为具有内容相似度以供高效压缩在一起的数据分段426。在各种实施例中,数据压缩模块804具有用以辨识相同数据806、辨识相似数据808或两者的组合的过程或电路系统。辨识为相似但不相同的数据可通过行动压缩以记录差异810。在一些实施例中,可通过针对各种量的数据将数据的一部分识别为参考数据且仅存储参考数据(其本身可被压缩或不压缩)及参考数据与另一数据部分之间的差异而记录差异。压缩引擎812压缩辨识为相同的数据及/或辨识为相似的数据,且输出经压缩数据424。在本文中所描述的适用实施例中,被压缩在一起的数据802的部分来自已识别为具有内容相似度的两个或更多个数据分段,从而实现高效数据压缩及数据存储效率。
图9陈述在存储系统的各种实施例中及由存储系统的各种实施例实践的利用数据压缩的垃圾收集方法900的流程图。更具体来说,所述方法可由存储系统中的处理装置(例如执行利用数据压缩的垃圾收集模块或与其合作的一或多个处理器)实践。
在行动902中,系统从数据分段获得哈希结果。数据分段存储于存储系统的存储式存储器中。举例来说,系统可使用如上文所描述的在数据分段中以偏移应用的滑动窗口哈希函数,且确定性地选择每一数据分段的哈希值的子集以供与其它数据分段的哈希值的子集进行比较。在行动904中,系统基于哈希结果确定数据分段的内容相似度。举例来说,系统可在将跨越数据分段的哈希结果进行比较时使用如上文所描述的相似度度量及相似度阈值,且可在两个或更多个数据分段具有满足相似度阈值的内容相似度时选择数据分段以供压缩在一起。
在行动906中,系统压缩具有满足相似度阈值的内容相似度的两个或更多个数据分段的实时数据。举例来说,系统可使用辨识数据的相同及/或相似部分的数据压缩来压缩实时数据,从而记录相似数据与参考数据的差异,如上文所描述。为了数据压缩及数据存储效率,具有内容相似度的此类数据分段被压缩在一起。
在图9的行动908中,系统将经压缩实时数据写入到存储式存储器中。作为垃圾收集的部分,行动908将实时数据重新定位,以准备通过擦除已通过上述行动排空实时数据的擦除块来回收存储式存储器的部分。在行动910中,系统擦除且回收存储式存储器的一部分或若干部分。通过执行方法900中的这些行动,存储系统进行垃圾收集、压缩数据、回收存储式存储器且具有高效数据压缩及数据存储,其代表与不执行此方法的其它存储系统相比实现技术改进。
尽管主要在存储系统的上下文中描述一些实施例,但所属领域中有技术的读者将认识到,本公开的实施例还可采取安置于计算机可读存储媒体上以供与任何适合处理系统一起使用的计算机程序产品的形式。此类计算机可读存储媒体可为用于机器可读信息的任何存储媒体,包含磁性媒体、光学媒体、固态媒体,或其它适合媒体。此类媒体的实例包含硬驱动器或软磁盘中的磁盘、用于光学驱动器的光盘、磁带,及所属领域的技术人员将想到的其它媒体。所属领域的技术人员将立即认识到,具有适合编程构件的任何计算机系统将能够执行体现于计算机程序产品中的本文中所描述的步骤。所属领域的技术人员还将认识到,尽管本说明书中所描述的实施例中的一些面向在计算机硬件上安装及执行的软件,但无论如何,实施为固件或硬件的替代实施例将完全在本公开的范围内。
在一些实例中,可根据本文中所描述的原理提供存储计算机可读指令的非暂时性计算机可读媒体。所述指令在由计算装置的处理器执行时可引导处理器及/或计算装置执行包含本文中所描述的操作中的一或多者的一或多个操作。此类指令可使用多种已知计算机可读媒体中的任一者来存储及/或传输。
本文中所提及的非暂时性计算机可读媒体可包含参与提供可由计算装置(例如,由计算装置的处理器)读取及/或执行的数据(例如,指令)的任何非暂时性存储媒体。举例来说,非暂时性计算机可读媒体可包含但不限于非易失性存储媒体及/或易失性存储媒体的任何组合。示范性非易失性存储媒体包含但不限于只读存储器、快闪存储器、固态驱动器、磁性存储装置(例如硬盘、软盘、磁带等)、铁电随机存取存储器(“RAM”),及光盘(例如,压缩光盘、数字视频光盘、蓝光光盘等。)。示范性易失性存储媒体包含但不限于RAM(例如,动态RAM)。
本公开的优点及特征可由以下陈述进一步描述:
1.一种存储系统,其包括:
存储式存储器;及
处理装置,其用以执行所述存储式存储器中的垃圾收集,包括:
获得对存储于所述存储式存储器中的多个数据分段中的每一者的数据的多个部分中的每一者进行哈希的哈希结果;
基于所述哈希结果确定所述多个数据分段的内容相似度;
对所述多个数据分段中具有满足相似度阈值的所述内容相似度的两个或更多个数据分段的实时数据执行数据压缩;及
将所述两个或更多个数据分段的所述经压缩实时数据写入到所述存储式存储器中。
2.根据陈述1所述的存储系统,其中所述确定所述多个数据分段的所述内容相似度包括基于所述哈希结果根据跨越所述多个数据分段应用的相似度度量确定所述数据分段的数据的所述部分的相似度。
3.根据陈述1所述的存储系统,其中所述确定所述多个数据分段的所述内容相似度包括基于所述哈希结果根据跨越所述多个数据分段应用的不相似度度量确定所述数据分段的数据的所述部分的不相似度。
4.根据陈述1所述的存储系统,其中所述确定所述多个数据分段的所述内容相似度包括基于所述哈希结果确定数据分段之间的杰卡德距离。
5.根据陈述1所述的存储系统,其中所述对所述多个数据分段中的所述两个或更多个数据分段的所述实时数据执行所述数据压缩包括执行辨识所述两个或更多个数据分段中的数据的相同部分的数据压缩。
6.根据陈述1所述的存储系统,其中所述对所述多个数据分段中的所述两个或更多个数据分段的所述实时数据执行所述数据压缩包括执行记录所述两个或更多个数据分段中的数据的相似但不相同部分当中的差异的数据压缩。
7.根据陈述1所述的存储系统,其中所述获得所述哈希结果包括:
使用滑动窗口哈希函数计算多个数据组块中的每一者的哈希;及
针对所述多个数据分段中的每一者,确定性地选择所述哈希的子集。
8.根据陈述1所述的存储系统,其中所述获得所述哈希结果包括:
确定所述多个数据分段中的每一者的哈希集;
针对所述多个数据分段中的每一者,存储所述哈希集与所述数据分段;及
为所述确定所述多个数据分段的所述内容相似度,针对所述多个数据分段中的每一者,存取所述所存储哈希集。
9.根据陈述1所述的存储系统,其中所述处理装置进一步用以基于年龄、脏百分比或其它数据特性选择所述存储式存储器中的其它数据分段以供进行所述垃圾收集。
10.一种存储系统中的数据压缩方法,其包括:
获得存储于所述存储系统的存储式存储器中的多个数据分段中的每一者的数据的多个部分中的每一者的哈希值;
基于所述哈希值确定跨越所述多个数据分段的内容相似度;
在所述存储式存储器中的垃圾收集期间对所述多个数据分段中的两个或更多个数据分段的实时数据执行数据压缩,所述两个或更多个数据分段具有满足相似度阈值的跨越所述两个或更多个数据分段的所述内容相似度;及
将所述两个或更多个数据分段的所述经压缩实时数据写入到所述存储式存储器中。
11.根据陈述10所述的方法,其中所述确定跨越所述多个数据分段的所述内容相似度包括基于所述哈希值确定所述多个数据分段中的两个或更多个数据分段之间的杰卡德距离。
12.根据陈述10所述的方法,其中所述对所述多个数据分段中的所述两个或更多个数据分段的所述实时数据执行所述数据压缩包括执行辨识并压缩所述两个或更多个数据分段中的数据的相似或相同部分的数据压缩。
13.根据陈述10所述的方法,其中所述获得所述哈希值包括:
使用滑动窗口哈希函数计算所述多个数据分段中的每一者的多个数据组块中的每一者的哈希;及
针对所述多个数据分段中的每一者,选择所述哈希的子集,包括最小值、最大值或其它确定性选择。
14.根据陈述10所述的方法,其中所述获得所述哈希值包括:
确定所述多个数据分段的哈希集;
存储所述哈希集与所述数据分段;及
为所述确定跨越所述多个数据分段的所述内容相似度,存取所述所存储哈希集。
15.根据陈述10所述的方法,其进一步包括基于所述存储式存储器中的其它数据分段的年龄、脏百分比或其它数据特性选择所述其它数据分段以供进行所述垃圾收集及所述数据压缩。
16.一种有形非暂时性计算机可读媒体,其上具有指令,所述指令在由处理装置执行时致使所述处理装置执行包括以下各项的方法:
获得对存储于存储式存储器中的多个数据分段中的每一者的数据的多个部分中的每一者进行哈希的哈希结果;
基于哈希结果确定所述多个数据分段的内容相似度;
在垃圾收集期间,对所述多个数据分段中具有满足相似度阈值的所述内容相似度的两个或更多个数据分段的实时数据执行数据压缩;及
将所述两个或更多个数据分段的所述经压缩实时数据写入到所述存储式存储器中。
17.根据陈述16所述的计算机可读媒体,其中所述确定所述多个数据分段的所述内容相似度包括基于所述哈希结果根据跨越所述多个数据分段应用的杰卡德距离或其它相似度或不相似度度量确定所述数据分段的数据的所述部分的相似度。
18.根据陈述16所述的计算机可读媒体,其中所述对所述多个数据分段中的所述两个或更多个数据分段的所述实时数据执行所述数据压缩包括执行压缩所述两个或更多个数据分段中的数据的相似或相同部分的数据压缩。
19.根据陈述16所述的计算机可读媒体,其中所述获得所述哈希结果包括:
使用滑动窗口哈希函数计算所述多个数据分段中的每一者的数据的所述多个部分中的每一者的哈希;及
针对所述多个数据分段中的每一者,选择所述哈希的确定性子集。
20.根据陈述16所述的计算机可读媒体,其中所述获得所述哈希结果包括:
确定所述多个数据分段中的每一者的哈希集;
针对所述多个数据分段中的每一者,存储所述哈希集与所述数据分段;及
为所述确定所述多个数据分段的所述内容相似度,存取所述所存储哈希集。
本文中可借助于图解说明规定功能的执行及其关系的方法步骤描述一或多个实施例。本文中为便于描述而任意界定这些功能构建块及方法步骤的界限及顺序。只要适当执行规定功能及关系,便可界定替代界限及顺序。任何此类替代界限或顺序因此在权利要求书的范围及精神内。此外,为便于描述而任意界定这些功能构建块的界限。只要适当执行特定重要功能,便可界定替代界限。相似地,本文中还可任意界定流程图块以图解说明特定重要功能性。
在使用的范围内,可能以其它方式界定流程图块界限及顺序且其仍执行特定重要功能性。功能构建块及流程图块及顺序两者的此类替代界定因此在权利要求书的范围及精神内。所属领域的技术人员还将认识到,功能构建块及其它说明性块、模块及其中的组件可按图解说明实施或由离散组件、专用集成电路、执行适当软件及诸如此类的处理器或其任何组合实施。
虽然本文中明确描述一或多个实施例的各种功能及特征的特定组合,这些特征及功能的其它组合同样是可能的。本公开不受本文中所公开的特定实例限制且明确并入有这些其它组合。

Claims (20)

1.一种存储系统,其包括:
存储式存储器;及
处理装置,其用以执行所述存储式存储器中的垃圾收集,包括:
从存储于所述存储式存储器中的多个数据分段获得哈希值;
基于哈希结果确定所述多个数据分段的内容相似度;
对所述多个数据分段中具有满足相似度阈值的所述内容相似度的两个或更多个数据分段的实时数据执行数据压缩;及
将所述两个或更多个数据分段的经压缩实时数据写入到所述存储式存储器中。
2.根据权利要求1所述的存储系统,其中所述确定所述多个数据分段的所述内容相似度包括基于所述哈希结果根据跨越所述多个数据分段应用的相似度度量确定所述数据分段的数据的部分的相似度。
3.根据权利要求1所述的存储系统,其中所述确定所述多个数据分段的所述内容相似度包括基于所述哈希结果根据跨越所述多个数据分段应用的不相似度度量确定所述数据分段的数据的部分的不相似度。
4.根据权利要求1所述的存储系统,其中所述确定所述多个数据分段的所述内容相似度包括基于所述哈希结果确定数据分段之间的杰卡德距离。
5.根据权利要求1所述的存储系统,其中所述对所述多个数据分段中的所述两个或更多个数据分段的所述实时数据执行所述数据压缩包括执行辨识所述两个或更多个数据分段中的数据的相同部分的数据压缩。
6.根据权利要求1所述的存储系统,其中所述对所述多个数据分段中的所述两个或更多个数据分段的所述实时数据执行所述数据压缩包括执行记录所述两个或更多个数据分段中的数据的相似部分当中的差异的数据压缩。
7.根据权利要求1所述的存储系统,其中所述获得所述哈希值包括:
使用滑动窗口哈希函数计算多个数据组块中的每一者的哈希,且针对所述多个数据分段中的每一者,确定性地选择所述哈希的子集。
8.根据权利要求1所述的存储系统,其中所述获得所述哈希值包括:
针对所述多个数据分段中的每一者,存储所述多个数据分段中的每一者的哈希集与对应数据分段。
9.根据权利要求1所述的存储系统,其中所述处理装置进一步用以基于年龄、脏百分比或其它数据特性选择所述存储式存储器中的其它数据分段以供进行所述垃圾收集。
10.一种存储系统中的数据压缩方法,其包括:
从存储于所述存储系统的存储式存储器中的多个数据分段获得哈希值;
基于所述哈希值确定跨越所述多个数据分段的内容相似度;
在所述存储式存储器中的垃圾收集期间对所述多个数据分段中的两个或更多个数据分段的实时数据执行数据压缩,所述两个或更多个数据分段具有满足相似度阈值的跨越所述两个或更多个数据分段的所述内容相似度;及
将所述两个或更多个数据分段的经压缩实时数据写入到所述存储式存储器中。
11.根据权利要求10所述的方法,其中所述确定跨越所述多个数据分段的所述内容相似度包括基于所述哈希值确定所述多个数据分段中的两个或更多个数据分段之间的杰卡德距离,且其中获得所述哈希值包括获得所述多个数据分段的多个部分的哈希值。
12.根据权利要求10所述的方法,其中所述对所述多个数据分段中的所述两个或更多个数据分段的所述实时数据执行所述数据压缩包括执行辨识并压缩所述两个或更多个数据分段中的数据的相似部分的数据压缩。
13.根据权利要求10所述的方法,其中所述获得所述哈希值包括:
使用滑动窗口哈希函数计算所述多个数据分段中的每一者的多个数据组块中的每一者的哈希;及
针对所述多个数据分段中的每一者选择所述哈希的子集,包括最小值、最大值或其它确定性选择。
14.根据权利要求10所述的方法,其中所述获得所述哈希值包括:
确定所述多个数据分段的哈希集;
存储所述哈希集与所述数据分段;及
为所述确定跨越所述多个数据分段的所述内容相似度,存取所存储哈希集。
15.根据权利要求10所述的方法,其进一步包括基于所述存储式存储器中的其它数据分段的年龄、脏百分比或其它数据特性选择所述其它数据分段以供进行所述垃圾收集及所述数据压缩。
16.一种有形非暂时性计算机可读媒体,其上具有指令,所述指令在由处理装置执行时致使所述处理装置执行包括以下各项的方法:
从存储于存储系统的存储式存储器中的多个数据分段获得哈希值;
基于哈希结果确定所述多个数据分段的内容相似度;
在垃圾收集期间,对所述多个数据分段中具有满足相似度阈值的所述内容相似度的两个或更多个数据分段的实时数据执行数据压缩;及
将所述两个或更多个数据分段的经压缩实时数据写入到所述存储式存储器中。
17.根据权利要求16所述的计算机可读媒体,其中所述确定所述多个数据分段的所述内容相似度包括基于所述哈希结果根据跨越所述多个数据分段应用的杰卡德距离确定所述数据分段的数据的部分的相似度。
18.根据权利要求16所述的计算机可读媒体,其中所述对所述多个数据分段中的所述两个或更多个数据分段的所述实时数据执行所述数据压缩包括执行压缩所述两个或更多个数据分段中的数据的相似部分的数据压缩。
19.根据权利要求16所述的计算机可读媒体,其中所述获得所述哈希结果包括:
使用滑动窗口哈希函数计算所述多个数据分段中的每一者的数据的多个部分中的每一者的哈希,以针对所述多个数据分段中的每一者选择所述哈希的确定性子集。
20.根据权利要求16所述的计算机可读媒体,其中所述获得所述哈希结果包括:
为确定所述多个数据分段的所述内容相似度,确定所述多个数据分段中的每一者的哈希集并存储所述哈希集。
CN202180085082.2A 2021-01-25 2021-11-11 使用数据相似度来选择分段进行垃圾收集 Pending CN116601596A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/156,979 US20220236904A1 (en) 2021-01-25 2021-01-25 Using data similarity to select segments for garbage collection
US17/156,979 2021-01-25
PCT/US2021/059037 WO2022159162A1 (en) 2021-01-25 2021-11-11 Using data similarity to select segments for garbage collection

Publications (1)

Publication Number Publication Date
CN116601596A true CN116601596A (zh) 2023-08-15

Family

ID=78829327

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180085082.2A Pending CN116601596A (zh) 2021-01-25 2021-11-11 使用数据相似度来选择分段进行垃圾收集

Country Status (5)

Country Link
US (1) US20220236904A1 (zh)
EP (1) EP4232907A1 (zh)
CN (1) CN116601596A (zh)
IL (1) IL304363A (zh)
WO (1) WO2022159162A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11677736B2 (en) * 2021-03-25 2023-06-13 International Business Machines Corporation Transient identification generation
US11892983B2 (en) 2021-04-29 2024-02-06 EMC IP Holding Company LLC Methods and systems for seamless tiering in a distributed storage system
US20230126511A1 (en) * 2021-10-27 2023-04-27 EMC IP Holding Company LLC Methods and systems for storing data in a distributed system using gpus
US11677633B2 (en) 2021-10-27 2023-06-13 EMC IP Holding Company LLC Methods and systems for distributing topology information to client nodes
US11922071B2 (en) 2021-10-27 2024-03-05 EMC IP Holding Company LLC Methods and systems for storing data in a distributed system using offload components and a GPU module
US11762682B2 (en) 2021-10-27 2023-09-19 EMC IP Holding Company LLC Methods and systems for storing data in a distributed system using offload components with advanced data services
US12007942B2 (en) 2021-10-27 2024-06-11 EMC IP Holding Company LLC Methods and systems for seamlessly provisioning client application nodes in a distributed system
US20230216690A1 (en) * 2021-12-30 2023-07-06 Gm Cruise Holdings Llc Data transfer acceleration via content-defined chunking
US20240045693A1 (en) * 2022-08-02 2024-02-08 Bank Of America Corporation System and method for automated command access approval across a network of servers
CN116225338B (zh) * 2023-03-13 2023-11-14 湖北华中电力科技开发有限责任公司 基于时序信息与存储信息的数据处理方法及装置
CN117453152B (zh) * 2023-12-25 2024-04-02 武汉麓谷科技有限公司 一种ZNS固态硬盘Zone LBA管理方法以及区块管理命令的算法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090204636A1 (en) * 2008-02-11 2009-08-13 Microsoft Corporation Multimodal object de-duplication
US9400610B1 (en) * 2012-06-13 2016-07-26 Emc Corporation Method for cleaning a delta storage system
US20140244604A1 (en) * 2013-02-28 2014-08-28 Microsoft Corporation Predicting data compressibility using data entropy estimation
US9411815B1 (en) * 2013-09-26 2016-08-09 Emc Corporation System and method for improving data compression in a deduplicated storage system
US20170123678A1 (en) * 2015-11-04 2017-05-04 HGST Netherlands B.V. Garbage Collection for Reference Sets in Flash Storage Systems
US10303390B1 (en) * 2016-05-02 2019-05-28 Pure Storage, Inc. Resolving fingerprint collisions in flash storage system
US20180024767A1 (en) * 2016-07-19 2018-01-25 Western Digital Technologies, Inc. Reference Set Construction for Data Deduplication
US20190379394A1 (en) * 2018-06-07 2019-12-12 Vast Data Ltd. System and method for global data compression
US20200019476A1 (en) * 2018-07-11 2020-01-16 EMC IP Holding Company LLC Accelerating Write Performance for Microservices Utilizing a Write-Ahead Log
US11507305B2 (en) * 2019-03-29 2022-11-22 EMC IP Holding Company LLC Concurrently performing normal system operations and garbage collection
US10872037B2 (en) * 2019-04-19 2020-12-22 EMC IP Holding Company LLC Estimating worker nodes needed for performing garbage collection operations
CN112099725A (zh) * 2019-06-17 2020-12-18 华为技术有限公司 一种数据处理方法、装置及计算机可读存储介质

Also Published As

Publication number Publication date
US20220236904A1 (en) 2022-07-28
EP4232907A1 (en) 2023-08-30
IL304363A (en) 2023-09-01
WO2022159162A1 (en) 2022-07-28

Similar Documents

Publication Publication Date Title
US11269884B2 (en) Dynamically resizable structures for approximate membership queries
US11893023B2 (en) Deterministic searching using compressed indexes
US20220236904A1 (en) Using data similarity to select segments for garbage collection
US11614880B2 (en) Storage system with selectable write paths
US11620075B2 (en) Providing application aware storage
US11789626B2 (en) Optimizing block allocation in a data storage system
US11704035B2 (en) Unified storage on block containers
US11614881B2 (en) Calculating storage consumption for distinct client entities
US20220335005A1 (en) Storage-deferred copying between different file systems
US20220291858A1 (en) Utilizing programming page size granularity to optimize data segment storage in a storage system
US11874733B2 (en) Recovering a container storage system
US20240012752A1 (en) Guaranteeing Physical Deletion of Data in a Storage System
US11853164B2 (en) Generating recovery information using data redundancy
CN117377941A (zh) 使用近似基线产生数据集
US20240193125A1 (en) Maintaining Data With Different Retention Policies
US20220091744A1 (en) Optimized Application Agnostic Object Snapshot System
US20230384961A1 (en) Providing Non-Volatile Storage To Cloud Computing Services
US20220091743A1 (en) Bucket versioning snapshots
US12038927B2 (en) Storage system having multiple tables for efficient searching
US12039165B2 (en) Utilizing allocation shares to improve parallelism in a zoned drive storage system
US11637896B1 (en) Migrating applications to a cloud-computing environment
US20240232016A1 (en) Data Recovery In a Multi-Device Storage System
US20210286517A1 (en) Utilizing Allocation Shares To Improve Parallelism In A Zoned Drive Storage System
CN117693731A (zh) 利用分配份额改进分区驱动器存储系统中的并行性
CN117616378A (zh) 在分区式驱动器存储系统中高效地写入数据

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