CN111615686B - 分布式冗余存储系统 - Google Patents

分布式冗余存储系统 Download PDF

Info

Publication number
CN111615686B
CN111615686B CN201980008647.XA CN201980008647A CN111615686B CN 111615686 B CN111615686 B CN 111615686B CN 201980008647 A CN201980008647 A CN 201980008647A CN 111615686 B CN111615686 B CN 111615686B
Authority
CN
China
Prior art keywords
storage device
storage
storage devices
container
pairing value
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.)
Active
Application number
CN201980008647.XA
Other languages
English (en)
Other versions
CN111615686A (zh
Inventor
D·赫莫
V·阿里
B·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.)
Apple Inc
Original Assignee
Apple 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 Apple Inc filed Critical Apple Inc
Publication of CN111615686A publication Critical patent/CN111615686A/zh
Application granted granted Critical
Publication of CN111615686B publication Critical patent/CN111615686B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency

Landscapes

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

Abstract

本公开的实施例涉及分布式冗余存储系统。本文公开了一种实现用于对象放置的系统的设备,该设备包括至少一个处理器,该至少一个处理器被配置为识别存储在多个存储设备中的两个存储设备上的对象,并且确定针对该多个存储设备中的每对存储设备的配对值,该配对值对应于该对存储设备共有的存储对象的数量。该至少一个处理器被进一步配置为基于所确定的配对值来选择相对于所确定的配对值具有最小配对值的两个存储设备,并且将对象移动到所选择的该两个存储设备中的每个存储设备。

Description

分布式冗余存储系统
相关申请的交叉引用
本申请要求2018年1月24日提交的名称为“DISTRIBUTED REDUNDANT STORAGESYSTEM”的美国临时专利申请序列号62/621,237的权益,该申请全文以引用方式并入本文并且构成本美国实用新型专利申请的部分以用于所有目的。
技术领域
本说明书整体涉及跨多个存储设备的数据对象的分布式冗余存储。
背景技术
多个存储设备可用于存储数据对象(例如,文件)和/或奇偶校验信息。在给定存储设备发生故障时,为了恢复存储在该存储设备上的数据对象,可从其他存储设备访问相关的对象和/或奇偶校验信息。
发明内容
本公开的实施例提供了一种用于对象放置的方法。
根据本公开的实施例,提供了一种用于对象放置的方法。该方法包括:识别存储在多个存储设备中的两个存储设备上的对象;确定针对多个存储设备中的每对存储设备的配对值,配对值对应于对存储设备共有的存储对象的数量;基于所确定的配对值,选择相对于所确定的配对值具有最小配对值的两个存储设备;以及将对象移动到所选择的两个存储设备中的每个存储设备。
附图说明
本主题技术的一些特征在所附权利要求书中被示出。然而,出于解释的目的,在以下附图中阐述了本主题技术的若干实施方案。
图1示出了根据一个或多个具体实施的用于分布式冗余存储的示例性网络环境。
图2示出了根据一个或多个具体实施的可实现分布式冗余存储的示例性存储设备阵列。
图3示出了根据一个或多个具体实施的用于分布式冗余存储的示例性过程的流程图。
图4A至图4D示出了根据一个或多个具体实施的具有用于分布式冗余存储的配对值的示例性矩阵。
图5示出了根据一个或多个具体实施的用于分布式冗余存储的另一示例性过程的流程图。
图6A至图6B示出了根据一个或多个具体实施的具有用于分布式冗余存储的配对值的示例性矩阵。
图7示出了根据一个或多个具体实施的可用以实现主题技术的各个方面的示例性电子系统。
具体实施方式
下面示出的具体实施方式旨在作为本主题技术的各种配置的描述并且不旨在表示主题技术可被实践的唯一配置。附图被并入本文并且构成具体实施方式的一部分。具体实施方式包括具体的细节旨在提供对本主题技术的透彻理解。然而,主题技术不限于本文所述的具体细节,并且可使用一个或多个其他具体实施来实践。在一个或多个具体实施中,以框图形式示出了结构和部件,以便避免使本主题技术的概念模糊。
本主题系统提供跨多个存储设备存储的移动对象(例如,以副本形式)或集群(例如,具有数据容器和奇偶校验容器)。在以副本形式放置对象的示例中,将对象移动到两个不同的存储设备。本主题系统通过确定每对存储设备的配对值来选择两个存储设备。该配对值对应于给定对存储设备共有的存储对象的数量。本主题系统选择具有最小配对值的一对存储设备,并将对象移动到这两个存储设备。
在跨多个存储设备放置集群的示例中,集群通常包括数据对象的容器和用于数据对象的奇偶校验数据的一个或多个容器。例如,可能存在跨三个不同存储设备存储的两个数据容器和一个奇偶校验容器。本主题系统通过确定每对存储设备的配对值来选择这三个存储设备。该配对值对应于存储在该对存储设备上的属于相应共有集群的相应容器的数量。本主题系统选择存储设备中的作为一对具有最小配对值的第一存储设备和第二存储设备。然后,本主题系统基于第一存储设备和第三存储设备的配对值与第二存储设备和第三存储设备的配对值的总和来选择该第三存储设备。将第一容器、第二容器和第三容器移动到第一存储设备、第二存储设备和第三存储设备中的相应存储设备。
根据上述分布方案,当恢复对象或集群时(例如,在存储设备发生故障的情况下),可以增加跨多个存储设备的并行读取的数量,而不是从单个存储设备顺序地读取。这可减少存储设备发生故障后的修复时间(例如,从而降低系统的耐久性风险),并同时在存储设备之间平衡可用空间量。此外,本主题系统使得可以以增加的吞吐量将传入写入的负载更均匀地分布到更多存储设备。
图1示出了根据一个或多个具体实施的用于分布式冗余存储的示例性网络环境。然而,并非所有所描绘的部件均可在所有具体实施中使用,并且一个或多个具体实施可包括与图中所示的那些相比附加的或不同的部件。可进行这些部件的布置和类型的变化,而不脱离本文所列出的权利要求的实质或范围。可提供附加的部件、不同的部件或更少的部件。
网络环境100包括电子设备102和104(下文称为102-104),以及包括控制器110的存储设备阵列108。网络106能够可通信地(直接或间接地)耦接例如电子设备102-104和/或存储设备阵列108中的任何两者或更多者。在一个或多个具体实施中,网络106可以是可包括互联网或可通信地耦接到互联网的设备的互连网络。出于解释的目的,图1中示出的网络环境100包括电子设备102-104和单个存储设备阵列108;然而,网络环境100可包括任何数量的电子设备和任何数量的存储设备阵列。
电子设备102可提供要存储在存储设备阵列108上的数据,并且/或者可请求要从存储设备阵列108检索的数据。电子设备102-104中的一者或多者可以是例如便携式计算设备,诸如膝上型计算机、智能电话、外围设备(例如,数字相机、耳机)、平板设备、可穿戴设备(诸如手表、带等),或者包括例如一个或多个无线接口的任何其他适当设备,诸如WLAN无线电设备、蜂窝无线电设备、蓝牙无线电设备、Zigbee无线电设备、近场通信(NFC)无线电设备和/或其他无线电设备。在图1中,以举例的方式,电子设备102被描绘为膝上型计算机,并且电子设备104被描绘为智能电话。电子设备102-104中的每一者可以是和/或可包括下文参考图7所述的电子系统的全部或部分。
存储设备阵列108包括控制器110,并且还可包括将数据存储为对象(例如,文件)和/或集群(例如,具有对象和奇偶校验数据)的多个存储设备。多个存储设备中的每个存储设备可对应于磁盘、实例、主机、机架或数据中心中的一者或多者。控制器110可实现用于管理对象和/或集群在存储设备阵列108的多个存储设备之间的放置的逻辑部件。存储设备阵列108、存储设备阵列108的多个存储设备,以及控制器110在下文中参考图2进一步讨论。
在存储设备阵列108内的其中一个存储设备发生故障时,存储设备阵列108可通过从存储设备阵列108内的其他存储设备访问副本对象和/或集群的剩余容器来恢复存储在故障存储设备上的对象。因此,即使存储设备阵列108内的特定存储设备发生故障,存储设备阵列108也可以在检测到存储设备发生故障时恢复数据。
图2示出了根据一个或多个具体实施的可实现分布式冗余存储的示例性存储设备阵列。然而,并非所有所描绘的部件均可在所有具体实施中使用,并且一个或多个具体实施可包括与图中所示的那些相比附加的或不同的部件。可进行这些部件的布置和类型的变化,而不脱离本文所列出的权利要求的实质或范围。可提供附加的部件、不同的部件或更少的部件。
存储设备阵列108可包括控制器110、存储器204和存储设备214a-214n。该控制器110可包括能够处理数据和/或控制存储设备阵列108的操作的合适逻辑部件、电路和/或代码。就这一点而言,控制器110可被使能以向存储设备阵列108的各种其他部件提供控制信号。控制器110还可控制存储设备阵列108的各部分之间的数据传输。另外,控制器110可使得能够实现操作系统或以其他方式执行代码以管理存储设备阵列108的操作。
存储器204可包括使得能够存储各种类型信息的适当逻辑部件、电路和/或代码,诸如所接收的数据、生成的数据、代码和/或配置信息。存储器204可包括例如随机存取存储器(RAM)、只读存储器(ROM)、闪存和/或磁性存储装置。
存储设备阵列108可包括具有合适逻辑部件、电路和/或代码的一个或多个通信接口,该合适逻辑部件、电路和/或代码实现有线或无线通信,诸如在电子设备102-104中的任何电子设备之间通过网络106进行通信。在一个或多个具体实施中,存储设备214a-214n中的每个存储设备可包括其自身的通信接口。通信接口可包括例如光纤通信接口、以太网通信接口、USB通信接口中的一种或多种,或一般地,任何通信接口。
控制器110包括一个或多个解码器212,诸如纠错码(ECC)解码器,以及一个或多个编码器210,诸如ECC编码器。一个或多个解码器212和一个或多个编码器210可以是控制器110的一个或多个专用电路,可以经由在控制器110上运行的固件来实现,和/或可以是与控制器110分开的一个或多个电路。
控制器110能够操作为从存储设备214a-214n读取数据并将数据写入存储设备214a-214n。该控制器还能够操作为识别或接收用于存储在存储设备214a-214n上的对象或集群。就对象(例如,数据文件)而言,对象可用于跨两个或更多个存储设备214a-214n以副本形式存储。就对象是集群的情况而言,集群可对应于用于跨存储设备214a-214n中的两者或更多者存储的一组数据容器(具有多个对象)和奇偶校验容器(具有用于对象的奇偶校验数据)。
如上所述,存储设备214a-214n中的每一者可对应于磁盘、实例、主机、机架或数据中心中的一者或多者。在一个或多个具体实施中,存储设备214a-214n可以各自包括一个或多个物理块,诸如NAND块和/或NOR块。该物理块可各自包括一个或多个物理页面。控制器110可利用存储器204(例如,RAM)来协助向/从存储设备214a-214n读取/写入数据。例如,存储器204可用作用于速率控制的缓冲器,或者可以其他方式用于存储信息(例如,错误计数、误块映射、变量、物理块状态、逻辑到物理地址映射表、耐久性/保留数据、设置等),该信息被控制器110用于向/从存储设备214a-214n读取/写入数据以及从存储设备214a-214n恢复数据。
控制器110可结合向存储设备214a-214n读取和/或写入数据来实现一种或多种算法或技术,诸如安全技术(例如,加密)、纠错编码技术(例如,低密度奇偶校验(LDPC))、压缩技术、冗余技术(例如,独立磁盘冗余阵列(RAID)技术)等。
控制器110还包括对象放置处理器208,该对象放置处理器实现一种或多种算法或技术用以跨存储设备214a-214n放置对象(例如,以副本形式)或集群(例如,具有数据容器和奇偶校验容器)。这样,数据分布在多个存储设备214a-214n上,并且因此在存储设备214a-214n中的一者或多者发生故障的情况下可以是可恢复的。在放置对象时,对象放置处理器208可实现如下文参考图3和图4A至图4D所述的一种或多种算法或技术。在放置集群时,对象放置处理器可实现如下文参考图5和图6A至图6B所述的一种或多种算法或技术。
对象放置处理器208对对象的分布使得可以以增加的吞吐量将传入写入的负载(例如,从电子设备102-104中的一个或多个电子设备)更均匀地分布到更多存储设备。此外,对象放置处理器208可有助于在用户(例如,电子设备102-104的用户)在放下操作之后立即或以其他方式不久之后获取数据或者在放下操作之后的特定时间范围内获取数据的场景下减少网络拥塞和/或处理时间。此类获取请求的定时,尤其是在处理大量用户的情况下,可能阻塞网络106,尤其是在数据对象未在存储设备214a-214n之间适当平衡的情况下。
此外,对象放置处理器208使得可以减少修复时间,从而降低系统的耐久性风险。就这一点而言,存储系统的耐久性通常可基于修复时间的上限来计算。因此,至关重要的是,修复时间具有减小的上限,并且通常具有较短的修复时间。在存储服务实现擦除编码的情况下,优选的是减少用于恢复的奇偶校验读取的数量。例如,应该并行地从多个存储设备(例如,磁盘)而不是顺序地从一个存储设备(例如,磁盘)读取奇偶校验读取。此外,缩短的修复时间可有利于修复期间的其他优化。例如,如果在给定时间段内仅有一个奇偶校验失败,则一种优化可以是等待附加的奇偶校验失败,因为如果多个奇偶校验失败并且可以并行读取,则修复可能更快。
常规的存储系统可通过选择具有最小可用空间的主机(例如,存储设备)并将对象或容器放置在主机上来平衡可用空间。可考虑以下场景,其中每个数据对象的两个副本被存储:
放置实施例1
存储设备A:1、2、3、4、5
存储设备B:1、2、3、4、5
存储设备C:6、7、8、9、10
存储设备D:6、7、8、9、10
在上述实施例中,可假设存储设备A、B、C和D具有相等的存储空间,并且对象1、2、3、4、5、6、7、8、9、10具有相等的大小。在该实施例中,存储设备A-D中的每一者具有不同对象的五个副本。在常规系统中,此类对象分布是有效的解决方案,因为所有存储设备都具有相等的可用空间。
然而,如果其中一个存储设备(例如,存储设备B)发生故障,则会出现问题。为了维护耐久性保证,每个对象应有两个副本。因此,应从另一个存储设备检索先前存储在存储设备B上的对象1、2、3、4、5的副本。由于存储设备B的所有这些副本都被放置在存储设备A上,因此将从存储设备A检索这些副本。如果从存储设备A读取副本花费一个时间单位,则检索先前存储在存储设备B上的所有对象将花费五个时间单位。具体地,可能无法从存储设备A并行地读取对象1-5。例如,如果存储设备A是主机,则存储设备A可能未将所有对象存储在单个磁盘上。此外,并行读取操作可能不利地影响系统性能并丧失诸如顺序读取的能力。
因此,本主题系统(例如,对象放置处理器208)提供了以增加并行读取数量的方式分布对象。例如,给定上述放置实施例1中的相同主机和对象,该对象放置处理器208可将副本跨存储设备A-D如下放置:
放置实施例2
存储设备A:1、3、5、7、9
存储设备B:1、4、6、7、10
存储设备C:2、3、6、8、9
存储设备D:2、4、5、8、10
在该实施例中,如果存储设备B发生故障,则存储在存储设备B上的对象的副本可被检索如下:来自存储设备A的副本1和7、来自存储设备D的副本4和10以及来自存储设备C的副本6。因此,来自不同存储设备的读取可并行地进行(例如,具有很少开销或没有开销)。在该实施例中,从任何一个存储节点读取最多两个副本,并且修复由于存储设备B发生故障而丢失的所有副本所花费的时间为2个时间单位。这是对上文花费5个时间单位的放置实施例1的改进。此外,如果缩放到具有大量可用空间的较大数量的存储设备,则该时间差变得更为显著。
在一个或多个具体实施中,对象放置处理器208、编码器210和解码器212中的一者或多者被实现为存储在存储器204中的软件指令,这些软件指令在由控制器110执行时使得控制器110执行一个或多个特定功能。在一个或多个具体实施中,对象放置处理器208、编码器210和解码器212中的一者或多者可在软件(例如,子例程和代码)和/或硬件(例如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、状态机、门控逻辑部件、分立硬件部件或任何其他合适的设备),和/或两者的组合中实现。
在一个或多个具体实施中,存储设备阵列108的所描绘的部件中的一些或全部部件可共享硬件和/或电路,和/或所描绘的部件中的一者或多者可利用专用硬件和/或电路。本公开中进一步描述了根据主题技术的各方面的这些模块的附加特征和功能。
图3示出了根据一个或多个具体实施的用于分布式冗余存储的示例性过程的流程图。出于解释的目的,本文主要参考图1至图2的存储设备阵列108、控制器110和对象放置处理器208来描述过程300。然而,过程300不限于存储设备阵列108、控制器110和/或对象放置处理器208,并且过程300的一个或多个框(或操作)可以由存储设备阵列108的一个或多个其他部件和/或由其他合适的设备来执行。进一步出于解释的目的,参考图4A至图4D描述过程300,图4A至图4D示出了根据一个或多个具体实施的具有用于分布式冗余存储的配对值的矩阵的示例。过程300不限于图4A至图4D的示例中所示的矩阵和配对。此外,过程300的框在本文中被描述为顺序地或线性地发生。然而,过程300的多个框可并行地发生。此外,过程300的框不必按所示顺序执行,并且/或者过程300的一个或多个框不必执行和/或可由其他操作替代。
在参考图3和图4A至图4D所述的示例中,对象放置处理器208可假设给定对象的所有副本具有相同大小。此外,对象放置处理器208可假设每个存储设备仅放置一个副本。参考图3,对象放置处理器208从多个存储设备之中识别先前存储在两个存储设备上的对象(302)。每个存储设备可对应于磁盘、实例、主机、机架或数据中心中的至少一者。
对象放置处理器208确定用于每对多个存储设备的配对值(304)。该配对值对应于该对存储设备共有的存储对象的数量。例如,如果存储设备A具有属于对象1、2、5、7、10的副本,并且存储设备B具有属于对象2、5、7、9、11的副本,则存储设备A和存储设备B共有的存储对象为2、5和7。因此,存储设备A和存储设备B之间的配对值为3。
因此,对于给定的一组存储设备(例如,在blob存储区中),对象放置处理器208计算针对所有存储设备(例如,在blob存储区中)的配对值的矩阵。图4A示出了存储设备214a、214b和214c之间的配对值的示例。如图4A所示,存储设备214a与存储设备214b具有配对值1,并且与存储设备214c具有配对值2。
如上所述,新的对象被识别用于以副本形式跨存储设备214a至214c放置。在一个或多个具体实施中,为了识别对象,对象放置处理器208可选择相对于所确定的配对值具有最高配对值的一对存储设备,然后选择对象作为该对存储设备共有的存储对象之一。因此,“新”对象可对应于已经以副本形式存储在存储设备214a-214c上的对象,但该对象应被移动以在存储设备发生故障的情况下优化修复时间。识别要从一个存储设备移动到另一个存储设备的新对象的过程可作为后台进程运行,诸如存储设备阵列108上的单独线程。在一个或多个具体实施中,对象放置处理器208可基于网络106上的用户通信量何时低于当前阈值(例如,基于当前网络使用率)或低于预测阈值(例如,基于根据使用历史预测网络使用率何时更低)来调度、暂停或以其他方式管理该后台进程的定时。
另选地或除此之外,用于跨存储设备A-C以副本形式放置的新对象可基于由存储设备阵列108从电子设备102-104中的一者或多者接收的新数据对象。因此,除了对先前存储的对象进行重新定位以实现优化恢复的后台进程之外,存储设备阵列108还可根据图3和图4A至图4D来放置从电子设备102-104接收的对象。
在放置对象时,对象放置处理器208基于所确定的配对值的矩阵来选择相对于所有所确定的配对值具有最小配对值的两个存储设备(306)。就图4A而言,存储设备214a与存储设备214b具有最小配对值1。因此,对象放置处理器208促成将对象移动(例如,结合控制器110)到两个存储设备214a和214b中的每一者(308)。在一个或多个具体实施中,对象放置处理器208可在对放置的实际调用之前预先计算新对象的可能放置,使得减少计算和存储。
对象放置处理器208可以使针对两个存储设备的配对值在存储配对值的矩阵内递增。例如,相对于图4A,图4B示出了存储设备214a和存储设备214b之间的配对值从1递增到2。此外,存储设备214a与自身之间的配对值(例如,对角线值)从3递增到4,并且存储设备214b与自身之间的配对值从4递增到5,以表示存储在这些设备中的每个设备上的新对象。
相对于图4B,如果第二新对象被识别用于跨存储设备214a-214c放置,则最小配对值在存储设备对214a与214b之间以及存储设备对214a与214c之间,因为每对存储设备均具有配对值2。在一个或多个具体实施中,对象放置处理器208可随机选择这两对存储设备中的一对存储设备,并且/或者对象放置处理器208可选择具有最小存储对象总数的对。在该示例中,对象放置处理器208选择存储设备对214a和214b。因此,如图4C所示,存储设备214a和存储设备214b之间的配对值从2递增到3。此外,存储设备214a与自身之间的配对值从4递增到5,并且存储设备214b与自身之间的配对值从5递增到6。
图4D示出了存储第三新对象的示例。在该示例中,最小配对值2在存储设备对214a和214c之间。因此,存储设备214a与存储设备214c之间的配对值从2递增到3,存储设备214a与自身之间的配对值从5递增到6,并且存储设备214c与自身之间的配对值从5增加到6。
如上所述,在存储设备214a-214c中的任一者上检测到故障的情况下,对象放置处理器208可从其他两个存储设备中的一个存储设备检索来自故障存储设备的对象的副本。对象放置处理器208可将所检索的对象副本存储在另一个存储设备上。
因此,过程300示出了其中对象的副本以分布式方式跨多个存储设备放置的示例。通过基于最小配对值来选择存储设备,可以在恢复对象时(例如,在存储设备发生故障的情况下)增加跨多个存储设备的并行读取的数量,而不是从单个存储设备顺序地读取。这可减少存储设备发生故障后的修复时间(例如,从而降低系统的耐久性风险),并同时在存储设备之间平衡可用空间量。此外,可以以增加的吞吐量将传入写入的负载更均匀地分布到更多存储设备。
图5示出了根据一个或多个具体实施的用于分布式冗余存储的另一示例性过程的流程图。出于解释的目的,本文主要参考图1至图2的存储设备阵列108以及图3的对应的控制器110和对象放置处理器208来描述过程500。然而,过程500不限于存储设备阵列108、控制器110和/或对象放置处理器208,并且过程500的一个或多个框(或操作)可以由存储设备阵列108的一个或多个其他部件和/或由其他合适的设备来执行。进一步出于解释的目的,参考图6A至图6B描述过程500,图6A至图6B示出了根据一个或多个具体实施的具有用于分布式冗余存储的配对值的矩阵的示例。过程500不限于图6A至图6B的示例中所示的矩阵和配对。进一步出于解释的目的,过程500的框在本文中被描述为顺序地或线性地发生。然而,过程500的多个框可并行发生。此外,过程500的框不必按所示顺序执行,并且/或者过程500的一个或多个框不必执行和/或可由其他操作替代。
如上所述,图3的过程300涉及跨多个存储设备放置副本。另一方面,过程500涉及跨多个存储设备放置集群,其中每个存储设备可对应于磁盘、实例、主机、机架或数据中心中的至少一者。在一个或多个具体实施中,集群对应于一组容器(例如,基于擦除编码程序)。集群中的该组容器包括存储一个或多个对象的数据容器,以及利用擦除编码程序存储奇偶校验数据以用于恢复那些一个或多个对象的奇偶校验容器。
过程500示出了使用(2,1)擦除编码的示例,例如,其中每个集群存在2个数据容器和1个奇偶校验容器。因此,该集群总共具有3个容器。如果存储设备214a-214d中的一个存储设备发生故障,从而使一个容器无法从该存储设备获得,则将需要存储设备阵列108从其他存储设备中获取其他两个容器以用于恢复。因此,参考图5,对象放置处理器208识别跨多个存储设备214a-214d中的三个存储设备存储的新集群(502)。该集群包括对应于数据对象的第一容器和第二容器以及对应于针对数据对象的奇偶校验数据的第三容器。
对象放置处理器208可计算所有存储设备214a-214d相对于集群的配对值(504)。在一个或多个具体实施中,该配对值可以在识别新集群(502)之前确定。相对于一对两个存储设备,该配对值对应于存储在该对上的属于相应共有集群的相应容器的数量。在图6A的示例中,存储设备214a和存储设备214b具有配对值3,这指示存储设备214a和214b中的每一者具有属于三个相应共有集群的三个容器。
在一个或多个具体实施中,为了识别集群(502),对象放置处理器208可选择相对于所确定的配对值具有最高配对值的存储设备,然后选择用于移动的相应集群。因此,“新”集群可以对应于已经存储在存储设备214a-214d上的集群的容器,但应对其进行移动以在存储设备发生故障的情况下优化修复时间。识别要在存储设备之间移动的新集群的过程可作为后台进程运行,诸如存储设备阵列108上的单独线程。在一个或多个具体实施中,对象放置处理器208可基于网络106上的用户通信量何时低于当前阈值(例如,基于当前网络使用率)或低于预测阈值(例如,基于根据使用历史预测网络使用率何时更低)来调度、暂停或以其他方式管理该后台进程的定时。
另选地或除此之外,用于跨存储设备214a-214d放置的新集群可基于由存储设备阵列108从电子设备102-104中的一个电子设备接收的新数据。因此,除了对先前存储的集群的容器进行重新定位以实现优化恢复的后台进程之外,存储设备阵列108还可根据图6和图6A至图6B的示例来放置从电子设备102-104接收的新集群。
对象放置处理器208基于所确定的配对值来选择存储设备中的相对于所确定的配对值具有最小配对值的第一存储设备和第二存储设备(506)。该对第一存储设备和第二存储设备还可基于相对于多个存储设备中的其他每对存储设备存储最少数量的容器来选择。
因此,在图6A的示例中,对象放置处理器208可确定存储设备对(214a,214d)、(214b,214c)、(214c,214d)和(214d,214a)中的每一者具有配对值3。因此,在一个或多个具体实施中,对象放置处理器208可基于图6A的矩阵中的对角线条目来执行二次检查,并且选择具有最少数量的容器的存储设备对。因此,即使存储设备对(214a,214d)、(214b,214c)、(214c,214d)和(214d,214a)具有相同的最小配对值3,对象放置处理器208也可选择存储设备对(214d,214a),因为该存储设备对具有最少数量的容器。因此,对象放置处理器208可确定集群中的(三个容器中的)第一容器和第二容器分别存储在存储设备214d(“第一存储设备”)和存储设备214a(“第二存储设备”)上。
相对于集群中的剩余的第三容器,对象放置处理器208可选择多个存储设备中的第三存储设备(508)。该选择可以基于第一存储设备(例如,存储设备214d)和第三存储设备(存储设备214b或214c中的一者)对的配对值与第二存储设备(例如,存储设备214a)和第三存储设备(存储设备214b或214c中的一者)对的配对值的总和(例如,最小总和)。例如,该总和可计算如下:
存储设备214b的总和=存储设备配对(214b,214a)+存储设备配对(214b,214d)=3+2=5
存储设备214c的总和=存储设备配对(214c,214a)+存储设备配对(214c,214d)=3+2=5
在上述示例中,存储设备214b和214c两者具有相同的存储设备配对总和。作为附加检查,服务器可选择具有最小容器总数(例如,从图6A的矩阵中的对角线)的存储设备214b和214c。在这种情况下,存储设备214b和214c上的容器的总数仍然相同(例如,6个容器)。在这个阶段,对象放置处理器208可以随机选择存储设备214b而非存储设备214c作为第三容器。
因此,在过程步骤510处,对象放置处理器208将第一容器、第二容器和第三容器移动(例如,结合控制器110)到第一存储设备(存储设备214d)、第二存储设备(214a)和第三存储设备(存储设备214b)中的相应存储设备。在一个或多个具体实施中,对象放置处理器208可在对实际放置的实际调用之前预先计算新集群的可能放置,使得减少计算和存储。
对象放置处理器208可使针对第一设备、第二设备和第三设备的配对值在存储配对值(例如,作为存储在存储器204中的矩阵)的数据结构内递增。基于第一容器、第二容器和第三容器的大小相等,可使针对第一设备、第二设备和第三设备中的每一者的配对值递增一。因此,如图6B的示例所示,存储设备214a与214b之间的配对值从3递增到4,存储设备214a与214d之间的配对值从2递增到3,并且存储设备214b与214d之间的配对值从2递增到3。此外,存储设备214a与自身之间的配对值从8递增到10,存储设备214b与自身之间的配对值从7递增到9,并且存储设备214d与自身之间的配对值从6递增到8。
在一个或多个具体实施中,第一容器、第二容器和第三容器的大小可以不相等。例如,即使存储在容器内的对象可被假定为具有相同的大小,容器也可容纳不同数量的对象。具有不同大小的容器的一个问题在于,即使如上所述使容器的放置平衡,可用空间也可能不平衡。因此,对象放置处理器208可以基于第一容器、第二容器和第三容器中的最小尺寸来递增针对第一设备、第二设备和第三设备中的每一者的配对值,而不是简单地按固定量递增。
换句话讲,在放置容器时,对象放置处理器208可使针对相应存储设备的计数递增集群内最小尺寸容器的大小,而不是使该计数递增1。通过以这种方式递增计数,如果大容器被放置,则针对适当的一对或多对存储设备的配对值增加。因此,如果要放置新容器,则直到针对其他存储设备的配对值赶上才选择那些存储设备用以放置。
例如,可将具有大小为10、20、30字节的容器的集群放置在节点1、2、3上,如下所示:
如果节点1基于擦除编码发生故障,则仅需要从节点2和3上的容器读取前10字节,因为容器大小为10字节。因此,节点1与节点2和节点3的配对为10。
类似地,如果节点2发生故障,考虑到节点1上的容器大小为10,则最多只能从节点1读取10字节。因此,节点2与节点1之间的配对仍然为10。此外,考虑到节点2上的容器的大小为20,仅需要从节点3上的容器读取前20字节,因此配对为20。
在一个或多个具体实施中,存储设备阵列108还可检测第一存储设备、第二存储设备或第三存储设备中的一个存储设备的故障,该发生故障的存储设备存储第一容器、第二容器或第三容器中的一者。响应于该检测,存储设备阵列108可以从相应的第一存储设备、第二存储设备或第三存储设备中检索第一容器、第二容器或第三容器中的其他两个容器,并恢复存储在发生故障的存储设备上的容器中的数据。然后,存储设备阵列108可将恢复的容器存储在另一个存储设备上。
因此,过程500示出了其中集群以分布式方式跨多个存储设备放置的示例。通过基于最小配对值来选择存储设备,可以在恢复容器时(例如,在存储设备发生故障的情况下)增加跨多个存储设备的并行读取的数量,而不是从单个存储设备顺序地读取。这可减少存储设备发生故障后的修复时间(例如,从而降低系统的耐久性风险),并同时在存储设备之间平衡可用空间量。此外,可以以增加的吞吐量将传入写入的负载更均匀地分布到更多存储设备。
图7示出了可以利用其来实现本主题技术的一个或多个具体实施的电子系统700。电子系统700可以是电子设备102-104或具有控制器110的存储设备阵列108中的一者或多者,以及/或者可以是其一部分。电子系统700可包括各种类型的计算机可读介质以及用于各种其他类型的计算机可读介质的接口。电子系统700包括总线708、一个或多个处理单元712、系统存储器704(和/或缓存)、ROM 710、永久性存储设备702、输入设备接口714、输出设备接口706以及一个或多个网络接口716,或其子集及变体形式。
总线708总体表示通信地连接电子系统700的许多内部设备的所有系统总线、外围设备总线和芯片组总线。在一个或多个具体实施中,总线708将一个或多个处理单元712与ROM 710、系统存储器704和永久性存储设备702通信地连接。一个或多个处理单元712从这些各种存储器单元检索要执行的指令和要处理的数据,以便执行本主题公开的过程。在不同的具体实施中,一个或多个处理单元712可为单个处理器或者多核处理器。
ROM 710存储一个或多个处理单元712以及电子系统700的其他模块所需的静态数据和指令。另一方面,永久性存储设备702可为读写存储器设备。永久性存储设备702可为即使在电子系统700关闭时也存储指令和数据的非易失性存储器单元。在一个或多个具体实施中,海量存储设备(诸如,磁盘或光盘及其相应盘驱动器)可被用作永久性存储设备702。
在一个或多个具体实施中,可移除存储设备(诸如软盘、闪存驱动器及其对应的磁盘驱动器)可以用作永久性存储设备702。与永久性存储设备702一样,系统存储器704可为读写存储器设备。然而,与永久性存储设备702不同,系统存储器704可为易失性读写存储器,诸如随机存取存储器。系统存储器704可存储一个或多个处理单元712在运行时可能需要的指令和数据中的任何指令和数据。在一个或多个具体实施中,本主题公开的过程被存储在系统存储器704、永久性存储设备702和/或ROM 710中。一个或多个处理单元712从这些各种存储器单元检索要执行的指令和要处理的数据,以便执行一个或多个具体实施的过程。
总线708还连接至输入设备接口714和输出设备接口706。输入设备接口714使得用户能够向电子系统700传送信息以及选择命令。可与输入设备接口714一起使用的输入设备可包括例如字母数字混合键盘和指向设备(也称为“光标控制设备”)。输出设备接口706可例如使得能够显示电子系统700所生成的图像。可与输出设备接口706一起使用的输出设备可包括例如打印机和显示设备,诸如液晶显示器(LCD)、发光二极管(LED)显示器、有机发光二极管(OLED)显示器、柔性显示器、平板显示器、固态显示器、投影仪或用于输出信息的任何其他设备。一个或多个具体实施可包括既充当输入设备又充当输出设备的设备,诸如触摸屏。在这些具体实施中,提供给用户的反馈可以是任何形式的感官反馈,诸如视觉反馈、听觉反馈或触觉反馈;并且可以任何形式接收来自用户的输入,包括声学、语音或触觉输入。
最后,如图7所示,总线708还通过一个或多个网络接口716将电子系统700耦接到一个或多个网络和/或耦接到一个或多个网络节点,诸如图1所示的电子设备102。以此方式,电子系统700可为计算机网络(诸如LAN、广域网(“WAN”)或内联网)的一部分,或者可为网络的网络(诸如互联网)的一部分。电子系统700的任何或所有部件可与本主题公开一起使用。
可以利用编写有一个或多个指令的有形计算机可读存储介质(或一种或多种类型的多个有形计算机可读存储介质)部分地或全部地实现本公开范围之内的具体实施。有形计算机可读存储介质实质上也可以是非暂态的。
计算机可读存储介质可以是任何可以由通用或专用计算设备读、写或以其他方式访问的存储介质,包括任何能够执行指令的处理电子器件和/或处理电路。例如,非限制地,计算机可读介质可包括任何易失性半导体存储器,诸如RAM、DRAM、SRAM、T-RAM、Z-RAM和TTRAM。计算机可读介质也可包括任何非易失性半导体存储器,诸如ROM、PROM、EPROM、EEPROM、NVRAM、闪存、nvSRAM、FeRAM、FeTRAM、MRAM、PRAM、CBRAM、SONOS、RRAM、NRAM、赛道存储器、FJG和Millipede存储器。
此外,计算机可读存储介质可包括任何非半导体存储器,诸如光盘存储装置、磁盘存储装置、磁带、其他磁性存储设备或者能够存储一个或多个指令的任何其他介质。在一个或多个具体实施中,有形计算机可读存储介质可直接耦接到计算设备,而在其他具体实施中,有形计算机可读存储介质可例如经由一个或多个有线连接、一个或多个无线连接、或它们的任意组合而间接地耦接到计算设备。
指令可以是直接能执行的,或者可用于开发可执行指令。例如,指令可被实现为可执行的或不可执行的机器代码,或者可被实现为可被编译以产生可执行的或不可执行的机器代码的高级语言指令。此外,指令也可被实现为数据,或者可包括数据。计算机可执行指令也可以任何格式组织,包括例程、子例程、程序、数据结构、对象、模块、应用、小程序、函数等。如本领域技术人员认识到的那样,包括但不限于指令的数量、结构、序列和组织的细节可明显不同,而不改变底层的逻辑、功能、处理和输出。
虽然以上论述主要涉及执行软件的微处理器或多核处理器,但一个或多个具体实施由一个或多个集成电路诸如ASIC或FPGA执行。在一个或多个具体实施中,此类集成电路执行存储在电路自身上的指令。
本领域的技术人员将会认识到,本文所述的各种例示性的框、模块、元件、部件、方法和算法可被实现为电子硬件、计算机软件或两者的组合。为了说明硬件和软件的这种可互换性,上文已经一般性地按照功能性对各种例示性的框、模块、元件、部件、方法和算法进行了描述。此类功能性是被实现为硬件还是软件取决于具体应用以及对整个系统施加的设计约束。技术人员对于每个具体应用可通过不同方式实现所描述的功能性。各种部件和框可被不同地布置(例如,以不同的顺序排列,或以不同的方式划分),而不脱离本主题技术的范围。
应当理解,本发明所公开的过程中的框的特定顺序或分级结构为示例性方法的例示。基于设计优选要求,应当理解,过程中的框的特定顺序或者分级结构可被重新布置或者所有示出的框都被执行。这些框中的任何框可被同时执行。在一个或多个具体实施中,多任务和并行处理可能是有利的。此外,上述具体实施中各个系统部件的划分不应被理解为在所有具体实施中都要求此类划分,并且应当理解,程序部件和系统可一般性地被一起整合在单个软件产品中或者封装到多个软件产品中。
如本说明书以及本专利申请的任何权利要求中所用,术语“基站”、“接收器”、“计算机”、“服务器”、“处理器”及“存储器”均是指电子设备或其他技术设备。这些术语排除人或者人的群组。出于本说明书的目的,术语“显示”或“正在显示”意指在电子设备上显示。
如本文所用,在用术语“和”或“或”分开项目中任何项目的一系列项目之后的短语“中的至少一者”是将列表作为整体进行修饰,而不是修饰列表中的每个成员(即每个项目)。短语“中的至少一者”不要求选择所列出的每个项目中的至少一个;相反,该短语允许包括任何一个项目中的至少一个和/或项目的任何组合中的至少一个和/或每个项目中的至少一个的含义。举例来说,短语“A、B和C中的至少一者”或“A、B或C中的至少一者”各自是指仅A、仅B或仅C;A、B和C的任意组合;和/或A、B和C中的每一个中的至少一个。
谓词字词“被配置为”、“能够操作以”以及“被编程以”并不意味着对某一主题进行任何特定的有形或无形的修改而是旨在可互换使用。在一个或多个具体实施中,被配置为监视和控制操作或部件的处理器也可以是意指处理器被编程以监视和控制操作或者处理器可操作以监视和控制操作。同样,被配置为执行代码的处理器可解释为被编程以执行代码或能够操作以执行代码的处理器。
短语诸如方面、该方面、另一方面、一些方面、一个或多个方面、具体实施、该具体实施、另一具体实施、一些具体实施、一个或多个具体实施、实施方案、该实施方案、另一实施方案、一些实施方案、一个或多个实施方案、配置、该配置、其他配置、一些配置、一种或多种配置、主题技术、公开、本公开、它们的其他变型等等都是为了方便,并不意味着涉及这样的一个或多个短语的公开对于主题技术是必不可少的,也不意味着这种公开适用于主题技术的所有配置。涉及此类一个或多个短语的公开可适用于所有配置或一个或多个配置。涉及此类一个或多个短语的公开可提供一个或多个示例。短语诸如方面或一些方面可指代一个或多个方面,反之亦然,并且这与其他前述短语类似地应用。
字词“示例性”在本文中被用于意指“用作示例、实例或者例示”。在本文中被描述为“示例性的”或作为“示例”的任何实施方案不必被理解为优选于或优于其他具体实施。此外,在术语“包括”、“具有”等在说明书或权利要求中使用的限度内,这样的术语旨在是包含性的,与术语“包括”当在权利要求中被用作过渡字词时“包括”被解释的方式类似。
本领域的普通技术人员已知或稍后悉知的贯穿本公开描述的各个方面的元素的所有结构和功能等同物通过引用明确地并入本文,并且旨在被权利要求书所涵盖。此外,本文所公开的任何内容并非旨在提供给公众,而与该公开是否明确地被陈述在权利要求中无关。根据35U.S.C.§112第六段的规定,不需要解释任何权利要求元素,除非使用短语“用于……的装置”明确陈述了该元素,或者就方法权利要求而言,使用短语“用于……的步骤”陈述了该元素。
先前的描述被提供以使得本领域的技术人员能够实践本文所述的各个方面。这些方面的各种修改对本领域的技术人员而言是显而易见的,并且本文所限定的通用原则可应用于其他方面。因此,本权利要求书并非旨在受限于本文所示的方面,而是旨在使得全部范围与语言权利要求书一致,其中对奇异值中的元素的引用并非旨在意味着“仅仅一个”,而是指“一个或多个”,除非被具体指出。除非另外特别说明,否则术语“一些”是指一个或多个。男性的代名词(例如,他的)包括女性和中性(例如,她的和它的),并且反之亦然。标题和子标题(如果有的话)仅为了方便起见而使用并且不限制本主题公开。

