CN105940396A - 分布式存储系统中对象的层级组块 - Google Patents
分布式存储系统中对象的层级组块 Download PDFInfo
- Publication number
- CN105940396A CN105940396A CN201480074231.5A CN201480074231A CN105940396A CN 105940396 A CN105940396 A CN 105940396A CN 201480074231 A CN201480074231 A CN 201480074231A CN 105940396 A CN105940396 A CN 105940396A
- Authority
- CN
- China
- Prior art keywords
- chunk
- daily record
- piecemeal
- stored
- metadata
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2291—User-Defined Types; Storage management thereof
-
- 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/0614—Improving the reliability of storage systems
-
- 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/065—Replication mechanisms
-
- 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]
Abstract
对象复制本在分布式存储系统中的放置包括在第一实例处打开日志以存储对象组块。每个日志与单一放置策略相关联。接收包括组块的对象。该对象具有放置策略,并且该组块包括多个存储分块。所述分块被存储在与放置策略相匹配的日志中。存储该对象的全局元数据,其包括该对象的组块的列表。存储该组块的本地元数据,其包括识别多个分块中的每个分块的分块列表。该本地元数据与该日志相关联。该日志随后被关闭。该日志随后根据放置策略而被复制至第二实例。该全局元数据被更新以反映该复制,而该本地元数据则并不被该复制所改变。
Description
技术领域
所公开的实施方式总体上涉及分布式存储系统,尤其涉及将对象划分为组块(chunk)并且以层级方式对组块进行存储。
背景技术
大规模数据储存器已经从集中服务架构变迁为分布式存储系统。由商品计算机所构建的分布式存储系统与整体磁盘整列相比能够以部分成本而交付高性能、高可用性和高可扩展性。数据跨位于不同地理位置的分布式存储系统的多个实例进行复制,从而提高了可用性并且降低了距客户端的网络距离。
在分布式存储系统中,对象基于约束而在被动态放置在分布式存储系统的各个实例中(即,在其中创建,从其中删除和/或被移动至那里)。存在几种用于将受到约束的对象有效放置在全球范围的分布式存储系统中的现有方法,上述分布式存储系统存储数以万亿计的对象以及千万亿的数据,并且包括遍布全球的数十个数据中心。
新的视觉化、多媒体和其它数据密集型应用使用非常大的对象,其可以是数百G字节或者更大。管理这样的非常庞大的对象对于分布式存储系统带来了额外的复杂度。首先,将这样的对象上传到分布式存储系统中通常是以流传输的模式进行,将对象划分为组块并且单独写入每个组块。这会对上传施加以长的延迟,而延迟又会由于潜在的客户端和服务器故障而被恶化。此外,组块可以为了更好的操作效率而被汇总为更大的分片(shard)。术语“分片”和“日志”在这里可以互换使用。结果,大型对象的高效上传对于被允许客户端每次立连接至任意可用集群的大规模系统的需求所驱动的存储行业而言变得越来越重要。此外,单个对象的元数据的量(例如,对于100Gb的文件而言为25000个组块,其中每个组块为4Mb)使复制和压缩不太有效。
发明内容
所公开的实施方式将大型对象的上传同时分布至多个存储位置。如这里所使用的,存储位置被称作“分片”、“汇总分片”或“日志”。该方案通过将大型对象划分为多个组块来实施,每个组块被上传至不同的存储集群(所述存储集群可以处于不同的地理位置)。如果分片在上传期间变为不可用(例如,由于分片“变满”或者分片所存储的实例发生故障),则客户端切换至处于不同集群之中的新的分片。该方案并不要求在开始之后保持在相同的分片。最终形成的对象由组块引用的有序列表来表示。
在一些方案中,组块是存储的基本单位,并且每个组块的位置被存储在全局元数据中。针对非常大的对象而言,该方案导致对于单个对象以全局级别存储了相当数量的元数据。因此,一些实施方式使用层级组块方案,这减少了针对每个对象所存储的全局元数据的量。在层级实施方式中,术语“组块”被用来识别最高级别的划分,其具有以全局级别所存储的相对应元数据。在这些实施方式中,术语“分块(block)”被用来识别实际存储的基本单位(例如,2Mb或8Mb)。分块针对每个分片在本地进行管理。在非层级系统中,单个术语“组块”可以被用来识别这两种概念,因为存储的基本单位就是针对其存储全局元数据的基本单位。
层级组块能够以多种方式来实施。在一些实施方式中,即使在仅存在一个分块的情况下每个组块也包括分块列表。在这些实施方式中,始终存在附加的层级级别以用于查找与组块相对应的数据。其它实施方式使用混合方案,使得仅在大型组块需要时才存在层级。在这样的混合实施方式中,小的对象可以包括单个组块,单个组块与单个分块相对应。另一方面,对于更大的对象,每个组块是分块的列表。
所公开的层级方案减少了全局元数据的量,这降低了管理对象或者将对象从一个存储集群移动至另一个的成本。反之对象组块在全局级别进行管理,组块内的分块则在本地分片级别进行管理,使得对象元数据通常仅包含每分片一个组块引用。
在一些实施方式中,上传处理遵循这些步骤:(1)找出用于上传的可用分片;(2)将数据写入当前分片直至该分片不可用(例如,变满)或者不存在更多数据;(3)向组块的有序列表添加当前组块引用;(4)如果对象上传完成,则最终形成该对象;否则(5)针对剩余的该对象在步骤(1)开始进行重复。
在一些实施方式中,从存储读取对象遵循这些步骤:(1)针对所期望的对象找出组块引用的集合(始终至少存在一个);(2)基于该组块引用找出分片的位置;(3)使用组块标识符和本地分片元数据从(一个或多个)分片位置读取数据;(4)针对每个组块引用重复步骤2和3。
例如,假设通过将数据写入到分片1而开始对象上传,并且在分片1变满时切换至分片2。(两个分片—分片1和分片2—可以处于相同或不同的实例)。对象元数据(其是全局的)由两个组块引用所组成,而每个分片针对每个组块管理分片的本地列表。例如,每个分片能够针对该对象而存储多个分块。在这种情况下,存储是完全分级的:对象被划分为组块,并且每个组块被划分为分块。在其它实施方式中,组块中的一个组块可以被划分为多个分块(这样的组块有时被称作“超级组块”),而另一个组块则可以由单个分块所构成。在后者的情况下,组块标识符可以是分块标识符。
由于分片1和分片2相互独立,所以它们的复制本可以被存储在不同实例处。例如,分片1可以被存储在实例1和实例2,而分片2则可以被存储在实例1和实例3。
该所公开的方法实质性地改善了上传服务的可用性和存储效率。该方法支持可恢复上传(例如,当实例在大型对象的上传期间发生故障时)以及在上传中间切换至新的分片(例如,当分片变满时)。此外,该方法支持同时写入多个分片,这可以针对大型对象显著提高性能。在一些实施方式中,单个对象的数据可以被同时写入处于不同实例处的两个或更多不同的分片、同时被写入处于相同实例处的两个或更多分片、或者甚至在单个日志内,两个或更多处理线程可以同时将数据的不同分块写入到单个日志。当然,分布式上传被可用资源所限制。该分布式存储系统具有许多在相同时间上传对象的不同客户端,从而来自一个客户端的单个非常大的对象并不允许消耗过多的可用资源。
根据一些实施方式,在分布式存储系统的第一实例处执行用于对对象复制本在该分布式存储系统中的放置进行管理的方法。该第一实例具有一个或多个服务器,每个服务器具有一个或多个处理器和存储器。该存储器存储一个或多个程序以用于由该一个或多个处理器所执行。该第一实例接收与第一放置策略相关联的第一对象。该第一放置策略指定了第一对象的复制本在该分布式存储系统中存储于何处的准则。在一些实施方式中,每个放置策略指定了对象复制本的目标数量以及那些复制本的目标位置。该第一实例将对象划分为多个对象组块并且将该多个对象组块中的第一对象组块划分为多个分块。该第一实例将该多个分块存储在第一日志中,所述第一日志的相关联的放置策略与第一放置策略相匹配。该第一实例存储该第一对象的全局元数据,所述全局元数据包括多个对象组块的列表。该列表包括每个对象组块的相应标识符。该第一实例存储该第一对象组块的本地元数据,所述本地元数据包括分块列表,所述分块列表识别该多个分块中的每个分块。该本地元数据与该第一日志相关联。该第一日志随后依据该第一放置策略而被复制到该分布式存储系统的第二实例。该全局元数据被更新以反映该复制,而该本地元数据则并不由于该复制而发生变化。
根据一些实施方式,在分布式存储系统的第一实例处执行的用于对对象复制本在该分布式存储系统中的放置进行管理的方法。该第一实例具有一个或多个服务器,每个服务器具有一个或多个处理器和存储器。该存储器存储一个或多个程序以便由该一个或多个处理器所执行。一个或多个日志被打开以用于存储对象组块。每个日志与单个放置策略相关联。在一些实施方式中,每个放置策略指定了对象复制本的目标数目以及那些复制本的目标位置。该第一实例接收至少包括第一对象组块的第一对象。该第一对象与第一放置策略相关联。该第一对象组块包括第一多个分块。该第一实例将该第一多个分块存储在第一日志中,所述第一日志的相关联的放置策略与该第一放置策略相匹配。该第一日志仅存储其放置策略与该第一放置策略相匹配的对象的分块。该第一实例存储该第一对象的全局元数据,其包括与该第一对象相对应的对象组块的第一列表。该第一列表包括该第一对象组块的标识符。该第一实例还存储该第一对象组块的本地元数据,后者包括分块列表,该分块列表识别该第一多个分块中的每个分块。该本地元数据与第一日志相关联。针对该第一日志,对第一多个对象重复该接收和存储操作,直至发生第一终止条件,所述第一多个对象的相关联的放置策略与所述第一放置策略相匹配。在一些实施方式中,该第一终止条件在预定时间跨度之后发生或者在该第一日志已经超过预定大小阈值之后发生。在发生第一终止条件之后,第一日志被关闭,从而防止任何附加分块被存储在该第一日志中。随后,该第一日志依据该第一放置策略而被复制到该分布式存储系统的第二实例。该全局元数据被更新以反映该复制,而该本地元数据则并不由于该复制而发生变化。
附图说明
图1是根据一些实施方式的分布式存储系统的概念图示。
图2是图示根据一些实施方式的分布式存储系统的元件的框图。
图3是根据一些实施方式的服务器的框图。
图4是根据一些实施方式的实例服务器的框图。
图5图示了依据一些实施方式的用于存储对象组块的日志的使用。
图6图示了一些实施方式如何对新对象的存储进行管理。
图7图示了依据一些实施方式的打开的日志的结构。
图8图示了依据一些实施方式的在日志从一个实例复制至另一个实例时对象元数据和日志元数据发生了什么。
图9A-9C图示了根据一些实施方式的管理对象复制本在分布式存储系统中的放置的方法。
图10A和10B图示了依据一些实施方式的对象组块可以如何进一步被划分为分块。
图11A-11D图示了根据一些实施方式的管理对象复制本在分布式存储系统中的放置的可替换方法。
图12图示了依据一些实施方式的组块在部分层级分布式存储系统中的存储。
同样的附图标记贯穿附图指代相对应的部分。
具体实施方式
在讨论用于管理对象在分布式存储系统中的放置的技术之前,呈现这些技术可以在其中使用的示例性系统是有益的。
分布式存储系统概述
如图1中所示,所公开的实施方式描述了分布式存储系统。在地球100上的各个位置处存在多个实例102-1、102-2、…102-N,它们通过网络通信链路104-1、104-2、…104-M进行连接。注意到,“实例”在该说明书中也被称作“存储位置”。还注意到,一个或多个实例(存储位置)可以位于特定的物理位置(例如,建筑物,彼此处于预定距离之内的建筑物集合,等等)。在一些实施方式中,实例(诸如实例102-1)与数据中心相对应。在一些实施方式中,多个实例物理上位于相同的数据中心。单一的实施方式可以具有不同地理位置处的个体实例以及实例的一个或多个集群二者,其中每个集群包括多个实例,并且每个集群内的实例处于单一地理位置。
虽然图1的概念图图示了特定数目的网络通信链路104-1等,但是典型的实施方式可以具有更多或更少的网络通信链路。在一些实施方式中,在相同实例配对之间存在两个或更多网络通信链路。例如,网络通信链路104-5和104-6在实例102-2和102-6之间提供网络连接。在一些实施方式中,网络通信链路包括光纤线缆。在一些实施方式中,一些网络通信链路使用诸如微波的无线技术。在一些实施方式中,每个网络通信链路具有指定带宽和/或使用该带宽的指定成本。在一些实施方式中,保持关于跨网络通信链路中的一个或多个网络通信链路的数据传输的统计,包括吞吐率、可用时间、链路可靠性等。每个实例通常具有数据储存器和相关联的数据库,并且利用服务器计算机群(farm)(如图4所示的“实例服务器”)来执行所有任务。在一些实施方式中,分布式存储系统的一个或多个实例具有受限功能。例如,受限功能可以包括充当其它实例之间的数据传输的中继器。注意到,受限功能的实例可以包括或不包括任意的数据储存器。
图2是图示根据一些实施方式的分布式存储系统200的元件的框图。分布式存储系统200包括实例102-1、102-2、102-3、102-4、…102-N。相应的实例102-1包括在实例之间复制对象组块238的复制模块220。在一些实施方式中,对象组块238被存储在相应实例102-1的数据储存器224中。如图6所示,每个对象组块238包括对象226或对象226的一部分。数据储存器224可以包括分布式数据库、文件系统、带式备份,以及任意其它类型的能够存储对象的存储系统或设备。在一些实施方式中,复制模块220使用一个或多个复制队列222-1、222-2、…、222-L来复制对象226或日志230。对所要复制的对象或日志的复制请求被置于复制队列222中,并且对象或日志在资源(例如,带宽)可用时被复制。在一些实施方式中,复制队列222中的复制请求具有所指派的优先级,并且最高优先级的复制请求在带宽变为可用时被复制。
在一些实施方式中,后台复制处理基于统计服务器208所提供的放置策略212和访问数据210和/或全局状态211而创建并删除对象或日志的复制本。放置策略212指定了需要对象的多少副本、副本应当位于何处、以及数据应当被保存在何种类型的数据储存器之中。连同统计服务器208所提供的访问数据210(例如,有关访问对象复制本的存储位置、在存储位置访问对象复制本的时间、在存储位置访问对象的频率等的数据)和/或全局状态211一起使用放置策略212,位置指派守护进程(LAD)206确定在何处创建对象或日志的新副本以及删除哪些副本。当新的副本被创建时,复制请求被插入到复制队列222中。在一些实施方式中,LAD 206为分布式存储系统200全局管理对象或日志的复制本。换句话说,分布式系统200中仅有一个LAD 206。放置策略212的使用以及LAD 206的操作在下文中进行详细描述。
总体上注意到,相应的放置策略212可以指定所要保存的对象复制本的数目、复制本应当保存在何种类型的数据储存器中、副本应当保存在哪个存储位置,等等。在一些实施方式中,对象的相应放置策略212包括从由以下构成的组中选择的准则:必须存在于分布式存储系统中的最小数目的对象复制本、被允许存在于分布式存储系统中的最大数目的对象复制本、要在其上存储对象复制本的存储设备类型、可以存储对象复制本的位置、不可以存储对象复制本的位置、和对象的放置策略在其期间被应用的对象年龄范围(range of age)。例如,第一放置策略可以指定web邮件应用中的每个对象必须具有最少2个复制本以及最多5个复制本,其中对象复制本能够被存储在中国以外的数据中心,并且其中每个对象的至少一个复制本必须被存储在磁带上。Web邮件应用的第二放置策略还可以针对超过30天的对象指定最少1个复制本以及最多3个复制本被存储在分布式存储系统中,其中对象的复制本能够存储在中国以外的数据中心,并且其中每个对象的至少一个复制本必须被存储在磁带上。
在一些实施方式中,用户240与用户系统242进行交互,用户系统242可以是计算机系统或者能够运行web浏览器244的其它设备。用户应用246在web浏览器中运行,并且使用数据库客户端248所提供的功能而使用网络访问存储在分布式存储系统200中的数据。该网络可以是互联网、局域网(LAN)、广域网(WAN)、无线网络(WiFi)、局部内联网、或者这些网络的任意组合。在一些实施方式中,数据库客户端248使用全局配置存储204中的信息来识别适当实例以对请求作出响应。在一些实施方式中,用户应用246在没有web浏览器244的情况下在用户系统242上运行。示例性用户应用包括电子邮件应用和在线视频应用。
在一些实施方式中,每个实例存储分布式存储系统中所存储的每个对象的对象元数据228。一些实例仅存储具有存储在该实例处的复制本的对象的对象元数据228(称作“本地实例”)。一些实例存储在分布式存储系统中的任何地方所存储的所有对象的对象元数据228(称作“全局实例”)。对象元数据228参考图3、4和5进行更为详细的描述。
在一些实施方式中,每个实例存储分布式存储系统200中所存储的每个日志的日志元数据236。一些实例仅存储具有存储在该实例处的复制本的日志的日志元数据236。一些实例则存储分布式系统中的任何地方所存储的所有日志的日志元数据。日志元数据参考图3、4、5和8进行更为详细的描述。
数据储存器224中存储有多种类型的日志。大部分日志是关闭的日志230。关闭的日志230并不存储任何附加的对象组块,但是可以使得内容被删除和压缩。在一些实施方式中,相同放置策略212的两个或更多的小型关闭的日志230能够被拼凑在一起从而形成单个放置关闭的日志230。由于关闭的日志230内的数据能够被删除并压缩,所以关闭的日志230能够随时间而变得更小,并且因此变为拼凑的候选。
除了关闭的日志230之外,实例102能够具有打开的日志232和234。如图2所示,打开的日志被指定为主要日志232或辅助日志234。主要日志232和辅助日志234成对出现并且位于不同实例处。如以下更为详细描述的,主要日志232接收组块238以进行存储并且将组块238的副本传送至相对应的辅助日志234所存储的实例处。
图3是根据一些实施方式的服务器300的框图。服务器300通常包括一个或多个处理单元(CPU)302,报告当前日期和/或时间的时钟303、一个或多个网络或其它通信接口304、存储器314、以及一个或多个用于将这些组件互连的通信总线312。通信总线312可以包括对系统组件进行互连并且对它们之间的通信加以控制的电路(有时被称作芯片组)。在一些实施方式中,时钟303是定期与时钟服务器(例如,网络上的仲裁时钟服务器或者任意其它时钟服务器等)进行同步的本地时钟。服务器300可选地可以包括用户接口306,用户接口306包括显示设备308和输入设备310(例如,键盘、鼠标、触摸屏、小键盘等)。存储器314包括高速随机存取存储器,诸如DRAM、SRAM、DDR RAM或者其它随机存取固态存储器设备;并且可以包括非易失性存储器,诸如一个或多个磁盘存储设备、光盘存储设备、闪存设备或者其它非易失性固态存储设备。存储器314可选地可以包括距(一个或多个)CPU 302远程定位的一个或多个存储设备。存储器314或替选地存储器314内的(一个或多个)非易失性存储器设备包括计算机可读存储介质。在一些实施方式中,存储器314存储以下程序、模块和数据结构或者它们的子集:
·操作系统316,其包括用于处理各种基本系统服务以及用于执行依赖于硬件的任务的过程;
·通信模块318,其用于将服务器300经由一个或多个通信接口304(有线或无线)和一个或多个通信网络连接至其它计算机,上述通信网络诸如互联网、其它广域网、局域网、城域网,等等;
·可选用户接口模块320,其经由输入设备310接收来自用户的命令并且在显示设备308中生成用户界面对象;
·如这里所描述的配置204;
·如这里所描述的LAD206;
·如这里所描述的访问数据210;
·如这里所描述的全局状态211;
·如这里所描述的放置策略212;
·在分布式存储系统中所存储的对象的对象元数据228。对象元数据228可以包括对象ID 330,其唯一地识别分布式存储系统内的对象。元数据228可以包括对象的作者332,其可以是人或实体的姓名和/或标识符(例如,电子邮件地址)。在一些实施方式中,该标识符是唯一的。该元数据可以包括该对象被创建(例如,被上传至该分布式存储系统)时的日期戳或时间戳334。该元数据可以包括对象的大小336,其通常以字节或分配分块进行衡量。该元数据包括所指派的放置策略338,其可以被单独指派或者基于其它准则进行指派(例如,所有从美国上传的视频都具有相同的指派放置策略338)。放置策略的使用在下文中关于图5-6和9A-9C进行更为详细地描述。元数据228包括识别每个对象的内容组块的组块ID集合346。在一些实施方式中,组块ID被指定为对象内的偏移。例如,第一组块具有偏移0。在一些实施方式中,该偏移以Mb进行指定。在一些实施方式中,组块ID是唯一标识符(诸如GUID)。在一些实施方式中,每个组块ID通过将对象ID与组块的偏移级联而形成。在一些实施方式中,组块ID使用内容散列或内容摘要所形成。与每个组块ID相对应的是所指派的日志ID 348,其指示相对应的组块存储在哪个日志中;以及
·在分布式存储系统200中所存储的每个日志的日志元数据236。日志元数据236包括每个日志的日志ID 370以及该日志所存储的日志位置372的集合。日志位置372指定了日志被存储在那里的每个实例102并且可以指定存储该日志的实例102处的数据储存器224。日志元数据236还包括与每个日志相关联的放置策略ID 374。放置策略ID 374识别与日志相关联的唯一放置策略212。
以上所识别出的要素中的每个要素可以存储在一个或多个先前所提到的存储器设备中,并且与用于执行以上所描述的功能的指令集合相对应。该指令集合能够由一个或多个处理器(例如,CPU 302)所执行。以上所识别的模块或程序(即,指令集合)并不需要作为分立的软件程序、过程或模块来实施,并且因此这些模块的各个子集在各种实施方式中可以被组合或者以其它方式重新布置。在一些实施方式中,存储器314可以存储以上所识别的模块和数据结构的子集。此外,存储器314可以存储并未在上文中进行描述的另外的模块和数据结构。
虽然图3示出了“服务器”,但是与作为这里所描述的实施方式的结构性示意相比,图3更多地是旨在作为可以呈现在服务器300的集合中的各种特征的功能描述。实际上并且如本领域技术人员内所认识到的,被分别示出的项能够被组合并且一些项能够被分立。例如,在图3中被分立地示出的一些项能够在单个服务器上实施,并且单个项能够由一个或多个服务器来实施。服务器的实际数目以及特征如何在它们之间进行分配将随着实施方式的不同而有所变化,并且可以部分取决于系统在峰值使用时间段以及平均使用时间段期间所必需处理的数据业务的量。在一些实施方式中,LAD 206、访问数据210、全局状态211、和放置策略212的子集位于分立的服务器上。例如,LAD 206可以位于一个服务器(或服务器集合)上,访问数据210和全局状态211则可以位于统计服务器208(或统计服务器208的集合)上并且由其进行维护,而放置策略212则可以位于另一个服务器(或其它服务器的集合)上。
图4是根据一些实施方式的用于实例102的实例服务器400的框图。实例服务器400通常包括一个或多个用于执行模块的处理单元(CPU)402、报告当前日期和/或时间的时钟403、存储在存储器414中并且因此执行处理操作的程序和/或指令、一个或多个网络或其它通信接口404、存储器414、以及用于对这些组件进行互连的一个或多个通信总线412。在一些实施方式中,时钟403是定期与时钟服务器(例如,网络上的仲裁时钟服务器或者任意其它时钟服务器等)进行同步的本地时钟。实例服务器400可以包括用户接口406,用户接口406包括显示设备408以及一个或多个输入设备410。在一些实施方式中,储器414包括高速随机存取存储器,诸如DRAM、SRAM、DDR RAM或者其它随机访问固态存储器设备。在一些实施方式中,存储器414包括非易失性存储器,诸如一个或多个磁盘存储设备、光盘存储设备、闪存设备或者其它非易失性固态存储设备。在一些实施方式中,存储器414可以包括距(一个或多个)CPU 402远程定位的一个或多个存储设备。存储器414或者可替选地存储器414内的(一个或多个)非易失性存储器设备包括计算机可读存储介质。在一些实施方式中,存储器414或存储器414的计算机可读存储介质存储以下程序、模块和数据结构或者它们的子集:
·操作系统416,其包括用于处理各种基本系统服务以及用于执
行依赖于硬件的任务的过程;
·通信模块418,其用于将实例服务器400经由一个或多个通信
接口404(有线或无线)和一个或多个通信网络连接至其他实例服
务器或计算机,上述通信网络诸如互联网、其它广域网、局域网、
城域网,等等;
·可选用户接口模块420,其经由输入设备410接收来自用户的命令并且在显示设备408中生成用户界面对象;
·如这里所描述的复制模块220和复制队列222;
·数据储存器224(例如,分布式数据库、文件系统、磁带存储、Big Table等),其存储如关于图3所描述的日志230、232和234中的对象组块238;
·如图3中关于服务器300所描述的对象元数据228以及相对应的元数据要素330-338、346和348;
·如图3中关于服务器300所描述的日志元数据326以及相对应的日志元数据要素370、372和374。
以上所识别出的要素中的每个要素可以存储在一个或多个先前所提到的存储器设备中,并且与用于执行以上所描述的功能的指令集合相对应。该指令集合能够由一个或多个处理器(例如,CPU 402)所执行。以上所识别的模块或程序(即,指令集合)并不需要作为分立的软件程序、过程或模块来实施,并且因此这些模块的各个子集在各种实施方式中可以被组合或者以其它方式重新布置。在一些实施方式中,存储器414可以存储以上所识别的模块和数据结构的子集。此外,存储器414可以存储并未在上文中进行描述的另外的模块和数据结构。
虽然图4示出了“实例服务器”,但是与作为这里所描述的实施方式的结构性示意相比,图4更多地是旨在作为可以呈现在实例服务器400的集合中的各种特征的功能描述。实际上并且如本领域技术人员内所认识到的,被分别示出的项能够被组合并且一些项能够被分立。例如,在图4中被分立示出的一些项能够在单个服务器上实施,并且单个项能够由一个或多个服务器来实施。服务器的实际数目以及特征如何在它们之间进行分配将随着实施方式的不同而有所变化,并且可以部分取决于系统在峰值使用时间段以及平均使用时间段期间所必需处理的数据业务的量。例如,在单个实例102处可能存在一百个实例服务器400或者数千个实例服务器400。
在一些实施方式中,为了对客户端提供更快的响应并且提供容错,在实例处所运行的每个程序或处理在多个计算机之间进行分布。被分配至程序中的每个程序或处理的实例服务器400的数目可以有所变化并且取决于工作负荷。
图5图示了依据一些实施方式的用于存储对象组块的日志的使用。图5示出了数据储存器224以及对象元数据228的一部分和日志元数据236的一部分,它们全部都处于示例的实例102处。数据储存器224中存储了许多日志230、232和234,从而在二维网格中对它们进行视觉组织是有用的(当然,视觉显示与日志在数据储存器中的实际物理存储无关。)。在图中,日志被划分为多个日志的“行”,其中每一行与单一的放置策略212相对应。例如,第一行502-P1与放置策略P1(212)相对应,并且包括关闭的日志230、打开的日志232、和打开的辅助日志234。第一行502-P1中的所有这些日志都与放置策略P1相关联。第二行502-P2与放置策略P2(212)相对应,并且最后一行502-PN与放置策略PN(212)相对应。通常,放置策略的数目很小,诸如10、20、50或者可能100。当放置策略的数目增加时,对象复制本的管理就变得不太有效。
在图5中,数据储存器224中的日志还在视觉上被划分为两列。第一列识别出关闭的日志230,其是日志中的大多数。第二列包括打开的主要日志232和打开的辅助日志234。如每个日志中的各个矩形238所图示,每个日志(无论是关闭的230、打开的主要日志232、还是打开的辅助日志234)都包含对象组块238。对象组块可以是各种大小,但是实施方式通常设置固定的最大大小(例如,2Mb、4Mb或8Mb)。日志内的对象组块238的图示正确地传达了日志存储各种大小的许多对象组块的事实,但是却并非表示对象组块的实际物理存储(例如,在对象组块之间通常并没有未使用的空间,因为每个新的对象组块238都附加于未分配空间的开头)。
图5图示了打开的日志232和234的各种组合对于每种放置策略都是可能的。为了在附图和这里的描述中识别出不同的日志复制本,有时使用了三个部分的标签,诸如“232.P4.7”。第一部分(例如,“232”)识别日志的类型(230=关闭,232=打开主要,234=打开辅助);第二部分(例如,“P4”)指定日志的放置策略;并且第三部分(例如,“7”)则仅指定日志的顺序编号(例如,“232.P4.7”中的“7”指定了放置策略P4的第七个打开的日志)。
如图5所示,对于放置策略P1而言,存在单个打开的主要日志232.P1.1而不存在打开的辅助日志。对于放置策略P2而言,存在两个打开的主要日志232.P2.1和232.P2.2。对于放置策略PN而言,存在一个打开的主要日志232.PN.1以及一个打开的辅助日志234.PN.1。如这些示例所图示的,打开的主要日志232和打开的辅助日志234的数目可以在放置策略之间有所变化,并且通常基于每种放置策略212的预期数目的新对象226以及那些对象226的所期望位置而针对每种策略212进行配置。
如先前关于图3所描述的,每个实例102还存储对象元数据228和日志元数据236二者。对于每个对象226,对象元数据228包括对象ID330(其唯一地识别对象)、从对象中识别对象组块238的一个或多个组块ID 346的集合、以及与每个组块ID 236相关联的所指定日志ID 348。当对象具有多个组块238时,组块238并非必然全部被存储在相同日志中(例如,为了负载平衡),从而对象元数据228必须对为每个组块ID 346所指定的日志ID 348进行追踪。
每个实例102还针对在该实例102处所存储的每个日志存储日志元数据236。元数据236包括每个日志的日志ID 370、以及位置372的集合。在一些实施方式中,位置ID识别日志在那里进行存储的实例。在一些实施方式中,位置ID还识别所指定实例处的数据储存器。在一些实施方式中,实例标识符和数据储存器标识符针对每个日志作为分立属性进行存储。在一些实施方式中,日志可以被存储在单个实例处的两个或更多数据储存器中(例如,文件系统数据储存器和磁带备份数据储存器)。日志元数据236还包括放置策略ID 374,放置策略ID 374指定与每个日志相对应的唯一放置策略212。每个日志仅存储其放置策略338与该日志的放置策略相匹配的对象组块238。
图6图示了一些实施方式如何对新对象226的存储进行管理。如图6所示,每个新对象都具有对象内容(即,对象226自身)以及对象ID 330(例如,58440912)和所指定的放置策略330(例如,P3)。新对象226能够来自于许多不同的应用246,诸如在线电子邮件应用、视频分享网站等。分布式存储系统200接收新对象226并且将新对象226指向(602)适当实例,诸如实例102-1。在一些实施方式中,应用246将新对象226指向具体实例102-1。当应用246所选择的实例102-1并不适当时,一些实施方式将对象226转发至适当的实例(例如,如果放置策略212指定在欧洲没有存储,并且对象226在欧洲的实例处被接收,则该实例能够将对象226转发至另一个实例)。
虽然大多数对象具有适度的大小(例如,小于300Kb),但是存在一些大型的对象。一些实施方式将大型对象分割(604)为多个组块238。总体上,每种实施方式设置组块大小或者具有用于设置组块大小的可配置参数,上述组块大小通常被指定为为数个Mb(例如,2、4、8、16或32Mb)。每个大于组块大小的对象都被分割为多个组块,并且每个大小等于或小于组块大小的对象则由单个组块所构成。在图6的图示中,存在三个组块C1、C2和C3。在该图示中,组块中的每个组块具有7个字符的字母数字组块ID 346,但是可能有许多唯一地识别每个对象内的组块的可替选组块ID格式。在一些实施方式中,组块ID 346使用内容散列或内容摘要来生成。
在一些实施方式中,能够存在许多对象复制品(例如,被发送至人群,随后被转发至许多另外的人的电子邮件附件),如此解除复制对于有效存储而言会是有用的。因此,在一些实施方式中,将每个新组块238的内容与现有对象组块238进行比较(606)(例如,使用内容散列或内容摘要)以仅在打开的主要日志中存储(606)“新”组块238。如图5所示,组块C2是新的并且与放置策略P3相对应,如此组块C2被存储在与放置策略P3相对应的打开的主要日志232.P3.1中。当然,解除复制仅是在放置策略的场境内进行。如果两个组块是相同的但是被指定至不同的放置策略,则这两个组块将被保存在不同的日志中。换句话说,当接收到新的组块时,其仅与相同放置策略的组块进行比较。仅在针对相同放置策略已经保存了相同组块的时候,组块才是“复制品”。
无论对象组块C2是否是新的,实例102-1都存储(608)组块238的元数据228。如先前关于图3-5所描述的,元数据228包括对象ID 330、组块ID 346、以及每个组块所存储于的日志的日志ID 348。在一些实施方式中,对象组块238的组块ID 346仅是对对象内的组块238的起始的偏移。图6中所示的对象元数据228还图示了单个对象的组块并不需要在相同日志中进行存储。组块C1和C3(组块ID C190056和C098663)处于具有日志ID J77298045的日志232.P3.2中,而组块C2(组块ID C250116)则处于具有日志ID J82117094的日志232.P3.1中。
组块C2被传送(610)至实例102-2以用于在辅助日志234.P3.1中进行存储,而组块C1和C3则被传送(612)至实例102-2以用于在辅助日志234.P3.2中进行存储。
图6还图示了主要日志232无需在物理上与其相对应的辅助日志相同。首先,我们看到组块C1和C3在主要日志232.P3.2中以该顺序进行存储,而这些组块在辅助日志232.P3.2中则以逆序进行存储。在日志被打开时,个体组块238可以被独立复制、经过不同的网络路径、或者被不同的处理器402所处理,从而并不保证它们以相同的顺序被加载到辅助日志232.P3.2中。可能存在不同顺序的事实被如以下关于图7所描述的每个日志内的组块索引所处理。此外,主要日志232.P3.1指示存在有在图中被标记为“G”的垃圾“组块”620。在上传期间,有时可能出现消耗空间的故障或失灵。例如,在上传期间,可能针对对象分配空间,但是组块并未被实际附加。软件重新尝试上传,这为该组块分配新的空间。这会在日志232内留下空洞或垃圾。在这种情况下,垃圾620并不被传送至辅助日志,如此主要日志在物理上不同于辅助日志。
图7图示了依据一些实施方式的打开的日志的结构。虽然图7描述了打开的主要日志232,但是打开的辅助日志234的结构将会是相同或相似的。日志232具有头部702以及存储空间714的分块。存储空间714包括已经存储有对象组块238的填充部分710以及当前还未使用的未填充部分712。这些描述符由于一些原因并不是完全准确的。首先,“填充”空间710可能包括没有有用内容的垃圾部分620。第二,未使用空间并非必然全部在相同时间分配。一些实施方式并不对日志一次分配整个空间,并且在其被填充时关闭日志(潜在地在尾部留下少量未使用空间)。但是在其它实施方式中,按照需要分配额外空间的分块,直至日志达到某个大小极限或者已经过去了某个时间量(例如,一天)。
日志的头部702包含有关日志232的重要内部信息。头部702包括指定未使用空间712在日志中何处开始的字段704。每次将新的组块238附加至填充空间710的尾部,偏移704就被增加以该组块238的大小而使得日志232准备存储下一个组块。
头部702还包括组块索引706。日志232的组块索引706指定了每个组块238在日志232中位于何处以及其大小,这使得能够快速读取组块数据(无论是从非易失性存储还是从高速缓存)。组块索引706的关键所在是组块ID 346,其唯一识别组块。注意到,多个不同对象ID 330可以指代相同的组块。为了避免具有指向相同对象组块238的许多条目的庞大的组块索引704,实施方式通常采用带个组块ID来指代相同的物理内容。例如,组块ID 346可以是内容散列或内容摘要(或者这些的组合)。针对每个组块ID 346,组块索引720指定了组块238在存储空间714内的偏移720和大小722。偏移720可以被指定为距日志232开头的偏移或者距填充空间710开头的偏移。在一些实施方式中,组块索引具有附加信息,诸如随后在删除组块以及压缩填充空间710时锁使用的删除标记。
头部702还可以包含其它日志数据708以解决实施方式的细节问题。例如,其它日志数据708可以指定从日志开头到存储空间714开头的偏移(即,头部的大小)。在一些实施方式中,其它日志数据包括被指定为具短寿命的日志的“存活时间”参数。
虽然图7中的日志结构是针对打开的主要日志232,但是相同的基本结构也应用于打开的辅助日志234和关闭的日志230。
图8图示了依据一些实施方式的在日志从一个实例复制至另一个实例时对象元数据228和日志元数据236发生了什么。在该图示中,具有日志ID J82117094的关闭的日志230从实例102-1(具有实例ID=723)被复制(820)到实例102-4(具有实例ID 428)。由于日志230自身作为一个单位被复制,所以整个内容都完全被复制。例如,组块C8(具有组块IDC408335)在日志内处于完全相同的位置。当然,在复制之后,实例102-1和102-4独立地处理删除和压缩,如此它们的物理结构在复制之后并不保证保持相同。
图8还示出了复制820之前和之后的对象元数据228和日志元数据236的一部分。如所指示的,对象元数据228中的记录802-814并不被复制820所改变。每个对象226具有相同的组块238,并且组块238被存储在相同的日志230中。例如,具有组块ID C408335(在行804中)的组块并未被改变。另一方面,具有日志ID J82117094(370-1)的日志230的日志元数据236发生了变化。日志位置372的集合从372-1(A)变为372-1(B),372-1(B)包括新的位置428(针对实例102-4)。
图9A-9C图示了根据一些实施方式的管理(902)对象复制本在分布式存储系统200中的放置的方法900。该方法在分布式存储系统中具有一个或多个处理器和存储器的第一实例102处执行(904)。存储器对多个对象进行存储(906)。该存储器还存储(908)一个或多个程序以用于由一个或多个处理器所执行。在一些实施方式中,方法900的全部或部分由位置指派守护进程206所执行。在一些实施方式中,分布式存储系统具有(910)多个实例。在这些实施方式中的一些实施方式中,至少一个实例子集处于(910)不同的地理位置。在一些实施方式中,每个实例与一个数据中心相对应。在一些实施方式中,每个数据中心包括一个或多个实例。
在第一实例处,一个或多个日志232被打开(912)以用于存储对象组块。每个日志与单个相应的放置策略212相关联(914)。在一些实施方式中,每个放置策略指定(926)目标数目的对象复制本以及目标复制本的目标位置集合。在一些实施方式中,放置策略212可以指定在一些实例处使用何种类型的数据储存器224(例如,在磁盘上或者在磁带上)。在一些实施方式中,分布式存储系统200包括(918)对象元数据228,对象元数据228指定每个对象组块238存储在哪个日志中。这在先前关于图3-5进行了描述。在一些实施方式中,每个相应日志包括(920)指定每个对象在相应日志中所存储的位置的组块索引706。这在图7中进行了更详细的描述。特别地,日志内的每个组块的位置被相对于日志本身来识别,并且因此组块索引706是准确的而不管该日志在哪里存储。例如,通过将日志内的组块的位置指定为偏移,组块能够通过相对寻址来访问。
所公开的实施方式通常包括(922)指定每个日志所存储于的位置372的日志元数据236。这在先前在图3-5和8中进行了描述。
打开的主要日志232和打开的辅助日志234的分布取决于许多因素,包括可用实例102、放置策略212、利用放置策略212的新对象226的预期分布、新对象从何处加载(例如,欧洲、北美、亚洲)、每个可用实例102处的处理资源,以及各个实例间的网络带宽。例如,如果许多对象将利用具体实例处的具体放置策略进行上传,则多个日志针对该实例处的相同放置策略而被打开(924)。在一些情况下,当负载平衡所需要时,在单个实例102处针对相同的放置策略212可能有5、10或者更多的打开的日志。
如先前关于图5和6所描述的,一些实施方式向分布式存储系统200的第三实例传送(916)消息以打开与在第一实例处所打开的日志相对应的日志。在这种情况下,在第一实例处打开的日志232被称作主要日志而在第三实例处打开的日志234则被称作辅助日志。(当然,第一实例也可以具有辅助日志且第三实例则可以具有主要日志。)
在第一实例102处,接收(928)第一对象226,其包括(928)至少一个第一对象组块。这在以上关于图6进行了描述。第一对象226与第一放置策略212相关联,并且因此包括对象226的所有对象组块238都与第一放置策略212相关联。第一对象组块238被存储(930)在第一日志232中,第一日志232的相关联的放置策略与第一放置策略212相匹配。第一日志232仅存储(932)其放置策略与该第一放置策略相匹配的对象的对象分块。在一些实施方式中,第一日志232中所存储的每个对象组块238被传送(934)至第三实例以在第一日志234中进行存储。
当所接收到的对象大于组块大小时,该对象被划分为多个组块238。在这种情况下,第一对象226包括(936)两个或更多对象组块。通常,第二对象组块不同于(936)第一对象组块。(在单个对象内具有两个相同组块是少见的,但是可能发生,例如在对象具有非常大部分的空闲空间的情况下)。在一些情形中,第二对象组块被存储(938)在不同于第一日志的第二日志232中,第二日志232的相关联的放置策略与第一放置策略相匹配。第二日志仅存储(938)其放置策略与第一放置策略相匹配的对象的对象组块。以这种方式,包括许多组块的对象能够具有跨许多不同日志分布的组块。
接收对象226以及在第一日志232中存储组块238的处理针对其相关联的放置策略338与第一放置策略212相匹配的多个对象226进行重复,直至发生第一终止条件。在一些实施方式中,该第一终止条件在第一日志的大小超过预定阈值时(942)发生。在一些实施方式中,该第一终止条件在第一日志已经被打开达预定时间范围时(944)发生。一些实施方式以各种方式对大小和时间进行组合。例如,一些实施方式指定了时间跨度和大小限制二者,并且终止条件是其中首先发生的任何一个。
在发生第一终止条件之后,第一日志被关闭(946),从而防止任何另外的对象组块被存储在第一日志232中。通常,实施方式在关闭第一日志之前确认相同放置策略的其它日志232仍然打开(或者新的日志被打开)。由于新的对象会在任意时刻到达,所以使打开的日志可用于存储是重要的。当在另一个实例处存在相对应的辅助日志234时,第一实例在发生第一终止条件时向其它实例传送(948)消息以关闭相对应的辅助日志。
在第一日志232被关闭之后,该日志受到其放置策略的影响。满足放置策略212可以要求移动日志复制本、形成日志复制本的新的副本、或者删除日志复制本。在一些情形中,第一日志232依据放置策略212而被复制(950)至分布式存储系统200的第二实例102。(在其它情形中,第一日志的复制本被删除。)在具有主要和辅助的打开的日志232和234的实施方式中,一旦它们被关闭将存在两个等同的关闭的日志230。因此,任一个复制本都能够被用作复制950的源。当复制950发生时(即,作为事务的一部分),第一日志的日志元数据236就被更新(952)以指示第二实例处存在该日志的副本。这在以上关于图8进行了描述。
在日志230被关闭之后,对象组块238可以被删除。例如,对象可以与电子邮件的附件相对应。如果电子邮件的接收方删除了该电子邮件,则附件的存储能够被删除。在一段时间之后,每个日志内由于删除而出现空洞,并且因此将日志进行压缩以移除浪费空间是有用的。这类似于易失性存储器的碎片化以及用于将未使用的空间整合为更大的连续分块的碎片整理的处理。
由于所存储的对象组块可以与许多不同的对象(例如,数百个、数千个或者数百个)相对应,所以日志中的对象组块能够仅在不存在针对其的引用的情况下被删除。因此,一旦第一关闭的日志230被选择(954),则处理900就识别(956)存储在第一关闭的日志230中的对象元数据228中没有针对其的引用的一个或多个对象组块。针对这些所识别的组块238,组块索引706被更新(958)以移除相对应的记录。在一些实施方式中,先前被分配给所识别的对象组块的空间被覆写(例如,每个字节被设置为ASCII 0),但是在其它实施方式中,该空间仅是不再被引用。在一些实施方式中,被解除分配的存储空间作为其它日志数据708的一部分而被追踪。例如,一些实施方式保存被解除分配的存储空间的列表(例如,偏移和大小),或者将被解除分配的空间作为链表进行追踪。
在一些实施方式中,垃圾收集算法定期运行以压缩(960)所关闭的日志中的每个。压缩处理将所存储的对象组块整合(960)为连续分块,因此减小了日志230的大小。随着时间,日志230会由于更多对象组块被删除而变小。管理许多小的日志具有类似于管理个体对象的开销,并且因此弱化了日志存储的好处。为了解决该问题,一些实施方式将两个或更多关闭的日志拼凑(962)在一起以形成单个替换日志,并且更新(962)对象元数据228以指示先前存储在两个或更多日志中的对象组块现在存储在该替换日志中。由于拼凑操作需要形成完全新的日志并且针对所涉及的全部对象更新元数据,所以拼凑通常被局限于日志已经变得相对小的情形。
图10A和10B图示了用于在分布式存储系统中存储对象和相关联的元数据的两种实施方式。图10A所图示的实施方式是完全分层的:每个对象被分割为一个或多个组块,并且每个组块被分割为一个或多个分块。注意到,该结构即使在仅存在一个组块或者仅存在一个分块时也是分层的。在另一方面,图10B所图示的实施方式是部分分层的。在该实施方式中,一些组块是“超级组块”,其指的是分块的列表。例如,超级组块可以具有100个分块、1000个分块或者甚至更多分块的分块列表。并非超级组块的组块仅是一个分块。也就是说,该组块标识符是指对象数据的实际存储而不是分块的列表。这种混合方式在包括小型对象(其中不需要层级)和非常大的对象的分布式存储系统中会是有用的,其中存储层级更为有效。
如图2-4所图示,全局元数据1002包括对象元数据228和日志元数据236。在一些实施方式中,每个组块ID 346被指派以解密密钥1040,其被用来对组块的数据进行解密。在这些实施方式中,相同的解密密钥将针对被分割为多个分块的那些组块而被应用于那些组块中的所有分块。每个组块具有其自己的解密密钥1040,其有效唯一的。一些实施方式在生成新的密钥时保证唯一性,但是一些实施方式则随机生成新的密钥,而密钥的重复是非常不可能出现的。解密密钥1040与被用来在新对象被存储时用于对其进行加密的加密密钥相对应。由于需要解密密钥1040来访问每个对象组块,所以删除解密密钥能够被用作对象组块的“软”删除。当解密密钥消失时,被加密的存储就变为“垃圾”,并且实际数据无法被访问。这能够在压缩之间允许更多次垃圾收集算法,并且垃圾收集处理能够在其运行时恢复更多的存储空间。
图10A中还图示了日志232(其被示为是打开的)以及相对应的本地元数据1004。在一些实施方式中,日志232的本地元数据1004作为头部702的一部分而被存储在日志自身之中。在其它实施方式中,日志的本地元数据1004被存储为单独的文件(或者存储在数据库等之中)并且与日志相关联。用于非层级存储的日志232的结构在以上关于图7进行了图示。在该实施方式中,不同于存储组块,存储的基本单位是分块1016,诸如分块1016-1、1016-2、…、1016-N。每种实施方式通常指定最大的分块大小,诸如2Mb、4Mb、8Mb或者16Mb。
如以上所提到的,本地元数据1004可以被存储在日志232的头部702中,或者可以被分立地存储。针对每个组块标识符346,存在相对应的分块列表1006(通常是唯一的分块列表),其包括一个或多个分块标识符1008。针对小型组块,分块列表1006可以包含单个分块标识符1008。本地元数据1004还包括分块索引1010,其指定每个分块位于日志232内的何处。在一些实施方式中,分块的位置由偏移和大小进行指定。分块偏移1012在一些实施方式中是距存储空间714的开头的偏移或者是针对日志文件232的开头的偏移。通常,分块大小1014以字节进行指定,但是其它实施方式使用替选大小的基本单位(例如,2字节、4字节或8字节)。本地元数据的一个方面在于其在日志被移动或者复制至另一个实例时并不发生变化:组块的分块列表1006保持相同、分块ID 1008保持相同、日志内的分块偏移1012保持相同、并且分块大小保持相同。
图10B类似于图10A,但是图示了部分层级的结构。在图10B的部分层级结构中,全局元数据1002包括“超级组块”字段1020,其指示每个组块是常规分块还是指分块列表(即,是超级组块)。在一些实施方式中,大多数对象是小的,由单个组块所构成。在这种情况下,组块ID346直接识别组块/分块索引1024中的分块。也就是说,组块ID 346是组块/分块ID 1026。因此,对于并非超级组块的组块而言,组块ID 346能够被用来查找组块/分块索引1024中的适当记录以找出日志232中的相对应分块1016的偏移1028和大小1030。
针对超级组块而言,组块ID 346是(超级)组块ID 1022,其能够在本地元数据1004中进行查找。与超级组块ID 1002相对应的是分块列表1006,其包括分块ID 1008的集合。在这种情况下,每个分块ID能够在组块/分块索引1024中进行查找以针对超级组块ID 1022识别出组块列表1006中的每个组块ID 1026的偏移1028和大小1030。如前所述,偏移1028和大小1030识别出实际分块存储在日志232的存储空间714中的位置。超级组块因此具有额外的层级级别,但是减少了在全局元数据1002中所存储的组块元数据的量。这使得将分片从一个实例移动至另一个实例更为容易且更加有效。
图11A-11D图示了根据一些实施方式的管理(1102)对象复制本在分布式存储系统200中的放置的方法1100。该方法在分布式存储系统中具有一个或多个处理器和存储器的第一实例102处执行(1104)。该存储器存储(1106)一个或多个程序以用于由一个或多个处理器执行。在一些实施方式中,方法1100的全部或部分由位置指派守护进程206所执行。在一些实施方式中,分布式存储系统具有(1108)多个实例。在这些实施方式中的一些中,至少一个实例子集处于(1108)不同的地理位置。在一些实施方式中,每个实例对应于一个数据中心。在一些实施方式中,每个数据中心包括一个或多个实例。
在第一实例处,一个或多个日志232被打开(1110)以用于存储对象组块。每个日志与单个相应的放置策略212相关联(1112)。在一些实施方式中,每个放置策略指定(1122)目标数目的对象复制本以及对象复制本的目标位置集合。在一些实施方式中,放置策略212可以指定在一些实例处使用何种类型的数据储存器224(例如,在盘上或者在带上)。在一些实施方式中,分布式存储系统200包括(1114)对象元数据228(全局元数据1002的一部分),对象元数据228指定每个对象组块238存储在哪个日志中。这在先前关于图3-5、10A和10B进行了描述。在一些实施方式中,每个相应日志包括(1116)指定每个分块在相应日志中所存储的位置的分块索引1010或1026。这在图7(非层级)、10A和10B中进行了更为详细的描述。特别地,每个分块1016在日志232中的位置相对于日志自身被识别,并且因此分块索引1010或1026无论日志232存储在何处都是准确的。例如,通过将分块1016在日志232内的位置指定为偏移,分块1016能够通过相对寻址而被访问。
所公开的实施方式通常包括(1118)日志元数据236(全局元数据1002的一部分),其指定了每个日志所存储的位置372。这先前在图3-5和8中进行了描述。
打开的主要日志232和打开的辅助日志234的分布取决于许多因素,包括可用实例102、放置策略212、利用放置策略212的新对象226的预期分布,新对象从何处加载(例如,欧洲、北美、亚洲)、每个可用实例102处的处理资源、以及各个实例间的网络带宽。例如,如果许多对象将利用特定实例处的特定放置策略进行更新,则多个日志针对该实例处的相同放置策略而被打开(1020)。在一些情况下,当负载平衡所需要时,在单个实例102处针对相同的放置策略212可以存在5、10或者更多个打开的日志。
在第一实例102处,接收(1124)第一对象226,其包括(1124)至少第一对象组块。这在以上关于图6进行了描述。第一对象226与第一放置策略212相关联(1124),并且因此包括对象226的所有对象组块238都与第一放置策略212相关联。如以上关于图10A和10B所描述的,第一对象组块包括(1126)第一多个分块。在一些实施方式中,处理1100接收(1124)已经被划分为组块和分块的对象238。例如,分割可以由上传该对象的客户端设备执行。在其它实施方式中,处理1100接收(1124)作为流的对象并且根据所存储的准则(例如,目标分块和组块大小、可用的打开的日志、可用实例、可用带宽等)将该对象分割为组块和分块。在一些实施方式中,在仍然接收对象的数据的同时执行组块的动态分配,而其它实施方式则仅在接收到整个对象会后才将对象分割为分块和组块。
组块和分块的层级能够以各种方式并且基于诸如对象大小之类的各种因素来形成。在一些实施方式中,该层级在上传处理期间动态构建。例如,第一对象组块被创建、并且数据流被分割为分块,所述分块则被分配至第一对象组块直至阈值数目的分块被分配至该组块。此时,第二组块被创建、并且新的分块被添加至该第二组块。在另一种实施方式中,数据的流作为初始存储的分块被存储,并且当不存在更多分块时,分块被分组为组块。
在一些实施方式中,每个对象组块238包括(1128)一个或多个分块。这在以上关于图10A进行了图示。在一些实施方式中,全局元数据1002包括(1130)指定每个对象组块238是分块还是分块列表的字段。这在以上的图10B中有所图示。在一些实例中,第一对象组块是(1132)分块列表(即,超级组块),而第二组块则是(1132)常规分块(并非超级组块)。
第一多个分块1016被存储(1134)在第一日志232中,第一日志232的相关联的放置策略与第一放置策略212相匹配。第一日志232仅存储(1136)其放置策略与第一放置策略相匹配的对象的分块。
当所接收到的对象大于指定大小(例如,组块大小或分块大小)时,该对象被分割为多个组块238和/或多个分块1016。在一些实例中,第一对象226包括(1138)两个或更多对象组块。通常,第二对象组块不同于(1138)第一对象组块。(在单个对象内具有两个相同组块是少见的,但是可能发生,例如在对象具有非常大部分的空闲空间的情况下)。在一些实施方式中,第二对象组块被存储(1140)在不同于第一日志的第二日志232中,第二日志232的相关联的放置策略与第一放置策略相匹配。第二日志仅存储(1140)其放置策略与第一放置策略相匹配的对象的对象组块。以这种方式,包括许多组块的对象能够具有跨许多不同日志分布的组块。
在一些实施方式中,该处理对每个对象组块的数据进行加密(1142),并且将每个对象组块的解密密钥存储(1142)在全局元数据中,这在以上的图10A和10B中有所图示。在一些实施方式中,当组块被划分为多个分块时,该组块内的每个分块被利用相同的加密密钥进行加密,并且因此能够被利用相同的解密密钥进行解密。在其它实施方式中,每个分块具有其自己的解密密钥,其作为块索引1010或1026的一部分被存储。在将解密密钥1040存储在全局元数据1002的实施方式中,分块实际上能够通过删除(1144)解密密钥而简单地被删除。该组块由于无法获取到原始组块的数据而不能被访问。这提供了一些优势。首先,删除组块是快速且有效的。第二,由于不存在访问被删除数据的实际风险,所以能够实施更为有效的垃圾收集处理。特别地,垃圾收集能够以适当的间隔进行调度,并且能够对从盘对存储的物理删除进行批处理。由于压缩是资源密集型处理,所以能够将许多删除分批在一起显著提高了效率。第三,一些实施方式并不需要物理擦除存储空间,因为被加密的“无用数据”无法被转换回有意义的内容。
处理1100存储(1146)第一对象的全局元数据。这在以上的图3-5、10A和10B中进行了图示。全局元数据1002包括(1148)与第一对象相对应的对象组块第一列表。特别地,该第一列表包括(1150)第一对象组块238的对象标识符330。全局元数据1002还识别每个组块所存储于的日志以及每个日志的位置。
除了全局元数据1002之外,还针对每个日志232存储本地元数据1004。在一些实施方式中,每个日志的本地元数据1004被存储在日志232自身的头部702中。在其它实施方式中,本地元数据1004与日志分立地存储。当被分立地存储时,每个日志的本地元数据1004可以被分立地存储(例如,与每个日志相对应的不同的元数据文件),或者本地元数据可以被分组在一起(例如,在数据库中)。
第一实例存储(1152)第一对象组块238的本地元数据1004。本地元数据1004包括(1154)识别第一多个分块中的每个分块的分块列表。注意到,该分块列表被存储在本地元数据1004中而不是全局元数据1002中。存储在本地元数据1004中的分块列表1006追踪分块如何在每个日志内进行分配。第一日志232的本地元数据与第一日志232相关联(1156)。在一些实施方式中,本地元数据与日志的关联通过将本地元数据存储在日志中来执行,这使得日志更为自足。在一些实施方式中,日志232的本地元数据被分立地存储(例如,在分立的文件中)并且与日志相关联(例如,通过将日志ID 370包括在日志的名称以及相关联的元数据文件的名称中)。在将本地元数据存储在数据库的实施式中,日志ID 370通常是元数据表格的主键的一部分。
接收对象226以及在第一日志232中存储组块238的处理针对多个对象226进行重复(1158),直至发生第一终止条件,多个对象226的相关联的放置策略338与第一放置策略212相匹配。在一些实施方式中,该第一终止条件在第一日志的大小超过预定阈值时(1160)发生。在一些实施方式中,该第一终止条件在第一日志已经被打开达预定时间跨度时(1162)发生。一些实施方式以各种方式对大小和时间进行组合。例如,一些实施方式指定了时间跨度和大小限制,并且终止条件是其中先行发生的任何一个。
在发生终止条件之后,第一日志被关闭(1164),从而防止任何另外的对象组块被存储在第一日志232中。通常,实施方式在关闭第一日志之前确认相同放置策略的其它日志232仍然打开(或者新的日志被打开)。由于新的对象会在任意时刻到达,所以使打开的日志可用于存储是重要的。
在第一日志232被关闭之后,该日志受到其放置策略的影响。满足放置策略212可以要求移动日志复制本、形成日志复制本的新的副本、或者删除日志复制本。在一些情形中,第一日志232依据放置策略212而被复制(1166)至分布式存储系统200的第二实例102。(在其它情形中,第一日志的复制本被删除。)在具有主要和辅助的打开的日志232和234的实施方式中,一旦它们被关闭将存在两个等同的关闭的日志230。因此,任一个复制本都能够被用作复制950的来源。当复制1166发生时(即,作为事务的一部分),第一日志的全局元数据1002就被更新(1168)以指示第二实例处存在该日志的副本。另一方面,通过该复制,本地元数据1104是未变化的(1168)。这在以上关于图8、10A和10B进行了描述。
在日志230被关闭之后,对象组块238可以被删除。例如,对象可以与电子邮件的附件相对应。如果电子邮件的接收方删除了该电子邮件,则附件的存储能够被删除。在一段时间之后,每个日志内由于删除而出现空洞,并且因此将日志进行压缩以移除浪费空间是有用的。这类似于易失性存储器的碎片化以及用于将未使用的空间整合为更大的连续存储的碎片整理的处理。
由于所存储的对象组块可以与许多不同的对象(例如,数百个、数千个或者数百个)相对应,所以日志中的对象组块能够仅在不存在针对其的引用的情况下被删除。因此,一旦第一关闭的日志230被选择(1170),则处理1100就识别(1172)存储在第一关闭的日志230中的对象元数据228中没有针对其的引用的一个或多个对象组块。在一些实施方式中,垃圾收集算法定期运行以压缩(1174)每个所关闭的日志。压缩处理将所存储的对象组块整合(1174)为连续分块,因此减小了日志230的大小。
随着时间,日志230会由于更多对象组块被删除而变小。管理许多小的日志具有类似于管理个体对象的开销,并且因此弱化了日志存储的好处。为了解决该问题,一些实施方式将两个或更多关闭的日志拼凑(1176)在一起以形成单个替换日志,并且更新(1176)对象元数据228以指示先前存储在两个或更多日志中的对象组块现在存储在该替换日志中。由于拼凑操作需要形成完全新的日志并且针对所涉及的全部对象更新元数据,所以拼凑通常被局限于日志已经变得相对小的情形。
图12图示了依据如先前关于图10B所图示的一些实施方式的在分布式存储系统中存储组块的示例。在该示例中,示出了两个组块238-1和238-2。组块238-1是常规组块(即,并非超级组块),其具有组块ID346-1。由于组块238-1是常规组块,所以其能够直接在组块/分块索引1024中进行查找。在该图示中,组块/分块索引1024被存储在该数据所存储的日志232的头部702中。针对该组块/分块,偏移1028是y(1028-y)。使用该偏移,能够在存储空间714中找到相对应的分块B 1016-B。
然而,组块238-2是具有(超级)组块ID 346-2的超级组块。如这里所图示的,超级组块238-2指向分块列表表格1006中的条目。针对每个超级组块ID 1022,存在多个相对应的分块ID 1008。图12图示了两个相对应的分块1008-1和1008-2,但是对于非常大的对象而言,对于单个组块可以存在非常大量的分块。分块ID 1008-1和1008-2随后在组块/分块索引1024中被查找以找出分块的偏移1028-x和1028-z。最后,使用偏移1028-x和1028-z,在存储空间714中定位相对应的分块1016-A和1016-C。在该示例中,这两个分块并不是连续的,并且实际上组块238-1的分块1016-B隔开了组块238-2的两个分块。当然,每个分块的大小也被使用从而针对每个分块仅读取适当数据。这在以上关于图10B进行了描述。
并不允许常规组块(诸如组块238-1)的实施方式是完全分层的。还注意到,组块和分块之间的分配基于实施方式或者其它动态因素而有所变化。例如,相同对象能够被存储为具有100个分块的单个组块,或者均具有25个分块的四个组块。一些实施方式基于来自实际使用的经验反馈而改变组块的数目。
已经出于解释的目的而参考具体实施方式进行了以上描述。然而,以上的说明性讨论并非旨在是穷举的或者将本发明限制为所公开的确切形式。考虑到以上教导可能进行许多修改和变化。实施方式被选择并描述以便对本发明的原则及其实际应用进行最佳地解释,以因此如适用于所预期的特定使用的而使得本领域技术人员能够对本发明以及具有各种修改的各种实施方式最佳地加以利用。
Claims (21)
1.一种用于管理对象复制本在分布式存储系统中的放置的方法,包括:
在具有一个或多个处理器和存储器的所述分布式存储系统的第一实例处,其中所述存储器存储一个或多个程序以用于由所述一个或多个处理器执行:
接收与第一放置策略相关联的第一对象,其中,所述第一放置策略指定了所述第一对象的复制本在所述分布式存储系统中存储于何处的准则;
将所述对象分割为多个对象组块并且将所述多个对象组块中的第一对象组块分割为多个分块;
将所述多个分块存储在第一日志中,所述第一日志的相关联放置策略与所述第一放置策略相匹配;
存储所述第一对象的全局元数据,其中,所述全局元数据包括所述多个对象组块的列表,并且其中,所述列表包括每个所述对象组块的相应标识符;
存储所述第一对象组块的本地元数据,其中,所述本地元数据包括分块列表,所述分块列表识别所述多个分块中的每个分块,并且其中,所述本地元数据与所述第一日志相关联;
依据所述第一放置策略,将所述第一日志复制到所述分布式存储系统的第二实例,其中,所述全局元数据被更新以反映所述复制,而通过所述复制,所述本地元数据是未变化的。
2.根据权利要求1所述的方法,其中,所述全局元数据包括指定每个对象组块是分块还是分块列表的字段,并且其中,第二对象组块是分块且第一对象组块是分块列表。
3.根据权利要求1所述的方法,其中,所述全局元数据指定每个对象组块存储在哪个日志中,并且每个相应日志复制本包括分块索引,所述分块索引指定所述相应日志复制本中所存储的每个分块的位置。
4.根据权利要求1-3中任一项所述的方法,进一步包括,在所述第一实例处:
选择第一关闭的日志的复制本;
识别所述复制本中所存储的一个或多个对象组块,在所述全局元数据中不存在针对所述一个或多个对象组块的引用;以及
对所述复制本进行压缩,从而将所述复制本中所存储的分块整合为连续存储。
5.根据权利要求1-3中任一项所述的方法,其中,所述分布式存储系统具有处于不同地理位置的多个实例。
6.根据权利要求1-3中任一项所述的方法,其中,每个对象组块的数据被加密,并且每个对象组块的解密密钥被存储在所述全局元数据中,所述方法进一步包括:通过从所述全局元数据删除对应的解密密钥而实际上删除对象组块,从而使所述对象的数据成为不可访问的。
7.一种用于管理对象复制本在分布式存储系统中的放置的方法,包括:
在具有一个或多个处理器和存储器的所述分布式存储系统的第一实例处,其中所述存储器存储一个或多个程序以用于由所述一个或多个处理器执行:
打开一个或多个日志以用于存储对象组块,其中,每个相应日志与单个相应放置策略相关联;
接收第一对象,所述第一对象至少包括第一对象组块,其中,所述第一对象与第一放置策略相关联,并且其中,所述第一对象组块包括第一多个分块;
将所述第一多个分块存储在第一日志中,所述第一日志的相关联放置策略与所述第一放置策略相匹配,其中,所述第一日志仅存储放置策略与所述第一放置策略相匹配的对象的分块;
存储所述第一对象的全局元数据,其中,所述全局元数据包括与所述第一对象相对应的对象组块的第一列表,并且其中,所述第一列表包括所述第一对象组块的标识符;
存储所述第一对象组块的本地元数据,其中,所述本地元数据包括分块列表,所述分块列表识别所述第一多个分块中的每个分块,并且其中,所述本地元数据与所述第一日志相关联;
针对所述第一日志,对第一多个对象重复所述接收和存储操作,直至发生第一终止条件,所述第一多个对象的相关联放置策略与所述第一放置策略相匹配;
在发生所述第一终止条件之后,关闭所述第一日志,从而防止任何另外的分块被存储在所述第一日志中;以及
依据所述第一放置策略,将所述第一日志复制到所述分布式存储系统的第二实例,其中,所述全局元数据被更新以反映所述复制,而通过所述复制,所述本地元数据是未变化的。
8.根据权利要求7所述的方法,其中,每个对象组块包括一个或多个分块。
9.根据权利要求7所述的方法,其中,所述全局元数据包括指定每个对象组块是分块还是分块列表的字段。
10.根据权利要求9述的方法,其中,第二对象组块是分块,并且所述第一组块是分块列表。
11.根据权利要求7-10中任一项所述的方法,其中,所述第一对象包括两个或更多对象组块,包括不同于所述第一对象组块的第二对象组块,并且其中,所述第二对象组块被存储在不同于所述第一日志的第二日志中,其相关联放置策略与所述第一放置策略相匹配。
12.根据权利要求7-10中任一项所述的方法,其中,所述全局元数据指定每个对象组块被存储在哪个日志中,并且每个相应日志复制本包括分块索引,所述分块索引指定所述相应日志复制本中所存储的每个分块的位置。
13.根据权利要求7-10中任一项所述的方法,进一步包括,在所述第一实例处:
选择第一关闭的日志的复制本;
识别所述复制本中所存储的一个或多个对象组块,在所述全局元数据中不存在针对所述一个或多个对象组块的引用;以及
对所述复制本进行压缩,从而将所述复制本中所存储的分块整合为连续存储。
14.根据权利要求7-10中任一项所述的方法,其中,每个放置策略指定对象复制本的目标数目以及对象复制本的目标位置集合。
15.根据权利要求7-10中任一项所述的方法,其中,所述分布式存储系统具有处于不同地理位置的多个实例。
16.根据权利要求7-10中任一项所述的方法,每个对象组块的数据被加密,并且每个对象组块的解密密钥被存储在所述全局元数据中。
17.根据权利要求16所述的方法,进一步包括:通过从所述全局元数据删除对应的解密密钥而实际上删除对象组块,从而使所述对象的数据成为不可访问的。
18.一种用于管理对象复制本在分布式存储系统中的放置的计算机系统,所述分布式存储系统具有多个实例,每个相应实例包括:
一个或多个处理器;
存储器;以及
存储在所述存储器中的一个或多个程序,所述一个或多个程序包括指令,所述指令能够由所述一个或多个处理器执行以执行根据权利要求1-6中任一项所述的方法。
19.一种用于管理对象复制本在分布式存储系统中的放置的计算机系统,所述分布式存储系统具有多个实例,每个相应实例包括:
一个或多个处理器;
存储器;以及
存储在所述存储器中的一个或多个程序,所述一个或多个程序包括指令,所述指令能够由所述一个或多个处理器执行以执行根据权利要求7-17中任一项所述的方法。
20.一种其中存储有程序的非暂时性计算机可读存储介质,所述程序用于管理对象复制本在分布式存储系统中的放置,所述分布式存储系统具有多个实例,每个相应实例包括:一个或多个处理器以及存储器;所述一个或多个程序包括指令,所述指令能够由所述一个或多个处理器执行以执行根据权利要求1-6中任一项所述的方法。
21.一种其中存储有程序的非暂时性计算机可读存储介质,所述程序用于管理对象复制本在分布式存储系统中的放置,所述分布式存储系统具有多个实例,每个相应实例包括:一个或多个处理器以及存储器;所述一个或多个程序包括指令,所述指令能够由所述一个或多个处理器执行以执行根据权利要求7-17中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/142,706 | 2013-12-27 | ||
US14/142,706 US9158472B2 (en) | 2013-06-25 | 2013-12-27 | Hierarchical chunking of objects in a distributed storage system |
PCT/US2014/072356 WO2015100416A1 (en) | 2013-12-27 | 2014-12-24 | Hierarchical chunking of objects in a distributed storage system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105940396A true CN105940396A (zh) | 2016-09-14 |
CN105940396B CN105940396B (zh) | 2019-07-26 |
Family
ID=53479702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480074231.5A Active CN105940396B (zh) | 2013-12-27 | 2014-12-24 | 分布式存储系统中对象的层级组块 |
Country Status (8)
Country | Link |
---|---|
US (2) | US9158472B2 (zh) |
EP (1) | EP3087513B1 (zh) |
JP (1) | JP6479020B2 (zh) |
CN (1) | CN105940396B (zh) |
AU (1) | AU2014369830B2 (zh) |
CA (1) | CA2935215C (zh) |
DE (1) | DE202014010898U1 (zh) |
WO (1) | WO2015100416A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109885539A (zh) * | 2019-01-28 | 2019-06-14 | 南京邮电大学 | 一种日志文件管理方法 |
CN113468232A (zh) * | 2017-02-27 | 2021-10-01 | 分秒库公司 | 用于查询时间序列数据的可扩展数据库系统 |
CN114567503A (zh) * | 2022-03-04 | 2022-05-31 | 南京联成科技发展股份有限公司 | 一种集中管控的可信的数据采集的加密方法 |
Families Citing this family (164)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
US9158472B2 (en) * | 2013-06-25 | 2015-10-13 | Google Inc. | Hierarchical chunking of objects in a distributed storage system |
US11960371B2 (en) | 2014-06-04 | 2024-04-16 | Pure Storage, Inc. | Message persistence in a zoned system |
US9003144B1 (en) | 2014-06-04 | 2015-04-07 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
US11068363B1 (en) | 2014-06-04 | 2021-07-20 | Pure Storage, Inc. | Proactively rebuilding data in a storage cluster |
US9367243B1 (en) | 2014-06-04 | 2016-06-14 | Pure Storage, Inc. | Scalable non-uniform storage sizes |
US9836234B2 (en) | 2014-06-04 | 2017-12-05 | Pure Storage, Inc. | Storage cluster |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US10574754B1 (en) | 2014-06-04 | 2020-02-25 | Pure Storage, Inc. | Multi-chassis array with multi-level load balancing |
US11652884B2 (en) | 2014-06-04 | 2023-05-16 | Pure Storage, Inc. | Customized hash algorithms |
US9613078B2 (en) | 2014-06-26 | 2017-04-04 | Amazon Technologies, Inc. | Multi-database log with multi-item transaction support |
US11886308B2 (en) | 2014-07-02 | 2024-01-30 | Pure Storage, Inc. | Dual class of service for unified file and object messaging |
US9021297B1 (en) | 2014-07-02 | 2015-04-28 | Pure Storage, Inc. | Redundant, fault-tolerant, distributed remote procedure call cache in a storage system |
US11604598B2 (en) | 2014-07-02 | 2023-03-14 | Pure Storage, Inc. | Storage cluster with zoned drives |
US8868825B1 (en) | 2014-07-02 | 2014-10-21 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US9836245B2 (en) | 2014-07-02 | 2017-12-05 | Pure Storage, Inc. | Non-volatile RAM and flash memory in a non-volatile solid-state storage |
US9747229B1 (en) | 2014-07-03 | 2017-08-29 | Pure Storage, Inc. | Self-describing data format for DMA in a non-volatile solid-state storage |
US9811677B2 (en) | 2014-07-03 | 2017-11-07 | Pure Storage, Inc. | Secure data replication in a storage grid |
US10853311B1 (en) | 2014-07-03 | 2020-12-01 | Pure Storage, Inc. | Administration through files in a storage system |
US9483346B2 (en) | 2014-08-07 | 2016-11-01 | Pure Storage, Inc. | Data rebuild on feedback from a queue in a non-volatile solid-state storage |
US9082512B1 (en) | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US9495255B2 (en) | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
US10079711B1 (en) | 2014-08-20 | 2018-09-18 | Pure Storage, Inc. | Virtual file server with preserved MAC address |
US10025802B2 (en) | 2014-09-19 | 2018-07-17 | Amazon Technologies, Inc. | Automated configuration of log-coordinated storage groups |
US9799017B1 (en) | 2014-09-19 | 2017-10-24 | Amazon Technologies, Inc. | Cross-data-store operations in log-coordinated storage systems |
US10303796B2 (en) * | 2015-01-09 | 2019-05-28 | Ariba, Inc. | Updating distributed shards without compromising on consistency |
US9904722B1 (en) | 2015-03-13 | 2018-02-27 | Amazon Technologies, Inc. | Log-based distributed transaction management |
US9940234B2 (en) | 2015-03-26 | 2018-04-10 | Pure Storage, Inc. | Aggressive data deduplication using lazy garbage collection |
US9916458B2 (en) * | 2015-03-31 | 2018-03-13 | EMC IP Holding Company LLC | Secure cloud-based storage of data shared across file system objects and clients |
US10191914B2 (en) | 2015-03-31 | 2019-01-29 | EMC IP Holding Company LLC | De-duplicating distributed file system using cloud-based object store |
US10178169B2 (en) | 2015-04-09 | 2019-01-08 | Pure Storage, Inc. | Point to point based backend communication layer for storage processing |
US9672125B2 (en) | 2015-04-10 | 2017-06-06 | Pure Storage, Inc. | Ability to partition an array into two or more logical arrays with independently running software |
US10846275B2 (en) | 2015-06-26 | 2020-11-24 | Pure Storage, Inc. | Key management in a storage device |
US11609890B1 (en) | 2015-06-29 | 2023-03-21 | Amazon Technologies, Inc. | Schema management for journal-based storage systems |
US10866968B1 (en) | 2015-06-29 | 2020-12-15 | Amazon Technologies, Inc. | Compact snapshots of journal-based storage systems |
US11599520B1 (en) | 2015-06-29 | 2023-03-07 | Amazon Technologies, Inc. | Consistency management using query restrictions in journal-based storage systems |
US10866865B1 (en) | 2015-06-29 | 2020-12-15 | Amazon Technologies, Inc. | Storage system journal entry redaction |
US10983732B2 (en) | 2015-07-13 | 2021-04-20 | Pure Storage, Inc. | Method and system for accessing a file |
US10031935B1 (en) * | 2015-08-21 | 2018-07-24 | Amazon Technologies, Inc. | Customer-requested partitioning of journal-based storage systems |
US10108355B2 (en) | 2015-09-01 | 2018-10-23 | Pure Storage, Inc. | Erase block state detection |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US10229142B2 (en) * | 2015-09-14 | 2019-03-12 | International Business Machines Corporation | Method and system for handling binary large objects |
US9768953B2 (en) | 2015-09-30 | 2017-09-19 | Pure Storage, Inc. | Resharing of a split secret |
US10853266B2 (en) | 2015-09-30 | 2020-12-01 | Pure Storage, Inc. | Hardware assisted data lookup methods |
US10762069B2 (en) | 2015-09-30 | 2020-09-01 | Pure Storage, Inc. | Mechanism for a system where data and metadata are located closely together |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
US10007457B2 (en) | 2015-12-22 | 2018-06-26 | Pure Storage, Inc. | Distributed transactions with token-associated execution |
US9971822B1 (en) | 2015-12-29 | 2018-05-15 | Amazon Technologies, Inc. | Replicated state management using journal-based registers |
CN105677250B (zh) | 2016-01-04 | 2019-07-12 | 北京百度网讯科技有限公司 | 对象存储系统中的对象数据的更新方法和更新装置 |
US10261690B1 (en) | 2016-05-03 | 2019-04-16 | Pure Storage, Inc. | Systems and methods for operating a storage system |
US10838620B2 (en) | 2016-05-26 | 2020-11-17 | Nutanix, Inc. | Efficient scaling of distributed storage systems |
CN107622067B (zh) * | 2016-07-13 | 2020-11-20 | 杭州海康威视数字技术股份有限公司 | 一种对多个多媒体文件的存储、读取和显示方法及装置 |
US11861188B2 (en) | 2016-07-19 | 2024-01-02 | Pure Storage, Inc. | System having modular accelerators |
US10768819B2 (en) | 2016-07-22 | 2020-09-08 | Pure Storage, Inc. | Hardware support for non-disruptive upgrades |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US11604690B2 (en) | 2016-07-24 | 2023-03-14 | Pure Storage, Inc. | Online failure span determination |
US10366004B2 (en) | 2016-07-26 | 2019-07-30 | Pure Storage, Inc. | Storage system with elective garbage collection to reduce flash contention |
US11886334B2 (en) | 2016-07-26 | 2024-01-30 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11797212B2 (en) | 2016-07-26 | 2023-10-24 | Pure Storage, Inc. | Data migration for zoned drives |
US10203903B2 (en) | 2016-07-26 | 2019-02-12 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
US11734169B2 (en) | 2016-07-26 | 2023-08-22 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11422719B2 (en) | 2016-09-15 | 2022-08-23 | Pure Storage, Inc. | Distributed file deletion and truncation |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
US10866945B2 (en) | 2016-10-10 | 2020-12-15 | AlphaPoint | User account management via a distributed ledger |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
US10209901B2 (en) | 2017-01-04 | 2019-02-19 | Walmart Apollo, Llc | Systems and methods for distributive data storage |
US11307998B2 (en) | 2017-01-09 | 2022-04-19 | Pure Storage, Inc. | Storage efficiency of encrypted host system data |
US9747158B1 (en) | 2017-01-13 | 2017-08-29 | Pure Storage, Inc. | Intelligent refresh of 3D NAND |
US11955187B2 (en) | 2017-01-13 | 2024-04-09 | Pure Storage, Inc. | Refresh of differing capacity NAND |
US10481988B2 (en) * | 2017-01-24 | 2019-11-19 | Zerto Ltd. | System and method for consistency verification of replicated data in a recovery system |
US10552341B2 (en) * | 2017-02-17 | 2020-02-04 | International Business Machines Corporation | Zone storage—quickly returning to a state of consistency following an unexpected event |
US11360942B2 (en) | 2017-03-13 | 2022-06-14 | Wandisco Inc. | Methods, devices and systems for maintaining consistency of metadata and data across data centers |
US10528488B1 (en) | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
US11016667B1 (en) | 2017-04-05 | 2021-05-25 | Pure Storage, Inc. | Efficient mapping for LUNs in storage memory with holes in address space |
US10141050B1 (en) | 2017-04-27 | 2018-11-27 | Pure Storage, Inc. | Page writes for triple level cell flash memory |
US10516645B1 (en) | 2017-04-27 | 2019-12-24 | Pure Storage, Inc. | Address resolution broadcasting in a networked device |
US10701154B2 (en) | 2017-05-22 | 2020-06-30 | Microsoft Technology Licensing, Llc | Sharding over multi-link data channels |
US11782625B2 (en) | 2017-06-11 | 2023-10-10 | Pure Storage, Inc. | Heterogeneity supportive resiliency groups |
US10425473B1 (en) | 2017-07-03 | 2019-09-24 | Pure Storage, Inc. | Stateful connection reset in a storage cluster with a stateless load balancer |
US11016937B2 (en) * | 2017-07-17 | 2021-05-25 | Microsoft Technology Licensing, Llc | Updateable distributed file framework |
US10761743B1 (en) | 2017-07-17 | 2020-09-01 | EMC IP Holding Company LLC | Establishing data reliability groups within a geographically distributed data storage environment |
US10817388B1 (en) | 2017-07-21 | 2020-10-27 | EMC IP Holding Company LLC | Recovery of tree data in a geographically distributed environment |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
US11210211B2 (en) | 2017-08-21 | 2021-12-28 | Western Digital Technologies, Inc. | Key data store garbage collection and multipart object management |
US11055266B2 (en) | 2017-08-21 | 2021-07-06 | Western Digital Technologies, Inc. | Efficient key data store entry traversal and result generation |
US11210212B2 (en) | 2017-08-21 | 2021-12-28 | Western Digital Technologies, Inc. | Conflict resolution and garbage collection in distributed databases |
US10824612B2 (en) | 2017-08-21 | 2020-11-03 | Western Digital Technologies, Inc. | Key ticketing system with lock-free concurrency and versioning |
US10880040B1 (en) | 2017-10-23 | 2020-12-29 | EMC IP Holding Company LLC | Scale-out distributed erasure coding |
US10572191B1 (en) | 2017-10-24 | 2020-02-25 | EMC IP Holding Company LLC | Disaster recovery with distributed erasure coding |
US10496330B1 (en) | 2017-10-31 | 2019-12-03 | Pure Storage, Inc. | Using flash storage devices with different sized erase blocks |
US10545687B1 (en) | 2017-10-31 | 2020-01-28 | Pure Storage, Inc. | Data rebuild when changing erase block sizes during drive replacement |
US10884919B2 (en) * | 2017-10-31 | 2021-01-05 | Pure Storage, Inc. | Memory management in a storage system |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
US10740306B1 (en) * | 2017-12-04 | 2020-08-11 | Amazon Technologies, Inc. | Large object partitioning system |
WO2019122971A1 (en) * | 2017-12-20 | 2019-06-27 | Telefonaktiebolaget Lm Ericsson (Publ) | Datafall: a policy-driven algorithm for decentralized placement and reorganization of replicated data |
US10382554B1 (en) * | 2018-01-04 | 2019-08-13 | Emc Corporation | Handling deletes with distributed erasure coding |
CN110058790B (zh) * | 2018-01-18 | 2022-05-13 | 伊姆西Ip控股有限责任公司 | 用于存储数据的方法、设备和计算机程序产品 |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
US10976948B1 (en) | 2018-01-31 | 2021-04-13 | Pure Storage, Inc. | Cluster expansion mechanism |
US11036596B1 (en) | 2018-02-18 | 2021-06-15 | Pure Storage, Inc. | System for delaying acknowledgements on open NAND locations until durability has been confirmed |
US10817374B2 (en) | 2018-04-12 | 2020-10-27 | EMC IP Holding Company LLC | Meta chunks |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
US10579297B2 (en) | 2018-04-27 | 2020-03-03 | EMC IP Holding Company LLC | Scaling-in for geographically diverse storage |
US11023130B2 (en) | 2018-06-15 | 2021-06-01 | EMC IP Holding Company LLC | Deleting data in a geographically diverse storage construct |
US10594340B2 (en) | 2018-06-15 | 2020-03-17 | EMC IP Holding Company LLC | Disaster recovery with consolidated erasure coding in geographically distributed setups |
US10936196B2 (en) | 2018-06-15 | 2021-03-02 | EMC IP Holding Company LLC | Data convolution for geographically diverse storage |
US10885054B2 (en) * | 2018-07-03 | 2021-01-05 | Mastercard International Incorporated | Tracking metadata changes in multiple data stores and generating alerts for detected data impacts |
US11354058B2 (en) | 2018-09-06 | 2022-06-07 | Pure Storage, Inc. | Local relocation of data stored at a storage device of a storage system |
US11868309B2 (en) | 2018-09-06 | 2024-01-09 | Pure Storage, Inc. | Queue management for data relocation |
US11500570B2 (en) | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
US10922142B2 (en) | 2018-10-31 | 2021-02-16 | Nutanix, Inc. | Multi-stage IOPS allocation |
US11436203B2 (en) * | 2018-11-02 | 2022-09-06 | EMC IP Holding Company LLC | Scaling out geographically diverse storage |
US10691378B1 (en) * | 2018-11-30 | 2020-06-23 | International Business Machines Corporation | Data replication priority management |
US10901635B2 (en) | 2018-12-04 | 2021-01-26 | EMC IP Holding Company LLC | Mapped redundant array of independent nodes for data storage with high performance using logical columns of the nodes with different widths and different positioning patterns |
US11119683B2 (en) | 2018-12-20 | 2021-09-14 | EMC IP Holding Company LLC | Logical compaction of a degraded chunk in a geographically diverse data storage system |
US10931777B2 (en) | 2018-12-20 | 2021-02-23 | EMC IP Holding Company LLC | Network efficient geographically diverse data storage system employing degraded chunks |
US10892782B2 (en) | 2018-12-21 | 2021-01-12 | EMC IP Holding Company LLC | Flexible system and method for combining erasure-coded protection sets |
US11023331B2 (en) | 2019-01-04 | 2021-06-01 | EMC IP Holding Company LLC | Fast recovery of data in a geographically distributed storage environment |
US10942827B2 (en) | 2019-01-22 | 2021-03-09 | EMC IP Holding Company LLC | Replication of data in a geographically distributed storage environment |
US10942825B2 (en) | 2019-01-29 | 2021-03-09 | EMC IP Holding Company LLC | Mitigating real node failure in a mapped redundant array of independent nodes |
US10866766B2 (en) | 2019-01-29 | 2020-12-15 | EMC IP Holding Company LLC | Affinity sensitive data convolution for data storage systems |
US10936239B2 (en) | 2019-01-29 | 2021-03-02 | EMC IP Holding Company LLC | Cluster contraction of a mapped redundant array of independent nodes |
US10846003B2 (en) | 2019-01-29 | 2020-11-24 | EMC IP Holding Company LLC | Doubly mapped redundant array of independent nodes for data storage |
US11029865B2 (en) | 2019-04-03 | 2021-06-08 | EMC IP Holding Company LLC | Affinity sensitive storage of data corresponding to a mapped redundant array of independent nodes |
US10944826B2 (en) | 2019-04-03 | 2021-03-09 | EMC IP Holding Company LLC | Selective instantiation of a storage service for a mapped redundant array of independent nodes |
US11099986B2 (en) | 2019-04-12 | 2021-08-24 | Pure Storage, Inc. | Efficient transfer of memory contents |
US11113146B2 (en) | 2019-04-30 | 2021-09-07 | EMC IP Holding Company LLC | Chunk segment recovery via hierarchical erasure coding in a geographically diverse data storage system |
US11119686B2 (en) | 2019-04-30 | 2021-09-14 | EMC IP Holding Company LLC | Preservation of data during scaling of a geographically diverse data storage system |
US11121727B2 (en) | 2019-04-30 | 2021-09-14 | EMC IP Holding Company LLC | Adaptive data storing for data storage systems employing erasure coding |
US11748004B2 (en) | 2019-05-03 | 2023-09-05 | EMC IP Holding Company LLC | Data replication using active and passive data storage modes |
KR20220140639A (ko) * | 2019-05-22 | 2022-10-18 | 묘타, 인크. | 보안, 복원, 및 제어가 강화된 분산된 데이터 스토리지를 위한 방법 및 시스템 |
US11281394B2 (en) | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
US11209996B2 (en) | 2019-07-15 | 2021-12-28 | EMC IP Holding Company LLC | Mapped cluster stretching for increasing workload in a data storage system |
US11449399B2 (en) | 2019-07-30 | 2022-09-20 | EMC IP Holding Company LLC | Mitigating real node failure of a doubly mapped redundant array of independent nodes |
US11023145B2 (en) | 2019-07-30 | 2021-06-01 | EMC IP Holding Company LLC | Hybrid mapped clusters for data storage |
US11228322B2 (en) | 2019-09-13 | 2022-01-18 | EMC IP Holding Company LLC | Rebalancing in a geographically diverse storage system employing erasure coding |
US11449248B2 (en) | 2019-09-26 | 2022-09-20 | EMC IP Holding Company LLC | Mapped redundant array of independent data storage regions |
US11893126B2 (en) | 2019-10-14 | 2024-02-06 | Pure Storage, Inc. | Data deletion for a multi-tenant environment |
US11288139B2 (en) | 2019-10-31 | 2022-03-29 | EMC IP Holding Company LLC | Two-step recovery employing erasure coding in a geographically diverse data storage system |
US11435910B2 (en) | 2019-10-31 | 2022-09-06 | EMC IP Holding Company LLC | Heterogeneous mapped redundant array of independent nodes for data storage |
US11119690B2 (en) | 2019-10-31 | 2021-09-14 | EMC IP Holding Company LLC | Consolidation of protection sets in a geographically diverse data storage environment |
US11435957B2 (en) | 2019-11-27 | 2022-09-06 | EMC IP Holding Company LLC | Selective instantiation of a storage service for a doubly mapped redundant array of independent nodes |
US11847331B2 (en) | 2019-12-12 | 2023-12-19 | Pure Storage, Inc. | Budgeting open blocks of a storage unit based on power loss prevention |
US11416144B2 (en) | 2019-12-12 | 2022-08-16 | Pure Storage, Inc. | Dynamic use of segment or zone power loss protection in a flash device |
US11704192B2 (en) | 2019-12-12 | 2023-07-18 | Pure Storage, Inc. | Budgeting open blocks based on power loss protection |
US11144220B2 (en) | 2019-12-24 | 2021-10-12 | EMC IP Holding Company LLC | Affinity sensitive storage of data corresponding to a doubly mapped redundant array of independent nodes |
US11231860B2 (en) | 2020-01-17 | 2022-01-25 | EMC IP Holding Company LLC | Doubly mapped redundant array of independent nodes for data storage with high performance |
US11188432B2 (en) | 2020-02-28 | 2021-11-30 | Pure Storage, Inc. | Data resiliency by partially deallocating data blocks of a storage device |
US11507308B2 (en) | 2020-03-30 | 2022-11-22 | EMC IP Holding Company LLC | Disk access event control for mapped nodes supported by a real cluster storage system |
US11474986B2 (en) | 2020-04-24 | 2022-10-18 | Pure Storage, Inc. | Utilizing machine learning to streamline telemetry processing of storage media |
US11288229B2 (en) | 2020-05-29 | 2022-03-29 | EMC IP Holding Company LLC | Verifiable intra-cluster migration for a chunk storage system |
US11868407B2 (en) * | 2020-09-24 | 2024-01-09 | Dell Products L.P. | Multi-level data structure comparison using commutative digesting for unordered data collections |
US11693983B2 (en) | 2020-10-28 | 2023-07-04 | EMC IP Holding Company LLC | Data protection via commutative erasure coding in a geographically diverse data storage system |
US11620214B2 (en) * | 2020-10-30 | 2023-04-04 | Nutanix, Inc. | Transactional allocation and deallocation of blocks in a block store |
US11487455B2 (en) | 2020-12-17 | 2022-11-01 | Pure Storage, Inc. | Dynamic block allocation to optimize storage system performance |
US11847324B2 (en) | 2020-12-31 | 2023-12-19 | Pure Storage, Inc. | Optimizing resiliency groups for data regions of a storage system |
US11614880B2 (en) | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
US11847141B2 (en) | 2021-01-19 | 2023-12-19 | EMC IP Holding Company LLC | Mapped redundant array of independent nodes employing mapped reliability groups for data storage |
US11625174B2 (en) | 2021-01-20 | 2023-04-11 | EMC IP Holding Company LLC | Parity allocation for a virtual redundant array of independent disks |
US11507597B2 (en) | 2021-03-31 | 2022-11-22 | Pure Storage, Inc. | Data replication to meet a recovery point objective |
US11354191B1 (en) | 2021-05-28 | 2022-06-07 | EMC IP Holding Company LLC | Erasure coding in a large geographically diverse data storage system |
US11449234B1 (en) | 2021-05-28 | 2022-09-20 | EMC IP Holding Company LLC | Efficient data access operations via a mapping layer instance for a doubly mapped redundant array of independent nodes |
WO2023147842A1 (en) * | 2022-02-01 | 2023-08-10 | Huawei Technologies Co., Ltd. | Data storage and methods of deduplication of data storage, storing new file and deleting file |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110196833A1 (en) * | 2010-02-09 | 2011-08-11 | Alexandre Drobychev | Storage of Data In A Distributed Storage System |
CN103038742A (zh) * | 2010-02-09 | 2013-04-10 | 谷歌公司 | 用于在分布式存储系统内动态复制数据的方法和系统 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7085789B1 (en) | 2001-07-30 | 2006-08-01 | Microsoft Corporation | Compact garbage collection tables |
US7574699B1 (en) | 2003-03-19 | 2009-08-11 | Sun Microsystems, Inc. | Compact type format data system and method |
US8180742B2 (en) | 2004-07-01 | 2012-05-15 | Emc Corporation | Policy-based information management |
US7778984B2 (en) | 2004-11-19 | 2010-08-17 | Microsoft Corporation | System and method for a distributed object store |
US7464247B2 (en) | 2005-12-19 | 2008-12-09 | Yahoo! Inc. | System and method for updating data in a distributed column chunk data store |
US8589574B1 (en) | 2005-12-29 | 2013-11-19 | Amazon Technologies, Inc. | Dynamic application instance discovery and state management within a distributed system |
US7856437B2 (en) | 2007-07-31 | 2010-12-21 | Hewlett-Packard Development Company, L.P. | Storing nodes representing respective chunks of files in a data store |
US8103628B2 (en) | 2008-04-09 | 2012-01-24 | Harmonic Inc. | Directed placement of data in a redundant data storage system |
WO2010075401A2 (en) | 2008-12-22 | 2010-07-01 | Google Inc. | Asynchronous distributed garbage collection for replicated storage clusters |
US8301671B1 (en) | 2009-01-08 | 2012-10-30 | Avaya Inc. | Method and apparatus providing removal of replicated objects based on garbage collection |
US8171202B2 (en) * | 2009-04-21 | 2012-05-01 | Google Inc. | Asynchronous distributed object uploading for replicated content addressable storage clusters |
US8560639B2 (en) | 2009-04-24 | 2013-10-15 | Microsoft Corporation | Dynamic placement of replica data |
US20100306171A1 (en) | 2009-06-02 | 2010-12-02 | Microsoft Corporation | Timeline Experience for Restore User Interface |
US8886602B2 (en) | 2010-02-09 | 2014-11-11 | Google Inc. | Location assignment daemon (LAD) for a distributed storage system |
US8341118B2 (en) | 2010-02-09 | 2012-12-25 | Google Inc. | Method and system for dynamically replicating data within a distributed storage system |
JP5569074B2 (ja) * | 2010-03-19 | 2014-08-13 | 日本電気株式会社 | ストレージシステム |
US8898798B2 (en) | 2010-09-01 | 2014-11-25 | Apixio, Inc. | Systems and methods for medical information analysis with deidentification and reidentification |
JP5639871B2 (ja) * | 2010-12-13 | 2014-12-10 | 日清工業有限公司 | 電子閃光装置 |
US8380681B2 (en) | 2010-12-16 | 2013-02-19 | Microsoft Corporation | Extensible pipeline for data deduplication |
US8874515B2 (en) | 2011-04-11 | 2014-10-28 | Sandisk Enterprise Ip Llc | Low level object version tracking using non-volatile memory write generations |
EP2710510A4 (en) * | 2011-05-14 | 2015-05-06 | Bitcasa Inc | CLOUD FILE SYSTEM WITH SERVER DEPLOYMENT OF USER UNKNOWN ENCRYPTED FILES |
JP2013025742A (ja) * | 2011-07-26 | 2013-02-04 | Nippon Telegr & Teleph Corp <Ntt> | 分散ファイル管理装置、分散ファイル管理方法及びプログラム |
WO2013074665A1 (en) | 2011-11-14 | 2013-05-23 | Google Inc. | Data processing service |
CA2877284A1 (en) | 2012-06-18 | 2013-12-27 | Actifio, Inc. | Enhanced data management virtualization system |
KR102050723B1 (ko) | 2012-09-28 | 2019-12-02 | 삼성전자 주식회사 | 컴퓨팅 시스템 및 그 데이터 관리 방법 |
US20140201151A1 (en) | 2013-01-11 | 2014-07-17 | Commvault Systems, Inc. | Systems and methods to select files for restoration from block-level backup for virtual machines |
US8775485B1 (en) | 2013-03-15 | 2014-07-08 | Joyent, Inc. | Object store management operations within compute-centric object stores |
US9158472B2 (en) * | 2013-06-25 | 2015-10-13 | Google Inc. | Hierarchical chunking of objects in a distributed storage system |
US9600558B2 (en) | 2013-06-25 | 2017-03-21 | Google Inc. | Grouping of objects in a distributed storage system based on journals and placement policies |
-
2013
- 2013-12-27 US US14/142,706 patent/US9158472B2/en active Active
-
2014
- 2014-12-24 JP JP2016543054A patent/JP6479020B2/ja active Active
- 2014-12-24 EP EP14874957.5A patent/EP3087513B1/en active Active
- 2014-12-24 WO PCT/US2014/072356 patent/WO2015100416A1/en active Application Filing
- 2014-12-24 DE DE202014010898.6U patent/DE202014010898U1/de active Active
- 2014-12-24 CN CN201480074231.5A patent/CN105940396B/zh active Active
- 2014-12-24 AU AU2014369830A patent/AU2014369830B2/en active Active
- 2014-12-24 CA CA2935215A patent/CA2935215C/en active Active
-
2015
- 2015-10-13 US US14/882,205 patent/US9400828B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110196833A1 (en) * | 2010-02-09 | 2011-08-11 | Alexandre Drobychev | Storage of Data In A Distributed Storage System |
CN103038742A (zh) * | 2010-02-09 | 2013-04-10 | 谷歌公司 | 用于在分布式存储系统内动态复制数据的方法和系统 |
Non-Patent Citations (2)
Title |
---|
JAN-JAN WU等: "Metadata Partitioning for Large-scale Distributed Storage Systems", 《2010 IEEE 3RD INTERNATIONAL CONFERENCE ON CLOUD COMPUTING》 * |
ZHONGHUA SHENG等: "A Privacy-Protecting File System on Public Cloud", 《2011 INTERNATIONAL CONFERENCE ON CLOUD AND SERVICE COMPUTING》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113468232A (zh) * | 2017-02-27 | 2021-10-01 | 分秒库公司 | 用于查询时间序列数据的可扩展数据库系统 |
CN109885539A (zh) * | 2019-01-28 | 2019-06-14 | 南京邮电大学 | 一种日志文件管理方法 |
CN114567503A (zh) * | 2022-03-04 | 2022-05-31 | 南京联成科技发展股份有限公司 | 一种集中管控的可信的数据采集的加密方法 |
Also Published As
Publication number | Publication date |
---|---|
AU2014369830B2 (en) | 2019-01-17 |
JP6479020B2 (ja) | 2019-03-06 |
EP3087513A1 (en) | 2016-11-02 |
EP3087513B1 (en) | 2020-11-18 |
EP3087513A4 (en) | 2017-08-09 |
JP2017500670A (ja) | 2017-01-05 |
DE202014010898U1 (de) | 2017-01-13 |
AU2014369830A1 (en) | 2016-07-14 |
US9158472B2 (en) | 2015-10-13 |
US9400828B2 (en) | 2016-07-26 |
US20160034549A1 (en) | 2016-02-04 |
WO2015100416A1 (en) | 2015-07-02 |
CN105940396B (zh) | 2019-07-26 |
CA2935215C (en) | 2019-12-31 |
CA2935215A1 (en) | 2015-07-02 |
US20150186043A1 (en) | 2015-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105940396A (zh) | 分布式存储系统中对象的层级组块 | |
EP3014487B1 (en) | Grouping of objects in a distributed storage system based on journals and placement policies | |
US8285686B2 (en) | Executing prioritized replication requests for objects in a distributed storage system | |
US9396202B1 (en) | Weakly synchronized garbage collection and compaction for aggregated, replicated object stores | |
US8171065B2 (en) | Relational objects for the optimized management of fixed-content storage systems | |
CN104813321B (zh) | 在分布式对象存储生态系统中的去耦合的内容以及元数据 | |
US7546486B2 (en) | Scalable distributed object management in a distributed fixed content storage system | |
US8341118B2 (en) | Method and system for dynamically replicating data within a distributed storage system | |
CN104391930A (zh) | 分布式文件存储装置和方法 | |
CN103905537A (zh) | 分布式环境下管理工业实时数据存储的系统 | |
US11093465B2 (en) | Object storage system with versioned meta objects | |
US20200401312A1 (en) | Object Storage System with Meta Object Replication | |
CN115396447A (zh) | 一种分布式数据库的负载均衡方法、装置、设备及介质 | |
CN107111615A (zh) | 一种用于分布式存储系统的数据缓存方法及装置 | |
CN110716898A (zh) | 一种野外地质调查数据实时汇聚方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: American California Applicant after: Google limited liability company Address before: American California Applicant before: Google Inc. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |