(57)【要約】      （修正有）【課題】オブジェクトストレージシステム内の複数のハードウェア要素からなる階層配置における第１のハードウェア要素により実行する方法を提供する。【解決手段】方法は、オブジェクトストレージシステムのオブジェクトの名前に対するハッシュを実行する段階を含む。名前は、オブジェクトと関連付けられる要求の一部である。ハッシュの結果は、階層配置における第１のハードウェア要素の直下にある第２のハードウェア要素を識別する。要求を、オブジェクトストレージシステムにより処理される方向で進めるべく、第２のハードウェア要素に送信する。【選択図】図３
2019204489.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクトストレージシステムの第１のハードウェア要素を用いてオブジェクトの名前に対して第１のハッシュを実行する段階であって、前記オブジェクトの前記名前は、前記オブジェクトと関連付けられる要求の一部であり、前記第１のハッシュの結果は、前記オブジェクトストレージシステム内のハードウェア要素の階層配置において前記第１のハードウェア要素の直下にある第２のハードウェア要素を識別する、段階と、
前記第２のハードウェア要素に前記要求を送信する段階と、
前記第２のハードウェア要素を用いて前記オブジェクトの前記名前に対して第２のハッシュを実行する段階であって、前記第２のハッシュの結果は、前記階層配置において前記第２のハードウェア要素の直下にある第３のハードウェア要素を識別する、段階と、
前記オブジェクトストレージシステムにより処理される方向で前記要求を進めるべく、前記第３のハードウェア要素に前記要求を送信する段階と
を備える方法。
【請求項２】
前記第３のハードウェア要素に前記オブジェクトを格納する段階であって、前記第３のハードウェア要素は、大容量ストレージデバイスである、段階をさらに備える、請求項１に記載の方法。
【請求項３】
前記第２のハードウェア要素及び前記第３のハードウェア要素のうちの一方は、複数の大容量ストレージデバイスを有するストレージサーバである、請求項１又は２に記載の方法。
【請求項４】
前記ハードウェア要素のうちの１つは、ストレージサーバのラック用のネットワーキングゲートウェイである、請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記第１のハッシュは、前記第１のハードウェア要素の直下にある前記階層配置の構造を説明する第１の重み付け情報を包含する、請求項１から４のいずれか一項に記載の方法。
【請求項６】
前記第１のハッシュは、前記第２のハードウェア要素の直下にある前記階層配置の前記構造を説明する第２の重み付け情報を包含する、請求項５に記載の方法。
【請求項７】
前記第２のハードウェア要素の下位にある前記オブジェクトストレージシステム内の変化を反映するべく、前記第１の重み付け情報及び第２の重み付け情報を修正する段階であって、前記第１の重み付け情報の変化は、前記第２の重み付け情報の変化より小さい、段階をさらに備える、請求項６に記載の方法。
【請求項８】
前記第３のハードウェア要素は、前記要求が処理される大容量ストレージデバイスであり、前記方法は、
前記大容量ストレージデバイスがオフライン状態に一時的に入ったことに応じて、前記オブジェクトストレージシステムの未使用のストレージ容量内の前記大容量ストレージデバイスに向けられた要求をキューイングする段階と、
前記大容量ストレージデバイスがオンライン状態に戻った後に、前記大容量ストレージデバイスに対する前記要求を再生する段階と
をさらに備える、請求項１から７のいずれか一項に記載の方法。
【請求項９】
前記未使用のストレージ容量は、前記大容量ストレージデバイスが一部であるものと同一のストレージサーバの一部である、請求項８に記載の方法。
【請求項１０】
前記第１のハッシュ及び第２のハッシュに提供される重み付け値は、前記大容量ストレージデバイスが前記オフライン状態に入ることに応じては変更されない、請求項９に記載の方法。
【請求項１１】
オブジェクトストレージシステムのオブジェクトの名前に対するハッシュを実行する論理回路を有する半導体チップを備え、前記ハッシュは、オブジェクトストレージシステム内のハードウェア要素の階層配置における第１のハードウェア要素により実行され、前記名前は、前記オブジェクトと関連付けられる要求の一部であり、前記ハッシュの結果は、前記階層配置において前記第１のハードウェア要素の直下にある第２のハードウェア要素を識別し、前記要求は、前記オブジェクトストレージシステムにより処理される方向で前記要求を進めるべく、前記第２のハードウェア要素に送信され、前記ハッシュは、ハードウェア要素の前記階層配置において前記ハードウェア要素の下位にあるハードウェア要素の性能特性を説明する１又は複数の重み付け係数を包含する、装置。
【請求項１２】
前記論理回路は、
専用のハードワイヤード論理回路と、
プログラマブル論理回路と、
プログラムコードを実行する論理回路との任意の組み合わせである、請求項１１に記載の装置。
【請求項１３】
前記半導体チップは、オブジェクトストレージシステムのハードウェア要素に統合される、請求項１１又は１２に記載の装置。
【請求項１４】
前記オブジェクトストレージシステムのハードウェア要素は、
プロキシサーバと、
ネットワーキングスイッチと、
ラックゲートウェイと、
ストレージサーバと、
複数の大容量ストレージデバイスが結合されるＩ／Ｏインタフェースと
のうちのいずれかである、請求項１２に記載の装置。
【請求項１５】
前記オブジェクトストレージシステムのハードウェア要素は、前記オブジェクトストレージシステムに機能的に統合される、請求項１４に記載の装置。
【請求項１６】
オブジェクトストレージシステム内のハードウェア要素の階層配置における第１のハードウェア要素のプロセッサに
前記オブジェクトストレージシステムのオブジェクトの名前に対するハッシュを実行する手順であって、前記名前は、前記オブジェクトと関連付けられる要求の一部であり、前記ハッシュの結果は、前記階層配置において前記第１のハードウェア要素の直下にある第２のハードウェア要素を識別し、前記要求は、前記オブジェクトストレージシステムにより処理される方向で前記要求を進めるべく、前記第２のハードウェア要素に送信される、手順
を実行させるためのプログラム。
【請求項１７】
前記ハッシュは、前記第１のハードウェア要素の直下にある前記階層配置の構造を説明する重み付け情報を包含する、請求項１６に記載のプログラム。
【請求項１８】
前記プロセッサに、前記第２のハードウェア要素の下位にある前記オブジェクトストレージシステムにおける変化を反映するべく、前記重み付け情報を修正する手順をさらに実行させる、請求項１７に記載のプログラム。
【請求項１９】
前記重み付け情報は、前記階層配置における前記第１のハードウェア要素の下位の変化が閾値を通過していない場合、不変のままである、請求項１７又は１８に記載のプログラム。
【請求項２０】
前記第１のハードウェア要素は、
コンピューティングシステムと、
ネットワーキングシステムと
のうちのいずれかである、請求項１６から１９のいずれか一項に記載のプログラム。
【請求項２１】
請求項１６から２０のいずれか一項に記載のプログラムを格納する機械可読記憶媒体。
【請求項２２】
オブジェクトストレージシステムの複数のノードの階層配置のリーフノードに関する重み付け係数を決定する段階であって、前記リーフノードは、ストレージデバイスに対応し、前記重み付け係数は、前記ストレージデバイスの性能特性を説明する、段階と、
前記オブジェクトストレージシステムの複数のノードの階層配置において前記リーフノードの上位にある中間ノードに対する重み付け係数を決定する段階であって、前記中間ノードの前記重み付け係数は、前記オブジェクトストレージシステムの複数のノードの配置において、それぞれの下位ノードの性能特性を包含する、段階と、
前記オブジェクトストレージシステムのノードの階層配置の深いレベルに配置されたそれぞれのハッシュ関数で、オブジェクトの名前をハッシュ化することにより、前記オブジェクトストレージシステム内のストレージに前記オブジェクトをマッピングする段階であって、前記ハッシュ関数は、前記オブジェクトストレージシステムの複数のノードの配置においてそれぞれの下位ノードの性能特性を説明する前記重み付け係数のうちの特定のいくつかを包含する、段階と
を備える方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の技術分野は、大まかには、コンピューティング科学、より具体的には、ストレージアドレスの決定に関してマルチレベルハッシュ関数を用いるオブジェクトストレージシステムに関する。
【背景技術】
【０００２】
今日のコンピューティングに関するインフラストラクチャ環境としてクラウドコンピューティング及び高性能なデータセンタの出現に伴い、大規模データストレージにおけるイノベーションがなされている。オブジェクトストレージと称されるある特定の新たなストレージ手法は、非常に用途の広い入力名前空間、分散型ストレージノードを用いたオペレーションの容易さ、及び、対応する大規模なストレージ容量により特徴付けられる。しかしながら、実際に稼働するオブジェクトストレージシステムを実装するために必要とされるハードウェア及び／又はソフトウェアを物理的に構築することを試みる場合、実用的なイノベーションの向上の機会につながる実用的な実装上の問題点に気づかされるかもしれない。
【図面の簡単な説明】
【０００３】
以下の図面と共に以下の詳細な説明から、本発明のより良い理解を得ることができる。
【０００４】
【図１】従来技術のオブジェクトストレージシステムを示す。
【０００５】
【図２】改良されたオブジェクトストレージシステムを示す。
【０００６】
【図３】改良されたオブジェクトストレージシステムにより実行される方法を示す。
【０００７】
【図４】コンピューティングシステムを示す。
【発明を実施するための形態】
【０００８】
オブジェクトストレージシステムに関する問題は、ストレージノードがシステムに追加又はシステムから削除された結果としてのデータオブジェクトの移動である。ここで、図１に見つけられるように、オブジェクトストレージシステム１００は、ネットワーク１０２に通信可能に結合される多数のストレージノード１０１と共に通常実装される。各ストレージノードは、関連付けられたストレージ位置及び対応するストレージ位置のアドレスを有する１又は複数の大容量ストレージデバイスを含む。
【０００９】
クライアントが、システム１００内のストレージにオブジェクトを提出した場合、システムは、クライアントによりオブジェクトに与えられた名前（例えば、オブジェクト用のディレクトリファイルパス、オブジェクトに割り当てられる一意の識別子など）に対してハッシュ化演算を実行する。ハッシュ化演算の出力は、オブジェクトが格納されるシステム内のストレージ位置のアドレスを本質的には生成する。システム１０１におけるストレージノードのそれぞれは、オブジェクトのストレージ位置のアドレスの異なる範囲を割り当てられる。新たなストレージノードがシステムに追加され、又は、システムから削除された場合、ストレージノードごとのオブジェクトのアドレス位置の割り当てを変更することにより、これらの現在のストレージノードから新たなストレージノードに一部のオブジェクトを移動する必要がある。
【００１０】
図２は、改良されたオブジェクトストレージシステム設計２００を示す。図２のオブジェクトストレージシステム設計によれば、システムのアーキテクチャは、ツリーの各上位レベルのノードがその下位にある下位レベルのノードに属するノードツリーの形式をとる。ツリーの最下位レベル２０３は、実際のストレージ媒体デバイス（例えば、フラッシュドライブ、ハードディスクドライブなど）を有するリーフノードに対応する。さらに、各ノードレベルは、特定のオブジェクトがその名前に基づいてマッピングされるノードレベルにおいて特定のノードを識別する、そのノードレベルに対する専用のハッシュ関数が先行する。簡単にするために、図２は、３つのノードレベル２０１、２０２、２０３のみ（故に、それらに先行する３つのハッシュ関数２１１、２１２、２１３）有するオブジェクトストレージシステム２００を示す。しかしながら、追加のノードレベル及び対応するハッシュ関数が図２の３レベルシステムに追加され得ることを読み手は理解するだろう。
【００１１】
図２を参照すると、新たなオブジェクトが、システムに格納される場合、第１のハッシュ関数２１１は、複数の最上位レベルのノード２０１のうちのどれにオブジェクトがマッピングされるべきかを決定し、当該オブジェクトは、ネットワーク２０４を介してそのノードに送信される。最上位レベルのノード２０１のそれぞれは、第２のハッシュ関数２１２のインスタンスを含む。オブジェクトがマッピングされた特定の最上位レベルのノードは、第２のハッシュ関数２１２を用いてオブジェクト名に対する第２のハッシュを算出する。その結果は、オブジェクトがマッピングする次の下位レベル２０２におけるノードを識別し、オブジェクトは、そのノードにネットワークを介して送信される。次の下位レベルのノードはまた、第３のハッシュ関数２１３のインスタンスを含む。オブジェクトがマッピングした特定の次の下位レベルのノードは、オブジェクト名に対する第３のハッシュを算出する。その結果は、オブジェクトがマッピングする最下位リーフノードレベル２０３におけるノードを識別する。オブジェクトは、リーフノードに送信されて、内部に格納される。
【００１２】
さらに、ハッシュ関数の下位にあるオブジェクトストレージシステムの構造が同様にバイアスを掛けられ、又は、アンバランスな場合、ハッシュ化アルゴリズム２１１、２１２、２１３のそれぞれは、いくらかのバイアスを与えるために重み付けされ、そうでなければ、意図的にアンバランスなやり方ですぐ下位のノードにオブジェクトを割り当てる。例えば、第１のすぐ下位のノードは、その下位にあるストレージ容量を及び／又はＩ／Ｏ帯域幅を、第２のすぐ下位のノードよりも多く有し、第１のノード及び第２のノードに供給するハッシュ関数は、第２のノードよりも第１のノードにより多くのオブジェクトをマッピングするように構成される。
【００１３】
ここで、各ハッシュ関数２１１、２１２、２１３は、その直下にあるストレージシステム構造の一部の説明を用いて提示される。説明は、本質的には、例えば、オブジェクトをマッピングする各ノードに、及び／又は、その下位にある総ストレージ容量、帯域幅容量、媒体のタイプ、プロセッサ速度などを説明する。説明は、子ノードの説明から自動的に予測されてよい。さらなる実施形態において、管理者又は管理機能は、様々なサービスレベルアグリーメントに適合するように自動的な説明設定をオーバーライドできる。
【００１４】
オブジェクトを上位レベルのノードにマッピングする上位レベルハッシュ化アルゴリズムの場合、上位レベルのノードのストレージ容量は、その下位にあるリーフノードの組み合わせられたストレージ容量に対応する。このように、インスタンスについて、ラック＿１のストレージ容量は、ストレージサーバノードＳＳ＿１＿１からＳＳ＿１＿Ｎの組み合わせられたストレージ容量に対応する。ハッシュ化レベルの直下にある複数のノードのうちの１又は複数についての実行能力の説明はまた、様々な実施形態において、「重み付け係数」と称され得る。したがって、各ハッシュ化レベル２１１、２１２、２１３は、そのようなアンバランスが存在する場合、その直下にあるノードの機能における任意のアンバランスに応じてオブジェクトのストレージ位置の割り当てを重み付け又はバイアスを掛けることができるように、その直下にあるストレージシステムノードの機能を説明する１又は複数の重み付け値を受け取る。
【００１５】
さらなる実施形態において、オブジェクトストレージシステムの階層ツリー内の各ノードにシード値が割り当てられてよい。シード値は、ハッシュ化計算に使用されるランダムに選ばれた数字である。様々な実施形態において、前述の１又は複数の重み付け係数は、特定のノードで乱数生成部への入力値として提示される。次に、乱数生成部は、ノードのハッシュ関数に対するシード値を生成する。このようにして、ツリー内の各ノードは、シード値を生成し、次に、当該シード値を用いて、要求が向けられるべき次の下位ノードを決定するために、ノードにより受け取られる各要求のオブジェクト名を用いてハッシュを実行する。
【００１６】
そのため、各ノードにおいて生成されたシード値は、（すべての下位ノードが等しく、要求が下位ノードにランダムにマッピングされるべきである場合）乱数生成部から生成されていることに起因して一部の不規則性を含む。そのため、どの下位ノードに要求がマッピングされるかを決定した場合、重み付けは、（例えば、少ないストレージ容量を有する）あるノードよりも、（例えば、より多くのストレージ容量を有する）別のノードを優先させるようにハッシュ関数を実行するシード値の不規則性に対して一部のバイアスを与える。代替的な実施形態において、重み付け係数は、システムの複数のノードに対するシード値を計算するランダム発生器を有する集中管理される場所（例えば、オブジェクトストレージシステムの階層ツリーの理解を維持する）に送信されてよい。次に、集中管理される場所は、これらのそれぞれのハッシュ関数による組み込みのために異なるノードに適切なシード値を送信してよい。
【００１７】
実施形態において、その対応するオブジェクト名、入力した重み付け係数及びシード値を用いた複数のハッシュ化アルゴリズムのうちの任意の特定の１つの実行は、ハッシュ化レベルの直下にあるノードのすべてについてのランキングを生成することである。次に、当該ハッシュ化アルゴリズムは、最も高くランク付けされたノードをオブジェクトがマッピングされるべきノードとして選ぶ（すなわち、オブジェクトの割り当てストレージ位置が、選択されたノードに割り当てられる位置アドレスの範囲内に含まれる）。
【００１８】
様々な実施形態において、各ノードレベルは、全体的なオブジェクトストレージの解決策においてハードウェアの異なる要素に対応する。図２の例示的なシステムにおいて最上位のノードレベル２０１は、ストレージサーバのラックに対応する。ここで、従来技術において知られているように、ラックは、通常、棚の空間を有する１又は複数のキャビネットとして実装され、そうでなければ、電子機器を安全に積み重ねるように据え付けられている。オブジェクトストレージシステムの場合、ラックは、ストレージサーバを積み重ね、それは、例えば、サーバコンピュータのより高い帯域幅のＩ／Ｏインタフェースのほとんど／すべてを、例えば、不揮発性大容量ストレージデバイス（例えば、ソリッドステートデバイス（例えば、フラッシュＳＤＤ）及び／又はハードディスクドライブ）に結合させることにより、ストレージを強調するサーバである。
【００１９】
図２の例示的なシステムにおいて、複数の最上位レベルのノード２０１が異なるラックに対応する場合、特定のラック／ノードの直下にあるすぐ下位レベルのノード２０２のそれぞれは、ラックに積み重ねられる異なるストレージサーバに対応する。次に、図２において特定のストレージサーバノードの下位にある各リーフノードは、特定のサーバノードと統合される特定の不揮発性大容量ストレージデバイスに対応する（例えば、サーバの高帯域幅Ｉ／Ｏインタフェースのうちの１つに結合される）。この例から、オブジェクトストレージシステムが規模を拡張し、及び／又は、より粒度が細かくされたハードウェア境界がノードレベルごとに所望されるにつれて、上位レベルのノードが最上位レベルのノードの上位に追加されるかもしれない。
【００２０】
例えば、拡張について、図２に見つけられるラックのセット及び対応する機器が、第１のデータセンタ内にある機器のセットに対応しており、その結果、より多くのデータセンタを含むようにシステムが拡張される場合、上位レベルのノードは、各追加された上位レベルのノードが異なるデータセンタに対応するように、図２に見つけられるこれらに追加されることができる。
【００２１】
より粒度が細かくされたハードウェア境界について、例えば、たとえ図２に見つけられる機器が同一のデータセンタ内にある機器に対応していたとしても、ラックの異なるグループは、データセンタ内の異なるローカルエリアネットワークに結合され得る。そのため、各追加された上位レベルのノードが特定のローカルエリアネットワークへのゲートウェイに対応する場所に、上位レベルのノードは追加されてよく、各追加された上位レベルのノードの下位にあるラック／ノードは、上位レベルのノードにより表されるローカルエリアネットワークに結合されるラックに対応する。追加のノードは、ラック内のより細かい粒度のハードウェア境界を導入するために、ラックレベルの下に追加されてもよい。例えば、ノードレベルは、特定のストレージサーバの同一のＩ／Ｏインタフェースに結合されるこれらの大容量ストレージデバイスをグループ化するために、ストレージサーバレベルと大容量ストレージデバイスレベルとの間に追加されてよい。
【００２２】
とにかく、アーキテクチャは、特定の下位レベルのハードウェアリソースにオブジェクトをマッピングする目的で様々なタイプのハードウェアリソースにおけるオブジェクトストレージのハッシュ関数の導入を含んでよく、ハードウェアリソースは、オブジェクトストレージシステムのための集中管理されるオブジェクトマッピング機能（その目的は、単一のハッシュ化演算からオブジェクトのストレージ位置を明確に定義するグローバルオブジェクトマッピングを決定することである）よりはむしろ、ストレージハードウェアインフラストラクチャ自体のコンポーネントであることに留意する。
【００２３】
すなわち、図２の新たな手法は、ある程度、図１に関して上述したような集中管理されるオブジェクトマッピング機能を取り入れるものとみなされ得るが、それを分散させるだけでなく、ストレージハードウェア自体の複数のより低い階層レベル（例えば、ローカルエリアネットワークゲートウェイ、ラックに統合されるネットワークゲートウェイ、ストレージサーバ、ストレージサーバＩ／Ｏインタフェースへのインタフェースなど）まで分散させる。
【００２４】
ストレージハードウェアの異なるレベルを介して特定のオブジェクトに対する最終的なストレージ位置を全面的に解決するために必要とされるハッシュ関数アクティビティを分散させることは、ストレージ容量の追加又は撤去後のオブジェクトの再配置からストレージシステム全体を保護するのに役立つ。ここで、単一のグローバルハッシュ関数は、図２のハッシュ構成に従って構成されるオブジェクトストレージシステムよりも、ストレージノードの追加／撤去に応じたより破壊的なやり方で異なるストレージ位置に対するオブジェクトの名前を解決させる傾向がある。
【００２５】
数学的な性質を定性的に説明すると、単一のハッシュ関数がシステム内のすべてのオブジェクトのストレージ位置を決定する役割を単独で担う場合、システムのストレージ容量に対する単独の変化は（たとえ小さいものであっても）、物理的に離れた新たな位置に（例えば、新たなローカルネットワークに、異なるラックに、など）、多数のオブジェクト名を突然マッピングさせる可能性がある。この特定の影響を抑えるために、オブジェクトストレージシステムは、従来、他のハッシュ関数よりもむしろストレージ容量変化に応じてマッピング変化の数を数学的に低減させる一貫性のあるハッシュ化アルゴリズムを用いて実装されてきた。しかしながら、もしかしたら、再配置が結果として生じることで、システムにわたってオブジェクトの大幅な物理的輸送をさらに必要とするかもしれない。
【００２６】
しかしながら、ハッシュ化のシーケンスがその「スレッド」をより高いハードウェアレベルからより低いハードウェアレベルを処理するように、ハッシュ化アクティビティ全体を実装する図２のオブジェクトストレージシステムは、システムのより小さい（下位レベル）領域のみが変更した場合に、システムの多くが変化しないままであるという事実をハッシュ構成が説明する可能性が高いので、少なくとも下位レベルのノード変更に対して、一貫性のあるハッシュ化アルゴリズムよりもむしろさらに低い物理的オブジェクト輸送障害を示す可能性がある。
【００２７】
すなわち、図２を参照すると、新たな大容量ストレージデバイスがストレージサーバＳＳ＿１＿１へ／から追加／削除される場合には、残りのストレージサーバのストレージ容量がレベル２０２にわたって変化しないままであることに留意する。故に、理想的には、ストレージ容量の変化から生じるマッピング変化のすべてではないにしてもその多くは、ストレージサーバＳＳ＿１＿１内で保持され得る。ある意味では、下位ノードでの小さな変化は、上位レベルのハッシュ関数に対して「リップルアップ（ｒｉｐｐｌｅ  ｕｐ）」しておらず（すなわち、ほとんどリップルアップしない）、それは、次に、システムにおけるノードの関係性がほとんどない／全くないノードのマッピングに対する最小限の変化につながる。紫
【００２８】
実際には、これは、変化に応じて上位レベルのハッシュ関数に適用される重み付け係数に対する任意の変化があったとしてもごくわずかであることにより表される。ここで、単一の大容量ストレージデバイスのみが、ストレージサーバＳＳ＿１＿!へ／から追加／削除されたとしても、ラック（ラック＿１）の総ストレージ容量はほとんど変化せず、次に、もしあったとしても、最上位レベルのハッシュ関数２１１に提供される重み付け値に対してほんのささいな変化をもたらすだけである。すなわち、例えば、ラック＿１が表すオブジェクトストレージ全体の容量の割合はほぼ無視でき、故に、最上位のハッシュ化レベル２１１に提供される重み付け値は、それに応じてほぼ無視できるほどの変化を受けるだろう。そのため、最上位のハッシュ化レベル２１１で行われるマッピングの決定は、全く何の変化も受けないだろう。
【００２９】
逆の観点では、変化が発生する場所のすぐ上位に存在する最下位のハッシュ化レベル２１３（サーバＳＳ＿１＿１のハッシュ関数）に提供される重み付け値は、さらに顕著な変化がみられる（サーバＳＳ＿１＿１へ／からのストレージデバイスの追加／撤去が、サーバの総ストレージ容量を著しく変化させる）かもしれない。そのため、サーバＳＳ＿１＿１内でのかなり大幅なマッピング変化及び対応するオブジェクトの移動、並びに、ラック＿１の一部である他のサーバ内でのさらに低い変化（しかし、恐らくさらに目立つ変化）があり得る。すなわち、オブジェクトのマッピング変化は、追加／撤去障害のポイントに対してよりローカルなままである。
【００３０】
この特性を促進するために、他の実施形態では、障害に対してローカルではないインスタンスをハッシュ化するための重み付け値の変更を強制的に妨げるように設計され得る。例えば、追加又は取り外される大容量ストレージデバイスをサーバＳＳ＿１＿１が有する前の例を参照すると、実施形態において、変化することが可能な重み付け値のみが、ストレージサーバＳＳ＿１＿１に対する重み付け値であり、システム内のすべての他の重み付け値は、意図的に固定されたままである。すべての他の重み付け値が変更されないようにすることにより、サーバＳＳ＿１＿１のハッシュ化インスタンス以外のすべてのハッシュ化インスタンスは、これらのオブジェクトマッピングのいずれかを修正することはない。
【００３１】
そのため、ほぼシステム全体が、容量変化に応じた任意のオブジェクトマッピング変化及び対応するオブジェクトの移動を理解していない。代わりに、すべてのマッピング変化及び対応する移動は、ストレージ容量変化の結果生じるサーバＳＳ＿１＿１内に強制的に限られている。ここで、インスタンスに関して、重み付け値は、ある閾値量の容量変化が特定のノードで起こらない限り容量変化に応じて固定されたままであってよい。例えば、サーバＳＳ＿１＿１のストレージ容量が１０％又はそれ以上を単位として変化する場合、サーバＳＳ＿１＿１を除いた他の重み付け値は、変更することが可能である（より大きいシステムが変更に適応することを可能にする）。
【００３２】
ある手法によれば、重み付け値の変更は、ストレージ容量変化の度合いに応じて、障害のポイントから外側へ拡張することを可能にする。例えば、サーバＳＳ＿１＿１のストレージ容量が２０％未満の単位で変化した場合には、サーバＳＳ＿１＿１のハッシュ関数のインスタンスについての重み付け値のみが変更することを可能にする。これは、サーバＳＳ＿１＿１内にオブジェクトの再配置を保持する。一方、サーバＳＳ＿１＿１のストレージ容量が２０％と４０％との間で変化する場合、ラック＿１及びサーバＳＳ＿１＿１のハッシュ化インスタンスに対する重み付け値が変更されることを可能にする（が、すべての他のハッシュ化インスタンスに対する重み付け値は、依然として固定されている）。これは、ラック＿１のサーバＳＳ＿１＿１からＳＳ＿１＿Ｎ内でのオブジェクトの再配置を保持する。さらにもっと言えば、サーバＳＳ＿１＿１のストレージ容量が、４０％以上の単位で変化する場合、最上位レベルのハッシュ化インスタンス２１１、ラック＿１のハッシュ化インスタンス及びサーバＳＳ＿１＿１のハッシュ化インスタンスに対する重み付け値は、それに応じて変更されることが可能である。これは、ラック間のオブジェクトの移動をもたらし得るが、ハッシュ関数２１１に対する重み付け変化は、ラック＿１のハッシュ化インスタンス又はサーバＳＳ＿１＿１のハッシュ化インスタンスに対する重み付け変化よりもはるかに小さい。
【００３３】
ストレージ容量変化に応じて重み付け値を固定したままにすることは、ストレージ容量変化が小さいだけでなく一時的である場合に特に役立ち得る。例えば、大容量ストレージデバイスが維持される場合である。この場合、大容量ストレージデバイスは、一時的にオフライン（そのデータを確実に保持できるが、メンテナンス手順の間、任意の読み取り又は書き込み要求を処理できない）なだけである可能性がある。一実施形態によれば、大容量ストレージデバイスが維持されており、一時的にオフラインである場合、大容量ストレージデバイスのサーバ又はストレージシステム内の他の箇所において変更される重み付け値はない。
【００３４】
ここで、オフラインのデバイスにマッピングする、オフラインのデバイスのサーバにより受け取られた任意の読み取り又は書き込み要求は、一時的にオフラインの大容量ストレージデバイスと同一のサーバにおいて１又は複数の稼働中の大容量ストレージデバイスの自由（未使用）ストレージ容量内に一時的にキューイングされる。メンテナンスが完了した場合、サーバの自由ストレージ空間にキューイングされた読み取り又は書き込み要求は、次に、それらを処理できるように、大容量ストレージデバイスに対して「再生」される（それは、維持されている間に「見逃された」要求のストリームを受け取る）。
【００３５】
特定のタイプのハッシュ化アルゴリズムに関して、ランデブーハッシュ化アルゴリズムは、ハッシュの出力に、いくらかの意図的なアンバランスを与えるべく、上述したような重み付けを承諾することが可能である。このように、様々な実施形態では、図２のハッシュ化アルゴリズム２１１、２１２、２１３のそれぞれは、ランデブーハッシュ化アルゴリズムとして実装される。様々な実施形態では、重み付け値は、それぞれすぐ下位のノードの存在、及び、そのようなすぐ下位のノードのそれぞれに対するいくらかの容量及び／又は性能測定基準を示す。
【００３６】
ここで、例示の利便性については図２に示されていないが、オブジェクトストレージシステムは、ストレージサーバ２０２に通信可能に結合され、これらのストレージ容量レベルの認識、これらのストレージ容量レベルの変化、これらのＩ／Ｏ帯域幅の機能、これらの帯域幅の機能の変更などを維持する少なくとも１つのコンピューティングシステムに実装される集中型又は分散型の管理機能を含んでよい。この認識から、管理機能は、各ハッシュ化レベルに対する重み付け値を作成し、それらを適切な場合に（例えば、容量変化に応じて）ハッシュ化レベルへ提供する。管理機能はまた、例えば、ハッシュ関数への重み付け値の新たなセットの送信を引き起こすパーセント容量変化及び対応するパーセント容量変化の閾値を維持してよい。
【００３７】
各ハッシュ関数のインスタンスは、専用のハードウェア論理回路、プログラマブル論理回路（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラマブル論理アレイ（ＰＬＡ）、プログラマブル論理デバイス（ＰＬＤ）など）、又は、ある形式のプログラムコードを実行する論理回路（例えば、汎用プロセッサ（埋め込み型又はその他）、専用プロセッサ（例えば、デジタル信号プロセッサ（ＤＳＰ）など）又はこれらの任意の組み合わせ）と共に実装されてよい。そのような回路は、例えば、１）ネットワークゲートウェイ、ネットワーキングスイッチ及び／又はネットワーキングルータ、２）ストレージサーバ、３）オブジェクトストレージシステムへのゲートウェイとしての機能を果たすプロキシサーバ又はサーバ、４）複数の大容量ストレージデバイスが取り付けるストレージサーバのＩ／Ｏインタフェースなどのオブジェクトストレージシステムの多数の異なるハードウェアシステム／コンポーネントのうちのいずれかに配置されてよい。
【００３８】
ストレージサーバ及びプロキシサーバのいずれかは、コンピューティングシステムと共に実装されてよい。さらに、ネットワーキング機器の要素（ゲートウェイ／スイッチ／ルータ）は、コンピューティングシステムのベーシックコンポーネントという点で共通してよい、又は、そうでなければ、コンピューティングシステムのベーシックコンポーネントを含んでよい。例えば、ネットワーキング機器は、通常、ＣＰＵコアにより実行されるプログラムコード及びデータを保持する１又は複数のＣＰＵコア及びメモリを含む管理制御機能を含む。とにかく、上述したように、ハッシュ関数は、専用の論理回路、プログラマブル論理回路、プログラムコード実行、又は、コンピューティングシステム若しくはネットワーキングシステムのいずれかの内のこれらの任意の組み合わせ、のいずれかにより実装されてよい。ネットワーキング機器は、スイッチング論理回路及び／又はルーティング論理回路、及び、入力／出口ポートのいずれかを含んでよい。要求は、入力ポートで受け取られ、正しい次の下位レベルのノードが到達され得る適切な出口ポートに要求を向けるために、ハッシュ結果に従ってスイッチング／ルーティング論理回路により処理される。
【００３９】
上記の説明が、本質的には、その名前に基づいてオブジェクトのストレージ位置を決定するためのプロセスに着目していることに留意する。大まかには、オブジェクトのオペレーションは、ＰＵＴオペレーション（新たなオブジェクトがシステムに入力され、利用可能なストレージ容量に向けられる）、ＧＥＴオペレーション（オブジェクトを取得するために、読み取り要求が正しいストレージ位置に向けられる読み取りオペレーションとして動作する）、ＭＯＤＩＦＹオペレーション（システムに格納された存在するオブジェクトを介して書き込まれる新たなデータを含む書き込み要求が、当該オブジェクトの正しいストレージ位置に向けられる書き込みオペレーションとして動作する）、及び、ＤＥＬＥＴＥオペレーション（ストレージハードウェアが、オブジェクトを削除するよう命令されることができ、又は、オブジェクトの上書きを許可することができるように、オブジェクトを削除するコマンドが正しいストレージ位置に向けられる）を含む。
【００４０】
これらのオペレーションのそれぞれについて、様々な実施形態では、要求は、システムを介した要求の伝播が、上記で説明されたマルチレベルハッシュ化シーケンスと共に一貫して実行されるオブジェクトの適切なストレージ位置に向けられる（例えば、要求は、インフラストラクチャハードウェアの複数のレベルでハッシュされるオブジェクトの名前を含む）。しかしながら、要求が異なると、要求に付属される項目も異なる。具体的には、ＰＵＴの場合、新たなオブジェクトが要求に付け加えられる。ＧＥＴの場合、要求に付け加えられる必要があるオブジェクトデータはない。ＭＯＤＩＦＹの場合、オブジェクトに対する新たなデータ（又は、オブジェクトの新たなバージョン）が、要求に付け加えられる。ＤＥＬＥＴＥオペレーションの場合、要求に付け加えられる必要があるオブジェクトデータはない。
【００４１】
上記の実施形態は、すべてのノードがそれらと関連付けられるハードウェアを有することを示しているが、様々な実施形態では、ノードは、純粋に論理的であってよく、それらについてのハードウェア特性を有していない。この場合、そのような論理ノードは、それらの下位にあるノードの重み付けを包含するが、それらに追加することはない。ある意味では、論理ノードの下位にある重み付け係数は、論理ノードを介して上位レベルのノードに渡される。
【００４２】
様々な実施形態において、いくつかの上位レベルの目的を達成するために、管理者は、下位ノードの分析がそうでなければ提示するものとは異なる重み付け係数を設定してよい、及び／又は、たとえ下位ノードに対する変更があっても、重み付け係数が変更されないようにしてよい。
【００４３】
図３は、上記で説明した方法を示す。方法は、オブジェクトストレージシステムの第１のハードウェア要素を用いてオブジェクトの名前に対する第１のハッシュを実行する段階３０１を含み、オブジェクトの名前は、オブジェクトと関連付けられる要求の一部であり、第１のハッシュの結果は、オブジェクトストレージシステム内のハードウェア要素の階層配置における第１のハードウェア要素の直下にある第２のハードウェア要素を識別する。方法はまた、第２のハードウェア要素に要求を送信する段階３０２を含む。方法はまた、第２のハードウェア要素を用いてオブジェクトの名前に対して第２のハッシュを実行する段階３０３を含み、第２のハッシュの結果は、階層配置において第２のハードウェア要素の直下にある第３のハードウェア要素を識別する。方法はまた、オブジェクトストレージシステムにより処理される方向で要求を進めるべく、第３のハードウェア要素に要求を送信する段階３０４を含む。
【００４４】
図４は、コンピューティングシステム４００の例示的な表現（例えば、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、サーバコンピュータなど）を提供する。図４に見つけられるように、ベーシックコンピューティングシステム４００は、中央処理装置４０１（例えば、複数の汎用処理コア４１５_１から４１５_Ｘを含んでよい）と、マルチコアプロセッサ又はアプリケーションプロセッサ上に配置されるメインメモリコントローラ４１７と、システムメモリ４０２と、ディスプレイ４０３（例えば、タッチスクリーン、フラットパネル）と、ローカル有線ポイントツーポイントリンク（例えば、ＵＳＢ）インタフェース４０４と、様々なネットワークＩ／Ｏ機能４０５（例えば、イーサネット（登録商標）インタフェース及び／又はセルラモデムサブシステム）と、無線ローカルエリアネットワーク（例えば、ＷｉＦｉ（登録商標））インタフェース４０６と、無線ポイントツーポイントリンク（例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標））インタフェース４０７及びグローバルポジショニングシステムインタフェース４０８と、様々なセンサ４０９_１から４０９_Ｙと、１又は複数のカメラ４１０と、バッテリ４１１と、電力管理制御ユニット４１２と、スピーカ及びマイク４１３と、オーディオコーダ／デコーダ４１４とを含んでよい。
【００４５】
アプリケーションプロセッサ又はマルチコアプロセッサ４５０は、そのＣＰＵ４０１内の１又は複数の汎用処理コア４１５と、１又は複数のグラフィカル処理ユニット４１６と、メモリ管理機能４１７（例えば、メモリコントローラ）と、Ｉ／Ｏ制御機能４１８とを含んでよい。汎用処理コア４１５は、典型的には、コンピューティングシステムのオペレーティングシステム及びアプリケーションソフトウェアを実行する。グラフィック処理ユニット４１６は、典型的には、グラフィック集約機能を実行して、例えば、ディスプレイ４０３に提示されるグラフィック情報を生成する。メモリ制御機能４１７は、システムメモリ４０２へ／からデータを書き込む／読み取るために、システムメモリ４０２とインタフェース接続される。永続性メモリ（例えば、３Ｄ  ＸＰｏｉｎｔメモリ）に対する詳細を追加するものと仮定する。電力管理制御ユニット４１２は、大まかに、システム４００の電力消費を制御する。
【００４６】
タッチスクリーンディスプレイ４０３、通信インタフェース４０４−４０７、ＧＰＳインタフェース４０８、センサ４０９、カメラ４１０及びスピーカ／マイクコーデック４１３、４１４のそれぞれはすべて、同様に統合された周辺デバイス（例えば、１又は複数のカメラ４１０）を適切な場所に含むコンピューティングシステム全体に関連する様々な形式のＩ／Ｏ（入力及び／又は出力）として示され得る。実装に応じて、これらＩ／Ｏコンポーネントの様々なコンポーネントは、アプリケーションプロセッサ／マルチコアプロセッサ４５０上に統合されてよい、又は、ダイから離れて、又は、アプリケーションプロセッサ／マルチコアプロセッサ４５０のパッケージの外側に配置されてよい。コンピューティングシステムは、システムの大容量ストレージコンポーネントであり得る不揮発性ストレージ４２０も含む。
【００４７】
プロセッサ４５０は、ＣＰＵコア４１５の１又は複数で実行する様々なモニタリングプログラムのオペレーション全体を改善するべく、上述したような埋め込み型のＮＶＲＡＭを含んでもよい。
【００４８】
本発明の実施形態は、上記で説明されたような様々な処理を含んでよい。当該処理は、機械実行可能命令において具体化されてよい。当該命令は、汎用又は専用プロセッサに特定の処理を実行させるために用いられ得る。代わりに、これらの処理は、処理を実行するためのハードワイヤード論理回路又はプログラマブル論理回路（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラマブル論理デバイス（ＰＬＤ））を含む特定／カスタムハードウェアコンポーネントにより、又は、プログラミングされたコンピュータコンポーネントとカスタムハードウェアコンポーネントとの任意の組み合わせにより実行されてよい。
【００４９】
本発明の要素は、機械実行可能命令を格納するための機械可読媒体として提供されてもよい。機械可読媒体は、限定されることはないが、フロッピーディスク、光ディスク、ＣＤ−ＲＯＭ及び磁気−光ディスク、フラッシュメモリ、ＲＯＭ、ＲＡＭ，ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気又は光カード、伝播媒体、又は、電子命令を格納するのに適した他のタイプの媒体／機械可読媒体を含んでよい。例えば本発明は、通信リンク（例えば、モデム又はネットワーク接続）を介して搬送波又は他の伝播媒体において具体化されるデータ信号を用いてリモートコンピュータ（例えば、サーバ）から要求コンピュータ（例えば、クライアント）に転送され得るコンピュータプログラムとしてダウンロードされてよい。
【００５０】
上述の明細書では、その特定の例示的な実施形態を参照して本発明が説明されている。しかしながら、添付の特許請求の範囲に説明されるように、本発明の幅広い趣旨及び範囲から逸脱することなく、様々な修正及び変更がそれに行われてよいことが明らかである。したがって、本明細書及び図面は、限定的な意味ではなく例示的なものとみなされる。
［項目１］
オブジェクトストレージシステムの第１のハードウェア要素を用いてオブジェクトの名前に対して第１のハッシュを実行する段階であって、上記オブジェクトの上記名前は、上記オブジェクトと関連付けられる要求の一部であり、上記第１のハッシュの結果は、上記オブジェクトストレージシステム内のハードウェア要素の階層配置において上記第１のハードウェア要素の直下にある第２のハードウェア要素を識別する、段階と、
上記第２のハードウェア要素に上記要求を送信する段階と、
上記第２のハードウェア要素を用いて上記オブジェクトの上記名前に対して第２のハッシュを実行する段階であって、上記第２のハッシュの結果は、上記階層配置において上記第２のハードウェア要素の直下にある第３のハードウェア要素を識別する、段階と、
上記オブジェクトストレージシステムにより処理される方向で上記要求を進めるべく、上記第３のハードウェア要素に上記要求を送信する段階と
を備える方法。
［項目２］
上記第３のハードウェア要素に上記オブジェクトを格納する段階であって、上記第３のハードウェア要素は、大容量ストレージデバイスである、段階をさらに備える、項目１に記載の方法。
［項目３］
上記第２のハードウェア要素及び上記第３のハードウェア要素のうちの一方は、複数の大容量ストレージデバイスを有するストレージサーバである、項目１に記載の方法。
［項目４］
上記ハードウェア要素のうちの１つは、ストレージサーバのラック用のネットワーキングゲートウェイである、項目１に記載の方法。
［項目５］
上記第１のハッシュは、上記第１のハードウェア要素の直下にある上記階層配置の上記構造を説明する第１の重み付け情報を包含する、項目１に記載の方法。
［項目６］
上記第１のハッシュは、上記第２のハードウェア要素の直下にある上記階層配置の上記構造を説明する第２の重み付け情報を包含する、項目５に記載の方法。
［項目７］
上記第２のハードウェア要素の下位にある上記オブジェクトストレージシステム内の変化を反映するべく、上記第１の重み付け情報及び第２の重み付け情報を修正する段階であって、上記第１の重み付け情報の変化は、上記第２の重み付け情報の変化より小さい、段階をさらに備える、項目６に記載の方法。
［項目８］
上記第３のハードウェア要素は、上記要求が処理される大容量ストレージデバイスであり、上記方法は、
上記大容量ストレージデバイスがオフライン状態に一時的に入ったことに応じて、上記オブジェクトストレージシステムの未使用のストレージ容量内の上記大容量ストレージデバイスに向けられた要求をキューイングする段階と、
上記大容量ストレージデバイスがオンライン状態に戻った後に、上記大容量ストレージデバイスに対する上記要求を再生する段階と
をさらに備える、項目１に記載の方法。
［項目９］
上記未使用のストレージ容量は、上記大容量ストレージデバイスが一部であるものと同一のストレージサーバの一部である、項目８に記載の方法。
［項目１０］
上記第１のハッシュ及び第２のハッシュに提供される重み付け値は、上記大容量ストレージデバイスが上記オフライン状態に入ることに応じては変更されない、項目９に記載の方法。
［項目１１］  オブジェクトストレージシステムのオブジェクトの名前に対するハッシュを実行する論理回路を有する半導体チップを備え、上記ハッシュは、オブジェクトストレージシステム内のハードウェア要素の階層配置における第１のハードウェア要素により実行され、上記名前は、上記オブジェクトと関連付けられる要求の一部であり、上記ハッシュの結果は、上記階層配置において上記第１のハードウェア要素の直下にある第２のハードウェア要素を識別し、上記要求は、上記オブジェクトストレージシステムにより処理される方向で上記要求を進めるべく、上記第２のハードウェア要素に送信され、上記ハッシュは、ハードウェア要素の上記階層配置において上記ハードウェア要素の下位にあるハードウェア要素の性能特性を説明する１又は複数の重み付け係数を包含する、装置。
［項目１２］
上記論理回路は、
専用のハードワイヤード論理回路と、
プログラマブル論理回路と、
プログラムコードを実行する論理回路との任意の組み合わせである、項目１１に記載の装置。
［項目１３］
上記半導体チップは、オブジェクトストレージシステムのハードウェア要素に統合される、項目１１に記載の装置。
［項目１４］
上記オブジェクトストレージシステムのハードウェア要素は、
プロキシサーバと、
ネットワーキングスイッチと、
ラックゲートウェイと、
ストレージサーバと、
複数の大容量ストレージデバイスが結合されるＩ／Ｏインタフェースと
のうちのいずれかである、項目１２に記載の装置。
［項目１５］
上記オブジェクトストレージシステムのハードウェア要素は、上記オブジェクトストレージシステムに機能的に統合される、項目１４に記載の装置。
［項目１６］
オブジェクトストレージシステム内のハードウェア要素の階層配置における第１のハードウェア要素のプロセッサにより処理されるときに、上記プロセッサに
上記オブジェクトストレージシステムのオブジェクトの名前に対するハッシュを実行する段階であって、上記名前は、上記オブジェクトと関連付けられる要求の一部であり、上記ハッシュの結果は、上記階層配置において上記第１のハードウェア要素の直下にある第２のハードウェア要素を識別し、上記要求は、上記オブジェクトストレージシステムにより処理される方向で上記要求を進めるべく、上記第２のハードウェア要素に送信される、段階
を備える方法を実施させるプログラムコードを含む機械可読記憶媒体。
［項目１７］
上記ハッシュは、上記第１のハードウェア要素の直下にある上記階層配置の上記構造を説明する重み付け情報を包含する、項目１６に記載の機械可読媒体。
［項目１８］
上記第２のハードウェア要素の下位にある上記オブジェクトストレージシステムにおける変化を反映するべく、上記重み付け情報を修正する段階をさらに備える、項目１７に記載の機械可読媒体。
［項目１９］
上記重み付け情報は、上記階層における上記第１の要素の下位の変化が閾値を通過していない場合、不変のままである、項目１７に記載の機械可読媒体。
［項目２０］
上記第１のハードウェア要素は、
コンピューティングシステムと、
ネットワーキングシステムと
のうちのいずれかである、項目１６に記載の機械可読媒体。
［項目２１］
オブジェクトストレージシステムの複数のノードの階層配置のリーフノードに関する重み付け係数を決定する段階であって、上記リーフノードは、ストレージデバイスに対応し、上記重み付け係数は、上記ストレージデバイスの性能特性を説明する、段階と、
上記オブジェクトストレージシステムの複数のノードの階層配置において上記リーフノードの上位にある中間ノードに対する重み付け係数を決定する段階であって、上記中間ノードの上記重み付け係数は、上記オブジェクトストレージシステムの複数のノードの配置において、それぞれの下位ノードの性能特性を包含する、段階と、
上記オブジェクトストレージシステムのノードの階層配置の深いレベルに配置されたそれぞれのハッシュ関数で、オブジェクトの名前をハッシュ化することにより、上記オブジェクトストレージシステム内のストレージに上記オブジェクトをマッピングする段階であって、上記ハッシュ関数は、上記オブジェクトストレージシステムの複数のノードの配置においてそれぞれの下位ノードの性能特性を説明する上記重み付け係数のうちの特定のいくつかを包含する、段階と
を備える方法。
【図１】
2019204489.tif 000003
【図２】
2019204489.tif 000004
【図３】
2019204489.tif 000005
【図４】
2019204489.tif 000006
【外国語明細書】
2019204489000001.pdf