(57)【特許請求の範囲】
【請求項１】
コンピュータネットワークを経てバーチャルプライベートストレージアレイをサービスとして提供するための方法において、
コンピュータネットワークを経てバーチャルプライベートストレージアレイのためのパラメータを受け取る段階を含み、前記バーチャルプライベートストレージアレイのためのパラメータは、前記バーチャルプライベートストレージアレイの各バーチャルコントローラのためのバーチャルコントローラハードウェアモデルと、前記バーチャルプライベートストレージアレイのためのドライブ特性と、前記バーチャルプライベートストレージアレイのためのドライブ量とを含むものであり；及び
プロセッサ／メモリ複合体、並びにサーバーコンピュータから利用できる物理的ドライブから前記バーチャルプライベートストレージアレイを生成する段階を含み、その各サーバーコンピュータは、ストレージノード及び計算エージェントの少なくとも１つを含むソフトウェアを実行するものであり、前記バーチャルプライベートストレージアレイを生成する段階は、
前記ドライブ特性及びドライブ量を満足するか又はそれを越える１組の物理的ドライブを選択することを含み、その選択された物理的ドライブは、１組のサーバーコンピュータからのものであり、更に、
前記１組のサーバーコンピュータ上のストレージノードに、前記バーチャルプライベートストレージアレイにバーチャルドライブを割り当てるよう命令することを含み、前記ストレージノードは、
前記選択された物理的ドライブから前記バーチャルドライブを生成し、各バーチャルドライブは、１つの選択された物理的ドライブ全体であるか又は１つの選択された物理的ドライブの一部分である区画であり、及び
前記バーチャルプライベートストレージアレイのバーチャルコントローラに前記バーチャルドライブを露出する、
ように構成され；更に、
前記バーチャルコントローラハードウェアモデルを各々満足するか又はそれを越える１組のプロセッサ／メモリ複合体を選択することを含み、その選択されたプロセッサ／メモリ複合体は、他の１組のサーバーコンピュータからのものであり；更に、
前記他の１組のサーバーコンピュータ上の計算エージェントに、前記バーチャルコントローラのためのバーチャルマシンをスポーンするよう命令することを含み、その計算エージェントは、
前記バーチャルマシン専用の各選択されたプロセッサ／メモリ複合体の少なくとも一部分上の１つのバーチャルマシンをスポーンし、及び
前記バーチャルマシン当たり１つのバーチャルコントローラを始動して、前記バーチャルプライベートストレージアレイの各バーチャルコントローラが、異なるサーバーコンピュータにおいて実行されるようにする、
よう構成され、前記バーチャルコントローラの１つ以上は、
前記露出されたバーチャルドライブを発見し、
前記露出されたバーチャルドライブを含む１つ以上のバーチャルプールを生成し、      前記１つ以上のバーチャルプールにおいてデータ保護スキームを実施し、
前記１つ以上のバーチャルプールから１つ以上のボリュームを生成し、
前記コンピュータネットワークを経て１つ以上のカスタマーコンピュータへ前記１つ以上のボリュームを露出させ、及び
前記１つ以上のカスタマーコンピュータから前記コンピュータネットワークを経て前記露出された１つ以上のボリュームへアクセス要求をハンドリングする、
ように構成される、方法。
【請求項２】
ウェブサーバが前記コンピュータネットワークを経てウェブフォームを送信し、ウェブフォームは、前記パラメータを返送するように構成され、
前記ウェブサーバが前記コンピュータネットワークを経てウェブページを送信し、当該ウェブページは、サービス料金を含み、当該ウェブページは、前記バーチャルプライベートストレージアレイを生成するための確認を返送するように構成され、及び
前記ウェブサーバが前記コンピュータネットワークを経て前記確認を受け取る、
ことを更に含む、請求項１に記載の方法。
【請求項３】
前記バーチャルコントローラハードウェアモデルは、中央処理ユニットモデル、中央処理ユニット特徴、中央処理ユニット量、ランダムアクセスメモリ容量、及びネットワーク帯域巾、の少なくとも１つを明示し、及び
前記ドライブ特性は、ドライブ形式、ドライブ容量、及びドライブ暗号、の少なくとも１つを明示する、請求項１に記載の方法。
【請求項４】
各バーチャルドライブは、物理的ドライブ全体又は物理的ドライブの一部分である区画から生成された論理的ボリュームであり、及び
前記ストレージノードは、前記バーチャルドライブをネットワークブロック装置として前記バーチャルコントローラに露出させることにより前記バーチャルドライブを前記バーチャルコントローラに露出させるように構成される、請求項１に記載の方法。
【請求項５】
前記パラメータは、更に、前記バーチャルプライベートストレージアレイに対するデータ保護のＲＡＩＤレベル、及び前記バーチャルプライベートストレージアレイにおけるバーチャルコントローラ量の一方を含む、請求項１に記載の方法。
【請求項６】
前記ストレージノードは、更に、
前記物理的ドライブを発見し；
前記物理的ドライブにドライブ形式及びドライブ容量について問合せし；及び
前記ドライブ形式及びドライブ容量を利用ゾーンコントローラへ送信する；
ように構成され、前記１組の物理的ドライブを選択することは、
前記ドライブ特性を満足するか又はそれを越える物理的ドライブを伴う候補サーバーコンピュータのリストを生成し；
１つ以上の分類基準に基づいて前記リストを分類し；及び
トップランクの候補サーバーコンピュータの物理的ドライブを選択する；
ことを含む、請求項１に記載の方法。
【請求項７】
前記１つ以上の分類基準は、候補サーバーコンピュータの利用率を含む、請求項６に記載の方法。
【請求項８】
前記１組のプロセッサ／メモリ複合体を選択することは、
前記サーバーコンピュータにプロセッサ／メモリ複合体について問合せし、
前記バーチャルコントローラハードウェアモデルを満足するか又はそれを越えるプロセッサ／メモリ複合体を伴う候補サーバーコンピュータのリストを生成し、
１つ以上の分類基準に基づいて前記リストを分類し、及び
トップランクの候補サーバーコンピュータのプロセッサ／メモリ複合体を選択する、
ことを含む、請求項１に記載の方法。
【請求項９】
前記１つ以上の分類基準は、候補サーバーコンピュータの利用率を含む、請求項８に記載の方法。
【請求項１０】
前記バーチャルコントローラは、負荷分担及び冗長性のために構成される、請求項１に記載の方法。
【請求項１１】
前記１組のサーバーコンピュータは、前記サーバーコンピュータの一部分又は全部を含む、請求項１に記載の方法。
【請求項１２】
前記１組のサーバーコンピュータ及び前記他の１組のサーバーコンピュータは、オーバーラップする、請求項１に記載の方法。
【請求項１３】
前記物理的ドライブは、磁気ハードディスクドライブ、ソリッドステートドライブ及び相変化メモリドライブの１つ以上を含む、請求項１に記載の方法。
【請求項１４】
１つ以上の前記バーチャルコントローラは、データプライバシーを保証するためにアクセス要求を認証することによりアクセス要求をハンドリングするように構成される、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データストレージシステムに関するもので、より特定すれば、プライベート及びパブリッククラウドのユーザへのサービスとしてバーチャルストレージアレイをプロビジョニングするためのプラットホーム及び技術に関する。
【背景技術】
【０００２】
既存のデータストレージアレイは、ストレージ及びリソースのプロビジョニングに関して融通性が不充分であり、且つそれらは、マルチテナントではなく、又、ストレージシステムのサブセットに対してそれらをクラウド環境に配備できるようにする性能を保証するものではない。更に、ストレージアレイは、プロビジョニングすることができず、ユーザコントロール型のサービスとしてクライドユーザに提供される。従って、必要なレベルのデータプライバシー、欠陥分離、及び予想し得る性能を慣習的なストレージシステムとして提供しながら、サービスとして構築し利用できる融通性のあるバーチャルストレージアレイが要望される。
【発明の概要】
【０００３】
本発明の１つ以上の実施形態において、コンピュータネットワークを経てバーチャルプライベートストレージアレイ（ＶＰＳＡ）をサービスとして提供する方法は、ネットワークを経てＶＰＳＡのためのパラメータを受け取り、そしてサーバーコンピュータのリソースからＶＰＳＡを生成することを含む。ＶＰＳＡを生成することは、指定のドライブ特性、ドライブ量、及びアレイ冗長性基準を満足するか又はそれを越えるドライブを、ＶＰＳＡのバーチャルコントローラ（ＶＣ）に割り当て及び露出させ、そして指定のバーチャルコントローラハードウェアモデルを各々満足するか又はそれを越えるプロセッサ／メモリ複合体の各部分をＶＣ専用とすることを含む。ＶＣは、独立したサーバーコンピュータ上のプロセッサ／メモリ複合体の専用部分におけるバーチャルマシンにおいて実行される。ＶＣは、露出されたドライブを発見し、露出された物理的ドライブからバーチャルプールを生成し、バーチャルプールにおいてデータ保護を実施し、バーチャルプールからボリュームを生成し、ネットワークを経てカスタマーコンピュータ（例えば、プライベート又はパブリッククラウドにおいて実行されるカスタマーアプリケーションサーバー）へそのボリュームを露出させ、そしてカスタマーコンピュータからボリュームへのアクセス要求をハンドリングする。各ＶＰＳＡは、専用のリソース（例えば、中央処理ユニット、ランダムアクセスメモリ、ネットワークインターフェイスカード、及びディスクドライブ）と、クラウドのユーザによりコントロールされる専用のマネージメントグラフィックユーザインターフェイスと、を有する。このように、クラウドの各ユーザにストレージの一貫した性能、セキュリティ、及びコントロールを与えることができる。
【図面の簡単な説明】
【０００４】
【図１】クラウドにおけるサービスとしてバーチャルプライベートストレージアレイ（ＶＰＳＡ）を動的にプロビジョニングする規範的なソフトウェアシステムのブロック図である。
【図２】図１のソフトウェアシステムを実施するための規範的なハードウェアシステムのブロック図である。
【図３】図２の規範的なストレージノードコンピュータのブロック図である。
【図４】図１のソフトウェアシステムを実施するための規範的な別のハードウェアシステムのブロック図である。
【図５】図１のシステムで新たなＶＰＳＡをスポーンするための規範的な方法のフローチャートである。
【図６Ａ】図１のシステムでＶＰＳＡにおけるバーチャルコントローラ（ＶＣ）にバーチャルドライブを割り当てるための規範的な方法のフローチャートである。
【図６Ｂ】図１のシステムでＶＰＳＡにおけるバーチャルコントローラ（ＶＣ）にバーチャルドライブを割り当てるための規範的な方法のフローチャートである。
【図７Ａ】図１のシステムで、本発明の実施形態に基づいて全て構成されたＶＣをＶＰＳＡに生成するための規範的な方法のフローチャートである。
【図７Ｂ】図１のシステムで、本発明の実施形態に基づいて全て構成されたＶＣをＶＰＳＡに生成するための規範的な方法のフローチャートである。
【発明を実施するための形態】
【０００５】
種々の図面において同じ又は同様の要素は同じ参照番号を使用して示されている。
【０００６】
図１は、本発明の１つ以上の実施形態において、クラウドにおけるサービスとしてバーチャルプライベートストレージアレイ（ＶＰＳＡ）を動的にプロビジョニングし管理する規範的なソフトウェアシステム１００のブロック図である。このシステム１００は、標準的なサーバーコンピュータ及びデータストレージ媒体環境からＶＰＳＡを生成し、プロビジョニングしそして管理することができる。システム１００は、コンピュータネットワーク１０２を経て、カスタマーコンピュータで実行されるアプリケーションへ、例えば、別のサービスプロバイダーによりカスタマーに提供されるクラウドサーバーへＶＰＳＡを接続する。クラウドサーバーとは、プロバイダーによりカスタマーへサービスとして提供されるバーチャルサーバーである。サービスプロバイダーは、ストレージを付加的なサービスとして提供するが、カスタマーは、提供されるストレージの構成を何らコントロールすることができない。
【０００７】
ＶＰＳＡは、１つ以上のバーチャルコントローラ（ＶＣ）１０４、及びこのＶＣ１０４に露出される１つ以上のバーチャルドライブ１０６から構成される。バーチャルドライブ１０６は、全物理的ドライブ１０８或いは物理的ドライブ１０８の一部分である区画から生成された論理的ボリュームである。ＶＣ１０４及び物理的ドライブ１０８は、利用ゾーン（ＡＺ）を作り上げる標準的サーバーコンピュータ間に分散される。
【０００８】
ＶＰＳＡにおいて、ＶＣ１０４は、とりわけ、バーチャルドライブ１０６から１つ以上のバーチャルプールを生成し、バーチャルドライブ１０６のバーチャルプールにおいてデータ保護を実施し、バーチャルプールにおいて同じデータ保護を行うようにしてバーチャルプールから１つ以上のバーチャルボリュームをカーブアウトし、ターゲットドライブを経て１つ以上のカスタマーコンピュータ１１２へバーチャルボリューム１１０をエクスポートし、そしてカスタマーコンピュータ１１２（例えば、クラウドサーバー）からバーチャルボリューム１１０へ標準的入力／出力（Ｉ／Ｏ）要求をハンドリングするという役割を果たすソフトウェアコンポーネントである。データ保護は、独立ディスク（ＲＡＩＤ）スキームの冗長アレイである。Ｉ／Ｏ要求は、インターネット小型コンピュータシステムインターフェイス（ｉＳＣＳＩ）又はインフィニバンド(Infiniband)Ｉ／Ｏ要求である。ＶＣ１０４は、認証メカニズムを実施して、ＶＰＳＡへの許可されたＩ／Ｏアクセスを検証する。例えば、ＶＣ１０４は、Ｉ／Ｏ要求に埋め込まれるユーザ名及びパスワードのようなクレデンシャルを検証する。ＶＣ１０４は、ＶＰＳＡのバーチャル及び物理的エンティティの持続性データベースを維持し、ＶＰＳＡのためのマネージメントインターフェイス１２４をカスタマーに与え、そしてＶＰＳＡのための監視及び診断ツールをカスタマーに与える。ＶＣ１０４によりサービスされるウェブ形態のようなマネージメントインターフェイス１２４を使用して、カスタマーは、クラウドサーバー及びアプリケーションへのＶＰＳＡストレージ及びボリュームプロビジョニングを操作することができる。各ＶＣ１０４は、専用メモリ、処理及びネットワークリソースを伴う個別のバーチャルマシン（ＶＭ）において実行される。
【０００９】
物理的ドライブ１０８は、ハードディスクドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＳＤ）、相変化メモリ（ＰＣＭ）ドライブ、及び他の形式の持続性ストレージドライブの任意の組み合わせを含む。物理的ドライブ１０８は、ＡＺにおける標準的サーバーコンピュータ間に分散されたストレージノード（ＳＮ）１１４にアタッチされる。ＳＮ１１４は、とりわけ、物理的ドライブ１０８にそれらのドライブ特性について問合せし、同様のドライブ特性をもつ物理的ドライブ１０８をサービス品質（ＱｏＳ）グループへとグループ化し、そしてドライブインベントリーを利用ゾーンコントローラ（ＡＺＣ）１１６に報告するという役割を果たす（例えば、ＱｏＳグループＡには６つのドライブ及びＱｏＳグループＢには２つのドライブ）。ＳＮ１１４は、追加及び除去される物理的ドライブ１０８を動的に発見し、そしてＡＺＣ１１６を現在ドライブインベントリーで更新する。
【００１０】
ＳＮ１１４は、物理的ドライブ１０８を区画化し、そしてＡＺＣ１１６からのインストラクションごとに区画からバーチャルドライブ１０６を生成する。上述したように、バーチャルドライブ１０６は、全物理的ドライブ１０８又は物理的ドライブ１０８の一部分である区画から生成された論理的ボリュームである。全物理的ドライブ１０８からバーチャルドライブ１０６を生成することは、物理的ドライブベースでの完全なデータ分離及びプライバシー、並びに物理的ドライブ自己暗号化能力のレバレッジを含めて、クラウドユーザに利益を与える。ＶＣ１０４及び完全な物理的ドライブ１０８は、単一カスタマーのコントロールのもとにあるので、カスタマーは、ＶＰＳＡサービスプロバイダー又はＶＰＳＡサービスプロバイダーの他のカスタマーと共有されないプライベートな暗号キーを使用する。
【００１１】
ＳＮ１１４は、ターゲットドライバーを経てＶＣ１０４へバーチャルドライブ１０６を露出させて、ＶＣ１０４からバーチャルドライブ１０６への標準的Ｉ／Ｏ要求（例えば、ＳＣＳＩ又はインフィニバンド）を許す。又、ＳＮ１１４は、各バーチャルドライブ内に小さなセットアップ区画１０９を生成する。以下に述べるように、ＶＣ１０４は、セットアップ区画を使用してＶＰＳＡのメタデータを記憶する。又、ＳＮ１１４は、Ｉ／Ｏ計測及びエラー統計値を収集し及び維持し、ＶＣ１０４のインターフェイスを与えて、バーチャルドライブ１０６のドライブ特性及びドライブ統計値を問合せ、ＡＺＣ１１６のインターフェイスを与えて、物理的ドライブ１０８のドライブインベントリー、ドライブ特性、及びドライブ統計値を問合せる。
【００１２】
ＡＺＣ１１６は、とりわけ、カスタマーからのサービス要求に基づいてＡＺのサーバーコンピュータにＶＣを生成及び配置するという役割を果たす。ＶＰＳＡを生成するとき、ＡＺＣ１１６は、サーバーコンピュータにおける利用可能な中央処理ユニット（ＣＰＵ）及びランダムアクセスメモリ（ＲＡＭ）、特殊なネットワークインターフェイスカード（ＮＩＣ）アダプタ（ＳＲ−ＩＯＶイネーブルＮＩＣのような）の存在、及びＩ／Ｏ負荷バランスのような種々のネットワークトポロジー及びリソース制約を考慮する。又、ＡＺＣ１１６は、もはや必要でないか又は支払が済んだＶＣ１０４の削除も行う。ＡＺＣ１１６は、カスタマーからのサービス要求を満足させるためにサーバーコンピュータからバーチャルドライブ１０６を割り当てる。ＡＺＣ１１６は、物理的ドライブ１０８のドライブ特性と、サービス要求を満足させるために物理的ドライブ１０８がアタッチされるＳＮ１１４とを考慮する。又、ＡＺＣ１１６は、ＶＣ１０４がコントロール及びデータ通信のために当該ＳＮ１１４と通信でき、同じＶＰＳＡのＶＣ１０４がＶＣクラスターマネージメントのために互いに通信でき、且つカスタマーがコントロール及びデータ通信のためにＶＣ１０４と通信してＶＰＳＡへのアクセスのプライバシーを保証するための認証を行えるように、ＡＺにおいてネットワークを構成する。
【００１３】
ウェブサーバー１１８は、ウェブフォーム１２０をカスタマーコンピュータ１１２の１つへ送信する。ウェブフォーム１２０は、新たなＶＰＳＡのサービス要求のパラメータをカスタマーから返送するように構成される。それらのパラメータは、（１）ＶＰＳＡにおける各ＶＣのＶＣハードウェアモデル、（２）ＶＰＳＡのドライブ特性、及び（３）ＶＰＳＡのドライブ量、を明示する。ＶＣハードウェアモデルは、ＣＰＵモデル、１つ以上のＣＰＵ特徴、ＣＰＵ量、ＲＡＭ容量、及びネットワーク帯域巾を明示する。ドライブ特性は、ドライブ形式（ＨＤＤ、ＳＳＤ又はＰＣＭ）、ドライブ容量、ドライブ暗号化、及びドライブインターフェイス（例えば、ＳＣＳＩ又はインフィニバンド）を明示する。それらのパラメータは、更に、ＶＰＳＡへのＩ／Ｏアクセスを認証するためのユーザ名及びパスワードのようなクレデンシャルを含み、それらは、後で、ＡＺＣ１１６によりＶＰＳＡのＶＣ１０４へ送られる。
【００１４】
それらのパラメータに基づいて、ウェブサーバー１１８は、ＶＰＳＡに対してサービス料金を伴うウェブページ１２２をカスタマーコンピュータ１１２の１つへ送信する。サービス料金は、単位時間当たりのコストである。ウェブページ１２２は、カスタマーからＶＰＳＡを生成するための確認を返送するように構成される。ウェブサーバー１１８は、それが確認を受け取ると、パラメータをＡＺＣ１１６へ送信する。
【００１５】
マルチテナント性を説明するために、システム１００は、ＶＰＳＡ１２６及びＶＰＳＡ１２８を含むように示されている。ＶＰＳＡ１２６は、ＶＣ１０４−１、１０４−２と、物理的ドライブ１０８−１、１０８−２、１０８−３から発生されたバーチャルドライブ１０６−１、１０６−２、１０６−３とを含む。物理的ドライブ１０８−１、１０８−２、１０８−３は、ＳＮ１１４−１、１１４−２及び１１４−３の間に分散される。ＶＣ１０４−１及び１０４−２は、バーチャルドライブ１０６−１、１０６−２、１０６−３から発生されたデータボリューム１１０−１を、コンピュータネットワーク１０２を経て、カスタマーコンピュータ１１２へ露出させる。
【００１６】
ＶＰＳＡ１２８は、ＶＣ１０４−３、１０４−４と、物理的ドライブ１０８−４、１０８−５から発生されたバーチャルドライブ１０６−４、１０６−５とを含む。物理的ドライブ１０８−４及び１０８−５は、ＳＮ１１４−２及び１１４−３の間に分散される。ＶＣ１０４−３及び１０４−４は、バーチャルドライブ１０６−４及び１０６−５から発生されたデータボリューム１１０−２を、コンピュータネットワーク１０２を経て、カスタマーコンピュータ１２７へ露出させる。
【００１７】
ＶＰＳＡの冗長性のために、ＶＣは、異なるサーバーコンピュータに配置され、そして異なるサーバーコンピュータに配置されたＳＮに物理的ドライブがアタッチされる。しかしながら、１つのサーバーコンピュータは、同じＶＰＳＡからのＶＣ及びＳＮと、異なるＶＰＳＡからのＶＣとを実行する。性能を高め又はコストを下げるために、物理的ドライブは、同じＳＮにアタッチされる。
【００１８】
図２は、本発明の１つ以上の実施形態においてソフトウェアシステム１００（図１）を実施するための規範的なハードウェアシステム２００のブロック図である。システム２００において、ＳＮ１１４（図１）は、以下「ＳＮコンピュータ」と称されるサーバーコンピュータ２１４に位置される。ＳＮコンピュータ２１４におけるＳＮ１１４が充分なハードウェアリソースを有するよう保証するために、ＳＮコンピュータ２１４におけるＶＣ１０４の数が制限される。システム２００は、ＳＮコンピュータ２１４−１、２１４−２、２１４−３、任意のＡＺＣコンピュータ２１６、及びウェブサーバーコンピュータ２１８を備えている。ＳＮコンピュータ２１４−１、２１４−２及び２１４−３は、ＶＰＳＡ１２６及び１２８（図１）を構成するためにプロセッサ／メモリ複合体、ＮＩＣ、及び物理的ドライブの物理的プールを形成する。ＡＺＣコンピュータ２１６は、ＡＺＣ１１６（図１）を実行して、ＶＰＳＡのＶＣ１０４及びバーチャルドライブ１０６をＳＮコンピュータ２１４−１、２１４−２及び２１４−３間に分散させる。例えば、ＶＣ１０４−１及びＳＮ１１４−１（図１）は、物理的ドライブ１０８−１と共にＳＮコンピュータ２１４−１に配置され、ＶＣ１０４−２、１０４−３及びＳＮ１１４−２（図１）は、物理的ドライブ１０８−２及び１０８−４と共にＳＮコンピュータ２１４−２に配置され、そしてＶＣ１０４−４及びＳＮ１１４−３（図１）は、物理的ドライブ１０８−３及び１０８−５と共にＳＮコンピュータ２１４−３に配置される。或いは又、ＡＺＣ１１６は、専用のＡＺＣコンピュータ２１６ではなく、ＳＮコンピュータ２１４−１、２１４−２及び２１４−３の１つにおいて実行される。
【００１９】
ウェブサーバーコンピュータ２１８は、ウェブサーバー１１８（図１）を実行して、ウェブフォーム１２０及びウェブページ１２２を生成する。ＳＮコンピュータ２１４及びウェブサーバー２１８は、１つ以上のパブリックスイッチ２３２によってコンピュータネットワーク１０２へ接続される。ＳＮコンピュータ２１４、ＡＺＣコンピュータ２１６及びウェブサーバー２１８は、１つ以上のプライベートスイッチ２３４及び２３６により互いに接続される。
【００２０】
図３は、本発明の１つ以上の実施形態における規範的なＳＮコンピュータ２１４−２のブロック図である。ＳＮコンピュータ２１４−２のハードウェアは、ＣＰＵ３０４及びＲＡＭ３０６を伴うプロセッサ／メモリ複合体３０２と、ＮＩＣ３０８と、物理的ドライブ１０８−２及び１０８−４とを含む。ＳＮコンピュータ２１４−２のソフトウェアは、ＳＮ１１４−２と、ＶＭ３１０−２、３１０−３で実行されるＶＣ１０４−２、１０４−３とを含む、ＶＭは、次いで、ハイパーバイザー３１２で実行される。ＶＭ３１０−２及び３１０−３は、ＳＮコンピュータ２１４−２の専用及び／又は共有ハードウェアから生成されたバーチャルＣＰＵ、ＲＡＭ、及びＮＩＣを有する。ＳＮコンピュータ２１４−２のソフトウェアは、更に、専用のＣＰＵ、ＲＡＭ及びＮＩＣでＶＭ３１０−２及び３１０−３をスポーンし且つＶＭ３１０−２、ＶＭ３１０−３においてＶＣ１０４−２、１０４−３をスタートする計算エージェント３１４を含む。例えば、計算エージェント３１４は、専用のＣＰＵ及びＲＡＭから生成されたバーチャルＣＰＵ及びＲＡＭを伴うがＮＩＣからの利用可能なネットワーク帯域巾の一部分で生成されたバーチャルＮＩＣ（ＶＮＩＣ）も伴うＶＭを生成する。
【００２１】
図４は、本発明の１つ以上の実施形態においてソフトウェアシステム１００（図１）を実施するための規範的な別のハードウェアシステム４００のブロック図である。システム４００において、ＶＣ１０４（図１）は、以下「計算ノードコンピュータ」又は「ＣＮコンピュータ」４１２と称されるサーバーコンピュータに位置され、そしてＳＮ１１４（図１）は、ＳＮコンピュータ４１４に位置される。システム４００は、ＣＮコンピュータ４１２−１、４１２−２、４１２−３、ＳＮコンピュータ４１４−１、４１４−２、４１４−３、任意のＡＺＣコンピュータ２１６、及びウェブサーバーコンピュータ２１８を備えている。
【００２２】
ＣＮコンピュータ４１２は、ＶＣ１０４を実施するためにプロセッサ／メモリ複合体及びＮＩＣの物理的プールを形成し、そしてＳＮコンピュータ４１４は、物理的ドライブ１０８の物理的プールを形成する。例えば、ＶＣ１０４−１（図１）は、ＣＮコンピュータ４１２−１に配置され、ＶＣ１０４−２、１０４−３（図１）は、ＣＮコンピュータ４１２−２に配置され、そしてＶＣ１０４−４（図１）は、ＣＮコンピュータ４１２−３に配置される。ＳＮ１１４−１（図１）は、物理的ドライブ１０８−１と共にＳＮコンピュータ４１４−１に配置され、ＳＮ１１４−２（図１）は、物理的ドライブ１０８−２及び１０８−４と共にＳＮコンピュータ４１４−２に配置され、そしてＳＮ１１４−３（図１）は、物理的ドライブ１０８−３及び１０８−５と共にＳＮコンピュータ４１４−３に配置される。
【００２３】
各ＣＮコンピュータ４１２は、図３のＳＮコンピュータ２１４−２と同様に実施されるが、ストレージノード１１４−２をもたず、ＶＣ１０４の数も異なる。各ＳＮコンピュータ４１４は、ＳＮコンピュータ２１４−２と同様に実施されるが、ＶＣ１０４、計算エージェント３１４及びハイパーバイザー３１２（図３）をもたない。
【００２４】
ＣＮコンピュータ４１２及びウェブサーバー２１８は、１つ以上のパブリックスイッチ２３２によりコンピュータネットワーク１０２に接続される。ＣＮコンピュータ４１２、ＳＮコンピュータ４１４、ＡＺＣコンピュータ２１６、及びウェブサーバー２１８は、１つ以上のプライベートスイッチ２３４により互いに接続される。
【００２５】
図５は、本発明の１つ以上の実施形態においてシステム１００で新たなＶＰＳＡをスポーンする方法５００のフローチャートである。この方法５００及びここに述べる他の方法は、１つ以上のブロックで示された１つ以上のオペレーション、ファンクション又はアクションを含む。ブロックは、順次に示されているが、並列に遂行されてもよいし、及び／又はここに述べるものとは異なる順序で遂行されてもよい。又、種々のブロックは、望ましい具現化に基づいて、より少数のブロックへ合成されてもよいし、付加的なブロックへ分割されてもよいし、及び／又は排除されてもよい。方法５００は、ブロック５０２でスタートする。
【００２６】
ブロック５０２において、ウェブサーバー１１８は、ウェブフォーム１２０をカスタマーコンピュータ１１２へ送信して、カスタマーがＶＰＳＡのパラメータを与えることができるようにする。上述したように、パラメータは、（１）ＶＰＳＡにおける各ＶＣのＶＣハードウェアモデル、（２）ＶＰＳＡのドライブ特性、及び（３）ＶＰＳＡのドライブ量、を明示する。パラメータは、更に、ＶＰＳＡへのＩ／Ｏアクセスを認証するためのクレデンシャルを含む。パラメータは、ウェブサーバー１１８へ返送される。ブロック５０２に続いて、ブロック５０４が行われる。
【００２７】
ブロック５０４において、ウェブサーバー１１８は、ウェブページ１２２をＶＰＳＡの料金と共にカスタマーコンピュータ１１２へ送信する。方法５００の説明上、ＶＰＳＡを生成するための確認がウェブサーバー１１８へ返送されると仮定する。ブロック５０４に続いて、ブロック５０６が行われる。
【００２８】
ブロック５０６において、ウェブサーバー１１８は、サービス要求と、ＶＰＳＡのパラメータをＡＺＣ１１６へ送信する。ブロック５０６に続いて、ブロック５０８が行われる。
【００２９】
ブロック５０８において、システム１００は、ＶＰＳＡにおける更に生成されるべきＶＣ１０４のためのプレースホルダにバーチャルドライブ１０６を割り当てる。ブロック５０８は、以下に詳細に述べる図６Ａ及び図６Ｂの方法６００で実施される。ブロック５０８に続いて、ブロック５１０が行われる。
【００３０】
ブロック５１０において、ＡＺＣ１１６は、バーチャルドライブ１０６がＶＰＳＡに首尾良く割り当てられたかどうか決定する。もしそうでなければ、ブロック５１０に続いて、ブロック５１２が行われる。物理的ドライブ１０８が首尾良く割り当てられた場合には、ブロック５１０に続いて、ブロック５１４が行われる。
【００３１】
ブロック５１２において、ＡＺＣ１１６は、ＶＰＳＡのドライブ必要性を満足するバーチャルドライブ１０６が不充分であるときに、エラーが発生したと決定する。ＡＺＣ１１６は、ウェブサーバー１１８がエラーメッセージをカスタマーコンピュータ１１２へ送信するようにさせ、そして方法５００を終了させる。
【００３２】
ブロック５１４において、システム１００は、以下に詳細に述べる図７Ａ及び図７Ｂの方法７００によりＶＰＳＡのＶＣ１０４を生成する。ブロック５１４に続いて、ブロック５１６が行われる。
【００３３】
ブロック５１６において、ＡＺＣ１１６は、ＶＰＳＡのＶＣ１０４が首尾良く生成されたかどうか決定する。もしそうでなければ、ブロック５１６に続いて、ブロック５１８が行われる。ＶＰＳＡのＶＣ１０４が首尾良く生成された場合には、ブロック５１６に続いて、ブロック５２２が行われる。
【００３４】
ブロック５１８において、ＡＺＣ１１６は、ブロック５０８でＶＰＳＡに既に割り当てられたバーチャルドライブ１０６を解放する。ブロック５１８に続いて、ブロック５２０が行われる。
【００３５】
ブロック５２０において、ＡＺＣ１１６は、ＶＰＳＡに対する明示されたＶＣハードウェアモデルを伴うＶＣ１０４が不充分であるときに、エラーが発生したと決定する。ＡＺＣ１１６は、ウェブサーバー１１８がエラーメッセージをカスタマーコンピュータ１１２へ送信するようにさせ、そして方法５００を終了させる。
【００３６】
ブロック５２２において、ＶＣ１０４は、互いにクラスター化ハンドシェークを確立して、ＶＣの役割を確立する。例えば、あるＶＣ１０４が一次として働く一方、別のＶＣ１０４がスタンバイであるか、或いは両ＶＣがアクティブに負荷を分担する。ブロック５２２に続いて、ブロック５２４が行われる。
【００３７】
ブロック５２４において、ＶＣ１０４は、バーチャルドライブ１０６からＳＮ１１４により生成されたセットアップ区画を発見するように試みる。上述したように、セットアップ区画がＶＣ１０４により使用されて、ＶＰＳＡシステム情報及びメタデータを記憶するためのセットアップボリュームを生成する。ブロック５２４に続いて、ブロック５２６が行われる。
【００３８】
ブロック５２６において、ＶＣ１０４は、それらがセットアップ区画を発見したかどうか決定する。もしそうでなければ、ブロック５２６に続いて、ブロック５２８が行われる。ＶＣ１０４がセットアップ区画を発見した場合には、ブロック５２６に続いて、ブロック５３０が行われる。
【００３９】
ブロック５２８において、ＶＣ１０４は、エラーが生じたことをＡＺＣ１１６に通知する。ＡＺＣ１１６は、ウェブサーバー１１８がエラーメッセージをカスタマーコンピュータ１１２へ送信するようにさせ、そして方法５００を終了させる。
【００４０】
ブロック５３０において、ＶＣ１０４は、そのセットアップ区画の冗長セットから、保護されたセットアップボリュームを生成する。そのセットアップボリュームは、これに限定されないが、物理的及びバーチャルオブジェクトメタデータ、計測統計値、並びにロギング及びトレーシングを含むＶＰＳＡシステムデータの持続ストレージを与えるのに使用される。
【００４１】
図６Ａ及び図６Ｂは、本発明の１つ以上の実施形態においてシステム１００でバーチャルドライブ１０６をＶＰＳＡのＶＣ１０４に割り当てるための規範的な方法６００のフローチャートである。この方法６００は、ブロック６０２で始まる。
【００４２】
ブロック６０２において、ウェブサーバー１１８は、ウェブフォーム１２０をカスタマーコンピュータ１１２へ送信し、カスタマーがＶＰＳＡのパラメータを与えることができるようにする。上述したように、パラメータは、ドライブ特性と、ＶＰＳＡに対する１組のバーチャルドライブ１０６のドライブ量とを含む。ドライブ特性は、ドライブ形式、ドライブ容量、及びドライブ暗号を明示する。パラメータは、ウェブサーバー１１８へ返送される。ブロック６０２に続いて、ブロック６０４が行われる。
【００４３】
ブロック６０４において、ウェブフォーム１２０は、カスタマーが別の１組のバーチャルドライブ１０６を追加したいかどうか決定するように構成される。例えば、ウェブフォーム１２０は、別の１組のバーチャルドライブ１０６を追加するためにカスタマーが選択する「より多くのドライブを追加する」ボタンを含む。カスタマーが別の１組のバーチャルドライブ１０６を追加したい場合には、ブロック６０４は、ブロック６０２へループバックする。さもなければ、ブロック６０４に続いて、ブロック６０６が行われる。
【００４４】
ブロック６０６において、ＡＺＣ１１６は、利用可能な物理的ドライブ１０８及びそれらのドライブ特性のリストを全てのＶＣ１０４から検索する。このリストは、ＳＮ１１４によりレポートされるドライブインベントリーから発生される。ブロック６０６に続いて、ブロック６０８が行われる。
【００４５】
ブロック６０８は、要求された全ドライブ形式を通るループのスタートである。要求された各組のバーチャルドライブ１０６について、ＡＺＣ１１６は、要求された組に対して明示されたドライブ特性を満足するか又はそれを越える利用可能な物理的ドライブ１０８を有するＳＮ１１４の候補ＳＮリストを生成する。ブロック６０８に続いて、ブロック６１０が行われる。
【００４６】
ブロック６１０において、ＡＺＣ１１６は、候補ＳＮリストが空であるかどうか決定する。もしそうであれば、ブロック６１０に続いて、ブロック６１２が行われる。さもなければ、ブロック６１０に続いて、ブロック６１４が行われる。
【００４７】
ブロック６１２において、ＡＺＣ１１６は、利用可能な物理的ドライブ１０８がないときにエラーが発生したと決定する。ＡＺＣ１１６は、ウェブサーバー１１８がエラーメッセージをカスタマーコンピュータ１１２へ送信するようにさせ、そして方法６００を終了させる。
【００４８】
ブロック６１４において、ＡＺＣ１１６は、１つ以上の分類基準に基づいて候補ＳＮリストを分類する。分類基準は、基礎となるサーバーコンピュータの利用率である。ブロック６１４に続いて、ブロック６１６が行われる。
【００４９】
ブロック６１６において、ＡＺＣ１１６は、１つ以上のドライブ分布及びＲＡＩＤ保護基準を満足する候補ＳＮリストにおけるトップランクＳＮを選択する。例えば、２方向ＲＡＩＤ−１は、２つのＳＮを要求し、一方、ＲＡＩＤ−５は、できるだけ多数のＳＮの間での分布を要求する。ブロック６１６に続いて、ブロック６１８が行われる。
【００５０】
ブロック６１８において、ＡＺＣ１１６は、充分なＳＮがあるかどうか決定する。もしそうでなければ、ブロック６１８に続いて、ブロック６２０が行われる。さもなければ、ブロック６１８に続いて、ブロック６３０が行われる。
【００５１】
ブロック６３０において、ＡＺＣ１１６は、追加要求された１組以上のバーチャルドライブ１０６がループに留まるかどうか決定する。もしそうであれば、ブロック６３０は、ブロック６０８へループバックし、新たに要求される組に対して新たな候補ＳＮリストを生成し、そして上述したプロセスを繰り返す。さもなければ、ブロック６３０に続いて、ブロック６３２が行われる。
【００５２】
ブロック６３２において、ＡＺＣ１１６は、選択されたＳＮリストにおける選択された各ＳＮ１１４へメッセージを送信し、ドライブ特性及びドライブ量を満足するか又はそれを越えるバーチャルドライブ１０６をＶＰＳＡに割り当てる。ブロック６３２に続いて、ブロック６３４が行われる。
【００５３】
ブロック６３４において、選択されたＳＮ１１４は、各バーチャルドライブ１０６においてセットアップ区画及びデータ区画を生成する。上述したように、セットアップ区画は、ＶＰＳＡシステム情報及びメタデータを記憶するためのセットアップボリュームを生成するようにＶＣ１０４により使用される。ブロック６３４に続いて、ブロック６３６が行われる。
【００５４】
ブロック６３６において、選択されたＳＮは、セットアップ及びデータ区画をＶＰＳＡのＶＣ１０４へ露出させる。ブロック６３６に続いて、ブロック６３８が行われる。
【００５５】
ブロック６３８において、選択されたＳＮ１１４は、更新されたドライブインベントリーをＡＺＣ１１６へ報告し、方法６００を終了させる。
【００５６】
図７Ａ及び図７Ｂは、本発明の１つ以上の実施形態においてシステム１００でＶＰＳＡにＶＣを生成するための規範的な方法７００のフローチャートである。この方法７００は、ブロック７０２で開始する。
【００５７】
ブロック７０２において、ウェブサーバー１１８は、ウェブフォーム１２０をカスタマーコンピュータ１１２へ送信して、カスタマーがＶＰＳＡのパラメータを与えることができるようにする。上述したように、パラメータは、ＶＰＳＡの各ＶＣに対するＶＣハードウェアモデルと、ＶＰＳＡへのＩ／Ｏアクセスを認証するためのクレデンシャルとを含む。ＶＣハードウェアモデルは、ＣＰＵモデル、１つ以上のＣＰＵ特徴、ＣＰＵ量、ＲＡＭ容量、及びネットワーク帯域巾を明示する。パラメータは、ウェブサーバー１１８へ返送され、ウェブサーバーは、それらをＡＺＣ１１６へ送信する。ブロック７０２に続いて、ブロック７０４が行われる。
【００５８】
ブロック７０４において、ＡＺＣ１１６は、全てのサーバーコンピュータにおける計算エージェント３１４から、ＣＰＵ、メモリ、及びＮＩＣのネットワーク帯域巾の利用状態を検索する。ブロック７０４に続いて、ブロック７０６が行われる。
【００５９】
ブロック７０６において、ＡＺＣ１１６は、明示されたＶＣハードウェアモデルを満足するか又はそれを越える利用可能なネットワーク帯域巾をもつ利用可能なプロセッサ／メモリ複合体及びＮＩＣを有するＡＺ内のサーバーコンピュータの候補サーバーコンピュータリストを生成する。ブロック７０６に続いて、ブロック７０８が行われる。
【００６０】
ブロック７０８において、ＡＺＣ１１６は、候補サーバーコンピュータリストがＶＣ１０４の要求された数より少ないかどうか決定する。もしそうであれば、ブロック７０８に続いて、ブロック７１０が行われる。さもなければ、ブロック７０８に続いて、ブロック７１２が行われる。
【００６１】
ブロック７１０において、ＡＺＣ１１６は、要求されたＶＣハードウェアモデルを満足するか又はそれを越えるプロセッサ／メモリ複合体及びＮＩＣが不充分であるときにエラーが生じたと決定する。ＡＺＣ１１６は、ウェブサーバー１１８がエラーメッセージをカスタマーコンピュータ１１２へ送信するようにさせ、そして方法７００を終了させる。
【００６２】
ブロック７１２において、ＡＺＣ１１６は、１つ以上の分類基準に基づいて候補サーバーコンピュータリストを分類する。分類基準は、サーバーコンピュータの利用率である。ブロック７１２に続いて、ブロック７１４が行われる。
【００６３】
ブロック７１４において、ＡＺＣ１１６は、利用可能なネットワークリソースをチェックし、そしてＶＣネットワーク構成を定義する。ある範囲の利用可能なパブリックＩＰアドレスから、ＡＺＣ１１６は、カスタマーコンピュータと通信するためにＶＣ１０４のＶＮＩＣへパブリックＩＰアドレスを割り当てる。ある範囲の利用可能なプライベートＩＰアドレスから、ＡＺＣ１１６は、カップリングＶＣ間、及びＶＣとＳＮとの間で通信するためにＶＣ１０４のＶＮＩＣにＩＰアドレスを割り当てる。ブロック７１４に続いて、ブロック７１６が行われる。
【００６４】
ブロック７１６において、ＡＺＣ１１６は、ＶＣ１０４及びＳＮ１１４に割り当てるための充分なパブリック及び／又はプライベートＩＰアドレスがあるので、ネットワーク構成が首尾良くセットされたかどうか決定する。もしそうでなければ、ブロック７１６に続いて、ブロック７１８が行われる。さもなければ、ブロック７１６に続いて、ブロック７２０が行われる。
【００６５】
ブロック７１８において、ＡＺＣ１１６は、パブリック及び／又はプライベートＩＰアドレスが不充分であるときにエラーが生じたと決定する。ＡＺＣ１１６は、ウェブサーバー１１８がエラーメッセージをカスタマーコンピュータ１１２へ送信するようにさせ、そして方法７００を終了させる。
【００６６】
ブロック７２０において、ＡＺＣ１１６は、候補サーバーコンピュータリストにおいてトップランクサーバーコンピュータを選択し、そしてそれに基づいてＶＣソフトウェア（画像）でＶＭをスポーンするための要求を、それに基づいて計算エージェント３１４（図３）へ送信する。ブロック７２０に続いて、ブロック７２２が行われる。
【００６７】
ブロック７２２において、選択されたサーバーコンピュータにおける計算エージェント３１４は、その要求を受信して、新たなＶＭをスポーンする。ブロック７２２に続いて、ブロック７２４が行われる。
【００６８】
ブロック７２４において、計算エージェント３１４は、ＶＭが首尾良くスポーンされたかどうか決定する。もしそうでなければ、ブロック７２４に続いて、ブロック７２６が行われる。さもなければ、ブロック７２４に続いて、ブロック７２８が行われる。
【００６９】
ブロック７２６において、ＡＺＣ１１６は、ＶＭをスポーンするときにエラーが生じたかどうか決定する。ＡＺＣ１１６は、ウェブサーバー１１８がエラーメッセージをカスタマーコンピュータ１１２へ送信するようにさせ、そして方法７００を終了させる。
【００７０】
ブロック７２８において、ＶＣは、ＶＭにおいて開始し、そしてＡＺＣ１１６からＶＰＳＡ及びＶＣ情報を検索し、方法７００を終了させる。ＡＺＣ１１６から検索される情報は、ＶＰＳＡ情報（名前及びＩＤ）、ＶＣ情報（各ＶＣは、ＡＺ内に独特のインスタンスＩＤを有する）、ネットワーク情報（ＶＣのＭＡＣ及びＩＰアドレス、並びにプライベート及びパブリックネットワークに対するＶＭのＶＮＩＣの関連性）、及びＶＰＳＡへのＩ／Ｏアクセスを認証するためのクレデンシャルを含む。そのような情報は、ＶＣが持続的識別を維持し、そのネットワークを適切にセットアップし、及び１つ以上のカップリングＶＣとのクラスター化ハンドシェークを確立するために必要である。
【００７１】
上述した実施形態の種々の他の適応及び組み合わせも本発明の範囲内である。多数の実施形態が特許請求の範囲によって包含される。
【符号の説明】
【００７２】
１００：ソフトウェアシステム
１０２：コンピュータネットワーク
１０４：バーチャルコントローラ（ＶＣ）
１０６：バーチャルドライブ
１０８：物理的ドライブ
１１０：バーチャルボリューム
１１２：カスタマーコンピュータ
１１４：ストレージノード（ＳＮ）
１１６：利用ゾーンコントローラ（ＡＺＣ）
１１８：ウェブサーバー
１２０：ウェブフォーム
１２２：ウェブページ
１２４：マネージメントインターフェイス
１２６、１２８：ＶＰＳＡ
２００：ハードウェアシステム
２１４：サーバーコンピュータ
２１６：ＡＺＣコンピュータ
２１８：ウェブサーバーコンピュータ
３０２：プロセッサ／メモリ複合体
３０４：ＣＰＵ
３０６：ＲＡＭ
３０８：ＮＩＣ
３１０：ＶＭ
３１２：ハイパーバイザー
４００：システム
４１２：ＣＮコンピュータ
４１４：ＳＮコンピュータ
【図１】
0005762643.tif 000002
【図２】
0005762643.tif 000003
【図３】
0005762643.tif 000004
【図４】
0005762643.tif 000005
【図５】
0005762643.tif 000006
【図６Ａ】
0005762643.tif 000007
【図６Ｂ】
0005762643.tif 000008
【図７Ａ】
0005762643.tif 000009
【図７Ｂ】
0005762643.tif 000010