CN110663031A - 分布式存储网络 - Google Patents
分布式存储网络 Download PDFInfo
- Publication number
- CN110663031A CN110663031A CN201880034636.4A CN201880034636A CN110663031A CN 110663031 A CN110663031 A CN 110663031A CN 201880034636 A CN201880034636 A CN 201880034636A CN 110663031 A CN110663031 A CN 110663031A
- Authority
- CN
- China
- Prior art keywords
- value
- source name
- units
- computing device
- processing module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- 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/0643—Management of files
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0617—Improving the reliability of storage systems in relation to availability
-
- 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
-
- 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]
-
- 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
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)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Detection And Correction Of Errors (AREA)
- Computer And Data Communications (AREA)
Abstract
一种方法开始于处理模块接收将数据对象存储在分布式存储(DS)单元中的请求。该处理模块生成并发送包括源名称、该源名称的值和提议尝试标识符的提议消息。然后,该处理模块从多个DS单元中接收阈值数量的提议消息响应,并且当该提议消息响应指示所述DS单元尚未收到其他提议消息时,使用该提议消息中包含的所述源名称的所述值作为针对所述源名称的持久值,并且该方法继续进行使得该处理模块通知该请求计算设备。当该提议消息响应指示所述多个DS单元中的所述DS单元已经接收到至少一个其他提议消息时,该方法继续进行使得该处理模块采用所述源名称的第三值作为针对所述源名称的所述持久值。
Description
技术领域
本发明总体上涉及计算机网络,并且更具体地涉及分散错误编码的数据。
背景技术
已知计算设备传送数据、处理数据和/或存储数据。这些计算设备的范围从无线智能手机、笔记本电脑、平板电脑、个人计算机(PC)、工作站和视频游戏设备,到每天支持数百万次Web搜索、股票交易或在线购买的数据中心。通常,计算设备包括中央处理单元(CPU)、存储器系统、用户输入/输出接口、外围设备接口以及互连总线结构。
如众所周知的,计算机可以通过使用“云计算”来有效地扩展其CPU,以代表该计算机执行一个或多个计算功能(例如,服务、应用程序、算法、算术逻辑功能等)。此外,对于大型服务、应用程序和/或功能,可由多个云计算资源以分布式方式执行云计算,以改善用于完成服务、应用程序和/或功能的响应时间。例如,Hadoop是一个开放源代码软件框架,它支持分布式应用程序,使成千上万台计算机可以执行应用程序。
除了云计算,计算机还可以将“云存储”用作其存储系统的一部分。众所周知,云存储使用户能够通过其计算机将文件、应用程序等存储在Internet存储系统上。互联网存储系统可以包括RAID(独立磁盘冗余阵列)系统和/或使用纠错方案对要存储的数据进行编码的分散存储系统。
附图说明
图1是根据本发明的分散或分布式存储网络(DSN)的实施例的示意性框图;
图2是根据本发明的计算核心的实施例的示意框图;
图3是根据本发明的数据的分散存储错误编码的示例的示意性框图。
图4是根据本发明的错误编码功能的一般示例的示意性框图;
图5是根据本发明的错误编码功能的特定示例的示意性框图;
图6是根据本发明的编码数据切片(EDS)的切片名称的示例的示意性框图;
图7是根据本发明的数据的分散存储错误解码的示例的示意性框图;
图8是根据本发明的错误解码功能的一般示例的示意性框图;
图9是根据本发明的对一组编码数据切片的重叠写入请求的示例的示意性框图;
图10是根据本发明的对编码数据切片的写入请求的示例的示意性框图;
图11是根据本发明的对编码数据切片的读取请求的示例的示意性框图;
图12是根据本发明的针对一组编码数据切片的重叠的写入请求和读取请求的另一示例的示意性框图;
图13是根据本发明的由DSN的存储单元存储的一组编码数据切片的提议记录的示例的示意性框图;
图14是根据本发明的提议消息的示例的示意性框图;和
图15是根据本发明的使用提议消息来管理DSN中的竞争的方法的示例的逻辑图。
具体实施方式
图1是分散式或分布式存储网络(DSN)10的实施例的示意性框图,其包括多个计算设备12-16、管理单元18、完整性处理单元20和DSN存储器22。DSN10的组件耦合到网络24,该网络24可以包括一个或多个无线和/或有线通信系统;以及一个或多个无线通信系统。一个或多个非公共Intranet系统和/或公共Internet系统;和/或一个或多个局域网(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执行网络操作、网络管理和/或网络维护。网络操作包括对用户数据分配请求(例如,读取和/或写入请求)进行身份验证、管理文件库的创建、为用户设备建立身份验证凭据、添加/删除组件(例如,用户设备、存储单元和/或具有DS客户端模块34的计算设备)至/从DSN10、和/或建立存储单元36的身份验证凭据。网络管理包括监视设备和/或单元的故障、维护文件库信息、确定设备和/或单元的激活状态、确定设备和/或单元的负载和/或确定影响DSN性能级别的任何其他系统级别的操作10。网络维护包括促进更换、升级、维修和/或扩展DSN10的设备和/或单元。
完整性处理单元20执行“不良”或丢失的编码数据切片的重建。在高级别上,该完整性处理单元20通过周期性地尝试从所述DSN存储器22检索/列出编码数据切片和/或所述编码数据切片的切片名称来执行重建。对于所检索的编码切片,检查它们由于数据损坏、版本过旧等产生的错误。如果片中包含错误,则将其标记为“错误”片。对于未接收和/或未列出的编码数据切片,将其标记为丢失切片。随后,使用被认为是好的切片的其他检索到的编码数据切片来重建不良和/或丢失的切片,以产生重建的切片。该重建的切片被存储在所述DSN存储器22中。
图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和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)、系统编码、非系统编码、在线代码等)、数据分段协议(例如,数据段大小、固定、可变等),以及每个数据段的编码值。每个数据段编码值包括数据段的每次编码(即,在一组编码数据切片中)的编码数据切片的总数或柱宽(T);恢复数据段所需的一组编码数据切片中的编码数据切片的解码阈值数(D);编码数据切片的读取阈值数(R),以指示每组要从存储器中读取以对数据段进行解码的编码数据切片的数目;和/或写阈值数(W),以指示每组必须被准确存储的编码数据切片的数量,然后才能认为已正确存储了编码数据段。分散的存储错误编码参数还可包括切片信息(例如,将为每个数据段创建的编码数据切片的数量)和/或切片安全性信息(例如,每个编码数据切片的加密、压缩、完整性校验和等))。
在本示例中,已选择柯西里德-所罗门编码(CauchyReed-Solomon)作为编码功能(图4中显示了通用示例,图5中显示了特定示例);数据分段协议是将数据对象划分为固定大小的数据分段;每个数据段的编码值包括:柱宽5、解码阈值3、读取阈值4、写入阈值4。根据数据分段协议,计算设备12或16将数据(例如,文件(例如,文本、视频、音频等)、数据对象或其他数据排列)分成多个固定大小的数据段(例如,千字节(Kilo-bytes)到兆字节(Tera-bytes)范围内的1到Y的固定大小)。创建的数据段的数量取决于所述数据的大小和所述数据分段协议。
然后,计算设备12或16使用选定的编码功能(例如,柯西里德-所罗门编码(CauchyReed-Solomon))对存储段进行分散存储错误编码,以产生一组编码数据切片。图4说明了通用的柯西里德-所罗门编码功能,其中包括编码矩阵(EM)、数据矩阵(DM)和编码矩阵(CM)。编码矩阵(EM)的大小取决于每个数据段编码值选择的柱宽值(T)和解码阈值(D)。为了产生数据矩阵(DM),将数据段划分为多个数据块,并且将数据块布置为D行,每行Z个数据块。注意,Z是从所述数据段创建的所述数据块数量和所述解码阈值数量(D)的函数。通过将所述数据矩阵乘以所述编码矩阵的矩阵乘法来生成所述编码矩阵。
图5示出了具有5的柱值(T)和3的解码阈值数的柯西里德-所罗门编码(CauchyReed-Solomon)的特定示例。在该示例中,第一数据段被划分为十二个数据块(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)。切片名称80的典型格式如图6所示。切片名称(SN)80包括编码数据切片的柱号(例如1-Y中的一个)、数据段号(例如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编码功能的逆操作。编码矩阵包括行数的解码阈值(例如,在此示例中为三),并且在包括编码矩阵的对应行的编码矩阵的倒置中包含解码矩阵。例如,如果编码矩阵包括行1、2和4,则将编码矩阵缩减为行1、2和4,然后将其反转以产生解码矩阵。
图9是对具有相同切片名集合的一组编码数据切片的重叠写入请求的示例的示意性框图。当一组写入请求未决(例如,尚未发出写完成命令)并且存储单元接收到具有相同片名集合的一组编码数据切片的另一组写入请求时,发生重叠写入请求。在该示例中,计算设备A和B发送关于具有相同切片名称集合的编码数据切片集合的重叠写入请求。
为了处理重叠的写入请求(和其他重叠的数据访问请求),每个存储单元36(SU#1–SU#5)针对切片名称或切片名称组存储其自己的提议记录90-1至90-5。提议记录90包括未决交易92的有序列表以及具有相同的片段名称的编码数据切片段(EDS)94的可见和不同版本的有序列表。所述提议记录90可以进一步包括对所述编码数据切片的所述当前修订版本的指示。
未决交易的有序列表92包括与在提案记录打开时已接收到的关于所述切片名的数据访问请求相关联的交易编号或其他指示的时间有序列表(例如,写入定稿命令尚未做为其中一个未决写入请求发出)。例如,存储单元#1的所述提议记录90-1包括用于数据访问请求的交易编号的有序列表,该数据访问请求与切片名称集合中的第一切片名称有关。
作为特定示例,来自计算设备A的关于具有所述第一切片名称的编码数据切片的版本的第一写入请求具有第一交易编号(例如,0413)和存储单元#1在接收第二写入请求之前接收到第一写入请求,因此提议记录90-1在第一优先级位置具有第一写入请求(例如,第一交易编号),在第二优先级位置具有第二写入请求。优先位置。
作为另一个特定示例,来自计算设备A的关于具有第二切片名称的编码数据切片的版本的写入请求具有第一交易号(例如0413),以及来自计算设备B的关于具有所述第二切片名称的所述编码数据切片的另一版本的写入请求具有第二交易号(例如0279)。存储单元#2从计算设备A接收所述写入请求之前接收来自计算设备B中的所述写入请求。这样,所述提议记录90-2具有在第一优先级位置的计算设备B(例如,第二交易号)的写入请求和来自计算设备A在第二优先级位置的写入请求。其余存储单元以类似方式生成其各自的投标记录。
通常,当存储单元接收到对具有切片名的编码数据切片的版本的新写入请求时(即,没有其他写入请求未决),该存储单元“打开”提议记录。所述存储单元发送所述提议记录至发送所述写入请求的计算设备。如果没有对具有一组切片名称的一组编码数据切片的重叠写入请求,则其他存储单元(SU#2–SU#5)打开提议记录并将其发送到计算设备。
该计算设备解释所述提议记录,以确定其写入请求的阈值数量或更多(例如,解码阈值数量、写阈值数量等)是否处于第一优先级位置。当没有重叠的写入请求时,该写入请求将处于第一优先级位置。这样,所述计算设备将完成请求发送到所述存储单元。该存储单元处理所述完成请求,以使所述新版本的所述编码数据切片成为最新的一组编码数据切片,并关闭其各自的提议记录。
当存在重叠的写入请求时(例如,存储单元具有所述切片名称的开放提议记录),所述存储单元通过将所述新的写入请求置于比先前接收到的和待处理的写入请求低的优先级位置,用所述新的写入请求来更新提议记录。在更新所述提议记录之后,该存储单元将所述提议记录发送到发送新的写入请求的计算设备。在更新提议记录之后,存储单元将提议记录发送到发送新的写入请求的所述计算设备。
当计算设备接收所述提议记录时,其确定它们各自的写入请求的至少所述阈值数是否处于第一优先级位置。如果是,则计算设备发出完成命令。如果否,则计算设备撤回其写入请求或执行某个其他后备位置。
除了两个写入请求之外,计算设备C正在将读取请求发送到针对所述编码数据切片98集合的所述存储单元。所述存储单元将所述读取请求添加到它们各自的提案记录,并将所述更新的提案记录发送到计算设备C。当接收到所述提议记录,计算装置C判断是否进行所读取的请求(例如,读出的编码数据切片集合的所述当前修订版本)或终止读取请求。作为替代,计算设备C处理所述提议记录以确定来自计算设备A或计算设备B的所述新的编码数据切片的集合将是该编码数据切片的集合的下一个当前版本。做出此确定之后,计算设备C修改其读取请求,以读取所述编码数据切片集合的说述下一个当前版本。
图10是图9的写入请求96或100的示例的示意性框图。所述写入请求包括交易编号字段、切片名称(SN)字段、编码数据切片(EDS)字段、当前修订版本字段和新修订版本字段。所述写入请求集合中的每个写入请求都包含相同的交易编号、不同的切片名称、不同的EDS,以及相同的当前修订版本和相同的新修订版本。
图11是图9的读取请求102的示例的示意性框图。所述读取请求包括交易号字段、切片名称(SN)字段和当前修订版本字段。读取请求102集合中的每个读取请求都包含相同的交易编号、不同的片段名称和相同的当前修订版本。
图12是针对一组编码数据切片98的重叠写入请求96、100和读取请求102的另一个示例的示意性框图。在该示例中,计算设备A和B中的每个编码数据段都成为一组五个编码的数据切片。因此,计算设备A和B中的每一个生成五个写入请求96-1至96-5和100-1至100-5。来自计算设备A的写入请求包括相同的交易编号0413(可以是随机生成的,可以是时间戳等)、不同的切片名称(SN1_1至SN5_1)、不同的编码数据切片(EDSA_1_1至EDSA_5_1)、相同的当前修订版本003和下一个修订版本004。
来自计算设备B的写入请求包括相同的交易号0279、不同的切片名称(SN1_1至SN5_1)、不同的编码数据切片(EDSB_1_1至EDSB_5_1)、相同的当前修订版本003和下一个修订版本004。将来自计算设备A的写入请求与来自计算设备B的写入请求进行比较,得出所述写入请求具有相同的片名称、相同的当前修订版本和相同的下一修订版本。所述写入请求的所述交易编号和所述编码数据切片不同。
计算设备C对所述编码数据切片集合98发出五个读取请求。该读取请求102-1至102-5包括相同的交易编号03338,不同的切片名称(SN1_1至SN5_1)以及当前修订版本为003。所述写入请求和所述读取请求被发送到所述存储单元SU1到SU5,所述存储单元SU1到SU5处理如参考图13所述的请求。
图13是由所述DSN的存储单元存储的编码数据切片结合的提议记录的示例的示意性框图。在该示例中,虽然写入请求96和100以及读取请求102在相似的时间被发送出去,但是由于计算设备和存储单元之间的等待时间和/或处理能力不同,这些请求在不同的时间被接收,并且可能存储单元的传输顺序与存储单元的传输顺序不同。
在接收任何所述读取或写入请求之前,所述存储单元存储该组编码数据切片的当前修订版本。如图所示,存储单元SU#1存储EDS1_1,存储单元SU#2存储EDS2_1,依此类推。在该示例中,所述编码数据切片的所述当前修订版本是003。另外,每个所述存储单元没有针对它们各自的编码数据切片打开的提议记录。
在该示例中,当存储单元接收到数据访问请求时,它打开提议记录,该提议记录标识刚接收到的数据访问,所述当前修订版本以及指示编码数据切片的所述当前修订版本为可见(例如,可以被DSN的计算设备访问)。在打开提议记录时,所述存储单元将其发送到接收所述请求的计算设备。
例如,存储单元1、3、4和5中的每一个首先从计算设备A接收所述写入请求。因此,每个存储单元创建提议记录,该提议记录包括所述待处理交易的有序列表92和EDS94的可见的不同版本的命令列表,该提议记录被发送到计算设备A。例如,待处理交易的每个有序列表92-1、92-3、92-4和92-5在第一优先级位置包括交易编号0413(用于计算设备A的写入请求的交易编号)。此外,EDS94-1、94-3、94-4和94-5的可见不同版本的每个顺序列表都包含一个指示,指示来自计算设备的编码数据切片和编码数据切片的当前修订版本A可见(例如,对于SU#1、EDS1_1和EDSA_1_1可见)。
继续该示例,存储单元#2首先从计算设备B接收该写入请求。因此,存储单元#2创建包括未决的交易的有序列表的提议记录92-2和可见的不同版本的EDS94-4的顺序列表,其被发送到计算设备B。例如,未决交易92-2的有序列表在第一优先级位置中包括交易编号0279(用于计算设备B的写入请求的所述交易编号)。此外,可见的不同版本的EDS94-2的顺序列表包括以下指示:可见的编码数据切片和来自计算设备B的编码数据切片的当前修订版本(例如,EDS2_1和EDSB_2_1可见)。
在从计算设备A接收到所述写入请求之后,存储单元1、3、4和5从计算设备B接收所述写入请求。因此,每个存储单元更新其提议记录,该提议记录被发送到计算设备A。例如,未决交易92-1、92-3、92-4和92-5的每个有序列表都将更新为在其中包括在所述第二优先位置的所述交易编号0279(所述计算设备B的所述写入请求的交易编号)。此外,对EDS94-1、94-3、94-4和94-5的可见不同版本的顺序列表中的每一个进行更新,以包括以下指示:编码数据切片和编码数据切片的当前修订版本来自计算设备A和B的信息是可见的(例如,对于SU#1、EDS1_1、EDSA_1_1和EDSB_1_1是可见的)。
在从计算设备B接收到所述写入请求之后,存储单元2从计算设备A接收所述写入请求。因此,存储单元#2更新其提议记录,该提议记录被发送到计算设备B。例如,有序列表未决交易92-2的交易处理在第二优先级位置中包括交易编号0413(用于计算设备A的写入请求的交易编号)。此外,可见的不同版本的EDS94-2的顺序列表包括以下指示:可见的编码数据切片和来自计算设备A和B的编码数据切片的当前修订版本(例如EDS2_1、EDSB_2_1和EDSA_2_1可见)。
在从计算设备A和B接收到写入请求之后并且在关闭提议记录之前,存储单元从计算设备C接收读取请求。因此,每个存储单元更新其提议记录以包括读取请求。特别地,每个存储单元更新其未决交易的订单列表92以在第三优先级位置中包括读取请求的交易编号0279。该更新提议记录被发送到计算设备C。
作为单个交易的一部分,可以实现对多个编码数据切片的更新。这些操作(通常称为“原子操作”)可以在操作过程中执行,而无需任何其他进程能够读取或更改状态(除了所述读取或更改之外)。原子操作可有效地作为一个步骤执行,并且在多个算法处理多个独立进程的系统中(对于无需同步即可更新共享数据的算法以及确实需要同步的算法)可以成为重要属性。标准的原子写操作可以执行如下:1)DS处理器获取与所述数据对象关联的所述元数据的锁定;2)该DS处理单元将所述对象写入存储器;3)该DS处理单元用用于写入所述数据对象的容器的配额使用量来更新与所述数据对象相关联的所述元数据;4)如果对与所述数据对象关联的所述元数据的配额更新失败,则将所述数据对象从内存中删除;5)所述DS处理单元释放对与所述数据对象相关联的所述元数据的所述锁定。
在这种情况下,所述原子操作强制在当前交易中进行的所有更新是立即一致的;如果所述更新期间发生任何故障,所述整个交易将中止,并且所有已写入的对象将回滚。如果在同一个容器中有多个写入操作,则如上所述的原子操作会导致与数据对象相关联的元数据争用,此外,由于已删除相关联的元数据更新不成功,导致删除已写入数据对象的效率低下。
所述DSN协议启用单元素原子“1个元素的比较和交换”(CAS-1),其中数据源可以在原子交易操作中原子地增加。要支持多个(任意N个)原子比较和交换(CAS-N)交易,需要扩展DSN协议,这是通过使用协议来启用N元素比较和交换(CAS-N)来完成的。CAS-N在具有原子读取可见性的任意元素之间提供了强大的一致性。CAS-N交易由一组“提议”组成,格式为(“源”、“旧版本”、“新版本”),其中每个提议的版本比较必须原子地满足,以使交易完成,并且如果有任何失败都不会更新到任何来源。这是通过至少在交易期间在每个数据位置(例如,在每个参与的ds单元上,在CAS-N操作中保存至少一个所述源的一部分)中存储完整的“交易描述”(所述所有提议的集合)来实现的。在遇到正在进行持续(公开)交易的源时,任何读取者或写入者都必须先验证整个交易的提议,然后再确定该源是否可见“新版本”或“旧版本”。在某些情况下,这可能需要客户端对交易描述中引用的以前未知的源发出其他读取请求。CAS-N交易完成后,可以从所有参与的ds单元中删除交易描述,并且此时每个源的新版本都可见。
当多个提议者试图同时更新数据源的相同修订/版本时,引起争用。在这种情况下,提议者通常是两个或两个以上试图同时更新同一数据源(表示元数据对象的段或数据源)的DS处理单元。由于强一致性是分布式存储系统的理想属性,因此通常需要某种形式的共识协议。通常,如果系统中的所有参与者都遵循这样的协议,则还可以确保强大的一致性,在满足条件的情况下,在一次往返中达成共识,而在尝试多个作者的情况下,可以令人满意地执行共识也是有利的更新相同的数据对象(即“有争议的案例”)。
开发了诸如Paxos的协议,以使用带外处理(out-of-band process)来处理共识问题以建立杰出的客户。Paxos的目标是使一些同伴就价值达成共识;Paxos保证,如果一个同伴认为某个价值已经多数人同意,则大多数人将永远不会同意另一种价值。该协议的设计使得任何协议都必须通过大多数节点。Paxos的带外处理可能会增加分布式存储系统的开销,因为可能需要往返。在覆盖特定修订版或DSN内存中某种名称的初始权利(有时称为“竞赛”)期间,可以获得很强的一致性。如果多个DS处理单元试图更新存储在同一DSN内存中的数据源的同一修订版,则它们将参加同一竞赛。
开发了Paxos的变体,称为“快速Paxos(FastPaxos)”,以使得在无竞争的理想情况下能够在单个网络往返时间(RTT)中建立共识。快速Paxos通常具有以下不同的阶段:1)选举领导人;2)提出新的共识价值。快速Paxos变体的提案将提案与领导者选举阶段相结合,如下所示。这是通过使用提案元数据作为领导者选举中的投票来完成的。我们将这种快速Paxos变体称为“带有隐式领导人选举的快速Paxos”(FPILE)。FPILE可以在最佳情况下实现单个RTT写入,并保证强大的一致性和快速的争用解决方案(通常为2个RTT)。
FPILE被设计成实现以下目标:1)安全性(强一致性(读者只能看到可接受的值));2)可用性(无死锁(可以持续进行));3)高性能(快速争用解决方案(在平均情况下单次往返))。
典型的数据协议受到多种故障条件的影响。尽管这些协议可以提供强大的一致性,但它们不提供此处所述的可用性或性能。在先前存在的协议下,客户端崩溃和存储中断可能会使系统处于不确定状态,由于无法确定最新的可恢复修订版本因此无法向前推进。这些协议还可能会遇到较差的争用解决方案,因为客户端可能会继续重试其请求,除了指数回退外,没有协调的回退机制。如果遇到竞争,这将导致长时间的延迟。
FPILE的目标包括(但不限于)维持现有协议的强一致性保证,同时还提高性能和可用性。这些属性将在下面更详细地讨论。
如上所述,CAS-N将为分布式存储网络提供多项积极的改进,但是其中的一些好处包括可以确保对象的旧版本或新版本可见(例如,例如Slicestor(IBM服务器)停电(例如W-TSS以外的停电),这意味着诸如索引之类的并发结构始终保证在断电期间无损坏。不是“部分写入”而是所有写入都是原子(如图13所示),这意味着即使客户端崩溃,索引、元数据和使用情况也将始终保持同步。
对于不存在争用的情况,可以在单次往返中向用户确认写入。通过将写延迟减少2倍,这可以提高WAN环境中的性能。在多次写入更新同一节点的情况下,通过允许竞争激烈的对象(如不使用委托的顺序写入索引),还可以减少竞争开销以更可预测且更低延迟的方式完成。使用意图-索引(intents–index)和其他“派生”结构可以异步更新-这也减少了实现写入成功的往返次数。
安全性,现有和新提议的协议的特性可以被描述为“强,即时,一致”的形式,这体现了许多保证:PFILE在其安全性概念中至少包括这些特性。
1)读者只能返回成功写入的值,即系统“接受”的值(非平凡(non-triviality)。最多可以有一个接受值,其中一个接受值是给定修订版的提议后继(安全性);
2)所有可以就接受的价值(一致性)达成最终决定性协议的客户;
3)成功写入后启动的读取将始终看到该写入或更新的写入(即时性(immediacy)又称为可线性化(linearizablity);
4)比较和交换操作将完全失败或完全成功(原子性)。
以下各节从独立操作的客户端的角度概述了协议和算法:
比较和交换算法(写入/更新/删除)
写入:
写入者将txid、修订版本、数据写入每个存储器。该存储器遵守相同的合同,并返回快箱(fast-casn)中概述的相同选票,此外该存储器还包括选票中每张桌面都在进行哪些回合
write(source_name,data,proposed_revision,txid,current_round,stores[],
to_rebuild,current_revision):
for i in stores.size:
//优化:仅传递切片数据if(current_round==0)(or when
rebuilding someone else)
slice=current_round==0||i in to_rebuild?get_slice(data,i):null
ballots[i]=write(current_revision,current_round,store[i],(txid,
proposed_revision,slice))to all W stores.
//确定有多少张选票包含txid作为当前回合的第一名txid
success_count=count_my_successes(ballots,current_round)
if success_count>=Threshold.WRITE:
//我们因更新current_revision而获胜
finalize()
return Operation.SUCCESS;
else if(count_max_successes(ballots,current_round)>=Threshold.WRITE)
or contains_finalized_slice(ballots):
//有人击败了我们进行此更新,告诉存储器安全删除我们的切片
withdraw_writes()
//优化:如果可以通过投票确定新数据或修订版本,则可以提供提示
return Operation.RETRIABLE_FAILURE
else:
//我们或其他任何人都没有绝对赢得这次更新(有争论)
//首先确定一组不能明确确定的交易,排除至少具有Threshold.WRITE成功
potential_winners=potentially_at_wt(ballots,current_round)
if potential_winners.size()==0:
//在这一轮没有人达到写门槛,我们需要继续进行以确定领导者
excluded_candidates=[]//No one is blackballed yet
leader=sloppy_leader_election(ballots,current_round,
excluded_candidates)
while leader is all inactive and below Threshold.IDA:
excluded_leaders.append(leader)
leader=sloppy_leader_election(ballots,current_round,
excluded_leaders)
//根据定义,我们有一位积极的领导者(如果没有其他的话,我们仍然是积极的)
else if potential_winners.size()==1:
leader=potential_winner[0]//this potential winner would also have
won the leader election
else if potential_winners.size()>1:
//我们无法使其中任何一个成为赢家,因为他们可能再失败的存储器已经获胜
//这只能在假如f>min(W-WT,WT-T)时发生
return Operation.FAILURE;
if leader==txid:
//我们是领导者,进入下一轮
write(data,proposed_revision,txid,(current_round+1),stores[],{},
current_revision)
else:
//其他人是领导者
leader_successes=count_leader_successes(ballots,current_round,
leader)
if is_inactive(leader):
if(leader_successes<Threshold.IDA):
withdraw_writes()
//潜在赢家低于T(不可重建)
//仅当f>min(W-WT,WT-T)时才会发生
return Operation.FAILURE;
else:
withdraw_writes()
if(leader_successes<Threshold.WRITE):
//重建领导者的数据,这些数据位于Threshold.IDA之上,但低于Threshold.WRITE
//获取没有领导者的存储器
to_rebuild={i for i in ballots.size if not
has_leader-revision(ballots[i])}
else:
//不需要重建任何东西
to_rebuild={}
write(leader-data,leader-revision,leader-txid,leader_round+1,
stores[],to_rebuild,current_revision)
else:
//领导者活跃
withdraw_writes()
write(data,proposed_revision,txid,current_round/*not current_round
+1!!!*/,stores[],{},current_revision)
potentially_at_wt(ballots,current_round):
return all candidates whose first place votes+num_failures>=WT
/***
*Returns a single candidate leader who can proceed to the next round(if
there are partitions some clients may disagree on who the leader is)
*/
sloppy_leader_election(ballots,current_round,excluded_leaders):
valid_candidates=remove_excluded_leaders(ballots,current_round,
excluded_leaders)
m=get_max_first_places_in_round(ballots,current_round,
valid_candidates)
potential_leaders={c in valid_candidates(ballots)|num_first_places(c)
==m}
return potential_leader having the highest txid
读取
读取者:
与写入者非常相似:
读取():
ballots=reader initially can just read T slicestors
if are the T slices of a revision with at least one finalized slice:
return that revision
else:
read more until there is a source that has achieved WT,or it is
impossible for any source to achieve WT,then rerun
if there is a revision that achieves WT:
return it if it is at least WT inactive,simply retry otherwise
else:
if failures are wildcards and it is impossible for any revision tohave
achieved WT:
can fallback to previous revision
else:
leader=sloppy_leader_election(ballots,current_round)
if all_inactive(leader)and the leader is the only possible achieverof
WT(with failures)and the leader is above T:
rebuild it to WT
else:
retry
算法属性
令f为失败存储器的数量
将写入者的进程定义为成功、竞争者获胜而失败或重试(如果竞争者合作将成功)
声明1:只要f<=min(WT-T,W-WT),写入者总是可以取得进展
如果可用的存储器少于WT,那么写入者显然不会成功,因此f<=W-WT。
假设A是竞争写入者,而a是A获得的第一次票数。如果a+f<WT,那么按照算法中描述我们可以安全地打开新一轮。否则a+f>=WT。如果>=T,我们可以简单地恢复该修订版本,而无法进行写入。假设a=T-1。我们喜欢它,因此A不可能实现WT。这意味着我们需要X的不是A的:
(W-(T-1))-x<WT-(T-1)(在A-X上未赢的存储器必须小于A所需要达到的剩余赢取数量WT)
=>
x>W-WT
然后,最少需要的“非A的”数量是x=W-WT+1
那么最大的f可以是
f<=(W-(T-1))-X(尚未接受A的存储器数量-请求的“非A的”数量)
f<=(W-(T-1))-(W-WT+1)
f<=WT-T
s>=3f+1(或W>=4f+1)
图14是来自DSN的处理模块的提议消息的示例的示意性框图。写入请求包括交易编号字段、要更新的切片名称(SN)字段、所述处理模块请求作为所述持久值的编码数据切片(EDS)字段以及可以根据由提案尝试表示的提案尝试增加的提案标识符。
如图15的逻辑图所示,处理模块在步骤502中接收存储数据对象的请求,并为至少一个阈值数量的步骤504中的分布式存储(DS)单元生成提议消息(写入请求)。方法继续到步骤504,其中处理模块将提议消息发送到所述阈值数量的DS单元。当DS单元(具有所述阈值数量的DS单元)接收到其尚未收到其他提案的来源名称的提案消息时,或者如果先前对该来源名称的所有请求均经过较低的回合,则该DS单元接受该请求并向所述处理模块返回一个响应,指示其最近接受的值,以及对其已看到的任何其他提议的指示。如果ds处理模块确定从ds单位的写入阈值接受的值是所涉及的最高回合,则它可以考虑对该值达成的共识,并假定具有正常的一致性保证。此时,该ds处理单元通知请求者该提议值已被所述阈值数量的DS存储单元成功接受,并且该值成为该主题源名称的持久值。
如果DS单元的写阈值数量未达到共识(即,相同的提议消息已被接受并且针对DS单元的写阈值数量返回响应),则该处理模块将检查提议消息响应以确定是否主题源名称已收到并接受任何其他投标消息。当接收到提议消息并以的阈值数量的DS单位接受主题源名称的提议消息时,该处理模块以及已发送该主题源名称提议消息的第三方处理模块便能够确定是否有任何DS单位接受的提议消息可能能够就该源名称值达成共识。当确定共识值可用时,然后可以重新提议该值(即,可以将该值的提议消息再次发送到所述阈值数量的DS单元),并确定生成该提议消息的处理模块成为所述领导者。
只有所述领导者可以通过增加回合来重新提出该值来继续,所有其他发送了针对所述主题源名称的提议消息的处理单元都可以选择在此时通知其请求者失败(即他们输掉了比赛)。除了通知所述请求者之外,所有其他处理单元还可以根据网络效率/负载来提供所述持久值,以减少往返行程。
在某些情况下,即使没有一个明确的领导者,处理模块(以及所有其他处理模块)可能会确定有两个潜在可用作为共识值的值。在这种情况下,与所述两个潜在的共识值相关联的所述处理模块可以与它们的提议消息一起重新提议,以便确定共识值和领导者。此两轮投票制(也称为第二轮投票、径流投票或选举(runoff voting or ballotage))用于选择没有达成共识的领导者,除了两个候选人中票数最高的候选人之外的所有候选人均被淘汰,并进行第二轮投票举行。
如本领域技术人员将理解的,所述DS处理单元没有义务出于安全的目的提出任何特定值,但是,如上所述,某些选择值的方案可以大大减少解决竞争竞赛所需的往返行程的数量。例如,所述DS处理单元可以将对提案的响应视为选举中的投票。从这些选票中选择一个值的方案的一些示例包括:选择具有最旧时间戳记的提案,或使用该值的确定性函数。此外,所述DS单元可以选择对他们看到的投标进行排名而且所述DS处理单元可以使用分级投票方案,例如即时径流投票(请参见上文)。一旦选择了一个值,就确定所述相关联的领导者并以增加的回合进行;比赛中的第三方处理单元可能会选择失败,也可能会延迟一些时间重试自己的提案消息,或者通过修改现在的持久值和重试进行更新。
各种算法可用于确定该延迟,包括指数补偿和/或使用来自所述DS单元的信息来估算所述领导者是否仍在活动中。希望读取所述主题源名称的当前商定值的DS处理单元必须确保在将任何值返回给请求者之前将其读取的任何值都保留到写入阈值。如果可以确定在当前有争议的更新中任何值都不可能达成共识,则所述读者可能会退回到所述源名称的先前值。作为附加的优化,编写者可以在达成共识后发送“最终确定”请求要求提供源名称和值,以告知ds单位已就该值达成共识。传输针对所述主题源名称的读取请求的后续处理模块将不需要进行额外的工作来确定是否已针对某个值实现写阈值,然后再将其确定为已将源返回给请求者的值。
如相关领域的技术人员将进一步理解的那样,FastPaxos(并且如上所述)与TrimmedWrites一起很好地工作。在TrimmedWritesSystems中,通常配置宽度(Width)-WT=WT-阈值(Threshold),并且确定(finalize)阶段提供了一个理想的位置来插入新的清理消息(例如带有布尔标志的确定消息),该消息不仅可以清理先前的切片,以及成功写入的切片的切片内容。最多只能将(W-WT)发送给存储的完成消息设置为“on”。这样可以释放多余的数据存储空间,而这些多余的数据存储空间可能已被额外的(W-WT)切片使用。
注意,在本文中可以使用的诸如比特流、流、信号序列等的术语(或其等价物)已经可互换地用于描述其内容对应于许多期望类型中的任何一种的数字信息(例如数据、视频、语音、音频等,其中的任何一个通常都可以称为“数据”)。
如在此可以使用的,术语“基本上”和“近似地”为其相应的术语和/或项目之间的相对性提供了工业上可接受的公差。这种行业接受的公差范围从小于百分之一到百分之五十,并且对应于但不限于组件值、集成电路工艺变化、温度变化、上升和下降时间和/或热噪声。项目之间的相关性范围从几个百分点到数量级差异。如本文中也可以使用的,术语“配置为”、“可操作地耦合至”、“耦合至”和/或“耦合”包括物之间的直接耦合和/或经由中间物的物之间的间接耦合(例如,包括物但不限于组件、元件、电路和/或模块),其中,以间接耦合为例,中间物不会修改信号信息,但可以调整其电流水平、电压水平和/或功率水平。如本文中可能进一步使用的,推断耦合(即,其中一个元素通过推断耦合到另一元素)包括以“耦合到”相同的方式在两个物之间进行直接和间接耦合。如本文中可能进一步使用的,术语“配置为”、“可操作为”、“耦合至”或“可操作地耦合至”表示物包括电源连接、输入(一个或多个)、输出(一个或多个)中的一个或多个,其在激活时执行一个或多个其相应功能,并且还可以包括推断与一个或多个其他物的耦合。如本文中可能进一步使用的,术语“与...相关”包括单独的物和/或一个物被嵌入另一物内的直接和/或间接耦合。
如本文中可以使用的,术语“有利地比较”表示两个或更多个物体、信号等之间的比较提供了期望的关系。例如,当期望的关系是信号1的幅度大于信号2的幅度时,当信号1的幅度大于信号2的幅度或信号2的幅度小于信号2的幅度时,可以实现有利的比较。信号1,正如这里可能用的术语“比较不利”,表示两个或更多物、信号等之间的比较不能提供所需的关系。
如这里也可以使用的,术语“处理模块”、“处理电路”、“处理器”和/或“处理单元”可以是单个处理设备或多个处理设备。这样的处理设备可以是微处理器、微控制器、数字信号处理器、微型计算机、中央处理单元、现场可编程门阵列、可编程逻辑设备、状态机、逻辑电路、模拟电路、数字电路和/或任何以下设备根据电路的硬编码和/或操作指令来操纵信号(模拟和/或数字)。处理模块、模块、处理电路和/或处理单元可以是或进一步包括存储器和/或集成存储元件,其可以是单个存储设备、多个存储设备和/或嵌入式电路。另一个处理模块、模块、处理电路和/或处理单元。这样的存储设备可以是只读存储器、随机存取存储器、易失性存储器、非易失性存储器、静态存储器、动态存储器、闪存、高速缓冲存储器和/或任何存储数字信息的设备。注意,如果处理模块、模块、处理电路和/或处理单元包括一个以上的处理设备,则这些处理设备可以位于中央(例如,经由有线和/或无线总线结构直接耦合在一起),或者可以是分布式地定位(例如,经由经由局域网和/或广域网的间接耦合的云计算)。进一步注意,如果处理模块、模块、处理电路和/或处理单元通过状态机、模拟电路、数字电路和/或逻辑电路实现其一个或多个功能,则存储器和/或存储元件存储相应的操作指令可以嵌入在包括状态机、模拟电路、数字电路和/或逻辑电路的电路之内或之外。还要进一步注意,存储元件可以用于存储,并且处理模块、模块、处理电路和/或处理单元执行与一个或更多附图中描述的至少一个步骤和/或功能中的一些相对应的硬编码和/或操作指令。这样的存储设备或存储元件可以被包括在制品中。
上面已经借助于示出了指定功能的执行及其关系的方法步骤描述了一个或多个实施例。为了便于描述,在这里已经任意定义了这些功能构建块和方法步骤的边界和顺序。只要适当执行指定的功能和关系,就可以定义其他边界和顺序。因此,任何这样的替代边界或顺序都在权利要求的范围和精神内。此外,为了便于描述,已经任意定义了这些功能构建块的边界。只要适当地执行某些重要功能,就可以定义其他边界。类似地,流程图框在这里也可能已经被任意定义以说明某些重要功能。
就所使用的程度而言,流程图块的边界和顺序可以另外定义,并且仍然执行某些重要功能。因此,功能构建块以及流程图块和序列的这种替代定义在权利要求的范围和精神内。本领域普通技术人员还将认识到,可以如图所示或通过分立组件、专用集成电路、执行适当软件的处理器等或它们的组合来实现功能构建块以及本文中的其他说明性块、模块和组件。
另外,流程图可以包括“开始”和/或“继续”指示。“开始”和“继续”指示表明,所提供的步骤可以有选择地合并到其他例程中或与其他例程结合使用。在这种情况下,“开始”表示所提出的第一步的开始,并且可以在此之前进行其他未明确示出的活动。此外,“继续”指示反映出所呈现的步骤可以被执行多次和/或可以被未特别示出的其他活动所继。此外,虽然流程图指示步骤的特定顺序,但是只要保持因果关系的原理,其他顺序同样是可能的。
本文使用一个或多个实施例来说明一个或多个方面、一个或多个特征、一个或多个概念和/或一个或多个示例。装置、制品、机器和/或过程的物理实施例可以包括参考本文中讨论的一个或多个实施例描述的一个或多个方面、特征、概念、示例等。此外,基于附图,实施例可以合并可以使用相同或不同附图标记的相同或相似命名的功能、步骤、模块等,因此,功能、步骤、模块等可以是相同的或相似的功能、步骤、模块等或不相同的。
除非有相反的特别说明,否则本文呈现的任何图中的元素中、元素之间和/或元素之间的信号可以是模拟或数字、连续时间或离散时间以及单端或差分。例如,如果信号路径显示为单端路径,则它也表示差分信号路径。同样,如果信号路径显示为差分路径,则它也表示单端信号路径。尽管本文描述了一个或多个特定架构,但是本领域普通技术人员可以认识到可以使用未明确示出的一个或多个数据总线、元件之间的直接连接和/或其他元件之间的间接耦合来实现其他架构。
在一个或多个实施例的描述中使用术语“模块”。模块经由诸如处理器或其他处理设备或其他硬件的设备来实现一个或多个功能,该设备可以包括或与存储操作指令的存储器相关联地进行操作。模块可以独立地和/或结合软件和/或固件来操作。如本文还使用的,模块可以包含一个或多个子模块,每个子模块可以是一个或多个模块。
如这里可以进一步使用的,一种计算机可读存储器包括一个或多个存储元件。存储元件可以是单独的存储设备、多个存储设备或存储设备内的一组存储位置。这样的存储设备可以是只读存储器、随机存取存储器、易失性存储器、非易失性存储器、静态存储器、动态存储器、闪存、高速缓冲存储器和/或任何存储数字信息的设备。存储器设备可以是固态存储器、硬盘驱动器存储器、云存储器、拇指驱动器、服务器存储器、计算设备存储器和/或用于存储数字信息的其他物理介质的形式。
尽管在此已经明确地描述了一个或多个实施例的各种功能和特征的特定组合,但是这些特征和功能的其他组合同样是可能的。本公开不受本文公开的特定示例的限制,并且明确地并入这些其他组合。
Claims (20)
1.一种计算设备,包括:
配置为与分散或分布式存储网络(DSN)进行关联并与之通信的接口;
存储操作指令的存储器;
处理模块,其可操作地耦合到所述接口和所述存储器,其中,当所述处理模块基于所述操作指令在所述计算设备内可操作时,所述处理模块被配置为:
从请求计算设备并经由所述DSN接收将数据对象存储在多个分布式存储(DS)单元内的请求;
产生包括与所述数据对象相关联的源名称、所述源名称的第一值和提议尝试标识符的提议消息;
向所述多个DS单元发送所述提议消息;
响应于所述提议消息,从所述多个DS单元接收阈值数量的提议消息响应,其中,从所述多个DS单元中的DS单元接收所述阈值数量的提议消息响应的提议消息响应,所述提议消息响应对应于被所述DS单元最近接受的所述源名称的第二值并进一步指示所述多个DS单元中的所述DS单元是否还接收到任何其他提议消息;
当从所述多个DS单元的所述DS单元接收到的所述阈值数量的提议消息响应的所述提议消息响应指示所述多个DS单元的所述DS单元未接收到其他提议消息时,采用被包括在所述提议消息中的作为源名称的持久值的所述源名称的所述第一值,并通知针对所述源名称的所述持久值的所述请求计算设备;和
当从所述多个DS单元的所述DS单元接收到的所述阈值数量的提议消息响应的所述提议消息响应指示所述多个DS单元的所述DS单元已经接收到至少一个其他提议消息时,采用基于来自所述多个DS单元的所述阈值数量的提议消息响应的针对所述源名称的第三值作为所述源名称的所述持久值,并通知针对所述源名称的所述持久值的所述请求计算设备。
2.根据权利要求1所述的计算设备,其中,所述持久值基于由所述处理模块进行的确定性函数的执行。
3.根据权利要求1所述的计算设备,其中,所述源名称的所述第三值等于所述源名称的所述第二值。
4.根据权利要求2所述的计算设备,其中,所述确定性函数由接收到所述源名称的提议消息响应的其他处理单元进一步执行,并且进一步地,其中,执行所述确定性函数得到所述源名称的所述第三值。
5.根据权利要求1所述的计算设备,其中,所述持久值是基于由所述处理模块执行的投票过程来确定的。
6.根据权利要求5所述的计算设备,其中,所述投票过程包括基于与所述所述提议消息相关联的时间戳来选择投票值。
7.根据权利要求5所述的计算设备,其中,所述投票过程得到两个潜在的持久值,并且在与所述两个潜在的持久值相关联的第二处理模块和第三处理模块分别重发送所述处理模块接收到所述阈值数量的提议消息后发送的提议消息之后从所述两个潜在的持久值中选择所述持久值。
8.根据权利要求7所述的计算设备,其中,选择其他处理模块与所述第三值相关联,并且在所述处理模块接收到所述阈值数量的提议消息之后,在所述选择其他处理模块发送与所述第三值相关联的提议消息之后确定所述第三值。
9.根据权利要求8所述的计算设备,其中,在所述处理模块通过所述选择其他处理模块接收到所述阈值数量的提议消息之后,与所述第三值相关联的提议消息的发送是基于所述选择其他处理模块确定与所述第三值相关联的所述提议消息包括针对所述持久值的优选候选值。
10.一种用于由分散存储网络(DSN)的一个或多个计算设备的一个或多个处理模块执行的方法,该方法包括:
从请求计算设备并经由所述DSN接收将数据对象存储在多个分布式存储(DS)单元内的请求;
产生包括与所述数据对象相关联的源名称、所述源名称的第一值和提议尝试标识符的提议消息;
向所述多个DS单元发送所述提议消息;
响应于所述提议消息,从所述多个DS单元接收阈值数量的提议消息响应,其中,从所述多个DS单元中的DS单元接收所述阈值数量的提议消息响应的提议消息响应,所述提议消息响应对应于被所述DS单元最近接受的所述源名称的第二值并进一步指示所述多个DS单元中的所述DS单元是否还接收到任何其他提议消息;
当从所述多个DS单元的所述DS单元接收到的所述阈值数量的提议消息响应的所述提议消息响应指示所述多个DS单元的所述DS单元未接收到其他提议消息时,采用被包括在所述提议消息中的作为源名称的持久值的所述源名称的所述第一值,并通知针对所述源名称的所述持久值的所述请求计算设备;和
当从所述多个DS单元的所述DS单元接收到的所述阈值数量的提议消息响应的所述提议消息响应指示所述多个DS单元的所述DS单元已经接收到至少一个其他提议消息时,采用基于来自所述多个DS单元的所述阈值数量的提议消息响应的针对所述源名称的第三值作为所述源名称的所述持久值,并通知针对所述源名称的所述持久值的所述请求计算设备。
11.根据权利要求10所述的方法,其中,所述持久值基于由所述处理模块进行的确定性函数的执行。
12.根据权利要求10所述的方法,其中,所述源名称的所述第三值等于所述源名称的所述第二值。
13.根据权利要求11所述的方法,其中,所述确定性函数由接收到所述源名称的提议消息响应的其他处理单元进一步执行,并且进一步地,其中,执行所述确定性函数得到所述源名称的所述第三值。
14.根据权利要求10所述的方法,其中,所述持久值是基于由所述处理模块执行的投票过程来确定的。
15.根据权利要求14所述的方法,其中,所述投票过程包括基于与所述所述提议消息相关联的时间戳来选择投票值。
16.根据权利要求14所述的方法,其中,所述投票过程得到两个潜在的持久值,并且在与所述两个潜在的持久值相关联的第二处理模块和第三处理模块分别重发送所述处理模块接收到所述阈值数量的提议消息后发送的提议消息之后从所述两个潜在的持久值中选择所述持久值。
17.根据权利要求10所述的方法,其中,选择其他处理模块与所述第三值相关联,并且在所述处理模块接收到所述阈值数量的提议消息之后,在所述选择其他处理模块发送与所述第三值相关联的提议消息之后确定所述第三值。
18.根据权利要求17所述的方法,其中,在所述处理模块通过所述选择其他处理模块接收到所述阈值数量的提议消息之后,与所述第三值相关联的提议消息的发送是基于所述选择其他处理模块确定与所述第三值相关联的所述提议消息包括针对所述持久值的优选候选值。
19.一种用于由分散存储网络(DSN)的一个或多个计算设备的一个或多个处理模块执行的方法,该方法包括:
由计算设备接收旨在用于阈值数量的分散存储网络(DSN)的存储单元的访问请求,其中所述访问请求用于与源名称相关联的值,并且进一步地,其中所述计算设备已接收到来自至少部分所述阈值数量的存储单元的至少一个提议消息响应;
确定与所述源名称相关联的所述值是否是所述源名称的持久值,其中,所述确定是基于已从所述阈值数量的存储单元接收到阈值数量的提议消息响应的所述计算设备,并且,其中所述确定是还基于阈值提议消息响应是否指示已为与所述源名称关联的所述值确定了共识值;和
当与所述源名称相关联的所述值是所述源名称的所述持久值时,将与所述源名称相关联的所述值发送给所述请求计算设备。
20.根据权利要求19所述的方法,还包括:
当与所述源名称相关联的所述值不是所述源名称的持久值时,确定无法确定持久值,并为与所述源名称相关联的所述值选择先前存储的值,并将所述先前存储的值传输到所述请求的计算设备。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/613,531 | 2017-06-05 | ||
US15/613,531 US10372381B2 (en) | 2017-06-05 | 2017-06-05 | Implicit leader election in a distributed storage network |
PCT/IB2018/053932 WO2018224925A1 (en) | 2017-06-05 | 2018-06-01 | Distributed storage network |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110663031A true CN110663031A (zh) | 2020-01-07 |
CN110663031B CN110663031B (zh) | 2022-12-30 |
Family
ID=64459663
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880034636.4A Active CN110663031B (zh) | 2017-06-05 | 2018-06-01 | 分布式存储网络 |
Country Status (6)
Country | Link |
---|---|
US (3) | US10372381B2 (zh) |
JP (1) | JP7015848B2 (zh) |
CN (1) | CN110663031B (zh) |
DE (1) | DE112018001561B4 (zh) |
GB (1) | GB2576468B (zh) |
WO (1) | WO2018224925A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111488333A (zh) * | 2020-05-18 | 2020-08-04 | 网易(杭州)网络有限公司 | 数据处理方法及装置、存储介质和电子设备 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10372381B2 (en) * | 2017-06-05 | 2019-08-06 | International Business Machines Corporation | Implicit leader election in a distributed storage network |
US10671482B2 (en) * | 2017-09-12 | 2020-06-02 | Cohesity, Inc. | Providing consistency in a distributed data store |
CN114338695B (zh) * | 2022-03-10 | 2022-05-24 | 深圳艾灵网络有限公司 | 基于多副本的领导者选举方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110161681A1 (en) * | 2008-03-31 | 2011-06-30 | Cleversafe, Inc. | Directory synchronization of a dispersed storage network |
CN104412218A (zh) * | 2012-06-19 | 2015-03-11 | 株式会社东芝 | 存储控制程序的存储介质、控制信息处理设备的方法、信息处理系统,以及信息处理设备 |
CN106233259A (zh) * | 2014-04-30 | 2016-12-14 | 国际商业机器公司 | 在分散存储网络中检索多世代存储数据 |
US20170019466A1 (en) * | 2011-12-12 | 2017-01-19 | International Business Machines Corporation | Method for managing throughput in a distributed storage network |
CN106575527A (zh) * | 2014-04-02 | 2017-04-19 | 国际商业机器公司 | 生成用于数据存储的分子编码信息 |
Family Cites Families (77)
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 |
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 |
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 |
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 |
AU2002214659A1 (en) | 2000-10-26 | 2002-05-06 | James C. Flood Jr. | Method and system for managing distributed content and related metadata |
US7140044B2 (en) | 2000-11-13 | 2006-11-21 | Digital Doors, Inc. | Data security system and method for separation of user communities |
US8176563B2 (en) | 2000-11-13 | 2012-05-08 | DigitalDoors, Inc. | Data security system and method with editor |
US7103915B2 (en) | 2000-11-13 | 2006-09-05 | Digital Doors, Inc. | Data security system and method |
US7146644B2 (en) | 2000-11-13 | 2006-12-05 | Digital Doors, Inc. | Data security system and method responsive to electronic attacks |
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 |
US20020165942A1 (en) | 2001-01-29 | 2002-11-07 | Ulrich Thomas R. | Data path accelerator with variable parity, variable length, and variable extent parity groups |
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 |
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 |
US7171493B2 (en) | 2001-12-19 | 2007-01-30 | The Charles Stark Draper Laboratory | Camouflage of network traffic to resist attack |
AU2003263800B2 (en) | 2002-07-29 | 2008-08-21 | Robert Halford | Multi-dimensional data protection and mirroring method for micro level 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 |
EP1618478A4 (en) | 2003-03-13 | 2007-10-03 | Drm Technologies L L C | CONTINUOUSLY CONTINUOUS CONTAINER |
US7185144B2 (en) | 2003-11-24 | 2007-02-27 | Network Appliance, Inc. | Semi-static distribution technique |
GB0308262D0 (en) | 2003-04-10 | 2003-05-14 | Ibm | Recovery from failures within data processing systems |
GB0308264D0 (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 |
US7613945B2 (en) | 2003-08-14 | 2009-11-03 | Compellent Technologies | Virtual disk drive system and method |
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 |
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 | 株式会社日立製作所 | ストレージ装置及びストレージ管理装置 |
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 |
US8171101B2 (en) | 2005-09-30 | 2012-05-01 | Cleversafe, Inc. | Smart access to a dispersed data storage network |
US7546427B2 (en) | 2005-09-30 | 2009-06-09 | Cleversafe, Inc. | System for rebuilding dispersed data |
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 |
US7904475B2 (en) | 2007-10-09 | 2011-03-08 | Cleversafe, Inc. | Virtualized data storage vaults on a dispersed data storage network |
US8285878B2 (en) | 2007-10-09 | 2012-10-09 | Cleversafe, Inc. | Block based access to a dispersed data storage network |
US7574570B2 (en) | 2005-09-30 | 2009-08-11 | Cleversafe Inc | Billing system for information dispersal system |
US7574579B2 (en) | 2005-09-30 | 2009-08-11 | Cleversafe, Inc. | Metadata management system for an information dispersed storage system |
US20070214285A1 (en) | 2006-03-08 | 2007-09-13 | Omneon Video Networks | Gateway server |
US8549351B2 (en) | 2007-10-09 | 2013-10-01 | Cleversafe, Inc. | Pessimistic data reading in a dispersed storage network |
US10372686B2 (en) | 2009-12-29 | 2019-08-06 | International Business Machines Corporation | Policy-based storage in a dispersed storage network |
EP2885711B1 (en) | 2013-10-18 | 2016-08-24 | Hitachi Data Systems Engineering UK Limited | Target-driven independent data integrity and redundancy recovery in a shared-nothing distributed storage system |
US10069915B2 (en) * | 2015-02-27 | 2018-09-04 | International Business Machines Corporation | Storing data in a dispersed storage network |
US10372381B2 (en) * | 2017-06-05 | 2019-08-06 | International Business Machines Corporation | Implicit leader election in a distributed storage network |
-
2017
- 2017-06-05 US US15/613,531 patent/US10372381B2/en not_active Expired - Fee Related
-
2018
- 2018-06-01 JP JP2019565516A patent/JP7015848B2/ja active Active
- 2018-06-01 WO PCT/IB2018/053932 patent/WO2018224925A1/en active Application Filing
- 2018-06-01 CN CN201880034636.4A patent/CN110663031B/zh active Active
- 2018-06-01 DE DE112018001561.0T patent/DE112018001561B4/de active Active
- 2018-06-01 GB GB1918307.8A patent/GB2576468B/en active Active
-
2019
- 2019-07-08 US US16/504,659 patent/US11204723B2/en active Active
-
2021
- 2021-11-11 US US17/524,280 patent/US11620087B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110161681A1 (en) * | 2008-03-31 | 2011-06-30 | Cleversafe, Inc. | Directory synchronization of a dispersed storage network |
US20170019466A1 (en) * | 2011-12-12 | 2017-01-19 | International Business Machines Corporation | Method for managing throughput in a distributed storage network |
CN104412218A (zh) * | 2012-06-19 | 2015-03-11 | 株式会社东芝 | 存储控制程序的存储介质、控制信息处理设备的方法、信息处理系统,以及信息处理设备 |
CN106575527A (zh) * | 2014-04-02 | 2017-04-19 | 国际商业机器公司 | 生成用于数据存储的分子编码信息 |
CN106233259A (zh) * | 2014-04-30 | 2016-12-14 | 国际商业机器公司 | 在分散存储网络中检索多世代存储数据 |
Non-Patent Citations (1)
Title |
---|
何沅泽 等: "应用于分布式存储系统的网络编码方法研究", 《计算机应用》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111488333A (zh) * | 2020-05-18 | 2020-08-04 | 网易(杭州)网络有限公司 | 数据处理方法及装置、存储介质和电子设备 |
CN111488333B (zh) * | 2020-05-18 | 2023-07-11 | 网易(杭州)网络有限公司 | 数据处理方法及装置、存储介质和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
JP7015848B2 (ja) | 2022-02-03 |
GB2576468A (en) | 2020-02-19 |
GB2576468B (en) | 2020-07-08 |
WO2018224925A1 (en) | 2018-12-13 |
US20220066644A1 (en) | 2022-03-03 |
US10372381B2 (en) | 2019-08-06 |
DE112018001561B4 (de) | 2021-04-08 |
US20190332273A1 (en) | 2019-10-31 |
US11620087B2 (en) | 2023-04-04 |
DE112018001561T5 (de) | 2019-12-24 |
JP2020524324A (ja) | 2020-08-13 |
GB201918307D0 (en) | 2020-01-29 |
CN110663031B (zh) | 2022-12-30 |
US20180349039A1 (en) | 2018-12-06 |
US11204723B2 (en) | 2021-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10268593B1 (en) | Block store managamement using a virtual computing system service | |
CN110663031B (zh) | 分布式存储网络 | |
US20170123848A1 (en) | Multi-task processing in a distributed storage network | |
US10185507B1 (en) | Stateless block store manager volume reconstruction | |
US10904337B2 (en) | Zone storage—resilient and efficient storage transactions | |
US11507283B1 (en) | Enabling host computer systems to access logical volumes by dynamic updates to data structure rules | |
US10416898B2 (en) | Accessing data in a dispersed storage network during write operations | |
US10007438B2 (en) | Method and system for achieving consensus using alternate voting strategies (AVS) with incomplete information | |
US10536525B2 (en) | Consistency level driven data storage in a dispersed storage network | |
JP2018524705A (ja) | データ転送中にデータアクセス要求を処理するための方法及びシステム | |
US9998147B1 (en) | Method for using write intents in a distributed storage network | |
GB2565932B (en) | Storing data in dispersed storage network with consistency | |
US10157021B2 (en) | Processing incomplete data access transactions | |
US10809920B1 (en) | Block store management for remote storage systems | |
US10379961B2 (en) | Ensuring metadata and index consistency using write intents | |
US10594793B2 (en) | Read-prepare requests to multiple memories | |
US10437677B2 (en) | Optimized distributed rebuilding within a dispersed storage network | |
US10728334B1 (en) | Compare-and-swap rebuilder for a distributed storage network | |
US20240045777A1 (en) | Processing of Data Access Requests in a Storage Network | |
US10956266B2 (en) | Processing data access transactions in a dispersed storage network using source revision indicators | |
US20200311047A1 (en) | Establishing distributed consensus via alternate voting strategies in a dispersed storage network | |
US10440115B2 (en) | Write intent messaging in a dispersed storage network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |