在分散存储网络中一致的存储数据的制作方法

文档序号:16505208发布日期:2019-01-05 08:59阅读:171来源:国知局
在分散存储网络中一致的存储数据的制作方法

本发明的各方面一般涉及计算机网络,更具体地说,涉及数据的分散存储和数据的分布式任务处理。



背景技术:

已知计算设备可以传送数据,处理数据和/或存储数据。这样的计算设备包括无线智能电话、笔记本电脑、平板电脑、个人计算机(pc)、工作站和视频游戏设备、及每天支持数百万网络搜索、股票交易或在线购买的数据中心。总之,计算设备包括中央处理单元(cpu)、存储器系统、用户输入/输出接口、外围设备接口和互连总线结构。

如进一步已知的,计算机可以通过使用“云计算”代表计算机执行一个或多个计算功能(例如,服务、应用、算法、算术逻辑功能等)来有效地扩展其cpu。此外,对于大型服务,应用和/或功能,云计算可以由分布式方式由多个云计算资源执行,以改善完成服务、应用和/或功能的响应时间。例如,hadoop是一个开源软件框架,支持分布式应用程序,使数千台计算机能够执行应用程序。

除了云计算之外,计算机可以使用“云存储”作为其存储系统的一部分。众所周知,云存储使用户能够通过其计算机在因特网存储系统上存储文件,应用程序等。因特网储存系统可以包括raid(独立磁盘冗余阵列)系统和/或分散存储系统,其对用于存储的编码数据使用纠错方案。

已知分布式存储系统利用三阶段流程在分散存储网络(dsn)存储器中一致地写,其中三个阶段包括:

1写阶段;

2使其可用阶段;和

3最后阶段。

这三个阶段解决了可能由持有编码数据切片的不同修改的dsn的不同存储单元产生的一致性问题,其中数据被分散存储错误编码以产生编码数据切片。已知这三个阶段利用阈值方法将写过程推进到下一阶段,或者在出现冲突和错误时反转流程以维持修改存储的一致性。

因此,需要解决本领域的上述问题。



技术实现要素:

从另一方面来看,本发明提供了一种用于分散存储网络(dsn)的计算设备的方法,该方法包括:对关于将要写入dsn的存储单元的编码数据切片集的写操作,确定写操作是否是写编码数据切片集的第一实例,其中数据对象的数据段作为分散存储错误被编码到编码数据切片集中;当写操作是写编码数据切片集的第一实例时,向存储单元发送写请求集,其中写请求集包括编码数据切片集,切片名称集,以及写编码数据切片集的第一实例;接收来自至少一些存储单元的关于写请求集的多个响应;当多个响应的响应是冲突消息时,基于冲突消息更新写请求集,其中冲突消息指示编码数据切片集的至少一个编码数据切片的已有版本存储在多个存储单元的存储单元中;当写阈值数量的响应是有利的写响应时,向存储单元发送写提交请求集。

从另一方面来看,本发明提供了一种存储系统,包括第一模块,当在分散存储网络(dsn)的计算设备内操作时,第一模块使计算设备:对于关于将要写入dsn的存储单元的编码数据切片集的写操作,确定写操作是否是写编码数据切片集的第一实例,其中数据对象的数据段作为分散存储错误被编码到编码数据切片集中;当写操作是写编码数据切片集的第一实例时,向存储单元发送写请求集,其中写请求集包括编码数据切片集,切片名称集,以及写编码数据切片集的第一实例;第二模块,当在多个存储单元的存储单元内操作时,使存储单元:响应于写请求集的写请求,确定编码数据切片集的编码数据切片的已有版本是否当前被存储在存储单元中;当编码数据切片集的编码数据切片的已有版本当前存储在存储单元中时,向计算设备发送冲突消息;和第三模块,当在计算设备内操作时,使计算设备:根据冲突消息更新写请求集。

从另一方面来看,本发明提供了一种用于关于将要写入分散存储网络(dsn)的存储单元的编码数据切片集的写操作的计算机程序产品,该计算机程序产品包括:计算机可读存储介质,其可由处理电路读并存储用于由处理电路执行的指令,用于执行用于执行本发明的各个步骤的方法。

从另一方面来看,本发明提供了一种存储在计算机可读介质上并可加载到数字计算机的内部存储器中的计算机程序,包括软件代码部分,当所述程序在计算机上运行时用于执行本发明的各个步骤。

附图的简要说明

现在仅通过示例的方式参考附图描述本发明的实施例,附图中::

图1是根据本发明的分布式计算系统的实施例的示意框图。

图2是根据本发明的计算核的实施例的示意框图。

图3-5是根据本发明的分散存储网络(dsn)的实施例的示意框图。

图6是根据本发明的存储数据的例子的流程图。和

图7是根据本发明的存储数据的另一个例子的流程图。

具体实施方式

图1是分布式计算系统10的实施例的示意性框图,该分布式计算系统10包括用户设备12和/或用户设备14、分布式存储和/或任务(dst)处理单元16、分布式存储和/或任务网络(dstn)管理单元18、dst完整性处理单元20、以及分布式存储和/或任务网络(dstn)模块22。分布式计算系统10的组件经由网络24耦合,网络24可包括一个或更多无线和/或有线通信系统、一个或多个非公共内联网系统和/或公共互联网系统、和/或一个或多个局域网(lan)和/或广域网(wan)。此后,分布式计算系统10可以可互换地称为分散存储网络(dsn)。

dstn模块22包括多个分布式存储和/或任务(dst)执行单元36,其可以位于地理上不同的站点(例如,一个在芝加哥,一个在密尔沃基等)。每个dst执行单元可操作以,存储分散的错误编码的数据,和/或以分布式方式,执行数据上的一个或多个任务。任务可以是简单的功能(例如,数学函数、逻辑函数、识别函数、查找函数、搜索引擎函数、替换函数等),复杂函数(例如,压缩、人和/或计算机语言翻译、文本到语音转换、语音到文本转换等),多个简单和/或复杂函数,一个或多个算法,一个或多个应用程序等。此后,dst执行单元可以可互换地称为存储单元,并且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模块之间的通信链路(例如,有线连接,无线连接,lan连接和/或与网络24的任何其它类型的连接)。作为又一示例,接口33支持dstn管理单元18和dst完整性处理单元20中的每一个到网络24的通信链路。

分布式计算系统10可操作以支持分散存储(ds)错误编码的数据存储和检索,以支持对接收数据的分布式任务处理,和/或支持对存储数据的分布式任务处理。通常并且关于ds错误编码数据存储和检索,分布式计算系统10支持三种主要操作:存储管理,数据存储和检索以及数据存储完整性验证。根据这三个主要功能,可以对数据进行编码(例如,利用信息分散算法informationdispersalalgorithm(ida),利用分散的存储错误编码流程),分布式地存储在物理上不同的位置,并且随后以可靠和安全的方式检索。此后,分布式存储可以互换地称为分散存储。这样的系统容忍大量的故障(例如,达到故障级别,其可以大于或等于支柱宽度(pillarwidth)(例如,ida的ida宽度)减去解码阈值减去1),其源自各个存储设备(例如,dst执行单元36)故障和/或网络设备故障而不丢失数据并且不需要冗余或备份副本。此外,分布式计算系统10允许数据被无限期地并且以安全的方式存储而没有数据丢失(例如,系统非常抵抗未经授权的访问数据的尝试)。

