以下の説明で、様々な実施形態を説明する。説明する目的のために、具体的な構成及び詳細を、実施形態の完全な理解を提供するために記載する。しかし、実施形態が具体的な詳細なしに実施されてもよいことも、当業者には明らかであろう。さらに、周知の特徴は、説明される実施形態を不明瞭にしないようにすべく省略または簡略化してもよい。
本明細書で説明及び示唆される技法は、ソースホストコンピュータシステムからターゲットホストコンピュータシステムに至る仮想マシンインスタンスの移行中に仮想コンピュータシステム(本明細書では「仮想マシンインスタンス」とも称する)のリソース及びリソース状態の移行を管理するための方法、システム、及びプロセスを含む。本明細書で説明される方法、システム、及びプロセスは、仮想マシンインスタンスリソースの段階的な移行を管理し、クリティカルである移行フェーズ(例えば、仮想マシンインスタンスの変更が移行に悪影響を与える可能性がある移行のフェーズ)の長さ及び影響の両方を低減するよう構成される。本明細書で説明する例では、ブロックレベルストレージサービスによってもたらされるブロックストレージデバイスへのアクセスは、仮想マシンインスタンスの移行中に管理され、仮想マシンインスタンスの状態及びブロックストレージデバイスの状態は、移行の影響を受けない。このような管理の改善は、クリティカルである移行フェーズの間リソースへのアクセスを管理し、状態が保持されるように移行中の入出力要求に対する応答を送ることによって達成される。
仮想マシン移行は、通常段階的に進むことができる。動作中の仮想マシンインスタンスが、ソースホストコンピュータシステムから適切なターゲットホストコンピュータシステムへ移行させる有望な候補であると判断した結果、ターゲットホストコンピュータシステムは、まず、移行の準備をし得る。ターゲット位置は、実行中の仮想マシンインスタンスの構成に少なくとも部分的に基づいて、可能な候補位置のセットから選択し得る。次いで、元の仮想マシンインスタンスと同じ構成でターゲットに仮想マシンの新しいインスタンスを作成でき、元の仮想マシンインスタンスが引き続き動作し続けている間に、元の仮想マシンインスタンスからのメモリ及び状態情報を新たな仮想マシンインスタンスにコピーすることができる。
この移行のフェーズ中に、実行中の仮想マシンインスタンスに関連付けられたリソースを識別し、それらのターゲット位置への移行を開始し得る。ブロックストレージデバイスの場合、この状態で、ブロックストレージデバイスの状態の管理を開始することが重要である。なぜこれが重要であるかの簡単な例として、動作中の仮想マシンインスタンスに関するプロセスがファイル(第1の入出力要求)を作成し、そのファイルに第1の値を書き込み(第2の入出力要求)、そのファイルに第2の値を書き込み(第3の入出力要求)、その値を読み直して(第4の入出力要求)、次いでそのファイルを削除する(第5の入出力要求)場合を考えられたい。移行中に、異なる仮想マシンインスタンスがこれら5つの入出力要求の異なる段階にあることができ、これら5つの要求のいずれかが誤った順序で受信された場合、非常に異なる結果が生じる可能性がある。異常な例では、ファイルが第2の要求の前に削除され、エラーが発生する可能性がある。
本明細書で説明する技法を利用した場合、移行が始まると、ブロックストレージデバイスへのアクセスを管理するための三角アプローチが利用される。三角アプローチを利用すると、ソース位置の仮想マシンインスタンスから、入出力要求を受信したとき、それらの要求に対する応答が、ターゲット位置の仮想マシンインスタンスに提供される。これは状態を維持し、応答の正しい順序付けを確実に行う。そのとき、クリティカルである移行フェーズの間に、元の仮想マシンインスタンスによるブロックストレージへのアクセスがロックされ得る(すなわち、追加の変更が確実に起こらないようにするために、すべての入出力要求を防止し得る)。クリティカルフェーズの一部分が「フリップ」である。これは、ソース仮想マシンインスタンスがもはや利用されなくなり、ターゲット仮想マシンがアクティブになるときである。フリップ中に、元の仮想マシンインスタンスのメモリ及び/または状態への最終変更を、新たな仮想マシンインスタンスに伝搬させることができて、任意のブロックまたは保留中の入出力要求を含めた2つの仮想マシンインスタンスが同一であるようにする。
フリップが成功裏に完了し、クリティカルフェーズが成功裏に完了すると、新たな仮想マシンインスタンスが動作可能になり、元の仮想マシンインスタンスによるブロックストレージへのアクセスは終了する(例えば、リースステータスを「非アクティブ」に設定することによって)。次いで、新たな仮想マシンインスタンスは、ブロックストレージデバイスに完全かつ排他的にアクセスした状態のアクティブリースを有し得る。エラー、キャンセルまたはその他何らかのこのような事象の結果としてフリップが成功裏に完了せず、クリティカルフェーズが成功裏に完了しない場合、元の仮想マシンインスタンスはブロックストレージデバイスへのアクセスを復元して、要求応答が適切なタイムアウト後に存在する。
図1は、少なくとも1つの実施形態による、仮想マシンインスタンスが新たな位置に移行される、例示的な環境100を示す。1つ以上の仮想マシンインスタンスは、コンピューティングリソースサービスプロバイダ102によって提供されるホストコンピュータシステムで動作することができる。図1に示す例では、第1仮想マシンインスタンス(元のVMインスタンス114)は、第1の位置(ソース位置110)で動作している。第1の位置は、1つまたは複数の仮想マシンインスタンスのインスタンス化のために、仮想コンピュータシステムサービスに、共有されるハードウェアを提供するように構成された1つまたは複数のホストコンピュータシステムであってもよい。元のVMインスタンス114は、ソース位置110に関連する複数の仮想マシンインスタンスのうちの1つであってもよい。ソース位置110に関連する複数の仮想マシンインスタンスの各々は、いくつかの状態の1つ、例えば動作中、一時停止中、中断中(例えば、一時停止して二次的なストレージに記憶する)、または他の何らかの状態にし得る。図1に示す例では、元のVMインスタンス114が動作(すなわち、1つまたは複数の動作を実行中)している。ソース位置110における元のVMインスタンス114は、以前移行した結果として、別の位置からソース位置110に先行して移行していてもよい。
元のVMインスタンス114の動作の過程で、元のVMインスタンス114をソース位置110からターゲット位置112に移行することを決定してもよい。元のVMインスタンス114を移行する決定は、ソース位置110でのリソースの有用性の変化(例えば、計算能力の不足、メモリの不足、またはネットワーク帯域幅の不足)の結果として生じることがある。また、元のVMインスタンス114を移行する決定は、元のVMインスタンス114を論理的に1つ以上のコンピューティングリソースサービスプロバイダリソースのより近くに移動するように行われてもよい。また、元のVMインスタンス114をソース位置110からターゲット位置112に移行させる決定は、例えば、元のVMインスタンス114に関連する1つまたは複数のコストを削減するための顧客の要求により行ってもよい。また、元のVMインスタンス114をソース位置110からターゲット位置112に移行させる決定は、仮想マシンインスタンスからより最適な位置を判定するように構成し得るコンピューティングリソースサービスプロバイダに関連して動作するサービス、プロセス、またはモジュールによって行うこともできる。図1に示す例では、ターゲット位置112がコンピューティングリソースサービスプロバイダ102内に示されている。実施形態では、ソース位置110、ターゲット位置112、またはその両方は、コンピューティングリソースサービスプロバイダ102の外部にあってもよい(例えば、それらは、顧客及び/または他の第三者の環境により提供されてもよい)。
元のVMインスタンス114をソース位置110からターゲット位置112に移行させる要求は、コンピューティングリソースサービスプロバイダ102で動作する移行マネージャ104により受信し得る。実施形態では、移行マネージャ104は、コンピューティングリソースサービスプロバイダ102によって提供される複数のサービスのうちの1つとし得るサービスとして、実行される。移行マネージャ104は、本明細書では移行マネージャコンピュータシステムとも呼ばれることがあり、いくつかの実施形態では、分散型コンピュータシステムとして実行し得る。
元のVMインスタンス114をソース位置110からターゲット位置に移行するとき、いくつかのシステム、サービス、プロセス、及びリソースが元のVMインスタンス114と通信することが可能である。これらのシステム、サービス、プロセス、及びリソースは、ソース位置110の元のVMインスタンス114からターゲット位置112の新たなVMインスタンス116に通信が切り替わるようにするため、挙動を同時に変更することは、一般に保証できない。移行マネージャ104は、複数のシステム、サービス、プロセス、及びリソースの各々と通信するよう構成して、移行を管理するようにできる。移行マネージャ104は、非限定的に、移行のための適切な順序の決定、移行のためのワークフローの管理、移行に関連するシステム、サービス、プロセス、及びリソースへのコマンドの発行、移行が成功したかどうかの判断、仮想マシンインスタンスの開始と停止、移行が失敗したかどうかの判断、移行をキャンセルすべきかの判断、エラーが発生した場合のロールバックの管理を含むアクションを実行することによって、移行を管理(または編成)するように構成できる。
移行の間、移行に関連する複数のシステム、サービス、プロセス、及びリソースの各々は、移行のその部分を認識することのみが可能である。移行マネージャ104は、例えば、段階的な移行を管理してもよく、API要求の発行、ライブラリの呼び出し、インターフェース(例えば、ウェブのインターフェース)の利用、または他の何らかの手段によって、移行に関連する複数のシステム、サービス、プロセス、及びリソースの各々の移行を管理してもよい。移行のフェーズ(本明細書では「移行の現在の状態」とも称する)は、アプリケーションプログラミングインターフェース要求などの要求を許可またはブロックし得るかどうかを判定し、移行をキャンセル取り消すべきかどうかを判定するために利用することもできる。
移行マネージャ104はまた、各フェーズのタイムアウト、及び/または移行をキャンセルするべきかどうかを判定するのにも利用できる、移行に関連する複数のシステム、サービス、プロセス、及びリソースの各々に関連する各移行アクションのタイムアウトを、管理することもできる。例えば、ブロックレベルストレージサービス120などのブロックレベルストレージサービスは、移行中に、新たなVMインスタンス116によるブロックストレージデバイス126へのアクセスをもたらすために、移行マネージャ104からAPI要求を受信し得る。このアクセスの一部として、ブロックレベルストレージサービスは、元のVMインスタンス114と新たなVMインスタンス116との間の入出力(「I/O」)要求を同期させる必要があり得る。移行マネージャ104は、この同期のためのタイムアウト値を確立してもよく、その結果例えば、ブロックレベルストレージサービスが妥当な時間内にAPI要求に応答しない場合、移行をキャンセルすることができる。
元のVMインスタンス114をソース位置110からターゲット位置112に移行する要求が、コンピューティングリソースサービスプロバイダ102で動作する移行マネージャ104によって受信されるとき、1つ以上のコマンド106が、その要求に応答して移行マネージャ104により生成され得る。次いで、1つ以上のコマンド106は、コンピューティングリソースサービスプロバイダ102で動作するシステムマネージャ108に送信し得る。実施形態では、システムマネージャ108は、サービスとして実行され、そのサービスはコンピューティングリソースサービスプロバイダ102によって提供される複数のサービスのうちの1つであってもよい。
移行への要求に応答して、移行マネージャ104からシステムマネージャ108に送信され得る1つ以上のコマンド106は、新たな仮想マシンインスタンスをインスタンス化するためターゲット位置を構成するコマンド、ターゲット位置112で新たな仮想マシンインスタンスをインスタンス化するコマンド、メモリ及び/または状態を元のVMインスタンス114から新たなVMインスタンス116にコピーするコマンド、元のVMインスタンス114を非アクティブにするコマンド、新たなVMインスタンス116をアクティブにするコマンド、元のVMインスタンス114または新たなVMインスタンス116のいずれかをロックするコマンド、元のVMインスタンス114または新たなVMインスタンス116のいずれかを一時停止するコマンド、元のVMインスタンス114または新たなVMインスタンス116のいずれかを一時停止解除するコマンド、メモリ及び/または状態情報を元のVMインスタンス114から新たなVMインスタンス116に転送するコマンド、元のVMインスタンス114を分解するコマンド、ソース位置110とターゲット位置112との間の移行を終了させるコマンド、及びソース位置110からターゲット位置112への元のVMインスタンス114の移行118に関連する他のそのようなコマンドを含み得る。
元のVMインスタンス114は、ブロックレベルストレージサービス120により提供されるブロックストレージデバイス126へのアクセス122ができてよい。ブロックレベルストレージサービス120は、コンピューティングリソースサービスプロバイダ102によって提供されてもよい。元のVMインスタンス114によるブロックストレージデバイス126へのアクセス122は、リースを利用してブロックレベルストレージサービス120によって構成されてもよい。図1に示す例では、元のVMインスタンス114によるブロックストレージデバイス126へのアクセス122は、アクティブリース128を利用して、ブロックレベルストレージデバイス120によって構成されるが、これは、例えば、元のVMインスタンス114が入出力要求を発行し、それらの入出力要求に対する応答を受信することを許容するようにする、一時的にブロックストレージデバイス126へのアクセスをもたらすリースである。
また、新たなVMインスタンス116は、ブロックレベルストレージサービス120によって提供されるブロックストレージデバイス126へのアクセス124ができてよい。新たなVMインスタンス116によるブロックストレージデバイス126へのアクセス124は、リースを利用してブロックレベルストレージサービス120より構成され得る。図1に示す例で、新たなVMインスタンス116によるブロックストレージデバイス126へのアクセス124は、ブロックレベルストレージサービス120によってスタンバイリース130(すなわち、スタンバイのステータスのリース)を利用して構成されるものであり、このリースは、ブロックストレージデバイス126への部分的なアクセスを一時的にもたらすリースで、例えば新たなVMインスタンス116が、例えばアクティブリース128(すなわち、アクティブのステータスのリース)を利用して元のVMインスタンス114によって生成された入出力要求に対する応答を受信することを許容するが、新たなVMインスタンス116がそのような要求を生成することは許容しないリースである。
本明細書で利用されるように、リースは、一般的に言えば、例えばブロックストレージデバイス126などのコンピュータシステムリソースにアクセスするための権利の認可及び許可であってもよい。リースはコンピュータシステムリソースへのアクセス(本明細書では「アクセスポリシー」または「アクセスのポリシー」とも称する)を指定できる。リースは、サービス(例えば、ブロックレベルストレージサービス120)によって、またはサービスと連携して動作し、1つまたは複数のコンピュータシステムで実施される異なるプロセス、モジュール、サービス、アプリケーション、またはシステムによって提供されてもよい。ブロックレベルストレージサービス120は、ブロックレベルストレージサービスコンピュータシステムとして実施することができ、例えば、1つまたは複数のコンピュータシステム及び/または1つまたは複数のコンピュータシステム環境で動作する分散型コンピュータシステムとし得る。リースは、アクセスのタイプ、そのアクセスに関連する許可及び/もしくは資格証明、そのアクセスの期間、またはリソースへのアクセスに関連する他のパラメータを指定し得る。例えば、リースは、限られた期間または設定された期間、リソースへのアクセスを認可する一時リースである場合がある。このような一時リースの例は、モバイルネットワーク上にネットワークアドレスを割り当てるリースである。このような一時リースは、通常、一定期間後に(手動または自動で)更新しなければならない。
リースは、リソース(すなわち、サービスに関連付けられたブロックストレージデバイス)へのアクセスを管理し、他のサービス、仮想マシンインスタンス、ユーザ(本明細書では「顧客」とも称する)、プロセス、アプリケーション、モジュール、システムなどのクライアントへのアクセスをもたらすブロックレベルストレージサービス120などのサービスによって提供できる。リースは、サービスによってクライアント(例えば、元のVMインスタンス114または新たなVMインスタンス116)に対して認可されてもよく、そのため、クライアントはリース期間中にリソースにアクセスし得る。実施形態は、リースは、リースがクライアントの寿命の間認可され得るという点で、永続的であり得る。
また、リースの利用は、例えば、現在発行されている数及び種類のリースを利用して、システムがサブスクライブ過多であるか、将来的にサブスクライブ過多になる可能性があるかを判定することによって、サービスがそれ自体のリソースを管理することを可能にし得る。さらに、ブロックレベルストレージサービス120などのサービスは、タイプにより異なるリース(本明細書では、「リースステータス」またはより簡素に「ステータス」と称する)を分類することによって、サービスのリソースに関連する機能を管理し得る。
例えば、クライアントVMインスタンスに提供されるブロックストレージデバイスのアクティブリースによって、クライアントVMインスタンスからブロックストレージデバイスへ入出力要求を送信する完全なアクセスが可能になり、これらの要求に対するすべての応答(ブロックストレージデバイスから)がクライアントVMインスタンスに送信されることを示すこともできる。逆に、非アクティブリースは依然として存在していてよいリースであるが、許可は制限されている。例えば、非アクティブステータスを有する、クライアントVMインスタンスに対して提供されるブロックストレージデバイスのリースは、クライアントVMインスタンスからブロックストレージデバイスへの入出力要求の送信を制限でき、また任意の先行して保留中の要求への任意の応答が、クライアントVMインスタンスに送信されるのを防ぐことも両方できる。他のリースステータスが存在でき、それはクライアントVMインスタンスからブロックストレージデバイスに入出力要求を送信することを許容するが、(ブロックストレージデバイスからの)それらの要求に対するすべての応答が異なるVMインスタンスに送信され得ることを示せるスタンバイリースが非限定的に含まれる。
図2は、図1で説明したような、少なくとも1つの実施形態による、仮想マシンインスタンスの移行が管理される、例示的な環境200を示す。 ユーザ202は、コンピュータシステムクライアントデバイス204を介して1つ以上のサービス212に接続206することができる。サービス212は、コンピューティングリソースサービスプロバイダ210によって提供し得る。いくつかの実施形態では、コンピューティングリソースサービスプロバイダ210は、1つまたは複数のアプリケーション、プロセス、サービス、仮想マシン、及び/または他のそのようなコンピュータシステム実体が実行できる分散型の、仮想化した、及び/またはデータセンターである環境を提供し得る。いくつかの実施形態では、ユーザ202は人物であってもよく、または1つまたは複数のリモートコンピュータシステム上で動作するプロセスであってもよく、または他の何らかコンピュータシステム実体、ユーザ、またはプロセスであってもよい。
コンピュータシステムインスタンスに接続するための1つまたは複数のコマンドは、外部のコンピュータシステム及び/またはサーバから発信されてもよく、またはリモートネットワーク位置の実体、ユーザまたはプロセスから発信されてもよく、コンピューティングリソースサービスプロバイダ内の実体、ユーザまたはプロセスから発信されてもよく、コンピュータシステムクライアントデバイス204のユーザから発信されてもよく、自動プロセスの結果として発信されてもよく、またはこれら及び/または他のそのような起源の実体の組み合わせの結果として発信されてもよい。いくつかの実施形態では、コンピューティングリソースサービスプロバイダ210への接続206を開始する1つまたは複数のコマンドは、ユーザ202の介入なしにサービス212に送信されてもよい。サービス212への接続206を開始するための1つまたは複数のコマンドは、コンピューティングリソースサービスプロバイダ210に接続するための1つまたは複数のコマンドと同じ起源から発信してもよく、別のコンピュータシステム及び/またはサーバから発信してもよく、同一のまたは異なるリモートネットワーク位置の異なる実体、ユーザ、またはプロセスから発信してもよく、コンピューティングリソースサービスプロバイダ内の異なる実体、ユーザ、またはプロセスから発信してもよく、コンピュータシステムクライアントデバイス204の異なるユーザから発信してもよく、またはこれら及び/または他のそのような同じ及び/または異なる実体の組み合わせの結果として発信してもよい。
ユーザ202は、1つ以上の接続206を介して、またいくつかの実施形態では、1つまたは複数のネットワーク208及び/またはそれに関連する実体、例えば、直接的または間接的にネットワークに接続されたサーバを介して、コンピューティングリソースサービスプロバイダ210への接続を要求し得る。サービス212へのアクセスを要求し得るコンピュータシステムクライアントデバイス204は、ネットワークを介してコンピュータシステムに接続し得る任意のデバイスを含むことができ、それは少なくともサーバ、ラップトップ、スマートフォンまたはタブレット、他のスマートデバイス、例えばスマートウォッチ、スマートテレビジョン、セットトップボックス、家庭用ゲーム機及び他のそのようなネットワーク対応スマートデバイスなどのモバイルデバイス、分散型コンピュータシステム及びそのコンポーネント、抽象コンポーネント、例えばゲストコンピュータシステムまたは仮想マシン、及び/または他のタイプのコンピューティングデバイス及び/またはコンポーネントを含む。ネットワークは、例えば、ローカルネットワーク、内部ネットワーク、インターネットなどの公衆ネットワーク、または以下に列挙または記載されるような他のネットワークを含むことができる。ネットワークはまた、以下に列挙または記載されるような様々なプロトコルに従って動作してもよい。
コンピューティングリソースサービスプロバイダ210は、1つまたは複数のホストマシンへのアクセス、ならびにその上で動作し得るように、1つまたは複数の仮想マシン(VM)インスタンスへのアクセスをもたらし得る。また、コンピューティングリソースサービスプロバイダ210によって提供されるサービス212は、1つまたは複数のVMインスタンスとして実装されてもよく、及び/またはホストマシンで動作し得るように1つまたは複数のVMインスタンスを利用してもよい。例えば、コンピューティングリソースサービスプロバイダ210は、ユーザ202に様々なサービスを提供することができ、ユーザ202は、ウェブサービスインターフェースなどのインターフェース、または任意の他のタイプのインターフェースを介してコンピューティングリソースサービスプロバイダ210と通信し得る。図2に示す例示的な環境は、コンピューティングリソースサービスプロバイダ210のサービス212用の単一の接続またはインターフェースを示しているが、各サービスがそれ自体のインターフェースを有していてもよく、一般に、サービスのサブセットは、単一のインターフェースに加えて、またはその代わりに、対応するインターフェースを有していてもよい。
コンピューティングリソースサービスプロバイダ210は、そのユーザまたは顧客に様々なサービス212を提供し得る。コンピューティングリソースサービスプロバイダ210によって提供されるサービスは、仮想コンピュータシステムサービス、ブロックレベルデータストレージサービス、暗号化サービス、オンデマンドデータストレージサービス、通知サービス、認証サービス、ポリシー管理サービス、またはその他のサービスを含み得るが、それらに限定され得ない。記載されたすべての実施形態が、これらのサービスすべてを含まねばならないわけではなく、また明示的に記載したサービスに加えて、または代替として、追加のサービスを提供し得る。上述したように、サービス212の各々は、ユーザ202が、適切に構成されたAPI要求を、ウェブサービスの要求を介して様々なサービスに提出することを可能にする、1つ以上のウェブサービスインターフェースを含むことができる。さらに、サービス212の各々は、サービスが相互にアクセスすることを可能にする(例えば、仮想コンピュータシステムサービスによって提供される仮想マシンインスタンスが、オンデマンドデータストレージサービスにデータを記憶するか、オンデマンドデータストレージサービスからデータを取得すること、及び/またはブロックレベルデータストレージサービスによって提供される1つまたは複数のブロックレベルデータストレージデバイスにアクセスすることを可能にする)1つ以上のサービスインターフェースを含むことができる。
ある例では、仮想コンピュータシステムサービスは、ユーザ202などの顧客に代わって仮想マシンインスタンスをインスタンス化するように構成されたコンピューティングリソースの集合であってもよい。顧客は、仮想コンピュータシステムサービスとやり取りして(適切に構成及び認証されたAPI要求を介して)、コンピューティングリソースサービスプロバイダ210によってホストされ、また操作される物理的コンピューティングデバイスでインスタンス化される仮想マシンインスタンスを、プロビジョニング及び操作することができる。また、仮想コンピュータシステムサービスは、仮想マシンインスタンスの移行を開始するように構成することもできる。仮想マシンインスタンスは、ウェブサイトをサポートするサーバとして動作したり、業務アプリケーションを操作したり、概して顧客の計算能力としてとして機能したりするなど、様々な目的で利用し得る。仮想マシンインスタンスの他のアプリケーションは、データベースアプリケーション、電子商取引アプリケーション、ビジネスアプリケーション、及び/または他のアプリケーションをサポートし得る。
別の例では、ブロックレベルストレージサービス218などのブロックレベルデータストレージサービスは、ブロックストレージデバイス220(及び/またはその仮想化)を利用して顧客のためにデータを記憶するように集合的に動作する1つまたは複数のコンピューティングリソースを含んでいてもよい。ブロックレベルデータストレージサービスのブロックストレージデバイスは、例えば、本明細書で説明する仮想コンピュータシステムサービスによって提供される仮想マシンインスタンスに、動作可能に取り付けて、コンピュータシステムの論理装置(例えば、仮想ドライブ)として機能するようにしてもよい。ブロックストレージデバイスは、対応する仮想マシンインスタンスによって利用/生成されるデータの永続的な記憶を可能にでき、それにおいて仮想コンピュータシステムサービスは仮想マシンインスタンスのための一時記憶データのみを提供し得る。 図2に示す例で、ブロックレベルストレージサービス218は、第1のリース234を利用してブロックストレージデバイス220へのアクセス(すなわち、元のVMインスタンス216からブロックストレージデバイス220へ)をもたらすように構成され、また第2のリース236を利用してブロックストレージデバイス220へのアクセス(すなわち、新たなVMインスタンス224からブロックストレージデバイス220へ)をもたらすように構成される。
図2に示す例で、1つまたは複数のサービス212は、上述したように1つまたは複数の仮想マシンインスタンスとして実装されてもよく、1つまたは複数の仮想マシンインスタンスによってサポートされてもよい。例えば、1つまたは複数のサービス212は、ユーザ202に明白である(すなわち、ユーザ202が元のVMインスタンス216を利用、及び/またはさもなければそれとやり取りできるように構成された)元のVMインスタンス216を含むことができる。先に説明したように、元のVMインスタンス216、またはソース位置214が最初に動作してもよい。元のVMインスタンス216をソース位置214からターゲット位置222に移行するコマンドを受信すると、移行マネージャは、上述したように、ソース位置214からターゲット位置222への移行を開始するよう、システムマネージャに指示する(図1に関連して両方共説明したように)ことができる。移行は、ターゲット位置222で新たなVMインスタンス224をインスタンス化し、メモリ及び/または状態を元のVMインスタンス216から新たなVMインスタンス224にコピーすることによって、達成し得る。また、移行はメモリ及び/または元のVMインスタンス216から新たなVMインスタンス224への状態の変更を転送226することによっても達成できる。例えば、移行中に、ユーザ202は、当該のメモリが元のVMインスタンス216から新たなVMインスタンス224へコピーされた後に(例えば、アプリケーションの実行の結果として)元のVMインスタンス216のメモリ位置を変更したら、新たなメモリの値は新たなVMインスタンス224に転送され得る。このメモリ及び/または状態の変更の転送226は、新たなVMインスタンス224を移行中元のVMインスタンス216に同期し続けるのに役立ち得る。
本明細書で説明しているように、クリーンアップ前の移行の最後のフェーズはフリップ228である。フリップ228の間、元のVMインスタンス216は、ユーザ202及び/または元のVMインスタンス216に関連する他のプロセスが、元のVMインスタンス216を変更または変異できないように、一部またはすべての変更をロックアウトし得る。フリップ228の間に、元のVMインスタンス216と新たなVMインスタンス224との間の任意の残りの差異は、そのとき、元のVMインスタンス216から新たなVMインスタンス224へとコピーできる。
フリップ228が成功した場合、サービス212から元のVMインスタンス216への接続230は、サービス212から新たなVMインスタンス224への接続232に置き換えることができるので、ユーザの視点から、支援的なVMインスタンスは、(例えば、新たなVMインスタンス224が元のVMインスタンス216と実質的に同じであってもよいために)移行前と同じように見える。フリップ228が成功した場合、移行は、追加の処理が移行の成功に応答して生じることのできる成功フェーズ(本明細書では「移行成功」フェーズとも称する)に入ることができる。 反対に、フリップが成功しなかった場合、サービス212から元のVMインスタンス216への接続230を保持でき、そのためユーザの視点からは、支援的なVMインスタンスが移行を試みる前のものと同じであるように見える(なぜなら、それが変更されていないからである)。フリップ228が成功しなかった場合、移行は、移行の失敗に応答して追加の処理が生じることのできる失敗フェーズ(本明細書では「移行失敗」フェーズとも称する)に入ることができる。したがって、移行が成功したか否か(例えば、失敗またはキャンセルのため)にかかわらず、ユーザは同じシステムの状態を依然として知覚することができ、元のVMインスタンス216及び新たなVMインスタンス224を同じものとみなすことが可能である。
実施形態では、移行マネージャは、元のVMインスタンス216の状態を新たなVMインスタンス224の状態と比較することによって、フリップが成功したかどうかを判定し得る。元のVMインスタンス216の状態は、元のVMインスタンス216がロックされた後に判断することができ、元のVMインスタンス216がまとまるときに起こり得る変更に起因して更新し得る。新たなVMインスタンス224の状態は、フリップが完了した後、またすべての変更が元のVMインスタンス216から新たなVMインスタンス224に転送された後に(例えば、元のVMインスタンス216がまとまった後にも)判断し得る。元のVMインスタンス216の状態と新たなVMインスタンス224の状態との間の差が最小成功閾値を下回る(すなわち、差が軽微、些細、または重要でない)場合、フリップは成功している。反対に、元のVMインスタンス216の状態と新たなVMインスタンス224の状態との間の差が最小成功閾値を上回る(すなわち、差が甚大、重大、または重要である)場合、フリップは失敗である。移行がキャンセルされた場合や要求がブロックされた場合、差が最小成功閾値を超えている可能性があり、フリップが失敗する可能性があることに留意されたい。
図3は、図1で説明したような、少なくとも1つの実施形態による、仮想インスタンスの移行中の入出力要求に対する応答位置を判定するための例示的なプロセス300を示す。図1に関連して説明したブロックレベルストレージサービス120などのブロックレベルストレージサービスは、図3に示すプロセスを実行し得る。
ブロックレベルストレージサービスは、まず、ソース位置の仮想マシンインスタンスからの入出力要求を受信302できる。入出力要求は、ブロックレベルストレージサービスにより提供されるブロックストレージデバイスに関連付けられてもよく、ブロックレベルストレージサービスが提供し得る、ブロックストレージデバイスのリース(すなわち、資格証明の1つまたは複数のセット、及び/または資格証明の一時的なセット)に関連付けられてもよい。仮想マシンインスタンスが、ソース位置からターゲット位置へ(例えば、ソースコンピューティングデバイスから行き先のコンピューティングデバイスへ)の移行304プロセスにはないと判定された場合、その応答は、要求の発信側に送信することができ、この場合、それはソース位置の仮想マシンインスタンスである。
仮想マシンインスタンスがソース位置からターゲット位置への移行プロセス304にあると判定された場合、次に移行がクリティカルフェーズであるかどうかが判定308でき、その場合両方の仮想マシンインスタンスがロックされ、クリティカルフェーズが完了するまですべての変更がブロックまたはキューに入れるべきである。移行がクリティカルフェーズであると判定308されない場合、移行された仮想マシンの状態を保存するように、ターゲット位置の仮想マシンインスタンスに、応答を送信310し得る。逆に、移行がクリティカルフェーズであると判定308された場合、ブロックレベルストレージサービスは、クリティカルフェーズが終了するのを待機312してから続行してもよい。
クリティカルフェーズが終了314した後、次に、仮想マシンインスタンスの移行が成功316かどうか判定できる。成功の場合、ターゲット位置の仮想マシンインスタンスが新たな有効な仮想マシンインスタンスであり、応答はターゲット位置の仮想マシンインスタンスに送信310し得る。成功でなければ、ソース位置の仮想マシンインスタンスは有効な仮想マシンインスタンスのままである。ブロックレベルストレージデバイスは、まず移行318の任意の部分をクリーンアップでき、この場合はソース位置の仮想マシンインスタンスである要求の発信者に、応答を送信320し得る。
図4は、図1に関連して説明したような、少なくとも1つの実施形態による、仮想マシンインスタンス移行に先立つ、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらしている例示的な環境400を示す。移行前、元のVMインスタンス406は、ブロックレベルストレージサービス408によりブロックストレージデバイス402へのアクセスがもたらされた状態で、ソース位置404で動作してよい。元のVMインスタンス406によるブロックストレージデバイス402までのアクセスをもたらすように構成されているリース410は、ブロックレベルストレージサービス408によって提供される。図4に示す例で、リース410はアクティブリースであり、元のVMインスタンス406から受信した入出力要求は、応答が生成され、ソース位置404の元のVMインスタンス406に送信される。本明細書で説明するように、アクティブリース410は、元のVMインスタンスに一時的に提供でき、ブロックレベルストレージサービス408によって管理できる。
図5は、図1に関連して説明したような、少なくとも1つの実施形態による、仮想マシンインスタンス移行の開始後の、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらしている例示的な環境500を示す。移行の開始後、元のVMインスタンス506は、上述したようにブロックレベルストレージサービス508によりブロックストレージデバイス502へのアクセスがもたらされた状態で、ソース位置504で動作していてよい。元のVMインスタンス506によるブロックストレージデバイス502へのアクセスをもたらすように構成されたアクティブリース510は、同様に上述したようにブロックレベルストレージサービス508によって提供される。
移行が開始された結果、新たなVMインスタンス514は、上述したようにブロックレベルストレージサービス508によりブロックストレージデバイス502へのアクセスがもたらされた状態で、ターゲット位置512で動作していてよい。新たなVMインスタンス514によるブロックストレージデバイス502へのアクセスは、スタンバイリース516を利用して提供し得る。スタンバイリース516は、移行中にブロックストレージデバイス502への部分的なアクセスをもたらすように構成し得る。例えば、スタンバイリース516は、新たなVMインスタンス514がブロックストレージデバイス502への入出力要求を生成しないが、他のVMインスタンス(例えば、元のVMインスタンス506)により生成された入出力要求に対する応答を受信し得るように構成できる。アクティブリース510及びスタンバイリース516の一方または両方は、各々のVMインスタンスに一時的に提供されてもよく、ブロックレベルストレージサービス508により管理されてもよい。図5に示す例で、アクティブリース510は、元のVMインスタンス506がブロックストレージデバイス502への入出力要求を生成し得るように構成され、スタンバイリース516は、ブロックストレージデバイス502に対する入出力要求に対する応答が新たなVMインスタンス514に提供されるよう構成される。
図6は、図1に関連して説明したような、少なくとも1つの実施形態による、仮想マシンインスタンス移行のクリティカルフェーズ中の、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらす例示的環境600を示す。移行がクリティカルフェーズに達すると、元のVMインスタンス606がソース位置604で動作し得る。ブロックレベルストレージサービス608によって提供される元のVMインスタンス606からブロックストレージデバイス602へのリースは、非アクティブリース610であってもよい。非アクティブリース610は、元のVMインスタンス606によるブロックストレージデバイス602へのアクセスを防止するように構成することができ、その理由は、仮想マシンインスタンス移行のクリティカルフェーズの間、元のVMインスタンスからの入出力要求をブロックして、同期の問題を回避することができ、また先行して提出された入出力要求に対する応答をブロックして、同期の問題を回避することができるためである。実施形態では、非アクティブリースは、クリーンアップまたは他のそのような管理目的で利用される、以前のリース及び/または期限切れのリースを表すが、非アクティブリースは、VMインスタンスと任意の入出力要求を送受信するように構成されていない。
さらに、移行がクリティカルフェーズに達した結果として、新たなVMインスタンス614は、上述のようなブロックレベルストレージサービス608によりブロックストレージデバイス602へのアクセスがもたらされた状態で、ターゲット位置612で動作してもよい。新たなVMインスタンス614によるブロックストレージデバイス602へのアクセスは、図5に関連して説明したようなスタンバイリースを利用して提供でき、または図6に示すようにアクティブリース616を利用して提供できる。図5に関連して説明したスタンバイリースは、移行のクリティカルフェーズ中にブロックストレージデバイス602への部分的なアクセスをもたらすように構成することができ、アクティブリース616は、移行のクリティカルフェーズ中にブロックストレージデバイス602に完全なアクセスをもたらすように構成し得る。
例えば、アクティブリース616は、新たなVMインスタンス614がブロックストレージデバイス602への入出力要求を生成でき、またそれらの入出力要求に対する応答を受信できるように構成し得る。この応答はまた、例えば、元のVMインスタンス606により生成された入出力要求の結果として生成されていてもよく、この場合そのような入出力要求は元のVMインスタンス606に対して提供されたリースが非アクティブリース610になる前に生成されたのである。前述のように、非アクティブリース610及びアクティブリース616の一方または両方は、各々のVMインスタンスに一時的に提供されてもよく、ブロックレベルストレージサービス608によって管理されてもよい。
図7は、図1に関連して説明したような、少なくとも1つの実施形態による、仮想マシンインスタンス移行の完了後の、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらしている例示的な環境700を示す。移行後、新たなVMインスタンス706は、ブロックレベルストレージサービス708により提供されるブロックストレージデバイス702へのアクセスがもたらされた状態で、ターゲット位置704で動作してもよい。新たなVMインスタンス706によるブロックストレージデバイス702へのアクセスをもたらすように構成されたリース710は、ブロックレベルストレージサービス708によって提供される。図7に示す例で、リース710はアクティブリースであり、新たなVMインスタンス706から受信した入出力要求は、応答が生成され、ターゲット位置704の新たなVMインスタンス706に送信し得る。本明細書に記載するように、アクティブリース710は、新たなVMインスタンス706に一時的に提供でき、ブロックレベルストレージサービス708によって管理されてもよい。
図8は、図1で説明したような、少なくとも1つの実施形態による、三角アプローチを利用して、ブロックストレージデバイスによる仮想マシンの仮想マシン移行を実行するための例示的なプロセス800を示す。図1に関連して説明したブロックレベルストレージサービス120などのブロックレベルストレージサービスは、図8に示すプロセスを実行し得る。
コンピューティングリソースサービスプロバイダが提供する1つまたは複数のコンピュータシステムで、サービスとして及び/または分散型のサービスとして実装され得るブロックレベルストレージサービスは、ブロックストレージデバイスのための第1のリースを、コンピューティングリソースサービスプロバイダによって提供されるコンピューティングデバイスのようなソース位置で動作する第1の仮想マシンインスタンスに、提供802し得る。アクティブリースである第1のリースは、仮想マシンインスタンスがブロックストレージデバイスにアクセスすることを可能にする第1の資格証明セットを提供し得る。
ソース位置からターゲット位置(例えば、コンピューティングリソースサービスプロバイダによって提供される異なるコンピューティングデバイス)へ仮想マシンインスタンスが移行を開始するというインジケータを受信804した後、ブロックレベルストレージサービスは、コンピューティングリソースサービスプロバイダによって提供されるコンピューティングデバイスなどのターゲット位置で動作する第2の仮想マシンインスタンスに対するブロックストレージデバイス用の第2のリースを提供806し得る。スタンバイリースである第2のリースは、第2の仮想マシンインスタンスがブロックストレージデバイスにアクセスすることを可能にする第2の資格証明セットを提供し得る。スタンバイリースでは、ブロックストレージデバイスへの部分的なアクセスのみが許容される。例えば、スタンバイリースでは、仮想マシンインスタンスは入出力要求に対する応答を受信することのみでき、そのような要求を生成するための資格証明を持たない可能性がある。
移行が進むにつれて、ブロックレベルストレージサービスは、少なくとも部分的に移行進捗インジケータ(本明細書では「移行の進捗のインジケータ」とも称する)に基づいて第1のリースのステータスを更新808することができ、移行進捗インジケータに少なくとも部分的に基づいて第2のリースのステータスを更新810することもできる。例えば、移行進捗インジケータは、移行がクリティカルフェーズに達し、その結果、第1のリース及び第2のリースが非アクティブになり得、及び/またはスタンバイ状態になり得ることを示すことができる。また、移行進捗インジケータは、移行が成功し、そのため、第2のリースがアクティブになるのに対し第1のリースが非アクティブになり得る旨を示すことができる。同様に、移行進捗インジケータは、移行が失敗し、そのため、第2のリースが非アクティブになるのに対し第1のリースがアクティブになり得る旨を示すことができる。考えられるように、本明細書に記載されているリース状態及び移行進捗インジケータは単なる例示であり、したがって、他のリース状態または移行進捗インジケータも、本開示の範囲内と考えることができる。
最後に、リース状態及び/または移行進捗インジケータが変化する結果、ブロックレベルストレージサービスは、応答のための応答位置を判定812し、応答位置に応答を送信814し得る。いくつかの実施形態では複数の場所である応答位置は、入出力要求に対する応答を送信するべき場所である。例えば、移行前に送信された入出力要求は要求の発信元に送信されるべきであるため、移行前、応答位置がソース位置になり得る。逆に、入出力要求がソース位置の仮想マシンインスタンスによって送信されている間に、ブロックストレージデバイスの一貫した状態が維持されるようターゲット位置の仮想マシンインスタンスに応答を送信するべきであるため、移行中に、応答位置がターゲット位置になり得る。
図9は、図1で説明したような、少なくとも1つの実施形態による、仮想マシンインスタンス移行に関連するリソースが管理される、例示的な環境900を示す。例示的な環境900は、本明細書で説明する移行などの移行の初期部分を表す。ユーザは、ソース位置904の元のVMインスタンス906によって支援された仮想マシン抽出(virtual machine abstraction)902にアクセスし得る。元のVMインスタンス906は、ネットワークインターフェース908と、本明細書で説明するブロックストレージデバイスなどの1つまたは複数のストレージデバイス910とを含むことができる。移行中、ユーザは、ソース位置914の元のVMインスタンス916によって支援された仮想マシン抽出912と同じアクセスをすることができる。元のVMインスタンス916は、依然としてネットワークインターフェース918及び1つまたは複数のストレージ位置920を含むことができるが、ネットワークインターフェース918は、ターゲット位置926の新たなVMインスタンス928により共有されてもよく、及び/または新たなネットワークインターフェース924として複製されてもよい。さらに、1つまたは複数のストレージ位置920へのアクセスは、1つまたは複数のリースを利用して、ブロックレベルストレージサービスによって管理できる。さらに、1つまたは複数のストレージ位置920は、元のVMインスタンス916と新たなVMインスタンス928との間で共有されてもよい。移行の間、メモリ及び/または状態情報は、元のVMインスタンス916から新たなVMインスタンス928にコピー及び転送922されてもよい。
図10は、図1で説明したような、少なくとも1つの実施形態による、仮想マシンインスタンス移行に関連するリソースが管理される、例示的な環境1000を示す。例示的な環境1000は、本明細書で説明される移行などの移行の第2の部分を表す。ユーザは、仮想マシン抽出1002にアクセスし得るが、移行が完了しているため、仮想マシン抽出1002は、ターゲット位置1018で新たなVMインスタンス1020により支援されることが可能である。新たなVMインスタンス1020は、ネットワークインターフェース1022を有して1つまたは複数のストレージ位置1012へのアクセス1024をすることができる。1つまたは複数のストレージ位置1012へのアクセスは、1つまたは複数のリースを利用してブロックレベルストレージサービスによって管理されてもよい。一方、ソース位置1004にある元のVMインスタンス1006は、例えば、非アクティブリースで分解されているプロセスにある可能性がある。例えば、ネットワークインターフェース1008への接続1010は終了してもよく、1つ以上のストレージ位置1012への接続1014を除去しても、非アクティブにマークしてもよく、また、元のVMインスタンスから新たなVMインスタンスへのパケット転送1016は、元のVMインスタンス1006がまとまった後で停止し得る。
移行が成功した後、ユーザは、ターゲット位置1028で新たなVMインスタンス1030によって支援される仮想マシン抽出1026にアクセスし得る。この新たなVMインスタンス1030は、ネットワークインターフェース1034と、1つまたは複数のストレージ位置1032へのアクセスとを有し、異なる位置であることを除いて、図9に関連して説明した元のVMインスタンス906と同じであるように見えるべきである。
図11は、様々な実施形態による態様を実装するための例示的な環境1100の態様を示す。理解されるように、ウェブベースの環境が説明目的に使用されるが、必要に応じて、異なる環境を使用して様々な実施形態を実装してもよい。環境は、電子クライアントデバイス1102を含み、これは、適切なネットワーク1104上でリクエスト、メッセージまたは情報を送信しかつ/または受信し、かつ、一部の実施形態で、情報をデバイスのユーザに戻して伝達するように動作可能な任意の適切なデバイスを含み得る。そのようなクライアントデバイスの例には、パーソナルコンピュータ、携帯電話、ハンドヘルドメッセージングデバイス、ラップトップコンピュータ、タブレットコンピュータ、セットトップボックス、パーソナルデータアシスタント、埋め込み式コンピュータシステム、電子ブックリーダなどが含まれる。ネットワークは、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、衛星ネットワークまたは任意の他のそのようなネットワーク及び/またはそれらの組み合わせを含む任意の適切なネットワークを含むことができる。このようなシステムに用いられるコンポーネントは、少なくともある程度、ネットワークの種類および/または選択される環境に依存し得る。係るネットワークを介して通信するためのプロトコル及び構成要素は周知であり、本明細書において詳細に説明されない。ネットワークを介した通信は、有線または無線の接続及びそれらの組み合わせによって可能にし得る。この例では、要求を受信し、それに応答してコンテンツを提供するためのウェブサーバ1106を環境が含んでいるので、ネットワークはインターネットを含むが、他のネットワークについては、当業者に明らかであるように、類似した目的を提供する代替のデバイスが利用できる。
実例となる環境には、少なくとも1つのアプリケーションサーバ1108及びデータストア1110が含まれる。 複数のアプリケーションサーバ、レイヤまたは他の要素、プロセスまたはコンポーネントがあり得、それらは連鎖式でも別段に構成されていてもよく、適切なデータストアからデータを取得するなどのタスクを実行するためにやり取りできることを理解されたい。本明細書で利用するサーバは、ハードウェアデバイスや仮想コンピュータシステムなどの様々な方法で実装し得る。いくつかの状況では、サーバは、コンピュータシステムで実行されるプログラミングモジュールを示すことがある。本明細書で使用される場合、別段の記載がない限り、または文脈から明白でない限り、「データストア」という用語は、データを記憶、アクセス及び検索し得る任意のデバイスまたはデバイスの組み合わせを示し、任意の標準、分散型、仮想、またはクラスタの環境で、任意の組み合わせ及び数のデータサーバ、データベース、データストレージデバイス、及びデータストレージメディアを含むことができる。アプリケーションサーバは、クライアントデバイス用の1つまたは複数のアプリケーションの態様を実行し、アプリケーションのデータアクセス及びビジネスロジックの一部または全部を処理するために、必要に応じてデータストアと統合するための任意の適切なハードウェア、ソフトウェア及びファームウェアを含むことができる。アプリケーションサーバは、データストアと連携してアクセス制御サービスを提供でき、テキスト、グラフィックス、オーディオ、ビデオ、及び/またはユーザに提供するのに利用可能な他のコンテンツを含むが、これらに限定されないコンテンツを生成することができ、それらはハイパーテキストマークアップランゲージ(「HTML」)、エクステンシブルマークアップランゲージ(「XML」)、JavaScript(登録商標)、カスケーディングスタイルシート(「CSS」)、または他の適切なクライアント側の構造化言語の形式でウェブサーバによってユーザに提供され得る。クライアントデバイスに転送されたコンテンツは、クライアントデバイスによって処理されて、ユーザに聴覚的、視覚的及び/または触角、味覚、及び/または嗅覚などの他の感覚を通じて知覚可能な形態を含むがこれに限定されない、1つ以上の形態で、コンテンツを提供し得る。クライアントデバイス1102とアプリケーションサーバ1108との間のコンテンツの配信だけでなく、すべての要求及び応答の処理は、PHP:Hypertext Preprocessor(「PHP」)、Python、Ruby、Perl、Java(登録商標)、HTML、XML、またはこの例における他の適切なサーバ側の構造化言語を用いて、ウェブサーバによって処理できる。本明細書で説明する構造化コードが、本明細書の他の場所で説明するように任意の適切なデバイスまたはホストマシンで実行できるので、ウェブサーバ及びアプリケーションサーバは必須ではなく、単なる例示的なコンポーネントであることを理解されたい。さらに、単一のデバイスによって実行されるものとして、本明細書で説明している動作は、文脈から別段に明白でない限り、分散型及び/または仮想システムを形成できる複数の装置によって集合的に実行されてもよい。
データストア1110は、本開示の特定の態様に関連するデータを記憶するための、いくつかの別個のデータテーブル、データベース、データドキュメント、動的データストレージスキーム、及び/または他のデータストレージ機構及びメディアを含むことができる。例えば、図示したデータストアは、生産側データ1112及びユーザ情報1116を記憶するための機構を含むことができ、生産側のためにコンテンツを提供するために利用し得る。データストアはまた、ログデータ1114を記憶するための機構を含むように示されており、これは、報告、分析、または他のそのような目的のために利用できる。データストア1110の適切なまたは付加的な機構として上記の機構のいずれかに記憶できる、ページ画像情報及びアクセス権情報のような、データストアに記憶する必要があり得る他の多くの態様があり得ることを理解されたい。データストア1110は、データストアと関連付けられたロジックを介して、アプリケーションサーバ1108から命令を受信し、それに応答してデータを取得、更新、またはさもなければ処理するように動作可能である。アプリケーションサーバ1108は、受信した命令に応答して静的データ、動的データ、または静的及び動的データの組み合わせを提供し得る。ウェブログ(ブログ)、ショッピングアプリケーション、ニュースサービス及び他のそのようなアプリケーションで利用されるデータなどの動的データは、本明細書で説明されるサーバ側構造化言語によって生成されてもよく、またはアプリケーションサーバ上で、またはアプリケーションサーバの制御下に置かれて動作するコンテンツ管理システム(「CMS」)によって提供できる。一例では、ユーザは、ユーザが操作するデバイスを介して、特定のタイプの項目の検索要求を提出し得る。この事例において、データストアは、ユーザ情報にアクセスして、ユーザの識別情報を検証することができ、カタログの詳細情報にアクセスして、その種類の項目についての情報を取得することができる。次いで、ユーザがユーザデバイス1102でブラウザを介して閲覧し得るウェブページの結果リストなどの情報を、ユーザに戻すことができる。特定の関心項目に関する情報は、専用ページまたはブラウザのウィンドウに表示され得る。しかし、本開示の実施形態は必ずしもウェブページのコンテキストに限定されず、より一般的には、要求が必ずしもコンテンツに対する要求ではない一般的な処理要求に適用可能であることに留意されたい。
各サーバは、典型的には、そのサーバの一般的な管理及び動作のための実行可能プログラム命令を提供するオペレーティングシステムを含み、典型的には、サーバのプロセッサによって実行されるとき、サーバがその意図した機能を実行できるようにする命令を記憶するコンピュータ可読記憶媒体(例えば、ハードディスク、ランダムアクセスメモリ、読出し専用メモリなど)を含む。サーバのオペレーティングシステムおよび一般的な機能性の好適な実装は、既知であるか、または市販入手可能であり、特に、本明細書の開示を踏まえて、当業者によって容易に実装可能である。
環境は、一実施形態では、1つまたは複数のコンピュータネットワークまたは直接の接続を利用して、通信リンクを介して相互接続されるいくつかのコンピュータシステム及びコンポーネントを利用する分散型及び/または仮想コンピューティング環境である。しかし、当業者は、そのようなシステムが、図11に示されているよりも少ないまたは多い数のコンポーネントを有するシステムにおいて、同等に良好に動作し得ることを理解するであろう。したがって、図11のシステム1100の描写は本質的に例示的であり、本開示の範囲を限定するものではないとみなすべきである。
本明細書で説明及び示唆される技法は、ソースホストコンピュータシステムからターゲットホストコンピュータシステムに至る仮想マシンインスタンスの移行中に仮想コンピュータシステム(本明細書では「仮想マシンインスタンス」とも称する)のリソース及びリソース状態の移行を管理するための方法、システム、及びプロセスを含む。本明細書で説明される方法、システム、及びプロセスは、クリティカルである移行フェーズ(例えば、仮想マシンインスタンスの変更が移行に悪影響を与える可能性がある移行のフェーズ)の長さ及び影響の両方を低減するように構成される移行フェーズに基づいて、仮想マシンインスタンスリソースに関連付けられた一つまたは複数の移行を管理する。本明細書で説明する例では、ブロックレベルストレージサービスによってもたらされるブロックストレージデバイスへのアクセスは、仮想マシンインスタンスの移行中管理され、仮想マシンインスタンスの状態及びブロックストレージデバイスの状態が移行によって悪影響を与えられない。このような管理の改善は、クリティカルである移行フェーズ中にリソースへのアクセスを管理し、その状態が保持されるように移行中に状態情報をコピー及び/または維持することによって達成される。
仮想マシン移行は段階的に進むことができる。実行中の仮想マシンインスタンスが、ソースホストコンピュータシステムから適切なターゲットホストコンピュータシステムへの移行のための有望な候補であると判定した結果として、まずターゲットホストコンピュータシステムを移行のため準備してもよい。ターゲット位置は、実行中の仮想マシンインスタンスの構成に少なくとも部分的に基づいて、可能な候補位置のセットから選択し得る。次いで、元の仮想マシンインスタンスと同じ構成でターゲットに仮想マシンの新しいインスタンスを作成でき、元の仮想マシンインスタンスが引き続き動作し続けている間に、元の仮想マシンインスタンスからのメモリ及び状態情報を新たな仮想マシンインスタンスにコピーすることができる。
この移行のフェーズ中に、実行中の仮想マシンインスタンスに関連付けられたリソースを識別し、それらのターゲット位置への移行を開始し得る。ブロックストレージデバイスの場合、ブロックストレージデバイスの状態の管理を開始することが重要である。実例として、動作中の仮想マシンでのプロセスが、使用測定基準を収集し、それらの使用測定基準を利用する場合、例えばデバイスの入出力帯域幅要求に関連する状態情報を、例えば維持する場合を考える。このような測定基準を1分ごとに収集して処理し、その間に仮想マシン移行が生じたら、状態情報が正しく移行されない可能性があり、その結果、デバイスの入出力帯域幅要件に一貫性のない結果が生じ、場合によってはリソース割り当てのエラーに至る。
本明細書に記載の技法を利用して、移行が始まると、ブロックストレージデバイスの状態の管理に対する段階的なアプローチが利用される。このアプローチを利用すると、移行が開始するとき、初期状態または準備的な状態がソース位置からターゲット位置にコピーされる。その後、移行のクリティカルフェーズの間、仮想マシンインスタンスがロックされ、最終状態をソース位置からターゲット位置にコピーして、次いで状態の2つのコピーを互いに一致させる。クリティカルフェーズの一部分が「フリップ」である。これは、ソース仮想マシンインスタンスがもはや利用されなくなり、ターゲット仮想マシンがアクティブになるときである。フリップが成功裏に完了し、クリティカルフェーズが成功裏に完了すると、新たな仮想マシンインスタンスが動作可能になり、元の仮想マシンインスタンスによるブロックストレージへのアクセスは終了する(例えば、リースステータスを「非アクティブ」に設定することによって)。その後、新たな仮想マシンインスタンスは、ブロックストレージデバイスへ完全かつ排他的にアクセスし、ソース位置と同じ状態でアクティブリースを有し得る。フリップが成功裏に完了せず、クリティカルフェーズがエラー、キャンセルまたはその他の何らかのそのような事象の結果として成功裏に完了しない場合、元の仮想マシンインスタンスはブロックストレージデバイスへのアクセスが復元され、状態が復元される。
図12は、実施形態による、仮想マシン移行中の、仮想マシンインスタンスに関連するブロックストレージデバイスの状態情報が保存される例示的な環境1200を示す。1つ以上の仮想マシンインスタンスは、コンピューティングリソースサービスプロバイダ1202によって提供されるホストコンピュータシステムで動作してもよい。図12に示す例では、第1仮想マシンインスタンス(元のVMインスタンス1214)が第1の位置(ソース位置1210)で動作している。第1の位置は、1つまたは複数の仮想マシンインスタンスのインスタンス化のために、仮想コンピュータシステムサービスに、共有されるハードウェアを提供するように構成された1つまたは複数のホストコンピュータシステムであってもよい。元のVMインスタンス1214は、ソース位置1210に関連付けられた複数の仮想マシンインスタンスのうちの1つであってもよい。ソース位置1210に関連する複数の仮想マシンインスタンスの各々は、いくつかの状態の1つ、例えば動作中、一時停止中、中断中(例えば、一時停止して二次的なストレージに記憶する)、または他の何らかの状態にし得る。図12に示す例では、元のVMインスタンス1214が動作中(すなわち、1つまたは複数の作動を実行しているところ)である。ソース位置1210における元のVMインスタンス1214は、以前移行した結果として、別の位置からソース位置1210に先行して移行していてもよい。
元のVMインスタンス1214の動作の過程で、元のVMインスタンス1214をソース位置1210からターゲット位置1212に移行することを決定してもよい。元のVMインスタンス1214を移行する決定は、ソース位置1210でのリソースの有用性の変化(例えば、計算能力の不足、メモリの不足、またはネットワーク帯域幅の不足)の結果として生じることがある。また、元のVMインスタンス1214を移行する決定は、元のVMインスタンス1214を論理的に1つ以上のコンピューティングリソースサービスプロバイダリソースのより近くに移動するように行われてもよい。また、元のVMインスタンス1214をソース位置1210からターゲット位置1212に移行させる決定は、例えば、元のVMインスタンス1214に関連する1つまたは複数のコストを削減するための顧客の要求により行ってもよい。また、元のVMインスタンス1214をソース位置1210からターゲット位置1212に移行させる決定は、仮想マシンインスタンスからより最適な位置を判定するように構成し得るコンピューティングリソースサービスプロバイダに関連して動作するサービス、プロセス、またはモジュールによって行うこともできる。図12に示す例では、ターゲット位置1212がコンピューティングリソースサービスプロバイダ1202内に示されている。実施形態では、ソース位置1210、ターゲット位置1212、またはその両方は、コンピューティングリソースサービスプロバイダ1202の外部にあってもよい(例えば、それらは顧客及び/または他の第三者の環境によって提供されてもよい)。
元のVMインスタンス1214をソース位置1210からターゲット位置1212に移行することを決定した結果として、移行を開始1206するコマンドを生成し、ブロックレベルストレージサービス1220に送信1208してもよい。図12に示す例で、移行を開始1206するコマンドは、コンピューティングリソースサービスプロバイダ1202により操作される移行マネージャ1204により生成される。実施形態では、移行マネージャ1204は、コンピューティングリソースサービスプロバイダ1202によって提供される複数のサービスのうちの1つとし得るサービスとして、実行される。移行マネージャ1204は、本明細書では移行マネージャコンピュータシステムとも称する場合があり、いくつかの実施形態では、分散型コンピュータシステムとして実装し得る。
元のVMインスタンス1214をソース位置1210からターゲット位置に移行するとき、いくつかのシステム、サービス、プロセス、及びリソースが元のVMインスタンス1214と通信することが可能である。これらのシステム、サービス、プロセス、及びリソースは、ソース位置1210の元のVMインスタンス1214からターゲット位置1212の新たなVMインスタンス1216に通信が切り替わるようにするため、挙動を同時に変更することは、一般に保証できない。移行マネージャ1204は、複数のシステム、サービス、プロセス、及びリソースの各々と通信するよう構成して、移行を管理するようにできる。移行マネージャ1204は、非限定的に、移行のための適切な順序の決定、移行のためのワークフローの管理、移行に関連するシステム、サービス、プロセス、及びリソースへのコマンドの発行、移行が成功したかどうかの判断、仮想マシンインスタンスの開始と停止、移行が失敗したかどうかの判断、移行をキャンセルすべきかの判断、エラーが発生した場合のロールバックの管理を含むアクションを実行することによって、移行を管理(または編成)するように構成できる。
移行の間、移行に関連する複数のシステム、サービス、プロセス、及びリソースの各々は、移行のその部分を認識することのみが可能である。移行マネージャ1204は、例えば、段階的な移行を管理してもよく、API要求の発行、ライブラリの呼び出し、インターフェース(例えばウェブインターフェース)の利用、または他の何らかの手段によって、移行に関連する複数のシステム、サービス、プロセス、及びリソースの各々の移行を管理してもよい。移行のフェーズ(本明細書では「移行の現在の状態」とも称する)は、アプリケーションプログラミングインターフェース要求などの要求を許可またはブロックし得るかどうかを判定し、移行をキャンセルすべきかどうかを判定するために利用することもできる。
移行マネージャ1204はまた、各フェーズのタイムアウト、及び/または同様に移行をキャンセルするべきか判定するのに利用できる、移行に関連する複数のシステム、サービス、プロセス、及びリソースの各々に関連する各移行アクションのタイムアウトを管理することもできる。例えば、ブロックレベルストレージサービス1220などのブロックレベルストレージサービスは、移行中に、新たなVMインスタンス1216によるブロックストレージデバイス1226へのアクセスをもたらすために、移行マネージャ1204からAPI要求を受信し得る。このアクセスの一部として、ブロックレベルストレージサービスは、元のVMインスタンス1214と新たなVMインスタンス1216との間の状態を同期させる必要がある可能性がある。移行マネージャ1204は、この同期のためのタイムアウト値を確立してもよく、その結果例えば、ブロックレベルストレージサービスが妥当な時間内にAPI要求に応答しない場合、移行をキャンセルすることができる。
また、移行マネージャ1204は、新たな仮想マシンインスタンスをインスタンス化するターゲット位置を構成するコマンド、ターゲット位置1212で新たな仮想マシンインスタンスをインスタンス化するコマンド、メモリ、及び/または状態を元のVMインスタンス1214から新たなVMインスタンス1216にコピーするコマンド、元のVMインスタンス1214を非アクティブ化するコマンド、新たなVMインスタンス1216をアクティブ化するコマンド、元のVMインスタンス1214または新たなVMインスタンス1216のいずれかをロックするコマンド、元のVMインスタンス1214または新たなVMインスタンス1216のいずれかを一時停止するコマンド、元のVMインスタンス1214または新たなVMインスタンス1216のいずれかを一時停止解除するコマンド、元のVMインスタンス1214から新たなVMインスタンス1216へメモリ及び/または状態情報を転送するコマンド、元のVMインスタンス1214を分解するコマンド、ソース位置1210とターゲット位置1212の間の移行を終了するコマンド、及びソース位置1210からターゲット位置1212への元のVMインスタンス1214の移行に関連する他のこのようなコマンドを含むがこれらに限定されない、移行1206を開始するコマンドに加えて、1つまたは複数の他のコマンドを生成し得る。
元のVMインスタンス1214は、ブロックレベルストレージサービス1220により提供されるブロックストレージデバイス1226へのアクセス1222ができてよい。ブロックレベルストレージサービス1220は、コンピューティングリソースサービスプロバイダ1202によって提供されてもよい。元のVMインスタンス1214によるブロックストレージデバイス1226へのアクセス1222は、リースを利用してブロックレベルストレージサービス1220によって構成されてもよい。図12に示す例では、元のVMインスタンス1214によるブロックストレージデバイス1226へのアクセス1222は、アクティブリース1228を利用して、ブロックレベルストレージデバイス1220によって構成されるが、これは、例えば、元のVMインスタンス1214が入出力要求を発行し、それらの入出力要求に対する応答を受信することを許容するようにする、一時的にブロックストレージデバイス1226へのアクセスをもたらすリースである。
また、新たなVMインスタンス1216は、ブロックレベルストレージサービス1220によって提供されるブロックストレージデバイス1226へのアクセス1224ができてよい。新たなVMインスタンス1216によるブロックストレージデバイス1226へのアクセス1224は、リースを利用してブロックレベルストレージサービス1220により構成できる。図12に示す例で、新たなVMインスタンス1216によるブロックストレージデバイス1226へのアクセス1224は、ブロックレベルストレージサービス1220によってスタンバイリース1230(すなわち、スタンバイのステータスであるリース)を利用して構成されるものであり、このリースは、ブロックストレージデバイス1226への部分的なアクセスを一時的にもたらすリースであり、例えば新たなVMインスタンス1216が、例えばアクティブリース1228(すなわち、アクティブのステータスのリース)を利用して元のVMインスタンス1214によって生成された入出力要求に対する応答を受信することを許容するが、新たなVMインスタンス1216がそのような要求を生成することを許容しないリースである。
移行中に、ブロックレベルストレージサービス1220は、ソース位置1210に由来する状態情報1232をターゲット位置1212の状態情報1234に移行1218し得る。ソース位置1210の状態情報1232は、元のVMインスタンス1214内に記憶されてもよく、及び/または元のVMインスタンス1214とは別のソース位置1210に記憶されてもよい。ターゲット位置1212の状態情報1234は、新たなVMインスタンス1216内に記憶されてもよく、及び/または新たなVMインスタンス1216とは別であるターゲット位置1212で記憶できる。
ブロックストレージデバイスの状態情報は、非限定的に、ブロックストレージデバイスの位置、どのブロックレベルストレージサービスがブロックストレージデバイスをホストし得るかということ、及びブロックストレージデバイスに関連する1つまたは複数のリースの存在を含む状態情報を含むことができる。このような状態情報は、仮想マシンインスタンスによって記憶されてもよく、ソースまたはターゲット位置で記憶されてもよく、別の位置に記憶されてもよい。ブロックストレージデバイスの状態情報はまた、例えば、1秒当たりの入出力動作(「IOPS」)、帯域幅、読み込みバイト、書込みバイト、毎秒の読取り動作、毎秒の書込み動作、及び/またはアイドルに費やされた時間、を非限定的に含む、顧客直面能力測定基準なども含む顧客直面状態情報を含むことができる。さらに、ブロックストレージデバイスの状態情報は、例えば、デバイスの健全性の測定値、デバイスのエラーの期間、及び/または既に記載した測定基準のいずれかなどの内部能力測定基準(すなわち、ユーザや顧客に提供されない測定基準)を含み得る。ブロックストレージデバイスの他の状態情報は、セキュリティプロセス(例えば、暗号キー)、ポリシー、許可、パフォーマンス・スロットリングのパラメータ(例えば、ブロックストレージデバイスにアクセスする仮想マシンインスタンスに提供され得る利用可能な帯域幅の割合を指定するスロットリング率)に関する情報、または他のこのような状態情報を含むことができる。考えられるように、本明細書で説明されるブロックストレージデバイスの状態情報のタイプは、例示的な例であり、このためブロックストレージデバイスの他のタイプの状態情報は、本開示の範囲内であるとみなされ得る。
本明細書で利用されるように、リースは、一般的に言えば、例えばブロックストレージデバイス1226などのコンピュータシステムリソースにアクセスするための権利及び許可の交付であってもよい。リースはコンピュータシステムリソースへのアクセス(本明細書では「アクセスポリシー」または「アクセスのポリシー」とも称する)を指定できる。リースは、サービス(例えば、ブロックレベルストレージサービス1220)によって、または異なるプロセス、モジュール、サービス、アプリケーション、もしくはサービスと連携して動作するシステムによって提供され、1つまたは複数のコンピュータシステム上で実施される。ブロックレベルストレージサービス1220は、ブロックレベルストレージサービスコンピュータシステムとして実施することができ、例えば、1つまたは複数のコンピュータシステム及び/または1つまたは複数のコンピュータシステム環境で動作する分散型コンピュータシステムであり得る。リースは、アクセスのタイプ、そのアクセスに関連する許可及び/もしくは資格証明、そのアクセスの期間、またはリソースへのアクセスに関連する他のパラメータを指定し得る。例えば、リースは、限られた期間または設定された期間、リソースへのアクセスを認可する一時リースである場合がある。このような一時リースの例は、モバイルネットワーク上にネットワークアドレスを割り当てるリースである。このような一時リースは、通常、一定期間後に(手動または自動で)更新しなければならない。
リースは、リソース(すなわち、サービスに関連付けられたブロックストレージデバイス)へのアクセスを管理し、他のサービス、仮想マシンインスタンス、ユーザ(本明細書では「顧客」とも称する)、プロセス、アプリケーション、モジュール、システムなどのクライアントへのアクセスをもたらすブロックレベルストレージサービス1220などのサービスによって提供され得る。リースは、サービスによってクライアント(例えば、元のVMインスタンス1214または新たなVMインスタンス1216)に対して認可されてもよく、そのため、クライアントは、リース期間中、リソースにアクセスし得る。実施形態は、リースは、リースがクライアントの寿命の間認可され得るという点で、永続的であり得る。
また、リースの利用は、例えば、現在発行されている数及び種類のリースを利用して、システムがサブスクライブ過多であるか、将来的にサブスクライブ過多になる可能性があるかを判定することによって、サービスがそれ自体のリソースを管理することを可能にし得る。さらに、ブロックレベルストレージサービス1220などのサービスは、タイプにより異なるリース(本明細書では、「リースステータス」またはより簡素に「ステータス」とも称する)を分類することで、サービスのリソースに関連する機能を管理し得る。
例えば、クライアントVMインスタンスに提供されるブロックストレージデバイスのアクティブリースによって、クライアントVMインスタンスからブロックストレージデバイスへ入出力要求を送信する完全なアクセスが可能になり、これらの要求に対するすべての応答(ブロックストレージデバイスから)がクライアントVMインスタンスに送信されることを示すこともできる。逆に、非アクティブリースは依然として存在していてよいリースであるが、許可は制限されている。例えば、非アクティブステータスを有する、クライアントVMインスタンスに対して提供されるブロックストレージデバイスのリースは、クライアントVMインスタンスからブロックストレージデバイスへの入出力要求の送信を制限でき、また任意の先行して保留中の要求への任意の応答が、クライアントVMインスタンスに送信されるのを防ぐことも両方できる。他のリースステータスが存在でき、それはクライアントVMインスタンスからブロックストレージデバイスに入出力要求を送信することを許容するが、(ブロックストレージデバイスからの)それらの要求に対するすべての応答が異なるVMインスタンスに送信され得ることを示せるスタンバイリースが非限定的に含まれる。
図13は、図12に関連して説明したような、少なくとも1つの実施形態による、仮想インスタンスの移行中、状態情報を転送するための例示的なプロセス1300を示す。図12に関連して説明したブロックレベルストレージサービス1220などのブロックレベルストレージサービスは、図13に示す処理を実行してもよい。
ブロックレベルストレージサービスは、最初に、ソース位置からターゲット位置への仮想マシンインスタンスの移行を開始1302するコマンドを、受信し得る。次に、ブロックレベルストレージサービスは、ブロックストレージデバイスのブロックレベルストレージサービス(すなわち、資格証明のセット及び/または資格証明の一時的なセット)によって提供されるブロックストレージデバイスに関連するスタンバイリースを生成1304することができ、それはブロックレベルストレージサービスによって提供されてもよい。次に、ブロックレベルストレージサービスは、ソース位置からターゲット位置への状態情報のコピー及び/または転送を開始1306し得る。
ソース位置からターゲット位置への移行のプロセスにある仮想マシンインスタンスが、クリティカルフェーズにあると判定1308されて、双方の仮想マシンインスタンスがロック1310されるべきで、またすべての変更がクリティカルフェーズの完了までブロックされるか、またはキューに入るべきである場合、ブロックレベルストレージサービスは、ターゲット位置のデバイスが機能している(本明細書では依然「利用可能な状態」であるとも称する)ことを確認1314する前に、ソース位置からターゲット位置への状態情報のコピーを完了1312できる。次に、ターゲットのリースをアクティブに設定1316し得る。移行が依然としてクリティカルフェーズにあると判定1308されない場合、ブロックレベルストレージサービスは、ソース位置からターゲット位置への状態情報のコピー及び/または転送を継続し得る。逆に、移行がクリティカルフェーズであると判定1308された場合、ブロックレベルストレージサービスはクリティカルフェーズが終了するのを待機1318してから続行してもよい。
クリティカルフェーズが終了1320した後、次に仮想マシンインスタンスの移行が成功1322であったかどうかを判断し得る。成功の場合、ターゲット位置の仮想マシンインスタンスが新たな有効な仮想マシンインスタンスであり、ターゲットは一時停止されず、移行が完了1324し得る。成功でなければ、ソース位置の仮想マシンインスタンスは有効な仮想マシンインスタンスのままである。その代わりに、ブロックレベルストレージデバイスは、例えば、移行のロールバックを実行することによって、移行を元に戻す1326ことができる。
図14は、図12に関連して説明したような、少なくとも1つの実施形態による、仮想マシンインスタンス移行に先立つ、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらしている例示的な環境1400を示す。移行前、元のVMインスタンス1406は、ブロックレベルストレージサービス1408によりブロックストレージデバイス1402へのアクセスがもたらされた状態で、ソース位置1404で動作してよい。元のVMインスタンス1406によるブロックストレージデバイス1402までのアクセスをもたらすように構成されているリース1410は、ブロックレベルストレージサービス1408によって提供される。図14に示す例で、リース1410はアクティブリースであり、元のVMインスタンス1406から受信された入出力要求は、応答が生成され、ソース位置1404の元のVMインスタンス1406に送信される。本明細書で説明するように、アクティブリース1410は、元のVMインスタンスに一時的に提供でき、ブロックレベルストレージサービス1408によって管理できる。移行を開始する前、ブロックストレージデバイス1402の状態1412は、ソース位置1404に存在してもよく、本明細書に記載の顧客直面状態及び内部状態の両方を含むことができる。
図15は、図12に関連して説明したような、少なくとも1つの実施形態による、仮想マシンインスタンス移行の開始後の、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらしている例示的な環境1500を示す。移行の開始後、元のVMインスタンス1506は、上述したようにブロックレベルストレージサービス1508によりブロックストレージデバイス1502へのアクセスがもたらされた状態で、ソース位置1504で動作していてよい。元のVMインスタンス1506によるブロックストレージデバイス1502へのアクセスをもたらすように構成されたアクティブリース1510は、同様に上述したようにブロックレベルストレージサービス1508によって提供される。
移行が開始された結果、新たなVMインスタンス1514は、上述したようにブロックレベルストレージサービス1508によりブロックストレージデバイス1502へのアクセスがもたらされた状態で、ターゲット位置1512で動作していてよい。新たなVMインスタンス1514によるブロックストレージデバイス1502へのアクセスは、スタンバイリース1516を利用して提供し得る。スタンバイリース1516は、移行中にブロックストレージデバイス1502への部分的なアクセスをもたらすように構成し得る。例えば、スタンバイリース1516は、新たなVMインスタンス1514がブロックストレージデバイス1502への入出力要求を生成できないが、他のVMインスタンス(例えば、元のVMインスタンス1506)によって生成された入出力要求に対する応答を受信し得るように構成し得る。アクティブリース1510及びスタンバイリース1516の一方または両方は、各々のVMインスタンスに一時的に提供されてもよく、ブロックレベルストレージサービス1508により管理されてもよい。図15に示す例で、アクティブリース1510は、元のVMインスタンス1506がブロックストレージデバイス1502への入出力要求を生成できるように構成され、スタンバイリース1516は、ブロックストレージデバイス1502に対する入出力要求への応答が新たなVMインスタンス1514に提供されるように構成される。移行が始まると、ソース位置1504におけるブロックストレージデバイス1502の状態1518の最初のコピー1520(本明細書では「準備的なコピー」とも称する)が、ターゲット位置1512に送信され、ブロックストレージデバイス1502のターゲット位置1512における状態1522を移行前の状態と一致させるプロセスを開始し得る。
図16は、図12に関連して説明したような、少なくとも1つの実施形態による、仮想マシンインスタンス移行のクリティカルフェーズ中の、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらしている例示的な環境1600を示す。移行がクリティカルフェーズに達したとき、元のVMインスタンス1606がソース位置1604で動作してよい。ブロックレベルストレージサービス1608によって提供される元のVMインスタンス1606からブロックストレージデバイス1602へのリースは、非アクティブリース1610であってもよい。非アクティブリース1610は、元のVMインスタンス1606によるブロックストレージデバイス1602へのアクセスを防止するように構成することができ、その理由は、仮想マシンインスタンス移行のクリティカルフェーズの間、元のVMインスタンスからの入出力要求をブロックして、同期の問題を回避することができ、また先行して提出された入出力要求に対する応答をブロックして、同期の問題を回避することができるためである。実施形態では、非アクティブリースは、クリーンアップまたは他のそのような管理目的で利用される、以前のリース及び/または期限切れのリースを表すが、非アクティブリースは、VMインスタンスと任意の入出力要求を送受信するように構成されていない。
さらに、移行がクリティカルフェーズに達した結果として、新たなVMインスタンス1614は、上述したようにブロックレベルストレージサービス1608によりブロックストレージデバイス1602へのアクセスがもたらされた状態で、ターゲット位置1612で動作してよい。新たなVMインスタンス1614によるブロックストレージデバイス1602へのアクセスは、図15に関連して説明したようなスタンバイリースを利用して提供してもよく、図16に示すようなアクティブリース1616を利用して提供してもよい。図15に関連して説明したスタンバイリースは、移行のクリティカルフェーズ中にブロックストレージデバイス1602への部分的なアクセスをもたらすように構成することができ、アクティブリース1616は、移行のクリティカルフェーズ中にブロックストレージデバイス1602に完全なアクセスをもたらすように構成し得る。
例えば、アクティブリース1616は、新たなVMインスタンス1614がブロックストレージデバイス1602への入出力要求を生成でき、それらの入出力要求に対する応答を受信できるように構成し得る。この応答はまた、例えば、元のVMインスタンス1606により生成された入出力要求の結果として生成されていてもよく、この場合そのような入出力要求は元のVMインスタンス1606に対して提供されたリースが非アクティブリース1610になる前に生成されたものである。前述のように、非アクティブリース1610及びアクティブリース1616の一方または両方は、各々のVMインスタンスに一時的に提供されてもよく、ブロックレベルストレージサービス1608によって管理されてもよい。移行のクリティカルフェーズが終了する前に、ソース位置1604におけるブロックストレージデバイス1602の状態1618のコピーは、ターゲット位置1612におけるブロックストレージデバイス1602の状態1622と一致するように、最終コピーでファイナライズ1620してもよい。ソース位置1604におけるブロックストレージデバイス1602の状態1618のコピーは、新たなVMインスタンスへのリースがアクティブリース1616になる前や、元のVMインスタンスへのリースが非アクティブリース1610になる前(すなわち、移行のクリティカルフェーズの終了前)に、最終コピーでファイナライズ1620し得る。
図17は、図12に関連して説明したような、少なくとも1つの実施形態による、仮想マシンインスタンス移行の完了後の、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらしている例示的な環境1700を示す。移行後、新たなVMインスタンス1706は、ブロックレベルストレージサービス1708によりブロックストレージデバイス1702へのアクセスがもたらされた状態で、ターゲット位置1704で動作してもよい。新たなVMインスタンス1706によるブロックストレージデバイス1702へのアクセスをもたらすように構成されたリース1710は、ブロックレベルストレージサービス1708によって提供される。図17に示す例で、リース1710はアクティブリースであり、新たなVMインスタンス1706から受信された入出力要求は、応答を生成し、ターゲット位置1704の新たなVMインスタンス1706に送信し得る。本明細書で記載するように、アクティブリース1710は、新たなVMインスタンス1706に一時的に提供でき、ブロックレベルストレージサービス1708によって管理されてもよい。移行が完了すると、ターゲット位置1704におけるブロックストレージデバイスの状態1712を、移行前の状態と一致させることができる。
図18は、図12で説明したような、少なくとも1つの実施形態による、三角アプローチを利用してブロックストレージデバイスによる仮想マシンの仮想マシン移行を実行するための例示的なプロセス1800を示す。図12に関連して説明したブロックレベルストレージサービス1220などのブロックレベルストレージサービスは、図18に示す処理を実行できる。
コンピューティングリソースサービスプロバイダが提供する1つまたは複数のコンピュータシステムで、サービスとして及び/または分散型のサービスとして実装され得るブロックレベルストレージサービスは、ブロックストレージデバイスのための第1のリースを、コンピューティングリソースサービスプロバイダによって提供されるコンピューティングデバイスのようなソース位置で動作する第1の仮想マシンインスタンスに、提供1802し得る。
ソース位置からターゲット位置(例えば、コンピューティングリソースサービスプロバイダによって提供される異なるコンピューティングデバイス)へ仮想マシンインスタンスが移行を開始するというインジケータを受信1804した後、ブロックレベルストレージサービスは、コンピューティングリソースサービスプロバイダによって提供されるコンピューティングデバイスなどのターゲット位置で動作する第2の仮想マシンインスタンスに対するブロックストレージデバイス用の第2のリースを提供1806し得る。スタンバイリースである第2のリースは、第2の仮想マシンインスタンスがブロックストレージデバイスにアクセスすることを許容する第2の資格証明セットを提供し得る。スタンバイリースでは、ブロックストレージデバイスへの部分的なアクセスのみが許容される。例えば、スタンバイリースでは、仮想マシンインスタンスは入出力要求に対する応答を受信することのみでき、そのような要求を生成するための資格証明を持たない可能性がある。次に、ブロックレベルストレージサービスは、ソース位置から準備的な状態情報をターゲット位置にコピー1808し得る。
ブロックレベルストレージデバイスは、少なくとも部分的に移行進捗インジケータ(本明細書では「移行の進捗のインジケータ」とも称する)に基づいて、第1のリースのステータスを更新1810し得る。移行がクリティカル状態に達し、ソースの状態情報が急激に変化しないとき(例えば、ソース及び/またはターゲットが一時停止しているとき)、ブロックレベルストレージサービスは、ソース位置からターゲット位置への最終的な状態情報セットをコピー1812でき、その結果ターゲット位置で仮想マシンインスタンスが再開されたとき、ブロックストレージデバイスの一貫した状態が維持される。移行が完了したとき(すなわち、クリティカルフェーズが完了したとき)、ブロックレベルストレージサービスは、例えば、第2のリースがアクティブリースになるように、移行進捗インジケータに少なくとも部分的に基づいて第2のリースのステータスを最終的に更新1814し得る。
例えば、移行進捗インジケータは、移行がクリティカルフェーズに達し、その結果、第1のリース及び第2のリースが非アクティブになり得、及び/またはスタンバイ状態になり得ることを示すことができる。また、移行進捗インジケータは、移行が成功し、そのため、第2のリースがアクティブになるのに対し第1のリースが非アクティブになり得る旨を示すことができる。同様に、移行進捗インジケータは、移行が失敗し、そのため、第2のリースが非アクティブになるのに対し第1のリースがアクティブになり得る旨を示すことができる。考えられるように、本明細書に記載されているリース状態及び移行進捗インジケータは単なる例示であり、したがって、他のリース状態または移行進捗インジケータも、本開示の範囲内と考えることができる。
さらに、本開示の実施形態は、以下の条項を考慮して、説明されることができる。
1.コンピュータ実装方法であって、
実行可能命令で構成されたブロックレベルストレージサービスコンピュータシステムの制御下で、
仮想マシンインスタンスをブロックストレージデバイスに関連付ける第1のリースを得ることであって、前記ブロックストレージデバイスは前記ブロックレベルストレージサービスによって提供され、前記第1のリースは前記仮想マシンインスタンスによる前記ブロックストレージデバイスへの第1のアクセスのポリシーを指定し、アクティブの第1のステータスを有する、前記第1のリースを得ること、
ソースコンピューティングデバイスからターゲットコンピューティングデバイスへの前記仮想マシンインスタンスの移行の開始のインジケータを受信すること、
前記ターゲットコンピューティングデバイスの前記仮想マシンインスタンスを前記ブロックストレージデバイスと関連付ける第2のリースを得ることであって、前記第2のリースは前記仮想マシンインスタンスによる前記ブロックストレージデバイスへの第2のアクセスのポリシーを指定し、前記第2のリースは第2のスタンバイのステータスを有する、前記第2のリースを得ること、
前記ブロックストレージデバイスに関連付けられる第1の状態情報セットを前記ソースコンピューティングデバイスから前記ターゲットコンピューティングデバイスにコピーすること、
前記移行の進捗のインジケータに少なくとも部分的に基づいて前記第1のステータスを更新すること、
前記ブロックストレージデバイスに関連付けられる第2の状態情報セットを前記ソースコンピューティングデバイスから前記ターゲットコンピューティングデバイスにコピーすること、及び
前記移行の進捗のインジケータに少なくとも部分的に基づいて、前記第2のステータスをアクティブに更新すること、を含む前記コンピュータ実装方法。
2.前記第1の状態情報セットは、第1の能力測定基準セットのサブセットを含み、
前記第2の状態情報セットは、第2の前記能力測定基準セットのサブセットを含み、
前記能力測定基準セットは、1秒当たりの入出力動作、使用される帯域幅、読取りバイト、書込みバイト、アイドルに費やされた時間、またはスロットル率のうちの少なくとも1つを含む、条項1に記載のコンピュータ実装方法。
3.前記能力測定基準セットが、
コンピューティングリソースサービスプロバイダの顧客に提示されるように構成された顧客直面能力測定基準セットと、
前記ブロックストレージデバイスの健全性の測定値を少なくとも判定するために、前記コンピューティングリソースサービスプロバイダのサービスによって使用可能な内部能力測定基準セットと、を含む、条項2に記載のコンピュータ実装方法。
4.前記コンピューティングリソースサービスプロバイダの前記サービスは、前記ブロックレベルストレージサービスである、条項3に記載のコンピュータ実装方法。
5.1つまたは複数のサービスを実装するように構成された少なくとも1つのコンピューティングデバイスを備えるシステムであって、
前記1つまたは複数のサービスは、
第1の位置から第2の位置への仮想マシンインスタンスの移行の開始に応答し、前記仮想マシンインスタンスが、ブロックレベルストレージサービスによって提供されるブロックストレージデバイスに前記仮想マシンインスタンスを関連付ける第1のリースを有し、少なくとも、
前記第2の位置にある前記仮想マシンインスタンスを前記ブロックストレージデバイスに関連付ける第2のリースを得ることであって、前記第2のリースは、前記仮想マシンインスタンスによる前記ブロックストレージデバイスへの第2のアクセスのポリシーを指定する、前記第2のリースを得ること、
前記ブロックストレージデバイスに関連付けられる第1の状態情報セットを前記第1の位置から前記第2の位置にコピーすること、及び
前記ブロックストレージデバイスに関連付けられる第2の状態情報セットを前記第1の位置から前記第2の位置にコピーすることであって、前記第2の状態情報セットは前記第1の状態情報セットのサブセットに対する1つ以上の変更を含む、前記前記第2の位置にコピーすること、を行うように構成される、前記システム。
6.前記第1のリースは、前記ブロックストレージデバイスへの第1のアクセスのポリシーを指定し、
前記第2のリースは、前記ブロックストレージデバイスへの第2のアクセスのポリシーを指定する、条項5に記載のシステム。
7.前記第1のリースがアクティブリースであり、
前記第2のリースがスタンバイリースである、条項5または6に記載のシステム。
8.前記第1の状態情報セットが、前記ブロックストレージデバイスの能力測定基準セットを含む、条項5〜7のいずれかに記載のシステム。
9.前記第2の状態情報セットは、スロットル率を含み、前記スロットル率が、ブロックストレージデバイスが使用できる利用可能な帯域幅の割合を指定する、条項5〜8のいずれかに記載のシステム。
10.前記第1の状態情報セットは、前記ブロックストレージデバイスに関連付けられる暗号情報を含む、条項5〜9のいずれかに記載のシステム。
11.前記第1の状態情報セットは、前記仮想マシンインスタンスによる前記ブロックストレージデバイスへのアクセスに関連するポリシーのセットを含む、条項5〜10のいずれかに記載のシステム。
12.前記第1の位置がコンピューティングデバイスであり、
前記第2の位置は異なるコンピューティングデバイスである、条項5〜11のいずれかに記載のシステム。
13.コンピュータシステムの1つまたは複数のプロセッサによって実行されるとき、前記コンピュータシステムに、少なくとも、
仮想マシンインスタンスの第1の位置から第2の位置への移行の第1のフェーズ中に、ブロックストレージデバイスに関連付けられる第1の状態情報セットを前記第1の位置から前記第2の位置にコピーすることであって、前記ブロックストレージデバイスは前記仮想マシンインスタンスに提供される、前記第2の位置にコピーすること、
前記移行のクリティカルフェーズを検出すること、及び
前記ブロックストレージデバイスに関連付けられる第2の状態情報セットをコピーすること、を行わせる実行可能命令が記憶された非一時的なコンピュータ可読記憶媒体。
14.前記第2の状態情報セットは、前記第1の状態情報セットのサブセットに対する1つ以上の変更を含む、条項13に記載の非一時的なコンピュータ可読記憶媒体。
15.前記命令が、前記1つまたは複数のプロセッサによって実行されたときに、前記コンピュータシステムに、少なくとも、前記移行の完了を検出させ、前記移行の完了に基づいて、前記移行が失敗したことを判定させる命令をさらに含む、条項13または14に記載の非一時的なコンピュータ可読記憶媒体。
16.前記コンピュータシステムに、前記移行が失敗したと判定させる前記命令は、前記1つまたは複数のプロセッサによって実行されるとき、前記コンピュータシステムに、前記第1の状態情報セット及び前記第2の状態情報セットに少なくとも部分的に基づいて、前記第1の位置から前記ブロックストレージデバイスに関連付けられる第3の状態情報セットを更新させる命令をさらに備える、条項15に記載の非一時的なコンピュータ可読記憶媒体。
17.前記仮想マシンインスタンスが、
前記第1の位置で動作する前記仮想マシンインスタンスを前記ブロックストレージデバイスに関連付ける第1の資格証明セットと、
前記第2の位置で動作している前記仮想マシンインスタンスを前記ブロックストレージデバイスに関連付ける第2の資格証明のセットと、を備える、条項13〜16のいずれかに記載の非一時的なコンピュータ可読記憶媒体。
18.前記第1の資格証明セットは、一時的な資格証明セットであり、前記第2の資格証明のセットは、一時的な資格証明セットである、条項17に記載の非一時的なコンピュータ可読記憶媒体。
19.前記第1の資格証明セットは、前記ブロックストレージデバイスに関連付けられるブロックレベルストレージサービスから得られた第1のリースによって指定され、
前記第2の資格証明セットは、前記移行に応答して前記ブロックストレージデバイスに関連付けられる前記ブロックレベルストレージサービスによって生成された第2のリースによって指定される、条項17に記載の非一時的なコンピュータ可読記憶媒体。
20.前記命令は、前記1つまたは複数のプロセッサによって実行されるとき、前記コンピュータシステムに、前記移行の前記クリティカルフェーズを検出したとたん前記第1のリースを非アクティブに設定させる命令をさらに含む、条項19に記載の非一時的なコンピュータ可読記憶媒体。
21.コンピュータ実装方法であって、
実行可能命令で構成されたブロックレベルストレージサービスコンピュータシステムの制御下で、
仮想マシンインスタンスをブロックストレージデバイスに関連付ける第1のリースを得ることであって、前記ブロックストレージデバイスは、前記ブロックレベルストレージサービスによって提供され、前記第1のリースは、前記仮想マシンインスタンスによる前記ブロックストレージデバイスへの第1のアクセスのポリシーを指定し、前記第1のリースは、アクティブの第1のステータスを有する、前記第1のリースを得ること、
ソースコンピューティングデバイスからターゲットコンピューティングデバイスへの前記仮想マシンインスタンスの移行の開始のインジケータを受信すること、
前記ターゲットコンピューティングデバイスの前記仮想マシンインスタンスを前記ブロックストレージデバイスに関連付ける第2のリースを生成することであって、前記第2のリースは、前記仮想マシンインスタンスによる前記ブロックストレージデバイスへの第2のアクセスのポリシーを指定し、前記第2のリースは第2のスタンバイのステータスを有する、前記第2のリースを生成すること、
前記移行の進捗のインジケータに少なくとも部分的に基づいて前記第1のステータス及び前記第2のステータスを更新すること、
前記ブロックストレージデバイスを前記仮想マシンインスタンスからアドレス指定する入出力要求のセットを受信すること、及び
前記入出力要求セットの入出力要求に対する応答を提供することであって、前記応答は少なくとも前記応答を送信する応答位置を指定し、前記応答位置は、前記第1のステータスがアクティブであるかどうかに少なくとも部分的に基づいて判定され、前記応答位置は、前記ソースコンピューティングデバイス及び前記ターゲットコンピューティングデバイスから選択される、前記応答を提供すること、を含む、前記コンピュータ実装方法。
22.前記移行の進捗の前記インジケータがクリティカルフェーズに到達した結果として、前記第1のステータスが非アクティブに変更される、条項21に記載のコンピュータ実装方法。
23.前記第2のステータスは、前記第1のステータスが非アクティブである結果としてアクティブに変更される、条項21または22に記載のコンピュータ実装方法。
24.前記応答位置が、前記第2のステータスが非アクティブでないかどうかに少なくとも部分的に基づいてさらに判定される、条項21〜23のいずれかに記載のコンピュータ実装方法。
25.1つまたは複数のサービスを実装するように構成された少なくとも1つのコンピューティングデバイスを備えるシステムであって、
1つ以上のサービスが、
仮想マシンインスタンスをブロックストレージデバイスに関連付ける第1のリースを得ることであって、前記ブロックストレージデバイスは、前記ブロックレベルストレージサービスによって提供され、前記第1のリースは前記仮想マシンインスタンスによる前記ブロックストレージデバイスへの第1のアクセスのポリシーを指定する、前記第1のリースを得ること、及び
第1の位置から第2の位置への仮想マシンインスタンスの移行の開始に応答し、少なくとも、
前記第2の位置にある前記仮想マシンインスタンスを前記ブロックストレージデバイスに関連付ける第2のリースを生成することであって、前記第2のリースは、前記仮想マシンインスタンスによる前記ブロックストレージデバイスへの第2のアクセスのポリシーを指定する、前記第2のリースを生成すること、
前記移行の進捗のインジケータに少なくとも部分的に基づいて前記第1のリースの第1のステータス及び前記第2のリースの第2のステータスを判定すること、及び
前記ブロックストレージデバイスをアドレス指定する入出力要求セットの入出力要求への応答をもたらすことであって、前記入出力応答は前記仮想マシンインスタンスから受信し、前記応答は応答位置セットを指定し、前記応答位置セットは前記第1のステータスと前記第2のステータスに少なくとも部分的に基づいている、を行うように構成されている、前記システム。
26.前記応答位置セットの応答位置は、前記第1の位置及び前記第2の位置から選択される、条項25に記載のシステム。
27.前記応答位置セットは、前記第1のステータスがアクティブである場合、前記第1の位置を含む、条項26に記載のシステム。
28.前記応答位置セットは、前記第2のステータスが非アクティブでない場合、前記第2の位置を含む、条項26に記載のシステム。
29.前記応答が前記応答位置セットの応答位置に提供される、条項25〜28のいずれかに記載のシステム。
30.前記移行の進捗の前記インジケータが、少なくとも移行成功または移行失敗を含む、条項25〜29のいずれかに記載のシステム。
31.前記移行の進捗の前記インジケータが移行成功である場合、前記第1のステータスは非アクティブに変更され、
前記移行の進捗の前記インジケータが移行成功である場合、前記第2のステータスはアクティブに変更される、条項30に記載のシステム。
32.前記移行の進捗の前記インジケータが移行失敗である場合、前記第1のステータスはアクティブに変更され、
前記移行の進捗の前記インジケータが移行失敗である場合、前記第2のステータスは非アクティブに変更される、条項30に記載のシステム。
33.コンピュータシステムの1つまたは複数のプロセッサによって実行されるとき、前記コンピュータシステムに、少なくとも、
仮想マシンインスタンスの第1の位置から第2の位置への移行を開始することであって、前記仮想マシンインスタンスは、前記第1の位置で動作している前記仮想マシンインスタンスを、ブロックストレージデバイスに関連付ける第1の資格証明セットを備え、前記仮想マシンインスタンスは、前記第2の位置で動作している前記仮想マシンインスタンスをブロックストレージデバイスに関連付ける第2の資格証明セットを備える、前記移行を開始すること、及び
前記ブロックストレージデバイスをアドレス指定し、前記移行中に前記仮想マシンインスタンスから受信した入出力要求に対する応答をもたらすことであって、前記応答は、1つまたは複数の応答位置を指定し、前記1つまたは複数の応答位置は、前記移行の進捗のインジケータに少なくとも部分的に基づく、前記応答をもたらすこと、を行わせる実行可能命令を記憶した非一時的なコンピュータ可読記憶媒体。
34.前記第1の資格証明セット及び前記第2の資格証明セットは、前記コンピュータシステムによって判定された期間を有する資格証明の一時的なセットである、条項33に記載の非一時的なコンピュータ可読記憶媒体。
35.前記第1の資格証明セットは、前記ブロックストレージデバイスに関連付けられるブロックレベルストレージサービスから得られた第1のリースによって指定され、
前記第2の資格証明セットは、前記移行に応答して前記ブロックストレージデバイスに関連付けられる前記ブロックレベルストレージサービスによって生成された第2のリースによって指定される、条項33または34に記載の非一時的なコンピュータ可読記憶媒体。
36.前記第1の位置がコンピューティングデバイスであり、
前記第2の位置が異なるコンピューティングデバイスである、条項33〜35のいずれかに記載の非一時的なコンピュータ可読記憶媒体。
37.前記移行の進捗の前記インジケータが、移行なし、移行開始、クリティカルフェーズ、移行成功、または移行失敗のうちの少なくとも1つである、条項33〜36のいずれかに記載の非一時的なコンピュータ可読記憶媒体。
38.前記進捗のインジケータが、移行、移行開始、または移行失敗ではない場合、前記1つ以上の応答ロケーションが前記第1のロケーションを含む、条項37に記載の非一時的なコンピュータ可読記憶媒体。
39.前記進捗のインジケータが、移行開始または移行成功である場合、前記1つ以上の応答位置が前記第2の位置を含む、条項37に記載の非一時的なコンピュータ可読記憶媒体。
40.前記1つ以上の応答位置は、前記進捗のインジケータがクリティカルフェーズである場合、前記第1の位置及び前記第2の位置を含む、条項37に記載の非一時的なコンピュータ可読記憶媒体。
様々な実施形態は、さらに、様々な動作環境で実施することができ、場合によっては、いくつかのアプリケーションのいずれかを動作させるために利用し得る1つ以上のユーザコンピュータ、コンピューティングデバイスまたは処理デバイスを含むことができる。ユーザーデバイスまたはクライアントデバイスは、標準オペレーティングシステムを実行するデスクトップコンピュータ、ラップトップコンピュータまたはタブレットのいくつかの汎用パーソナルコンピュータ等のいずれか、ならびに携帯電話向けソフトウェアを実行し、かついくつかのネットワーキングプロトコル及びメッセージプロトコルをサポートできる、セルラーデバイス、無線デバイス、及びハンドヘルドデバイスを含むことがある。そのようなシステムはまた、様々な市販のオペレーティングシステムのいずれかを実行する複数のワークステーション、及び開発及びデータベース管理などの目的のための他の公知のアプリケーションを含むことができる。これらのデバイスはまた、ダミー端末、シンクライアント、ゲームシステム、及びネットワークを介して通信し得る他のデバイスなどの他の電子デバイスを含むことができる。これらのデバイスは、仮想マシン、ハイパーバイザー、及びネットワークを介して通信できる他の仮想デバイスなどの仮想デバイスも含むことができる。
本開示の様々な実施形態は、伝送制御プロトコル/インターネットプロトコル(「TCP/IP」)、ユーザデータグラムプロトコル(「UDP」)、開放型システム接続(「OSI))モデルの様々なレイヤで動作するプロトコル、ファイル転送プロトコル(「FTP」)、ユニバーサルプラグアンドプレイ(「UPnP」)、ネットワークファイルシステム(「NFS」)、Common Internet File System(「CIFS」)、及びAppleTalkといった様々な市販のプロトコルのいずれかを利用して通信をサポートするために、当業者によく知られている少なくとも1つのネットワークを利用する。ネットワークは、例えば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、衛星ネットワーク、及びそれらの任意の組み合わせをであってよい。
ウェブサーバを利用する実施形態では、ウェブサーバは、ハイパーテキスト転送プロトコル(「HTTP」)サーバ、FTPサーバ、Common Gateway Interface(「CGI」)サーバ、データサーバ、Java(登録商標)サーバ、Apacheサーバ、ビジネスアプリケーションサーバを含む様々なサーバまたは中間層のアプリケーションのいずれかを実行し得る。サーバ(複数可)はまた、任意のプログラミング言語、例えばJava(登録商標)、C、C#、またはC++、または任意のスクリプト言語、例えばRuby、PHP、Perl、Python、またはTCL、ならびにそれらの組み合わせなどで書かれた1つまたは複数のまたはプログラムとして実装され得る1つまたは複数のウェブアプリケーションを実行することなどによって、ユーザのデバイスからの要求に応答して、プログラムまたはスクリプトを実行し得る。 また、サーバ(複数可)は、データベースサーバ、例えば非限定的に、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、及びIBM(登録商標)で市販されているもの、ならびにオープンソースサーバ、例えばMySQL、Postgres、SQLite、MongoDB、また構造化データまたは非構造化データを記憶、検索、及びアクセスできる他のいずれかのサーバを含むデータベースサーバも含み得る。 データベースサーバは、テーブルベースのサーバ、ドキュメントベースのサーバ、非構造化サーバ、リレーショナルサーバ、非リレーショナルサーバ、またはこれら及び/またはその他のデータベースサーバの組み合わせも含み得る。
環境は、上述したように、様々なデータストア、ならびに他のメモリ及び記憶媒体を含むことができる。これらは、1つまたは複数のコンピュータにローカル(及び/またはそこに存在する)記憶媒体、またはネットワークを介してコンピュータの一部もしくは全部からリモートである記憶媒体などの、様々な位置に存在し得る。特定の実施形態のセットでは、情報は、当業者によく知られているストレージエリアネットワーク(「SAN」)に存在していてもよい。同様に、コンピュータ、サーバまたは他のネットワークデバイスに起因する機能を実行するために必要な任意のファイルは、必要に応じてローカル及び/またはリモートに記憶し得る。システムがコンピュータ化されたデバイスを含む場合、そのような各デバイスは、バスを介して電気的に結合され得るハードウェア要素を含むことができ、その要素は、例えば、少なくとも1つの中央処理装置(「CPU」または「プロセッサ」)、少なくとも1つの入力デバイス(例えば、マウス、キーボード、コントローラ、タッチスクリーンまたはキーパッド)、及び少なくとも1つの出力デバイス(例えば、ディスプレイデバイス、プリンタまたはスピーカ)を含む。また、そのようなシステムは、1つまたは複数のストレージデバイス、例えばディスクドライブ、光学的ストレージデバイス及びソリッドステートストレージデバイス、例えばランダムアクセスメモリ(「RAM」)または読み出し専用メモリ(「ROM」)、ならびにリムーバブルメディアデバイス、メモリカード、フラッシュカードなどを含み得る。
また、そのようなデバイスは、コンピュータ可読記憶媒体読取装置、通信デバイス(例えば、モデム、ネットワークカード(無線または有線)、赤外線通信デバイスなど)、及び前述のワーキングメモリを含むことができる。コンピュータ可読記憶媒体読取装置は、リモートの、ローカルの、固定の、及び/または取り外し可能なストレージデバイスを表現するコンピュータ可読記憶媒体、ならびにコンピュータ可読情報を一時的及び/またはより永続的に包含、記憶、送信、及び読み出すための記憶媒体に接続することができるか、受信するように構成できる。また、システム及び様々なデバイスは、通常、いくつかのソフトウェアアプリケーション、モジュール、サービスまたは少なくとも1つのワーキングメモリデバイス内に配置された他の要素、例えばオペレーティングシステム及びアプリケーションプログラム、例えばクライアントアプリケーションまたはウェブブラウザを含む。代替の実施形態は、上述したものからの数多くの変形を有し得ることを理解されたい。例えば、カスタマイズされたハードウェアも利用してよく、及び/または特定の要素がハードウェア、ソフトウェア(アプレットなどのポータブルソフトウェアを含む)、またはその両方で実装されてもよい。さらに、ネットワーク入力/出力デバイス等の他のコンピューティングデバイスへの接続が用いられ得る。
コードまたはコードの一部を包含するための記憶媒体及びコンピュータ可読媒体は、当技術分野で知られているまたは利用されている任意の適切な媒体を含むことができる。それは、記憶媒体及び通信媒体、例えば、非限定的に、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報の記憶及び/または伝達のための任意の方法または技術で実行される揮発性及び不揮発性、取り外し可能及び取り外し不可能な媒体を含み、それはRAM、ROM、電気的消去再書込み可能な読出し専用メモリ(「EEPROM」)、フラッシュメモリ、または他のメモリ技術、読み取り専用コンパクトディスク(「CD−ROM」)、デジタル多目的ディスク(DVD)、または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、または所望の情報を記憶するために利用することができ、システムデバイスがアクセスし得る任意の他の媒体を含む。本明細書で提供される開示及び教示に基づいて、当業者は、様々な実施形態を実装するための他の手段及び/または方法を理解するであろう。
したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で認識されるべきである。しかし、特許請求の範囲に記載された本発明のより広い精神及び範囲から逸脱することなく、様々な修正及び変更を行うことができることは明白である。
他の変形例は、本開示の精神の範囲内である。したがって、開示された技法が、様々な修正及び代替的な構成を受け入れることができるが、その特定の図示された実施形態を図面に示し、上で詳細に説明してきた。しかし、本発明を開示された特定の形態(複数可)に限定するつもりはなく、反対に、添付の特許請求の範囲に定義されるように、本発明の精神及び範囲内に入るすべての改変、代替的な構成及び等価物を網羅することが意図されていることを理解されたい。
開示される実施形態を説明する文脈における(特に以下の特許請求の範囲の文脈における)「a」、「an」、及び「the」という用語及び同様の指示語の使用は、本明細書において別段の指示がない限り、または文脈に明らかに矛盾するものでない限り、単数及び複数の双方を網羅すると解釈される。「comprising(備える)」、「having(有する)」、「including(含む)」及び「containing(含有する)」という用語は、別段の記載がない限り、オープンエンドの用語(すなわち、「含むが、これに限定されない」を意味する)として解釈されるべきである。「connected(接続された)」という用語は、修飾されておらず、物理的な接続を示すときは、何かが介在していても部分的にまたは完全に包含されているか、付着しているか、共に結合しているものと解釈すべきである。本明細書の値の範囲の列挙は、本明細書中で別段の指示がない限り、範囲内の各別個の値を個別に示す簡略的な方法として提供することを単に意図しており、各々の別個の値は、まるで本明細書に個別に記載されているかの如く、明細書に組み込まれる。別段に明記されない限り、または文脈と矛盾しない限り、「セット」(例えば、「項目のセット」)または「サブセット」という用語の利用は、1つまたは複数の要素を含む非空の集まりとして解釈されるべきである。さらに、別段に明記されない限り、または矛盾しない限り、対応するセットの「サブセット」という用語は必ずしも対応するセットの適切なサブセットを意味するものではなく、サブセットと対応するセットが等しいものであってもよい。
「A、B、及びCの少なくとも1つ」または「A、B及びCの少なくとも1つ」の形のフレーズなどの接続的な語は、具体的に別段に明記されていない限り、あるいは文脈に明らかに矛盾しない限り、項目、用語などが、AまたはBまたはCのいずれか、AとBとCのセットの任意の非空のサブセットであり得ることを示すよう一般的に使用される文脈で別段に理解される。例えば、3つの要素を含むセットの説明的な例で、「A、B、及びCの少なくとも1つ」と「A、B及びCの少なくとも1つ」は、{A}、{B}、{C}、{A、B}、{A、C}、{B、C}、{A、B、C}の集合のいずれかを示している。したがって、そのような接続的な語は、ある実施形態が、Aの少なくとも1つ、Bの少なくとも1つ、及びCの少なくとも1つが各々存在する必要があることを意味することを概して意図してはいない。
本明細書に記載されるプロセスの操作は、本明細書で別段に指示されない限り、あるいは文脈に明らかに矛盾しない限り、任意の適切な順序で実施され得る。本明細書で説明されるプロセス(またはその変形及び/またはそれらの組み合わせ)は、実行可能命令で構成された1つまたは複数のコンピュータシステムの制御下で実行でき、1つまたは複数のプロセッサで、ハードウェアで、またはそれらの組み合わせによって、集合的に実行されるコード(例えば、実行可能命令、1つ以上のコンピュータプログラムまたは1つ以上のアプリケーション)として実行できる。コードは、例えば、1つまたは複数のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形態で、コンピュータ可読記憶媒体に記憶されてもよい。コンピュータ可読記憶媒体は、非一時的なものでもよい。
本明細書で提供される一部の及びすべての実施例、または例示的な用語(例えば、「など」)の利用は、単に本発明の実施形態をよりよく示すことを意図しており、別段のクレームがない限り、本発明の範囲を限定するものではない。本明細書のいかなる言葉も、本発明の実施に不可欠な特許請求されていない要素を示すものとして解釈されるべきではない。
本発明を実施するために本発明者らに知られている最良の形態を含む、本開示の実施形態を、本明細書に記載している。これらの実施形態の変形は、前述の説明を読むと、当業者に明らかになり得る。本発明者らは、当業者がこのような変形を適切に利用することを期待しており、本発明者らは、本明細書に具体的に記載されたものとは別の方法で本開示の実施形態が実施されることを意図する。したがって、本開示の範囲は、適用可能な法によって許容されるように、本明細書に添付された特許請求の範囲に記載された主題のすべての改変及び均等物を含む。さらに、本明細書で別段に指示されない限り、あるいは文脈に明らかに矛盾しない限り、すべての可能な変形における上記の要素の任意の組合せは、本開示の範囲に包含される。
本明細書で引用された刊行物、特許出願及び特許を含むすべての参考文献は、各参考文献が個別にかつ具体的に参照により組み込まれることが示され、その全体が本明細書に記載されるのと同じ程度に、参照により本明細書に組み込まれる。
[項目1]
1つまたは複数のサービスを実装するように構成された少なくとも1つのコンピューティングデバイスを備えるシステムであって、
上記1つまたは複数のサービスは、
第1の位置から第2の位置への仮想マシンインスタンスの移行の開始に応答し、上記仮想マシンインスタンスが、ブロックレベルストレージサービスによって提供されるブロックストレージデバイスに上記仮想マシンインスタンスを関連付ける第1のリースを有し、少なくとも、
上記第2の位置にある上記仮想マシンインスタンスを上記ブロックストレージデバイスに関連付ける第2のリースを得ることであって、上記第2のリースは、上記仮想マシンインスタンスによる上記ブロックストレージデバイスへの第2のアクセスのポリシーを指定する、上記第2のリースを得ること、
上記ブロックストレージデバイスに関連付けられる第1の状態情報セットを上記第1の位置から上記第2の位置にコピーすること、及び
上記ブロックストレージデバイスに関連付けられる第2の状態情報セットを上記第1の位置から上記第2の位置にコピーすることであって、上記第2の状態情報セットは上記第1の状態情報セットのサブセットに対する1つ以上の変更を含む、上記第2の位置にコピーすること、を行う、上記システム。
[項目2]
上記第1のリースは、上記ブロックストレージデバイスへの第1のアクセスのポリシーを指定し、
上記第2のリースは、上記ブロックストレージデバイスへの第2のアクセスのポリシーを指定する、項目1に記載のシステム。
[項目3]
上記第1のリースがアクティブリースであり、
上記第2のリースがスタンバイリースである、項目1または2に記載のシステム。
[項目4]
上記第1の状態情報セットが、上記ブロックストレージデバイスの能力測定基準セットを含む、項目1〜3のいずれか一項に記載のシステム。
[項目5]
上記第2の状態情報セットは、スロットル率を含み、上記スロットル率が、上記ブロックストレージデバイスが使用できる利用可能な帯域幅の割合を指定する、項目1〜4のいずれか一項に記載のシステム。
[項目6]
上記第1の状態情報セットは、上記ブロックストレージデバイスに関連付けられる暗号情報を含む、項目1〜5のいずれか一項に記載のシステム。
[項目7]
上記第1の状態情報セットは、上記仮想マシンインスタンスによる上記ブロックストレージデバイスへのアクセスに関連するポリシーのセットを含む、項目1〜6のいずれか一項に記載のシステム。
[項目8]
上記第1の位置がコンピューティングデバイスであり、
上記第2の位置は異なるコンピューティングデバイスである、項目1〜7のいずれか一項に記載のシステム。
[項目9]
コンピュータシステムに、少なくとも、
仮想マシンインスタンスの第1の位置から第2の位置への移行の第1のフェーズ中に、ブロックストレージデバイスに関連付けられる第1の状態情報セットを上記第1の位置から上記第2の位置にコピーする手順であって、上記ブロックストレージデバイスは上記仮想マシンインスタンスに提供される、上記第2の位置にコピーする手順、
上記移行のクリティカルフェーズを検出する手順、及び
上記ブロックストレージデバイスに関連付けられる第2の状態情報セットをコピーする手順、を実行させるためのプログラム。
[項目10]
上記第2の状態情報セットは、上記第1の状態情報セットのサブセットに対する1つ以上の変更を含む、項目9に記載のプログラム。
[項目11]
上記コンピュータシステムに、少なくとも、上記移行の完了を検出させ、上記移行の上記完了に基づいて、上記移行が失敗したことを判定させる手順をさらに実行させるための、項目9または10に記載のプログラム。
[項目12]
上記コンピュータシステムに、上記移行が失敗したと判定させる上記手順は、上記コンピュータシステムに、上記第1の状態情報セット及び上記第2の状態情報セットに少なくとも部分的に基づいて、上記第1の位置から上記ブロックストレージデバイスに関連付けられる第3の状態情報セットを更新させる手順をさらに備える、項目9〜11のいずれか一項に記載のプログラム。
[項目13]
上記仮想マシンインスタンスが、
上記第1の位置で動作する上記仮想マシンインスタンスを上記ブロックストレージデバイスに関連付ける第1の資格証明セットと、
上記第2の位置で動作している上記仮想マシンインスタンスをブロックストレージデバイスに関連付ける第2の資格証明セットと、を備える、項目9〜12のいずれか一項に記載のプログラム。
[項目14]
上記第1の資格証明セットは、一時的な資格証明セットであり、上記第2の資格証明セットは、一時的な資格証明セットである、項目13に記載のプログラム。
[項目15]
上記第1の資格証明セットは、上記ブロックストレージデバイスに関連付けられるブロックレベルストレージサービスから得られた第1のリースによって指定され、
上記第2の資格証明セットは、上記移行に応答して上記ブロックストレージデバイスに関連付けられる上記ブロックレベルストレージサービスによって生成された第2のリースによって指定される、項目13に記載のプログラム。
[項目16]
上記コンピュータシステムに、上記移行の上記クリティカルフェーズを検出したとたん上記第1のリースを非アクティブに設定させる手順をさらに実行させるための、項目15に記載のプログラム。