特表2015-512551(P2015-512551A)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エグザブロックス・コーポレーションの特許一覧

特表2015-512551ネットワーク・インフラストラクチャにおけるデータ記憶及び編成を容易にするコンシステント・リング名前空間
<>
  • 特表2015512551-ネットワーク・インフラストラクチャにおけるデータ記憶及び編成を容易にするコンシステント・リング名前空間 図000022
  • 特表2015512551-ネットワーク・インフラストラクチャにおけるデータ記憶及び編成を容易にするコンシステント・リング名前空間 図000023
  • 特表2015512551-ネットワーク・インフラストラクチャにおけるデータ記憶及び編成を容易にするコンシステント・リング名前空間 図000024
  • 特表2015512551-ネットワーク・インフラストラクチャにおけるデータ記憶及び編成を容易にするコンシステント・リング名前空間 図000025
  • 特表2015512551-ネットワーク・インフラストラクチャにおけるデータ記憶及び編成を容易にするコンシステント・リング名前空間 図000026
  • 特表2015512551-ネットワーク・インフラストラクチャにおけるデータ記憶及び編成を容易にするコンシステント・リング名前空間 図000027
  • 特表2015512551-ネットワーク・インフラストラクチャにおけるデータ記憶及び編成を容易にするコンシステント・リング名前空間 図000028
  • 特表2015512551-ネットワーク・インフラストラクチャにおけるデータ記憶及び編成を容易にするコンシステント・リング名前空間 図000029
  • 特表2015512551-ネットワーク・インフラストラクチャにおけるデータ記憶及び編成を容易にするコンシステント・リング名前空間 図000030
  • 特表2015512551-ネットワーク・インフラストラクチャにおけるデータ記憶及び編成を容易にするコンシステント・リング名前空間 図000031
  • 特表2015512551-ネットワーク・インフラストラクチャにおけるデータ記憶及び編成を容易にするコンシステント・リング名前空間 図000032
  • 特表2015512551-ネットワーク・インフラストラクチャにおけるデータ記憶及び編成を容易にするコンシステント・リング名前空間 図000033
  • 特表2015512551-ネットワーク・インフラストラクチャにおけるデータ記憶及び編成を容易にするコンシステント・リング名前空間 図000034
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】特表2015-512551(P2015-512551A)
(43)【公表日】2015年4月27日
(54)【発明の名称】ネットワーク・インフラストラクチャにおけるデータ記憶及び編成を容易にするコンシステント・リング名前空間
(51)【国際特許分類】
   G06F 12/00 20060101AFI20150331BHJP
【FI】
   G06F12/00 545Z
   G06F12/00 531D
