CN106233259B - 在分散存储网络中检索多世代存储数据的方法和系统 - Google Patents
在分散存储网络中检索多世代存储数据的方法和系统 Download PDFInfo
- Publication number
- CN106233259B CN106233259B CN201580021723.2A CN201580021723A CN106233259B CN 106233259 B CN106233259 B CN 106233259B CN 201580021723 A CN201580021723 A CN 201580021723A CN 106233259 B CN106233259 B CN 106233259B
- Authority
- CN
- China
- Prior art keywords
- data
- metadata
- slice
- dst
- storage
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
-
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99938—Concurrency, e.g. lock management in shared database
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种方法由处理模块开始,分散存储网络(DSN)基于数据对象名称生成用于检索元数据寻址信息的第一检索请求,其中第一检索请求根据DSN的读请求格式被格式化。该方法继续处理模块基于检索的元数据寻址信息生成用于检索元数据的第二检索请求,其中第二检索请求根据DSN的读请求格式被格式化。该方法继续处理模块基于检索的元数据生成用于检索与数据对象名称相关联的数据对象的至少一部分的第三检索请求,其中第三检索请求根据DSN的读请求格式被格式化。
Description
相关申请的交叉引用
本申请要求于2014年4月30日提交的名称为“访问分散存储网络中的元数据(ACCESSING METADATA IN A DISPERSED STORAGE NETWORK)”的美国临时申请No.61/986,361以及于2015年3月4日提交的名称为“在分散存储网络中检索多世代存储数据(RETRIEVING MULTI-GENERATIONAL STORED DATA IN A DISPERSED STORAGE NETWORK)”的美国发明申请No.14/638,175的优先权,这两个申请通过引用整体合并于本文中,并且为了所有目的而成为本申请的一部分。
关于联邦政府资助的研究或开发的声明-不适用
在紧凑盘上提交的材料的引用并入-不适用
技术领域
本发明一般地涉及计算机网络,并且更特别地涉及数据的分散存储和数据的分布式任务处理。
背景技术
已知计算设备传送数据、处理数据和/或存储数据。这样的计算设备从无线智能电话、膝上型计算机、平板电脑、个人计算机(PC)、工作站和视频游戏设备到支持数百万网络搜索、股票交易或在线购买的数据中心。一般而言,计算设备包括中央处理单元(CPU),存储器系统,用户输入/输出接口,外围设备接口,和互连总线结构。
如进一步已知的,计算机可以通过使用“云计算”来有效地扩展其CPU,以代表计算机执行一个或多个计算功能(例如,服务、应用、算法、算术逻辑功能等)。此外,对于大型服务、应用和/或功能,云计算可以由多个云计算资源以分布式方式执行以改善完成服务、应用和/或功能的响应时间。例如,Hadoop是一种开源软件框架,其支持分布式应用,使应用能够由成千上万台计算机执行。
除了云计算之外,计算机可以使用“云存储”作为其存储器系统的一部分。众所周知,云存储使用户能够经由其计算机在互联网存储系统上存储文件、应用等。因特网存储系统可以包括RAID(独立磁盘冗余阵列)系统和/或分散存储系统,其使用纠错方案来对数据进行编码以便存储。
发明内容
根据本发明的一个方面,公开了一种由分散存储网络DSN的一个或多个计算设备的一个或多个处理模块执行的方法,其中所述DSN包括多个存储世代,所述多个存储世代的每一个使用多个存储单元,所述方法包括:基于数据对象名称生成用于检索元数据寻址信息的第一检索请求,其中所述第一检索请求根据所述DSN的读请求格式被格式化;基于检索的元数据寻址信息生成用于检索元数据的第二检索请求,其中所述第二检索请求根据所述DSN的读请求格式被格式化;以及基于检索的元数据生成用于检索与所述数据对象名称相关联的数据对象的至少一部分的第三检索请求,其中所述第三检索请求根据所述DSN的读请求格式被格式化,其中将所述元数据寻址信息、所述元数据和所述数据对象中的至少两个存储在所述多个存储世代的不同存储世代中。
根据本发明的另一个方面,公开了一种计算机可读存储介质,其包括:存储操作指令的至少一个存储器部分,当由分散存储网络DSN的一个或多个计算设备的一个或多个处理模块执行时,所述操作指令使所述一个或多个计算设备:基于数据对象名称生成用于检索元数据寻址信息的第一检索请求,其中所述第一检索请求根据所述DSN的读请求格式被格式化;基于检索的元数据寻址信息生成用于检索元数据的第二检索请求,其中所述第二检索请求根据所述DSN的读请求格式被格式化;以及基于检索的元数据生成用于检索与所述数据对象名称相关联的数据对象的至少一部分的第三检索请求,其中所述第三检索请求根据所述DSN的读请求格式被格式化;其中所述DSN包括多个存储世代,所述多个存储世代的每一个使用多个存储单元,并且其中将所述元数据寻址信息、所述元数据和所述数据对象中的至少两个存储在所述多个存储世代的不同存储世代中。
根据本发明的又一个方面,公开了一种分散存储网络DSN的计算设备组的计算设备,所述计算设备包括:接口;本地存储器;以及处理模块,所述处理模块可操作地联接到所述接口和所述本地存储器,其中所述处理模块用于:基于数据对象名称生成用于检索元数据寻址信息的第一检索请求,其中所述第一检索请求根据所述DSN的读请求格式被格式化;基于检索的元数据寻址信息生成用于检索元数据的第二检索请求,其中所述第二检索请求根据所述DSN的读请求格式被格式化;以及基于检索的元数据生成用于检索与所述数据对象名称相关联的数据对象的至少一部分的第三检索请求,其中所述第三检索请求根据所述DSN的读请求格式被格式化;其中所述DSN包括多个存储世代,所述多个存储世代的每一个使用多个存储单元,并且其中将所述元数据寻址信息、所述元数据和所述数据对象中的至少两个存储在所述多个存储世代的不同存储世代中。
附图说明
图1是根据本发明的分布式计算系统的实施例的示意性框图;
图2是根据本发明的计算核心的实施例的示意性框图;
图3是根据本发明的分布式存储和任务处理的例子的图示;
图4是根据本发明的出站分布式存储和/或任务(DST)处理的实施例的示意性框图;
图5是根据本发明的用于出站DST处理的方法的例子的逻辑图;
图6是根据本发明的分散错误编码的实施例的示意性框图;
图7是根据本发明的分散错误编码的段处理的例子的图示;
图8是根据本发明的分散错误编码的错误编码和切片处理的例子的图示;
图9是根据本发明的出站DST处理的分组选择处理的例子的图示;
图10是根据本发明的将数据转换成切片组的例子的图示;
图11是根据本发明的DST执行单元的实施例的示意性框图;
图12是根据本发明的DST执行单元的操作的例子的示意性框图;
图13是根据本发明的入站分布式存储和/或任务(DST)处理的实施例的示意性框图;
图14是根据本发明的用于入站DST处理的方法的例子的逻辑图;
图15是根据本发明的入站DST处理的解分组选择处理的例子的图示;
图16是根据本发明的分散错误解码的实施例的示意性框图;
图17是根据本发明的分散错误解码的解切片和错误解码处理的例子的图示;
图18是根据本发明的分散错误解码的解分段处理的例子的图示;
图19是根据本发明的将切片组转换为数据的例子的图示;
图20是根据本发明的分布式计算系统内的分布式存储的例子的图示;
图21是根据本发明的用于存储数据的出站分布式存储和/或任务(DST)处理的操作的例子的示意性框图;
图22是根据本发明的用于图21的例子的分散错误编码的例子的示意性框图;
图23是根据本发明的将数据转换为柱切片组以便存储的例子的图示;
图24是根据本发明的DST执行单元的存储操作的例子的示意性框图;
图25是根据本发明的用于检索分散错误编码数据的入站分布式存储和/或任务(DST)处理的操作例子的示意性框图;
图26是根据本发明的用于图25的例子的分散错误解码的例子的示意性框图;
图27是根据本发明的存储多个数据和多个任务代码的分布式存储和任务处理网络(DSTN)模块的例子的示意性框图;
图28是根据本发明的对存储数据执行任务的分布式计算系统的例子的示意性框图;
图29是根据本发明的促进图28的例子的任务分布模块的实施例的示意性框图;
图30是根据本发明的对存储数据执行任务的分布式计算系统的具体例子的图示;
图31是根据本发明的用于图30的例子的存储数据和任务代码的分布式存储和任务处理网络(DSTN)模块的例子的示意性框图;
图32是根据本发明的用于图30的例子的DST分配信息的例子的图示;
图33-38是根据本发明的执行图30的例子的DSTN模块的示意性框图;
图39是根据本发明的用于图30的例子的将结果信息组合成最终结果的例子的图示;
图40A是根据本发明的分散存储网络(DSN)的实施例的示意性框图;
图40B是示出根据本发明的用于检索数据的确定性函数模块的实施例的示意性框图;
图40C是示出根据本发明的检索多世代存储数据的例子的流程图;
图41A是根据本发明的分散存储网络(DSN)的另一实施例的示意性框图;
图41B是示出根据本发明的确认数据对象的存储的例子的流程图;
图42A和42B是根据本发明的分散存储网络(DSN)的另一实施例的示意性框图;
图42C是示出根据本发明的委托迭代存储单元访问过程的例子的流程图;
图43A是根据本发明的分散存储网络(DSN)的另一实施例的示意性框图;
图43B是示出根据本发明的将数据访问资源与索引相关联的例子的流程图;
图44A是根据本发明的分散存储网络(DSN)的另一实施例的示意性框图;
图44B是示出根据本发明的更新分散分层索引的例子的流程图;
图45A是根据本发明的分散存储网络(DSN)的另一实施例的示意性框图;
图45B是根据本发明的多个存储世代的示意性框图;
图45C是示出根据本发明的将存储世代加入到分散存储网络(DSN)的例子的流程图;
图46A是根据本发明的分散存储网络(DSN)的另一实施例的示意性框图;
图46B是示出根据本发明的获取关键信息的例子的流程图;
图47A和47B是根据本发明的分散存储网络(DSN)的另一实施例的示意性框图;
图47C是示出根据本发明的解决写请求冲突的例子的表格;
图47D是示出根据本发明的解决写请求冲突的例子的流程图;
图48A是根据本发明的分散存储网络(DSN)的另一实施例的示意性框图;以及
图48B是示出根据本发明的激活存储世代的例子的流程图。
具体实施方式
图1是分布式计算系统10的实施例的示意性框图,所述分布式计算系统包括用户设备12和/或用户设备14,分布式存储和/或任务(DST)处理单元16,分布式存储和/或任务网络(DSTN)管理单元18,DST完整性处理单元20,以及分布式存储和/或任务网络(DSTN)模块22。分布式计算系统10的部件经由网络24联接,所述网络可以包括一个或多个无线和/或有线通信系统;一个或多个私有内联网系统和/或公共互联网系统;和/或一个或多个局域网(LAN)和/或广域网(WAN)。
DSTN模块22包括可以位于地理上不同的地点(例如,一个在芝加哥,一个在密尔沃基等)的多个分布式存储和/或任务(DST)执行单元36。每个DST执行单元可操作以存储分散错误编码数据和/或以分布式方式对数据执行一个或多个任务。任务可以是简单函数(例如,数学函数,逻辑函数,识别函数,查找函数,搜索引擎函数,替换函数等),复杂函数(例如,压缩,人类和/或计算机语言翻译,文本到语音转换,语音到文本转换等),多个简单和/或复杂函数,一个或多个算法,一个或多个应用等。
用户设备12-14、DST处理单元16、DSTN管理单元18和DST完整性处理单元20的每一个包括计算核心26,并且可以是便携式计算设备和/或固定计算设备。便携式计算设备可以是社交网络设备,游戏设备,蜂窝电话,智能电话,个人数字助理,数字音乐播放器,数字视频播放器,膝上型计算机,手持计算机,平板电脑,视频游戏控制器,和/或包括计算核心的任何其它便携式设备。固定计算设备可以是个人计算机(PC),计算机服务器,有线机顶盒,卫星接收机,电视机,打印机,传真机,家庭娱乐设备,视频游戏控制台,和/或任何类型的家庭或办公计算设备。用户设备12和DST处理单元16配置成包括DST客户端模块34。
关于接口,每个接口30、32和33包括软件和/或硬件以间接地和/或直接地经由网络24支持一个或多个通信链路。例如,接口30支持用户设备14和DST处理单元16之间的通信链路(例如,有线,无线,直接,经由LAN,经由网络24等)。作为另一例子,接口32支持用户设备12和DSTN模块22之间以及DST处理单元16和DSTN模块22之间的通信链路(例如有线连接,无线连接,LAN连接,和/或去往/来自网络24的任何其它类型的连接)。作为又一例子,接口33支持用于DSTN管理单元18和DST完整性处理单元20的每一个到网络24的通信链路。
分布式计算系统10可操作以支持分散存储(DS)错误编码数据存储和检索,以支持对接收数据的分布式任务处理,和/或支持对存储数据的分布式任务处理。一般而言并且关于DS错误编码数据存储和检索,分布式计算系统10支持三个主要操作:存储管理,数据存储和检索(其例子将参考图20-26讨论),以及数据存储完整性验证。根据这三个主要功能,数据可以被编码,分布式存储在物理上不同的位置,并且随后以可靠和安全的方式被检索。这样的系统容许可能由单个存储设备故障和/或网络设备故障引起的大量故障(例如,达到可以大于或等于柱宽度减去解码阈值减一的故障级别)而不丢失数据并且不需要冗余或备份副本。此外,系统允许无限期存储数据而没有数据丢失,并且以安全的方式来存储数据(例如,系统很抵抗黑客入侵数据的尝试)。
第二主要功能(即,分布式数据存储和检索)以用户设备12-14开始和结束。例如,如果第二类型的用户设备14具有要存储在DSTN模块22中的数据40,则它经由其接口30将数据40发送到DST处理单元16。接口30用于模仿常规操作系统(OS)文件系统接口(例如,网络文件系统(NFS),闪存文件系统(FFS),磁盘文件系统(DFS),文件传输协议(FTP),基于网络的分布式创作和版本控制(WebDAV)等)和/或块存储器接口(例如,小型计算机系统接口(SCSI),互联网小型计算机系统接口(iSCSI)等)。另外,接口30可以将用户识别码(ID)附加到数据40。
为了支持存储管理,DSTN管理单元18执行DS管理服务。一种这样的DS管理服务包括DSTN管理单元18,其为用户设备12-14单独地或作为用户设备组的一部分建立分布式数据存储参数(例如,仓库创建,分布式存储参数,安全参数,记帐信息,用户简档信息等)。例如,DSTN管理单元18为一个用户设备、一组设备或为公共访问协调DSTN模块22的存储器内的仓库(例如,虚拟存储器块)的创建,并且建立用于仓库的每个存库分散存储(DS)错误编码参数。DSTN管理单元18可以通过更新分布式计算系统10的注册表信息来促进用于多个仓库的每个仓库的DS错误编码参数的存储。该促进包括将更新的注册表信息存储在DSTN模块22、用户设备12、DST处理单元16和DST完整性处理单元20中的一个或多个中。
DS错误编码参数(例如,或分散存储错误编码参数)包括数据分段信息(例如,将数据(例如,文件,文件组,数据块等)分成多少段),段安全性信息(例如,每段加密,压缩,完整性检查和等),错误编码信息(例如,柱宽度,解码阈值,读阈值,写阈值等),切片信息(例如,将为每个数据段创建的编码数据切片的数量);以及切片安全性信息(例如,每个编码数据切片加密,压缩,完整性检查和等)。
DSTN管理单元18在本地存储器中和/或在DSTN模块22的存储器内创建并存储用户简档信息(例如,访问控制列表(ACL))。用户简档信息包括认证信息,许可,和/或安全性参数。安全性参数可以包括加密/解密方案,一个或多个加密密钥,密钥生成方案,和/或数据编码/解码方案。
DSTN管理单元18创建用于特定用户、用户组、仓库访问、公共仓库访问等的记帐信息。例如,DSTN管理单元18跟踪用户访问私有仓库和/或公共仓库的次数,其可以用于生成每次访问记帐信息。在另一实例中,DSTN管理单元18跟踪由用户设备和/或用户组存储和/或检索的数据量,其可以用于生成每数据量记帐信息。
另一DS管理服务包括DSTN管理单元18执行网络操作、网络管理和/或网络维护。网络操作包括认证用户数据分配请求(例如,读和/或写请求),管理仓库的创建,建立用于用户设备的认证证书,从分布式计算系统10加入/删除部件(例如,用户设备,DST执行单元,和/或DST处理单元),和/或建立用于DST执行单元36的认证证书。网络管理包括监视设备和/或单元的故障,维护仓库信息,确定设备和/或单元激活状态,确定设备和/或单元负载,和/或确定影响系统10的性能水平的任何其它系统级操作。网络维护包括促进替换、升级、修复和/或扩展系统10的设备和/或单元。
为了支持分布式计算系统10内的数据存储完整性验证,DST完整性处理单元20执行“坏”或丢失编码数据切片的重建。在高级别,DST完整性处理单元20通过周期性地尝试从DSTN模块22检索/列出编码数据切片和/或编码数据切片的切片名称来执行重建。对于检索的编码切片,检查它们由于数据损坏、过期版本等导致的错误。如果切片包括错误,则将其标记为“坏”切片。对于未接收和/或未列出的编码数据切片,将其标记为丢失切片。随后使用被认为是好切片的其它检索到的编码数据切片来重建坏的和/或丢失的切片以产生重建切片。重建切片存储在DSTN模块22的存储器中。应当注意,DST完整性处理单元20可以是如图所示的独立单元,它可以包括在DSTN模块22中,它可以被包括在DST处理单元16中,和/或分布在DST执行单元36之间。
为了支持对接收数据的分布式任务处理,分布式计算系统10具有两个主要操作:对接收数据的DST(分布式存储和/或任务处理)管理和DST执行(其例子将参考图3-19讨论)。关于DST管理的存储部分,DSTN管理单元18如前所述地工作。关于DST管理的任务处理,DSTN管理单元18执行分布式任务处理(DTP)管理服务。一种这样的DTP管理服务包括DSTN管理单元18为用户设备12-14单独地或作为用户设备组的一部分建立DTP参数(例如,用户仓库附属信息,记帐信息,用户任务信息等)。
另一DTP管理服务包括DSTN管理单元18执行DTP网络操作,网络管理(其基本上与上述相同),和/或网络维护(其基本上与上述相同)。网络操作包括但不限于认证用户任务处理请求(例如,有效请求,有效用户等),认证结果和/或部分结果,建立用于用户设备的DTP认证证书,从分布式计算系统加入/删除部件(例如,用户设备,DST执行单元,和/或DST处理单元),和/或建立用于DST执行单元的DTP认证证书。
为了支持对存储数据的分布式任务处理,分布式计算系统10具有两个主要操作:对存储数据的DST(分布式存储和/或任务)管理和DST执行。关于对存储数据的DST执行,如果第二类型的用户设备14具有用于由DSTN模块22执行的任务请求38,则它经由其接口30将任务请求38发送到DST处理单元16。对存储数据的DST执行的例子将参考图27-39更详细地讨论。关于DST管理,它基本上类似于支持对接收数据的分布式任务处理的DST管理。
图2是计算核心26的实施例的示意性框图,所述计算核心包括处理模块50,存储器控制器52,主存储器54,视频图形处理单元55,输入/输出(IO)控制器56,外围部件互连(PCI)接口58,IO接口模块60,至少一个IO设备接口模块62,只读存储器(ROM)基本输入输出系统(BIOS)64,以及一个或多个存储器接口模块。一个或多个存储器接口模块包括通用串行总线(USB)接口模块66,主机总线适配器(HBA)接口模块68,网络接口模块70,闪存接口模块72,硬盘驱动器接口模块74,和DSTN接口模块76。
DSTN接口模块76用于模仿常规操作系统(OS)文件系统接口(例如,网络文件系统(NFS),闪存文件系统(FFS),磁盘文件系统(DFS),文件传输协议(FTP),基于网络的分布式创作和版本控制(WebDAV)等)和/或块存储器接口(例如,小型计算机系统接口(SCSI),互联网小型计算机系统接口(iSCSI)等)。DSTN接口模块76和/或网络接口模块70可以用作图1的用户设备14的接口30。还应当注意,设备接口模块62和/或存储器接口模块可以共同地或单独地称为IO端口。
图3是执行分布式存储和任务处理操作的分布式计算系统的例子的图示。分布式计算系统包括DST(分布式存储和/或任务)客户端模块34(其可以在用户设备14中和/或在图1的DST处理单元16中),网络24,包括图1的两个或更多个DST执行单元36的多个DST执行单元1(其形成图1的DSTN模块22的至少一部分),DST管理模块(未显示)和DST完整性验证模块(未显示)。DST客户端模块34包括出站DST处理部分80和入站DST处理部分82。DST执行单元1-n的每一个包括控制器86,处理模块84,存储器88,DT(分布式任务)执行模块90,以及DST客户端模块34。
在操作的例子中,DST客户端模块34接收数据92和将对数据92执行的一个或多个任务94。数据92可以是任何大小和任何内容,其中由于大小(例如,大于几个太字节)、内容(例如,安全数据等)和/或(一个或多个)任务(例如,MIPS密集),对数据的(一个或多个)任务的分布式处理是期望的。例如,数据92可以是一个或多个数字图书,公司电子邮件的副本,大规模互联网搜索,视频安全性文件,一个或多个娱乐视频文件(例如,电视节目,电影等),数据文件,和/或任何其它大量数据(例如,大于几个太字节)。
在DST客户端模块34内,出站DST处理部分80接收数据92和(一个或多个)任务94。出站DST处理部分80处理数据92以产生切片分组96。作为这样的处理的例子,出站DST处理部分80将数据92分割为多个数据分区。对于每个数据分区,出站DST处理部分80分散存储(DS)错误编码数据分区以产生编码数据切片并将编码数据切片分组为切片分组96。另外,出站DST处理部分80将任务94分割为部分任务98,其中部分任务98的数量可以对应于切片分组96的数量。
出站DST处理部分80然后经由网络24将切片分组96和部分任务98发送到图1的DSTN模块22的DST执行单元1-n。例如,出站DST处理部分80将切片组1和部分任务1发送到DST执行单元1。作为另一例子,出站DST处理部分80将切片组#n和部分任务#n发送到DST执行单元#n。
每个DST执行单元对其切片组96执行其部分任务98以产生部分结果102。例如,DST执行单元#1对切片组#1执行部分任务#1以产生结果的部分结果#1。作为更具体的例子,切片组#1对应于一系列数字图书的数据分区,并且部分任务#1对应于搜索特定短语,短语被找到的位置处的记录,以及建立短语计数。在该更具体的例子中,部分结果#1包括关于短语被找到的位置的信息,并且包括短语计数。
在完成生成它们相应的部分结果102时,DST执行单元经由网络24将它们的部分结果102发送到DST客户端模块34的入站DST处理部分82。入站DST处理部分82处理接收到的部分结果102以产生结果104。继续前一段的具体例子,入站DST处理部分82组合来自每个DST执行单元36的短语计数以产生总短语计数。另外,入站DST处理部分82在其相应的数据分区内组合来自每个DST执行单元36的“短语被找到的位置”信息以产生用于该系列数字图书的“短语被找到的位置”信息。
在操作的另一例子中,DST客户端模块34请求检索DST执行单元36的存储器(例如,DSTN模块的存储器)内的存储数据。在该例子中,任务94是检索存储在DSTN模块的存储器中的数据。因此,出站DST处理部分80将任务94转换成多个部分任务98,并将部分任务98发送到相应的DST执行单元1-n。
响应于检索存储数据的部分任务98,DST执行单元36识别对应的编码数据切片100并检索它们。例如,DST执行单元#1接收部分任务#1,并响应于此检索被检索切片#1。DST执行单元36经由网络24将其相应的检索到的切片100发送到入站DST处理部分82。
入站DST处理部分82将检索到的切片100转换为数据92。例如,入站DST处理部分82解分组检索到的切片100以产生每个数据分区的编码切片。入站DST处理部分82然后DS错误解码每个数据分区的编码切片以产生数据分区。入站DST处理部分82解分割数据分区以重新捕获数据92。
图4是经由网络24联接到图1的DSTN模块22(例如,多个n DST执行单元36)的图1的DST客户端模块34的出站分布式存储和/或任务(DST)处理部分80的实施例的示意性框图。出站DST处理部分80包括数据分割模块110,分散存储(DS)错误编码模块112,分组选择器模块114,控制模块116,和分布式任务控制模块118。
在操作的例子中,数据分割模块110将数据92分割为多个数据分区120。分区的数量和分区的大小可以基于数据92(例如,其大小,其内容等)、待执行的对应任务94(例如,简单,复杂,单步,多步等)、DS编码参数(例如,柱宽度,解码阈值,写阈值,段安全性参数,切片安全性参数等)、DST执行单元36的能力(例如,处理资源,处理资源的可用性等)由控制模块116经由控制160选择,和/或可以由用户、系统管理员或其他操作者(人或自动)输入。例如,数据分割模块110将数据92(例如,100太字节)分割成100,000个数据段,每个数据段的大小为1千兆字节。或者,数据分割模块110将数据92分割成多个数据段,其中一些数据段具有不同的大小,具有相同的大小,或其组合。
DS错误编码模块112以串行方式、并行方式和/或其组合来接收数据分区120。对于每个数据分区120,DS错误编码模块112根据来自控制模块116的控制信息160对数据分区120进行DS错误编码以产生编码数据切片122。DS错误编码包括将数据分区分段成数据段,段安全性处理(例如,加密,压缩,水印,完整性检查(例如,CRC)等),错误编码,切片,和/或每切片安全性处理(例如,加密,压缩,水印,完整性检查(例如,CRC)等)。控制信息160指示对于给定数据分区,DS错误编码的哪些步骤是活动的,并且对于活动步骤,指示该步骤的参数。例如,控制信息160指示错误编码是活动的,并且包括错误编码参数(例如,柱宽度,解码阈值,写阈值,读阈值,错误编码的类型等)。
分组选择器模块114将数据分区的编码切片122分组成切片分组96的集合。切片分组的数量对应于为特定任务94识别的DST执行单元36的数量。例如,如果五个DST执行单元36被识别用于特定任务94,则组选择模块将数据分区的编码切片122分组为五个切片分组96。分组选择器模块114经由网络24将切片分组96输出到对应的DST执行单元36。
分布式任务控制模块118接收任务94并将任务94转换成部分任务98的集合。例如,分布式任务控制模块118接收任务以寻找在数据(例如,一系列图书)中短语出现在哪里和数据中的短语使用的总计数。在该例子中,分布式任务控制模块118为每个DST执行单元36复制任务94以产生部分任务98。在另一例子中,分布式任务控制模块118接收任务以寻找在数据中第一短语出现在哪里,在数据中第二短语出现在哪里,以及数据中的每个短语使用的总计数。在该例子中,分布式任务控制模块118生成用于寻找和计数第一短语的部分任务98的第一集合和用于寻找和计数第二短语的部分任务的第二集合。分布式任务控制模块118将相应的第一和/或第二部分任务98发送到每个DST执行单元36。
图5是在步骤126开始的用于出站分布式存储和任务(DST)处理的方法的例子的逻辑图,其中DST客户端模块接收数据和一个或多个对应的任务。该方法在步骤128继续,其中DST客户端模块确定支持用于一个或多个数据分区的任务的多个DST单元。例如,DST客户端模块可以基于数据的大小,请求的任务,数据的内容,预定数量(例如,用户指示的,系统管理员确定的等),可用的DST单元,DST单元的能力,和/或关于数据的分布式任务处理的任何其它因素,确定支持任务的DST单元的数量。DST客户端模块可以为每个数据分区选择相同的DST单元,可以为数据分区选择不同的DST单元,或者它们的组合。
该方法在步骤130继续,其中DST客户端模块基于为分布式任务处理选择的DST单元的数量来确定数据的处理参数。处理参数包括数据分割信息,DS编码参数和/或切片分组信息。数据分割信息包括数据分区的数量,每个数据分区的大小,和/或数据分区的组织(例如,分区中的数据块的数量,数据块的大小,和数据块的布置)。DS编码参数包括分段信息,段安全性信息,错误编码信息(例如,分散存储错误编码函数参数,其包括柱宽度、解码阈值、写阈值、读阈值、生成矩阵中的一个或多个),切片信息,和/或每切片安全性信息。切片分组信息包括关于如何将编码数据切片布置成用于被选择DST单元的组的信息。作为具体例子,如果DST客户端模块确定需要五个DST单元来支持该任务,则它确定错误编码参数包括五的柱宽度和三的解码阈值。
该方法在步骤132继续,其中DST客户端模块基于选择的DST单元和数据处理参数来确定任务分割信息(例如,如何分割任务)。数据处理参数包括处理参数和DST单元能力信息。DST单元能力信息包括DT(分布式任务)执行单元的数量,每个DT执行单元的执行能力(例如MIPS能力,处理资源(例如,微处理器,CPU,数字信号处理器,协处理器,微控制器,算术逻辑电路和/或其它模拟和/或数字处理电路的数量和能力),处理资源的可用性,存储器信息(例如类型,大小,可用性等)),和/或与执行一个或多个任务密切相关的任何信息。
该方法在步骤134继续,其中DST客户端模块根据处理参数处理数据以产生切片分组。该方法在步骤136继续,其中DST客户端模块基于任务分割信息来分割任务以产生部分任务的集合。该方法在步骤138继续,其中DST客户端模块将切片分组和对应的部分任务发送到相应的DST单元。
图6是出站分布式存储和任务(DST)处理部分的分散存储(DS)错误编码模块112的实施例的示意性框图。DS错误编码模块112包括段处理模块142,段安全性处理模块144,错误编码模块146,切片模块148,和每切片安全性处理模块150。这些模块的每一个联接到控制模块116以从其接收控制信息160。
在操作的例子中,段处理模块142从数据分割模块接收数据分区120,并从控制模块116接收分段信息作为控制信息160。分段信息指示段处理模块142如何分段数据分区120。例如,分段信息指示基于错误编码方案的解码阈值将数据分段成多少行,指示基于数据分区120内的数据块的数量和大小将数据分割成多少列,并且指示将在数据段152中包括多少列。段处理模块142根据分段信息将数据120分段成数据段152。
当由控制模块116启用时,段安全性处理模块144基于作为控制信息160从控制模块116接收的段安全性信息来保护数据段152。段安全性信息包括数据压缩,加密,水印,完整性检查(例如,循环冗余校验(CRC)等),和/或任何其它类型的数字安全性。例如,当段安全性处理模块144被启用时,其可以压缩数据段152,加密压缩的数据段,并且生成用于加密的数据段的CRC值以产生安全数据段154。当段安全性处理模块144未被启用时,其将数据段152传递到错误编码模块146或被旁路通过,使得数据段152被提供给错误编码模块146。
错误编码模块146根据作为控制信息160从控制模块116接收的纠错编码参数对安全数据段154进行编码。纠错编码参数(例如,也称为分散存储错误编码参数)包括识别纠错编码方案(例如,前向纠错算法,基于Reed-Solomon的算法,在线编码算法,信息分散算法等),柱宽度,解码阈值,读阈值,写阈值等。例如,纠错编码参数识别特定纠错编码方案,指定五的柱宽度,并且指定三的解码阈值。从这些参数,错误编码模块146对数据段154进行编码以产生编码数据段156。
切片模块148根据作为控制信息160接收的纠错编码参数的柱宽度对编码数据段156进行切片。例如,如果柱宽度为五,则切片模块148将编码数据段156切片为五个编码数据切片的集合。因而,对于给定数据分区的多个编码数据段156,切片模块输出编码数据切片158的多个集合。
当由控制模块116启用时,每切片安全性处理模块150基于作为控制信息160从控制模块116接收的切片安全性信息来保护每个编码数据切片158。切片安全性信息包括数据压缩,加密,水印,完整性检查(例如,CRC等)和/或任何其它类型的数字安全性。例如,当每切片安全性处理模块150被启用时,其压缩编码数据切片158,加密压缩编码数据切片,并且生成用于加密编码数据切片的CRC值以产生安全编码数据切片122。当每切片安全性处理模块150未被启用时,其传递编码数据切片158或被旁路通过,使得编码数据切片158是DS错误编码模块112的输出。应当注意,可以省略控制模块116,并且每个模块存储自己的参数。
图7是分散存储(DS)错误编码模块的段处理的例子的图示。在该例子中,段处理模块142接收包括45个数据块(例如,d1-d45)的数据分区120,接收来自控制模块的分段信息(即,控制信息160),并且根据控制信息160分段数据分区120以产生数据段152。每个数据块可以具有与其它数据块相同的大小或不同大小。另外,每个数据块的大小可以是几个字节到兆字节的数据。如前所述,分割信息指示将数据分区分段成多少行,指示将数据分区分段成多少列,并且指示将在数据分段中包括多少列。
在该例子中,错误编码方案的解码阈值是三;因而将数据分区分成的行数为三。每行的列数设置为15,其基于数据块的数量和大小。数据分区的数据块按照顺序成行和列布置(即,第一行包括前15个数据块;第二行包括第二15个数据块;并且第三行包括最后15个数据块)。
使用按期望的顺序布置的数据块,它们基于分割信息被分为数据段。在该例子中,数据分区被分为8个数据段;前7个包括三行的2列,最后一个包括三行的1列。应当注意,8个数据段的第一行按照顺序是前15个数据块;8个数据段的第二行按照顺序是第二15个数据块;并且8个数据段的第三行按照顺序是最后15个数据块。应当注意,数据块的数量、将数据块分组成段和数据块的大小可以变化以适应期望的分布式任务处理功能。
图8是对图7的数据段进行分散错误编码处理的错误编码和切片处理的例子的图示。在该例子中,数据段1包括3行,每行被视为用于编码的一个字。因而,数据段1包括用于编码的三个字:包括数据块d1和d2的字1,包括数据块d16和d17的字2,以及包括数据块d31和d32的字3。每个数据段2-7包括三个字,其中每个字包括两个数据块。数据段8包括三个字,其中每个字包括单个数据块(例如,d15,d30,和d45)。
在操作中,错误编码模块146和切片模块148根据作为控制信息160的纠错编码参数将每个数据段转换成编码数据切片的集合。更具体地,当纠错编码参数指示基于单位矩阵Reed-Solomon的编码算法、5柱和3的解码阈值时,用于数据段的编码数据切片集合的前三个编码数据切片基本上类似于数据段的对应字。例如,当将基于单位矩阵Reed-Solomon的编码算法应用于数据段1时,编码数据切片的第一集合(例如,对应于数据段1)的第一编码数据切片(DS1_d1&2)的内容基本上类似于第一单词(例如,d1和d2)的内容;编码数据切片的第一集合的第二编码数据切片(DS l_d16&17)的内容基本上类似于第二字(例如,d16和d17)的内容;并且编码数据切片的第一集合的第三编码数据切片(DS1_d31&32)的内容基本上类似于第三字(例如,d31和d32)的内容。
编码数据切片的第一集合的第四和第五编码数据切片(例如,ES1_1和ES1_2)的内容包括基于第一数据段的第一至第三字的纠错数据。使用这样的编码和切片方案,检索五个编码数据切片中的任何三个允许精确地重建数据段。
数据段2-7的编码和切片产生与数据段1的编码数据切片的集合类似的编码数据切片的集合。例如,编码数据切片的第二集合(例如,对应于数据段2)的第一编码数据切片(DS2_d3&4)的内容基本上类似于第一字(例如,d3和d4)的内容;编码数据切片的第二集合的第二编码数据切片(DS2_d18&19)的内容基本上类似于第二字(例如,d18和d19)的内容;并且编码数据切片的第二集合的第三编码数据切片(DS2_d33&34)的内容基本上类似于第三字(例如,d33和d34)的内容。编码数据切片的第二集合的第四和第五编码数据切片(例如,ES1_1和ES1_2)的内容包括基于第二数据段的第一至第三字的纠错数据。
图9是根据来自控制模块的作为控制信息160的组选择信息的出站分布式存储和任务(DST)处理的分组选择处理的例子的图示。根据控制信息160对用于数据分区122的编码切片进行分组以产生切片分组96。在该例子中,分组选择模块114将编码数据切片组织成五个切片分组(例如,分布式存储和任务网络(DSTN)模块的每个DST执行单元各有一个)。作为具体例子,分组选择模块114创建用于DST执行单元#1的第一切片分组,其包括编码切片的每个集合的第一编码切片。因而,第一DST执行单元接收对应于数据块1-15的编码数据切片(例如,连续数据的编码数据切片)。
分组选择模块114也创建用于DST执行单元#2的第二切片分组,其包括编码切片的每个集合的第二编码切片。因而,第二DST执行单元接收对应于数据块16-30的编码数据切片。分组选择模块114还创建用于DST执行单元#3的第三切片分组,其包括编码切片的每个集合的第三编码切片。因而,第三DST执行单元接收对应于数据块31-45的编码数据切片。
分组选择模块114创建用于DST执行单元#4的第四切片分组,其包括编码切片的每个集合的第四编码切片。因而,第四DST执行单元接收对应于第一错误编码信息的编码数据切片(例如,错误编码(EC)数据的编码数据切片)。分组选择模块114还创建用于DST执行单元#5的第五切片分组,其包括编码切片的每个集合的第五编码切片。因而,第五DST执行单元接收对应于第二错误编码信息的编码数据切片。
图10是将数据92转换为在前面的图上扩展的切片组的例子的图示。如图所示,根据分割函数164将数据92分割成多个数据分区(1-x,其中x是大于4的整数)。如先前所讨论的,每个数据分区(或数据块集)由编码和分组函数166编码和分组为切片分组。对于给定的数据分区,切片分组被发送到分布式存储和任务(DST)执行单元。从数据分区到数据分区,到DST执行单元的切片分组的顺序可以变化。
例如,数据分区#1的切片分组被发送到DST执行单元,使得第一DST执行接收每个编码数据切片集合的第一编码数据切片,其对应于第一数据分区的第一连续数据块(例如,参考图9),第二DST执行接收每个编码数据切片集合的第二编码数据切片,其对应于第一数据分区的第二连续数据块,等等。
对于第二数据分区,可以以与对于第一数据分区不同的顺序将切片分组发送到DST执行单元。例如,将第二数据分区的第一切片分组(例如,切片组2_1)发送到第二DST执行单元;将第二数据分区的第二切片分组(例如,切片组2_2)发送到第三DST执行单元;将第二数据分区的第三切片分组(例如,切片组2_3)发送到第四DST执行单元;将第二数据分区的第四切片分组(例如,包括第一错误编码信息的切片组2_4)发送到第五DST执行单元;并且将第二数据分区的第五切片分组(例如,包括第二错误编码信息的切片组2_5)发送到第一DST执行单元。
将切片分组发送到DST执行单元集合的模式可以从数据分区到数据分区在预测模式、随机模式和/或其组合中变化。另外,从数据分区到数据分区,DST执行单元的集合可以变化。例如,对于第一数据分区,可以使用DST执行单元1-5;对于第二数据分区,可以使用DST执行单元6-10;对于第三数据分区,可以使用DST执行单元3-7;等等。也如图所示,任务被分成与数据分区的切片分组结合发送到DST执行单元的部分任务。
图11是DST(分布式存储和/或任务)执行单元的实施例的示意性框图,其包括接口169,控制器86,存储器88,一个或多个DT(分布式任务)执行模块90,和DST客户端模块34。存储器88具有足够的大小以存储大量编码数据切片(例如,数千个切片至数百万个切片),并且可以包括一个或多个硬盘驱动器和/或一个或多个固态存储器设备(例如,闪存,DRAM等)。
在存储切片组的例子中,DST执行模块经由接口169接收切片分组96(例如,切片组#1)。切片分组96包括每个分区的连续数据的编码数据切片或错误编码(EC)数据的编码数据切片。对于切片组#1,DST执行模块接收用于分区#1和#x(以及潜在地在3和x之间的其它)的连续数据的编码数据切片,并且接收用于分区#2和#3(以及潜在地在3和x之间的其它)的EC数据的编码数据切片。参考图9讨论连续数据的编码数据切片和错误编码(EC)数据的编码数据切片的例子。存储器88根据其从控制器86接收的存储器控制信息174存储切片分组96的编码数据切片。
控制器86(例如,处理模块,CPU等)基于(一个或多个)部分任务98和分布式计算信息(例如,用户信息(例如,用户ID,分布式计算许可,数据访问许可等),仓库信息(例如,分配给用户、用户组的虚拟存储器,用于任务处理的临时存储等),任务验证信息等)生成存储器控制信息174。例如,控制器86根据分布式计算信息解释(一个或多个)部分任务98以确定请求者是否被授权执行任务98,被授权访问数据,和/或被授权对该特定数据执行任务。当请求者被授权时,控制器86基于任务98和/或另一输入来确定切片分组96的编码数据切片是临时存储还是永久存储。基于上述,控制器86生成存储器控制信息174以将切片分组96的编码数据切片写到存储器88中,并且指示切片分组96是永久存储还是临时存储。
在切片分组96存储在存储器88中的情况下,控制器86促进(一个或多个)部分任务98的执行。在例子中,控制器86根据(一个或多个)DT执行模块的能力解释部分任务98。能力包括以下的一个或多个:MIPS能力,处理资源(例如,微处理器,CPU,数字信号处理器,协处理器,微控制器,算术逻辑电路和/或任何其它模拟和/或数字处理电路的数量和能力),处理资源的可用性等。如果控制器86确定(一个或多个)DT执行模块90具有足够的能力,则其生成任务控制信息176。
任务控制信息176可以是通用指令(例如,对存储的切片分组执行任务)或一系列操作代码。在前一种情况下,DT执行模块90包括具体配置成(固定或编程为)执行期望任务98的协处理器功能。在后一种情况下,DT执行模块90包括通用处理器拓扑,其中控制器存储对应于特定任务98的算法。在该情况下,控制器86将算法的操作代码(例如,汇编语言,编程语言的源代码,目标代码等)提供给DT执行模块90以便执行。
取决于任务98的性质,DT执行模块90可以生成存储在存储器88中或DT执行模块90内的高速缓存存储器(未显示)中的中间部分结果102。在任一情况下,当DT执行模块90完成部分任务98的执行时,它输出一个或多部分结果102。部分结果102也可以存储在存储器88中。
如果当控制器86正在解释(一个或多个)DT执行模块90的能力是否可以支持部分任务98时,控制器86确定(一个或多个)DT执行模块90不能充分地支持任务98(例如,不具有正确的资源,没有足够的可用资源,可用资源将太慢等),则其然后确定部分任务98是否应当被完全卸载或部分卸载。
如果控制器86确定部分任务98应当被完全卸载,则其生成DST控制信息178并将它提供给DST客户端模块34。DST控制信息178包括部分任务98,关于切片分组96的存储器存储信息,和分布指令。分布指令指示DST客户端模块34将部分任务98分为子部分任务172,以将切片分组96分为子切片分组170,并且识别其它DST执行单元。DST客户端模块34以与图3-10的DST客户端模块34类似的方式起作用,从而根据分布指令产生子部分任务172和子切片分组170。
DST客户端模块34经由接口169从任务被卸载到的DST执行单元接收DST反馈168(例如,子部分结果)。DST客户端模块34将子部分结果提供给DST执行单元,其处理子部分结果以产生部分结果102。
如果控制器86确定部分任务98应当被部分卸载,则它确定应当在本地处理任务98和/或切片分组96的什么部分以及应该卸载什么。对于正在被本地处理的部分,控制器86生成如前所述的任务控制信息176。对于正被卸载的部分,控制器86生成如前所述的DST控制信息178。
当DST客户端模块34从任务的一部分被卸载到的DST执行单元接收DST反馈168(例如,子部分结果)时,其将子部分结果提供给DT执行模块90。DT执行模块90用其创建的子部分结果处理子部分结果以产生(一个或多个)部分结果102。
当DT执行模块90将部分结果102和/或结果104存储在存储器88中时,存储器88还可以用于检索存储的切片100、存储的结果104、部分结果102中的一个或多个。例如,当部分任务98包括检索请求时,控制器86将存储器控制174输出到存储器88以便于检索切片100和/或结果104。
图12是存储编码数据切片并对其执行任务的分布式存储和任务(DST)执行单元的操作的例子的示意性框图。为了存储切片分组1的分区1的编码数据切片,控制器86生成作为存储器控制信息174的写命令,使得编码切片存储在存储器88内的期望位置(例如,永久或临时)。
一旦编码的片被存储,控制器86就将任务控制信息176提供给分布式任务(DT)执行模块90。作为根据任务控制信息176执行任务的第一步骤,DT执行模块90从存储器88检索编码切片。DT执行模块90然后重建数据分区的邻接数据块。如该例子所示,数据分区1的重建的连续数据块包括数据块1-15(例如,d1-d15)。
使用重建的连续数据块,DT执行模块90对重建的连续数据块执行任务。例如,任务可以是搜索重建的连续数据块中的特定单词或短语,识别在重建的连续数据块中哪里出现特定单词或短语,和/或对重建的连续数据块上的特定单词或短语的出现进行计数。DST执行单元以类似的方式针对切片分组1中的其它分区的编码数据切片继续。应当注意,通过使用先前讨论的单位矩阵错误编码方案,如果连续数据的编码数据切片未被损坏,则它们的解码是提取数据的相对直接的过程。
然而,如果连续数据的编码数据切片被损坏(或丢失),则可以通过访问存储损坏的编码数据切片的编码数据切片的集合中的其它编码数据切片的其它DST执行单元来重建它。在该情况下,具有损坏的编码数据切片的DST执行单元从其它DST执行单元检索该集合中的(连续数据的和错误编码数据的)至少三个编码数据切片(回想该例子,柱宽度为5并且解码阈值为3)。DST执行单元使用DS错误编码参数解码检索的数据切片以重新捕获对应的数据段。DST执行单元然后使用DS错误编码参数重新编码数据段以重建损坏的编码数据切片。一旦重建编码数据切片,DST执行单元就如前所述地工作。
图13是经由网络24联接到分布式存储和任务网络(DSTN)模块的DST执行单元的DST客户端模块的入站分布式存储和/或任务(DST)处理部分82的实施例的示意性框图。入站DST处理部分82包括解分组模块180,DS(分散存储)错误解码模块182,数据解分割模块184,控制模块186,和分布式任务控制模块188。应当注意,控制模块186和/或分布式任务控制模块188可以是独立于出站DST处理部分中的对应的模块的模块,或者可以是相同的模块。
在操作的例子中,DST执行单元已完成对对应切片分组执行对应部分任务以产生部分结果102。入站DST处理部分82经由分布式任务控制模块188接收部分结果102。入站DST处理部分82然后处理部分结果102以产生最终结果或结果104。例如,如果任务是要在数据内找到特定词或短语,则部分结果102指示在数据的每个规定部分中对应的DST执行单元在哪里找到特定的单词或短语。分布式任务控制模块188将用于数据的对应部分的单独的部分结果102作为整体组合成数据的最终结果104。
在操作的另一例子中,入站DST处理部分82从DST执行单元(即,DSTN模块)检索存储数据。在该例子中,DST执行单元输出对应于数据检索请求的编码数据切片100。解分组模块180接收检索的切片100并对它们进行解分组以产生每个数据分区122的编码数据切片。DS错误解码模块182根据DS错误编码参数解码每个数据分区122的编码数据切片以产生数据分区120。
数据解分割模块184将数据分区120组合成数据92。控制模块186使用到每个模块的控制信号190控制将检索切片100转换为数据92。例如,控制模块186将解分组信息提供给解分组模块180,将DS错误编码参数提供给DS错误解码模块182,并且将解分割信息提供给数据解分割模块184。
图14是关于入站DST处理的可由分布式存储和任务(DST)客户端模块执行的方法的例子的逻辑图。该方法开始于步骤194,其中DST客户端模块接收部分结果。该方法在步骤196继续,其中DST客户端模块检索对应于部分结果的任务。例如,部分结果包括识别与请求的任务相关的请求实体的标头信息。
该方法在步骤198继续,其中DST客户端模块基于任务确定结果处理信息。例如,如果任务将识别数据内的特定单词或短语,则结果处理信息将指示聚集数据的对应部分的部分结果以产生最终结果。作为另一例子,如果任务将对数据内的特定单词或短语的出现进行计数,则处理该信息的结果将指示加入部分结果以产生最终结果。该方法在步骤200继续,其中DST客户端模块根据结果处理信息处理部分结果以产生一个或多个最终结果。
图15是DST客户端模块的入站分布式存储和任务(DST)处理部分的解分组选择处理的例子的图示。一般而言,这是图9的出站DST处理部分的分组模块的逆过程。因此,对于每个数据分区(例如,分区#1),解分组模块从DST执行单元(EU)(例如,DST 1-5)检索相应的切片分组。
如图所示,DST执行单元#1提供第一切片分组,其包括编码切片的每个集合的第一编码切片(例如,数据块1-15的连续数据的编码数据切片);DST执行单元#2提供第二切片分组,其包括编码切片的每个集合的第二编码切片(例如,数据块16-30的连续数据的编码数据切片);DST执行单元#3提供第三切片分组,其包括编码切片的每个集合的第三编码切片(例如,数据块31-45的连续数据的编码数据切片);DST执行单元#4提供第四切片分组,其包括编码切片的每个集合的第四编码切片(例如,错误编码(EC)数据的第一编码数据切片);并且DST执行单元#5提供第五切片分组,其包括编码切片的每个集合的第五编码切片(例如,错误编码(EC)数据的第一编码数据切片)。
解分组模块使用如例子中所示由控制信号190控制的解分组选择器180对切片分组(例如,接收的切片100)解分组以产生编码数据切片的多个集合(例如,将用于分区的检索的切片解分组为切片122的集合)。每个集合对应于数据分区的数据段。
图16是入站分布式存储和任务(DST)处理部分的分散存储(DS)错误解码模块182的实施例的示意性框图。DS错误解码模块182包括反每切片安全性处理模块202,解切片模块204,错误解码模块206,反段安全性模块208,解分段处理模块210,和控制模块186。
在操作的例子中,当由控制模块186启用时,反每切片安全性处理模块202基于作为控制信息190从控制模块186接收的切片解安全性信息(例如,参考图6讨论的切片安全性信息的补充)使每个编码数据切片122不安全。切片安全性信息包括数据解压缩,解密,去水印,完整性检查(例如,CRC验证等),和/或任何其它类型的数字安全性。例如,当反每切片安全性处理模块202被启用时,其验证每个编码数据切片122的完整性信息(例如,CRC值),其解密每个验证的编码数据切片,并且解压缩每个解密的编码数据切片以产生切片编码数据158。当反每切片安全性处理模块202未被启用时,其将编码数据切片122作为切片编码数据158传递或被旁路通过,使得检索的编码数据切片122作为切片编码数据158被提供。
解切片模块204根据作为控制信息190从控制模块186接收的纠错编码参数的柱宽度将切片编码数据158解切片为编码数据段156。例如,如果柱宽度为五,则解切片模块204将五个编码数据切片的集合解切片为编码数据段156。错误解码模块206根据作为控制信息190从控制模块186接收的纠错解码参数对编码数据段156进行解码以产生安全数据段154。纠错解码参数包括识别纠错编码方案(例如,前向纠错算法,基于Reed-Solomon的算法,信息分散算法等),柱宽度,解码阈值,读阈值,写阈值等。例如,纠错解码参数识别特定纠错编码方案,指定五的柱宽度,并且指定三的解码阈值。
当由控制模块186启用时,反段安全性处理模块208基于作为控制信息190从控制模块186接收的段安全性信息使安全数据段154不安全。段安全性信息包括数据解压缩,解密,去水印,完整性检查(例如,CRC等)验证,和/或任何其它类型的数字安全性。例如,当反段安全性处理模块208被启用时,其验证每个安全数据段154的完整性信息(例如,CRC值),其解密每个经验证的安全数据段,并且解压缩每个解密的安全数据段以产生数据段152。当反段安全性处理模块208未被启用时,其将解码数据段154作为数据段152传递或被旁路通过。
解分段处理模块210接收数据段152,并且从控制模块186接收解分段信息作为控制信息190。解分段信息指示解分段处理模块210如何将数据段152解分段成数据分区120。例如,解分段信息指示如何重新布置数据段的行和列以产生数据分区120。
图17是分散错误解码模块的解切片和错误解码处理的例子的图示。解切片模块204根据控制信息190接收每个数据段的至少解码阈值数量的编码数据切片158,并且提供编码数据156。在该例子中,解码阈值为三。因而,编码数据切片158的每个集合被显示为每个数据段具有三个编码数据切片。解切片模块204可以每个数据段接收三个编码数据切片,原因是关联的分布式存储和任务(DST)客户端模块请求每个段仅检索三个编码数据切片或每个数据段检索被检索编码数据切片中的选定的三个。如图所示,其基于先前参考图8讨论的单位矩阵编码,编码数据切片可以是基于数据的编码数据切片(例如,DS1_d1&d2)或基于错误代码的编码数据切片(例如,ES3_1)。
错误解码模块206根据控制信息190的纠错解码参数对每个数据段的编码数据156进行解码以产生安全段154。在该例子中,数据段1包括3行,每行被视为用于编码的一个字。因而,数据段1包括三个字:包括数据块d1和d2的字1,包括数据块dl6和dl7的字2,以及包括数据块d31和d32的字3。数据段2-7的每一个包括三个字,其中每个字包括两个数据块。数据段8包括三个字,其中每个字包括单个数据块(例如,d15,d30,和d45)。
图18是入站分布式存储和任务(DST)处理的解分段处理的例子的图示。在该例子中,解分段处理模块210接收数据段152(例如,1-8)并且根据控制信息190的解分段信息将数据段的数据块重新布置成行和列以产生数据分区120。应当注意,行数基于解码阈值(例如,在该具体例子中为3),并且列数基于数据块的数量和大小。
解分割模块210将数据块的行和列转换为数据分区120。应当注意,每个数据块可以具有与其它数据块相同的大小或不同的大小。另外,每个数据块的大小可以是几个字节到兆字节的数据。
图19是在入站分布式存储和任务(DST)处理部分内将切片组转换成数据92的例子的图示。如图所示,从多个数据分区(1-x,其中x是大于4的整数)重建数据92。如前所述使用解分组和解码函数212和解分割函数214从切片分组对每个数据分区(或数据的块集)进行解码和重新分组。对于给定数据分区,从DST执行单元接收切片分组(例如,编码数据切片的每个数据切片的至少解码阈值)。从数据分区到数据分区,从DST执行单元接收的切片分组的排序可以变化,如参考图10所讨论的。
图20是分布式计算系统内的分布式存储和/或检索的例子的图示。分布式计算系统包括经由网络24联接到分布式存储和/或任务处理网络(DSTN)模块或多个DSTN模块的多个分布式存储和/或任务(DST)处理客户端模块34(显示一个)。DST客户端模块34包括出站DST处理部分80和入站DST处理部分82。DSTN模块包括多个DST执行单元。每个DST执行单元包括控制器86,存储器88,一个或多个分布式任务(DT)执行模块90,和DST客户端模块34。
在数据存储的例子中,DST客户端模块34具有其期望存储在DSTN模块中的数据92。数据92可以是文件(例如,视频,音频,文本,图形等),数据对象,数据块,文件的更新,数据块的更新等。在该情况下,出站DST处理模块80将数据92转换为编码数据切片216,如将参考图21-23进一步所述。出站DST处理模块80经由网络24向DST执行单元发送以便存储,如参考图24进一步所述。
在数据检索的例子中,DST客户端模块34向DST执行单元发出针对期望数据92的检索请求。检索请求可以寻址存储期望数据的编码数据切片的每个DST执行单元,寻址解码阈值数量的DST执行单元,寻址读阈值数量的DST执行单元,或者寻址一些其它数量的DST执行单元。响应于该请求,每个寻址的DST执行单元检索其期望数据的编码数据切片100,并且经由网络24将它们发送到入站DST处理部分82。
对于每个数据段,当入站DST处理部分82接收至少解码阈值数量的编码数据切片100时,它将编码数据切片100转换为数据段。入站DST处理部分82聚集数据段以产生检索数据92。
图21是经由网络24联接到分布式存储和任务网络(DSTN)模块(例如,多个DST执行单元)的DST客户端模块的出站分布式存储和/或任务(DST)处理部分80的实施例的示意性框图。出站DST处理部分80包括数据分割模块110,分散存储(DS)错误编码模块112,分组选择器模块114,控制模块116,和分布式任务控制模块118。
在操作的例子中,数据分割模块110被旁路通过,使得数据92被直接提供给DS错误编码模块112。控制模块116通过将旁路220消息输出到数据分割模块110来协调数据分割模块110的旁路。
DS错误编码模块112以串行方式、并行方式和/或其组合来接收数据92。DS错误编码模块112根据来自控制模块116的控制信息160对数据进行DS错误编码以产生编码数据切片218。DS错误编码包括将数据92分段成数据段,段安全性处理(例如,加密,压缩,水印,完整性检查(例如,CRC等)),错误编码,切片和/或每切片安全性处理(例如,加密,压缩,水印,完整性检查(例如,CRC等))。控制信息160指示DS错误编码的哪些步骤对于数据92是活动的,并且对于活动步骤,指示该步骤的参数。例如,控制信息160指示错误编码是活动的,并且包括错误编码参数(例如,柱宽度,解码阈值,写阈值,读阈值,错误编码的类型等)。
分组选择器模块114将数据段的编码切片218分组为切片216的柱。柱的数量对应于DS错误编码参数的柱宽度。在该例子中,分布式任务控制模块118促进存储请求。
图22是用于图21的例子的分散存储(DS)错误编码模块112的例子的示意性框图。DS错误编码模块112包括段处理模块142,段安全性处理模块144,错误编码模块146,切片模块148,和每切片安全性处理模块150。这些模块的每一个联接到控制模块116以从其接收控制信息160。
在操作的例子中,段处理模块142接收数据92并且从控制模块116接收分段信息作为控制信息160。分段信息指示段处理模块如何分段数据。例如,分割信息指示每个数据段的大小。段处理模块142根据分段信息将数据92分段成数据段152。
当由控制模块116启用时,段安全性处理模块144基于作为控制信息160从控制模块116接收的段安全性信息来保护数据段152。段安全性信息包括数据压缩,加密,水印,完整性检查(例如,CRC等),和/或任何其它类型的数字安全性。例如,当段安全性处理模块144被启用时,其压缩数据段152,加密压缩的数据段,并且生成用于加密的数据段的CRC值以产生安全数据段。当段安全性处理模块144未被启用时,其将数据段152传递到错误编码模块146或被旁路通过,使得数据段152被提供给错误编码模块146。
错误编码模块146根据作为控制信息160从控制模块116接收的纠错编码参数对安全数据段进行编码。纠错编码参数包括识别纠错编码方案(例如,前向纠错算法,基于Reed-Solomon的算法,信息分散算法等),柱宽度,解码阈值,读阈值,写阈值等。例如,纠错编码参数识别特定纠错编码方案,指定五的柱宽度,并且指定三的解码阈值。从这些参数,错误编码模块146对数据段进行编码以产生编码数据段。
切片模块148根据纠错编码参数的柱宽度对编码数据段进行切片。例如,如果柱宽度为五,则切片模块将编码数据切片切片为五个编码数据切片的集合。因此,对于多个数据段,切片模块148在如所描述的编码和切片函数222内输出如所示的编码数据切片的多个集合。
当由控制模块116启用时,每切片安全性处理模块150基于作为控制信息160从控制模块116接收的切片安全性信息来保护每个编码数据切片。切片安全性信息包括数据压缩,加密,水印,完整性检查(例如,CRC等),和/或任何其它类型的数字安全性。例如,当启用每切片安全性处理模块150时,其可以压缩编码数据切片,加密压缩的编码数据切片,并且生成用于加密的编码数据切片的CRC值以产生安全编码数据切片。当每切片安全性处理模块150未被启用时,其传递编码数据切片或被旁路通过,使得编码数据切片218是DS错误编码模块112的输出。
图23是使用编码、切片和柱分组函数224将数据92转换成柱切片组以便存储在分布式存储和任务网络(DSTN)模块的存储器中的例子的图示。如前所述,数据92被编码和切片成编码数据切片的多个集合;每个数据段各有一个集合。分组选择模块将编码数据切片的集合组织成数据切片的柱。在该例子中,DS错误编码参数包括5的柱宽度和3的解码阈值。因而,对于每个数据段,创建5个编码数据切片。
分组选择模块获取每个集合的第一编码数据切片并且形成第一柱,其可以被发送到第一DST执行单元。类似地,分组选择模块从集合的第二切片创建第二柱;从集合的第三切片创建第三柱;从集合的第四切片创建第四柱;以及从集合的第五切片创建第五柱。
图24是分布式存储和/或任务(DST)执行单元的实施例的示意性框图,其包括接口169,控制器86,存储器88,一个或多个分布式任务(DT)执行模块90,和DST客户端模块34。计算核心26可以用于实现一个或多个DT执行模块90和DST客户端模块34。存储器88具有足够的大小以存储大量的编码数据切片(例如,数千切片到数百万个切片),并且可以包括一个或多个硬盘驱动器和/或一个或多个固态存储设备(例如,闪存,DRAM等)。
在存储切片216的柱的例子中,DST执行单元经由接口169接收切片216的柱(例如,柱#1切片)。存储器88根据其从控制器86接收的存储器控制信息174存储切片柱的编码数据切片216。控制器86(例如,处理模块,CPU等)基于分布式存储信息(例如,用户信息(例如,用户ID,分布式存储许可,数据访问许可等),仓库信息(例如,分配给用户、用户组等的虚拟存储器)等)生成存储器控制信息174。类似地,当检索切片时,DST执行单元经由接口169接收切片检索请求。存储器88根据其从控制器86接收的存储器控制信息174检索切片。存储器88经由接口169将切片100输出到请求实体。
图25是用于检索分散错误编码数据92的入站分布式存储和/或任务(DST)处理部分82的操作的例子的示意性框图。入站DST处理部分82包括解分组模块180,分散存储(DS)错误解码模块182,数据解分割模块184,控制模块186,和分布式任务控制模块188。应当注意,控制模块186和/或分布式任务控制模块188可以是独立于出站DST处理部分中的对应模块的模块,或者可以是相同的模块。
在操作的例子中,入站DST处理部分82从DST执行单元(即,DSTN模块)检索存储数据92。在该例子中,DST执行单元输出与来自分布式任务控制模块188的数据检索请求相对应的编码数据切片。解分组模块180接收切片100的柱并且根据来自控制模块186的控制信息190对其进行解分组以产生编码数据切片218的集合。DS错误解码模块182根据作为控制信息190从控制模块186接收的DS错误编码参数对编码数据切片218的每个集合进行解码以产生聚集成检索数据92的数据切片。数据解分割模块184在该操作模式下经由来自控制模块186的控制信息190的旁路信号226被旁路通过。
图26是入站分布式存储和任务(DST)处理部分的分散存储(DS)错误解码模块182的实施例的示意性框图。DS错误解码模块182包括反每切片安全性处理模块202,解切片模块204,错误解码模块206,反段安全性模块208,和解分段处理模块210。分散错误解码模块182可操作以使用解切片和解码函数228对每个数据段218的编码切片进行解切片和解码以产生多个数据段,使用解分段功能230来解分段所述多个数据段以恢复数据92。
在操作的例子中,当由控制模块186经由控制信息190启用时,反每切片安全性处理模块202基于作为控制信息190从控制模块186接收的切片解安全性信息(例如,参考图6讨论的切片安全性信息的补充)使每个编码数据切片218不安全。切片解安全性信息包括数据解压缩,解密,去水印,完整性检查(例如,CRC验证等),和/或任何其它类型的数字安全性。例如,当反每切片安全性处理模块202被启用时,其验证每个编码数据切片218的完整性信息(例如,CRC值),其解密每个验证的编码数据切片,并且解压缩每个解密的编码数据切片以产生切片编码数据。当反每切片安全性处理模块202未被启用时,其将编码数据切片218作为切片编码数据传递或被旁路通过,使得检索的编码数据切片218作为切片编码数据被提供。
解切片模块204根据作为控制信息190从控制模块186接收的纠错编码参数的柱宽度将切片编码数据解切片成编码数据段。例如,如果柱宽度为五,则解切片模块将五个编码数据切片的集合解切片为编码数据段。或者,编码数据段可以仅包括三个编码数据切片(例如,当解码阈值为3时)。
错误解码模块206根据作为控制信息190从控制模块186接收的纠错解码参数对编码数据段进行解码以产生安全数据段。纠错解码参数包括识别纠错编码方案(例如,前向纠错算法,基于Reed-Solomon的算法,信息分散算法等),柱宽度,解码阈值,读阈值,写阈值等。例如,纠错解码参数识别特定纠错编码方案,指定五的柱宽度,并且指定三的解码阈值。
当由控制模块186启用时,反段安全性处理模块208基于作为控制信息190从控制模块186接收的段安全性信息使安全数据段不安全。段安全性信息包括数据解压缩,解密,去水印,完整性检查(例如,CRC等)验证,和/或任何其它类型的数字安全性。例如,当反段安全性处理模块被启用时,其验证每个安全数据段的完整性信息(例如,CRC值),其解密每个验证的安全数据段,并且解压缩每个解密的安全数据段以产生数据段152。当反段安全性处理模块208未被启用时,其将解码数据段152作为数据段传递或被旁路通过。解分段处理模块210根据来自控制模块186的控制信息190将数据段152聚集成数据92。
图27是包括多个分布式存储和任务(DST)执行单元(#1至#n,其中例如n是大于或等于三的整数)的分布式存储和任务处理网络(DSTN)模块的例子的示意性框图。每个DST执行单元包括DST客户端模块34,控制器86,一个或多个DT(分布式任务)执行模块90,和存储器88。
在该例子中,DSTN模块在DST执行单元的存储器中存储多个DS(分散存储)编码数据(例如,1至n,其中n是大于或等于二的整数)并且存储多个DS编码任务代码(例如,1至k,其中k是大于或等于二的整数)。DS编码数据可以根据参考图3-19描述的一个或多个例子编码(例如,在切片分组中组织)或根据参考图20-26描述的一个或多个例子编码(例如,在柱组中组织)。编码为DS编码数据的数据可以是任何大小和/或任何内容。例如,数据可以是一个或多个数字图书,公司电子邮件的副本,大规模互联网搜索,视频安全性文件,一个或多个娱乐视频文件(例如,电视节目,电影等),数据文件,和/或任何其它大量数据(例如,大于几个太字节)。
编码为DS编码任务代码的任务可以是简单函数(例如,数学函数,逻辑函数,识别函数,查找函数,搜索引擎函数,替换函数等),复杂函数(例如压缩,人和/或计算机语言翻译,文本到语音转换,语音到文本转换等),多个简单和/或复杂函数,一个或多个算法,一个或多个应用等。任务可以根据参考图3-19描述的一个或多个例子编码为DS编码任务代码(例如,在切片分组中组织)或根据参考图20-26描述的一个或多个例子编码(例如,在柱组中组织)。
在操作的例子中,用户设备的或DST处理单元的DST客户端模块向DSTN模块发出DST请求。DST请求可以包括检索存储数据或其一部分的请求,可以包括存储与DST请求一起包括的数据的请求,可以包括对存储数据执行一个或多个任务的请求,可以包括对与DST请求一起包括的数据执行一个或多个任务的请求,等等。在DST请求包括存储数据或检索数据的请求的情况下,客户端模块和/或DSTN模块处理该请求,如前面参考图3-19(例如,切片分组)和/或20-26(例如,柱分组)中的一个或多个所讨论的。在DST请求包括对与DST请求一起包括的数据执行一个或多个任务的请求的情况下,DST客户端模块和/或DSTN模块处理DST请求,如前面参考图3-19中的一个或多个所讨论的。
在DST请求包括对存储数据执行一个或多个任务的请求的情况下,DST客户端模块和/或DSTN模块处理DST请求,如将参照图28-39中的一个或多个所描述的。一般而言,DST客户端模块识别数据和一个或多个任务以便DSTN模块在识别的数据上执行。DST请求可以用于任务的一次性执行或用于任务的正在执行。作为后者的例子,当公司生成每日电子邮件时,DST请求可以是每日搜索新的电子邮件以便找到不适当的内容,并且如果发现,记录内容,(一个或多个)电子邮件发送者,(一个或多个)电子邮件接收者,电子邮件路由信息,通知识别的电子邮件的人力资源等。
图28是对存储数据执行任务的分布式计算系统的例子的示意性框图。在该例子中,显示两个分布式存储和任务(DST)客户端模块1-2:第一个可以与用户设备相关联并且第二个可以与DST处理单元或高优先级用户设备(例如,高优先级清除用户,系统管理员等)相关联。每个DST客户端模块包括存储数据列表234和任务代码列表236。存储数据列表234包括数据标识信息的一个或多个条目,其中每个条目标识存储在DSTN模块22中的数据。数据识别信息(例如,数据ID)包括数据文件名、数据文件目录列表、数据的DSTN寻址信息、数据对象标识符等中的一个或多个。当每个条目识别存储在DSTN模块22中的任务代码时,任务列表236包括任务代码识别信息的一个或多个条目。任务代码识别信息(例如,任务ID)包括任务文件名、任务文件目录列表、任务的DSTN寻址信息、识别任务的另一种类型的标识符等中的一个或多个。
如图所示,数据列表234和任务列表236均为第一DST客户端模块的条目的数量小于第二DST客户端模块的相应列表。这可能发生的原因是与第一DST客户端模块相关联的用户设备在分布式计算系统中具有比与第二DST客户端模块相关联的设备更少的特权。或者,这可能发生的原因是与第一DST客户端模块相关联的用户设备比与第二DST客户端模块相关联的设备服务于更少的用户,并且因此受到分布式计算系统限制。作为又一替代方案,这可以通过没有分布式计算系统的限制而发生,其发生仅仅是由于与第一DST客户端模块相关联的用户设备的操作者比与第二DST客户端模块相关联的设备的操作者选择了更少的数据和/或更少的任务。
在操作的例子中,第一DST客户端模块从其相应列表(例如,选择的数据ID和选择的任务ID)选择一个或多个数据条目238和一个或多个任务240。第一DST客户端模块将其选择发送到任务分布模块232。任务分布模块232可以在分布式计算系统的独立设备内,可以在包含第一DST客户端模块的用户设备内,或者可以在DSTN模块22内。
不管任务分布模块的位置,它从选择的任务ID 240和选择的数据ID 238生成DST分配信息242。DST分配信息242包括数据分割信息,任务执行信息,和/或中间结果信息。任务分布模块232将DST分配信息242发送到DSTN模块22。应当注意,将参考图29-39中的一个或多个讨论DST分配信息的一个或多个例子。
DSTN模块22解释DST分配信息242以识别存储的DS编码数据(例如,DS错误编码数据2)并识别存储的DS错误编码任务代码(例如,DS错误编码任务代码1)。另外,DSTN模块22解释DST分配信息242以确定如何分割数据以及如何分割任务。DSTN模块22也确定选择的DS错误编码数据238是否需要从柱分组转换为切片分组。如果是,则DSTN模块22将选择的DS错误编码数据转换成切片分组,并且通过重写柱分组DS错误编码数据或通过将其存储在DSTN模块22的存储器中的不同位置来存储切片分组DS错误编码数据(即,不重写柱分组DS编码数据)。
DSTN模块22如DST分配信息242中所指示的那样分割数据和任务,并且将部分发送到DSTN模块22的选择的DST执行单元。每个选择的DST执行单元对其切片分组执行其(一个或多个)部分任务以产生部分结果。DSTN模块22从选择的DST执行单元收集部分结果,并且将它们作为结果信息244提供给任务分布模块。结果信息244可以是收集的部分结果,由DSTN模块22根据DST分配信息242从处理部分结果产生的一个或多个最终结果,或由DSTN模块22根据DST分配信息242从处理部分结果产生的一个或多个中间结果。
任务分布模块232接收结果信息244并且将一个或多个最终结果104从其提供给第一DST客户端模块。(一个或多个)最终结果104可以是结果信息244或结果信息244的任务分布模块的处理的(一个或多个)结果。
与处理第一DST客户端模块的选择的任务同时,分布式计算系统可以对第二DST客户端模块的选择的(一个或多个)数据处理第二DST客户端模块的选择的(一个或多个)任务。或者,分布式计算系统可以在第一DST客户端模块的请求之后或之前处理第二DST客户端模块的请求。不管DST客户端模块请求的排序和/或并行处理,第二DST客户端模块将其选择的数据238和选择的任务240提供给任务分布模块232。如果任务分布模块232是分布式计算系统的独立设备或在DSTN模块内,联接到第一和第二DST客户端模块的任务分布模块232可以是相同的模块。任务分布模块232以与它处理第一DST客户端模块的请求类似的方式处理第二DST客户端模块的请求。
图29是促进图28的例子的任务分布模块232的实施例的示意性框图。任务分布模块232包括其用来为从DST客户端模块接收的选择数据和选择任务生成分布式存储和任务(DST)分配信息242的多个表。表包括数据存储信息248,任务存储信息250,分布式任务(DT)执行模块信息252,和任务子任务映射信息246。
数据存储信息表248包括数据标识(ID)字段260,数据大小字段262,寻址信息字段264,分布式存储(DS)信息266,并且还可以包括关于数据、如何存储它和/或可以如何处理它的其它信息。例如,DS编码数据#1具有1的数据ID,AA的数据大小(例如几个太字节或更大的字节大小),Addr_1_AA的寻址信息,以及和3/5;SEG_1;和SLC_1的DS参数。在该例子中,寻址信息可以是与数据的第一存储字(例如,一个或多个字节)的虚拟地址相对应的虚拟地址和关于如何计算其它地址的信息,可以是数据的存储字的虚拟地址的范围,数据的第一存储字或多个存储字的物理地址,可以是数据的编码数据切片的切片名称的列表,等等。DS参数可以包括错误编码方案的标识,解码阈值/柱宽度(例如,对于第一数据条目为3/5),段安全性信息(例如,SEG_1),每切片安全性信息(例如,SLC_1),和/或关于如何将数据编码成数据切片的任何其它信息。
任务存储信息表250包括任务标识(ID)字段268,任务大小字段270,寻址信息字段272,分布式存储(DS)信息274,并且还可以包括关于任务、如何存储它和/或可以如何使用它来处理数据的其它信息。例如,DS编码任务#2具有2的任务ID,XY的任务大小,Addr_2_XY的寻址信息,以及3/5;SEG_2;和SLC_2的DS参数。在该例子中,寻址信息可以是与任务的第一存储字(例如,一个或多个字节)的虚拟地址相对应的虚拟地址和关于如何计算其它地址的信息,可以是任务的存储字虚拟地址的范围,任务的第一存储字或多个存储字的物理地址,可以是任务代码的编码切片的切片名称的列表,等等。DS参数可以包括错误编码方案的标识,解码阈值/柱宽度(例如,对于第一数据条目为3/5),段安全性信息(例如,SEG_2),每切片安全性信息(例如,SLC_2),和/或关于如何将任务成编码任务切片的任何其它信息。应当注意,段和/或每切片安全性信息包括加密的类型(如果启用),压缩的类型(如果启用),水印信息(如果启用),和/或完整性检查方案(如果启用)。
任务子任务映射信息表246包括任务字段256和子任务字段258。任务字段256识别存储在分布式存储和任务网络(DSTN)模块的存储器中的任务,并且对应的子任务任务字段258指示任务是否包括子任务,并且如果是,则指示有多少和子任务中的任何一个是否被排序。在该例子中,任务子任务映射信息表246包括存储在DSTN模块的存储器中的每个任务的条目(例如,任务1至任务k)。特别地,该例子指示任务1包括7个子任务;任务2不包括子任务,并且任务k包括数量r个子任务(其中r是大于或等于二的整数)。
DT执行模块表252包括DST执行单元ID字段276,DT执行模块ID字段278,和DT执行模块能力字段280。DST执行单元ID字段276包括DSTN模块中的DST单元的标识。DT执行模块ID字段278包括每个DST单元中的每个DT执行单元的标识。例如,DST单元1包括三个DT执行模块(例如,1_1,1_2,和1_3)。DT执行能力字段280包括对应DT执行单元的能力的标识。例如,DT执行模块1_1包括能力X,其中X包括以下的一个或多个:MIPS能力,处理资源(例如微处理器、CPU、数字信号处理器、协处理器、微控制器、算术逻辑电路和/或任何其它模拟和/或数字处理电路的数量或能力),处理资源的可用性,存储器信息(例如,类型,大小,可用性等),和/或与执行一个或多个任务密切相关的任何信息。
从这些表,任务分布模块232生成DST分配信息242以指示数据存储在何处,如何分割数据,任务存储在何处,如何分割任务,哪些DT执行单元将对哪些数据分区执行哪个部分任务,中间结果将被存储在何处以及如何被存储,等等。如果正对相同数据或不同数据执行多个任务,则任务分布模块将这样的信息归因于其生成DST分配信息。
图30是作为任务流318在存储数据执行任务的分布式计算系统的具体例子的图示。在该例子中,选择的数据92是数据2并且选择的任务是任务1、2和3。任务1对应于分析数据从一种语言翻译到另一种语言(例如,人类语言或计算机语言);任务2对应于在数据中寻找特定单词和/或短语;任务3对应于在被翻译数据中找到特定的被翻译单词和/或短语。
在该例子中,任务1包括7个子任务:任务1_1-识别非单词(未排序);任务1_2-识别独特单词(未排序);任务1_3-翻译(未排序);任务1_4-回译(在任务1_3之后排序);任务1_5-与ID错误比较(在任务1-4之后排序);任务1_6-确定非单词翻译错误(在任务1_5和1_1之后排序);以及任务1_7-确定正确翻译(在1_5和1_2之后排序)。子任务还指示它们是有序任务(即,取决于另一任务的结果)还是无序的(即,独立于另一任务的结果)。任务2不包括子任务,并且任务3包括两个子任务:任务3_1翻译;以及任务3_2在被翻译数据中寻找特定单词或短语。
一般而言,共同地选择三个任务以针对翻译准确性、翻译错误、翻译异常、数据中特定单词或短语的出现,以及被翻译数据上的特定单词或短语的出现分析数据。图形地,数据92被翻译306为被翻译数据282;针对特定单词和/或短语300进行分析以产生特定单词和/或短语的列表286;针对非单词302(例如,不在参考字典中)进行分析以产生非单词的列表290;并且针对包括在数据92中的独特单词316进行分析(即,有多少不同单词包括在数据中)以产生独特单词的列表298。这些任务的每一个彼此独立,并且因此需要时可以并行处理。
针对特定被翻译单词和/或短语304分析(例如,子任务3_2)被翻译数据282以产生特定被翻译单词和/或短语的列表。将被翻译数据282回译308(例如,子任务1_4)为原始数据的语言以产生重新翻译的数据284。这两个任务取决于翻译任务(例如,任务1_3),并且因此必须在翻译任务之后排序,其可以是流水线排序或串行排序。然后将重新翻译的数据284与原始数据92进行比较310以寻找没有正确地翻译(单向和/或另一个)的单词和/或短语,从而产生错误翻译的单词的列表294。因而,在翻译306和重新翻译任务308(例如,子任务1_3和1_4)之后排序比较任务(例如,子任务1_5)310。
将错误翻译的单词的列表294与非单词的列表290进行比较312以识别由于单词是非单词而未正确翻译的单词,从而产生由于非单词引起的错误的列表292。另外,将错误翻译的单词的列表294与独特单词的列表298进行比较314以识别被正确翻译的独特单词,从而产生正确翻译的单词的列表296。该比较也可以识别未被正确翻译的独特单词,从而产生未正确翻译的独特单词的列表。应当注意,单词(例如,特定单词和/或短语,非单词,独特单词,被翻译单词和/或短语等)的每个列表可以包括单词和/或短语,它被使用多少次,在数据中它在何处使用,和/或关于单词和/或短语请求的任何其它信息。
图31是用于图30的例子的存储数据和任务代码的分布式存储和任务处理网络(DSTN)模块的例子的示意性框图。如图所示,DS编码数据2作为编码数据切片存储在DST执行单元1-5的存储器上(例如,存储在存储器88中);(任务1的)DS编码任务代码1和DS编码任务3作为编码任务切片存储在DST执行单元1-5的存储器上;并且(任务2的)DS编码任务代码2作为编码任务切片存储在DST执行单元3-7的存储器上。如图29的数据存储信息表和任务存储信息表中所示,相应的数据/任务用于它们的解码阈值/柱宽度的3/5的DS参数;因此跨越五个DST执行单元的存储器。
图32是用于图30的例子的分布式存储和任务(DST)分配信息242的例子的图示。DST分配信息242包括数据分割信息320,任务执行信息322,和中间结果信息324。数据分割信息320包括数据标识符(ID),将数据分割成的分区的数量,每个数据分区的地址信息,以及DS编码数据是否必须从柱分组转换为切片分组。任务执行信息322包括表信息,其具有任务标识字段326,任务排序字段328,数据分区字段ID 330,和用于每个数据分区的分布式任务处理的DT执行模块的集合332。中间结果信息324包括表信息,其具有名称ID字段334,分配用于处理对应的中间结果的DST执行单元的ID 336,便笺存储字段338,和中间结果存储字段340。
继续图30的例子,其中任务1-3将对数据2分布地执行,数据分割信息包括数据2的ID。另外,任务分布模块确定DS编码数据2是否处于用于分布式计算的适当格式(例如,被存储为切片分组)。如果不是,则任务分布模块指示DS编码数据2格式需要从柱分组格式改变为切片分组格式,这将由DSTN模块完成。另外,任务分布模块确定将数据分成的分区的数量(例如,2_1至2_z)和每个分区的寻址信息。
任务分布模块对于将执行的每个子任务在任务执行信息部分中生成条目。例如,任务1_1(例如,对数据识别非单词)没有任务排序(即,独立于其它子任务的结果),将由DT执行模块1_1,2_1,3_1,4_1和5_1对数据分区2_1至2_z执行。例如,DT执行模块1_1,2_1,3_1,4_1和5_1在数据分区2_1至2_z中搜索非单词以产生任务1_1中间结果(R1-1,其是非单词的列表)。任务1_2(例如,识别独特单词)具有与任务1_1类似的任务执行信息以产生任务1_2中间结果(R1-2,其是独特单词的列表)。
任务1_3(例如,翻译)包括未排序的(即,是独立的)任务执行信息,由DT执行模块1_1,2_1,3_1,4_1和5_1翻译数据分区2_1至2_4并且由DT执行模块1_2,2_2,3_2,4_2和5_2翻译数据分区2_5至2_z以产生任务1_3中间结果(R1-3,其是被翻译数据)。在该例子中,数据分区被分组,其中DT执行模块的不同集合对每个数据分区组执行分布式子任务(或任务),其允许进一步的并行处理。
任务1_4(例如,回译(translate back))在任务1_3之后排序,并且将对任务1_3的中间结果(例如,R1_3_1)(例如,被翻译数据)执行。DT执行模块1_1,2_1,3_1,4_1和5_1被分配用于回译任务1_3中间结果分区R1-3_1至R1-3_4,并且DT执行模块1_2,2_2,6_1,7_1和7_2被分配用于回译任务1_3中间结果分区R1-3_5至R1_3_z,从而产生任务1-4中间结果(R1-4,其是被回译数据)。
任务1_5(例如,比较数据和被翻译数据以识别翻译错误)在任务1_4之后排序,并且将对任务1_4的中间结果(R4-1)和数据执行。DT执行模块1_1,2_1,3_1,4_1和5_1被分配用于将数据分区(2_1至2_z)与任务1-4中间结果分区R1-4_1至R1-4_z的分区进行比较,从而产生任务1_5中间结果(R1-5,其错误翻译的单词列表)。
任务1_6(例如,确定非单词翻译错误)在任务1_1和1_5之后排序,并且将对任务l_1和l_5的中间结果(R1-1和R1-5)执行。DT执行模块1_1,2_1,3_1,4_1和5_1被分配用于将任务1_1中间结果(R1-1_1至R1-1_z)的分区与任务1-5中间结果分区(R1-5_1至R1-5_z)的分区进行比较,从而产生任务1_6中间结果(R1-6,其是由于非单词引起的翻译错误列表)。
任务1_7(例如,确定正确翻译的单词)在任务1_2和1_5之后排序,并且将对任务l_2和l_5的中间结果(R1-1和R1-5)执行。DT执行模块1_2,2_2,3_2,4_2和5_2被分配用于将任务1_2中间结果(R1-2_1至R1-2_z)的分区与任务1-5中间结果分区(R1-5_1至R1-5_z)的分区进行比较,从而产生任务1_7中间结果(R1-7,其是正确翻译的单词的列表)。
任务2(例如,寻找特定单词和/或短语)没有任务排序(即,独立于其它子任务的结果),将由DT执行模块3_1,4_1,5_1,6_1和7_1对数据分区2_1至2_z执行。例如,DT执行模块3_1,4_1,5_1,6_1和7_1在数据分区2_1至2_z中搜索特定单词和/或短语,从而产生任务2中间结果(R2,其是特定单词和/或短语的列表)。
任务3_2(例如,寻找特定的被翻译单词和/或短语)在任务1_3(例如,翻译)之后排序,将由DT执行模块1_2,2_2,3_2,4_2和5_2对分区R1-3_1至R1-3_z执行。例如,DT执行模块1_2,2_2,3_2,4_2和5_2在被翻译数据的分区(R1-3_1至R1-3_z)中搜索特定的被翻译单词和/或短语,从而产生任务3_2中间结果(R3-2,其是特定的被翻译单词和/或短语的列表)。
对于每个任务,中间结果信息指示哪个DST单元负责监督任务的执行,并且需要时,处理由被分配DT执行单元的集合生成的部分结果。另外,中间结果信息指示用于任务的便笺存储器和对应的中间结果将存储在何处。例如,对于中间结果R1-1(任务1_1的中间结果),DST单元1负责监督任务1_1的执行,并且协调作为存储在DST执行单元1-5的存储器中的编码中间结果切片的中间结果的存储。一般而言,便笺存储器用于存储非DS编码中间结果,并且中间结果存储用于存储DS编码中间结果。
图33-38是执行图30的例子的分布式存储和任务网络(DSTN)模块的示意性框图。在图33中,DSTN模块访问数据92并且根据分布式存储和任务网络(DST)分配信息将其分割为多个分区1-z。对于每个数据分区,DSTN根据DST分配信息识别其DT(分布式任务)执行模块的集合90以执行任务(例如,在数据分区内识别的非单词(即,不在参考字典中))。从数据分区到数据分区,DT执行模块的集合90可以是相同的、不同的或其组合(例如,一些数据分区使用相同的集合,而其它数据分区使用不同的集合)。
对于第一数据分区,DT执行模块的第一集合(例如,图32的根据DST分配信息的1_1,2_1,3_1,4_1和5_1)执行任务1_1以在第一数据分区中产生找到的非单词的第一部分结果102。DT执行模块的第二集合(例如,图32的根据DST分配信息的1_1,2_1,3_1,4_1和5_1)执行任务1_1以产生在第二数据分区中找到的非单词的第二部分结果102。DT执行模块的集合(根据DST分配信息)对数据分区执行任务1_1,直到DT执行模块的“z”集合对“第z”数据分区执行任务1_1,从而产生在“第z”数据分区中找到的非单词的“第z”部分结果102。
如图32的DST分配信息中所示,DST执行单元1被分配用于处理第一至“第z”部分结果,从而产生第一中间结果(R1-1),其是在数据中找到的非单词的列表。例如,每个DT执行模块的集合90将其相应的部分结果存储在DST执行单元1的便笺存储器中(其在DST分配中被识别或可以由DST执行单元1确定)中。使DST执行单元1的处理模块聚集第一至“第z”部分结果以产生第一中间结果(例如,R1_1)。处理模块将第一中间结果作为非DS错误编码数据存储在便笺存储器中或DST执行单元1的存储器的另一部分中。
DST执行单元1使其DST客户端模块对第一中间结果(例如,非单词的列表)进行基于切片分组的DS错误编码。为了开始编码,DST客户端模块确定非单词的列表是否具有足够的大小来分割(例如,大于1太字节)。如果是,则将第一中间结果(R1-1)分割为多个分区(例如,R1-1_1至R1-1_m)。如果第一中间结果具有的大小不足以进行分割,则不对其进行分割。
对于第一中间结果的每个分区或对于第一中间结果,DST客户端模块使用数据的DS错误编码参数(例如,数据2的DS参数,其包括3/5解码阈值/柱宽度比)以产生切片分组。切片分组存储在中间结果存储器(例如,DST执行单元1-5的存储器中的被分配存储器)中。
在图34中,DSTN模块正在对数据92执行任务1_2(例如,寻找独特单词)。开始,DSTN模块访问数据92并根据DST分配信息将其分割成多个分区1-z,或者如果分割相同,它可以使用任务1_1的数据分区。对于每个数据分区,DSTN根据DST分配信息识别其DT执行模块的集合以执行任务1_2。从数据分区到数据分区,DT执行模块的集合可以是相同的、不同的或其组合。对于数据分区,分配的DT执行模块集合执行任务1_2以产生在数据分区中找到的独特单词的部分结果(例如,第一至“第z”)。
如图32的DST分配信息中所示,DST执行单元1被分配用于处理任务1_2的第一至“第z”部分结果102,从而产生第二中间结果(R1-2),其是在数据92中找到的独特单词的列表。使DST执行单元1的处理模块聚集独特单词的第一至“第z”部分结果以产生第二中间结果。处理模块将第二中间结果作为非DS错误编码数据存储在便笺存储器中或DST执行单元1的存储器的另一部分中。
DST执行单元1使其DST客户端模块对第二中间结果(例如,非单词的列表)进行基于切片分组的DS错误编码。为了开始编码,DST客户端模块确定独特单词的列表是否具有足够的大小来分割(例如,大于一太字节)。如果是,则其将第二中间结果(R1-2)分割为多个分区(例如,R1-2_1至R1-2_m)。如果第二中间结果的大小不足以进行分割,则不对其进行分割。
对于第二中间结果的每个分区或对于第二中间结果,DST客户端模块使用数据的DS错误编码参数(例如,数据2的DS参数,其包括3/5解码阈值/柱宽度比)以产生切片分组。切片分组存储在中间结果存储器(例如,DST执行单元1-5的存储器中的被分配存储器)中。
在图35中,DSTN模块正在对数据92执行任务1_3(例如,翻译)。开始,DSTN模块访问数据92并根据DST分配信息将其分割成多个分区1-z,或者如果分割相同,它可以使用任务1_1的数据分区。对于每个数据分区,DSTN根据DST分配信息识别其DT执行模块的集合以执行任务1_3(例如,DT执行模块1_1,2_1,3_1,4_1和5_1翻译数据分区2_1至2_4,并且DT执行模块1_2,2_2,3_2,4_2和5_2翻译数据分区2_5至2_z)。对于数据分区,分配的DT执行模块的集合90执行任务1_3以产生被翻译数据的部分结果102(例如,第一至“第z”)。
如图32的DST分配信息中所示,DST执行单元2被分配用于处理任务1_3的第一至“第z”部分结果,从而产生第三中间结果(R1-3),其是被翻译数据。使DST执行单元2的处理模块聚集被翻译数据的第一至“第z”部分结果以产生第三中间结果。处理模块将第三中间结果作为非DS错误编码数据存储在便笺存储器中或DST执行单元2的存储器的另一部分中。
DST执行单元2使其DST客户端模块对第三中间结果(例如,被翻译数据)进行基于切片分组的DS错误编码。为了开始编码,DST客户端模块将第三中间结果(R1-3)分割成多个分区(例如,R1-3_1至R1-3_y)。对于第三中间结果的每个分区,DST客户端模块使用数据的DS错误编码参数(例如,数据2的DS参数,其包括3/5解码阈值/柱宽度比)以产生切片分组。切片分组存储在中间结果存储器(例如,根据DST分配信息,DST执行单元2-6的存储器中的被分配存储器)中。
如图35中进一步所示,DSTN模块正在对第三中间结果的被翻译数据执行任务1_4(例如,重新翻译)。开始,DSTN模块访问被翻译数据(从便笺存储器或从中间结果存储器并对其进行解码)并根据DST分配信息将其分割成多个分区。对于第三中间结果的每个分区,DSTN根据DST分配信息识别其DT执行模块的集合90以执行任务1_4(例如,DT执行模块1_1,2_1,3_1,4_1和5_1被分配用于回译分区R1-1-3至R1-3_4,并且DT执行模块1_2,2_2,6_1,7_1和7_2被分配用于回译分区R1-3_5至R1-3_z)。对于分区,分配的DT执行模块集合执行任务1_4以产生重新翻译的数据的部分结果102(例如,第一至“第z”)。
如图32的DST分配信息中所示,DST执行单元3被分配用于处理任务1_4的第一至“第z”部分结果,从而产生第四中间结果(R1-4),其是重新翻译的数据。使DST执行单元3的处理模块聚集重新翻译的数据的第一至“第z”部分结果,从而产生第四中间结果。处理模块将第四中间结果作为非DS错误编码数据存储在便笺存储器中或DST执行单元3的存储器的另一部分中。
DST执行单元3使其DST客户端模块对第四中间结果(例如,重新翻译的数据)进行基于切片分组的DS错误编码。为了开始编码,DST客户端模块将第四中间结果(R1-4)分割为多个分区(例如,R1-4_1至R1-4_z)。对于第四中间结果的每个分区,DST客户端模块使用数据的DS错误编码参数(例如,数据2的DS参数,其包括3/5解码阈值/柱宽度比)以产生切片分组。切片分组存储在中间结果存储器(例如,根据DST分配信息,DST执行单元3-7的存储器中的被分配存储器)中。
在图36中,分布式存储和任务网络(DSTN)模块正在对数据92和图35的重新翻译的数据执行任务1_5(例如,比较)。开始,DSTN模块访问数据92并将其分割成多个分区,或者如果分割相同,则它可以使用任务1_1的数据分区。DSTN模块也从便笺存储器或从中间结果存储器访问重新翻译的数据并对其进行解码,并且根据DST分配信息将其分割成多个分区。重新翻译的数据的分区的数量对应于数据的分区的数量。
对于每对分区(例如,数据分区1和重新翻译的数据分区1),DSTN根据DST分配信息识别其DT执行模块的集合90以执行任务1_5(例如,DT执行模块1_1,2_1,3_1,4_1和5_1)。对于每对分区,分配的DT执行模块集合执行任务1_5以产生错误翻译的单词和/或短语的列表的部分结果102(例如,第一至“第z”)。
如图32的DST分配信息中所示,DST执行单元1被分配用于处理任务1_5的第一至“第z”部分结果,从而产生第五中间结果(R1-5),其是错误翻译的单词的列表和/或短语。特别地,使DST执行单元1的处理模块聚集错误翻译的单词和/或短语的列表的第一至“第z”部分结果以产生第五中间结果。处理模块将第五中间结果作为非DS错误编码数据存储在便笺存储器中或DST执行单元1的存储器的另一部分中。
DST执行单元1使其DST客户端模块对第五中间结果进行基于切片分组的DS错误编码。为了开始编码,DST客户端模块将第五中间结果(R1-5)分割成多个分区(例如,R1-5_1至R1-5_z)。对于第五中间结果的每个分区,DST客户端模块使用数据的DS错误编码参数(例如,数据2的DS参数,其包括3/5解码阈值/柱宽度比)以产生切片分组。切片分组存储在中间结果存储器(例如,根据DST分配信息,DST执行单元1-5的存储器中的被分配存储器)中。
如图36中进一步所示,DSTN模块对错误翻译的单词和/或短语的列表(例如,第五中间结果R1-5)和非单词的列表(例如,第一中间结果R1-1)执行任务1_6(例如,由于非单词引起的翻译错误)。开始,DSTN模块访问列表并将它们分割成相应数量的分区。
对于每对分区(例如,分区R1-1_1和分区R1-5_1),DSTN根据DST分配信息识别其DT执行模块的集合90以执行任务1_6(例如,DT执行模块1_1,2_1,3_1,4_1和5_1)。对于每对分区,分配的DT执行模块集合执行任务1_6以产生由于非单词引起的错误翻译的单词和/或短语的列表的部分结果102(例如,第一至“第z”)。
如图32的DST分配信息中所示,DST执行单元2被分配用于处理任务1_6的第一至“第z”部分结果,从而产生第六中间结果(R1-6),其是由于非单词引起的错误翻译的单词和/或短语的列表。特别地,使DST执行单元2的处理模块聚集由于非单词引起的错误翻译的单词和/或短语的列表的第一至“第z”部分结果以产生第六中间结果。处理模块将第六中间结果作为非DS错误编码数据存储在便笺存储器中或DST执行单元2的存储器的另一部分中。
DST执行单元2使其DST客户端模块对第六中间结果进行基于切片分组的DS错误编码。为了开始编码,DST客户端模块将第六中间结果(R1-6)分割成多个分区(例如,R1-6_1至R1-6_z)。对于第六中间结果的每个分区,DST客户端模块使用数据的DS错误编码参数(例如,数据2的DS参数,其包括3/5解码阈值/柱宽度比)以产生切片分组。切片分组存储在中间结果存储器(例如,根据DST分配信息,DST执行单元2-6的存储器中的被分配存储器)中。
如图36中进一步所示,DSTN模块正在对错误翻译的单词和/或短语的列表(例如,第五中间结果R1-5)和独特单词的列表(例如,第二中间结果R1-2)执行任务1_7(例如,正确翻译的单词和/或短语)。开始,DSTN模块访问列表并将它们分割成相应数量的分区。
对于每对分区(例如,分区R1-2_1和分区R1-5_1),DSTN根据DST分配信息识别其DT执行模块的集合90以执行任务1_7(例如,DT执行模块1_2,2_2,3_2,4_2和5_2)。对于每对分区,分配的DT执行模块集合执行任务1_7以产生正确翻译的单词和/或短语的列表的部分结果102(例如,第一至“第z”)。
如图32的DST分配信息中所示,DST执行单元3被分配用于处理任务1_7的第一至“第z”部分结果,从而产生第七中间结果(R1-7),其是正确翻译的单词和/或短语的列表。具体地,使DST执行单元3的处理模块聚集正确翻译的单词和/或短语的列表的第一至“第z”部分结果以产生第七中间结果。处理模块将第七中间结果作为非DS错误编码数据存储在便笺存储器中或DST执行单元3的存储器的另一部分中。
DST执行单元3使其DST客户端模块对第七中间结果进行基于切片分组的DS错误编码。为了开始编码,DST客户端模块将第七中间结果(R1-7)分割为多个分区(例如,R1-7_1至R1-7_z)。对于第七中间结果的每个分区,DST客户端模块使用数据的DS错误编码参数(例如,数据2的DS参数,其包括3/5解码阈值/柱宽度比)以产生切片分组。切片分组存储在中间结果存储器(例如,根据DST分配信息,DST执行单元3-7的存储器中的被分配存储器)中。
在图37中,分布式存储和任务网络(DSTN)模块正在对数据92执行任务2(例如,寻找特定单词和/或短语)。开始,DSTN模块访问数据并根据DST分配信息将其分割成多个分区1-z,或者如果分割相同,则它可以使用任务1_1的数据分区。对于每个数据分区,DSTN根据DST分配信息识别其DT执行模块的集合90以执行任务2。从数据分区到数据分区,DT执行模块的集合可以是相同的、不同的或其组合。对于数据分区,分配的DT执行模块集合执行任务2以产生在数据分区中找到的特定单词和/或短语的部分结果102(例如,第一至“第z”)。
如图32的DST分配信息中所示,DST执行单元7被分配用于处理任务2的第一至“第z”部分结果,从而产生任务2中间结果(R2),其是在数据中找到的特定单词和/或短语的列表。使DST执行单元7的处理模块聚集特定单词和/或短语的第一至“第z”部分结果以产生任务2中间结果。处理模块将任务2中间结果作为非DS错误编码数据存储在便笺存储器或DST执行单元7的存储器的另一部分中。
DST执行单元7使其DST客户端模块对任务2中间结果进行基于切片分组的DS错误编码。为了开始编码,DST客户端模块确定特定单词和/或短语的列表是否具有足够的大小来分割(例如,大于1太字节)。如果是,则将任务2中间结果(R2)分割为多个分区(例如,R2_1至R2_m)。如果任务2中间结果的大小不足以进行分割,则不对其进行分割。
对于任务2中间结果的每个分区或对于任务2中间结果,DST客户端模块使用数据的DS错误编码参数(例如,数据2的DS参数,其包括3/5解码阈值/柱宽度比率)以产生切片分组。切片分组存储在中间结果存储器(例如,DST执行单元1-4和7的存储器中的被分配存储器)中。
在图38中,分布式存储和任务网络(DSTN)模块正在对被翻译数据(R1-3)执行任务3(例如,寻找特定的被翻译单词和/或短语)。开始,DSTN模块访问被翻译数据(从便笺存储器或从中间结果存储器并对其进行解码)并且根据DST分配信息将其分割成多个分区。对于每个分区,DSTN根据DST分配信息识别其DT执行模块的集合以执行任务3。从分区到分区,DT执行模块的集合可以是相同的、不同的或其组合。对于分区,分配的DT执行模块集合90执行任务3以产生在数据分区中找到的特定的被翻译单词和/或短语的部分结果102(例如,第一至“第z”)。
如图32的DST分配信息中所示,DST执行单元5被分配用于处理任务3的第一至“第z”部分结果,从而产生任务3中间结果(R3),其是在被翻译数据中找到的特定的被翻译单词和/或短语的列表。特别地,使DST执行单元5的处理模块聚集特定的被翻译单词和/或短语的第一至“第z”部分结果以产生任务3中间结果。处理模块将任务3中间结果作为非DS错误编码数据存储在便笺存储器中或DST执行单元7的存储器的另一部分中。
DST执行单元5使其DST客户端模块对任务3中间结果进行基于切片分组的DS错误编码。为了开始编码,DST客户端模块确定特定的被翻译单词和/或短语的列表是否具有足够的大小来分割(例如,大于1太字节)。如果是,则将任务3中间结果(R3)分割为多个分区(例如,R3_1至R3_m)。如果任务3中间结果的大小不足以进行分割,则不对其进行分割。
对于任务3中间结果的每个分区或对于任务3中间结果,DST客户端模块使用数据的DS错误编码参数(例如,数据2的DS参数,其包括3/5解码阈值/柱宽度比率)以产生切片分组。切片分组存储在中间结果存储器(例如,DST执行单元1-4、5和7的存储器中的被分配存储器)中。
图39是用于图30的例子的将结果信息组合成最终结果104的例子的图示。在该例子中,结果信息包括在数据中找到的特定单词和/或短语的列表(任务2中间结果),在数据中找到的特定的被翻译单词和/或短语的列表(任务3中间结果),在数据中找到的非单词的列表(任务1第一中间结果R1-1),在数据中找到的独特单词的列表(任务1第二中间结果R1-2),由于非单词引起的翻译错误的列表(任务1第六中间结果R1-6),以及正确翻译的单词和/或短语的列表(任务1第七中间结果R1-7)。任务分布模块将结果信息作为结果104提供给请求DST客户端模块。
图40A是分散存储网络(DSN)的实施例的示意性框图,其包括图1的分布式存储和任务(DST)客户端模块34,图1的网络24,以及包括存储世代1-5的多个存储世代。DST客户端模块34包括确定性函数模块350。确定性函数模块350可以使用图3的处理模块84来实现。每个存储世代包括DST执行(EX)单元1-n的集合。每个DST执行单元可以使用图1的DST执行单元36来实现。
DSN用于从多个存储世代检索多世代存储数据。在检索多世代存储数据的操作的例子中,DST客户端模块34接收与数据对象相关联的访问请求352。访问请求352包括以下的一个或多个:数据对象名称(例如,foo),请求类型指示符(例如,读,写,删除,更新,列表;即检索请求),以及请求实体标识符。在接收到访问请求352之后,DST客户端模块34获得与访问请求352相关联的仓库标识符(ID)。获得包括以下的至少一种:使用数据对象名称执行查找和识别访问请求和仓库ID之间的联系(例如,请求实体ID和仓库ID之间的关系)。例如,DST客户端模块34使用请求实体ID来访问系统注册表信息以查找仓库ID。
在获得仓库ID后,DST客户端模块34基于数据对象名称生成用于检索元数据寻址信息的第一检索请求,其中第一检索请求根据DSN的读请求格式(例如,读切片请求354)被格式化。生成包括生成用于检索至少解码阈值数量的元数据寻址信息切片的第一级读请求(例如,检索请求1)的集合,其中元数据寻址信息包括关于DSN内的元数据(例如,存储世代标识符)的存储的寻址信息,其中元数据寻址信息被分散存储被分散存储错误编码以产生元数据寻址信息切片的集合,并且其中元数据寻址信息切片的解码阈值数量表示恢复元数据寻址信息所需的元数据寻址信息切片的集合的元数据寻址信息切片的最小数量。生成还包括基于访问请求352识别多个存储世代的存储世代。例如,确定性函数模块350对访问请求352的数据对象名称执行确定性函数以产生与第一级读请求的集合相关联的DSN地址的至少一部分(例如,识别多个世代中的哪一个固定世代,即,世代4)。确定性函数包括以下的至少一个:基于散列的消息认证代码,散列函数,掩码生成函数,和海绵函数。参考图40B更详细地讨论确定性函数模块350的操作。
在生成第一检索请求的第一级读请求的集合之后,DST客户端模块34经由网络24将检索请求1发送到存储世代4(例如,与数据对象名称相关联的被识别固定世代)的DST执行单元,接收包括检索响应1的读切片响应356,并且从读切片响应356提取至少解码阈值数量的元数据寻址信息切片。产生至少解码阈值数量的元数据寻址信息切片之后,DST客户端模块34分散存储错误解码至少解码阈值数量的元数据寻址信息切片以恢复元数据寻址信息。在恢复元数据寻址信息之后,DST客户端模块34提取关于元数据的存储的寻址信息。例如,DST客户端模块34提取关于元数据的存储的寻址信息以识别存储世代2(例如,元数据先前存储在存储世代2中)。
在检索到元数据寻址信息之后,DST客户端模块34基于检索到的元数据寻址信息生成用于检索(例如,数据对象的)元数据的第二检索请求,其中第二检索请求根据DSN的读请求格式被格式化。元数据包括以下的一个或多个:关于DSN内的数据对象的编码数据切片的多个集合的存储的寻址信息(例如,数据对象的源名称,数据对象的切片名称的多个集合,与数据对象的存储相关联的虚拟DSN地址),数据大小指示符,数据类型指示符,数据优先级指示符,数据拥有者标识符,数据接收者标识符,数据的访问控制列表,时间戳,数据对象名称,仓库标识符,目录的DSN地址,分散分层索引的索引节点的DSN地址,世代指针DSN地址(例如,与第一级读请求的集合相关联的DSN地址),以及与数据对象相关联的任何其它信息。
生成第二检索包括基于元数据寻址信息生成用于检索至少解码阈值数量的元数据切片(例如,与元数据寻址信息切片的解码阈值数量相同或不同的解码阈值数量)的第二级读请求(例如,检索请求2)的集合,其中元数据包括关于DSN内的数据对象的编码数据切片的多个集合的存储的寻址信息,其中元数据被分散存储错误编码以产生元数据切片的集合,并且其中元数据切片的解码阈值数量表示恢复元数据所需的元数据切片的集合中的元数据切片的最小数量。
在生成第二检索请求的第二级请求的集合之后,DST客户端模块34经由网络24将检索请求2发送到存储世代2的DST执行单元(例如,如元数据寻址信息指示),接收包括检索响应2的进一步的读切片响应356,并且从进一步的读切片响应356提取至少解码阈值数量的元数据切片。在产生至少解码阈值数量的元数据切片之后,DST客户端模块34分散存储错误解码至少解码阈值数量的元数据切片以将元数据恢复为检索的元数据。
在恢复元数据之后,DST客户端模块34基于检索的元数据生成用于检索与数据对象名称相关联的数据对象的至少一部分的第三检索请求,其中第三检索请求根据DSN的读请求格式被格式化。生成第三检索请求包括基于检索到的元数据生成用于检索至少解码阈值数量的编码数据切片(例如,与和元数据寻址信息和元数据相关联的解码阈值数量相同或不同的解码阈值数量)的第三级读请求(例如,检索请求3)的至少一个集合,其中数据对象被分散存储错误编码以产生存储在对应存储世代中的编码数据切片的多个集合,并且其中编码数据切片的解码阈值数量表示恢复数据对象的该部分所需的编码数据切片的多个集合的编码数据切片的最小数量。
在生成第三级读请求的至少一个集合之后,DST客户端模块34经由网络24将检索请求3发送到存储世代5的DST执行单元(例如,如元数据指示),接收包括检索响应3的更进一步的读切片响应356,并且对于编码数据切片的每个集合,从更进一步的读切片响应356提取至少解码阈值数量的编码数据切片。对于编码数据切片的每个集合,在产生至少解码阈值数量的编码数据切片之后,对于编码数据切片的每个集合,DST客户端模块34分散存储错误解码至少解码阈值数量的编码数据切片以将数据对象恢复为恢复的数据对象。在恢复数据对象之后,DST客户端模块34发出包括恢复的数据对象的访问响应358。
图40B是示出用于检索数据的图40A的确定性函数模块350的实施例的示意性框图。作为参考图40A所讨论的检索多世代存储数据的操作的又一例子,确定性函数模块350对访问请求352的数据对象名称执行确定性函数(deterministic function)以产生包括世代指针源名称信息360的数字值。例如,确定性函数模块350对数据对象名称foo执行掩码生成函数以产生数字值。在执行确定性函数之后,确定性函数模块350(例如,或此后,任何其它处理模块)使用数字值的第一部分作为DSN的读请求格式的世代标识符,并且使用数字值的第二部分作为DSN的读请求格式的对象标识符。例如,确定性函数模块350使用第一部分作为世代标识符(ID)4并且使用第二部分作为对象ID 5E8。
在识别世代ID和对象ID之后,确定性函数模块350通过确定与数据对象相关联的仓库标识符来生成第一检索请求。例如,确定性函数模块350使用请求实体的标识符来识别仓库ID 457。在识别仓库ID之后,确定性函数模块350在DSN的读请求格式的仓库标识符字段中使用仓库标识符。例如,确定性函数模块350生成用于foo元数据世代指针362的源名称以包括仓库ID457,世代ID 4,和对象ID 5E8;并且生成第一检索请求以包括foo元数据世代指针362。
在生成第一检索请求之后,确定性函数模块350通过将第一检索请求发送到存储世代4来访问DSN,接收用于foo的世代指针364的元数据寻址信息切片,并且解码接收的元数据寻址信息切片以再产生元数据寻址信息366。元数据寻址信息366包括foo元数据对象编号CA9和foo元数据世代ID 2。
在再产生元数据寻址信息366之后,确定性函数模块350通过从元数据寻址信息366提取世代标识符(例如,世代2)和对象标识符(例如,CA9)来生成第二检索请求。接下来,确定性函数模块350确定与数据对象相关联的仓库标识符。在确定仓库ID之后,确定性函数模块350通过在DSN的读请求格式的世代标识符字段中使用世代标识符(例如,2),在DSN的读请求格式的对象标识符字段中使用对象标识符(例如,CA9),并且在DSN的读请求格式的仓库标识符字段中使用仓库标识符(例如,457),生成第二检索请求的foo元数据的源名称368。
在生成第二检索请求之后,确定性函数模块350通过向存储世代2发送第二检索请求来访问DSN,接收foo元数据对象370的元数据切片,并且对接收到的元数据切片进行解码以再产生元数据372(例如,对于foo)。foo的元数据372包括foo数据对象的源名称374。
在再产生foo的元数据372之后,确定性函数模块350通过使用foo数据对象的源名称374的字段(例如,仓库ID 457,世代ID 5,对象ID B93)来生成第三检索请求。在生成第三检索请求之后,确定性函数模块350通过将第三检索请求发送到存储世代5来访问DSN,接收存储的foo数据对象376的编码数据切片,分散存储错误解码接收的编码数据切片以再产生数据对象foo。
图40C是示出检索多世代存储数据的例子的流程图。具体地,提供与结合1-39、40A-B以及图40C描述的一个或多个功能和特征一起使用的方法。该方法开始于步骤380,其中分散存储网络(DSN)的一个或多个计算设备的计算设备的处理模块对用于检索的数据对象的数据对象名称执行确定性函数以产生数字值。在产生数字值之后,处理模块使用数字值的第一部分作为用于第一检索请求的DSN的读请求格式的世代标识符(ID),并且使用数字值的第二部分作为第一检索请求的DSN的读请求格式的对象标识符。
该方法在步骤382继续,其中处理模块确定与数据对象相关联的仓库标识符。例如,处理模块使用请求实体ID来执行系统注册表查找以识别仓库ID。作为另一例子,处理模块使用数据对象名称并执行目录查找以产生仓库ID。在产生存储仓库ID之后,处理模块在第一检索请求的DSN的读请求格式的仓库标识符字段中使用仓库标识符。
该方法在步骤384继续,其中处理模块基于数据对象名称生成用于检索元数据寻址信息的第一检索请求,其中第一检索请求根据DSN的读请求格式被格式化(例如,第一检索请求包括对应于与元数据寻址信息相关联的DSN地址的仓库ID,世代ID和对象ID)。生成第一检索请求包括生成用于检索至少解码阈值数量的元数据寻址信息切片的第一级读请求的集合,其中元数据寻址信息包括关于DSN内的元数据的存储的寻址信息,其中元数据寻址信息被分散存储错误编码以产生元数据寻址信息切片的集合,并且其中元数据寻址信息切片的解码阈值数量表示恢复元数据寻址信息所需的元数据寻址信息切片的集合的元数据寻址信息切片的最小数量。
该方法在步骤386继续,其中处理模块解码至少解码阈值数量的元数据寻址信息切片以恢复元数据寻址信息。例如,处理模块将第一级读请求发送到DSN的存储单元,接收至少解码阈值数量的元数据寻址信息切片,并且分散存储错误解码至少解码阈值数量的元数据寻址信息切片以产生检索的元数据寻址信息。
该方法在步骤388继续,其中处理模块从元数据寻址信息提取世代标识符和对象标识符。在提取世代ID和对象ID之后,处理模块在用于第二检索请求的DSN的读请求格式的世代标识符字段中使用世代标识符,并且在用于第二检索请求的DSN的读请求格式的对象标识符字段中使用对象标识符。处理模块还可以确定与数据对象(例如,与元数据)相关联的仓库标识符,并且在用于第二检索请求的DSN的读请求格式的仓库标识符字段中使用仓库标识符。
该方法在步骤390继续,其中处理模块基于检索的元数据寻址信息生成用于检索元数据的第二检索请求,其中第二检索请求根据DSN的读请求格式被格式化(例如,第二检索请求包括对应于与元数据相关联的DSN地址的元数据的仓库ID,元数据的世代ID和元数据的对象ID)。生成第二检索请求包括基于元数据寻址信息生成用于检索至少解码阈值数量的元数据切片的第二级读请求的集合,其中元数据包括关于DSN内的数据对象的编码数据切片的多个集合的存储的寻址信息,其中元数据被分散存储错误编码以产生元数据切片的集合,并且其中元数据切片的解码阈值数量表示恢复元数据所需的元数据切片的集合的元数据切片的最小数量。
该方法在步骤392继续,其中处理模块解码至少解码阈值数量的元数据切片以恢复元数据。例如,处理模块将第二级读请求发送到DSN的存储单元,接收至少解码阈值数量的元数据切片,并且分散存储错误解码至少解码阈值数量的元数据切片以产生检索的元数据。
该方法在步骤394继续,其中处理模块基于检索的元数据(例如,使用关于数据对象的编码数据切片的多个集合的存储的寻址信息)生成用于检索与数据对象名称相关联的数据对象的至少一部分的第三检索请求,其中第三检索请求根据DSN的读请求格式被格式化。生成包括处理模块基于元数据生成用于检索至少解码阈值数量的编码数据切片的第三级读请求的至少一个集合,其中数据对象被分散存储错误编码以产生编码数据切片的多个集合,并且其中编码数据切片的解码阈值数量表示恢复数据对象的该部分所需的编码数据切片的多个集合的编码数据切片的最小数量。例如,处理模块将第三级读请求发送到DSN的存储单元,接收用于编码数据切片的多个集合的每个集合的至少解码阈值数量的编码数据切片,并且分散存储错误解码至少解码阈值数量的编码数据切片的每一个以产生检索的数据对象。
上面结合处理模块描述的方法可以替代地由分散存储网络的其它模块或由其它设备执行。另外,当由分散存储网络(DSN)的一个或多个计算设备的一个或多个处理模块执行时,存储操作指令的至少一个存储器部分(例如,计算机可读存储介质)可以使一个或多个计算设备执行上述的任何或所有方法步骤。
图41A是分散存储网络(DSN)的另一实施例的示意性框图,其包括两个或更多个分布式存储和任务(DST)客户端模块1-2,图1的网络24,和DST执行(EX)单元集合400。DST执行单元集合400包括DST执行单元1-n的集合。每个DST执行单元可以使用图1的DST执行单元36来实现。每个DST客户端模块可以使用图1的DST客户端模块34来实现。
DSN用于将数据对象存储在DST执行单元集合400中,并且提供DST执行单元集合中的数据对象的存储的确认。在存储数据对象的操作的例子中,DST客户端模块1接收包括数据对象和数据对象的对象名称的存储数据对象请求401。DST客户端模块1促进将数据对象存储在DST执行单元集合400中。例如,DST客户端模块1对数据对象进行分散存储错误编码以产生编码数据切片的多个集合,生成对应于编码数据切片的多个集合的切片名称的多个集合,生成包括编码数据切片的多个集合和切片名称的的多个集合的写切片请求402的一个或多个集合,经由网络24将写切片请求402的一个或多个集合发送到DST执行单元1-n的集合。
在促进数据对象存储在DST执行单元集合中之后,DST客户端模块1将K个唯一确定性函数应用于对象名称以产生K个确定性值1-K,其中每个确定性值的范围为1-M,并且其中M指示桶的数量。根据桶映射方案,每个DST执行单元与1-M的确定性范围值的一部分相关联。例如,当桶映射方案包括均匀分布时,每个DST执行单元与M/n个桶相关联。例如,DST执行单元1与确定性范围值1-M的第n个量相关联,DST执行单元2与确定性范围值1-M的下一个量相关联,等等。
对于每个确定性值1-K,DST客户端模块1基于确定性值和桶映射方案来识别DST执行单元集合中的对应DST执行单元。在针对每个确定性值识别对应的DST执行单元之后,DST客户端模块1根据识别的对应DST执行单元向DST执行单元中的至少一些发出更新桶请求1-K。每个桶请求包括范围1-M中的对应确定性值。
DST执行单元(例如,K或更小)接收更新桶请求1-K并更新本地存储的桶的值,从而指示接收对应于与桶相关联的确定性值的更新桶请求的活动状态。例如,当M=一百万个桶和n=10个DST执行单元(例如,并且每个DST执行单元被映射到100,000个桶)时,DST执行单元2接收更新桶请求1以更新与确定性值150,000相关联的桶。
在提供数据对象的存储的确认的操作的例子中,DST客户端模块2接收数据对象存储确认请求404,其中数据对象存储确认请求404包括数据对象的对象名称。DST客户端模块2将K个唯一确定性函数应用于接收的对象名称以产生K个确定性值1-K。对于每个确定性值,DST客户端模块2根据桶映射方案来识别对应的DST执行单元。
在识别每个对应的DST执行单元之后,DST客户端模块2经由网络24将桶状态请求1-K发送到对应的DST执行单元,其中桶状态请求1-K包括确定性值1-K。DST客户端模块2从DST执行单元接收桶状态响应1-K,其中每个桶状态响应指示桶的状态(例如,活动,非活动)。
在接收到桶状态响应之后,DST客户端模块2基于接收到的桶状态响应确定数据对象是否存储在DST执行单元集合中。作为具体例子,当指示活动状态的接收到的桶状态响应的数量大于或等于高阈值水平时,DST客户端模块2指示可能存储数据对象。例如,DST客户端模块2指示当所有K个响应都指示活动状态并且高度阈值水平为K时,可能存储数据对象。作为另一具体例子,当指示非活动状态的接收到的桶状态响应的数量大于或等于低阈值水平时,DST客户端模块2指示不存储数据对象。例如,当K个响应中仅有一个指示非活动状态并且低阈值水平为1时,DST客户端模块2指示不存储数据对象。在确定是否存储数据对象之后,DST客户端模块2输出数据对象存储确认响应406,其包括可能存储的指示或非存储的指示。
图41B是示出确认数据对象的存储的例子的流程图。当存储数据时,该方法在步骤410开始或继续,其中(例如,分布式存储和任务(DST)客户端模块的)处理模块接收包括数据对象和数据的对象名称的存储数据对象请求。该方法在步骤412继续,其中处理模块使用分散存储错误编码函数促进将数据对象存储在存储单元的集合中。该方法在步骤414继续,其中处理模块将K个唯一确定性函数应用于对象名称以产生K个确定性值。每个确定性值落在1-M的范围内。
对于每个确定性值,该方法在步骤416继续,其中处理模块基于确定性值来识别存储单元的集合中的对应存储单元。例如,处理模块使用桶映射方案来识别与每个确定性值相关联的每个存储单元。该方法在步骤418继续,其中处理模块将更新桶请求发送到对应存储单元,其中更新桶请求包括确定性值。该方法在步骤420继续,其中当接收包括与桶相关联的确定性值的更新桶请求时,每个存储单元更新桶的状态值(例如,激活)。
当确认数据的存储时,该方法在步骤422继续,其中处理模块接收数据对象存储确认请求。数据对象存储确认请求包括数据对象的对象名称。该方法在步骤424继续,其中处理模块将K个唯一确定性函数应用于对象名称以产生K个确定性值1-K。
对于每个确定性值,该方法在步骤426继续,其中处理模块基于确定性值和桶映射方案来识别存储单元的集合中的对应存储单元。该方法在步骤428继续,其中处理模块将桶状态请求发送到对应存储单元,其中桶状态请求包括确定性值。
该方法在步骤430继续,其中处理模块从存储单元中的至少一些接收桶状态响应,其中每个桶状态响应指示桶的状态值。该方法在步骤432继续,其中处理模块基于接收到的桶状态响应生成数据对象的存储的指示。
图42A和42B是分散存储网络(DSN)的另一实施例的示意性框图,其包括图1的分布式存储和任务(DST)处理单元16,广域网440,和DST执行(EX)单元集合442。广域网440可以使用图1的网络24的广域部分来实现。DST执行单元集合442包括DST执行单元1-n的集合。至少一个DST执行单元包括图1的DST客户端模块34。每个DST执行单元可以使用图1的DST执行单元36来实现。在下文中,每个DST执行单元可以可互换地称为多个存储单元和/或存储单元的集合中的存储单元。DST执行单元中的至少两个或更多个由局域网444可操作地联接。局域网444可以使用网络24的局域网部分来实现。
DSN用于委托迭代存储单元访问过程以提供对存储在DST执行单元集合442中的数据的访问。迭代存储单元访问过程包括一个或多个处理模块(例如,DST处理单元16的,DST客户端模块34的),其执行一个或多个数据存储地址确定步骤以产生关于数据的寻址信息,从而能够使用寻址信息访问数据。
一个或多个数据存储地址确定步骤包括使用与数据相关联的信息迭代地访问寻址信息结构以产生寻址信息。寻址信息结构包括以下的至少一个:DSN目录(例如,平面列表),确定性函数的使用(例如,对与数据相关联的信息执行确定性函数以产生寻址信息的至少一部分),以及分散分层索引(例如,索引树)。分散文章索引包括使用多个级别的树形索引结构,其中顶级包括用于进入用于搜索的索引的根节点,包括索引节点的一系列中间级别,其包括指向树的其它节点的索引键参考(例如,使用索引键作为与数据相关联的信息迭代地搜索),以及最低级别的叶节点,其中每个叶节点包括搜索索引键和与数据存储相关联的DSN地址的关联。例如,与数据相关联的分散分层索引作为多个索引节点存储在DST执行单元集合442中,其中每个索引节点被分散存储错误编码以产生存储在DST执行单元1-n的集合中的索引切片的集合。因而,DST处理单元16和DST客户端模块34中的一个或多个通过访问来自DST执行单元集合442的存储索引切片来访问一个或多个索引节点。例如,DST客户端模块34通过从DST执行单元1-n的集合迭代地恢复五个索引节点对象来访问分散文章索引的五个索引节点,从而最终产生与数据相关联的DSN地址以能够恢复数据。
图42A示出委托迭代存储单元访问过程的操作的例子的步骤,其中DST处理单元16从请求实体接收DSN访问请求446以访问数据。访问包括以下的至少一种:存储数据,检索数据,列出数据,和删除数据。DSN访问请求446包括以下的至少一个:关于具有一个或多个搜索准则(例如,索引键)的数据的寻址信息的请求,其中执行迭代存储单元访问过程以遍历索引树从而基于一个或多个搜索准则识别数据,以及具有一个或多个搜索准则的数据的请求。
在接收到DSN访问请求446之后,DST处理单元16确定DSN访问请求446是否涉及迭代存储单元访问过程。例如,当DSN访问请求446包括搜索准则时,DST处理单元16指示DSN访问请求446涉及迭代存储单元访问过程。
当DSN访问请求446涉及迭代存储单元访问过程时,DST处理单元16基于存储与DSN访问请求446相关联的数据对象的多个存储单元的配置确定多个存储单元中的存储单元能够比DST处理单元16(例如,计算设备)更好地执行迭代存储单元访问过程的至少一部分。例如,当DST执行单元1经由LAN连接444联接到多个DST执行单元中的期望数量(例如,解码阈值数量减一,其中编码数据切片的解码阈值数量是恢复所需的)的其它DST执行单元时,当DST处理单元16确定DST执行单元1能够比DST处理单元16更好地执行迭代存储单元访问过程的至少一部分时,DST处理单元16指示DST执行单元1能够比DST处理单元16更好地执行过程中的迭代存储的至少一部分。
作为另一例子,当DST处理单元16确定DST执行单元1经由局域网(LAN)444连接联接到多个DST执行单元(例如,存储单元)中的一个或多个其它DST执行单元并且DST处理单元16确定广域网(WAN)通信(例如,经由广域网440)的减少构成迭代存储单元访问过程的至少一部分的更好的执行(例如,经由LAN 444比在广域网440上更有效地访问索引树的索引节点)时,DST处理单元16指示DST执行单元1能够比DST处理单元16更好地执行迭代存储单元访问过程的至少一部分。WAN通信的减少包括以下的至少一个:WAN流量的减少,和处理迭代存储单元访问过程的至少一部分的等待时间的减少。
在识别能够比DST处理单元16更好地执行迭代存储单元访问过程的至少一部分的DST执行单元(例如,DST执行单元1)之后,DST处理单元16经由广域网440(例如,当经由广域网440联接时)将DSN访问请求446和控制命令448发送到存储单元(例如,DST执行单元1),其中控制命令448指示存储单元执行迭代存储单元访问过程的至少一部分。控制命令448包括以下的一个或多个:指示在执行迭代存储单元访问过程的至少一部分时访问多个存储单元中的解码阈值数量的存储单元的指令,其中解码阈值数量的存储单元中的至少一个经由WAN连接联接到存储单元,执行迭代存储单元访问过程(例如,搜索准则),并且提供对DSN访问请求的完整响应(例如,包括数据)的指令。
替代地或附加地,当存储单元表示多个存储单元的子集以随后提供集体响应时,当处理模块将DSN访问请求446和控制命令448发送到存储单元时,DST处理单元16经由广域网440将DSN访问请求446和另一控制命令448发送到多个存储单元的第二子集中的一个或多个存储单元。例如,当DST执行单元n需要用于迭代存储单元访问过程,但是不能经由LAN444可操作地联接到DST执行单元1时,DST处理单元16将其它控制命令448发送到DST执行单元n。
图42B示出委托迭代存储单元访问过程的操作的例子的另外的步骤,其中DST处理单元16经由广域网440从DST执行单元1接收对DSN访问请求446的至少部分响应452。部分响应452包括以下的至少一个:包括恢复的数据的完整响应,关于数据的寻址信息,以及来自DST执行单元1的组迭代部分响应,其表示多个存储单元的子集的集体响应。例如,DST客户端模块34经由LAN 444执行切片访问450,从而根据迭代存储单元访问过程从解码阈值数量的DST执行单元恢复用于每个索引节点的解码阈值数量的索引切片以识别数据的寻址信息,从解码阈值数量的DST执行单元检索用于数据的多个编码数据切片的每个集合的至少解码阈值数量的编码数据切片,对于编码数据切片的每个集合,分散存储错误解码检索到的解码阈值数量的编码数据切片以再产生数据,并且经由广域网440向DST处理单元16发出部分响应452,其中部分响应452包括再产生的数据。在接收到再产生的数据之后,DST处理单元16向请求实体发出DSN访问响应454,其中DSN访问响应454包括再产生的数据。
替代地或附加地,对于迭代存储单元访问过程的每个迭代,当从DST执行单元1接收表示多个存储单元的子集的集体响应的组迭代部分响应时,DST处理单元16接收来自多个存储单元的第二子集中的一个或多个DST执行单元的迭代部分响应(例如,来自DST执行单元n的迭代部分响应456),并且处理组迭代部分响应456和迭代部分响应452以产生包括迭代响应(例如,恢复的数据)的DSN访问响应454。
图42C是示出委托迭代存储单元访问过程的例子的流程图。具体地,提供与结合图1-39、42A-B以及图3描述的一个或多个功能和特征一起使用的方法。该方法开始于步骤460,其中分散存储网络(DSN)的一个或多个计算设备的计算设备的处理模块确定DSN访问请求是否涉及迭代存储单元访问过程。例如,当接收到待检索的数据的搜索准则时,处理模块指示DSN访问请求涉及迭代存储单元过程。
当DSN访问请求涉及迭代存储单元访问过程时,该方法在步骤462继续,其中处理单元基于存储与DSN访问请求相关联的数据对象的多个存储单元的配置确定多个存储单元中的存储单元能够比计算设备更好地执行迭代存储单元访问过程的至少一部分。例如,当存储单元单元经由LAN连接联接到多个存储单元中的期望数量的其它存储单元(例如,总共的解码阈值数量)时,处理模块指示存储单元能够比计算设备(例如,与处理模块相关联)更好地执行迭代存储单元访问过程的至少一部分。作为另一例子,当处理模块确定存储单元经由局域网(LAN)连接联接到多个存储单元中的一个或多个其它存储单元并且处理模块确定广域网(WAN)通信的减少构成迭代存储单元访问过程的至少一部分的更好的执行时,处理模块指示存储单元能够比计算设备更好地执行迭代存储单元访问过程的至少一部分。
该方法在步骤464继续,其中处理模块将DSN访问请求和控制命令发送到存储单元,其中控制命令指示存储单元执行迭代存储单元访问过程的至少一部分。控制命令包括以下的一个或多个:指示在执行迭代存储单元访问过程的至少一部分时访问多个存储单元中的解码阈值数量的存储单元的指令,其中解码阈值数量的存储单元中的至少一个经由WAN连接联接到存储单元,以及执行迭代存储单元访问过程并且提供对DSN访问请求的完整响应的指令。替代地或附加地,当存储单元表示多个存储单元的子集以随后提供集体响应(例如,恢复的数据)时,当处理模块将DSN访问请求和控制命令发送到存储单元时,处理模块将DSN访问请求和另一控制命令发送到多个存储单元的第二子集中的存储单元。
该方法在步骤466继续,其中处理模块从存储单元接收对DSN访问请求的至少部分响应。部分响应包括以下的至少一个:包括恢复的数据的完整响应,关于数据的寻址信息,以及来自存储单元的组迭代部分响应,其表示多个存储单元的子集的集体响应。当使用其它控制命令时,对于迭代存储单元访问过程的每个迭代,该方法在步骤468继续,当从存储单元接收表示多个存储单元的子集的集体响应的组迭代部分响应时,处理模块从多个存储单元的第二子集中的存储单元接收迭代部分响应,并且处理模块处理组迭代部分响应和迭代部分响应以产生迭代响应(例如,恢复的数据)。
上面结合处理模块描述的方法可以替代地由分散存储网络的其它模块或由其它设备执行。另外,当由分散存储网络(DSN)的一个或多个计算设备的一个或多个处理模块执行时,存储操作指令的至少一个存储器部分(例如,计算机可读存储介质)可以使一个或多个计算设备执行上述任何或所有方法步骤。
图43A是分散存储网络(DSN)的另一实施例的示意性框图,其包括多个用户设备1-U,多个分布式存储和任务(DST)处理单元1-100,图1的网络24,和DST执行(EX)单元集合470。DST执行单元集合470包括DST执行单元1-n的集合。每个DST执行单元可以使用图1的DST执行单元36来实现。每个用户设备可以使用图1的用户设备12和图1的用户设备14中的至少一个来实现。每个DST处理单元可以使用图1的DST处理单元16来实现。
DSN用于在访问存储在DSN中的数据时使用多个数据访问资源(例如,DST处理单元)。在使用多个数据访问资源的操作的例子中,DST处理单元确定是否更新将分散分层索引的索引节点索引键范围分配与多个DST处理单元1-100相关联的命名附属信息478。确定包括基于以下的至少一种指示更新:基于检测分支因子变化(例如,在参考节点之下的级别处的节点的数量),检测可用DST处理单元的数量的变化,以及解释一个或多个DST处理单元的性能信息。
分散分层索引包括一个根索引节点,一个或多个父索引节点,以及一个或多个索引节点。每个节点(例如,根索引节点,父索引节点,索引节点)可以使用数据对象来实现,并且包括以下的一个或多个的条目:关联的索引键范围,指向其它节点的指针,以及指向存储在分散存储网络(DSN)中的数据对象的指针。这样的指针包括对应于DST执行单元集合内的节点和/或数据对象的存储位置的虚拟DSN地址(例如,源名称)。父索引节点包括指向形成父子关系的子索引节点的指针。节点也可以包括指向索引的共同级别上的兄弟级节点的指针。每个节点被分散存储错误编码以产生节点切片的集合,并且节点切片的每个集合经由切片访问474在DSN的存储单元集合中存储在对应于节点的DSN地址的位置处。
分散分层索引可以被构造和保持成包括与一个或多个索引属性相关联的维度。索引属性包括以下的一个或多个:最大级数,最小级数(例如,从顶级的根索引节点到最低级的索引节点),父子节点关系中的子节点的最大数量,父子节点关系中的子节点的最小数量,共同级别的兄弟节点的最大数量,公共级别的兄弟节点的最小数量,索引节点中的条目的最大数量,以及索引节点中的条目的最小数量。
分散分层索引可以用于定位与存储在DSN的DST执行单元集合中的数据对象相关联的存储位置。例如,从根索引节点开始,通过将期望的索引键与在最低级的索引节点的条目内的索引键进行匹配来搜索分散分层索引,其中索引节点的条目对应于期望的数据对象。搜索可以包括通过将期望的索引键与和根索引节点和与期望数据对象相关联的最低级的索引节点之间的节点相关联的索引键范围进行比较来访问索引的连续较低级。索引节点的最低级包括与存储在DSN中的数据对象相关联的条目。
每个DST处理单元与索引节点索引键范围相关联,并且可以与分散分层索引的任何级别相关联。例如,当在根节点级别之下的一个级别处的索引键值范围包括最大值2000并且映射方案包括索引键范围的部分的均匀分布时,DST处理单元1与最大值2000的索引节点索引键值范围0-19相关联,DST处理单元2与最大值2000的索引节点索引键值范围20-39相关联,等等,直到DST处理单元100与最大值2000的索引节点索引键范围1980-1999相关联。
当更新命名附属信息478时,DST处理单元识别可用的DST处理单元的数量。识别包括以下的至少一种:开始查询,接收查询响应,执行查找,和解释错误消息。在识别可用的DST处理单元的数量之后,DST处理单元确定分散分层索引的参考分支因子。例如,DST处理单元将根节点下一级的子节点的数量计数为分支因子。
在确定分支因子之后,DST处理单元识别与分散分层索引相关联的索引键类型。例如,DST处理单元访问与分散粒子索引相关联的元数据文件以提取索引键类型。在识别索引键类型之后,DST处理单元基于可用的DST处理单元的数量根据分割方案来分割分支因子,从而产生索引节点到DST处理单元映射。例如,DST处理单元指示有多少索引节点将与每个DST处理单元相关联,以及哪些索引节点将与每个DST处理单元相关联。
在分割分支因子之后,DST处理单元基于索引节点到DST处理单元映射和索引键类型来生成更新的命名附属信息478。例如,DST处理单元根据用于分支因子数量的索引节点的索引键类型来识别索引键的连续体中的断点,并将断点与每个可用DST处理单元相关联以产生更新的命名附属信息478。在生成更新的命名附属信息478之后,DST处理单元促进将更新的命名附属信息478分布到多个DST处理单元和多个用户设备中的一个或多个。
在更新命名附属的情况下,DSN促进具有DST处理单元的用户设备根据更新的命名附属信息478进行数据访问472。作为具体例子,用户设备3基于DST处理单元4的索引节点范围根据更新的数据附属信息478选择与索引键62联系的DST处理单元4。在选择DST处理单元之后,用户设备3与选择的DST处理单元4交换数据访问472(例如,将数据访问请求发送到DST处理单元4,接收来自DST处理单元4的数据访问响应)。DST处理单元4与DST执行单元1-n的集合交换切片访问474(例如,切片访问1-n)以促进数据访问472。
图43B是示出将数据访问资源与索引相关联的例子的流程图。该方法在步骤480开始或继续,其中(例如,分布式存储和任务(DST)处理单元的)处理模块确定是否更新将分散分层索引的索引节点索引键范围分配关联到多个数据访问资源(例如,到多个DST处理单元)的命名附属信息。确定可以基于以下的一个或多个:解释更新时间表,检测分支因子变化,检测可用数据访问资源的数量,以及解释性能信息。
当更新时,该方法在步骤482继续,其中处理模块识别多个可用数据访问资源。识别包括以下的至少一个:解释错误消息,开始查询,接收查询响应,和执行查找。该方法在步骤484继续,其中处理模块确定分散分层索引的分支因子。确定包括以下的至少一个:访问分散分层索引,和计数与在根节点级之下的至少一个级别相关联的索引节点的数量。
该方法在步骤486继续,其中处理模块识别与分散分层索引相关联的索引键类型。例如,处理模块访问与分散分层索引相关联的共同索引信息以提取索引键类型。该方法在步骤488继续,其中处理模块基于可用数据访问资源的数量来分割分支因子以产生索引节点到数据访问资源映射。例如,处理模块将分支因子除以可用数据访问资源的数量以产生索引节点到数据访问资源的映射。
该方法在步骤490继续,其中处理模块基于索引节点到数据访问资源映射和索引键类型生成更新的命名附属信息。例如,处理模块根据数据访问资源映射和索引键类型来识别与每个数据访问资源相关联的索引键范围。该方法在步骤492继续,其中处理模块使用更新的命名附属信息来促进数据访问。例如,处理模块将更新的命名附属信息分发到访问设备和数据访问资源。作为另一例子,访问设备使用更新的命名附属信息来访问数据访问资源。
图44A是分散存储网络(DSN)的另一实施例的示意性框图,其包括多个用户设备1-U,两个或更多个分布式存储和任务(DST)处理单元1-2,图1的网络24,和DST执行单元集合494。DST执行单元集合494包括DST执行单元1-n的集合。每个DST执行单元可以使用图1的DST执行单元36来实现。每个用户设备可以使用图1的用户设备12和图1的用户设备14中的至少一个来实现。每个DST处理单元可以使用图1的DST处理单元16来实现。
DSN用于向多个用户设备提供对作为编码数据切片集合存储在DST执行单元集494中的数据的数据访问496,其中编码数据切片集合的虚拟DSN地址保持在分散分层索引中。DSN还用于更新存储在DST执行单元集合中的分散分层索引。在分散分层索引的更新操作的例子中,DST处理单元1根据待决更新确定更新分散分层索引的索引节点(例如,识别新条目,识别修改的条目,以及识别用于删除的条目)。在确定更新索引节点之后,DST处理单元1开始索引节点的更新。例如,DST处理单元1更新索引节点以产生更新的索引节点;分散存储错误编码更新的索引节点以创建更新的索引节点切片的集合;通过经由网络24将切片访问请求1-n发送到DST执行单元的集合来发出索引节点访问498以请求存储与更新的索引节点相关联的更新的索引节点切片的集合;并且接收索引节点访问498作为指示更新的索引节点切片的集合的存储是否成功的切片访问响应1-n。
当索引节点的更新不成功(例如,DST处理单元1解释切片访问响应并指示未成功写更新的索引节点)时,DST处理单元1生成与索引节点相关联的任务队列的任务条目。DST处理单元1生成条目以包括更新的索引节点和/或对索引节点的一部分的更新。在生成任务条目之后,DST处理单元1将任务条目存储在任务队列中。例如,DST处理单元1通过对索引节点的源名称和增量(例如,将条目计数递增1)执行确定性函数来生成用于任务条目的DSN地址,并且使用源名称来存储任务条目。存储包括对任务条目进行分散存储错误编码以产生任务切片的集合,基于任务条目的DSN地址生成用于任务切片集合的任务切片名称的集合,生成任务队列访问500以包括写切片请求1-n的集合,其包括任务切片的集合和任务切片名称的集合,并且将写切片请求1-n的集合发送到DST执行单元1-n的集合。
DST处理单元2随后访问索引节点。在访问索引节点之后,DST处理单元2确定与索引节点相关联的任务队列是否包括至少一个条目。确定包括以下的至少一个:解释来自索引节点的条目计数,和解释尝试访问任务队列的第一条目的结果。
当任务队列包括至少一个条目时,DST处理单元2根据至少一个条目开始更新索引节点。例如,DST处理单元2使用条目的恢复的更新索引节点或条目的恢复的更新来更新索引节点以生成新更新的索引节点。在生成新更新的索引节点之后,DST处理单元2尝试将新更新的索引节点存储在DST执行单元集合中(例如,发出写切片请求,接收写切片响应)。当新更新的索引节点的更新成功时,DST处理单元2从与索引节点相关联的任务队列删除至少一个条目。例如,DST处理单元2向DST执行单元的集合发出删除切片请求,其中删除切片请求包括与队列的条目相关联的切片名称的集合。
图44B是示出更新分散分层索引的例子的流程图。该方法在步骤502开始或继续,其中(例如,分布式存储和任务(DST)处理单元的)处理模块根据待决更新确定更新分散分层索引的索引节点。该方法在步骤504继续,其中处理模块开始索引节点的更新。例如,处理模块生成更新的索引节点,对更新的索引节点进行编码以产生索引切片的集合,向包括索引切片集合的存储单元集合发出写切片请求,接收写切片响应,并且基于接收到的写切片响应来确定更新是否成功。例如,当未接收到写阈值数量的有利写切片响应时处理模块指示更新不成功。
当索引节点的更新不成功时,该方法在步骤506继续,其中处理模块生成与索引节点相关联的任务队列的任务条目。例如,处理模块生成任务条目以包括索引节点的未决更新。该方法在步骤508继续,其中处理模块将任务条目存储在任务队列中。例如,处理模块基于索引节点的DSN地址生成用于任务条目的DSN地址,并且生成编码任务切片的集合,生成包括从任务条目的DSN地址导出的编码任务切片和切片名称的集合的写切片请求的集合,并且将写切片请求的集合发送到存储单元的集合。
该方法在步骤510继续,其中处理模块随后访问索引节点。例如,处理模块识别索引节点的DSN地址,使用索引节点的DSN地址向存储单元集合发出读切片请求的集合,接收读切片响应,并且对接收到的读切片响应的索引节点切片进行解码以再产生索引节点。
该方法在步骤512继续,其中处理模块确定与索引节点相关联的任务队列是否包括至少一个任务条目。例如,处理模块解释再产生的索引节点的条目计数,并且当计数大于零时指示索引节点包括至少一个任务条目。作为另一例子,处理模块开始对第一任务条目的访问,并且当成功解码第一任务条目时指示包括至少一个任务条目。
当与索引节点相关联的任务队列包括至少一个任务条目时,该方法在步骤514继续,其中处理模块开始索引节点的更新。例如,对于任务队列的每个任务条目,处理模块促进根据任务条目来更新索引节点。例如,处理模块根据任务条目修改再产生的索引节点,分散存储错误编码修改的索引节点以产生修改的索引切片的集合,将修改的索引切片的集合发送到存储单元的集合,接收写切片响应,并且解释接收到的读切片响应以确定索引节点的更新是否成功。
当索引节点的更新成功时,该方法在步骤516继续,其中处理模块从任务队列删除至少一个条目。例如,处理模块向与任务队列的每个对应的成功更新的条目相关联的DSN地址发出删除切片请求的集合。
图45A是分散存储网络(DSN)的另一实施例的示意性框图,其包括多个存储世代1-G,图1的分布式存储和任务网络(DSTN)管理单元18,以及图1的网络24。每个存储世代包括DST执行(EX)单元1-n的集合。每个DST执行单元可以使用图1的DST执行单元36来实现。
DSN用于将数据存储为与源地址范围相关联的编码数据切片的集合。源地址范围包括与编码数据切片的集合相关联的切片名称的一部分。每个存储世代与操作准备的两个状态相关联。这两个状态包括活动和非活动。当存储世代活动时,存储世代可用于存储和检索编码数据切片的集合。当存储世代非活动(例如,休眠并且尚未分配)时,存储世代不可用于存储和检索编码数据切片的集合。例如,在时间t0,存储世代1是活动的,而存储世代2-G是非活动的。
当存储世代活动时,存储世代与源地址范围的一部分相关联。源地址范围包括切片名称范围的一部分,使得DSN通过使用关联的存储世代来访问与切片名称范围相关联的编码数据切片。切片名称包括柱索引(例如,对于1的信息分散算法(IDA)宽度,1-n),仓库标识符,世代代标识符,和源字段。源字段可以包括与用于存储的数据对象相关联的对象编号,并且需要基于数据对象的分区的段编号以产生多个数据段。例如,在时间t0,存储世代1与0-9的整个源地址范围相关联,使得使用存储世代1访问与源地址范围0-9相关联的所有编码数据切片。当数据的第一世代正为仓库Z存储时,存储世代1的DST执行单元1与具有从P1-VZ-G1-S0到P1-VZ-G1-S9的范围的切片名称的编码数据切片相关联,存储世代1的DST执行单元2与具有从P2-VZ-G1-S0到P2-VZ-G1-S9的范围的切片名称的编码数据切片相关联,等等。
在操作的例子中,DSTN管理单元18确定建立第一存储世代。该确定可以基于以下的一个或多个:接收管理器输入,解释调度,接收和激活请求,解释配置信息,检测存储单元的新集合可用,以及检测需要附加存储容量(例如,另一存储世代使用水平与最大存储世代使用阈值水平相比不利)。
当确定建立第一存储世代时,DSTN管理单元18为将与存储世代相关联的至少一个仓库分配存储参数。存储参数包括以下的一个或多个:仓库ID和IDA类型,以及IDA宽度,写阈值数量,读阈值数量,重建阈值数量,以及解码阈值数量。该分配包括以下的一个或多个:接收管理器输入,解释系统注册表,估计DSN性能,以及解释DSN性能目标水平。例如,DSTN管理单元18基于管理器输入建立存储参数以包括Z的仓库ID。
在分配存储参数之后,DSTN管理单元18确定用于存储世代的世代编号和源地址范围到世代映射。例如,DSTN管理单元18在建立第一存储世代时确定世代1。作为另一例子,DSTN管理单元18基于管理器输入来确定映射到存储世代1的0-9的源地址范围。
在确定世代编号和源地址范围到世代映射之后,DSTN管理单元18向与存储世代相关联的DST执行单元的集合发出和分配消息,其中消息包括世代编号,源地址范围,DST执行单元的标识符,和分配的存储参数的一部分。例如,对于用于仓库Z的世代1,DSTN管理单元18经由网络24将分配消息1发送到存储世代1的DST执行单元1-n的集合以将DST执行单元的集合与0-9的源地址范围关联。参考图45B更详细地讨论加入新存储世代的方法。
图45B是根据存储世代激活方案由图45A的DSTN管理单元18在时间t0-t3激活的多个存储世代1-4的示意性框图。在激活存储世代的操作的例子中,DSTN管理单元18确定将另一存储世代加入到一个或多个当前存储世代。该确定可以基于以下的一个或多个:检测不利的存储使用水平,检测不利的输入/输出操作水平,检测存储在一个或多个当前存储世代中的不利数量的元数据对象,接收管理器输入,解释调度,接收激活请求,解释配置信息,检测存储单元的新集合可用,以及检测需要附加存储容量。
在确定加入另一存储世代之后,DSTN管理单元18获得源地址范围到世代映射。该获得包括以下的至少一个:从DST执行单元检索,从本地存储器检索,以及从系统注册表提取。在获得源地址范围到世代映射之后,当将世代加入一个或多个当前存储世代时DSTN管理单元18确定世代的数量。该确定可以基于以下的一个或多个:解释不利的存储使用水平,解释不利的输入/输出操作水平,以及解释存储在一个或多个当前世代中的元数据对象的数量的水平。例如,当不利的存储使用水平大于最大阈值水平并且小于临界阈值水平时,DSTN管理单元18确定加入一个新的存储世代。
在确定世代的数量之后,DSTN管理单元18基于世代的数量和确定性地址重新分配方案更新源地址范围到世代映射,其中每个存储世代根据世代的数量被分配源地址范围的相等部分,并且其中对于每个当前世代,将源地址范围的当前分配的一部分重新分配给另一存储世代。例如,在时间t1,DSTN管理单元18更新源地址范围到世代映射,使得源地址范围的一半属于存储世代1,并且源地址范围的另一半现在分配给新存储世代2。作为另一例子,在时间t2,DSTN管理单元更新源地址范围到世代映射,使得存储世代1、2和新存储世代3的每一个与源地址范围的三分之一相关联。作为又一例子,在时间t3,每个存储世代与源地址范围的四分之一相关联。
在更新源地址范围到世代映射之后,DSTN管理单元18促进将更新的源地址范围到世代映射分发到其它世代和一个或多个当前世代的每一个。例如,DSTN管理单元18向存储世代发出分配消息520,其中分配消息520包括更新的世代映射的源地址范围。
在分发更新的源地址范围到世代映射之后,DSTN管理单元18促进根据更新的源地址范围到世代映射将编码数据切片从一个或多个当前存储世代的每一个迁移到其它存储世代。该促进包括以下的至少一个:检索并加载切片,将请求发送到每个其它存储世代以发出读切片请求,以及向一个或多个当前存储世代的每一个发出请求以发出写切片请求。例如,在时间t1,存储在存储世代1中的切片的一半迁移到存储世代2。作为另一例子,在时间t2,存储在存储世代1中的切片的三分之一迁移到存储世代3并且存储在存储世代2中的切片的三分之一迁移到存储世代3。作为又一例子,在时间t3,存储在存储世代1中的切片的四分之一迁移到存储世代4,存储在存储世代2中的切片的四分之一迁移到存储世代4,并且存储在存储世代3中的切片的四分之一迁移到存储世代4。
图45C是示出将存储世代加入到分散存储网络(DSN)的例子的流程图。该方法在步骤522开始或继续,其中(例如,分布式存储和任务网络(DSTN)管理单元的)处理模块确定将另一存储世代加入到一个或多个当前存储世代。该确定可以基于以下的一个或多个:检测不利的存储使用水平,检测不利的输入/输出操作水平,以及检测存储在一个或多个当前世代中的不利数量的元数据对象。
该方法在步骤524继续,其中处理模块获得与一个或多个当前存储世代相关联的源地址范围到世代映射。该获得包括以下的至少一个:从存储世代检索,从系统注册表提取,开始查询,和接收查询响应。
该方法在步骤526继续,其中处理模块确定由加入其它存储世代产生的存储世代的数量。例如,处理模块将来自源地址范围到世代映射的当前世代的数量和新世代的数量相加以产生世代的数量N。
该方法在步骤528继续,其中处理模块基于存储世代的数量和确定性地址重新分配方案更新源地址范围到世代映射。例如,处理模块将确定性地址重新分配方案应用于地址范围以提供相等大小的地址范围。例如,将总范围除以N以产生用于每个世代的部分,使得先前地址范围分配的相等大小的部分被分配给新世代(例如,来自每一个的1/N)。地址重新分配方案还可以包括使用一个可能的连续地址范围。
该方法在步骤530继续,其中处理模块促进将更新的源地址范围到世代映射分发到每个存储世代。例如,处理模块将映射发布到所有世代,并且将映射加入到系统注册表信息以供将来发布。该方法在步骤532继续,其中处理模块促进根据更新的源地址范围到世代映射将切片从一个或多个当前存储世代的每一个迁移到其它存储世代。例如,处理模块将迁移请求发送到一个或多个当前世代。作为另一例子,处理模块将迁移请求发送到其它存储世代,其中迁移消息包括向用于迁移的切片的地址范围的一个或多个当前存储世代发出读切片请求的指令。
图46A是分散存储网络(DSN)的另一实施例的示意性框图,其包括图1的网络24,和分布式存储和任务(DST)执行(EX)单元集合534。DST执行单元集合534包括DST执行单元1-n的集合。每个DST执行单元可以使用图1的DST执行单元36来实现。DSN用于存储用于后续检索的关键信息。关键信息包括以下的一个或多个:软件,安全证书,证书链,加密密钥,加密密钥种子,配置信息,操作参数,访问控制列表,系统注册表信息,系统管理信息,和对DSN的操作至关重要的任何其它信息。
作为检索先前存储的关键信息的操作的例子,DST执行单元1确定在外部获取关键信息。该确定可以基于以下的一个或多个:检测先前本地存储的丢失的关键信息,检测损坏的关键信息,以及识别对关键信息的需要。例如,当识别到对关键信息的需要并且在DST执行单元1中不能获得关键信息(例如,从未在本地存储)时,DST执行单元1确定在外部获取关键信息。
在确定在外部获取关键信息之后,DST执行单元1识别与关键信息的存储相关联的额定数量的候选设备,其中额定数量的候选设备可以存储关键信息的重复副本。该识别包括以下的至少一个:解释系统注册表信息,访问列表,开始查询,接收查询响应,以及确定期望的候选设备的最小数量以实现检索可靠性目标水平。例如,当候选设备的列表指示DST执行单元的集合时,DST执行单元1将DST执行单元的集合中的每个其它DST执行单元识别为额定数量的候选设备。
在识别额定数量的候选设备之后,DST执行单元1从额定数量的候选设备选择设备进行关键信息查询。该选择可以基于以下的一个或多个:设备性能水平,设备级别的信任指示符,历史设备响应信息,预先确定,请求,设备可用性信息,和被选择设备的最小数量。例如,当每个DST执行单元与大于最小信任阈值水平的信任水平相关联时,DST执行单元1选择DST执行单元2-n。
在选择设备之后,DST执行单元1向选择的设备发出关键信息查询。例如,DST执行单元1通过网络24向DST执行单元2-n发出关键信息请求536(例如,关键信息请求2-n)。每个DST执行单元认证和授权接收的关键信息请求536,并且当被授权和认证时,向DST执行单元1发出关键信息响应538。
DST执行单元1从至少一些选择的设备接收关键信息响应538。例如,DST执行单元1接收关键信息响应2-n。在接收到关键信息响应538之后,DST执行单元1识别两个或更多个有利比较(例如,接收的关键信息基本上相同)接收的关键信息响应。
在识别两个或更多个有利比较接收的关键信息响应之后,DST执行单元1将两个或更多个有利比较接收的关键信息响应的数量与最小阈值数量进行比较。当比较有利(例如,数量大于最小阈值数量)时,DST执行单元1指示两个或更多个有利比较接收的关键信息响应的关键信息是有效的。在识别有效的关键信息之后,DST执行单元1使用有效的关键信息。在使用有效的关键信息之后,DST执行单元1可以立即删除有效的关键信息。例如,当处理访问请求已完成时,DST执行单元1删除包括访问控制列表的有效关键信息。
图46B是示出获取关键信息的例子的流程图。该方法在步骤540开始或继续,其中(例如,分布式存储和任务(DST)执行单元的)处理模块确定在外部获取关键信息。该确定可以基于以下的一个或多个:接收关键信息的请求,检测损坏的本地存储的关键信息,检测丢失的关键信息,以及检测关键信息的变化。
该方法在步骤542继续,其中处理模块标识候选设备,其中每个候选设备可以存储关键信息的副本。该识别包括以下的一个或多个:识别附属设备(例如,其它DST执行单元),识别受信任设备,接收列表,开始查询,和接收查询响应。该方法在步骤544继续,其中处理模块选择识别的候选设备的额定数量。选择包括从系统注册表识别额定数量,识别最佳执行的设备,识别与关键信息相关联的设备,识别最可信设备,以及识别最可用设备。
该方法在步骤546继续,其中处理模块向选择的额定数量的被识别设备发出关键信息请求。例如,处理模块生成关键信息请求以包括关键信息的标识符,并且将关键信息请求发送到选择的额定数量的被识别设备。该方法在步骤548继续,其中处理模块接收关键信息响应。
该方法在步骤550继续,其中处理模块识别有利比较关键信息响应。例如,当两个关键信息响应的关键信息基本上相同时,处理模块指示两个关键信息响应有利地进行比较。该方法在步骤552继续,其中当有利比较关键信息响应的数量与最小阈值水平有利地比较时,处理模块指示有效恢复关键信息。例如,处理模块获得最小阈值水平(例如,检索,确定为额定数量的占优数量),比较数量和阈值,并且当数量大于最小阈值水平时指示有效。该
方法在步骤554继续,其中处理模块使用有效恢复关键信息。例如,处理模块将有效恢复关键信息存储在本地存储器中,并且调用使用有效恢复关键信息的进一步处理。替代地或附加地,当确定进一步处理已完成并且关键信息将被删除时,处理模块删除本地存储的有效恢复关键信息。
图47A和47B是分散存储网络(DSN)的另一实施例的示意性框图,其包括两个或更多个分布式存储和任务(DST)客户端模块A、B等,图1的网络24,以及DST执行(EX)单元集合560。DST执行单元集合560包括根据信息分散算法(IDA)的分散参数的多个DST执行单元。例如,当IDA为5时,DST执行单元集合560包括五个DST执行单元1-5。每个DST执行单元可以使用图1的DST执行单元36来实现。在下文中,每个DST执行单元可以可互换地称为存储单元,并且DST执行单元的集合可以可互换地称为存储单元的集合。每个DST客户端模块可以使用图1的DST客户端模块34来实现。
DSN用于解决由使用多阶段存储过程将数据对象基本上同时存储在DST执行单元1-5的集合中产生的写请求冲突。特别地,DST客户端模块A、B、C、D等的每一个用于解决写请求冲突,同时将数据对象存储在DST执行单元集合560中。多阶段存储过程包括写阶段,其中将编码数据切片的集合发送到提供接收的编码数据切片的临时锁定的存储单元,提交阶段,其中当写阈值数量的编码数据切片的集合已由存储单元的集合接收时使由存储单元接收的编码数据切片可用于检索(例如,提交),以及完结阶段2和多阶段存储过程,锁定接收的编码数据切片,从而能够进行存储数据的后续更新。
图47A示出解决写请求冲突的操作的例子的步骤,其中DST客户端模块A接收包括用于存储的修订A的数据对象foo的存储数据请求foo。在接收到用于存储的数据对象foo之后,DST客户端模块A经由与DST客户端模块A和网络24相关联的接口向DSN的存储单元发出对数据对象foo的分散存储错误编码版本的写请求,其中关于数据对象的基本上同时的写请求(例如,来自DST客户端模块B、C、D等)包括写请求。写请求的发出包括DST客户端模块A对数据对象foo进行分散存储错误编码以产生编码数据切片的多个集合。在产生编码数据切片的多个集合之后,DST客户端模块A生成对应于数据对象foo的切片名称的多个集合。在产生切片名称的多个集合之后,DST客户端模块A生成包括编码数据切片的多个集合和切片名称的多个集合的写切片请求的一个或多个集合。例如,DST客户端模块A生成写切片请求A1-A5。在生成写切片请求的一个或多个集合之后,DST客户端模块A经由网络24将写切片请求A1-A5发送到DST执行单元1-5的集合。
基本上同时,至少DST客户端模块B接收包括数据对象foo的修订B(例如,与修订A相比更早或更晚的版本)的另一存储数据请求foo。以与由DST客户端模块A产生写切片请求类似的方式,DST客户端模块B生成写切片请求B1-B5的另一集合,其包括编码数据切片的另一多个集合和切片名称的另一多个集合,其中切片名称的其它多个集合和与写切片请求A1-A5相关联的切片名称的多个集合基本上相同。在产生写切片请求B1-B5的集合之后,DST客户端模块B经由网络24将写切片请求B1-B5的集合发送到DST执行单元1-5的集合。
在写切片请求A1-A5的集合和写切片请求B1-B5的集合的写之间可能发生写争用。接收写切片请求的每个DST执行单元接收写切片请求A和B的第一写切片请求并且在接收到第一写切片请求之后接收写切片请求A和B的第二写切片请求,其中第一写切片请求与锁定和关联的切片名称相关联以能够进行写的另外步骤,并且第二写切片请求与冲突错误相关联。例如,DST执行单元1接收写切片请求A1作为第一写切片请求,并将写切片请求A1与锁定相关联,并且当写切片请求A1已经与锁定相关联时,接收写切片请求B1作为第二写切片请求,并将写切片请求B1与冲突错误相关联。
当DST客户端模块A或B中的任一个接收到对应的写阈值数量的编码数据切片与锁定相关联的指示时,DST客户端模块A的写阶段和DST客户端模块B的写阶段可以前进到提交阶段。作为在多阶段存储过程的写阶段期间的锁定的另一例子,DST客户端模块A与编码数据切片1、2和3的锁定相关联,而DST客户端模块B与编码数据切片4和5的锁定相关联。因而,当没有DST客户端模块由于写冲突而实现写阈值数量的编码数据切片的锁定时发生暂时的僵持。
图47B示出解决写请求冲突的操作的例子的另外步骤,其中响应于写请求,DST客户端模块A从DST执行单元中的至少一些接收写响应(例如,写切片响应A1-A5),其中每个写响应包括锁定指示或非锁定指示和冲突信息。例如,DST客户端模块A接收包括锁定指示的写切片响应A1-A3,并且接收具有非锁定指示和冲突信息的写切片响应A4-A5。
冲突信息包括以下的一个或多个:由已接收锁定指示的第二计算设备(例如,DST客户端模块B)发出的数据对象的分散存储错误编码版本的第二写请求(例如,写切片请求B4或B5)的标识,第二计算设备(例如,DST客户端模块B)的标识,由未接收锁定指示的第三计算设备(例如,DST客户端模块B)发出的数据对象的分散存储错误编码版本的第三写请求的标识,第三计算设备(例如,DST客户端模块C)的标识,以及关于至少一些存储单元中的一个的写请求处理特性的信息。关于写请求处理特性的信息包括以下的一个或多个:锁定的持续时间,在各种时间帧上产生的冲突的数量,在各种时间帧上的唯一请求者的数量,先前锁定的平均锁定持续时间,与多个写请求的接收相关联的时间戳,多个写请求的接收的排序,以及请求实体优先级。
在接收到写响应之后,DST客户端模块A确定是否经接收到包括锁定指示的至少写阈值数量的写响应。例如,当仅接收到包括锁定指示的写切片响应A1-A3(例如,3个响应)并且写阈值数量为4时,DST客户端模块A指示已接收到包括锁定指示的小于至少写阈值数量的写响应。
当已接收到包括锁定指示的小于至少写阈值数量的写响应时,DST客户端模块处理冲突信息以识别基本上同时的写请求的一个或多个其它写请求,其具有比写请求更高的优先级。作为具体例子,DST客户端模块B响应于一个或多个其它写请求的每一个确定接收到比针对写请求接收的更多的锁定指示(例如,应当注意DST客户端模块A接收到三个锁定指示,而DST客户端模块B仅仅接收到两个锁定指示)。作为另一具体例子,DST客户端模块响应于一个或多个其它写请求中的一个确定接收到与针对该写请求(例如,平局)接收的相等数量的锁定指示,当针对一个或多个其它写请求中的一个接收的锁定指示与针对该写请求接收的数量相等时执行重试打破平局协议。
当与一个或多个其它写请求中的一个相关联的另一计算设备(例如,另一DST客户端模块)具有比该计算设备更高的设备优先级时,重试打破平局协议包括DST客户端模块将优先级赋予一个或多个其它写请求中的一个。例如,当在另一情况下发生平局时,DST客户端模块B将优先级赋予DST客户端模块A的请求。或者,重试打破平局协议包括DST客户端模块解释来自没有将锁定指示提供给计算设备的写请求或提供给其它计算设备的一个或多个其它写请求的至少一些存储单元中的存储单元的冲突信息以确定写请求和一个或多个其它写请求之间的重试优先级。例如,DST客户端模块确定DST客户端模块的写请求是在其它DST客户端模块的前优先级还是后优先级。
在识别具有比写请求更高的优先级的基本上同时的写请求的一个或多个其它写请求之后,DST客户端模块A基于具有更高优先级的一个或多个其它写请求建立写请求重试时间帧。例如,DST客户端模块A基于与锁定条件相关联的DST客户端模块B的两个写切片请求何时被释放的估计来建立写请求重试时间帧(例如,在存储单元内超时,存储单元从DST客户端模块B接收不适当的请求)。
在建立写请求重试时间帧之后,在写请求重试时间帧到期时,DST客户端模块A针对数据对象的分散存储错误编码版本发出重试写请求。例如,当DST客户端模块A确定在尝试重试写请求时与DST执行单元1-3相关联的编码数据切片1-3上的锁定将不过期时,DST客户端模块A经由网络24向DST执行单元4和5发出重试写切片请求A4和A5。作为另一例子,当DST客户端模块A确定在尝试重试写请求时编码数据切片1-3上的锁将可能过期时,DST客户端模块A经由网络24发出重试写切片请求A1-A5。
在发出重试写请求之后,DST客户端模块A响应于重试写请求从至少一些存储单元接收重试写响应,其中每个重试写响应包括锁定指示或非锁定指示和更新的冲突信息。例如,DST客户端模块A接收包括另一写切片响应A4和另一写切片响应A5的重试写响应,其中至少一个写切片响应包括锁定指示。
在接收到重试写响应之后,DST客户端模块A确定是否已接收到包括锁定指示的至少写阈值数量的重试写响应(例如,来自写切片请求和/或重试写切片请求的写切片响应)。例如,当接收到指示锁定条件的写切片响应A1-A5时并且当接收到指示至少一个以上的锁定条件的其它写切片响应A4-A5时,DST客户端模块A指示已接收到写阈值数量的重试写响应。当已接收到包括锁定指示的至少重试写阈值次数的重试写响应时,DST客户端模块A向至少一些存储单元发出提交命令。例如,DST客户端模块A经由网络24向DST执行单元集合560的每个DST执行单元发出提交事务请求以执行提交阶段。在由DST执行单元的集合确认接收到写阈值数量的提交事务请求之后,DST客户端模块A经由网络24向DST执行单元集合560的DST执行单元发出完结事务请求以完成完结阶段。
图47C是示出解决写请求冲突的例子的表。特别地,该表表示解决写请求冲突的操作的另一例子的步骤,其中4个DST处理模块A-D竞争将数据对象写到图47A-B的存储单元1-5的集合。该表包括请求排序部分562,锁定信息部分564,和推导优先级部分566。请求排序部分562包括存储单元字段568,锁定拥有者字段570,和请求的接收顺序字段572。锁定信息部分564包括每个DST处理模块A-D的优先级顺序响应的字段。推导优先级部分566包括由每个DST处理模块A-D推导的自排名和优先级排序的字段。
在操作的例子中,存储单元字段568的条目指示存储单元1-5中的特定存储单元。锁定拥有者字段570的条目指示由对应存储单元进行的锁定选择。例如,存储单元2返回包括DST处理模块B的锁定指示的写响应。请求的接收顺序字段572的条目指示由对应的存储单元从DST处理模块接收到的写请求的排序。例如,存储单元2第一个接收来自DST处理模块B的写切片请求,第二个接收来自DST处理模块A的写切片请求,第三个接收来自DST处理模块D的写切片请求,并且第四个接收来自DST的写切片请求处理模块C第四。
当接收到写请求时,每个存储单元向对应的请求DST处理模块发出写响应。当接收到第一写切片请求时,存储单元发出包括锁定指示的写响应(例如,指示在该时间点对应的DST处理模块拥有锁定并且没有争用)。例如,存储单元2从DST处理模块B接收第一写切片请求,并且向DST处理模块B发出第一写切片响应,指示DST处理模块B拥有锁定。当接收到第二写请求时,存储单元发出包括非锁定指示和冲突信息的第二写切片响应。例如,存储单元2从DST处理模块A接收第二写切片请求,并且向DST处理模块A发出第二写切片响应,指示第二写切片响应包括不相似指示和冲突信息,其中冲突信息指示DST处理模块B拥有锁定并且DST处理模块A与第二写切片请求(例如,第二优先级)相关联。
接收写切片响应的每个DST处理模块解释锁定指示、非锁定指示和冲突信息中的一个或多个,从而推断相对于其它DST处理模块的优先级排名。该推导包括处理冲突信息以识别具有比写请求更高的优先级的基本上相同的写请求中的一个或多个其它写请求。例如,DST处理模块B确定响应于一个或多个其它写请求的每一个,相比于针对与DST处理模块B相关联的写请求接收到的锁定指示接收到更多数量的锁定指示(例如,DST处理模块A和C都接收到两个锁定,而DST处理模块B仅接收到一个锁定)。
作为另一例子,DST处理模块A和C都确定响应于一个或多个其它写请求中的一个,接收到与针对与DST处理模块A和C相关联的写请求所接收到的相等数量的锁定指示(例如,DST处理模块A和C都接收到两个锁定)。当接收到相等数量的锁定指示时,DST处理模块A和C都执行重试打破平局协议。该重试打破打破协议包括当与一个或多个其它写请求中的一个相关联的另一计算设备具有比该计算设备更高的设备优先级时,将优先级赋予一个或多个其它写请求中的一个。例如,DST处理模块C基于向DST处理模块C发出的写切片响应(例如,优先级顺序响应B、A、D、C)推断DST处理模块A具有更高优先级,并且将第二优先级与DST处理模块C相关联。在类似的情况下,DST处理模块A也推导出DST处理模块A具有更高的优先级,并且将第一优先级与DST处理模块A相关联。
当锁定指示指示DST处理模块A和C均拥有两个锁定并且DST处理模块B如优先级顺序响应指示具有比DST处理模块D更高的优先级时,DST处理模块B解释DST处理模块B从五个存储单元接收的五个写切片响应以推导出排名3。当锁定指示指示DST处理模块A和C均拥有两个锁定,并且DST处理模块B的优先级顺序总是大于DST处理模块D的优先级顺序时,DST处理模块B解释DST处理模块B从五个存储单元接收的五个写响应以推导出排名4。
在推导出优先级排名之后,每个DST处理模块基于具有较高优先级的一个或多个其它写请求建立写请求重试时间帧,并且在写请求重试时间帧到期时向一个或多个存储单元发出重试写请求。写请求重试时间帧的建立还可以基于冲突信息的一个或多个方面。例如,DST处理模块基于以下的一个或多个建立写请求重试时间帧:处理多阶段写过程的估计时间,估计锁定持续时间,锁定超时持续时间,历史冲突率,以及每次重试成功的历史概率。例如,DST处理模块A在推导第一优先级排名时建立与执行多阶段写过程的估计时间基本相同的关联写请求重试时间帧,在推导第二优先级排名时DST处理模块C建立是执行多阶段写过程的估计写时间的两倍的关联写请求重试时间帧,在推导第三优先级排名时DST处理模块B建立是执行多阶段写过程的估计写时间的三倍的关联写请求重试时间帧,并且在推导第四优先级排名时DST处理模块D建立是执行多阶段写过程的估计写时间的四倍的关联写请求重试时间。因而,该方法可以提供改善的系统操作水平,从而以顺序有效的方式有效地处理争用的写请求,而没有进一步的争用。
图47D是示出解决关于由基本上同时的写请求引起的数据对象的写请求冲突的例子的流程图。具体地,提供与结合1-39、47A-C以及图47D描述的一个或多个功能和特征一起使用的方法。该方法开始于步骤580,其中分散存储网络(DSN)的一个或多个计算设中的计算设备(例如,分布式存储和任务处理模块)的处理模块向DSN的存储单元发出数据对象的分散存储错误编码版本的写请求。例如,计算设备分散存储错误编码数据对象以产生编码数据切片的多个集合,并且将编码数据切片的多个集合发送到DSN的存储单元的集合。
该方法在步骤582继续,其中计算设备响应于写请求接收来自存储单元中的至少一些的写响应,其中每个写响应包括锁定指示或非锁定指示和冲突信息。该方法在步骤584继续,其中计算设备确定是否已接收到包括锁定指示的至少写阈值数量的写响应。
当已接收到包括锁定指示的小于至少写阈值数量的写响应时,该方法在步骤586继续,其中计算设备处理冲突信息以识别具有比写请求更高的优先级的基本上同时的写请求中的一个或多个其它写请求。例如,计算设备确定响应于一个或多个其它写请求的每一个,接收到比针对该写请求接收的锁定指示更大数量的锁定指示。作为另一例子,计算设备确定响应于一个或多个其它写请求中的一个,接收到与针对写请求接收的相等数量的锁定指示。当针对一个或多个其它写请求中的一个接收到的锁定指示与针对该写请求接收到锁定指示数量相同时,计算设备执行重试打破平局协议。例如,当与一个或多个其它写请求中的一个相关联的另一计算设备具有比该计算设备更高的设备优先级时,计算设备将优先级赋予一个或多个其它写请求中的一个。作为另一例子,计算设备解释来自未将锁指示提供给计算设备的写请求或其它计算设备的一个或多个其它写请求的至少一些存储单元中的存储单元的冲突信息以确定该写请求和一个或多个其它写请求之间的重试优先级。
该方法在步骤588继续,其中计算设备基于具有较高优先级的一个或多个其它写请求来建立写请求重试时间帧。在写请求重试时间帧到期时,该方法在步骤590继续,其中计算设备发出数据对象的分散存储错误编码版本的重试写请求。该方法在步骤592继续,其中计算设备响应于重试写请求接收来自存储单元中的至少一些的重试写响应,其中每个重试写响应包括锁定指示或非锁定指示和更新的冲突信息。
该方法在步骤594继续,其中计算设备确定是否已接收到包括锁定指示的至少写阈值数量的重试写响应(例如,从包括锁定指示的写响应和重试写响应的总数量)。当已接收到包括锁定指示的至少重试写阈值数量的重试写响应时,该方法在步骤596继续,其中计算设备向存储单元中的至少一些发出提交命令。
上述结合处理模块描述的方法可以替代地由分散存储网络的其它模块或由其它设备执行。另外,当由分散存储网络(DSN)的一个或多个计算设备的一个或多个处理模块执行时,存储操作指令的至少一个存储器部分(例如,计算机可读存储介质)可以使一个或多个计算设备执行上述任何或所有方法步骤。
图48A是分散存储网络(DSN)的另一实施例的示意性框图,其包括多个分布式存储和任务(DST)客户端模块1-D,图45A的分布式存储和任务网络(DSTN)管理单元18,图1的网络24,和图45A的多个存储世代1-G。DSN用于在一个或多个存储世代中摄取大量数据存储,并且根据摄取数据激活存储世代。例如,DST客户端模块1接收摄取数据1,分散存储错误编码摄取数据以产生编码数据切片的集合,并且将编码数据切片的集合存储在先前激活的存储世代1中。
在操作的例子中,DSTN管理单元18获得每个当前活动的存储世代的存储使用水平。该获得包括以下的至少一个:发出存储使用水平请求,接收存储使用水平响应,解释错误消息,解释DSN日志,解释分散分层索引内的存储指示符,以及执行查找。
在获得存储使用水平之后,DSTN管理单元18获得每个当前活动的存储世代的数据摄取速率。该获得包括以下的至少一个:发出数据摄取速率请求,接收数据摄取速率响应,解释DSN日志,解释分散分层索引内的存储指示符,执行查找,向一个或多个DST客户端模块发出查询,从至少一个DST客户端模块接收查询响应,以及执行查找。
在获得数据摄取速率之后,DSTN管理单元18基于存储使用水平和数据摄取速率来确定是否激活一个或多个其它存储世代。例如,当存储使用水平大于最大存储使用阈值水平时,DSTN管理单元18指示激活附加存储世代。作为另一例子,当数据摄取速率大于最大数据摄取阈值水平时,DSTN管理单元18指示激活附加存储世代。
当激活一个或多个其它存储世代时,DSTN管理单元18基于以下的一个或多个确定要激活的存储世代的数量:存储使用水平,数据摄取速率,和最大数据摄取阈值水平中。例如,当数据摄取速率大于最大数据摄取阈值水平时,DSTN管理单元18确定激活两个或更多个世代。作为另一例子,DSTN管理单元18估计所需世代的数量,使得对于任何存储世代,最大数据摄取速率阈值水平不受损害。
在确定要激活的存储世代的数量之后,DSTN管理单元18根据要激活的存储世代的数量向非活动存储世代发出分配消息,其中分配消息包括以下的一个或多个:激活指示,分配的DSN地址范围,以及为存储分配的存储容量的大小。例如,DSTN管理单元18经由网络24向存储世代2-3发出分配消息2-3到以开始激活。
图48B是示出激活存储世代的例子的流程图。该方法在步骤600开始或继续,其中(例如,分布式存储和任务网络(DSTN)管理单元的)处理模块获得一个或多个当前存储世代的每一个的存储使用水平。该获得包括以下的至少一个:开始查询,接收查询响应,执行查找,和解释系统活动日志。对于每个当前存储世代,该方法在步骤602继续,其中处理模块获得数据摄取速率。该获得包括以下的至少一个:开始查询,接收查询响应,执行查找,和解释系统活动日志。
该方法在步骤604继续,其中处理模块确定是否激活一个或多个其它存储世代。例如,当存储使用水平中的至少一个大于最大存储使用阈值水平时并且当数据摄取速率大于最大数据摄取阈值水平时处理模块指示激活。
当激活一个或多个其它存储世代时,该方法在步骤606继续,其中处理模块确定要激活的存储世代的数量。例如,处理模块估计所需世代的数量,使得一个或多个其它存储世代的每一个中的一个或多个当前存储世代的每一个的数据摄取速率小于低数据摄取阈值水平。
该方法在步骤608继续,其中处理模块根据要激活的存储世代的数量向一个或多个非活动存储世代的每一个发出和分配消息。例如,处理模块生成分配消息以包括分配的DSN地址范围和要分配的存储容量的大小,并且将分配消息发送到一个或多个其它存储世代的存储单元。
当在本文中使用时,术语“基本上”和“大致”提供其对应术语和/或项目之间的相对性的行业接受的公差。这样的工业可接受的公差范围从小于百分之一到百分之五十,并且对应于但不限于部件值,集成电路工艺变化,温度变化,上升和下降时间,和/或热噪声。项目之间的这种相对性范围从几个百分比的差异到显著差异。同样当在本文中使用时,(一个或多个)术语“可操作地联接到”、“联接到”和/或“联接”包括项目之间的直接联接和/或项目之间经由中间项目的间接联接(例如,项目包括但不限于组件、元件、电路和/或模块),其中对于间接联接,中间项目不修改信号的信息,而是可以调整其电流电平、电压电平和/或功率水平。进一步当在本文中使用时,推断的联接(即,其中一个元件通过推断联接到另一个元件)包括以与“联接到”相同的方式在两个项目之间的直接和间接联接。更进一步当在本文中使用时,术语“可操作以”或“可操作地联接到”指示,项目包括电力连接、(一个或多个)输入、(一个或多个)输出等中的一个或多个,从而当激活时执行一个或多个其对应的功能,并且还可以包括与一个或多个其它项目的推断联接。进一步当在本文中使用时,术语“与...相关联”包括独立项目的直接和/或间接联接和/或一个项目嵌入另一项目内。当在本文中使用时,术语“有利地比较”指示两个或更多个项目、信号等之间的比较提供期望的关系。例如,当期望的关系是信号1具有比信号2更大的幅度时,当信号1的幅度大于信号2的幅度或者当信号2的幅度小于信号1的幅度时可以实现有利的比较。
同样当在本文中使用时,术语“处理模块”、“处理电路”和/或“处理单元”可以是单个处理设备或多个处理设备。这样的处理设备可以是微处理器,微控制器,数字信号处理器,微计算机,中央处理单元,现场可编程门阵列,可编程逻辑器件,状态机,逻辑电路,模拟电路,数字电路,和/基于电路的硬编码和/或操作指令来操纵信号(模拟和/或数字)的任何设备。处理模块、模块、处理电路和/或处理单元可以是或进一步包括存储器和/或集成存储器元件,其可以是单个存储器设备,多个存储器设备,和/或另一处理模块、模块、处理电路和/或处理单元的嵌入式电路。这样的存储器设备可以是只读存储器,随机存取存储器,易失性存储器,非易失性存储器,静态存储器,动态存储器,闪存,高速缓冲存储器,和/或存储数字信息的任何设备。应当注意,如果处理模块、模块、处理电路和/或处理单元包括一个以上的处理设备,则处理设备可以位于中央(例如,经由有线和/或无线总线结构直接联接在一起),或者可以是分布式定位(例如,经由局域网和/或广域网的间接联接的云计算)。还应当注意,如果处理模块、模块、处理电路和/或处理单元经由状态机、模拟电路、数字电路和/或逻辑电路实现其功能中的一个或多个,则存储对应的操作指令的存储器和/或存储器元件可以嵌入包括状态机、模拟电路、数字电路和/或逻辑电路的电路中或在其外部。还应当注意,存储器元件可以存储并且处理模块、模块、处理电路和/或处理单元可以执行对应于一个或多个中示出的至少一些步骤和/或功能的硬编码和/或操作指令。这样的存储设备或存储元件可以包括在制品中。
以上已借助于示出特定功能及其关系的执行的方法步骤描述了本发明。为了描述方便,这些功能构建块和方法步骤的边界和序列已在本文中任意限定。可以限定替代的边界和序列,只要适当地执行指定的功能和关系。任何这样的替代边界或序列因此在所要求保护的发明的范围和精神内。此外,为了方便描述,这些功能构建块的边界已被任意限定。可以限定替代边界,只要适当地执行某些重要功能。类似地,流程图框也可以在本文中任意地限定以示出某些重要功能。在所使用的程度上,流程图框边界和序列可以另外限定并且仍然执行某些重要的功能。功能构建块和流程图框和序列的这样的替代限定因此在所要求保护的发明的范围和精神内。本领域的普通技术人员也将认识到,本文中的功能构建块以及其它说明性块、模块和组件可以如图所示被实现,或者由分立部件、专用集成电路、执行适当软件的处理器等或其任何组合实现。
也已根据一个或多个实施例至少部分地描述了本发明。本发明的实施例在本文中用于说明本发明,其方面,其特征,其概念,和/或其例子。体现本发明的装置、制品、机器和/或过程的物理实施例可以包括参考本文中所述的一个或多个实施例描述的方面、特征、概念、例子等中的一个或多个。此外,在不同图之间,实施例可以包含可使用相同或不同附图标记的相同或类似命名的功能、步骤、模块等,并且且因此,功能、步骤、模块等可以是相同或相似的功能、步骤、模块等,或是不同的。
尽管上述(一个或多个)图中的晶体管被显示场效应晶体管(FET),但是本领域普通技术人员将领会,晶体管可以使用任何类型的晶体管结构来实现,包括但不限于双极,金属氧化物半导体场效应晶体管(MOSFET),N阱晶体管,P阱晶体管,增强模式,耗尽模式,和零电压阈值(VT)晶体管。
除非相反地具体说明,本文中给出的任何附图的图中的到达元件、来自元件和/或在元件之间的信号可以是模拟的或数字的,连续时间的或离散时间的,以及单端的或差分的。例如,如果信号路径被显示为单端路径,则它也表示差分信号路径。类似地,如果信号路径被显示为差分路径,则它也表示单端信号路径。尽管本文中描述了一个或多个特定架构,但是本领域普通技术人员可以认识到,同样可以实现其它架构,其使用未明确显示的一个或多个数据总线,元件之间的直接连接,和/或其它元件之间的间接联接。
在本发明的各种实施例的描述中使用术语“模块”。模块包括处理模块,功能块,硬件,和/或存储在存储器上的软件,用于执行如本文中所述的一个或多个功能。应当注意,如果模块通过硬件实现,则硬件可以独立地操作和/或结合软件和/或固件操作。当在本文中使用时,模块可以包含一个或多个子模块,每个子模块可以是一个或多个模块。
尽管在本文中明确描述了本发明的各种功能和特征的特定组合,但是这些特征和功能的其它组合同样是可能的。本发明不受本文中公开的具体实施例限制,并且明确地包含这些其它组合。
Claims (24)
1.一种由分散存储网络DSN的一个或多个计算设备的一个或多个处理模块执行的方法,其中所述DSN包括多个存储世代,所述多个存储世代的每一个使用多个存储单元,所述方法包括:
基于数据对象名称生成用于检索元数据寻址信息的第一检索请求,其中所述第一检索请求根据所述DSN的读请求格式被格式化;
基于检索的元数据寻址信息生成用于检索元数据的第二检索请求,其中所述第二检索请求根据所述DSN的读请求格式被格式化;以及
基于检索的元数据生成用于检索与所述数据对象名称相关联的数据对象的至少一部分的第三检索请求,其中所述第三检索请求根据所述DSN的读请求格式被格式化,其中将所述元数据寻址信息、所述元数据和所述数据对象中的至少两个存储在所述多个存储世代的不同存储世代中。
2.根据权利要求1所述的方法,其中生成所述第一检索请求包括:
对所述数据对象名称执行确定性函数以产生数字值;
使用所述数字值的第一部分作为所述DSN的读请求格式的世代标识符;以及
使用所述数字值的第二部分作为所述DSN的读请求格式的对象标识符。
3.根据权利要求2所述的方法,其中生成所述第一检索请求包括:
确定与所述数据对象相关联的仓库标识符;以及
在所述DSN的读请求格式的仓库标识符字段中使用所述仓库标识符。
4.根据权利要求1所述的方法,其还包括:
通过以下方式基于所述数据对象名称生成所述第一检索请求:
生成用于检索至少解码阈值数量的元数据寻址信息切片的第一级读请求的集合,其中所述元数据寻址信息包括关于所述DSN内的元数据的存储的寻址信息,其中所述元数据寻址信息被分散存储错误编码以产生元数据寻址信息切片的集合,并且其中所述元数据寻址信息切片的解码阈值数量表示恢复所述元数据寻址信息所需的所述元数据寻址信息切片的集合的元数据寻址信息切片的最小数量;以及
解码所述至少解码阈值数量的元数据寻址信息切片以恢复所述元数据寻址信息。
5.根据权利要求1所述的方法,其中生成所述第二检索请求包括:
基于所述元数据寻址信息生成用于检索至少解码阈值数量的元数据切片的第二级读请求的集合,其中所述元数据包括关于所述DSN内的数据对象的编码数据切片的多个集合的存储的寻址信息,其中所述元数据被分散存储错误编码以产生元数据切片的集合,并且其中所述元数据切片的解码阈值数量表示恢复所述元数据所需的元数据切片的集合的元数据切片的最小数量。
6.根据权利要求5所述的方法,其还包括:
解码所述至少解码阈值数量的元数据切片以恢复所述元数据。
7.根据权利要求1所述的方法,其中生成所述第二检索请求包括:
从所述元数据寻址信息中提取世代标识符和对象标识符,所述世代标识符指示所述多个存储世代中的一个;
确定与所述数据对象相关联的仓库标识符;
在所述DSN的读请求格式的世代标识符字段中使用所述世代标识符;
在所述DSN的读请求格式的对象标识符字段中使用所述对象标识符;以及
在所述DSN的读请求格式的仓库标识符字段中使用所述仓库标识符。
8.根据权利要求1所述的方法,其中生成所述第三检索请求包括:
基于所述元数据生成用于检索至少解码阈值数量的编码数据切片的第三级读请求的至少一个集合,其中所述数据对象被分散存储错误编码以产生编码数据切片的多个集合,并且其中所述编码数据切片的解码阈值数量表示恢复所述数据对象的部分所需的所述编码数据切片的多个集合的编码数据切片的最小数量。
9.一种计算机可读存储介质,其包括:
存储操作指令的至少一个存储器部分,当由分散存储网络DSN的一个或多个计算设备的一个或多个处理模块执行时,所述操作指令使所述一个或多个计算设备:
基于数据对象名称生成用于检索元数据寻址信息的第一检索请求,其中所述第一检索请求根据所述DSN的读请求格式被格式化;
基于检索的元数据寻址信息生成用于检索元数据的第二检索请求,其中所述第二检索请求根据所述DSN的读请求格式被格式化;以及
基于检索的元数据生成用于检索与所述数据对象名称相关联的数据对象的至少一部分的第三检索请求,其中所述第三检索请求根据所述DSN的读请求格式被格式化;
其中所述DSN包括多个存储世代,所述多个存储世代的每一个使用多个存储单元,并且其中将所述元数据寻址信息、所述元数据和所述数据对象中的至少两个存储在所述多个存储世代的不同存储世代中。
10.根据权利要求9所述的计算机可读存储介质,其中所述一个或多个处理模块用于执行由所述至少一个存储器部分存储的操作指令以通过以下方式使所述DSN的所述一个或多个计算设备生成所述第一检索请求:
对所述数据对象名称执行确定性函数以产生数字值;
使用所述数字值的第一部分作为所述DSN的读请求格式的世代标识符;以及
使用所述数字值的第二部分作为所述DSN的读请求格式的对象标识符。
11.根据权利要求10所述的计算机可读存储介质,其中所述一个或多个处理模块用于执行由所述至少一个存储器部分存储的操作指令以通过以下方式使所述DSN的所述一个或多个计算设备生成所述第一检索请求:
确定与所述数据对象相关联的仓库标识符;以及
在所述DSN的读请求格式的仓库标识符字段中使用所述仓库标识符。
12.根据权利要求9所述的计算机可读存储介质,其还包括:
所述至少一个存储器部分存储另外的操作指令,当由所述一个或多个处理模块执行时,所述另外的操作指令使所述DSN的所述一个或多个计算设备:
通过以下方式基于所述数据对象名称生成所述第一检索请求:
生成用于检索至少解码阈值数量的元数据寻址信息切片的第一级读请求的集合,其中所述元数据寻址信息包括关于所述DSN内的元数据的存储的寻址信息,其中所述元数据寻址信息被分散存储错误编码以产生元数据寻址信息切片的集合,并且其中所述元数据寻址信息切片的解码阈值数量表示恢复所述元数据寻址信息所需的所述元数据寻址信息切片的集合的元数据寻址信息切片的最小数量;以及
解码所述至少解码阈值数量的元数据寻址信息切片以恢复所述元数据寻址信息。
13.根据权利要求9所述的计算机可读存储介质,其中所述一个或多个处理模块用于执行由所述至少一个存储器部分存储的操作指令以通过以下方式使所述DSN的所述一个或多个计算设备生成所述第二检索请求:
基于所述元数据寻址信息生成用于检索至少解码阈值数量的元数据切片的第二级读请求的集合,其中所述元数据包括关于所述DSN内的数据对象的编码数据切片的多个集合的存储的寻址信息,其中所述元数据被分散存储错误编码以产生元数据切片的集合,并且其中所述元数据切片的解码阈值数量表示恢复所述元数据所需的元数据切片的集合的元数据切片的最小数量。
14.根据权利要求13所述的计算机可读存储介质,其还包括:
所述至少一个存储器部分存储另外的操作指令,当由所述一个或多个处理模块执行时,所述另外的操作指令使所述DSN的所述一个或多个计算设备:
解码所述至少解码阈值数量的元数据切片以恢复所述元数据。
15.根据权利要求9所述的计算机可读存储介质,其中所述一个或多个处理模块用于执行由所述至少一个存储器部分存储的操作指令以通过以下方式使所述DSN的所述一个或多个计算设备生成所述第二检索请求:
从所述元数据寻址信息中提取世代标识符和对象标识符,所述世代标识符指示所述多个存储世代中的一个;
确定与所述数据对象相关联的仓库标识符;
在所述DSN的读请求格式的世代标识符字段中使用所述世代标识符;
在所述DSN的读请求格式的对象标识符字段中使用所述对象标识符;以及
在所述DSN的读请求格式的仓库标识符字段中使用所述仓库标识符。
16.根据权利要求9所述的计算机可读存储介质,其中所述一个或多个处理模块用于执行由所述至少一个存储器部分存储的操作指令以通过以下方式使所述DSN的所述一个或多个计算设备生成所述第三检索请求:
基于所述元数据生成用于检索至少解码阈值数量的编码数据切片的第三级读请求的至少一个集合,其中所述数据对象被分散存储错误编码以产生编码数据切片的多个集合,并且其中所述编码数据切片的解码阈值数量表示恢复所述数据对象的部分所需的所述编码数据切片的多个集合的编码数据切片的最小数量。
17.一种分散存储网络DSN的计算设备组的计算设备,所述计算设备包括:
接口;
本地存储器;以及
处理模块,所述处理模块可操作地联接到所述接口和所述本地存储器,其中所述处理模块用于:
基于数据对象名称生成用于检索元数据寻址信息的第一检索请求,其中所述第一检索请求根据所述DSN的读请求格式被格式化;
基于检索的元数据寻址信息生成用于检索元数据的第二检索请求,其中所述第二检索请求根据所述DSN的读请求格式被格式化;以及
基于检索的元数据生成用于检索与所述数据对象名称相关联的数据对象的至少一部分的第三检索请求,其中所述第三检索请求根据所述DSN的读请求格式被格式化;
其中所述DSN包括多个存储世代,所述多个存储世代的每一个使用多个存储单元,并且其中将所述元数据寻址信息、所述元数据和所述数据对象中的至少两个存储在所述多个存储世代的不同存储世代中。
18.根据权利要求17所述的计算设备,其中所述处理模块用于通过以下方式生成所述第一检索请求:
对所述数据对象名称执行确定性函数以产生数字值;
使用所述数字值的第一部分作为所述DSN的读请求格式的世代标识符;以及
使用所述数字值的第二部分作为所述DSN的读请求格式的对象标识符。
19.根据权利要求18所述的计算设备,其中所述处理模块用于通过以下方式生成所述第一检索请求:
确定与所述数据对象相关联的仓库标识符;以及
在所述DSN的读请求格式的仓库标识符字段中使用所述仓库标识符。
20.根据权利要求17所述的计算设备,其中所述处理模块还用于:
通过以下方式基于所述数据对象名称生成所述第一检索请求:
生成用于检索至少解码阈值数量的元数据寻址信息切片的第一级读请求的集合,其中所述元数据寻址信息包括关于所述DSN内的元数据的存储的寻址信息,其中所述元数据寻址信息被分散存储错误编码以产生元数据寻址信息切片的集合,并且其中所述元数据寻址信息切片的解码阈值数量表示恢复所述元数据寻址信息所需的所述元数据寻址信息切片的集合的元数据寻址信息切片的最小数量;以及
解码所述至少解码阈值数量的元数据寻址信息切片以恢复所述元数据寻址信息。
21.根据权利要求17所述的计算设备,其中所述处理模块用于通过以下方式生成所述第二检索请求:
基于所述元数据寻址信息生成用于检索至少解码阈值数量的元数据切片的第二级读请求的集合,其中所述元数据包括关于所述DSN内的数据对象的编码数据切片的多个集合的存储的寻址信息,其中所述元数据被分散存储错误编码以产生元数据切片的集合,并且其中所述元数据切片的解码阈值数量表示恢复所述元数据所需的元数据切片的集合的元数据切片的最小数量。
22.根据权利要求21所述的计算设备,其中所述处理模块还用于:
解码所述至少解码阈值数量的元数据切片以恢复所述元数据。
23.根据权利要求17所述的计算设备,其中所述处理模块用于通过以下方式生成所述第二检索请求:
从所述元数据寻址信息中提取世代标识符和对象标识符,所述世代标识符指示所述多个存储世代中的一个;
确定与所述数据对象相关联的仓库标识符;
在所述DSN的读请求格式的世代标识符字段中使用所述世代标识符;
在所述DSN的读请求格式的对象标识符字段中使用所述对象标识符;以及
在所述DSN的读请求格式的仓库标识符字段中使用所述仓库标识符。
24.根据权利要求17所述的计算设备,其中所述处理模块用于通过以下方式生成所述第三检索请求:
基于所述元数据生成用于检索至少解码阈值数量的编码数据切片的第三级读请求的至少一个集合,其中所述数据对象被分散存储错误编码以产生编码数据切片的多个集合,并且其中所述编码数据切片的解码阈值数量表示恢复所述数据对象的部分所需的所述编码数据切片的多个集合的编码数据切片的最小数量。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461986361P | 2014-04-30 | 2014-04-30 | |
US61/986,361 | 2014-04-30 | ||
US14/638,175 US9612882B2 (en) | 2014-04-30 | 2015-03-04 | Retrieving multi-generational stored data in a dispersed storage network |
US14/638,175 | 2015-03-04 | ||
PCT/US2015/019161 WO2015167665A1 (en) | 2014-04-30 | 2015-03-06 | Retrieving multi-generational stored data in a dispersed storage network |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106233259A CN106233259A (zh) | 2016-12-14 |
CN106233259B true CN106233259B (zh) | 2018-11-20 |
Family
ID=54355269
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580021723.2A Active CN106233259B (zh) | 2014-04-30 | 2015-03-06 | 在分散存储网络中检索多世代存储数据的方法和系统 |
Country Status (5)
Country | Link |
---|---|
US (4) | US9542239B2 (zh) |
JP (1) | JP6522008B2 (zh) |
CN (1) | CN106233259B (zh) |
GB (1) | GB2541581A (zh) |
WO (1) | WO2015167665A1 (zh) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11582299B2 (en) * | 2016-01-26 | 2023-02-14 | Pure Storage, Inc. | Allocating cache memory in a dispersed storage network |
US10191925B1 (en) | 2011-10-27 | 2019-01-29 | Valve Corporation | Delivery of digital information to a remote device |
US20170357666A1 (en) * | 2012-12-05 | 2017-12-14 | International Business Machines Corporation | Implementing queues (fifo) and stacks (filo) on top dispersed storage |
US10678638B2 (en) * | 2014-02-26 | 2020-06-09 | Pure Storage, Inc. | Resolving write conflicts in a dispersed storage network |
US10169147B2 (en) * | 2015-10-30 | 2019-01-01 | International Business Machines Corporation | End-to-end secure data storage in a dispersed storage network |
US10346246B2 (en) * | 2015-11-30 | 2019-07-09 | International Business Machines Corporation | Recovering data copies in a dispersed storage network |
US20170192688A1 (en) * | 2015-12-30 | 2017-07-06 | International Business Machines Corporation | Lazy deletion of vaults in packed slice storage (pss) and zone slice storage (zss) |
CN105760259A (zh) * | 2016-03-01 | 2016-07-13 | 北京金山安全软件有限公司 | 一种数据备份方法、装置及电子设备 |
US11048823B2 (en) | 2016-03-09 | 2021-06-29 | Bitspray Corporation | Secure file sharing over multiple security domains and dispersed communication networks |
US10592336B1 (en) * | 2016-03-24 | 2020-03-17 | Amazon Technologies, Inc. | Layered indexing for asynchronous retrieval of redundancy coded data |
US10628399B2 (en) * | 2016-04-29 | 2020-04-21 | International Business Machines Corporation | Storing data in a dispersed storage network with consistency |
US10091298B2 (en) | 2016-05-27 | 2018-10-02 | International Business Machines Corporation | Enhancing performance of data storage in a dispersed storage network |
US10514993B2 (en) * | 2017-02-14 | 2019-12-24 | Google Llc | Analyzing large-scale data processing jobs |
US10642532B2 (en) | 2017-02-28 | 2020-05-05 | International Business Machines Corporation | Storing data sequentially in zones in a dispersed storage network |
US10198369B2 (en) * | 2017-03-24 | 2019-02-05 | Advanced Micro Devices, Inc. | Dynamic memory remapping to reduce row-buffer conflicts |
US11048562B2 (en) * | 2017-06-04 | 2021-06-29 | Apple Inc. | Multi-thread synchronization primitive |
US10372381B2 (en) | 2017-06-05 | 2019-08-06 | International Business Machines Corporation | Implicit leader election in a distributed storage network |
US10083754B1 (en) * | 2017-06-05 | 2018-09-25 | Western Digital Technologies, Inc. | Dynamic selection of soft decoding information |
US10509699B2 (en) | 2017-08-07 | 2019-12-17 | International Business Machines Corporation | Zone aware request scheduling and data placement |
US10789002B1 (en) * | 2017-10-23 | 2020-09-29 | EMC IP Holding Company LLC | Hybrid data deduplication for elastic cloud storage devices |
CN107943421B (zh) * | 2017-11-30 | 2021-04-20 | 成都华为技术有限公司 | 一种基于分布式存储系统的分区划分方法及装置 |
CN110018889B (zh) * | 2018-01-10 | 2021-06-15 | 武汉斗鱼网络科技有限公司 | 动画队列的排队方法、存储介质、设备及系统 |
US11782882B2 (en) * | 2018-01-22 | 2023-10-10 | Jpmorgan Chase Bank, N.A. | Methods for automated artifact storage management and devices thereof |
US10592340B2 (en) * | 2018-02-28 | 2020-03-17 | International Business Machines Corporation | Dynamic authorization batching in a dispersed storage network |
US10942725B2 (en) * | 2018-07-30 | 2021-03-09 | Ford Global Technologies, Llc | Over the air Ecu update |
US11070618B2 (en) * | 2019-01-30 | 2021-07-20 | Valve Corporation | Techniques for updating files |
CN116232582A (zh) * | 2019-05-22 | 2023-06-06 | 妙泰公司 | 具有增强的安全性、弹性和控制的分布式数据存储方法及系统 |
CN111399766B (zh) * | 2020-01-08 | 2021-10-22 | 华为技术有限公司 | 存储系统中的数据存储方法、数据读取方法、装置及系统 |
KR102583957B1 (ko) * | 2020-04-02 | 2023-09-27 | 한국전자통신연구원 | 데이터베이스 서버 할당 방법 및 장치 |
US11886391B2 (en) | 2020-05-14 | 2024-01-30 | Valve Corporation | Efficient file-delivery techniques |
CN116860186B (zh) * | 2023-09-05 | 2023-11-10 | 上海凯翔信息科技有限公司 | 一种分布式集群的数据清理系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1666192A (zh) * | 2002-09-03 | 2005-09-07 | 富士通株式会社 | 检索处理系统、其检索服务器、客户端、检索处理方法、程序及记录介质 |
Family Cites Families (102)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4092732A (en) | 1977-05-31 | 1978-05-30 | International Business Machines Corporation | System for recovering data stored in failed memory unit |
US5485474A (en) | 1988-02-25 | 1996-01-16 | The President And Fellows Of Harvard College | Scheme for information dispersal and reconstruction |
US5237567A (en) * | 1990-10-31 | 1993-08-17 | Control Data Systems, Inc. | Processor communication bus |
US5454101A (en) | 1992-09-15 | 1995-09-26 | Universal Firmware Industries, Ltd. | Data storage system with set lists which contain elements associated with parents for defining a logical hierarchy and general record pointers identifying specific data sets |
US5689678A (en) * | 1993-03-11 | 1997-11-18 | Emc Corporation | Distributed storage array system having a plurality of modular control units |
US5544345A (en) * | 1993-11-08 | 1996-08-06 | International Business Machines Corporation | Coherence controls for store-multiple shared data coordinated by cache directory entries in a shared electronic storage |
US5987622A (en) | 1993-12-10 | 1999-11-16 | Tm Patents, Lp | Parallel computer system including parallel storage subsystem including facility for correction of data in the event of failure of a storage device in parallel storage subsystem |
US6175571B1 (en) | 1994-07-22 | 2001-01-16 | Network Peripherals, Inc. | Distributed memory switching hub |
US5848230A (en) | 1995-05-25 | 1998-12-08 | Tandem Computers Incorporated | Continuously available computer memory systems |
US5774643A (en) | 1995-10-13 | 1998-06-30 | Digital Equipment Corporation | Enhanced raid write hole protection and recovery |
US5809285A (en) | 1995-12-21 | 1998-09-15 | Compaq Computer Corporation | Computer system having a virtual drive array controller |
US6012159A (en) | 1996-01-17 | 2000-01-04 | Kencast, Inc. | Method and system for error-free data transfer |
US5802364A (en) | 1996-04-15 | 1998-09-01 | Sun Microsystems, Inc. | Metadevice driver rename/exchange technique for a computer system incorporating a plurality of independent device drivers |
US5890156A (en) | 1996-05-02 | 1999-03-30 | Alcatel Usa, Inc. | Distributed redundant database |
US6058454A (en) | 1997-06-09 | 2000-05-02 | International Business Machines Corporation | Method and system for automatically configuring redundant arrays of disk memory devices |
US6088330A (en) | 1997-09-09 | 2000-07-11 | Bruck; Joshua | Reliable array of distributed computing nodes |
US5991414A (en) | 1997-09-12 | 1999-11-23 | International Business Machines Corporation | Method and apparatus for the secure distributed storage and retrieval of information |
US6272658B1 (en) | 1997-10-27 | 2001-08-07 | Kencast, Inc. | Method and system for reliable broadcasting of data files and streams |
JPH11161505A (ja) | 1997-12-01 | 1999-06-18 | Matsushita Electric Ind Co Ltd | メディア送出装置 |
JPH11167443A (ja) | 1997-12-02 | 1999-06-22 | Casio Comput Co Ltd | インターフェイス装置 |
US6374336B1 (en) | 1997-12-24 | 2002-04-16 | Avid Technology, Inc. | Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner |
US6415373B1 (en) | 1997-12-24 | 2002-07-02 | Avid Technology, Inc. | Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner |
CA2341014A1 (en) | 1998-08-19 | 2000-03-02 | Alexander Roger Deas | A system and method for defining transforms of memory device addresses |
US6356949B1 (en) | 1999-01-29 | 2002-03-12 | Intermec Ip Corp. | Automatic data collection device that receives data output instruction from data consumer |
US6233607B1 (en) * | 1999-04-01 | 2001-05-15 | Diva Systems Corp. | Modular storage server architecture with dynamic data management |
US6609223B1 (en) | 1999-04-06 | 2003-08-19 | Kencast, Inc. | Method for packet-level fec encoding, in which on a source packet-by-source packet basis, the error correction contributions of a source packet to a plurality of wildcard packets are computed, and the source packet is transmitted thereafter |
US6571282B1 (en) | 1999-08-31 | 2003-05-27 | Accenture Llp | Block-based communication in a communication services patterns environment |
US6826711B2 (en) | 2000-02-18 | 2004-11-30 | Avamar Technologies, Inc. | System and method for data protection with multidimensional parity |
US6718361B1 (en) | 2000-04-07 | 2004-04-06 | Network Appliance Inc. | Method and apparatus for reliable and scalable distribution of data files in distributed networks |
EP1364510B1 (en) | 2000-10-26 | 2007-12-12 | Prismedia Networks, Inc. | Method and system for managing distributed content and related metadata |
US7103915B2 (en) | 2000-11-13 | 2006-09-05 | Digital Doors, Inc. | Data security system and method |
US8176563B2 (en) | 2000-11-13 | 2012-05-08 | DigitalDoors, Inc. | Data security system and method with editor |
US7146644B2 (en) | 2000-11-13 | 2006-12-05 | Digital Doors, Inc. | Data security system and method responsive to electronic attacks |
US7140044B2 (en) | 2000-11-13 | 2006-11-21 | Digital Doors, Inc. | Data security system and method for separation of user communities |
GB2369206B (en) | 2000-11-18 | 2004-11-03 | Ibm | Method for rebuilding meta-data in a data storage system and a data storage system |
US6785783B2 (en) | 2000-11-30 | 2004-08-31 | International Business Machines Corporation | NUMA system with redundant main memory architecture |
US7080101B1 (en) | 2000-12-01 | 2006-07-18 | Ncr Corp. | Method and apparatus for partitioning data for storage in a database |
US20020080888A1 (en) | 2000-12-22 | 2002-06-27 | Li Shu | Message splitting and spatially diversified message routing for increasing transmission assurance and data security over distributed networks |
WO2002065275A1 (en) | 2001-01-11 | 2002-08-22 | Yottayotta, Inc. | Storage virtualization system and methods |
US20020174295A1 (en) | 2001-01-29 | 2002-11-21 | Ulrich Thomas R. | Enhanced file system failure tolerance |
US20030037261A1 (en) | 2001-03-26 | 2003-02-20 | Ilumin Corporation | Secured content delivery system and method |
US6879596B1 (en) | 2001-04-11 | 2005-04-12 | Applied Micro Circuits Corporation | System and method for systolic array sorting of information segments |
US7024609B2 (en) | 2001-04-20 | 2006-04-04 | Kencast, Inc. | System for protecting the transmission of live data streams, and upon reception, for reconstructing the live data streams and recording them into files |
US6925515B2 (en) * | 2001-05-07 | 2005-08-02 | International Business Machines Corporation | Producer/consumer locking system for efficient replication of file data |
GB2377049A (en) | 2001-06-30 | 2002-12-31 | Hewlett Packard Co | Billing for utilisation of a data storage array |
US6944785B2 (en) | 2001-07-23 | 2005-09-13 | Network Appliance, Inc. | High-availability cluster virtual server system |
US7636724B2 (en) | 2001-08-31 | 2009-12-22 | Peerify Technologies LLC | Data storage system and method by shredding and deshredding |
US7024451B2 (en) | 2001-11-05 | 2006-04-04 | Hewlett-Packard Development Company, L.P. | System and method for maintaining consistent independent server-side state among collaborating servers |
US7003688B1 (en) | 2001-11-15 | 2006-02-21 | Xiotech Corporation | System and method for a reserved memory area shared by all redundant storage controllers |
US6748497B1 (en) * | 2001-11-20 | 2004-06-08 | Cirrus Logic, Inc. | Systems and methods for buffering memory transactions |
US7171493B2 (en) | 2001-12-19 | 2007-01-30 | The Charles Stark Draper Laboratory | Camouflage of network traffic to resist attack |
US6915522B2 (en) * | 2002-01-23 | 2005-07-05 | Intel Corporation | System and method to synchronize two or more object management systems |
EP1547252A4 (en) | 2002-07-29 | 2011-04-20 | Robert Halford | MULTIDIMENSIONAL DATA PROTECTION AND MIRRORING METHOD FOR MICROBIAL DATA |
US7051155B2 (en) | 2002-08-05 | 2006-05-23 | Sun Microsystems, Inc. | Method and system for striping data to accommodate integrity metadata |
US20040122917A1 (en) | 2002-12-18 | 2004-06-24 | Menon Jaishankar Moothedath | Distributed storage system for data-sharing among client computers running defferent operating system types |
US7251832B2 (en) | 2003-03-13 | 2007-07-31 | Drm Technologies, Llc | Secure streaming container |
US7185144B2 (en) | 2003-11-24 | 2007-02-27 | Network Appliance, Inc. | Semi-static distribution technique |
GB0308264D0 (en) | 2003-04-10 | 2003-05-14 | Ibm | Recovery from failures within data processing systems |
GB0308262D0 (en) | 2003-04-10 | 2003-05-14 | Ibm | Recovery from failures within data processing systems |
US7415115B2 (en) | 2003-05-14 | 2008-08-19 | Broadcom Corporation | Method and system for disaster recovery of data from a storage device |
EP1668486A2 (en) | 2003-08-14 | 2006-06-14 | Compellent Technologies | Virtual disk drive system and method |
US7457880B1 (en) * | 2003-09-26 | 2008-11-25 | Ximeta Technology, Inc. | System using a single host to receive and redirect all file access commands for shared data storage device from other hosts on a network |
US7899059B2 (en) | 2003-11-12 | 2011-03-01 | Agere Systems Inc. | Media delivery using quality of service differentiation within a media stream |
US8332483B2 (en) | 2003-12-15 | 2012-12-11 | International Business Machines Corporation | Apparatus, system, and method for autonomic control of grid system resources |
US7206899B2 (en) | 2003-12-29 | 2007-04-17 | Intel Corporation | Method, system, and program for managing data transfer and construction |
US7222133B1 (en) | 2004-02-05 | 2007-05-22 | Unisys Corporation | Method for reducing database recovery time |
US7210019B2 (en) * | 2004-03-05 | 2007-04-24 | Intel Corporation | Exclusive access for logical blocks |
US7240236B2 (en) | 2004-03-23 | 2007-07-03 | Archivas, Inc. | Fixed content distributed data storage using permutation ring encoding |
US7231578B2 (en) | 2004-04-02 | 2007-06-12 | Hitachi Global Storage Technologies Netherlands B.V. | Techniques for detecting and correcting errors using multiple interleave erasure pointers |
JP4446839B2 (ja) | 2004-08-30 | 2010-04-07 | 株式会社日立製作所 | ストレージ装置及びストレージ管理装置 |
US7315926B2 (en) * | 2004-09-21 | 2008-01-01 | Emc Corporation | Lock management for concurrent access to a single file from multiple data mover computers |
US20060167921A1 (en) * | 2004-11-29 | 2006-07-27 | Grebus Gary L | System and method using a distributed lock manager for notification of status changes in cluster processes |
US7680771B2 (en) | 2004-12-20 | 2010-03-16 | International Business Machines Corporation | Apparatus, system, and method for database provisioning |
US7386758B2 (en) | 2005-01-13 | 2008-06-10 | Hitachi, Ltd. | Method and apparatus for reconstructing data in object-based storage arrays |
US7672930B2 (en) | 2005-04-05 | 2010-03-02 | Wal-Mart Stores, Inc. | System and methods for facilitating a linear grid database with data organization by dimension |
US7603502B2 (en) * | 2005-04-12 | 2009-10-13 | Microsoft Corporation | Resource accessing with locking |
US7792817B2 (en) * | 2005-04-19 | 2010-09-07 | International Business Machines Corporation | System and method for managing complex relationships over distributed heterogeneous data sources |
US7865684B2 (en) * | 2005-06-27 | 2011-01-04 | Ab Initio Technology Llc | Managing message queues |
US8171101B2 (en) | 2005-09-30 | 2012-05-01 | Cleversafe, Inc. | Smart access to a dispersed data storage network |
US7953937B2 (en) | 2005-09-30 | 2011-05-31 | Cleversafe, Inc. | Systems, methods, and apparatus for subdividing data for storage in a dispersed data storage grid |
US8285878B2 (en) | 2007-10-09 | 2012-10-09 | Cleversafe, Inc. | Block based access to a dispersed data storage network |
US7904475B2 (en) | 2007-10-09 | 2011-03-08 | Cleversafe, Inc. | Virtualized data storage vaults on a dispersed data storage network |
US9026758B2 (en) | 2005-09-30 | 2015-05-05 | Cleversafe, Inc. | Memory device utilization in a dispersed storage network |
US7574579B2 (en) | 2005-09-30 | 2009-08-11 | Cleversafe, Inc. | Metadata management system for an information dispersed storage system |
US7546427B2 (en) | 2005-09-30 | 2009-06-09 | Cleversafe, Inc. | System for rebuilding dispersed data |
US7574570B2 (en) | 2005-09-30 | 2009-08-11 | Cleversafe Inc | Billing system for information dispersal system |
US7346720B2 (en) * | 2005-10-21 | 2008-03-18 | Isilon Systems, Inc. | Systems and methods for managing concurrent access requests to a shared resource |
US20070214285A1 (en) | 2006-03-08 | 2007-09-13 | Omneon Video Networks | Gateway server |
US9015440B2 (en) * | 2009-09-11 | 2015-04-21 | Micron Technology, Inc. | Autonomous memory subsystem architecture |
AU2009243439A1 (en) * | 2009-11-30 | 2011-06-16 | Canon Kabushiki Kaisha | Robust image alignment for distributed multi-view imaging systems |
US8850113B2 (en) | 2010-02-27 | 2014-09-30 | Cleversafe, Inc. | Data migration between a raid memory and a dispersed storage network memory |
US8625635B2 (en) | 2010-04-26 | 2014-01-07 | Cleversafe, Inc. | Dispersed storage network frame protocol header |
US8621580B2 (en) | 2010-05-19 | 2013-12-31 | Cleversafe, Inc. | Retrieving access information in a dispersed storage network |
US9170882B2 (en) | 2010-12-22 | 2015-10-27 | Cleversafe, Inc. | Retrieving data segments from a dispersed storage network |
US20130013798A1 (en) | 2011-07-06 | 2013-01-10 | Cleversafe, Inc. | Distribution of multi-media content to a user device |
US9213717B1 (en) * | 2011-09-28 | 2015-12-15 | Emc Corporation | Managing concurrent I/OS in file systems |
US8676851B1 (en) * | 2012-08-30 | 2014-03-18 | Google Inc. | Executing transactions in distributed storage systems |
US20140189082A1 (en) * | 2012-12-28 | 2014-07-03 | Futurewei Technologies, Inc. | Local Partitioning in a Distributed Communication System |
US9367351B1 (en) * | 2013-03-14 | 2016-06-14 | Emc Corporation | Profiling input/output behavioral characteristics in distributed infrastructure |
US9633041B2 (en) * | 2013-09-26 | 2017-04-25 | Taiwan Semiconductor Manufacturing Co., Ltd. | File block placement in a distributed file system network |
US20150172120A1 (en) * | 2013-12-12 | 2015-06-18 | Commvault Systems, Inc. | Managing non-conforming entities in information management systems, including enforcing conformance with a model entity |
US9223644B1 (en) * | 2014-02-25 | 2015-12-29 | Google Inc. | Preventing unnecessary data recovery |
-
2015
- 2015-03-04 US US14/638,654 patent/US9542239B2/en active Active
- 2015-03-04 US US14/638,575 patent/US9965336B2/en not_active Expired - Fee Related
- 2015-03-04 US US14/638,175 patent/US9612882B2/en active Active
- 2015-03-06 GB GB1619230.4A patent/GB2541581A/en not_active Withdrawn
- 2015-03-06 JP JP2016564297A patent/JP6522008B2/ja not_active Expired - Fee Related
- 2015-03-06 WO PCT/US2015/019161 patent/WO2015167665A1/en active Application Filing
- 2015-03-06 CN CN201580021723.2A patent/CN106233259B/zh active Active
-
2016
- 2016-11-15 US US15/352,188 patent/US9817611B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1666192A (zh) * | 2002-09-03 | 2005-09-07 | 富士通株式会社 | 检索处理系统、其检索服务器、客户端、检索处理方法、程序及记录介质 |
CN100418088C (zh) * | 2002-09-03 | 2008-09-10 | 富士通株式会社 | 检索处理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106233259A (zh) | 2016-12-14 |
US9965336B2 (en) | 2018-05-08 |
US9542239B2 (en) | 2017-01-10 |
JP2017518565A (ja) | 2017-07-06 |
US9817611B2 (en) | 2017-11-14 |
JP6522008B2 (ja) | 2019-05-29 |
US20150317099A1 (en) | 2015-11-05 |
US20150317205A1 (en) | 2015-11-05 |
GB2541581A (en) | 2017-02-22 |
WO2015167665A1 (en) | 2015-11-05 |
US20150319244A1 (en) | 2015-11-05 |
US20170060480A1 (en) | 2017-03-02 |
US9612882B2 (en) | 2017-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106233259B (zh) | 在分散存储网络中检索多世代存储数据的方法和系统 | |
US11636031B2 (en) | Optimized inline deduplication | |
US12069167B2 (en) | Unlocking data stored in a group of storage systems | |
EP3376361B1 (en) | Ensuring reproducibility in an artificial intelligence infrastructure | |
US10282440B2 (en) | Prioritizing rebuilding of encoded data slices | |
US10089036B2 (en) | Migrating data in a distributed storage network | |
US9767109B2 (en) | Secure data migration in a dispersed storage network | |
US8935256B2 (en) | Expanding a hierarchical dispersed storage index | |
US9841925B2 (en) | Adjusting timing of storing data in a dispersed storage network | |
CN104025010B (zh) | 存储系统中的可变长度编码 | |
US9465861B2 (en) | Retrieving indexed data from a dispersed storage network | |
US8631052B1 (en) | Efficient content meta-data collection and trace generation from deduplicated storage | |
US9826038B2 (en) | Selecting a data storage resource of a dispersed storage network | |
US10671585B2 (en) | Storing indexed data to a dispersed storage network | |
CN106575527A (zh) | 生成用于数据存储的分子编码信息 | |
CN103812939B (zh) | 一种大数据存储系统 | |
CN110720088A (zh) | 集成到大容量存储设备的可访问快速耐久存储 | |
US8667032B1 (en) | Efficient content meta-data collection and trace generation from deduplicated storage | |
US20180074903A1 (en) | Processing access requests in a dispersed storage network | |
US20210055885A1 (en) | Enhanced data access using composite data views | |
US20230081087A1 (en) | Recovering a Data Segment Using Locally Decodable Code Segments | |
US11728964B2 (en) | Performance aided data migration in a distributed storage network | |
WO2012041667A1 (en) | Enhancing data store backup times | |
CN117377941A (zh) | 使用近似基线产生数据集 | |
US20220107861A1 (en) | Updating Pointer List to Remove Reference to Stored Encoded Data Slice in Response to Delete Request |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |