(57)【要約】      （修正有）【課題】オートティアリングを遂行するためのシステムを提供する。【解決手段】システムは複数のリソースを提供し、複数のストレージデバイスで構成される。ストレージデバイスは仮想マシンに対するデータを貯蔵する。受信機は仮想マシンに対するＩ／Ｏ命令及び性能データを受信する。送信機はＩ／Ｏ命令に対する応答を伝送する。オートティアリングコントローラーは仮想マシンに対するデータを貯蔵するストレージティアを選択でき、性能データによりストレージティア間にデータをマイグレーションできる。仮想マシンの性能変化とストレージティア間にデータをマイグレーションするのに必要なマイグレーション費用を考慮してストレージティアを選択することによって、全てのストレージティアで全ての仮想マシンの性能を最適化できる。【選択図】図１
2019021315.tif 000002
【特許請求の範囲】
【請求項１】
複数のリソースを提供する複数のストレージデバイスと、
前記複数のストレージデバイスは複数のストレージティアから構成されて第１仮想マシンに対する第１データ及び第２仮想マシンに対する第２データを貯蔵し、
前記第１仮想マシンから第１入出力コマンド、前記第２仮想マシンから第２入出力コマンド、前記複数のストレージティアにおいて前記第１仮想マシンの性能をモデリングする第１性能データ、及び前記複数のストレージティアにおいて前記第２仮想マシンの性能をモデリングする第２性能データを受信する受信機と、
前記第１入出力コマンドに対する第１応答を前記第１仮想マシンへ送信して前記第２入出力コマンドに対する応答を前記第２仮想マシンへ送信するための送信機と、
前記第１仮想マシンに対する前記第１データを貯蔵するための第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するための第２ストレージティアを選択し、前記第１性能データ及び前記第２性能データに応答して前記第１仮想マシンに対する前記第１データの中の少なくとも一つを前記第１ストレージティアへ又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアへマイグレーションするためのオート−ティアリングコントローラー（ａｕｔｏ−ｔｉｅｒｉｎｇ  ｃｏｎｔｒｏｌｌｅｒ）と、を具備し
前記オートティアリングコントローラーは、前記第１仮想マシンに対する前記第１データを貯蔵するための前記第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するための前記第２ストレージティアを選択し、前記複数のストレージティアの全般の全ての仮想マシンの性能を最適化し、
前記オートティアリングコントローラーは、前記第１仮想マシンに対する前記第１データの中の少なくとも一つを前記第１ストレージティアへ又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアへ移動させることにより、もたらされる性能の変化及び前記第１仮想マシンに対する前記第１データの中の少なくとも一つを前記第１ストレージティアへ、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアへ移動させるマイグレーション費用を考慮するように動作する、ことを特徴とするシステム。
【請求項２】
前記オートーティアリングコントローラーは、
前記第１性能データ及び前記第２性能データに応答して、前記第１仮想マシンに対する前記第１ストレージティアと前記第２仮想マシンに対する前記第２ストレージティアを選択するティア選択モジュールと、
前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアにマイグレーションするためのマイグレーションモジュールと、を含む、ことを特徴とする請求項１に記載のシステム。
【請求項３】
前記オートーティアリングコントローラーは、前記第１性能データと前記第２性能データを使用して、前記第１仮想マシン及び前記第２仮想マシンを、前記複数のストレージティアと前記複数のストレージティアのそれぞれに対する複数のリソースのそれぞれと関連させるリソースマトリックス（ｒｅｓｏｕｒｃｅ  ｍａｔｒｉｘ）を生成するリソースマトリックス生成器と、を含む、ことを特徴とする請求項１に記載のシステム。
【請求項４】
前記リソースマトリックス生成器は、前記複数のストレージティアのそれぞれにおいて前記第１仮想マシンに対する第１性能メトリック（ｍｅｔｒｉｃ）を前記複数のリソースの第２リソースに基づいて、前記複数のストレージティアのそれぞれの前記第１仮想マシンに対する第２性能メトリックに変換するメトリックコンバーターと、を含む、ことを特徴とする請求項３に記載のシステム。
【請求項５】
前記第１性能メトリックは、前記第１仮想マシンに対する第１平均Ｉ／Ｏレイテンシデータを含む、ことを特徴とする請求項４に記載のシステム。
【請求項６】
前記第１性能データに対する第１線形回帰を遂行し、前記第２性能データに対する第２線形回帰を遂行する線形回帰モジュールを含み、
前記オートーティアリングコントローラーは、前記第１線形回帰及び前記第２線形回帰に応答して、前記第１仮想マシンに対する前記第１データを貯蔵するための前記第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するために前記第２ストレージティアを選択する、ことを特徴とする請求項１に記載のシステム。
【請求項７】
前記オートーティアリングコントローラーは、前記第１線形回帰及び前記第２線形回帰に応答して、前記第１仮想マシンと前記第２仮想マシンに対する予測された平均Ｉ／Ｏレイテンシを使用することによって、前記第１仮想マシンに対する前記第１データを貯蔵するための前記第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するための前記第２ストレージティアを選択する、ことを特徴とする請求項６に記載のシステム。
【請求項８】
前記オートーティアリングコントローラーは、前記第１仮想マシンに対する前記第１データを貯蔵するための前記第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するための第２ストレージティアを選択するように構成され、またマイグレーションエポック当たり前記第１性能データと前記第２性能データに応答して、前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアにマイグレーションするように動作する、ことを特徴とする請求項１に記載のシステム。
【請求項９】
前記第１性能データは、前記マイグレーションエポック内の複数のモニタリングエポックからの第１性能データを含み、
前記第２性能データは、前記マイグレーションエポック内の前記複数のモニタリングエポックからの第２性能データを含む、ことを特徴とする請求項８に記載のシステム。
【請求項１０】
前記第１仮想マシンを貯蔵する第１仮想マシンサーバーと、
前記第２仮想マシンを貯蔵する第２仮想マシンサーバーと、を含む、ことを特徴とする請求項１に記載のシステム。
【請求項１１】
前記第１仮想マシンサーバーは、前記複数のストレージティアで前記第１仮想マシンの性能をモデリングする前記第１性能データを生成するためのＩ／Ｏフィルターを含む、ことを特徴とする請求項１０に記載のシステム。
【請求項１２】
前記Ｉ／Ｏフィルタは前記第１仮想マシンからの複数のＩ／Ｏコマンドにレイテンシを注入するように動作し、前記複数のＩ／Ｏコマンドは第１Ｉ／Ｏコマンドを含み、前記注入されたレイテンシに応答して前記第１仮想マシンに対する平均Ｉ／Ｏレイテンシを決定する、ことを特徴とする請求項１１に記載のシステム。
【請求項１３】
複数のストレージティアで第１仮想マシンの性能をモデリングする第１性能データを受信するステップと、
前記複数のストレージティアで第２仮想マシンの性能をモデリングする第２性能データを受信するステップと、
前記第１性能データと前記第２性能データを使用して、前記第１仮想マシン及び前記第２仮想マシンを前記複数のストレージティアと前記複数のストレージティアの各々に対する複数のリソースの各々と関連させるリソースマトリックスを生成するステップと、
前記リソースマトリックスを使用して前記第１仮想マシンに対する第１データを貯蔵するため前記複数のストレージティアの中で第１ストレージティアを選択するステップと、
前記リソースマトリックスを使用して前記第２仮想マシンに対する第２データを貯蔵するため前記複数のストレージティアの第２ストレージティアを選択するステップと、
前記第１仮想マシンに対する前記第１データの中の少なくとも一つを第１ストレージティアへ又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアへマイグレーションするステップと、を有し、
前記第１仮想マシンに対する前記第１データを貯蔵するように前記第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するように前記第２ストレージティアを選択するのは前記複数のストレージティアの全般の全ての仮想マシンの性能を最適化し、
前記第１仮想マシンに対する前記第１データを貯蔵するように前記第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するように前記第２ストレージティアを選択するのは、前記第１仮想マシンに対する前記第１データの中の少なくとも一つを前記第１ストレージティアへ、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアへ移動させることにより、もたらされる性能変化を考慮し、
前記第１仮想マシンに対する前記第１データを貯蔵するように前記第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するように前記第２ストレージティアを選択するのは、前記第１仮想マシンに対する前記第１データの中の少なくとも１つを前記第１ストレージティアへ、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアへマイグレーションするマイグレーションの費用を考慮する、ことを特徴とする方法。
【請求項１４】
前記リソースマトリックスを使用して、前記第１仮想マシンに対する前記第１データを貯蔵するための前記第１ストレージティアを前記複数のストレージティアから選択するステップは、前記複数のストレージティアのそれぞれに対する前記リソースマトリックス及び専門性情報を使用して、前記第１仮想マシンに対する前記第１データを貯蔵するために前記複数のストレージティアの中で前記第１ストレージティアを選択するステップを含み、
前記リソースマトリックスを使用して、前記第２仮想マシンに対する前記第２データを貯蔵するための前記第２ストレージティアを前記複数のストレージティアから選択するステップは、前記複数のストレージティアのそれぞれに対する前記リソースマトリックス及び前記専門性情報を使用して、前記第２仮想マシンに対する前記第２データを貯蔵するために前記複数のストレージティアの中で前記第２ストレージティアを選択するステップを含む、ことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記複数のストレージティアのそれぞれに対する前記専門性情報は、前記複数のストレージティアのそれぞれが前記複数のリソースのそれぞれを支援するか否かを識別する、ことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記複数のストレージティアにおいて前記第１仮想マシンの性能をモデリングする前記第１性能データは、前記第１仮想マシンに対する平均Ｉ／Ｏレイテンシと注入された複数のレイテンシを相互関連させる複数のデータポイントを含む、ことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記複数のストレジティアの第１仮想マシンの性能をモデリングする第１性能データを受信するステップは、
Ｉ／Ｏフィルタにおいて、前記仮想マシンから複数の第１Ｉ／Ｏコマンドを受信するステップと、
前記複数の第１Ｉ／Ｏコマンドに第１レイテンシを注入するステップと、
前記複数の第１Ｉ／Ｏコマンドに対する前記仮想マシンに対する第１平均Ｉ／Ｏレイテンシを計算するステップと、を含む、ことを特徴とする請求項１３に記載の方法。
【請求項１８】
前記第１仮想マシンに対する前記第１データの少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアにマイグレーションする費用は、前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアにマイグレーションさせるのに必要なマイグレーション時間を含む、ことを特徴とする請求項１３に記載の方法。
【請求項１９】
複数のストレージティアにおいて、第１仮想マシンの性能をモデリングする第１性能データを受信するステップと、
前記複数のストレージティアで第２仮想マシンの性能をモデリングする第２性能データを受信するステップと、
前記第１性能データと前記第２性能データを使用して、前記第１仮想マシン及び前記第２仮想マシンを前記複数のストレージティアと前記複数のストレージティアのそれぞれに対する複数のリソースのそれぞれと関連させるリソースマトリックスを生成するステップと、
前記リソースマトリックスを使用して、前記第１仮想マシンに対する第１データを貯蔵するために、前記複数のストレージティア中の第１ストレージティアを選択するステップと、
前記リソースマトリックスを使用して、前記第２仮想マシンに対する第２データを貯蔵するために、前記複数のストレージティア中の第２ストレージティアを選択するステップと、
前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアにマイグレーションするステップと、を有し、
前記第１仮想マシンに対する前記第１データを貯蔵するように前記第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するように前記第２ストレージティアを選択するのは、前記複数のストレージティアの全般の全ての仮想マシンの性能を最適化し、
前記第１仮想マシンに対する前記第１データを貯蔵するように前記第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するように前記第２ストレージティアを選択するのは、前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアに移動させることによってもたらされる性能の変化を考慮し、
前記第１仮想マシンに対する前記第１データを貯蔵するように前記第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するように前記第２ストレージティアを選択するのは、前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアにマイグレーションするマイグレーション費用を考慮する方法をコンピュータにおいて実行させるための命令語が記録されたコンピュータ読み取り可能なことを特徴とする非一時的な記録媒体。
【請求項２０】
前記複数のストレージティアの第１仮想マシンの性能をモデリングする第１性能データを受信するステップは、
Ｉ／Ｏフィルタにおいて、前記仮想マシンから複数の第１Ｉ／Ｏコマンドを受信するステップと、
前記複数の第１Ｉ／Ｏコマンドに第１レイテンシを注入するステップと、
前記複数の第１Ｉ／Ｏコマンドに対する前記仮想マシンに対する第１平均Ｉ／Ｏレイテンシを計算するステップと、を含むコンピュータにおいて実行させるための命令語が記録されたコンピュータ読み取り可能な、ことを特徴とする請求項１９に記載の非一時的な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータストレージデバイスに係り、さらに詳細には、オートティアリングを遂行するためのシステム、その方法、及び実行のための命令語が記録された記録媒体に関する。
【背景技術】
【０００２】
既存のデータストレージセンターは、ハードディスクドライブ及び従来形式のその他のデータストレージに依存している。ハードディスクドライブ及び従来形式のその他のデータストレージは相対的に長いレイテンシを有するため、仮想マシンはしきりにアクセスするデータをローカルストレージにキャッシュする。データキャッシングの使用による相対的な利点は、データアクセス時間の１０倍以上の性能向上である。
【０００３】
しかしながら、フラッシュストレージが、普遍して廉価になるにつれ、データストレージとキャッシュ間のアクセス時間差が減少している。斯かるキャッシングのアクセス時間の減少の利点は、データがデータセンターにだけ独占的に貯蔵され、キャッシュされないことを意味する。フラッシュストレージにデータの重複的なコピー（キャッシュ及びデータセンターの全てに）を貯蔵する費用が相当かかるから、データを最も効率的にデータストレージセンターに貯蔵するのが重要である。
【０００４】
なお、ハードディスクドライブのような既存のストレージと違い、フラッシュストレージは他の特殊性を有する。既存のストレージはデバイスの特殊性を考慮しないから、既存の技術を使用したデータストレージのためのティアの選択は最適とは言えない。
【０００５】
満足できるアクセス時間を提供して、他のストレージティアが提供する特殊性を活用するフラッシュストレージを使用し、データをデータストレージセンターに、より最適に貯蔵する方法が必要である。
【先行技術文献】
【特許文献】
【０００６】
特許文献１：米国登録特許第８６５６１３４Ｂ２号公報
特許文献２：米国登録特許第９２０１７５１Ｂ１号公報
特許文献３：米国登録特許第９６３９２７７Ｂ２号公報
特許文献４：米国登録特許第９６６５６２１Ｂ１号公報
特許文献５：米国登録特許第８７７５８６８Ｂ２号公報
特許文献６：米国登録特許第９５３５８４４Ｂ１号公報
特許文献７：米国公開特許第２０１３０００７２５４Ａ１号公報
特許文献８：米国公開特許第２０１７０２２３１０７Ａ１号公報
特許文献９：米国公開特許第２０１７０２３５５９０Ａ１号公報
特許文献１０：米国公開特許第２０１７０２６２２０４Ａ１号公報
特許文献１１：米国公開特許第２０１４０１５６９６５Ａ１号公報
特許文献１２：米国公開特許第２０１４０３５９２２４Ａ１号公報
特許文献１３：米国公開特許第２０１５００５８５４０Ａ１号公報
特許文献１４：米国公開特許第２０１６０１７９５８２Ａ１号公報
特許文献１５：中国公開特許第１０５８０８１５０Ａ号公報
特許文献１６：韓国登録特許第１０１６５２３２４Ｂ１号公報
【非特許文献】
【０００７】
非特許文献１：ＡＤＩＮＥＴＺ  ｅｔ  ａｌ．，  ‘‘Ｐｅｒｆｏｒｍａｎｃｅ  Ｅｖａｌｕａｔｉｏｎ  ｏｆ  Ｓｃｉｅｎｔｉｆｉｃ  Ａｐｐｌｉｃａｔｉｏｎｓ  ｏｎ  ＰＯＷＥＲＳ８’’，  ＰＭＢＳ  ２０１４，  ＬＮＣＳ  ８９６６，  Ｐ．２４−４５，  ２０１５
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、前記方法をコンピュータ上で実行させるためのプログラムを記録した、コンピュータからリード（ｒｅａｄ）できる記録媒体を提供することにある。本実施例が達成しようとする技術的な課題は上述の技術に限定されずに、以下の実施例から、また他の技術的な課題が類推される。
【課題を解決するための手段】
【０００９】
システムは複数のリソースを提供する複数のストレージデバイスと、前記複数のストレージデバイスは複数のストレージティアから構成されて第１仮想マシンに対する第１データ及び第２仮想マシンに対する第２データを貯蔵し、前記第１仮想マシンから第１入出力コマンド、前記第２マシンから第２入出力コマンド、前記複数のストレージティアにおいて前記第１仮想マシンの性能をモデリングする第１性能データ、及び前記複数のストレージティアにおいて前記第２仮想マシンの性能をモデリングする第２性能データを受信する受信機と、前記第１入出力コマンドに対する第１応答を前記第１仮想マシンへ送信して前記第２入出力コマンドに対する応答を前記第２仮想マシンへ送信するための送信機と、前記第１仮想マシンに対する前記第１データを貯蔵するための第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するための第２ストレージティアを選択し、前記第１性能データ及び前記第２性能データに応答して前記第１仮想マシンに対する前記第１データの中の少なくとも一つを第１ストレージティアへ又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアへマイグレーションするためのオート−ティアリングコントローラー（ａｕｔｏ−ｔｉｅｒｉｎｇ  ｃｏｎｔｒｏｌｌｅｒ）と、を具備し前記オートティアリングコントローラーは前記第１仮想マシンに対する前記第１データを貯蔵するための前記第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するための前記第２ストレージティアを選択し、前記複数のストレージティアの全般の全ての仮想マシンの性能を最適化し、前記オートティアリングコントローラーは前記第１仮想マシンに対する前記第１データの中で少なくとも一つを第１ストレージティアへ又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアへ移動させることにより、もたらされる性能の変化及び前記第１仮想マシンに対する前記第１データの中で少なくとも一つを第１ストレージティアへ、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアへ移動させるマイグレーション費用を考慮するように動作する。
【００１０】
オートティアリングを遂行するための方法は、複数のストレージティアにおいて第１仮想マシンの性能をモデリングする第１性能データを受信するステップと、前記複数のストレージティアで第２仮想マシンの性能をモデリングする第２性能データを受信するステップと、前記第１性能データと前記第２性能データを使用して、前記第１仮想マシン及び前記第２仮想マシンを前記複数のストレージティアと前記複数のストレージティアの各々に対する複数のリソースの各々と関連させるリソースマトリックスを生成するステップと、前記リソースマトリックスを使用して前記第１仮想マシンに対する第１データを貯蔵するため前記複数のストレージティアの中で第１ストレージティアを選択するステップと、前記リソースマトリックスを使用して前記第２仮想マシンに対する第２データを貯蔵するため前記複数のストレージティアの第２ストレージティアを選択するステップと、
前記第１仮想マシンに対する前記第１データの中で少なくとも一つを第１ストレージティアへ又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアへマイグレーションするステップと、を有し、前記第１仮想マシンに対する前記第１データを貯蔵するように前記第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するように前記第２ストレージティアを選択するのは前記複数のストレージティアの全般の全ての仮想マシンの性能を最適化し、前記第１仮想マシンに対する前記第１データを貯蔵するように前記第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するように前記第２ストレージティアを選択するのは、前記第１仮想マシンに対する前記第１データの中で少なくとも一つを第１ストレージティアへ、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアへ移動させることにより、もたらされる性能変化を考慮し、前記第１仮想マシンに対する前記第１データを貯蔵するように前記第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するように前記第２ストレージティアを選択するのは、前記第１仮想マシンに対する前記第１データの中で少なくとも１つを前記第１ストレージティアへ、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアへマイグレーションするマイグレーションの費用を考慮する。
【発明の効果】
【００１１】
本発明の実施例によれば、オートティアリングを遂行するためのシステム、その方法、及び実行のための命令語が記録された記録媒体が提供できる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施例により、仮想マシンをホスティングしてオートティアリングを遂行するように具備されたストレージプールを使用できるネットワ−ク化されたマシンを示す。
【図２】図１のサーバーの追加的な細部事項を図示する。
【図３】本発明の実施例により、図１のストレージプールとオートティアリングで相互作用する図１の仮想マシンサーバの付加的な細部事項を図示する。
【図４】相異なるストレージデバイスにより提供される相異なるリソースを図示する。
【図５】１つのストレージから他のストレージへマイグレーションされる図３の仮想マシンのファイルを示す。
【図６】相異なる時点でのストレージティアに対する仮想マシンの最適の割り当てを図示する。
【図７】図３の仮想マシンに対するレイテンシ注入及び性能データの決定を遂行する図３のＩ／Ｏフィルターを図示する。
【図８】図３のオートティアリングコントローラーの細部事項を図示する。
【図９】図７の性能データを仮想マシン、ストレージティア、及びストレージティアのリソースに相関させるマトリックスへの変換を図示する。
【図１０】図７の性能データの線形回帰を図示する。
【図１１】図３のストレージティアに対する図８の専門性情報を図示する。
【図１２】図３の仮想マシンを図３の他のストレージティアへマイグレーションさせるのに使用されるスコアマトリックス（ｓｃｏｒｅ  ｍａｔｒｉｘ）の計算を図示する。
【図１３】モニタリングエポック（ｍｏｎｉｔｏｒｉｎｇ  ｅｐｏｃｈ）とマイグレーションエポックの間の関係を示す。
【図１４】一実施例により、図７の性能データを生成するため、図７の入力／出力命令にレイテンシを注入するための図３のＩ／Ｏフィルターに対する例示的な手順の流れ図を図示する。
【図１５】一実施例により、ストレージティアを通じた仮想マシンのマイグレーションを管理するための図３のオートティアリングコントローラーに対する例示的な手順の流れ図を図示する。
【図１６】一実施例により、図９のリソースマトリックスを生成するための図３のオートティアリングコントローラーに対する例示的な手順の流れ図を図示する。
【発明を実施するための形態】
【００１３】
本発明の概念に対する詳細な説明を添付した図面を参照しながら行う。下記の詳細な説明において、本発明の概念を完全に理解できるように数多くの特定の細部事項を開示する。しかしながら、当業者は斯かる特定の細部事項なしに、本発明の概念が実行できることを理解しなければならない。他の例において、公知の方法、手順、構成要素、回路及びネットワークは実施例の態様を不必要で不明瞭にしないため詳細に説明しない。
【００１４】
第１、第２などの用語が本明細書で多様な構成要素を説明するため、使用するが、これらの構成要素はこれらの用語により制限されないと理解される。斯かる用語は、１つの要素を他の要素と区別するためにだけ使用する。例えば、第１モジュールは第２モジュールと示すことができ、同様に第２モジュールは本発明の概念の範囲を逸脱しない範囲において第１モジュールと示すことができる。
【００１５】
本発明の概念の説明に使用された用語は、特定の実施例だけを説明するためのものであり、本発明の概念を制限しようとするものではない。本発明の概念及び添付した請求の範囲の説明に使用するように、単数形態は文脈上、別に明示しない限り複数の形態を含む。本明細書で使用する「及び／又は」という用語は、列挙された関連項目の任意の全ての可能な組み合わせを包含できる。本明細書で使用する「包含する」及び／又は「包含する〜」という用語は、明示した特徴、整数、ステップ、動作、構成要素及び／又はエレメントの存在を示すが、一つ以上の他の特徴、整数、ステップ、動作、エレメント、構成要素及び／又はグループの存在又は追加を排除しない。図面の構成要素及び特徴は、必ず一定の比率で描かれるものではない。
【００１６】
ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）価格が下落し続けてＳＳＤ容量が増加し続けるにつれ、近い将来全てのフラッシュストレージシステムがエンタープライズデータセンターに採択されるであろう。結果的に、ハードディスクドライブ（ＨＤＤ）の長所は、次第に希釈されて、マルチレベルセル（ＭＬＣ）のＳＳＤのような大容量のローエンド（ｌｏｗ  ｅｎｄ）ＳＳＤに代替される。従って、費用効率的な設計は、ティアの各々に高速、大容量、リード（ｒｅａｄ）入／出力（Ｉ／Ｏ）命令、長い寿命などの固有の特殊機能が潜在するマルチ−ティアＳＳＤを具現できる。
【００１７】
一方、一般的なエンタープライズデータセンターの使用事例は、ハイパーバイザー（Ｈｙｐｅｒｖｉｓｏｒ）−仮想マシン（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ，  ＶＭ）の構造を使用する。ＶＭのＩ／Ｏワークロード（ｗｏｒｋｌｏａｄ）のパターンはそれぞれ異なり、サービスの上位ティアにそれらをアップグレードするときに見られる性能の向上は同じではない。これによって、「オートティアリング（Ａｕｔｏ−ｔｉｅｒｉｎｇ）」という全体ソリューションが、オールフラッシュマルチ−ティアのデータセンターでＶＭの割り当て及びマイグレーションを処理して、ストレージリソースを最大限活用して性能を最適化し、マイグレーションオーバーヘッドを減少させる。なお、オートティアリングは、過去及び予測された性能要素を考慮できる。
【００１８】
ＶＭはリナックス（登録商標）（Ｌｉｎｕｘ、登録商標）及びウィンドウズ（登録商標）（Ｗｉｎｄｏｗｓ、登録商標）のようなゲスト運営体制（ＯＳ）及び応用プログラムを実行できる。ＶＭは互いに分離される。クラウドサービスの供給業体は、斯かるＶＭをユーザーに貸し出す。ＶＭはユーザー応用プログラムにより他のワークロード（ｗｏｒｋｌｏａｄ）の特性を有するので、ストレージデバイスの速度に対して他のレベルの感度を有する。
【００１９】
Ｘｅｎ（ゼン）、ＫＶＭ及びＶＭｗａｒｅのようなＶＭハイパバイザーソフトウェアは、単一サーバー内に多くの仮想マシン（ＶＭ）をホスティングできる。ＶＭハイパバイザーソフトウェアは、スケジューリング、リソース管理、システムソフトウェアのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）、及びハードウェアの仮想化を担当する。本発明の実施例は、ＶＭハイパバイザーレベルに設置されたオートティアリングデーモン（Ａｕｔｏ−Ｔｉｅｒｉｎｇ  Ｄａｅｍｏｎ）を包含し、その役割はオートティアリングＩ／Ｏフィルター及びオートティアリングコントローラー（Ａｕｔｏ−Ｔｉｅｒｉｎｇ  Ｃｏｎｔｒｏｌｌｅｒ）と通信することである。
【００２０】
全てのＶＭサーバーは、非揮発性エクスプレス（ＮＶＭｅ）ＳＳＤ、３ＤＸＰｏｉｎｔ  ＮＯＮ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ（ＮＶＭ）ＳＳ、及びＭＬＣ／トリプルレベルセル（ＴＬＣ）／クアッドレベルセル（ＱＬＣ）ＳＳＤのような装置を包含できるバックエンドオールフラッシュ（ｂａｃｋｅｎｄ  ａｌｌ−ｆｌａｓｈ）のマルチ−ティアＳＳＤディスクを共有するため、中央集中式のストレージプールに連結される。各ティアには、速い速度、大容量の貯蔵容量などのそれぞれ異なる専門が有り得る。
【００２１】
オートティアリングは、オートティアリングのＩ／Ｏフィルター、オートティアリングデーモン（Ｄａｅｍｏｎ）、及びオートティアリングコントローラーの三つの構成要素を包含する。
【００２２】
オートティアリングのフィルタードライバーは管理される全てのＶＭ（即ち、ＶＭＤＫ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｄｉｓｋ）ファイル）に添付される。オートティアリングのＩ／Ｏフィルタードライバーは、Ｉ／Ｏ関連の統計を収集して全てのＶＭＤＫに対し特別なレイテンシテストを実行することもできる。データは、サンプル周期毎に収集され、結果は全てのＶＭＤＫの全てのデータを収集するホストシステムのオートティアリングデーモンへ伝送される。
【００２３】
オートティアリングデーモンは、全ての物理的マシンのＶＭハイパバイザー上で実行される。オートティアリングデーモンは、ＶＭサーバーのワークロード変更（Ｉ／Ｏアクセスパターン変更）を追跡して、オートティアリングＩ／Ｏフィルターから注入されたレイテンシテスト結果を収集し、オートティアリングコントローラーへ伝送する。
【００２４】
オートティアリングコントローラーは、専用サーバー又はストレージシステムのエンベデッドシステムで実行される。ＶＭが他のティアへマイグレーションされて対応するマイグレーションオーバーヘッドが発生する場合、オートティアリングコントローラーは予測されたＶＭ性能を基盤にし、マイグレーションをトリガーするように決定できる。
【００２５】
各ＶＭの観点から、特定のＶＭが１つのティアから他のティアへマイグレーションされる理由は、ＶＭがマイグレーション以後によりよく遂行される（平均より少ないＩ／Ｏレイテンシ、高いＩＯＰＳ（Ｉ／Ｏ  Ｏｐｅｒａｔｉｏｎ  Ｐｅｒ  Ｓｅｃｏｎｄ）、高い処理量（ｔｈｒｏｕｇｈｔｐｕｔ）、など）からである。しかし、これと共にこれに対応するマイグレーション費用が発生する。これは１つのティアから他のティアへＶＭをマイグレーションするのに、相対的に費用が多くかかり、無視できない。
【００２６】
グローバル最適化の観点から、リソース制約条件と対応するＳＬＡ（Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔｓ）に因って、同時に最も選好するティアにマイグレーションする全てのＶＭ要請を充足させるのは難しい。グローバル最適化は、以前のマイグレーションの影響は勿論であり、時間経過によるＶＭの変更を考慮しなければならない。例えば、現在の最上の割り当てソルーションは、ランタイム中にＶＭ動作が変更されて、その後悪い状況をもたらす。従って、グローバル最適化は、潜在的な利点と不利な点、マイグレーションオーバーヘッド、各ティアのＶＭに対する過去及び予測された性能、ＳＬＡ（Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔｓ）などを考慮しなければならない。斯かる情報を基盤にして、オートティアリングは、［数１］乃至［数６］を使用してマルチ−ティアオール−フラッシュストレージシステムのための最適のソルーションに到達できる。
【００２７】
（表記）
【表１】
2019021315.tif 000003
【００２８】
最小化：
【数１】
2019021315.tif 000004
対象：
【数２−６】
2019021315.tif 000005
【００２９】
［数１］は、目的関数を表す。主要な考え方は、全体性能利得からマイグレーション費用を引いた値を最大化することである。つまり、「性能利得−性能ペナルティー」。内部「ｓｕｍ」演算子はｖをティア（ｔτ−１）からティア（ｔτ）へマイグレーションすると仮定する時、各ＶＭの全てのリソース使用量（ＩＯＰＳ、処理量、及びストレージ大きさなど）の加重値の合計を遂行できる。ここで、マイグレーションは１つのホストサーバーから他のホストサーバーへＶＭをマイグレーションしない。つまり、ひたすらバックエンド（ｂａｃｋｅｎｄ）ＶＭＤＫファイルが１つのＳＳＤティアから他のＳＳＤティアへマイグレーションされる。従って、ＣＰＵ、メモリーなどのような非ディスクＩ／Ｏ関連のリソースを考慮する必要がない。外部「ｓｕｍ」演算子は可能な全てのマイグレーション事例を反復する。加重値のパラメーターＷｖ，τは、各ＶＭのＳＬＡを反映できる。
【００３０】
［数２］は、性能利得を予測するため予測モデル関数が利用されることを示す。［数３］は、各マイグレーション前後にストレージ大きさ（即ち、ＶＭＤＫ大きさ）が変更できないようにする。［数４］は、一時的なマイグレーションオーバーヘッドは、マイグレーションするＶＭの大きさを各ティアにデータをリード及びライトすることにより惹起されるボトルネックで割った値である。詳細には、Ｐｒ（Λ，ｔｖ，τ−１，τ−１）は使用可能な残余速度を表し、ＶＭはマイグレーション中で停止できるから、斯かるＶＭにより使用された処理量も使用可能である（即ち、Ｐｒ（Λ，ｔｖ，τ−１，τ−１）がまた加わる。）。Ｐｗ（Λ，ｔｖ，τ−１，τ−１）はマイグレーションするライト速度を表す。［数５］は、１つのディスクティアでだけＶＭがホスティングされるべき必要性を反映する。最後に、［数６］はリソース制約条件を示すが、ここでΓｋは、使用されうる各リソースタイプの上限（百分率）である。
【００３１】
次のような問題によって、ランタイム中で全てのエポックに対してグローバル最適化を遂行するのは難しい。
１）システムは未来のワークロードパターンに対する情報が殆どないから、ランタイム中の全てのτ時間にグローバル最適化を遂行するのは難しい。
２）グローバル最適化を遂行するとき、各エポックに対する決定は独立的ではない。即ち、既存のサブ−最適化−基盤の動的プログラミングの技法は、各エポックの目標関数値である「性能利得−性能ペナルティー」を最適化することにより、問題を解決するのに使用できないことを意味する。
３）性能予測モデル（マイグレーション無しに他のティアでのＶＭの性能を予測すること）の複雑性により、最適化問題が容易にＮＰ−ハード（ＮＰ−ｈａｒｄ）になる。
【００３２】
従って、収容可能な時間に、斯かる問題を解決するためにはいくつかの制約事項が緩和される必要がある。
【００３３】
全ての時間中にグローバル最適化を遂行する代わりに、各エポック（即ち、ランタイム）に対してだけ最適化を試みることができる。
【００３４】
問題は、加重ナップサック問題（ｗｅｉｇｈｔｅｄ  ｋｎａｐｓａｃｋ  ｐｒｏｂｌｅｍ）と類似する。さらに、高いＩＯＰＳ  ＷＡＰ（Ｗｒｉｔｅ  Ａｍｐｌｉｆｉｃａｔｉｏｎ  Ｆａｃｔｏｒ）関数、大規模のオーバープロビジョニング（ｏｖｅｒ−ｐｒｏｖｉｓｉｏｎｉｎｇ）、及び大きいプログラム／削除（Ｐ／Ｅ）周期などのような各ティアの性能の「専門性」が予め公知されるため、専門性のリソース次元（例えば、ティア１のＩＯＰＳ及び処理量）に重点を置いたＶＭの各々の予想性能に対して「点数」を計算でき、性能−専門性の点数の順位により、対応するマイグレーションオーバーヘッドの予測と共にマイグレーション決定を下す。
【００３５】
２つの相異なるエポックがスケジュールされる。つまり、モニタリングエポックは性能を評価するための頻度を表して性能の予測モデルを回帰し、それは任意の願う間隔で設定される。例えば、その間隔は１５分であり、そしてマイグレーションエポックは１つのティアから他のティアへのＶＭ移動が遂行されうる頻度を表す。これは、任意の間隔で設定される。つまり、例えば、一日又は一週間。モニタリングエポックとマイグレーションエポックは必ず固定されているものではなく、ランタイム中に適応的に大きさを調整できる関数を使用して決定される。なお、マイグレーションエポックはモニタリングエポックの整数倍でなければならない。斯かるウィンドー（ｗｉｎｄｏｗ）の大きさが小さくなる程、ストレージシステムがモニタリング測定されて、ＶＭがマイグレーションされる頻度が高くなる。システムマネージャーは、配置（ｄｅｐｌｏｙｍｅｎｔ）の前に敏感度分析を遂行して、正確性とマイグレーション費用の間のトレード−オフ（ｔｒａｄｅ−ｏｆｆ）の均衡を合わせる。
【００３６】
マイグレーション無しに、他のティアのＶＭ性能を評価するため、各ＶＭのＩ／Ｏ命令に追加のレイテンシを手動で注入して、オートティアリングＩ／ＯフィルターＡＰＩ（Ｉ／ＯフィルタリングのためのＶＭｗａｒｅ  ｖＳｐｈｅｒｅ  ＡＰＩ）を呼出して、全体Ｉ／Ｏレイテンシに与える影響を測定することにより、他のティアのＶＭ性能を「エミュレート（ｅｍｕｌａｔｅ）」できる。
【００３７】
他のティアのＶＭ性能の変化は、線形カーブを使用してモデリングされる。平均Ｉ／Ｏレイテンシと注入されたレイテンシとの関係を示すグラフは線形方程式に回帰される。ラインの傾きは、応用プログラムが実行されているうちに、同期式か又は非同期式かによって異なる。同期式アプリケーションと非同期式アプリケーションは、動作方法が異なり、ラインの傾きに反映される。特に、同期応用プログラムがＩ／Ｏ命令を伝送するとき、同期応用プログラムはＩ／Ｏ命令が完了されるまで待機し、通信が進行される間、応用プログラムの進行を遮断し、システムのリソースを遊休の状態に置ける。対照的に、非同期応用プログラムはＩ／Ｏ命令を伝送でき、伝送が完了される前に他の処理を遂行できる。斯かる事実は、非同期応用プログラムがＩ／Ｏ命令のレイテンシにより影響が少なくなる傾向があるが、そのような改善は費用の惹起を意味する。つまり、非同期応用プログラムは応答を送る時点が分からないので、いつでも応答を受信できなければならない。
【００３８】
ＶＭ敏感度はティア速度と異なる。同期式応用プログラムが有るＶＭは、非同式応用プログラムが有るＶＭより、ティア速度の変化にもっと敏感である。主たる理由は、非同期応用プログラムが一般的にフラッシュ（ｆｌｕｓｈ）するＩ／Ｏ命令の頻度が少なく、Ｉ／Ｏタイミングに対する依存度が低いからである。
【００３９】
このような観測により刺激された「ＴＳＳＣＳ（Ｔｉｅｒ  Ｓｐｅｅｄ  Ｓｅｎｓｉｔｉｖｉｔｙ  Ｃａｌｉｂｒａｔｉｏｎ  Ｓｅｓｓｉｏｎ）」は、実際マイグレーション無しにＶＭを上位（又は、下位）速度のティアにマイグレーションすることによって、ＶＭがどのくらい多くの量を得るようになるか（又は不利益を受けるのか）を予測するため使用される。詳細には、ＴＳＳＣＳは次のような特性を有する。つまり、
１）オートティアリングＩ／Ｏフィルターで実行されるＴＳＳＣＳは、各ＶＭに対するＩ／Ｏ命令にレイテンシを注入し、現在ホストのワークロードに影響を与えないように極めて短い時間しか所要されない。
２）ＴＳＳＣＳ当たりのレイテンシ当たり多重サンプル
各ティアで各ＶＭの性能に対するエミュレーションの正確度を向上させるには、各ティアの同一の注入されたレイテンシで獲得された結果が平均される。
３）ＴＳＳＣＳ当たり多重サレイテンシ
回帰分析を改善するため、いろいろなレイテンシが注入される。なお、注入されたレイテンシは、現在ストレージプールの使用可能なティアにだけ限定される必要はない。代わりに、回帰正確度を高くするため追加的なレイテンシデータポイントが使用される。
４）ランタイム中の多重ＴＳＳＣＳ
曲線及び回帰関数をアップデートするためＴＳＳＣＳが周期的にトリガーされる。
【００４０】
対応する性能を基盤にし、性能利得対ティア速度間の相関関係は、ディスク速度の増加又は減少に対する各ＶＭの敏感度を反映する線形回帰により決定される。曲線が多項式又は非線形関数に回帰されるが、回帰を変更しても、オートティアリングが動作する方式には影響を与えない。現在、瞬間の各ＶＭに対して注入されたレイテンシ曲線が与えられると、各ティアの各ＶＭに対するＩＯＰＳ、処理量、ストレージ大きさなどが計算される。ＩＯＰＳ、処理量、及びストレージ大きさに重点を置いているが、他のタイプのリソースも考慮される。
【００４１】
表２は、下位セクションで使用された表記法を要約し、表３は３つの他のティアで３つのＶＭを使用する例に対する予想平均Ｉ／Ｏのレイテンシの結果を表す。
【００４２】
（表記）
【表２】
2019021315.tif 000006
【００４３】
マイグレーション無しに平均Ｉ／Ｏレイテンシを予測した例。
【表３】
2019021315.tif 000007
【００４４】
ＴＳＳＣＳ（Ｔｉｅｒ  ｓｐｅｅｄ  ｓｅｎｓｉｔｉｖｉｔｙ  ｃａｌｉｂｒａｔｉｏｎ  ｓｅｓｓｉｏｎ）はストレージシステムの各ＶＭ及び各ティアに対して反復される。それは注入された各レイテンシに対するサンプルからのＩ／Ｏレイテンシの係数変化（即ち、ＣＶ）を計算できる。その次に注入された各レイテンシに対するＩ／Ｏレイテンシの平均値を計算できる。その次、注入された全てのレイテンシのＣＶ値を平均化して、結果によって、オートティアリングは各ＶＭに対する線形回帰を生成するのに、使用されて注入されたレイテンシに対する信頼度を定義し、これによって線形回帰そのものに対する信頼度を定義できる。ＣＶが低いほどこのＶＭに対する信頼度が高くなる。ＣＶが１より大きい場合、信頼度は下限（例えば、０．０５）に設定され、下限はシステムマネージャーの要求事項により調整される。最後に、ＴＳＳＣＳは対応するｍ及びｂの値を計算するため回帰関数を呼び出す。本発明の実施例により、リターンされたタプル（ｔｕｐｌｅ）で、単に２つのパラメーターを有する線形回帰モデルを使用できるが、システムマネージャーは選択された回帰モデルに基づいてリターンされたタプルにより多くの項目を追加できる。
【００４５】
オートティアリングは、ＩＯＰＳ（秒当たりＩ／Ｏ命令）、処理量（秒当たりメガバイト又はＭＢＰＳ）及びストレージ大きさ（バイト）のような三つのタイプのリソースを記録する三つの２次元マトリックスを有する。ストレージシステムの他のタイプのリソースに対する追加マトリックスが願い通り追加される。ＩＯＰＳ及び処理量と異なり、ストレージの大きさに対するマトリックスは、各ＶＭが占めるストレージの大きさを測定するため、ハイパバイザーＡＰＩを呼び出して獲得するのが相対的に簡単である。
【００４６】
オートティアリングは回帰されたＭ及びＢの値を基盤にする線形予測を使用してＩＯＰＳを予測できる。予想平均のＩ／Ｏレイテンシが対応するＩＯＰＳを計算し、他のティアの各ＶＭの処理量が計算されると、ＩＯＰＳ及び処理量は次の方程式を使用して計算できる。
【００４７】
【数７】
2019021315.tif 000008
【数８】
2019021315.tif 000009
【００４８】
互いに異なるタイプのリソースは、互いに異なる単位を有するから、１つの多次元マトリックスにこれらを組み合わせるのは難しくなる。従って、各リソースは各ティアの使用可能な総リソース容量の百分率に変換される。斯かる正規化の例を表５に示す。
【００４９】
三つのＶＭがティア１を実行中の場合の正規化された性能マトリックスの例。
【表５】
2019021315.tif 000010
【００５０】
計算された点数は次の事実を反映しなければならない。
１）ティアとＶＭの特性
各ティアで実行中の場合、各ティアの特性と各ＶＭのワークロード特性を点数に反映しなければならない。従って、各ティアで各ＶＭの点数は個別的に計算される。
２）ＳＬＡ加重値
［数１］に示すように、ＶＭはＳＬＡ加重値が異なるため、同じではない。
３）予測信頼度
性能マトリックスで計算された係数変化は予測の信頼を反映するため使用される。
４）ヒストリー及びマイグレーション費用
コンボリューションエージングファクターは、ヒストリー点数を点数の計算に包含させるのに使用される。なお、マイグレーション費用を算定し、点数の計算に包含させることもできる。
【００５１】
ユーザーコンフィギュレーション又は基本コンフィギュレーションを基盤に、各ティアで提供されるリソースは予め知られている。オートティアリングは特定のティアに対するリソースの任意の個数に対して最適化を遂行できる。専門性を反映するため、ティア専門性マトリックスが使用される。例示的なティア専門性マトリックスを表６に図示する。表６において、専門性コンフィギュレーションに対する全部又は一部の粒状度（ｇｒａｎｕｌａｒｉｔｙ）が使用される。１が有るセルは、現在ティアに該当タイプのリソースに対する専門性が有ることを意味する。セルに１がないと該当タイプのリソースに対して最適化されない。しかしながら、本発明の概念の他の実施例において、このマトリックスの値は必ず０及び１である必要はない。システムマネージャーは専門性を制御するため、より細部的な粒状度（ｇｒａｎｕｌａｒｉｔｙ）を願うと、０及び１の代わりに任意の加重値を設定できる。システムマネージャーはもっと多くのタイプのリソース（即ち、もっと多くの行）を追加し、斯かるマトリックスを拡張できる。
【００５２】
ティア特殊マトリックスの例。
【表６】
2019021315.tif 000011
【００５３】
ティアが基本的に最も費用が高くないティアの順序に整列されていると、この順序がマイグレーション決定を下すうちに、優先順位と見なせる。システムマネージャーは、各ティアの選好度により、この順序を変更できる。
【００５４】
次の疑問は、「各ティアの専門性を反映しつつ各ティアに各ＶＭの性能を反映する方法」である。「性能」という用語は、多くの次元又はタイプのリソース（ＩＯＰＳ、処理量及びストレージ大きさ）を考慮するから、各ティアの専門性を反映するため加重値が適用される。「専門性（ｓｐｅｃｉａｌｔｙ）」マトリックス及びＶＭ容量利用率マトリックスのｐｅｒ−ＶＭ−ｐｅｒ−ｔｉｅｒ掛け算の演算である「直交マッチ（ｏｒｔｈｏｇｏｎａｌ  ｍａｔｃｈ）」が［数９］に示すように使用される。
【００５５】
【数９】
2019021315.tif 000012
【００５６】
なお、オートティアリングはシステムマネージャーが各タイプのリソースに対して互いに異なる加重値を構成できるようにする。
【００５７】
ティア１に対する容量点数を計算する例を表７に示す。一番目の行（「ｃａｐａｃｉｔｙＲａｔｅ」）の（ＩＯＰＳ％、ＭＢＰＳ％、大きさ％）のタプルは、このティアの各リソースタイプに対する予想ＶＭ使用率である。斯かる例において、これらの値は、いずれも１より大きくないので、三つの全てが制限条件テストをパス（ｐａｓｓ）できる。最後に、専門性マトリックスが表６と同一であると仮定する。
【００５８】
三つのＶＭがティア１を実行中の場合、三つのＶＭの容量比率、制約条件、及び容量点数値。
【表７】
2019021315.tif 000013
【００５９】
最終スコアは、［数１０］に示すように、ヒストリースコア、現在スコア及びマイグレーション費用のコンボリューションの和である。つまり、
【数１０】
2019021315.tif 000014
である。
【００６０】
この最終点数には、三つの構成要素がある。
１）ヒストリカルスコア（ｈｉｓｔｏｒｉｃａｌＳｃｏｒｅ）
Ｉ／Ｏスパイキ（ｓｐｉｋｅ）又はバースト（ｂｕｒｓｔ）を包含できる最近のエポックを基盤にした意思決定だけで一部のＶＭがよくマイグレーションされて２つのティア間に伝達するのを防止するため、オートティアリングは事前設定されたａｇｉｎｇＦａｃｔｏｒと共にｈｉｓｔｏｒｉｃａｌＳｃｏｒｅを考慮し、古い点数をフェードアウトさせる。初期には、特定のティアに現在割り当てられないＶＭは、０点を受ける。
２）カーキャップスコア（ｃｕｒｒＣａｐＳｃｏｒｅ）
現在の容量スコアは［数９］と表７を参照して、上述したように計算される。再び、特定のティアに割り当てられないＶＭは全て０点を受ける。
３）マイグレーションコスト（ｍｉｇｒａｔｉｏｎＣｏｓｔ）
オートティアリングは、マイグレーション−アウトとマイグレーション−インの可用処理量が小さい値を選択することにより、マイグレーション速度のボトルネック現象を計算する。オートティアリングは、マイグレーション速度で割ったＶＭ大きさの結果をマイグレーション時間の費用として返還できる。
【００６１】
各ティアに対し点数を計算するため、オートティアリングはＶＭのホスティングを反復し、現在ＶＭが現在ｔのリソースの全てのタイプの上限を超過するかを確認できる。ＶＭがリソース容量の上限を超過すると、該当ＶＭ容量使用率が０に設定され、ティアｔのＶＭｖの点数が−１に設定される。そうではないと、リソース使用がパーセント容量に変換される。総点数は、上記のように計算される。オートティアリングを使用すれば、システムのマネージャーがリソースの多様な加重値を調整することにより加重値と各タイプのリソースを制御できる。
【００６２】
オートティアリングは長期的な観点からマイグレーションを遂行する。即ち、マイグレーション作業は比較的に費用が高いから、オートティアリングは、マイグレーション頻度が比較的少ない。
【００６３】
オートティアリングはマイグレーション作業が必要であるかの可否を確認し、必要な場合、該当するマイグレーションをトリガーできる。オートティアリングは各ティアに対して反復遂行でき、最も望ましくは一番高いティアの順序に反復できる。システムマネージャーは、各ティアの選好度により、斯かる順序を変更できる。オートティアリングはティア点数を降べきの順で整列する。斯かる整列目録に有る各ＶＭに対しオートティアリングは、次のような場合ＶＭをスキップできる。
１）現在反復されたＶＭが今度のタイムに予め割り当てられたか、
２）このティアの容量制限を超過するので、このティアのこのＶＭに対する点数がないか、
３）割り当てるうち、このＶＭｖに対してティアｔに残っているリソース容量が十分ではない。
【００６４】
そうではない場合、オートティアリングは最も少ない点数のＶＭをこのティアに１つずつ割り当てられる。ＶＭが既にターゲットティアに有る場合、この割り当てはＶＭを移動させない。ＶＭが他のティアに割り当てられると、ＶＭにマイグレーションのためのフラッグが指定される。ここには、データ（ＶＭＤＫファイル）を原本ストレージティアからターゲットへコピーする作業が含まれる。
【００６５】
既存のデータセンターはＨＤＤを使用してデータを貯蔵する。ＨＤＤは一般的に互いに多くの面で類似するが、主にギガバイト当たりの費用、リード／ライト速度及び全体の容量が異なる。予測されるように、容量が大きいかリード／ライトの速度が速いＨＤＤは高価である。しかし、このような差異を考慮するとしても、ＨＤＤはギガバイト当り平均費用が０．２５ドルであり、平均リード／ライトの速度は１０ミリ秒である。しかしながら、コンピュータ作業で１０ミリ秒は待機するのに長い時間なので、一般的にアクセス時間を向上させるため一部のデータがローカルでキャッシュされる。
【００６６】
反面、ＳＳＤは多様な専門性を提供できる。一部のＳＳＤは低いリード／ライトのレイテンシを有し、他のＳＳＤは帯域幅が高いか、容量が大きいか、ライト増幅ファクト（Ｗｒｉｔｅ  Ａｍｐｌｉｆｉｃａｔｉｏｎ  Ｆａｃｔｏｒ、ＷＡＦ）が低い可能性がある。本明細書で、「リソース」という用語は個別ストレージがもっと大きく又はもっと小さく提供する専門性を説明するため使用される。また、他のＳＳＤは、斯かるリソースの組み合わせを提供できる。このような追加的な専門性は、斯かるリソースを活用できる応用プログラムに利点を提供できるが、特定の応用プログラムに最も適合したＳＳＤを決定するプロセスを複雑に拗らす。
【００６７】
ＨＤＤと異なり、ＳＳＤは一般的にフォーマットによりギガバイト当り価格が＄０．２８乃至＄４．６８に至るなどより高い。しかし、ＳＳＤは一般的により即刻的に反応できる。つまり、リード／ライトの時間は使用されるＳＳＤフォーマットにより１乃至２ｍｓからマイクロ秒（μｓ）又はさらにナノ秒（ｎｓ）まで多様である。
【００６８】
ＨＤＤを通じてＳＳＤが提供する追加リソースは、ＳＳＤに応用プログラムを最もよく割り当てるための重要な要素であるが、応用プログラムをＳＳＤに割り当てる方法に最も影響を与えるのはアクセス時間である。既存のキャッシングアルゴリズムは、ストレージレイヤー間において性能が相当向上すると仮定する。一般的に、ＨＤＤストレージと比較してローカルキャッシュレイヤーから１０倍の性能向上が期待される。なお、ＳＳＤはＨＤＤよりデータを貯蔵するのにギガバイト当りもっと多くの費用が所要されるので、データをキャッシングすれば費用をかかった上、データが二度貯蔵される。従って、既存のティアリング及びキャッシングアルゴリズムは、ＨＤＤではないストレージデバイスを使用するとき、次善の結果を生成する。
【００６９】
図１は本発明の実施例により、仮想マシンをホスティングしてオートティアリングを遂行するように具備されたストレージプールを使用できるネットワーク化されたマシンを表す。図１にシステム１０５を図示する。システム１０５は仮想マシンサーバー（１１０−１、１１０−２及び１１０−３）を包含する。ここで、図１は三つのサーバーを図示するが、本発明の実施例は任意の数の仮想マシンサーバーを支援できる。
【００７０】
各々の仮想マシンサーバー（１１０−１、１１０−２及び１１０−３）は、プロセッサ（１１５−１、１１５−２、１１５−３）及びメモリー（１２０−１、１２０−２、１２０−３）をそれぞれ包含する。他の用途の中で、プロセッサ（１１５−１、１１５−２及び１１５−３）は、仮想マシンサーバー（１１０−１、１１０−２及び１１０−３）において、実行中の仮想マシンにより使用されるアプリケーションを実行でき、メモリー（１２０−１、１２０−２、１２０−３）に貯蔵する。プロセッサ（１１５−１、１１５−２及び１１５−３）は、任意の種類のプロセッサ、例えばＩｎｔｅｌ  Ｘｅｏｎ、Ｃｅｌｅｒｏｎ、Ｉｔａｎｉｕｍ又はＡｔｏｍプロセッサ、ＡＭＤ  Ｏｐｔｅｒｏｎプロセッサ、ＡＲＭプロセッサなどである。図１はそれぞれの仮想マシンサーバー（１１０−１、１１０−２及び１１０−３）の単一プロセッサを図示するが、仮想マシンサーバー（１１０−１、１１０−２及び１１０−３）は、それぞれ多数のプロセッサを包含でき、単一コア又はマルチコアプロセッサであり、願う組み合せで混合される。メモリー（１２０−１、１２０−２及び１２０−３）の各々は、それぞれフラッシュメモリー、Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＤＲＡＭ）、Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＳＲＡＭ）、Ｐｅｒｓｉｓｔｅｎｔ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＦＲＡＭ（登録商標））、又はＭａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＭＲＡＭ）などの非揮発性ランダムアクセスメモリー（ＮＶＲＡＭ）のような多様なメモリーである。メモリー（１２０−１、１２０−２及び１２０−３）は、それぞれ相異なるメモリータイプの任意の願う組み合わせである。メモリー（１２０−１、１２０−２及び１２０−３）は、仮想マシンサーバー（１１０−１、１１０−２及び１１０−３）の一部であるメモリーコントローラー（図１に図示せず）により制御される。
【００７１】
仮想マシンサーバー（１１０−１、１１０−２、及び１１０−３）は、それぞれローカルストレージデバイスを包含する。例えば仮想マシンサーバー（１１０−１、１１０−２及び１１０−３）は、キャッシュ（１２５−１、１２５−２及び１２５−３）をそれぞれ包含する。キャッシュ（１２５−１、１２５−２及び１２５−３）のようなローカルストレージデバイスは、ハードディスクドライブ（ＨＤＤｓ）又はソリッドステートドライブ（ＳＳＤｓ）のような任意の願う形態を取り、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｓ）、Ｓｅｒｉａｌ  ＡＴ  Ａｔｔａｃｈｍｅｎｔ（ＳＡＴＡ）、Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ（ＮＶＭｅ）、ＮＶＭｅ  ｏｖｅｒ  Ｆａｂｒｉｃ（ＮＶＭｅｏＦ）、Ｍ．２、又はその他願う連結を支援できる。本発明の概念の一部の実施例において、仮想マシンサーバー（１１０−１、１１０−２、及び１１０−３）は、データセンターの貯蔵にだけ依存するキャッシュ（１２５−１、１２５−２、及び１２５−３）を省略できる。キャッシュ（１２５−１、１２５−２、及び１２５−３）を含む本発明の概念の実施例において、本発明の概念の実施例は、２０１７年１１月２９日に出願された米国特許出願第６２／５９２，３５５号を優先権として主張するすべての米国特許出願に開示された発明の概念の実施例と結合される。
【００７２】
システム１０５は、またデータセンターサーバー１３０を包含できる。仮想マシンサーバー（１１０−１、１１０−２、１１０−３）と同様に、データセンターサーバー１３０はプロセッサ１１５−４及びメモリー１２０−４を包含する。また、データセンターサーバー１３０は、ストレージプール（ｓｔｏｒａｇｅ  ｐｏｏｌ）１３５、受信機１４０及び送信機１４５を包含する。ストレージプール１３５はストレージティアで構成されたストレージデバイスのプールである。本発明の概念の一部の実施例において、ストレージプール１３５は、ＳＳＤ又は他のフラッシュメモリーデバイスだけを包含する。本発明の概念の他の実施例において、ストレージプール１３５は他のストレージフォーマットを使用するストレージデバイスを包含できる。受信機１４０は、仮想マシンサーバー（１１０−１、１１０−２、及び１１０−３）から入／出力命令及び他のデータを受信し、送信機１４５は仮想マシンサーバー（１１０−１、１１０−２、及び１１０−３）へデータを伝送する。
【００７３】
仮想マシンサーバー（１１０−１、１１０−２、１１０−３）及びデータセンターサーバー１３０は、ネットワーク１５０を通じて接続されたものとして図示する。ネットワーク１５０を使用して、仮想マシンサーバー（１１０−１、１１０−２、１１０−３）は、データセンターサーバー１３０にＩ／Ｏ命令を伝送し、データセンターサーバー１３０からの応答を受信する。仮想マシンサーバー（１１０−１、１１０−２、１１０−３）及びデータセンターサーバー１３０は全て近距離通信網（ＬＡＮ）の一部であるか、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）又はインターネットのようなグローバルネットワークのような他のネットワークタイプを包含できる。ネットワーク１５０は、任意の願う組み合わせで多数の斯かるネットワークの組み合わせである。
【００７４】
なお、図１はサーバーとして（それぞれ独立型又はラック（ｒａｃｋ）サーバーである）仮想マシンサーバー（１１０−１、１１０−２、及び１１０−３）及びデータセンターサーバー１３０を図示するが、本発明の概念は、願う他のタイプの仮想マシンサーバー（１１０−１、１１０−２、及び１１０−３）及びデータセンターサーバー１３０を制限なしに包含できる。例えば、図１に図示したサーバーは、デスクトップ又はラップトップコンピュータ又は本発明の概念の実施例から利益を得られる任意の他の装置にそれぞれ代替できる。仮想マシンサーバー（１１０−１、１１０−２、１１０−３）及びデータセンターサーバー１３０は、それぞれ特殊化された携帯用コンピューティングデバイス、タブレットコンピュータ、スマートフォン及び他のコンピューティングデバイスを、包含できる。説明の目的において、仮想マシンサーバー（１１０−１、１１０−２、１１０−３）はホスティング仮想マシンとして説明したが、本発明の概念は仮想マシンではないマシンを包含できる。
【００７５】
図２に、図１のサーバー（１１０−１、１１０−２、１１０−３、及び１３０）の追加的な細部事項を図示する。図２において、通常的に、サーバー１１０（図１のサーバー（１１０−１、１０５−２又は１１０−３）の中のいずれか１つ）及びサーバー１３０は、メモリーコントローラー２０５及びクロック２１０よりなる１つ以上のプロセッサ１１５を包含でき、プロセッサ１１５はサーバー（１１０、１３０）の構成要素の動作を操作するため使用される。プロセッサ１１５は例として、ランダムアクセスメモリー（ＲＡＭ）、読取り専用メモリー（ＲＯＭ）又は他の状態保存の媒体を含むメモリー１２０に結合される。サーバー１３０において、プロセッサ１１５は、ストレージプール１３５に結合される（サーバー１１０は、局部的に付着されたストレージを包含できるが、必須ではない）。サーバー（１１０及び１３０）において、プロセッサ１１５は、例えばイーサネット（登録商標）コネクター又は無線コネクターであり得るネットワークコネクター２１５に結合される。プロセッサ１１５はバス２２０に接続され、バス２２０は入力／出力エンジン２３０を使用して管理されるユーザーインターフェース２２５及び入力／出力インターフェースポートに付着される。
【００７６】
図３は、本発明の実施例により、図１のストレージプール１３５とオートティアリングで相互作用する図１の仮想マシンサーバーの付加的な細部事項を図示する。図３において、仮想マシンサーバーは三つの仮想マシン（３０５−１、３０５−２及び３０５−３）をホスティングすると図示しているが、本発明の概念は仮想マシンサーバーによりホスティングされる任意の数の仮想マシンを包含できる。仮想マシン３０５−３は、以下でより詳細に説明するが、本発明の概念の実施例は同様に動作する仮想マシン（３０５−１及び３０５−２）のような他の仮想マシンを包含できる。ハイパーバイザー３２０は仮想マシンサーバー上で動作するオペレーション仮想マシン（３０５−１、３０５−２、及び３０５−３）を管理する。
【００７７】
Ｉ／Ｏフィルター３２５は、アプリケーション３１０からコマンドを受信して実行のためこれらをハイパーバイザー３２０へ伝送することにより、通過フィルターとして動作する。Ｉ／Ｏフィルター３２５は、Ｉ／Ｏフィルタリング用ＶＭｗａｒｅ  ｖＳｐｈｅｒｅ  ＡＰＩのように任意の適切なＩ／Ｏである。しかし、Ｉ／Ｏフィルター３２５は一般的な動作以外に、仮想マシン３０５−３から来る一部のＩ／Ｏコマンドにレイテンシを注入でき、これは他のストレージティアにより支援されるとき、ＶＭ性能を予測する方法に対する情報を提供できる。Ｉ／Ｏフィルター３２５の動作は図７を参照して、さらに説明する。
【００７８】
オートティアリングデーモン３３０はＩ／Ｏフィルター３２５から性能データを受信して、オートティアリングコントローラー３３５へ伝送する。オートティアリングデーモン３３０はハイパーバイザー３２０の一部であるか又は別個の構成要素である。なお、オートティアリングデーモン３３０は、Ｉ／Ｏフィルターからデータを受信して、これをオートティアリングコントローラー３３５へ伝送する単純な通過装置であるが、仮想マシン（３０５−１、３０５−２、及び３０５−３）に関する性能データに対する線形回帰を遂行する動作のように、オートティアリングコントローラー３３５に追って提供されるいくつかの機能を包含できる。本発明の概念の一部の実施例において、オートティアリングデーモン３３０が性能データを収集して伝送するのを許容するよりは、Ｉ／Ｏフィルター３２５とオートティアリングコントローラー３３５が直接通信することにより、オートティアリングデーモン３３０は全体的に省略される。
【００７９】
オートティアリングコントロ−ラー３３５は。オートティアリングデーモン３３０から受信された性能データを受取って、そのデータを使用して仮想マシン３０５−３がそれぞれのストレージティアでどのように遂行するのかを予測し、その後オートティアリングコントロ−ラー３３５が仮想マシン３０５−３に対しデータを他のストレージティアへ適切にマイグレーションできる。オートティアリングコントロ−ラー３３５により管理されるストレージプール１３５は任意の個数のストレージティアを包含できる。図３に三つのストレージティア（３４０−１、３４０−２、及び３４０−３）を図示する。それぞれのティア内には、任意の個数のストレージデバイス３４５が有る。
【００８０】
前述したように、各ストレージティアは該当ストレージティアから提供する特定のリソースを活用する特性化機能を提供できる。例えば、ストレージティア３４０−１は速いリード／ライト時間を提供するが、ストレージティア３４０−３は低いライト増幅ファクターを提供する。ストレージティア（３４０−１、３４０−２、及び３４０−３）が特性を提供するためにはストレージティア内のストレージデバイス３４５が全て特性を提供しなければならない。従って、本発明の概念の一部の実施例において、与えられたストレージティア内のストレージデバイス３４５は１つ以上の専門分野に対して相対的に又は完全に均一に（ｈｏｍｏｇｅｎｅｏｕｓ）する。つまり、ある場合には、与えられたストレージティア内のストレージデバイス３４５は、全てのストレージデバイス３４５が同一のストレージデバイスモデルではなければならない。
【００８１】
本発明の概念の一部の実施例において、オートティアリングコントローラー３３５は、図１のデータセンターサーバー１３０の一部として具現される。本発明の概念の他の実施例において、オートティアリングコントローラー３３５は、仮想マシンとして具現され、仮想マシンサーバー（１１０−１、１１０−２、及び１１０−３）の中の１つで実行される。
【００８２】
図４は、相異なるストレージデバイスにより提供される相異なるリソースを図示する。図４に、リソース４０５を図示する。リソース４０５は１秒のような与えられた時間に遂行されるＩ／Ｏコマンドの個数（一般的に秒当りのＩ／Ｏ動作で記述される、又はＩＯＰＳ）を示す処理量４１０、与えられた時間単位にどのくらいの多くのデータが伝送されうるのかを示す帯域幅４１５（一般的に、秒当りのメガバイト単位で記述される、又はＭＢＰＳ）、貯蔵されるデータの量を反映する容量４２０、及びどのくらいの多くの追加的なデータがガーベージコレクション動作の結果として記録されるのかを示すライト増幅ファクター４２５を包含する。リソース４０５は図１のストレージプール１３５のストレージデバイスにより提供される任意の他の願うリソースを包含するように容易に拡張できる。
【００８３】
図５は、１つのストレージから他のストレージへマイグレーションされる図３の仮想マシンのファイルを表す。図５において、仮想マシンファイル５０５は仮想マシンに対するデータを貯蔵する。仮想マシンファイル５０５は、現在ストレージティア３４０−３上に常駐し、第２仮想マシンのための仮想マシンファイル５１０は、現在ストレージティア３４０−２上に常駐する。矢印５１５により図示したように、仮想マシンファイル５０５は、図３のオートティアリングコントローラー３３５がどのようなマイグレーションが図１のシステム１０５全体に最高の向上をもたらすのかを考慮することにより、ストレージティア（３４０−２又は３４０−１）の中の１つにマイグレーションされる。仮想マシンファイル５１０がストレージティア（３４０−２）上でマイグレーションされないまま、残っていることを図示したように、図３のオートティアリングコントローラー３３５が仮想マシンを、他のストレージティアにマイグレーションしないと決定できる。
【００８４】
変わらぬストレージティアに仮想マシンを割り当てる方法に対する最適のソルーションがあるのがよいが（事実上仮想マシンの集合が変更されない限り）、実際に仮想マシンはワークロードの変化を感じ、時間がたつにつれ要求事項が異なる他のＶＭとリソースに対して競争することもできる。斯かるワークロードの変化及び競争は、特定の仮想マシンに対する最も適合したストレージティアに影響を与える。例えば、任意の時点で、１つの仮想マシンは極めて忙しい可能性があり（ｂｕｓｙ状態）、図１のストレージプール１３５から速い応答時間を要求できる。しかし、他の時点で、同一の仮想マシンが、活動が少なくて高速のストレージティアを必要としないことも有り得る。従って、全ての時間、全ての仮想マシンのための、最も適合した単一のグローバル最適化は存在できない。
【００８５】
従って、単一のグローバル最適化を求める代わりに、一定期間作動する最適化を求めることがもっとよいかもしれない。その後に、他の最適化が望ましくなる。例えば、図６（ａ）及び図６（ｂ）は相異なる時点でのストレージティアに対する仮想マシンの最適の割り当てを図示する。例えば、図６（ａ）に図示したように、時間Ｔ０において、仮想マシンファイル５０５は、ストレージティア３４０−３に最適であり、仮想マシンファイル５１０は、ストレージティア３４０−１に最適である。対照的に、図６（ｂ）に図示したように、時間Ｔ１において、仮想マシンファイル（５０５及び５１０）は全てストレージティア３４０−１に最適である。
【００８６】
図７に、図３の仮想マシンに対するレイテンシ注入及び性能データの決定を遂行する図３のＩ／Ｏフィルター３２５を図示する。図７において、Ｉ／Ｏフィルター３２５は図３の仮想マシン３０５−３のアプリケーション３１０からＩ／Ｏコマンド７０５を受信できる。Ｉ／Ｏフィルター３２５は、Ｉ／Ｏコマンド７０５にレイテンシ７１０を注入できる。注入されたレイテンシは、仮想マシンに対して相異なる平均Ｉ／Ｏレイテンシを生成する低性能ストレージティアをシミュレーションする。
【００８７】
注入されたレイテンシ７１０を使用することにより、Ｉ／Ｏフィルター３２５はＩ／Ｏコマンド７０５をデータセンターサーバー１３０へ伝達する。データセンターサーバー１３０はＩ／Ｏコマンド７０５を処理して応答７１５を返還する。Ｉ／Ｏフィルター３２５は応答７１５をアプリケーション３１０に返還して、注入されたレイテンシ７１０を使用して図３の仮想マシン３０５−３の平均Ｉ／Ｏレイテンシを測定し、性能データ７２０を生成する。図３のオートティアリングコントローラー３３５は性能データ７２０を使用して、仮想マシンを他のストレージティアにマイグレーションする利点があるかの可否を決定する（もっと速いか、もっと遅いか、仮想マシンをもっと遅いストレージティアにマイグレーションすると、性能の補償及び改善を有するまた他の仮想マシンのための余裕ある空間を確保できるので）。
【００８８】
一方、図７は性能データ７２０を生成するため注入されたレイテンシ７１０を使用するＩ／Ｏフィルター３２５を図示し、注入されたレイテンシ７１０は自体オーバーヘッドを有する。注入されたレイテンシ７１０は性能データ７２０が生成されると軽量接近法で代替される。例えば、Ｉ／Ｏフィルター３２５は仮想マシンごとにまだ処理されないＩ／Ｏコマンドの個数を追跡でき、その情報を使用してまだ処理されないＩ／Ｏコマンドの個数が高くなり続けるのか又は増加し続けると、他のストレージティアに仮想マシンをマイグレーションすることを提案する。
【００８９】
図８は、図３のオートティアリングコントローラー３３５の細部事項を図示する。図８において、オートティアリングコントローラー３３５は、線形回帰モジュール８０５、リソースマトリックス生成器８１０、メトリックコンバーター（ｍｅｔｒｉｃ  ｃｏｎｖｅｒｔｅｒ）８１５、専門性情報８２０、ティア選択モジュール８２５、及びマイグレーションモジュール８３０を包含する。線形回帰モジュール８０５は、図７の性能データ７２０を受取って、データに線形回帰を遂行して与えられたストレージティアのレイテンシに対する仮想マシンの平均Ｉ／Ｏレイテンシを予測する線形方程式を生成する。図１０を参照して後述するように、与えられた、注入されたレイテンシに対して、与えられた仮想マシンの平均Ｉ／Ｏレイテンシが決定され、斯かるデータポイントはグラフに描かれる。本発明の概念の一部の実施例において、これらのデータポイントは大略的に線形であり、線形回帰を遂行することによって、与えられた注入されたレイテンシに対する平均Ｉ／Ｏレイテンシを近似化する方程式を生成できる。そうしてから、各ストレージティアのレイテンシを把握すれば、各ストレージティアに対し特定の仮想マシンの平均Ｉ／Ｏレイテンシを予測できる。
【００９０】
リソースマトリックス生成器８１０は、それぞれの仮想マシンを各ストレージティア及び各ストレージティアにより提供されるリソースと相関（ｃｏｒｒｅｌａｔｅ）させるため、線形回帰から生成される予測値を受取る。例えば、処理量は仮想マシンの平均Ｉ／Ｏ大きさと仮想マシンの平均Ｉ／Ｏレイテンシから計算され、帯域幅はＶＭからのＩ／Ｏ命令に対する平均Ｉ／Ｏ大きさ及びＶＭにより発行されたＩＯＰＳから計算される。リソースマトリックス生成器８１０はメトリックコンバーター８１５を使用して処理量のような１つのメトリックに対する性能データを帯域幅のような他のメトリックに対する性能データに変換できる。
【００９１】
専門性情報８２０は各ストレージティアにより提供されるリソースを示す。専門性情報は図１１を参照して、以下でさらに論議する。
【００９２】
ティア選択モジュール８２５は、リソースマトリックス生成器８１０により生成されたリソースマトリックス及び専門性情報８２０を受取り、仮想マシンのためのストレージティアを選択できる。そうしてから、仮想マシンが１つのストレージティアから他のストレージティアへマイグレーションされる場合、マイグレーションモジュール８３０は該当マイグレーションを遂行する。
【００９３】
図９は、図７の性能データ７２０を仮想マシン、ストレージティア、及びストレージティアのリソースに相関させるマトリックスへの変換を図示する。図９において、性能データ７２０は与えられたストレージティアを使用するとき、それぞれの仮想マシンに対する平均Ｉ／Ｏレイテンシを表すマトリックスとして示される。従って、例えば仮想マシン１の平均レイテンシはストレージティア１を使用する場合８００μｓ、ストレージティア２を使用する場合５００μｓであり、ストレージティア３を使用する場合３００μｓであり、類似した情報を提供する仮想マシン２及び３の性能データと共に予測される。図８に図示したのは、単純な例だけであり、実際の性能は、特定の仮想マシンにより実行されるアプリケーションとストレージデータにアクセスする他の仮想マシンからの影響に大きく左右されるので、ストレージティアの全ての仮想マシンの実際の性能値を必ず反映はしない。
【００９４】
性能データ７２０の一部の値は、予測値ではなくて実際値である。特に、それぞれの仮想マシンは自身のデータを図１のストレージプール１３５の一部のストレージティアに貯蔵する。従って、仮想マシンに対するデータを実際に貯蔵するストレージティアの場合、性能データ７２０の平均Ｉ／Ｏレイテンシは予測値ではない該当ストレージティアの仮想マシンに対する実際の平均Ｉ／Ｏレイテンシを表す。
【００９５】
各ストレージティアの各仮想マシンに対する予想平均レイテンシが与えられると、仮想マシン、ストレージティア、及びリソースを相互関連させる多次元マトリックスが生成される。斯かる多次元マトリックスを、図９のリソースマトリックス９０５として図示する。多次元マトリックスは紙の上に表し難いから、図９はリソースマトリックス９０５を個別的なティアに対するデータを貯蔵するそれぞれの２次元マトリックスを有するいくつかの別個の２次元マトリックス（９１０、９１５、及び９２０）として図示するが、これは単に視覚化の目的のためのものである。
【００９６】
ストレージティア１に対する２次元マトリックス９１０において、性能データ７２０からの平均Ｉ／Ｏレイテンシは次の公式
（１０６／ＡｖｅｒａｇｅＩＯＬａｔｅｎｃｙ＊ｍａｘＩＯＰＳ［ｔ］）
を使用して処理量に変換される。つまり、１０６（１，０００，０００）を該当ストレージティアを使用する仮想マシンの平均Ｉ／Ｏレイテンシと、該当ストレージティアから支援できる最大ＩＯＰＳ（この値は、システムマネージャーがストレージティアで提供する実際の最大値より小さい値に設定できる（例：実際最大値の９０％））の積で割ることにより変換される。レイテンシは、一般的にマイクロ秒（１マイクロ秒＝１／１，０００，０００秒）で表現されるから、値１０６が使用される。従って、１２μｓのレイテンシが０．００００１２秒に変換されないと、平均Ｉ／Ｏレイテンシの正確な測定は、方程式から発生する単位の変化を反映しなければならない。処理量は処理量に仮想マシンから発生したＩ／Ｏ命令の平均ライトの大きさを掛けて帯域幅に変換される。容量は仮想マシンファイルのストレージ大きさをストレージティアにより提供される最大ストレージで割った値から計算できる（なお、システムマネージャーはこの値を実際の最大値より小さい値に設定することもできる）。性能データ７２０からリソースマトリックス９０５に貯蔵された値へのこのような変換は図８のメトリックコンバーター８１５を使用して計算される。
【００９７】
図１０は、図７の性能データ７２０の線形回帰を図示する。図１０に、２つの相異なる仮想マシンに対する性能データを図示した。１つの仮想マシンの場合、グラフのデータポイントは線形回帰１００５により近似される。他の仮想マシンの場合、グラフ上のデータポイントは線形回帰１０１０により近似化される。図１０は単に２つの仮想マシンに対するデータポイントを図示するが、本発明の実施例は線形回帰が計算される任意の数の仮想マシンを支援できる。
【００９８】
各データポイントは、注入された特定のレイテンシを仮想マシンの平均Ｉ／Ｏレイテンシと相互連関させる。例えば、注入されたレイテンシがない場合、一番目の仮想マシンはティア２が３，０００μｓである反面、二番目の仮想マシンは平均Ｉ／Ｏレイテンシが約７００μｓである。
【００９９】
注入されたレイテンシは、特に仮想マシンがもっと低いストレージティア（即ち、低いレベルの性能を有するストレージティア）を使用して適切に作動するかの可否を決定するとき有用である。つまり、注入されたレイテンシは、現在ストレージティアとターゲットストレージティア間の差異である。しかし、注入されたレイテンシを使用すればもっと速いストレージティアをエミュレートできる。結局、ネガティブレイテンシを注入できなくて、実際にストレージティアが実際に応答できるより速く応答しないことも有り得る。斯かるソリューションは線形回帰分析１０１０と同一である。仮想マシンが遅いストレージティアにどのように反応するのかに対する情報を使用すると、線形回帰モデルを使用してもっと速いストレージティアの性能を予測できる。技術的に、提供されたデータの範囲を逸脱する値を予測するのはデータの範囲の内部の値を予測する「補間法（ｉｎｔｅｒｐｏｌａｔｉｏｎ）」と比較して「外挿法（ｅｘｔｒａｐｏｌａｔｉｏｎ）」という。しかし、線形回帰１０１０のような線形回帰を使用する場合、計算は補間法と外挿法に対し同一である。従って、線形回帰１０１０を使用すると、もっと速いストレージティアを使用するとき、仮想マシンがどのように反応するのか予測できる。
【０１００】
ストレージティア間のレイテンシの実際的な差異に対応するデータポイントだけを使用できるが、より多くのデータポイントが使用可能である程、線形回帰モジュール８０５により提供される予測値がさらに良好になる。従って、多様な相異なるレイテンシが図３のＩ／Ｏフィルター３２５を使用して注入されることにより、願う程度の多くのデータポイントを提供できる。
【０１０１】
勿論、注入されたレイテンシを使用して、仮想マシンの全てのＩ／Ｏ命令が遅くなると、仮想マシンが割り当てられたストレージティアの利点を受けられない。従って、注入されたレイテンシは仮想マシンから発行したＩ／Ｏ命令の下位集合にだけ使用される。注入されたレイテンシに対して選択されるＩ／Ｏ命令がランダムに選択されると、図７の性能データ７２０が意味ある線形回帰（１００５及び１０１０）を提供しなければならない。データポイントに対する変動係数（及び信頼度）を決定するため、既知の統計技法が使用される。データポイントの信頼度が十分に高いと、線形回帰（１００５及び１０１０）は正確な予測値として信頼される。願う信頼レベルが指定される（例：９０％又は９５％）。注入されたレイテンシに対してＩ／Ｏコマンドが選択される方法は、図１３を参照して以下でさらに説明する。
【０１０２】
線形回帰（１００５及び１０１０）は異なるデータセットを表す。つまり、線形回帰１００５は相当に急な傾きを含む反面、線形回帰１０１０は相当に緩慢な傾きを含む。全ての仮想マシンがＩ／Ｏ命令のレイテンシの変化に同一の方式で応答するのではない。一部の仮想マシンは他のものより敏感である。例えば、線形回帰１００５をもたらすデータポイントを生成した仮想マシンは、同期化アプリケーションを実行でき、レイテンシの小さな変化はアプリケーションの性能に重要な影響を与える。一方、線形回帰１０１０をもたらすデータポイントを生成した仮想マシンはレイテンシの変化がより小さな影響を与える非同期アプリケーションを実行できる。又は、線形回帰１００５は高い処理量を要求する仮想マシンに対するものであるが、線形回帰１０１０はより低い処理量を要求する仮想マシンに対するものである。類似した方式で、仮想マシンの敏感度が線形回帰に影響する。より敏感な仮想マシンは、より急な傾斜を有し、より敏感でない仮想マシンは、より緩慢な傾斜を有する。敏感度と類似した概念は、仮想マシンが密接に結合されているかの可否である（「密接に結合」とは、同期式及び非同期式のアプリケーションの比較と類似に仮想マシンがストレージティアの応答時間にどのくらい敏感であるのか従属的であるのかを意味する）。仮想マシンがより密接に結合されるほど線形回帰の傾きがさらに急になる。一般的に、線形回帰１００５のように急な傾きを有する線形回帰は、より速いストレージティアで、より優秀な性能を示す仮想マシンを表すが、線形回帰１０１０のように緩慢な傾きを有する線形回帰は、遅いストレージティアにおいて適切に遂行する仮想マシンを表す。
【０１０３】
図１１は、図３のストレージティア（３４０−１、３４０−２、３４０−３）に対する図８の専門性情報８２０を図示する。図１１において、専門性情報８２０はマトリックスとして図示する。各ストレージティアと各リソースの共通点は、該当ストレージティアが該当リソースを提供するかの可否（又は、その程度）を反映する値を指定できることである。本発明の概念の一部の実施例において、図１１に図示したように、専門性情報８２０は二進情報（０  ｖｓ  １、はい  ｖｓ  いいえ又は任意の他の値のペア）を使用できるが、ここで１つの値はストレージティアが該当リソースの提供を示し、他の値はストレージティアが該当リソースを提供しないことを示す。従って、例えば専門性情報８２０はストレージティア１が高い処理量及び高い帯域幅を提供し、ストレージティア２が高い帯域幅を提供し、ストレージティア３が大きな容量を提供することを示す。
【０１０４】
本発明の概念の他の実施例において、専門性情報８２０内の値は、二進選択に制限される必要はない。例えば、値の範囲は０から１までであり、０はストレージティアから該当リソースを提供しないことを示し、１はストレージティアから該当リソースを完全に提供することを示し、中間にある値は部分支援を表す。従って、０．７５の値はストレージティアがリソースをある程度までは提供するが、「最上」のストレージティアほどではないということを表す。反面、０．２５の値はストレージティアから該当リソースを提供するが、「最悪」のストレージティア（「最上」及び「最悪」は相対的な用語である）より少しよい程度を表す。
【０１０５】
図１２は、図３の仮想マシン（３０５−１，３０５−２及び３０５−３）を図３の他のストレージティアにマイグレーションさせるのに使用されるスコアマトリックスの計算を図示する。専門性情報８２０にリソースマトリックス９０５を掛けることにより、各ティアが各仮想マシンをどのくらいよく支援するのかを反映するスコアマトリックス１２０５が生成される。例えば、仮想マシン１に値が提供される。この値はストレージティア１が５５％一致、ストレージティア２が２５％一致、ストレージティア３が３０％一致を表す（各値は特定のストレージティアに特定の仮想マシンの貯蔵量を表示するものではなく、各ストレージティアが仮想マシンをどのくらいよく支援するのかを表すから１００％にならない。）。他の仮想マシンに対するエントリーは、同様に解釈される。
【０１０６】
スコアマトリックス１２０５が生成されると、図８のティア選択８２５は各仮想マシンに適合したティアを選択できる。斯かる選択はティア及び仮想マシンの各組合せに対して下記の値を計算することによって遂行される。
ＦｉｎａｌＳｃｏｒｅ＝ＡｇｉｎｇＦａｃｔｏｒｘＨｕｓｔｏｒｉｃａｌＦｉｎａｌＳｃｏｒｅ＋ＣｕｒｒＰｅｒｆＧａｉｎ−ＣｕｒｒＰｅｒｆＰｅｎａｌｔｙ
【０１０７】
ＡｇｉｎｇＦａｃｔｏｒは仮想マシンとストレージティアの組み合わせに対してより古くなった最終の点数を保存するのに使用される要素である（以前ティア選択が結果に偏向されすぎることを防止するため）。ＣｕｒｒＰｅｒｆＧａｉｎは仮想マシンとティアの組み合わせのため、図１２のスコアマトリックス１２０５から抽出された値である。ＣｕｒｒＰｅｒｆＰｅｎａｌｔｙは１つのストレージティアから他のストレージティアへデータをマイグレーションする費用を示す。
【０１０８】
仮想マシンは図１のストレージプール１３５を含むサーバーと他のサーバー上に常駐できるから、ＣｕｒｒＰｅｒｆＰｅｎａｌｔｙはデータ自体の移動費用だけ反映するので、仮想マシンの作動に影響を与える要因が必要ではない。言葉を変えれば、仮想マシンは図１の仮想マシン１１０−１上にあるから、データのマイグレーションを遂行するため仮想マシンをホスティングするサーバー上の処理能力が必要ではない。全ての処理は図１のデータセンターサーバー１３０で遂行される。ＣｕｒｒＰｅｒｆＰｅｎａｌｔｙはマイグレーションしなければならない仮想マシンファイルの大きさを原本ストレージティアのリード処理速度とターゲットストレージティアのライト処理速度の中の小さい値で割ることによって計算される。即ち、原本ストレージティアでデータをリードするために必要な時間とターゲットストレージティアにデータをライトするために必要な時間を比較して、より大きな値がマイグレーションを遂行するのに必要な時間に選択される。なぜならば、より遅いのは（原本ストレージティアのリード又はターゲットストレージティアのライト）データマイグレーションのボトルネック現象を惹起するからである。
【０１０９】
仮想マシン及びストレージティアの各組み合せに対する最終点数が与えられると、ティア選択モジュール８２５は、図１のシステム１０５の性能の最も大きい向上をもたらす仮想マシンのストレージティアへの割り当てを識別することにより、全てのシステムの性能を全体的に最適化するように各仮想マシンに対するストレージティアを容易に選択できる。この際、（それほど強力でないストレージティアにマイグレーションされる仮想マシンによる）性能向上と性能減少及びマイグレーション費用が全て考慮されなければならない。
【０１１０】
前に暗示したように、全ての時間内に単一のグローバル最適化を遂行すると各仮想マシンのワークロードが変化せずに仮想マシンの集合自体が変更されないと仮定する（新たな仮想マシンが追加されずに既存の仮想マシンが除去されずに）。実際に、斯かる条件は非現実的である。従って、図１のシステム１０５は一度だけ最適化され、時間が経つにつれストレージティアに対する仮想マシンの割り当てが、これ以上最適ではないことも有り得る。斯かる問題に対する解決策は最適化を一度だけ遂行するよりは一定の間隔で遂行することである。しかし、持続的に最適化を遂行するのは効率的ではない可能性がある。例えば、仮想マシンＩ／Ｏ命令は持続的に注入されたレイテンシを経なければならない。これは、仮想マシンが該当ストレージティアの全ての利点が受けられないことを意味する。よって、連続的な最適化を遂行する代わりに、最適化は周期的に遂行される。このため、マイグレーションエポックとモニタリングエポックの概念が導入される。
【０１１１】
モニタリングエポックは、仮想マシンが他のストレージティアで現在遂行できる方法を決定するため、図３のＩ／Ｏフィルター３２５が一部のＩ／Ｏ命令にレイテンシを注入する時間のポイントを表す。エポックのモニタリングが始まるとき、図３のＩ／Ｏフィルター３２５は選択された数のＩ／Ｏにレイテンシを注入できる。斯かるＩ／Ｏコマンドの数は固定された数として、予め決定されるか、以前モニタリングエポックのうち発行されたＩ／Ｏコマンドの数のパーセンテージ（例えば、１％）に設定されるか、また２つの全部（例えば、２つの値の中でもっと大きい値）であり得る。本発明の実施例が不規則的なモニタリングエポックを支援するとしても、モニタリングエポックは１５分ごと、毎時間又は毎日のように規則的な間隔で発生できる。モニアリングエポックが始まる時、仮想マシンの実際のワークロードを予測する簡単な方法はない。従って、図３のＩ／Ｏフィルター３２５をトリガリングしてモニタリングエポックのスタートステップにおいて、Ｉ／Ｏ命令にレイテンシを注入するのは、任意のＩ／Ｏ命令セットを選択し、図７の意味ある性能データ７２０を提供するはずである。図７の性能データ７２０が与えられたモニタリングエポックから仮想マシンに対して一度生成されてからは、図３のオートティアリングデーモン３３０は、図７の性能データ７２０を図３のオートティアリングコントローラー３３５へ伝送する。代案的に、図３のオートティアリングデーモン３３０は、マイグレーションエポックが始まる時まで待機し、図７の性能データ７２０を、その時伝送する。
【０１１２】
マイグレーションエポック（Ｍｉｇｒａｔｉｏｎ  Ｅｐｏｃｈ）は、図３のオートティアリングコントローラー３３５が仮想マシンを１つのストレージティアから他のストレージティアへマイグレーションしなければならないかの可否を決定する時間のポイントを表す。モニタリングエポックと同様に、マイグレーションエポックは毎日又は毎週のように定期的又は不規則な間隔で発生するように設定される。モニタリングエポックが発生するとき、図３のオートティアリングコントローラー３３５は図７の性能データ７２０を分析し、図９のリソースマトリックス９０５を生成し、最終点数を計算し、各仮想マシンに対するストレージティアを選択し、及び必要な場合、仮想マシンデータをマイグレーションする。
【０１１３】
図１３は、モニタリングエポックとマイグレーションエポック間の関係を示す。図１３に、マイグレーションエポック１３０５及びモニタリングエポック１３１０を図示する。図１３に図示したように、本発明の実施例において、マイグレーションエポック１３０５は、モニタリングエポック１３１０と同一であるか又はもっと短い可能性があるが、マイグレーションエポック１３０５は、モニタリングエポック１３１０より典型的にもっと長い。なお、マイグレーションエポック１３０５とモニタリングエポック１３１０は整列されるが、整列される必要はない。
【０１１４】
図１４は、一実施例により、図７の性能データ７２０を生成するため、図７の入力／出力（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）命令７０５にレイテンシを注入するための図３のＩ／Ｏフィルター３２５に対する例示的な手順の流れ図を図示する。図１４のＳ１４０５で、図３のＩ／Ｏフィルター３２５は、図１３の新しいモニタリングエポック１３１０が始まったか決定する。新しいモニタリングエポック１３１０が始まっていない場合、図３のＩ／Ｏフィルター３２５は待機する。新しいモニタリングエポック１３１０が始まっている場合、図３のＩ／Ｏフィルター３２５は、Ｓ１４１０で図３のアプリケーション３１０から図７のいくつかのＩ／Ｏ命令を受信する。このような方式で、図３のＩ／Ｏフィルター３２５にどのくらい多くの命令が処理のため選択されるかはシステム構成によって異なる。Ｓ１４１５で、図３のＩ／Ｏフィルター３２５は、図７のＩ／Ｏコマンドに図７のレイテンシを注入する。Ｓ１４２０で、図３のＩ／Ｏフィルター３２５は、図１のデータセンターサーバー１３０へ命令を伝送する。Ｓ１４２５で、図３のＩ／Ｏフィルター３２５は、図１のデータセンターサーバー１３０から図７の応答７１５を受信する。Ｓ１４２８で、図３のＩ／Ｏフィルター３２５は、図７の応答７１５を図３のアプリケーション３１０へ伝達する。最終的に、Ｓ１４３０で、図３のＩ／Ｏフィルター３２５は、仮想マシンに対する平均Ｉ／Ｏレイテンシを使用して図７の性能データ７２０を計算する。
【０１１５】
図１５（ａ）、（ｂ）は一実施例により、ストレージティアを通じた仮想マシンのマイグレーションを管理するための図３のオートティアリングコントローラー３３５に対する例示的な手順の流れ図を図示する。図１５（ａ）のＳ１５０５で、図３のオートティアリングコントローラー３３５は、図１３の新しいモニタリングエポック１３１０が始まったか決定する。新しいモニタリングエポック１３１０が始まっていない場合、図３のオートティアリングコントローラー３３５は、待機する。新しいモニタリングエポック１３１０が始まっている場合、Ｓ１５１０で、図３のオートティアリングコントローラー３３５は、図３のオートティアリングデーモン３３０から図７の性能データ７２０を受信できる。Ｓ１５１５で、図３のオートティアリングコントローラー３３５は、図１３の新しいマイグレーションエポック１３０５が始まったか決定する。新しいマイグレーションエポック１３０５が始まっていない場合、図３のオートティアリングコントローラー３３５は、待機する。
【０１１６】
新しいマイグレーションエポック１３０５が始まっている場合、Ｓ１５２０で、図８のリソースマトリックス生成器８１０は、図９のリソースマトリックスを生成する（他の構成要素の中で、図８の線形回帰モジュール８０５及び図８のメトリックコンバーター８１５を使用する）。Ｓ１５２５で、ティア選択モジュール８２５は、リソースマトリックス９０５を使用してストレージティアに仮想マシンが割り当てる。Ｓ１５３０で、図３のオートティアリングコントローラー３３５は、１つのストレージティアから他のストレージティアへ仮想マシンがマイグレーションされるかを確認する。仮想マシンがマイグレーションされる場合、Ｓ１５３５で、マイグレーションモジュール８３０は、図５の仮想マシンファイル５０５を１つのストレージティアから他のストレージティアへマイグレーションする。
【０１１７】
図１６は、一実施例により図９のリソースマトリックス９０５を生成するための、図３のオートティアリングコントローラー３３５に対する例示的な手順の流れ図を図示する。図１６を参照すると、Ｓ１６０５で、図８の線形回帰モジュール８０５は、図７の性能データ７２０に対する線形回帰を遂行して各ストレージティアから仮想マシンの性能を評価する数式を生成する。Ｓ１６１０で、図３のオートティアリングコントローラー３３５は、図１０の線形回帰（１００５及び１０１０）を使用して、各仮想マシンが各ストレージティアでどのくらいよく遂行されるか（即ち、各ストレージティア上の仮想マシンの性能）を予測する。Ｓ１６１５で、リソースマトリックス生成器８１０は、それぞれのリソースにより各ストレージティアから仮想マシンに対する性能メトリックを生成する。Ｓ１６２０に図示したように、これはメトリックコンバーター８１５を使用して処理量のような１つのメトリックを帯域幅のような他のメトリックに変換するのを包含する。点線１６２５で図示したように、ブロック１６２０は省略できる。
【０１１８】
前述した議論から分かるように、本発明の概念の実施例は、従来のティアリング及びキャッシングソルーションに比して重要な利点を提供する。
一番目、本発明の概念の実施例はストレージティアの多重リソースを考慮して支援する。なお、リソースの数が変わることができるから、リソースの数は１に設定され、従来のＨＤＤストレージプールと共に使用されるための逆互換性を提供する。
二番目、本発明の実施例は、従来のティアリング及びキャッシングソルーションが無視するフラッシュ貯蔵システムのより速い性能を説明する。
三番目、本発明の実施例はグローバル最適化を求め、既存の仮想マシンの集合及びワークロードスパイキ（ｗｏｒｋｌｏａｄ  ｓｐｉｋｅ）のような仮想マシンのワークロードでの変化が発生するにつれ、グローバル最適化の調整を支援できる。これは、一般的にシステムの全体を最適化するのではなく、個別仮想マシンに対するローカルソルーションを求める既存のソルーションに比して有利である。
【０１１９】
図１４乃至図１６を参照すれば、本発明の概念の一部の実施例が示される。しかしながら、当業者は、ステップの順序を変更するか、ステップを省略するか、又は図面に示さないリンクを含むことにより、本発明の概念の他の実施例も可能であることを認識するはずである。フローチャートのこのような全ての変形は、明示的に記述されるか否かにかかわらず、本発明の概念の実施例であるものと見なされる。
【０１２０】
次の説明は、本発明の概念の特定の実施例が具現されるのに適したマシン又は装置に対する簡略で且つ一般的な説明を提供するためのものである。マシン（Ｍａｃｈｉｎｅ）又は複数のマシンは、キーボード、マウスなどのような従来の入力デバイスだけでなく、他のマシンから受信された指示、仮想現実（ＶＲ）環境との相互作用、生体認識（ｂｉｏｍｅｔｒｉｃ）フィードバック、又は他の入力信号のような各入力によって少なくとも部分的に制御される。本明細に使用した、「マシン」という用語は、単一のマシン、仮想マシン、又は通信的に結合された各マシンのシステム、仮想マシン、又は共に動作するデバイスを広範囲に含むものと意図する。例示的なマシンは、パーソナルコンピュータ、ワークステーション、サーバー、携帯用コンピュータ、ハンドヘルド（ｈａｎｄｈｅｌｄ）デバイス、電話、タブレットなどのコンピューティングデバイスだけでなく、自動車、汽車、タクシなどのような私設、又は公共交通のような運送デバイスを含む。
【０１２１】
マシン又は複数のマシンは、プログラム可能又は非プログラミング可能ロジックデバイス又はアレイ、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｍｏｄｕｌｅｓ）、エンベデッドコンピュータ（ｅｍｂｅｄｄｅｄ  ｃｏｍｐｕｔｅｒ）、スマートカードなどの内蔵型コントローラーを含む。マシン又は複数のマシンは、ネットワークインターフェース、モデム又は他の通信カップリングのような一つ以上の遠隔マシンに対する一つ以上の連結を活用する。マシンは、イントラネット、インターネット、ローカル領域ネットワーク、広域ネットワークなどの物理的及び／又は論理的ネットワークにより相互接続される。当業者は、ネットワーク通信は、周波数（ＲＦ）、衛星、マイクロウェーブ、ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）  ８０２．１１，  Ｂｌｕｅｔｏｏｔｈ（登録商標）、光学、赤外線、ケーブル、レーザーなどを含む多様な有線及び／又は無線の近距離通信網や長距離通信事業者及びプロトコールを活用できることを理解できるはずである。
【０１２２】
本発明の概念の実施例は、マシンによってアクセスされる時、マシンがタスクを遂行するか、抽象データタイプを定義するか、ローレベルハードウェアコンテキストを定義するような機能、手順、データの構造、アプリケーションプログラムなどを含む関連データを参照して、且つ関連して説明される。関連データは、例えば、ＲＡＭ、ＲＯＭなどのような揮発性及び／又は非揮発性メモリ、又はハードドライブ、フロッピーディスク、光学ディスク、フラッシュメモリ、メモリスティック、デジタルビデオディスク、生物学的ストレージなどを含む他のストレージ及びこれらと連関された貯蔵媒体に貯蔵される。関連データは、物理的及び／又は論理的ネットワークを含む伝送環境を通じて、パケットは、シリアルデータ、並列データ、伝播される信号などの形態で伝達され、圧縮又は暗号化されたフォーマットとして使用される。関連データは、分散環境にて使用され、マシンアクセスのためにローカル及び／又は遠隔で貯蔵される。
【０１２３】
本発明の概念の実施例は、一つ以上のプロセッサーにより実行可能な命令を含む非一時的な機械の判読可能媒体を含み、前記命令は、本明細書に説明したような発明概念の要素を遂行するための命令を含む。
【０１２４】
前述した方法の多様な動作は、多様なハードウェア及び／又はソフトウェアコンポーネント、モジュール及び／又は複数のモジュールのような動作を遂行し得る任意の適切な手段によって遂行される。ソフトウェアは、論理的機能を具現するための実行可能命令の順序化された目録を含み、シングル又はマルチ‐コアプロセッサー又はプロセッサーを含むシステムのような命令実行システム、装置、又はデバイスによって又はそれと関連した任意の「プロセッサー‐判読可能媒体」から具現される。
【０１２５】
本明細書に開示した実施例と関連して説明した方法又はアルゴリズム及び機能のブロック又は段階は、ハードウェア、プロセッサーによって実行されるソフトウェアモジュール、又はこれらの組み合わせで直接具現される。ソフトウェアで具現される場合、機能は非一時的コンピュータ判読可能媒体上に一つ以上の命令又はコードとして貯蔵されるか、伝送される。ソフトウェアモジュールは、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、フラッシュメモリ、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、レジスタ、ハードディスク、移動式ディスク、ＣＤ  ＲＯＭ、又は当業界に公知の任意の他の形態の貯蔵媒体に常駐する。
【０１２６】
説明した実施例を参照して、本発明の概念の原理を説明し例示したが、説明した実施例は、このような原理を逸脱せずに配列及び細部事項を修正でき、任意の好ましい方式で組み合わされ得るのがわかるはずである。なお、前述した説明は、特定の実施例に焦点を合わせたが、他の構成も考慮される。特に、「発明の概念の実施例による」などのような表現を、本明細書において使用する場合、このような文言は、一般的に実施例の可能性を参照することを意図し、本発明の概念を特定の実施例の構成として制限しようとするものではない。本明細書に使用したように、これらの用語は、他の実施例と組み合わせ可能な同一の又は異なる実施例を示す。
【０１２７】
前述した例示的な実施例は、本発明の概念を制限するものとして解釈してはならない。一部の実施例を説明したが、当業者は、本開示の新規な教示及び利点から実質的に逸脱せずに、これらの実施例に多くの修正が可能であることを容易に理解できるはずである。従って、このような全ての修正は、請求項に定義する本発明の概念の範囲内に含まれる。
【０１２８】
本発明の概念の実施例は、次の説明として制限なく拡張できる。
【０１２９】
ステイトメント（Ｓｔａｔｅｍｅｎｔ）１．
本発明の概念の実施例は、
複数のリソースを提供する複数のストレージデバイスと、
前記複数のストレージデバイスは、複数のストレージティア（ＴＩＥＲ）で構成され、第１仮想マシンに対する第１データ及び第２仮想マシンに対する第２データを貯蔵し、
前記第１仮想マシンからの第１入出力（Ｉ／Ｏ）コマンド、前記第２仮想マシンからの第２入出力コマンド、前記複数のストレージティアで前記第１仮想マシンの性能をモデリングする第１性能データ、及び前記複数のストレージティアで第第２仮想マシンの性能をモデリングする第２性能データを受信する受信機と、
前記第１Ｉ／Ｏ命令に対する第１応答を前記第１仮想マシンに送信し、前記第２Ｉ／Ｏ命令に対する第２応答を前記第２仮想マシンに送信するための送信機と、
前記第１仮想マシンに対する前記第１データを貯蔵するための第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するための第２ストレージティアを選択し、前記第１性能データ及び前記第２性能データに応答して、前記第１仮想マシンに対する少なくとも一つの前記第１データを第１ストレージデータに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアにマイグレーションするためのオート−ティアリンコントローラー（ａｕｔｏｍａｔｅｄ  ｓｔｏｒａｇｅ  ｔｉｅｒｉｎｇ）と、を含み、
前記オートーティアリングコントローラーは、前記第１仮想マシンに対する前記第１データを貯蔵するように前記第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するように前記第２ストレージティアを選択して、前記複数のストレージティアの全般の全ての仮想マシンの性能を最適化し、
前記オートーティアリングコントローラーは、前記第１仮想マシンに対する前記第１データの中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージディアに移動させることによってもたされる性能の変化及び前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアに移動させる移動費用に基づいて動作するシステム。
【０１３０】
ステイトメント２．
本発明の概念の実施例は、ステイトメント１によるシステムを含み、
前記システムはプロセッサーをさらに含み、
オートーティアリングコントローラーはプロセッサで実行されるソフトウェアを含む。
【０１３１】
ステイトメント３．
本発明の概念の実施例は、ステイトメント１によるシステムを含み、前記オートーティアリングコントローラーは、
前記第１性能データ及び前記第２性能データに応答して、前記第１仮想マシンに対する前記第１ストレージティアと前記第２仮想マシンに対する前記第２ストレージティアを選択するティア選択モジュールと、
前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアに移動させるためのマイグレーションモジュールと、を含む。
【０１３２】
ステイトメント４．
本発明の概念の実施例は、ステイトメント１によるシステムを含み、前記オートーティアリングコントローラーは、前記第１性能データと前記第２性能データを使用して、前記第１仮想マシン及び前記第２仮想マシンを、前記複数のストレージティアと前記複数のストレージティアのそれぞれに対する複数のリソースのそれぞれと関連させるリソースマトリックス（ｒｅｓｏｕｒｃｅ  ｍａｔｒｉｘ）を生成するリソースマトリックス生成器を含む。
【０１３３】
ステイトメント５．
本発明の概念の実施例は、ステイトメント４によるシステムを含み、前記オートーティアリングコントローラーは、前記リソースマトリックスに応答して、前記第１仮想マシンに対する第１データを貯蔵するための第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するための第２ストレージティアを選択する。
【０１３４】
ステイトメント６．
本発明の概念の実施例は、ステイトメント５によるシステムを含み、前記オートーティアリングコントローラーは、前記リソースマトリックス及び前記複数のストレージティアのそれぞれに対する専門性情報に応答して、前記第１仮想マシンに対する前記第１データを貯蔵するための第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するための第２ストレージティアを選択するように動作する。
【０１３５】
ステイトメント７．
本発明の概念の実施例は、ステイトメント６によるシステムを含み、前記複数のストレージティアのそれぞれに対する前記専門性情報は、前記複数のストレージティアのそれぞれが前記複数のリソースのそれぞれを支援するか否かを識別する。
【０１３６】
ステイトメント８．
本発明の概念の実施例は、ステイトメント７によるシステムを含み、前記複数のリソースは処理量、帯域幅、容量、及びライト（ｗｒｉｔｅ）増幅を含む。
【０１３７】
ステイトメント９．
本発明の概念の実施例は、ステイトメント４によるシステムを含み、前記リソースマトリックス生成器は、前記複数のストレージティアのそれぞれにおいて前記第１仮想マシンに対する第１性能メトリック（ｍｅｔｒｉｃ）を前記複数のリソースの第２リソースに基づいて、前記複数のストレージティアのそれぞれの前記第１仮想マシンに対する第２性能メトリックに変換するメトリックコンバータを含む。
【０１３８】
ステイトメント１０．
本発明の概念の実施例は、ステイトメント４によるシステムを含み、前記第１性能メトリックは、前記第１仮想マシンに対する第１平均Ｉ／Ｏレイテンシデータを含む。
【０１３９】
ステイトメント１１．
本発明の概念の実施例は、ステイトメント１によるシステムを含み、
前記オートーティアリングコントローラーは、前記第１性能データに対する第１線形回帰を遂行し、前記第２性能データに対する第２線形回帰を遂行する線形回帰モジュールを含み、
前記オートーティアリングコントローラーは、前記第１線形回帰及び前記第２線形回帰に応答して、前記第１仮想マシンに対する前記第１データを貯蔵するために前記第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するために前記第２ストレージティアを選択する。
【０１４０】
ステイトメント１２．
本発明の概念の実施例は、ステイトメント１１によるシステムを含み、前記オートーティアリングコントローラーは、前記第１線形回帰及び前記第２線形回帰に応答して、前記第１仮想マシンと前記第２仮想マシンに対する予測された平均Ｉ／Ｏレイテンシを使用することによって、前記第１仮想マシンに対する前記第１データを貯蔵するための前記第１ストレージティアを選択し、前記第２仮想マシンに対する第２データを貯蔵するための前記第２ストレージティアを選択する。
【０１４１】
ステイトメント１３．
本発明の実施例は、ステイトメント１によるシステムを含み、前記第１性能データは第１リソースを使用する第１メトリック性能データを含み、
前記オートーティアリングコントローラーは、前記第１リソースを使用する前記第１メトリック性能データを、第２リソースを使用する第２メトリック性能データに変換するメトリック変換機を含む。
【０１４２】
ステイトメント１４．
本発明の概念の実施例は、ステイトメント１によるシステムを含み、前記オートーティアリングコントローラーは、前記第１仮想化マシンに対する前記第１データを貯蔵するための第１ストレージティアを選択し、第２仮想マシンに対する第２データを貯蔵するための第２ストレージティアを選択するように構成され、またマイグレーションエポック当たり前記第１性能データと前記第２性能データに応答して、前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアにマイグレーションさせるように動作する。
【０１４３】
ステイトメント１５．
本発明の概念の実施例は、ステイトメント１４によるシステムを含み、前記第１性能データは、前記マイグレーションエポック内の複数のモニタリングエポックからの第１性能データを含み、また前記第２性能データは、前記マイグレーションエポック内の前記複数のモニタリングエポックからの第２性能を含む。
【０１４４】
ステイトメント１６．
本発明の概念の実施例は、ステイトメント１によるシステムを含み、前記第１仮想マシンを貯蔵する第１仮想マシンサーバーと、前記第２仮想マシンを貯蔵する第２仮想マシンサーバーと、を含む。
【０１４５】
ステイトメント１７．
本発明の概念の実施例は、ステイトメント１によるシステムを含み、前記第２仮想マシンサーバーが前記第１仮想マシンサーバーである。
【０１４６】
ステイトメント１８．
本発明の概念の実施例は、ステイトメント１６によるシステムを含み、前記第１仮想マシンサーバーは、前記複数のストレージティアで前記第１仮想マシンの性能をモデリングする前記第１性能データを生成するためのＩ／Ｏフィルタを含む。
【０１４７】
ステイトメント１９．
本発明の概念の実施例は、ステイトメント１８によるシステムを含み、前記Ｉ／Ｏフィルタは前記第１仮想マシンからの複数のＩ／Ｏコマンドにレイテンシを注入するように動作し、前記複数のＩ／Ｏコマンドは前記第１Ｉ／Ｏコマンドを含み、前記注入されたレイテンシに応答して前記第１仮想マシンに対する平均Ｉ／Ｏレイテンシを決定する。
【０１４８】
ステイトメント２０．
本発明の概念の実施例は、ステイトメント１９によるシステムを含み、前記Ｉ／Ｏフィルタは、前記第１仮想マシンから前記複数のＩ／Ｏコマンドに複数のレイテンシを注入し、前記注入されたレイテンシに応答して、前記第１仮想マシンに対する複数の平均Ｉ／Ｏレイテンシを決定するようにさらに動作し、また前記オートーティアリングコントローラーは、前記第１仮想マシンに対する前記複数の平均Ｉ／Ｏレイテンシに対する第１線形回帰を遂行する線形回帰モジュールを含む。
【０１４９】
ステイトメント２１．
本発明の概念の実施例は、ステイトメント１８によるシステムを含み、前記第１仮想マシンサーバーは、前記Ｉ／Ｏフィルタから複数の仮想マシンに対する前記性能データを収集し、前記収集された性能データを前記オートーティアリングコントローラーに伝達する。
【０１５０】
ステイトメント２２．
本発明の概念の実施例は、ステイトメント１６によるシステムを含み、前記第１仮想マシンサーバーは、前記第１仮想マシンに対する前記第１データ中の任意のものを貯蔵するための第１ローカルキャッシュを含まず、
また第２仮想マシンサーバーは、前記第２仮想マシンに対する前記第２データ中の任意のものを貯蔵するための第２ローカルキャッシュを含まない。
【０１５１】
ステイトメント２３．
本発明の概念の実施例は、ステイトメント１による方法を含み、前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２仮想マシンにマイグレーションすることによってもたらされる性能の変化は、前記第１仮想マシンの性能の改善を含む。
【０１５２】
ステイトメント２４．
本発明の概念の実施例は、ステイトメント１による方法を含み、前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２仮想マシンにマイグレーションすることによってもたらされる性能の変化は、前記第１仮想マシンの性能の減少を含む。
【０１５３】
ステイトメント２５．
本発明の概念の実施例は、ステイトメント１による方法を含み、前記第１仮想マシンに対する前記第１データの少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアにマイグレーションする費用は、前記第１仮想マシンに対する前記第１データの中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアにマイグレーションさせるのに必要なマイグレーション時間を含む。
【０１５４】
ステイトメント２６．
本発明の概念の実施例は、ステイトメント１によるシステムを含み、前記第２ストレージティアが前記第１ストレージティアであり得る。
【０１５５】
ステイトメント２７．
本発明の概念の実施例は、ステイトメント１によるシステムを含み、複数のストレージティア中の一つの複数のストレージデバイスは、同種（ｈｏｍｏｇｅｎｅｏｕｓ）である。
【０１５６】
ステイトメント２８．
本発明の概念の実施例は、次を含む方法を含む。
複数のストレージティアの第１仮想マシンの性能をモデリングする第１性能データを受信するステップと、
前記複数のストレージティアの第２仮想マシンの性能をモデリングする第２性能データを受信するステップと、
前記第１性能データと前記第２性能データを使用して、前記第１仮想マシン及び第２仮想マシンを、前記複数のストレージティアと前記複数のストレージティアのそれぞれに対する複数のリソースのそれぞれと関連させるリソースマトリックスを生成するステップと、
前記リソースマトリックスを使用して、前記第１仮想マシンに対する第１データを貯蔵するために前記複数のストレージティアの中で第１ストレージティアを選択するステップと、
前記リソースマトリックスを使用して、前記第２仮想マシンに対する第２データを貯蔵するために前記複数のストレージティアの第２ストレージティアを選択するステップと、
前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアにマイグレーションさせるステップと、を含み、
前記第１仮想マシンに対する前記第１データを貯蔵するように前記第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するように前記第２ストレージティアを選択するのは、前記複数のストレージティアの全般の全ての仮想マシンの性能を最適化し、
前記第１仮想マシンに対する前記第１データを貯蔵するように前記第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するように前記第２ストレージティアを選択するのは、前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアに移動させることによってもたらされる性能変化を考慮し、
前記第１仮想マシンに対する前記第１データを貯蔵するように前記第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するように前記第２ストレージティアを選択するのは、前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアに移動させる移動費用を考慮する。
【０１５７】
ステイトメント２９．
本発明の概念の実施例は、ステイトメント２８による方法を含み、前記第２ストレージティアが前記第１ストレージティアである。
【０１５８】
ステイトメント３０．
本発明の概念の実施例は、ステイトメント２８による方法を含み、第１性能データを受信し、第２性能データを受信し、リソースマトリックスを生成し、第１ストレージティアを選択し、また第２ストレージティアを選択するのは、マイグレーションエポック当たり一回遂行される。
【０１５９】
ステイトメント３１．
本発明の概念の実施例は、ステイトメント３０による方法を含み、第１性能データを受信し、第２性能データを受信するのがモニタリングエポック当たり一回遂行される。
【０１６０】
ステイトメント３２．
本発明の概念の実施例は、ステイトメント３１による方法を含み、前記マイグレーションエポックは複数のモニタリングエポックを含む。
【０１６１】
ステイトメント３３．
本発明の概念の実施例は、ステイトメント２８による方法を含み、前記リソースマトリックスを使用して、前記第１仮想マシンに対する第１データを貯蔵するための第１ストレージティアを前記複数のストレージティアから選択するステップは、前記複数のストレージティアのそれぞれに対する前記リソースマトリックス及び専門性情報を使用して、前記第１仮想マシンに対する第１データを貯蔵するために前記複数のストレージティアの中で前記第１ストレージティアを選択するステップを含み、また前記リソースマトリックスを使用して、前記第２仮想マシンに対する第２データを貯蔵するための第２ストレージティアを前記複数のストレージティアから選択するステップは、前記複数のストレージティアのそれぞれに対する前記リソースマトリックス及び専門性情報を使用して、前記第２仮想マシンに対する第２データを貯蔵するために前記複数のストレージティアの中で前記第２ストレージティアを選択するステップを含む。
【０１６２】
ステイトメント３４．
本発明の概念の実施例は、ステイトメント３３による方法を含み、前記複数のストレージティアのそれぞれに対する前記専門性情報は、前記複数のストレージティアのそれぞれが前記複数のリソースのそれぞれを支援するか否かを識別する。
【０１６３】
ステイトメント３５．
本発明の概念の実施例は、ステイトメント３４による方法を含み、前記複数のリソースは、処理量、帯域幅、容量及びライト増幅を含む。
【０１６４】
ステイトメント３６．
本発明の概念の実施例は、ステイトメント３４による方法を含み、前記複数のストレージティアで前記第１仮想マシンの性能をモデリングする前記第１性能データは、前記第１仮想マシンに対する平均Ｉ／Ｏレイテンシと注入された複数のレイテンシを相互関連させる複数のデータポイントを含む。
【０１６５】
ステイトメント３７．
本発明の概念の実施例は、ステイトメント３６による方法を含み、前記第１性能データと前記第２性能データを使用して前記第１仮想マシン及び前記第２仮想マシンを前記複数のストレージティアと前記複数のストレージティアのそれぞれに対する複数のリソースのそれぞれと関連させるリソースマトリックスを生成するステップは、前記第１仮想マシンに対する平均Ｉ／Ｏレイテンシを注入された複数のレイテンシを相互関連させる前記複数のデータポイントに対する線形回帰を遂行するステップを含む。
【０１６６】
ステイトメント３８．
本発明の概念の実施例は、ステイトメント３７による方法を含み、前記第１性能データと前記第２性能データを使用して、前記第１仮想マシン及び前記第２仮想マシンを前記複数のストレージティアと前記複数のストレージティアのそれぞれに対する複数のリソースのそれぞれと関連させるリソースマトリックスを生成するステップは、前記線形回帰を使用して、前記複数のストレージティアのそれぞれに対する前記第１仮想マシンの性能を予測するステップをさらに含む。
【０１６７】
ステイトメント３９．
本発明の概念の実施例は、ステイトメント３７による方法を含み、前記第１性能データと前記第２性能データを使用して、前記第１仮想マシン及び前記第２仮想マシンを前記複数のストレージティアと前記複数のストレージティアのそれぞれに対する複数のリソースのそれぞれと関連させるリソースマトリックスを生成するステップは、前記複数のリソースのそれぞれに基づいて、前記複数のストレージティアのそれぞれにおいて前記第１仮想マシンに対する性能メトリックを決定するステップをさらに含む。
【０１６８】
ステイトメント４０．
本発明の概念の実施例は、ステイトメント３９による方法を含み、前記複数のリソースのそれぞれに基づいて、前記複数のストレージティアのそれぞれにおいて前記第１仮想マシンに対する性能メトリックを決定するステップは、前記複数のストレージティアのそれぞれで前記第１仮想マシンに対する第１性能メトリックを前記複数のリソースの第２リソースに基づいて、前記複数のストレージティアのそれぞれの前記第１仮想マシンに対する第２性能メトリックに変換するステップをさらに含む。
【０１６９】
ステイトメント４１．
本発明の概念の実施例は、ステイトメント２８による方法を含み、前記複数のストレージティアの第１仮想マシンの性能をモデリングする第１性能データを受信するステップは、
Ｉ／Ｏフィルタにおいて、前記仮想マシンから複数の第１Ｉ／Ｏコマンドを受信するステップと、
前記複数の第１Ｉ／Ｏコマンドに第１レイテンシを注入するステップと、
前記複数の第１Ｉ／Ｏコマンドに対する前記仮想マシンに対する第１平均Ｉ／Ｏレイテンシを計算するステップと、を含む。
【０１７０】
ステイトメント４２．
本発明の概念の実施例は、ステイトメント４１による方法を含み、
前記複数の第１Ｉ／Ｏコマンドに第１レイテンシを注入するステップは、前記複数の第１Ｉ／Ｏコマンドに複数のレイテンシを注入するステップを含み、
前記複数の第１Ｉ／Ｏコマンドに対する前記仮想マシンに対する第１平均Ｉ／Ｏレイテンシを計算するステップは、前記複数の第１Ｉ／Ｏコマンドに対する前記仮想マシンに対する複数の平均Ｉ／Ｏレイテンシを計算するステップを含み、
前記方法は、前記複数の平均Ｉ／Ｏレイテンシに対する線形回帰を遂行するステップをさらに含む。
【０１７１】
ステイトメント４３．
本発明の概念の実施例は、ステイトメント２８による方法を含み、前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２仮想マシンにマイグレーションすることによってもたらされる性能の変化は、前記第１仮想マシンの改善を含む。
【０１７２】
ステイトメント４４．
本発明の概念の実施例は、ステイトメント２８による方法を含み、前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２仮想マシンにマイグレーションすることによってもたらされる性能の変化は、前記第１仮想マシンの性能の減少を含む。
【０１７３】
ステイトメント４５．
本発明の概念の実施例は、ステイトメント２８による方法を含み、前記第１仮想マシンに対する前記第１データの少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアにマイグレーションする費用は、前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアにマイグレーションさせるのに必要なマイグレーション時間を含む。
【０１７４】
ステイトメント４６．
本発明の概念の実施例は、非一時的な貯蔵媒体を含む物品を含み、前記マシンによって、複数のストレージティアの第１仮想マシンの性能をモデリングする第１性能データを受信するステップと、
前記複数のストレージティアの第２仮想マシンの性能をモデリングする第２性能データを受信するステップと、
前記第１性能データと前記第２性能データを使用して、前記第１仮想マシン及び前記第２仮想マシンを前記複数のストレージティアと前記複数のストレージティアのそれぞれに対する複数のリソースのそれぞれと関連させるリソースマトリックスを生成するステップと、
前記リソースマトリックスを使用して、前記第１仮想マシンに対する第１データを貯蔵するために、前記複数のストレージティア中の第１ストレージティアを選択するステップと、
前記リソースマトリックスを使用して、前記第２仮想マシンに対する第２データを貯蔵するために、前記複数のストレージティアの第２ストレージティアを選択するステップと、
前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアにマイグレーションするステップと、を含み、
前記第１仮想マシンに対する前記第１データを貯蔵するように前記第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するように前記第２ストレージティアを選択するのは、前記複数のストレージティアの全般の全ての仮想マシンの性能を最適化し、
前記第１仮想マシンに対する前記第１データを貯蔵するように前記第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するように前記第２ストレージティアを選択するのは、前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアに移動させることによってもたらされる性能の変化を考慮し、
前記第１仮想マシンに対する前記第１データを貯蔵するように前記第１ストレージティアを選択し、前記第２仮想マシンに対する前記第２データを貯蔵するように前記第２ストレージティアを選択するのは、前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアに移動させる移動費用を考慮する。
【０１７５】
ステイトメント４７．
本発明の概念の実施例は、ステイトメント４６による物品を含み、前記第２ストレージティアが前記第１ストレージティアである。
【０１７６】
ステイトメント４８．
本発明の概念の実施例は、ステイトメント４６による物品を含み、第１性能データを受信し、第２性能データを受信し、リソースマトリックスを生成し、第１ストレージティアを選択し、また第２ストレージティアを選択するのは、マイグレーションエポック当たり一回遂行される。
【０１７７】
ステイトメント４９．
本発明の概念の実施例は、ステイトメント４８による物品を含み、第１性能データを受信し、第２性能データを受信するのがモニタリングエポック当たり一回遂行される。
【０１７８】
ステイトメント５０．
本発明の概念の実施例は、ステイトメント４９による物品を含み、前記マイグレーションエポックは複数のエポックを含む。
【０１７９】
ステイトメント５１．
本発明の概念の実施例は、ステイトメント４６による物品を含み、前記リソースマトリックスを使用して、前記第１仮想マシンに対する第１データを貯蔵するための第１ストレージティアを前記複数のストレージティアから選択するステップは、前記複数のストレージティアのそれぞれに対する前記リソースマトリックス及び専門性情報を使用して、前記第１仮想マシンに対する第１データを貯蔵するために前記複数のストレージティアの中で前記第１ストレージティアを選択するステップを含み、また前記リソースマトリックスを使用して、前記第２仮想マシンに対する第２データを貯蔵するための第２ストレージティアを前記複数のストレージティアから選択するステップは、前記複数のストレージティアのそれぞれに対する前記リソースマトリックス及び専門性情報を使用して、前記第２仮想マシンに対する第２データを貯蔵するために前記複数のストレージティアの中で前記第２ストレージティアを選択するステップを含む。
【０１８０】
ステイトメント５２．
本発明の概念の実施例は、ステイトメント５１による物品を含み、前記複数のストレージティアのそれぞれに対する前記専門性情報は、前記複数のストレージティアのそれぞれが前記複数のリソースのそれぞれを支援するか否かを識別する。
【０１８１】
ステイトメント５３．
本発明の概念の実施例は、ステイトメント５２による物品を含み、前記複数のリソースは、処理量、帯域幅、容量及びライト増幅を含む。
【０１８２】
ステイトメント５４．
本発明の概念の実施例は、ステイトメント５２による物品を含み、前記複数のストレージティアにおいて前記第１仮想マシンの性能をモデリングする前記第１性能データは、前記第１仮想マシンに対する平均Ｉ／Ｏレイテンシと注入された複数のレイテンシを相互関連させる複数のデータポイントを含む。
【０１８３】
ステイトメント５５．
本発明の概念の実施例は、ステイトメント５４による物品を含み、前記第１性能データと前記第２性能データを使用して、前記第１仮想マシン及び前記第２仮想マシンを前記複数のストレージティアと前記複数のストレージティアのそれぞれに対する複数のリソースのそれぞれと関連させるリソースマトリックスを生成するステップは、前記第１仮想マシンに対する平均Ｉ／Ｏレイテンシを注入されたレイテンシを相互関連させる前記複数のデータポイントに対する線形回帰を遂行するステップを含む。
【０１８４】
ステイトメント５６．
本発明の概念の実施例は、ステイトメント５５による物品を含み、前記第１性能データと前記第２性能データを使用して、前記第１仮想マシン及び前記第２仮想マシンを前記複数のストレージティアと前記複数のストレージティアのそれぞれに対する複数のリソースのそれぞれと関連させるリソースマトリックスを生成するステップは、前記線形回帰を使用して、前記複数のストレージティアのそれぞれに対する前記第１仮想マシンの性能を予測するステップをさらに含む。
【０１８５】
ステイトメント５７．
本発明の概念の実施例は、ステイトメント５５による物品を含み、前記第１性能データと前記第２性能データを使用して、前記第１仮想マシン及び前記第２仮想マシンを前記複数のストレージティアと前記複数のストレージのそれぞれに対する複数のリソースのそれぞれと関連させるリソースマトリックスを生成するステップは、前記複数のリソースのそれぞれに基づいて、前記複数のストレージティアのそれぞれにおいて記第１仮想マシンに対する性能メトリックを決定するステップをさらに含む。
【０１８６】
ステイトメント５８．
本発明の概念の実施例は、ステイトメント５７による物品を含み、前記複数のリソースのそれぞれに基づいて、前記複数のストレージティアのそれぞれにおいて前記第１仮想マシンに対する性能メトリックを決定するステップは、前記複数のストレージティアのそれぞれにおいて前記第１仮想マシンに対する第１性能メトリックを前記複数のリソースの第２リソースに基づいて、前記複数のストレージティアのそれぞれの前記第１仮想マシンに対する第２性能メトリックに変換するステップをさらに含む。
【０１８７】
ステイトメント５９．
本発明の概念の実施例は、ステイトメント５７による物品を含み、前記複数のストレジティアの第１仮想マシンの性能をモデリングする第１性能データを受信するステップは、
Ｉ／Ｏフィルタにおいて、前記仮想マシンから複数の第１Ｉ／Ｏコマンドを受信するステップと、
前記複数の第１Ｉ／Ｏコマンドに第１レイテンシを注入するステップと、
前記複数の第１Ｉ／Ｏコマンドに対する前記仮想マシンに対する第１平均Ｉ／Ｏレイテンシを計算するステップと、を含む。
【０１８８】
ステイトメント６０．
本発明の概念の実施例は、ステイトメント５９による物品を含み、
前記複数の第１Ｉ／Ｏコマンドに第１レイテンシを注入するステップは、前記複数の第１Ｉ／Ｏコマンドに複数のレイテンシを注入するステップを含み、
前記複数の第１Ｉ／Ｏコマンドに対する前記仮想マシンに対する第１平均Ｉ／Ｏレイテンシを計算するステップは、前記複数の第１Ｉ／Ｏコマンドに対する前記仮想マシンに対する複数の平均Ｉ／Ｏレイテンシを計算するステップを含み、
前記方法は、前記複数の平均Ｉ／Ｏレイテンシに対する線形回帰を遂行するステップをさらに含む。
【０１８９】
ステイトメント６１．
本発明の概念の実施例は、ステイトメント４６による物品を含み、前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２仮想マシンにマイグレーションすることによってもたらされる性能の変化は、前記仮想マシンの性能の改善を含む。
【０１９０】
ステイトメント６２．
本発明の概念の実施例は、ステイトメント４６による物品を含み、前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２仮想マシンにマイグレーションすることによってもたらされる性能の変化は、前記第１仮想マシンの性能の減少を含む。
【０１９１】
ステイトメント６３．
本発明の概念の実施例は、ステイトメント４６による物品を含み、前記第１仮想マシンに対する前記第１データの少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアにマイグレーションする費用は、前記第１仮想マシンに対する前記第１データ中の少なくとも一つを前記第１ストレージティアに、又は前記第２仮想マシンに対する前記第２データを前記第２ストレージティアにマイグレーションさせるのに必要なマイグレーション時間を含む。
【０１９２】
結論的に、本明細書に記述された実施例に対する様々な変更の観点から、詳細な説明及び添付した資料は、ただ例示的なものと意図し、本発明の概念の範囲を制限するものと見なされてはならない。したがって、本発明の概念として請求するのは、以下の請求の範囲及びその均等物の範囲及び思想内に有り得る全ての変形である。
【産業上の利用可能性】
【０１９３】
本発明は、データストレージデバイスにおいてストレージティア仮想マシンの自動管理に有用である。
【符号の説明】
【０１９４】
１０５  システム
１１０  サーバー
１１０−１、１１０−２、１１０−３  仮想マシンサーバー
１１５、１１５−１、１１５−２、１１５−３、１１５−４  プロセッサ
１２０、１２０−１、１２０−２、１２０−３、１２０−４  メモリー
１２５−１、１２５−２、１２５−３  キャッシュ
１３０  データセンターサーバー（サーバー）
１３５  ストレージプール
１４０  受信機
１４５  送信機
１５０  ネットワーク
２０５  メモリコントローラー
２１０  クロック
２１５  ネットワークコネクター
２２０  バス
２２５  ユーザインターフェース
２３０  入力／出力エンジン
３０５−１、３０５−２、３０５−３  仮想マシン
３１０  アプリケーション
３１５  Ｏ／Ｓ
３２０  ハイパーバイザー
３２５  Ｉ／Ｏフィルター
３３０  オートティアリングデーモン
３３５  オートティアリングコントローラー
３４０−１、３４０−２、３４０−３  ストレージティア
３４５  ストレージデバイス
４０５  リソース
４１０  処理量
４１５  帯域幅
４２０  容量
４２５  ライト増幅ファクター
５０５、５１０  仮想マシンファイル
５１５  矢印
７０５  Ｉ／Ｏコマンド
７１０  注入されたレイテンシ
７１５  応答
７２０  性能データ
８０５  線形回帰モジュール
８１０  リソースマトリックス生成器
８１５  メトリックコンバーター
８２０  専門性情報
８２５  ティア選択モジュール
８３０  マイグレーションモジュール
９０５  リソースマトリックス
９１０、９１５、９２０  ２次元マトリックス
１００５、１０１０  線形回帰
１２０５  スコアマトリックス
１３０５  マイグレーションエポック
１３１０  モニタリングエポック
【図１】
2019021315.tif 000015
【図２】
2019021315.tif 000016
【図３】
2019021315.tif 000017
【図４】
2019021315.tif 000018
【図５】
2019021315.tif 000019
【図６】
2019021315.tif 000020
【図７】
2019021315.tif 000021
【図８】
2019021315.tif 000022
【図９】
2019021315.tif 000023
【図１０】
2019021315.tif 000024
【図１１】
2019021315.tif 000025
【図１２】
2019021315.tif 000026
【図１３】
2019021315.tif 000027
【図１４】
2019021315.tif 000028
【図１５】
2019021315.tif 000029
【図１６】
2019021315.tif 000030