国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      組織具有多個計算機(jī)的計算系統(tǒng)、在計算機(jī)之中分配計算任務(wù)、以及在計算機(jī)系統(tǒng)中維護(hù)數(shù)據(jù)完整性與冗余的系統(tǒng)和方法與流程

      文檔序號:11935161閱讀:350來源:國知局
      組織具有多個計算機(jī)的計算系統(tǒng)、在計算機(jī)之中分配計算任務(wù)、以及在計算機(jī)系統(tǒng)中維護(hù)數(shù)據(jù)完整性與冗余的系統(tǒng)和方法與流程

      本申請要求遞交于2015年4月20日、名為“SYSTEMS AND METHODS TO DISTRIBUTE COMPUTING TASK AMONG MULTIPLE COMPUTERS(用于在多個計算機(jī)之中分配計算任務(wù)的系統(tǒng)和方法)”的美國專利申請序列號為14/691,301,遞交于2015年4月20日、名為“SYSTEMS AND METHODS TO ORGANIZE A COMPUTING SYSTEM HAVING MULTIPLE COMPUTERS(用于組織具有多個計算機(jī)的計算系統(tǒng)的系統(tǒng)和方法)”的美國申請序列號為14/691,316,遞交于2015年4月20日、名為“SYSTEMS AND METHOD TO MAINTAIN DATA INTEGRITY AND REDUNDANCY IN A COMPUTING SYSTEM HAVING MULTIPLE COMPUTERS(在具有多個計算機(jī)的計算機(jī)系統(tǒng)中維護(hù)數(shù)據(jù)完整性與冗余的系統(tǒng)和方法)”的美國專利申請序列號為14/691,324的優(yōu)先權(quán);以及遞交于2014年8月29日、名為“SYSTEMS AND METHODS TO CONFIGURE DATA STORAGE AND PROCESSING WITH REDUNDANCY AND EFFICIENCY(用于配置數(shù)據(jù)存儲和處理冗余和效率的系統(tǒng)和方法)”的美國臨時專利申請序列號為62/044,140的優(yōu)先權(quán),上述申請通過引用全部結(jié)合于此。

      技術(shù)領(lǐng)域

      在本公開中所表示的至少一些的實施例總體上涉及分布式計算,具體但不局限于用冗余進(jìn)行的數(shù)據(jù)存儲。



      背景技術(shù):

      目前的存儲網(wǎng)絡(luò)方案(例如,企業(yè)級的方案)主要基于使用由少數(shù)CPU/核來控制一些盤的陣列的服務(wù)器。基于在盤陣列中分配數(shù)據(jù)/信息的片段或塊,實現(xiàn)冗余和錯誤更正的策略(例如,廉價硬盤的冗余陣列或獨(dú)立硬盤的冗余陣列(RAID))。CPU服務(wù)在各種通信協(xié)議中所做出的輸入/輸出(I/O)請求,諸如http、ftp、samba等等。

      在這種方案中,因為通常在硬盤方面具有的瓶頸,所以通過添加CPU來加速服務(wù)器的執(zhí)行并不普遍。在陣列中添加硬盤,要求陣列的重新形成。添加CPU和添加硬盤的兩種操作都可能要求該服務(wù)的臨時暫停。維護(hù)操作(諸如在陣列中放置硬盤)也可能引起服務(wù)的暫?;蛸|(zhì)量下降。

      美國專利申請公布序列號2013/0346794公開了一種系統(tǒng),用于當(dāng)在存儲設(shè)備組中的存儲設(shè)備發(fā)生故障時恢復(fù)冗余。這種系統(tǒng)用專用備件來增加冗余和/或更正問題,并且任何存儲位置都是使用專用備件的存儲設(shè)備組的一部分。

      KR20130133264公開了一種實現(xiàn)冗余的系統(tǒng),其中每一個存儲單元被配置以具有相應(yīng)的單元以反映正在存儲的數(shù)據(jù)。

      CN103297547公開了一種構(gòu)建云存儲輔助系統(tǒng)的方法,其中在P2P存儲中的數(shù)據(jù)有效性由用馬爾科夫模型執(zhí)行的數(shù)據(jù)動態(tài)建模所預(yù)測,并且因此,由于數(shù)據(jù)被云讀取的事實,帶寬成本被有效地降低。

      美國專利申請公布序列號2012/0054280公開了相關(guān)聯(lián)的用戶之間共享云數(shù)據(jù)資源。

      CN102984280公開了社交云存儲網(wǎng)絡(luò)應(yīng)用,該應(yīng)用使用主邏輯節(jié)點(diǎn)、多個連續(xù)節(jié)點(diǎn)、以及多個數(shù)據(jù)節(jié)點(diǎn)。

      TW201234809公開了一種方法,基于由云存儲訪問系統(tǒng)所執(zhí)行的社交網(wǎng)絡(luò)的用于顯示數(shù)據(jù)對象。

      附圖說明

      圖1根據(jù)一個實施例,示出連接多個單元計算機(jī)計算機(jī)網(wǎng)絡(luò)以形成計算系統(tǒng)的計算機(jī)網(wǎng)絡(luò);

      圖2根據(jù)一個實施例,示出在計算機(jī)網(wǎng)絡(luò)上由多個單元計算機(jī)所形成的計算實體;

      圖3根據(jù)一個實施例,示出配置用于計算實體的單元計算機(jī)的自動操作;

      圖4根據(jù)一個實施例,示出到計算機(jī)實體中的一組單元計算機(jī)的計算任務(wù)的分配;

      圖5根據(jù)一個實施例,示出配置計算系統(tǒng)的方法;

      圖6根據(jù)一個實施例,示出配置被添加到計算系統(tǒng)的計算機(jī)的方法;

      圖7根據(jù)一個實施例,示出操作計算系統(tǒng)中的計算機(jī)的方法;

      圖8根據(jù)一個實施例,示出分配與文件有關(guān)的計算任務(wù)到計算系統(tǒng)中的計算機(jī)的子集的方法;

      圖9根據(jù)一個實施例,示出分配與文件有關(guān)的計算任務(wù)到計算機(jī)系統(tǒng)中的計算機(jī)的子集的示例;

      圖10根據(jù)一個實施例,示出維護(hù)數(shù)據(jù)冗余和完成性的方法;

      圖11根據(jù)一個實施例,示出從具有用冗余所儲存的文件的計算系統(tǒng)中移除計算機(jī)的方法;

      圖12根據(jù)一個實施例,示出在具有用冗余所儲存的文件的計算系統(tǒng)中添加計算機(jī)的方法;

      圖13根據(jù)一個實施例,示出提出訪問儲存在計算系統(tǒng)中的多個計算機(jī)中的文件的請求的方法;

      圖14根據(jù)一個實施例,示出改變在計算系統(tǒng)中的計算機(jī)的可用性方法,該計算機(jī)系統(tǒng)被配置以用冗余儲存文件;

      圖15根據(jù)一個實施例,示出配置數(shù)據(jù)存儲的系統(tǒng);

      圖16根據(jù)一個實施例,示出標(biāo)識用于儲存或處理一部分文件的計算設(shè)備的方法;

      圖17根據(jù)一個實施例,示出可以在計算系統(tǒng)中使用的計算機(jī);

      圖18-圖20根據(jù)一個實施例,示出在計算系統(tǒng)中的計算機(jī)的生命期。

      具體實施方式

      說明概述

      本部分中總結(jié)了一些實施例,用于組織具有多個計算機(jī)的計算系統(tǒng)、在計算機(jī)之間分配計算任務(wù)、以及在計算系統(tǒng)中維護(hù)數(shù)據(jù)的完整性和冗余。

      一方面,實施例包括計算設(shè)備,該計算設(shè)備被配置來標(biāo)識所分配給計算設(shè)備的那部分計算工作(如果存在的話),基于該計算工作的標(biāo)識信息以及計算網(wǎng)絡(luò)中存在的一系列計算設(shè)備的標(biāo)識符,來處理該計算工作。部分由獨(dú)立于在計算網(wǎng)絡(luò)中的其他計算設(shè)備的計算機(jī)設(shè)備所標(biāo)識。例如,基于預(yù)先確定的計算功能,計算設(shè)備可以將計算工作的標(biāo)識信息映射到計算設(shè)備的一組標(biāo)識符。標(biāo)識符中的每一個對應(yīng)于計算工作的預(yù)先確定的部分。如果標(biāo)識符中的一個對應(yīng)于計算設(shè)備的標(biāo)識符,那么計算設(shè)備執(zhí)行與所映射的標(biāo)識符相關(guān)聯(lián)的計算任務(wù)的預(yù)先確定的部分。

      另一方面,實施例包括具有經(jīng)由用于形成計算實體的計算機(jī)網(wǎng)絡(luò)所連接的多個計算機(jī)的計算系統(tǒng)。計算機(jī)中的每一個充分獨(dú)立于其他計算機(jī)操作。計算機(jī)中的每一個被配置來當(dāng)計算機(jī)被連接到計算機(jī)網(wǎng)絡(luò)的時候,詢問計算機(jī)網(wǎng)絡(luò)中的網(wǎng)絡(luò)基礎(chǔ)設(shè)施以確定計算實體的標(biāo)識,并且因此通過在該計算實體中宣告它的存在而加入計算實體。計算機(jī)中的每一個被配置以基于在網(wǎng)絡(luò)基礎(chǔ)設(shè)施中的連接性配置,來確定在計算實體中的計算機(jī)的標(biāo)識符,并且基于在實體中的計算機(jī)的現(xiàn)有數(shù)據(jù),來假設(shè)用來執(zhí)行經(jīng)由計算機(jī)網(wǎng)絡(luò)朝向計算實體的計算請求的一部分操作的角色。

      另一方面,實施例包括被配置以規(guī)則引擎的計算設(shè)備,以將一組預(yù)先確定的規(guī)則應(yīng)用于與形成計算實體的計算網(wǎng)絡(luò)中的計算機(jī)的現(xiàn)有數(shù)據(jù)的變化相關(guān)的情況,在這種情況中,在計算實體中所儲存的數(shù)據(jù)在計算機(jī)之間被分配用于冗余和數(shù)據(jù)恢復(fù)。響應(yīng)于先前在計算實體中存在的計算機(jī)的缺少,規(guī)則使得計算設(shè)備與計算機(jī)的一個或多個進(jìn)行通信以執(zhí)行數(shù)據(jù)恢復(fù)和用冗余儲存該缺少的計算機(jī)的數(shù)據(jù)。響應(yīng)于添加新的計算機(jī)到計算實體中,規(guī)則使得計算設(shè)備與計算機(jī)的一個或多個進(jìn)行通信以橫跨計算實體重新分配數(shù)據(jù),以使用由新的計算機(jī)所提供的存儲容量。

      本公開包括方法和執(zhí)行這些方法的裝置,包括執(zhí)行這些方法的數(shù)據(jù)處理系統(tǒng)、以及包含指令的計算機(jī)可讀介質(zhì),當(dāng)該指令在數(shù)據(jù)處理系統(tǒng)上被執(zhí)行的時候處理系統(tǒng)使得該系統(tǒng)執(zhí)行這些方法,

      通過下文的附圖和詳細(xì)描述,其他特征將是顯而易見的。

      具體實施例

      本公開包括允許用于電子數(shù)據(jù)的存儲系統(tǒng)的實現(xiàn)方式的技術(shù),其中根據(jù)表現(xiàn)和空間,系統(tǒng)可以被虛擬地和無限地擴(kuò)展。

      在一個實施例中,本文所呈現(xiàn)的技術(shù)使用一組專用的軟件指令,該指令被配置以間接得知硬件故障,并且因此能夠自動地圍繞故障工作,并且作為整體維護(hù)所儲存的數(shù)據(jù)以及系統(tǒng)的完整性與可靠性。

      在一個實施例中,數(shù)據(jù)存儲系統(tǒng)被配置為社交云,作為計算實體來操作,該計算實體包括作為計算單元來操作的多個單元計算機(jī)(cell computer),該計算單元被配置來提供校驗和可用性。

      例如,相對于校驗,一個實施例中的實體中的任何單元可以由該角色的任何其他設(shè)備而容易地替代(例如,基于點(diǎn)對點(diǎn)策略),并且相對于可用性,在系統(tǒng)中的數(shù)據(jù)和硬件具有冗余。

      圖1根據(jù)一個實施例,示出連接用于形成計算系統(tǒng)的多個單元計算機(jī)的計算機(jī)網(wǎng)絡(luò)。

      在圖1中,一組單元計算機(jī)(101)可以經(jīng)由一組網(wǎng)絡(luò)設(shè)備(103)(諸如網(wǎng)絡(luò)交換器、路由器、網(wǎng)關(guān)等等)連接到計算機(jī)網(wǎng)絡(luò)上。在單元計算機(jī)(101)連接到計算機(jī)網(wǎng)絡(luò)之前,最初單元計算機(jī)(101)可以在軟件和/或硬件中被完全相同地配置。一旦連接到網(wǎng)絡(luò)設(shè)備(103),在一個實施例中,該單元計算機(jī)(101)被配置來針對在計算實體中的計算角色為它們自己自動地分配獨(dú)特的標(biāo)識符。

      例如,在網(wǎng)絡(luò)設(shè)備(103)的網(wǎng)絡(luò)連接性層級中,被連接到相應(yīng)的網(wǎng)絡(luò)設(shè)備(103)的單元計算機(jī)(101)中的每一個具有獨(dú)特的位置。在網(wǎng)絡(luò)連接性層級中存在的獨(dú)特的位置可以被映射到獨(dú)特的標(biāo)識符。因此,如果不同的單元計算機(jī)(101)在相同的獨(dú)特的位置代替相應(yīng)的單元計算機(jī)(101),那么不同的單元計算機(jī)(101)被分配相同的獨(dú)特的標(biāo)識符。

      在一個實施例中,單元計算機(jī)(101)中的每一個都被配置來與網(wǎng)絡(luò)基礎(chǔ)設(shè)施進(jìn)行通信以在網(wǎng)絡(luò)連接性層級中標(biāo)識它的獨(dú)特的位置并且用預(yù)先確定的方案或功能使得位置信息對于獨(dú)特的標(biāo)識符可用。因此,一旦被連接到計算機(jī)網(wǎng)絡(luò)中,基于與該網(wǎng)絡(luò)基礎(chǔ)設(shè)施的通信,單元計算機(jī)(101)中的每一個能夠計算/確定在計算實體/系統(tǒng)中它的獨(dú)特的標(biāo)識符。

      在一個實施例中,基于相應(yīng)的單元計算機(jī)(101)將要連接到的計算機(jī)網(wǎng)絡(luò)的特征,單元計算機(jī)(101)中的每一個還可以被配置來自動地確定相應(yīng)的單元計算機(jī)(101)將要加入的計算機(jī)實體的標(biāo)識。

      例如,一旦被連接到計算機(jī)網(wǎng)絡(luò)上,單元計算機(jī)(101)被配置以與網(wǎng)絡(luò)基礎(chǔ)設(shè)施進(jìn)行通信以確定計算機(jī)網(wǎng)絡(luò)的域名,并且用域名作為計算機(jī)實體的標(biāo)識符,或用域名來計算計算機(jī)實體的標(biāo)識符。單元計算機(jī)(101)之后被配置以加入由計算機(jī)實體標(biāo)識符所標(biāo)識的計算機(jī)實體/系統(tǒng)。因此,相同地被配置的單元計算機(jī)(101)可以僅僅連接到具有不同域名的計算機(jī)網(wǎng)絡(luò)中,以加入對應(yīng)該域名的相應(yīng)的計算實體。

      圖2根據(jù)一個實施例,示出經(jīng)由計算機(jī)網(wǎng)絡(luò)由多個單元計算機(jī)(101)所形成的計算實體。

      在圖2中,計算機(jī)網(wǎng)絡(luò)(105)包括如圖1所示出的網(wǎng)絡(luò)設(shè)備(103)。當(dāng)相應(yīng)的單元計算機(jī)(101)被連接到計算機(jī)網(wǎng)絡(luò)(105)的時候,單元計算機(jī)(101)中的每一個計算計算機(jī)實體標(biāo)識符。因為基于與計算機(jī)網(wǎng)絡(luò)(105)相同的域名來計算機(jī)實體標(biāo)識符,所以單元計算機(jī)(101)加入相同的計算實體(107)中。

      在一個實施例中,單元計算機(jī)(101)中的每一個被配置以在計算實體(107)中傳播單元計算機(jī)(101)的現(xiàn)有信息。例如,當(dāng)單元計算機(jī)(101)被連接到計算機(jī)網(wǎng)絡(luò)(105)上的時候,該單元計算機(jī)(101)被配置來與網(wǎng)絡(luò)基礎(chǔ)設(shè)施進(jìn)行通信以計算它的獨(dú)特的標(biāo)識符,并且在計算機(jī)網(wǎng)絡(luò)(105)中宣告它的存在和獨(dú)特的標(biāo)識符,使得在網(wǎng)絡(luò)中的與該單元計算機(jī)(101)相鄰的其他單元計算機(jī)(101)得知該單元計算機(jī)(101)存在于計算實體(107)中。

      在一個實施例中,每一個相應(yīng)的單元計算機(jī)(101)被配置來在相應(yīng)的單元計算機(jī)(101)中儲存單元計算機(jī)(101)的現(xiàn)有數(shù)據(jù),包括相應(yīng)的單元計算機(jī)(101)得知的單元計算機(jī)(101)的一系列獨(dú)特的標(biāo)識符。例如,如果相應(yīng)的單元計算機(jī)(101)在計算機(jī)網(wǎng)絡(luò)(105)中觀察到宣告新的單元計算機(jī)(101)的存在的信息,該相應(yīng)的單元計算機(jī)(101)被配置來添加新的單元計算機(jī)(101)到它的現(xiàn)有列表中。

      此外,當(dāng)現(xiàn)有數(shù)據(jù)發(fā)生變化的時候,每一個相應(yīng)的單元計算機(jī)(101)可以向它的現(xiàn)有列表上中的每一個單元計算機(jī)(101)提供通知消息以傳播該變化。在一些實施例中,單元計算機(jī)(101)中的每一個等待某個隨機(jī)時間段以推送出它的關(guān)于該變化的通知。

      因此,在計算實體(107)中,單元計算機(jī)(101)中的每一個得知該計算實體(107)中的其他單元計算機(jī)(101)的可用性。基于現(xiàn)有數(shù)據(jù)以及預(yù)先確定的算法,計算實體(107)中的單元計算機(jī)(101)中的每一個可以將它自己與計算實體(107)所共享的計算任務(wù)從其他單元計算機(jī)(101)的操作中獨(dú)立地標(biāo)識/分配。

      圖3根據(jù)一個實施例,示出配置用于計算實體(107)的單元計算機(jī)的自動操作。在圖3中,一旦被連接到計算機(jī)網(wǎng)絡(luò)(105)中,每一個單元計算機(jī)(101)被配置來與網(wǎng)絡(luò)基礎(chǔ)設(shè)施(諸如,網(wǎng)絡(luò)設(shè)備(103))進(jìn)行通信以自動地確定它的網(wǎng)絡(luò)配置數(shù)據(jù),諸如因特網(wǎng)(IP)地址(117)、計算機(jī)網(wǎng)絡(luò)(105)的域名(113)、以及在網(wǎng)絡(luò)設(shè)備(103)的連接性層級中的單元計算機(jī)(101)的網(wǎng)絡(luò)連接性位置(115)。

      例如,網(wǎng)絡(luò)設(shè)備(103)中的每一個具有多個端口。網(wǎng)絡(luò)設(shè)備(103)的每個端口具有獨(dú)特的標(biāo)識符。到端口的連接由該端口的獨(dú)特的標(biāo)識符所標(biāo)識;并且從單元計算機(jī)(101)到頂層網(wǎng)絡(luò)設(shè)備(103)(諸如,頂層網(wǎng)關(guān))的對具體端口的連接的層級表示單元計算機(jī)(101)的獨(dú)特的網(wǎng)絡(luò)連接性位置(115)。

      在圖3中,在獨(dú)特的網(wǎng)絡(luò)連接性位置(115)處所連接的單元計算機(jī)(101)的獨(dú)特的單元標(biāo)識符(123)是從獨(dú)特的網(wǎng)絡(luò)連接性位置(115)中所計算,并且單元計算機(jī)(101)所加入的計算實體(107)的實體標(biāo)識符(121)是從域名(113)中所計算。因此,基于網(wǎng)絡(luò)配置數(shù)據(jù)(111),單元計算機(jī)(101)配置它自己在計算實體(107)中的角色。

      在一個實施例中,計算實體(107)被配置來針對接收的請求分配計算機(jī)任務(wù)給計算實體(107)中的單元計算機(jī)(101)的子集。在一個實施例中,單元計算機(jī)(101)中的每一個包含在計算實體(107)中的其他單元計算機(jī)(101)的現(xiàn)有信息,并且在相同的數(shù)據(jù)上采用相同的算法(包括現(xiàn)有信息)來對任務(wù)的分配進(jìn)行計算。因此,針對在計算實體(107)中所接收的給定的計算請求,每一個相應(yīng)的單元計算機(jī)(101)能夠確定單元計算機(jī)(101)的標(biāo)識,該標(biāo)識被分配來執(zhí)行用于計算請求的任務(wù)的預(yù)先確定的部分,并且每一個相應(yīng)的單元計算機(jī)(101)標(biāo)識與執(zhí)行被分配給相應(yīng)的單元計算機(jī)(101)的部分。因此,每一個相應(yīng)的單元計算機(jī)(101)能夠自我分配計算任務(wù)的正確部分。

      圖4根據(jù)一個實施例,示出到計算實體(107)中的一組單元計算機(jī)(101)的計算任務(wù)的分配。在圖4中,現(xiàn)有映射(125)包括在計算實體(107)中的單元計算機(jī)(101)的單元標(biāo)識符(123)之間的映射,以及用于網(wǎng)絡(luò)通信的單元計算機(jī)(101)的IP地址(117)(或者其他類型的網(wǎng)絡(luò)地址)。

      在一個實施例中,針對給定的全局請求標(biāo)識符(129)(諸如將被儲存在計算實體(107)中的文件的文件名),用于處理請求的操作被分成預(yù)先確定的數(shù)量的任務(wù)(127)。例如,任務(wù)(127)中的每一個可以對應(yīng)于用冗余或同等物來儲存該文件的數(shù)據(jù)的預(yù)先確定的部分。向任務(wù)(127)分配單元計算機(jī)(101)的子集,預(yù)先確定的算法被用于現(xiàn)有映射(125)和全局請求標(biāo)識符(129)來計算單元標(biāo)識符(123)(并且因此他們對應(yīng)于IP地址(117))。

      例如,單元標(biāo)識符(123)可以被配置為在預(yù)先確定的范圍(諸如,虛擬IP地址)內(nèi)的數(shù)字,以及散列函數(shù)可以被用于預(yù)先確定的范圍的全局請求標(biāo)識符(129)。散列函數(shù)可以遞歸地被用于計算在現(xiàn)有映射內(nèi)(125)的多個單元標(biāo)識符(123)。用于為相應(yīng)的任務(wù)(127)選擇IP地址(117)的其他方法可以被使用。因此,本公開不局限于散列函數(shù)的實現(xiàn)方式。

      在一個實施例中,針對相應(yīng)的任務(wù)(127)的IP地址(117)的選擇基于全局請求標(biāo)識符(129),使得不同的請求被分配給單元計算機(jī)(101)的不同的子集用于在計算實體(107)中的單元計算機(jī)(101)之間的自動負(fù)載平衡。

      在一個實施例中,由于在計算實體(107)中的單元計算機(jī)(101)中的每一個維護(hù)相同的現(xiàn)有映射(125)、接收相同的全局請求標(biāo)識符(129)、并且使用相同的算法/函數(shù)來計算所分配用于執(zhí)行任務(wù)的單元計算機(jī)(101)的IP地址(117)的所選中的單元標(biāo)識符(123),所以單元計算機(jī)(101)可以計算出相同的結(jié)果。因此,單元計算機(jī)(101)中的每一個僅僅確定是否有分配給它們自己的任務(wù)(127),并且如果有的話則執(zhí)行相應(yīng)的任務(wù)(127)。

      圖5根據(jù)一個實施例,示出配置計算系統(tǒng)的方法。在圖5中,在具有相同的配置的多個可互換的單元計算機(jī)(101)以如圖1與圖2所示的方式被連接到(201)計算機(jī)網(wǎng)絡(luò)(105)之后,該單元計算機(jī)(101)基于計算機(jī)網(wǎng)絡(luò)(105)的網(wǎng)絡(luò)標(biāo)識被組織(203)進(jìn)入計算實體(107)。由于單元計算機(jī)(101)中的每一個可以獲得獨(dú)立于彼此的計算機(jī)網(wǎng)絡(luò)(105)的網(wǎng)絡(luò)標(biāo)識,單元計算機(jī)(101)中的每一個可以被配置來計算它所加入的計算實體(107)的獨(dú)立于其他單元計算機(jī)(101)的實體標(biāo)識符(121)。

      在圖5中,基于網(wǎng)絡(luò)配置數(shù)據(jù)(111)(例如,網(wǎng)絡(luò)連接性位置(115)),單元標(biāo)識符(123)被分配(205)給單元計算機(jī)(101)。由于單元計算機(jī)(101)中的每一個可以獨(dú)立于彼此獲得它的網(wǎng)絡(luò)配置數(shù)據(jù)(111),單元計算機(jī)(101)中的每一個可以被配置來計算它的獨(dú)立于其他單元計算機(jī)(101)的單元標(biāo)識符(123)。

      在圖5中,基于被分配給單元計算機(jī)(101)的單元標(biāo)識符(123),單元計算機(jī)(101)的角色被分配(207)給計算實體(107)中的單元計算機(jī)(101)。因此,基于由自我分配的標(biāo)識符(123)以及分配方案預(yù)先確定的作用,單元計算機(jī)(101)可以自我分配它們在計算機(jī)實體(107)中的作用。

      在圖5中,單元計算機(jī)(101)在計算實體(107)內(nèi)傳送(209)具有它們相應(yīng)地被分配的單元標(biāo)識符(123)的單元計算機(jī)(101)的存在。因此,當(dāng)計算機(jī)網(wǎng)絡(luò)(105)中將被傳播的現(xiàn)有數(shù)據(jù)不存在更多的變化的時候,單元計算機(jī)(101)中的每一個具有在計算實體(107)中的單元計算機(jī)(101)的單元標(biāo)識符(123)的相同的完整列表和用于與彼此通信的它們相應(yīng)的網(wǎng)絡(luò)地址。

      在圖5中,基于具有所分配的單元標(biāo)識符(123)的單元計算機(jī)(101)的現(xiàn)有數(shù)據(jù),計算實體(107)被配置來分配(211)計算任務(wù)(127)給單元計算機(jī)(101)。由于單元計算機(jī)(101)中的每一個在它們的現(xiàn)有數(shù)據(jù)中具有單元標(biāo)識符(123)的相同的完整列表,所以單元計算機(jī)(101)中的每一個可以獨(dú)立于其他單元計算機(jī)(101)標(biāo)識那些分配給它們自己的任務(wù)(127)。

      在圖5中,如果(213)新的單元計算機(jī)(101)被加入到計算機(jī)網(wǎng)絡(luò)(105)中,新的單元計算機(jī)(101)基于計算機(jī)網(wǎng)絡(luò)(105)的網(wǎng)絡(luò)標(biāo)識符被組織(203)到計算實體(107)中。如果(213)現(xiàn)有的單元計算機(jī)(101)從計算機(jī)網(wǎng)絡(luò)(105)中被移除,在計算實體(107)中剩余的單元計算機(jī)(101)與彼此進(jìn)行通信(209)以更新它們的現(xiàn)有數(shù)據(jù)。

      如果現(xiàn)有的單元計算機(jī)(101)在相同的網(wǎng)絡(luò)連接性位置(115)被新的單元計算機(jī)(101)所代替(例如,被連接到相同的網(wǎng)絡(luò)設(shè)備(103)的相同的端口),那么該新的單元計算網(wǎng)絡(luò)(101)在該計算實體(107)中自動地替代現(xiàn)有的單元計算機(jī)(101)的角色。

      因此,通過自動操作,人力在維護(hù)以及配置計算實體(107)過程中的介入被減少和/或最小化。

      圖6根據(jù)一個實施例,示出配置所添加到計算系統(tǒng)中的計算機(jī)的方法。

      在圖6中,在單元計算機(jī)(101)被連接(231)到計算機(jī)網(wǎng)絡(luò)(105)之后,單元計算機(jī)(101)與計算網(wǎng)絡(luò)(105)進(jìn)行通信以自動地配置單元計算機(jī)(101)的網(wǎng)絡(luò)參數(shù),諸如來自動態(tài)主機(jī)配置協(xié)議(DHCP)的服務(wù)器的IP地址(117)。單元計算機(jī)(101)之后自動地與計算網(wǎng)絡(luò)(105)進(jìn)行通信(235)以標(biāo)識在連接性層級中的單元計算機(jī)(101)的網(wǎng)絡(luò)連接性位置(115)(例如,經(jīng)由鏈路層發(fā)現(xiàn)協(xié)議(LLDP)查詢)?;谥T如計算機(jī)網(wǎng)絡(luò)(105)的域名(113)的網(wǎng)絡(luò)參數(shù),單元計算機(jī)(101)確定(237)計算實體(107)的實體標(biāo)識符(121);基于單元計算機(jī)(101)的網(wǎng)絡(luò)連接性位置(115),從多個預(yù)先確定的作用中選擇選單元計算機(jī)(101)的作用。

      在圖6中,單元計算機(jī)(101)宣告(241)該單元計算機(jī)(101)在計算實體(107)中的存在;標(biāo)識(243)在計算實體(107)中的其他單元計算機(jī)(101);基于在計算實體(107)中的其他單元計算機(jī)(101)的標(biāo)識,標(biāo)識(245)與該角色相關(guān)聯(lián)的一組任務(wù)(127);以及在計算實體(107)中執(zhí)行(247)該組任務(wù)(127)。

      圖7根據(jù)一個實施例,示出在計算機(jī)系統(tǒng)中操作計算機(jī)的方法。

      在圖7中,在啟動(251)所連接到計算機(jī)網(wǎng)絡(luò)(105)的單元計算機(jī)(101)的之后,該單元計算機(jī)(101)自動地與服務(wù)器進(jìn)行通信(253)以配置連接到計算機(jī)網(wǎng)絡(luò)(105)的單元計算機(jī)(101)的網(wǎng)絡(luò)接口。單元計算機(jī)(101)確定(255)單元計算機(jī)(101)的域名(113)用于所連接到計算機(jī)網(wǎng)絡(luò)(105)的網(wǎng)絡(luò)接口;從域名(113)計算(257)計算實體(107)的實體標(biāo)識符(121);詢問(259)(諸如,經(jīng)由LLDP詢問)網(wǎng)絡(luò)基礎(chǔ)設(shè)施,來確定基礎(chǔ)設(shè)施中網(wǎng)絡(luò)接口的獨(dú)特的位置;以及,從表示網(wǎng)絡(luò)基礎(chǔ)設(shè)施中網(wǎng)絡(luò)接口的獨(dú)特的位置的數(shù)據(jù)中,計算(261)在計算機(jī)實體(107)中的單元計算機(jī)(101)的獨(dú)特的單元標(biāo)識符(123)。

      在獲得(263)計算實體(107)中的單元計算機(jī)(101)的單元標(biāo)識符(123)的列表之后,針對對于計算實體(107)的給定請求并且基于在單元計算機(jī)(101)上的現(xiàn)有映射(125)中所剩余的單元標(biāo)識符(123)的列表,單元計算機(jī)(101)確定(265)將在單元計算機(jī)(101)上被實現(xiàn)的那部分請求。

      在一個實施例中,將要在單元計算機(jī)(101)上所實現(xiàn)的那部分請求還基于給定請求的全局請求標(biāo)識符(129)(諸如將要在計算實體(107)中儲存的文件的名稱)所確定。

      在一個實施例中,所使用的分布式散列表(DHT)方法將被用作在單元之間的通信協(xié)議來傳送存在和斷開(例如,如由Lon Stoica等人在“Chord:A scalable Peer-to-peer Lookup Service for Internet Applications(弦:針對互聯(lián)網(wǎng)應(yīng)用可調(diào)整點(diǎn)對點(diǎn)查找服務(wù),其于2001年8月27-31日在美國加州圣地亞哥的SIGCOMM’01所指出、并且發(fā)表于2003年2月IEEE/ACM匯刊,Networking,Vol.11,第一期第17-32頁))”中所公開的。

      圖8根據(jù)一個實施例,示出將與文件相關(guān)的計算任務(wù)(127)分配給計算機(jī)系統(tǒng)中的計算機(jī)的子集的方法。

      在圖8中,在具有多個單元計算機(jī)(101)的計算機(jī)實體(107)中儲存(271)計算機(jī)實體(107)中用來標(biāo)識單元計算機(jī)(101)的存在的現(xiàn)有數(shù)據(jù)(諸如,125)之后,計算機(jī)實體(107)接收(273)請求以儲存具有文件名的文件。依據(jù)預(yù)先確定的方案,文件在計算實體(107)中的儲存被分成(275)多個操作。為了將多個操作/任務(wù)(127)分配給多個單元計算機(jī)(101),對于文件名采用(277)散列方案以獲得用來標(biāo)識(279)多個單元計算機(jī)(101)的多個散列值。

      在一個實施例中,在計算實體(107)中的單元計算機(jī)(101)被配置來計算散列值以標(biāo)識(279)多個平行的單元計算機(jī),并且確定它們是否被分配以執(zhí)行任何和/或哪些操作。

      因此,由散列值所標(biāo)識的多個單元計算機(jī)(101)中的每一個相應(yīng)的單元計算機(jī)(101),自我分配(281)相應(yīng)的操作。

      圖9根據(jù)一個實施例,示出將與文件相關(guān)的計算任務(wù)(127)分配給計算系統(tǒng)中的計算機(jī)的子集的示例。

      在圖9中,在標(biāo)識多個單元計算機(jī)(101)的存在的現(xiàn)有映射(125)被儲存(291)在計算實體(107)的單元計算機(jī)(101)中之后,單元計算機(jī)(101)在計算實體(107)中接收(293)對于儲存具有文件名的文件的請求,其中該文件在計算實體(107)中的儲存被預(yù)先分為多個任務(wù)(127),諸如保存該文件的元數(shù)據(jù)、保存文件的副本或文件的一部分、計算用于緩存的校驗數(shù)據(jù)、保存校驗數(shù)據(jù)等等。

      在圖9中,單元計算機(jī)(101)將散列方案用于文件名以獲得多個散列值,每一個散列值對應(yīng)任務(wù)(127)中的一個,并且每一個散列值對應(yīng)計算實體(107)中的單元計算機(jī)(101)中的一個。

      單元計算機(jī)(101)確定(297)是否有散列值自身對應(yīng)于單元計算機(jī)(101)的標(biāo)識,如果有的話,則執(zhí)行(299)與自身對應(yīng)于單元計算機(jī)(101)的標(biāo)識的散列值相關(guān)聯(lián)的任務(wù)(127)。

      圖10根據(jù)一個實施例,示出維護(hù)數(shù)據(jù)冗余和完整性的方法。在圖10中,具有多個單元計算機(jī)(101)的計算實體(107)儲存現(xiàn)有映射(125),該現(xiàn)有映射(125)標(biāo)識計算實體(107)中的單元計算機(jī)(101)的存在。單元計算機(jī)(101)中的每一個儲存(303)一組規(guī)則,并且被規(guī)則引擎所配置以執(zhí)行該規(guī)則。

      在圖10中,響應(yīng)于在計算實體(107)中的數(shù)據(jù)操作和現(xiàn)有映射(125)的改變,單元計算機(jī)(101)向規(guī)則引擎提供(307)輸入?;谝?guī)則在規(guī)則引擎的控制下,單元計算機(jī)(101)與彼此進(jìn)行通信以維護(hù)數(shù)據(jù)冗余和完整性。

      圖11根據(jù)一個實施例,示出將計算機(jī)從具有用冗余所儲存的文件的計算系統(tǒng)中移除的方法。

      在圖11中,在檢測到(311)單元計算機(jī)(101)從計算實體(107)的缺少之后,在計算實體(107)中剩余的單元計算機(jī)(101)的規(guī)則引擎使得剩余的單元計算機(jī)(101)傳播關(guān)于單元計算機(jī)(101)在計算實體(107)中的缺少的信息,以更新(313)在計算實體(107)中的剩余單元計算機(jī)(101)的現(xiàn)有映射(125);標(biāo)識(315)在計算實體(107)中的文件,該文件具有先前所儲存在單元計算機(jī)(101)上的部分;以及在計算實體(107)的剩余的單元計算機(jī)(101)之間進(jìn)行通信以恢復(fù)用于儲存計算實體(107)中的文件的數(shù)據(jù)冗余。

      圖12根據(jù)一個實施例,示出將計算機(jī)添加到具有用冗余所儲存的文件的計算系統(tǒng)的方法。

      在圖12中,在檢測到(321)所添加到計算實體(107)的新的單元計算機(jī)(101)的存在之后,在計算實體(107)中的單元計算機(jī)(101)的規(guī)則引擎?zhèn)鞑?323)關(guān)于單元計算機(jī)(101)在計算實體(107)中存在的信息,標(biāo)識(325)將被部分地儲存在新的單元計算機(jī)(101)上的文件,以及在計算實體(107)中的單元計算機(jī)(101)之間進(jìn)行通信(327)以生成用于在新的單元計算機(jī)(101)上儲存的那部分文件。

      圖13根據(jù)一個實施例,示出請求訪問儲存在計算系統(tǒng)的多個計算機(jī)中的文件的方法。

      在圖13中,在單元計算機(jī)(101)接收(331)訪問被儲存在具有多個單元計算機(jī)(101)的計算實體(107)中的文件的請求之后,單元計算機(jī)(101)標(biāo)識(333)計算實體(107)中的多個單元計算機(jī)(101),該多個計算機(jī)(101)儲存部分用于該文件的數(shù)據(jù)。單元計算機(jī)(101)的規(guī)則引擎指導(dǎo)單元計算機(jī)(101)與多個單元計算機(jī)(101)進(jìn)行通信以核實針對該文件的數(shù)據(jù)完整性,并且響應(yīng)于核實該文件的數(shù)據(jù)完整性的過程中發(fā)生的故障而執(zhí)行(337)數(shù)據(jù)恢復(fù)。

      圖14根據(jù)一個實施例,示出改變所配置以用冗余儲存文件的計算系統(tǒng)中的計算機(jī)可用性的方法。

      在圖14中,在單元計算機(jī)(101)接收(341)計算實體(107)中的單元計算機(jī)(101)的現(xiàn)有數(shù)據(jù)的改變之后,單元計算機(jī)(101)的規(guī)則引擎被配置以檢查該改變帶來的影響。

      例如,規(guī)則引擎標(biāo)識(343)儲存在單元計算機(jī)(101)中的文件,規(guī)則引擎在該單元計算機(jī)(101)上運(yùn)行并且標(biāo)識(345)多個單元計算機(jī)(101),多個單元計算機(jī)(101)中的每一個被分配來儲存文件的一部分?jǐn)?shù)據(jù)。規(guī)則引擎確定(347)在現(xiàn)有數(shù)據(jù)中的改變是否引起在被分配來儲存文件的數(shù)據(jù)的多個單元計算機(jī)的標(biāo)識中的改變,并且如果存在標(biāo)識的改變,則規(guī)則引擎開始更新(349)計算實體(107)中的文件的數(shù)據(jù)。

      例如,在現(xiàn)有數(shù)據(jù)改變之前,如在圖4中所示出的現(xiàn)有映射(125)分配第一組單元計算機(jī)(101)以儲存給定文件的數(shù)據(jù)。在現(xiàn)有數(shù)據(jù)改變之后,用于儲存文件的數(shù)據(jù)的第一組單元計算機(jī)(101)的分配可能改變也可能不改變。如果存在改變,那么單元計算機(jī)(101)的規(guī)則引擎可以啟動數(shù)據(jù)恢復(fù)處理,將數(shù)據(jù)從單元計算機(jī)(101)的第一組中移動到由所更新的現(xiàn)有映射所計算的單元計算機(jī)(101)的第二組中。

      例如,在改變之后,單元計算機(jī)(101)可以不再被分配用于儲存文件的任何數(shù)據(jù),并且該文件被重新儲存在系統(tǒng)中一段時間之后,規(guī)則引擎可以從單元計算機(jī)(101)中刪除該文件的數(shù)據(jù)。

      例如,在現(xiàn)有映射(125)改變之后,單元計算機(jī)(101)可以確定對于第一組單元計算機(jī)(101)中的一個或多個的數(shù)據(jù)儲存分配已經(jīng)根據(jù)現(xiàn)有映射的改變而改變,并且作為響應(yīng),規(guī)則引擎可以與相應(yīng)的單元計算機(jī)(101)進(jìn)行通信以更新在其中所存儲的數(shù)據(jù)。

      例如,在現(xiàn)有映射(125)發(fā)生改變之后,單元計算機(jī)(101)可以確定文件的數(shù)據(jù)的副本將從一個單元計算機(jī)(101)被移動到另一個,并且單元計算機(jī)(101)的規(guī)則引擎被配置以與相應(yīng)的單元計算機(jī)(101)進(jìn)行通信來安排數(shù)據(jù)的傳輸。

      例如,在現(xiàn)有映射(125)發(fā)生改變之后,單元計算機(jī)(101)可以確定另一個單元計算機(jī)(101)現(xiàn)在是所分配來儲存文件的部分?jǐn)?shù)據(jù)的單元計算機(jī)(101)的新成員。單元計算機(jī)(101)的規(guī)則引擎可以與先前所分配來儲存文件的規(guī)則引擎進(jìn)行協(xié)作來重新獲得文件的副本,并且向新成員傳送該文件,該新成員可以獨(dú)立地操作該文件來儲存所要求的數(shù)據(jù),就如文件是從用戶所接收的情況一樣。此外,互相分配的單元計算機(jī)(101)的組的先前的成員的規(guī)則引擎可以標(biāo)識用于重新獲得和/或計算將被儲存在新成員中的數(shù)據(jù)的最高效的方法。

      圖15根據(jù)一個實施例,示出配置數(shù)據(jù)存儲的系統(tǒng)。

      例如,如圖15所示出的社交云具有來自對應(yīng)于網(wǎng)絡(luò)中的域(諸如,cynny.com)的一個實體(409)的一組單元(425)(例如,計算機(jī)實體(107))的單元計算機(jī)(101))。

      在圖15中,單元中的每一個具有至少CPU(415)、數(shù)據(jù)存儲盤(417)、被配置以軟件指令和/或與數(shù)據(jù)(例如,421、423)相關(guān)聯(lián)的存儲器(419)、以及網(wǎng)絡(luò)接口(413)。

      在圖15中,通過確定每一個單元(425)被物理地連接到的計算機(jī)網(wǎng)絡(luò)(407)(例如,cynny.com)的域,每一個單元(425)被配置以通過軟件指令來確定它所屬于的實體(409)。單元(425)可以,例如,經(jīng)由詢問網(wǎng)絡(luò)網(wǎng)關(guān)用標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議來標(biāo)識域。因此,基于網(wǎng)絡(luò)配置,被附著到網(wǎng)絡(luò)(407)的單元(425)可以自動地配置它自己以加入相應(yīng)的實體(409)。

      在圖15中,每一個單元(425)被配置以通過從它所連接的網(wǎng)絡(luò)(407)獲得信息以理解它在實體(409)中的角色。例如,單元(425)可以用標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議(諸如LLDP(鏈路層發(fā)現(xiàn)協(xié)議))來確定關(guān)于它所連接的第一層網(wǎng)絡(luò)交換(411)和相鄰單元(例如,所連接到相同的第一層網(wǎng)絡(luò)交換(411)的其他單元(425))的信息,關(guān)于第一層網(wǎng)絡(luò)交換所連接的第二層網(wǎng)絡(luò)交換和相鄰單元(例如,連接到相同的第二層級網(wǎng)絡(luò)交換(411)的其他單元)的信息等等。

      例如,在一個實施例中,單元(425)被連接到第一網(wǎng)絡(luò)交換(411)A上,該第一網(wǎng)絡(luò)交換(411)A轉(zhuǎn)而連接到數(shù)據(jù)庫配置中的第二網(wǎng)絡(luò)交換(411)B。用LLDP協(xié)議(或其他協(xié)議),單元(425)被告知網(wǎng)絡(luò)配置:單元(425)被連接到網(wǎng)絡(luò)交換(411)A上的端口X,以及網(wǎng)絡(luò)交換(411)A被連接到網(wǎng)絡(luò)交換(411)B上的端口Y?;谶@樣的網(wǎng)絡(luò)配置信息,單元(425)確定它在實體(409)中的角色。

      例如,單元(425)被配置來解析LLDP詢問回答和確定在即時網(wǎng)絡(luò)(407)(例如,在網(wǎng)絡(luò)交換(411)A的端口2上)中單元(425)的位置。之后單元解析LLDP詢問回答來確定網(wǎng)絡(luò)交換(411)A的位置(例如,在網(wǎng)絡(luò)交換(411)B的端口24上)?;谠儐柦Y(jié)果,單元(425)用確定性的方案計算角色標(biāo)識符(例如,“24,2”,基于網(wǎng)絡(luò)交換(411)A的端口2,和網(wǎng)絡(luò)交換(411)B的端口24)。標(biāo)識符(例如“24,2”)可以表明單元(425)是否具有儲存元數(shù)據(jù)的角色、儲存用戶數(shù)據(jù)的角色、或執(zhí)行計算服務(wù)的角色等等。例如,在一個實施例中,預(yù)先確定的規(guī)則可以指定:對應(yīng)于具有第一層網(wǎng)絡(luò)交換(411)的端口2處的位置的單元(425)的標(biāo)識符是具有儲存元數(shù)據(jù)的角色的單元(425),并且因此具有樣式“*,2”的單元(425)的標(biāo)識符是被分配為元數(shù)據(jù)單元(425)的角色的單元(425)。

      在一個實施例中,每一個單元(425)與當(dāng)前存在于網(wǎng)絡(luò)(407)的其他單元(425)進(jìn)行通信以配置它自己。單元(425)的網(wǎng)絡(luò)分析星載軟件對該單元自身分配角色,該角色表明由實體(409)中的單元(425)所提供的服務(wù),諸如執(zhí)行針對實體(409)的某些類型的計算,為實體(409)提供某些數(shù)據(jù)存儲能力等等。單元(425)加入實體以提供對應(yīng)于角色的服務(wù),并且其他單元(425)可以被告知該單元(425)在實體(409)的存在并且調(diào)整他們的操作以利用由該單元(425)所提供的服務(wù)。

      在一個實施例中,當(dāng)加入實體(409)的單元(425)無法檢測實體(409)的相鄰的最小一組單元(425)的時候,單元(425)假設(shè)它出現(xiàn)了問題并且開啟診斷周期。

      在一個實施例中,當(dāng)單元(425)在網(wǎng)絡(luò)(407)中啟用的時候,單元(425)配置它自己以承擔(dān)角色。例如,單元(425)中的一些可以被配置以儲存文件的元數(shù)據(jù)(例如,許可、文件類型、共享、冗余),并且其他的單元(425)可以被配置來儲存文件(例如,圖片、視頻等等)的用戶數(shù)據(jù)。當(dāng)附加的單元(425)被啟動以加入實體(409)的時候,單元(425)與彼此進(jìn)行通信來分配和/或更新角色。

      在一些實施例中,實體(409)的具體的單元(425)被配置以執(zhí)行用于在實體(409)中生成和/或更新VIP映射的計算,并且將VIP映射加入到實體(409)中,該VIP映射由所有其他單元(425)的IPMap(421)軟件所使用。此外,通過協(xié)商會話中的通信,單元(425)可以分配角色。在一個實施例中,用戶接口被提供用來允許用戶對于單元(425)進(jìn)行配置和/或管理對于單元(425)的角色的分配。

      在一個實施例中,每個單元(425)具有在實體(409)中當(dāng)前可用的單元(425)的一組映射。映射可以用網(wǎng)絡(luò)配置數(shù)據(jù)(111)標(biāo)識單元(425)。例如,連接到第一層網(wǎng)絡(luò)交換(411)的端口2的單元,轉(zhuǎn)而連接到第二層網(wǎng)絡(luò)交換(411)的端口24上,該單元可用基于標(biāo)識符“24,2”的位置而被標(biāo)識。物理的IP地址(441)基于網(wǎng)絡(luò)位置標(biāo)識符(443)“24,2”被分配給單元(425)。將被儲存的給定的一組數(shù)據(jù)可以被映射到虛擬IP地址(437)經(jīng)由預(yù)先確定的計算操作(例如,由下文所提供的散列示例)。映射被用來將虛擬IP地址(437)鏈接到物理IP地址(411),使得將被儲存的該給定的數(shù)據(jù)組可以經(jīng)過預(yù)先確定的計算操作,首先映射到虛擬IP地址(437)并且之后用該映射被映射到物理IP地址(411)。這可以被叫做圖16中所示出的VIP映射(439)。

      在一個實施例中,當(dāng)單元(425)加入實體(409)的時候,它在網(wǎng)絡(luò)(407)/實體(409)中宣告自己的存在(例如,經(jīng)由LLDP)。推動/拉動策略或DHT方法可以在單元(425)中被實現(xiàn)以使得在實體(409)中的所有的單元(425)獲得已更新的VIP映射(439)。例如,在實體(409)中隨機(jī)地選取的單元A被添加到新的VIP映射(439)之后,這個單元A用相同的VIP映射(439)添加另一個單元Y。在預(yù)先確定的代(generation)的數(shù)量(例如,3或4)之后,添加(推動階段(push phase))結(jié)束。在推動/拉動實施例中,周期性地(例如,每X秒),每一個單元(425)被配置來詢問一個或多個其他單元(425)用于關(guān)于VIP映射(438)的更新(拉動階段(pull phase))。當(dāng)在推動階段中足夠的單元用新的VIP映射(439)被添加之后,該VIP映射(439)可以在拉動階段中被迅速地傳播到呼叫單元(425)。

      如在示例的實施例中,分布式散列表(DHT)方法可以被用于上文所描述的推動/拉動消息交換,來更新VIP映射(439)。例如,VIP映射(439)可以通過使用針對因特網(wǎng)應(yīng)用的可擴(kuò)展的點(diǎn)對點(diǎn)查找服務(wù)的一種實現(xiàn)方式而被更新,例如,如由Lon Stoica等人在“Chord:A scalable Peer-to-peer Lookup Service for Intemet Applications(弦:針對互聯(lián)網(wǎng)應(yīng)用可調(diào)整點(diǎn)對點(diǎn)查找服務(wù),其于2001年8月27-31日在美國加州圣地亞哥的SIGCOMM’01所指出、并且發(fā)表于2003年2月IEEE/ACM匯刊,Networking,Vol.11,第一期第17-32頁)中所公開的。在這種實施例中,單元(425)一被加入到實體(409)中,單元(425)就被配置擁有具體的數(shù)據(jù)子集。通信協(xié)議(諸如在Chrod系統(tǒng)中所使用的)可以被用來對實體(409)中的所有其他單元(425)更新關(guān)于新到達(dá)的單元(425)的存在。在一個實施例中,CHORD模塊作為單元(425)中預(yù)加載的軟件的具體層級而實現(xiàn),并且被配置使用針對因特網(wǎng)應(yīng)用的可擴(kuò)展的點(diǎn)對點(diǎn)查找服務(wù),來更新VIP映射(如在lon Stoica的Chord系統(tǒng)中的)。

      在一個實施例中,實體(409)(例如,具有經(jīng)由在某域名(113)下的網(wǎng)絡(luò)配置的所組織的單元的聚集(425))實現(xiàn)文件系統(tǒng),但是它不僅僅是文件系統(tǒng)。實體(409)可以具有經(jīng)由一個或多個網(wǎng)絡(luò)(407)所連接的世界范圍的單元(425)。在實體(409)中,單元(425)可以在區(qū)域內(nèi)(例如,一組單元(425)在歐洲,其他在美國)在本地被組織。世界可擴(kuò)展的實體(409)被配置來組織它自己為了使得它的用戶連接到最近的單元(425)使得允許與用戶的有效的交互。

      在一個實施例中,實體(409)以及經(jīng)由實體(409)所實現(xiàn)的文件系統(tǒng)是全球化的。在文件系統(tǒng)中,單一的用戶文件(405)可以包括在不同的世界的區(qū)域的單元(425)。例如,如果用戶希望訂閱針對他自己的損壞-復(fù)原策略,用戶可以決定實現(xiàn)復(fù)制策略(replication policy)以在不同的世界區(qū)域中儲存他的文件的副本。當(dāng)這種策略被使用,客戶端軟件(403)(例如,在下文中所討論的IPMap(421))在單元(425)中運(yùn)行并且被配置來確定單元(425)是否將儲存用戶文件(405)的數(shù)據(jù)并且被配置來使得來自不同區(qū)域的單元(425)儲存該文件。

      在圖15中,單元中的每一個具有被配置來計算用于用戶文件儲存的位置的IPMap(421)(例如,客戶端軟件(403))。在一個實施例中,給定用戶文件(405)的哪部分被儲存在哪些單元(425)中和/或在哪些位置,是從用戶文件(405)的數(shù)據(jù)以及在實體(409)中的當(dāng)前可用的單元(425)的映射(例如,VIP映射(439))直接地計算出的。

      例如,用戶文件(405)的文件名(431)可以是散列的,以用散列方案(433)生成具有固定長度的字符串的散列值(435),如圖16所示出的。字符串的不同的部分被用來標(biāo)識不同的單元(425)用于用戶文件(405)的不同部分的存儲,以及字符串的部分可以被用來在單元(425)的文件系統(tǒng)中標(biāo)識目錄和本地文件名(431),來儲存用戶文件(405)的相應(yīng)的部分。因此,針對給定的文件名(431),IPMap(421)可以確定性地計算用戶文件(405)的哪部分被儲存在哪個單元(425)中和在相應(yīng)單元(425)的文件系統(tǒng)中的哪個目錄中。在一個實施例中,基于所分配給實體(409)的單元(425)的角色的配置而計算IPMap(421)。在一個實施例中,由實體(409)中的單元(425)所共享的公共的文件(例如,虛擬IP映射(437))被用來以決定性的方式將字符串的給定部分映射到單元(425)中的一個的IP地址(411)。

      在示例中,在用戶文件(405)的文件名(431)被散列到字符串中之后,字符串的第一部分被映射,來標(biāo)識第一單元(425)來儲存用戶文件(405)的第一副本;字符串的第二部分被映射來標(biāo)識第二單元(425)以儲存用戶文件(405)的第二副本;字符串的第三部分標(biāo)識在第一與第二單元(425)中的目錄來儲存第一與第二副本;以及字符串的第四部分標(biāo)識用于在目錄中儲存第一與第二副本的本地文件名(431),該本地文件名(431)由字符串的第三部分在第一與第二單元(425)中所標(biāo)識。因此,IPMap(421)的示例實現(xiàn)了實體(409)中所儲存的用戶文件(405)的鏡像。

      在另一個示例中,散列函數(shù)可以被遞歸地采用來獲得散列值(435)的序列;以及在序列中的散列值中的每一個可以被用來標(biāo)識單元(425)。例如,在序列中的第一散列值(435)被用來標(biāo)識第一單元(425)以儲存用戶文件(405)的第一副本;在序列中的第二散列值(435)被用來標(biāo)識第二單元(425)以儲存用戶文件(405)的第二副本;在序列中的第三散列值(435)被用來標(biāo)識在第一與第二單元(425)中的目錄以儲存第一與第二副本;以及在序列中的第四散列值(435)被用來標(biāo)識被用來在目錄中儲存第一與第二副本的本地文件名(431),該本地文件名(431)由字符串的第三部分在第一與第二單元(425)中所標(biāo)識。

      在一個實施例中,用戶文件(405)的文件名(431)的散列值(435)(或散列值(435)的部分)被用來以確定性的方式從VIP映射(439)中查詢單元(425)。例如,來自字符串的值的不同范圍可對應(yīng)于在VIP映射(439)中所標(biāo)識的不同的單元(425)。在一些實施例中,VIP映射(439)包括用于從字符串值(即,虛擬IP地址(437))映射到單元(425)的物理IP地址(411)的信息。

      在圖15中,在用戶計算機(jī)(401)上運(yùn)行的客戶端軟件(403)將用戶文件(405)廣播到實體(409)的單元(425),以及在單元(425)中的每一個中執(zhí)行的IPMap(421)確定是否有任何文件的部分將被儲存在相應(yīng)的單元(425)上。如果有的話,則儲存該部分的單元(425)的本地文件系統(tǒng)中的位置和/或文件名(431)被計算。此外,已經(jīng)接收到用戶文件(405)的單元(425)用IPMap(421)來確定哪個單元負(fù)責(zé)用戶文件(405)的儲存,并且將該用戶文件(405)傳送到相應(yīng)的單元(425)。此外,(例如,由客戶端軟件(403)所選中的或由IPMap(421)所確定的)單元(425)中的一個被配置來與客戶端軟件(403)進(jìn)行通信,用于將用戶文件(405)更多地傳送到負(fù)責(zé)存儲用戶文件(405)的單元(425)。

      總體上,IPMap(421)可以被實現(xiàn)來儲存用于對全部數(shù)據(jù)恢復(fù)的冗余和/或奇偶校驗數(shù)據(jù)的鏡像副本。例如,IPMap(421)可以用用戶文件(405)的文件名(431)的一部分散列值(435)(或在遞歸地被計算的散列的序列中的散列值(435))來標(biāo)識單元(425)以計算與儲存校驗數(shù)據(jù)。因此,冗余和/或奇偶校驗方案的不同的層級可以通過將數(shù)據(jù)經(jīng)由IPMap(421)分配到實體(409)中的負(fù)責(zé)單元(425)而實現(xiàn)。

      在一個實施例中,IPMap(421)被配置以將一組用于儲存用戶文件(405)的預(yù)先確定的操作映射到在實體(409)中的單元(425)的子集??偟膩碚f,IPMap(421)可以被配置來將一組計算機(jī)操作(例如,計算和/或數(shù)據(jù)存儲)映射到實體中的一組單元(425)。

      在圖15中,實體(409)的單元(425)中的每一個具有運(yùn)行來維護(hù)數(shù)據(jù)完整性的腦(Brain)(423)(例如,軟件)。當(dāng)讀取/寫入用戶文件(405)的時候,負(fù)責(zé)用戶文件(405)的單元(425)與其他單元(425)進(jìn)行通信,該其他單元(425)也對于用戶文件(405)負(fù)責(zé)用于監(jiān)控儲存在實體(409)中具有所期望的程度的冗余/奇偶校驗的用戶文件(405)的狀態(tài)。例如,如果單元(425)被發(fā)現(xiàn)不再在實體(409)中可用(例如,當(dāng)單元(425)死亡,或在多于閾值的時間段內(nèi)下線),那么剩余的單元(425)的VIP映射(439)被更新以允許單元(425)的IPMap(421)制定出先前在死亡的單元(425)中所存儲的文件的新的位置,并且將可用的文件復(fù)制到新的位置。在一個實施例中,經(jīng)由規(guī)則引擎來實現(xiàn)腦(423),并且用規(guī)則引擎實現(xiàn)一組數(shù)據(jù)完整性規(guī)則和損壞復(fù)原策略。

      例如,當(dāng)單元(425)死亡或移除網(wǎng)絡(luò)(407)的時候,單元(425)用腦(423)檢測到死亡的/移除的單元的缺少,以及響應(yīng)于將新的VIP映射(439)被添加到其他單元(425),其中先前被分配給缺少的單元(425)的散列值(435)被重新分配給其他單元。因此,由所缺少的單元(425)提供的責(zé)任被分配給剩余的單元(425)。在新的VIP映射被傳播到實體(409)中的單元(425)之后,每一個單元(425)的腦(423)開始從仍舊存活的冗余副本或基于錯誤更正算法來恢復(fù)數(shù)據(jù)。

      例如,當(dāng)新的單元(425)被加入到實體(409)的時候,現(xiàn)存的VIP映射(439)被修改以將一組散列值分配給單元(425)以生成新的VIP映射(439)。在新的VIP映射(439)在實體(409)中被傳播并且新的單元(425)從其他單元(425)獲得數(shù)據(jù)之后,在不再負(fù)責(zé)某些VIP映射的腦(423)的控制下的相關(guān)的單元(425),可以開始從它們的盤(417)中刪除相應(yīng)的數(shù)據(jù),它們將不再被詢問以提供這些數(shù)據(jù)(即,它們不再服務(wù)與VIP映射(439)相關(guān)的數(shù)據(jù))。

      本文所公開的硬件架構(gòu)很快地變換關(guān)于與存儲系統(tǒng)的維護(hù)和擴(kuò)展相關(guān)的問題的視角。

      一個實施例的存儲實體(409)包括單元(425)服務(wù)器的龐大的和多種的組,該單元(425)服務(wù)器的組可以非常小并且由CPU(415)和盤(417)理想地組成。例如,在存儲實體(409)中所采用的CPU(415)的數(shù)量以及盤(417)的數(shù)量可以是完全相同的。

      CPU(415)或盤(417)的添加如連接以太網(wǎng)總線一樣簡單,并且并不意味著服務(wù)的任何停止或破壞。

      不要求維護(hù)操作就可以將新的單元(425)加入到網(wǎng)絡(luò)(407)以代替死去的單元。

      存儲空間(理論上是無限的)通過(基于散列的)確定性的數(shù)學(xué)算法被尋址,該存儲空間允許所有被保存的數(shù)據(jù)由反向推導(dǎo)同一算法重新獲得。這避免了像在傳統(tǒng)的方法所發(fā)生的一樣使用索引。

      通過IPMap(421)軟件和VIP映射的使用,算法可以在系列的獨(dú)立的存儲單元(425)上聯(lián)合地傳播數(shù)據(jù),該單元中的每一個只擁有儲存在系統(tǒng)上的一小部分信息。這還意味著通過加入新的單元(425),實體(409)的系統(tǒng)可以無限地被擴(kuò)展。

      當(dāng)新的單元(425)被加入到實體(409)中的時候,它自動地連接到其他單元,并且自動地承擔(dān)起它在系統(tǒng)中的角色。

      經(jīng)由IPMap(421)軟件和VIP映射(439)的使用,信息遵從冗余策略被傳播進(jìn)單元(425),使得丟失有限數(shù)量的單元(425)不會危害數(shù)據(jù)可用性。

      當(dāng)現(xiàn)存的單元(425)不再能夠在實體(409)中提供充足表現(xiàn)的服務(wù)的時候,新的單元(425)可以僅僅通過將它們連接到網(wǎng)絡(luò)(407)而被加入到實體(409)。這允許信息的冗余水平隨著時間被持續(xù)維持。

      在本公開的存儲系統(tǒng)中,表現(xiàn)隨著每一個新單元(425)的加入而加強(qiáng)。這種現(xiàn)象的發(fā)生是因為由整個系統(tǒng)所執(zhí)行的盤I/O的載荷的操作在更大數(shù)量的獨(dú)立的儲存/計算單元上傳播。在提供服務(wù)的方面,單元(425)以充分獨(dú)立與彼此的方式操作。

      在傳統(tǒng)的儲存系統(tǒng)中,在計算功率和帶寬保持不變的情況下,新空間的加入通常使得表現(xiàn)變慢。

      在一個實施例中,存儲系統(tǒng)的硬件由一組基礎(chǔ)單元所組成,每一個是如圖7所示的微服務(wù)器或單元(425)。

      在圖17中,微服務(wù)器/單元(425)包括CPU(435)、網(wǎng)絡(luò)接口卡(451)以及用來儲存系統(tǒng)和軟件服務(wù)的永久性存儲器(455)。此外,每一個微服務(wù)器/單元(425)具有大容量存儲器(457)以儲存從用戶所接收的數(shù)據(jù)(以防服務(wù)器正在使用存儲單元)。

      使用網(wǎng)絡(luò)(407),在橫跨世界的存儲系統(tǒng)中的單元(425)可以出于共享和同步數(shù)據(jù)的目的與彼此進(jìn)行通信。因此,一組自我組織的單元可以形成計算/存儲實體(409)形式的存儲系統(tǒng)。

      在一個實施例中,單元(425)通過連接到它的計算機(jī)網(wǎng)絡(luò)(407)被加入實體(409)中而無需關(guān)于它在實體(409)中的位置和作用的信息。這意味著單元(425)不知道哪些其他的單元(425)是它的鄰近單元,并且它不知道它是應(yīng)該儲存數(shù)據(jù)還是僅僅提供計算服務(wù)。

      在單元(425)被連接到網(wǎng)絡(luò)(407)之后,它通過與其他單元(425)和/或網(wǎng)絡(luò)(407)基礎(chǔ)設(shè)施(例如,網(wǎng)絡(luò)交換器(411)、網(wǎng)關(guān))進(jìn)行通信得到關(guān)于實體(409)的信息/指令。該信息可以通過用標(biāo)準(zhǔn)化網(wǎng)絡(luò)協(xié)議(諸如LLDP(鏈路層發(fā)現(xiàn)協(xié)議))而獲得。

      在一些實施例中,所表明的配置文件可以被使用。這種文件可以最初被添加,例如,但它們根據(jù)實體(409)的健康狀況和實體(409)中存在的單元數(shù)量而隨時間變化。

      在一個實施例中,在新的單元(425)被連接到計算機(jī)網(wǎng)絡(luò)(407)之后,在實體(409)中的單元與彼此進(jìn)行通信來重新組織實體(409)以利用新的單元(425)的服務(wù),并且適應(yīng)于該實體(409)可以提供的服務(wù)的水平。

      在一個實施例中,新的單元(425)并不具有關(guān)于以太網(wǎng)或TCP/IP協(xié)議的預(yù)加載的Mac地址和/或預(yù)加載的IP地址(411)。這些參數(shù)基于在計算網(wǎng)絡(luò)(407)中所連接的單元(425)的物理位置被分配給單元(425)(例如,依據(jù)它所連接到的端口和/或網(wǎng)絡(luò)交換器(411)/網(wǎng)關(guān)的層級)。

      例如,當(dāng)單元加入實體(409)的時候,它詢問其他的單元關(guān)于托管的信息。在托管信息的基礎(chǔ)上,它假設(shè)在實體(409)中的角色。軟件組件,IPMap(421)被配置來組合物理的IP地址(411)和角色分配。

      在一個實施例中,單元(425)的邏輯角色基于物理IP地址(411)被分配。單元(425)僅僅負(fù)責(zé)被存儲到實體(409)中的那部分?jǐn)?shù)據(jù)或可計算的一組操作的部分。

      例如,在角色與定位信息之間的映射可以被用來實現(xiàn)角色分配。在通過讀取在定位與角色之間的映射,單元(425)基于它所連接(例如,經(jīng)由LLDP所標(biāo)識)的轉(zhuǎn)換器(411)端口為它自己分配物理地址(Mac地址和IP地址(411))之后,它得知它在實體(409)中的具有的角色。

      以上的安排表明單元(425)能夠易于取代其他的單元(425)。當(dāng)單元(425)物理地被另一個單元(425)在網(wǎng)絡(luò)(407)連接架構(gòu)的相同的物理位置所替代的時候,作為替代單元(425)將獲得被替代單元的相同的Mac地址、相同的IP地址(411)、以及相同的角色。

      通過把作為替代的單元(425)放置在網(wǎng)絡(luò)(407)連接架構(gòu)中不同的物理位置,但是分配相同的角色,單元(425)還可以被邏輯地替代。

      在一個實施例中,實體(409)作為整體將告知單元(425):它需要解除它的角色以及在哪里得到它仍舊丟失的數(shù)據(jù)的信息。數(shù)據(jù)(也來自死亡單元(425))通常在網(wǎng)絡(luò)(407)中是可用的,作為冗余和錯誤更正策略的序列。

      單元(425)可以被設(shè)置為休眠的。例如,在單元(425)獲得在計算機(jī)網(wǎng)絡(luò)(407)中的IP地址(411)之后,如果它未被分配到角色,那么它在實體(409)中是休眠的,直到實體(409)被告知該單元(425)的存在并且重新組織它自己以使用單元(425)的服務(wù)。

      在一個實施例中,要將單元(425)設(shè)置為休眠,就足以將它的位置從角色的映射中除去。將它再次放入映射使得實體(409)再次開始使用它。

      在一個實施例中,IPMap(421)是為具有物理IP地址(441)的單元(425)分配數(shù)據(jù)的部分或可計算的角色的軟件組件。它可以通過一些實現(xiàn)方式技術(shù)或通過以下各項的混合而被獲得:散列映射、Btree/Btree*、以及一般的indexer技術(shù)。IPMap(421)具有作為輸入數(shù)據(jù)的標(biāo)識(例如,字節(jié)),以及作為輸出提供至少一個單元(425)的標(biāo)識和/或單元(425)上的一個位置,數(shù)據(jù)(或數(shù)據(jù)的一部分)將要被儲存在該位置上。

      在一個實施例中,腦(423)是軟件組件,該軟件組件監(jiān)管數(shù)據(jù)可用性和單元(425)活動。每個單元(425)包括腦(423),該腦(423)可以為了更正數(shù)據(jù)而做出即時的決定。決定基于由一些單元(425)所提供的即時信息而做出。

      腦(423)可以執(zhí)行永久地或透明地作用于它決定更正的數(shù)據(jù)。基本上根據(jù)奇偶校驗/冗余策略實現(xiàn)更正。

      共用的RAID5/RAID6盤陣列設(shè)備可以實現(xiàn)針對奇偶校驗/冗余的技術(shù)。然而,在當(dāng)前應(yīng)用的存儲系統(tǒng)中,冗余/奇偶校驗組不被獲得以被儲存在盤(417)的固定的組上(例如,陣列)。由于數(shù)據(jù)可靠性是獨(dú)立于硬件的單一片段的可靠性的,這個改變將很大地改善系統(tǒng)的可靠性。

      在一個實施例中,計算/儲存實體(409)是在VIP映射(439)上所列出的微服務(wù)器(單元(425))的組。這可以例如作為一架或多架微處理器(單元(425))而實現(xiàn)。

      每一個單元(425)實現(xiàn)軟件,該軟件使得它自動地假設(shè)在機(jī)架層級中的角色,通過例如負(fù)責(zé)數(shù)據(jù)的預(yù)先確定的組以及同時使用相同的軟件,保證即使在實體(409)中的其他單元(425)可能發(fā)生故障的時候,能夠避免服務(wù)降級而無需使得實體(409)提供給用戶的服務(wù)降級。

      機(jī)架層級的簡單示例可以由以下各角色所實現(xiàn):

      元數(shù)據(jù)單元(425):包含關(guān)于許可、文件類型、共享、冗余等等信息的單元(425);以及

      數(shù)據(jù)單元(425):包含數(shù)據(jù)(圖片、視頻等等)的單元(425)。

      當(dāng)實體(409)被詢問來訪問所儲存的文件的時候,實體(409)訪問元數(shù)據(jù)信息以確定用戶是否可以訪問所儲存文件的數(shù)據(jù)。

      示例的實現(xiàn)方式:實體(409)作為單元(425)的架所實現(xiàn)。架包括網(wǎng)絡(luò)裝置(交換器(411))、以及存儲單元(425)的一些底座。這些裝置中的每一個都可能由于各種原因而發(fā)生故障。為了減少對用戶服務(wù)的缺少的風(fēng)險,在每一個單元(425)內(nèi)存在兩種專用軟件程序的實現(xiàn)方式:IPMap(421)以及腦(423)。IPMap(421)給單元(425)角色;以及腦(423)實現(xiàn)錯誤檢測和/或錯誤更正的策略。在一些實施例中,CHORD模塊還可以在IPMap的模型下被添加以提供在單元-實體層級的檢測方面的標(biāo)準(zhǔn)方法。

      IPMap(421)可以以HashMap的形式被實現(xiàn)。例如,當(dāng)用戶上傳文件,該文件明確地與一組單元(425)相關(guān)聯(lián),并且文件的數(shù)據(jù)字節(jié)被儲存在硬盤驅(qū)動(417)上,該硬盤驅(qū)動以獨(dú)特的方式被附著在單元(425)的確定的組上。

      例如,在一個示例的實施方式中,Md5被用于用戶文件的文件名(例如,file.bmp)以獲得散列值(435)(例如,4a586cf87b342878153dc3c81d76fccb)。

      Md5(file.bmp)=4a586cf87b342878153dc3c81d76fccb

      散列值(435)的前面的n字節(jié)通過用儲存在公共的文件中的映射被加入IP地址(411)。具有IP地址(411)的單元(425)將儲存用戶文件(405)的數(shù)據(jù)的第一副本。

      散列值(435)的n+1到m字節(jié)被用來個性化第二IP地址(411),以及具有第二IP地址(411)的單元(425)將儲存用戶文件(405)的數(shù)據(jù)的第二副本。

      散列值(435)的m+1到p字節(jié)被用來標(biāo)識微服務(wù)器(單元(425))的大容量存儲器(457)的文件系統(tǒng)中的目錄,用于儲存用戶文件(405)的數(shù)據(jù)的副本。

      散列(345)的p+1到q字節(jié)被用來標(biāo)識名稱,文件通過該名稱被儲存在微服務(wù)器(單元(425))的大容量存儲器(457)的文件系統(tǒng)中。

      應(yīng)當(dāng)注意以上基于Md5所示出的簡單方案的使用存在許多沖突(例如,不同的文件被映射到相同的存儲位置)??梢詫崿F(xiàn)智能系統(tǒng)以避免/解決該沖突和/或減少沖突的幾率。

      在本示例上構(gòu)建的散列方法可以被用來標(biāo)識多于兩個的IP地址(411)用于儲存多于兩個的文件的副本,和/或儲存錯誤-更正副本,該副本被儲存在由從散列值(435)所確定的IP地址(411)所標(biāo)識的單元(425)的一個上。

      在采用CHORD模塊的實施例中,可以用基于MD5方法生成一個或多個密鑰。然而,用MD5散列方程所生成的密鑰不直接映射到虛擬IP。通過用針對在CHORD模塊中實現(xiàn)的點(diǎn)對點(diǎn)查找服務(wù)的通信協(xié)議來詢問實體,用CHORD模塊來復(fù)原可用(competent)的IP。虛擬IP對真實IP的映射仍舊被使用,但是基于動態(tài)。映射可用被認(rèn)為在很長的時間段內(nèi)是靜態(tài)的,但是可以對它自己進(jìn)行更新以免錯誤或新的實體,對于客戶不產(chǎn)生任何影響,這可以保證對于每一個密鑰接收負(fù)責(zé)該密鑰的節(jié)點(diǎn)的VIP。

      用這種方法,當(dāng)單元(425)死亡的時候,系統(tǒng)可以忍受該單元(425)的缺失。在系統(tǒng)的剩余的單元(425)中運(yùn)行的腦(423)檢測到單元(425)的缺失并且可以重新組織來進(jìn)行包括讓其他單元(425)代替失去的單元的位置的操作。

      用戶文件(405)的全部數(shù)據(jù)仍舊是可用的,該用戶文件(405)的全部數(shù)據(jù)儲存在包含該相同文件的副本的剩余單元(425)的組中。任何單元(425)的腦(423)可以將這個數(shù)據(jù)從剩余的單元(425)移動到新的單元(425),該新的單元(425)在重新組織后加入該組。

      在一個實施例中,每一個單元(425)可以由適當(dāng)被設(shè)計的客戶端所到達(dá)。例如,客戶端發(fā)送消息到單元(425)。消息基本上包括關(guān)于將儲存的用戶文件(405)的數(shù)據(jù)。

      位于單元(425)內(nèi)的IPMap(421)計算文件將被儲存在實體(409)的哪里。

      消息包含關(guān)于冗余副本和延伸的校驗副本的信息。冗余副本和校驗允許忍受和對于最終的用戶掩飾錯誤。

      更多地,當(dāng)執(zhí)行寫入/讀取互動的時候,單元(425)收集關(guān)于以下各項的即時信息:

      對于已復(fù)制的數(shù)據(jù)可用的副本數(shù)量;

      對于校驗更正數(shù)據(jù)的每個組可用的校驗因子的數(shù)量;

      成功寫入另一個單元(425);

      成功從另一個單元(425)讀取;

      成功連接到另一個單元(425);和/或

      成功到達(dá)另一個單元。

      當(dāng)讀取/寫入數(shù)據(jù)的時候,這些指示符通常是可用的。如果發(fā)生了某些故障(和達(dá)到了某些警報閾值),腦(423)啟動分析的常規(guī)程序使得對于更正或忍受該問題做出決定。

      這種信息的可用性允許實施錯誤檢測策略的實現(xiàn)。

      基于所檢測到的錯誤。錯誤-更正策略可以被觸發(fā)。

      一組先前的規(guī)則當(dāng)前被植入腦(423)的軟件中:

      當(dāng)檢查冗余/奇偶策略的時候,如果一些副本(相同版本)被破壞,腦(423)負(fù)責(zé)替代該丟失的副本;

      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;

      當(dāng)連接/到達(dá)單元(425)的時候,如果問題揭露,那么為了標(biāo)識錯誤的寬度啟動診斷常規(guī)程序。

      如果它是到達(dá)問題,那么腦(423)嘗試通過用另外的路徑到達(dá)單元(425)。

      單元(425)被提供了更多的網(wǎng)絡(luò)接口卡(451):cell.a,cell.b等等。

      If connect(cell.A)==false

      Then:connect(cell.B)

      如果存在連接問題(單元(425)是可到達(dá)的但是未能響應(yīng))修復(fù)策略被觸發(fā)。

      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)都是不可用的,則實體-服務(wù)被暫停。

      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)可以作為規(guī)則引擎而實現(xiàn)。規(guī)則的組易于擴(kuò)展。

      圖18-20根據(jù)一個實施例,示出了在實體中單元(425)的生命期。

      在圖18中,單元的實體(409)由用戶所到達(dá)。用戶上傳文件A到實體(409)上。

      他的文件立即被復(fù)制到一些單元(425)(例如,單元10,、單元10、單元2n)。

      在(例如,單元2n)(或盤(427)連接到的)單元(425)被破壞之后,腦(423)檢測問題并且復(fù)制來自依舊可用的單元(425)的數(shù)據(jù),將數(shù)據(jù)包含在依舊響應(yīng)的另一個單元(425)(例如,單元12)中,如在圖19中所示。

      在一個實施例中,不存在確定性的方法來標(biāo)識將要掌握所恢復(fù)副本的單元(425),所以該過程可以一直持續(xù)直到網(wǎng)絡(luò)已經(jīng)相當(dāng)廣泛的時候。

      在診斷/修復(fù)動作之后,用戶能夠再一次恢復(fù)他的文件無需缺少任何服務(wù)。

      這種方法比下文所解釋的目前的基于RAID的方法更好。

      腦(423)還可以基于針對被配置用于作為規(guī)則引擎而運(yùn)行的腦(423)的規(guī)則,來決定推遲修復(fù)或不更正問題,。

      如果故障是暫時的(例如,網(wǎng)絡(luò)(407)問題)或維修操作被執(zhí)行以重新啟動丟失的單元(425)/盤(417),一段時間內(nèi)數(shù)據(jù)是過剩的,如圖20所示的。在實體(409)的單元(425)中的一個上運(yùn)行的腦(423)現(xiàn)在可以決定移除舊的副本使得能夠維持實體(409)中的盤(417)空間的適度的低使用率。

      在一個實施例中,技術(shù)被提供以實現(xiàn)針對電子數(shù)據(jù)的存儲系統(tǒng),該系統(tǒng)依據(jù)表現(xiàn)和存儲空間,是虛擬地并且無限的可擴(kuò)展的。該系統(tǒng)包括經(jīng)由計算機(jī)網(wǎng)絡(luò)所連接的一組微服務(wù)器,來針對角色分配以及數(shù)據(jù)恢復(fù)自我組織它們自己。映射技術(shù)被用來橫跨微服務(wù)器的子集,分配儲存任務(wù)和/或計算任務(wù)用于用數(shù)據(jù)冗余來儲存或重新獲得用戶文件;并且基于用戶文件的標(biāo)識符以確定性的方法從系統(tǒng)可用的服務(wù)器中選擇子集。選擇被配置來在系統(tǒng)的微服務(wù)器之間偽隨機(jī)地分配與不同的文件相關(guān)聯(lián)的任務(wù)。

      在一個實施例中,實現(xiàn)存儲系統(tǒng)的方法包括:提供多個單元計算設(shè)備,其中每一個相應(yīng)的單元計算設(shè)備具有網(wǎng)絡(luò)接口、數(shù)據(jù)存儲設(shè)備、處理器、以及儲存那些被配置來操作相應(yīng)的單元計算設(shè)備的指令的存儲器。

      當(dāng)網(wǎng)絡(luò)接口被連接到計算機(jī)網(wǎng)絡(luò)的時候,相應(yīng)的單元計算設(shè)備由指令(例如,實現(xiàn)針對點(diǎn)對點(diǎn)查找服務(wù)的指令,諸如在CHORD模塊中的那些)所配置以至少執(zhí)行以下操作:標(biāo)識當(dāng)前連接到計算網(wǎng)絡(luò)的多個單元計算設(shè)備;在多個單元計算設(shè)備之間進(jìn)行通信以維護(hù)在一組虛擬地址與多個單元計算設(shè)備之間的映射;接收數(shù)據(jù)集的標(biāo)識;計算來自標(biāo)識的虛擬地址;確定虛擬地址是否基于映射而對應(yīng)于相應(yīng)的單元計算設(shè)備;以及響應(yīng)于確定虛擬地址響應(yīng)于單元計算設(shè)備,儲存或處理獨(dú)立于在計算機(jī)網(wǎng)絡(luò)上的其他單元計算設(shè)備的數(shù)據(jù)集的至少一部分。

      在一個實施例中,響應(yīng)于檢測存在于計算機(jī)網(wǎng)絡(luò)上的單元計算設(shè)備中的變化,當(dāng)前存在于計算機(jī)網(wǎng)絡(luò)上的單元計算設(shè)備與彼此進(jìn)行通信以更新虛擬地址的組與當(dāng)前存在于計算機(jī)網(wǎng)絡(luò)上的單元計算設(shè)備之間的映射。

      在一個實施例中,響應(yīng)于檢測到先前在映射中的單元計算設(shè)備的缺少,該單元計算設(shè)備根據(jù)基于更新該映射的一組規(guī)則來自動地執(zhí)行數(shù)據(jù)恢復(fù)操作。

      在一個實施例中,非暫態(tài)的計算機(jī)存儲介質(zhì)儲存指令,該指令被配置以指示單元計算設(shè)備來執(zhí)行上文所討論的多個實施例的操作。

      在一個實施例中,相應(yīng)的單元計算設(shè)備被配置以指令以執(zhí)行上文所討論的多個實施例的操作。

      在一個實施例中,計算系統(tǒng)包括連接到計算機(jī)網(wǎng)絡(luò)并且被配置以執(zhí)行以上所討論的多個實施例的操作的指令的多個單元計算設(shè)備。

      在一個實施例中,單元(425)的存儲器(419)包括以下各項的一個或多個:ROM(只讀計算機(jī))、易失RAM(隨機(jī)讀取存儲器)、以及非易失存儲器(諸如硬件驅(qū)動、閃存等等)。

      易失RAM具體地被實現(xiàn)為動態(tài)RAM(DRAM),該動態(tài)RAM持續(xù)地需要能量,為了刷新或維護(hù)在存儲器中的數(shù)據(jù)。非易失存儲器具體是磁盤驅(qū)動器、磁光盤驅(qū)動器、光盤驅(qū)動器(例如,DVD RAM)、或即使在能量被移除系統(tǒng)的之后仍能夠維護(hù)數(shù)據(jù)的其他類型的存儲器系統(tǒng)。非易失存儲器還可以是隨機(jī)存取存儲器。

      非易失存儲器可以是直接耦接到在數(shù)據(jù)處理系統(tǒng)中的其余組件的本地設(shè)備。與系統(tǒng)的遠(yuǎn)程的非易失存儲器,例如經(jīng)由網(wǎng)絡(luò)接口(諸如調(diào)制解調(diào)器或以太網(wǎng)接口)耦接到數(shù)據(jù)處理系統(tǒng)的網(wǎng)絡(luò)存儲設(shè)備也可以被使用。

      在本說明中,出于簡化說明的目的,一些功能與操作被描述為由軟件代碼所執(zhí)行或引起。然而,這種表示還被用來指定該功能是由處理器(諸如,微處理器)對于代碼/指令的執(zhí)行而得出。

      此外,或組合地,本文所描述的功能與操作可以用具有或不具有軟件指令的專用電路被實現(xiàn),諸如用專用集成電路(ASIC)或現(xiàn)場可編程門陣列(FPGA)。實施例可以用不具有軟件指令的硬線電路而實現(xiàn),或與軟件指令相組合而實現(xiàn)。因此,技術(shù)既不被限制于硬件電路與軟件的任何具體組合,也不被限制于用于由數(shù)據(jù)處理系統(tǒng)所執(zhí)行的指令的任何特定的源。

      盡管一個實施例可以在功能健全的計算機(jī)和計算機(jī)系統(tǒng)中被實現(xiàn),但是各種實施例可以作為各種形式的計算產(chǎn)品被分配,并且可以被采用而不論真實地影響該分配的機(jī)器或計算機(jī)可讀介質(zhì)的特定的類型。

      所公開的至少一些方面可以在軟件中被至少部分地實施。即,技術(shù)可以對應(yīng)于執(zhí)行在存儲器(諸如ROM、易失RAM、非易失存儲器、緩存或遠(yuǎn)程存儲設(shè)備)中所包含的指令的序列的它的存儲器(諸如,微處理器)而在計算機(jī)系統(tǒng)或其他數(shù)據(jù)處理系統(tǒng)中被實施。

      被執(zhí)行以實現(xiàn)實施例的常規(guī)程序可以作為被稱為“計算機(jī)程序”的操作系統(tǒng)的部分或具體的應(yīng)用、組件、程序、對象、模塊或指令的序列而實現(xiàn)。計算機(jī)程序通常包括計算機(jī)中的各種存儲器和存儲設(shè)備中在多個時刻的一個或多個指令的組,并且當(dāng)由在計算機(jī)中的一個或多個處理器所讀取和執(zhí)行的時候,使得計算機(jī)執(zhí)行對于執(zhí)行涉及各種方面的元素的關(guān)鍵的操作。

      機(jī)器可讀介質(zhì)可以被用來儲存軟件與數(shù)據(jù),當(dāng)由數(shù)據(jù)處理系統(tǒng)所執(zhí)行的時候使得該系統(tǒng)執(zhí)行各種方法。可執(zhí)行的軟件與數(shù)據(jù)被儲存在各種空間中,該空間包括諸如ROM、易失RAM、非易失存儲器和/或緩存。這種軟件和/或數(shù)據(jù)的部分可以被儲存在這些存儲設(shè)備中的任何一個中。此外,數(shù)據(jù)和指令可以從中央服務(wù)器或點(diǎn)對點(diǎn)網(wǎng)絡(luò)中所獲得。數(shù)據(jù)和指令的不同的部分可以從不同的中央服務(wù)器和/或點(diǎn)對點(diǎn)網(wǎng)絡(luò)在不同的時刻、在不同的通信會話、或在相同的通信會話中所獲得。數(shù)據(jù)和指令可以先于應(yīng)用的執(zhí)行而全部地獲得。此外,數(shù)據(jù)和指令的位置可以當(dāng)被需要用于執(zhí)行的時候及時被動態(tài)地獲得。因此,不要求數(shù)據(jù)和指令在特定的時刻全部在機(jī)器可讀介質(zhì)上。

      計算機(jī)可讀介質(zhì)的示例包括但不局限于可記錄的和不可記錄的類型的介質(zhì),諸如易失的和非易失的存儲設(shè)備、只讀存儲器(ROM)、隨機(jī)存取存儲器(RAM)、閃存設(shè)備、軟盤以及其他可移動的盤、磁盤存儲介質(zhì)、光盤存儲介質(zhì)(例如,光盤只讀存儲器(CD ROMS)、數(shù)字通用光盤(DVD)等等)。計算機(jī)可讀介質(zhì)可以儲存指令。

      指令還可以被體現(xiàn)在用于電的、光的、聲學(xué)或其他形式的傳播信號(諸如,載波、紅外線信號、數(shù)字信號等等)的數(shù)字和模擬通信鏈路中。然而,傳播信號(諸如,載波、紅外線信號、數(shù)字信號等等)不是有形的機(jī)器可讀的介質(zhì)并且不被配置來儲存指令。

      總的來說,機(jī)器可讀介質(zhì)包括提供(即,儲存和/或傳輸)由機(jī)器(例如,計算機(jī)、網(wǎng)絡(luò)設(shè)備、個人數(shù)字助手、制造工具、具有一個或多個處理器的集的任何設(shè)備等等)可訪問的形式的信息的任何機(jī)制。

      在各種實施例中,硬件電路可以應(yīng)用在與軟件指令的組合中以實現(xiàn)該技術(shù)。因此,該技術(shù)既不局限于硬件與軟件的任何具體的組合,也不局限于用于由數(shù)據(jù)處理系統(tǒng)所執(zhí)行的指令的任何特定的源。

      本說明書與附圖是示例性的并且不應(yīng)被理解為限制性的。本公開是發(fā)明特性的示出,使得本領(lǐng)域技術(shù)人員能夠做出和使用該技術(shù)。大量的具體細(xì)節(jié)被描述以提供透徹的理解。然而,在某些示例中,出于避免模糊說明的目的,眾所周知的或傳統(tǒng)的細(xì)節(jié)沒有被描述。在本公開中的一個實施例的參考條件,并不是對于相同的實施例所必需的參考條件;并且,這些參考條件意為至少一個。

      本文標(biāo)題的使用僅僅出于易于參考的目的被提供,并且不應(yīng)以任何方式被理解為限制本公開或下文的權(quán)利要求書。

      參考“一個實施例”意為聯(lián)系該實施例所描述的具體的特性、結(jié)構(gòu)、或特征被包括在本公開的至少一個實施例中。在說明書中的多處出現(xiàn)的短語“在一個實施例中”并不是必須指的是同一實施例,并且并不必須全部指的是排除其他實施例的單獨(dú)的或其他的實施例。此外,所描述的各種特性可以由一個實施例而不是由其他實施例所呈現(xiàn)的。相似地,所描述的各種要求可以是針對一個實施例而不是其他實施例的要求。除非由明確說明和/或明顯不相容性所排除,本說明中所描述的各種特性的組合也被本文所包括。例如,以上聯(lián)系“在一個實施例中”或“在一些實施例中”的所描述的特性可以全部有選擇地被包括在一個實現(xiàn)方式中,除了以下情況:從本說明中能夠明顯得得出的,某些特性是其他特性的從屬,則可能限制從實現(xiàn)方式中排除所選中的特性;以及如從本說明中能夠明顯得得出的,某些特性與其他特性的不相容性,則可能限制在實現(xiàn)方式中一起包括所選中的特性。

      在前述的說明書中,本公開已經(jīng)參照具體的示例的實施例所描述。顯然的是,可以做出多種修改而不離開如下述權(quán)利要求書中所列出的寬泛的精神和范圍。相應(yīng)地,本說明書以及附圖被理解為示例的表達(dá)而不是限制的表達(dá)。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1