【審査請求】未請求
【予備審査請求】未請求
【全頁数】36
(21)【出願番号】特願2015-504769(P2015-504769)
(86)(22)【出願日】2013年4月8日
(85)【翻訳文提出日】2014年12月5日
(86)【国際出願番号】US2013035675
(87)【国際公開番号】WO2013152358
(87)【国際公開日】20131010
(31)【優先権主張番号】13/441,592
(32)【優先日】2012年4月6日
(33)【優先権主張国】US
(81)【指定国】 AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IS,JP,KE,KG,KM,KN,KP,KR,KZ,LA,LC,LK,LR,LS,LT,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT,TZ,UA,UG,US,UZ,VC
(71)【出願人】
【識別番号】514008826
【氏名又は名称】エグザブロックス・コーポレーション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】ハーディン,チャールズ
(72)【発明者】
【氏名】サブラマニアム,スリダー
(72)【発明者】
【氏名】ハント,タッド
(72)【発明者】
【氏名】バラス,フランク,イー
(57)【要約】
より高効率かつ高信頼度のデータの記憶及びアクセスを容易にする、コンピュータ・ネットワーク・インフラストラクチャ内のデータ・オブジェクトを管理するためのコンピュータによって実現される方法及びシステムを提供する。例示的な方法は、記憶リソース毎に物理識別子を確立する工程を含み得る。記憶リソース毎の複数の一意の仮想識別子が物理識別子に基づいて生成される。複数の一意の仮想識別子が、全てのノードにアクセス可能なコンシステント・リング名前空間に記憶される。記憶リソースに記憶される対象のデータ・オブジェクトの位置に関連付けられたオブジェクト識別子が生成される。オブジェクト識別子がコンシステント・リング名前空間にマッピングされる。方法は更に、データ・オブジェクトを位置特定し、データ・オブジェクトにアクセスするためにコンピュータ・ネットワークにおける何れのノードからコンシステント・リング名前空間を経由することも可能にする工程も含み得る。
【特許請求の範囲】
【請求項1】
1つ又は複数の記憶リソースを各ノードが備える複数のノードを備えるコンピュータ・ネットワーク・インフラストラクチャ内のデータ・オブジェクトを管理する方法であって、
記憶リソース毎に物理識別子を確立する工程と、
記憶リソース毎に複数の一意の仮想識別子を前記物理識別子に基づいて生成する工程であって、前記複数の一意の仮想識別子は全てのノードにアクセス可能なコンシステント・リング名前空間に記憶される対象である工程と、
記憶リソースに記憶される対象のデータ・オブジェクトの位置に関連付けられたオブジェクト識別子を生成する工程と、
前記オブジェクト識別子を前記コンシステント・リング名前空間にマッピングする工程と、
前記データ・オブジェクトを位置特定し、前記データ・オブジェクトにアクセスするために前記コンピュータ・ネットワーク・インフラストラクチャ内の何れかのノードから前記コンシステント・リング名前空間を経由することを可能にする工程と
を含む方法。
【請求項2】
請求項1記載の方法であって、前記物理識別子が、汎用一意記憶リソース識別子から生成されたハッシュ値である方法。
【請求項3】
請求項1記載の方法であって、前記物理識別子が、前記記憶リソース製造モデル及びシリアル番号の組み合わせから生成されたハッシュ値である方法。
【請求項4】
請求項1記載の方法であって、前記複数の仮想識別子は、手作業で、又はプログラムで、特定の分布を実現するよう生成される方法。
【請求項5】
請求項4記載の方法であって、前記複数の一意の仮想識別子を生成する工程は、前記記憶リソースに関連付けられた前記物理識別子にハッシュ・チェイニングを適用して、個々の記憶リソースに関連付けられた任意の数の仮想識別子を生成する工程を含む方法。
【請求項6】
請求項4記載の方法であって、前記複数の一意の仮想識別子を生成する工程は、前記物理識別子にオフセットを加えて、前記コンシステント・リング名前空間周りの仮想識別子間の相対距離を生成する方法。
【請求項7】
請求項4記載の方法であって、前記複数の一意の仮想識別子を生成する工程は、前記コンシステント・リング名前空間の特定の比例した所有を実現するために前記コンシステント・リング名前空間上のその他の仮想識別子の間での相対分離を含む方法。
【請求項8】
請求項4記載の方法であって、前記複数の一意の仮想識別子を生成する工程は、前記記憶リソースに関連付けられたネットワーク・アドレスにハッシュ・チェイニングを適用する工程に基づく方法。
【請求項9】
請求項4記載の方法であって、前記複数の一意の仮想識別子を生成する工程は、前記記憶リソースのバス位置及びネットワーク・アドレスの組み合わせにハッシュ・チェイニングを適用する工程に基づく方法。
【請求項10】
請求項4記載の方法であって、前記複数の一意の仮想識別子を生成する工程は、前記物理識別子のような周知の開始値でシードされた疑似ランダム分布に基づく方法。
【請求項11】
請求項1記載の方法であって、前記複数の一意の仮想識別子は、任意の数の一意の仮想識別子が前記コンシステント・リング名前空間にわたってマッピングされるように生成される方法。
【請求項12】
請求項1記載の方法であって、生成された一意の仮想識別子の数は、前記コンピュータ・ネットワーク・インフラストラクチャ内の記憶リソースの数と同じか、又は該数よりも大きい方法。
【請求項13】
請求項1記載の方法であって、単一の記憶リソースに関係した前記コンシステント・リング名前空間上のマッピングされた一意の仮想識別子の数は、前記コンピュータ・ネットワーク・インフラストラクチャにおける記憶リソ―スの相対容量に関連付けられる方法。
【請求項14】
請求項1記載の方法であって、前記コンシステント・リング名前空間上のマッピングされた一意の仮想識別子の数は、前記コンピュータ・ネットワーク・インフラストラクチャにおける記憶リソ―スの性能に関係する方法。
【請求項15】
請求項1記載の方法であって、前記コンシステント・リング名前空間上のマッピングされた一意の仮想識別子の数は、データ・オブジェクトを記憶するための前記記憶リソースの相対使用可能容量に基づいて経時的に変更される方法。
【請求項16】
請求項1記載の方法であって、データ・オブジェクト識別子は、前記データから生成されたハッシュ値である方法。
【請求項17】
請求項1記載の方法であって、データ・オブジェクト・レプリカの前記記憶リソースは、前記コンシステント・リング名前空間における前記マッピングされた仮想識別子の位置に基づいて書き込まれる方法。
【請求項18】
請求項17記載の方法であって、複数のデータ・オブジェクト・レプリカを生成し、リングウォークを行って別々の仮想識別子を見つけることにより、別々の記憶リソースに、前記生成された複数のデータ・オブジェクト・レプリカを記憶する工程を更に含む方法。
【請求項19】
請求項18記載の方法であって、前記記憶リソースは、前記データ・オブジェクト・レプリカについて前記コンピュータ・ネットワーク・インフラストラクチャにおいて別々のノードを使用する旨の選好に基づいて選択される方法。
【請求項20】
請求項18記載の方法であって、前記記憶リソースは、前記データ・オブジェクト・レプリカについて同じノードにおいて別々の記憶リソースを使用する旨の選好に基づいて選択される方法。
【請求項21】
請求項18記載の方法であって、前記記憶リソースは、データ・オブジェクト・レプリカを首尾良く記憶することが可能でない場合に前記リングウォークの順序において飛ばされる方法。
【請求項22】
請求項17記載の方法であって、複数のデータ・オブジェクト・レプリカを生成し、別々の記憶リソースに前記生成された複数のデータ・オブジェクト・レプリカを記憶する工程を更に含む方法。
【請求項23】
請求項22記載の方法であって、データ・オブジェクト・レプリカの数は、前記コンピュータ・ネットワーク・インフラストラクチャのポリシー要件又は記憶リソースの数に基づいた複製因子に対応する方法。
【請求項24】
請求項22記載の方法であって、前記データ・オブジェクト・レプリカの数は、前記コンピュータ・ネットワークのポリシー又は構成に基づいて動作中に動的に適合させることが可能な複製因子に対応する方法。
【請求項25】
請求項1記載の方法であって、前記コンシステント・リング名前空間の経由を可能にする工程は、前記データ・オブジェクトを取り出すための記憶リソースを決定するために記憶リソース識別子を、コンシステント・リング名前空間を通じてたどる工程を含む方法。
【請求項26】
請求項1記載の方法であって、記憶リソースが前記コンピュータ・ネットワーク・インフラストラクチャに追加されると、前記コンシステント・リング名前空間内の一意の仮想識別子を再マッピングする工程を更に含む方法。
【請求項27】
請求項1記載の方法であって、何れかの記憶リソースの利用可能な容量が変更されると、前記コンシステント・リング名前空間内の一意の仮想識別子を再マッピングする工程を更に含む方法。
【請求項28】
請求項1記載の方法であって、記憶リソースが前記コンピュータ・ネットワーク・インフラストラクチャから除去される場合、前記コンシステント・リング名前空間内の一意の仮想識別子の除去を更に含む方法。
【請求項29】
請求項28記載の方法であって、少なくとも1つのノード又は少なくとも1つの記憶リソースの追加又は除去に鑑みて、前記コンシステント・リング名前空間が変更された後に、別々の記憶リソースにデータ・オブジェクトを再配分する工程を更に含む方法。
【請求項30】
請求項29記載の方法であって、現在の記憶リソースから新たな記憶リソースへのデータ・オブジェクトの再配分は、再マッピングされた前記コンシステント・リング名前空間に基づく方法。
【請求項31】
請求項29記載の方法であって、データ・オブジェクトが、新たな利用可能な記憶リソースに複製され、別のデータ・オブジェクト・レプリカを記憶リソースから除去することが可能であり、前記データ・オブジェクトの複製因子がなお維持される方法。
【請求項32】
請求項29記載の方法であって、記憶リソースが前記コンピュータ・ネットワーク・インフラストラクチャから除去されると、前記データ・オブジェクトが、リングウォークの順序で、前記コンピュータ・ネットワーク・インフラストラクチャにおいてなお利用可能な後続の記憶リソースに複製される方法。
【請求項33】
請求項29記載の方法であって、性能及び再構成の向上のために前記コンピュータ・ネットワーク・インフラストラクチャにおける記憶リソースの予備容量を使用するために前記複製因子を超え得る方法。
【請求項34】
1つ又は複数の記憶リソースを各ノードが備える複数のノードを備えるコンピュータ・インフラストラクチャ内のデータ・オブジェクトを管理するシステムであって、
記憶リソース毎に物理識別子を確立するよう構成された物理識別子モジュールと、
記憶リソース毎に複数の一意の仮想識別子を前記物理識別子に基づいて生成する工程を行うよう構成された仮想識別子モジュールであって、前記複数の一意の仮想識別子は全てのノードにアクセス可能なコンシステント・リング名前空間に記憶される対象である仮想識別子モジュールと、
記憶リソースに記憶される対象のデータ・オブジェクトの位置に関連付けられたオブジェクト識別子を生成するよう構成されたオブジェクト識別子モジュールと、
前記オブジェクト識別子を前記コンシステント・リング名前空間にマッピングするよう構成されたマッピング・モジュールと、
前記データ・オブジェクトを位置特定し、前記データ・オブジェクトにアクセスするために、前記コンピュータ・ネットワーク・インフラストラクチャにおける何れのノードからも前記コンシステント・リング名前空間を経由する工程を可能にするよう構成された経由モジュールと
を備えるシステム。
【請求項35】
請求項34記載のシステムであって、前記物理識別子が、汎用一意記憶リソース識別子から生成されたハッシュ値であるシステム。
【請求項36】
請求項34記載のシステムであって、前記物理識別子が、前記記憶リソース製造モデル及びシリアル番号の組み合わせから生成されたハッシュ値であるシステム。
【請求項37】
請求項34記載のシステムであって、前記複数の仮想識別子は、手作業で、又はプログラムで、特定の分布を実現するよう生成されるシステム。
【請求項38】
請求項37記載のシステムであって、前記複数の一意の仮想識別子を生成する工程は、前記記憶リソースに関連付けられた前記物理識別子にハッシュ・チェイニングを適用して、個々の記憶リソースに関連付けられた任意の数の仮想識別子を生成する工程を含むシステム。
【請求項39】
請求項37記載のシステムであって、前記複数の一意の仮想識別子を生成する工程は、前記物理識別子にオフセットを加えて、前記コンシステント・リング名前空間周りの仮想識別子間の相対距離を生成するシステム。
【請求項40】
請求項37記載のシステムであって、前記複数の一意の仮想識別子を生成する工程は、前記コンシステント・リング名前空間の特定の比例した所有を実現するために前記コンシステント・リング名前空間上のその他の仮想識別子の間での相対分離を含むシステム。
【請求項41】
請求項37記載のシステムであって、前記複数の一意の仮想識別子を生成する工程は、前記記憶リソースに関連付けられたネットワーク・アドレスにハッシュ・チェイニングを適用する工程に基づくシステム。
【請求項42】
請求項37記載のシステムであって、前記複数の一意の仮想識別子を生成する工程は、前記記憶リソースのバス位置及びネットワーク・アドレスの組み合わせにハッシュ・チェイニングを適用する工程に基づくシステム。
【請求項43】
請求項37記載のシステムであって、前記複数の一意の仮想識別子を生成する工程は、前記物理識別子のような周知の開始値でシードされた疑似ランダム分布に基づくシステム。
【請求項44】
請求項34記載のシステムであって、前記複数の一意の仮想識別子は、任意の数の一意の仮想識別子が前記コンシステント・リング名前空間にわたってマッピングされるように生成されるシステム。
【請求項45】
請求項34記載のシステムであって、生成された一意の仮想識別子の数は、前記コンピュータ・ネットワーク・インフラストラクチャ内の記憶リソースの数と同じか、又は該数よりも大きいシステム。
【請求項46】
請求項34記載のシステムであって、単一の記憶リソースに関連した前記コンシステント・リング名前空間上のマッピングされた一意の仮想識別子の数は、前記コンピュータ・ネットワーク・インフラストラクチャにおける記憶リソ―スの相対容量に関連付けられるシステム。
【請求項47】
請求項34記載のシステムであって、前記コンシステント・リング名前空間上のマッピングされた一意の仮想識別子の数は、前記コンピュータ・ネットワーク・インフラストラクチャにおける記憶リソ―スの性能に関係するシステム。
【請求項48】
請求項34記載のシステムであって、前記コンシステント・リング名前空間上のマッピングされた一意の仮想識別子の数は、データ・オブジェクトを記憶するための記憶リソースの相対容量に基づいて経時的に変更されるシステム。
【請求項49】
請求項34記載のシステムであって、データ・オブジェクト識別子は、前記データから生成されたハッシュ値であるシステム。
【請求項50】
請求項34記載のシステムであって、データ・オブジェクト・レプリカの前記記憶リソースは、前記コンシステント・リング名前空間における前記マッピングされた仮想識別子の位置に基づいて書き込まれるシステム。
【請求項51】
請求項50記載のシステムであって、複数のデータ・オブジェクト・レプリカを生成し、リングウォークを行って別々の仮想識別子を見つけることにより、別々の記憶リソースに、前記生成された複数のデータ・オブジェクト・レプリカを記憶する工程を更に含むシステム。
【請求項52】
請求項51記載のシステムであって、前記記憶リソースは、前記データ・オブジェクト・レプリカについて前記コンピュータ・ネットワーク・インフラストラクチャにおいて別々のノードを使用する旨の選好に基づいて選択されるシステム。
【請求項53】
請求項51記載のシステムであって、前記記憶リソースは、前記データ・オブジェクト・レプリカについて同じノードにおいて別々の記憶リソースを使用する旨の選好に基づいて選択されるシステム。
【請求項54】
請求項51記載のシステムであって、前記記憶リソースは、データ・オブジェクト・レプリカを首尾良く記憶することが可能でない場合に前記リングウォークの順序において飛ばされるシステム。
【請求項55】
請求項51記載のシステムであって、データ・オブジェクト・レプリカの数は、前記コンピュータ・ネットワーク・インフラストラクチャのポリシー要件又は記憶リソースの数に基づいた複製因子に対応するシステム。
【請求項56】
請求項51記載のシステムであって、データ・オブジェクト・レプリカの数は、
前記コンピュータ・ネットワークのポリシー又は構成に基づいて動作中に動的に適合させることが可能な複製因子に対応するシステム。
【請求項57】
請求項34記載のシステムであって、前記コンシステント・リング名前空間の経由を可能にする工程は、前記データ・オブジェクトを取り出すための記憶リソースを決定するために記憶リソース識別子までコンシステント・リング名前空間を通じてたどる工程を含むシステム。
【請求項58】
請求項34記載のシステムであって、前記記憶リソースが前記コンピュータ・ネットワーク・インフラストラクチャに追加されると、前記コンシステント・リング名前空間内の一意の仮想識別子を再マッピングするよう構成された再マッピング・モジュールを更に備えるシステム。
【請求項59】
請求項58記載のシステムであって、前記再マッピング・モジュールは、何れかの記憶リソースの利用可能な容量が変更されると、前記コンシステント・リング名前空間内の一意の仮想識別子を再配分するよう構成されたシステム。
【請求項60】
請求項58記載のシステムであって、前記再マッピング・モジュールは、前記記憶リソースが前記コンピュータ・ネットワーク・インフラストラクチャから除去されると、前記コンシステント・リング名前空間内の一意の仮想識別子を除去するよう構成されたシステム。
【請求項61】
請求項60記載のシステムであって、前記再マッピング・モジュールは、少なくとも1つのノード又は少なくとも1つの記憶リソースの追加又は除去に鑑みて、前記コンシステント・リング名前空間が変更された後に、別々の記憶リソースにデータ・オブジェクトを再配分するよう構成されたシステム。
【請求項62】
請求項61記載のシステムであって、現在の記憶リソースから新たな記憶リソースへのデータ・オブジェクトの再配分は、再マッピングされた前記コンシステント・リング名前空間に基づくシステム。
【請求項63】
請求項61記載のシステムであって、データ・オブジェクトが、新たな利用可能な記憶リソースに複製された後、別のデータ・オブジェクト・レプリカを記憶リソースから除去することが可能であり、前記データ・オブジェクトの複製因子がなお維持されるシステム。
【請求項64】
請求項61記載のシステムであって、記憶リソースが前記コンピュータ・ネットワーク・インフラストラクチャから除去されると、前記データ・オブジェクトが、リングウォークの順序で、前記コンピュータ・ネットワーク・インフラストラクチャにおいてなお利用可能な後続の記憶リソースに複製されるシステム。
【請求項65】
請求項61記載のシステムであって、性能及び再構成の向上のために前記コンピュータ・ネットワーク・インフラストラクチャにおける記憶リソースの予備容量を使用するために前記複製因子を超え得るシステム。
【請求項66】
命令を記憶させた、一時的でないプロセッサ読み取り可能な媒体であって、1つ又は複数のプロセッサによって実行されると、前記1つ又は複数のプロセッサに、
記憶リソース毎に物理識別子を確立させ、
記憶リソース毎に複数の一意の仮想識別子を前記物理識別子に基づいて生成する工程であって、前記複数の一意の仮想識別子は全てのノードにアクセス可能なコンシステント・リング名前空間に記憶される対象である工程を行わせ、
記憶リソースに記憶される対象のデータ・オブジェクトの位置に関連付けられたオブジェクト識別子を生成させ、
前記オブジェクト識別子を前記コンシステント・リング名前空間にマッピングさせ、前記データ・オブジェクトを位置特定し、前記データ・オブジェクトにアクセスするために前記コンピュータ・ネットワーク・インフラストラクチャ内の何れかのノードから前記コンシステント・リング名前空間を経由することも可能にさせる、一時的でないプロセッサ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は一般に、リソースの編成に関し、特に、コンシステント・リング名前空間を利用するコンピューティング・ネットワーク・インフラストラクチャにおけるデータの記憶及び編成に関する。
【背景技術】
【0002】
本セクションにおいて説明する手法は、追求し得るが、必ずしも、先行して考え出されたか、又は追求された訳でない手法である。したがって、別途明記しない限り、本セクションにおいて説明する手法の何れも、単に本セクションに含められていることにより、従来技術としてみなされると解すべきでない。
【0003】
コンピューティング・システムでは、データは種々の態様で記憶され、取り出される。過去の手法の一部には、データベースにおいて使用されるリレーショナル・データベース及びファイル・システムにおいて使用される階層的名前空間がある。
【0004】
別の手法は、全てのオブジェクトに、一意の識別子が与えられ、上記オブジェクトに関連付けられたデータを取り出すために上記識別子が使用されるオブジェクト記憶インタフェースの「フラットな」名前空間であり得る。前述のタイプのインタフェースは、データを取り出すためにいくつかのクライアントがオブジェクト識別子を計算すればよいに過ぎない分散コンピューティング・システムにおいて一般的である。
【発明の概要】
【発明が解決しようとする課題】
【0005】
オブジェクト・ベースの記憶システムは、記憶及び取り出しの、最も空間効率が高い態様で、オブジェクトの属性を定義し、オブジェクトを編成することが可能である。その場合、前述のオブジェクトはコンピュータ・ネットワーク内の複数のノード間で配分させる。既存の手法は、ネットワーク化されたノードの名前空間を介してデータ・オブジェクト位置を経由する簡単かつ高速なやり方を提供するものでない。通常、データ・オブジェクトのアクセスには、ノード(例えば、ハード・ドライブ)のルックアップ及び特定のノード上に記憶されたデータ・オブジェクトのルックアップを含む2つの動作が必要である。前述の手法は、特にコンピューティング・ネットワークに多数のノードが関係する場合に、時間がかかり、非効果的である。
【課題を解決するための手段】
【0006】
本概要は、詳細な説明において以下に更に説明する単純な形態における概念の選択肢を紹介するために記載している。本概要は、特許請求の範囲記載の主題の主要な構成又は必須の構成を識別することを意図するものでなく、特許請求の範囲記載の範囲を定めるうえでの助けとして使用されることを意図するものでもない。
【0007】
本明細書及び特許請求の範囲記載の種々の実施例及び原理によれば、従来技術の課題は、高効率並びに高信頼度のデータの記憶及びアクセスを容易にするコンピュータ・ネットワーク・インフラストラクチャ内のデータ・オブジェクトを管理する方法及びシステムによって解決される。
【0008】
一局面によれば、複数のノードを含むコンピュータ・ネットワーク・インフラストラクチャ内のデータ・オブジェクトを管理する方法を提供する。ネットワークの各ノードは1つ又は複数の記憶リソースを含み得る。方法は記憶リソース毎に物理識別子を確立する工程を含み得る。記憶リソース毎の複数の一意の仮想識別子は物理識別子に基づいて生成される。複数の一意の仮想識別子はノード全てについてアクセス可能なコンシステント・リング名前空間に記憶される。記憶リソースに記憶される対象のデータ・オブジェクトの位置に関連付けられたオブジェクト識別子も生成される。オブジェクト識別子はコンシステント・リング名前空間にマッピングされる。方法は更に、データ・オブジェクトを位置特定し、データ・オブジェクトにアクセスするためにコンピュータ・ネットワーク内の何れかのノードからもコンシステント・リング名前空間を経由することを可能にする工程を更に含み得る。
【0009】
種々の実施例によれば、複数の一意の仮想識別子の生成は、記憶リソースに関連付けられた物理識別子にコンシステント・ハッシングを適用する工程を含み得る。物理識別子は、少なくとも記憶リソース識別子のハッシュ関数であり得る。データ・オブジェクト識別子は、データ長及びデータのハッシュ関数であり得る。生成された一意の仮想識別子の数は、コンピュータ・ネットワーク・インフラストラクチャ内の記憶リソースと同じか、又はそれよりも多い。単一のノードに関する生成された一意の仮想識別子の数も、ノードの記憶リソースの相対サイズに関連付けることが可能である。コンシステント・リング名前空間は、1つ又は複数のデータ・オブジェクト・レプリカ、及び記憶リソースの関連付けられた一意の仮想識別子に関連付けることが可能である。
【0010】
方法は、更に、複数のデータ・オブジェクト・レプリカを生成し、コンピュータ・ネットワーク・インフラストラクチャにおける別々のノード上の別々の記憶リソースにそれらを記憶する工程を含み得る。データ・オブジェクト・レプリカの数は複製因子に対応し得、複製因子はコンピュータ・ネットワーク・インフラストラクチャのポリシー要件又は記憶リソースの数に基づいて適合し得る。コンシステント・リング名前空間を経由することを可能にする工程は、データ・オブジェクトの位置を判定するために、コンシステント・リング名前空間を介して記憶リソース識別子へたどる工程を含み得る。複数の一意の仮想識別子は、任意の数の一意の仮想識別子をコンシステント・リング名前空間にわたって配分させるようなやり方で生成することが可能である。方法は更に、ノードがコンピュータ・ネットワーク・インフラストラクチャに追加され、又はコンピュータ・ネットワーク・インフラストラクチャから除去された場合に、又は、何れかの記憶リソースの利用可能な容量が変更された場合に、コンシステント・リング名前空間内で、一意の仮想識別子を再配分させる工程を更に含み得る。方法は更に、少なくとも1つのノード又は少なくとも1つの記憶リソースの追加又は除去に鑑みてリング名前空間が変更された後に、別々のノードにデータ・オブジェクトを再配分させる工程も含み得る。
【0011】
別の局面によれば、複数のノードを備えるコンピュータ・ネットワーク・インフラストラクチャ内のデータ・オブジェクトを管理するシステムが提供される。システムは、記憶リソース毎に物理識別子を確立するよう構成された物理識別子モジュールと、全てのノードにアクセス可能なコンシステント・リング名前空間に記憶された一意の複数の仮想識別子により、記憶リソース毎の一意の複数の仮想識別子を物理識別子に基づいて生成するよう構成された仮想識別子モジュールとを含み得る。システムは更に、記録リソースに記憶される対象のデータ・オブジェクトの位置に関連付けられたオブジェクト識別子を生成するよう構成されたオブジェクト識別子モジュールを更に含み得る。システムは、コンシステント・リング名前空間にオブジェクト識別子をマッピングするよう構成されたマッピング・モジュールを含み得る。システムは更に、データ・オブジェクトを位置特定し、データ・オブジェクトにアクセスするためにコンピュータ・ネットワーク内の何れのノードからもコンシステント・リング名前空間を経由することを可能にするよう構成された経由モジュールも含み得る。
【0012】
種々の実施例によれば、システムは、複数のデータ・オブジェクト・レプリカを生成し、別々の記憶リソースに記憶するよう構成されたレプリカ生成器を更に含み得る。更に、システムは、ノードがコンピュータ・ネットワーク・インフラストラクチャに追加され、又はコンピュータ・ネットワーク・インフラストラクチャから除去された場合に、又は、記憶リソースの利用可能な容量が変更された場合に、コンシステント・リング名前空間内で、一意の仮想識別子を再配分させるよう構成された再配分モジュールを含み得る。
【0013】
更に別の局面によれば、記憶させた命令を有するプロセッサ読み取り可能な媒体を提供する。命令は、1つ又は複数のプロセッサによって実行されると、1つ又は複数のプロセッサに、記憶リソース毎に物理識別子を確立させ、ノード全てにアクセス可能なコンシステント・リング名前空間に記憶された複数の一意の仮想識別子により、記憶リソース毎の複数の一意の仮想識別子を物理識別子に基づいて生成させ、記憶リソースに記憶される対象のデータ・オブジェクトの位置に関連付けられたオブジェクト識別子を生成させ、オブジェクト識別子をコンシステント・リング名前空間にマッピングさせ、データ・オブジェクトを位置特定し、データ・オブジェクトにアクセスするためにコンピュータ・ネットワーク内の何れかのノードからもコンシステント・リング名前空間を経由することを可能にさせ得る。
【0014】
上記及び関連した目的を達成するために、1つ又は複数の局面は、以降、詳細に説明し、特許請求の範囲において特定した構成を含む。以下の明細書、特許請求の範囲、及び図面は1つ又は複数の局面の特定の例証的な構成を詳細に記載する。しかし、前述の構成は、種々の局面の原理を使用し得る種々のやり方のうちのいくつかを示しているに過ぎず、本明細書は、前述の局面及び均等物全てを含めることが意図されている。
【0015】
実施例は、添付図面の図において限定でなく、例示の目的で例証しており、同じ参照符号は同様な構成要素を示している。
【図面の簡単な説明】
【0016】
図1】コンピュータ・ネットワーク・インフラストラクチャの単純化された構造を示す図である。
図2】コンピュータ・ネットワーク・インフラストラクチャの単純化された構造を示す図である。
図3】物理リング名前空間、及びコンシステント・リング名前空間のグラフィカル表現を示す図である。
図4】データ・オブジェクト・レプリカを記憶するための場所と、物理名前空間及びコンシステント・リング名前空間とのグラフィカル表現を示す図である。
図5】単一のノード内の別々の記憶リソースにデータ・オブジェクト・レプリカを記憶する単純化された処理を示す図である。
図6】別々の複数のノード内の別々の記憶リソースにデータ・オブジェクト・レプリカを記憶する単純化された処理を示す図である。
図7】1つのノードへの書き込み処理中に記憶リソースを飛ばす例示的な単純化された処理を示す図である。
図8】複数のノードへの書き込み処理中に記憶リソースを飛ばす例示的な単純化された処理を示す図である。
図9】コンシステント・リング名前空間において所有の変更をもたらす新たな記憶リソースの追加の例示的な表現を示す図である。
図10】コンシステント・リング名前空間において所有の変更をもたらす記憶リソースの除去の例示的な表現を示す図である。
図11】名前空間マネージャを示す図である。
図12】コンピュータ・ネットワーク・インフラストラクチャ内のデータ・オブジェクトを管理する方法を示すプロセス・フロー図である。
図13】本明細書及び特許請求の範囲記載の方法論の何れかの1つ又は複数をマシンに行わせるための命令の組を実行することが可能なコンピュータ・システムの例示的な電子的形態におけるマシンのコンピューティング装置の概略図表現を示す図である。
【発明を実施するための形態】
【0017】
以下の詳細な説明は、詳細な説明の一部を構成する添付図面への参照を含む。図面は、例示的な実施例による例証を示す。「実施例」としても本明細書及び特許請求の範囲において表す前述の例示的な実施例は、当業者が本願の主題を実施することを可能にするために十分詳細に説明している。実施例を組み合わせることが可能であり、他の実施例を利用することが可能であり、又は、特許請求の範囲記載の範囲から逸脱しない限り、構造的な変更、論理的な変更、及び電気的な変更を行うことが可能である。したがって、以下の詳細な説明は限定的な意味で解されないものであり、その範囲は、特許請求の範囲及びその均等物によって定められる。
【0018】
本明細書及び特許請求の範囲記載の手法及び原理は、コンピュータ・ネットワーク・インフラストラクチャ内のデータ・オブジェクトを管理する、コンピュータによって実現される方法及びシステムに関する。コンピュータ・ネットワーク・インフラストラクチャは、種々のデータ・オブジェクトを記憶し、他のノードからのそれらへのアクセスを可能にするための記憶リソースをそれぞれが有する複数のノードを含む。更に、単一のノードの記録リソースは、1つ又は複数のハード・ドライブ、ソリッド・ステート・ドライブ、又は、RAM(ランダムアクセス・メモリ)、フラッシュ、若しくはROM(リードオンリ・メモリ)などの他のメモリ装置を含み得る。各データ・オブジェクトには、当該オブジェクトへの経路を経由することを可能にする特定のノードの名前空間に記憶することが可能な一意の識別子が与えられ得る。
【0019】
本開示は、コンピュータ・ネットワーク・インフラストラクチャにおいて所望のデータ・オブジェクトの記憶リソースを位置特定するためにコンシステント・リング名前空間を各ノードが使用することを可能にするノード全ての上にコンシステント・リング名前空間を提供する。コンシステント・リング名前空間は、クラスタ内の単一であり、かつ共通の名前空間であり、前述のクラスタの構成員であるノード全てについてデータ・オブジェクトの位置を指定する役目を担う。本明細書及び特許請求の範囲記載の種々の実施例によれば、コンシステント・リング名前空間は、名前空間に記憶された複数のデータ・オブジェクト識別子がデータ・オブジェクト及びその位置を識別し得るように、種々のノード及びそれらの対応する記憶リソースを指定するよう仮想識別子によって分離し得る。よって、データ・オブジェクトを位置特定するために(すなわち、コンシステント・リング名前空間を介してデータ・オブジェクト識別子をルックアップするために)必要な単一の動作のみが存在している。これは、別のノードに記憶された所望のデータ・オブジェクトを何れのモードも潔く位置特定することを可能にする。すなわち、コンシステント・リング名前空間が提供され、ネットワーク内の全てのノードにアクセス可能であり、各ノードは、他のノードに配置されたデータ・オブジェクトをルックアップし、他のノードに配置されたデータ・オブジェクトにアクセスし得る。よって、データの位置を求めて単一のノードを調べる必要はなく、クラスタの分散ルックアップ・アルゴリズムが提供される。
【0020】
オブジェクト識別子は、「コンシステント・ハッシング」の原理に基づいて生成される。一般に、コンシステント・ハッシングは、アレイ・スロットの数の変動により、K/n個の鍵のみをマッピングし直させ、Kが鍵の数であり、nがスロットの数である特別な種類のハッシングである。これにより、メモリ・リソースの数又は容量などのパラメータの組が経時的に変動する状態においてコンシステント・ハッシングが理想的になる。同様に、これにより、ネットワーク内のノード全ての識別子の集中化された状態を維持する必要がなくなり、データ・アクセス速度を増加させることが可能である。
【0021】
コンシステント・ハッシング結果は、コンピュータ・ネットワーク・インフラストラクチャにおける記憶リソース、ノード、及びデータ・オブジェクトを見つけるサーチ・アルゴリズムを容易にするようリング上にマッピングし得る。例えば、「時計回り」又は「反時計回り」のサーチにより、コンシステント・リング名前空間を使用して、予測可能な順序で記憶リソース全てが見つかる。これにより、全てのノードが、同じ「リングウォーク(ringwalk)」アルゴリズムを使用し、コンシステント・リング名前空間上の同じ順序で識別子を位置特定することが可能になる。しかし、何れのタイプの名前空間を使用することも可能であり得る。
【実施例】
【0022】
以下では、複数のノードを備えるコンピュータ・ネットワーク・インフラストラクチャ内のデータ・オブジェクトの管理に関する種々の実施例の詳細な説明を提供する。
【0023】
次に図面を参照するに、図1は、種々の実施例によるコンピュータ・ネットワーク・インフラストラクチャ100の単純化された構造を示す。コンピュータ・ネットワーク・インフラストラクチャ100は、複数のノード120を相互接続するネットワーク110を含む。同様に、各ノード120は、データ・オブジェクトを記憶するために複数の記憶リソース130を含み得る。各ノード120内のリソースを編成するために物理名前空間を使用することが可能である。各ノード120は、ネットワーク・アドレスを維持する何れかの適切なネットワーキング・エレメントであり得、他のノード120にデータ・オブジェクトを記憶し、他のノード120とデータ・オブジェクトを共有することが可能である。一例では、ノード120は、コンピュータ、サーバ、ラップトップ、タブレット・コンピュータ、ポータブル・コンピューティング装置、PDA(携帯情報端末)、ハンドヘルド型セルラ電話機、携帯電話機、スマートフォン、シン・クライアント、又はネットワーク110を介したデータの通信に適した何れかの他の電子コンピューティング装置を表し得る。更に、各ノード120は、ハード・ディスク・ドライブ、SSD、RAM、ROM、フラッシュ・メモリ等などの複数の記憶リソース130を含み得る。
【0024】
ネットワーク110は、インターネット、又は装置間でデータを通信することができる何れかの他のネットワークを含み得る。適切なネットワークには、例えば、ローカル・イントラネット、PAN(パーソナル・エリア・ネットワーク)、LAN(ローカル・エリア・ネットワーク)、WAN(ワイド・エリア・ネットワーク)、MAN(メトロポリタン・エリア・ネットワーク)、仮想プライベート・ネットワーク(VPN)、ストレージ・エリア・ネットワーク(SAN)、フレーム・リレイ接続、高度インテリジェント・ネットワーク(AIN)接続、同期光ネットワーク(SONET)接続、ディジタルT1、T3、E1、又はE3回線、ディジタル・データ・サービス(DDS)接続、DSL(ディジタル加入者線)接続、イーサネット(登録商標)接続、ISDN(統合サービス・ディジタル・ネットワーク)回線、V.90、V.34、若しくはV.34bisアナログ・モデム接続などのダイアルアップ・ポート、ケーブル・モデム、ATM(非同期転送モード)接続、又はFFDI(ファイバ分散データ・インタフェース)若しくはCDDI(銅線分散データ・インタフェース)接続のうちの何れか1つ若しくは複数を含み、又は、上述のうちの何れか1つ若しくは複数とインタフェースし得る。更に、通信は、WAP(無線アプリケーション・プロトコル)、GPRS(汎用パケット無線サービス)、GSM(登録商標)(ジーエスエム)、CDMA(符号分割多元アクセス)若しくはTDMA(時分割多元アクセス)、セルラ電話機ネットワーク、GPS(全地球測位システム)、CDPD(セルラ・ディジタル・パケット・データ)、RIM(リサーチ・イン・モーション社)のデュプレックス・ページング・ネットワーク、ブルートゥース(登録商標)無線、又はIEEE802.11ベースの無線周波数ネットワークを含む種々の無線ネットワークの何れかへのリンクも含み得る。
【0025】
図2は、種々の実施例による、コンピュータ・ネットワーク・インフラストラクチャ100の単純化された構造を示す。図に示すように、複数の記憶リソース130を有する各ノード120は、物理名前空間200と関連付けることが可能である。物理名前空間200は、各ノード120内の記憶リソースを編成するために使用される。物理名前空間200はリングとして編成することが可能である一方、各要素は対応する記憶リソースの位置を指定するための記憶識別子205を表し得る。
【0026】
オブジェクト識別子は、記憶されたデータ・オブジェクト全てについて、コンシステント名前空間210がハッシュ鍵・値対を提供するようなハッシュ関数によって計算される。一例では、オブジェクト識別子は
【0027】
【表1】
のように表し得る。
【0028】
種々の実施例では、何れの暗号ハッシング・アルゴリズムもハッシュ関数として使用することが可能である。例えば、以下に説明するコンシステント・ハッシングに適した分布をもたらすので、MD5又はSHA−1暗号アルゴリズムを使用することが可能である。
【0029】
図2を引き続き参照するに、コンシステント名前空間210は、ノード120全ての記憶リソース130全てを管理するために利用することが可能であり、データ・オブジェクトの位置特定、アドレス指定、アクセス、データ・オブジェクトの下での動作の実行等の役目を担い得る。
【0030】
コンシステント名前空間210は、リング名前空間として実現することが可能である。コンシステント名前空間210の要素は仮想識別子220である。一連の仮想識別子215が単一の記憶リソース130から導き出される。一連の仮想識別子215のうちの仮想識別子220はそれぞれ、以下に説明するように仮想識別子のハッシュ値に基づいてコンシステント・リング210にマッピングされる。よって、コンシステント名前空間210は少なくとも1つのノード120によってアクセスすることが可能であり、よって、前述のノード120は、オブジェクト識別子を判定し、データ・オブジェクト・レプリカを判定するための種々のマッピング機能を行い、又は、必要に応じて、何れかの他のアルゴリズム・ルックアップ動作を行うことが可能である。前述のアルゴリズムはコンシステント名前空間210を経由するためであり、何れかのノード120内の実際のオブジェクトの記憶と無関係であるということを特筆したい。
【0031】
上述のように、コンシステント名前空間210上の仮想識別子220は、記憶リソース130の物理識別子に適用されるハッシング・アルゴリズムの助けによって生成することが可能である。前述の処理は次のように表すことが可能である。
【0032】
記憶リソース130の位置は、
【0033】
【表2】
のアルゴリズムにより、記憶リソース130の一意の識別子から鍵を生成することにより、コンシステント名前空間210にマッピングされる。ここで、disk.uuid及びdisk.uuidlengthは記憶リソースの汎用一意識別子を表す。
【0034】
これは暗号ハッシング関数であるので、コンシステント・リング名前空間上の位置を予測することは可能でなく、よって、識別子は、コンシステント・リング名前空間上で互いに比較的近いことがあり得る。前述の不確実性を補うために、「仮想」識別子の連鎖を生成することが可能であり、「仮想」識別子の連鎖は、リング名前空間上の特定の空間の所有を確立することが可能である。仮想識別子は、
【0035】
【表3】
のハッシュ関数によって表し得る。
【0036】
よって、仮想識別子は、全て、物理識別子に基づいたハッシュ関数の連鎖として生成される。統計的には、より多くの識別子が生成されることにより、記憶リソース毎の適当な量に、コンシステント・リング名前空間の所有が「平滑化される」はずである。
【0037】
図3は、例示的な実施例による、物理名前空間300及びコンシステント名前空間210のグラフィカル表現を示す図である。前述の図に示すように、仮想識別子220は、識別子のコンシステントな分布をもたらすようコンシステント名前空間210にわたってランダムに分布し得る。一意の仮想識別子は、その数がネットワーク110における記憶リソースの数と同じか又はそれより多くなるように生成される。単一のノード120に関する生成された一意の仮想識別子の数は更に、このノード120の記憶リソース130の相対サイズに関連付けることが可能である。
【0038】
種々の実施例によれば、複数の仮想識別子Virtual.IDiを使用することにより、図3に示すように、物理識別子の仮想識別子220との時計回り(又は反時計回り)の比較を使用した、コンシステント名前空間210におけるデータ・オブジェクト310のサーチが可能になる。
【0039】
一般に、データ・オブジェクト・レプリカの位置をサーチするための選択肢が2つ存在している。第1の選択肢は、コンシステント・リング名前空間にわたって「リングウォーク」を行い、仮想データ識別子を物理データ識別子にマッピングすることにより、次の位置を位置特定することである。結果として生じるオブジェクト・レプリカ位置は単純かつ例示的なやり方で図4に示し、ここで、O、O、及びOはデータ・オブジェクト・レプリカの位置を表す。データ・オブジェクト・レプリカの位置の決定は以下のように、例えば、擬似コードで表すことが可能である。
【0040】
【表4】
データ・オブジェクト・レプリカ位置をサーチするための別の選択肢は、物理名前空間リング上である。これは、物理名前空間上の記憶識別子205に仮想識別子220をマッピングすることによって実現される。レプリカ位置はその場合、レプリカの次の記憶リソースを判定するために時計回りで物理名前をウォークすることによって判定される。
【0041】
一般に、上記アルゴリズムは、何れかのノード120が、オブジェクトを記憶すべき何れかのデータ・オブジェクト及び関連付けられたレプリカの位置を計算することを可能にする。何れかのデータ・オブジェクトの実際の書き込み動作は、記憶リソース130の利用可能な容量、ノード120の動作状態、及び名前空間の算出外で考慮に入れる必要がある何れかの他の属性に依存する。
【0042】
以下では、データ・オブジェクトの書き込み及び読み出し、並びに再平衡化アルゴリズムを含む、名前空間にわたって行われる通常の動作について述べる。
【0043】
書き込みアルゴリズム
書き込みアルゴリズムの目標は、第1にデータ・オブジェクト・レプリカを別々のノードの記憶リソースに配布し、第2に、可能な限り、データ・オブジェクト・レプリカを維持するよう潔くフォールバックを行うことである。このことは、単一の記憶リソースの障害により、データ・オブジェクトの唯一のコピーが失われないようにデータ・オブジェクトが別々の記憶リソースに書き込まれることを保証する。ノードの数がデータ・オブジェクト・レプリカの数と少なくとも同じか、又はそれより多いものである限り、書き込みアルゴリズムは更に、(レプリカの数−1)個のノードに障害が生じ得ることを保証する。
【0044】
記憶リソース130へのデータ・オブジェクト書き込みは、コンシステント名前空間210上のデータ・オブジェクト位置によって定められるデータ・オブジェクト・レプリカの組を使用する。レプリカの数が、ネットワーク・インフラストラクチャ100におけるノード120の数よりも多い場合、書き込みアルゴリズムは、複製因子を実現するために先行して使用されたものと同じノードにデータ・オブジェクトを記憶する。上記複製は、前述の再使用ノード120内の別個の記憶リソース130を効率的に選ぶよう低下し得る。
【0045】
図5は、例示的な実施例による、単一のノード120内の別々の記憶リソース130にデータ・オブジェクト・レプリカ510がどのようにして記憶されるかについての単純化されたやり方を示す。しかし、一部の他の実施例では、2つ以上のノードの別々の記憶リソースへのデータ・オブジェクト・レプリカの記憶の信頼度がより高いことがあり得る。前述の手法は、より高いフォールト・トレランスの実現に寄与し得る。図6はこの手法を示す。特に、2つのノード120の別々の記憶リソース130に3つのデータ・オブジェクト・レプリカ510を記憶する単純化された例示的な処理を表す。
【0046】
書き込みアルゴリズムの別の属性は、永久的な記憶にコミットされているデータ・オブジェクトをもう扱うことが可能でない状態になるように特定の記憶リソース130の容量が変動する状況を扱うというものである。よって、書き込みアルゴリズムは、所望の複製因子が満たされるまでリソース記憶装置の「連鎖」を下る。複製因子は、種々の、別個の記憶リソース130に記憶される対象のデータ・オブジェクト・レプリカ510の数を表す任意の値、又は予め定められた値であり得る。例えば、図5及び図6では、複製因子は3に等しい。複製因子は、コンピュータ・ネットワーク・インフラストラクチャ100の何れかの既存のポリシー要件、又は記憶リソース130の数に基づいて適合させ得る。
【0047】
一般に、所定の複製因子に基づいて、データ・オブジェクト・レプリカ510の位置のリストを生成することが可能である。更に、記憶リソース130は、書き込みアルゴリズム中に処理される「書き込み条件」ステートメントを生成し得る。書き込み条件ステートメントは、(限定された自由空間を有している、順不同である、現在使用されていない等であり得るので)特定の記憶リソース130へのデータ・オブジェクト・レプリカ510の記憶が阻止され得る。よって、前述の記憶リソース130は書き込み処理中に飛ばし得る。図7は、書き込み処理中に記憶リソース130を飛ばす例示的な単純化されたやり方を示す。より具体的には、「ドライブ1,3」は、データが満杯であり、よって、飛ばされる。
【0048】
更に、特定のノード120は、上記ノードが含む記憶リソース130に記憶されたデータ・オブジェクト・レプリカ510を既に有している場合、飛ばすことが可能である。よって、特定のノード120がデータ・オブジェクト・レプリカ510を有する場合、ノード120は飛ばされ、それにより、フォールト・トレランスが高くなる。前述の処理は図8に示す。図8では、記憶リソース「1,2」が既にデータ・オブジェクト・レプリカ510を有するので、記憶リソース「1,3」が飛ばされることを示す。記憶リソース「1,3」及び「1,2」は同じノードに関する。
【0049】
既にデータ・オブジェクト・レプリカ510を有している場合の書き込み処理中にノード120又はリソース記憶装置130を飛ばすアルゴリズムは、
【0050】
【表5】
の例示的な擬似コードによって表すことが可能である。
【0051】
読み出しアルゴリズム
上述のように、書き込みアルゴリズムは、複製因子が満たされるまで保存動作を再試行する。これは、首尾良く行われると、データ・オブジェクトの複製が最終的にノード内の物理記憶リソース上に存在することになることを意味している。よって、読み出しアルゴリズムの保証された手法は、物理識別子全てを走査し、データ・オブジェクトの複製を取り出すというものである。よって、読み出しアルゴリズムは、ネットワーク・インフラストラクチャ内のノード全てを検査し得る。各ノードはノード内のそれぞれの物理記憶リソースに関連付けられているので、多くの場合、ネットワーク・インフラストラクチャ内の物理記憶リソースそれぞれの検査は必要でない。
【0052】
オブジェクトへのアクセスに使用される読み出しアルゴリズムは、
【0053】
【表6】
の例示的な擬似コードとして表すことが可能である。
【0054】
種々の実施例によれば、読み出しアルゴリズムは更に、ネットワーク・インフラストラクチャにおけるロード・バランスのための先行動作からの「ヒント」も使用し得る。例えば、記憶リソースに障害が生じた場合、それは、データ・オブジェクトが、ネットワーク・インフラストラクチャにおける他の場所に複製されているということを示し、障害が生じた記憶リソース上のオブジェクトのサーチは、読み出し中、飛ばし得る。よって、書き込み障害、読み出し障害、及び再平衡化を信号として使用して、飛ばした記憶リソースのリストを再計算し得る。前述の特定の処理は、
【0055】
【表7】
の例示的な擬似コードによって表すことが可能である。
【0056】
再平衡化アルゴリズム
コンシステント名前空間210の分布の平衡は、新たな記憶リソースがネットワーク・インフラストラクチャに追加され、又は、ネットワーク・インフラストラクチャから除去されるにつれ、又は、特定の記憶リソースの利用可能な容量が変更された場合に変動する。如何なるイベントが前述の変動をもたらすものであっても、コンシステント名前空間210は、所望の複製因子を満たすためにデータ・オブジェクト及びその対応する識別子を再平衡化させる必要がある。更に、コンシステント名前空間210はデータ・マイグレーションに鑑みて頻繁に変動し得、各変動により、データ・オブジェクトに対して再平衡化アルゴリズムを行うことが必要となり得る。よって、例えば少なくとも1つのノード120又は少なくとも1つの記憶リソース130の追加又は除去に鑑みて、コンシステント名前空間210が変更された後に、別々のノードに対するデータ・オブジェクトの再配分を可能にする再平衡化アルゴリズムを使用し得る。
【0057】
図9は、所有する記憶リソースにデータ・オブジェクトが移動するような、コンシステント名前空間210における所有の変動をもたらす、ドライブ「D」として表す新たな記憶リソース130の追加の例示的な表現を示す。コンシステント名前空間に追加された仮想識別子は、ドライブ「D」の所有を表す。
【0058】
所有の変動の結果は、現在、仮想識別子「D」によって所有されているドライブ「A」上又はドライブ「C」上の何れかのデータ・オブジェクトが、新たな所有者として仮想識別子「D」から読み出される。よって、ドライブ「D」を含むノードは、データ・オブジェクトのレプリカ位置からデータを移動する。同じ名前空間経由アルゴリズムを使用してルックアップすることが可能であるからである。反復リング名前空間はなお、そのままの状態にあるので、このことは、新たな所有者のデータ・オブジェクトの遅延読み出しを可能にする。
【0059】
再平衡化アルゴリズムには更に、記憶リソースの除去という課題への対応が関係する。記憶リソースがネットワークから除去されると、コンシステント名前空間は再平衡化を必要とする。図10は、コンシステント名前空間210において所有の変動をもたらす、ドライブ「C」として表す記憶リソース130の除去の例示的な表現を示す。ドライブの除去の結果、データ・オブジェクトは、所定の複製因子を維持するよう移動させる。図に示すように、データ・オブジェクトの所有は、反時計回りに移る。
【0060】
所有の変動は、追加状態及び除去状態の何れについても生じ得るので、前述の状態変動中にコンシステント名前空間210の再平衡化に対応するようノード120からのスケジューリング・アルゴリズムを確立することが可能である。前述のアルゴリズムは、経時的にオブジェクトを移動させるための単純な読み出し意味論に依存するよりも、所有の変動中のコンシステント名前空間210のよりすばやいコンバージェンスにとって必須であり得る。
【0061】
コンシステント名前空間210内の所有は、新たな仮想識別子の存在によって調節することが可能である。よって、(図9に示すように、)ドライブ「D」が追加された後に、仮想識別子「D0」をそれ自体によって考慮に入れることは、コンシステント名前空間210におけるレプリカへの変更を示す。これは、「D0」が現在、所有する範囲に先行してあった何れかのオブジェクトを見つけるためにコンシステント名前空間210の先行する所有者に対してクエリが構成されることを可能にする。単純化されたクエリを、
レプリカ1:何れかのオブジェクト∈{D0,A1−1}を求めてC1を有するノードに問い合わせる
レプリカ2:何れかのオブジェクト∈{C1,D0−1}を求めてC1を有するノードに問い合わせる
レプリカ3:何れかのオブジェクト∈{B1,C1−1}を求めてB1を有するノードに問い合わせる
レプリカ4:何れかのオブジェクト∈{B0,B1−1}を求めてB0を有するノードに問い合わせる
レプリカ5:何れかのオブジェクト∈{A0,B0−1}を求めてA0を有するノードに問い合わせる
レプリカ6:何れかのオブジェクト∈{C0,A0−1}を求めてC0を有するノードに問い合わせる
レプリカ7:何れかのオブジェクト∈{A1,C0−1}を求めてA1を有するノードに問い合わせる
のように構成することが可能である。
【0062】
これは、全ての主所有者が、範囲の組内のデータ・オブジェクト全てを戻させることを前提とする。これは、記憶リソース130が満杯であり、書き込みアルゴリズムがデータ・オブジェクトを記憶し、複製因子を満たすよう、次に利用可能な記憶リソース130に進む場合、該当しない。前述の挙動を補うために、アルゴリズムは、クラスタ内の全てのノード120に問い合わせなければならない。これは。
【0063】
レプリカ1−各ノード毎に、何れかのオブジェクト∈{D0,Al−1}を求める
レプリカ2−各ノード毎に、何れかのオブジェクト∈{C1,D0−1}を求める
レプリカ3−各ノード毎に、何れかのオブジェクト∈{B1,C1−1}を求める
レプリカ4−各ノード毎に、何れかのオブジェクト∈{B0,B1−1}を求める
レプリカ5−各ノード毎に、何れかのオブジェクト∈{A0,B0−1}を求める
レプリカ6−各ノード毎に、何れかのオブジェクト∈{C0,A0−1}を求める
レプリカ7−各ノード毎に、何れかのオブジェクト∈{A1,C0−1}を求める
に示すように行うことが可能である。前述のアルゴリズムは、コンシステント名前空間210の「リングウォーク」を行い、オブジェクト・レプリカ全てについて全てのノードに問い合わせ、又は、期待されたデータ・オブジェクト・レプリカにわたって反復し、ネットワーク・インフラストラクチャの特性及び再平衡化アルゴリズムの所望の負荷性能に基づいて複数回、リングウォークを行うことが可能である。更に、前述のクエリは、通常の読み出し動作と同時に実行し、コンシステント・リング名前空間に対して再平衡をもたらし得る。
【0064】
所有の変動の例示的な擬似コード・アルゴリズムは例えば、
【0065】
【表8】
として表現することが可能である。
【0066】
再平衡アルゴリズムが、ノードのデータ・オブジェクトの記憶されたインデクス、及び、次いで、データの実際の移動を問い合わせることにより、ネットワーク・インフラストラクチャに対して負荷をもたらし得るということが当業者に分かるものである。前述の動作は、一ノードに達する代わりにコンシステント名前空間210にわたって作業を分離することが可能であるように上記シナリオにおいて異なっているように示している。しかし、システムに対するトラフィックの即時バーストを避けるために、指数関数的バックオフ・アルゴリズムを再平衡中に使用して即時のデータ移動を避けるべきである。
【0067】
一部の実施例では、指数関数的なバックオフ遅延の算出は、再平衡化アルゴリズムの開始をオフセットするために使用することが可能である。遅延の計算は、
【0068】
【数1】
の式を使用して、ネットワークの何れかの共有状態の一致を避けるために個々に各ノードに対して行うことが可能である。
【0069】
遅延の算出のための例示的な疑似アルゴリズムは、
【0070】
【表9】
として表現することが可能である。
【0071】
図11は、例示的な実施例による名前空間マネージャ1100を示す。名前空間マネージャ1100は、複数のノードを有するコンピュータ・ネットワーク・インフラストラクチャ100内のデータ・オブジェクトを管理する、コンピュータによって実現される方法の使用に適している。図に示すように、名前空間マネージャ1100は、物理識別子モジュール1110と、仮想識別子モジュール1120と、オブジェクト識別子モジュール1130と、マッピング・モジュール1140と、経由モジュール1150と、レプリカ生成器1160と、再配分モジュール1170とを備える。
【0072】
物理識別子モジュール1110は、ネットワーク110の何れかのノード120の記憶リソースの物理識別子を確立するよう構成することが可能である。そうした物理識別子は、上述しており、一般に、記憶リソースの汎用一意識別子にわたる暗号ハッシング関数のハッシュ値を表す。
【0073】
仮想識別子モジュール1120は、ノード120の記憶リソース130毎に複数の一意の仮想識別子を物理識別子に基づいて生成するよう構成することが可能である。上述したように、複数の一意の仮想識別子は、全てのノードにアクセス可能なコンシステント・リング名前空間に記憶することが可能である。複数の一意の仮想識別子を、ハッシュ・チェイニングの原理に基づいて生成することが可能であり、ハッシュ長、及び物理識別子モジュール1110によって算出された物理識別子に基づき得る。更に、コンシステント・リング名前空間にわたってランダムに、かつ一様に分布するように複数の一意の仮想識別子を生成することが可能である。
【0074】
オブジェクト識別子モジュール1130は、何れかのノード120の記憶リソース130に記憶される対象のデータ・オブジェクトのオブジェクト識別子を生成するよう構成することが可能である。オブジェクト識別子は、オブジェクト・データにわたって計算されたハッシュ関数であり得る。オブジェクト識別子は、ノード120の何れかに記憶された場合に、全てのデータ・オブジェクト(例えば、ファイル又は複数のファイルなどのファイル・システム・オブジェクト)又はその一部について生成し得る。
【0075】
マッピング・モジュール1140は、コンシステント・リング名前空間にオブジェクト識別子モジュール1130によって生成されるようなオブジェクト識別子をマッピングするよう構成することが可能である。マッピング手順は、本明細書及び特許請求の範囲記載の書き込み、読み出し、再平衡化、及び他のアルゴリズムの原理に対応し得る。
【0076】
経由モジュール1150は、特定のデータ・オブジェクトを位置特定し、上記特定のデータ・オブジェクトにアクセスするために何れかのノード120からコンシステント名前空間210をネットワーク110のノード120に関連付けられたコンピューティング装置が経由することを可能にするよう構成し得る。
【0077】
レプリカ生成器1160は、複数のデータ・オブジェクト・レプリカを生成し、現在のアプリケーション及び要件に応じて、同じノード120又はいくつかのノード120の別々の記憶リソース130に記憶するよう構成し得る。データ・オブジェクト・レプリカは、ノード120毎にアクセス可能なコンシステント名前空間210に記憶することが可能である。データ・オブジェクト・レプリカの数と、その生成及び記憶のポリシーは予め定めることが可能である。例えば、データ・オブジェクト・レプリカの数は、別々のノード120の数、及び/又は別々の記憶リソース130を規定し得る所定の複製因子に対応し得る。
【0078】
再配分モジュール1170は、ノード120がネットワーク110に追加され、若しくはネットワーク110から除去され、又は、記憶リソース130の利用可能な容量が特定のノード120内で変更された場合にコンシステント名前空間210内の一意の仮想識別子220を再配分するよう構成することが可能である。上述のように、仮想識別子の配分の目的は、データ・オブジェクトのアドレス指定の高速化を容易にするためにコンシステント名前空間210内の識別子の幾分一貫した分布を得ることである。
【0079】
図12はコンピュータ・ネットワーク・インフラストラクチャ100内のデータ・オブジェクトを管理する方法1200を示すプロセス・フロー図である。方法1200は、ハードウェア(例えば、専用ロジック、プログラマブル・ロジック、及びマイクロコード)、(汎用コンピュータ・システム上若しくは専用マシン上で実行されるソフトウェアなどの)ソフトウェア、又はそれぞれの組み合わせを含み得るロジックによって行い得る。例示的な一実施例では、処理ロジックは名前空間マネージャ1100に存在し、名前空間マネージャ1100の種々のモジュールが方法1200を行うことが可能である。上記モジュールの例は仮想であり得、モジュールによって実行される命令は実際に、名前空間マネージャ1100によって取り出し、実行し得る。種々のモジュールが、本明細書及び特許請求の範囲記載の種々の工程の一部又は全部を行うよう構成し得るが、より少ない、又はより多いモジュールを提供し、種々の実施例の範囲内になお収まり得る。
【0080】
図12に示すように、ネットワーク110にわたって共有されるデータ・オブジェクトの記憶処理に関係する記憶リソース130毎に物理識別子モジュール1110が物理識別子を確立する動作1210で始まり得る。
【0081】
動作1220では、仮想識別子モジュール1120は、先行する動作において生成された物理識別子に基づいて記憶リソース130毎に複数の一意の仮想識別子220を生成する。一般に、複数の前述の仮想識別子が、動作1210において生成された物理識別子へのコンシステント・ハッシング手順の適用に照らして生成される。生成された仮想識別子220は、全てのノード120にアクセス可能なコンシステント名前空間210に記憶することが可能である。
【0082】
動作1230では、オブジェクト識別子モジュール1130は、記憶リソース130に記憶された1つ又は複数のデータ・オブジェクトの1つ又は複数のオブジェクト識別子を生成する。前述のオブジェクト識別子は、データ・オブジェクトの記憶リソース位置に関連付けることが可能である。
【0083】
動作1240では、マッピング・モジュール1140はオブジェクト識別子のコンシステント名前空間210へのマッピングを行う。マッピングされたオブジェクト識別子は、前述のデータ・オブジェクトを位置特定し、前述のデータ・オブジェクトにアクセスするためにネットワーク110のノード120にわたるリングウォーク・アルゴリズムへの入力を定める。
【0084】
次の動作1250では、経由モジュール1150は、データ・オブジェクトを位置特定し、データ・オブジェクトにアクセスするためにネットワーク110内の何れのノード120からもコンシステント名前空間210を経由することを可能にする。前述の動作はコンシステント名前空間210を経由することを容易にし、更に、前述の動作には、特定のデータ・オブジェクトを位置特定するための、オブジェクト識別子を記憶する特定の物理名前空間200へのコンシステント名前空間210を介したナビゲーション、又は上記ナビゲーションを可能にすることが関係し得る。
【0085】
図13は、本明細書及び特許請求の範囲記載の方法論の何れかの1つ又は複数のマシンに行わせるための命令の組を実行し得るコンピュータ・システム1300の例示的な電子的形態におけるマシンのコンピューティング装置の概略図を示す。種々の例示的な実施例では、マシンはスタンドアロン装置として動作するか、又は他のマシンに接続(例えば、ネットワーク化)することが可能である。ネットワーク化された展開では、マシンは、クライアントサーバ・ネットワーク環境におけるサーバ又はクライアント・マシンとして、又は、ピアツーピア(若しくは分散)ネットワーク環境におけるピア・マシンとして動作することが可能である。マシンは、パソコン(PC)、タブレットPC、セットトップ・ボックス(STB)、PDA、セルラ電話機、ディジタル・カメラ、ポータブル音楽プレイヤ(例えば、動画像専門家グループ・オーディオ・レイヤ3(MP3)プレイヤなどのポータブル・ハード・ドライブ・オーディオ装置)、ウェブ家電製品、ネットワーク・ルータ、スイッチ、ブリッジ、又は、当該マシンによって行われる対象の動作を規定する(シーケンシャル又はその他の)命令の組を実行することができる何れかのマシンであり得る。更に、単一のマシンのみを示しているが、「マシン」の語は更に、本明細書及び特許請求の範囲記載の方法論の何れか1つ又は複数を行うための命令の組(若しくは複数の組)を個々に、又は一緒に実行するマシンの何れかの収集物を含むと解される。
【0086】
例示的なコンピュータ・システム1300は、バス1310を介して互いに通信し合う1つ又は複数のプロセッサ1302、ハード・ディスク・ドライブ1304、主メモリ1306、及びスタティック・メモリ1308を含む。コンピュータ・システムは更に、ネットワーク・インタフェース装置1312を含み得る。ハード・ディスク・ドライブ1304は、本明細書及び特許請求の範囲記載の方法論又は機能の何れか1つ又は複数を実施するか、又は上記何れか1つ又は複数によって利用される命令1322の1つ又は複数の組を記憶するマシン読み取り可能な媒体1320を含み得る。命令1322は更に、コンピュータ・システム1300によるその実行中に主メモリ1306内に、及び/又はプロセッサ1302内に全体的に、若しくは少なくとも部分的に存在し得る。主メモリ1306及びプロセッサ1302も、マシン読み取り可能な媒体を構成する。
【0087】
マシン読み取り可能な媒体1320が単一の媒体であるとして例示的な実施例に示しているが、「マシン読み取り可能な媒体」の語は、命令の1つ又は複数の組を記憶する単一の媒体又は複数の媒体(例えば、中央データベース若しくは分散データベース、並びに/又は関連付けられたキャッシュ及びサーバ)を含むと解されるものとする。「マシン読み取り可能な媒体」の語は更に、マシンによる実行のための命令の組を記憶し、コード化し、若しくは収容することができ、又は、本出願の方法論の何れか1つ又は複数をマシンに行わせ、又は、前述の命令の組によって利用され、若しくは、前述の命令の組に関連付けられるデータ構造を収容することができる何れかの媒体を含むよう解されるものとする。「マシン読み取り可能な媒体」の語はよって、ソリッドステート・メモリ、光媒体、及び磁気媒体に限定されないが、それらを含むよう解されるものとする。前述の媒体は、限定列挙でないが、ハード・ディスク、フロッピー(登録商標)・ディスク、NAND又はNORフラッシュ・メモリ、ディジタル・ビデオ・ディスク、RAM、ROM等を含み得る。
【0088】
本明細書及び特許請求の範囲記載の例示的な実施例は、コンピュータ上に、ハードウェアに、又はソフトウェア及びハードウェアの組み合わせにインストールされたコンピュータ実行可能な命令(例えば、ソフトウェア)を備える動作環境において実現することが可能である。コンピュータ読み取り可能な命令は、コンピュータ・プログラミング言語で記述することが可能であり、又は、ファームウェア・ロジックで実施することが可能である。認知された標準に準拠したプログラミング言語で記述された場合、前述の命令は、種々のハードウェア・プラットフォーム上、及び種々のオペレーティング・システムとのインタフェースに対して実行することが可能である。限定列挙でないが、本願の方法を実現するためのコンピュータ・ソフトウェア・プログラムは、例えば、C、ゴー(Go)、パイソン(Python)若しくは他のコンパイラ、アセンブラ、インタープリタ、又は他のコンピュータの言語若しくはプラットフォームなどの何れかの数の適切なプログラミング言語で記述することが可能である。
【0089】
このようにして、データ記憶媒体においてデータを管理するコンピュータによって実現された方法及びシステムについて説明している。実施例を特定の例示的な実施例を参照して説明してきたが、本発明のより広い趣旨及び範囲から逸脱しない限り、種々の修正及び変更を前述の例示的な実施例に対して行うことが可能である。よって、明細書及び添付図面は、制限的意味合いというよりもむしろ例証的意味合いでとらえられるものとする。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
【国際調査報告】