JP7234479B2 - ストレージアドレスの決定に関してマルチレベルハッシュ関数を用いるオブジェクトストレージシステム - Google Patents

ストレージアドレスの決定に関してマルチレベルハッシュ関数を用いるオブジェクトストレージシステム Download PDF

Info

Publication number
JP7234479B2
JP7234479B2 JP2019023832A JP2019023832A JP7234479B2 JP 7234479 B2 JP7234479 B2 JP 7234479B2 JP 2019023832 A JP2019023832 A JP 2019023832A JP 2019023832 A JP2019023832 A JP 2019023832A JP 7234479 B2 JP7234479 B2 JP 7234479B2
Authority
JP
Japan
Prior art keywords
hardware element
hash
storage system
hardware
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019023832A
Other languages
English (en)
Other versions
JP2019204489A (ja
Inventor
ジェイ. クマー モハン
アール. チャガム レディー アンジャネヤ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JP2019204489A publication Critical patent/JP2019204489A/ja
Application granted granted Critical
Publication of JP7234479B2 publication Critical patent/JP7234479B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Description

本発明の技術分野は、大まかには、コンピューティング科学、より具体的には、ストレージアドレスの決定に関してマルチレベルハッシュ関数を用いるオブジェクトストレージシステムに関する。
今日のコンピューティングに関するインフラストラクチャ環境としてクラウドコンピューティング及び高性能なデータセンタの出現に伴い、大規模データストレージにおけるイノベーションがなされている。オブジェクトストレージと称されるある特定の新たなストレージ手法は、非常に用途の広い入力名前空間、分散型ストレージノードを用いたオペレーションの容易さ、及び、対応する大規模なストレージ容量により特徴付けられる。しかしながら、実際に稼働するオブジェクトストレージシステムを実装するために必要とされるハードウェア及び/又はソフトウェアを物理的に構築することを試みる場合、実用的なイノベーションの向上の機会につながる実用的な実装上の問題点に気づかされるかもしれない。
以下の図面と共に以下の詳細な説明から、本発明のより良い理解を得ることができる。
従来技術のオブジェクトストレージシステムを示す。
改良されたオブジェクトストレージシステムを示す。
改良されたオブジェクトストレージシステムにより実行される方法を示す。
コンピューティングシステムを示す。
オブジェクトストレージシステムに関する問題は、ストレージノードがシステムに追加又はシステムから削除された結果としてのデータオブジェクトの移動である。ここで、図1に見つけられるように、オブジェクトストレージシステム100は、ネットワーク102に通信可能に結合される多数のストレージノード101と共に通常実装される。各ストレージノードは、関連付けられたストレージ位置及び対応するストレージ位置のアドレスを有する1又は複数の大容量ストレージデバイスを含む。
クライアントが、システム100内のストレージにオブジェクトを提出した場合、システムは、クライアントによりオブジェクトに与えられた名前(例えば、オブジェクト用のディレクトリファイルパス、オブジェクトに割り当てられる一意の識別子など)に対してハッシュ化演算を実行する。ハッシュ化演算の出力は、オブジェクトが格納されるシステム内のストレージ位置のアドレスを本質的には生成する。システム101におけるストレージノードのそれぞれは、オブジェクトのストレージ位置のアドレスの異なる範囲を割り当てられる。新たなストレージノードがシステムに追加され、又は、システムから削除された場合、ストレージノードごとのオブジェクトのアドレス位置の割り当てを変更することにより、これらの現在のストレージノードから新たなストレージノードに一部のオブジェクトを移動する必要がある。
図2は、改良されたオブジェクトストレージシステム設計200を示す。図2のオブジェクトストレージシステム設計によれば、システムのアーキテクチャは、ツリーの各上位レベルのノードがその下位にある下位レベルのノードに属するノードツリーの形式をとる。ツリーの最下位レベル203は、実際のストレージ媒体デバイス(例えば、フラッシュドライブ、ハードディスクドライブなど)を有するリーフノードに対応する。さらに、各ノードレベルは、特定のオブジェクトがその名前に基づいてマッピングされるノードレベルにおいて特定のノードを識別する、そのノードレベルに対する専用のハッシュ関数が先行する。簡単にするために、図2は、3つのノードレベル201、202、203のみ(故に、それらに先行する3つのハッシュ関数211、212、213)有するオブジェクトストレージシステム200を示す。しかしながら、追加のノードレベル及び対応するハッシュ関数が図2の3レベルシステムに追加され得ることを読み手は理解するだろう。
図2を参照すると、新たなオブジェクトが、システムに格納される場合、第1のハッシュ関数211は、複数の最上位レベルのノード201のうちのどれにオブジェクトがマッピングされるべきかを決定し、当該オブジェクトは、ネットワーク204を介してそのノードに送信される。最上位レベルのノード201のそれぞれは、第2のハッシュ関数212のインスタンスを含む。オブジェクトがマッピングされた特定の最上位レベルのノードは、第2のハッシュ関数212を用いてオブジェクト名に対する第2のハッシュを算出する。その結果は、オブジェクトがマッピングする次の下位レベル202におけるノードを識別し、オブジェクトは、そのノードにネットワークを介して送信される。次の下位レベルのノードはまた、第3のハッシュ関数213のインスタンスを含む。オブジェクトがマッピングした特定の次の下位レベルのノードは、オブジェクト名に対する第3のハッシュを算出する。その結果は、オブジェクトがマッピングする最下位リーフノードレベル203におけるノードを識別する。オブジェクトは、リーフノードに送信されて、内部に格納される。
さらに、ハッシュ関数の下位にあるオブジェクトストレージシステムの構造が同様にバイアスを掛けられ、又は、アンバランスな場合、ハッシュ化アルゴリズム211、212、213のそれぞれは、いくらかのバイアスを与えるために重み付けされ、そうでなければ、意図的にアンバランスなやり方ですぐ下位のノードにオブジェクトを割り当てる。例えば、第1のすぐ下位のノードは、その下位にあるストレージ容量を及び/又はI/O帯域幅を、第2のすぐ下位のノードよりも多く有し、第1のノード及び第2のノードに供給するハッシュ関数は、第2のノードよりも第1のノードにより多くのオブジェクトをマッピングするように構成される。
ここで、各ハッシュ関数211、212、213は、その直下にあるストレージシステム構造の一部の説明を用いて提示される。説明は、本質的には、例えば、オブジェクトをマッピングする各ノードに、及び/又は、その下位にある総ストレージ容量、帯域幅容量、媒体のタイプ、プロセッサ速度などを説明する。説明は、子ノードの説明から自動的に予測されてよい。さらなる実施形態において、管理者又は管理機能は、様々なサービスレベルアグリーメントに適合するように自動的な説明設定をオーバーライドできる。
オブジェクトを上位レベルのノードにマッピングする上位レベルハッシュ化アルゴリズムの場合、上位レベルのノードのストレージ容量は、その下位にあるリーフノードの組み合わせられたストレージ容量に対応する。このように、インスタンスについて、ラック_1のストレージ容量は、ストレージサーバノードSS_1_1からSS_1_Nの組み合わせられたストレージ容量に対応する。ハッシュ化レベルの直下にある複数のノードのうちの1又は複数についての実行能力の説明はまた、様々な実施形態において、「重み付け係数」と称され得る。したがって、各ハッシュ化レベル211、212、213は、そのようなアンバランスが存在する場合、その直下にあるノードの機能における任意のアンバランスに応じてオブジェクトのストレージ位置の割り当てを重み付け又はバイアスを掛けることができるように、その直下にあるストレージシステムノードの機能を説明する1又は複数の重み付け値を受け取る。
さらなる実施形態において、オブジェクトストレージシステムの階層ツリー内の各ノードにシード値が割り当てられてよい。シード値は、ハッシュ化計算に使用されるランダムに選ばれた数字である。様々な実施形態において、前述の1又は複数の重み付け係数は、特定のノードで乱数生成部への入力値として提示される。次に、乱数生成部は、ノードのハッシュ関数に対するシード値を生成する。このようにして、ツリー内の各ノードは、シード値を生成し、次に、当該シード値を用いて、要求が向けられるべき次の下位ノードを決定するために、ノードにより受け取られる各要求のオブジェクト名を用いてハッシュを実行する。
そのため、各ノードにおいて生成されたシード値は、(すべての下位ノードが等しく、要求が下位ノードにランダムにマッピングされるべきである場合)乱数生成部から生成されていることに起因して一部の不規則性を含む。そのため、どの下位ノードに要求がマッピングされるかを決定した場合、重み付けは、(例えば、少ないストレージ容量を有する)あるノードよりも、(例えば、より多くのストレージ容量を有する)別のノードを優先させるようにハッシュ関数を実行するシード値の不規則性に対して一部のバイアスを与える。代替的な実施形態において、重み付け係数は、システムの複数のノードに対するシード値を計算するランダム発生器を有する集中管理される場所(例えば、オブジェクトストレージシステムの階層ツリーの理解を維持する)に送信されてよい。次に、集中管理される場所は、これらのそれぞれのハッシュ関数による組み込みのために異なるノードに適切なシード値を送信してよい。
実施形態において、その対応するオブジェクト名、入力した重み付け係数及びシード値を用いた複数のハッシュ化アルゴリズムのうちの任意の特定の1つの実行は、ハッシュ化レベルの直下にあるノードのすべてについてのランキングを生成することである。次に、当該ハッシュ化アルゴリズムは、最も高くランク付けされたノードをオブジェクトがマッピングされるべきノードとして選ぶ(すなわち、オブジェクトの割り当てストレージ位置が、選択されたノードに割り当てられる位置アドレスの範囲内に含まれる)。
様々な実施形態において、各ノードレベルは、全体的なオブジェクトストレージの解決策においてハードウェアの異なる要素に対応する。図2の例示的なシステムにおいて最上位のノードレベル201は、ストレージサーバのラックに対応する。ここで、従来技術において知られているように、ラックは、通常、棚の空間を有する1又は複数のキャビネットとして実装され、そうでなければ、電子機器を安全に積み重ねるように据え付けられている。オブジェクトストレージシステムの場合、ラックは、ストレージサーバを積み重ね、それは、例えば、サーバコンピュータのより高い帯域幅のI/Oインタフェースのほとんど/すべてを、例えば、不揮発性大容量ストレージデバイス(例えば、ソリッドステートデバイス(例えば、フラッシュSDD)及び/又はハードディスクドライブ)に結合させることにより、ストレージを強調するサーバである。
図2の例示的なシステムにおいて、複数の最上位レベルのノード201が異なるラックに対応する場合、特定のラック/ノードの直下にあるすぐ下位レベルのノード202のそれぞれは、ラックに積み重ねられる異なるストレージサーバに対応する。次に、図2において特定のストレージサーバノードの下位にある各リーフノードは、特定のサーバノードと統合される特定の不揮発性大容量ストレージデバイスに対応する(例えば、サーバの高帯域幅I/Oインタフェースのうちの1つに結合される)。この例から、オブジェクトストレージシステムが規模を拡張し、及び/又は、より粒度が細かくされたハードウェア境界がノードレベルごとに所望されるにつれて、上位レベルのノードが最上位レベルのノードの上位に追加されるかもしれない。
例えば、拡張について、図2に見つけられるラックのセット及び対応する機器が、第1のデータセンタ内にある機器のセットに対応しており、その結果、より多くのデータセンタを含むようにシステムが拡張される場合、上位レベルのノードは、各追加された上位レベルのノードが異なるデータセンタに対応するように、図2に見つけられるこれらに追加されることができる。
より粒度が細かくされたハードウェア境界について、例えば、たとえ図2に見つけられる機器が同一のデータセンタ内にある機器に対応していたとしても、ラックの異なるグループは、データセンタ内の異なるローカルエリアネットワークに結合され得る。そのため、各追加された上位レベルのノードが特定のローカルエリアネットワークへのゲートウェイに対応する場所に、上位レベルのノードは追加されてよく、各追加された上位レベルのノードの下位にあるラック/ノードは、上位レベルのノードにより表されるローカルエリアネットワークに結合されるラックに対応する。追加のノードは、ラック内のより細かい粒度のハードウェア境界を導入するために、ラックレベルの下に追加されてもよい。例えば、ノードレベルは、特定のストレージサーバの同一のI/Oインタフェースに結合されるこれらの大容量ストレージデバイスをグループ化するために、ストレージサーバレベルと大容量ストレージデバイスレベルとの間に追加されてよい。
とにかく、アーキテクチャは、特定の下位レベルのハードウェアリソースにオブジェクトをマッピングする目的で様々なタイプのハードウェアリソースにおけるオブジェクトストレージのハッシュ関数の導入を含んでよく、ハードウェアリソースは、オブジェクトストレージシステムのための集中管理されるオブジェクトマッピング機能(その目的は、単一のハッシュ化演算からオブジェクトのストレージ位置を明確に定義するグローバルオブジェクトマッピングを決定することである)よりはむしろ、ストレージハードウェアインフラストラクチャ自体のコンポーネントであることに留意する。
すなわち、図2の新たな手法は、ある程度、図1に関して上述したような集中管理されるオブジェクトマッピング機能を取り入れるものとみなされ得るが、それを分散させるだけでなく、ストレージハードウェア自体の複数のより低い階層レベル(例えば、ローカルエリアネットワークゲートウェイ、ラックに統合されるネットワークゲートウェイ、ストレージサーバ、ストレージサーバI/Oインタフェースへのインタフェースなど)まで分散させる。
ストレージハードウェアの異なるレベルを介して特定のオブジェクトに対する最終的なストレージ位置を全面的に解決するために必要とされるハッシュ関数アクティビティを分散させることは、ストレージ容量の追加又は撤去後のオブジェクトの再配置からストレージシステム全体を保護するのに役立つ。ここで、単一のグローバルハッシュ関数は、図2のハッシュ構成に従って構成されるオブジェクトストレージシステムよりも、ストレージノードの追加/撤去に応じたより破壊的なやり方で異なるストレージ位置に対するオブジェクトの名前を解決させる傾向がある。
数学的な性質を定性的に説明すると、単一のハッシュ関数がシステム内のすべてのオブジェクトのストレージ位置を決定する役割を単独で担う場合、システムのストレージ容量に対する単独の変化は(たとえ小さいものであっても)、物理的に離れた新たな位置に(例えば、新たなローカルネットワークに、異なるラックに、など)、多数のオブジェクト名を突然マッピングさせる可能性がある。この特定の影響を抑えるために、オブジェクトストレージシステムは、従来、他のハッシュ関数よりもむしろストレージ容量変化に応じてマッピング変化の数を数学的に低減させる一貫性のあるハッシュ化アルゴリズムを用いて実装されてきた。しかしながら、もしかしたら、再配置が結果として生じることで、システムにわたってオブジェクトの大幅な物理的輸送をさらに必要とするかもしれない。
しかしながら、ハッシュ化のシーケンスがその「スレッド」をより高いハードウェアレベルからより低いハードウェアレベルを処理するように、ハッシュ化アクティビティ全体を実装する図2のオブジェクトストレージシステムは、システムのより小さい(下位レベル)領域のみが変更した場合に、システムの多くが変化しないままであるという事実をハッシュ構成が説明する可能性が高いので、少なくとも下位レベルのノード変更に対して、一貫性のあるハッシュ化アルゴリズムよりもむしろさらに低い物理的オブジェクト輸送障害を示す可能性がある。
すなわち、図2を参照すると、新たな大容量ストレージデバイスがストレージサーバSS_1_1へ/から追加/削除される場合には、残りのストレージサーバのストレージ容量がレベル202にわたって変化しないままであることに留意する。故に、理想的には、ストレージ容量の変化から生じるマッピング変化のすべてではないにしてもその多くは、ストレージサーバSS_1_1内で保持され得る。ある意味では、下位ノードでの小さな変化は、上位レベルのハッシュ関数に対して「リップルアップ(ripple up)」しておらず(すなわち、ほとんどリップルアップしない)、それは、次に、システムにおけるノードの関係性がほとんどない/全くないノードのマッピングに対する最小限の変化につながる。紫
実際には、これは、変化に応じて上位レベルのハッシュ関数に適用される重み付け係数に対する任意の変化があったとしてもごくわずかであることにより表される。ここで、単一の大容量ストレージデバイスのみが、ストレージサーバSS_1_!へ/から追加/削除されたとしても、ラック(ラック_1)の総ストレージ容量はほとんど変化せず、次に、もしあったとしても、最上位レベルのハッシュ関数211に提供される重み付け値に対してほんのささいな変化をもたらすだけである。すなわち、例えば、ラック_1が表すオブジェクトストレージ全体の容量の割合はほぼ無視でき、故に、最上位のハッシュ化レベル211に提供される重み付け値は、それに応じてほぼ無視できるほどの変化を受けるだろう。そのため、最上位のハッシュ化レベル211で行われるマッピングの決定は、全く何の変化も受けないだろう。
逆の観点では、変化が発生する場所のすぐ上位に存在する最下位のハッシュ化レベル213(サーバSS_1_1のハッシュ関数)に提供される重み付け値は、さらに顕著な変化がみられる(サーバSS_1_1へ/からのストレージデバイスの追加/撤去が、サーバの総ストレージ容量を著しく変化させる)かもしれない。そのため、サーバSS_1_1内でのかなり大幅なマッピング変化及び対応するオブジェクトの移動、並びに、ラック_1の一部である他のサーバ内でのさらに低い変化(しかし、恐らくさらに目立つ変化)があり得る。すなわち、オブジェクトのマッピング変化は、追加/撤去障害のポイントに対してよりローカルなままである。
この特性を促進するために、他の実施形態では、障害に対してローカルではないインスタンスをハッシュ化するための重み付け値の変更を強制的に妨げるように設計され得る。例えば、追加又は取り外される大容量ストレージデバイスをサーバSS_1_1が有する前の例を参照すると、実施形態において、変化することが可能な重み付け値のみが、ストレージサーバSS_1_1に対する重み付け値であり、システム内のすべての他の重み付け値は、意図的に固定されたままである。すべての他の重み付け値が変更されないようにすることにより、サーバSS_1_1のハッシュ化インスタンス以外のすべてのハッシュ化インスタンスは、これらのオブジェクトマッピングのいずれかを修正することはない。
そのため、ほぼシステム全体が、容量変化に応じた任意のオブジェクトマッピング変化及び対応するオブジェクトの移動を理解していない。代わりに、すべてのマッピング変化及び対応する移動は、ストレージ容量変化の結果生じるサーバSS_1_1内に強制的に限られている。ここで、インスタンスに関して、重み付け値は、ある閾値量の容量変化が特定のノードで起こらない限り容量変化に応じて固定されたままであってよい。例えば、サーバSS_1_1のストレージ容量が10%又はそれ以上を単位として変化する場合、サーバSS_1_1を除いた他の重み付け値は、変更することが可能である(より大きいシステムが変更に適応することを可能にする)。
ある手法によれば、重み付け値の変更は、ストレージ容量変化の度合いに応じて、障害のポイントから外側へ拡張することを可能にする。例えば、サーバSS_1_1のストレージ容量が20%未満の単位で変化した場合には、サーバSS_1_1のハッシュ関数のインスタンスについての重み付け値のみが変更することを可能にする。これは、サーバSS_1_1内にオブジェクトの再配置を保持する。一方、サーバSS_1_1のストレージ容量が20%と40%との間で変化する場合、ラック_1及びサーバSS_1_1のハッシュ化インスタンスに対する重み付け値が変更されることを可能にする(が、すべての他のハッシュ化インスタンスに対する重み付け値は、依然として固定されている)。これは、ラック_1のサーバSS_1_1からSS_1_N内でのオブジェクトの再配置を保持する。さらにもっと言えば、サーバSS_1_1のストレージ容量が、40%以上の単位で変化する場合、最上位レベルのハッシュ化インスタンス211、ラック_1のハッシュ化インスタンス及びサーバSS_1_1のハッシュ化インスタンスに対する重み付け値は、それに応じて変更されることが可能である。これは、ラック間のオブジェクトの移動をもたらし得るが、ハッシュ関数211に対する重み付け変化は、ラック_1のハッシュ化インスタンス又はサーバSS_1_1のハッシュ化インスタンスに対する重み付け変化よりもはるかに小さい。
ストレージ容量変化に応じて重み付け値を固定したままにすることは、ストレージ容量変化が小さいだけでなく一時的である場合に特に役立ち得る。例えば、大容量ストレージデバイスが維持される場合である。この場合、大容量ストレージデバイスは、一時的にオフライン(そのデータを確実に保持できるが、メンテナンス手順の間、任意の読み取り又は書き込み要求を処理できない)なだけである可能性がある。一実施形態によれば、大容量ストレージデバイスが維持されており、一時的にオフラインである場合、大容量ストレージデバイスのサーバ又はストレージシステム内の他の箇所において変更される重み付け値はない。
ここで、オフラインのデバイスにマッピングする、オフラインのデバイスのサーバにより受け取られた任意の読み取り又は書き込み要求は、一時的にオフラインの大容量ストレージデバイスと同一のサーバにおいて1又は複数の稼働中の大容量ストレージデバイスの自由(未使用)ストレージ容量内に一時的にキューイングされる。メンテナンスが完了した場合、サーバの自由ストレージ空間にキューイングされた読み取り又は書き込み要求は、次に、それらを処理できるように、大容量ストレージデバイスに対して「再生」される(それは、維持されている間に「見逃された」要求のストリームを受け取る)。
特定のタイプのハッシュ化アルゴリズムに関して、ランデブーハッシュ化アルゴリズムは、ハッシュの出力に、いくらかの意図的なアンバランスを与えるべく、上述したような重み付けを承諾することが可能である。このように、様々な実施形態では、図2のハッシュ化アルゴリズム211、212、213のそれぞれは、ランデブーハッシュ化アルゴリズムとして実装される。様々な実施形態では、重み付け値は、それぞれすぐ下位のノードの存在、及び、そのようなすぐ下位のノードのそれぞれに対するいくらかの容量及び/又は性能測定基準を示す。
ここで、例示の利便性については図2に示されていないが、オブジェクトストレージシステムは、ストレージサーバ202に通信可能に結合され、これらのストレージ容量レベルの認識、これらのストレージ容量レベルの変化、これらのI/O帯域幅の機能、これらの帯域幅の機能の変更などを維持する少なくとも1つのコンピューティングシステムに実装される集中型又は分散型の管理機能を含んでよい。この認識から、管理機能は、各ハッシュ化レベルに対する重み付け値を作成し、それらを適切な場合に(例えば、容量変化に応じて)ハッシュ化レベルへ提供する。管理機能はまた、例えば、ハッシュ関数への重み付け値の新たなセットの送信を引き起こすパーセント容量変化及び対応するパーセント容量変化の閾値を維持してよい。
各ハッシュ関数のインスタンスは、専用のハードウェア論理回路、プログラマブル論理回路(例えば、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理アレイ(PLA)、プログラマブル論理デバイス(PLD)など)、又は、ある形式のプログラムコードを実行する論理回路(例えば、汎用プロセッサ(埋め込み型又はその他)、専用プロセッサ(例えば、デジタル信号プロセッサ(DSP)など)又はこれらの任意の組み合わせ)と共に実装されてよい。そのような回路は、例えば、1)ネットワークゲートウェイ、ネットワーキングスイッチ及び/又はネットワーキングルータ、2)ストレージサーバ、3)オブジェクトストレージシステムへのゲートウェイとしての機能を果たすプロキシサーバ又はサーバ、4)複数の大容量ストレージデバイスが取り付けるストレージサーバのI/Oインタフェースなどのオブジェクトストレージシステムの多数の異なるハードウェアシステム/コンポーネントのうちのいずれかに配置されてよい。
ストレージサーバ及びプロキシサーバのいずれかは、コンピューティングシステムと共に実装されてよい。さらに、ネットワーキング機器の要素(ゲートウェイ/スイッチ/ルータ)は、コンピューティングシステムのベーシックコンポーネントという点で共通してよい、又は、そうでなければ、コンピューティングシステムのベーシックコンポーネントを含んでよい。例えば、ネットワーキング機器は、通常、CPUコアにより実行されるプログラムコード及びデータを保持する1又は複数のCPUコア及びメモリを含む管理制御機能を含む。とにかく、上述したように、ハッシュ関数は、専用の論理回路、プログラマブル論理回路、プログラムコード実行、又は、コンピューティングシステム若しくはネットワーキングシステムのいずれかの内のこれらの任意の組み合わせ、のいずれかにより実装されてよい。ネットワーキング機器は、スイッチング論理回路及び/又はルーティング論理回路、及び、入力/出口ポートのいずれかを含んでよい。要求は、入力ポートで受け取られ、正しい次の下位レベルのノードが到達され得る適切な出口ポートに要求を向けるために、ハッシュ結果に従ってスイッチング/ルーティング論理回路により処理される。
上記の説明が、本質的には、その名前に基づいてオブジェクトのストレージ位置を決定するためのプロセスに着目していることに留意する。大まかには、オブジェクトのオペレーションは、PUTオペレーション(新たなオブジェクトがシステムに入力され、利用可能なストレージ容量に向けられる)、GETオペレーション(オブジェクトを取得するために、読み取り要求が正しいストレージ位置に向けられる読み取りオペレーションとして動作する)、MODIFYオペレーション(システムに格納された存在するオブジェクトを介して書き込まれる新たなデータを含む書き込み要求が、当該オブジェクトの正しいストレージ位置に向けられる書き込みオペレーションとして動作する)、及び、DELETEオペレーション(ストレージハードウェアが、オブジェクトを削除するよう命令されることができ、又は、オブジェクトの上書きを許可することができるように、オブジェクトを削除するコマンドが正しいストレージ位置に向けられる)を含む。
これらのオペレーションのそれぞれについて、様々な実施形態では、要求は、システムを介した要求の伝播が、上記で説明されたマルチレベルハッシュ化シーケンスと共に一貫して実行されるオブジェクトの適切なストレージ位置に向けられる(例えば、要求は、インフラストラクチャハードウェアの複数のレベルでハッシュされるオブジェクトの名前を含む)。しかしながら、要求が異なると、要求に付属される項目も異なる。具体的には、PUTの場合、新たなオブジェクトが要求に付け加えられる。GETの場合、要求に付け加えられる必要があるオブジェクトデータはない。MODIFYの場合、オブジェクトに対する新たなデータ(又は、オブジェクトの新たなバージョン)が、要求に付け加えられる。DELETEオペレーションの場合、要求に付け加えられる必要があるオブジェクトデータはない。
上記の実施形態は、すべてのノードがそれらと関連付けられるハードウェアを有することを示しているが、様々な実施形態では、ノードは、純粋に論理的であってよく、それらについてのハードウェア特性を有していない。この場合、そのような論理ノードは、それらの下位にあるノードの重み付けを包含するが、それらに追加することはない。ある意味では、論理ノードの下位にある重み付け係数は、論理ノードを介して上位レベルのノードに渡される。
様々な実施形態において、いくつかの上位レベルの目的を達成するために、管理者は、下位ノードの分析がそうでなければ提示するものとは異なる重み付け係数を設定してよい、及び/又は、たとえ下位ノードに対する変更があっても、重み付け係数が変更されないようにしてよい。
図3は、上記で説明した方法を示す。方法は、オブジェクトストレージシステムの第1のハードウェア要素を用いてオブジェクトの名前に対する第1のハッシュを実行する段階301を含み、オブジェクトの名前は、オブジェクトと関連付けられる要求の一部であり、第1のハッシュの結果は、オブジェクトストレージシステム内のハードウェア要素の階層配置における第1のハードウェア要素の直下にある第2のハードウェア要素を識別する。方法はまた、第2のハードウェア要素に要求を送信する段階302を含む。方法はまた、第2のハードウェア要素を用いてオブジェクトの名前に対して第2のハッシュを実行する段階303を含み、第2のハッシュの結果は、階層配置において第2のハードウェア要素の直下にある第3のハードウェア要素を識別する。方法はまた、オブジェクトストレージシステムにより処理される方向で要求を進めるべく、第3のハードウェア要素に要求を送信する段階304を含む。
図4は、コンピューティングシステム400の例示的な表現(例えば、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、サーバコンピュータなど)を提供する。図4に見つけられるように、ベーシックコンピューティングシステム400は、中央処理装置401(例えば、複数の汎用処理コア415_1から415_Xを含んでよい)と、マルチコアプロセッサ又はアプリケーションプロセッサ上に配置されるメインメモリコントローラ417と、システムメモリ402と、ディスプレイ403(例えば、タッチスクリーン、フラットパネル)と、ローカル有線ポイントツーポイントリンク(例えば、USB)インタフェース404と、様々なネットワークI/O機能405(例えば、イーサネット(登録商標)インタフェース及び/又はセルラモデムサブシステム)と、無線ローカルエリアネットワーク(例えば、WiFi(登録商標))インタフェース406と、無線ポイントツーポイントリンク(例えば、Bluetooth(登録商標))インタフェース407及びグローバルポジショニングシステムインタフェース408と、様々なセンサ409_1から409_Yと、1又は複数のカメラ410と、バッテリ411と、電力管理制御ユニット412と、スピーカ及びマイク413と、オーディオコーダ/デコーダ414とを含んでよい。
アプリケーションプロセッサ又はマルチコアプロセッサ450は、そのCPU401内の1又は複数の汎用処理コア415と、1又は複数のグラフィカル処理ユニット416と、メモリ管理機能417(例えば、メモリコントローラ)と、I/O制御機能418とを含んでよい。汎用処理コア415は、典型的には、コンピューティングシステムのオペレーティングシステム及びアプリケーションソフトウェアを実行する。グラフィック処理ユニット416は、典型的には、グラフィック集約機能を実行して、例えば、ディスプレイ403に提示されるグラフィック情報を生成する。メモリ制御機能417は、システムメモリ402へ/からデータを書き込む/読み取るために、システムメモリ402とインタフェース接続される。永続性メモリ(例えば、3D XPointメモリ)に対する詳細を追加するものと仮定する。電力管理制御ユニット412は、大まかに、システム400の電力消費を制御する。
タッチスクリーンディスプレイ403、通信インタフェース404-407、GPSインタフェース408、センサ409、カメラ410及びスピーカ/マイクコーデック413、414のそれぞれはすべて、同様に統合された周辺デバイス(例えば、1又は複数のカメラ410)を適切な場所に含むコンピューティングシステム全体に関連する様々な形式のI/O(入力及び/又は出力)として示され得る。実装に応じて、これらI/Oコンポーネントの様々なコンポーネントは、アプリケーションプロセッサ/マルチコアプロセッサ450上に統合されてよい、又は、ダイから離れて、又は、アプリケーションプロセッサ/マルチコアプロセッサ450のパッケージの外側に配置されてよい。コンピューティングシステムは、システムの大容量ストレージコンポーネントであり得る不揮発性ストレージ420も含む。
プロセッサ450は、CPUコア415の1又は複数で実行する様々なモニタリングプログラムのオペレーション全体を改善するべく、上述したような埋め込み型のNVRAMを含んでもよい。
本発明の実施形態は、上記で説明されたような様々な処理を含んでよい。当該処理は、機械実行可能命令において具体化されてよい。当該命令は、汎用又は専用プロセッサに特定の処理を実行させるために用いられ得る。代わりに、これらの処理は、処理を実行するためのハードワイヤード論理回路又はプログラマブル論理回路(例えば、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理デバイス(PLD))を含む特定/カスタムハードウェアコンポーネントにより、又は、プログラミングされたコンピュータコンポーネントとカスタムハードウェアコンポーネントとの任意の組み合わせにより実行されてよい。
本発明の要素は、機械実行可能命令を格納するための機械可読媒体として提供されてもよい。機械可読媒体は、限定されることはないが、フロッピーディスク、光ディスク、CD-ROM及び磁気-光ディスク、フラッシュメモリ、ROM、RAM,EPROM、EEPROM、磁気又は光カード、伝播媒体、又は、電子命令を格納するのに適した他のタイプの媒体/機械可読媒体を含んでよい。例えば本発明は、通信リンク(例えば、モデム又はネットワーク接続)を介して搬送波又は他の伝播媒体において具体化されるデータ信号を用いてリモートコンピュータ(例えば、サーバ)から要求コンピュータ(例えば、クライアント)に転送され得るコンピュータプログラムとしてダウンロードされてよい。
上述の明細書では、その特定の例示的な実施形態を参照して本発明が説明されている。しかしながら、添付の特許請求の範囲に説明されるように、本発明の幅広い趣旨及び範囲から逸脱することなく、様々な修正及び変更がそれに行われてよいことが明らかである。したがって、本明細書及び図面は、限定的な意味ではなく例示的なものとみなされる。
[項目1]
オブジェクトストレージシステムの第1のハードウェア要素を用いてオブジェクトの名前に対して第1のハッシュを実行する段階であって、上記オブジェクトの上記名前は、上記オブジェクトと関連付けられる要求の一部であり、上記第1のハッシュの結果は、上記オブジェクトストレージシステム内のハードウェア要素の階層配置において上記第1のハードウェア要素の直下にある第2のハードウェア要素を識別する、段階と、
上記第2のハードウェア要素に上記要求を送信する段階と、
上記第2のハードウェア要素を用いて上記オブジェクトの上記名前に対して第2のハッシュを実行する段階であって、上記第2のハッシュの結果は、上記階層配置において上記第2のハードウェア要素の直下にある第3のハードウェア要素を識別する、段階と、
上記オブジェクトストレージシステムにより処理される方向で上記要求を進めるべく、上記第3のハードウェア要素に上記要求を送信する段階と
を備える方法。
[項目2]
上記第3のハードウェア要素に上記オブジェクトを格納する段階であって、上記第3のハードウェア要素は、大容量ストレージデバイスである、段階をさらに備える、項目1に記載の方法。
[項目3]
上記第2のハードウェア要素及び上記第3のハードウェア要素のうちの一方は、複数の大容量ストレージデバイスを有するストレージサーバである、項目1に記載の方法。
[項目4]
上記ハードウェア要素のうちの1つは、ストレージサーバのラック用のネットワーキングゲートウェイである、項目1に記載の方法。
[項目5]
上記第1のハッシュは、上記第1のハードウェア要素の直下にある上記階層配置の上記構造を説明する第1の重み付け情報を包含する、項目1に記載の方法。
[項目6]
上記第1のハッシュは、上記第2のハードウェア要素の直下にある上記階層配置の上記構造を説明する第2の重み付け情報を包含する、項目5に記載の方法。
[項目7]
上記第2のハードウェア要素の下位にある上記オブジェクトストレージシステム内の変化を反映するべく、上記第1の重み付け情報及び第2の重み付け情報を修正する段階であって、上記第1の重み付け情報の変化は、上記第2の重み付け情報の変化より小さい、段階をさらに備える、項目6に記載の方法。
[項目8]
上記第3のハードウェア要素は、上記要求が処理される大容量ストレージデバイスであり、上記方法は、
上記大容量ストレージデバイスがオフライン状態に一時的に入ったことに応じて、上記オブジェクトストレージシステムの未使用のストレージ容量内の上記大容量ストレージデバイスに向けられた要求をキューイングする段階と、
上記大容量ストレージデバイスがオンライン状態に戻った後に、上記大容量ストレージデバイスに対する上記要求を再生する段階と
をさらに備える、項目1に記載の方法。
[項目9]
上記未使用のストレージ容量は、上記大容量ストレージデバイスが一部であるものと同一のストレージサーバの一部である、項目8に記載の方法。
[項目10]
上記第1のハッシュ及び第2のハッシュに提供される重み付け値は、上記大容量ストレージデバイスが上記オフライン状態に入ることに応じては変更されない、項目9に記載の方法。
[項目11] オブジェクトストレージシステムのオブジェクトの名前に対するハッシュを実行する論理回路を有する半導体チップを備え、上記ハッシュは、オブジェクトストレージシステム内のハードウェア要素の階層配置における第1のハードウェア要素により実行され、上記名前は、上記オブジェクトと関連付けられる要求の一部であり、上記ハッシュの結果は、上記階層配置において上記第1のハードウェア要素の直下にある第2のハードウェア要素を識別し、上記要求は、上記オブジェクトストレージシステムにより処理される方向で上記要求を進めるべく、上記第2のハードウェア要素に送信され、上記ハッシュは、ハードウェア要素の上記階層配置において上記ハードウェア要素の下位にあるハードウェア要素の性能特性を説明する1又は複数の重み付け係数を包含する、装置。
[項目12]
上記論理回路は、
専用のハードワイヤード論理回路と、
プログラマブル論理回路と、
プログラムコードを実行する論理回路との任意の組み合わせである、項目11に記載の装置。
[項目13]
上記半導体チップは、オブジェクトストレージシステムのハードウェア要素に統合される、項目11に記載の装置。
[項目14]
上記オブジェクトストレージシステムのハードウェア要素は、
プロキシサーバと、
ネットワーキングスイッチと、
ラックゲートウェイと、
ストレージサーバと、
複数の大容量ストレージデバイスが結合されるI/Oインタフェースと
のうちのいずれかである、項目12に記載の装置。
[項目15]
上記オブジェクトストレージシステムのハードウェア要素は、上記オブジェクトストレージシステムに機能的に統合される、項目14に記載の装置。
[項目16]
オブジェクトストレージシステム内のハードウェア要素の階層配置における第1のハードウェア要素のプロセッサにより処理されるときに、上記プロセッサに
上記オブジェクトストレージシステムのオブジェクトの名前に対するハッシュを実行する段階であって、上記名前は、上記オブジェクトと関連付けられる要求の一部であり、上記ハッシュの結果は、上記階層配置において上記第1のハードウェア要素の直下にある第2のハードウェア要素を識別し、上記要求は、上記オブジェクトストレージシステムにより処理される方向で上記要求を進めるべく、上記第2のハードウェア要素に送信される、段階
を備える方法を実施させるプログラムコードを含む機械可読記憶媒体。
[項目17]
上記ハッシュは、上記第1のハードウェア要素の直下にある上記階層配置の上記構造を説明する重み付け情報を包含する、項目16に記載の機械可読媒体。
[項目18]
上記第2のハードウェア要素の下位にある上記オブジェクトストレージシステムにおける変化を反映するべく、上記重み付け情報を修正する段階をさらに備える、項目17に記載の機械可読媒体。
[項目19]
上記重み付け情報は、上記階層における上記第1の要素の下位の変化が閾値を通過していない場合、不変のままである、項目17に記載の機械可読媒体。
[項目20]
上記第1のハードウェア要素は、
コンピューティングシステムと、
ネットワーキングシステムと
のうちのいずれかである、項目16に記載の機械可読媒体。
[項目21]
オブジェクトストレージシステムの複数のノードの階層配置のリーフノードに関する重み付け係数を決定する段階であって、上記リーフノードは、ストレージデバイスに対応し、上記重み付け係数は、上記ストレージデバイスの性能特性を説明する、段階と、
上記オブジェクトストレージシステムの複数のノードの階層配置において上記リーフノードの上位にある中間ノードに対する重み付け係数を決定する段階であって、上記中間ノードの上記重み付け係数は、上記オブジェクトストレージシステムの複数のノードの配置において、それぞれの下位ノードの性能特性を包含する、段階と、
上記オブジェクトストレージシステムのノードの階層配置の深いレベルに配置されたそれぞれのハッシュ関数で、オブジェクトの名前をハッシュ化することにより、上記オブジェクトストレージシステム内のストレージに上記オブジェクトをマッピングする段階であって、上記ハッシュ関数は、上記オブジェクトストレージシステムの複数のノードの配置においてそれぞれの下位ノードの性能特性を説明する上記重み付け係数のうちの特定のいくつかを包含する、段階と
を備える方法。

Claims (21)

  1. オブジェクトストレージシステムの第1のハードウェア要素を用いてオブジェクトの名前に対して第1のハッシュを実行する段階であって、前記オブジェクトの前記名前は、前記オブジェクトと関連付けられる要求の一部であり、前記第1のハッシュの結果は、前記オブジェクトストレージシステム内のハードウェア要素の階層配置において前記第1のハードウェア要素の直下にある第2のハードウェア要素を識別する、段階と、
    前記第2のハードウェア要素に前記要求を送信する段階と、
    前記第2のハードウェア要素を用いて前記オブジェクトの前記名前に対して第2のハッシュを実行する段階であって、前記第2のハッシュの結果は、前記階層配置において前記第2のハードウェア要素の直下にある第3のハードウェア要素を識別する、段階と、
    前記オブジェクトストレージシステムにより処理される方向で前記要求を進めるべく、前記第3のハードウェア要素に前記要求を送信する段階と
    を備える方法。
  2. 前記第3のハードウェア要素に前記オブジェクトを格納する段階であって、前記第3のハードウェア要素は、大容量ストレージデバイスである、段階をさらに備える、請求項1に記載の方法。
  3. 前記第2のハードウェア要素及び前記第3のハードウェア要素のうちの一方は、複数の大容量ストレージデバイスを有するストレージサーバである、請求項1又は2に記載の方法。
  4. 前記ハードウェア要素のうちの1つは、ストレージサーバのラック用のネットワーキングゲートウェイである、請求項1から3のいずれか一項に記載の方法。
  5. 前記第1のハッシュは、前記第1のハードウェア要素の直下にある前記階層配置の構造を説明する第1の重み付け情報を包含する、請求項1から4のいずれか一項に記載の方法。
  6. 前記第1のハッシュは、前記第2のハードウェア要素の直下にある前記階層配置の前記構造を説明する第2の重み付け情報を包含する、請求項5に記載の方法。
  7. 前記第2のハードウェア要素の下位にある前記オブジェクトストレージシステム内の変化を反映するべく、前記第1の重み付け情報及び第2の重み付け情報を修正する段階であって、前記第1の重み付け情報の変化は、前記第2の重み付け情報の変化より小さい、段階をさらに備える、請求項6に記載の方法。
  8. 前記第3のハードウェア要素は、前記要求が処理される大容量ストレージデバイスであり、前記方法は、
    前記大容量ストレージデバイスがオフライン状態に一時的に入ったことに応じて、前記オブジェクトストレージシステムの未使用のストレージ容量内の前記大容量ストレージデバイスに向けられた要求をキューイングする段階と、
    前記大容量ストレージデバイスがオンライン状態に戻った後に、前記大容量ストレージデバイスに対する前記要求を再生する段階と
    をさらに備える、請求項1から7のいずれか一項に記載の方法。
  9. 前記未使用のストレージ容量は、前記大容量ストレージデバイスが一部であるものと同一のストレージサーバの一部である、請求項8に記載の方法。
  10. 前記第1のハッシュ及び第2のハッシュに提供される重み付け値は、前記大容量ストレージデバイスが前記オフライン状態に入ることに応じては変更されない、請求項9に記載の方法。
  11. オブジェクトストレージシステムのオブジェクトの名前に対する第1のハッシュ及び第2のハッシュを実行する論理回路を有する半導体チップを備え、前記第1のハッシュは、オブジェクトストレージシステム内のハードウェア要素の階層配置における第1のハードウェア要素により実行され、前記名前は、前記オブジェクトと関連付けられる要求の一部であり、前記第1のハッシュの結果は、前記階層配置において前記第1のハードウェア要素の直下にある第2のハードウェア要素を識別し、前記要求は、前記オブジェクトストレージシステムにより処理される方向で前記要求を進めるべく、前記第2のハードウェア要素に送信され、前記第2のハッシュは、前記階層配置における第2のハードウェア要素により実行され、前記第2のハッシュの結果は、前記階層配置において前記第2のハードウェア要素の直下にある第3のハードウェア要素を識別し、前記要求は、前記オブジェクトストレージシステムにより処理される方向で前記要求を進めるべく、前記第3のハードウェア要素に送信され、前記第1のハッシュ及び前記第2のハッシュは、ハードウェア要素の前記階層配置において前記ハードウェア要素の下位にあるハードウェア要素の性能特性を説明する1又は複数の重み付け係数を包含する、装置。
  12. 前記論理回路は、
    専用のハードワイヤード論理回路と、
    プログラマブル論理回路と、
    プログラムコードを実行する論理回路との任意の組み合わせである、請求項11に記載の装置。
  13. 前記半導体チップは、オブジェクトストレージシステムのハードウェア要素に統合される、請求項11又は12に記載の装置。
  14. 前記オブジェクトストレージシステムのハードウェア要素は、
    プロキシサーバと、
    ネットワーキングスイッチと、
    ラックゲートウェイと、
    ストレージサーバと、
    複数の大容量ストレージデバイスが結合されるI/Oインタフェースと
    のうちのいずれかである、請求項12に記載の装置。
  15. 前記オブジェクトストレージシステムのハードウェア要素は、前記オブジェクトストレージシステムに機能的に統合される、請求項14に記載の装置。
  16. オブジェクトストレージシステム内のハードウェア要素の階層配置における第1のハードウェア要素のプロセッサに
    前記オブジェクトストレージシステムのオブジェクトの名前に対する第1のハッシュを実行する手順であって、前記名前は、前記オブジェクトと関連付けられる要求の一部であり、前記第1のハッシュの結果は、前記階層配置において前記第1のハードウェア要素の直下にある第2のハードウェア要素を識別し、前記要求は、前記オブジェクトストレージシステムにより処理される方向で前記要求を進めるべく、前記第2のハードウェア要素に送信される、手順実行させ
    前記階層配置における第2のハードウェア要素のプロセッサに
    前記名前に対する第2のハッシュを実行する手順であって、前記第2のハッシュの結果は、前記階層配置において前記第2のハードウェア要素の直下にある第3のハードウェア要素を識別し、前記要求は、前記オブジェクトストレージシステムにより処理される方向で前記要求を進めるべく、前記第3のハードウェア要素に送信される、手順を実行させるためのプログラム。
  17. 前記第1のハッシュは、前記第1のハードウェア要素の直下にある前記階層配置の構造を説明する重み付け情報を包含する、請求項16に記載のプログラム。
  18. 前記プロセッサに、前記第2のハードウェア要素の下位にある前記オブジェクトストレージシステムにおける変化を反映するべく、前記重み付け情報を修正する手順をさらに実行させる、請求項17に記載のプログラム。
  19. 前記重み付け情報は、前記階層配置における前記第1のハードウェア要素の下位の変化が閾値を通過していない場合、不変のままである、請求項17又は18に記載のプログラム。
  20. 前記第1のハードウェア要素は、
    コンピューティングシステムと、
    ネットワーキングシステムと
    のうちのいずれかである、請求項16から19のいずれか一項に記載のプログラム。
  21. 請求項16から20のいずれか一項に記載のプログラムを格納する機械可読記憶媒体
