CN111610932A - 减少键值存储服务器的漏洞窗口而不牺牲可用容量的系统 - Google Patents
减少键值存储服务器的漏洞窗口而不牺牲可用容量的系统 Download PDFInfo
- Publication number
- CN111610932A CN111610932A CN202010115084.9A CN202010115084A CN111610932A CN 111610932 A CN111610932 A CN 111610932A CN 202010115084 A CN202010115084 A CN 202010115084A CN 111610932 A CN111610932 A CN 111610932A
- Authority
- CN
- China
- Prior art keywords
- data
- storage space
- redundant
- amount
- data set
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/35—Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
- H03M13/353—Adaptation to the channel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1461—Backup scheduling policy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/154—Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/373—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Probability & Statistics with Applications (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Hardware Redundancy (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
根据一个一般方面,一种系统可以包括被配置为接收数据访问请求的数据接口电路,其中每个数据访问请求与数据集相关联。该系统可以包括多个存储设备,每个存储设备被配置为存储数据,并且其中所述多个存储设备具有可用存储空间量、已用存储空间量和冗余存储空间量。该系统可以包括数据管理电路,该数据管理电路被配置为:监控所述多个存储设备中的可用存储空间量;对于一个或更多个数据集,确定与相应的数据集相关联的冗余级别;对于数据集中的第一数据集,生成要与第一数据集相关联的冗余数据部分;并且至少部分地基于可用存储空间量来动态地调整与第一数据集相关联的冗余级别。
Description
相关申请的交叉引用
本申请要求于2019年2月25日提交的发明名称为“REDUCING VULNERABILITYWINDOW IN KEY VALUE STORAGE SERVER WITHOUT SACRIFICING USABLE CAPACITY(减少键值存储服务器的漏洞窗口而不牺牲可用容量)”的临时专利申请序列第62/810,373号,以及于2019年4月19日提交的美国专利申请第16/389,907号的优先权,该临时专利申请的。该较早提交的申请的主要内容通过引用结合于此。
技术领域
本说明涉及数据存储,并且更具体地,涉及在不牺牲可用容量的情况下减少键-值存储服务器中的漏洞窗口。
背景技术
大规模的数据爆炸已经有据可查。在某些领域,趋势是向分离存储(disaggregated storage)和计算体系结构发展,以提高成本效率和更精细粒度的规模。这可能意味着计算机器通过网络在存储机器上存储和访问临时数据,这与并置系统不同。分离存储相比并置存储有许多优势,在并置存储中,每个节点都受限于其本地磁盘的空间。在分离存储中,系统可以通过网络从无数资源中获取信息。
在编码理论中,擦除码(erasure code)是在比特擦除(而不是比特错误)假设下的前向纠错(forward error correction,FEC)码,它将k个符号的消息转换成具有n个符号的较长消息(码字),使得原始消息可以从n个符号的子集恢复。分数r=k/n被称为码率。分数k’/k(其中k’表示用于恢复所需的符号数)被称为接收效率。擦除码的一种形式是极大距离可分码(maximum distance separable code,MDS码)。
发明内容
技术问题
本发明的一个目的是提供一种存储器管理技术,其使用镜像和/或擦除编码来应用有效的冗余。
技术方案
根据一个一般方面,一种系统可以包括被配置为接收数据访问请求的数据接口电路,其中每个数据访问请求与数据集相关联。该系统可以包括多个存储设备,每个存储设备被配置为存储数据,并且其中所述多个存储设备具有可用存储空间量、已用存储空间量和冗余存储空间量。该系统可以包括数据管理电路,该数据管理电路被配置为:监控所述多个存储设备中的可用存储空间量;对于一个或更多个数据集,确定要与相应的数据集相关联的冗余级别;对于数据集中的第一数据集,生成要与第一数据集相关联的冗余数据部分;并且至少部分地基于可用存储空间量来动态地调整与第一数据集相关联的冗余级别。
根据另一个一般方面,一种装置可以包括多个存储设备,每个存储设备被配置为存储数据集,并且其中所述多个存储设备具有可用存储空间量、已用存储空间量和冗余存储空间量。该装置可以包括数据管理电路。数据管理电路可以包括存储监控器电路,该存储监控器电路被配置为测量所述多个存储设备中的可用存储空间量。数据管理电路可以包括冗余分配器电路,该冗余分配器电路被配置为对于一个或更多个数据集,确定要与第一数据集相关联的冗余级别,并且至少部分地基于可用存储空间量来动态地调整与第一数据集相关联的冗余级别。数据管理电路可以包括至少一个冗余码生成电路,该冗余码生成电路被配置为对于第一数据集,创建要与相应的数据集相关联的冗余数据部分。
根据另一个一般方面,一种装置可以包括多个存储设备,每个存储设备被配置为存储数据集,并且其中所述多个存储设备具有可用存储空间量、已用存储空间量和冗余存储空间量,其中冗余存储空间与已用存储空间相关联。该装置可以包括数据管理电路,该数据管理电路被配置为至少部分基于可用存储空间量来动态地调整冗余存储空间与已用存储空间的比率。
一个或更多个实施方式的细节在附图和以下描述中阐述。从描述和附图以及权利要求书中,其他特征将是显而易见的。
一种用于数据存储的系统和/或方法,并且更具体地,在不牺牲可用容量的情况下减少键-值存储服务器中的漏洞窗口,基本上如至少一个附图中所示和/或结合附图描述,如权利要求中更完整地阐述的。
有益效果
根据上述特征的本发明的系统可以在保持可用容量的同时提供更高水平的性能和可用性/可靠性。因此,可以大大降低系统成本。
附图说明
图1是根据所公开的主题的系统的一示例实施例的框图。
图2是根据所公开的主题的系统的一示例实施例的框图。
图3A是根据所公开的主题的系统的一示例实施例的框图。
图3B是根据所公开的主题的系统的一示例实施例的框图。
图3C是根据所公开的主题的系统的一示例实施例的框图。
图3D是根据所公开的主题的系统的一示例实施例的框图。
图4是根据所公开的主题的系统的一示例实施例的框图。
图5是可以包括根据所公开的主题的原理形成的设备的信息处理系统的示意性框图。
不同附图中相同的参考符号表示相同的元件。
具体实施方式
下文将参考附图更全面地描述各种示例实施例,在附图中示出了一些示例实施例。然而,本公开的主题可以以许多不同的形式来体现,并且不应该被解释为限于这里阐述的示例实施例。更确切地说,提供这些示例实施例是为了使本公开彻底和完整,并将本公开主题的范围完全传达给本领域技术人员。在附图中,为了清楚起见,层和区域的尺寸和相对尺寸可能被夸大。
应当理解,当一个元件或层被称为在另一个元件或层“上”、“连接到”或“耦合到”另一个元件或层时,它可以直接在另一个元件或层上、直接连接到或直接耦合到另一个元件或层,或者可以存在中间元件或层。相反,当一个元件被称为“直接在”另一个元件或层上、“直接连接到”或“直接耦合到”另一个元件或层时,不存在中间元件或层。贯穿全文,相同的数字指代相同的元件。如这里所使用的,术语“和/或”包括一个或更多个相关列出项目的任何和所有组合。
应当理解,尽管术语第一、第二、第三等在此可以用来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应该受到这些术语的限制。这些术语仅用于区分一个元件、组件、区域、层或部分与另一个元件、组件、区域、层或部分。因此,在不脱离本公开主题的教导的情况下,下面讨论的第一元件、组件、区域、层或部分可以被称为第二元件、组件、区域、层或部分。
为了便于描述,空间关系术语,诸如“在……下面”、“在……下方”、“下”、“在……上方”、“上”等,在此可以被用来便于描述一个元件或特征与(多个)另外的元件或特征如图中所示的关系。应当理解,除了图中描绘的取向之外,空间关系术语还意图涵盖使用或操作中的设备的其它不同取向。例如,如果图中的设备被翻转,则被描述为在其他元件或特征“下方”或“下面”的元件将被取向为在其他元件或特征“上方”。因此,示例性术语“下方”可以包括上方和下方两种取向。该设备可以以其他方式取向(旋转90度或其他取向),并且在此使用的空间关系描述符被相应地解释。
同样,为了便于描述,这里可以使用诸如“高”、“低”、“上拉”、“下拉”、“1”、“0”等电气术语来描述相对于其他电压电平或相对于图中所示的(多个)另外的元件或特征的电压电平或电流。应当理解,除了图中所示的电压或电流之外,电气相对术语意图涵盖使用或操作中的设备的其它不同参考电压。例如,如果图中的设备或信号被反转或使用其他参考电压、电流或电荷,则与新的参考电压或电流相比,被描述为“高”或“上拉”的元件将是“低”或“下拉”。因此,示例性术语“高”可以涵盖相对低或高的电压或电流两者。设备可以另外基于不同的电气参照系和被相应地解释的再次使用的电气关系描述符。
这里使用的术语仅用于描述特定示例实施例的目的,并不意图限制本公开的主题。如这里所使用的,单数形式“一”、“一个”和“该”也意图涵盖复数形式,除非上下文另有明确指示。还应当理解,当在本说明书中使用时,术语“包括”和/或“包含”表明陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或更多个其他特征、整数、步骤、操作、元件、组件和/或其组合的存在或添加。
示例实施例在此参照作为理想化示例实施例(和中间结构)的示意性图示的横截面图示来描述。这样,由于例如制造技术和/或公差而引起的图示形状的变化是可以预料的。因此,示例实施例不应被解释为局限于这里示出的区域的特定形状,而是包括例如由制造导致的形状的偏离。例如,图示为矩形的注入区通常在其边缘具有圆化或弯曲特征和/或注入浓度梯度,而不是从注入区到非注入区的二元变化。同样,通过注入形成的掩埋区可以导致掩埋区和通过其进行注入的表面之间的区域中的一些注入。因此,图中示出的区域本质上是示意性的,它们的形状不意图示出设备区域的实际形状,且不意图限制本公开主题的范围。
除非另有定义,这里使用的所有术语(包括技术和科学术语)具有与本公开主题所属领域的普通技术人员通常理解的相同含义。还应当理解,术语,诸如常用词典中定义的术语,应当被解释为具有与它们在相关领域的背景中的含义一致的含义,并且除非在此明确定义,否则不应被解释为理想化或过于正式的含义。
在下文中,将参考附图详细解释示例实施例。
图1是系统100的一示例实施例的框图,该系统100可以包括分离存储集群的一部分(例如,如图4所示)。在一些实施例中,系统100可以被用来存储数据。
如上所述,在各种实施例中,可以存在分散的、远程的或分离的系统,其中数据存储在网络内的多个设备上。在这样的实施例中,主机设备(例如,服务器计算机、个人计算机、平板电脑或其他计算设备或虚拟机器)可以请求将数据存储在分离系统中(通俗地说,这可以被称为“云”或一些这样的营销术语)。该分离系统可以包括一个或更多个本地化数据存储集群或节点,诸如系统100。
在所示出的实施例中,系统100可以包括多个存储设备106。这些存储设备106中的每一个可以被配置为存储数据(例如,数据集101和/或数据段111A-111H)。存储设备106可以是异构的或同构的。它们可以包括许多不同技术中的一种或多种,诸如永久存储器设备、固态存储器或固态存储设备(solid-state device,SSD)、磁存储器(硬盘或HDD(硬盘驱动器,Hard disk drive))或光存储器。在各种实施例中,存储设备可以是易失性的或非易失性的。应当理解,以上仅仅是几个说明性示例,所公开的主题不限于其。
在各种实施例中,系统100可以包括或容纳许多小型(small form factor)存储设备106。这些存储设备106可以具有相对高的存储容量。此外,由于概率定律和它们的大数量(尤其是在使用许多系统100的情况下),可以预期存储设备106会遇到不平凡(non-trivial)的故障率(例如,<10%)。所公开的主题可以解决该故障率的影响,包括试图缩短恢复周期、减少用于重建存储在故障存储设备106上的数据的处理开销、最小化重建或从存储设备106读取所需的数据移动量,以及实现重建操作的分布式处理。此外,在示出的实施例中,系统100可以尝试平衡专用于数据冗余的存储量和由于该开销而损失的空间。
在示出的实施例中,系统100可以包括被配置为接收数据访问的数据接口电路102。在各种实施例中,数据访问可以包括读取(或获取)命令,或写入(或放置)命令。每个数据访问可以与数据集101相关联。在示出的实施例中,示出了三个数据集101A、101B和101C。这些数据集101可以(在写入命令的情况下)由请求的主机系统或服务器提供。
在示出的实施例中,数据接口电路102可以包括突发缓冲存储器112。突发缓冲存储器112可以被配置为高速缓存或临时存储传入的数据集101,同时它们通过数据管理电路104进行操作。如下所述,在各种实施例中,数据集101可以被分离成更小的部分并与冗余数据相关联。如果存储设备106故障,则该冗余数据可以允许数据集被重构。
此外,通过立即将数据集101存储在突发缓冲存储器112中,可以隐藏或有效减少创建冗余数据所引起的时间或时延。在另一个实施例中,如果数据集101存储(例如,镜像)在多个设备106中,则可以从较大的分离系统隐藏将数据集101写入多个位置所花费的时间。突发缓冲存储器112还可以允许多个小数据集101被组合成更大更有效的数据集。
在示出的实施例中,数据接口电路102可以包括预写日志(write ahead log)114。在这样的实施例中,预写日志114可以记录系统100正在执行什么操作,使得在系统100内出现故障的情况下,可以确定所执行的操作(及它们的成功)。这可能有助于故障发生之后操作的恢复。对于非常低时延或标准存储设备106,预写日志114可以用使用永久存储器或类似类型的低时延高带宽设备的非易失性双列直插式存储器模块(non-volatile dual in-line memory module,NVDIMM)来实施。
在示出的实施例中,系统100可以包括数据管理电路104。在这样的实施例中,数据管理电路104可以协调多个存储设备106,使得它们作为单个存储单元操作(对于外部主机服务器)。尽管事实上各种存储设备106可能故障并被替换。
将关于随后的附图描述数据管理电路104及其功能。对于下图,将描述系统的基本功能。
在示出的实施例中,数据管理电路104可以将数据集101分成多个数据段111A-111H。这些数据段111A-111H中的每一个可以存储在独自的存储设备106上。在这样的实施例中,数据集101可以分布在多个存储设备106的一些或全部上。例如,数据段111A可以存储在存储设备106A上,数据段111B可以存储在存储设备106B上,数据段111C可以存储在存储设备106C上等等,直到数据段111H可以存储在存储设备106H上。应当理解,以上仅仅是一个说明性示例,所公开的主题不限于其。在各种实施例中,如下所述,这些数据段111可以包括一个或更多个冗余数据段。
当发生读取或获取数据访问时,数据管理电路104可以从存储设备106检索数据集101。在各种实施例中,这可以包括从数据段111重新组装数据集101。数据集101然后可以经由数据接口电路102或其他接口电路或端口(未示出)发送到请求设备(例如,服务器)。
图2是根据所公开的主题的系统100的一示例实施例的框图。图2示出了所述多个存储设备106及其由数据管理电路104进行的管理的更概念性的图示。
在所示出的实施例中,由所述多个存储设备106提供的存储(storage)被示出为存储状态。在图2中,示出了四种可能的存储状态254A-254D。应当理解,以上仅仅是几个说明性示例,所公开的主题不限于其。
在这样的实施例中,存储状态(由状态254A示出)可以包括两个部分或两种类型的存储。空闲空间214可以是其中没有存储数据的存储空间。而已用或用户空间224是在该处存储数据的存储设备106的一部分。当数据集101被写入系统100和存储设备106时,空闲空间214可以被转换成已用空间224。这样,存储设备106可以包括空闲空间214的量和已用空间224的量。存储设备106可以既集体地(作为所述多个存储设备)又单独地具有这样的量。
在示出的实施例中,数据管理电路104可以包括存储监控器电路222,该存储监控器电路222被配置为监控空闲空间214和已用空间224的量。在各种实施例中,存储监控器电路222既可以监控这些存储设备106中整体上有多少量,又可以监控这些存储设备106中单独地有多少量。在这样的实施例中,知道空闲空间214在哪里可以允许数据管理电路104做出关于哪个特定存储设备106或其一部分将被用于存储给定数据集的选择。
如上所述,存储设备106的故障是预期的。因此,对于系统100使用冗余存储技术可能是明智的。这些冗余存储技术可以包括创建额外的数据段,以便当(或者如果)数据集的部分丢失或被发现出错时,可以重构整个数据集。
在示出的实施例中,状态254B示出了包括已用空间224和空闲空间214的情况。由于已用空间224小于空闲空间214的大小,所以数据管理电路104可以创建冗余数据(占据冗余空间234)。在这样的实施例中,已用空间224中的每个数据段可以与冗余空间234中的对应的冗余数据相关联。
在一个实施例中,例如,(在已用空间224中的)每个用户数据段可以与冗余空间234中的对应的冗余数据段相关联。在这样的实施例中,如果有足够的未使用或空闲空间214来镜像已用空间224,则可以镜像已用空间224。
在示出的实施例中,状态254C示出了已用空间224和冗余空间234的量增加,并且空闲空间214的量收缩或减少的示例。在这样的实施例中,空闲空间214的量可以下降到给定阈值(例如,阈值225A)以下,并且数据管理电路104可以确定广泛或昂贵的冗余方案可能不再是期望的。
在示出的实施例中,系统100可以包括具有冗余分配或分配器电路225的数据管理电路104。在这样的实施例中,冗余分配或分配器电路225可以被配置为确定与给定数据集或存储状态相关联的冗余级别。
在这样的实施例中,由于存储设备106相对较空并且具有大量的空闲空间214,所以系统100可以采用昂贵或有弹性的冗余方案(例如,镜像)。但是,随着存储设备106填满并且空闲空间214减少,系统100可以开始采用更便宜且弹性更低的冗余方案。例如,可以采用擦除或错误编码。
在示出的实施例中,状态254D示出了已用空间224和冗余空间234的量不再相等的示例。更确切地说,冗余级别已经降低。冗余级别的这种降低可以减少或简单地降低冗余空间234的量的增加速率。例如,在一个实施例中,已用空间224与冗余空间234的比率可以是8:1。参考图3A、图3B和图3C讨论了各种冗余方案。应当理解,以上仅仅是一个说明性示例,所公开的主题不限于其。
在这样的实施例中,当前冗余方案和/或级别的改变可以动态发生。改变当前冗余方案和/或级别可能不需要显式的用户干预动作。更确切地说,数据管理电路104可以检测到空闲空间214的量已经超过阈值,并且基于规则集选择新的冗余级别或方案。在一些实施例中,可以保持相同的冗余方案(例如,擦除编码),但是可以减少用户数据的每一字节的冗余比特数。同样,冗余级别可以随着空闲空间214的量或其他触发事件的增加而提高。
在示出的实施例中,数据管理电路104可以包括一个或更多个冗余码生成电路226。在这样的实施例中,(多个)冗余码生成电路226可以被配置为生成与每个数据集101相关联的任何冗余数据段。在各种实施例中,(多个)冗余码生成电路226可以包括不同的码生成电路(例如,电路226A和226B),每个电路都专用于特定的码生成技术。
在这样的实施例中,数据集101可以最初并临时存储在突发缓冲存储器112中。此时,尽管数据集101没有完全存储在存储设备106中,系统100也可以将写入或放置命令报告为成功。
数据管理电路104可以确定该数据集101要采用的冗余级别和要使用的编码方案。(多个)冗余码生成电路226然后可以从突发缓冲存储器112读取数据集101,执行所选择的冗余操作,并将各个数据段(用户数据和冗余数据两者)写入各个存储设备106。在这样的实施例中,计算冗余数据段并将其写入目标存储设备106所需的时延可以被从发起写入或放置命令的主机服务器隐藏。
在各种实施例中,每个数据集101可以与给定的冗余级别相关联。在另一个实施例中,存储装置254作为一个整体可以与冗余级别相关联。在又一实施例中,数据集101可以按特性(例如,数据类型、服务质量、最后访问时间)来分组,并且与冗余级别相关联。应当理解,以上仅仅是几个说明性示例,所公开的主题不限于其。
在各种实施例中,数据管理电路104可以删除冗余数据段以释放空间。例如,一些数据集101可以被认为不需要任何冗余,并且它们的对应的冗余数据可以被删除。在各种实施例中,这可以在空闲空间214的量已经达到给定阈值水平时发生。在这样的实施例中,阈值水平(像所有阈值水平一样)可以是可编程的或可配置的。在这样的实施例中,这些数据集可能不受保护,但是由于较大存储集群(见图4)内的其他存储系统(如系统100)中的冗余,仍然可以至少部分可恢复。
在各种实施例中,数据管理电路104可以至少部分地基于各种特性来选择哪些数据集以剥除它们的冗余比特。在一些实施例中,特性可以包括数据集101的大小、数据集101的最后访问时间、使用频率、数据类型、与数据集101相关联的服务质量等。应当理解,以上仅仅是几个说明性示例,所公开的主题不限于其。
当系统100开始耗尽容量时,数据管理电路104可以以某个(可调整的)阈值决定何时开始删除冗余数据以使更多容量可用。这将允许系统100存储到其全部容量。
在一些实施例中,如果数据管理电路104知道用户数据可以被重构或者被存储集群内的另一个系统冗余地存储,则系统100甚至可以删除用户数据。在这样的实施例中,系统100可以被配置为与存储集群内的其他系统通信。
在各种实施例中,数据管理电路104可以决定不完全删除与数据集相关联的冗余数据,而是用弹性更低的数据来替换它。例如,如果第一方案对于每8比特的用户数据使用4比特冗余数据,则冗余级别可以降低到对于每8比特的用户数据使用2比特冗余数据的方案(对于每8比特的用户数据释放2比特)。在这样的实施例中,系统100可以在使用新的或第二2比特方案重新存储用户数据之前删除旧的冗余数据。应当理解,以上仅仅是一个说明性示例,所公开的主题不限于其。
在各种实施例中,当系统100在其他方面是理想的(例如,没有读取或写入发生)时,可以发生对先前存储的用户数据及它们的冗余级别的这些改变。在这样的实施例中,改变先前存储的数据所需的处理和资源使用可以被从任何主机服务器或设备隐藏。
在各种实施例中,系统100可以包括处理器(未示出),诸如控制器或设备处理器。在这样的实施例中,上述的一些或所有操作可以由软件、固件或其组合来执行。
图3A是根据所公开的主题的系统100的一示例实施例的框图。在示出的实施例中,采用了示例冗余方案。应当理解,以下仅仅是一个说明性示例,所公开的主题不限于其。
在示出的实施例中,当足够的容量或空闲空间可用时(例如,使用阈值来确定),可以镜像写入或放置操作。在示出的实施例中,每个数据段101A可以镜像到存储设备106D和106E两者。因此,当两个存储设备106D和106E中的一个故障时,系统100将能够检索数据101A的其他副本。这可以在不需要重构数据或降低性能的情况下完成。同样,可以创建数据的多个副本或镜像。
在各种实施例中,镜像的数据101A可以使用会合(rendezvous)散列或类似技术分布在存储设备106之间。在示出的实施例中,可以看到数据集101仅被存储到八个所示的存储设备106中的两个。因此,在各种实施例中,并非所有存储设备106都需要被用来存储特定数据集101。数据段可以被分配给存储设备106的子集,并且分配可以涉及在不同子集上重叠不同数据集。
在这样的实施例中,系统100对分布式散列技术的使用可能意味着容量将继续在系统100中的所有存储设备106上均匀填充。在这样的实施例中,使用基于散列的方法进行镜像(或存储)将数据分布在可用的存储设备106上,并减轻性能劣化。在各种实施例中,这也可以改善恢复时间,因为系统100中的所有存储设备106都可以参与任何数据集重建过程。
图3B是根据所公开的主题的系统100的一示例实施例的框图。在示出的实施例中,采用了更复杂的示例冗余方案。应当理解,以下仅仅是一个说明性示例,所公开的主题不限于其。
如上所述,在另一个实施例中,系统100可以采用更复杂的冗余编码方案(例如,擦除编码)。在这样的实施例中,奇偶校验比特或数据段可以由数据管理电路104创建,并且与数据集101相关联。
在示出的实施例中,对于每6比特的用户数据(数据111A、111B、111C、111E、111F和111G),创建2比特的冗余数据(数据111D和111H)并将其存储在存储设备106中。在示出的实施例中,这些数据段111A-111H存储在多个存储设备106上。
在这样的实施例中,系统100将能够丢失多达两个存储设备(例如,存储设备106B和106H)或已经有多达两个存储设备(例如,存储设备106B和106H)故障,并且仍然能够重建数据集101。在各种实施例中,可以采用其他形式的冗余编码。
图3C是根据所公开的主题的系统100的一示例实施例的框图。在示出的实施例中,采用了更复杂的示例冗余方案。应当理解,以下仅仅是一个说明性示例,所公开的主题不限于其。
当系统100中磁盘故障时提供弹性的另一种冗余方案可以是将数据集的第一副本完全存储在存储设备106A中,并且数据的第二副本在整个存储设备106的集合(例如,存储设备106B、106C、106D、106E、106F、106G和106H)被擦除编码。在这样的实施例中,数据集101可以以其原始形式(存储设备106A的第一副本)存储在其散列位置,而第二副本将被擦除编码并分布在定义的存储设备106B-106H集合上。
这种方案可以允许系统100支持不止单个存储设备106的故障,同时不会导致在读取/获取操作期间重新组装数据集101所需的时延延迟。在这样的实施例中,当读取/获取操作发生时,数据集101可以简单地从完整副本(存储设备106A)读取,而不是从擦除编码的副本(存储设备106B-106H)重新组装数据集。
取决于弹性目标或级别,可以确定用户和冗余比特或数据段的数量。擦除编码的数据集或副本可能不会与原始数据集(存储设备106A)重叠。在其中采用键-值存储系统的各种实施例中,这可能是因为相同的数据段使用相同的键,并且每个设备在单独的存储设备上必须只有该键的一个版本。使用会合散列和权重,系统100能够检索属于擦除码集的所有数据。注意,所有数据段仍然可以分布在系统中的所有存储设备106上,以保持数据和容量分布目标。
类似于上述,当系统100开始耗尽容量时,数据集的一个副本可以被删除。在各种实施例中,擦除编码的副本被删除,因为对于每个读取/获取操作读取多个存储设备106会降低性能。
图3D是根据所公开的主题的系统100的一示例实施例的框图。在示出的实施例中,系统100重建丢失的数据。
在示出的实施例中,系统100可能已经丢失了存储设备106E(如图3A所示)。在这样的实施例中,存储设备106E可能已经被手动从系统100移除。存储设备106E可能已经遭受硬件故障(例如,断线等)。或者系统100可能已经失去了与存储设备106E(例如,未插电缆)通信的能力。应当理解,以上仅仅是几个说明性示例,所公开的主题不限于其。
在示出的实施例中,可能已经在系统100中添加或激活了存储设备106R,以替换故障的存储设备106E。在一些实施例中,系统100可以采用热备系统。应当理解,以上仅仅是几个说明性示例,所公开的主题不限于其。
在各种实施例中,所有数据集重建操作可以由单独的系统100处理。因此,较大的集群可能已经启用分布式重建事件,在其中不同系统100上的多个存储设备106可以并发地处理重建操作。
在涉及镜像冗余方案的示出的实施例中,重建操作可以包括将数据集101a从镜像的存储设备106之一复制到目标或替换的存储设备106R。同样,在其他冗余方案(如擦除编码)中,重建可以包括通过使用原始或用户数据和冗余数据段两者来计算故障或丢失的数据段。
在示出的实施例中,利用镜像,有可能丢失存储设备106之一,并且仍然能够从故障中恢复。在这样的实施例中,当系统100是理想的或者具有备用资源时,数据集101A可以从一个存储设备106D复制到另一个存储设备106R。例如,当系统100没有发生读取/写入操作时,可以发生重建。或者,在另一个实施例中,如果系统100可以支持多个并发数据访问操作(例如,2个同时操作),则在主机服务器仅请求一个数据访问操作的情况下,则可以发生重建。
图4是根据所公开的主题的系统400的一示例实施例的框图。系统400可以包括多个设备或存储系统,如图4所示。
如上所述,所公开的主题可以是更大的分离存储集群架构的一部分。这种系统400可以采用分布在更大地理区域或远程部署的若干设备或子系统。
在这样的实施例中,系统400可以包括被配置为向系统400读取和写入数据的若干或多个主机服务器(也被称为服务器)402。这些服务器402可以启动上述数据访问、读取/写入、获取/放置请求或操作。
在示出的实施例中,系统400可以包括一个或更多个网络交换机404。网络交换机404可以在存储系统406和主机服务器402之间路由这些数据访问及它们的相关联的数据集。
在示出的实施例中,系统400可以包括多个存储系统406。这些存储系统406可以被组织成存储集群(也被称为集群)408。在这样的实施例中,这些存储集群408可以在某种程度上类似于上述存储设备106。主机服务器402可以在集群408上存储较大数据集401作为一个整体。集群408然后可以将那些较大数据集401分成较小数据集411,并将较大数据集401的部分存储在每个存储系统406上。较大数据集401可以在集群级别用用户数据数据集(显示为白色)和冗余数据数据集(显示为灰色)进行编码,使得如果要从系统400中移除存储系统406,则可以使用集群408的其余部分来恢复较大数据集401。同样,这些较小的存储系统406级别的数据集411可以以冗余方式存储在存储系统400的存储设备上,如上所述(数据段421)。在这样的实施例中,可以采用多层冗余。
所公开的主题提供了一种使用例如镜像和/或擦除编码的暂时或“尽最大努力(Best Effort)”冗余的技术和装置。这种技术在不牺牲可用容量的情况下提供了更高水平的性能和可用性/可靠性,从而大大降低了系统成本。此外,在各种实施例中,所公开的主题能够在正常操作期间以及在随着系统容量填满的渐进删除操作期间实现高带宽和每秒输入/输出操作(input/output operations per second,IOPS)性能。所公开的主题能够在服务器系统中的所有存储设备(例如,SSD)上均匀分布数据,以实现相对高级别的可用容量,包括冗余数据。这种冗余可以是可编程的或可配置的,取决于用户期望的冗余级别,并且可以被动态地调整。
所公开的主题还允许删除或移除最不可能被访问的冗余数据的能力,从而能够实现性能提高。所公开的主题既能够保持全部可用容量,又能够更好地支持可用性/可靠性。所公开的主题可以在一个或更多个存储设备故障时维持数据可用性。响应于故障,所公开的主题可以在更换故障设备时自动执行重建操作,并且以对性能影响最小的方式执行重建操作。
如上所述,在一个实施例中,所公开的主题可以被用于将数据存储到键-值(key-value,KV)SSD上,同时具有冗余性并且对性能的影响最小。在这样的实施例中,所公开的主题能够以渐进的方式删除或移除数据,以随着系统上的容量填满而在更长的持续时间内保持冗余。会合或最高随机权重(highest random weight,HRW)散列技术可以用于均匀地在存储设备之间分布数据或更具体地(键,值)配对。
图5是信息处理系统500的示意框图,其可以包括根据所公开的主题的原理形成的半导体器件。
参考图5,信息处理系统500可以包括根据所公开的主题的原理构造的一个或更多个设备。在另一个实施例中,信息处理系统500可以根据所公开的主题的原理采用或执行一种或更多种技术。
在各种实施例中,信息处理系统500可以包括计算设备,诸如例如膝上型电脑、台式机、工作站、服务器、刀片服务器、个人数字助理、智能手机、平板电脑和其他适当的计算机或其虚拟机器或虚拟计算设备。在各种实施例中,信息处理系统500可以由用户(未示出)使用。
根据所公开的主题的信息处理系统500还可以包括中央处理单元(centralprocessing unit,CPU)、逻辑或处理器510。在一些实施例中,处理器510可以包括一个或更多个功能单元块(functional unit block,FUB)或组合逻辑块(combinational logicblock,CLB)515。在这样的实施例中,组合逻辑块可以包括各种布尔逻辑运算(例如,NAND、NOR、NOT、XOR)、稳定逻辑器件(例如,触发器、锁存器)、其他逻辑器件或其组合。这些组合逻辑操作可以以简单或复杂的方式配置,以处理输入信号来实现期望的结果。应当理解,虽然描述了同步组合逻辑操作的几个说明性示例,但是所公开的主题不限于此,并且可以包括异步操作或者它们的混合。在一个实施例中,组合逻辑块(CLB)515可以包括多个互补金属氧化物半导体(complementary metal oxide semiconductor,CMOS)晶体管。在各种实施例中,这些CMOS晶体管可以被布置成执行逻辑操作的门,尽管可以理解的是,其他技术可以被使用,且这些技术也在所公开的主题的范围内。
根据所公开的主题的信息处理系统500还可以包括易失性存储器520(例如,随机存取存储器(Random Access Memory,RAM))。根据所公开的主题的信息处理系统500还可以包括非易失性存储器530(例如,硬盘驱动器、光学存储器、NAND或闪存)。在一些实施例中,易失性存储器520、非易失性存储器530或其组合或部分可以被称为“存储介质”。在各种实施例中,易失性存储器520和/或非易失性存储器530可以被配置为以半永久或基本永久的形式存储数据。
在各种实施例中,信息处理系统500可以包括一个或更多个网络接口540,其被配置为允许信息处理系统500成为通信网络的一部分并经由通信网络进行通信。Wi-Fi协议的示例可以包括但不限于电气和电子工程师协会(Institute of Electrical andElectronics Engineers,IEEE)802.11g、IEEE 802.11n。蜂窝协议的示例可以包括但不限于:IEEE 802.16m(又名无线-MAN(Metropolitan Area Network,城域网))高级、长期演进(Long Term Evolution,LTE)高级、用于GSM(Global System for Mobile Communication,全球移动通信系统)的增强型数据速率演进(Enhanced Data rates for GSM Evolution,EDGE)、演进高速分组接入(Evolved High-Speed Packet Access,HSPA+)。有线协议的示例可以包括但不限于,IEEE 802.3(又名以太网)、光纤通道、电力线通信(例如,家庭插头、IEEE 1901)。应当理解,以上仅仅是几个说明性示例,所公开的主题不限于其。
根据所公开的主题的信息处理系统500还可以包括用户接口单元550(例如,显示适配器、触觉接口、人机接口设备)。在各种实施例中,该用户界面单元550可以被配置为从用户接收输入和/或向用户提供输出。也可以使用其他种类的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。
在各种实施例中,信息处理系统500可以包括一个或更多个其他设备或硬件组件560(例如,显示器或监控器、键盘、鼠标、照相机、指纹读取器、视频处理器)。应当理解,以上仅仅是几个说明性示例,所公开的主题不限于其。
根据所公开的主题的信息处理系统500可以还包括一个或更多个系统总线505。在这样的实施例中,系统总线505可以被配置为通信地耦合处理器510、易失性存储器520、非易失性存储器530、网络接口540、用户接口单元550以及一个或更多个硬件组件560。由处理器510处理的数据或者从非易失性存储器530外部输入的数据可以存储在非易失性存储器530或者易失性存储器520中。
在各种实施例中,信息处理系统500可以包括或执行一个或更多个软件组件570。在一些实施例中,软件组件570可以包括操作系统(operating system,OS)和/或应用。在一些实施例中,OS可以被配置为向应用提供一个或更多个服务,并且管理或充当应用和信息处理系统500的各种硬件组件(例如,处理器510、网络接口540)之间的中介。在这样的实施例中,信息处理系统500可以包括一个或更多个本机应用,其可以安装在本地(例如,在非易失性存储器530内),且被配置为由处理器510直接执行并直接与OS交互。在这样的实施例中,本机应用可以包括预编译的机器可执行代码。在一些实施例中,本机应用可以包括脚本解释器(例如,C shell(csh)、AppleScript、AutoHotkey)或虚拟执行机器(virtualexecution machine,VM)(例如,Java虚拟机器、微软公共语言运行时),其被配置为将源代码或目标代码翻译成可执行代码,然后由处理器510执行。
可以使用各种封装技术来封装上述半导体器件。例如,根据所公开的主题的原理构造的半导体器件可以使用层叠封装(package on package,POP)技术、球栅阵列(ballgrid array,BGA)技术、芯片级封装(chip scale package,CSP)技术、带引线的塑料芯片载体(plastic leaded chip carrier,PLCC)技术、塑料双列直插式封装(plastic dual in-line package,PDIP)技术、窝伏尔中管芯封装技术、晶片形式的管芯技术、板上芯片(chipon board,COB)技术、陶瓷双列直插封装(ceramic dual in-line package,CERDIP)技术、塑料度量四方扁平封装(plastic metric quad flat package,PMQFP)技术、塑料四方扁平封装(plastic quad flat package,PQFP)技术、小外形封装(small outline package,SOIC)技术、收缩型小外形封装(shrink small outline package,SSOP)技术、薄小外形封装(thin small outline package,TSOP)技术、薄四方扁平封装(thin quad flatpackage,TQFP)技术、系统级封装(system in package,SIP)技术、多芯片封装(multi-chippackage,MCP)技术、晶片级制造封装(wafer-level fabricated package,WFP)技术、晶片级处理堆叠封装(wafer-level processed stack package,WSP)技术或本领域技术人员已知的其他技术。
方法步骤可以由执行计算机程序的一个或更多个可编程处理器来执行,以通过对输入数据进行操作并生成输出来执行功能。方法步骤也可以由专用逻辑电路来执行,并且装置可以被实施为专用逻辑电路,例如,FPGA(field programmable gate array,现场可编程门阵列)或ASIC(application-specific integrated circuit,专用集成电路)。
在各种实施例中,计算机可读介质可以包括在其被执行时使得设备执行方法步骤的至少一部分的指令。在一些实施例中,计算机可读介质可以包括在磁性介质、光学介质、其他介质或其组合(例如,CD-ROM、硬盘驱动器、只读存储器、闪存驱动器)中。在这样的实施例中,计算机可读介质可以是有形的和非暂时体现的制品。
虽然已经参考示例实施例描述了所公开的主题的原理,但是对于本领域技术人员来说显而易见的是,在不脱离这些所公开概念的精神和范围的情况下,可以对其进行各种改变和修改。因此,应当理解,上述实施例不是限制性的,而仅是说明性的。因此,所公开概念的范围将由所附权利要求及其等同物的最广泛可允许的解释来确定,并且不该由前面的描述来限制或限定。因此,应当理解,权利要求意图覆盖落入实施例范围内的所有这些修改和改变。
Claims (10)
1.一种系统,包括:
数据接口电路,被配置为接收数据访问请求,其中每个数据访问请求与数据集相关联;
多个存储设备,每个存储设备被配置为存储数据,并且其中所述多个存储设备具有可用存储空间量、已用存储空间量和冗余存储空间量;和
数据管理电路,被配置为:
监控所述多个存储设备中的所述可用存储空间量,
对于一个或更多个数据集,确定与相应的数据集相关联的冗余级别,
对于所述数据集中的第一数据集,生成要与所述第一数据集相关联的冗余数据部分,并且
至少部分基于所述可用存储空间量,动态地调整与所述第一数据集相关联的冗余级别。
2.根据权利要求1所述的系统,其中,所述数据管理电路被配置为:
采用多个冗余方案来生成所述冗余数据部分;并且
至少部分基于所述可用存储空间量,选择在生成第一冗余数据部分时要采用哪种冗余方案。
3.根据权利要求2所述的系统,其中,所述数据管理电路被配置为:
当所述可用存储空间量高于第一阈值时,采用包括数据镜像的第一冗余方案;
当所述可用存储空间量至少低于所述第一阈值时,采用包括擦除编码的第二冗余方案。
4.根据权利要求1所述的系统,其中,所述数据管理电路被配置为:
检测存储的数据集中的一个或更多个数据段的故障;
响应于故障检测,至少部分地基于与所述存储的数据集相关联的所述冗余数据部分,自动重建所述存储的数据集。
5.根据权利要求1所述的系统,其中,所述数据接口电路包括:
突发缓冲存储器电路,被配置为临时存储所述数据集,并且至少部分地隐藏由所述冗余数据部分的生成引起的延迟;和
预写日志。
6.根据权利要求1所述的系统,其中,所述数据管理电路被配置为:
通过删除与所述一个或更多个数据集中的相应的数据集相关联的冗余部分,动态地降低与一个或更多个数据集相关联的冗余级别。
7.根据权利要求6所述的系统,其中,所述数据管理电路被配置为,在与所述第一数据集相关联的旧冗余部分被删除之后:
生成要与所述第一数据集相关联的新冗余部分,其中所述新冗余部分包括比所述旧冗余部分低的冗余级别。
8.根据权利要求1所述的系统,其中,所述数据管理电路包括:
冗余码生成电路,被配置为生成与每个数据集相关联的冗余数据段。
9.一种装置,包括:
多个存储设备,每个存储设备被配置为存储数据集,并且其中所述多个存储设备具有可用存储空间量、已用存储空间量和冗余存储空间量;和
数据管理电路,包括:
存储监控器电路,被配置为测量所述多个存储设备中的所述可用存储空间量,
冗余分配器电路,被配置为对于一个或更多个数据集,确定要与第一数据集相关联的冗余级别,并且至少部分地基于所述可用存储空间量来动态地调整与所述第一数据集相关联的冗余级别,以及
至少一个冗余码生成电路,被配置为对于所述第一数据集,创建要与相应的数据集相关联的冗余数据部分。
10.一种装置,包括:
多个存储设备,每个存储设备被配置为存储数据集,并且其中所述多个存储设备具有可用存储空间量、已用存储空间量和冗余存储空间量,其中所述冗余存储空间与所述已用存储空间相关联;和
数据管理电路,被配置为至少部分基于所述可用存储空间量来动态地调整冗余存储空间与已用存储空间的比率。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962810373P | 2019-02-25 | 2019-02-25 | |
US62/810,373 | 2019-02-25 | ||
US16/389,907 | 2019-04-19 | ||
US16/389,907 US11171671B2 (en) | 2019-02-25 | 2019-04-19 | Reducing vulnerability window in key value storage server without sacrificing usable capacity |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111610932A true CN111610932A (zh) | 2020-09-01 |
CN111610932B CN111610932B (zh) | 2022-04-26 |
Family
ID=72141938
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010115084.9A Active CN111610932B (zh) | 2019-02-25 | 2020-02-25 | 减少键值存储服务器的漏洞窗口而不牺牲可用容量的系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11171671B2 (zh) |
KR (1) | KR102574324B1 (zh) |
CN (1) | CN111610932B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112148791B (zh) * | 2020-09-15 | 2024-05-24 | 张立旭 | 一种分布式数据动态调整存储方法及系统 |
US11829269B2 (en) * | 2021-01-28 | 2023-11-28 | EMC IP Holding Company LLC | Storage array disk recovery |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5542065A (en) * | 1995-02-10 | 1996-07-30 | Hewlett-Packard Company | Methods for using non-contiguously reserved storage space for data migration in a redundant hierarchic data storage system |
US8386841B1 (en) * | 2010-07-21 | 2013-02-26 | Symantec Corporation | Systems and methods for improving redundant storage fault tolerance |
CN104699420A (zh) * | 2004-11-05 | 2015-06-10 | 德洛博公司 | 允许各种规模存储装置的动态可扩展和可收缩的容错存储系统和方法 |
US20150236725A1 (en) * | 2014-02-20 | 2015-08-20 | Quantum Corporation | Dynamically Configuring Erasure Code Redundancy And Distribution |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5664187A (en) * | 1994-10-26 | 1997-09-02 | Hewlett-Packard Company | Method and system for selecting data for migration in a hierarchic data storage system using frequency distribution tables |
US6055604A (en) * | 1997-08-26 | 2000-04-25 | Hewlett-Packard Company | Forced transaction log posting using a least busy storage media without maintaining redundancy of the transaction log |
US6553509B1 (en) * | 1999-07-28 | 2003-04-22 | Hewlett Packard Development Company, L.P. | Log record parsing for a distributed log on a disk array data storage system |
US6516425B1 (en) * | 1999-10-29 | 2003-02-04 | Hewlett-Packard Co. | Raid rebuild using most vulnerable data redundancy scheme first |
US7539828B2 (en) * | 2000-08-08 | 2009-05-26 | Faronics Corporation | Method and system for automatically preserving persistent storage |
US7089395B2 (en) * | 2002-10-03 | 2006-08-08 | Hewlett-Packard Development Company, L.P. | Computer systems, virtual storage systems and virtual storage system operational methods |
US8219777B2 (en) * | 2002-10-03 | 2012-07-10 | Hewlett-Packard Development Company, L.P. | Virtual storage systems, virtual storage methods and methods of over committing a virtual raid storage system |
US7152142B1 (en) * | 2002-10-25 | 2006-12-19 | Copan Systems, Inc. | Method for a workload-adaptive high performance storage system with data protection |
US7370248B2 (en) * | 2003-11-07 | 2008-05-06 | Hewlett-Packard Development Company, L.P. | In-service raid mirror reconfiguring |
US7958303B2 (en) * | 2007-04-27 | 2011-06-07 | Gary Stephen Shuster | Flexible data storage system |
US8166257B1 (en) * | 2008-01-24 | 2012-04-24 | Network Appliance, Inc. | Automated continuous provisioning of a data storage system |
US9542116B2 (en) * | 2008-10-23 | 2017-01-10 | Hewlett-Packard Development Company, L.P. | Direct attached storage system and method for implementing multiple simultaneous storage schemes |
EP2350839B1 (en) * | 2008-10-27 | 2014-07-09 | Kaminario Tehnologies Ltd. | A mass-storage system utilizing solid-state storage and non-solid-state storage |
JP5458938B2 (ja) * | 2010-02-17 | 2014-04-02 | 富士通株式会社 | 情報処理装置、情報処理プログラムおよび情報処理方法 |
GB201003407D0 (en) * | 2010-03-01 | 2010-04-14 | Extas Global Ltd | Distributed storage and communication |
US9619472B2 (en) * | 2010-06-11 | 2017-04-11 | International Business Machines Corporation | Updating class assignments for data sets during a recall operation |
US9229808B2 (en) * | 2010-10-01 | 2016-01-05 | Pure Storage, Inc. | Reconstruct reads in a raid array with dynamic geometries |
US9727414B2 (en) * | 2010-12-01 | 2017-08-08 | Seagate Technology Llc | Fractional redundant array of silicon independent elements |
US8239584B1 (en) * | 2010-12-16 | 2012-08-07 | Emc Corporation | Techniques for automated storage management |
US8886904B2 (en) * | 2011-04-14 | 2014-11-11 | Kaminario Technologies Ltd. | Managing a solid-state storage device |
WO2012168967A1 (en) * | 2011-06-07 | 2012-12-13 | Hitachi, Ltd. | Storage apparatus and data management method |
US10082959B1 (en) * | 2011-12-27 | 2018-09-25 | EMC IP Holding Company LLC | Managing data placement in storage systems |
US8856431B2 (en) * | 2012-08-02 | 2014-10-07 | Lsi Corporation | Mixed granularity higher-level redundancy for non-volatile memory |
US9727268B2 (en) * | 2013-01-08 | 2017-08-08 | Lyve Minds, Inc. | Management of storage in a storage network |
US9774401B1 (en) | 2013-07-15 | 2017-09-26 | Paul Borrill | Entangled links, transactions and trees for distributed computing systems |
US10255137B1 (en) * | 2013-12-16 | 2019-04-09 | EMC IP Holding Company LLC | Point-in-time recovery on deduplicated storage |
US9678678B2 (en) * | 2013-12-20 | 2017-06-13 | Lyve Minds, Inc. | Storage network data retrieval |
US20150288783A1 (en) * | 2014-04-08 | 2015-10-08 | Lyve Minds, Inc. | Storage agent status |
US9781206B2 (en) * | 2014-05-09 | 2017-10-03 | Lyve Minds, Inc. | Blended storage allocation on a storage agent |
US9531610B2 (en) * | 2014-05-09 | 2016-12-27 | Lyve Minds, Inc. | Computation of storage network robustness |
US9628747B2 (en) * | 2014-05-09 | 2017-04-18 | Lyve Minds, Inc. | Image scrolling on a photo sharing device display |
US9348695B2 (en) * | 2014-05-21 | 2016-05-24 | Sandisk Technologies Inc. | System and method of storing redundancy data |
US9923970B2 (en) | 2014-08-22 | 2018-03-20 | Nexenta Systems, Inc. | Multicast collaborative erasure encoding and distributed parity protection |
GB2529670A (en) * | 2014-08-28 | 2016-03-02 | Ibm | Storage system |
GB2529669B8 (en) * | 2014-08-28 | 2017-03-15 | Ibm | Storage system |
US10437783B1 (en) * | 2014-09-25 | 2019-10-08 | EMC IP Holding Company LLC | Recover storage array using remote deduplication device |
US10324798B1 (en) * | 2014-09-25 | 2019-06-18 | EMC IP Holding Company LLC | Restoring active areas of a logical unit |
WO2016051512A1 (ja) * | 2014-09-30 | 2016-04-07 | 株式会社日立製作所 | 分散型ストレージシステム |
US9600377B1 (en) * | 2014-12-03 | 2017-03-21 | EMC IP Holding Company LLC | Providing data protection using point-in-time images from multiple types of storage devices |
US10387248B2 (en) | 2016-03-29 | 2019-08-20 | International Business Machines Corporation | Allocating data for storage by utilizing a location-based hierarchy in a dispersed storage network |
US10409511B1 (en) * | 2018-06-30 | 2019-09-10 | Western Digital Technologies, Inc. | Multi-device storage system with distributed read/write processing |
CN112889033A (zh) * | 2018-10-15 | 2021-06-01 | Netapp股份有限公司 | 提高具有变化的数据冗余方案的系统中的可用存储空间 |
US10891066B2 (en) * | 2018-12-28 | 2021-01-12 | Intelliflash By Ddn, Inc. | Data redundancy reconfiguration using logical subunits |
-
2019
- 2019-04-19 US US16/389,907 patent/US11171671B2/en active Active
-
2020
- 2020-02-06 KR KR1020200014532A patent/KR102574324B1/ko active IP Right Grant
- 2020-02-25 CN CN202010115084.9A patent/CN111610932B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5542065A (en) * | 1995-02-10 | 1996-07-30 | Hewlett-Packard Company | Methods for using non-contiguously reserved storage space for data migration in a redundant hierarchic data storage system |
CN104699420A (zh) * | 2004-11-05 | 2015-06-10 | 德洛博公司 | 允许各种规模存储装置的动态可扩展和可收缩的容错存储系统和方法 |
US8386841B1 (en) * | 2010-07-21 | 2013-02-26 | Symantec Corporation | Systems and methods for improving redundant storage fault tolerance |
US20150236725A1 (en) * | 2014-02-20 | 2015-08-20 | Quantum Corporation | Dynamically Configuring Erasure Code Redundancy And Distribution |
Also Published As
Publication number | Publication date |
---|---|
CN111610932B (zh) | 2022-04-26 |
KR102574324B1 (ko) | 2023-09-04 |
US11171671B2 (en) | 2021-11-09 |
US20200274556A1 (en) | 2020-08-27 |
KR20200103535A (ko) | 2020-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200042223A1 (en) | System and method for facilitating a high-density storage device with improved performance and endurance | |
US20210173741A1 (en) | Distributed multi-level protection in a hyper-converged infrastructure | |
USRE48222E1 (en) | Reconstruct reads in a raid array with dynamic geometries | |
KR102491112B1 (ko) | Msr 코드를 위한 fpga 가속 시스템 | |
US11086525B2 (en) | Resilient external memory | |
US11940875B2 (en) | System, device and method for storage device assisted low-bandwidth data repair | |
US20120084504A1 (en) | Dynamic raid geometries in an ssd environment | |
US20120084507A1 (en) | Multi-level protection with intra-device protection in a raid array based storage system | |
CN111610932B (zh) | 减少键值存储服务器的漏洞窗口而不牺牲可用容量的系统 | |
CN110597654A (zh) | 用于超快的具有奇偶校验的纠错码的系统和方法 | |
KR102426047B1 (ko) | 폴라 부호 복호화 장치 및 방법 | |
KR20210131058A (ko) | 메모리 시스템 내 데이터를 보호하는 장치 및 방법 | |
US11347596B2 (en) | Preliminary data protection using composite copies of data in a data storage system |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |