CN106687943A - 组织具有多个计算机的计算***、在计算机之中分配计算任务、以及在计算机***中维护数据完整性与冗余的***和方法 - Google Patents

组织具有多个计算机的计算***、在计算机之中分配计算任务、以及在计算机***中维护数据完整性与冗余的***和方法 Download PDF

Info

Publication number
CN106687943A
CN106687943A CN201580046118.0A CN201580046118A CN106687943A CN 106687943 A CN106687943 A CN 106687943A CN 201580046118 A CN201580046118 A CN 201580046118A CN 106687943 A CN106687943 A CN 106687943A
Authority
CN
China
Prior art keywords
computer
unit
computational entity
file
network
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
Application number
CN201580046118.0A
Other languages
English (en)
Other versions
CN106687943B (zh
Inventor
斯特凡诺·巴尔加尼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seni Space Co ltd
Senj
Original Assignee
\
Senyi Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by \, Senyi Co Ltd filed Critical \
Priority claimed from PCT/US2015/040590 external-priority patent/WO2016032634A1/en
Publication of CN106687943A publication Critical patent/CN106687943A/zh
Application granted granted Critical
Publication of CN106687943B publication Critical patent/CN106687943B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/78Architectures of resource allocation
    • H04L47/783Distributed allocation of resources, e.g. bandwidth brokers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • G06F11/1662Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

计算***具有经由计算机网络所连接的多个计算机,以形成计算实体。计算机中的每一个充分独立于其他的计算机运行并且被配置用来:当计算机被连接到计算网络的时候,询问该计算机网络的网络基础设施来确定该计算实体的标识,并且因此通过在该计算实体中宣告它的存在来加入该计算网络;基于网络基础设施中的连接性配置,确定在该计算机实体中的计算机的标识符,以及基于在该实体中的计算机的现有数据,假设角色以执行经由计算机网络发往该计算机实体的计算请求的那部分操作;如果存在被分配给该计算机的计算工作的话,基于该计算工作的标识信息以及用于处理该计算工作的存在于该计算网络中的一系列计算设备的标识符,来标识被分配给该计算机的那部分计算工作;用规则引擎将一组预先确定的规则采用到与计算网络中的计算机的现有数据的改变相关的情况中,该计算网络形成计算实体,在该计算实体中多储存的数据被分配在计算机之间用于冗余以及数据恢复。

Description

组织具有多个计算机的计算***、在计算机之中分配计算任 务、以及在计算机***中维护数据完整性与冗余的***和 方法
相关申请
本申请要求递交于2015年4月20日、名为“SYSTEMS AND METHODS TO DISTRIBUTECOMPUTING TASK AMONG MULTIPLE COMPUTERS(用于在多个计算机之中分配计算任务的***和方法)”的美国专利申请序列号为14/691,301,递交于2015年4月20日、名为“SYSTEMSAND METHODS TO ORGANIZE A COMPUTING SYSTEM HAVING MULTIPLE COMPUTERS(用于组织具有多个计算机的计算***的***和方法)”的美国申请序列号为14/691,316,递交于2015年4月20日、名为“SYSTEMS AND METHOD TO MAINTAIN DATA INTEGRITY AND REDUNDANCYIN A COMPUTING SYSTEM HAVING MULTIPLE COMPUTERS(在具有多个计算机的计算机***中维护数据完整性与冗余的***和方法)”的美国专利申请序列号为14/691,324的优先权;以及递交于2014年8月29日、名为“SYSTEMS AND METHODS TO CONFIGURE DATA STORAGEAND PROCESSING WITH REDUNDANCY AND EFFICIENCY(用于配置数据存储和处理冗余和效率的***和方法)”的美国临时专利申请序列号为62/044,140的优先权,上述申请通过引用全部结合于此。
技术领域
在本公开中所表示的至少一些的实施例总体上涉及分布式计算,具体但不局限于用冗余进行的数据存储。
背景技术
目前的存储网络方案(例如,企业级的方案)主要基于使用由少数CPU/核来控制一些盘的阵列的服务器。基于在盘阵列中分配数据/信息的片段或块,实现冗余和错误更正的策略(例如,廉价硬盘的冗余阵列或独立硬盘的冗余阵列(RAID))。CPU服务在各种通信协议中所做出的输入/输出(I/O)请求,诸如http、ftp、samba等等。
在这种方案中,因为通常在硬盘方面具有的瓶颈,所以通过添加CPU来加速服务器的执行并不普遍。在阵列中添加硬盘,要求阵列的重新形成。添加CPU和添加硬盘的两种操作都可能要求该服务的临时暂停。维护操作(诸如在阵列中放置硬盘)也可能引起服务的暂停或质量下降。
美国专利申请公布序列号2013/0346794公开了一种***,用于当在存储设备组中的存储设备发生故障时恢复冗余。这种***用专用备件来增加冗余和/或更正问题,并且任何存储位置都是使用专用备件的存储设备组的一部分。
KR20130133264公开了一种实现冗余的***,其中每一个存储单元被配置以具有相应的单元以反映正在存储的数据。
CN103297547公开了一种构建云存储辅助***的方法,其中在P2P存储中的数据有效性由用马尔科夫模型执行的数据动态建模所预测,并且因此,由于数据被云读取的事实,带宽成本被有效地降低。
美国专利申请公布序列号2012/0054280公开了相关联的用户之间共享云数据资源。
CN102984280公开了社交云存储网络应用,该应用使用主逻辑节点、多个连续节点、以及多个数据节点。
TW201234809公开了一种方法,基于由云存储访问***所执行的社交网络的用于显示数据对象。
附图说明
图1根据一个实施例,示出连接多个单元计算机计算机网络以形成计算***的计算机网络;
图2根据一个实施例,示出在计算机网络上由多个单元计算机所形成的计算实体;
图3根据一个实施例,示出配置用于计算实体的单元计算机的自动操作;
图4根据一个实施例,示出到计算机实体中的一组单元计算机的计算任务的分配;
图5根据一个实施例,示出配置计算***的方法;
图6根据一个实施例,示出配置被添加到计算***的计算机的方法;
图7根据一个实施例,示出操作计算***中的计算机的方法;
图8根据一个实施例,示出分配与文件有关的计算任务到计算***中的计算机的子集的方法;
图9根据一个实施例,示出分配与文件有关的计算任务到计算机***中的计算机的子集的示例;
图10根据一个实施例,示出维护数据冗余和完成性的方法;
图11根据一个实施例,示出从具有用冗余所储存的文件的计算***中移除计算机的方法;
图12根据一个实施例,示出在具有用冗余所储存的文件的计算***中添加计算机的方法;
图13根据一个实施例,示出提出访问储存在计算***中的多个计算机中的文件的请求的方法;
图14根据一个实施例,示出改变在计算***中的计算机的可用性方法,该计算机***被配置以用冗余储存文件;
图15根据一个实施例,示出配置数据存储的***;
图16根据一个实施例,示出标识用于储存或处理一部分文件的计算设备的方法;
图17根据一个实施例,示出可以在计算***中使用的计算机;
图18-图20根据一个实施例,示出在计算***中的计算机的生命期。
具体实施方式
说明概述
本部分中总结了一些实施例,用于组织具有多个计算机的计算***、在计算机之间分配计算任务、以及在计算***中维护数据的完整性和冗余。
一方面,实施例包括计算设备,该计算设备被配置来标识所分配给计算设备的那部分计算工作(如果存在的话),基于该计算工作的标识信息以及计算网络中存在的一系列计算设备的标识符,来处理该计算工作。部分由独立于在计算网络中的其他计算设备的计算机设备所标识。例如,基于预先确定的计算功能,计算设备可以将计算工作的标识信息映射到计算设备的一组标识符。标识符中的每一个对应于计算工作的预先确定的部分。如果标识符中的一个对应于计算设备的标识符,那么计算设备执行与所映射的标识符相关联的计算任务的预先确定的部分。
另一方面,实施例包括具有经由用于形成计算实体的计算机网络所连接的多个计算机的计算***。计算机中的每一个充分独立于其他计算机操作。计算机中的每一个被配置来当计算机被连接到计算机网络的时候,询问计算机网络中的网络基础设施以确定计算实体的标识,并且因此通过在该计算实体中宣告它的存在而加入计算实体。计算机中的每一个被配置以基于在网络基础设施中的连接性配置,来确定在计算实体中的计算机的标识符,并且基于在实体中的计算机的现有数据,来假设用来执行经由计算机网络朝向计算实体的计算请求的一部分操作的角色。
另一方面,实施例包括被配置以规则引擎的计算设备,以将一组预先确定的规则应用于与形成计算实体的计算网络中的计算机的现有数据的变化相关的情况,在这种情况中,在计算实体中所储存的数据在计算机之间被分配用于冗余和数据恢复。响应于先前在计算实体中存在的计算机的缺少,规则使得计算设备与计算机的一个或多个进行通信以执行数据恢复和用冗余储存该缺少的计算机的数据。响应于添加新的计算机到计算实体中,规则使得计算设备与计算机的一个或多个进行通信以横跨计算实体重新分配数据,以使用由新的计算机所提供的存储容量。
本公开包括方法和执行这些方法的装置,包括执行这些方法的数据处理***、以及包含指令的计算机可读介质,当该指令在数据处理***上被执行的时候处理***使得该***执行这些方法,
通过下文的附图和详细描述,其他特征将是显而易见的。
具体实施例
本公开包括允许用于电子数据的存储***的实现方式的技术,其中根据表现和空间,***可以被虚拟地和无限地扩展。
在一个实施例中,本文所呈现的技术使用一组专用的软件指令,该指令被配置以间接得知硬件故障,并且因此能够自动地围绕故障工作,并且作为整体维护所储存的数据以及***的完整性与可靠性。
在一个实施例中,数据存储***被配置为社交云,作为计算实体来操作,该计算实体包括作为计算单元来操作的多个单元计算机(cell computer),该计算单元被配置来提供校验和可用性。
例如,相对于校验,一个实施例中的实体中的任何单元可以由该角色的任何其他设备而容易地替代(例如,基于点对点策略),并且相对于可用性,在***中的数据和硬件具有冗余。
图1根据一个实施例,示出连接用于形成计算***的多个单元计算机的计算机网络。
在图1中,一组单元计算机(101)可以经由一组网络设备(103)(诸如网络交换器、路由器、网关等等)连接到计算机网络上。在单元计算机(101)连接到计算机网络之前,最初单元计算机(101)可以在软件和/或硬件中被完全相同地配置。一旦连接到网络设备(103),在一个实施例中,该单元计算机(101)被配置来针对在计算实体中的计算角色为它们自己自动地分配独特的标识符。
例如,在网络设备(103)的网络连接性层级中,被连接到相应的网络设备(103)的单元计算机(101)中的每一个具有独特的位置。在网络连接性层级中存在的独特的位置可以被映射到独特的标识符。因此,如果不同的单元计算机(101)在相同的独特的位置代替相应的单元计算机(101),那么不同的单元计算机(101)被分配相同的独特的标识符。
在一个实施例中,单元计算机(101)中的每一个都被配置来与网络基础设施进行通信以在网络连接性层级中标识它的独特的位置并且用预先确定的方案或功能使得位置信息对于独特的标识符可用。因此,一旦被连接到计算机网络中,基于与该网络基础设施的通信,单元计算机(101)中的每一个能够计算/确定在计算实体/***中它的独特的标识符。
在一个实施例中,基于相应的单元计算机(101)将要连接到的计算机网络的特征,单元计算机(101)中的每一个还可以被配置来自动地确定相应的单元计算机(101)将要加入的计算机实体的标识。
例如,一旦被连接到计算机网络上,单元计算机(101)被配置以与网络基础设施进行通信以确定计算机网络的域名,并且用域名作为计算机实体的标识符,或用域名来计算计算机实体的标识符。单元计算机(101)之后被配置以加入由计算机实体标识符所标识的计算机实体/***。因此,相同地被配置的单元计算机(101)可以仅仅连接到具有不同域名的计算机网络中,以加入对应该域名的相应的计算实体。
图2根据一个实施例,示出经由计算机网络由多个单元计算机(101)所形成的计算实体。
在图2中,计算机网络(105)包括如图1所示出的网络设备(103)。当相应的单元计算机(101)被连接到计算机网络(105)的时候,单元计算机(101)中的每一个计算计算机实体标识符。因为基于与计算机网络(105)相同的域名来计算机实体标识符,所以单元计算机(101)加入相同的计算实体(107)中。
在一个实施例中,单元计算机(101)中的每一个被配置以在计算实体(107)中传播单元计算机(101)的现有信息。例如,当单元计算机(101)被连接到计算机网络(105)上的时候,该单元计算机(101)被配置来与网络基础设施进行通信以计算它的独特的标识符,并且在计算机网络(105)中宣告它的存在和独特的标识符,使得在网络中的与该单元计算机(101)相邻的其他单元计算机(101)得知该单元计算机(101)存在于计算实体(107)中。
在一个实施例中,每一个相应的单元计算机(101)被配置来在相应的单元计算机(101)中储存单元计算机(101)的现有数据,包括相应的单元计算机(101)得知的单元计算机(101)的一系列独特的标识符。例如,如果相应的单元计算机(101)在计算机网络(105)中观察到宣告新的单元计算机(101)的存在的信息,该相应的单元计算机(101)被配置来添加新的单元计算机(101)到它的现有列表中。
此外,当现有数据发生变化的时候,每一个相应的单元计算机(101)可以向它的现有列表上中的每一个单元计算机(101)提供通知消息以传播该变化。在一些实施例中,单元计算机(101)中的每一个等待某个随机时间段以推送出它的关于该变化的通知。
因此,在计算实体(107)中,单元计算机(101)中的每一个得知该计算实体(107)中的其他单元计算机(101)的可用性。基于现有数据以及预先确定的算法,计算实体(107)中的单元计算机(101)中的每一个可以将它自己与计算实体(107)所共享的计算任务从其他单元计算机(101)的操作中独立地标识/分配。
图3根据一个实施例,示出配置用于计算实体(107)的单元计算机的自动操作。在图3中,一旦被连接到计算机网络(105)中,每一个单元计算机(101)被配置来与网络基础设施(诸如,网络设备(103))进行通信以自动地确定它的网络配置数据,诸如因特网(IP)地址(117)、计算机网络(105)的域名(113)、以及在网络设备(103)的连接性层级中的单元计算机(101)的网络连接性位置(115)。
例如,网络设备(103)中的每一个具有多个端口。网络设备(103)的每个端口具有独特的标识符。到端口的连接由该端口的独特的标识符所标识;并且从单元计算机(101)到顶层网络设备(103)(诸如,顶层网关)的对具体端口的连接的层级表示单元计算机(101)的独特的网络连接性位置(115)。
在图3中,在独特的网络连接性位置(115)处所连接的单元计算机(101)的独特的单元标识符(123)是从独特的网络连接性位置(115)中所计算,并且单元计算机(101)所加入的计算实体(107)的实体标识符(121)是从域名(113)中所计算。因此,基于网络配置数据(111),单元计算机(101)配置它自己在计算实体(107)中的角色。
在一个实施例中,计算实体(107)被配置来针对接收的请求分配计算机任务给计算实体(107)中的单元计算机(101)的子集。在一个实施例中,单元计算机(101)中的每一个包含在计算实体(107)中的其他单元计算机(101)的现有信息,并且在相同的数据上采用相同的算法(包括现有信息)来对任务的分配进行计算。因此,针对在计算实体(107)中所接收的给定的计算请求,每一个相应的单元计算机(101)能够确定单元计算机(101)的标识,该标识被分配来执行用于计算请求的任务的预先确定的部分,并且每一个相应的单元计算机(101)标识与执行被分配给相应的单元计算机(101)的部分。因此,每一个相应的单元计算机(101)能够自我分配计算任务的正确部分。
图4根据一个实施例,示出到计算实体(107)中的一组单元计算机(101)的计算任务的分配。在图4中,现有映射(125)包括在计算实体(107)中的单元计算机(101)的单元标识符(123)之间的映射,以及用于网络通信的单元计算机(101)的IP地址(117)(或者其他类型的网络地址)。
在一个实施例中,针对给定的全局请求标识符(129)(诸如将被储存在计算实体(107)中的文件的文件名),用于处理请求的操作被分成预先确定的数量的任务(127)。例如,任务(127)中的每一个可以对应于用冗余或同等物来储存该文件的数据的预先确定的部分。向任务(127)分配单元计算机(101)的子集,预先确定的算法被用于现有映射(125)和全局请求标识符(129)来计算单元标识符(123)(并且因此他们对应于IP地址(117))。
例如,单元标识符(123)可以被配置为在预先确定的范围(诸如,虚拟IP地址)内的数字,以及散列函数可以被用于预先确定的范围的全局请求标识符(129)。散列函数可以递归地被用于计算在现有映射内(125)的多个单元标识符(123)。用于为相应的任务(127)选择IP地址(117)的其他方法可以被使用。因此,本公开不局限于散列函数的实现方式。
在一个实施例中,针对相应的任务(127)的IP地址(117)的选择基于全局请求标识符(129),使得不同的请求被分配给单元计算机(101)的不同的子集用于在计算实体(107)中的单元计算机(101)之间的自动负载平衡。
在一个实施例中,由于在计算实体(107)中的单元计算机(101)中的每一个维护相同的现有映射(125)、接收相同的全局请求标识符(129)、并且使用相同的算法/函数来计算所分配用于执行任务的单元计算机(101)的IP地址(117)的所选中的单元标识符(123),所以单元计算机(101)可以计算出相同的结果。因此,单元计算机(101)中的每一个仅仅确定是否有分配给它们自己的任务(127),并且如果有的话则执行相应的任务(127)。
图5根据一个实施例,示出配置计算***的方法。在图5中,在具有相同的配置的多个可互换的单元计算机(101)以如图1与图2所示的方式被连接到(201)计算机网络(105)之后,该单元计算机(101)基于计算机网络(105)的网络标识被组织(203)进入计算实体(107)。由于单元计算机(101)中的每一个可以获得独立于彼此的计算机网络(105)的网络标识,单元计算机(101)中的每一个可以被配置来计算它所加入的计算实体(107)的独立于其他单元计算机(101)的实体标识符(121)。
在图5中,基于网络配置数据(111)(例如,网络连接性位置(115)),单元标识符(123)被分配(205)给单元计算机(101)。由于单元计算机(101)中的每一个可以独立于彼此获得它的网络配置数据(111),单元计算机(101)中的每一个可以被配置来计算它的独立于其他单元计算机(101)的单元标识符(123)。
在图5中,基于被分配给单元计算机(101)的单元标识符(123),单元计算机(101)的角色被分配(207)给计算实体(107)中的单元计算机(101)。因此,基于由自我分配的标识符(123)以及分配方案预先确定的作用,单元计算机(101)可以自我分配它们在计算机实体(107)中的作用。
在图5中,单元计算机(101)在计算实体(107)内传送(209)具有它们相应地被分配的单元标识符(123)的单元计算机(101)的存在。因此,当计算机网络(105)中将被传播的现有数据不存在更多的变化的时候,单元计算机(101)中的每一个具有在计算实体(107)中的单元计算机(101)的单元标识符(123)的相同的完整列表和用于与彼此通信的它们相应的网络地址。
在图5中,基于具有所分配的单元标识符(123)的单元计算机(101)的现有数据,计算实体(107)被配置来分配(211)计算任务(127)给单元计算机(101)。由于单元计算机(101)中的每一个在它们的现有数据中具有单元标识符(123)的相同的完整列表,所以单元计算机(101)中的每一个可以独立于其他单元计算机(101)标识那些分配给它们自己的任务(127)。
在图5中,如果(213)新的单元计算机(101)被加入到计算机网络(105)中,新的单元计算机(101)基于计算机网络(105)的网络标识符被组织(203)到计算实体(107)中。如果(213)现有的单元计算机(101)从计算机网络(105)中被移除,在计算实体(107)中剩余的单元计算机(101)与彼此进行通信(209)以更新它们的现有数据。
如果现有的单元计算机(101)在相同的网络连接性位置(115)被新的单元计算机(101)所代替(例如,被连接到相同的网络设备(103)的相同的端口),那么该新的单元计算网络(101)在该计算实体(107)中自动地替代现有的单元计算机(101)的角色。
因此,通过自动操作,人力在维护以及配置计算实体(107)过程中的介入被减少和/或最小化。
图6根据一个实施例,示出配置所添加到计算***中的计算机的方法。
在图6中,在单元计算机(101)被连接(231)到计算机网络(105)之后,单元计算机(101)与计算网络(105)进行通信以自动地配置单元计算机(101)的网络参数,诸如来自动态主机配置协议(DHCP)的服务器的IP地址(117)。单元计算机(101)之后自动地与计算网络(105)进行通信(235)以标识在连接性层级中的单元计算机(101)的网络连接性位置(115)(例如,经由链路层发现协议(LLDP)查询)。基于诸如计算机网络(105)的域名(113)的网络参数,单元计算机(101)确定(237)计算实体(107)的实体标识符(121);基于单元计算机(101)的网络连接性位置(115),从多个预先确定的作用中选择选单元计算机(101)的作用。
在图6中,单元计算机(101)宣告(241)该单元计算机(101)在计算实体(107)中的存在;标识(243)在计算实体(107)中的其他单元计算机(101);基于在计算实体(107)中的其他单元计算机(101)的标识,标识(245)与该角色相关联的一组任务(127);以及在计算实体(107)中执行(247)该组任务(127)。
图7根据一个实施例,示出在计算机***中操作计算机的方法。
在图7中,在启动(251)所连接到计算机网络(105)的单元计算机(101)的之后,该单元计算机(101)自动地与服务器进行通信(253)以配置连接到计算机网络(105)的单元计算机(101)的网络接口。单元计算机(101)确定(255)单元计算机(101)的域名(113)用于所连接到计算机网络(105)的网络接口;从域名(113)计算(257)计算实体(107)的实体标识符(121);询问(259)(诸如,经由LLDP询问)网络基础设施,来确定基础设施中网络接口的独特的位置;以及,从表示网络基础设施中网络接口的独特的位置的数据中,计算(261)在计算机实体(107)中的单元计算机(101)的独特的单元标识符(123)。
在获得(263)计算实体(107)中的单元计算机(101)的单元标识符(123)的列表之后,针对对于计算实体(107)的给定请求并且基于在单元计算机(101)上的现有映射(125)中所剩余的单元标识符(123)的列表,单元计算机(101)确定(265)将在单元计算机(101)上被实现的那部分请求。
在一个实施例中,将要在单元计算机(101)上所实现的那部分请求还基于给定请求的全局请求标识符(129)(诸如将要在计算实体(107)中储存的文件的名称)所确定。
在一个实施例中,所使用的分布式散列表(DHT)方法将被用作在单元之间的通信协议来传送存在和断开(例如,如由Lon Stoica等人在“Chord:A scalable Peer-to-peerLookup Service for Internet Applications(弦:针对互联网应用可调整点对点查找服务,其于2001年8月27-31日在美国加州圣地亚哥的SIGCOMM’01所指出、并且发表于2003年2月IEEE/ACM汇刊,Networking,Vol.11,第一期第17-32页))”中所公开的。
图8根据一个实施例,示出将与文件相关的计算任务(127)分配给计算机***中的计算机的子集的方法。
在图8中,在具有多个单元计算机(101)的计算机实体(107)中储存(271)计算机实体(107)中用来标识单元计算机(101)的存在的现有数据(诸如,125)之后,计算机实体(107)接收(273)请求以储存具有文件名的文件。依据预先确定的方案,文件在计算实体(107)中的储存被分成(275)多个操作。为了将多个操作/任务(127)分配给多个单元计算机(101),对于文件名采用(277)散列方案以获得用来标识(279)多个单元计算机(101)的多个散列值。
在一个实施例中,在计算实体(107)中的单元计算机(101)被配置来计算散列值以标识(279)多个平行的单元计算机,并且确定它们是否被分配以执行任何和/或哪些操作。
因此,由散列值所标识的多个单元计算机(101)中的每一个相应的单元计算机(101),自我分配(281)相应的操作。
图9根据一个实施例,示出将与文件相关的计算任务(127)分配给计算***中的计算机的子集的示例。
在图9中,在标识多个单元计算机(101)的存在的现有映射(125)被储存(291)在计算实体(107)的单元计算机(101)中之后,单元计算机(101)在计算实体(107)中接收(293)对于储存具有文件名的文件的请求,其中该文件在计算实体(107)中的储存被预先分为多个任务(127),诸如保存该文件的元数据、保存文件的副本或文件的一部分、计算用于缓存的校验数据、保存校验数据等等。
在图9中,单元计算机(101)将散列方案用于文件名以获得多个散列值,每一个散列值对应任务(127)中的一个,并且每一个散列值对应计算实体(107)中的单元计算机(101)中的一个。
单元计算机(101)确定(297)是否有散列值自身对应于单元计算机(101)的标识,如果有的话,则执行(299)与自身对应于单元计算机(101)的标识的散列值相关联的任务(127)。
图10根据一个实施例,示出维护数据冗余和完整性的方法。在图10中,具有多个单元计算机(101)的计算实体(107)储存现有映射(125),该现有映射(125)标识计算实体(107)中的单元计算机(101)的存在。单元计算机(101)中的每一个储存(303)一组规则,并且被规则引擎所配置以执行该规则。
在图10中,响应于在计算实体(107)中的数据操作和现有映射(125)的改变,单元计算机(101)向规则引擎提供(307)输入。基于规则在规则引擎的控制下,单元计算机(101)与彼此进行通信以维护数据冗余和完整性。
图11根据一个实施例,示出将计算机从具有用冗余所储存的文件的计算***中移除的方法。
在图11中,在检测到(311)单元计算机(101)从计算实体(107)的缺少之后,在计算实体(107)中剩余的单元计算机(101)的规则引擎使得剩余的单元计算机(101)传播关于单元计算机(101)在计算实体(107)中的缺少的信息,以更新(313)在计算实体(107)中的剩余单元计算机(101)的现有映射(125);标识(315)在计算实体(107)中的文件,该文件具有先前所储存在单元计算机(101)上的部分;以及在计算实体(107)的剩余的单元计算机(101)之间进行通信以恢复用于储存计算实体(107)中的文件的数据冗余。
图12根据一个实施例,示出将计算机添加到具有用冗余所储存的文件的计算***的方法。
在图12中,在检测到(321)所添加到计算实体(107)的新的单元计算机(101)的存在之后,在计算实体(107)中的单元计算机(101)的规则引擎传播(323)关于单元计算机(101)在计算实体(107)中存在的信息,标识(325)将被部分地储存在新的单元计算机(101)上的文件,以及在计算实体(107)中的单元计算机(101)之间进行通信(327)以生成用于在新的单元计算机(101)上储存的那部分文件。
图13根据一个实施例,示出请求访问储存在计算***的多个计算机中的文件的方法。
在图13中,在单元计算机(101)接收(331)访问被储存在具有多个单元计算机(101)的计算实体(107)中的文件的请求之后,单元计算机(101)标识(333)计算实体(107)中的多个单元计算机(101),该多个计算机(101)储存部分用于该文件的数据。单元计算机(101)的规则引擎指导单元计算机(101)与多个单元计算机(101)进行通信以核实针对该文件的数据完整性,并且响应于核实该文件的数据完整性的过程中发生的故障而执行(337)数据恢复。
图14根据一个实施例,示出改变所配置以用冗余储存文件的计算***中的计算机可用性的方法。
在图14中,在单元计算机(101)接收(341)计算实体(107)中的单元计算机(101)的现有数据的改变之后,单元计算机(101)的规则引擎被配置以检查该改变带来的影响。
例如,规则引擎标识(343)储存在单元计算机(101)中的文件,规则引擎在该单元计算机(101)上运行并且标识(345)多个单元计算机(101),多个单元计算机(101)中的每一个被分配来储存文件的一部分数据。规则引擎确定(347)在现有数据中的改变是否引起在被分配来储存文件的数据的多个单元计算机的标识中的改变,并且如果存在标识的改变,则规则引擎开始更新(349)计算实体(107)中的文件的数据。
例如,在现有数据改变之前,如在图4中所示出的现有映射(125)分配第一组单元计算机(101)以储存给定文件的数据。在现有数据改变之后,用于储存文件的数据的第一组单元计算机(101)的分配可能改变也可能不改变。如果存在改变,那么单元计算机(101)的规则引擎可以启动数据恢复处理,将数据从单元计算机(101)的第一组中移动到由所更新的现有映射所计算的单元计算机(101)的第二组中。
例如,在改变之后,单元计算机(101)可以不再被分配用于储存文件的任何数据,并且该文件被重新储存在***中一段时间之后,规则引擎可以从单元计算机(101)中删除该文件的数据。
例如,在现有映射(125)改变之后,单元计算机(101)可以确定对于第一组单元计算机(101)中的一个或多个的数据储存分配已经根据现有映射的改变而改变,并且作为响应,规则引擎可以与相应的单元计算机(101)进行通信以更新在其中所存储的数据。
例如,在现有映射(125)发生改变之后,单元计算机(101)可以确定文件的数据的副本将从一个单元计算机(101)被移动到另一个,并且单元计算机(101)的规则引擎被配置以与相应的单元计算机(101)进行通信来安排数据的传输。
例如,在现有映射(125)发生改变之后,单元计算机(101)可以确定另一个单元计算机(101)现在是所分配来储存文件的部分数据的单元计算机(101)的新成员。单元计算机(101)的规则引擎可以与先前所分配来储存文件的规则引擎进行协作来重新获得文件的副本,并且向新成员传送该文件,该新成员可以独立地操作该文件来储存所要求的数据,就如文件是从用户所接收的情况一样。此外,互相分配的单元计算机(101)的组的先前的成员的规则引擎可以标识用于重新获得和/或计算将被储存在新成员中的数据的最高效的方法。
图15根据一个实施例,示出配置数据存储的***。
例如,如图15所示出的社交云具有来自对应于网络中的域(诸如,cynny.com)的一个实体(409)的一组单元(425)(例如,计算机实体(107))的单元计算机(101))。
在图15中,单元中的每一个具有至少CPU(415)、数据存储盘(417)、被配置以软件指令和/或与数据(例如,421、423)相关联的存储器(419)、以及网络接口(413)。
在图15中,通过确定每一个单元(425)被物理地连接到的计算机网络(407)(例如,cynny.com)的域,每一个单元(425)被配置以通过软件指令来确定它所属于的实体(409)。单元(425)可以,例如,经由询问网络网关用标准网络协议来标识域。因此,基于网络配置,被附着到网络(407)的单元(425)可以自动地配置它自己以加入相应的实体(409)。
在图15中,每一个单元(425)被配置以通过从它所连接的网络(407)获得信息以理解它在实体(409)中的角色。例如,单元(425)可以用标准网络协议(诸如LLDP(链路层发现协议))来确定关于它所连接的第一层网络交换(411)和相邻单元(例如,所连接到相同的第一层网络交换(411)的其他单元(425))的信息,关于第一层网络交换所连接的第二层网络交换和相邻单元(例如,连接到相同的第二层级网络交换(411)的其他单元)的信息等等。
例如,在一个实施例中,单元(425)被连接到第一网络交换(411)A上,该第一网络交换(411)A转而连接到数据库配置中的第二网络交换(411)B。用LLDP协议(或其他协议),单元(425)被告知网络配置:单元(425)被连接到网络交换(411)A上的端口X,以及网络交换(411)A被连接到网络交换(411)B上的端口Y。基于这样的网络配置信息,单元(425)确定它在实体(409)中的角色。
例如,单元(425)被配置来解析LLDP询问回答和确定在即时网络(407)(例如,在网络交换(411)A的端口2上)中单元(425)的位置。之后单元解析LLDP询问回答来确定网络交换(411)A的位置(例如,在网络交换(411)B的端口24上)。基于询问结果,单元(425)用确定性的方案计算角色标识符(例如,“24,2”,基于网络交换(411)A的端口2,和网络交换(411)B的端口24)。标识符(例如“24,2”)可以表明单元(425)是否具有储存元数据的角色、储存用户数据的角色、或执行计算服务的角色等等。例如,在一个实施例中,预先确定的规则可以指定:对应于具有第一层网络交换(411)的端口2处的位置的单元(425)的标识符是具有储存元数据的角色的单元(425),并且因此具有样式“*,2”的单元(425)的标识符是被分配为元数据单元(425)的角色的单元(425)。
在一个实施例中,每一个单元(425)与当前存在于网络(407)的其他单元(425)进行通信以配置它自己。单元(425)的网络分析星载软件对该单元自身分配角色,该角色表明由实体(409)中的单元(425)所提供的服务,诸如执行针对实体(409)的某些类型的计算,为实体(409)提供某些数据存储能力等等。单元(425)加入实体以提供对应于角色的服务,并且其他单元(425)可以被告知该单元(425)在实体(409)的存在并且调整他们的操作以利用由该单元(425)所提供的服务。
在一个实施例中,当加入实体(409)的单元(425)无法检测实体(409)的相邻的最小一组单元(425)的时候,单元(425)假设它出现了问题并且开启诊断周期。
在一个实施例中,当单元(425)在网络(407)中启用的时候,单元(425)配置它自己以承担角色。例如,单元(425)中的一些可以被配置以储存文件的元数据(例如,许可、文件类型、共享、冗余),并且其他的单元(425)可以被配置来储存文件(例如,图片、视频等等)的用户数据。当附加的单元(425)被启动以加入实体(409)的时候,单元(425)与彼此进行通信来分配和/或更新角色。
在一些实施例中,实体(409)的具体的单元(425)被配置以执行用于在实体(409)中生成和/或更新VIP映射的计算,并且将VIP映射加入到实体(409)中,该VIP映射由所有其他单元(425)的IPMap(421)软件所使用。此外,通过协商会话中的通信,单元(425)可以分配角色。在一个实施例中,用户接口被提供用来允许用户对于单元(425)进行配置和/或管理对于单元(425)的角色的分配。
在一个实施例中,每个单元(425)具有在实体(409)中当前可用的单元(425)的一组映射。映射可以用网络配置数据(111)标识单元(425)。例如,连接到第一层网络交换(411)的端口2的单元,转而连接到第二层网络交换(411)的端口24上,该单元可用基于标识符“24,2”的位置而被标识。物理的IP地址(441)基于网络位置标识符(443)“24,2”被分配给单元(425)。将被储存的给定的一组数据可以被映射到虚拟IP地址(437)经由预先确定的计算操作(例如,由下文所提供的散列示例)。映射被用来将虚拟IP地址(437)链接到物理IP地址(411),使得将被储存的该给定的数据组可以经过预先确定的计算操作,首先映射到虚拟IP地址(437)并且之后用该映射被映射到物理IP地址(411)。这可以被叫做图16中所示出的VIP映射(439)。
在一个实施例中,当单元(425)加入实体(409)的时候,它在网络(407)/实体(409)中宣告自己的存在(例如,经由LLDP)。推动/拉动策略或DHT方法可以在单元(425)中被实现以使得在实体(409)中的所有的单元(425)获得已更新的VIP映射(439)。例如,在实体(409)中随机地选取的单元A被添加到新的VIP映射(439)之后,这个单元A用相同的VIP映射(439)添加另一个单元Y。在预先确定的代(generation)的数量(例如,3或4)之后,添加(推动阶段(push phase))结束。在推动/拉动实施例中,周期性地(例如,每X秒),每一个单元(425)被配置来询问一个或多个其他单元(425)用于关于VIP映射(438)的更新(拉动阶段(pullphase))。当在推动阶段中足够的单元用新的VIP映射(439)被添加之后,该VIP映射(439)可以在拉动阶段中被迅速地传播到呼叫单元(425)。
如在示例的实施例中,分布式散列表(DHT)方法可以被用于上文所描述的推动/拉动消息交换,来更新VIP映射(439)。例如,VIP映射(439)可以通过使用针对因特网应用的可扩展的点对点查找服务的一种实现方式而被更新,例如,如由Lon Stoica等人在“Chord:Ascalable Peer-to-peer Lookup Service for Intemet Applications(弦:针对互联网应用可调整点对点查找服务,其于2001年8月27-31日在美国加州圣地亚哥的SIGCOMM’01所指出、并且发表于2003年2月IEEE/ACM汇刊,Networking,Vol.11,第一期第17-32页)中所公开的。在这种实施例中,单元(425)一被加入到实体(409)中,单元(425)就被配置拥有具体的数据子集。通信协议(诸如在Chrod***中所使用的)可以被用来对实体(409)中的所有其他单元(425)更新关于新到达的单元(425)的存在。在一个实施例中,CHORD模块作为单元(425)中预加载的软件的具体层级而实现,并且被配置使用针对因特网应用的可扩展的点对点查找服务,来更新VIP映射(如在lon Stoica的Chord***中的)。
在一个实施例中,实体(409)(例如,具有经由在某域名(113)下的网络配置的所组织的单元的聚集(425))实现文件***,但是它不仅仅是文件***。实体(409)可以具有经由一个或多个网络(407)所连接的世界范围的单元(425)。在实体(409)中,单元(425)可以在区域内(例如,一组单元(425)在欧洲,其他在美国)在本地被组织。世界可扩展的实体(409)被配置来组织它自己为了使得它的用户连接到最近的单元(425)使得允许与用户的有效的交互。
在一个实施例中,实体(409)以及经由实体(409)所实现的文件***是全球化的。在文件***中,单一的用户文件(405)可以包括在不同的世界的区域的单元(425)。例如,如果用户希望订阅针对他自己的损坏-复原策略,用户可以决定实现复制策略(replicationpolicy)以在不同的世界区域中储存他的文件的副本。当这种策略被使用,客户端软件(403)(例如,在下文中所讨论的IPMap(421))在单元(425)中运行并且被配置来确定单元(425)是否将储存用户文件(405)的数据并且被配置来使得来自不同区域的单元(425)储存该文件。
在图15中,单元中的每一个具有被配置来计算用于用户文件储存的位置的IPMap(421)(例如,客户端软件(403))。在一个实施例中,给定用户文件(405)的哪部分被储存在哪些单元(425)中和/或在哪些位置,是从用户文件(405)的数据以及在实体(409)中的当前可用的单元(425)的映射(例如,VIP映射(439))直接地计算出的。
例如,用户文件(405)的文件名(431)可以是散列的,以用散列方案(433)生成具有固定长度的字符串的散列值(435),如图16所示出的。字符串的不同的部分被用来标识不同的单元(425)用于用户文件(405)的不同部分的存储,以及字符串的部分可以被用来在单元(425)的文件***中标识目录和本地文件名(431),来储存用户文件(405)的相应的部分。因此,针对给定的文件名(431),IPMap(421)可以确定性地计算用户文件(405)的哪部分被储存在哪个单元(425)中和在相应单元(425)的文件***中的哪个目录中。在一个实施例中,基于所分配给实体(409)的单元(425)的角色的配置而计算IPMap(421)。在一个实施例中,由实体(409)中的单元(425)所共享的公共的文件(例如,虚拟IP映射(437))被用来以决定性的方式将字符串的给定部分映射到单元(425)中的一个的IP地址(411)。
在示例中,在用户文件(405)的文件名(431)被散列到字符串中之后,字符串的第一部分被映射,来标识第一单元(425)来储存用户文件(405)的第一副本;字符串的第二部分被映射来标识第二单元(425)以储存用户文件(405)的第二副本;字符串的第三部分标识在第一与第二单元(425)中的目录来储存第一与第二副本;以及字符串的第四部分标识用于在目录中储存第一与第二副本的本地文件名(431),该本地文件名(431)由字符串的第三部分在第一与第二单元(425)中所标识。因此,IPMap(421)的示例实现了实体(409)中所储存的用户文件(405)的镜像。
在另一个示例中,散列函数可以被递归地采用来获得散列值(435)的序列;以及在序列中的散列值中的每一个可以被用来标识单元(425)。例如,在序列中的第一散列值(435)被用来标识第一单元(425)以储存用户文件(405)的第一副本;在序列中的第二散列值(435)被用来标识第二单元(425)以储存用户文件(405)的第二副本;在序列中的第三散列值(435)被用来标识在第一与第二单元(425)中的目录以储存第一与第二副本;以及在序列中的第四散列值(435)被用来标识被用来在目录中储存第一与第二副本的本地文件名(431),该本地文件名(431)由字符串的第三部分在第一与第二单元(425)中所标识。
在一个实施例中,用户文件(405)的文件名(431)的散列值(435)(或散列值(435)的部分)被用来以确定性的方式从VIP映射(439)中查询单元(425)。例如,来自字符串的值的不同范围可对应于在VIP映射(439)中所标识的不同的单元(425)。在一些实施例中,VIP映射(439)包括用于从字符串值(即,虚拟IP地址(437))映射到单元(425)的物理IP地址(411)的信息。
在图15中,在用户计算机(401)上运行的客户端软件(403)将用户文件(405)广播到实体(409)的单元(425),以及在单元(425)中的每一个中执行的IPMap(421)确定是否有任何文件的部分将被储存在相应的单元(425)上。如果有的话,则储存该部分的单元(425)的本地文件***中的位置和/或文件名(431)被计算。此外,已经接收到用户文件(405)的单元(425)用IPMap(421)来确定哪个单元负责用户文件(405)的储存,并且将该用户文件(405)传送到相应的单元(425)。此外,(例如,由客户端软件(403)所选中的或由IPMap(421)所确定的)单元(425)中的一个被配置来与客户端软件(403)进行通信,用于将用户文件(405)更多地传送到负责存储用户文件(405)的单元(425)。
总体上,IPMap(421)可以被实现来储存用于对全部数据恢复的冗余和/或奇偶校验数据的镜像副本。例如,IPMap(421)可以用用户文件(405)的文件名(431)的一部分散列值(435)(或在递归地被计算的散列的序列中的散列值(435))来标识单元(425)以计算与储存校验数据。因此,冗余和/或奇偶校验方案的不同的层级可以通过将数据经由IPMap(421)分配到实体(409)中的负责单元(425)而实现。
在一个实施例中,IPMap(421)被配置以将一组用于储存用户文件(405)的预先确定的操作映射到在实体(409)中的单元(425)的子集。总的来说,IPMap(421)可以被配置来将一组计算机操作(例如,计算和/或数据存储)映射到实体中的一组单元(425)。
在图15中,实体(409)的单元(425)中的每一个具有运行来维护数据完整性的脑(Brain)(423)(例如,软件)。当读取/写入用户文件(405)的时候,负责用户文件(405)的单元(425)与其他单元(425)进行通信,该其他单元(425)也对于用户文件(405)负责用于监控储存在实体(409)中具有所期望的程度的冗余/奇偶校验的用户文件(405)的状态。例如,如果单元(425)被发现不再在实体(409)中可用(例如,当单元(425)死亡,或在多于阈值的时间段内下线),那么剩余的单元(425)的VIP映射(439)被更新以允许单元(425)的IPMap(421)制定出先前在死亡的单元(425)中所存储的文件的新的位置,并且将可用的文件复制到新的位置。在一个实施例中,经由规则引擎来实现脑(423),并且用规则引擎实现一组数据完整性规则和损坏复原策略。
例如,当单元(425)死亡或移除网络(407)的时候,单元(425)用脑(423)检测到死亡的/移除的单元的缺少,以及响应于将新的VIP映射(439)被添加到其他单元(425),其中先前被分配给缺少的单元(425)的散列值(435)被重新分配给其他单元。因此,由所缺少的单元(425)提供的责任被分配给剩余的单元(425)。在新的VIP映射被传播到实体(409)中的单元(425)之后,每一个单元(425)的脑(423)开始从仍旧存活的冗余副本或基于错误更正算法来恢复数据。
例如,当新的单元(425)被加入到实体(409)的时候,现存的VIP映射(439)被修改以将一组散列值分配给单元(425)以生成新的VIP映射(439)。在新的VIP映射(439)在实体(409)中被传播并且新的单元(425)从其他单元(425)获得数据之后,在不再负责某些VIP映射的脑(423)的控制下的相关的单元(425),可以开始从它们的盘(417)中删除相应的数据,它们将不再被询问以提供这些数据(即,它们不再服务与VIP映射(439)相关的数据)。
本文所公开的硬件架构很快地变换关于与存储***的维护和扩展相关的问题的视角。
一个实施例的存储实体(409)包括单元(425)服务器的庞大的和多种的组,该单元(425)服务器的组可以非常小并且由CPU(415)和盘(417)理想地组成。例如,在存储实体(409)中所采用的CPU(415)的数量以及盘(417)的数量可以是完全相同的。
CPU(415)或盘(417)的添加如连接以太网总线一样简单,并且并不意味着服务的任何停止或破坏。
不要求维护操作就可以将新的单元(425)加入到网络(407)以代替死去的单元。
存储空间(理论上是无限的)通过(基于散列的)确定性的数学算法被寻址,该存储空间允许所有被保存的数据由反向推导同一算法重新获得。这避免了像在传统的方法所发生的一样使用索引。
通过IPMap(421)软件和VIP映射的使用,算法可以在系列的独立的存储单元(425)上联合地传播数据,该单元中的每一个只拥有储存在***上的一小部分信息。这还意味着通过加入新的单元(425),实体(409)的***可以无限地被扩展。
当新的单元(425)被加入到实体(409)中的时候,它自动地连接到其他单元,并且自动地承担起它在***中的角色。
经由IPMap(421)软件和VIP映射(439)的使用,信息遵从冗余策略被传播进单元(425),使得丢失有限数量的单元(425)不会危害数据可用性。
当现存的单元(425)不再能够在实体(409)中提供充足表现的服务的时候,新的单元(425)可以仅仅通过将它们连接到网络(407)而被加入到实体(409)。这允许信息的冗余水平随着时间被持续维持。
在本公开的存储***中,表现随着每一个新单元(425)的加入而加强。这种现象的发生是因为由整个***所执行的盘I/O的载荷的操作在更大数量的独立的储存/计算单元上传播。在提供服务的方面,单元(425)以充分独立与彼此的方式操作。
在传统的储存***中,在计算功率和带宽保持不变的情况下,新空间的加入通常使得表现变慢。
在一个实施例中,存储***的硬件由一组基础单元所组成,每一个是如图7所示的微服务器或单元(425)。
在图17中,微服务器/单元(425)包括CPU(435)、网络接口卡(451)以及用来储存***和软件服务的永久性存储器(455)。此外,每一个微服务器/单元(425)具有大容量存储器(457)以储存从用户所接收的数据(以防服务器正在使用存储单元)。
使用网络(407),在横跨世界的存储***中的单元(425)可以出于共享和同步数据的目的与彼此进行通信。因此,一组自我组织的单元可以形成计算/存储实体(409)形式的存储***。
在一个实施例中,单元(425)通过连接到它的计算机网络(407)被加入实体(409)中而无需关于它在实体(409)中的位置和作用的信息。这意味着单元(425)不知道哪些其他的单元(425)是它的邻近单元,并且它不知道它是应该储存数据还是仅仅提供计算服务。
在单元(425)被连接到网络(407)之后,它通过与其他单元(425)和/或网络(407)基础设施(例如,网络交换器(411)、网关)进行通信得到关于实体(409)的信息/指令。该信息可以通过用标准化网络协议(诸如LLDP(链路层发现协议))而获得。
在一些实施例中,所表明的配置文件可以被使用。这种文件可以最初被添加,例如,但它们根据实体(409)的健康状况和实体(409)中存在的单元数量而随时间变化。
在一个实施例中,在新的单元(425)被连接到计算机网络(407)之后,在实体(409)中的单元与彼此进行通信来重新组织实体(409)以利用新的单元(425)的服务,并且适应于该实体(409)可以提供的服务的水平。
在一个实施例中,新的单元(425)并不具有关于以太网或TCP/IP协议的预加载的Mac地址和/或预加载的IP地址(411)。这些参数基于在计算网络(407)中所连接的单元(425)的物理位置被分配给单元(425)(例如,依据它所连接到的端口和/或网络交换器(411)/网关的层级)。
例如,当单元加入实体(409)的时候,它询问其他的单元关于托管的信息。在托管信息的基础上,它假设在实体(409)中的角色。软件组件,IPMap(421)被配置来组合物理的IP地址(411)和角色分配。
在一个实施例中,单元(425)的逻辑角色基于物理IP地址(411)被分配。单元(425)仅仅负责被存储到实体(409)中的那部分数据或可计算的一组操作的部分。
例如,在角色与定位信息之间的映射可以被用来实现角色分配。在通过读取在定位与角色之间的映射,单元(425)基于它所连接(例如,经由LLDP所标识)的转换器(411)端口为它自己分配物理地址(Mac地址和IP地址(411))之后,它得知它在实体(409)中的具有的角色。
以上的安排表明单元(425)能够易于取代其他的单元(425)。当单元(425)物理地被另一个单元(425)在网络(407)连接架构的相同的物理位置所替代的时候,作为替代单元(425)将获得被替代单元的相同的Mac地址、相同的IP地址(411)、以及相同的角色。
通过把作为替代的单元(425)放置在网络(407)连接架构中不同的物理位置,但是分配相同的角色,单元(425)还可以被逻辑地替代。
在一个实施例中,实体(409)作为整体将告知单元(425):它需要解除它的角色以及在哪里得到它仍旧丢失的数据的信息。数据(也来自死亡单元(425))通常在网络(407)中是可用的,作为冗余和错误更正策略的序列。
单元(425)可以被设置为休眠的。例如,在单元(425)获得在计算机网络(407)中的IP地址(411)之后,如果它未被分配到角色,那么它在实体(409)中是休眠的,直到实体(409)被告知该单元(425)的存在并且重新组织它自己以使用单元(425)的服务。
在一个实施例中,要将单元(425)设置为休眠,就足以将它的位置从角色的映射中除去。将它再次放入映射使得实体(409)再次开始使用它。
在一个实施例中,IPMap(421)是为具有物理IP地址(441)的单元(425)分配数据的部分或可计算的角色的软件组件。它可以通过一些实现方式技术或通过以下各项的混合而被获得:散列映射、Btree/Btree*、以及一般的indexer技术。IPMap(421)具有作为输入数据的标识(例如,字节),以及作为输出提供至少一个单元(425)的标识和/或单元(425)上的一个位置,数据(或数据的一部分)将要被储存在该位置上。
在一个实施例中,脑(423)是软件组件,该软件组件监管数据可用性和单元(425)活动。每个单元(425)包括脑(423),该脑(423)可以为了更正数据而做出即时的决定。决定基于由一些单元(425)所提供的即时信息而做出。
脑(423)可以执行永久地或透明地作用于它决定更正的数据。基本上根据奇偶校验/冗余策略实现更正。
共用的RAID5/RAID6盘阵列设备可以实现针对奇偶校验/冗余的技术。然而,在当前应用的存储***中,冗余/奇偶校验组不被获得以被储存在盘(417)的固定的组上(例如,阵列)。由于数据可靠性是独立于硬件的单一片段的可靠性的,这个改变将很大地改善***的可靠性。
在一个实施例中,计算/储存实体(409)是在VIP映射(439)上所列出的微服务器(单元(425))的组。这可以例如作为一架或多架微处理器(单元(425))而实现。
每一个单元(425)实现软件,该软件使得它自动地假设在机架层级中的角色,通过例如负责数据的预先确定的组以及同时使用相同的软件,保证即使在实体(409)中的其他单元(425)可能发生故障的时候,能够避免服务降级而无需使得实体(409)提供给用户的服务降级。
机架层级的简单示例可以由以下各角色所实现:
元数据单元(425):包含关于许可、文件类型、共享、冗余等等信息的单元(425);以及
数据单元(425):包含数据(图片、视频等等)的单元(425)。
当实体(409)被询问来访问所储存的文件的时候,实体(409)访问元数据信息以确定用户是否可以访问所储存文件的数据。
示例的实现方式:实体(409)作为单元(425)的架所实现。架包括网络装置(交换器(411))、以及存储单元(425)的一些底座。这些装置中的每一个都可能由于各种原因而发生故障。为了减少对用户服务的缺少的风险,在每一个单元(425)内存在两种专用软件程序的实现方式:IPMap(421)以及脑(423)。IPMap(421)给单元(425)角色;以及脑(423)实现错误检测和/或错误更正的策略。在一些实施例中,CHORD模块还可以在IPMap的模型下被添加以提供在单元-实体层级的检测方面的标准方法。
IPMap(421)可以以HashMap的形式被实现。例如,当用户上传文件,该文件明确地与一组单元(425)相关联,并且文件的数据字节被储存在硬盘驱动(417)上,该硬盘驱动以独特的方式被附着在单元(425)的确定的组上。
例如,在一个示例的实施方式中,Md5被用于用户文件的文件名(例如,file.bmp)以获得散列值(435)(例如,4a586cf87b342878153dc3c81d76fccb)。
Md5(file.bmp)=4a586cf87b342878153dc3c81d76fccb
散列值(435)的前面的n字节通过用储存在公共的文件中的映射被加入IP地址(411)。具有IP地址(411)的单元(425)将储存用户文件(405)的数据的第一副本。
散列值(435)的n+1到m字节被用来个性化第二IP地址(411),以及具有第二IP地址(411)的单元(425)将储存用户文件(405)的数据的第二副本。
散列值(435)的m+1到p字节被用来标识微服务器(单元(425))的大容量存储器(457)的文件***中的目录,用于储存用户文件(405)的数据的副本。
散列(345)的p+1到q字节被用来标识名称,文件通过该名称被储存在微服务器(单元(425))的大容量存储器(457)的文件***中。
应当注意以上基于Md5所示出的简单方案的使用存在许多冲突(例如,不同的文件被映射到相同的存储位置)。可以实现智能***以避免/解决该冲突和/或减少冲突的几率。
在本示例上构建的散列方法可以被用来标识多于两个的IP地址(411)用于储存多于两个的文件的副本,和/或储存错误-更正副本,该副本被储存在由从散列值(435)所确定的IP地址(411)所标识的单元(425)的一个上。
在采用CHORD模块的实施例中,可以用基于MD5方法生成一个或多个密钥。然而,用MD5散列方程所生成的密钥不直接映射到虚拟IP。通过用针对在CHORD模块中实现的点对点查找服务的通信协议来询问实体,用CHORD模块来复原可用(competent)的IP。虚拟IP对真实IP的映射仍旧被使用,但是基于动态。映射可用被认为在很长的时间段内是静态的,但是可以对它自己进行更新以免错误或新的实体,对于客户不产生任何影响,这可以保证对于每一个密钥接收负责该密钥的节点的VIP。
用这种方法,当单元(425)死亡的时候,***可以忍受该单元(425)的缺失。在***的剩余的单元(425)中运行的脑(423)检测到单元(425)的缺失并且可以重新组织来进行包括让其他单元(425)代替失去的单元的位置的操作。
用户文件(405)的全部数据仍旧是可用的,该用户文件(405)的全部数据储存在包含该相同文件的副本的剩余单元(425)的组中。任何单元(425)的脑(423)可以将这个数据从剩余的单元(425)移动到新的单元(425),该新的单元(425)在重新组织后加入该组。
在一个实施例中,每一个单元(425)可以由适当被设计的客户端所到达。例如,客户端发送消息到单元(425)。消息基本上包括关于将储存的用户文件(405)的数据。
位于单元(425)内的IPMap(421)计算文件将被储存在实体(409)的哪里。
消息包含关于冗余副本和延伸的校验副本的信息。冗余副本和校验允许忍受和对于最终的用户掩饰错误。
更多地,当执行写入/读取互动的时候,单元(425)收集关于以下各项的即时信息:
对于已复制的数据可用的副本数量;
对于校验更正数据的每个组可用的校验因子的数量;
成功写入另一个单元(425);
成功从另一个单元(425)读取;
成功连接到另一个单元(425);和/或
成功到达另一个单元。
当读取/写入数据的时候,这些指示符通常是可用的。如果发生了某些故障(和达到了某些警报阈值),脑(423)启动分析的常规程序使得对于更正或忍受该问题做出决定。
这种信息的可用性允许实施错误检测策略的实现。
基于所检测到的错误。错误-更正策略可以被触发。
一组先前的规则当前被植入脑(423)的软件中:
当检查冗余/奇偶策略的时候,如果一些副本(相同版本)被破坏,脑(423)负责替代该丢失的副本;
Ipmap(file)=adrr_copyl,addr_copy2,...,addr_copy3;
For each copy in
adrr_copy1,addr_copy2,...,addr_copy3;
Do:
if copy is damaged
read next(copy)and replace(copy);
Done;
当连接/到达单元(425)的时候,如果问题揭露,那么为了标识错误的宽度启动诊断常规程序。
如果它是到达问题,那么脑(423)尝试通过用另外的路径到达单元(425)。
单元(425)被提供了更多的网络接口卡(451):cell.a,cell.b等等。
If connect(cell.A)==false
Then:connect(cell.B)
如果存在连接问题(单元(425)是可到达的但是未能响应)修复策略被触发。
If connect(cell.A)==true
Then:If(SendData(cell.A,copy)==false and
SendData(cell.B,copy)==false)
Then:
//the copy is sent to another cell(425)
SendData(next(cell),copy)
如果太多单元(425)都是不可用的,则实体-服务被暂停。
For each cell(425)in Rack
Do:
If(connect(cell.A)==false and
Connect(cell.B)==false)
N=N+1;
Done
If N>25%of Rack SuspendService();
脑(423)可以作为规则引擎而实现。规则的组易于扩展。
图18-20根据一个实施例,示出了在实体中单元(425)的生命期。
在图18中,单元的实体(409)由用户所到达。用户上传文件A到实体(409)上。
他的文件立即被复制到一些单元(425)(例如,单元10,、单元10、单元2n)。
在(例如,单元2n)(或盘(427)连接到的)单元(425)被破坏之后,脑(423)检测问题并且复制来自依旧可用的单元(425)的数据,将数据包含在依旧响应的另一个单元(425)(例如,单元12)中,如在图19中所示。
在一个实施例中,不存在确定性的方法来标识将要掌握所恢复副本的单元(425),所以该过程可以一直持续直到网络已经相当广泛的时候。
在诊断/修复动作之后,用户能够再一次恢复他的文件无需缺少任何服务。
这种方法比下文所解释的目前的基于RAID的方法更好。
脑(423)还可以基于针对被配置用于作为规则引擎而运行的脑(423)的规则,来决定推迟修复或不更正问题,。
如果故障是暂时的(例如,网络(407)问题)或维修操作被执行以重新启动丢失的单元(425)/盘(417),一段时间内数据是过剩的,如图20所示的。在实体(409)的单元(425)中的一个上运行的脑(423)现在可以决定移除旧的副本使得能够维持实体(409)中的盘(417)空间的适度的低使用率。
在一个实施例中,技术被提供以实现针对电子数据的存储***,该***依据表现和存储空间,是虚拟地并且无限的可扩展的。该***包括经由计算机网络所连接的一组微服务器,来针对角色分配以及数据恢复自我组织它们自己。映射技术被用来横跨微服务器的子集,分配储存任务和/或计算任务用于用数据冗余来储存或重新获得用户文件;并且基于用户文件的标识符以确定性的方法从***可用的服务器中选择子集。选择被配置来在***的微服务器之间伪随机地分配与不同的文件相关联的任务。
在一个实施例中,实现存储***的方法包括:提供多个单元计算设备,其中每一个相应的单元计算设备具有网络接口、数据存储设备、处理器、以及储存那些被配置来操作相应的单元计算设备的指令的存储器。
当网络接口被连接到计算机网络的时候,相应的单元计算设备由指令(例如,实现针对点对点查找服务的指令,诸如在CHORD模块中的那些)所配置以至少执行以下操作:标识当前连接到计算网络的多个单元计算设备;在多个单元计算设备之间进行通信以维护在一组虚拟地址与多个单元计算设备之间的映射;接收数据集的标识;计算来自标识的虚拟地址;确定虚拟地址是否基于映射而对应于相应的单元计算设备;以及响应于确定虚拟地址响应于单元计算设备,储存或处理独立于在计算机网络上的其他单元计算设备的数据集的至少一部分。
在一个实施例中,响应于检测存在于计算机网络上的单元计算设备中的变化,当前存在于计算机网络上的单元计算设备与彼此进行通信以更新虚拟地址的组与当前存在于计算机网络上的单元计算设备之间的映射。
在一个实施例中,响应于检测到先前在映射中的单元计算设备的缺少,该单元计算设备根据基于更新该映射的一组规则来自动地执行数据恢复操作。
在一个实施例中,非暂态的计算机存储介质储存指令,该指令被配置以指示单元计算设备来执行上文所讨论的多个实施例的操作。
在一个实施例中,相应的单元计算设备被配置以指令以执行上文所讨论的多个实施例的操作。
在一个实施例中,计算***包括连接到计算机网络并且被配置以执行以上所讨论的多个实施例的操作的指令的多个单元计算设备。
在一个实施例中,单元(425)的存储器(419)包括以下各项的一个或多个:ROM(只读计算机)、易失RAM(随机读取存储器)、以及非易失存储器(诸如硬件驱动、闪存等等)。
易失RAM具体地被实现为动态RAM(DRAM),该动态RAM持续地需要能量,为了刷新或维护在存储器中的数据。非易失存储器具体是磁盘驱动器、磁光盘驱动器、光盘驱动器(例如,DVD RAM)、或即使在能量被移除***的之后仍能够维护数据的其他类型的存储器***。非易失存储器还可以是随机存取存储器。
非易失存储器可以是直接耦接到在数据处理***中的其余组件的本地设备。与***的远程的非易失存储器,例如经由网络接口(诸如调制解调器或以太网接口)耦接到数据处理***的网络存储设备也可以被使用。
在本说明中,出于简化说明的目的,一些功能与操作被描述为由软件代码所执行或引起。然而,这种表示还被用来指定该功能是由处理器(诸如,微处理器)对于代码/指令的执行而得出。
此外,或组合地,本文所描述的功能与操作可以用具有或不具有软件指令的专用电路被实现,诸如用专用集成电路(ASIC)或现场可编程门阵列(FPGA)。实施例可以用不具有软件指令的硬线电路而实现,或与软件指令相组合而实现。因此,技术既不被限制于硬件电路与软件的任何具体组合,也不被限制于用于由数据处理***所执行的指令的任何特定的源。
尽管一个实施例可以在功能健全的计算机和计算机***中被实现,但是各种实施例可以作为各种形式的计算产品被分配,并且可以被采用而不论真实地影响该分配的机器或计算机可读介质的特定的类型。
所公开的至少一些方面可以在软件中被至少部分地实施。即,技术可以对应于执行在存储器(诸如ROM、易失RAM、非易失存储器、缓存或远程存储设备)中所包含的指令的序列的它的存储器(诸如,微处理器)而在计算机***或其他数据处理***中被实施。
被执行以实现实施例的常规程序可以作为被称为“计算机程序”的操作***的部分或具体的应用、组件、程序、对象、模块或指令的序列而实现。计算机程序通常包括计算机中的各种存储器和存储设备中在多个时刻的一个或多个指令的组,并且当由在计算机中的一个或多个处理器所读取和执行的时候,使得计算机执行对于执行涉及各种方面的元素的关键的操作。
机器可读介质可以被用来储存软件与数据,当由数据处理***所执行的时候使得该***执行各种方法。可执行的软件与数据被储存在各种空间中,该空间包括诸如ROM、易失RAM、非易失存储器和/或缓存。这种软件和/或数据的部分可以被储存在这些存储设备中的任何一个中。此外,数据和指令可以从中央服务器或点对点网络中所获得。数据和指令的不同的部分可以从不同的中央服务器和/或点对点网络在不同的时刻、在不同的通信会话、或在相同的通信会话中所获得。数据和指令可以先于应用的执行而全部地获得。此外,数据和指令的位置可以当被需要用于执行的时候及时被动态地获得。因此,不要求数据和指令在特定的时刻全部在机器可读介质上。
计算机可读介质的示例包括但不局限于可记录的和不可记录的类型的介质,诸如易失的和非易失的存储设备、只读存储器(ROM)、随机存取存储器(RAM)、闪存设备、软盘以及其他可移动的盘、磁盘存储介质、光盘存储介质(例如,光盘只读存储器(CD ROMS)、数字通用光盘(DVD)等等)。计算机可读介质可以储存指令。
指令还可以被体现在用于电的、光的、声学或其他形式的传播信号(诸如,载波、红外线信号、数字信号等等)的数字和模拟通信链路中。然而,传播信号(诸如,载波、红外线信号、数字信号等等)不是有形的机器可读的介质并且不被配置来储存指令。
总的来说,机器可读介质包括提供(即,储存和/或传输)由机器(例如,计算机、网络设备、个人数字助手、制造工具、具有一个或多个处理器的集的任何设备等等)可访问的形式的信息的任何机制。
在各种实施例中,硬件电路可以应用在与软件指令的组合中以实现该技术。因此,该技术既不局限于硬件与软件的任何具体的组合,也不局限于用于由数据处理***所执行的指令的任何特定的源。
本说明书与附图是示例性的并且不应被理解为限制性的。本公开是发明特性的示出,使得本领域技术人员能够做出和使用该技术。大量的具体细节被描述以提供透彻的理解。然而,在某些示例中,出于避免模糊说明的目的,众所周知的或传统的细节没有被描述。在本公开中的一个实施例的参考条件,并不是对于相同的实施例所必需的参考条件;并且,这些参考条件意为至少一个。
本文标题的使用仅仅出于易于参考的目的被提供,并且不应以任何方式被理解为限制本公开或下文的权利要求书。
参考“一个实施例”意为联系该实施例所描述的具体的特性、结构、或特征被包括在本公开的至少一个实施例中。在说明书中的多处出现的短语“在一个实施例中”并不是必须指的是同一实施例,并且并不必须全部指的是排除其他实施例的单独的或其他的实施例。此外,所描述的各种特性可以由一个实施例而不是由其他实施例所呈现的。相似地,所描述的各种要求可以是针对一个实施例而不是其他实施例的要求。除非由明确说明和/或明显不相容性所排除,本说明中所描述的各种特性的组合也被本文所包括。例如,以上联系“在一个实施例中”或“在一些实施例中”的所描述的特性可以全部有选择地被包括在一个实现方式中,除了以下情况:从本说明中能够明显得得出的,某些特性是其他特性的从属,则可能限制从实现方式中排除所选中的特性;以及如从本说明中能够明显得得出的,某些特性与其他特性的不相容性,则可能限制在实现方式中一起包括所选中的特性。
在前述的说明书中,本公开已经参照具体的示例的实施例所描述。显然的是,可以做出多种修改而不离开如下述权利要求书中所列出的宽泛的精神和范围。相应地,本说明书以及附图被理解为示例的表达而不是限制的表达。

Claims (60)

1.一种计算设备,包括:
网络接口,该网络接口被配置来与计算机网络耦接,该计算机网络具有计算实体的多个单元计算机;
至少一个微处理器;以及
储存指令的存储器,该指令被配置来指示至少一个所述微处理器进行以下操作:
经由所述网络接口接收指向所述计算实体的计算请求,该计算实体被配置来用多个单元计算机执行针对所述计算请求的操作的多个预先确定的部分:
将所述计算请求映射到所述计算实体中的单元计算机的标识;
确定从所述计算请求所映射的标识是否对应所述计算设备,该计算设备被配置作为在所述计算实体中的单元计算机;以及
响应于确定从所述计算请求所映射的所述标识对应所述计算设备,执行针对所述计算请求的操作的一部分,其中该部分与由所述计算请求所确定的所述标识预先关联。
2.根据权利要求1所述的计算设备,其中,所述请求包括将被存储在所述计算实体中的文件;所述标识从所述文件的标识数据中被映射;以及操作的所述多个预先确定的部分包括用冗余储存所述文件。
3.根据权利要求2所述的计算设备,其中,所述指令被配置用来递归地将所述文件的标识数据作为散列来计算多个标识,所述多个标识位于所述计算实体的单元计算机的标识的列表中用于所述操作的多个预先确定的部分。
4.一种方法,包括:
提供具有由计算机网络互联的多个单元计算机的计算实体;
在所述多个单元计算机中的每一个相应的单元计算机上储存现有数据,该现有数据标识所述多个单元计算机,所述多个单元计算机在所述计算机网络上当前可用来执行针对所述计算实体的计算任务;
在所述计算实体中,接收计算请求;
基于所述计算请求和所述现有数据,由所述相应的计算机确定所述计算实体的多个单元计算机的一个或多个标识,所述多个单元计算机中的每一个被配置来执行操作的一部分用来满足所述计算请求;
由所述相应的单元计算机确定是否存在一个或多个标识对应所述相应的单元计算机;以及
响应于确定所述一个或多个标识具有对应于所述相应的单元计算机的标识,由所述相应的单元计算机执行与所述标识相关联的所述操作的一部分。
5.根据权利要求4所述的方法,其中,所述每一个相应的单元计算机确定被分配来执行针对所述计算请求的操作的所述多个单元计算机的一个或多个标识,而无需与所述计算实体中的其他单元计算机进行通信。
6.根据权利要求5所述的方法,其中,对于所述一个或多个标识的确定包括:在所预先确定的标识符被计算之前基于所述计算请求的数据,有顺序地计算被分配用来执行针对所述计算请求的操作的所述多个单元计算机的标识。
7.根据权利要求6所述的方法,其中,由所述多个单元计算机的标识中的每一个所标识的单元计算机被分配来基于所述多个单元计算机的标识的序列执行针对所述计算请求的所述操作的预先确定的部分。
8.根据权利要求6所述的方法,其中,如果不存在所述预先确定的标识对应于所述相应的单元计算机,则所述相应的单元计算机不执行针对所述计算请求的任何操作。
9.根据权利要求8所述的方法,其中,所述现有数据包括在计算机网络上当前可用来执行代表所述计算实体的计算任务的所述多个单元计算机的标识。
10.根据权利要求4所述的方法,其中,所述计算请求包括将要被储存在所述计算实体中的文件名。
11.根据权利要求10所述的方法,其中,用来满足所述计算请求的所述操作包括用数据冗余将所述文件储存在所述多个单元计算机上。
12.根据权利要求11所述的方法,其中,用来满足所述计算请求的所述操作包括计算针对所述文件所储存在所述多个单元计算机上的部分数据的校验。
13.根据权利要求10所述的方法,其中,对于所述计算实体的多个单元计算机的一个或多个标识的确定,包括采用针对所述文件名的预先确定的散列方案。
14.根据权利要求10所述的方法,其中,对于所述计算实体的多个计算机的一个或多个标识的确定,包括迭代地采用针对所述文件名的预先确定的散列方案,以有顺序地计算所述多个单元计算机的一个或多个标识。
15.根据权利要求10所述的方法,其中,对于所述计算实体的多个计算机的一个或多个标识的确定,包括采用预先确定的函数将所述文件名映射到预先确定的标识符空间的具体的标识符中;以及,具有所述具体标识符的单元计算机被分配来执行所述操作的部分以满足所述计算请求。
16.根据权利要求15所述的方法,其中,基于所述单元计算机的标识符与所述单元计算机的因特网协议地址之间的关联,所述现有数据标识所述多个单元计算机。
17.根据权利要求16所述的方法,还包括:
基于在所述计算机网络中的网络连接性层级中的所述相应的单元计算机的独特位置,由所述相应的单元计算机确定所述相应的单元计算机的标识符。
18.一种储存有指令的非暂态计算机存储介质,所述指令被配置来指示计算机设备执行一种方法,所述方法包括:
在被配置作为计算实体中的单元计算机的所述计算设备中,储存在所述计算机网络上当前可用来执行针对所述计算实体的计算任务的所述单元计算机的标识的列表,该计算实体具有由计算机网络互联的多个单元计算机;
在所述计算设备中接收计算请求;
由所述计算设备并且基于所述计算请求确定在所述标识的列表中的所述单元计算机的多个标识,其中,所述多个标识由独立于所述计算实体中的其他单元计算机的计算设备而确定;以及
由所述计算设备确定将要由所述多个标识所标识的单元计算机所执行的操作,所述多个标识基于所述计算请求被确定。
19.根据权利要求18所述的非暂态计算机存储介质,其中,所述计算请求包括文件名;并且通过采用预先确定的算法将所述文件名映射到多个标识来确定所述多个标识。
20.根据权利要求19所述的非暂态计算机存储介质,其中,所述预先确定的算法包括散列算法;并且所述多个标识存是位于预先确定的标识空间中,该标识空间包括所述计算实体中的单元计算机的标识。
21.一种计算***,包括:
经由计算机网络所连接的多个单元计算机来形成计算实体,其中所述多个单元计算机中的每一个相应的单元计算机被配置用来:
询问所述计算机网络的网络基础设施来确定所述计算实体的标识;
在由所述标识所标识的所述计算实体中宣告所述相应的单元计算机的存在;以及
执行通过所述计算机网络指向所述计算实体的计算请求的操作的一部分。
22.根据权利要求21所述的计算***,其中,基于所述计算机网络的域名确定所述计算实体的标识。
23.根据权利要求22所述的计算***,其中,所述相应的单元计算机被配置用来询问网关以获得所述计算机网络的域名。
24.根据权利要求23所述的计算***,其中,所述相应的单元计算机被配置来自动地加入由所述标识所标识的所述计算实体,所述标识从所述计算机网络的域名中所确定。
25.根据权利要求21所述的计算***,其中,所述相应的单元计算机被配置用来询问所述网络基础设施来标识所述计算机网络的网络连接性层级中的所述相应的单元计算机的独特的网络连接位置,并且基于该独特的网络连接位置向所述计算实体中的相应的单元计算机分配独特的标识符。
26.根据权利要求25所述的计算***,其中,所述相应的单元计算机还被配置用来宣告由所述相应的单元计算机所提供的计算资源的可用性,所述相应的单元计算机通过所述独特的标识符被标识。
27.根据权利要求26所述的计算***,其中,所述相应的单元计算机还被配置用来获得在所述计算实体中可用的单元计算机的现有数据。
28.根据权利要求21所述的计算***,其中,所述多个单元计算机在被连接到所述计算机网络之前,在软件中被完全相同地配置,并且被配置用来基于从所述计算机网络的网络基础设施所获得的网络配置数据而自动地加入所述计算实体。
29.根据权利要求28所述的计算***,其中,所述多个单元计算机中的每一个包括网络接口、为所述计算实体提供计算能量的至少一个微处理器、以及为所述计算实体提供数据存储的至少一个存储器。
30.根据权利要求29所述的计算***,其中,基于在所述计算实体中的单元计算机的现有数据和计算请求的标识数据,在所述单元计算机之间分配计算任务。
31.根据权利要求30所述的计算***,其中,计算请求的所述标识数据包括储存在所述计算实体中的文件的文件名。
32.一种储存有指令的非暂态计算机存储介质,所述指令被配置来指示计算机设备执行一种方法,所述方法包括:
由被配置以所述指令的多个单元计算机中的每一个相应的单元计算机来检测对计算机网络的网络连接;
由所述相应的单元计算机配置作为计算实体的部分的所述相应的单元计算机,包括:
与所述计算机网络的网络基础设施进行通信来确定所述计算实体的标识和所述相应的单元计算机的标识符;以及
在由所述标识所标识的所述计算实体中宣告所述相应的单元计算机的存在;以及
由独立于所述计算实体中的其他单元计算机的所述相应的单元计算机标识指向所述计算实体的计算请求的操作的部分,其中,基于在所述计算实体中的所述单元计算机的标识符的列表和所述计算请求的标识数据,来将所述部分分配给所述相应的单元计算机。
33.根据权利要求32所述的非暂态计算机存储介质,其中,所述计算请求与文件相关;并且所述标识数据包括所述文件的文件名。
34.根据权利要求32所述的非暂态计算机存储介质,其中,所述计算实体的标识从网关的域名而确定;以及所述相应的单元计算机的标识符从所述计算机网络中的相应的单元计算机的独特的网络连接性位置而确定。
35.一种方法,包括:
连接多个单元计算机到计算机网络以形成计算实体,其中所述多个单元计算机中的每一个相应的单元计算机被配置用来至少执行以下操作:
基于与询问所述计算机网络的基础设施进行通信,确定所述计算实体的标识;
基于在所述计算机网络中的相应的单元计算机的独特的网络连接性位置,确定所述计算实体中的相应的单元计算机的独特的标识符;
通过在计算实体中传播所述单元计算机的标识符而加入所述计算实体;
储存当前在所述计算实体中的所述单元计算机的标识符的列表;
执行通过所述计算机网络指向所述计算实体的计算请求的操作的一部分,其中,所述计算请求的操作基于所述标识符的列表在所述计算实体中的多个单元计算机之间被拆分。
36.根据所述权利要求35所述的方法,其中,所述计算实体的标识基于域名而确定。
37.根据权利要求35所述的方法,其中,所述多个单元计算机在被连接到所述计算机网络之前,在软件中被相同地配置。
38.根据权利要求37所述的方法,其中,所述多个单元计算机中的每一个包括:网络接口、向所述计算实体提供计算能量的至少一个微处理器、以及向所述计算实体提供数据存储的至少一个存储器。
39.根据权利要求38所述的方法,其中,基于所述标识符的列表和将所述计算请求的标识数据映射到单元计算机的标识符的预先确定的散列方案,将计算任务分配在所述单元计算机之间。
40.根据权利要求39所述的方法,其中计算请求的标识数据包括将被储存在所述计算实体中的文件的名称。
41.一种计算机,包括:
至少一个微处理器;
被配置用来被连接到计算机网络的网络接口,该计算机网络互联多个计算***的计算机;
被配置用来至少部分地储存用于所述计算***的文件的存储设备;以及
与至少一个微处理器所耦接的存储器,该存储器储存指令,该指令被配置用来指示至少一个微处理器进行以下操作:
检测与所述文件相关的条件,该所述文件至少部分地储存在针对所述计算***的计算机上,其中所述文件用冗余被储存在所述计算***中,该计算***具有经由计算机网络所连接的多个计算机;以及
响应于所检测到的条件,与所述计算实体中的多个计算机进行通信来核实和维护横跨所述计算实体的多个计算机的所述文件的数据完整性。
42.根据权利要求41所述的计算机,其中,所述条件对应于从所述计算***移除第一个计算机;以及所述指令还被配置用来指示所述至少一个微处理器来标识至少部分地储存在所述存储设备和所述第一个计算机上的文件,并且执行对于所述文件的数据恢复。
43.根据权利要求41所述的计算机,其中,所述条件对应于向所述计算***添加第一个计算机;所述指令还被配置用来指示所述至少一个微处理器来标识当前至少部分地被储存在所述存储设备上并且被确定将至少部分地储存在所述第一个计算机上的文件,以及提供数据用于构建针对在所述第一个计算机上的储存的所述文件的部分。
44.根据权利要求43所述的计算机,其中,所述指令还被配置用来指示所述至少一个微处理器来移除所述文件的部分的数据,鉴于所述第一个计算机的添加,该文件不再被配置为被储存在所述存储设备上。
45.根据权利要求43所述的计算机,其中,鉴于所述第一个计算机的添加,在针对在所述第一个计算机中的文件构建相应的数据的预先确定的时间段之后,将不再被配置来被储存在所述存储设备上的所述文件的部分移除。
46.根据权利要求41所述的计算机,其中,响应于所述条件被检测,所述指令还被配置用来指示至少一个微处理器用来:
计算在所述计算***中被配置用于用冗余储存所述文件的计算机的标识符;
核实具有所述标识符的计算机的可用性;以及
核实具有所述标识符的计算机储存所述计算***中的所述文件的相应的数据。
47.一种方法,包括:
在单元计算机中储存一系列标识符,该标识符是经由计算机网络的当前所连接的单元计算机的,并且可以向计算实体提供服务;
在所述单元计算机中储存针对文件的数据,该文件被储存在所述计算实体的多个单元计算机中;
由所述单元计算机检测与所述文件相关的条件;以及
响应于所述条件,由所述单元计算机采用一组规则,该规则被配置来核实和维护横跨所述计算实体的所述多个单元计算机的所述文件的数据完整性。
48.根据权利要求47所述的方法,其中,所述文件用数据冗余被储存在所述计算实体中。
49.根据权利要求47所述的方法,其中,所述文件用数据冗余和针对数据恢复的校验信息被储存在所述计算实体中。
50.根据权利要求47所述的方法,其中,具有所储存在所述单元计算机中的不同的文件被储存在所述计算实体的单元计算机的不同组中。
51.根据权利要求50所述的方法,其中,基于所述标识符的列表和所述文件的标识数据,确定相应地储存针对所述计算实体的文件的所述多个单元计算机的标识符。
52.根据权利要求47所述的方法,其中,所述条件对应于对于访问所述文件的请求;以及所述规则的组使得所述单元计算机至少执行以下操作:
基于所述标识符的列表和所述文件的文件名,由所述单元计算机确定所述多个单元计算机的标识符;以及
由单元计算机在所述计算机网络上的通信,核实所述文件的数据完整性。
53.根据权利要求48所述的方法,还包括:
响应于无法核实储存在所述多个单元计算机中的文件的数据完整性,启动数据恢复操作来恢复横跨所述多个单元计算机所储存的数据。
54.根据权利要求47所述的方法,其中,所述条件对应于被添加到所述计算实体中或从所述计算实体中移除的另一个单元计算机;以及所述一组规则使得所述单元计算机至少执行以下操作:
基于在所述计算实体中的单元计算机的标识符的所更新的列表和所述文件的文件名,由所述单元计算机确定被分配来在所述计算实体中储存所述文件的单元计算机的标识符的是否发生变化;以及
响应于所述变化,启动数据恢复处理以在所述计算实体中的单元计算机中重新分配所述文件的数据。
55.根据权利要求47所述的方法,其中,所述条件对应于在所述计算实体中所分配的用来储存文件的另一个单元计算机;以及所述一组规则使得所述单元计算机至少执行以下的操作:
将数据恢复推迟一段时间;以及
响应于确定所述另一个单元计算机已经超出该段时间而没有反应,传播数据来移除所述另一个单元计算机的存在的表示。
56.根据权利要求47所述的方法,其中,所述条件对应于所述计算实体中的单元计算机的变化;以及所述一组规则使得所述单元计算机至少执行以下操作:
由所述单元计算机确定所述单元计算机的文件是否仍旧被分配用来储存关于所述文件的数据,基于在所述计算实体中的单元计算机的标识符的所更新的列表以及所述文件的文件名;以及
响应于确定所述文件不再被储存在所述单元计算机上,在一段时间后从所述单元计算机中移除所述文件的数据。
57.一种储存有指令的非暂态计算机存储介质,该指令被配置来指示计算机设备执行一种方法,该方法包括:
由所述计算机检测与至少部分地储存在所述计算机上的文件相关的条件,其中所述文件用冗余所储存在具有经由计算机网络所连接的多个计算机的计算实体中;以及
响应于所述条件被检测,进行:
由所述计算机确定在所述计算实体中的计算机的标识,该计算实体负责储存关于所述文件的数据;以及
由所述计算机与具有标识的所述计算机进行通信,来核实和维护用在所述计算实体中的缓存所储存的所述文件的数据完整性。
58.根据权利要求57所述的非暂态存储计算机存储介质,其中,至少部分地基于当前可用来在所述计算实体中提供服务的所述多个计算机的标识的列表以及所述文件的标识数据,来确定在负责储存针对所述文件的数据的所述计算实体中的计算机的标识。
59.根据权利要求57所述的非暂态计算机储存介质,其中,所述计算实体具有被用来用冗余存储所述文件的第一个计算机,和没有被用来储存所述文件的第二个计算机。
60.根据权利要求59所述的非暂态计算机存储介质,其中,至少部分地储存在所述计算机中的第一个文件用所述计算实体的计算机的第一个子集中的冗余被储存,以及至少部分地储存在所述计算机中的第二个文件被用所述计算实体中的计算机的第二个子集中的冗余所储存;其中所述第一个子集与所述第二个子集不同。
CN201580046118.0A 2014-08-29 2015-07-15 用于配置计算***的方法和*** Expired - Fee Related CN106687943B (zh)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201462044140P 2014-08-29 2014-08-29
US62/044,140 2014-08-29
US14/691,301 2015-04-20
US14/691,301 US10565074B2 (en) 2014-08-29 2015-04-20 Systems and methods to distribute computing tasks among multiple computers
US14/691,316 2015-04-20
US14/691,324 2015-04-20
US14/691,324 US9928149B2 (en) 2014-08-29 2015-04-20 Systems and methods to maintain data integrity and redundancy in a computing system having multiple computers
US14/691,316 US9823985B2 (en) 2014-08-29 2015-04-20 Systems and methods to organize a computing system having multiple computers
PCT/US2015/040590 WO2016032634A1 (en) 2014-08-29 2015-07-15 Systems and methods to organize a computing system having multiple computers, distribute computing tasks among the computers, and maintain data integrity and redundancy in the computing system

Publications (2)

Publication Number Publication Date
CN106687943A true CN106687943A (zh) 2017-05-17
CN106687943B CN106687943B (zh) 2021-07-27

Family

ID=55402625

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580046118.0A Expired - Fee Related CN106687943B (zh) 2014-08-29 2015-07-15 用于配置计算***的方法和***

Country Status (3)

Country Link
US (3) US9928149B2 (zh)
EP (1) EP3186720B1 (zh)
CN (1) CN106687943B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112003736A (zh) * 2020-07-31 2020-11-27 深圳市腾讯网域计算机网络有限公司 一种多节点配置信息确定方法、装置及存储介质

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9928149B2 (en) 2014-08-29 2018-03-27 Cynny Space Srl Systems and methods to maintain data integrity and redundancy in a computing system having multiple computers
US9852040B1 (en) * 2016-03-09 2017-12-26 Altera Corporation Methods for updating memory maps of a system-on-chip
US10848388B1 (en) * 2019-07-12 2020-11-24 Deloitte Development Llc Distributed computing framework
CN116680089B (zh) * 2023-08-03 2023-11-14 上海登临科技有限公司 一种访存控制结构、方法、内存***、处理器及电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060031722A1 (en) * 2004-08-04 2006-02-09 International Business Machines Corporation Apparatus, system, and method for active data verification in a storage system
US20070073990A1 (en) * 2005-09-23 2007-03-29 Snaman William E Jr Distribution of data in a distributed shared storage system
CN103329111A (zh) * 2012-01-19 2013-09-25 华为技术有限公司 一种基于块存储的数据处理方法、装置及***
US20130346809A1 (en) * 2012-06-25 2013-12-26 Cleversafe, Inc. Detecting storage errors in a dispersed storage network
US20140006597A1 (en) * 2012-06-29 2014-01-02 Mrittika Ganguli Method, system, and device for managing server hardware resources in a cloud scheduling environment
US20140025770A1 (en) * 2012-07-17 2014-01-23 Convergent.Io Technologies Inc. Systems, methods and devices for integrating end-host and network resources in distributed memory

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6470389B1 (en) * 1997-03-14 2002-10-22 Lucent Technologies Inc. Hosting a network service on a cluster of servers using a single-address image
EP1514183A2 (en) 2002-06-20 2005-03-16 BRITISH TELECOMMUNICATIONS public limited company Distributed computer
US7533141B2 (en) 2003-01-24 2009-05-12 Sun Microsystems, Inc. System and method for unique naming of resources in networked environments
TWI232376B (en) 2003-12-15 2005-05-11 Promise Technology Inc RAID storage device
US7178015B2 (en) 2004-01-12 2007-02-13 Hewlett-Packard Development Company, L.P. Security measures in a partitionable computing system
US20060031465A1 (en) * 2004-05-26 2006-02-09 Motorola, Inc. Method and system of arranging configurable options in a user interface
US20140149783A1 (en) 2004-06-01 2014-05-29 Ivan I. Georgiev Methods and apparatus facilitating access to storage among multiple computers
US7698401B2 (en) * 2004-06-01 2010-04-13 Inmage Systems, Inc Secondary data storage and recovery system
EP1811376A4 (en) * 2004-10-18 2007-12-26 Fujitsu Ltd PROGRAM, METHOD AND INSTALLATION FOR OPERATIONAL MANAGEMENT
US7681234B2 (en) * 2005-06-30 2010-03-16 Microsoft Corporation Preventing phishing attacks
US7836250B2 (en) 2005-07-15 2010-11-16 International Business Machines Corporation Automatic rebalancing of a data storage system
EP1750389B1 (en) * 2005-08-05 2007-09-26 Sap Ag System and method for updating keys used for public key cryptography
GB2432433B (en) * 2005-10-29 2010-04-07 Hewlett Packard Development Co A method of providing a validatable data structure
US8260739B1 (en) 2005-12-29 2012-09-04 At&T Intellectual Property Ii, L.P. Method and apparatus for layering software agents in a distributed computing system
US20080222267A1 (en) 2007-03-09 2008-09-11 Horn Ray C Method and system for web cluster server
US7941516B2 (en) * 2007-06-15 2011-05-10 Microsoft Corporation Redundant pile of inexpensive drivers (RPID)
TWI476610B (zh) 2008-04-29 2015-03-11 Maxiscale Inc 同級間冗餘檔案伺服器系統及方法
US8892689B1 (en) * 2008-04-30 2014-11-18 Netapp, Inc. Method and apparatus for a storage server to automatically discover and join a network storage cluster
US8176247B2 (en) 2008-10-28 2012-05-08 Pivot3 Method and system for protecting against multiple failures in a RAID system
US8566362B2 (en) * 2009-01-23 2013-10-22 Nasuni Corporation Method and system for versioned file system using structured data representations
US8316213B1 (en) 2009-07-31 2012-11-20 Amazon Technologies, Inc. Management of object mapping information corresponding to a distributed storage system
US20110055394A1 (en) * 2009-08-28 2011-03-03 Motorola, Inc. Network assisted mobile centric peer selection method
JP5123961B2 (ja) 2010-02-04 2013-01-23 株式会社トライテック 分散コンピューティングシステム、分散コンピューティング方法及び分散コンピューティング用プログラム
US9317572B2 (en) 2010-03-31 2016-04-19 Cloudera, Inc. Configuring a system to collect and aggregate datasets
US8615552B2 (en) 2010-08-25 2013-12-24 International Business Machines Corporation Sharing cloud data resources with social network associates
US8601310B2 (en) * 2010-08-26 2013-12-03 Cisco Technology, Inc. Partial memory mirroring and error containment
US8290919B1 (en) * 2010-08-27 2012-10-16 Disney Enterprises, Inc. System and method for distributing and accessing files in a distributed storage system
KR101415616B1 (ko) 2010-11-18 2014-07-09 한국전자통신연구원 파티클 기반 시뮬레이션을 위한 병렬 컴퓨팅 방법 및 그 장치
US8892845B2 (en) * 2010-12-22 2014-11-18 Cleversafe, Inc. Segmenting data for storage in a dispersed storage network
KR20130133264A (ko) 2011-01-05 2013-12-06 어드밴스드 마이크로 디바이시즈, 인코포레이티드 리던던시 메모리 저장 시스템 및 리던던시 메모리 저장 시스템을 제어하기 위한 방법
US8560628B2 (en) 2011-01-11 2013-10-15 International Business Machines Corporation Supporting autonomous live partition mobility during a cluster split-brained condition
TW201234809A (en) 2011-02-15 2012-08-16 Hon Hai Prec Ind Co Ltd Cloud access system and method for displaying data objects based on social networks
CN103403698A (zh) 2011-03-04 2013-11-20 富士通株式会社 分布式计算方法和分布式计算***
KR101483127B1 (ko) * 2011-03-31 2015-01-22 주식회사 케이티 클라우드 스토리지 시스템에서 리소스를 고려한 자료분배방법 및 장치
US9053809B2 (en) * 2011-11-09 2015-06-09 Apple Inc. Data protection from write failures in nonvolatile memory
JP5692414B2 (ja) 2011-12-15 2015-04-01 富士通株式会社 検知装置、検知プログラムおよび検知方法
GB2503274A (en) 2012-06-22 2013-12-25 Ibm Restoring redundancy in a RAID
WO2014086019A1 (en) * 2012-12-06 2014-06-12 Empire Technology Development Llc Decentralizing a hadoop cluster
CN102984280B (zh) 2012-12-18 2015-05-20 北京工业大学 针对社交类云存储网络应用的数据备份***和方法
US9235621B2 (en) * 2013-01-30 2016-01-12 Oracle International Corporation Data-aware scalable parallel execution of rollup operations
US9596299B2 (en) * 2013-04-06 2017-03-14 Citrix Systems, Inc. Systems and methods for dynamically expanding load balancing pool
CN103297547B (zh) 2013-07-08 2016-04-06 南京大学 使用基于dht的p2p***构建云存储辅助***的方法
US9213611B2 (en) * 2013-07-24 2015-12-15 Western Digital Technologies, Inc. Automatic raid mirroring when adding a second boot drive
US9985829B2 (en) 2013-12-12 2018-05-29 Exablox Corporation Management and provisioning of cloud connected devices
US9384081B2 (en) 2014-07-01 2016-07-05 Gogo Llc Delayed disk recovery
US10149073B2 (en) * 2014-08-04 2018-12-04 Starkey Laboratories, Inc. Systems and methods for hearing assistance RF multi-band operation
US9928149B2 (en) 2014-08-29 2018-03-27 Cynny Space Srl Systems and methods to maintain data integrity and redundancy in a computing system having multiple computers
US9942314B2 (en) * 2014-12-17 2018-04-10 Apriva, Llc System and method for optimizing web service availability with a node group agreement protocol

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060031722A1 (en) * 2004-08-04 2006-02-09 International Business Machines Corporation Apparatus, system, and method for active data verification in a storage system
US20070073990A1 (en) * 2005-09-23 2007-03-29 Snaman William E Jr Distribution of data in a distributed shared storage system
CN103329111A (zh) * 2012-01-19 2013-09-25 华为技术有限公司 一种基于块存储的数据处理方法、装置及***
US20130346809A1 (en) * 2012-06-25 2013-12-26 Cleversafe, Inc. Detecting storage errors in a dispersed storage network
US20140006597A1 (en) * 2012-06-29 2014-01-02 Mrittika Ganguli Method, system, and device for managing server hardware resources in a cloud scheduling environment
US20140025770A1 (en) * 2012-07-17 2014-01-23 Convergent.Io Technologies Inc. Systems, methods and devices for integrating end-host and network resources in distributed memory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112003736A (zh) * 2020-07-31 2020-11-27 深圳市腾讯网域计算机网络有限公司 一种多节点配置信息确定方法、装置及存储介质
CN112003736B (zh) * 2020-07-31 2023-05-02 深圳市腾讯网域计算机网络有限公司 一种多节点配置信息确定方法、装置及存储介质

Also Published As

Publication number Publication date
US20160065674A1 (en) 2016-03-03
US10565074B2 (en) 2020-02-18
EP3186720A4 (en) 2018-03-28
US9823985B2 (en) 2017-11-21
US20160062859A1 (en) 2016-03-03
CN106687943B (zh) 2021-07-27
US9928149B2 (en) 2018-03-27
EP3186720B1 (en) 2021-02-17
US20160065493A1 (en) 2016-03-03
EP3186720A1 (en) 2017-07-05

Similar Documents

Publication Publication Date Title
Van Renesse et al. Willow: DHT, aggregation, and publish/subscribe in one protocol
CN100588203C (zh) 数据存储方法和***
JP4358581B2 (ja) 効率的な分散データ構造を備えた改良されたオーバレイネットワークを生成するシステムおよび方法
KR101183050B1 (ko) 자기조직화 네트워크들을 위한 분산 해싱 메커니즘
CN106687943A (zh) 组织具有多个计算机的计算***、在计算机之中分配计算任务、以及在计算机***中维护数据完整性与冗余的***和方法
CN105339929B (zh) 选择用于取消重复数据的存储
JP5043937B2 (ja) 分散システム内の連合リソース発見のための方法およびコンピュータ・プログラム
CN105144105B (zh) 用于可扩展的崩溃一致的快照操作的***和方法
US7788361B2 (en) System and method for transferring volume ownership in networked storage
WO2022083690A1 (zh) 数据管理方法、装置、设备、计算机存储介质和程序
CN105159603B (zh) 一种分布式数据存储***的修复方法
US20140304334A1 (en) Virtual multi-cluster clouds
JP2008533564A (ja) データ管理のための方法および装置
CN109828868A (zh) 数据存储方法、装置、管理设备和双活数据存储***
US20110072126A1 (en) Method and apparatus for constructing a dht-based global namespace
CN108566449A (zh) 基于区块链的域名解析数据管理方法、***及存储***
Cai et al. Foreseer: a novel, locality-aware peer-to-peer system architecture for keyword searches
WO2024140698A1 (zh) 一种会话处理方法、***、装置及存储介质
Akavipat et al. ReDS: A framework for reputation-enhanced DHTs
US20070165619A1 (en) Device and method for retrieving/storing electronic data in a system with a plurality of data processing units
Lai et al. A scalable multi-attribute hybrid overlay for range queries on the cloud
WO2019200751A1 (zh) 主备切换方法、装置、计算机设备和存储介质
US8775734B2 (en) Virtual disks constructed from unused distributed storage
CN107122442A (zh) 一种分布式数据库及其访问方法
Maia et al. Dataflasks: epidemic store for massive scale systems

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
TA01 Transfer of patent application right

Effective date of registration: 20171011

Address after: Florence Italy

Applicant after: Seni Space Co.,Ltd.

Address before: Florence Italy

Applicant before: Senj

Effective date of registration: 20171011

Address after: Florence Italy

Applicant after: Senj

Address before: Florence Italy

Applicant before: Senj

Applicant before: CYNNY Inc.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20210727

CF01 Termination of patent right due to non-payment of annual fee