Claims (20)

1.一种用于对象放置的方法,所述方法包括:
识别存储在多个存储设备中的两个存储设备上的对象;
确定针对所述多个存储设备中的每对存储设备的配对值,所述配对值对应于所述对存储设备共有的存储对象的数量;
基于所确定的配对值,选择相对于所确定的配对值具有最小配对值的两个存储设备;以及
将所述对象移动到所选择的两个存储设备中的每个存储设备。
2.根据权利要求1所述的方法,还包括:
检测所选择的两个存储设备中的第一存储设备的故障;
响应于所述检测,从所选择的两个存储设备中的第二存储设备检索所述对象的副本;以及
将所述对象的所检索到的副本存储在所述多个存储设备中的第三存储设备上。
3.根据权利要求1所述的方法,所述方法还包括:
使针对所选择的两个存储设备的所述配对值在存储所述配对值的数据结构内递增。
4.根据权利要求1所述的方法,其中识别所述对象包括:
选择相对于所确定的配对值具有最高配对值的一对存储设备;以及
选择所述对象作为所述对存储设备共有的所述存储对象中的一个存储对象。
5.根据权利要求1所述的方法,其中所述多个存储设备中的每个存储设备对应于磁盘、实例、主机、机架或数据中心中的至少一者。
6.一种用于对象放置的设备,所述设备包括:
至少一个处理器;和
存储器,所述存储器包括指令,所述指令当由所述至少一个处理器执行时,使所述至少一个处理器:
识别跨多个存储设备中的三个存储设备存储的集群,所述集群包括对应于数据对象的第一容器和第二容器以及对应于针对所述数据对象的奇偶校验数据的第三容器;
确定针对所述多个存储设备中的每对存储设备的配对值,其中所述配对值基于存储在所述对存储设备上的属于相应共有集群的相应容器的数量;
基于所确定的配对值,选择所述多个存储设备中相对于所确定的配对值具有最小配对值的第一存储设备和第二存储设备;
基于针对所述第一存储设备和第三存储设备的对的配对值与针对所述第二存储设备和所述第三存储设备的对的配对值的总和,选择所述多个存储设备中的所述第三存储设备;以及
将所述第一容器、所述第二容器和所述第三容器移动到所述第一存储设备、所述第二存储设备和所述第三存储设备中的相应存储设备。
7.根据权利要求6所述的设备,其中所述第一存储设备和所述第二存储设备的所述对还存储相对于所述多个存储设备中的其他每对存储设备的最小数量的容器。
8.根据权利要求6所述的设备,其中所述第三存储设备是基于具有针对所述第一存储设备和所述第三存储设备的所述对的所述配对值与针对所述第二存储设备和所述第三存储设备的所述对的所述配对值的最小总和,而从所述多个存储设备中选择的。
9.根据权利要求6所述的设备,其中所述多个存储设备中的每个存储设备对应于磁盘、实例、主机、机架或数据中心中的至少一者。
10.根据权利要求6所述的设备,其中所述指令进一步使得所述至少一个处理器:
检测所述第一存储设备、所述第二存储设备或所述第三存储设备中的一个存储设备的故障,所检测到的发生故障的存储设备存储所述第一容器、所述第二容器或所述第三容器中的一个容器;
响应于所述检测,从相应的所述第一存储设备、所述第二存储设备或所述第三存储设备检索所述第一容器、所述第二容器或所述第三容器中的其他两个容器;
基于所述第一容器、所述第二容器或所述第三容器中的所检索到的其他两个容器来恢复所述第一容器、所述第二容器或所述第三容器中的一个容器;以及
将所恢复的容器存储在所述多个存储设备中的第四存储设备上。
11.根据权利要求6所述的设备,其中所述指令进一步使所述至少一个处理器:
使针对所述第一存储设备、所述第二存储设备、所述第三存储设备的所述配对值在存储所述配对值的数据结构内递增。
12.根据权利要求11所述的设备,其中针对所述第一存储设备、所述第二存储设备和所述第三存储设备中的每一者的所述配对值基于所述第一容器、所述第二容器和所述第三容器的大小相等而递增一。
13.根据权利要求11所述的设备,其中所述第一容器、所述第二容器和所述第三容器的大小不相等,并且其中针对所述第一存储设备、所述第二存储设备和所述第三存储设备中的每一者的所述配对值基于所述第一容器、所述第二容器和所述第三容器中的最小尺寸而递增。
14.一种计算机可读存储介质,包括存储在所述计算机可读存储介质上的计算机程序产品,所述计算机程序产品包括代码,所述代码包括:
用于识别跨多个存储设备中的至少三个存储设备存储的集群的代码,所述集群包括对应于数据对象的至少第一容器和第二容器以及对应于针对所述数据对象的奇偶校验数据的至少第三容器;
用于确定针对所述多个存储设备中的每对存储设备的配对值的代码,其中所述配对值基于存储在所述对存储设备上的属于相应共有集群的相应容器的数量;
用于基于所确定的配对值来选择所述多个存储设备中相对于所确定的配对值具有最小配对值的至少第一存储设备和第二存储设备的代码;
用于基于针对至少所述第一存储设备和第三存储设备的对的配对值与针对至少所述第二存储设备和所述第三存储设备的对的配对值的总和来选择所述多个存储设备中的至少所述第三存储设备的代码;
用于将至少所述第一容器、所述第二容器和所述第三容器移动到至少所述第一存储设备、所述第二存储设备和所述第三存储设备中的相应存储设备的代码;
用于检测至少所述第一存储设备、所述第二存储设备或所述第三存储设备中的一个存储设备的故障的代码,所检测到的发生故障的存储设备存储至少所述第一容器、所述第二容器或所述第三容器中的一个容器;
用于响应于所述检测而从相应的至少所述第一存储设备、所述第二存储设备或所述第三存储设备检索至少所述第一容器、所述第二容器或所述第三容器中的其他容器的代码;
用于基于至少所述第一容器、所述第二容器或所述第三容器中的所检索到的其他容器来恢复至少所述第一容器、所述第二容器或所述第三容器中的所述一个容器的代码;以及
用于将所恢复的容器存储在所述多个存储设备中的至少第四存储设备上的代码。
15.根据权利要求14所述的计算机可读存储介质,其中至少所述第一存储设备和所述第二存储设备的所述对还存储相对于所述多个存储设备中的其他每对存储设备的最小数量的容器。
16.根据权利要求14所述的计算机可读存储介质,其中至少所述第三存储设备是基于具有针对至少所述第一存储设备和所述第三存储设备的所述对的所述配对值与针对至少所述第二存储设备和所述第三存储设备的所述对的所述配对值的最小总和而从所述多个存储设备中选择的。
17.根据权利要求14所述的计算机可读存储介质,其中所述多个存储设备中的每个存储设备对应于磁盘、实例、主机、机架或数据中心中的至少一者。
18.根据权利要求14所述的计算机可读存储介质,所述代码还包括:
用于使针对至少所述第一存储设备、所述第二存储设备、所述第三存储设备的所述配对值在存储所述配对值的数据结构内递增的代码。
19.根据权利要求18所述的计算机可读存储介质,其中针对至少所述第一存储设备、所述第二存储设备和所述第三存储设备中的每一者的所述配对值基于至少所述第一容器、所述第二容器和所述第三容器的大小相等而递增一。
20.根据权利要求18所述的计算机可读存储介质,其中至少所述第一容器、所述第二容器和所述第三容器的大小不相等,并且其中针对至少所述第一存储设备、所述第二存储设备和所述第三存储设备中的每一者的所述配对值基于至少所述第一容器、所述第二容器和所述第三容器中的最小尺寸而递增。
CN201980008647.XA 2018-01-24 2019-01-08 分布式冗余存储系统 Active CN111615686B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862621237P 2018-01-24 2018-01-24
US62/621,237 2018-01-24
US16/147,462 US10901867B2 (en) 2018-01-24 2018-09-28 Distributed redundant storage system
US16/147,462 2018-09-28
PCT/US2019/012763 WO2019147411A1 (en) 2018-01-24 2019-01-08 Distributed redundant storage system

Publications (2)

Publication Number Publication Date
CN111615686A CN111615686A (zh) 2020-09-01
CN111615686B true CN111615686B (zh) 2023-12-15

Family

ID=67299348

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980008647.XA Active CN111615686B (zh) 2018-01-24 2019-01-08 分布式冗余存储系统

Country Status (3)

Country Link
US (1) US10901867B2 (zh)
CN (1) CN111615686B (zh)
WO (1) WO2019147411A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11989088B2 (en) 2022-08-30 2024-05-21 Micron Technology, Inc. Read data path
US20240070024A1 (en) * 2022-08-30 2024-02-29 Micron Technology, Inc. Read Data Path for a Memory System

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104094236A (zh) * 2012-04-02 2014-10-08 国际商业机器公司 防止数据丢失的系统和方法
CN104683422A (zh) * 2013-12-03 2015-06-03 腾讯科技(深圳)有限公司 数据传输方法及装置
CN105051700A (zh) * 2013-03-14 2015-11-11 苹果公司 基于可用存储器空间选择冗余存储配置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0612015A1 (en) * 1993-02-16 1994-08-24 International Business Machines Corporation Improved disk array system having special parity groups for data blocks with high update activity
JP4426262B2 (ja) * 2003-11-26 2010-03-03 株式会社日立製作所 ディスクアレイ装置及びディスクアレイ装置の障害回避方法
US7234074B2 (en) * 2003-12-17 2007-06-19 International Business Machines Corporation Multiple disk data storage system for reducing power consumption
US7650341B1 (en) * 2005-12-23 2010-01-19 Hewlett-Packard Development Company, L.P. Data backup/recovery
US8423604B2 (en) * 2008-08-29 2013-04-16 R. Brent Johnson Secure virtual tape management system with balanced storage and multi-mirror options
US8838889B2 (en) * 2010-01-19 2014-09-16 Infinidat Ltd. Method of allocating raid group members in a mass storage system
US8849825B1 (en) * 2010-12-23 2014-09-30 Amazon Technologies, Inc. System and method for clustering distributed hash table entries
US8732518B2 (en) * 2011-04-13 2014-05-20 Netapp, Inc. Reliability based data allocation and recovery in a storage system
US8799705B2 (en) * 2012-01-04 2014-08-05 Emc Corporation Data protection in a random access disk array
US9081753B2 (en) * 2013-03-14 2015-07-14 Microsoft Technology Licensing, Llc Virtual disk recovery and redistribution
US9740402B2 (en) * 2014-03-28 2017-08-22 Vmware, Inc. Migrating workloads across host computing systems based on remote cache content usage characteristics
US9417968B2 (en) * 2014-09-22 2016-08-16 Commvault Systems, Inc. Efficiently restoring execution of a backed up virtual machine based on coordination with virtual-machine-file-relocation operations
US9652333B1 (en) * 2014-09-30 2017-05-16 EMC IP Holding Company LLC Maintaining stored data consistency of a plurality of related virtual machines across a plurality of sites during migration
US10083062B2 (en) * 2015-07-31 2018-09-25 Cisco Technology, Inc. Data suppression for faster migration
US9940154B2 (en) * 2015-10-15 2018-04-10 Netapp, Inc. Storage virtual machine relocation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104094236A (zh) * 2012-04-02 2014-10-08 国际商业机器公司 防止数据丢失的系统和方法
CN105051700A (zh) * 2013-03-14 2015-11-11 苹果公司 基于可用存储器空间选择冗余存储配置
CN104683422A (zh) * 2013-12-03 2015-06-03 腾讯科技(深圳)有限公司 数据传输方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
对象存储系统的镜像快速复制研究;祝晓东等;《计算机工程与设计》;20110716(第07期);2365-2369 *

Also Published As

Publication number Publication date
US20190227892A1 (en) 2019-07-25
WO2019147411A1 (en) 2019-08-01
CN111615686A (zh) 2020-09-01
US10901867B2 (en) 2021-01-26

Similar Documents

Publication Publication Date Title
US10055145B1 (en) System and method for load balancing with XOR star and XOR chain
US10540102B2 (en) Physical media aware spacially coupled journaling and replay
EP2937774B1 (en) Storage controller, storage system and method of operating storage controller
US11379151B2 (en) Flow control of large sequential host read commands based on a queue threshold
US8850288B1 (en) Throughput-sensitive redundancy encoding schemes for data storage
US9037921B1 (en) Variable drive health determination and data placement
CN105637490B (zh) 用于在闪速存储器装置之间迁移数据的方法和系统
US9727244B2 (en) Expanding effective storage capacity of a data storage system while providing support for address mapping recovery
US11068366B2 (en) Power fail handling using stop commands
US10489289B1 (en) Physical media aware spacially coupled journaling and trim
WO2017112229A1 (en) Predictive memory maintenance
CN111615686B (zh) 分布式冗余存储系统
JP2003131954A5 (zh)
US20170300393A1 (en) Raid rebuild algorithm with low i/o impact
US9715351B2 (en) Copy-offload on a device stack
US8914578B2 (en) Capacity-expansion of a logical volume
TW201721422A (zh) 資料儲存裝置及其操作方法
WO2013089715A1 (en) Storage of codeword portions
KR20180013284A (ko) 스토리지 장치, 이를 포함하는 시스템 및 그 동작 방법
US8972799B1 (en) Variable drive diagnostics
JP2014096072A (ja) ミラー構成を有するディスクアレイ及びそのリビルド方法
KR20160033519A (ko) 라이트 명령들에 대한 로그를 생성할 수 있는 데이터 저장 장치의 작동 방법과 이를 포함하는 raid 시스템의 작동 방법
CN104011689A (zh) 非易失性存储器损耗管理
CN112612639A (zh) 操作存储器系统的方法、操作主机的方法和计算系统
WO2020028818A1 (en) Fast non-volatile storage device recovery techniques

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