操纵分布式一致性协议以识别期望的存储单元集的制作方法

文档序号:17123633发布日期:2019-03-16 00:05阅读:273来源:国知局
操纵分布式一致性协议以识别期望的存储单元集的制作方法

本发明一般地涉及计算机网络,更具体地,涉及分散错误编码的数据。



背景技术:

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

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

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

在包括多个存储单元的分散存储系统中,存在这样的情况:计算装置写入特定存储单元集而不是其他存储单元集更高效,更快速和/或更可靠。在利用负载容量平衡存储协议的分散存储系统中,通常不允许选择特定的存储单元集。因此,为计算装置分配一组要写入的存储单元,其对于计算装置可能不是最有效,最快或最可靠的。



技术实现要素:

根据一个方面,提供了一种方法,包括:由分散存储网络(dsn)的计算装置获得用于在dsn的存储器中存储的多个编码数据片集,其中dsn的存储器包括位于遍布地理区域的多个存储单元池,其中数据对象被划分成多个数据段,并且其中所述多个数据段被分散存储错误编码到所述多个编码数据片集中;由计算装置识别在多个用于存储多个编码数据片集的存储单元池内的期望的存储单元集;由计算装置基于期望的存储单元集和分布式一致性协议(dap)生成特定的源名称,其中,所述dap基于片标识符和多个存储映射系数识别所述多个存储单元池的存储单元集,以及其中,当dsn内的装置执行dap时,所述装置利用特定源名称作为片标识符以识别期望的存储单元集;由计算装置生成用于多个编码数据片集的多个片名称集,其中所述多个片名称集包括特定源名称;和由计算装置根据所述多个片名称集向关于多个编码数据片集的期望存储单元集发送多个写入请求集。

根据另一方面,提供了一种计算机可读存储器装置,包括:存储可操作指令的第一存储器元件,所述可操作指令在由分散存储网络(dsn)的计算装置执行时,其使计算装置:获得用于在dsn的存储器中存储的多个编码数据片集,其中dsn的存储器包括位于遍布地理区域的多个存储单元池,其中数据对象被划分成多个数据段,并且其中所述多个数据段被分散存储错误编码到所述多个编码数据片集中;以及识别在多个用于存储多个编码数据片集的存储单元池内的期望的存储单元集;存储可操作指令的第二存储元件,所述可操作指令在由计算装置执行时使计算装置:基于期望的存储单元集和分布式一致性协议(dap)生成特定的源名称,其中所述dap基于片标识符和多个存储映射系数识别所述多个存储单元池的存储单元集,以及其中,当dsn内的装置执行dap时,所述装置利用特定源名称作为片标识符以识别期望的存储单元集;以及生成用于多个编码数据片集的多个片名称集,其中所述多个片名称集包括特定源名称;以及存储可操作指令的第三存储元件,所述可操作指令在由计算装置执行时使计算装置:根据所述多个片名称集向关于多个编码数据片集的期望存储单元集发送多个写入请求集。

根据另一方面,提供了一种分散存储网络(dsn)的计算装置,其中,所述计算装置包括:接口;存储器;和可操作地耦合到存储器和接口的处理模块,其中所述处理模块可操作以:获得用于在dsn的存储器中存储的多个编码数据片集,其中dsn的存储器包括位于遍布地理区域的多个存储单元池,其中数据对象被划分成多个数据段,并且其中所述多个数据段被分散存储错误编码到所述多个编码数据片集中;识别在多个用于存储多个编码数据片集的存储单元池内的期望的存储单元集;基于期望的存储单元集和分布式一致性协议(dap)生成特定的源名称,其中,所述dap基于片标识符和多个存储映射系数识别所述多个存储单元池的存储单元集,以及其中,当dsn内的装置执行dap时,所述装置利用特定源名称作为片标识符以识别期望的存储单元集;生成用于多个编码数据片集的多个片名称集,其中所述多个片名称集包括特定源名称;和根据所述多个片名称集向关于多个编码数据片集的期望的存储单元集发送多个写入请求集。

附图说明

现在将仅通过示例并参考以下附图来描述本发明的优选实施例:

图1是根据本发明优选实施例的分散或分布式存储网络(dsn)的实施例的示意性框图。

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

图3是根据本发明优选实施例的数据的分散存储错误编码的示例的示意性框图。

图4是根据本发明优选实施例的错误编码功能的一般例子的示意性框图。

图5是根据本发明优选实施例的错误编码功能的具体例子的示意性框图。

图6是根据本发明优选实施例的编码数据片(eds)的片(slice)名称的示例的示意性框图。

图7是根据本发明优选实施例的数据的分散存储错误解码的示例的示意性框图。

图8是根据本发明优选实施例的错误解码功能的一般例子的示意性框图。

图9是根据本发明优选实施例的分散或分布式一致性协议(dap)的实施例的示意性框图。

图10是根据本发明优选实施例的创建多个切片集的示例的示意性框图。

图11是根据本发明优选实施例的存储库(vault)的示例的示意性框图;和

图12是根据本发明优选实施例的操纵dap以识别期望的存储单元集的方法的示例的逻辑图。

具体实施方式

图1是分散的或分布式存储网络(dsn)10的实施例的示意性框图,该dsn包括多个计算装置12-16,管理单元18,完整性处理单元20和dsn存储器22。dsn10的组件耦合到网络24,网络24可以包括一个或多个无线和/或有线通信系统;一个或多个非公共内联网系统和/或公共互联网系统;和/或一个或多个局域网(lan)和/或广域网(wan)。

dsn存储器22包括多个存储单元36,其可以位于地理上不同的站点(例如,芝加哥的一个站点、密尔沃基的一个站点等),公共站点或其组合。例如,如果dsn存储器22包括八个存储单元36,每个存储单元位于不同的站点。作为另一示例,如果dsn存储器22包括八个存储单元36,所有八个存储单元都位于相同的站点。作为又一示例,如果dsn存储器22包括八个存储单元36,第一对存储单元位于第一公共站点,第二对存储单元位于第二公共站点,第三对存储单元位于第三公共站点,以及第四对存储单元位于第四公共站点。注意,dsn存储器22可以包括多于或少于八个存储单元36。进一步注意,每个存储单元36包括计算核心(如图2所示,或其组件)和用于存储分散的错误编码数据的多个存储器装置。

计算装置12-16,管理单元18和完整性处理单元20的每一个包括计算核心26,其包括网络接口30-33。计算装置12-16每个可以是便携式计算装置和/或固定计算装置。便携式计算装置可以是社交网络装置,游戏装置,手机,智能电话,数字助理,数字音乐播放器,数字视频播放器,膝上型计算机,手持式计算机,平板电脑,视频游戏控制器和/或包括计算核心的任何其他便携式装置。固定计算装置可以是计算机(pc),计算机服务器,有线机顶盒,卫星接收器,电视机,打印机,传真机,家庭娱乐装置,视频游戏控制台和/或任何类型的家庭或办公室计算装置。注意,管理单元18和完整性处理单元20中的每一个可以是单独的计算装置,可以是公共计算装置,和/或可以集成到一个或多个计算装置12-16中和/或集成到一个或多个存储单元36。

每个接口30、32和33包括用于间接和/或直接经由网络24支持一个或多个通信链路的软件和硬件。例如,接口30支持计算装置14和16之间的通信链路(例如,有线,无线,直接,经由lan,经由网络24等)。作为另一示例,接口32支持计算装置12和16以及dsn存储器22之间的通信链路(例如,有线连接,无线连接,lan连接和/或到/来自网络24的任何其他类型的连接)。作为又一示例,接口33支持用于管理单元18和完整性处理单元20的每一个到网络24的通信链路。

计算装置12和16包括分散存储(ds)客户端模块34,如随后参考图3-8中的一个或多个所描述的,其使得计算装置能够分散存储错误编码和解码数据(例如,数据40)。在该示例实施例中,计算装置16用作计算装置14的分散存储处理代理。在该角色中,计算装置16代表计算装置14分散存储错误编码和解码数据。使用分散存储错误编码和解码,dsn10容忍大量存储单元故障(故障的数量基于分散存储错误编码功能的参数)而不丢失数据并且不需要数据的冗余或备份副本。此外,dsn10无限期地存储数据而没有数据丢失并且以安全的方式存储(例如,系统非常抵抗未授权的访问数据的尝试)。

在操作中,管理单元18执行ds管理服务。例如,管理单元18单独地或作为一组用户装置的一部分为计算装置12-14建立分布式数据存储参数(例如,库创建,分布式存储参数,安全参数,计费信息,用户简档信息等)。作为特定示例,管理单元18协调dsn存储器22内的用于用户设备,一组设备或用于公共访问的库(例如,与dsn的整个命名空间的一部分相关联的虚拟存储块)的创建并且建立用于库的每个库的分散存储(ds)错误编码参数。管理单元18通过更新dsn10的注册表信息来促进每个库的ds错误编码参数的存储,其中注册表信息可以存储在dsn存储器22,计算装置12-16,管理单元18和/或完整性处理单元20中。

管理单元18在本地存储器中和/或在dsn存储器22的存储器内创建和存储用户简档信息(例如,访问控制列表(acl))。用户简档信息包括认证信息,许可和/或安全参数。安全参数可以包括加密/解密方案,一个或多个加密密钥,密钥生成方案和/或数据编码/解码方案。

管理单元18为特定用户,用户组,库访问,公共库访问等创建计费信息。例如,管理单元18跟踪用户访问非公共库和/或公共库的次数,其可用于生成按访问计费信息。在另一实例中,管理单元18跟踪由用户装置和/或用户组存储和/或检索的数据量,其可用于生成每数据量的计费信息。

作为另一示例,管理单元18执行网络操作,网络管理和/或网络维护。网络操作包括验证用户数据分配请求(例如,读取和/或写入请求),管理库的创建,为用户装置建立认证凭证(credentials),向/从dsn10添加/删除组件(例如,用户装置,存储单元和/或具有ds客户端模块34的计算装置),和/或为存储单元36建立认证凭证。网络管理包括监视设备和/或故障单元,维护库信息,确定装置和/或单元激活状态,确定装置和/或单元加载,和/或确定影响dsn10的性能级别的任何其他系统级操作。网络维护包括促进替换,升级,修复和/或扩展dsn10的装置和/或单元。

完整性处理单元20执行“坏(bad)”或丢失编码数据片的重建。在高级别,完整性处理单元20通过周期性地尝试从dsn存储器22检索/列出编码数据片和/或编码数据片的片名称来执行重建。对于检索到的编码切片,检查它们由于数据损坏,过期版本等的错误。如果片包含错误,则将其标记为“坏”切片。对于未接收和/或未列出的编码数据片,它们被标记为丢失切片。随后使用被认为是良好片的其他检索的编码数据片来重建坏的和/或丢失的片以产生重建的片。重建的片存储在dsn存储器22中。

图2是计算核心26的实施例的示意性框图,其包括处理模块50,存储器控制器52,主存储器54,视频图形处理单元55,输入/输出(io)控制器56,外围组件互连(pci)接口58,io接口模块60,至少一个io装置接口模块62,只读存储器(rom)基本输入输出系统(bios)64,以及一个或多个存储器接口模块。一个或多个存储器接口模块包括通用串行总线(usb)接口模块66,主机总线适配器(hba)接口模块68,网络接口模块70,闪存接口模块72,硬盘驱动器接口模块74和dsn接口模块76中的一个或多个。

