JP2016536714A - データー・ストレージ入力/出力要求の制御 - Google Patents
データー・ストレージ入力/出力要求の制御 Download PDFInfo
- Publication number
- JP2016536714A JP2016536714A JP2016542034A JP2016542034A JP2016536714A JP 2016536714 A JP2016536714 A JP 2016536714A JP 2016542034 A JP2016542034 A JP 2016542034A JP 2016542034 A JP2016542034 A JP 2016542034A JP 2016536714 A JP2016536714 A JP 2016536714A
- Authority
- JP
- Japan
- Prior art keywords
- queue
- stage
- data storage
- flow
- controller
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/20—Hop count for routing purposes, e.g. TTL
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/50—Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/20—Traffic policing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/22—Traffic shaping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/26—Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/52—Queue scheduling by attributing bandwidth to queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/52—Queue scheduling by attributing bandwidth to queues
- H04L47/522—Dynamic queue service slot or variable bandwidth allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Abstract
例えば、少なくとも1つの計算エンティティと少なくとも1つのストアとの間におけるデーター入力/出力要求の端末から端末までのフローに対してポリシーを適用するための、データー・ストレージ入力/出力要求制御について記載する。種々の例において、両端間フローの1つ以上のステージに複数のキューが構成され、ポリシーを固守するように制御される。例では、各ステージが制御インターフェースを有し、コントローラーからの制御命令を受けて実行することを可能にする。コントローラーは、集中型でも分散型でもよい。例えば、制御命令は、キュー指定規則および/またはキューの構成を含む。種々の例では、キューおよびキュー指定規則は、フローの実行、ポリシーの変化、インフラストラクチャの変化、またはその他の要因の内任意のものについてのフィードバックにしたがって、動的に作成または見直しされる。例では、ステージ毎に、フロー・エンドポイントの上位識別子が解決され、そのステージによる使用に適した低位識別子を得る。【選択図】図1
Description
[0001] 大型データー・センターおよび他のタイプのデーター・ストレージ・システムのようなデーター・ストレージ・システムは、増々複雑になりつつある。ストレージまでの入力/出力パス(path)は、長くて多くのレイヤを含むことが多く、これらの間のインターフェースは不透明である。このため、例えば、フローに利用可能な特定の帯域幅を保証するために、ストレージ入力/出力フローの実行(performance)を指令する両端間ポリシー(end-to-end policy)を施行するのが難しくなる。ストレージ入力/出力フローは、ストレージと計算エンドポイントとの間におけるストレージ入力/出力要求のストリームを含む。例えば、データーをファイルから読み出す、データーをファイルに書き込む、またはデーターを格納するためにファイルを作成する。
[0002] 企業のデーター・センターにおける物理サーバーの仮想化およびストレージの仮想化により、ストレージ入力/出力フローに沿って複雑さが増大するに至った。
[0003] 以下で説明する実施形態は、既知のデーター・ストレージ・システムの欠点のいずれかを解決する実施態様にも、その全てを解決する実施態様にも限定されることはない。
[0003] 以下で説明する実施形態は、既知のデーター・ストレージ・システムの欠点のいずれかを解決する実施態様にも、その全てを解決する実施態様にも限定されることはない。
[0004] 以下に紹介するのは、基本的な理解を読み手に与えるための本開示を簡略化した摘要である。この摘要は、本開示の広範な全体像ではなく、主要な/重要な要素を識別するのでもなく、本明細書の範囲を正確に叙述するのでもない。その唯一の目的は、本明細書において開示される概念から選択したものを、後に紹介する更に詳細な説明の前置きとして、簡略化した形態で紹介することである。
[0005] 例えば、少なくとも1つの計算エンティティと少なくとも1つのストアとの間におけるデーター入力/出力要求の両端間フローに対してポリシーを提供するためのデーター・ストレージ入力/出力要求の制御について説明する。種々の例において、両端間フローの1つ以上のステージにおいて複数のキューが構成され、ポリシーを固守するように制御される。例では、各ステージが制御インターフェースを有し、コントローラーからの制御命令を受けて実行することを可能にする。コントローラーは、集中型でも分散型でもよい。例えば、制御命令は、キュー指定規則(queuing rule)および/またはキューの構成を含む。種々の例では、キューおよびキュー指定規則は、フローの実行、ポリシーの変化、インフラストラクチャの変化、またはその他の要因の内任意のものについてのフィードバックにしたがって、動的に作成または見直しされる。例では、ステージ毎に、フロー・エンドポイントの上位識別子が解決され、そのステージによる使用に適した低位識別子を得る。
[0006] 付随する特徴の多くは、添付図面と関連付けて以下の詳細な説明を参照し考慮することにより、一層深く理解されるに連れて、一層容易に認められるであろう。
[0007] この説明は、以下の詳細な説明を、添付図面を考慮して読むことにより、一層深く理解できよう。
図1は、データー・センターを含むデーター・ストレージ・システムの模式図である。
図2は、計算サーバーおよびストレージ・サーバーの模式図である。
図3は、コントローラーにおける方法およびステージにおける方法の流れ図である。
図4は、コントローラーにおける発見方法の流れ図である。
図5は、トポロジー・グラフの模式図である。
図6は、コントローラーにおける方法の流れ図である。
図7は、ステージにおける方法の流れ図である。
図8は、トポロジー・サブグラフの模式図である。
図9は、データー・ストレージ・システムのあるステージの実施形態を実現することができる、計算ベース・デバイスの一例を示す。
添付図面において同様の部分を指すために、同様の参照番号を使用することとする。
[0008] 添付図面に関連付けて以下に示す詳細な説明は、本例の説明であることを意図しているのであり、本例を構成するまたは利用することができる形態だけを表すことを意図するのではない。この説明は、本例の機能、および本例を構成しそして動作させるためのシーケンスを明記する。しかしながら、同一のまたは同等の機能およびシーケンスが異なる例によって遂行されてもよい。
[0009] 本明細書では、本例について、集中コントローラーを有するデーター・センターにおいて実現されるとして説明し図示するが、説明するシステムは一例として示すのであって、限定ではない。当業者には認められようが、本例は、パーソナル・コンピューターを含む種々の異なるタイプのデーター・ストレージ・システム、および散在する(decentralized)コントローラーが使用される場合の適用に適している。
[0010] 前述のように、ストレージまでの入力/出力パスは、多くの場合、長く複雑であり、このために、例えば、特定のサービス品質を保証するため、または要求がサニタイゼーション・ミドルボックスを介して送出されることを確実にするために、両端間ポリシーを施行するのが困難になる。多くの場合、多くの異なる顧客が、データー・センターまたは他のデーター・ストレージ・システムにおいて実行するプロセスを有し、リソースが共有される。例えば、データー・ストレージ・システムには、エンティティ間におけるストレージ・リソースおよび相互接続リソースがある。ストレージ入力/出力要求の実行および処理のために顧客の(または他の)ポリシーを固守することが非常に難しくなり、これがクラウド計算サービスの採用および進歩に対する障壁となるおそれがある。
[0011] 本明細書において説明する方法および装置は、データー・ストレージ入力/出力要求のフローに両端間ポリシーを適用することを可能する。フローとは、指定されたエンドポイント間におけるこのような要求のストリームである。エンドポイントの内少なくとも1つは、計算サーバーのような計算エンティティであり、エンドポイントの内少なくとも1つは、ストレージ・サーバー上におけるファイル・シェア、または計算サーバーにおけるローカル・ストレージ上におけるファイル・シェアのようなストアである。また、ある例では、計算サーバーがストアを含むこともできる。また、ある例では、ストレージ・サーバーが計算エンティティを含むこともできる。このように、コンピューター間のフローおよび/またはサーバー間のフローにポリシーを適用することができる。多対1構成、1対多構成、および多対多構成というように、マルチポイント・フローにポリシーを適用することができる。フローのエンドポイントは、上位識別子を使用して指定されることがあるが、フローの1つ以上のレイヤではこの上位識別子が理解されない場合がある。レイヤについては、以下で更に詳しく説明する。
[0012] ポリシーは、フローの実行(performance)および/またはフローに適用される機能を指定する1つ以上の判断基準を含み、フローはそのエンドポイントに関して指定される。例えば、実行を指定する判断基準は、フローに適用される最小帯域幅を含むことができる。機能を指定する判断基準は、フローに適用されるウィルス・チェック機能を含むことができる。
[0013] レイヤとは、フローが通過するデーター・ストレージ・システムのコンポーネントである。非網羅的なレイヤ例を以下に列挙すると、計算サーバーのハイパーバイザーにおけるネットワーク・ドライバー、ストレージ・サーバーにおけるネットワーク・ドライバー、データー・ストレージ・システムの相互接続におけるスイッチが挙げられる。コントローラーと通信することを可能にする制御インターフェースを有するレイヤのことを、本文書では「ステージ」(stage)と呼ぶ。本明細書において説明する例では、少なくとも1つのステージが、ポリシーを固守するようにフローを制御するために使用される。本明細書において説明する方法を処理するデーター・ストレージ・システムは、1つ以上のステージを有することができる。データー・センターにおいてステージであるレイヤの割合が増えるに連れて、ポリシー施行能力の柔軟性およびパワーも増える。これによって、各レイヤをアップグレードしてステージにする必要なく、既存のデーター・ストレージ・システムにおいて本技術が作用することを可能にする。
[0014] 各ステージは、複数のキューを含み、コントローラーから受ける制御命令の結果として、キューを受けてインストールすることができる。コントローラーは、集中型でも分散型でもよい。制御命令をステージに送ることによって、ポリシー施行を可能にするために、キューを動的に構成することができる。フィードバックは、フローの振る舞い(behavior)、ポリシー更新、インフラストラクチャの変化、およびその他の要因を含み、キューを動的に構成するために使用することができる。
[0015] 図1は、ストレージ・システム例100を示す模式図である。ストレージ・システム100は、データーを格納する複数のストレージ・サーバー104と、計算を実行する複数の計算サーバー102とを含む。計算では、ストレージ・サーバー104および/または計算サーバーの1つ以上におけるローカル・ストレージ103から読み出し、そしてこれらに書き込む。この例では、ストレージ入力/出力要求のフローは、計算サーバー102における2つの仮想機械116から、相互接続110におけるスイッチ108を経由する、1つのストレージ・サーバー104までの破線120によって表されている。これは一例に過ぎず、ストレージ入力/出力要求は、仮想機械とローカル・ストレージとの間、または他のエンティティ間で流れるのでもよい。
[0016] 相互接続110は、イーサネット(登録商標)のような任意の適したタイプの通信リンク、InfiniBand(商標)通信リンクのようなスイッチ・ファブリック・コンピューター・ネットワーク通信リンク、または計算サーバー102、ローカル・ストレージ103、およびストレージ・サーバー104を相互接続する他のリンクを含む。1つ以上のスイッチ108が相互接続110内にあってもよいが、これは必須ではない。以下で更に詳しく説明するように、通信リンクを介してストレージ入力/出力要求を送るためには、種々の通信プロトコルを使用することができる。
[0017] この図は4つの計算サーバーおよび2つのストレージ・サーバーを示すが、本明細書において説明する方法は、図1に示すよりも小さいシステム(例えば、1つのPC)、または遙かに大きいコンピューター・サーバーおよび/またはストレージ・サーバーを有するシステムにも等しく適用可能である。前述のように、計算サーバー機能およびストレージ・サーバー機能を分離するのではなく、これら双方を提供するエンティティを使用することが可能である。
[0018] また、図1はコントローラー106も示す。コントローラー106は、相互接続110に接続され、したがってデーター・ストレージ・システムの1つ以上のステージと通信することができる。前述のように、ステージとは、コントローラーと通信することを可能にする制御インターフェースを有する、フローのレイヤである。この例では、コントローラーは集中型である。しかしながら、複数のステージにおいてというように、データー・ストレージ・システム100における複数のエンティティにわたってコントローラーの機能を分散させることも可能である。
[0019] 1つ以上の制御アプリケーション112がコントローラー106に接続され、操作者、顧客、ポリシーのライブラリー、自動化されたエンティティ、または他のソースからポリシー114を受ける。制御アプリケーションは、制御命令を1つ以上のステージに送ることによって、コントローラー106と一緒に、ポリシー114を施行するために動作する。図1の例では、仮想機械116の内2つが各々ステージ118を有する。
[0020] あるいは、または加えて、本明細書において説明するステージおよび/またはコントローラーの機能は、少なくとも部分的に、1つ以上のハードウェア・ロジック・コンポーネントによって実行することができる。例えば、限定ではなく、使用することができる実証的なタイプのハードウェア・ロジック・コンポーネントには、フィールド−プログラマブル・ゲート・アレイ(FPGA)、プログラム特定集積回路(ASIC)、プログラム特定標準的製品(ASSP)、システム−オンーアーチップ・システム(SOC)、複合プログラマブル・ロジック・デバイス(CPLD)が含まれる。
[0021] 図2は、図1の構成または他の構成において使用することができる計算サーバー102の一例およびストレージ・サーバー104の一例の模式図である。この例では、計算サーバーは仮想化を利用する。しかしながら、これは必須ではない。仮想機械および/またはハイパーバイザーを有さない計算サーバーを使用することもできる。
[0022] 計算サーバー102は、ハイパーバイザー214(仮想機械モニターとしても知られる)を含む。ハイパーバイザー214は、計算サーバー102において1つ以上の仮想機械を作成し実行することができる。これによって、異なるプロセスのために異なる仮想機械を使用することによって、複数の異なるプロセスまたはアプリケーションを計算サーバー102において並列に実行することが可能になる。ハイパーバイザー214は、ソフトウェアおよび/またはハードウェアを使用してコンピューターに実装される。図2の例では、VM1、VM2、VM3、およびVM4で示す4つの仮想機械が計算サーバー102に存在することが、模式的に示されている。しかしながら、他の数の仮想機械を使用することもできる(0、1、2、またはそれ以上)。
[0023] 図2の例では、仮想機械4が、図2において「ゲストOS」と名付けられ中括弧で囲まれた(bracketed)領域によって示されるゲスト・オペレーティング・システムを使用して、アプリケーション200を実行する。ゲスト・オペレーティング・システムは、通信プロトコル・スタックおよびストレージ・スタックを含む。通信プロトコル・スタックは、この例では、トランスポート・コントロール・プロトコル(TCP)202、インターネット・プロトコル(IP)206、および仮想ネットワーク・インターフェース・カード(VNIC)210を含む。ストレージ・スタックは、ファイル・システム204、ブロック・デバイス208、および仮想ハード・ディスク212を含む。仮想ハード・ディスク212は、入力−出力プロトコル・コンポーネント218を介してネットワーク・ドライバー220に接続され、ネットワーク・ドライバー220は計算サーバー102において物理ネットワーク・インターフェース・カード222を制御する。また、仮想ネットワーク・インターフェース・カード210もネットワーク・ドライバー220に接続されている。この接続は、仮想スイッチ216を経由する。
[0024] 入力−出力(IO)プロトコル・コンポーネント218は、複数のキューを含み、サーバー・メッセージ・ブロック(SMB)または任意の他の適した分散型ストレージ・プロトコルを使用して実装することができる。図2の例では、IOプロトコル・コンポーネントは、更に詳細に、2つのキュー226、228を有することが示されており、これらのキュー226、228は、着信するIOパケット224(ストレージ入力/出力要求である)に割り当てられる。この例では、各キューが指定されたフローに関連付けられているので、キュー226はフロー1のパケットのためにあり、キュー228はフローnのパケットのためにある。しかしながら、キューが特定のフローと関連付けられるのは必須ではない。例えば、キューが、ステージにおける他のいずれのキューにも割り当てられないままでいるパケットをいずれも引き受けるデフォルト・キューであってもよい。
[0025] IOプロトコル・コンポーネント218は、コントローラー106とインターフェースするための制御インターフェース230を含むので、1つのステージである。コントローラー106は、図1のコントローラーの一例である。また、コントローラー106は、キュー226、228やキュー指定規則を作成、削除、編集、および構成するため、そしてキューの振る舞いについてのフィードバックを得るために、IOプロトコル・コンポーネント218およびネットワーク・ドライバー220と通信することもできる。キュー指定規則は、IOプロトコル・コンポーネント218および/またはネットワーク・ドライバー220において格納することができ、この例では、これらは双方共ステージである。
[0026] また、ストレージ・サーバー104は2つのステージも含み、これらはIOプロトコル・コンポーネント232およびネットワーク・ドライバー238である。IOプロトコル・コンポーネントは、サーバー・メッセージ・ブロック(SMB)または任意の他の適した分散型ストレージ・プロトコルを使用して実装することができる。この例では、ストレージ・サーバー104におけるIOコンポーネント232は、キューを作成していない(しかしながら、ある例では、キューを有する場合もある)。
[0027] ストレージ・サーバー104は、ストレージ・ディスク242または他の記憶デバイスを制御するディスク・ドライバー236と通信可能なファイル・システム234を含む。また、ストレージ・サーバー104は、ネットワーク・ドライバー238に接続された物理ネットワーク・インターフェース・カード240も含む。
[0028] 破線244は、仮想機械4におけるアプリケーション200とストレージ・サーバー104におけるストレージ・ディスク242との間におけるストレージ入力出力要求のフローを表す。この例における要求のフローは、アプリケーション200のファイル・システム204から、ゲスト・オペレーティング・システムのブロック・デバイス208に、そしてハイパーバイザーの仮想ハード・ディスク212およびIOプロトコル・コンポーネント218に伝わる。続いて、計算サーバー102のネットワーク・ドライバー220、物理ネットワーク・インターフェース・カード222に、そして1つ以上の通信リンクを介してスイッチ108等に伝わり、ストレージ・サーバー104の物理ネットワーク・インターフェース・カード240に達する。これは、ネットワーク・ドライバー238を経由して、ストレージ・サーバー104のIOプロトコル・コンポーネント232に、ならびにストレージ・サーバーのファイル・システム234およびディスク・ドライバー236に進み、ディスク242において終了する。この例における要求のフローは双方向である。コントローラー106は、本明細書において説明する方法を使用して、IO要求のフローにポリシーを施行することができる。
[0029] 図3は、コントローラーにおける方法例、およびステージにおける方法例の流れ図である。コントローラーにおける方法は、制御プレーン(control plane)における方法と呼ぶこともでき、ステージにおける方法はデーター・プレーンにおける方法と呼ぶこともできる。コントローラーは、図1および図2に示すように集中型でもよく、または例えば複数のステージにおける機能を使用して、分散型にしてもよい。
[0030] コントローラーは、フローに対するポリシーにアクセスする(300)。例えば、ポリシーは、予め構成されているポリシーであってもよく、閾値、判断基準、または規則にしたがってポリシーのライブラリーから選択されてもよく、ユーザによって入力されてもよく、複数の利用可能なポリシーから顧客によって選択されてもよく、あるいは他の方法でアクセスされてもよい。
[0031] これより、ポリシーの例をいくつか示すが、これらは例に過ぎず、他のポリシーを使用してもよい。
[0032] 詳述しやすくするために、{[VMの集合]、[ストレージ・シェアの集合]}→ポリシーという形態のフロー・ポリシー例を示す。しかしながら、フロー・ポリシーを表現するために他のフォーマットが使用されてもよい。
[0032] 詳述しやすくするために、{[VMの集合]、[ストレージ・シェアの集合]}→ポリシーという形態のフロー・ポリシー例を示す。しかしながら、フロー・ポリシーを表現するために他のフォーマットが使用されてもよい。
[0033] ポリシーP1。{VMp、シェアX}→帯域幅B。この例では、VMpが、ストレージ・シェアX上でSQLデーター・ファイルにアクセスするSQLクライアントを実行する。正しいクエリー(query)の挙動(performance)を与えるために、シェアにアクセスするとき、pには帯域幅Bが保証される。Bは、1秒当たりのトークン単位で表すことができる。トークンについては、以下で更に詳しく説明する。
[0034] ポリシーP2。{p、X}→Min帯域幅B。この設定は、シェアXにアクセスするときにVM pに最小帯域幅Bが約束されたポリシーP1と同様である。つまり、他のVMがアイドルであるとき、pはその帯域幅保証を超えることができる。
[0035] ポリシーP3。{p、X}→サニタイズ。VMpは信頼できないコードを実行し、そのトラフィックは、ウィルス・チェッカーまたは他のチェック・プロセスのような、サニタイゼーション・レイヤを通して送出される。
[0036] ポリシーP4。{p、X}→高い優先順位。VMpは、ストレージ・シェアX上でSQLログ・ファイルにアクセスするSQLクライアントを実行する。ログ処理に対する低レイテンシを確保するために、pのストレージ・トラフィックは、両端間のパス(end-to-end path)にそって高い優先順位の処理を要求する。
[0037] ポリシーP5。{[p、q、r]、[X,Y]}→帯域幅B。VMp、q、およびrは、同じ顧客に属し、シェアXおよびYにアクセスするとき、帯域幅Bが保証される。このような顧客毎の保証は、関与するVMのいずれもが帯域幅保証を使用することができるので、有用である。
[0038] ポリシーP1〜P4は、両端間フローの処理を指定し、一方P5はマルチポイント・フローに適用される。
[0039] コントローラーは、ポリシーを実装する(implement)ために制御命令を作成する(302)。たとえば、ポリシーP1について検討する。VMpからのストレージ・トラフィックは、計算サーバーにおけるゲストOSおよびハイパーバイザーをトラバースし(traverse)、次いでネットワーク・スイッチ、そして最後にストレージ・サーバーにおけるOSをトラバースし、その後にディスク・アレイに到達する。このポリシーを施行するために、これらのレイヤの内少なくとも1つは、VMpからシェアXへの要求が転送されるレート(rate)を制御するように構成される。ポリシーP1を施行するために、これらのレイヤの1つ以上においてレートを制御するための制御命令を作成する。
[0039] コントローラーは、ポリシーを実装する(implement)ために制御命令を作成する(302)。たとえば、ポリシーP1について検討する。VMpからのストレージ・トラフィックは、計算サーバーにおけるゲストOSおよびハイパーバイザーをトラバースし(traverse)、次いでネットワーク・スイッチ、そして最後にストレージ・サーバーにおけるOSをトラバースし、その後にディスク・アレイに到達する。このポリシーを施行するために、これらのレイヤの内少なくとも1つは、VMpからシェアXへの要求が転送されるレート(rate)を制御するように構成される。ポリシーP1を施行するために、これらのレイヤの1つ以上においてレートを制御するための制御命令を作成する。
[0040] 制御命令を作成する一部として、コントローラーはフロー名称解決を実行することもできる。例えば、ポリシーは、フローの1つ以上の個々のレイヤでは理解されない上位名称を使用して表現されたエンドポイントを有するフローに適用されるように指定される。コントローラーは、この上位エンドポイント名称を解決して、個々のレイヤによって理解される下位識別子を求める。上位エンドポイント名称を解決するプロセスは、フロー名称と下位ステージ特定のIO要求識別子との間に一貫性のある1対1のマッピングを与える。例えば、ポリシーP1では、VMpからシェアXまでのレイヤはいずれも、施行点として動作することができるものの、各々、それらをトラバースする要求におけるある下位識別子を観察することしかできない。フローの宛先であるシェアXは、VMおよびゲストOS内部にあるファイル・システムのように見えるかもしれないが、ハイパーバイザー内部にあるブロック・デバイス(例えば、"/dev/scsidisk5")として現れる。ハイパーバイザーは、これをストレージ・サーバー上のVHDファイルにマッピングする(例えば、"\\serve\share\ file.VHD")。一方、ストレージ・サーバーはこのファイル(例えば、"H: \file.VHD")を特定のデバイス(例えば、"/device/ssd5")にマッピングする。
[0041] 制御命令は、1つ以上のキューおよび/またはキュー・ドレイン・レート(queue drain rate)のような、キューのパラメーターを設定する(configure)ための命令を作成、編集、または削除する命令を含むことができる。また、制御命令は、入力/出力要求をキューに割り当てるための判断基準を指定するキュー指定規則も含むことができる。
[0042] 制御命令は、アプリケーション・プログラミング・インターフェース(API)を使用して書くことができる。アプリケーション・プログラミング・インターフェースは、SMBのような分散型ストレージ・プロトコルの最上位に位置する。しかしながら、これは必須ではない。コントローラーがどのようにして制御命令を作成するか(302)についての更なる詳細については、図4および図6を参照して以下で説明する。
[0043] コントローラーは、制御命令を1つ以上の選択したステージに送る(304)。例えば、制御命令は、図1を参照して先に説明した通信リンクを介して送られる。以下で更に詳しく説明するように、コントローラーは、1つ以上のステージから、どれに制御命令を送るか選択することができる。例えば、ポリシー施行の効率というような判断基準を使用する。
[0044] 前述のように、フローのパスに沿った1つよりも多いステージにおいて、フロー・ポリシーを施行することができる。例えば、ポリシーP1は、VMpの帯域幅が決してBを超えないことを要求する。この帯域幅制限は、VM内部の任意のステージにおいて、ハイパーバイザーにおいて、ネットワーク・スイッチにおいて、またはストレージ・サーバー自体においてでさえも施行することができる。対比として、ポリシーP4は、VMpのパケットが高い優先順位を得ることを必要とするので、両端間の経路に沿った全てのステージにおいて施行されなければならない。
[0045] マルチポイント・ポリシーは、分散型施行の必要性に他の次元を追加する。即ち、制御命令を1つよりも多いステージに送る。例えば、ポリシーP5は、VMp、q、およびrからシェアXおよびYへの総トラフィックが、レート制限される(rate limited)ことを要求する。これは、これらのVMをホストする計算サーバーの各々において、および/またはシェアが実装されるストレージ・サーバーにおいて施行することができる。
[0046] ある例では、コントローラーは、フローの振る舞い、キューの振る舞い、ポリシーの施行、または他の要因についてのフィードバックを受ける(306)。これは、ポリシーを実施する制御命令を動的に作成するためにフィードバックを使用する。このように、コントローラーにおけるプロセスは、変化しつつある条件に直面して、公正で正確なポリシー施行を遂行しようとして、連続的に制御命令を適応化することができる。これを「動的施行」と呼ぶことができる。
[0047] 動的施行を必要とせずに施行できるポリシーの例に、VMpのトラフィックに対して固定帯域幅制限を設定するポリシーP1がある。また、固定施行規則は、ポリシーP3およびP4に対しても動作可能である。対比として、ポリシーP2は動的施行を使用する。ポリシーP2は、VMpに対する帯域幅制限が、スペア・システムの容量に基づいて(最小保証を下回ることなく)調節されることを要求する。同様に、総合保証(aggregate guarantees)を提供するP5のようなマルチポイント・ポリシーも動的施行規則を使用する。
[0048] ステージにおけるプロセスは、コントローラーから制御命令の一部として1つ以上のキュー指定規則を受けるステップ(308)を含む。ステージは、制御命令にしたがってその1つ以上のキュー310を構成し、キュー指定規則にしたがって、そのステージにおけるしかるべきキューにストレージIOパケットを転送する(312)。ステージは、例えば、サービス判断基準、および同様にコントローラーによって指定することができる規則にしたがって、そのキューをサービスする(service)(314)。
[0049] 図4は、コントローラー(集中型または分散型でもよい)における発見方法の流れ図である。この方法は、コントローラーが、データー・センターまたは他のストレージ・システムのような、ストレージ・システムのステージ・レベルのトポロジー・グラフを作成し維持することを可能にする。コントローラーが分散型であり、各ステージにおいて機能を含む場合、ある例では、各ステージがステージ・レベルのトポロジー・グラフを作成し維持してもよい。ステージ・レベルのトポロジー・グラフは、ストレージ・システムにおけるステージ間における通信リンクを表すように、ストレージ・システムのステージ毎のノードと、ノードを接続するエッジとを含む。
[0050] コントローラーは、個々のステージが起動(boot up)または初期化するときに、これらからメッセージを受ける(図4のステップ400参照)。例えば、各ステージは、起動または初期化するときに、メッセージを1つ以上の指定されたアドレスに送る、またはメッセージをブロードキャストするように構成することができる。また、コントローラーは、例えば、データー・ストレージ・システムにおけるトラフィックを観察することによって、ストレージ・システムの1つ以上のレイヤ(これらは、コントローラーに対する専用インターフェースを有さないストレージ・システムのコンポーネントである)を検出することもできる。
[0051] コントローラーは、どのタイプのIOヘッダをステージが理解するかについての詳細、およびそのステージにおけるキューのサービスおよびルーティング・プロパティの詳細というような、ステージ情報を発見する(404)。キューのサービス・プロパティは、どの位速くサービスされるのか管理し、ルーティング・プロパティは、IO要求が送出される次のステージを指示する。コントローラーは、クエリーをステージに送ることによって、ステージの振る舞いを観察することによって、または他の方法で、ステージ情報を発見する(404)のでもよい。
[0052] コントローラーは、データー・センターまたは他のストレージ・システムのような、ストレージ・システムのステージ・レベル・トポロジー・グラフを作成し維持する(406)。前述のように、ステージ・レベル・トポロジー・グラフは、ストレージ・システムにおけるステージ間における通信リンクを表すように、ストレージ・システムのステージ毎のノードと、ノードを接続するエッジとを含む。ステージ・レベル・トポロジー・グラフの一例を図5に示す。任意に、コントローラーは、物理リソースに対応するグラフのエッジの容量を判定する。これは、予め構成されたトポロジー・マップを使用することによって行うことができる。また、 Iometer(商標)またはその他の測定および特徴化ツールというような、ベンチマーク・プロセスを実行することによって容量を発見することもできる。
[0053] 図5は、図2の構成のステージ・レベル・トポロジー・グラフである。これは、4つのステージ500、502、504、506を含む。仮想機械(VM)からのストレージIO要求は、IOプロトコル・コンポーネント218に対応する第1ステージ500に到達し、続いて第2ステージ502であるネットワーク・ドライバー220に進む。要求は、スイッチ108を介して、図5のステージ504である、ストレージ・サーバーにおけるネットワーク・ドライバー238に伝わる。IO要求は、図5のステージ506に対応するIOプロトコル・コンポーネント232に進み、フローはストレージ・サーバーにおける記憶ディスクにおいて終了する。図5の例では、SMBにおいて使用される分散型ストレージ・プロトコルであるが、これは必須ではない。他の分散型ストレージ・プロトコルを使用することもできる。また、図5のステージ・レベル・トポロジー・グラフは、ネットワーク・リンク、ネットワーク・スイッチ108、およびストレージ・バックエンドを含む基礎的な物理リソースも含む。仮想ハード・ディスクにアクセスする仮想機械によって、簡単なIOフローが示されている。この例では、コントローラーは、ステージについての情報を発見し、この情報をグラフに格納した。例えば、下位IOヘッダは、ステージがパケットをキューに割り当てるために使用することができる。
[0054] 図6は、コントローラーにおける方法の流れ図である。この方法は、図3の方法(ステップ300から306)と同様であり、更に詳細になっている。図3に関して、この方法は集中型コントローラーにおいて実装することができ、または複数のエンティティ間で分散することもできる。
[0055] コントローラーは、図3を参照して先に説明したように、ポリシーを受ける(600)か、またはポリシーにアクセスする。基礎をなす物理的リソースの容量のために、そして既存のポリシーを考慮に入れて、このポリシーが実現可能であることをチェックすることができる(602)。例えば、コントローラーは、それが作成し維持してあるステージ・レベル・トポロジー・グラフ、およびそれが有する既存のポリシーについての情報を使用することもできる。
[0056] コントローラーは、ポリシーをどこで実施するか決定する(604)ことができる。例えば、複数のステージが利用可能な場合もあり、コントローラーは、これらのステージの内どの1つ以上を、ポリシーを施行するために使用するか決定することができる。利用可能なCPUリソースおよびその他というような、種々の要因を考慮に入れることができる。
[0057] コントローラーは、フロー・エンドポイント識別子を解決して下位識別子を得る(606)。コントローラーは、どのヘッダ・タイプであればステージが理解できるのか発見する。例えば、この情報を求めるために、メッセージをそのステージに送る。この情報を使用して、上位エンドポイント名称を解決して適したヘッダ・タイプを得て、この適したヘッダ・タイプに基づいてキュー指定規則を策定する(generate)。
[0058] コントローラーは、キュー指定規則を作成し、これらがインストールされる該当のステージに送る。図2の計算サーバーIOプロトコル・コンポーネントステージに対するキュー指定規則の例は次の通りである。
[0059] 1: I0 Header <VM1, \\server X\share\file F>→Queue Q1
[0060] 2: IO Header <VM2, \\server Z\share\*>→Queue Q2
[0061] 3: IO Header <VM3, *>→Queue Q4
[0062] 4: <*, *>→Queue Q3
[0063] ここで、「サーバー」はリモート機械またはローカル・ホストでもよい。シンボル「*」はワイルドカードである。上のキュー指定規則1は、パケットのヘッダが、当該パケットがVM1から発しておりサーバーXにおけるファイルFに宛てられることを示す場合、これらのパケットはキュー1に割り当てられることを表す。上のキュー指定規則2は、パケットのヘッダが、これらがVM2から発しておりサーバーZ上の任意のファイルに宛てられることを示す場合、これらのパケットはキュー2に割り当てられることを表す。上のキュー指定規則3は、パケットのヘッダが、これらがVM3から発していることを示す場合、これらのパケットはキュー4に割り当てられることを表す。キュー指定規則4は、パケットが他のキューのいずれにも割り当てられない場合、これらのパケットはキュー3に割り当てられることを表す。
[0060] 2: IO Header <VM2, \\server Z\share\*>→Queue Q2
[0061] 3: IO Header <VM3, *>→Queue Q4
[0062] 4: <*, *>→Queue Q3
[0063] ここで、「サーバー」はリモート機械またはローカル・ホストでもよい。シンボル「*」はワイルドカードである。上のキュー指定規則1は、パケットのヘッダが、当該パケットがVM1から発しておりサーバーXにおけるファイルFに宛てられることを示す場合、これらのパケットはキュー1に割り当てられることを表す。上のキュー指定規則2は、パケットのヘッダが、これらがVM2から発しておりサーバーZ上の任意のファイルに宛てられることを示す場合、これらのパケットはキュー2に割り当てられることを表す。上のキュー指定規則3は、パケットのヘッダが、これらがVM3から発していることを示す場合、これらのパケットはキュー4に割り当てられることを表す。キュー指定規則4は、パケットが他のキューのいずれにも割り当てられない場合、これらのパケットはキュー3に割り当てられることを表す。
[0064] 図2のストレージ・サーバー・ステージにおけるIOプロトコル・コンポーネントに対するキュー指定規則の例は、次の通りである。
[0065] 1: IO Header <SID S1, H: \File F>→Queue Ql
[0066] 2: IO Header <SID S2, H: \File G>→Queue Ql
[0067] 3: IO Header <SID S2, H: \Directory A/*>→Queue Q2
[0068] 4: <*, *>→Queue Q3
[0069] ここで、SIDは、ユーザ、プロセス、およびサーバーを識別するセキュリティ記述子を表す。上のキュー指定規則1は、パケットのヘッダがサーバー1のSIDを含み、パケットの宛先がファイルFである場合、これらのパケットはキュー1に割り当てられることを記述する。上のキュー指定規則2は、パケットのヘッダがサーバー2のSIDを含み、パケットの宛先がファイルGである場合、これらのパケットはキュー1に割り当てられることを記述する。尚、これは、異なるフローに属するパケットが同じキューに導かれる場合もあることを示すことを注記しておく。上のキュー指定規則3は、パケットのヘッダがサーバー2のSIDを含み、パケットの宛先がディレクトリAである場合、これらのパケットはキュー2に割り当てられることを記述する。上のキュー指定規則4は、規則1および2を満たさないパケットはキュー3に割り当てられることを記述する。
[0065] 1: IO Header <SID S1, H: \File F>→Queue Ql
[0066] 2: IO Header <SID S2, H: \File G>→Queue Ql
[0067] 3: IO Header <SID S2, H: \Directory A/*>→Queue Q2
[0068] 4: <*, *>→Queue Q3
[0069] ここで、SIDは、ユーザ、プロセス、およびサーバーを識別するセキュリティ記述子を表す。上のキュー指定規則1は、パケットのヘッダがサーバー1のSIDを含み、パケットの宛先がファイルFである場合、これらのパケットはキュー1に割り当てられることを記述する。上のキュー指定規則2は、パケットのヘッダがサーバー2のSIDを含み、パケットの宛先がファイルGである場合、これらのパケットはキュー1に割り当てられることを記述する。尚、これは、異なるフローに属するパケットが同じキューに導かれる場合もあることを示すことを注記しておく。上のキュー指定規則3は、パケットのヘッダがサーバー2のSIDを含み、パケットの宛先がディレクトリAである場合、これらのパケットはキュー2に割り当てられることを記述する。上のキュー指定規則4は、規則1および2を満たさないパケットはキュー3に割り当てられることを記述する。
[0070] また、コントローラーは、キュー・ドレイン・レートおよびキュー・ルーティングのような、キュー毎の構成を決定する。例えば、コントローラーは、トークン・レート、優先順位、およびキュー・サイズのような、キュー・プロパティを設定することができる。キューのトークン・レートは、パケットがキューから放出されるレートに関係する。キューの優先順位は、他のキューに対して、キューがサービスされる順序を指定する。キューのサイズは、キューに格納することができるパケットの数を指定する。
[0071] 構成変更可能なサービス・プロパティによってキューを実施するステージは、優先的にIO要求を抑えるまたは処理する(treat)ことができる。これらのサービス・プロパティは、実行分離(performance isolation)ポリシー(例えば、上のポリシーP1、P2、P4、P5)の実施を可能にする。IOトラフィックを抑えるために、キューはトークン・バケット抽象化(token-bucket abstraction)を使用することができる。キューは、一定のトークン・レートでサービスされてもよい。優先順位フィールドによって示されるように、あるキューが他よりも優先的に扱われてもよい。キューがキュー・サイズ閾値に達した場合、ステージはコントローラーに通知することができる。コントローラーは、以下で更に詳しく説明するAPIのconfigureQueueServiceコールを使用して、または他の方法で、キューに対するサービス・プロパティ(<トークン・レート、優先順位、キュー・サイズ>)を設定することもできる。周期的に、コントローラーは、以下で更に詳しく説明するAPIのコールを使用して、キューの平均サービス・レートおよびキュー・サイズまたは他の統計というような、キューを記述する統計を監視することができる。
[0072] あるステージが、キューに入れられたIO要求をどのように送出するかの制御を可能にしてもよい。キューは、デフォルトのネクストホップと関連付けられてもよい。例えば、計算サーバーのIOプロトコル・コンポーネントステージにおける要求をネットワーク・ドライバーに送出するのでもよい。このステージにおけるキューは、ハイパーバイザーにもないステージというような、異なるステージに要求を送出させるように構成することができる。このようなステージの構成変更可能な配管工事(plumbing)は、豊富な1組のフロー・ポリシーを可能にする。例えば、コントローラーは、信頼できないVMからウィルス・スキャナ・ステージを経てIO要求を送出する制御命令を送ることもできる。
[0073] コントローラーは、図3を参照して先に説明したように、制御命令を選択されたステージに送り(608)、任意にフィードバックを受ける。これは、ポリシーに対する変化および/またはフロー・パスに対する変更についての情報を受けることもできる(610)。例えば、顧客はVMを追加するまたは削除することができる。ファイルは、異なるストレージ・サーバーに移動することもできる。この結果、新たなフロー・パスができ、これに沿ってポリシーが施行されることになる。コントローラーは、古いフロー・パスに沿ったステージにおいてキュー指定規則を削除し、新たなフロー・パスに沿ってキュー指定規則を追加することができる。
[0074] コントローラーは、新たなポリシーが定められるときに、様々なステージを更新することができる。多くの場合、ステージに跨がる特定の更新順序付けは要求されず、各ステージにおける一時的な一貫性のない規則が、これらが最終的に収束する限り、許容され得る。例えば、コントローラーは、関連するステージに対する、あるバージョン番号の任意の状態更新を一括処理し、同じバージョン番号の承認を待ち、次いで任意の別の状態転移を進めることができる。厳密な更新順序付けが必要とされる場合、コントローラーは、分散同意プロトコルに関係することをステージに要求することなく、各ステージをその順序で更新する。ステージ構成は、ソフト・ステートであるので、パスに沿ったあるステージの障害(例えば、ストレージ・サーバーの障害)が、そのステージにおけるキューおよびキュー指定規則を破壊するおそれがある。サーバーがオンラインに復帰したとき、制御サービスに連絡を取り、それに責任があるキュー指定規則のリストを得る。
[0075] ある例では、コントローラーは、フローに関連付けられたバージョン番号を追跡し、それがステージに連絡を取る毎に、その数を単調に増加させる。あるエポック番号のメッセージを受信すると、ステージはそれよりも低いバージョン番号を有する後続のメッセージ(一時的なネットワーク分割(partition)の後システム内にあった可能性があるメッセージ)を全て破棄する。
[0076] 図7は、ステージにおける方法の模式図である。ステージが起動または初期化すると、その存在を通知するためにコントローラーに連絡を取る(700)。例えば、指定されたアドレスでメッセージをコントローラーに送ることができ、または通知メッセージをブロードキャストすることもできる。ステージは、2つ以上のキュー、およびキュー毎に少なくとも1つのキュー指定規則を受け、インストールする(702)。これは、キューおよびキュー指定規則を、コントローラーからの制御命令の一部として受ける。ステージは、制御命令にしたがってそれらのドレイン・レートおよびルーティング特性を設定することによって、キューを構成する。
[0077] ステージは、ストレージIO要求パケットを受ける(図7のステップ704参照)。例えば、そのヘッダを調べることによって、パケットがキュー指定規則と一致するか否かチェックする。一致がある場合、一致したキューにパケットを転送する(708)。一致がない場合、ある例では要求パケットをブロックし(710)、キュー指定規則を求めるメッセージをコントローラーに送る(712)。尚、ブロックするステップ710は任意であることを注記しておく。回答を受けた場合(714)、コントローラーから受けたキュー指定規則をインストールし(716)、要求メッセージのブロックを解除する(718)。コントローラーから回答を受けなかった場合、ブロックした要求に対してデフォルトのキューを使用する(720)。次いで、最小ヒープ順序、または任意の他の適した順序にしたがって、キューをサービスする。キューの振る舞いについてのフィードバックをコントローラーに送ることができる(724)。
[0078] 図8は、先のポリシーP5の施行に関連するステージを含むトポロジー・サブグラフの一例を示す。VMからステージまでのパスに沿った他のステージは、明確化のために省略されている。
[0079] ポリシーP5は、{{p、q、r}、{X,Y}}→帯域幅Bと表現することができ、これが意味するのは、仮想機械p800、q802、およびr804からのパケットが、ストレージ・シェアX806およびY808に行こうとしており、これらに総帯域幅Bが保証されることになっているということである。このポリシーは、マルチポイント・フローを伴うので特に興味深い。即ち、これは多数のソース(VMp、q、r)から多数の宛先(シェアX、Y)へのIOに対して総合的な保証を提供する。以下で説明するように、これはステージの動的構成を使用する。例えば、pがIOを生成する唯一のVMである場合、これが帯域幅Bを得ればよい。
[0080] このポリシーは、以下のように施行することができる。コントローラー106によって維持されるデーター・センター・トポロジー・グラフを想定すると、コントローラーにおける制御アプリケーションが、このポリシーに関連するサブグラフを決定する。図8に示すように、このサブグラフは、VMp、q、rから、シェアXおよびYが実装されているストレージ・サーバーまでのパスに沿ってステージを含む。このグラフのエッジはステージ間のリンク、物理的ネットワーク・リンク、およびストレージ・サーバーから実際のディスクへのインターフェースである。制御アプリケーションの動作は、2つのステップを含む。
[0081] 最初に、受付(admission)制御である。コントローラーは、以上のグラフに沿ったエッジが、保証を満たすのに十分な予備容量を有することを確認する。ネットワーク・リンクおよびディスクへのリンクの合計帯域幅容量は、コントローラーの発見コンポーネントによって判定される。各リンク上における容量の一部は、前から存在するポリシーのために確保されている場合もあるので、このポリシーは、各リンク上において確保されていない容量が保証B以上である場合にのみ、受け付けることができる。
[0082] 第2に、施行である。コントローラーは、VMp、q、rからシェアX、Yまでの全てのIOの合計レートが、総帯域幅Bを保証することを確認する。この総帯域幅制限は、グラフにおける任意のカット(cut)において施行することができる。この例は、顧客の1人だけの視点からのものである。図8に示すように、VMがホストされているハイパーバイザーまたはストレージ・サーバーにおいてこれを施行することができる。この例では、コントローラーがハイパーバイザー内部のあるステージにおいて帯域幅制限を施行することを選択したと仮定する。これを行うためには、制限の総和がBに等しくなるように、VM毎に帯域幅制限を決定する必要がある。つまり、コントローラー・アプリケーションは、分散型レート制限を行う必要がある。即ち、1組のN個のVM(この例では、N=3)を想定し、これらの間で帯域幅Bを分散することがタスクになる。これは、各ソースにリンクのその最大−最小公正シェアを与えることによって行うことができる。最大−最小分配(sharing)では、VMのトラフィック要求量、即ち、これらがトラフィックを送ることができるレートに基づいて、VMにレートを割り当てる(assign)。具体的には、VMがその要求量よりも大きなレートを得ることがなく、要求量が満たされないVMが等しいレートを得るように、要求量が少ない順にレートが割り当てられる。つまり、VMに対して要求量の集合Dを想定すると、コントローラーは、最大−最小公正シェアfを決定し、次いで個々のVMに割り当てられるレートを指定し、これらのレートの合計が前述の帯域幅となることを確保する。
[0083] これらのレートが与えられると、制御アプリケーションはハイパーバイザーのステージを構成する。VMpに対して、pがホストされたハイパーバイザーのステージにおいてキューを作成し、VMpからシェアXおよびyへのトラフィック全てをこのキューに導くキュー指定規則を作成し、このキューのドレイン帯域幅を、pに割り当てられたレートに設定する(configure)。VMqおよびrに対するステージ構成は同様である。
[0084] コントローラーは、VM要求量を近似するために、周期的にハイパーバイザー・ステージから統計を収集することができる。制御アプリケーションは、これらの統計を使用して、キュー・ドレイン設定値から周期的に更新帯域幅制限を策定する(generate)。
[0085] 以上で説明した例は、マルチポイント・フローに対して総合保証を確保する。他の例では、総合最小帯域幅保証(aggregate minimum bandwidth guarantee)を提供する場合もある。これが意味するのは、1つのフローに対するVMがインアクティブになっているとき、他のフローのVMは予備の帯域幅を利用できるということである。例えば、コントローラーは、トラフィック統計をステージのキューから収集し、全てのデーター・センターIOフローにわたる階層的最大−最小分配アルゴリズムを使用して、それらの帯域幅制限を決定する。
[0086] 前述のように、各ステージおよびコントローラーは、これらが通信することを可能にするAPIを実装することもできる。1つの可能なAPIの例についてこれより示すが、これは一例であり、多くの他のAPIが使用されてもよい。
[0087] A0 getQueuelnfo ()
[0088] このAPIコールは、ステージが整列のために使用するIOヘッダの種類、および構成変更可能であるステージのキュー・プロパティを戻す。また、これは、デフォルトのネクストホップ・ステージを含む、可能なネクストホップ・ステージも指定する。
[0088] このAPIコールは、ステージが整列のために使用するIOヘッダの種類、および構成変更可能であるステージのキュー・プロパティを戻す。また、これは、デフォルトのネクストホップ・ステージを含む、可能なネクストホップ・ステージも指定する。
[0089] A1 getQueueStats (Queue-id q)
[0090] このAPIコールはキュー統計を戻す。
[0091] A2 createQueueRule (IO Header i, Queue-id q)
[0092] このAPIコールは、キュー指定規則i→qを作成する。
[0090] このAPIコールはキュー統計を戻す。
[0091] A2 createQueueRule (IO Header i, Queue-id q)
[0092] このAPIコールは、キュー指定規則i→qを作成する。
[0093] A3 removeQueueRule (IO Header i, Queue-id q)
[0094] このAPIコールは、キュー指定規則を解除する。
[0095] A4 configureQueueService (Queue-id q,<token rate, priority, queue size>)
[0096] このAPIコールは、トークン・レート、キューの優先順位、およびサイズの内1つ以上を設定する(configure)。
[0094] このAPIコールは、キュー指定規則を解除する。
[0095] A4 configureQueueService (Queue-id q,<token rate, priority, queue size>)
[0096] このAPIコールは、トークン・レート、キューの優先順位、およびサイズの内1つ以上を設定する(configure)。
[0097] A5 configureQueueRouting (Queue-id q, Next-hop stage s)
[0098] このAPIコールは、キューを送出しようとする次のホップ・ステージを構成する(configure)。
[0098] このAPIコールは、キューを送出しようとする次のホップ・ステージを構成する(configure)。
[0099] A6 configureTokenBucket (Queue-id q, <benchmark-results>)
[00100] このAPIコールは、所与の要求に対してどれくらいのトークンを引き受けるべきかを示すベンチマーク結果を得る。
[00100] このAPIコールは、所与の要求に対してどれくらいのトークンを引き受けるべきかを示すベンチマーク結果を得る。
[00101] 図9は、計算ベース・デバイス例900の種々のコンポーネントを示し、デバイス900は、任意の形態の計算および/または電子デバイスとして実現することができ、このデバイスにおいて、コントローラーおよび/またはステージの実施形態を実現することができる。
[00102] 計算ベース・デバイス900は、1つ以上のプロセッサー902を含む。プロセッサー902は、マイクロプロセッサー、コントローラー、またはストレージ・システムにおいてストレージ入力出力要求を制御するために、デバイスの動作を制御するコンピューター実行可能命令を処理する任意の他の適したタイプのプロセッサーであってもよい。ある例では、例えば、システムオンチップ・アーキテクチャーが使用される場合、プロセッサー902は、コントローラーおよび/またはステージの方法の一部をハードウェアで実現する(ソフトウェアまたはファームウェアではなく)1つ以上の固定機能ブロック(アクセレレーターとも呼ぶ)を含むのでもよい。本デバイス上でアプリケーション・ソフトウェアを実行することを可能にするために、計算ベース・デバイスにおいて、オペレーティング・システム904を含むプラットフォーム・ソフトウェアまたは任意の他の適したプラットフォーム・ソフトウェアを設けてもよい。
[00103] コンピューター実行可能命令は、計算ベース・デバイス900によってアクセス可能な任意のコンピューター読み取り可能媒体を使用して供給することができる。コンピューター読み取り可能媒体は、例えば、メモリー908のようなコンピューター記憶媒体、および通信媒体を含むことができる。メモリー908のようなコンピューター記憶媒体は、揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体を含み、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターというような情報の格納のための任意の方法または技術で実現される。コンピューター記憶媒体は、RAM、ROM、EPROM、EEPROM、フラッシュ・メモリーまたは他のメモリー技術、CD−ROM、ディジタル・バーサタイル・ディスク(DVD)または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク記憶デバイスまたは他の磁気記憶デバイス、あるいは計算デバイスによるアクセスのために情報を格納するために使用することができる任意の他の非通信媒体を含むが、これらに限定されない。対照的に、通信媒体は、搬送波のような変調データー信号、または他の伝送メカニズムに、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、またはその他のデーターを具体化することができる。本明細書において定義する場合、コンピューター記憶媒体は通信媒体を含まない。したがって、コンピューター記憶媒体は、伝搬信号自体であると解釈すべきでない。伝搬信号は、コンピューター記憶媒体内に存在することもあるが、伝搬信号自体はコンピューター記憶媒体の例ではない。コンピューター記憶媒体(メモリー908)は計算ベース・デバイス900内部に示されているが、ストレージは分散されまたは離れて配置され、ネットワークまたは他の通信リンクによって(例えば、通信インターフェース910を使用して)アクセスされてもよいことは認められよう。
[00104] 計算ベース・デバイスがステージを実装する場合、複数の構成変更可能なキュー906を含む。計算ベース・デバイスがコントローラーまたはステージを実装する場合、デバイスがコントローラーまたはステージと適宜通信することを可能にする制御インターフェース907を含む。トポロジー・グラフ、パラメーター値、キュー指定規則、閾値、判断基準、およびその他のデーターを格納するために、データー・ストア912が設けられる。
[00105] 「コンピューター」または「計算ベース・デバイス」という用語は、本明細書では、命令を実行することができるように処理能力を有する任意のデバイスを指すために使用される。このような処理能力は多くの異なるデバイスに組み込まれ、したがって「コンピューター」および「計算ベース・デバイス」という用語は、各々、PC、サーバー、移動体電話機(スマート・フォンを含む)、タブレット・コンピューター、セット・トップ・ボックス、メディア・プレーヤー、ゲーム・コンソール、パーソナル・ディジタル・アシスタント、および多くの他のデバイスを含むことは、当業者には認められよう。
[00106] 本明細書において説明した方法は、有形記憶媒体上にある機械読み取り可能な形態、例えば、プログラムがコンピューター上で実行されたとき、そしてコンピューター・プログラムがコンピューター読み取り可能媒体上に具体化することができる場合、本明細書において説明した方法の内任意のものの全てのステップを実行するように構成されたコンピューター・プログラム・コード手段を含むコンピューター・プログラムの形態のソフトウェアによって実行することができる。有形記憶媒体の例には、ディスク、サム・ドライブ(thumb drive)、メモリー等のような、コンピューター読み取り可能媒体を構成するコンピューター記憶デバイスを含み、伝搬信号を含まない。伝搬信号は、有形記憶媒体内に存在することもあるが、伝搬信号自体は有形記憶媒体の例ではない。ソフトウェアは、本方法のステップを任意の適した順序でまたは同時に実行することができるように、パラレル・プロセッサーまたはシリアル・プロセッサー上における実行に相応しくすることができる。
[00107] これは、ソフトウェアが価値のある、別個に取引可能な製品となり得ることを認める。これは、所望の機能を実行するために「ダム」(dumb)または標準的なハードウェア上で実行するソフトウェアまたはこれを制御するソフトウェアを包含することを意図している。また、HDL(ハードウェア記述言語)ソフトウェアのような、所望の機能を実行するために、シリコン・チップを設計するまたは万能プログラマブル・チップを構成する際に使用されるような、ハードウェアの構成を「記述する」ソフトウェアまたは ハードウェアの構成を定めるソフトウェアを包含することも意図している。
[00108] 尚、プログラム命令を格納するために利用される記憶デバイスは、ネットワークにわたって分散させることができることは、当業者には理解できよう。例えば、リモート・コンピューターが、ソフトウェアとして記述されたプロセスの一例を格納することもできる。ローカルまたは端末コンピューターが、リモート・コンピューターにアクセスし、プログラムを実行するために、ソフトウェアの一部または全部をダウンロードすることもできる。あるいは、ローカル・コンピューターが必要に応じてソフトウェアの断片をダウンロードすること、またはローカル端末において一部のソフトウェア命令を実行し、リモート・コンピューター(またはコンピューター・ネットワーク)において一部を実行することもできる。また、当業者には周知である従来の技法を利用することによって、ソフトウェア命令の全部または一部を、DSP、プログラマブル・ロジック・アレイ等のような専用回路によって実行できることも、当業者には理解できよう。
[00109] 当業者には明白であろうが、本明細書において示した範囲またはデバイス値はいずれも、求められる効果を失うことなく、広げることまたは変更することもできる。
[00110] 以上、構造的特徴および/または方法論的アクトに特定的な文言で主題について説明したが、添付した特許請求の範囲において定められる主題は、以上で説明した特定の特徴やアクトに必ずしも限定されないことは理解されてしかるべきである。逆に、以上で説明した特定の特徴やアクトは、特許請求の範囲を実現する形態例として開示したまでである。
[00110] 以上、構造的特徴および/または方法論的アクトに特定的な文言で主題について説明したが、添付した特許請求の範囲において定められる主題は、以上で説明した特定の特徴やアクトに必ずしも限定されないことは理解されてしかるべきである。逆に、以上で説明した特定の特徴やアクトは、特許請求の範囲を実現する形態例として開示したまでである。
[00111] 尚、以上で説明した便益および利点は、1つの実施形態に関係してもよく、または様々な実施形態に関係してもよいことは理解されよう。実施形態は、先に述べた問題の内いずれかを解決するものにも、全てを解決するものにも、また先に述べた便益や利点の内いずれかを有するものにも、全てを有するものにも限定されない。更に、「1つの」項目に言及するときは、1つ以上のその項目に言及するということも理解されよう。
[00112] 本明細書において説明した方法のステップは、任意の適した順序で実行されても、または該当する場合には同時に実行されてもよい。加えて、個々のブロックは、本明細書において説明した主題の主旨や範囲から逸脱することなく、これらの方法のいずれからも削除されてもよい。以上で説明した例はいずれも、求められる効果を失うことなく更に他の例を形成するために、その態様を、説明した他の例のいずれの態様とでも組み合わせることができる。
[00113] 「含む」(comprising)という用語は、本明細書では、識別された方法のブロックまたはエレメントを含むが、このようなブロックまたはエレメントが排他的リストを構成するのではなく、方法または装置が追加のブロックまたはエレメントを含んでもよいことを意味するために使用される。
[00114] 尚、以上の説明は一例として挙げたに過ぎず、当業者によって種々の変更が成されてもよいことは理解されよう。以上の明細書、例、およびデーターは、実施形態例の構造および使用についての完全な説明を示す。以上ある程度の特定性をもって、または1つ以上の個々の実施形態を参照して種々の実施形態について説明したが、当業者であれば、本明細書の主旨や範囲から逸脱することなく、開示された実施形態に対して多数の改変を行うことができよう。
Claims (10)
- データー・ストレージ・システムにおけるコンピューターに実装された方法であって、
プロセッサーにおいて、フローのエンドポイント間においてデーター・ストレージ入力/出力要求のフローに適用される1つ以上の判断基準を含むポリシーにアクセスするステップであって、前記エンドポイントが、少なくとも1つの計算エンティティおよび少なくとも1つのストアを含む、ステップと、
制御命令を前記データーのフローの少なくとも1つのステージに送るステップであって、前記ステージが、前記フローが通過する前記データー・ストレージ・システムのコンポーネントであり、前記ステージが、前記制御命令を解釈するように構成され、前記制御命令が、前記ポリシーが満たされるように前記データー・ストレージ入力/出力要求のフローを処理するために、前記少なくとも1つのステージにおいて複数のキューを制御するように構成される、ステップと、
を含む、方法。 - 請求項1記載の方法において、前記フローが3つ以上のエンドポイント間にある、方法。
- 請求項1記載の方法において、前記データー・ストレージ入力/出力要求のフローが、少なくとも部分的に1つ以上の他のフローと共有されるリソースを使用する、方法。
- 請求項1記載の方法において、前記ポリシーにアクセスするステップが、前記少なくとも1つの計算エンティティおよび前記少なくとも1つのストアの上位識別子にアクセスするステップを含み、上位識別子が、前記少なくとも1つのステージによって理解されない識別子であり、前記方法が、前記上位識別子を解決し、前記少なくとも1つのステージによって理解される下位識別子を得るステップを含む、方法。
- 請求項1記載の方法において、前記データー・ストレージ・システムにおける集中コントローラーにおいて前記方法を実行し、前記データー・ストレージ・システムが、複数の計算エンティティおよび複数のストアの間において、複数のデーター・ストレージ入力/出力要求のフローを有し、各フローが少なくとも1つのステージを有する、方法。
- 請求項1記載の方法において、前記制御命令が、どのタイプのデーター・ストレージ入力/出力要求が、ステージにおいて指定されたキューに入れられるか指定するキュー指定規則を作成するように構成される、方法。
- 請求項1記載の方法において、前記制御命令が、キューのサービス特性、キューのルーティング特性の内任意の1つ以上を設定する(configure)ように構成される、方法。
- 請求項1記載の方法であって、前記データー・ストレージ入力/出力要求のフローについてのフィードバックを得て、前記フィードバックに基づいて前記制御命令を変更するステップを含む、方法。
- データー・ストレージ・システムのコンポーネントにおけるコンピューターに実装された方法であって、
プロセッサーにおいて、少なくとも1つの計算エンティティと少なくとも1つのストアとの間におけるデーター・ストレージ入力/出力要求のフローを受けるステップと、
制御命令を受けるステップと、
前記制御命令にしたがって1つ以上のキューを構成するステップと、
前記制御命令の一部であるキュー指定規則にしたがって、前記データー・ストレージ入力/出力要求を前記キューに割り当て、前記キューをサービスするステップと、
を含む、方法。 - データー・ストレージ・システム・コンポーネントであって、
少なくとも1つの計算エンティティと少なくとも1つのストアとの間において、前記プロセッサーにおける複数のキューを介して、データー・ストレージ入力/出力要求のフローを伝送するように構成されたプロセッサーと、
前記データー・ストレージ・システムのコントローラーから制御命令を受けるように構成されたインターフェースと、
を含み、前記プロセッサーが、前記制御命令にしたがって前記キューを構成し、前記制御命令の一部であるキュー指定規則にしたがって、前記データー・ストレージ入力/出力要求を前記キューに割り当てるように構成される、データー・ストレージ・システム・コンポーネント。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/027,012 US9244615B2 (en) | 2013-09-13 | 2013-09-13 | Systems and methods based on policy criteria for controlling the flow of data storage input/output requests between endpoints |
US14/027,012 | 2013-09-13 | ||
PCT/US2014/054634 WO2015038485A1 (en) | 2013-09-13 | 2014-09-09 | Controlling data storage input/output requests |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016536714A true JP2016536714A (ja) | 2016-11-24 |
Family
ID=51619290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016542034A Pending JP2016536714A (ja) | 2013-09-13 | 2014-09-09 | データー・ストレージ入力/出力要求の制御 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9244615B2 (ja) |
EP (1) | EP3044919B1 (ja) |
JP (1) | JP2016536714A (ja) |
CN (1) | CN105531972B (ja) |
RU (1) | RU2016108806A (ja) |
WO (1) | WO2015038485A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019021185A (ja) * | 2017-07-20 | 2019-02-07 | 富士通株式会社 | 情報処理装置、情報処理システム、情報処理装置制御方法及び情報処理装置制御プログラム |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8769048B2 (en) | 2008-06-18 | 2014-07-01 | Commvault Systems, Inc. | Data protection scheduling, such as providing a flexible backup window in a data protection system |
US8352954B2 (en) | 2008-06-19 | 2013-01-08 | Commvault Systems, Inc. | Data storage resource allocation by employing dynamic methods and blacklisting resource request pools |
US9128883B2 (en) | 2008-06-19 | 2015-09-08 | Commvault Systems, Inc | Data storage resource allocation by performing abbreviated resource checks based on relative chances of failure of the data storage resources to determine whether data storage requests would fail |
US8725688B2 (en) | 2008-09-05 | 2014-05-13 | Commvault Systems, Inc. | Image level copy or restore, such as image level restore without knowledge of data object metadata |
US9633216B2 (en) | 2012-12-27 | 2017-04-25 | Commvault Systems, Inc. | Application of information management policies based on operation with a geographic entity |
US9459968B2 (en) | 2013-03-11 | 2016-10-04 | Commvault Systems, Inc. | Single index to query multiple backup formats |
US10169121B2 (en) * | 2014-02-27 | 2019-01-01 | Commvault Systems, Inc. | Work flow management for an information management system |
US9648100B2 (en) | 2014-03-05 | 2017-05-09 | Commvault Systems, Inc. | Cross-system storage management for transferring data across autonomous information management systems |
US9384033B2 (en) | 2014-03-11 | 2016-07-05 | Vmware, Inc. | Large receive offload for virtual machines |
US9755981B2 (en) | 2014-03-11 | 2017-09-05 | Vmware, Inc. | Snooping forwarded packets by a virtual machine |
US9742682B2 (en) * | 2014-03-11 | 2017-08-22 | Vmware, Inc. | Large receive offload for virtual machines |
US10164894B2 (en) | 2014-05-05 | 2018-12-25 | Nicira, Inc. | Buffered subscriber tables for maintaining a consistent network state |
US9740574B2 (en) | 2014-05-09 | 2017-08-22 | Commvault Systems, Inc. | Load balancing across multiple data paths |
US9852026B2 (en) | 2014-08-06 | 2017-12-26 | Commvault Systems, Inc. | Efficient application recovery in an information management system based on a pseudo-storage-device driver |
US11249858B2 (en) | 2014-08-06 | 2022-02-15 | Commvault Systems, Inc. | Point-in-time backups of a production application made accessible over fibre channel and/or ISCSI as data sources to a remote application by representing the backups as pseudo-disks operating apart from the production application and its host |
US9444811B2 (en) | 2014-10-21 | 2016-09-13 | Commvault Systems, Inc. | Using an enhanced data agent to restore backed up data across autonomous storage management systems |
US9405597B1 (en) * | 2015-05-01 | 2016-08-02 | Salesforce.Com, Inc. | Centralized throttling service |
US9588913B2 (en) * | 2015-06-29 | 2017-03-07 | International Business Machines Corporation | Management of allocation for alias devices |
US9766825B2 (en) | 2015-07-22 | 2017-09-19 | Commvault Systems, Inc. | Browse and restore for block-level backups |
US10296368B2 (en) | 2016-03-09 | 2019-05-21 | Commvault Systems, Inc. | Hypervisor-independent block-level live browse for access to backed up virtual machine (VM) data and hypervisor-free file-level recovery (block-level pseudo-mount) |
US10664557B2 (en) * | 2016-06-30 | 2020-05-26 | Microsoft Technology Licensing, Llc | Dial control for addition and reversal operations |
US20180062944A1 (en) * | 2016-09-01 | 2018-03-01 | Cisco Technology, Inc. | Api rate limiting for cloud native application |
US10838821B2 (en) | 2017-02-08 | 2020-11-17 | Commvault Systems, Inc. | Migrating content and metadata from a backup system |
US10740193B2 (en) | 2017-02-27 | 2020-08-11 | Commvault Systems, Inc. | Hypervisor-independent reference copies of virtual machine payload data based on block-level pseudo-mount |
US10891069B2 (en) | 2017-03-27 | 2021-01-12 | Commvault Systems, Inc. | Creating local copies of data stored in online data repositories |
US10776329B2 (en) | 2017-03-28 | 2020-09-15 | Commvault Systems, Inc. | Migration of a database management system to cloud storage |
US11074140B2 (en) | 2017-03-29 | 2021-07-27 | Commvault Systems, Inc. | Live browsing of granular mailbox data |
US10313926B2 (en) | 2017-05-31 | 2019-06-04 | Nicira, Inc. | Large receive offload (LRO) processing in virtualized computing environments |
US10664352B2 (en) | 2017-06-14 | 2020-05-26 | Commvault Systems, Inc. | Live browsing of backed up data residing on cloned disks |
CN109495523A (zh) * | 2017-09-11 | 2019-03-19 | 北京金山云网络技术有限公司 | 管理指令下发方法、装置、电子设备及存储介质 |
US11075822B1 (en) * | 2017-10-16 | 2021-07-27 | EMC IP Holding Company, LLC | System and method for improved performance QoS with service levels and storage groups |
CN109725829B (zh) * | 2017-10-27 | 2021-11-05 | 伊姆西Ip控股有限责任公司 | 用于数据存储系统的端到端QoS解决方案的系统和方法 |
US10795927B2 (en) | 2018-02-05 | 2020-10-06 | Commvault Systems, Inc. | On-demand metadata extraction of clinical image data |
US10761942B2 (en) | 2018-03-12 | 2020-09-01 | Commvault Systems, Inc. | Recovery point objective (RPO) driven backup scheduling in a data storage management system using an enhanced data agent |
US10789387B2 (en) | 2018-03-13 | 2020-09-29 | Commvault Systems, Inc. | Graphical representation of an information management system |
US10860443B2 (en) | 2018-12-10 | 2020-12-08 | Commvault Systems, Inc. | Evaluation and reporting of recovery readiness in a data storage management system |
US11308034B2 (en) | 2019-06-27 | 2022-04-19 | Commvault Systems, Inc. | Continuously run log backup with minimal configuration and resource usage from the source machine |
CN115242726B (zh) * | 2022-07-27 | 2024-03-01 | 阿里巴巴(中国)有限公司 | 队列的调度方法和装置及电子设备 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0814795B2 (ja) | 1986-01-14 | 1996-02-14 | 株式会社日立製作所 | マルチプロセッサ仮想計算機システム |
US5983368A (en) | 1997-08-26 | 1999-11-09 | International Business Machines Corporation | Method and system for facilitating hierarchical storage management (HSM) testing |
JP2001168913A (ja) | 1999-12-10 | 2001-06-22 | Hitachi Ltd | ネットワークポリシー転送方法および分散ルールベースプログラム転送方法 |
DE60039989D1 (de) * | 1999-12-28 | 2008-10-02 | Matsushita Electric Ind Co Ltd | Informationsaufzeichnungsmedium und zugangseinrichtung |
US8671132B2 (en) * | 2003-03-14 | 2014-03-11 | International Business Machines Corporation | System, method, and apparatus for policy-based data management |
US20040243699A1 (en) | 2003-05-29 | 2004-12-02 | Mike Koclanes | Policy based management of storage resources |
JP4266725B2 (ja) * | 2003-06-27 | 2009-05-20 | 株式会社日立製作所 | 記憶システム |
JP2006333433A (ja) | 2005-05-25 | 2006-12-07 | Microsoft Corp | データ通信プロトコル |
US7716240B2 (en) | 2005-12-29 | 2010-05-11 | Nextlabs, Inc. | Techniques and system to deploy policies intelligently |
US8141075B1 (en) | 2006-05-08 | 2012-03-20 | Vmware, Inc. | Rule engine for virtualized desktop allocation system |
US8245281B2 (en) | 2006-12-29 | 2012-08-14 | Aruba Networks, Inc. | Method and apparatus for policy-based network access control with arbitrary network access control frameworks |
WO2009043033A2 (en) | 2007-09-28 | 2009-04-02 | Xcerion Aktiebolag | Network operating system |
US8031606B2 (en) * | 2008-06-24 | 2011-10-04 | Intel Corporation | Packet switching |
US8713060B2 (en) | 2009-03-31 | 2014-04-29 | Amazon Technologies, Inc. | Control service for relational data management |
US8027354B1 (en) | 2009-04-29 | 2011-09-27 | Cisco Technology, Inc. | Network consolidation for virtualized servers |
US8307362B1 (en) | 2009-12-18 | 2012-11-06 | Emc Corporation | Resource allocation in a virtualized environment |
US8433802B2 (en) | 2010-01-26 | 2013-04-30 | International Business Machines Corporation | System and method for fair and economical resource partitioning using virtual hypervisor |
US8407413B1 (en) | 2010-11-05 | 2013-03-26 | Netapp, Inc | Hardware flow classification for data storage services |
US8429362B1 (en) | 2011-03-31 | 2013-04-23 | Emc Corporation | Journal based replication with a virtual service layer |
KR20130022091A (ko) | 2011-08-24 | 2013-03-06 | 주식회사 케이티 | 클라우드 컴퓨팅 서버 시스템의 가상머신 제어 장치 및 방법 |
US9652182B2 (en) | 2012-01-31 | 2017-05-16 | Pavilion Data Systems, Inc. | Shareable virtual non-volatile storage device for a server |
US20140330937A1 (en) | 2013-05-03 | 2014-11-06 | Microsoft Corporation | End-to-end classification of storage traffic streams |
-
2013
- 2013-09-13 US US14/027,012 patent/US9244615B2/en active Active
-
2014
- 2014-09-09 CN CN201480050118.3A patent/CN105531972B/zh active Active
- 2014-09-09 EP EP14772510.5A patent/EP3044919B1/en active Active
- 2014-09-09 JP JP2016542034A patent/JP2016536714A/ja active Pending
- 2014-09-09 RU RU2016108806A patent/RU2016108806A/ru not_active Application Discontinuation
- 2014-09-09 WO PCT/US2014/054634 patent/WO2015038485A1/en active Application Filing
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019021185A (ja) * | 2017-07-20 | 2019-02-07 | 富士通株式会社 | 情報処理装置、情報処理システム、情報処理装置制御方法及び情報処理装置制御プログラム |
JP7221585B2 (ja) | 2017-07-20 | 2023-02-14 | 富士通株式会社 | 情報処理装置、情報処理システム、情報処理装置制御方法及び情報処理装置制御プログラム |
Also Published As
Publication number | Publication date |
---|---|
WO2015038485A1 (en) | 2015-03-19 |
US20150081948A1 (en) | 2015-03-19 |
CN105531972A (zh) | 2016-04-27 |
RU2016108806A (ru) | 2017-09-14 |
EP3044919B1 (en) | 2017-03-22 |
EP3044919A1 (en) | 2016-07-20 |
CN105531972B (zh) | 2018-10-19 |
US9244615B2 (en) | 2016-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2016536714A (ja) | データー・ストレージ入力/出力要求の制御 | |
US20210344692A1 (en) | Providing a virtual security appliance architecture to a virtual cloud infrastructure | |
JP5976942B2 (ja) | ポリシーベースのデータセンタネットワーク自動化を提供するシステムおよび方法 | |
Thereska et al. | Ioflow: A software-defined storage architecture | |
US10547540B2 (en) | Routing optimization for inter-cloud connectivity | |
JP5837683B2 (ja) | ネットワークのセグメント化によるネイティブクラウドコンピューティング | |
EP2972855B1 (en) | Automatic configuration of external services based upon network activity | |
US10860374B2 (en) | Real-time local and global datacenter network optimizations based on platform telemetry data | |
US7962587B2 (en) | Method and system for enforcing resource constraints for virtual machines across migration | |
US10212195B2 (en) | Multi-spoke connectivity of private data centers to the cloud | |
US8370530B2 (en) | Method and system for controlling network traffic in a blade chassis | |
US9086919B2 (en) | Fabric independent PCIe cluster manager | |
US7941539B2 (en) | Method and system for creating a virtual router in a blade chassis to maintain connectivity | |
US8095661B2 (en) | Method and system for scaling applications on a blade chassis | |
US20150317169A1 (en) | Constructing and operating high-performance unified compute infrastructure across geo-distributed datacenters | |
US10110707B2 (en) | Chaining virtual network function services via remote memory sharing | |
US20100287262A1 (en) | Method and system for guaranteed end-to-end data flows in a local networking domain | |
EP4004721B1 (en) | Computer device including process isolated containers with assigned virtual functions | |
US10380041B2 (en) | Fabric independent PCIe cluster manager | |
US20240028375A1 (en) | Control plane lifecycle management with dpu devices |