第二主要功能(即,分布式数据存储和检索)以用户设备12-14开始和结束。例如,如果第二类型的用户设备14具有要存储在dstn模块22中的数据40,则它发送数据40通过其接口30到达dst处理单元16。接口30用于模仿传统的操作系统(os)文件系统接口(例如,网络文件系统(nfs)、闪存文件系统(ffs)、磁盘文件系统(dfs)、文件传输协议(ftp),基于web的分布式授权和版本控制(webdav)等)和/或块存储器接口(例如,小型计算机系统接口(scsi)、互联网小型计算机系统接口(iscsi)、等等)。另外,接口30可以将用户识别码(id)附加到数据40。

为了支持存储管理,dstn管理单元18执行ds管理服务。一种这样的ds管理服务包括dstn管理单元18单独地或作为用户设备组一部分的为用户设备12-14建立分布式数据存储参数(例如,库创建,分布式存储参数,安全参数,计费信息,用户简档信息等)。例如,dstn管理单元18协调用于用户设备,设备集的dstn模块22的存储器内的库(例如,与dsn的整个命名空间的一部分相关联的虚拟存储器块)的创建,或者用于公共访问并为库构建按库的分散存储(ds)错误编码参数。dstn管理单元18可以通过更新分布式计算系统10的注册表信息来促进为多个库的每个库存储ds错误编码参数。该促进包括将更新的系统注册表信息存储在dstn模块22中,用户设备12、dst处理单元16和dst完整性处理单元20的一个或多个中。