dsn接口模块76的功能是模拟传统操作系统(os)文件系统接口(例如,网络文件系统(nfs),闪存文件系统(ffs),磁盘文件系统(dfs),文件传输协议(ftp)),基于web的分布式创作和版本控制(webdav)等)和/或块存储器接口(例如,小型计算机系统接口(scsi),因特网小型计算机系统接口(iscsi)等)。dsn接口模块76和/或网络接口模块70可作为图1的接口30-33中的一个或多个的功能。注意,io装置接口模块62和/或存储器接口模块66-76可以是集体的或单个称为io端口。

图3是数据的分散存储错误编码的示例的示意性框图。当计算装置12或16具有要存储的数据时,它根据分散存储错误编码过程基于分散存储错误编码参数对数据进行分散存储错误编码。分散存储错误编码参数包括编码功能(例如,信息分散算法、reed-solomon、cauchyreed-solomon、系统编码、非系统编码、在线代码等),数据分段协议(例如,数据段大小、固定、变量等)和每个数据段编码值。每个数据段编码值包括每个数据段编码(即,在编码数据片集中)的编码数据片的总数或支柱(pillar)宽,数量(t);恢复数据段所需要的编码数据片集的编码数据片的解码阈值数(d);编码数据片的读取阈值数量(r),以指示要从存储器读取的用于解码数据段的每集编码数据片的数量;和/或写入阈值数量(w),以指示在编码数据段被认为已被正确存储之前必须准确存储的每集编码数据片的数量。分散存储错误编码参数还可以包括切片信息(例如,将为每个数据段创建的编码数据片的数量)和/或片安全信息(例如,每编码数据片加密,压缩,完整性校验和等)。

在本示例中,已选择cauchyreed-solomon作为编码函数(图4中示出了一般示例,并且图5中示出了具体示例);数据分段协议是将数据对象划分为固定大小的数据段;每个数据段编码值包括:支柱宽度为5,解码阈值为3,读取阈值为4,写入阈值为4。根据数据分段协议,计算装置12或16划分数据(例如,文件(例如,文本,视频,音频等),数据对象或其他数据排列)到多个固定大小的数据段(例如,在千字节到tera字节或更多范围内的固定大小的1到y)。创建的数据段的数量取决于数据的大小和数据分段协议。

然后,计算装置12或16使用所选择的编码函数(例如,cauchyreed-solomon)对数据段进行分散存储错误编码,以产生编码数据片集。图4示出了通用的cauchyreed-solomon编码函数,其包括编码矩阵(em),数据矩阵(dm)和编码后的(coded)矩阵(cm)。编码矩阵(em)的大小取决于每个数据段编码值所选择的支柱宽度数(t)和解码阈值数(d)。为了产生数据矩阵(dm),数据段被分成多个数据块,数据块被排列成d行,每行z个数据块。注意,z是从数据段创建的数据块的数量和解码阈值数(d)的函数。通过矩阵将数据矩阵乘以编码矩阵来产生编码后的矩阵。

图5示出了cauchyreed-solomon编码的具体示例,其中柱号(t)为5并且解码阈值数量为3。在该示例中,第一数据段被分成12个数据块(d1-d12)。编码后的矩阵包括五行编码后的数据块,其中第一行x11-x14对应于第一编码数据片(eds1_1),第二行x21-x24对应于第二编码数据片(eds2_1),x31-x34的第三行对应于第三编码数据片(eds3_1),第四行x41-x44对应于第四编码数据片(eds4_1),第五行x51-x54对应于第五行编码数据片(eds5_1)。注意,eds指定的第二个数字对应于数据段号。

返回到图3的讨论,计算装置还为该编码数据片集中的每个编码数据片(eds)创建片名称(sn)。用于片名称78的典型格式如图6所示。如图所示,片名称(sn)78包括编码数据片的支柱编号(例如,1-t之一),数据段编号(例如,1-y之一,库标识符(id),数据对象标识符(id),还可以包括编码数据片的修订级别信息。片名称用作编码数据片的dsn地址的至少一部分,用于从dsn存储器22存储和检索。

作为编码的结果,计算装置12或16产生多个编码数据片集,这些编码数据片以其各自的片名称提供给存储单元用于存储。如图所示,第一编码数据片集包括eds1_1至eds5_1,并且第一片名称集包括sn1_1至sn5_1,并且最后一个编码数据片集包括eds1_y至eds5_y以及最后一个片名称集包括sn1_y到sn5_y。

图7是在图4的示例中被分散存储错误编码和存储的数据对象的分散存储错误解码的示例的示意性框图。在该示例中,计算设备12或16从存储单元检索每个数据段的至少解码阈值数量的编码数据片。作为特定示例,计算装置检索读取阈值数量的编码数据片。

为了从解码阈值数量的编码数据片恢复数据段,计算装置使用如图8所示的解码功能。如图所示,解码功能基本上是图4的编码功能的反转。编码后的(coded)矩阵包括解码(decode)阈值行数(例如,在该示例中为3)和编码(encoding)矩阵的反转中的解码(decode)矩阵,其包括编码后的(coded)矩阵的对应行。例如,如果编码后的(coded)矩阵包括行1,2和4,则编码(encoding)矩阵被缩减为行1,2和4,然后被反转以产生解码(decode)矩阵。

图9是分散的或分布式一致性协议(dap)80的实施例的示意性框图,其可由计算装置,存储单元和/或dsn的任何其他装置或单元实现以确定存储编码数据片的位置或在何处找到存储的编码数据片。dap80包括多个功能评级模块81。每个功能评级模块81包括确定性功能83,标准化功能(normalizingfunction)85和评分功能87。

每个功能评级模块81接收片标识符82和存储池(sp)系数(例如,第一功能评级模块81-1接收sp1系数“a”和b)作为输入。基于输入,其中sp系数对于每个功能评级模块81是不同的,每个功能评级模块81生成唯一分数93(例如,字母数字值,数值等)。排名功能84接收唯一分数93并基于排序功能(例如,从最高到最低,从最低到最高,按字母顺序等)对它们进行排序,然后选择一个作为所选存储池86。注意,存储池包括一个或多个存储单元集。进一步注意,切片标识符82对应于片名称或片名称集的公共属性。例如,对于编码数据片集,片标识符82指定数据段号,库id和数据对象id,但是保留开端即支柱号。作为另一示例,片标识符82指定片名称的范围(例如,00000000到ffffffff)。

作为具体示例,第一功能评级模块81-1接收用于dsn的存储池1的片标识符82和sp系数。sp系数包括第一系数(例如,“a”)和第二系数(例如,“b”)。例如,第一系数是用于对应存储池的唯一标识符(例如,sp1系数“a”的sp#1的id)和第二系数是用于存储池的加权因子。导出加权因子以确保随着时间的推移,数据基于存储池内的存储单元的能力以公平和分布的方式存储在存储池中。

例如,加权因子包括任意偏差,其将选择的比例调整到关联位置,使得源名称将被映射到该位置的概率等于位置权重除以所有比较位置的所有位置权重之和(例如,位置对应于存储单元)。作为特定示例,每个存储池与基于存储容量的位置权重因子相关联,使得具有更多存储容量的存储池具有比具有更少存储容量的存储池更高的位置加权因子。

确定性函数83,可以是散列函数,基于散列的消息认证码函数,掩码生成函数,循环冗余码函数,多个位置的散列模块,一致散列,交会散列,和/或海绵函数,对片标识符82和第一sp系数(例如,su1系数“a”)的组合和/或级联(例如,添加,追加,交织)执行确定性函数以产生临时结果89。

归一化函数85对中间结果89进行归一化以产生归一化中间结果91。例如,归一化函数85将中间结果89除以确定性函数83的多个可能的输出排列以产生归一化的中间结果。例如,如果中间结果为4,325(十进制)且可能的输出排列数为10,000,则归一化结果为0.4325。

评分函数87对归一化结果91执行数学函数以产生分数93。数学函数可以是除法,乘法,加法,减法,其组合和/或任何数学运算。例如,评分函数将第二sp系数(例如,sp1系数“b”)除以归一化结果的负对数(例如,ey=x和/或ln(x)=y)。例如,如果第二sp系数是17.5并且归一化结果的负对数是1.5411(例如,e(0.4235)),则得分是11.3555。

排名功能84从每个功能评级模块81接收评分93,并命令它们产生存储池的排名。例如,如果订购是从最高到最低并且dsn中有五个存储单元,则排名功能评估五个存储单元的得分以将它们按排名顺序排列。根据排名,排名模块84选择存储池86中的一个,存储池86是用于编码数据片集的目标。

dap80还可用于识别存储单元内的存储单元集,单个存储单元和/或存储器装置。为了实现不同的输出结果,根据期望的位置信息改变系数。dap80还可以输出分数的排序顺序。

图10是创建多个片集的示例的示意性框图。多个编码数据片(edss)集的每个对应于数据对象,数据对象的一部分或多个数据对象的编码,其中数据对象是文件,文本,数据,数字信息等中的一个或多个。例如,突出显示的多个编码数据片对应于具有数据标识符“a2”的数据对象。

每组编码数据片的每个编码数据片由其片名称唯一地标识,其也用作用于存储编码数据片的dsn地址的至少一部分。如图所示,edss集包括eds1_1_1_a1到eds5_1_1_a1。eds编号包括支柱编号,数据段编号,库id和数据对象id。因此,对于eds1_1_1_a1,它是数据对象“a1”的第一数据段的第一个eds,并且将被存储或存储在库1中。注意,库是由dsn的存储单元支持的逻辑存储器容器。可以将库分配给一个或多个用户计算装置。

如进一步所示,另外多个编码数据片集存储在用于数据对象“b1”的库2中。有y个edss集,其中y对应于通过分割数据对象创建的数据段的数量。数据对象“b1”的最后一个edss集包括eds1_y_2_b1到eds5_y_2_b1。因此,对于eds1_y_2_b1,它是数据对象“b1”的最后数据段“y”的第一个eds,并且将被存储或存储在库2中。

图11是支持一个或多个存储库的多个存储池(例如,池1到池n)的示例的示意性框图。每个存储池(例如,1到n)包括一个或多个存储单元集,其中存储单元集中的存储单元的数量对应于它存储的编码数据片集的柱宽数量。例如,存储池1和存储池2每个包括七个存储单元,存储池n包括十二个存储单元。请注意,存储池可以具有比图示的更多或更少的存储单元,并且从存储池到存储池可以具有不同数量的存储单元。

在该示例中,存储池1到n支持三个库(库1,库2和库3)。库1和2使用五个存储单元并跨越多个存储池。库3使用七个存储单元,并仅在存储池“n”中。库内的存储单元的数量对应于支柱宽度数,对于库1和2,其为五,对于该示例中的库3为七。注意,存储池可以具有多行存储单元,其中su#1表示一组存储单元,每个存储单元对应于第一支柱编号;su#2表示第二多个存储单元,每个存储单元对应于第二支柱编号;等等。例如,标记为存储池1的存储单元su#1的框表示多个存储单元。

dsn的每个装置(例如,计算装置12-16,管理单元18,完整性处理单元20,存储单元)可以包括如图9所示的分布式一致性协议80。dap80使用片标识符(例如,片名称和/或其一个或多个公共元素(例如,支柱号,数据段号,库id和/或数据对象id)),以识别一个或多个编码数据片集,存储单元集或池。关于图11的三个多个编码数据片(edss)集,dap80大致相等地在整个dsn存储器中(例如,在各种存储单元中)分配编码数据片集。

计算装置可以以存储单元集为目标以存储其编码数据片,因为从计算装置的角度来看,与通过dap分配的集合相比,它可以更有效,可靠和/或更快地写入目标存储单元集。如参考图12更详细描述的,计算装置可以操纵dap,使得dap为其分配期望的存储单元集。为此,计算装置创建特定片标识符(例如,特定源名称)而不是包括一个或多个随机生成的组件(例如,数据对象id)。

随着时间的推移,如果许多计算装置操纵dap以获得其期望的存储单元集,则可能发生存储不平衡。存储单元可以至少在某种程度上校正存储不平衡(例如,dap不平衡)。例如,存储单元启动对dap系数(例如,存储映射系数)的改变,这将使存储在计算装置的期望存储单元集中的一些编码数据切片到其他存储单元。将参考图12更详细地讨论这一点。

图12是操纵分布式一致性协议(dap)以识别期望的存储单元集的方法的示例的逻辑图。该方法开始于步骤100,其中分散存储网络的计算设备获得(例如,接收,创建等)多个编码数据片集以存储在dsn的存储器中(例如,dsn存储器包括多个存储单元池(例如,池包括一个或多个存储单元集),其位于整个地理区域中)。

该方法在步骤102继续,其中计算装置识别多个存储单元池内的期望的存储单元集,用于存储多个编码数据片集。例如,计算装置识别具有期望写入速度的多个存储单元池内的期望存储单元集(例如,数据速率和写入延迟优于dap识别的存储单元集)。作为另一示例,计算装置将期望的存储单元集识别为具有期望效率的集(例如,对于存储的大多数编码数据片合,及时地满足并超过写入阈值)。作为又一示例,计算装置将期望的存储单元集识别为具有期望可靠性的集合(例如,具有至少可用于存储编码数据片的写入阈值数量的存储单元的一致性)。

计算装置识别期望的存储单元集的方式可以以各种方式完成。例如,计算装置执行查找功能(例如,执行查找功能以识别该集)。作为另一示例,计算装置启动查询,其测试期望的写入速度,期望的效率和/或期望的可靠性并且从其接收响应。作为另一示例,计算装置访问历史记录,其在写入dsn的存储单元集时跟踪计算装置的写入速度,效率和/或可靠性数据。根据历史记录,计算装置选择具有期望写入特征(例如,期望写入速度,期望效率和/或期望可靠性)的存储单元集。作为又一示例,计算装置访问查找表以识别所述集。

所述方法在步骤104继续,其中计算装置为dap生成特定源名称(例如,与库id组合的特定数据对象id)以识别期望的存储单元集。例如,计算装置基于dap生成特定数据对象id,使得dap识别多个存储单元池中的期望的存储单元集。计算装置通过生成特定数据对象标识符并将其与库标识符和/或修订级别信息组合来生成特定源名称。在dsn内,装置(例如,计算装置,其他计算装置,存储单元,管理单元,完整性单元等)在执行dap时使用特定源名称作为片标识符以识别期望的存储单元集作为存储多个编码数据片集的存储单元。

该方法在步骤106继续,其中计算装置为多个编码数据片集生成多个片名称集。计算装置通过将特定源名称与支柱编号和数据段编号组合来生成片名称。该方法在步骤108继续,其中计算装置根据多个片名称集向关于多个编码数据片集的期望存储单元集发送多个写入请求集。

该方法在步骤110继续,其中dsn的存储单元确定是否存在dap不平衡。当存储单元确定不存在dap时,该方法循环回到步骤100。

当存在dap不平衡时,该方法在步骤112继续,其中存储单元启动映射系数的调整。例如,存储单元之一调整存储映射系数。作为另一示例,存储单元请求管理单元调整存储映射系数。存储单元或管理单元调整存储映射系数(例如,图9的一个或多个功能评级模块的系数b),使得一个或多个编码数据片从期望的存储单元集的存储单元传输到dsn中的其他存储单元。

该方法在步骤114继续,其中存储单元使用特定源名称和调整的存储映射系数执行dap,以识别要传送到一个或多个其他存储单元的一个或多个编码数据片。该方法在步骤116继续,其中期望的存储单元集的存储单元将一个或多个编码数据片传送到一个或多个其他存储单元。

注意,可以在本文中使用的术语,诸如比特流,流,信号序列等(或它们的等同物)可互换地用于描述其内容对应于多种期望类型中的任何一种的数字信息(例如,数据,视频,语音,音频等,其中任何一个通常可以称为“数据”)。

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

如本文中可使用的,术语“有利地比较”表示两个或更多个项目,信号等之间的比较提供了期望的关系。例如,当期望的关系是信号1具有比信号2更大的幅度时,当信号1的幅度大于信号2的幅度或者当信号2的幅度小于信号2的幅度时,可以实现有利的比较。如本文中可能使用的,术语“不利地比较”表示两个或更多个项目,信号等之间的比较未能提供期望的关系。

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

上面已经借助于说明特定功能及其关系的性能的方法步骤描述了一个或多个实施例。为了便于描述,这里任意定义了这些功能构建块和方法步骤的边界和顺序。只要适当地执行指定的函数和关系,就可以定义替代边界和序列。因此,任何这样的替代边界或序列都在权利要求的范围和精神内。此外,为了便于描述,这些功能构建块的边界已被任意定义。只要适当地执行某些重要功能,就可以定义替代边界。类似地,流程图块也可以在本文中任意定义以说明某些重要功能。

在所使用的程度上,流程图块边界和序列可以已经另外定义并且仍然执行某些重要功能。因此,功能构建块和流程图块和序列的这种替代定义在权利要求的范围和精神内。本领域普通技术人员还将认识到,本文中的功能构建块和其他说明性块,模块和组件可以如图所示实现,或者由分立组件,应用专用集成电路,执行适当软件的处理器等或其组合实现。

另外,流程图可以包括“开始”和/或“继续”指示。“开始”和“继续”指示反映了所呈现的步骤可以任选地结合在其他例程中或以其他方式与其他例程结合使用。在此上下文中,“开始”表示所呈现的第一步骤的开始,并且可以在未明确示出的其他活动之前。此外,“继续”指示反映了所呈现的步骤可以多次执行和/或可以由未具体示出的其他活动继承。此外,尽管流程图表示步骤的特定顺序,但是如果保持因果关系原则,则其他顺序同样是可能的。

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

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

术语“模块”用于一个或多个实施例的描述中。模块经由诸如处理器或其他处理装置之类的装置或可包括或存储与存储操作指令的存储器相关联的其他硬件来实现一个或多个功能。模块可以独立地操作和/或与软件和/或固件一起操作。还如本文中所使用的,模块可以包含一个或多个子模块,每个子模块可以是一个或多个模块。

如本文中可进一步使用的,计算机可读存储器包括一个或多个存储器元件。存储器元件可以是单独的存储器装置,多个存储器装置或存储器装置内的存储器位置集。这样的存储器装置可以是只读存储器,随机存取存储器,易失性存储器,非易失性存储器,静态存储器,动态存储器,闪存,高速缓冲存储器和/或存储数字信息的任何装置。存储器装置可以是固态存储器,硬盘驱动器存储器,云存储器,拇指驱动器,服务器存储器,计算装置存储器和/或用于存储数字信息的其他物理介质的形式。

虽然本文已明确描述了一个或多个实施例的各种功能和特征的特定组合,但是这些特征和功能的其他组合同样是可能的。本公开不受本文公开的具体实施例的限制,并且明确地包含这些其他组合。

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