(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-04-20
(54)【発明の名称】非同種ストレージ内の容量及び性能の最適化
(51)【国際特許分類】
G06F 3/06 20060101AFI20230413BHJP
G06F 13/10 20060101ALI20230413BHJP
【FI】
G06F3/06 301E
G06F13/10 340A
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022553201
(86)(22)【出願日】2020-03-09
(85)【翻訳文提出日】2022-09-05
(86)【国際出願番号】 US2020021669
(87)【国際公開番号】W WO2021183097
(87)【国際公開日】2021-09-16
(81)【指定国・地域】
(71)【出願人】
【識別番号】520155228
【氏名又は名称】ヒタチ ヴァンタラ エルエルシー
(74)【代理人】
【識別番号】110000279
【氏名又は名称】弁理士法人ウィルフォート国際特許事務所
(72)【発明者】
【氏名】トリンブル, ロナルド レイ
(57)【要約】
いくつかの例では、演算装置はストレージプールのストレージサブシステムにデータを格納するように構成されてもよい。演算装置はそれぞれのストレージサブシステムについて、ストレージサブシステムの相対的性能を表す潜在性能量を決定してもよく、潜在性能量に少なくとも基づいて、それぞれのストレージサブシステムのそれぞれの初期分散重みを決定してもよい。更に演算装置は、使用記憶容量の最も低いパーセンテージを有するストレージサブシステムによって使用される記憶容量のパーセンテージよりも閾値量よりも高い使用記憶容量のパーセンテージを有するそれぞれのストレージサブシステムについて、初期分散重みを調節する1又は複数の量を決定してそれぞれのストレージサブシステムのそれぞれの所望分散重みを決定してもよい。演算装置は所望分散重みに少なくとも基づいてデータを受信するための1又は複数のストレージサブシステムを選択してもよい。
【特許請求の範囲】
【請求項1】
システムであって、
ストレージプールの複数のストレージサブシステムにデータを格納するように構成された演算装置を含み、
前記演算装置は実行可能な命令によって操作を実行するように構成され、
前記演算装置によって、それぞれのストレージサブシステムについて、前記ストレージサブシステムの1又は複数の他のものに関して前記ストレージサブシステムの相対的性能を表す潜在性能量を決定することと、
前記演算装置によって、それぞれのストレージサブシステムについての前記潜在性能量に少なくとも基づいて、それぞれのストレージサブシステムのそれぞれの初期分散重みを決定することと、
前記演算装置によって、使用記憶容量の最も低いパーセンテージを有する前記ストレージサブシステムによる使用記憶容量のパーセンテージよりも、閾値量よりも高い使用記憶容量のパーセンテージを有するそれぞれのストレージサブシステムについて、前記初期分散重みを調節する1又は複数の量を決定して、それぞれのストレージサブシステムのそれぞれの所望分散重みを決定することと、
前記演算装置によって、前記ストレージプールに格納するためのデータを受信することと、
前記ストレージサブシステムに関して決定された前記それぞれの所望分散重みに少なくとも基づいて、前記データを受信するための1又は複数の前記ストレージサブシステムを選択することと、を含む
システム。
【請求項2】
前記操作は、
前記複数のストレージサブシステムへの開放コネクションの数を決定することと、
それぞれのストレージサブシステムへの前記開放コネクションの数に基づいて、それぞれのストレージサブシステムの現在の分散を決定することと、
それぞれのストレージサブシステムについての前記それぞれの所望分散重みと前記ストレージサブシステムの前記現在の分散との差に少なくとも基づいて、前記複数のストレージサブシステムのランキングを決定することと、
を更に含む、請求項1に記載のシステム。
【請求項3】
前記操作は、
前記ストレージサブシステムの第1ストレージサブシステムによって使用される記憶容量の前記パーセンテージが、使用記憶容量に関する閾値上限を超えると判定することと、
前記閾値上限を超える使用記憶容量の前記パーセンテージに基づいて、前記第1ストレージサブシステムの前記ランキングを決定することと、
を更に含む、請求項2に記載のシステム。
【請求項4】
前記操作は、それぞれのストレージサブシステムの前記潜在性能量のそれぞれの指示を、前記それぞれのストレージサブシステムから周期的に受信することを更に含む、請求項1に記載のシステム。
【請求項5】
使用記憶容量の最も低いパーセンテージを有する前記ストレージサブシステムによる使用記憶容量のパーセンテージよりも、閾値量よりも高い使用記憶容量のパーセンテージを有するそれぞれのストレージサブシステムについて、前記初期分散重みを調節する1又は複数の量を決定することは、
前記閾値量より大きい使用記憶容量の前記パーセンテージを有するそれぞれのストレージサブシステムに対して、平衡外パーセンテージを決定する操作をさらに含み、
前記平衡外パーセンテージは、使用記憶容量の前記パーセンテージと、使用記憶容量の前記最も低いパーセンテージを有する前記ストレージサブシステムによって使用される記憶容量の前記パーセンテージとの差である、
請求項1に記載のシステム。
【請求項6】
前記操作は、
前記閾値量より大きい使用記憶容量の前記パーセンテージを有するそれぞれのストレージサブシステムについて、前記平衡外パーセンテージにスキュー乗数を乗算することに基づいて、再分散パーセンテージを決定すること
を更に含む、請求項5に記載のシステム。
【請求項7】
1未満の値を有する前記スキュー乗数はシステム性能を高め、1より大きい値を有する前記スキュー乗数はシステム容量の平衡を高める、請求項6に記載のシステム。
【請求項8】
前記操作は、
前記閾値量よりも大きい使用記憶容量の前記パーセンテージを有するそれぞれのストレージサブシステムについて、前記再分散パーセンテージを、使用記憶容量の前記最も低いパーセンテージを有する前記ストレージサブシステムによって使用される前記記憶容量の前記閾値量の範囲内の使用記憶容量を有する前記ストレージサブシステムの数で除算することに基づいて、調節済み再分散パーセンテージを決定することを更に含む、請求項6に記載のシステム。
【請求項9】
前記操作は、
前記調節済み再分散パーセンテージを有するそれぞれのストレージサブシステムについて、前記調節済み再分散パーセンテージに前記それぞれのストレージサブシステムについての前記初期分散重みを乗算することにより第1値を得ることによって、前記それぞれの所望分散重みを決定することと、
前記それぞれのストレージサブシステムの前記初期分散重みから、前記それぞれの第1値をn回減算して、前記調節済み再分散パーセンテージを有する前記それぞれのストレージサブシステムについての前記それぞれの所望分散重みを決定することと、を更に含み、nは前記調節済み再分散パーセンテージを有さないサブシステムの数である、
請求項8に記載のシステム。
【請求項10】
前記操作は、
調節済み再分散パーセンテージを有するそれぞれの前記ストレージサブシステムについて決定された前記それぞれの第1値を、前記調節済み再分散パーセンテージを有さないそれぞれのストレージサブシステムの前記初期分散重みから加算して、前記調節済み再分散パーセンテージを有さない前記個々のストレージサブシステムの前記個々の所望分散重みを決定することにより、調節済み再分散パーセンテージを有さないそれぞれのストレージサブシステムについての前記それぞれの所望分散重みを決定することを更に含む、請求項9に記載のシステム。
【請求項11】
前記ストレージサブシステムの少なくとも1つは、前記ストレージサブシステムの他のストレージシステムと異なる性能又は記憶容量を有する、請求項1に記載のシステム。
【請求項12】
方法であって、
演算装置によって、ストレージプールの複数のストレージサブシステムのそれぞれのストレージサブシステムについて、前記ストレージサブシステムの1又は複数の他のストレージシステムに関する前記ストレージサブシステムの相対的性能を表す潜在性能量を決定することと、
前記演算装置によって、それぞれのストレージサブシステムの前記潜在性能量に少なくとも基づいて、それぞれのストレージサブシステムのそれぞれの初期分散重みを決定することと、
前記演算装置によって、使用記憶容量の最も低いパーセンテージを有する前記ストレージサブシステムによって使用される記憶容量のパーセンテージよりも閾値量よりも高い使用記憶容量のパーセンテージを有するそれぞれのストレージサブシステムについて、前記初期分散重みを調節する1又は複数の量を決定して、それぞれのストレージサブシステムのそれぞれの所望分散重み決定することと、
前記演算装置によって、前記ストレージプールに格納するためのデータを受信することと、
前記ストレージサブシステムに関して決定された前記それぞれの所望分散重みに少なくとも基づいて、前記データを受信するための前記ストレージサブシステムの1つを選択することと、を含む、方法。
【請求項13】
前記複数のストレージサブシステムへの開放コネクションの数を決定することと、
それぞれのストレージサブシステムへの前記開放コネクションの数に基づいて、それぞれのストレージサブシステムについての現在の分散を決定することと、
前記それぞれのストレージサブシステムの前記それぞれの所望分散重みと前記ストレージサブシステムの前記現在の分散との差に少なくとも基づいて、前記複数のストレージサブシステムのランキングを決定することと、
を更に含む、請求項12に記載の方法。
【請求項14】
演算装置の1又は複数のプロセッサによって実行されるとき、前記演算装置を、操作を実行するように構成する命令を格納する1又は複数の非一時的コンピュータ可読媒体であって、
前記操作は、
演算装置によって、ストレージプールの複数のストレージサブシステムのそれぞれのストレージサブシステムについて、前記ストレージサブシステムの1又は複数の他のストレージシステムに関する前記ストレージサブシステムの相対的性能を表す潜在性能量を決定することと、
前記演算装置によって、それぞれのストレージサブシステムの前記潜在性能量に少なくとも基づいて、それぞれのストレージサブシステムのそれぞれの初期分散重みを決定することと、
前記演算装置によって、使用記憶容量の最も低いパーセンテージを有する前記ストレージサブシステムによって使用される記憶容量のパーセンテージよりも閾値量よりも高い使用記憶容量のパーセンテージを有するそれぞれのストレージサブシステムについて、前記初期分散重みを調節する1又は複数の量を決定して、それぞれのストレージサブシステムのそれぞれの所望分散重み決定することと、
前記演算装置によって、前記ストレージプールに格納するためのデータを受信することと、
前記ストレージサブシステムに関して決定された前記それぞれの所望分散重みに少なくとも基づいて、前記データを受信するための前記ストレージサブシステムの1つを選択することと、を含む
1又は複数の非一時的コンピュータ可読媒体。
【請求項15】
前記操作は、
前記複数のストレージサブシステムへの開放コネクションの数を決定することと、
それぞれのストレージサブシステムへの前記開放コネクションの数に基づいて、それぞれのストレージサブシステムについての現在の分散を決定することと、
それぞれのストレージサブシステムについての前記それぞれの所望分散重みと前記ストレージサブシステムの前記現在の分散との差に少なくとも基づいて、前記複数のストレージサブシステムのランキングを決定することと、を更に含む、
請求項14に記載の1又は複数の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示はデータストレージの技術分野に関する。
【背景技術】
【0002】
データオブジェクト及び他の種類のデータが、複数のデータストレージサブシステムを含み得るストレージプール又は他のストレージシステム配置内に記憶されてもよい。ストレージシステムは、ストレージシステム内の既存のサブシステムと比較したとき、更に高い性能及び/又は容量を有する場合もある新たなサブシステムを追加することによって拡張してもよい。従って、ストレージシステムは容量及び/又は性能に関して、非同種である複数のサブシステムに陥る場合がある。例えば各サブシステムはストレージシステム内の他のサブシステムと異なる性能及び容量を有する可能性があり、そのことは負荷平衡及びデータ分散を複雑化し得る。例えば、そのような状況では、ストレージサブシステムにわたって単に均等にデータを分散することは、より性能が高いサブシステムのより優れた性能を考慮していない。
【発明の概要】
【課題を解決するための手段】
【0003】
一部の実装形態は、ストレージプール内のストレージサブシステムにデータを格納するように構成される演算装置を含む。演算装置は、各ストレージサブシステムに対して、ストレージサブシステムの相対的性能を表す潜在性能量を決定してもよく、少なくとも潜在性能量に基づいて、各ストレージサブシステムについての個々の初期分散重みを決定してもよい。更に演算装置は、使用記憶容量の最も低いパーセンテージを有するストレージサブシステムによって使用される記憶容量のパーセンテージよりも閾値量を超えて高い使用記憶容量のパーセンテージを有する各ストレージサブシステムについて、初期分散重みを調節する1又は複数の量を決定して、それぞれのストレージサブシステムの個々の所望分散重みを決定してもよい。演算装置は、少なくとも所望分散重みに基づいて、データを受信するためのストレージサブシステムの1又は複数を選択してもよい。
【図面の簡単な説明】
【0004】
添付図面に関して詳細な説明を記載する。図中、参照番号の最も左の数字はその参照番号が初めて登場する図を識別する。異なる図内で同じ参照番号を使用することは、同様の又は同一のアイテム又は特徴を示す。
【0005】
【
図1】
図1は、いくつかの実装形態に係る複数の非同種ストレージサブシステムにデータを格納可能なシステムのアーキテクチャの一例を示す。
【0006】
【
図2】
図2は、いくつかの実装形態に係るトラフィック分散を最適化し制御するための処理の第1部分の流れ図を示す。
【0007】
【
図3】
図3は、いくつかの実装形態に係るトラフィック分散を最適化し制御するための処理の続きの流れ図を示す。
【0008】
【
図4】
図4は、いくつかの実装形態に係る選択リストを決定する一例を示すブロック図である。
【0009】
【
図5】
図5は、いくつかの実装形態に係る選択リストを決定する一例を示すブロック図である。
【0010】
【
図6】
図6は、いくつかの実装形態に係る選択リストを決定する一例を示すブロック図である。
【0011】
【
図7】
図7は、本明細書に記載するシステムの少なくともいくつかの機能を実装するために使用され得るサービス演算装置の選ばれたコンポーネントの例を示す。
【0012】
【
図8】
図8は、いくつかの実装形態に係るサブシステムの構成例の選ばれたコンポーネントを示す。
【発明を実施するための形態】
【0013】
本明細書のいくつかの実装形態は、データストレージプール又は他のストレージサブシステム群の使用を最適化するための技法及び配置を対象とする。例えば複数のサブシステムにわたる同様の容量使用水準を保ちながら性能を最適化するために、ストレージプール内の個々のサブシステムに格納するためのデータの分散を制御してもよい。重み(本明細書ではスキューとも呼ぶ)は、性能の向上又は容量の管理により集中するために、ユーザによって構成可能であってもよい。サブシステムの性能及び容量はサブシステムによって報告されてもよく、又は、1又は複数のサービスノードによって決定され且つ維持されてもよい。本明細書の解決策は、サブシステムの記憶容量を概ね均等に埋めながら性能を最適化する。本明細書の実装形態は、容量の問題を引き起こすことなしに、非同種ストレージサブシステムのプールの性能を最適化することができる。従って本システムは、最適な分散を計算するためにサブシステムの性能能力及び容量を使用する。
【0014】
本明細書のいくつかの例は、サブシステムにわたってデータを均等に分散しながら、複数のストレージサブシステムの性能を最適化する。本システムは、容量対性能に関する設定可能な重み(スキュー)をユーザが設定することを可能にする。例えば、高いスキューは、ストレージプール内の最も満杯でないサブシステムを選択することにより重きを置いてもよいのに対し、低いスキューは容量を均等に分散することはあまり問題にせずに高い性能を重視してもよい。更に、決定される分散は、個々のサブシステムの個々のストレージの性能に関して最適化してもよく、全てのサブシステムが同一である場合は均等な分散を提供してもよい。加えてシステムは、個々の統計及び結果に基づいてデータを分散するように構成されてもよく、及び/又はスループットに基づいて分散を維持するようにしてもよい。
【0015】
本明細書の作業負荷の分散は使用中のスレッドを追跡し、期待される使用中のパーセンテージを維持してもよい。加えて容量が相違する場合、容量スキューと最適な性能分散との組み合わせは、ストレージプールの定常性能をもたらしてもよい。例えば最高の性能の装置は、満杯になるにつれて少ないデータの取り込みを受け付けてもよい。加えて、本明細書のデータ分散処理は、ストレージプール内の任意の実際的な数のストレージサブシステムと共に採用されてもよく、ストレージサブシステムの1つが満杯の記憶容量に達するとき等、容量に基づいてデータストレージをリダイレクトすることによって容量不足エラーを回避してもよい。
【0016】
本明細書のいくつかの例は、サブシステムの同様の使用パーセンテージをもたらしながら、性能を最適化するために複数の非同種ストレージサブシステムの組み合わさった性能及び容量を考慮に入れるデータ分散アルゴリズムを含む。本システムは、結果として生じるデータ分散の焦点を性能又は容量に更に当てるために、ユーザが重みを手動で調節できるようにするための、スライド調節を更に含んでもよい。本明細書のシステムは、サブシステムの容量又はサブシステムの性能に焦点を当てるために重みスキューを調節すること等に基づき、サブシステム間での容量使用における幾らかの計算可能な相違を伴う一貫したプール性能を与えてもよい。
【0017】
解説のために、幾つかの実装例は、ストレージサブシステムの性能と容量使用とを平衡させることに基づいてデータの分散を最適なやり方で管理するための、複数の非同種ストレージサブシステムと通信する1又は複数のサービス演算装置の環境にお。但し、本明細書の実装形態は提供する具体例に限定されず、本明細書の開示に照らして当業者に明らかになるように、他の種類の演算システムアーキテクチャ、他の種類のストレージ環境、他の種類のクライアント構成、他の種類のデータ等に拡張されてもよい。
【0018】
図1は、いくつかの実装形態に係る複数の非同種ストレージサブシステムにデータを格納可能なシステム100のアーキテクチャの一例を示す。システム100は、1又は複数のネットワーク105等を介し、第1サブシステム104(1)、第2サブシステム104(2)、第3サブシステム104(3)、第4サブシステム104(4)等の複数のストレージサブシステム104を含むストレージプール103と通信可能な、或いはそれらに接続される1又は複数のサービス演算装置102を含む。サブシステム104(1)~104(4)は、複数の指定のストレージ装置を他のサブシステム104(1)~104(4)のそれぞれと分けて管理する1又は複数の演算装置(
図1には不図示)をそれぞれ含んでもよい。サブシステム104の更なる詳細は
図8に関して以下で論じる。
【0019】
更に、サービス演算装置102は、1又は複数のユーザ演算装置108と1又は複数のネットワーク106上で通信することができる。例えばサービス演算装置102は、クライアント装置がストレージプール104内にデータを格納することを可能にするための、並びに以下で更に論じるような他の管理及び制御機能を実行するための、ストレージプール104へのアクセスをクライアント装置に提供するアクセスノード、サーバノード、管理ノード、及び/又は他の種類のサービスノードであってもよい。
【0020】
サービス演算装置102は、ネットワーク105を介して、或いはネットワーク106を介して等、1又は複数の管理者演算装置110と通信可能としてもよい。例えば管理者演算装置110は、サービス演算装置102及び/又はストレージプール104を構成するために使用されてもよい。クライアント装置108及び管理者装置110は、以下で更に論じるように、様々な種類の演算装置の何れかとしてもよい。
【0021】
いくつかの例では、サービス演算装置102は、任意の数のやり方で具体化され得る1又は複数のサーバを含んでもよい。例えばサービス演算装置102のプログラム、他の機能コンポーネント、及びデータストレージの少なくとも一部は、サーバのクラスタ、サーバファーム、データセンタ、クラウドによってホストされる演算サービス等の中の少なくとも1つのサーバ上に実装されてもよいが、他のコンピュータアーキテクチャが追加で又は代替的に使用されてもよい。別の例として、サービス演算装置102は、実際は複数のサービス演算装置102を含むクラスタである単一ノードとして抽象化し或いは扱ってもよい。サービス演算装置102の更なる詳細を
図7に関して以下で論じる。
【0022】
1又は複数のネットワーク105及び106は、インターネット等の広域ネットワーク、イントラネット等のローカルエリアネットワーク(LAN)、セルラネットワーク等の無線ネットワーク、Wi-Fi等のローカル無線ネットワーク、及び/又はBLUETOOTH(登録商標)等の短距離無線通信、ファイバチャネル、光ファイバ、イーサネット、又は他の任意のかかるネットワークを含む有線ネットワーク、直接の有線接続、又はそれらのものの任意の組み合わせを含む任意の適切なネットワークを含んでもよい。従って、1又は複数のネットワーク105及び106は、有線通信技術及び/又は無線通信技術の両方を含んでもよい。そのような通信に使用されるコンポーネントは、ネットワークの種類、選択された環境、又はその両方に少なくとも部分的に依存し得る。そのようなネットワーク上で通信するためのプロトコルはよく知られており、本明細書では詳しくは論じない。一例として、ネットワーク105はLAN等のプライベートネットワーク、ストレージエリアネットワーク(SAN)、ファイバチャネルネットワークとしてもよい一方、ネットワーク106はいくつかのケースでインターネットを含んでもよく、パブリックネットワーク、又はパブリックネットワークとプライベートネットワークとの組み合わせであってもよい。本明細書の実装形態は、ネットワーク105及び106のような或る特定の種類のネットワークに限定されない。
【0023】
サービス演算装置102は、クライアント装置108を介してストレージ及びデータ管理サービスをクライアントユーザ112にそれぞれ提供するように構成されてもよい。いくつかの非限定的な例として、ユーザ112は会社、企業、組織、政府事業体、学問的事業体等のための機能を実行するユーザを含んでもよく、また、いくつかの例では非常に大量のデータを記憶するストレージを含んでもよい。それでもなお本明細書の実装形態は、システム100並びに本明細書に記載の他のシステム及び配置に関する特定の使用又は応用に限定されない。
【0024】
各クライアント装置108は、デスクトップ、ラップトップ、タブレット演算装置、モバイル装置、スマートフォン、ウェアラブル装置、端末、及び/又はネットワーク上でデータを送信可能な他の任意の種類の演算装置等の任意の適切な種類の演算装置としてもよい。ユーザ112は、個々のユーザアカウント、ユーザログイン資格情報等によってクライアント装置108に関連づけられてもよい。更にクライアント装置108は、1又は複数のネットワーク106によって、別個のネットワークによって、又は他の任意の適切な種類の通信接続によってサービス演算装置102と通信するように構成されてもよい。本明細書の開示の利益を得る当業者には、数多くの他の改変形態が明らかになる。
【0025】
更に、各クライアント装置108は、書込み操作、読み出し操作、削除操作等のデータ命令118によってサブシステム104上に格納するためにユーザデータを送信するために及び/又はサブシステム104から記憶済みデータを受信するために等、サービス演算装置102上で実行可能なクライアントウェブアプリケーション116と通信する等のためにクライアント装置108上で実行され得るユーザアプリケーション114の個々のインスタンスを含んでもよい。いくつかのケースでは、アプリケーション114はブラウザを含んでもよく又はブラウザによって操作してもよい一方、他のケースではアプリケーション114は1又は複数のネットワーク106上でのクライアントウェブアプリケーション116又はサービス演算装置102上の他のアプリケーションとの通信を可能にする通信機能を有する他の任意の種類のアプリケーションを含んでもよい。従って、サービス演算装置102はユーザ112及びそれぞれのクライアント装置108にストレージを提供してもよい。定常状態運転中、サービス演算装置102と周期的に通信するユーザ112が存在してもよい。
【0026】
加えて、管理者装置110は、デスクトップ、ラップトップ、タブレット演算装置、モバイル装置、スマートフォン、ウェアラブル装置、端末、及び/又はネットワーク上でデータを送信可能な他の任意の種類の演算装置等の任意の適切な種類の演算装置であってもよい。管理者120は、個々の管理者アカウント、管理者ログイン資格情報等によって管理者装置110に関連付けられてもよい。更に管理者装置110は、1又は複数のネットワーク106、107を介して、別個のネットワークを介して、又は他の任意の適切な種類の通信接続を介して、サービス演算装置102と通信可能であってもよい。
【0027】
更に、各管理者装置110は、管理命令等により、システム100を管理するための管理命令を送信するために並びにサブシステム104上に格納するために管理データを送信するために、及び/又はサブシステム104から格納済み管理データを受信するために等、サービス演算装置102上で実行可能な管理ウェブアプリケーション124と通信する等のために管理者装置110上で実行され得る、管理者アプリケーション122の個々のインスタンスを含んでもよい。いくつかのケースでは、管理者アプリケーション122はブラウザを含んでもよく、又はブラウザによって操作してもよく、一方、他のケースでは、管理者アプリケーション122は、1又は複数のネットワーク107又は106上での管理ウェブアプリケーション124又はサービス演算装置102又はサブシステム104上の他のアプリケーションとの通信を可能にする通信機能を有する、他の任意の種類のアプリケーションを含んでもよい。
【0028】
サービス演算装置102は、サブシステム104に格納されるデータ130を送信するために及びサブシステム104から要求されたデータ130を取り出すために等、サブシステム104へのアクセスを提供することができるストレージ管理プログラム128を実行してもよい。加えてストレージ管理プログラム128は、データ保持期間、データ保護レベル、データ複製等のために、システム100によって格納されるデータを管理してもよい。いくつかのケースでは、ストレージ管理プログラム128は、性能メトリック、容量使用メトリック等のサブシステムメトリック132を周期的にそれぞれのサブシステム104から受信してもよい。更に、以下で更に論じるように、ストレージ管理プログラム128は、サブシステム104の記憶容量を概ね平衡させながら、サブシステム104の性能を最適化し得る、負荷分散最適化プログラム134を含んでもよい。
【0029】
この例では、負荷分散最適化プログラム134は、ストレージ管理プログラム128の一部として示す。但し、他の例では、負荷分散最適化プログラム134はストレージ管理プログラム128と別個のプログラムでもよく、ストレージ管理プログラム128又は、サービス演算装置102、管理者装置110等で実行される他のプログラムによって呼び出されてもよい。
【0030】
サービス演算装置102は、1又は複数のサービス演算装置102にわたって分散され得る、メタデータデータベース(DB)136を更に含んでもよい。例えばメタデータDB136は、サブシステム104に格納されるデータ130を管理するために使用されてもよい。メタデータDB136は、個々のデータオブジェクト又は他のデータに関する情報、データへのアクセス方法、データに関する記憶保護レベル、記憶保持期間、データ所有者情報、データサイズ、データ型等の、データ136に関する数多くのメタデータを含んでもよい。更に、ストレージ管理プログラム138は、新たなデータが格納されるとき、古いデータが削除されるとき、データが移動されるとき等にメタデータDB136を更新するために、並びにデータ130にアクセスするための要求に応答するため等に、メタデータDB136を管理し、維持してもよい。
【0031】
一例として、ストレージ管理プログラム128はストレージプール103にデータ130を格納するためのデータ命令を受信してもよい。ストレージ管理プログラム128は、選択リスト138の少なくとも一部に基づいて、宛先のサブシステム104を選択してもよい。ストレージ管理プログラム128は、データ130用のメタデータをメタデータデータベース136に追加してもよく、選択されたサブシステム104にデータ130を送信してもよい。選択されたサブシステム104のコネクション数は、1インクリメントされてもよい。選択されたサブシステム104へのデータ130の送信が完了した後、選択されたサブシステム104へのコネクション数は1デクリメントされてもよく、ストレージ管理プログラム128は、成功、失敗等を示す完了メッセージを用いて、要求したクライアント装置108への応答を開始してもよい。選択リスト138の決定の詳細を以下で更に論じる。
【0032】
各サブシステム104(1)~104(4)は、それぞれのサブシステム104(1)~104(4)においてそれぞれのデータ130(1)~130(4)の格納を管理するためのストレージプログラム140(1)~140(4)をそれぞれ実行してもよい。例えばストレージプログラム140は、サービス演算装置102のストレージ管理プログラム128からデータ130を受信してもよく、サブシステム104における1又は複数のストレージ装置上にデータ130を格納してもよく、クライアント読み出し要求等に応答して要求されたデータを取り出し、ストレージ管理プログラム128に送信してもよい。ストレージプログラム140は、サブシステム104の特定のものの上にある特定のストレージプログラム140によって管理される個々のストレージ装置に関する性能情報、容量使用情報等の情報をストレージ管理プログラム128に提供してもよい。
【0033】
図2及び
図3は、いくつかの実装形態による、トラフィック分散を最適化して制御するための処理200の一例を示す流れ図である。この処理は、その一部又は全てがハードウェア、ソフトウェア、又はその組み合わせによって実装され得る、一連の操作を表す論理流れ図の中のブロックの集合として示されている。ソフトウェアの文脈では、ブロックは、1又は複数のプロセッサによって実行されるとき、列挙される操作を実行するようにプロセッサをプログラムする、1又は複数のコンピュータ可読媒体上に記憶されるコンピュータ実行可能命令を表してもよい。概してコンピュータ実行可能命令は、特定の機能を実行し又は特定のデータ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。ブロックが記載されている順序は限定として解釈すべきではない。記載するブロックの任意の個数を任意の順序で及び/又は並列に組み合わせてこの処理又は代替的処理を実装することができ、ブロックの全てを実行しなければならないわけではない。解説目的で、処理は、本明細書の例の中で記載される環境、枠組み、及びシステムを参照して説明されているが、この処理は多岐にわたる他の環境、枠組み、及びシステムで実装してもよい。
【0034】
負荷分散最適化プログラム134は、以下のアルゴリズムに部分的に基づいてもよい。例えば値Cnはストレージプール103内の或るストレージサブシステム104内で使用される容量のパーセントを表すと仮定し、但しnは1からストレージプール103内のサブシステム104の数までの間の数である。従ってCnは、(使用容量/総容量)*100に等しくてもよい。更にCminを、最も少ないパーセンテージが使用されているサブシステム上で使用されている容量のパーセンテージ(即ちプール内の最小Cn)と仮定する。更に、BTを平衡閾値パーセンテージと仮定し、例えばCminよりも値BTだけ高くないCnを有するいずれのサブシステムも平衡していると考えられる。全てのシステムが平衡している場合、スキュー乗数Sに関係なく、データ分散は完全に性能に基づき、容量には全く基づかない。従って(Cn-Cmin)は、ストレージプール103内の或るストレージサブシステム104の平衡パーセンテージの外を表してもよい。この値はCminでは0であり、(Cn-Cmin)≦BTの任意のサブシステムで事実上0である。更に、Dnを特定のストレージサブシステムについてのトラフィックの分散のパーセントと仮定する。ストレージプール内の全てのDnの和は、常に100%であってもよい。
【0035】
(Cn-Cmin)≦BTの平衡したシステムでは、Dnは以下のように計算してもよい:
Dn=Tn/TP+SUM(但し(Cx-Cmin≦BT)(MIN((Cx-Cmin)*S,100%)*Tx/TP/NB) 式(1)
【0036】
式(1)では、Tnは、プール内の或るストレージサブシステムの最大スループットであり、nは1からプール内のサブシステムの数までの数である。単位はMB/sec又は他の一貫した単位であってもよい。Tnの値は、ディスク速度、ネットワーク帯域幅、及びCPU制限等の任意の数の性能特性によって限定されてもよい。
【0037】
加えて式(1)では、TPはストレージプール103内のサブシステム104の総スループット能力、即ちストレージプール103内の全てのTnの和を表してもよい。
【0038】
加えて式(1)では、Sは性能対容量を制御するためのスキュー乗数を表してもよい。例えば大きい数は容量だけに基づいてデータを分散するのに対し、0の値はサブシステムの性能能力だけに基づくデータ分散をもたらす。Sが1に等しく設定される場合、システムは性能及び容量の概ね均等な適用に基づいてトラフィックを分散してもよい。
【0039】
加えて式(1)では、Cxは、プール内の不平衡サブシステムについてのCnと同じであってもよく、xは1からストレージプール103内の不平衡サブシステム((Cn-Cmin)>BT)の数までの数である。
【0040】
加えて式(1)では、Txは、プール103内の不平衡サブシステムについてのTnと同じであってもよく、xは1からストレージプール103内の不平衡サブシステム((Cn-Cmin)>BT)の数までの数である。
【0041】
加えて式(1)では、NBはプール103内の平衡サブシステム104の数、即ち(Cn-Cmin)≦BTであるサブシステム104の数を表してもよい。
【0042】
更に、(Cn-Cmin)>BTが成立するストレージプール103内の不平衡サブシステム104に関してDnは以下のように計算することができる:
Dn=MAX((100%-(Cn-Cmin)*S)*Tn/TP,0%) 式(2)
但しCn、Cmin、S、Tn、及びTPの値は、式(1)に関して上記で論じたものと同じであってもよい。
【0043】
図2~
図6の以下の例では、上記で論じた方程式の一部の概念は、
図1に関して上記で論じたシステム100の例の中のストレージプール103内にあるような、複数のサブシステム104のうちで取り込みデータトラフィックの分散を決定し制御するために、部分的に一般化され適用されてもよい。例えば平衡閾値BT、即ちプール103内のサブシステム104内で使用される容量のパーセンテージ間の許容パーセンテージ差は、2%等の既定値に構成されると仮定する。更に、初期所望分散(IDD)は、性能に基づいてプール103内の各ストレージサブシステム104が得ることが予期されるコネクションのパーセンテージであると仮定する。IDDは個々のサブシステム104の容量ではなく性能だけに基づく重みであってもよい。加えて、平衡外パーセンテージ(OOBP)は、増加がBTを上回る場合、ストレージサブシステム104の使用パーセンテージの増加を表してもよい。OOBPは、使用容量の最小パーセンテージのストレージサブシステム104に対して計算されてもよい。更に、再分散パーセンテージ(RDP)は、平衡閾値を超えて満たされるサブシステムの1つから減算され、平衡が取れた最も小さいサブシステムに加算されるIDDの量を表してもよい。RDPは、調節済み再分散パーセンテージ(ARDP)を決定するために使用してもよく、ARDPは不平衡サブシステムから平衡が取れた最小のサブシステムの1つに分散されるIDDの量であり、つまりARDP=(RDP/平衡サブシステムの数)である。加えて現在の分散(CD)は、プール内のストレージサブシステム上の開放されているコネクションのパーセンテージを表してもよい。CDはCD=(100%
*サブシステム上の開放コネクション/プール内の開放コネクション)で計算できる。更に、所望の分散(DD)は、サブシステム104のそれぞれに向けられるトラフィックのパーセンテージを示す重みであってもよい。
【0044】
図2は、いくつかの実装形態に係るトラフィック分散を最適化し制御するための処理200の第1部分の流れ図を示す。
図2の例では、処理200はストレージ管理プログラム128等の負荷分散最適化プログラム134を実行する1又は複数のサービス演算装置102によって少なくとも部分的に実行されてもよい。
【0045】
負荷分散最適化プログラム134は、サブシステム104の容量の同様のパーセンテージ使用をもたらしながら性能を最適化するために、ストレージサブシステム104の性能及び容量を組み合わせる。負荷分散最適化プログラム134は、性能及び容量に関してサブシステムが完全に異なる(非同種である)ときでさえ最適化を実行してもよい。
【0046】
いくつかのケースでは、負荷分散最適化プログラム134は、最適化の焦点をより性能の方に又はより容量平衡の方に調節するために使用可能な重み乗数であるスキュー乗数を含んでもよい。本明細書の実装形態では、スキュー乗数の「0」値は、個々のサブシステム104が完全に満たされるまで、容量使用を考えずに常に最も高い性能を実現するようにトラフィックを導いてもよい。他方でスキュー乗数の大きい(例えば「1」よりも大幅に大きい値は、ストレージサブシステム104の容量を平衡させ、個々のサブシステム104の性能を無視するように全てのトラフィックを導いてもよい。スキュー乗数値が(100%/平衡閾値)を上回る場合、トラフィックは不平衡サブシステムに行かない。「1」のスキュー乗数値は、容量と性能とが等しい重みを有することを許容する。
【0047】
本明細書の一部の例では、複数のサブシステム104を含むストレージプール103が複数のシナリオで平衡外になってもよい。一例として、古くなり満たされているストレージプール103に新たなサブシステム104が追加されてもよい。新たな(及び推定上空の)サブシステム104がストレージプール103に追加されるとき、負荷分散最適化プログラム134は、最適な性能を保ちながら、より満たされていない新たに追加された記憶容量を活用する。新たなサブシステム104は既存のサブシステム104よりも早く満たされることが予期され得るので、全てのサブシステム104間の平衡外の差が小さくなり、新たに取り込まれるデータは、既存の部分的に満たされたサブシステム104に徐々に導かれてもよい。
【0048】
全てのサブシステム104が同じ性能特性を有する場合、それらのサブシステム104は、性能を最適化しながら平衡した容量に継続的に近づき得る。サブシステム104が互いに異なる性能を有する場合、負荷分散最適化プログラム134は、より高速のシステムをより素早く満たすことを許容してもよい。その場合、サブシステム104は平衡した容量から平衡外の容量に変わってもよい。この状況では、負荷分散最適化プログラム134は、より素早く満たされる、より高速の(より高性能の)サブシステムへの、新たなデータの流れを制限し始める。サブシステム104にわたる性能は、より満たされておらず、より遅く満たされるサブシステム104へと焦点が徐々に変わるにつれ、スキュー乗数に基づいて徐々に安定化してもよい。
【0049】
201で、サービス演算装置は、サブシステム104に関する既存の満了していないメトリックがあるか否かを判定してもよい。該当する場合、この処理は204に進んでもよい。該当しない場合、この処理は202に進んで、サブシステム104に関するメトリックを得てもよい。
【0050】
202で、サービス演算装置は、サブシステム104に関する容量メトリック、及び一部の例では性能メトリックを受信してもよい。例えばサービス演算装置は、サブシステム104にメトリックを要求してもよく、周期的にメトリックを受信するために待つてもよく、又はサービス演算装置102によって決定される情報に基づいてメトリックを計算してもよい。一部の例では、サブシステム104は性能及び容量メトリックを周期的にサービス演算装置102に送信するように構成されてもよい。幾つかの非限定的な例として、この期間は1分、2分、3分、5分、15分、30分ごと、1時間ごと、日ごと等であってもよい。
【0051】
204で、サービス演算装置は、各サブシステム104についての性能メトリックが受信されているか否かを判定してもよい。該当する場合、この処理は208に進む。該当しない場合、この処理は206に進む。
【0052】
206で、接続されている全てのサブシステム104について性能メトリックが受信されていない場合、サービス演算装置は、全てのサブシステム104にわたってデータ分散のための初期所望分散(IDD)を最初に等しく設定してもよい。例えばストレージプール103内のサブシステム104の何れかが性能メトリックを返さない場合、初期所望分散IDDを、ストレージプール103内のサブシステム104にわたって均等に分散することができる。加えて又は選択的に、たとえ性能メトリックが特定のサブシステム104によって返されない場合があっても、性能メトリックは、その後の計算の結果等に基づいて、サービス演算装置102によって計算されてもよい。
【0053】
208で、ストレージプール103内の全てのサブシステム104について性能メトリックが受信されている場合、サービス演算装置はサブシステム104の残りの性能能力に基づいてデータ分散のためのIDDを計算してもよい。例えば各サブシステム104のIDDは、そのサブシステムの利用可能な性能能力を、全てのサブシステム104の利用可能な性能能力の和で除算することにより計算されてもよい。
【0054】
210で、サービス演算装置は、最も高いサブシステムの容量使用パーセンテージと最も低いサブシステムの容量使用パーセンテージとの差が、差に関する平衡閾値BTより大きいか否か判定してもよい。該当しない場合、この処理は212に進む。他方で差が平衡閾値BTより大きい場合、この処理は214に進む。
【0055】
212で、この差がいずれのサブシステム104についても平衡閾値BTよりも大きくない場合、サブシステム104は平衡した容量を有し、いずれのサブシステム104も再分散パーセンテージ(RDP)又は調節済み再分散パーセンテージ(ARDP)を有さない。従って、ブロック214~220を飛ばしてもよく、この処理は
図3のブロック301に進んでもよい。
【0056】
214で、最も高いサブシステムの容量使用パーセンテージと最も低いサブシステムの容量使用パーセンテージとの差が平衡閾値BTよりも大きい場合、サービス演算装置は、平衡閾値BTを超えるそれぞれのサブシステムに平衡外パーセンテージ(OOBP)を決定してもよい。例えばOOBPは、サブシステムのパーセンテージ容量からストレージプール103内のいずれかのサブシステム104によって使用される最も低いパーセント容量を引いたものと等しくてもよい。
【0057】
216で、サービス演算装置は、OOBPをスキュー乗数(本明細書では重み乗数とも呼ぶ)と乗算して再分散パーセンテージ(RDP)を決定してもよい。例えばRDPは、選択されたサブシステムからより満たされていないサブシステムへ均等に再分散される初期分散のパーセンテージである。
【0058】
218で、サービス演算装置は全ての平衡外サブシステムがOOBP及びRDPを決定するために処理されているかいなかを判定してもよい。該当する場合、この処理は220に進む。該当しない場合、この処理は214に戻ってOOBP及びRDPを決定するための別の平衡外サブシステムを選択する。これにより、RDPが、最も低いパーセンテージが使用されているサブシステム上で使用されるパーセントよりも平衡閾値BTよりも高い使用パーセント容量を有するそれぞれのサブシステムに決定される。
【0059】
220で、サービス演算装置は、全てのRDPを、RDPが計算されなかったサブシステムの数で除算することで調節済み再分散パーセンテージARDPを決定してもよい。上記で述べたように、RDPは最も低く満たされたサブシステムの平衡閾値BT内のいずれのサブシステムについても計算されない。
【0060】
図3は、いくつかの実装形態に係るトラフィック分散を最適化し制御するための処理200の続きの流れ図を示す。
【0061】
301で、サービス演算装置は、それぞれのサブシステム104の所望の分散DDの重みを、それぞれのサブシステムのIDDをARDPのパーセンテージで乗算し、ARDPを有するそれぞれのサブシステムについて、IDDからRDPを減算する(又は同じ結果を実現するために、ストレージプール内のそれぞれの平衡サブシステムにつき1度、IDDからその積を減算する)ことにより決定してもよい。ARDPを有さないそれぞれのサブシステムについて、ARDPを有するサブシステムからのARDPとIDDとの積がそれらのシステムのIDDに加えられる。サブシステム104のいずれもARDPを有さない場合、それぞれのIDDは、それぞれのサブシステム104のためのそれぞれのDDでもある。
【0062】
302で、サービス演算装置はデータ取り込み要求を受信してもよい。一例として、
図1に関して上記で論じたように、クライアント装置はストレージプール103にデータを記憶するように要求してもよい。データ取り込み要求の他の様々なソースは本明細書の開示の利益を有する当業者に明らかになる。
【0063】
303で、サービス演算装置は、所望の分散DDの値が全てのサブシステム104について確立されており、満了していないか否かを判定してもよい。例えばサブシステムメトリックは、固定された満了時間に基づいて、1又は複数のメトリックのパーセンテージの変化に基づいて、新たなメトリックの受信等に基づいて満期を有してもよい。いくつかのケースでは、このメトリックが、システム100内又はシステム100外等の別個の演算装置において維持されてもよい。加えて、所望の分散DDの値も満期を有してもよく、その満期はいくつかのケースではメトリックの満期に関係していてもよく、又は他のケースでは無関係であり別々に管理されてもよい。加えていくつかの例では、DDの値は、データ取り込み要求を受信することに応答してのみ計算されてもよい。DDの値が計算され且つ満了していない場合、処理は304に進む。DDの値が計算されておらず又は満了している場合、処理は
図2に進んでブロック201を実行する。
【0064】
304で、サービス演算装置は、全てのサブシステムのコネクションが維持されているか否か、又はサブシステムの現在のコネクション数のどれもゼロではないと判定してもよい。コネクションは、ランク付けされた選択リスト138の実際の使用に基づいて等、サービス演算装置102によって維持されてもよい。例えば所望の分散の決定後、サブシステム104の1又は複数がもはやコネクションを一切有さない場合、決定された分散は無効であってもよい。条件が満たされる場合、処理は308に進む。条件が満たされない場合、処理は306に進む。
【0065】
306で、1又は複数のサブシステムがもはや接続されていないか、又はコネクションが他に維持されていない(例えば少なくとも1つのサブシステムはコネクションを有さない)場合、サービス演算装置は、個々の所望の分散DDを重みとして無作為に用いて、サブシステム104の選択リスト138の順序を整えてもよい。
【0066】
308で、全てのサブシステム104が少なくとも1つの知られているコネクションを有する場合、サービス演算装置は、CDから最もかけ離れて高い所望の分散DDを有するサブシステムを選択リスト138の一番上にランク付けすること、CDから最もかけ離れて低いDDを有するサブシステムを選択リスト138の一番下にランク付けすること、及びその間にある他のサブシステムをそのそれぞれのDDのCDからのそれぞれの距離に基づいて、適宜ランク付けすることにより、サブシステムの選択リストの順序を整えてもよい。例えば現在の分散CDは、100*サブシステム上の開放コネクション/ストレージプール内の開放コネクションとして計算されてもよい。
【0067】
310で、サービス演算装置は、最大容量使用閾値を上回る容量使用を有するサブシステムを選択リストの一番下に移動してもよい。1つの非限定的な例として、最大容量閾値は90パーセント満たされていると仮定する。従って90パーセントを超える容量使用を有するいずれのサブシステムも、そのサブシステムのDDとCDとの差に関係なく、選択リスト138の一番下に移動される。
【0068】
312で、サービス演算装置は、それぞれのサブシステム104に取り込みデータを分散するために選択リスト138を使用してもよい。例えばサービス演算装置102は、選択リスト138内のそれぞれのサブシステム104の順位に基づいて、1又は複数のサブシステム104内で取り込みデータを分散してもよい。例えばサービス演算装置は、選択リスト内で第1サブシステムを選択してもよい。本明細書の計算は、データに使用されているデータ保護レベル(DPL)を理解する必要はない。例えば1よりも多いサブシステムは、1又は複数の冗長コピーが記憶される場合において等において、構成されたDPLを満たすために同時に選択されてもよい。処理200は、ストレージプール103に基づく間隔でDDを生成してもよい。いくつかのケースでは、それぞれの要求は選択リスト138のためのランキングを生成するためにDDを使用してもよい。取り込みデータが選択されたサブシステム104に送信された後、処理はブロック302に戻って、次のデータ取り込み要求が受信されるのを待つてもよい。
【0069】
本明細書に記載した処理例は、解説目的で示した処理例に過ぎない。本明細書の開示に照らして数多くの他の改変形態が当業者に明らかになる。更に、本明細書の開示は処理を実行するのに適した枠組み、アーキテクチャ、及び環境の幾つかの例を記載したが、本明細書の実装形態は図示され、解説された具体例に限定されない。更に、本開示は記載され、図中に示された様々な実装例を提供する。但し本開示は、本明細書に記載され、図示された実装形態に限定されず、当業者に知られる又は当業者に知られることになる他の実装形態に拡げることができる。
【0070】
図4は、いくつかの実装形態に係る選択リスト138の決定の一例400を示すブロック図である。この例では、第1サブシステム104(1)は10個の開放コネクションを有し、第2サブシステム104(2)は15個の開放コネクションを有し、第3サブシステム104(3)は5個の開放コネクションを有し、第4サブシステム104(4)は10個の開放コネクションを有すると仮定する。従って全部で40個の開放コネクションがある。そのため、第1サブシステム104(1)の現在の分散CDは25%(即ち10/40)であり、第2サブシステム104(2)のCDは37.5%(15/40)であり、第3サブシステム104(3)のCDは12.5%(5/40)であり、第4サブシステム104(4)のCDは25%(10/40)である。更にこの例では、第1サブシステム104(1)の現在の使用容量は90%であり、第2サブシステム104(2)の現在の使用容量は50%であり、第3サブシステム104(3)の現在の使用容量は11%であり、第4サブシステム104(4)の現在の使用容量は10%であると仮定する。
【0071】
この例では、サブシステム104(1)~104(4)は全て100MB/sの等しい更なる性能余地を有すると仮定し、そのため初期所望分散IDDはそれぞれのサブシステム104について25%(100MB/s/(4*100MB/S)である。加えて、第1サブシステム104(1)及び第2サブシステム104(2)は最も満たされていないサブシステム104(4)よりも2%の平衡閾値BTよりも高く、そのためRDPは第1サブシステム104(1)及び第2サブシステム104(2)の両方について計算されてもよい。この例では、スキュー乗数が1の値を有する、即ち平衡した性能及び容量が釣り合っていることに対応すると仮定する。
【0072】
第1サブシステム104(1)について、OOBPは90-10=80%の平衡外である。スキュー乗数が1なので、RDPも80%である。最も満たされていない2つのサブシステム104(3)及び104(4)は互いの2%の容量の範囲内にあり、従って平衡していると考えられ、そのため第1サブシステム104(1)について、ARDPは80%/2=40%である。
【0073】
第2のサブシステムについて、OOBPが50-10=40%である。RDPも40%に等しく、ARDPは40%/2、即ち20%である。
【0074】
次に、それぞれのサブシステム104(1)~104(4)について、所望の分散DDが決定されてもよい。DDは、ARDPを有するいずれかのサブシステム104(1)~104(4)が、自らのIDDから最も満たされていないそれぞれのサブシステムについてのARDPを減らし、それらの最も満たされていないサブシステムをそのパーセンテージの分だけ増やすべきであるとの規則に基づいて決定されてもよい。
【0075】
第1サブシステム104(1)について、IDD=25%、RDP=80%、ARDP=40%であり、40%*25%=10%であり、従ってDD=25%-10%-10%=5%である。
【0076】
第2サブシステム104(2)について、IDD=25%、RDP=40%、ARDP=20%であり、20%*25%=5%であり、従ってDD=25%-5%-5%=15%である。
【0077】
第3サブシステム104(3)について、IDD=25%であり、従ってDD=25%+10%+5%=40%である。
【0078】
第4サブシステム104(4)について、IDD=25%であり、DD=25%+10%+5%=40%である。
【0079】
加えて、上記で論じたように、この例の全てのサブシステム104(1)~104(4)は知られているコネクションを有し、そのため選択リスト138は、それぞれのサブシステム104(1)~104(4)のDDとCDとの差に基づいて、ソートされてもよい。
【0080】
従って第3サブシステム104(3)は1番にランク付けされてもよい:DD-CD=40%-12.5%=27.5%少ない。
【0081】
第4サブシステム104(4)は2番にランク付けされてもよい:DD-CD=40%-25%=15%少ない。
【0082】
第1サブシステム104(1)は3番にランク付けされてもよい:DD-CD=5%-25%=-20%少ない(20%多過ぎる)。
【0083】
第2サブシステム104(2)は4番にランク付けされてもよい:DD-CD=15%-37.5%=-22.5%少ない(22.5%多過ぎる)。
【0084】
しかし、最も満たされている容量の閾値が90%に設定されると仮定する。従って第1サブシステム104(1)は90%の容量であるので、選択リスト138は、第3サブシステム104(3)、第4のサブシステム104(4)、第2サブシステム104(2)、及び第1サブシステム104(1)の最終選択順序のために、第1サブシステム104(1)を一番下に移動するように再配置される。
【0085】
図5は、いくつかの実装形態に係る選択リスト138の決定の一例500を示すブロック図である。この例では、第1サブシステム104(1)は10個の開放コネクションを有し、第2サブシステム104(2)は15個の開放コネクションを有し、第3サブシステム104(3)は5個の開放コネクションを有し、第4サブシステム104(4)は10個の開放コネクションを有すると仮定する。従って全部で40個の開放コネクションがある。そのため、第1サブシステム104(1)のCDは25%であり、第2サブシステム104(2)のCDは37.5%であり、第3サブシステム104(3)のCDは12.5%であり、第4サブシステム104(4)のCDは25%である。更にこの例では、第1サブシステム104(1)の現在の使用容量は90%であり、第2サブシステム104(2)の現在の使用容量は50%であり、第3サブシステム104(3)の現在の使用容量は11%であり、第4サブシステム104(4)の現在の使用容量は10%であると仮定する。
【0086】
この例では、サブシステム104(1)~104(4)は異なる潜在性能を有すると仮定する。例えば第1サブシステム104(1)及び第2サブシステム104(2)は400MB/sの潜在性能を報告する一方、第3サブシステム104(3)及び第4サブシステム104(4)は100MB/sの潜在性能を報告すると仮定する。従って、初期所望分散IDDは、第1サブシステム104(1)及び第2サブシステム104(2)について40%、即ち(400MB/s/(400MB/s+400MB/s+100MB/s+100MB/s))であり、第3サブシステム104(3)及び第4サブシステム104(4)について10%である。
【0087】
加えて、第1サブシステム104(1)及び第2サブシステム104(2)は最も満たされていないサブシステム104(4)よりも2%の平衡閾値BTよりも高く、そのためRDPは、第1サブシステム104(1)及び第2のサブシステム104(2)の両方について計算されてもよい。この例ではスキュー乗数が1の値である、即ち平衡した性能及び容量が釣り合っていることに対応すると仮定する。
【0088】
第1サブシステム104(1)について、OOBPは90-10=80%の平衡外である。スキュー乗数が1なので、RDPも80%である。最も満たされていない2つのサブシステム104(3)及び104(4)は互いの2%の容量の範囲内にあり、従って平衡していると考えられ、そのため第1サブシステム104(1)についてARDPは80%/2=40%である。
【0089】
第2サブシステムについて、OOBPは50-10=40%である。RDPも40%に等しく、ARDPは40%/2、即ち20%である。
【0090】
次に、所望の分散DDは、それぞれのサブシステム104(1)~104(4)に関して決定されてもよい。DDは、ARDPを有するいずれかのサブシステム104(1)~104(4)が、自らのIDDから、最も満たされていないそれぞれのサブシステムについてARDPを減らし、それらの最も満たされていないサブシステムをそのパーセンテージの分だけ増やすべきとの規則に基づいて決定されてもよい。
【0091】
第1サブシステム104(1)について、IDD=40%、RDP=80%、ARDP=40%であり、40%*40%=16%であり、従ってDD=40%-16%-16%=8%である。
【0092】
第2サブシステム104(2)について、IDD=40%、RDP=40%、ARDP=20%であり、20%*40%=8%であり、従ってDD=40%-8%-8%=24%である。
【0093】
第3サブシステム104(3)について、IDD=10%であり、従ってDD=10%+16%+8%=34%である。
【0094】
第4サブシステム104(4)について、IDD=10%であり、DD=10%+16%+8%=34%である。
【0095】
加えて、上記で論じたようにこの例の全てのサブシステム104(1)~104(4)は知られているコネクションを有し、そのため選択リスト138は、それぞれのサブシステム104(1)~104(4)のDDとCDとの差に基づいて、ソートされてもよい。
【0096】
従って第3サブシステム104(3)は1番にランク付けされてもよい:DD-CD=34%-12.5%=21.5%少ない。
【0097】
第4サブシステム104(4)は2番にランク付けされてもよい:DD-CD=34%-25%=9%少ない。
【0098】
第2サブシステム104(2)は3番にランク付けされてもよい:DD-CD=24%-37.5%=-13.5%少ない(13.5%多過ぎる)。
【0099】
第1サブシステム104(1)を4番にランク付けすることができる:DD-CD=8%-25%=-17%少ない(17%多過ぎる)。
【0100】
加えて、最も満たされている容量の閾値は90%に設定されると仮定する。従って第1サブシステム104(1)は90%の容量であるので、第1サブシステム104(1)は選択リスト138の一番下に配置されるべきであるが、第1サブシステム104(1)は既に一番下にランク付けされているので、この例では選択リスト138を再配置する必要がない。
【0101】
図6は、いくつかの実装形態に係る選択リスト138の決定の一例600を示すブロック図である。この例では、第1サブシステム104(1)は10個の開放コネクションを有し、第2サブシステム104(2)は15個の開放コネクションを有し、第3サブシステム104(3)は5個の開放コネクションを有し、第4サブシステム104(4)は10個の開放コネクションを有すると仮定する。従って全部で40個の開放コネクションがある。そのため、第1サブシステム104(1)の現在の分散CDは25%(即ち10/40)であり、第2サブシステム104(2)のCDは37.5%(15/40)であり、第3サブシステム104(3)のCDは12.5%(5/40)であり、第4サブシステム104(4)のCDは25%(10/40)である。更にこの例では、第1サブシステム104(1)の現在の使用容量は90%であり、第2サブシステム104(2)の現在の使用容量は50%であり、第3サブシステム104(3)の現在の使用容量は11%であり、第4サブシステム104(4)の現在の使用容量は10%であると仮定する。
【0102】
この例では、サブシステム104(1)~104(4)が異なる潜在性能を有すると仮定する。例えば第1サブシステム104(1)及び第2サブシステム104(2)は400MB/sの潜在性能を報告する一方、第3サブシステム104(3)及び第4サブシステム104(4)は100MB/sの潜在性能を報告すると仮定する。従って、初期所望分散IDDは第1サブシステム104(1)及び第2サブシステム104(2)について40%、即ち(400MB/s/(400MB/s+400MB/s+100MB/s+100MB/s))であり、第3サブシステム104(3)及び第4サブシステム104(4)について10%である。
【0103】
加えて、第1サブシステム104(1)及び第2サブシステム104(2)は最も満たされていないサブシステム104(4)よりも2%の平衡閾値BTよりも高く、そのためRDPは、第1サブシステム104(1)及び第2サブシステム104(2)の両方について計算されてもよい。この例ではスキュー乗数が0.9の値である、即ち容量のつり合いよりも性能を偏重することに対応する仮定する。
【0104】
第1サブシステム104(1)について、OOBPは90-10=80%の平衡外である。スキュー乗数が0.9であるので、RDPは0.9*80%=72%である。最も満たされていない2つのサブシステム104(3)及び104(4)は互いの2%の容量の範囲内にあり、従って平衡していると考えられ、そのため第1サブシステム104(1)についてARDPは72%/2=36%である。
【0105】
第2サブシステムについて、OOBPは50-10=40%である。RDPは40%*0.9=36%に等しく、ARDPは36%/2、即ち18%である。
【0106】
次に、所望の分散DDは、それぞれのサブシステム104(1)~104(4)に関して決定されてもよい。DDは、ARDPを有する任意のサブシステム104(1)~104(4)は、自らのIDDからそれぞれの最も満たされていないサブシステムについてのARDPを減らし、それらの最も満たされていないサブシステムについてそのパーセンテージの分だけ増やすべき規則に基づいて決定されてもよい。
【0107】
第1サブシステム104(1)について、IDD=40%、RDP=72%、ARDP=36%であり、36%*40%=14.4%であり、従ってDD=40%-14.4%-14.4%=11.2%である。
【0108】
第2サブシステム104(2)について、IDD=40%、RDP=36%、ARDP=18%であり、18%*40%=7.2%であり、従ってDD=40%-7.2%-7.2%=25.6である。
【0109】
第3サブシステム104(3)について、IDD=10%であり、従ってDD=10%+14.4%+7.2%=31.6%である。
【0110】
第4サブシステム104(4)について、IDD=10%であり、従ってDD=10%+14.4%+7.2%=31.6%である。
【0111】
加えて、上記で論じたようにこの例の全てのサブシステム104(1)~104(4)は知られているコネクションを有し、そのため選択リスト138はそれぞれのサブシステム104(1)~104(4)のDDとCDとの差に基づいて、ソートされてもよい。
【0112】
従って第3サブシステム104(3)は1番にランク付けされてもよい:DD-CD=31.6%-12.5%=19.1%少ない。
【0113】
第4サブシステム104(4)は2番にランク付けされてもよい:DD-CD=31.6%-25%=6.6%少ない。
【0114】
第2サブシステム104(2)は3番にランク付けされてもよい:DD-CD=25.6%-37.5%=-11.9%少ない(11.9%多過ぎる)。
【0115】
第1サブシステム104(1)は4番にランク付けされてもよい:DD-CD=11.2%-25%=-13.8%少ない(13.8%多過ぎる)。
【0116】
加えて、最も満たされている容量の閾値は90%に設定されると仮定する。従って第1サブシステム104(1)は90%の容量にあるので、第1サブシステム104(1)は選択リスト138の一番下に配置されるべきだが、第1サブシステム104(1)は既に一番下にランク付けされているのでこの例では選択リスト138を再配置する必要がない。
【0117】
図7は、本明細書に記載したシステムの機能の少なくともいくつかを実装するために使用され得るサービス演算装置102の選ばれたコンポーネントの例を示す。サービス演算装置102は、1若しくは複数のサーバ又は任意の数のやり方で具体化され得る他の種類の演算装置を含んでもよい。例えばサーバの場合、プログラム、他の機能コンポーネント、及びデータは、単一のサーバ、サーバのクラスタ、サーバファーム、又はデータセンタ、クラウドによってホストされる演算サービス等の上に実装されてもよいが、他のコンピュータアーキテクチャが追加で又は代わりに使用されてもよい。複数のサービス演算装置102は、一緒に又は別々に配置され、例えば仮想サーバ、サーババンク、及び/又はサーバファームとして組織化されてもよい。記載した機能は単一のエンティティ又は企業のサーバによって提供されてもよく、又は複数の異なるエンティティ又は企業のサーバ及び/又はサービスによって提供されてもよい。
【0118】
図示の例では、サービス演算装置102は、1又は複数のプロセッサ702、1又は複数のコンピュータ可読媒体704、及び1又は複数の通信インターフェース706を含み又はそれらに関連付けられていてもよい。それぞれのプロセッサ702は単一の処理ユニット又は幾つかの処理ユニットであってもよく、単一又は複数の計算ユニット又は複数の処理コアを含んでもよい。プロセッサ702は、1又は複数の中央処理装置、マイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、状態機械、論理回路、及び/又は動作上の命令に基づいて信号を操作する任意の装置として実装することができる。一例としてプロセッサ702は、本明細書に記載のアルゴリズム及び処理を実行するように特にプログラムされ又は構成される任意の適切な種類の1又は複数のハードウェアプロセッサ及び/又は論理回路を含んでもよい。プロセッサ702は、本明細書に記載の機能を実行するようにプロセッサ702をプログラムし得る、コンピュータ可読媒体704内に格納されたコンピュータ可読命令を取り出して実行するように構成してもよい。
【0119】
コンピュータ可読媒体704は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータ等の情報を記憶するための任意の種類の技術によって実装される揮発性メモリ及び不揮発性メモリ、及び/又は取外し可能媒体及び取外し不能媒体を含んでもよい。例えばコンピュータ可読媒体704は、これだけに限定されないがRAM、ROM、EEPROM、フラッシュメモリ又は他のメモリ技術、光学ストレージ、ソリッドステートストレージ、磁気テープ、磁気ディスクストレージ、RAIDストレージシステム、ストレージアレイ、ネットワーク接続ストレージ、ストレージエリアネットワーク、クラウドストレージ、又は所望の情報を格納するために使用することができ、且つ演算装置によってアクセス可能な他の任意の媒体を含んでもよい。サービス演算装置102の構成にもよるが、非一時的コンピュータ可読媒体がエネルギ、搬送波信号、電磁波、及び/又は信号自体等の媒体を除外すると言及する限りにおいて、コンピュータ可読媒体704は有形の非一時的媒体であってもよい。いくつかのケースでは、コンピュータ可読媒体704はサービス演算装置102と同じ位置にあってもよい一方、他の例ではコンピュータ可読媒体704はサービス演算装置102と部分的に離れていてもよい。例えばいくつかのケースでは、コンピュータ可読媒体704は
図1に関して上記で論じたサブシステム104内のストレージの一部を含んでもよい。
【0120】
コンピュータ可読媒体704は、プロセッサ702によって実行可能な任意の数の機能コンポーネントを格納するために使用してもよい。多くの実装形態においてこれらの機能コンポーネントは、プロセッサ702によって実行可能であり、実行時に本明細書ではサービス演算装置102によるものとする動作を実行するようにプロセッサ702をとりわけプログラムする命令又はプログラムを含む。コンピュータ可読媒体704内に記憶される機能コンポーネントは、クライアントウェブアプリケーション116、管理ウェブアプリケーション124、及び負荷分散最適化プログラム134を含むストレージ管理プログラム128を含んでもよく、そのそれぞれは1又は複数のコンピュータプログラム、アプリケーション、実行可能コード、又はそれらの一部を含んでもよい。更に、この例ではこれらのプログラムは一緒に示されているが、使用中、これらのプログラムの一部又は全てが別個のサービス演算装置102上で実行されてもよい。
【0121】
加えてコンピュータ可読媒体704は、本明細書に記載の機能及びサービスを実行するために使用されるデータ、データ構造、及び他の情報を格納してもよい。例えばコンピュータ可読媒体704は、メタデータデータベース136、サブシステムメトリック132、及び選択リスト138を格納してもよい。更に、この例ではこれらのデータ構造は一緒に示されているが、使用中、これらのデータ構造の一部又は全ては別個のサービス演算装置102上に格納されていてもよい。サービス演算装置102はプログラム、ドライバ等及び機能コンポーネントによって使用され又は生成されるデータを含み得る、他の機能コンポーネント及びデータも含むか又は維持してもよい。更に、サービス演算装置102は他の多くの論理的、プログラム的、及び物理的なコンポーネントを含んでもよく、そのうち上記で記載したものは本明細書の解説に関係する例に過ぎない。
【0122】
1又は複数の通信インターフェース706は、1又は複数のネットワーク106及び105等による他の様々な装置との通信を可能にするための1又は複数のソフトウェア及びハードウェアコンポーネントを含んでもよい。例えば通信インターフェース706は、本明細書の他の箇所で更に挙げるように、LAN、インターネット、ケーブルネットワーク、セルラネットワーク、無線ネットワーク(例えばWi-Fi)及び有線ネットワーク(例えばファイバチャネル、光ファイバ、イーサネット)、直接接続、並びにBLUETOOTH(登録商標)等の近距離通信等のうちの1又は複数を介して通信を可能にしてもよい。
【0123】
図8は、いくつかの実装形態に係るサブシステム104の構成例の選ばれたコンポーネントを示す。サブシステム104は1又は複数のストレージ演算装置802を含んでもよく、ストレージ演算装置802は、サービス演算装置102に関して上記で論じた例の何れか等の1又は複数のサーバ又は他の任意の適切な演算装置を含んでもよい。ストレージ演算装置802は、それぞれ1又は複数のプロセッサ804、1又は複数のコンピュータ可読媒体806、及び1又は複数の通信インターフェース808を含んでもよい。例えばプロセッサ804は、プロセッサ702に関して上記で論じた例の何れかに対応してもよく、コンピュータ可読媒体806はコンピュータ可読媒体704に関して上記で論じた例の何れかに対応してもよく、通信インターフェース808は通信インターフェース706に関して上記で論じた例の何れかに対応してもよい。
【0124】
加えてコンピュータ可読媒体806は、サブシステム104に関連するストレージ810上のデータ130の格納を管理するために1又は複数のプロセッサ804によって実行される機能コンポーネントとして上記で論じたストレージプログラム140を含んでもよい。ストレージ810は、1又は複数のトレー、ラック、エクステントグループ、又はストレージ装置816の他の種類のアレイ814上にデータ130を格納するための、ストレージ150に関連する1又は複数のコントローラ812を含んでもよい。例えばコントローラ152は、イレイジャーコード保護構成、又はRAID構成、JBOD構成等の他の様々な構成の何れか等においてアレイ814を構成するために、及び/又はストレージ装置156に基づくストレージエクステント、論理ユニット等をストレージプログラム148に提示するため、及び基礎を成す物理ストレージ装置816上に記憶されるデータ130を管理するため等、アレイ814を制御してもよい。ストレージ装置816はハードディスクドライブ、ソリッドステートドライブ、光学ドライブ、磁気テープ、それらの組み合わせ等、任意の種類のストレージ装置であってもよい。
【0125】
本明細書に記載した様々な命令、方法、及び技法は、コンピュータ可読媒体上に記憶され、本明細書のプロセッサによって実行されるコンピュータプログラム及びアプリケーション等のコンピュータ実行可能命令の全般的な文脈で検討してもよい。概して、プログラム及びアプリケーションという用語は同義で使用することができ、特定のタスクを実行するための又は特定のデータ型を実装するための命令、ルーチン、モジュール、オブジェクト、コンポーネント、データ構造、実行コード等を含んでもよい。これらのプログラム、アプリケーション等は、ネイティブコードとして実行されてもよく、又は仮想マシン又は他のジャストインタイムコンパイル実行環境等においてダウンロードされ且つ実行されてもよい。典型的には、プログラム及びアプリケーションの機能は様々な実装形態において所望の通りに組み合わされ又はh分散されてもよい。これらのプログラム、アプリケーション、及び技法の実装はコンピュータ記憶媒体上に格納してもよく、又は何らかの形の通信媒体を介して伝送されてもよい。
【0126】
構造上の特徴及び/又は方法論的な行為に固有の言語によって本内容を説明してきたが、添付の特許請求の範囲に定める本内容は記載した特定の特徴又は行為に必ずしも限定されないことを理解すべきである。むしろ特定の特徴及び行為は、特許請求の範囲を実装する形態例として開示されている。
【国際調査報告】