ds错误编码参数(例如,或用于编码和解码的分散存储错误编码参数)包括数据分段信息(例如,分割了多少段数据(例如,文件、文件集、数据块等),分段安全信息(例如,每段加密、压缩、完整性校验和等),错误编码信息(例如,柱/ida宽度、解码阈值、读阈值、写阈值等),切片信息(例如,将为每个数据段创建的编码数据切片的数量);切片安全信息(例如,每个编码数据切片加密、压缩、完整性校验和等)。

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之间。每个切片名称对于相应的编码数据切片是唯一的,并且包括与dsn的整个命名空间相关联的多个字段。例如,字段可以包括支柱编号/支柱索引,库标识符,与用于存储的特定文件唯一关联的对象编号,以及多个数据段的数据段标识符,其中特定文件被划分为多个数据段。例如,对应于已经从公共数据段编码的分散存储错误编码的数据切片集的切片名称集的每个切片名称,仅按照支柱编号字段的条目变化,因为其每个共享公共库标识符,公共对象编号和公共数据段标识符。

为了支持对所接收数据的分布式任务处理,分布式计算系统10具有两个主要操作:dst(分布式存储和/或任务处理)管理和对接收数据的dst执行。关于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管理,它基本上类似于dst管理,以支持对接收数据的分布式任务处理。

图2是计算核26的实施例的示意性框图,计算核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。还要注意,io设备接口模块62和/或存储器接口模块可以被集体或单独引用作为io端口。

图3-5是分散存储网络(dsn)的实施例的示意性框图,该dsn包括图1的分布式存储和任务(dst)处理单元16,图1的网络24和dst执行单元集1-n。每个dst执行单元包括图2的处理模块50和存储器88。存储器88可以利用固态存储器,磁盘驱动器存储器,光盘驱动器存储器等中的一个或多个来实现。此后,dst执行单元集可以互换地称为存储单元集。

在dsn内,dst处理单元16分散的存储错误编码数据对象的数据段以产生编码数据切片集,用于存储在dst执行单元集1-n中。随着时间的过去,所述数据对象的数据段可以被编辑或以其它方式修改,并且对于每个编辑或修改时,dst处理单元分散的存储错误编码数据段,以创建编码数据切片集。对于每个版本(例如,原来的或随后的编辑和/或修改)的编码数据切片集,每个版本分享类似的切片名称集,每个版本具有不同的修改级别(例如,修改级别0的初始版本,第一次编辑的修改级别1,等等。

在dsn中,多个用户设备可能试图在基本相同的时间编辑/修改编码数据切片集。在现有dsn中,为了保持将数据写入存储单元的并发性,写操作使用三阶段过程。当用户设备希望写编码数据片集时,无论是原始集还是修改/编辑集,用户都向存储单元发送写请求集。写请求包括编码数据切片之一及其对应的切片名称。在接收到写请求时,存储单元确定是否存在在处理中的对切片名称的另一个写请求(例如,关于来自不同用户设备的编码数据片的另一写请求)。例如,当三阶段写操作未决时,在接收到写请求并验证另一个写请求未挂起之后,存储单元锁定对编码数据片的访问,直到写操作完成。如果未锁定对编码数据切片的访问,则存储单元将其锁定以用于当前写操作,临时存储编码数据切片但不允许访问它,并发送写响应消息,指示存储单元能够处理用户的写请求。

如果用户设备从存储单元获得写阈值数量的有利写响应,则它向存储单元发送可用请求。在接收到可用请求时,存储单元使编码数据切片可用于访问,并向用户设备发送写可用响应。

当用户设备接收到存储单元的写阈值数量的有利写可用响应时,它将向存储单元发送写最终请求。在接收到写最终请求时,存储单元将新存储的编码数据切片的状态更新为编码数据切片的最新版本,释放锁定,并且可以删除编码数据切片的旧版本。

参考图3,当用户设备(例如,dst处理单元或计算设备)具有要存储在存储单元中的编码数据切片集时,它确定这是否是写编码数据切片集的第一实例。计算设备基于以下中的一个或多个进行确定:检测到写操作与新的虚拟存储库相关联,检测到最近已经随机生成与数据相关联的虚拟dsn地址,检测到数据基本上是新数据,检测到存储库基本上是空的中,解释历史访问记录,其指示写新数据的实例远远超过与执行新写操作相关联的重写已有存储数据、预定和模式的实例的数量。

当写操作是写的第一实例时,dst处理单元16经由网络24向存储单元发送写请求集1-n,其中写请求集包括编码数据切片集,切片名称集,以及写编码数据切片集的第一实例的指示。写的第一实例的指示可以包括在每个写请求内的与第一修改相关联的修改级别(例如,0或1)。或者,在每个写请求中省略修改级别指示可以指示写的第一实例。例如,dst处理单元16基于以下中的一个或多个生成切片名称集:数据的属性(例如,数据名称),请求实体的属性(例如,虚拟库从属关系),以及随机生成方法;生成写请求集以包括切片名称集,编码数据切片集(例如,a1-an),以及省略修改级别;并且经由网络24将该写切片请求集发送到dst执行单元集1-n以进行存储。

响应于写请求,存储单元确定它是否正在存储具有相同切片名称的编码数据切片的已有版本。例如,当其没有存储具有该切片名称的编码数据切片的记录时,dst执行单元1的处理模块50指示它不存储编码数据片段的已有版本。作为替代示例,如果其具有存储具有该切片名称的编码数据切片的记录时,dst执行单元1(或存储单元1)的处理模块指示它正在存储编码数据切片的已有版本。

当存储单元当前不存储编码数据切片的已有版本时,存储单元向dst处理单元16发出有利的写响应。有利的写响应指示相应的写切片请求被有利地处理,而没有由于先前存储的编码数据切片的修改的冲突。此外,存储单元使编码数据切片可用于访问。

当dst处理单元16从至少一些存储单元接收到有利的写响应(例如,写阈值)时,dst处理单元16向存储单元发出写提交请求集,以便于后续检索至少一些存储的编码数据切片。收到写提交请求后;存储单元完成写操作。在这种情况下,在三阶段写流程中,在用户设备和存储单元之间存在两次交换,而不是三次交换。

图4说明了存储数据的另一个例子。在该示例中,dst处理单元16确定用于编码数据切片集的写操作是否是写的第一实例。当写操作是第一实例时,dst处理单元16经由网络24向存储单元发送写请求集,其中写请求集包括编码数据切片集,切片名称集,以及写编码数据切片集的第一实例的指示。

在该示例中,dst处理单元16是错误的;它不是写编码数据切片集的第一实例。如图所示,每个dst执行单元1存储编码数据切片的已有版本。例如,dst执行单元1的处理模块50确定它正在存储编码数据切片的两个已有版本(修改1和2)。类似地,dst执行单元2确定它正在存储一个已有版本,并且dst执行单元n确定它还存储两个已有版本。

当这发生时,dst执行单元向dst处理单元16发送冲突响应,指示已经存储了编码数据切片的已有版本。在接收到冲突请求时,dst处理单元16确定写操作不是第一实例。这样,dst处理单元16经由网络向存储单元发出关于编码数据切片集的读请求集。在发出该读请求集之后,dst处理单元16基于来自至少一些存储单元的读响应来确定编码数据切片集的当前修改级别。例如,当dst处理单元16确定至少修改2的编码数据切片的解码阈值数量存储在dst执行单元集中时,dst处理单元16指示当前修改级别是级别2,其中接收的读响应指示存储的编码数据切片的修改级别。

在确定了当前修改级别,所述dst处理单元16发送一个新的写请求集到存储单元,其中写请求集包括编码数据切片集,切片名称集,以及下一个编码数据切片集的修改级别。例如,dst处理单元16基于当前修改级别2将下一修改级别确定为级别3,并且在写请求集中包括级别3的下一修改级别。当已经接收到写阈值数量的有利写响应时,dst处理单元16向存储单元发送可用请求集,以使得随后能够恢复编码数据切片集。

这样,当写编码数据切片集是第一实例,图3的流程是使用两次交换。如果,事实证明它不是第一实例,则使用三次交换实现图4的流程。

图5还示出了存储数据的另一个例子,其中dst处理单元16在接收冲突消息时,基于冲突消息更新写请求集。更新写请求集包括dst处理单元16基于来自一个或多个存储单元(例如,修改2)的冲突消息确定编码数据切片集的当前修改级别,更新写请求集以包括编码数据切片集的下一修改级别(例如,修改级别3),并将更新的写请求集发送到存储单元,其中更新的写请求集包括编码数据切片集,切片名称集,以及编码数据切片集的下一个修改级别。例如,dst处理单元16发送,经由网络24,对dst执行单元集1-n的更新的写请求集,其中更新的写请求集包括修改级别3。

或者,当写操作是写编码数据切片集的第一实例,并且dst处理单元16从至少一些存储单元接收有利的写响应时,并且当已经接收到写阈值数量的有利的写响应时,dst处理单元16向存储单元发送写提交请求集。

图6示出了存储数据的一个例子的流程图。特别地,提出了一种方法,用于结合图1-2、3-5和图6描述的一个或多个功能和特征。该方法开始于步骤200,其中分散存储网络(dsn)的一个或多个计算设备的计算设备,对关于将要写入dsn的存储单元的编码数据切片集的写操作,确定写操作是否是写编码切片集的第一实例,其中数据对象的数据段作为分散存储错误被编码到编码数据切片集中。该确定可以基于以下中的一个或多个:检测到写操作与新虚拟存储库相关联,检测到最近已经随机生成与数据对象相关联的虚拟dsn地址,检测到数据对象基本上是新数据,检测到存储库基本上是空的,解释历史访问记录以指示写新数据的实例远远超过与执行新写操作相关联的重写已有存储数据、预定和模式的实例的数量。当计算设备确定写操作不是写的第一实例时,该方法分支到步骤210。当计算设备确定写操作是写的第一实例时,该方法继续到步骤202。

当该写操作是写编码数据切片集的第一实例,该方法继续到步骤202,其中计算设备发送写请求集到存储单元,其中写请求集包括编码数据切片集、切片名称集、以及写编码数据切片集的第一实例的指示。写编码数据切片集的第一实例的指示包括:在写请求集的每个写请求内,提供零修改级别,在写请求集的每个写请求内,省略修改级别指示。

响应于写请求集的写请求,则该方法在步骤204继续,其中在存储单元集中的存储单元确定编码数据切片集的编码数据切片的已有版本是否当前存储在存储单元中。响应于写请求集的另一个写请求,该存储单元集中的另一个存储单元确定编码数据切片集的另一个编码数据切片的已有版本当前是否存储在另一个存储单元中。

当编码数据切片集的编码数据切片的已有版本当前存储在所述存储单元中,该方法在步骤206继续,其中所述存储单元发送冲突消息到所述计算装置。当另一个编码数据切片由另一个存储单元存储时,另一个存储单元发送另一个冲突消息,指示另一个存储单元正在存储另一个编码数据切片的已有版本。

该方法继续到步骤208,其中所述计算设备,基于所述冲突消息,更新写请求集。更新包括计算设备基于来自一个或多个存储单元的冲突消息,确定编码数据切片集的当前修改级别,更新写请求集以包括编码数据切片集的下一修改级别,并将更新的写请求集发送到存储单元,其中更新的写请求集包括编码数据切片集,切片名称集和编码数据切片集的下一修改级别。

可选地,当写操作是写编码数据切片的第一实例时,计算设备从至少一些存储单元,接收有利写响应,并且当已经接收到写阈值数量的有利的写响应时,计算设备向存储单元发送写提交请求集。

当写操作不是写编码数据切片集的第一实例时,该方法在步骤210继续,其中计算设备向存储单元发送关于编码数据切片集的读请求集。该方法在步骤212继续,其中计算设备基于来自至少一些存储单元的读响应(例如,下一修改级别)来确定编码数据切片集的当前修改级别。该方法在步骤214继续,其中计算设备将写请求集发送到存储单元,其中写请求集包括编码数据切片集,切片名称集以及编码数据切片的下一个修改级别。当已经接收到写阈值数量的有利写响应时,该方法在步骤216继续,其中计算设备向存储单元发送写提交请求集。

与所述计算装置和所述存储单元结合的上述的方法可以可选地由分散存储网络的其它模块或由其它设备执行。例如,计算设备和存储单元的第一模块,第二模块,第三模块,第四模块等的任何组合可以执行上述方法。此外,非易失性计算机可读的存储操作指令的至少一个存储器部分(例如,第一存储器部分,第二存储器部分,第三存储器部分,第四存储器部分,第五存储器部分,第六存储器部分等)可以,当由一个或多个计算设备的一个或多个处理模块和/或由分散存储网络(dsn)的存储单元执行时,导致计算设备和/或存储单元中的一个或多个执行上述方法中的任何步骤。

图7示出存储数据的另一示例的流程图。特别地,提出了一种方法,用于结合图1-2、3-5和图7描述的一个或多个功能和特征。该方法开始于步骤230,其中分散存储网络(dsn)的一个或多个计算设备的计算设备的处理模块,用于对关于将要写入dsn的存储单元的编码数据切片集的写操作,确定写操作是否是写编码数据切片集的第一实例。其中数据对象的数据段作为分散存储错误被编码到编码数据切片集合中。当写操作不是写编码数据切片集的第一实例时,该方法分支到步骤240。当写操作是第一实例时,该方法继续到步骤232。

当该写操作是写编码数据切片集的第一实例,该方法继续到步骤232,其中处理模块发送写请求集到存储单元,其中写请求集包括编码数据切片集,切片名称集,以及写编码数据切片集的第一实例的指示。该方法在步骤234继续,其中处理模块从至少一些存储单元接收关于写请求集的响应。当没有响应包括冲突消息时,该方法分支到步骤238。当至少一个响应包括冲突消息时,该方法到步骤236继续。

当多个响应的响应是冲突消息时,该方法在步骤236继续,其中处理模块基于冲突消息更新写请求集,其中冲突消息指示编码数据切片集的至少一个编码数据切片的已有版本存储在存储单元集的存储单元存储中。更新写请求集包括基于来自一个或多个存储单元的冲突消息处理模块确定编码数据切片集的当前修改级别,更新写请求集以包括编码数据切片集的下一修改级别,并向存储单元发送更新的写请求集,其中更新的写请求集包括编码数据切片集、切片名称集,和编码数据切片集的下一修改级别。当没有响应包括冲突消息并且当写阈值数量的响应是有利的写响应时,该方法在步骤238继续,其中处理模块向存储单元发送写提交请求集。

当该写操作不是写编码数据切片集的第一实例时,该方法在步骤240继续,其中该处理模块向存储单元发送关于编码数据切片集的读请求集。或者,处理模块向存储单元发送关于编码数据切片集的切片名称的列表请求集。该方法在步骤242继续,其中处理模块基于来自至少一些存储单元的读响应(例如,或者替代地,来自列表响应)来确定编码数据切片集的当前修改级别。

该方法继续在步骤244继续,其中处理模块发送写请求集到存储单元,其中写请求集包括编码数据切片集,切片名称名字集,和编码数据切片集的下一修改级别。当已经接收到写阈值数量的有利写响应时,该方法在步骤246继续,其中处理模块向存储单元发送写提交请求集。

结合处理模块,上述方法可以替代地通过在分散存储网络的其它模块或通过其它设备来执行。例如,处理模块的第一模块,第二模块,第三模块,第四模块等的任何组合执行上述方法。此外,至少一个存储器部分(例如,非易失性计算机可读存储介质和/或计算机可读存储设备的第一存储器部分,第二存储器部分,第三存储器部分,第四存储器部分,第五存储器部分,第六存储器部分等)存储操作指令,当由分散存储网络(dsn)的一个或多个处理模块执行时,可以使一个或多个计算设备执行上述方法步骤的任意一个和全部。

如本文可能使用的,术语“基本上”和“大致”为其对应的术语和/或项目之间的相对性提供了行业可接受的容差。这种业界可接受的容差范围从小于百分之一到百分之五十,并且对应于但不限于元件值,集成电路工艺变化,温度变化,上升和下降时间和/或热噪声。项目之间的这种相关性的范围从几个百分点的差异到数量级差异。如本文中还可以使用的,术语“可操作地耦合到”,“耦合到”和/或“耦合”包括项目之间的直接耦合和/或项目之间通过中间项目(例如,项目,包括但不限于组件,元件,电路和/或模块)的间接耦合。其中,对于间接耦合,中间项不会修改信号的信息,但可以调整其当前电平,电压电平和/或功率电平。如本文中可进一步使用的,推断的耦合(即,其中一个元件通过推断耦合到另一个元件)包括以与“耦合到”相同的方式在两个项目之间的直接和间接耦合。如本文中甚至可以进一步使用的,术语“可操作地”或“可操作地耦合到”指示项目包括以下中的一个或多个:电源连接,输入,输出等,以在激活时执行一个或多个其相应的功能,并且还可以包括推断的耦合到一个或多个其它项目。如本文中还可进一步使用的,术语“与......相关联”包括分开的项目的直接和/或间接耦合和/或一个项目嵌入在另一项目中。如本文可能使用的,术语“有利地比较”表示两个或更多个项目、信号等之间的比较提供了期望的关系。例如,当期望的关系是信号1具有比信号2更大的幅度时,当信号1的幅度大于信号2的幅度或者当信号2的幅度小于信号1的幅度时,可以实现有利的比较。

如本文还可使用的,术语“处理模块”,“处理电路”和/或“处理单元”可以是单个处理设备或多个处理设备。这种处理装置可以是微处理器,微控制器,数字信号处理器,微机,中央处理单元,现场可编程门阵列,可编程逻辑设备,状态机,逻辑电路,模拟电路,数字电路和/或基于电路和/或操作指令的硬编码来操纵信号(模拟和/或数字)的任何设备。处理模块,模块,处理电路和/或处理单元可以是或者进一步包括存储器和/或集成存储器元件,其可以是单个存储器设备,多个存储器设备和/或另一处理模块,模块,处理电路和/或处理单元的嵌入式电路。这样的存储器设备可以是只读存储器,随机存取存储器,易失性存储器,非易失性存储器,静态存储器,动态存储器,闪存,高速缓冲存储器和/或存储数字信息的任何设备。注意,如果是处理模块,模块,处理电路,和/或处理单元包括一个以上的处理设备,处理设备可以中心的位于(例如,经由有线和/或无线总线结构直接耦合在一起)或者可以分布式的位于(例如,通过局域网和/或广域网间接耦合的云计算)。进一步注意,如果处理模块,模块,处理电路和/或处理单元经由状态机,模拟电路,数字电路和/或逻辑电路实现其一个或多个功能,则存储器和/或存储器元件存储相应的操作指令可以嵌入在包括状态机,模拟电路,数字电路和/或逻辑电路的电路内或外部。还要注意,存储元件可以存储,处理模块,模块,处理电路和/或处理单元执行与一个或多个图中所示的至少一些步骤和/或功能相对应的硬编码和/或操作指令。这种存储器件或存储元件可以包括在制品中。

上述本发明的描述借助方法步骤示例指定的功能及其关系的性能。为了便于描述,这里任意定义了这些功能构建块和方法步骤的边界和顺序。只要适当地执行指定的函数和关系,就可以定义替代边界和序列。因此,任何这样的替代边界或序列都在要求保护的本发明的范围内。此外,为了便于描述,这些功能构建块的边界已被任意定义。只要适当地执行某些重要功能,就可以定义替代边界。类似地,流程图块可能被任意定义以说明某些重要功能。在使用的范围内,流程图块边界和序列可以另外定义,并且仍然执行某些重要功能。因此,功能构建块和流程图块和序列的这种替代定义在要求保护的本发明的范围内。本领域普通技术人员还将认识到,本文中的功能构建块和其它说明性块,模块和组件可以如图所示实现,或者由分立组件,专用集成电路,执行适当软件的处理器等,或其集合,实现。

还可以至少部分地根据一个或多个实施例描述本发明。这里使用本发明的实施例来说明本发明,其一个方面,其特征,概念和/或其示例。体现本发明的装置,制品,机器和/或过程的物理实施例可包括参考一个或多个所讨论的实施例描述的特征,概念,示例等的一个或多个方面。此外,从图到图,实施例可以包含相同或类似命名的功能,步骤,模块等,其可以使用相同或不同的附图标记,并且因此,功能,步骤,模块等可以是相同或相似的或不同的功能,步骤,模块等。

除非特别声明相反,在任何多个附图中的附图所呈现的到/从,和/或之间的信号,可以是模拟的或数字的,连续时间或离散时间的,以及单端或差分。例如,如果信号路径显示为单端路径,则它还表示差分信号路径。类似地,如果信号路径显示为差分路径,则它还表示单端信号路径。虽然本文描述了一个或多个特定体系结构,但是同样可以实现其它体系结构,其使用本领域普通技术人员认识到的未明确示出的一个或多个数据总线,元件之间的直接连接,和/或其它元件之间的间接耦合。

该术语“模块”在本发明的各种实施例的描述中使用。模块包括处理模块,功能块,硬件和/或存储在存储器上的软件,用于执行如本文所述的一个或多个功能。注意,如果模块是通过硬件实现的,则硬件可以独立操作和/或与软件和/或固件一起操作。如这里所使用的,模块可以包含一个或多个子模块,每个子模块可以是一个或多个模块。

尽管已经在本文中明确描述的各种功能和本发明的特征的特定集合,但是这些特征和功能的其它集合也是可能的。本发明不受本文公开的具体实施例的限制,并且明确地包含这些其它集合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1