JP2019023832A 2018-03-29 2019-02-13 ストレージアドレスの決定に関してマルチレベルハッシュ関数を用いるオブジェクトストレージシステム Active JP7234479B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/940,961 2018-03-29
US15/940,961 US10990532B2 (en) 2018-03-29 2018-03-29 Object storage system with multi-level hashing function for storage address determination

Publications (2)

Publication Number Publication Date
JP2019204489A JP2019204489A (ja) 2019-11-28
JP7234479B2 true JP7234479B2 (ja) 2023-03-08

Family

ID=65229692

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019023832A Active JP7234479B2 (ja) 2018-03-29 2019-02-13 ストレージアドレスの決定に関してマルチレベルハッシュ関数を用いるオブジェクトストレージシステム

Country Status (5)

Country Link
US (1) US10990532B2 (ja)
EP (1) EP3547102B1 (ja)
JP (1) JP7234479B2 (ja)
KR (1) KR20190114743A (ja)
CN (1) CN110321331A (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019246139A1 (en) 2018-06-18 2019-12-26 Flc Technology Group Inc. Method and apparatus for using a storage system as main memory
US11048758B1 (en) 2020-01-31 2021-06-29 Morgan Stanley Services Group Inc. Multi-level low-latency hashing scheme
US11636059B2 (en) * 2020-03-31 2023-04-25 Samsung Electronics Co., Ltd. Scaling performance in a storage server with storage devices
WO2022051554A1 (en) * 2020-09-03 2022-03-10 FLC Technology Group, Inc. Hash function with pre-scrambler
US11755373B2 (en) * 2020-10-07 2023-09-12 Oracle International Corporation Computation and storage of object identity hash values

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007257566A (ja) 2006-03-27 2007-10-04 Fujitsu Ltd ハッシュ値生成プログラム及びストレージ管理プログラム並びにストレージシステム
US20100146053A1 (en) 2007-10-29 2010-06-10 Huawei Technologies Co., Ltd. Method, apparatus and system for answering requests on peer-to-peer overlay network
JP2014026321A (ja) 2012-07-24 2014-02-06 Fujitsu Ltd ストレージ装置、情報処理装置、情報処理システム、アクセス制御方法、およびアクセス制御プログラム
US20160188591A1 (en) 2014-12-31 2016-06-30 Nexenta Systems, Inc. Methods and systems for key-value-tuple-encoded storage
JP2016126561A (ja) 2015-01-05 2016-07-11 富士通株式会社 ストレージ制御装置、ストレージ装置およびプログラム
JP2017123070A (ja) 2016-01-07 2017-07-13 富士通株式会社 制御装置、ストレージ装置、データ管理プログラム及びデータ管理方法
JP2017130103A (ja) 2016-01-21 2017-07-27 日本電気株式会社 ブロックストレージ

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8429444B2 (en) 2008-12-18 2013-04-23 Scality, S.A. Multipurpose storage system based upon a distributed hashing mechanism with transactional support and failover capability
US9571570B1 (en) * 2014-09-24 2017-02-14 Juniper Networks, Inc. Weighted rendezvous hashing

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007257566A (ja) 2006-03-27 2007-10-04 Fujitsu Ltd ハッシュ値生成プログラム及びストレージ管理プログラム並びにストレージシステム
US20100146053A1 (en) 2007-10-29 2010-06-10 Huawei Technologies Co., Ltd. Method, apparatus and system for answering requests on peer-to-peer overlay network
JP2014026321A (ja) 2012-07-24 2014-02-06 Fujitsu Ltd ストレージ装置、情報処理装置、情報処理システム、アクセス制御方法、およびアクセス制御プログラム
US20160188591A1 (en) 2014-12-31 2016-06-30 Nexenta Systems, Inc. Methods and systems for key-value-tuple-encoded storage
JP2016126561A (ja) 2015-01-05 2016-07-11 富士通株式会社 ストレージ制御装置、ストレージ装置およびプログラム
JP2017123070A (ja) 2016-01-07 2017-07-13 富士通株式会社 制御装置、ストレージ装置、データ管理プログラム及びデータ管理方法
JP2017130103A (ja) 2016-01-21 2017-07-27 日本電気株式会社 ブロックストレージ

Also Published As

Publication number Publication date
KR20190114743A (ko) 2019-10-10
US10990532B2 (en) 2021-04-27
CN110321331A (zh) 2019-10-11
US20190042440A1 (en) 2019-02-07
EP3547102A1 (en) 2019-10-02
EP3547102B1 (en) 2023-10-18
JP2019204489A (ja) 2019-11-28

Similar Documents

Publication Publication Date Title
JP7234479B2 (ja) ストレージアドレスの決定に関してマルチレベルハッシュ関数を用いるオブジェクトストレージシステム
US10805406B2 (en) Zone redundant computing services using multiple local services in distributed computing systems
JP6882511B2 (ja) ブロックチェーンコンセンサスのための方法、装置およびシステム
US11108852B2 (en) Load balanced network file accesses
US10466899B2 (en) Selecting controllers based on affinity between access devices and storage segments
US11573831B2 (en) Optimizing resource usage in distributed computing environments by dynamically adjusting resource unit size
KR101502896B1 (ko) 맵 리듀스를 이용한 분산 메모리 클러스터 제어 장치 및 방법
CN108431796B (zh) 分布式资源管理系统和方法
US20130332608A1 (en) Load balancing for distributed key-value store
US10356150B1 (en) Automated repartitioning of streaming data
US20240061812A1 (en) Metadata control in a load-balanced distributed storage system
US20210405902A1 (en) Rule-based provisioning for heterogeneous distributed systems
US10616134B1 (en) Prioritizing resource hosts for resource placement
US20140229695A1 (en) Systems and methods for backup in scale-out storage clusters
US10802749B2 (en) Implementing hierarchical availability domain aware replication policies
US10965610B1 (en) Systems and methods for allocating shared resources in multi-tenant environments
US10007673B1 (en) Cluster file system comprising data mover module arranged between front-end and back-end file systems
Hsieh et al. The incremental load balance cloud algorithm by using dynamic data deployment
US11726684B1 (en) Cluster rebalance using user defined rules
US11237747B1 (en) Arbitrary server metadata persistence for control plane static stability
KR101654969B1 (ko) 가상화 클러스터 환경에서 네임 노드를 할당하는 방법 및 장치
CN112068976A (zh) 数据备份存储方法及装置、电子设备和存储介质
Ruty et al. Collapsing the layers: 6Stor, a scalable and IPv6-centric distributed storage system
US20170374144A1 (en) Harvesting spare storage in a data center
Soe et al. Performance-Aware Data Placement Policy for Hadoop Distributed File System

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221018

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221121

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230124

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230201

R150 Certificate of patent or registration of utility model

Ref document number: 7234479

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150