TWI432968B - 在一點對點網路操作一節點的方法、一點對點網路的節點與機器可讀媒體 - Google Patents

在一點對點網路操作一節點的方法、一點對點網路的節點與機器可讀媒體 Download PDF

Info

Publication number
TWI432968B
TWI432968B TW097105755A TW97105755A TWI432968B TW I432968 B TWI432968 B TW I432968B TW 097105755 A TW097105755 A TW 097105755A TW 97105755 A TW97105755 A TW 97105755A TW I432968 B TWI432968 B TW I432968B
Authority
TW
Taiwan
Prior art keywords
component
node
components
entity
peer
Prior art date
Application number
TW097105755A
Other languages
English (en)
Other versions
TW200847689A (en
Inventor
Cezary Dubnicki
Leszek Gryz
Krzysztof Lichota
Cristian Ungureanu
Original Assignee
Nec Corp
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 Nec Corp filed Critical Nec Corp
Publication of TW200847689A publication Critical patent/TW200847689A/zh
Application granted granted Critical
Publication of TWI432968B publication Critical patent/TWI432968B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Description

在一點對點網路操作一節點的方法、一點對點網路的節點與機器可讀媒體
本發明一般而言係關於點對點網路,且更特定而言係關於將資料儲存於點對點網路中。
本申請案主張2007年2月20日申請之第60/890,661號美國臨時專利申請案之權利,且以引用方式併入本文中。
用於儲存資料之點對點網路可係覆蓋網路,該覆蓋網路允許將資料以分散式方式儲存於該網路中(例如,在節點處)。在該等點對點網路中,在任何兩個彼此知曉之對等者(例如,節點)之間皆存在鏈路。亦即,該點對點網路中之節點可視為藉由虛擬或邏輯鏈路連接,虛擬或邏輯鏈路中之每一者皆對應於下伏網路(underlying network)中之一路徑(例如,一實體鏈路路徑)。此一結構化點對點網路使用一全球一致協議,以確保任何節點可有效地將一搜索投送至某個具有一所需檔案或資料件之對等者。一常見型之結構化點對點網路使用一分散式雜湊表(DHT),在該雜湊表中使用一致性雜湊法之一變量以一類似於一習用雜湊表將每一鍵分派給一特定陣列槽之方式將每一檔案之所有權分派給一特定對等者。
然而,習用DHT不容易支援資料冗餘,且可損害使用DHT儲存在系統中之資料之完整性。為克服此等障礙,資料項係N-路複製,但此導致高儲存耗用,且經常需要若干雜湊函數以定位該資料之複本。進一步地,其難於增添支 援以監視資料彈性及自動重建丟失資料。
相應地,需要在點對點網路中組織且儲存資料之經改善之系統及方法。
本發明一般而言提供一種操作一固定前置點對點網路之方法,該前置點對點網路具有以邏輯方式分割為儲存槽之複數個實體節點。一組儲存槽裝載組件且以邏輯方式組織成一虛擬節點。一實體節點接收一訊息,該訊息具有指示一裝載於另一實體節點上之組件之一版本之識別資訊;基於該識別資訊確定該組件之一相對年齡;及若裝載在該第二實體節點上之該組件之該版本較裝載在該節點上之該組件之一版本為新,則將該識別資訊作為一組件基本架構(skeleton)儲存在該節點上之一儲存槽處。該節點亦確定儲存在該第一實體節點上之該儲存槽處之該識別資訊是否啟動一組件,及若該識別資訊啟動該組件,則藉由將該組件裝載於該節點上來啟動該組件。
本發明進一步提供一種操作一點對點網路之一節點之方法,其中該點對點網路具有複數個實體節點,每一實體節點皆具有複數個儲存槽。該點對點網路將資料儲存在該複數個儲存槽中,將複數個組件與複數個該等儲存槽相關聯,將每一組件與具有裝載該組件之儲存槽之實體節點相關聯,將一組該等組件以邏輯方式關聯成一虛擬節點,其中該虛擬節點包括來自複數個該等實體節點之儲存槽,促進在與該等組件相關聯之該等實體節點之間通信以確定一 組件是否丟失,及若一組件丟失,則啟動一恢復程序。該恢復程序涉及為一替代組件評估複數個新主機位置,針對該複數個替代位置進行表决,及自該等初始組件中之資料建立一替代組件。
彼等熟習此項技術者藉由參照以下詳細說明及附圖將明瞭本發明之此等及其它優點。
本發明延伸分散式雜湊表(DHT)之概念以建立一更强健之點對點網路。本文所述之儲存資料之經改善之方法允許一具有用於若干資料冗餘級之內建支援之簡單DHT組織,該簡單DHT組織具有一較先前DHT為小之儲存負擔。本發明之實施例亦支援自動監視資料彈性及自動重構丟失及/或受損資料。
本發明為2004年3月30日申請之第10/813,504號美國專利申請案中所揭示之已知為一固定前置網路(FPN)之基於DHT之點對點網路提供更大强健性及彈性,該專利申請案以引用方式併入本文中。與習用點對點網路不同,根據本發明之FPN及網路(已知為具有超節點之FPN(FPN/SN))經構建以便將所貢獻資源(例如,節點)專用於該點對點系統,且該等系統相應地係顯著地更穩定且可擴縮。
圖1-3繪示利用FPN/SN之點對點網路之各種闡釋性實施例。圖1-3係實例性簡圖以闡釋下述各種結構及關係,且不意味著將本發明限定至所示之該等具體網路布局。
圖1係一與本發明之一實施例配合使用之實例性點對點 網路100之一簡圖。點對點網路100具有複數個實體節點102、104、106及108,如已知,該複數個實體節點經由一下伏傳送網路(underlying transport network)110彼此通信。就本發明而言,對實體節點102-108之位置、分組或數量無約束。儘管圖1中繪示四個實體節點102-108,但應瞭解在任何布置中可利用任何數量之節點。類似地,實體節點102-108之實際儲存空間、處理能力及/或其它資源可係不同。
如已知,實體節點102-108各自具有相關聯之記憶體及/或儲存區域(未示出)。實體節點102-108之記憶體及/或儲存區域各自以邏輯方式分割為大致與每一實體節點之可用儲存量成正比之複數個槽。亦即,實體節點102之記憶體及/或儲存區域以邏輯方式分割為大致相同大小之槽112a、112b、112c及112d,實體節點104之記憶體及/或儲存區域以邏輯方式分割為大致相同大小之槽114a、114b、114c及114d,實體節點106之記憶體及/或儲存區域以邏輯方式分割為大致相同大小之槽116a、116b、116c及116d,且實體節點108之記憶體及/或儲存區域以邏輯方式分割為大致相同大小(例如,就儲存容量而言)之槽118a、118b、118c及118d。可將一實體節點以邏輯方式分割係因可將其記憶體及/或儲存分配分配為不同儲存區域(例如,槽)。實體節點102-108可分割為任何適當數量之槽,該等槽表示該節點中之一儲存空間量。換言之,資料可以一分區或其它劃分方式儲存在節點102-108中。當然,可使用實體節點102-108之儲存及/或記憶體之任何適當分割,且槽112a- d、114a-d、116a-d及118a-d可具有不均等的大小。進一步地,槽大小可不係靜態且可增長或收縮,且槽可分裂及/或可與其它槽合併。
每一實體節點102-108皆負責分別在槽112a-d、114a-d、116a-d及118a-d中儲存及檢索一個或多個目標(例如,檔案、資料、資料區塊、資料片段等)。每一目標皆可與一雜湊函數之一較佳固定大小雜湊鍵。在運作中,一個或多個客戶機120可與一個或多個實體節點102-108通信,且使用一雜湊鍵發出一對一特定目標的請求。
槽112a-d、114a-d、116a-d及118a-d亦可各自與一虛擬(例如,邏輯)節點之一組件相關聯(下文將參照圖2及3進一步詳細論述)。本文中,"組件"並且非實體存在,而係一虛擬節點之一部分之表示。亦即,組件可係裝載在一節點內之一特定位置中(例如,裝載於一槽中)之一組或子組資料之邏輯表示及/或方向或地址。資料片段(例如,下文論述之資料片段)之儲存位置以邏輯方式組織成一虛擬節點。
圖2係一與本發明之一實施例配合使用之一實例性點對點網路200之一部分之一簡圖。點對點網路200與點對點網路100相似,且具有與實體節點102-108相類似之複數個實體節點202、204、206、208、210及212。實體節點202-212之每一者皆以邏輯方式分割為與每一實體節點之可用儲存量大致成正比之複數個槽。亦即,實體節點202以邏輯方式分割為槽214a、214b、214c及214d,實體節點204以邏輯方式分割為槽216a、216b、216c及216d,實體節點 206以邏輯方式分割為槽218a、218b、218c及218d,實體節點208以邏輯方式分割為槽220a、220b、220c及220d,實體節點210以邏輯方式分割為槽222a、222b、222c及222d,且實體節點212以邏輯方式分割為槽224a、224b、224c及224d。為圖2中之繪示及論述之簡明起見,由於每一槽214a-d、216a-d、218a-d、220a-d、222a-d及224a-d皆裝載一組件,在本文中將與其裝載槽相對應之組件以相同之參考編號指代。舉例而言,裝載於實體節點202之槽214c中之組件稱為組件214c。
由若干組件組成之一組群稱為一虛擬節點(例如,一"超節點")。在圖2之實例中,超節點226包括組件214b、216c、218b、220d、222a及224a。因此,一虛擬節點(例如,超節點)係一由在若干實體節點上之複數個儲存位置組成之邏輯組群。該超節點可具有與一網路中之任何數量之實體節點相關聯之任何數量之組件,其中該等組件之數量係超節點之基數(例如,在一超節點中之組件之數量),且一超節點不需具有來自每一實體節點之組件。然而,一超節點之每一組件必須裝載於在不同實體節點上之槽中。亦即,一超節點中之任兩個組件不應裝載在相同實體節點中。一超節點中之組件之總數量可藉由一預定常數(超節點基數)給定。在某係實施例中,該超節點基數可在範圍4-32中。該超節點基數可係資料片段之一預定(例如,需求、設計等)數量。
在某些實施例中,一更大超節點基數經選擇以增加選擇 資料類別之靈活性。在替代實施例中,一更小超節點基數經選擇以在讀/寫操作中提供對儲存位置(例如,磁碟)之更大存取。在此,資料類別定義一冗餘層級,其中較低資料類別(例如,資料類別低)具有較少冗餘,且較高資料類別(例如,資料類別高)具有較多冗餘。可存在與該預定超節點基數相等之多個資料類別。最低資料類別定義為沒有冗餘片段,及最高級定義為具有(超節點基數-1)冗餘片段。
在一實例性實施例中,資料類別低可指一單個冗餘片段,及資料類別高可指四個冗餘片段。當然,可為資料類別低及/或資料類別高設定任何適當數量之資料片段。在此實例性實施例中,由使用者分類分為資料類別低之資料區塊將被分割為與一超節點基數相等之多個片段,其中有(超節點基數-1)初始片段及一個冗餘片段。相應地,可丟失一個片段且可重建該資料區塊。使用資料類別高(例如,四個冗餘片段),一資料區塊將被分割為片段以便其中四個資料區塊將係冗餘。因此,四個片段可丟失且重新建立該初始資料區塊。片段(尤其係冗餘片段)闡釋於同時申請、共同受讓且均同在申請中之標題為"Method and Apparatus for Storing Data in a Peer to Peer Network"並且於2008年1月31日申請之第12/023,133號美國專利申請案中(代理人檔案號碼06083),並且以引用方式併入本文中。
該超節點之組件可認為係對等者,且可類似於在一習用點對點網路中之對等節點相關聯(例如,在一雜湊表等中)、定址及/或聯繫。
圖3繪示根據本發明之一實施例之一實例性點對點網路300之一高階抽象。點對點網路300類似於點對點網路100及200,且具有若干實體節點302、304、306及308。實體節點302-308中之每一者皆如上所述分割為若干槽。在圖3之具體實施例中,實體節點302-308中之每一者皆具有八個槽。如圖2,每一槽310、312、314、316、318、320、322或324皆裝載一組件310、312、314、316、318、320、322或324。組件310-324中之每一者皆與一對應超節點相關聯,且分散在實體節點302-308中。以此種方式,形成八個超節點,每一者在該四個實體節點302-308中之每一者上皆具有一組件310-324。舉例而言,一第一超節點形成有四個組件-組件310裝載在實體節點302(例如,在一槽310中)上,組件310裝載在實體節點304(例如,在一槽310中)中,組件310裝載在實體節點306(例如,在一槽310中)中,及組件310裝載在實體節點308(例如,在一槽310中)中。包括組件310的該第一超節點顯示為虛線方塊。一第二超節點包括裝載在實體節點302-308中之四個組件312,且顯示為一梯形。當然,此等僅係圖解表示以突出包括不同超節點之不同組件,且不意欲作為一槽、組件、節點或超節點看上去可係何物之文字表示。剩餘之六個超節點以類似方式形成。
為便於使用如圖1-3中所述及所示之該等超節點進行資料儲存,該DHT(例如,FPN)之固定前置網路模型可經延伸以使用超節點。在本發明之範圍內,可利用將資料(例 如,目標、檔案等)映射至一固定大小之雜湊鍵之任何有利雜湊函數。該等雜湊鍵可被理解為係含有固定大小位元串(例如,5位元、6位元等)之所有可能組合之空間中的固定大小位元串。如已知,該雜湊鍵空間之一子空間與更大位元串之一組群位元相關聯。舉例而言,在一5位元串中以110開始之一組雜湊鍵將包含除彼等以000、001、010、011、100及101開始之雜湊鍵外之所有雜湊鍵。亦即,該前置係110。該雜湊鍵空間之此一子空間可係一超節點,且一進一步說明可係該超節點之一組件。該前置在一超節點及/或組件之壽命內可係固定。在此等實施例中,該點對點網路稱為一固定前置點對點網路。亦可視需要使用其它雜湊方法。
圖4係一根據本發明之一實施例之實例性超節點組成及組件說明表400。該超節點組成及組件說明表400可結合(舉例而言)點對點網路200使用。每一超節點(例如,超節點226)皆藉由一包括超節點前置402、該組件說明之一陣列404、及一超節點版本406之超節點組成(例如,使用超節點組成及組件說明表400)來說明。由於每一組件皆具有一如下所述之說明,陣列402之大小與該超節點基數相等。超節點版本406係一對應於該超節點之當前實體之序列號。如上且在第10/813,504號美國專利申請案中所述,每一超節點皆藉由一固定前置402來識別。舉例而言,於在點對點網路200中根據超節點組成及組件說明表400(其中雜湊鍵係固定大小位元串)雜湊及/或儲存資料中,超節 點226具有一固定前置01101。因此,具有一以01101開始之雜湊鍵之任何資料將與超節點226相關聯。
在操作中,在組件陣列404中之每一組件(例如,214b、216c、218b、220d、222a、224a等)皆藉由一包括一固定前置408、一組件索引410及一組件版本412之組件說明來說明。該超節點之所有組件(例如,在陣列404中)亦在其壽命內分派該相同固定前置。每一組件之組件索引410皆對應於該超節點陣列中之一位置。一組件之索引在該組件之壽命內係固定,且係指向該具體組件之一識別號。一組件索引係一介於0與(超節點基數-1)之間之數字。一組件之版本係一每當該組件改變主機(例如,節點)時順序增加之版本號。在某些實施例中,如下詳細所述,可將一組件自一個實體節點分裂或移動至另一實體節點,且在此等情形下其版本增加。
超節點組成及組件說明表400係與實體節點、超節點及其各自組件相關之資訊之一組織之一實例。當然,熟習此項技術者應認識到組織及提供此資訊之其它方法,例如:以本地方式將該資訊儲存在一資料庫中之實體節點上,將資訊儲存一遠程位置處之一公共資料庫中,等。
該超節點組成之經更新指示經維持(例如,在超節點組成及組件說明表400中,等)以便於在對等者之間通信。進一步地,與該等組件相關聯之實體節點維持鄰近實體及/或虛擬節點之組成。為維持此等組成,如已知,與組件相關聯之實體節點回音檢查(ping)對等者及鄰近對等者。以 此種方式,一與一組件相關聯之實體節點可內在地回音檢查與在該組件之超節點中之對等者相關聯之實體節點以確定虛擬節點健康及/或當前組成。進一步地,一與一組件相關聯之實體節點可外在地回音檢查與鄰近實體節點(例如,具有相同索引但屬於一不同超節點之組件)相關聯之實體節點以傳播及/或收集組成資訊。當然,可視需要使用組織及/或保持跟蹤超節點及其組件(包括版本/實體資訊)之其它系統及方法。
圖5係在一具有超節點之固定前置點對點網路中組織一構件之框架(例如,一基本架構)之一方法500之流程圖。一組件基本架構可組織在一實體節點(例如,實體節點202-212)上以為一組件(例如,組件214a-d、216a-d、218a-d、220a-d、222a-d、224a-d等)保留儲存空間。亦即,該組件基本架構可提供該實體節點上之一槽已被利用之指示。該方法以步驟502開始。
在步驟504中,在一目的地節點(例如,實體節點202-212)處自一遠程對等者(例如,一超節點及/或實體節點之另一組件)接收一訊息。如以上結合圖4所述,該訊息可含有關於該遠程對等者之說明(例如,組成)之資訊。該組成可係如上文所論述及/或可包含該遠程對等者之一組成識別(包含一前置及組成版本號)。該方法可同時及/或連續地進行至方法步驟506、514及/或518。
在步驟506中,確定該組成之年齡(例如,實體、版本等)。若該組成係較由該目的地節點所知之最新組成為老 (例如,若該組成具有一更低版本號),則在步驟508處拒絕該訊息且該方法在步驟522處結束。若該組成較由該目的地節點所知之最年輕組成為新(例如,若該組成具有一更高版本號),則該方法進行至步驟510。在此,在以下情形中一組成為一節點"所知":若該節點具有儲存在該節點上之此資訊,若該節點已接收到指示此等組成之資訊,及/或若該節點可存取(例如,經由一控制器700及/或超節點組成及組件說明表400)此資訊。
在步驟510中,將關於該基本架構(例如,一組成及/或組件索引)之資訊儲存在該目的地節點處。以此種方式,即建立一組件基本架構。此時,在步驟512中將一回覆訊息發送至該發端節點(例如,該遠程對等者),從而指示組件建立之成功或失敗。
在步驟512之後,方法500可返回控制至步驟504。亦即,在建立一基本架構之後,裝載該基本架構之實體節點接收關於每一新組成之資訊,且確定該新接收之組成是否較當前組成為新。若該新接收之組成係更新,則其替代在該節點處之該更老組成(例如,如在步驟510中所儲存)。
在步驟514中,實施一檢驗以確定該當前組成是否啟動與該組件基本架構相關之組件。在以下情形下一組成啟動該組件:該組成較為該基本架構識別符之一部分之組成為新,具有與該組件相同之索引,具有與該基本架構相同或一更長之前置,且裝載該組件之該實體節點之實體與該新組件之實體係相同實體。在步驟516中,啟動該組件。亦 即,將該組件裝載在該新實體節點上。若該組成不啟動該組件,則該方法返回控制至步驟504以接收更多訊息。
在步驟518中,實施一檢驗以確定該等已知組成(例如,在步驟504中在訊息中所接收之所有組成)是否使組件基本架構過時。若一組已知組成較該組件基本架構之組成為新,且該組之所有該等組成覆蓋藉由該基本架構之前置及索引所表示之空間,則確定該組件基本架構係已過時。在此,藉由該基本架構之前置及索引表示之空間係雜湊空間與索引空間(自0跨至超節點基數-1)之笛卡爾乘積。若該組件基本架構係已過時,則在步驟520中移除該基本架構。若其不是,則該方法返回控制之步驟504以接收更多訊息。該方法在步驟522處結束。
圖6A及6B繪示一在一根據本發明之一實施例之固定前置點對點網路中操作節點之方法600之一流程圖。可在一上文關於圖1-4所述之網路中實施方法600,其中該固定前置網路延伸一FPN以包含超節點。進一步地,點對點網路之習用功能,尤其係在於2004年3月30日申請之第10/813,504號美國專利申請案中揭示且以引用方式並且入本文中之FPN,可經修改以與本發明配合使用。相應地,應瞭解本文中所述之方法600之某些方法步驟可以其它順序實施且意欲作為說明性。熟習此項技術者應認識到對一將與本文中所述之一FPN/SN系統配合應用之點對點網路之習用使用之必要修改。該方法在圖6A中之步驟602處開始。
在步驟604中,添加一新實體節點。該實體節點可係一類似於圖1、2及3各自的實體節點102-108、202-212及302-308之實體節點。
在步驟606中,該新實體節點在一點對點網路(例如,網路100、200、300等)中定位一存留實體節點。為尋找一存留實體節點,該新實體節點可經由該網路中之節點之一預定(例如,使用者提供、系統提供等)列表定位該存留節點。在本發明之範圍內,一存留節點係一具有當前儲存在其上之資料之節點。在一替代實施例中,如已知,該新實體節點可使用一伺服定位協定(SLP)在該網路中尋找一個或多個存留實體節點。
在步驟608中,實施一空實體節點方法。在其中無主動組件(例如,組件214a-d、216a-d、218a-d、220a-d、222a-d及224a-d),無已過時組件,無組件基本架構(以上結合圖5所述),及無使用者提供之資料儲存在該節點處之情形中可將一實體節點可視為為"空"。相應地,每當發現一具有超節點之固定前置網路中之一實體節點為空時,即使其不是自步驟604新添加之節點,仍可實施方法步驟608。可如下實施該方法。
該空節點將多個空節點探針傳輸至自其節點統計已識別為具有超過一個組件之節點。節點統計可係關於一實體節點之資訊之一概要,例如,已使用之槽之數量、自由槽之數量、所裝載組件數量、總儲存大小、自由磁碟空間等。若沒有足夠之節點,則該空節點藉由生成隨機之長前置並 且將該等空節點探針傳輸至彼等前置來傳輸該等必要探針之剩餘部分。在具有一相對小數量之實體節點之實施例中,可接觸所有節點。在具有大數量節點之實施例中(例如,數千等),可接觸一預定部分(例如,10-20%)。
隨後,接收該等空節點探針之節點藉由包括其組件之組成、其槽之儲存大小(例如,其組件之大小)、及節點統計之訊息進行回覆。該等接受節點亦使用發送該空節點探針之空節點之統計來更新其遠程統計列表,且開始傳遞-恢復程序。在某些實施例中,該等傳遞-恢復程序可係基於熵之傳遞-恢復程序,例如下述之泛用改變方法700。
接著實施一檢驗以確定是否在該空節點上建立任何組件(例如,如下文在步驟610中)。若建立任何組件,則該方法轉至步驟612。若沒有建立組件,則該方法繼續且該空節點將傳輸資料請求。此請求可係一急切(例如,優先)分裂請求,其發送至任何已回覆在步驟608a中所傳輸之該等空節點探針之任何實體節點。在至少一項實施例中,該請求發送至具有最短前置之實體節點,或若超過一個前置係同樣短,則該請求發送至裝載最大組件之實體節點(例如,在一單個儲存槽中具有最多資料之實體節點)。該資料請求可進一步包含首先接觸傳輸至所有裝載組件之實體節點之急切分裂請求,其在裝載在該實體節點上之組件之超節點中。以迭代方式重複步驟608直至該空實體節點不再為空。
在步驟610中,建立組件。應瞭解,組件建立係一邏輯 結構,且可使用記錄及/或組織該資訊(例如,如在表400中)以達成本文中所述之組織之任何適當方法,包括軟體及/或電子。可藉由一明確管理命令建立組件。在一替代實施例中,一組件以如在以上方法步驟514及516中之方式建立。
在步驟612中,經由該點對點網路(例如,網路200)投送訊息。訊息、請求及/或其它資訊可類似地使用DHT發送至先前點對點網路。
在一穩定點對點網路200中,可在與超節點(例如,超節點226等)之組件相關聯之實體節點之間投送訊息,其中該等組件具有與啟動該投送之組件相同之索引。該發送不同於在上次跳躍中在先前點對點網路中之投送。在此,將該訊息自與接收該資訊之超節點中之該組件相關聯之第一實體節點直接傳遞至與該目的地組件相關聯之實體節點。
在一改變點對點網路200(例如,一其中節點及/或組件正在改變之網路)中,維持已與一給定訊息接觸且確定係不可到達之實體節點202-212中之槽之一列表。此外,可將已與一給定訊息接觸之節點202-212之列表維持為一"黑名單"。此時可將該訊息發送至該目的地之該等點中之一者。舉例而言,若一訊息預定去往槽214b,但該槽經確定係不可到達,則可將該訊息發送至槽216c、218b、220d、222a及/或224a中之一者或多者。在此一跳躍後,該源對等者添加至該黑名單。在發送至該目的地之一對等者後,可如已知重新開始投送。
在步驟614處,更新該點對點網路。該點對點網路之更新可係:一組件自一本地節點至一遠程節點之傳遞,一組件之一恢復(例如,在一節點失敗、節點丟失等之後),一組件及其相關聯之存儲槽之一本地分裂(在該儲存槽到達一預定容量時),及/或一急切分裂以建立一如在以上方法步驟608中傳遞至一空節點之組件。亦可實施其它網路更新,例如添加節點、刪除節點、失敗後的系統恢復等。該點對點網路之更新可包括確定一傳遞及/或一組件、儲存槽及/或實體節點之新位置。此確定可使用一泛用改變方法實施。下文將關於圖7論述一實例性泛用改變方法。
在步驟616中,在一點對點網路中之對等者監視其它對等者之狀態。在至少一項實施例中,該等對等者(例如,實體節點及/或組件)彼此回音檢查以偵測不可到達之對等者。在一預定臨限值之回音檢查未自一第一對等者遞送至一第二對等者(例如,在點對點網路200中自節點202至節點204及/或在超節點226中自組件214b至組件216c)之後可將該對等者視為不可到達。
在步驟618中,確定一對等者之狀態。亦即,根據在步驟616或另一方法中所述之回音檢查,可確定一實體節點及/或組件(例如,一對等者)之狀態、健康及/或可到達性。若該對等者經確定係不可到達,則該方法可轉回至步驟614且可更新該點對點網路。若一對等者經確定係可到達,則該方法可轉至步驟622。
類似地,該方法可轉至步驟620且可恢復該等不可到達 之對等者中之資料。如在同時申請且均同在申請中之並且以引用方式併入本文中之標題為"Method and Apparatus for Storing Data in a Peer to Peer Network"並且於2008年1月31日申請之第12/023,133號美國專利申請案中(代理人檔案號碼06083)所述,資料區塊可以可擦除方式編碼至複數個資料片段中-多個初始資料片段及多個冗餘資料片段。 該等資料片段可儲存在一點對點網路之該等實體節點上之儲存槽中,且其儲存位置可表示(例如,相關聯)為一虛擬節點(例如,一超節點)中之組件。由於僅必須使用一部分(例如,半數加一)該等資料片段以恢復該初始資料區塊,該等剩餘對等者很可能具有足夠之片段以恢復該初始資料。由此,該點對點網路可自該等可到達之對等者下載(例如,如在DHT網路中存取)該等剩餘資料片段,且根據已知方法重構該初始資料區塊。
以此種方式,改善網路彈性。由於每一超節點皆包含源自一初始資料區塊之片段(例如,藉由可擦除編碼)且該等片段之每一者因此儲存在一單獨實體節點上,該網路將更少地遭受因網路改變所導致之失敗。亦即,對該等對等者實體節點之改變(例如,失敗及節點分離)將因該資料之分散式特徵更小可能地影響該點對點網路。
該方法在步驟622處結束。
圖7繪示上文關於圖6所論述之一泛用改變方法700之一流程圖。該方法在步驟702處開始。在步驟704中,如已知,該點對點網路或該點對點網路之一部分(例如,一個或多個實體節點)將計算該點對點網路及其相關聯熵值之 所有可能改變。
在步驟706中,一實體節點自一潛在目的地節點(例如,該新節點及/或一組件之該新主機)請求資訊。該資訊請求可包含一對驗證藉由該等目的地節點統計說明之當前狀態之請求。
在步驟708中,確定該潛在目的地節點之當前狀態。若該潛在目的地節點之當前狀態接近由該點對點網路所知之該等統計,則將如在方法500中建立一組件基本架構且該方法將轉至步驟710。若該潛在目的地節點之當前狀態不接近由該點對點網路所知之該等統計,則該方法將返回至步驟704。
在步驟710中,表决該新組件位置。該表决可包括使用一分散式一致性方法以便該點對點網路中之該超節點基數數量之至少半數加一個對等者必須同意表决成功。在至少一項實施例中,可使用一Ben-Or方法。當然,可使用任何適當分散式一致性方法或其它表决方案。
在步驟712中,確定該表决之結果。若該表决未通過,則放棄該改變且該方法返回至步驟704。若通過該表决,則該組件(若有)之先前位置變得已過時且使用該新位置。 在任一結果下,在步驟714中皆將一訊息發送至具有該新組成之該目的地節點。此時如在方法600之步驟610中在該目的地節點上建立一新組件。因此,在方法700中所述之該泛用改變方法可用於資料及/或組件之任何傳遞及/或分裂。該方法在步驟716處結束。
圖8係根據本發明之一實施例之一控制器800之一示意圖。控制器800含納一處理器802,處理器802藉由執行定義操作之電腦程式指令控制控制器800之整個操作。該等電腦程式指令可儲存在一儲存裝置804中(例如,磁碟、資料庫等),且在需要執行該等電腦程式指令時載入至記憶體806內。因此,實施本文中所述之方法步驟之應用,例如在方法500、600及700中之可擦除編碼、儲存資料及DHT組織,皆由記憶體806及/或儲存裝置804中所儲存之電腦程式指令定義並且由執行該等電腦程式指令之處理器802控制。控制器800亦可包含一個或多個網路介面808以經由一網路(例如。一點對點網路,等)與其它裝置通信。控制器800亦包含使使用者能夠與控制器800互動之輸入/輸出裝置810(例如,顯示器、鍵盤、滑鼠、揚聲器、按鈕等)。控制器800及/或處理器802可包含一個或多個中央處理單元、唯讀記憶體(ROM)裝置及/或隨機存取記憶體(RAM)裝置。熟習此項技術者將認識到,一實際控制器之實施方案還可含有其它組件,且圖8之控制器係此一控制器之某些組件之出於闡釋性目的之一高階表示。
根據本發明之某些實施例,可將一程式(例如,控制器軟體)之指令讀入至記憶體806內,例如自一ROM裝置至一RAM裝置,或自一LAN配接器至一RAM裝置。該程式中之該等指令序列之執行可導致控制器800實施一個或多個本文中所述之方法步驟,例如上文關於方法500、600及700所述之彼等方法步驟。在替代實施例中,可將硬接線線路 或積體電路代替或結合軟體指令用於本發明之該等處理之實施方案。因此,本發明之實施例並且不限於硬體、韌體及/或軟體之任一特定組合。記憶體806可為控制器800儲存該軟體,控制器800可適於以執行該軟體程式並且藉此根據本發明且具體而言根據上文所詳細說明之該等方法操作。然而,熟習此項技術者應瞭解,如本文中所述,本發明可使用各種各樣的程式化技術以及通用硬體子系統或專用控制器以諸多不同方式來實施。
此等程式可以一壓縮、未編譯及/或加密格式儲存。此外,該等程式可包含一般而言可係有用之程式元件,例如,一操作系統,一資料庫管理系統,及允許該控制器與電腦周邊裝置面接之裝置驅動器,及其它設備/組件。適當之一般目的程式元件已為熟悉此項技術者所知,且無需在本文中詳細說明。
前述詳細說明意欲理解為在各方面皆係闡釋性及實例性,但非限制性,且本文中所揭示之本發明之範疇不意欲自該詳細說明來確定,而係自根據由專利法許可之全部寬度來解釋之申請專利範圍來確定。應理解,本文中所示及說明之實施例僅係本發明之原理之闡釋性,且彼等熟悉此項技術者可在不背離本發明之範疇及精神前提下實施各種修改。彼等熟悉此項技術者可在不背離本發明之範疇及精神前提下實施各種其它特徵組合。
100‧‧‧點對點網路
102‧‧‧實體節點
104‧‧‧實體節點
106‧‧‧實體節點
108‧‧‧實體節點
110‧‧‧下伏傳送網路
112a-d‧‧‧槽
114a-d‧‧‧槽
116a-d‧‧‧槽
118a-d‧‧‧槽
120‧‧‧客戶機
200‧‧‧點對點網路
202‧‧‧實體節點
204‧‧‧實體節點
206‧‧‧實體節點
208‧‧‧實體節點
210‧‧‧實體節點
212‧‧‧實體節點
214a-d‧‧‧槽
216 a-d‧‧‧槽
218 a-d‧‧‧槽
220 a-d‧‧‧槽
222a-d‧‧‧槽
224a-d‧‧‧槽
226‧‧‧超節點
300‧‧‧網路
302‧‧‧實體節點
304‧‧‧實體節點
306‧‧‧實體節點
308‧‧‧實體節點
310‧‧‧組件(槽)
312‧‧‧組件(槽)
314‧‧‧組件(槽)
316‧‧‧組件(槽)
318‧‧‧組件(槽)
320‧‧‧組件(槽)
322‧‧‧組件(槽)
324‧‧‧組件(槽)
404‧‧‧陣列
802‧‧‧處理器
804‧‧‧儲存裝置
806‧‧‧記憶體
808‧‧‧網路介面
810‧‧‧輸入/輸出裝置
圖1係根據本發明之一實施例之一實例性點對點網路之 一簡圖;圖2係根據本發明之一實施例之一實例性點對點網路之一簡圖;圖3係根據本發明之一實施例之一實例性點對點網路之一簡圖;圖4係擬儲存至一點對點網路中之資料之一繪示;圖5係將資料儲存至根據本發明之一實施例之一固定前置點對點網路中之一方法之一流程圖;圖6顯示操作一固定前置點對點網路之一節點之一方法之一流程圖;圖7顯示一泛用改變方法之一流程圖;及圖8係一控制器之一示意圖。
100‧‧‧點對點網路
102‧‧‧實體節點
104‧‧‧實體節點
106‧‧‧實體節點
108‧‧‧實體節點
110‧‧‧下伏傳送網路
112a-d‧‧‧槽
114a-d‧‧‧槽
116a-d‧‧‧槽
118a-d‧‧‧槽
120‧‧‧客戶機

Claims (20)

  1. 一種在一點對點網路中操作一第一實體節點之方法,該點對點網路包括複數個實體節點且每一實體節點皆具有複數個儲存槽,該方法包括:藉由分派相同固定大小之雜湊鍵前置(fixed-size hash-key prefix)至一組組件,而以邏輯方式將該組組件關聯成一虛擬節點,以使與一雜湊鍵相關聯之一物件(object)且匹配該雜湊鍵前置之若干片段分散地儲存於裝載(hosted)該組組件之不同實體節點之儲存槽,其中該雜湊鍵藉由將一雜湊函數運用至該物件而取得;在該第一實體節點處接收一訊息,該訊息包括指示裝載在一第二實體節點上且包含於該組組件中之一給定組件之一版本之識別資訊;基於該識別資訊確定該給定組件之一相對年齡(age);及若裝載在該第二實體節點上之該給定組件之該版本較裝載在該第一實體節點上之該給定組件之一版本為新,則將該識別資訊作為一組件基本架構(skeleton)儲存在該第一實體節點上之一儲存槽處。
  2. 如請求項1之方法,其進一步包括:確定儲存在該第一實體節點上之該儲存槽處之該識別資訊是否啟動一特定組件;及若該識別資訊啟動該特定組件,則啟動該特定組件。
  3. 如請求項2之方法,其中該確定儲存在該第一實體節點上之該儲存槽處之該識別資訊是否啟動一特定組件包 括:確定該識別資訊是否用來識別與該特定組件相同之索引;確定該識別資訊是否用來識別具有與該組件基本架構相同之前置或一較其為長之前置;及確定該第一實體節點之一實體是否與該特定組件之一實體相同。
  4. 如請求項2之方法,其中啟動該特定組件包括:將該特定組件裝載在該第一實體節點上。
  5. 如請求項1之方法,其中該虛擬節點為一超節點(supernode)。
  6. 一種操作一點對點網路之一節點之方法,該點對點網路包括複數個實體節點且每一實體節點皆具有複數個儲存槽,該方法包括:將複數個組件與該複數個儲存槽相關聯;將每一組件與具有裝載該組件之該儲存槽之該實體節點相關聯;藉由分派相同固定大小之雜湊鍵前置至一組組件,而以邏輯方式將該組組件關聯成一虛擬節點,以使與一雜湊鍵相關聯之一物件且匹配該雜湊鍵前置之若干片段分散地儲存於裝載該組組件之不同實體節點之儲存槽,其中該雜湊鍵藉由將一雜湊函數運用至該物件而取得;在與該等組件相關聯之該等實體節點之間通信以確定該等組件之一者是否丟失;及 若該等組件之一者丟失,則啟動一恢復程序。
  7. 如請求項6之操作一點對點網路之方法,其中該恢復程序包括:為一替代組件評估複數個新主機位置;針對該複數個新主機位置進行表决;及自該等剩餘之組件中之資料建立該替代組件。
  8. 如請求項6之方法,其中該虛擬節點為一超節點。
  9. 一種機器可讀媒體,其具有儲存在其上之程式指令,該等指令能夠由一處理器執行並且定義以下步驟:在一點對點網路中之一第一實體節點處接收一訊息,其中該點對點網路包括實體節點且每一實體節點皆具有複數個儲存槽,在複數個實體節點上之一組儲存槽裝載組件且以邏輯方式組織成一虛擬節點,其係藉由分派相同固定大小之雜湊鍵前置至該組儲存槽,以使與一雜湊鍵相關聯之一物件且匹配該雜湊鍵前置之若干片段分散地儲存於該組儲存槽,該訊息包括指示裝載在一第二實體節點上之一給定組件之一版本之識別資訊;基於該識別資訊確定該給定組件之一相對年齡;及若裝載在該第二實體節點上之該給定組件之該版本較裝載在該第一實體節點上之該給定組件之一版本為新,則將該識別資訊作為一組件基本架構儲存在該第一實體節點上之一儲存槽處。
  10. 如請求項9之機器可讀媒體,其中該等指令進一步定義以下步驟: 確定儲存在該第一實體節點上之該儲存槽處之該識別資訊是否啟動一特定組件;及若該識別資訊啟動該特定組件,則啟動該特定組件。
  11. 如請求項10之機器可讀媒體,其中用於確定儲存在該第一實體節點上之該儲存槽處之該識別資訊是否啟動一特定組件之該等指令進一步定義以下步驟:確定該識別資訊是否用來識別與該特定組件相同之索引;確定該識別資訊是否用來識別與該組件基本架構相同之前置或一較其為長之前置;及確定該第一實體節點之一實體是否與該特定組件之一實體相同。
  12. 如請求項10之機器可讀媒體,其中該等指令進一步定義以下步驟:將該特定組件裝載在該第一實體節點上。
  13. 一種機器可讀媒體,其具有儲存在其上之程式指令,該等指令能夠由在一點對點網路中之一處理器執行,該點對點網路包括複數個實體節點且每一實體節點皆具有複數個儲存槽,且該等指令定義以下步驟:將複數個組件與複數個該等儲存槽相關聯;將每一組件與具有裝載該組件之該儲存槽之該實體節點相關聯;藉由分派相同固定大小之雜湊鍵前置至一組組件,而以邏輯方式將該組組件關聯成為一虛擬節點,以使與一 雜湊鍵相關聯之一物件且匹配該雜湊鍵前置之若干片段分散地儲存於裝載該組組件之不同實體節點之儲存槽,其中該雜湊鍵藉由將一雜湊函數運用至該物件而取得;在與該等組件相關聯之該等實體節點之間通信以確定該等組件之一者是否丟失;及若該等組件之一者丟失,則啟動一恢復程序。
  14. 如請求項13之機器可讀媒體,其中用於該恢復程序之該等指令進一步定義以下步驟:為一替代組件評估複數個新主機位置;針對該複數個新主機位置進行表决;及自該等剩餘之組件中之資料建立該替代組件。
  15. 一種在一點對點網路中之第一實體節點,該點對點網路包括複數個實體節點且每一實體節點皆具有複數個儲存槽,該第一實體節點包括:用於以邏輯方式將一組組件關聯成一虛擬節點之構件,其係藉由分派相同固定大小之雜湊鍵前置至該組組件,以使與一雜湊鍵相關聯之一物件且匹配該雜湊鍵前置之若干片段分散地儲存於裝載該組組件之不同實體節點之儲存槽,其中該雜湊鍵藉由將一雜湊函數運用至該物件而取得;用於在該第一實體節點處接收一訊息之構件,該訊息包括指示裝載在一第二實體節點上且包含於該組組件中之一給定組件之一版本之識別資訊;用於基於該識別資訊確定該給定組件之一相對年齡之 構件;及若裝載在該第二實體節點上之該給定組件之該版本較裝載在該第一實體節點上之該給定組件之一版本為新,用於將該識別資訊作為一組件基本架構儲存在該第一實體節點上之一儲存槽處之構件。
  16. 如請求項15之第一實體節點,其進一步包括:用於確定儲存在該第一實體節點上之該儲存槽處之該識別資訊是否啟動一特定組件之構件;及若該識別資訊啟動該特定組件,用於啟動該特定組件之構件。
  17. 如請求項16之第一實體節點,其中該用於確定儲存在該第一實體節點上之該儲存槽處之該識別資訊是否啟動一特定組件之構件包括:用於確定該識別資訊是否用來識別與該特定組件相同之索引之構件;用於確定該識別資訊是否用來識別與該組件基本架構相同之前置或一較其為長之前置之構件;及用於確定該第一實體節點之一實體是否與該特定組件之一實體相同之構件。
  18. 如請求項16之第一實體節點,其中該用於啟動該組件之構件包括:用於將該特定組件裝載在該第一實體節點上之構件。
  19. 一種一點對點網路之節點,該點對點網路包括複數個實體節點且每一實體節點皆具有複數個儲存槽,該節點包 括:用於將複數個組件與該複數個儲存槽相關聯之構件;用於將每一組件與具有裝載該組件之該儲存槽之該實體節點相關聯之構件;用於將一組該等組件以邏輯方式關聯成為一虛擬節點之構件,其係藉由分派相同固定大小之雜湊鍵前置至該組組件,以使與一雜湊鍵相關聯之一物件且匹配該雜湊鍵前置之若干片段分散地儲存於裝載該組組件之不同實體節點之儲存槽,其中該雜湊鍵藉由將一雜湊函數運用至該物件而取得;用於在與該等組件相關聯之該等實體節點之間通信以確定該等組件之一者是否丟失之構件;及若該等組件之一者丟失,用於啟動一恢復程序之構件。
  20. 如請求項19之一點對點網路之節點,其中該用於啟動一恢復程序之構件包括:用於為一替代組件評估複數個新主機位置之構件;用於針對該複數個新主機位置進行表决之構件;及用於自該等剩餘之組件中之資料建立該替代組件之構件。
TW097105755A 2007-02-20 2008-02-19 在一點對點網路操作一節點的方法、一點對點網路的節點與機器可讀媒體 TWI432968B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US89066107P 2007-02-20 2007-02-20
US12/023,141 US8140625B2 (en) 2007-02-20 2008-01-31 Method for operating a fixed prefix peer to peer network

Publications (2)

Publication Number Publication Date
TW200847689A TW200847689A (en) 2008-12-01
TWI432968B true TWI432968B (zh) 2014-04-01

Family

ID=39707530

Family Applications (2)

Application Number Title Priority Date Filing Date
TW097105753A TWI433504B (zh) 2007-02-20 2008-02-19 在一點對點網路中儲存資料的方法和裝置
TW097105755A TWI432968B (zh) 2007-02-20 2008-02-19 在一點對點網路操作一節點的方法、一點對點網路的節點與機器可讀媒體

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW097105753A TWI433504B (zh) 2007-02-20 2008-02-19 在一點對點網路中儲存資料的方法和裝置

Country Status (4)

Country Link
US (2) US20080201335A1 (zh)
AR (1) AR076255A1 (zh)
TW (2) TWI433504B (zh)
WO (2) WO2008103568A1 (zh)

Families Citing this family (170)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8335889B2 (en) * 2008-09-11 2012-12-18 Nec Laboratories America, Inc. Content addressable storage systems and methods employing searchable blocks
US7992037B2 (en) * 2008-09-11 2011-08-02 Nec Laboratories America, Inc. Scalable secondary storage systems and methods
JP5176835B2 (ja) * 2008-09-29 2013-04-03 ブラザー工業株式会社 監視装置、情報処理装置、情報処理方法並びにプログラム
US8051205B2 (en) * 2008-10-13 2011-11-01 Applied Micro Circuits Corporation Peer-to-peer distributed storage
US20100174968A1 (en) * 2009-01-02 2010-07-08 Microsoft Corporation Heirarchical erasure coding
US8880544B2 (en) 2009-06-26 2014-11-04 Simplivity Corporation Method of adapting a uniform access indexing process to a non-uniform access memory, and computer system
US8478799B2 (en) 2009-06-26 2013-07-02 Simplivity Corporation Namespace file system accessing an object store
US8121993B2 (en) * 2009-10-28 2012-02-21 Oracle America, Inc. Data sharing and recovery within a network of untrusted storage devices using data object fingerprinting
US7716179B1 (en) 2009-10-29 2010-05-11 Wowd, Inc. DHT-based distributed file system for simultaneous use by millions of frequently disconnected, world-wide users
KR101730277B1 (ko) * 2009-11-13 2017-04-25 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카 송신 장치 및 송신 방법
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
EP2993585B1 (en) * 2010-12-27 2017-06-28 Amplidata NV Distributed object storage system comprising performance optimizations
US9436748B2 (en) 2011-06-23 2016-09-06 Simplivity Corporation Method and apparatus for distributed configuration management
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
WO2013078611A1 (zh) * 2011-11-29 2013-06-06 华为技术有限公司 分布式存储系统中的数据处理方法及设备、客户端
WO2013118189A1 (en) * 2012-02-10 2013-08-15 Hitachi, Ltd. Storage device replacement method, and storage sub-system adopting storage device replacement method
US9032183B2 (en) 2012-02-24 2015-05-12 Simplivity Corp. Method and apparatus for content derived data placement in memory
US9043576B2 (en) 2013-08-21 2015-05-26 Simplivity Corporation System and method for virtual machine conversion
EP2863566B1 (en) 2013-10-18 2020-09-02 Université de Nantes Method and apparatus for reconstructing a data block
US8874835B1 (en) 2014-01-16 2014-10-28 Pure Storage, Inc. Data placement based on data properties in a tiered storage device system
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US9612952B2 (en) 2014-06-04 2017-04-04 Pure Storage, Inc. Automatically reconfiguring a storage memory topology
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US10021181B2 (en) * 2014-12-22 2018-07-10 Dropbox, Inc. System and method for discovering a LAN synchronization candidate for a synchronized content management system
EP3138010B1 (en) 2015-01-13 2018-01-10 Hewlett Packard Enterprise Development LP System and method for optimized signature comparisons and data replication
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
US20170060700A1 (en) * 2015-08-28 2017-03-02 Qualcomm Incorporated Systems and methods for verification of code resiliency for data storage
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
TWI584617B (zh) 2015-11-18 2017-05-21 Walton Advanced Eng Inc Auxiliary data transmission
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US11231858B2 (en) 2016-05-19 2022-01-25 Pure Storage, Inc. Dynamically configuring a storage system to facilitate independent scaling of resources
US10691567B2 (en) 2016-06-03 2020-06-23 Pure Storage, Inc. Dynamically forming a failure domain in a storage system that includes a plurality of blades
US11706895B2 (en) 2016-07-19 2023-07-18 Pure Storage, Inc. Independent scaling of compute resources and storage resources in a storage system
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US10303458B2 (en) 2016-09-29 2019-05-28 Hewlett Packard Enterprise Development Lp Multi-platform installer
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
CN110036607B (zh) * 2016-12-16 2022-03-08 瑞典爱立信有限公司 用于在内容分发网络中动态汇集资源的方法和请求路由器
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
US10887176B2 (en) 2017-03-30 2021-01-05 Hewlett Packard Enterprise Development Lp Predicting resource demand in computing environments
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US11010300B2 (en) 2017-05-04 2021-05-18 Hewlett Packard Enterprise Development Lp Optimized record lookups
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
EP3643042A1 (en) * 2017-06-20 2020-04-29 Telefonaktiebolaget LM Ericsson (publ.) Methods and network nodes enabling a content delivery network to handle unexpected surges of traffic
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10587454B2 (en) 2018-01-30 2020-03-10 Hewlett Packard Enterprise Development Lp Object counts persistence for object stores
US10860738B2 (en) 2018-01-30 2020-12-08 Hewlett Packard Enterprise Development Lp Augmented metadata and signatures for objects in object stores
US11126755B2 (en) 2018-01-30 2021-09-21 Hewlett Packard Enterprise Development Lp Object signatures in object stores
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
CN110244904B (zh) * 2018-03-09 2020-08-28 杭州海康威视系统技术有限公司 一种数据存储系统、方法及装置
US10997153B2 (en) 2018-04-20 2021-05-04 Hewlett Packard Enterprise Development Lp Transaction encoding and transaction persistence according to type of persistent storage
US11995336B2 (en) 2018-04-25 2024-05-28 Pure Storage, Inc. Bucket views
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US11243703B2 (en) 2018-04-27 2022-02-08 Hewlett Packard Enterprise Development Lp Expandable index with pages to store object records
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11994723B2 (en) 2021-12-30 2024-05-28 Pure Storage, Inc. Ribbon cable alignment apparatus

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7130921B2 (en) * 2002-03-15 2006-10-31 International Business Machines Corporation Centrally enhanced peer-to-peer resource sharing method and apparatus
KR20040084530A (ko) * 2003-03-28 2004-10-06 엘지전자 주식회사 이동 통신 단말기의 적외선을 이용한 소프트웨어업그레이드 방법
US7870218B2 (en) * 2003-04-09 2011-01-11 Nec Laboratories America, Inc. Peer-to-peer system and method with improved utilization
US7313565B2 (en) * 2004-02-19 2007-12-25 Microsoft Corporation Data overlay, self-organized metadata overlay, and associated methods
US7418454B2 (en) * 2004-04-16 2008-08-26 Microsoft Corporation Data overlay, self-organized metadata overlay, and application level multicasting
FR2878673B1 (fr) * 2004-11-26 2007-02-09 Univ Picardie Jules Verne Etab Systeme et procede de sauvegarde distribuee perenne
US7466810B1 (en) * 2004-12-20 2008-12-16 Neltura Technology, Inc. Distributed system for sharing of communication service resources between devices and users
JP2006319909A (ja) * 2005-05-16 2006-11-24 Konica Minolta Holdings Inc データ通信の方法、ピアツーピア型のネットワーク、および情報処理装置
US8060648B2 (en) * 2005-08-31 2011-11-15 Cable Television Laboratories, Inc. Method and system of allocating data for subsequent retrieval
US9047310B2 (en) * 2006-02-22 2015-06-02 Microsoft Technology Licensing, Llc Reliable, efficient peer-to-peer storage

Also Published As

Publication number Publication date
US8140625B2 (en) 2012-03-20
AR076255A1 (es) 2011-06-01
TWI433504B (zh) 2014-04-01
TW200847689A (en) 2008-12-01
US20080201335A1 (en) 2008-08-21
US20080201428A1 (en) 2008-08-21
TW200843410A (en) 2008-11-01
WO2008103569A1 (en) 2008-08-28
WO2008103568A1 (en) 2008-08-28

Similar Documents

Publication Publication Date Title
TWI432968B (zh) 在一點對點網路操作一節點的方法、一點對點網路的節點與機器可讀媒體
JP5612195B2 (ja) 分散データストレージ
AU2015221548B2 (en) A computer implemented method for dynamic sharding
US20190394284A1 (en) Zone redundant computing services using multiple local services in distributed computing systems
JP5607059B2 (ja) パーティション化した拡張可能で可用性の高い構造化ストレージにおけるパーティション管理
US7590632B1 (en) Method for serializer maintenance and coalescing
US9170892B2 (en) Server failure recovery
KR101752928B1 (ko) 객체 저장부들의 네트워크상의 스웜-기반의 동기화
CN111182067B (zh) 一种基于星际文件系统ipfs的数据写入方法及设备
US20120166394A1 (en) Distributed storage system and method for storing objects based on locations
JP2007520783A (ja) データストレージシステムにおける冗長データ割り当て
JP4417997B2 (ja) オーバーレイネットワークシステム、同システムにおけるオーバーレイネットワーク構築・維持方法、及びプログラム
CN102571991A (zh) 基于多级映射的大规模多副本分布式存储系统及其应用方法
US10592172B2 (en) Application transparent continuous availability using synchronous replication across data stores in a failover cluster
JP2018506123A (ja) ストレージシステムアーキテクチャー
JP2019532440A (ja) 分散型ストレージシステムにアクセスするための方法、関係する装置及び関係するシステム
JP6674099B2 (ja) 情報管理プログラム、情報管理方法、及び情報管理装置
CN111708668B (zh) 集群故障的处理方法、装置及电子设备
CN107908713B (zh) 一种基于Redis集群的分布式动态杜鹃过滤系统及其过滤方法
CN107465706B (zh) 一种基于无线通信网络的分布式数据对象存储装置
Yu et al. Granary: A sharing oriented distributed storage system
CN111752892B (zh) 分布式文件系统及其实现方法、管理系统、设备及介质
US10365923B2 (en) Information processing device, information processing system, and control method
JP2017220148A (ja) 情報管理プログラム、情報管理方法、及び情報管理装置
JP5845298B2 (ja) ノードおよびプログラム

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees