(57)【要約】      （修正有）【課題】コンピュータシステムにおいてソース位置からターゲット位置への移行中に、仮想マシンインスタンスの状態を保持するための技法を提供する。【解決手段】環境１００において、ソース位置の仮想マシンインスタンスによってストレージデバイスへのアクセスをもたらすように構成された資格証明のセットが、仮想マシンインスタンスに提供される。ソース位置からターゲット位置への移行が開始されると、ソース位置の仮想マシンインスタンスによるストレージデバイスへのアクセスをもたらすように構成された第２の資格証明セットが、仮想マシンインスタンスに提供される。移行中に、入出力要求に対する応答が、資格証明セットを使用して、少なくとも部分的に移行の状態に基づいて、１つ以上の位置に提供される。【選択図】図１
2020035465.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実装方法であって、
ブロックストレージデバイスに仮想マシンインスタンスを関連付ける第１のリースを得る段階であって、前記ブロックストレージデバイスは、ブロックレベルストレージサービスによって提供され、前記第１のリースは、前記仮想マシンインスタンスによって前記ブロックストレージデバイスへの第１のポリシーを指定し、アクティブの第１のステータスを有する、第１のリースを得ること、
ソースコンピューティングデバイスからターゲットコンピューティングデバイスへの前記仮想マシンインスタンスの移行の開始のインジケータを受信すること、
前記ターゲットコンピューティングデバイスの前記仮想マシンインスタンスを前記ブロックストレージデバイスと関連付ける第２のリースを得ることであって、前記第２のリースは前記仮想マシンインスタンスによる前記ブロックストレージデバイスへの第２のアクセスのポリシーを指定し、前記第２のリースはスタンバイの第２のステータスを有する、前記第２のリースを得ること、
前記ブロックストレージデバイスに関連付けられる第１の状態情報セットを前記ソースコンピューティングデバイスから前記ターゲットコンピューティングデバイスにコピーすること、
前記移行の進捗のインジケータに少なくとも部分的に基づいて前記第１のステータスを更新すること、
前記ブロックストレージデバイスに関連付けられる第２の状態情報セットを前記ソースコンピューティングデバイスから前記ターゲットコンピューティングデバイスにコピーすることであって、前記第２の状態情報セットが前記第１の状態情報セットと異なる、前記第２の状態情報セットをコピーすること、及び
前記移行の進捗のインジケータに少なくとも部分的に基づいて、前記第２のステータスをアクティブに更新することを含む
コンピュータ実装方法。
【請求項２】
前記第１の状態情報セットは、能力測定基準セットの第１のサブセットを含み、
前記第２の状態情報セットは、前記能力測定基準セットの第２のサブセットを含み、
前記能力測定基準セットは、１秒当たりの入出力動作、使用される帯域幅、読取りバイト、書込みバイト、アイドルに費やされた時間、またはスロットル率のうちの少なくとも１つを含む、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記能力測定基準セットが、
コンピューティングリソースサービスプロバイダの顧客に提示される顧客直面能力測定基準セットと、
前記ブロックストレージデバイスの健全性の測定値を少なくとも判定するために、前記コンピューティングリソースサービスプロバイダのサービスによって使用可能な内部能力測定基準セットと、を含む、請求項２に記載のコンピュータ実装方法。
【請求項４】
前記コンピューティングリソースサービスプロバイダの前記サービスは、前記ブロックレベルストレージサービスである、請求項３に記載のコンピュータ実装方法。
【請求項５】
１つまたは複数のサービスを実装する少なくとも１つのコンピューティングデバイスを備えるシステムであって、
前記１つまたは複数のサービスは、
第１の位置から第２の位置への仮想マシンインスタンスの移行の開始に応答し、前記仮想マシンインスタンスが、ブロックレベルストレージサービスによって提供されるブロックストレージデバイスに前記仮想マシンインスタンスを関連付ける第１のリースを有し、少なくとも、
前記第２の位置にある前記仮想マシンインスタンスを前記ブロックストレージデバイスに関連付ける第２のリースを得ることであって、前記第２のリースは、前記仮想マシンインスタンスによる前記ブロックストレージデバイスへの第２のアクセスのポリシーを指定する、前記第２のリースを得ること、
前記ブロックストレージデバイスに関連付けられる第１の状態情報セットを前記第１の位置から前記第２の位置にコピーすること、及び
前記ブロックストレージデバイスに関連付けられる第２の状態情報セットを前記第１の位置から前記第２の位置にコピーすることであって、前記第２の状態情報セットは前記第１の状態情報セットのサブセットに対する１つ以上の変更を含む、前記第２の位置にコピーすることである、システム。
【請求項６】
前記第１のリースは、前記ブロックストレージデバイスへの第１のアクセスのポリシーを指定し、
前記第２のリースは、前記ブロックストレージデバイスへの第２のアクセスのポリシーを指定する、請求項５に記載のシステム。
【請求項７】
前記第１のリースがアクティブリースであり、
前記第２のリースがスタンバイリースである、請求項５または６に記載のシステム。
【請求項８】
前記第１の状態情報セットが、前記ブロックストレージデバイスの能力測定基準セットを含む、請求項５〜７のいずれか一項に記載のシステム。
【請求項９】
前記第２の状態情報セットは、スロットル率を含み、前記スロットル率が、ブロックストレージデバイスが使用できる利用可能な帯域幅の割合を指定する、請求項５〜８のいずれか一項に記載のシステム。
【請求項１０】
前記第１の状態情報セットは、前記ブロックストレージデバイスに関連付けられる暗号情報を含む、請求項５〜９のいずれか一項に記載のシステム。
【請求項１１】
前記第１の状態情報セットは、前記仮想マシンインスタンスによる前記ブロックストレージデバイスへのアクセスに関連するポリシーのセットを含む、請求項５〜１０のいずれか一項に記載のシステム。
【請求項１２】
前記第１の位置がコンピューティングデバイスであり、
前記第２の位置は異なるコンピューティングデバイスである、請求項５〜１１のいずれか一項に記載のシステム。
【請求項１３】
コンピュータシステムの１つまたは複数のプロセッサによって実行されるとき、前記コンピュータシステムに、少なくとも、
仮想マシンインスタンスの第１の位置から第２の位置への移行の第１のフェーズ中に、ブロックストレージデバイスに関連付けられる第１の状態情報セットを前記第１の位置から前記第２の位置にコピーすることであって、前記ブロックストレージデバイスは前記仮想マシンインスタンスに提供される、前記第２の位置にコピーすること、
前記移行のクリティカルフェーズを検出すること、及び
前記ブロックストレージデバイスに関連付けられる第２の状態情報セットをコピーすることであって、前記第２の状態情報セットが前記第１の状態情報セットと異なる、前記第２の状態情報セットをコピーすること、
を行わせる命令を備えるプログラム。
【請求項１４】
前記第２の状態情報セットは、前記第１の状態情報セットのサブセットに対する１つ以上の変更を含む、請求項１３に記載のプログラム。
【請求項１５】
前記命令が、前記１つまたは複数のプロセッサによって実行されたときに、前記コンピュータシステムに、少なくとも、前記移行の完了を検出させ、前記移行の完了に基づいて、前記移行が失敗したことを判定させる命令をさらに含む、請求項１３または１４に記載のプログラム。
【請求項１６】
前記コンピュータシステムに、前記移行が失敗したと判定させる前記命令は、前記１つまたは複数のプロセッサによる実行を受けて、前記コンピュータシステムに、前記第１の状態情報セット及び前記第２の状態情報セットに少なくとも部分的に基づいて、前記第１の位置から前記ブロックストレージデバイスに関連付けられる第３の状態情報セットを更新させる命令をさらに備える、請求項１５に記載のプログラム。
【請求項１７】
前記仮想マシンインスタンスが、
前記第１の位置で動作する前記仮想マシンインスタンスを前記ブロックストレージデバイスに関連付ける第１の資格証明のセットと、
前記第２の位置で動作している前記仮想マシンインスタンスを前記ブロックストレージデバイスに関連付ける第２の資格証明のセットと、を備える、請求項１３〜１６のいずれか一項に記載のプログラム。
【請求項１８】
前記第１の資格証明のセットは、一時的な資格証明のセットであり、前記第２の資格証明のセットは、一時的な資格証明のセットである、請求項１７に記載のプログラム。
【請求項１９】
前記第１の資格証明のセットは、前記ブロックストレージデバイスに関連付けられるブロックレベルストレージサービスから得られた第１のリースによって指定され、
前記第２の資格証明のセットは、前記移行に応答して前記ブロックストレージデバイスに関連付けられる前記ブロックレベルストレージサービスによって生成された第２のリースによって指定される、請求項１７に記載のプログラム。
【請求項２０】
前記命令は、前記１つまたは複数のプロセッサによる実行を受けて、前記コンピュータシステムに、前記移行の前記クリティカルフェーズを検出すると前記第１のリースを非アクティブに設定させる命令をさらに含む、請求項１９に記載のプログラム。
【請求項２１】
前記第２のリースを得ることは、前記第１のリースがアクティブの前記第１のステータスを有する間ずっと、実行される、請求項１〜４のいずれか一項に記載のコンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１５年６月２９日に出願された「ＶＩＲＴＵＡＬ  ＭＡＣＨＩＮＥ  ＩＮＳＴＡＮＣＥ  ＭＩＧＲＡＴＩＯＮ」（代理人整理番号００９７７４９−５１２ＵＳ０）と題する米国特許出願第１４／７５４，４９７号、及び２０１６年６月２９日に出願された「ＰＲＥＳＥＲＶＩＮＧ  ＳＴＡＴＥ  ＤＵＲＩＮＧ  ＶＩＲＴＵＡＬ  ＭＡＣＨＩＮＥ  ＩＮＳＴＡＮＣＥ  ＭＩＧＲＡＴＩＯＮ」（代理人整理番号００９７７４９−５１４ＵＳ０）と題する米国特許出願第１４／７５４，５１９号の完全な開示が、あらゆる目的のために、参照により組み込まれている。
【背景技術】
【０００２】
現代のコンピュータシステムは、１つまたは複数のホストコンピュータシステム上で集合的に動作する仮想コンピュータシステムの集合体として頻繁に実装されている。仮想コンピュータシステムは、プロセッサ、メモリ、ネットワークインターフェース、及びストレージサービスなどのホストコンピュータシステムのリソースを利用し得る。特定のホストコンピュータシステムのリソースが、例えば、クライアント仮想コンピュータシステムによる過剰利用のために不足すると、仮想コンピュータシステムを異なるホストコンピュータシステムに移動して、システムの能力の低下、システムの停止または障害の増大、及びユーザエクスペリエンスの低下を避けることが必要になる場合がある。異なるホストコンピュータシステムへの仮想コンピュータシステムの移行は、他の要因、例えばホストコンピュータシステムの保守、ホストコンピュータシステムへのハードウェアのアップグレード、ホストコンピュータシステムの別のホストコンピュータシステムへの置き換え、ホストコンピュータシステムの誤動作、及びその他の理由からも同様に所望となり得る。
【０００３】
仮想コンピュータシステムを異なるホストコンピュータシステムに移動または移行させる問題に対する１つのアプローチは、仮想コンピュータシステムを停止させ、仮想コンピュータシステムのメモリ及び／またはシステムの状態を異なるホストコンピュータシステムにコピーし、次いで仮想コンピュータシステムを再起動することである。しかし、大規模または複雑な仮想コンピュータシステムの場合、この移行プロセスはかなりの時間を要する場合があり、その期間中にユーザが仮想コンピュータシステムとやりとりすることができなくなるか、少なくとも厳しく制限される場合がある。さらに、取付けられたストレージやネットワーク接続などの一部のシステムリソースが揮発性の場合があるため、移行された仮想コンピュータシステムが元の仮想コンピュータシステムと大きく異なる可能性が生じ、動作上の問題がさらに発生する可能性が生じる。
【０００４】
本開示による様々な実施形態を、図面を参照して説明する。
【図面の簡単な説明】
【０００５】
【図１】実施形態による、仮想マシンインスタンスが新たな位置に移行される例示的な環境を示す。
【図２】実施形態による、仮想マシンインスタンスの移行が管理される例示的な環境を示す。
【図３】実施形態による、仮想インスタンスの移行中の入出力要求に対する応答位置を決定するための例示的なプロセスを示す。
【図４】実施形態による、仮想マシンインスタンス移行前の、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらしている例示的な環境を示す。
【図５】実施形態による、仮想マシンインスタンス移行の開始後の、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらしている例示的な環境を示す。
【図６】実施形態による、仮想マシンインスタンス移行のクリティカルフェーズの、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらしている例示的な環境を示す。
【図７】実施形態による、仮想マシンインスタンス移行の完了後の、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらしている例示的な環境を示す。
【図８】実施形態による、三角アプローチを利用してブロックストレージデバイスにより仮想マシンの仮想マシン移行を実行する、例示的なプロセスを示す。
【図９】実施形態による、仮想マシンインスタンス移行に関連するリソースが管理される、例示的な環境を示す。
【図１０】実施形態による、仮想マシンインスタンス移行に関連するリソースが管理される、例示的な環境を示す。
【図１１】様々な実施形態を実施し得る環境を示す。
【図１２】実施形態による、仮想マシン移行中の、仮想マシンインスタンスに関連するブロックストレージデバイスの状態情報が保存される例示的な環境を示す。
【図１３】実施形態による、仮想インスタンスの移行中の、状態情報を転送するための例示的なプロセスを示す。
【図１４】実施形態による、仮想マシンインスタンス移行前の、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらしている例示的な環境を示す。
【図１５】実施形態による、仮想マシンインスタンス移行の開始後の、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらしている例示的な環境を示す。
【図１６】実施形態による、仮想マシンインスタンス移行のクリティカルフェーズ間の、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらしている例示的な環境を示す。
【図１７】実施形態による、仮想マシンインスタンス移行の完了後の、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらしている例示的な環境を示す。
【図１８】実施形態による、三角アプローチを利用してブロックストレージデバイスにより仮想マシンの仮想マシン移行を実行する、例示的なプロセスを示す。
【発明を実施するための形態】
【０００６】
以下の説明で、様々な実施形態を説明する。説明する目的のために、具体的な構成及び詳細を、実施形態の完全な理解を提供するために記載する。しかし、実施形態が具体的な詳細なしに実施されてもよいことも、当業者には明らかであろう。さらに、周知の特徴は、説明される実施形態を不明瞭にしないようにすべく省略または簡略化してもよい。
【０００７】
本明細書で説明及び示唆される技法は、ソースホストコンピュータシステムからターゲットホストコンピュータシステムに至る仮想マシンインスタンスの移行中に仮想コンピュータシステム（本明細書では「仮想マシンインスタンス」とも称する）のリソース及びリソース状態の移行を管理するための方法、システム、及びプロセスを含む。本明細書で説明される方法、システム、及びプロセスは、仮想マシンインスタンスリソースの段階的な移行を管理し、クリティカルである移行フェーズ（例えば、仮想マシンインスタンスの変更が移行に悪影響を与える可能性がある移行のフェーズ）の長さ及び影響の両方を低減するよう構成される。本明細書で説明する例では、ブロックレベルストレージサービスによってもたらされるブロックストレージデバイスへのアクセスは、仮想マシンインスタンスの移行中に管理され、仮想マシンインスタンスの状態及びブロックストレージデバイスの状態は、移行の影響を受けない。このような管理の改善は、クリティカルである移行フェーズの間リソースへのアクセスを管理し、状態が保持されるように移行中の入出力要求に対する応答を送ることによって達成される。
【０００８】
仮想マシン移行は、通常段階的に進むことができる。動作中の仮想マシンインスタンスが、ソースホストコンピュータシステムから適切なターゲットホストコンピュータシステムへ移行させる有望な候補であると判断した結果、ターゲットホストコンピュータシステムは、まず、移行の準備をし得る。ターゲット位置は、実行中の仮想マシンインスタンスの構成に少なくとも部分的に基づいて、可能な候補位置のセットから選択し得る。次いで、元の仮想マシンインスタンスと同じ構成でターゲットに仮想マシンの新しいインスタンスを作成でき、元の仮想マシンインスタンスが引き続き動作し続けている間に、元の仮想マシンインスタンスからのメモリ及び状態情報を新たな仮想マシンインスタンスにコピーすることができる。
【０００９】
この移行のフェーズ中に、実行中の仮想マシンインスタンスに関連付けられたリソースを識別し、それらのターゲット位置への移行を開始し得る。ブロックストレージデバイスの場合、この状態で、ブロックストレージデバイスの状態の管理を開始することが重要である。なぜこれが重要であるかの簡単な例として、動作中の仮想マシンインスタンスに関するプロセスがファイル（第１の入出力要求）を作成し、そのファイルに第１の値を書き込み（第２の入出力要求）、そのファイルに第２の値を書き込み（第３の入出力要求）、その値を読み直して（第４の入出力要求）、次いでそのファイルを削除する（第５の入出力要求）場合を考えられたい。移行中に、異なる仮想マシンインスタンスがこれら５つの入出力要求の異なる段階にあることができ、これら５つの要求のいずれかが誤った順序で受信された場合、非常に異なる結果が生じる可能性がある。異常な例では、ファイルが第２の要求の前に削除され、エラーが発生する可能性がある。
【００１０】
本明細書で説明する技法を利用した場合、移行が始まると、ブロックストレージデバイスへのアクセスを管理するための三角アプローチが利用される。三角アプローチを利用すると、ソース位置の仮想マシンインスタンスから、入出力要求を受信したとき、それらの要求に対する応答が、ターゲット位置の仮想マシンインスタンスに提供される。これは状態を維持し、応答の正しい順序付けを確実に行う。そのとき、クリティカルである移行フェーズの間に、元の仮想マシンインスタンスによるブロックストレージへのアクセスがロックされ得る（すなわち、追加の変更が確実に起こらないようにするために、すべての入出力要求を防止し得る）。クリティカルフェーズの一部分が「フリップ」である。これは、ソース仮想マシンインスタンスがもはや利用されなくなり、ターゲット仮想マシンがアクティブになるときである。フリップ中に、元の仮想マシンインスタンスのメモリ及び／または状態への最終変更を、新たな仮想マシンインスタンスに伝搬させることができて、任意のブロックまたは保留中の入出力要求を含めた２つの仮想マシンインスタンスが同一であるようにする。
【００１１】
フリップが成功裏に完了し、クリティカルフェーズが成功裏に完了すると、新たな仮想マシンインスタンスが動作可能になり、元の仮想マシンインスタンスによるブロックストレージへのアクセスは終了する（例えば、リースステータスを「非アクティブ」に設定することによって）。次いで、新たな仮想マシンインスタンスは、ブロックストレージデバイスに完全かつ排他的にアクセスした状態のアクティブリースを有し得る。エラー、キャンセルまたはその他何らかのこのような事象の結果としてフリップが成功裏に完了せず、クリティカルフェーズが成功裏に完了しない場合、元の仮想マシンインスタンスはブロックストレージデバイスへのアクセスを復元して、要求応答が適切なタイムアウト後に存在する。
【００１２】
図１は、少なくとも１つの実施形態による、仮想マシンインスタンスが新たな位置に移行される、例示的な環境１００を示す。１つ以上の仮想マシンインスタンスは、コンピューティングリソースサービスプロバイダ１０２によって提供されるホストコンピュータシステムで動作することができる。図１に示す例では、第１仮想マシンインスタンス（元のＶＭインスタンス１１４）は、第１の位置（ソース位置１１０）で動作している。第１の位置は、１つまたは複数の仮想マシンインスタンスのインスタンス化のために、仮想コンピュータシステムサービスに、共有されるハードウェアを提供するように構成された１つまたは複数のホストコンピュータシステムであってもよい。元のＶＭインスタンス１１４は、ソース位置１１０に関連する複数の仮想マシンインスタンスのうちの１つであってもよい。ソース位置１１０に関連する複数の仮想マシンインスタンスの各々は、いくつかの状態の１つ、例えば動作中、一時停止中、中断中（例えば、一時停止して二次的なストレージに記憶する）、または他の何らかの状態にし得る。図１に示す例では、元のＶＭインスタンス１１４が動作（すなわち、１つまたは複数の動作を実行中）している。ソース位置１１０における元のＶＭインスタンス１１４は、以前移行した結果として、別の位置からソース位置１１０に先行して移行していてもよい。
【００１３】
元のＶＭインスタンス１１４の動作の過程で、元のＶＭインスタンス１１４をソース位置１１０からターゲット位置１１２に移行することを決定してもよい。元のＶＭインスタンス１１４を移行する決定は、ソース位置１１０でのリソースの有用性の変化（例えば、計算能力の不足、メモリの不足、またはネットワーク帯域幅の不足）の結果として生じることがある。また、元のＶＭインスタンス１１４を移行する決定は、元のＶＭインスタンス１１４を論理的に１つ以上のコンピューティングリソースサービスプロバイダリソースのより近くに移動するように行われてもよい。また、元のＶＭインスタンス１１４をソース位置１１０からターゲット位置１１２に移行させる決定は、例えば、元のＶＭインスタンス１１４に関連する１つまたは複数のコストを削減するための顧客の要求により行ってもよい。また、元のＶＭインスタンス１１４をソース位置１１０からターゲット位置１１２に移行させる決定は、仮想マシンインスタンスからより最適な位置を判定するように構成し得るコンピューティングリソースサービスプロバイダに関連して動作するサービス、プロセス、またはモジュールによって行うこともできる。図１に示す例では、ターゲット位置１１２がコンピューティングリソースサービスプロバイダ１０２内に示されている。実施形態では、ソース位置１１０、ターゲット位置１１２、またはその両方は、コンピューティングリソースサービスプロバイダ１０２の外部にあってもよい（例えば、それらは、顧客及び／または他の第三者の環境により提供されてもよい）。
【００１４】
元のＶＭインスタンス１１４をソース位置１１０からターゲット位置１１２に移行させる要求は、コンピューティングリソースサービスプロバイダ１０２で動作する移行マネージャ１０４により受信し得る。実施形態では、移行マネージャ１０４は、コンピューティングリソースサービスプロバイダ１０２によって提供される複数のサービスのうちの１つとし得るサービスとして、実行される。移行マネージャ１０４は、本明細書では移行マネージャコンピュータシステムとも呼ばれることがあり、いくつかの実施形態では、分散型コンピュータシステムとして実行し得る。
【００１５】
元のＶＭインスタンス１１４をソース位置１１０からターゲット位置に移行するとき、いくつかのシステム、サービス、プロセス、及びリソースが元のＶＭインスタンス１１４と通信することが可能である。これらのシステム、サービス、プロセス、及びリソースは、ソース位置１１０の元のＶＭインスタンス１１４からターゲット位置１１２の新たなＶＭインスタンス１１６に通信が切り替わるようにするため、挙動を同時に変更することは、一般に保証できない。移行マネージャ１０４は、複数のシステム、サービス、プロセス、及びリソースの各々と通信するよう構成して、移行を管理するようにできる。移行マネージャ１０４は、非限定的に、移行のための適切な順序の決定、移行のためのワークフローの管理、移行に関連するシステム、サービス、プロセス、及びリソースへのコマンドの発行、移行が成功したかどうかの判断、仮想マシンインスタンスの開始と停止、移行が失敗したかどうかの判断、移行をキャンセルすべきかの判断、エラーが発生した場合のロールバックの管理を含むアクションを実行することによって、移行を管理（または編成）するように構成できる。
【００１６】
移行の間、移行に関連する複数のシステム、サービス、プロセス、及びリソースの各々は、移行のその部分を認識することのみが可能である。移行マネージャ１０４は、例えば、段階的な移行を管理してもよく、ＡＰＩ要求の発行、ライブラリの呼び出し、インターフェース（例えば、ウェブのインターフェース）の利用、または他の何らかの手段によって、移行に関連する複数のシステム、サービス、プロセス、及びリソースの各々の移行を管理してもよい。移行のフェーズ（本明細書では「移行の現在の状態」とも称する）は、アプリケーションプログラミングインターフェース要求などの要求を許可またはブロックし得るかどうかを判定し、移行をキャンセル取り消すべきかどうかを判定するために利用することもできる。
【００１７】
移行マネージャ１０４はまた、各フェーズのタイムアウト、及び／または移行をキャンセルするべきかどうかを判定するのにも利用できる、移行に関連する複数のシステム、サービス、プロセス、及びリソースの各々に関連する各移行アクションのタイムアウトを、管理することもできる。例えば、ブロックレベルストレージサービス１２０などのブロックレベルストレージサービスは、移行中に、新たなＶＭインスタンス１１６によるブロックストレージデバイス１２６へのアクセスをもたらすために、移行マネージャ１０４からＡＰＩ要求を受信し得る。このアクセスの一部として、ブロックレベルストレージサービスは、元のＶＭインスタンス１１４と新たなＶＭインスタンス１１６との間の入出力（「Ｉ／Ｏ」）要求を同期させる必要があり得る。移行マネージャ１０４は、この同期のためのタイムアウト値を確立してもよく、その結果例えば、ブロックレベルストレージサービスが妥当な時間内にＡＰＩ要求に応答しない場合、移行をキャンセルすることができる。
【００１８】
元のＶＭインスタンス１１４をソース位置１１０からターゲット位置１１２に移行する要求が、コンピューティングリソースサービスプロバイダ１０２で動作する移行マネージャ１０４によって受信されるとき、１つ以上のコマンド１０６が、その要求に応答して移行マネージャ１０４により生成され得る。次いで、１つ以上のコマンド１０６は、コンピューティングリソースサービスプロバイダ１０２で動作するシステムマネージャ１０８に送信し得る。実施形態では、システムマネージャ１０８は、サービスとして実行され、そのサービスはコンピューティングリソースサービスプロバイダ１０２によって提供される複数のサービスのうちの１つであってもよい。
【００１９】
移行への要求に応答して、移行マネージャ１０４からシステムマネージャ１０８に送信され得る１つ以上のコマンド１０６は、新たな仮想マシンインスタンスをインスタンス化するためターゲット位置を構成するコマンド、ターゲット位置１１２で新たな仮想マシンインスタンスをインスタンス化するコマンド、メモリ及び／または状態を元のＶＭインスタンス１１４から新たなＶＭインスタンス１１６にコピーするコマンド、元のＶＭインスタンス１１４を非アクティブにするコマンド、新たなＶＭインスタンス１１６をアクティブにするコマンド、元のＶＭインスタンス１１４または新たなＶＭインスタンス１１６のいずれかをロックするコマンド、元のＶＭインスタンス１１４または新たなＶＭインスタンス１１６のいずれかを一時停止するコマンド、元のＶＭインスタンス１１４または新たなＶＭインスタンス１１６のいずれかを一時停止解除するコマンド、メモリ及び／または状態情報を元のＶＭインスタンス１１４から新たなＶＭインスタンス１１６に転送するコマンド、元のＶＭインスタンス１１４を分解するコマンド、ソース位置１１０とターゲット位置１１２との間の移行を終了させるコマンド、及びソース位置１１０からターゲット位置１１２への元のＶＭインスタンス１１４の移行１１８に関連する他のそのようなコマンドを含み得る。
【００２０】
元のＶＭインスタンス１１４は、ブロックレベルストレージサービス１２０により提供されるブロックストレージデバイス１２６へのアクセス１２２ができてよい。ブロックレベルストレージサービス１２０は、コンピューティングリソースサービスプロバイダ１０２によって提供されてもよい。元のＶＭインスタンス１１４によるブロックストレージデバイス１２６へのアクセス１２２は、リースを利用してブロックレベルストレージサービス１２０によって構成されてもよい。図１に示す例では、元のＶＭインスタンス１１４によるブロックストレージデバイス１２６へのアクセス１２２は、アクティブリース１２８を利用して、ブロックレベルストレージデバイス１２０によって構成されるが、これは、例えば、元のＶＭインスタンス１１４が入出力要求を発行し、それらの入出力要求に対する応答を受信することを許容するようにする、一時的にブロックストレージデバイス１２６へのアクセスをもたらすリースである。
【００２１】
また、新たなＶＭインスタンス１１６は、ブロックレベルストレージサービス１２０によって提供されるブロックストレージデバイス１２６へのアクセス１２４ができてよい。新たなＶＭインスタンス１１６によるブロックストレージデバイス１２６へのアクセス１２４は、リースを利用してブロックレベルストレージサービス１２０より構成され得る。図１に示す例で、新たなＶＭインスタンス１１６によるブロックストレージデバイス１２６へのアクセス１２４は、ブロックレベルストレージサービス１２０によってスタンバイリース１３０（すなわち、スタンバイのステータスのリース）を利用して構成されるものであり、このリースは、ブロックストレージデバイス１２６への部分的なアクセスを一時的にもたらすリースで、例えば新たなＶＭインスタンス１１６が、例えばアクティブリース１２８（すなわち、アクティブのステータスのリース）を利用して元のＶＭインスタンス１１４によって生成された入出力要求に対する応答を受信することを許容するが、新たなＶＭインスタンス１１６がそのような要求を生成することは許容しないリースである。
【００２２】
本明細書で利用されるように、リースは、一般的に言えば、例えばブロックストレージデバイス１２６などのコンピュータシステムリソースにアクセスするための権利の認可及び許可であってもよい。リースはコンピュータシステムリソースへのアクセス（本明細書では「アクセスポリシー」または「アクセスのポリシー」とも称する）を指定できる。リースは、サービス（例えば、ブロックレベルストレージサービス１２０）によって、またはサービスと連携して動作し、１つまたは複数のコンピュータシステムで実施される異なるプロセス、モジュール、サービス、アプリケーション、またはシステムによって提供されてもよい。ブロックレベルストレージサービス１２０は、ブロックレベルストレージサービスコンピュータシステムとして実施することができ、例えば、１つまたは複数のコンピュータシステム及び／または１つまたは複数のコンピュータシステム環境で動作する分散型コンピュータシステムとし得る。リースは、アクセスのタイプ、そのアクセスに関連する許可及び／もしくは資格証明、そのアクセスの期間、またはリソースへのアクセスに関連する他のパラメータを指定し得る。例えば、リースは、限られた期間または設定された期間、リソースへのアクセスを認可する一時リースである場合がある。このような一時リースの例は、モバイルネットワーク上にネットワークアドレスを割り当てるリースである。このような一時リースは、通常、一定期間後に（手動または自動で）更新しなければならない。
【００２３】
リースは、リソース（すなわち、サービスに関連付けられたブロックストレージデバイス）へのアクセスを管理し、他のサービス、仮想マシンインスタンス、ユーザ（本明細書では「顧客」とも称する）、プロセス、アプリケーション、モジュール、システムなどのクライアントへのアクセスをもたらすブロックレベルストレージサービス１２０などのサービスによって提供できる。リースは、サービスによってクライアント（例えば、元のＶＭインスタンス１１４または新たなＶＭインスタンス１１６）に対して認可されてもよく、そのため、クライアントはリース期間中にリソースにアクセスし得る。実施形態は、リースは、リースがクライアントの寿命の間認可され得るという点で、永続的であり得る。
【００２４】
また、リースの利用は、例えば、現在発行されている数及び種類のリースを利用して、システムがサブスクライブ過多であるか、将来的にサブスクライブ過多になる可能性があるかを判定することによって、サービスがそれ自体のリソースを管理することを可能にし得る。さらに、ブロックレベルストレージサービス１２０などのサービスは、タイプにより異なるリース（本明細書では、「リースステータス」またはより簡素に「ステータス」と称する）を分類することによって、サービスのリソースに関連する機能を管理し得る。
【００２５】
例えば、クライアントＶＭインスタンスに提供されるブロックストレージデバイスのアクティブリースによって、クライアントＶＭインスタンスからブロックストレージデバイスへ入出力要求を送信する完全なアクセスが可能になり、これらの要求に対するすべての応答（ブロックストレージデバイスから）がクライアントＶＭインスタンスに送信されることを示すこともできる。逆に、非アクティブリースは依然として存在していてよいリースであるが、許可は制限されている。例えば、非アクティブステータスを有する、クライアントＶＭインスタンスに対して提供されるブロックストレージデバイスのリースは、クライアントＶＭインスタンスからブロックストレージデバイスへの入出力要求の送信を制限でき、また任意の先行して保留中の要求への任意の応答が、クライアントＶＭインスタンスに送信されるのを防ぐことも両方できる。他のリースステータスが存在でき、それはクライアントＶＭインスタンスからブロックストレージデバイスに入出力要求を送信することを許容するが、（ブロックストレージデバイスからの）それらの要求に対するすべての応答が異なるＶＭインスタンスに送信され得ることを示せるスタンバイリースが非限定的に含まれる。
【００２６】
図２は、図１で説明したような、少なくとも１つの実施形態による、仮想マシンインスタンスの移行が管理される、例示的な環境２００を示す。 ユーザ２０２は、コンピュータシステムクライアントデバイス２０４を介して１つ以上のサービス２１２に接続２０６することができる。サービス２１２は、コンピューティングリソースサービスプロバイダ２１０によって提供し得る。いくつかの実施形態では、コンピューティングリソースサービスプロバイダ２１０は、１つまたは複数のアプリケーション、プロセス、サービス、仮想マシン、及び／または他のそのようなコンピュータシステム実体が実行できる分散型の、仮想化した、及び／またはデータセンターである環境を提供し得る。いくつかの実施形態では、ユーザ２０２は人物であってもよく、または１つまたは複数のリモートコンピュータシステム上で動作するプロセスであってもよく、または他の何らかコンピュータシステム実体、ユーザ、またはプロセスであってもよい。
【００２７】
コンピュータシステムインスタンスに接続するための１つまたは複数のコマンドは、外部のコンピュータシステム及び／またはサーバから発信されてもよく、またはリモートネットワーク位置の実体、ユーザまたはプロセスから発信されてもよく、コンピューティングリソースサービスプロバイダ内の実体、ユーザまたはプロセスから発信されてもよく、コンピュータシステムクライアントデバイス２０４のユーザから発信されてもよく、自動プロセスの結果として発信されてもよく、またはこれら及び／または他のそのような起源の実体の組み合わせの結果として発信されてもよい。いくつかの実施形態では、コンピューティングリソースサービスプロバイダ２１０への接続２０６を開始する１つまたは複数のコマンドは、ユーザ２０２の介入なしにサービス２１２に送信されてもよい。サービス２１２への接続２０６を開始するための１つまたは複数のコマンドは、コンピューティングリソースサービスプロバイダ２１０に接続するための１つまたは複数のコマンドと同じ起源から発信してもよく、別のコンピュータシステム及び／またはサーバから発信してもよく、同一のまたは異なるリモートネットワーク位置の異なる実体、ユーザ、またはプロセスから発信してもよく、コンピューティングリソースサービスプロバイダ内の異なる実体、ユーザ、またはプロセスから発信してもよく、コンピュータシステムクライアントデバイス２０４の異なるユーザから発信してもよく、またはこれら及び／または他のそのような同じ及び／または異なる実体の組み合わせの結果として発信してもよい。
【００２８】
ユーザ２０２は、１つ以上の接続２０６を介して、またいくつかの実施形態では、１つまたは複数のネットワーク２０８及び／またはそれに関連する実体、例えば、直接的または間接的にネットワークに接続されたサーバを介して、コンピューティングリソースサービスプロバイダ２１０への接続を要求し得る。サービス２１２へのアクセスを要求し得るコンピュータシステムクライアントデバイス２０４は、ネットワークを介してコンピュータシステムに接続し得る任意のデバイスを含むことができ、それは少なくともサーバ、ラップトップ、スマートフォンまたはタブレット、他のスマートデバイス、例えばスマートウォッチ、スマートテレビジョン、セットトップボックス、家庭用ゲーム機及び他のそのようなネットワーク対応スマートデバイスなどのモバイルデバイス、分散型コンピュータシステム及びそのコンポーネント、抽象コンポーネント、例えばゲストコンピュータシステムまたは仮想マシン、及び／または他のタイプのコンピューティングデバイス及び／またはコンポーネントを含む。ネットワークは、例えば、ローカルネットワーク、内部ネットワーク、インターネットなどの公衆ネットワーク、または以下に列挙または記載されるような他のネットワークを含むことができる。ネットワークはまた、以下に列挙または記載されるような様々なプロトコルに従って動作してもよい。
【００２９】
コンピューティングリソースサービスプロバイダ２１０は、１つまたは複数のホストマシンへのアクセス、ならびにその上で動作し得るように、１つまたは複数の仮想マシン（ＶＭ）インスタンスへのアクセスをもたらし得る。また、コンピューティングリソースサービスプロバイダ２１０によって提供されるサービス２１２は、１つまたは複数のＶＭインスタンスとして実装されてもよく、及び／またはホストマシンで動作し得るように１つまたは複数のＶＭインスタンスを利用してもよい。例えば、コンピューティングリソースサービスプロバイダ２１０は、ユーザ２０２に様々なサービスを提供することができ、ユーザ２０２は、ウェブサービスインターフェースなどのインターフェース、または任意の他のタイプのインターフェースを介してコンピューティングリソースサービスプロバイダ２１０と通信し得る。図２に示す例示的な環境は、コンピューティングリソースサービスプロバイダ２１０のサービス２１２用の単一の接続またはインターフェースを示しているが、各サービスがそれ自体のインターフェースを有していてもよく、一般に、サービスのサブセットは、単一のインターフェースに加えて、またはその代わりに、対応するインターフェースを有していてもよい。
【００３０】
コンピューティングリソースサービスプロバイダ２１０は、そのユーザまたは顧客に様々なサービス２１２を提供し得る。コンピューティングリソースサービスプロバイダ２１０によって提供されるサービスは、仮想コンピュータシステムサービス、ブロックレベルデータストレージサービス、暗号化サービス、オンデマンドデータストレージサービス、通知サービス、認証サービス、ポリシー管理サービス、またはその他のサービスを含み得るが、それらに限定され得ない。記載されたすべての実施形態が、これらのサービスすべてを含まねばならないわけではなく、また明示的に記載したサービスに加えて、または代替として、追加のサービスを提供し得る。上述したように、サービス２１２の各々は、ユーザ２０２が、適切に構成されたＡＰＩ要求を、ウェブサービスの要求を介して様々なサービスに提出することを可能にする、１つ以上のウェブサービスインターフェースを含むことができる。さらに、サービス２１２の各々は、サービスが相互にアクセスすることを可能にする（例えば、仮想コンピュータシステムサービスによって提供される仮想マシンインスタンスが、オンデマンドデータストレージサービスにデータを記憶するか、オンデマンドデータストレージサービスからデータを取得すること、及び／またはブロックレベルデータストレージサービスによって提供される１つまたは複数のブロックレベルデータストレージデバイスにアクセスすることを可能にする）１つ以上のサービスインターフェースを含むことができる。
【００３１】
ある例では、仮想コンピュータシステムサービスは、ユーザ２０２などの顧客に代わって仮想マシンインスタンスをインスタンス化するように構成されたコンピューティングリソースの集合であってもよい。顧客は、仮想コンピュータシステムサービスとやり取りして（適切に構成及び認証されたＡＰＩ要求を介して）、コンピューティングリソースサービスプロバイダ２１０によってホストされ、また操作される物理的コンピューティングデバイスでインスタンス化される仮想マシンインスタンスを、プロビジョニング及び操作することができる。また、仮想コンピュータシステムサービスは、仮想マシンインスタンスの移行を開始するように構成することもできる。仮想マシンインスタンスは、ウェブサイトをサポートするサーバとして動作したり、業務アプリケーションを操作したり、概して顧客の計算能力としてとして機能したりするなど、様々な目的で利用し得る。仮想マシンインスタンスの他のアプリケーションは、データベースアプリケーション、電子商取引アプリケーション、ビジネスアプリケーション、及び／または他のアプリケーションをサポートし得る。
【００３２】
別の例では、ブロックレベルストレージサービス２１８などのブロックレベルデータストレージサービスは、ブロックストレージデバイス２２０（及び／またはその仮想化）を利用して顧客のためにデータを記憶するように集合的に動作する１つまたは複数のコンピューティングリソースを含んでいてもよい。ブロックレベルデータストレージサービスのブロックストレージデバイスは、例えば、本明細書で説明する仮想コンピュータシステムサービスによって提供される仮想マシンインスタンスに、動作可能に取り付けて、コンピュータシステムの論理装置（例えば、仮想ドライブ）として機能するようにしてもよい。ブロックストレージデバイスは、対応する仮想マシンインスタンスによって利用／生成されるデータの永続的な記憶を可能にでき、それにおいて仮想コンピュータシステムサービスは仮想マシンインスタンスのための一時記憶データのみを提供し得る。 図２に示す例で、ブロックレベルストレージサービス２１８は、第１のリース２３４を利用してブロックストレージデバイス２２０へのアクセス（すなわち、元のＶＭインスタンス２１６からブロックストレージデバイス２２０へ）をもたらすように構成され、また第２のリース２３６を利用してブロックストレージデバイス２２０へのアクセス（すなわち、新たなＶＭインスタンス２２４からブロックストレージデバイス２２０へ）をもたらすように構成される。
【００３３】
図２に示す例で、１つまたは複数のサービス２１２は、上述したように１つまたは複数の仮想マシンインスタンスとして実装されてもよく、１つまたは複数の仮想マシンインスタンスによってサポートされてもよい。例えば、１つまたは複数のサービス２１２は、ユーザ２０２に明白である（すなわち、ユーザ２０２が元のＶＭインスタンス２１６を利用、及び／またはさもなければそれとやり取りできるように構成された）元のＶＭインスタンス２１６を含むことができる。先に説明したように、元のＶＭインスタンス２１６、またはソース位置２１４が最初に動作してもよい。元のＶＭインスタンス２１６をソース位置２１４からターゲット位置２２２に移行するコマンドを受信すると、移行マネージャは、上述したように、ソース位置２１４からターゲット位置２２２への移行を開始するよう、システムマネージャに指示する（図１に関連して両方共説明したように）ことができる。移行は、ターゲット位置２２２で新たなＶＭインスタンス２２４をインスタンス化し、メモリ及び／または状態を元のＶＭインスタンス２１６から新たなＶＭインスタンス２２４にコピーすることによって、達成し得る。また、移行はメモリ及び／または元のＶＭインスタンス２１６から新たなＶＭインスタンス２２４への状態の変更を転送２２６することによっても達成できる。例えば、移行中に、ユーザ２０２は、当該のメモリが元のＶＭインスタンス２１６から新たなＶＭインスタンス２２４へコピーされた後に（例えば、アプリケーションの実行の結果として）元のＶＭインスタンス２１６のメモリ位置を変更したら、新たなメモリの値は新たなＶＭインスタンス２２４に転送され得る。このメモリ及び／または状態の変更の転送２２６は、新たなＶＭインスタンス２２４を移行中元のＶＭインスタンス２１６に同期し続けるのに役立ち得る。
【００３４】
本明細書で説明しているように、クリーンアップ前の移行の最後のフェーズはフリップ２２８である。フリップ２２８の間、元のＶＭインスタンス２１６は、ユーザ２０２及び／または元のＶＭインスタンス２１６に関連する他のプロセスが、元のＶＭインスタンス２１６を変更または変異できないように、一部またはすべての変更をロックアウトし得る。フリップ２２８の間に、元のＶＭインスタンス２１６と新たなＶＭインスタンス２２４との間の任意の残りの差異は、そのとき、元のＶＭインスタンス２１６から新たなＶＭインスタンス２２４へとコピーできる。
【００３５】
フリップ２２８が成功した場合、サービス２１２から元のＶＭインスタンス２１６への接続２３０は、サービス２１２から新たなＶＭインスタンス２２４への接続２３２に置き換えることができるので、ユーザの視点から、支援的なＶＭインスタンスは、（例えば、新たなＶＭインスタンス２２４が元のＶＭインスタンス２１６と実質的に同じであってもよいために）移行前と同じように見える。フリップ２２８が成功した場合、移行は、追加の処理が移行の成功に応答して生じることのできる成功フェーズ（本明細書では「移行成功」フェーズとも称する）に入ることができる。 反対に、フリップが成功しなかった場合、サービス２１２から元のＶＭインスタンス２１６への接続２３０を保持でき、そのためユーザの視点からは、支援的なＶＭインスタンスが移行を試みる前のものと同じであるように見える（なぜなら、それが変更されていないからである）。フリップ２２８が成功しなかった場合、移行は、移行の失敗に応答して追加の処理が生じることのできる失敗フェーズ（本明細書では「移行失敗」フェーズとも称する）に入ることができる。したがって、移行が成功したか否か（例えば、失敗またはキャンセルのため）にかかわらず、ユーザは同じシステムの状態を依然として知覚することができ、元のＶＭインスタンス２１６及び新たなＶＭインスタンス２２４を同じものとみなすことが可能である。
【００３６】
実施形態では、移行マネージャは、元のＶＭインスタンス２１６の状態を新たなＶＭインスタンス２２４の状態と比較することによって、フリップが成功したかどうかを判定し得る。元のＶＭインスタンス２１６の状態は、元のＶＭインスタンス２１６がロックされた後に判断することができ、元のＶＭインスタンス２１６がまとまるときに起こり得る変更に起因して更新し得る。新たなＶＭインスタンス２２４の状態は、フリップが完了した後、またすべての変更が元のＶＭインスタンス２１６から新たなＶＭインスタンス２２４に転送された後に（例えば、元のＶＭインスタンス２１６がまとまった後にも）判断し得る。元のＶＭインスタンス２１６の状態と新たなＶＭインスタンス２２４の状態との間の差が最小成功閾値を下回る（すなわち、差が軽微、些細、または重要でない）場合、フリップは成功している。反対に、元のＶＭインスタンス２１６の状態と新たなＶＭインスタンス２２４の状態との間の差が最小成功閾値を上回る（すなわち、差が甚大、重大、または重要である）場合、フリップは失敗である。移行がキャンセルされた場合や要求がブロックされた場合、差が最小成功閾値を超えている可能性があり、フリップが失敗する可能性があることに留意されたい。
【００３７】
図３は、図１で説明したような、少なくとも１つの実施形態による、仮想インスタンスの移行中の入出力要求に対する応答位置を判定するための例示的なプロセス３００を示す。図１に関連して説明したブロックレベルストレージサービス１２０などのブロックレベルストレージサービスは、図３に示すプロセスを実行し得る。
【００３８】
ブロックレベルストレージサービスは、まず、ソース位置の仮想マシンインスタンスからの入出力要求を受信３０２できる。入出力要求は、ブロックレベルストレージサービスにより提供されるブロックストレージデバイスに関連付けられてもよく、ブロックレベルストレージサービスが提供し得る、ブロックストレージデバイスのリース（すなわち、資格証明の１つまたは複数のセット、及び／または資格証明の一時的なセット）に関連付けられてもよい。仮想マシンインスタンスが、ソース位置からターゲット位置へ（例えば、ソースコンピューティングデバイスから行き先のコンピューティングデバイスへ）の移行３０４プロセスにはないと判定された場合、その応答は、要求の発信側に送信することができ、この場合、それはソース位置の仮想マシンインスタンスである。
【００３９】
仮想マシンインスタンスがソース位置からターゲット位置への移行プロセス３０４にあると判定された場合、次に移行がクリティカルフェーズであるかどうかが判定３０８でき、その場合両方の仮想マシンインスタンスがロックされ、クリティカルフェーズが完了するまですべての変更がブロックまたはキューに入れるべきである。移行がクリティカルフェーズであると判定３０８されない場合、移行された仮想マシンの状態を保存するように、ターゲット位置の仮想マシンインスタンスに、応答を送信３１０し得る。逆に、移行がクリティカルフェーズであると判定３０８された場合、ブロックレベルストレージサービスは、クリティカルフェーズが終了するのを待機３１２してから続行してもよい。
【００４０】
クリティカルフェーズが終了３１４した後、次に、仮想マシンインスタンスの移行が成功３１６かどうか判定できる。成功の場合、ターゲット位置の仮想マシンインスタンスが新たな有効な仮想マシンインスタンスであり、応答はターゲット位置の仮想マシンインスタンスに送信３１０し得る。成功でなければ、ソース位置の仮想マシンインスタンスは有効な仮想マシンインスタンスのままである。ブロックレベルストレージデバイスは、まず移行３１８の任意の部分をクリーンアップでき、この場合はソース位置の仮想マシンインスタンスである要求の発信者に、応答を送信３２０し得る。
【００４１】
図４は、図１に関連して説明したような、少なくとも１つの実施形態による、仮想マシンインスタンス移行に先立つ、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらしている例示的な環境４００を示す。移行前、元のＶＭインスタンス４０６は、ブロックレベルストレージサービス４０８によりブロックストレージデバイス４０２へのアクセスがもたらされた状態で、ソース位置４０４で動作してよい。元のＶＭインスタンス４０６によるブロックストレージデバイス４０２までのアクセスをもたらすように構成されているリース４１０は、ブロックレベルストレージサービス４０８によって提供される。図４に示す例で、リース４１０はアクティブリースであり、元のＶＭインスタンス４０６から受信した入出力要求は、応答が生成され、ソース位置４０４の元のＶＭインスタンス４０６に送信される。本明細書で説明するように、アクティブリース４１０は、元のＶＭインスタンスに一時的に提供でき、ブロックレベルストレージサービス４０８によって管理できる。
【００４２】
図５は、図１に関連して説明したような、少なくとも１つの実施形態による、仮想マシンインスタンス移行の開始後の、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらしている例示的な環境５００を示す。移行の開始後、元のＶＭインスタンス５０６は、上述したようにブロックレベルストレージサービス５０８によりブロックストレージデバイス５０２へのアクセスがもたらされた状態で、ソース位置５０４で動作していてよい。元のＶＭインスタンス５０６によるブロックストレージデバイス５０２へのアクセスをもたらすように構成されたアクティブリース５１０は、同様に上述したようにブロックレベルストレージサービス５０８によって提供される。
【００４３】
移行が開始された結果、新たなＶＭインスタンス５１４は、上述したようにブロックレベルストレージサービス５０８によりブロックストレージデバイス５０２へのアクセスがもたらされた状態で、ターゲット位置５１２で動作していてよい。新たなＶＭインスタンス５１４によるブロックストレージデバイス５０２へのアクセスは、スタンバイリース５１６を利用して提供し得る。スタンバイリース５１６は、移行中にブロックストレージデバイス５０２への部分的なアクセスをもたらすように構成し得る。例えば、スタンバイリース５１６は、新たなＶＭインスタンス５１４がブロックストレージデバイス５０２への入出力要求を生成しないが、他のＶＭインスタンス（例えば、元のＶＭインスタンス５０６）により生成された入出力要求に対する応答を受信し得るように構成できる。アクティブリース５１０及びスタンバイリース５１６の一方または両方は、各々のＶＭインスタンスに一時的に提供されてもよく、ブロックレベルストレージサービス５０８により管理されてもよい。図５に示す例で、アクティブリース５１０は、元のＶＭインスタンス５０６がブロックストレージデバイス５０２への入出力要求を生成し得るように構成され、スタンバイリース５１６は、ブロックストレージデバイス５０２に対する入出力要求に対する応答が新たなＶＭインスタンス５１４に提供されるよう構成される。
【００４４】
図６は、図１に関連して説明したような、少なくとも１つの実施形態による、仮想マシンインスタンス移行のクリティカルフェーズ中の、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらす例示的環境６００を示す。移行がクリティカルフェーズに達すると、元のＶＭインスタンス６０６がソース位置６０４で動作し得る。ブロックレベルストレージサービス６０８によって提供される元のＶＭインスタンス６０６からブロックストレージデバイス６０２へのリースは、非アクティブリース６１０であってもよい。非アクティブリース６１０は、元のＶＭインスタンス６０６によるブロックストレージデバイス６０２へのアクセスを防止するように構成することができ、その理由は、仮想マシンインスタンス移行のクリティカルフェーズの間、元のＶＭインスタンスからの入出力要求をブロックして、同期の問題を回避することができ、また先行して提出された入出力要求に対する応答をブロックして、同期の問題を回避することができるためである。実施形態では、非アクティブリースは、クリーンアップまたは他のそのような管理目的で利用される、以前のリース及び／または期限切れのリースを表すが、非アクティブリースは、ＶＭインスタンスと任意の入出力要求を送受信するように構成されていない。
【００４５】
さらに、移行がクリティカルフェーズに達した結果として、新たなＶＭインスタンス６１４は、上述のようなブロックレベルストレージサービス６０８によりブロックストレージデバイス６０２へのアクセスがもたらされた状態で、ターゲット位置６１２で動作してもよい。新たなＶＭインスタンス６１４によるブロックストレージデバイス６０２へのアクセスは、図５に関連して説明したようなスタンバイリースを利用して提供でき、または図６に示すようにアクティブリース６１６を利用して提供できる。図５に関連して説明したスタンバイリースは、移行のクリティカルフェーズ中にブロックストレージデバイス６０２への部分的なアクセスをもたらすように構成することができ、アクティブリース６１６は、移行のクリティカルフェーズ中にブロックストレージデバイス６０２に完全なアクセスをもたらすように構成し得る。
【００４６】
例えば、アクティブリース６１６は、新たなＶＭインスタンス６１４がブロックストレージデバイス６０２への入出力要求を生成でき、またそれらの入出力要求に対する応答を受信できるように構成し得る。この応答はまた、例えば、元のＶＭインスタンス６０６により生成された入出力要求の結果として生成されていてもよく、この場合そのような入出力要求は元のＶＭインスタンス６０６に対して提供されたリースが非アクティブリース６１０になる前に生成されたのである。前述のように、非アクティブリース６１０及びアクティブリース６１６の一方または両方は、各々のＶＭインスタンスに一時的に提供されてもよく、ブロックレベルストレージサービス６０８によって管理されてもよい。
【００４７】
図７は、図１に関連して説明したような、少なくとも１つの実施形態による、仮想マシンインスタンス移行の完了後の、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらしている例示的な環境７００を示す。移行後、新たなＶＭインスタンス７０６は、ブロックレベルストレージサービス７０８により提供されるブロックストレージデバイス７０２へのアクセスがもたらされた状態で、ターゲット位置７０４で動作してもよい。新たなＶＭインスタンス７０６によるブロックストレージデバイス７０２へのアクセスをもたらすように構成されたリース７１０は、ブロックレベルストレージサービス７０８によって提供される。図７に示す例で、リース７１０はアクティブリースであり、新たなＶＭインスタンス７０６から受信した入出力要求は、応答が生成され、ターゲット位置７０４の新たなＶＭインスタンス７０６に送信し得る。本明細書に記載するように、アクティブリース７１０は、新たなＶＭインスタンス７０６に一時的に提供でき、ブロックレベルストレージサービス７０８によって管理されてもよい。
【００４８】
図８は、図１で説明したような、少なくとも１つの実施形態による、三角アプローチを利用して、ブロックストレージデバイスによる仮想マシンの仮想マシン移行を実行するための例示的なプロセス８００を示す。図１に関連して説明したブロックレベルストレージサービス１２０などのブロックレベルストレージサービスは、図８に示すプロセスを実行し得る。
【００４９】
コンピューティングリソースサービスプロバイダが提供する１つまたは複数のコンピュータシステムで、サービスとして及び／または分散型のサービスとして実装され得るブロックレベルストレージサービスは、ブロックストレージデバイスのための第１のリースを、コンピューティングリソースサービスプロバイダによって提供されるコンピューティングデバイスのようなソース位置で動作する第１の仮想マシンインスタンスに、提供８０２し得る。アクティブリースである第１のリースは、仮想マシンインスタンスがブロックストレージデバイスにアクセスすることを可能にする第１の資格証明セットを提供し得る。
【００５０】
ソース位置からターゲット位置（例えば、コンピューティングリソースサービスプロバイダによって提供される異なるコンピューティングデバイス）へ仮想マシンインスタンスが移行を開始するというインジケータを受信８０４した後、ブロックレベルストレージサービスは、コンピューティングリソースサービスプロバイダによって提供されるコンピューティングデバイスなどのターゲット位置で動作する第２の仮想マシンインスタンスに対するブロックストレージデバイス用の第２のリースを提供８０６し得る。スタンバイリースである第２のリースは、第２の仮想マシンインスタンスがブロックストレージデバイスにアクセスすることを可能にする第２の資格証明セットを提供し得る。スタンバイリースでは、ブロックストレージデバイスへの部分的なアクセスのみが許容される。例えば、スタンバイリースでは、仮想マシンインスタンスは入出力要求に対する応答を受信することのみでき、そのような要求を生成するための資格証明を持たない可能性がある。
【００５１】
移行が進むにつれて、ブロックレベルストレージサービスは、少なくとも部分的に移行進捗インジケータ（本明細書では「移行の進捗のインジケータ」とも称する）に基づいて第１のリースのステータスを更新８０８することができ、移行進捗インジケータに少なくとも部分的に基づいて第２のリースのステータスを更新８１０することもできる。例えば、移行進捗インジケータは、移行がクリティカルフェーズに達し、その結果、第１のリース及び第２のリースが非アクティブになり得、及び／またはスタンバイ状態になり得ることを示すことができる。また、移行進捗インジケータは、移行が成功し、そのため、第２のリースがアクティブになるのに対し第１のリースが非アクティブになり得る旨を示すことができる。同様に、移行進捗インジケータは、移行が失敗し、そのため、第２のリースが非アクティブになるのに対し第１のリースがアクティブになり得る旨を示すことができる。考えられるように、本明細書に記載されているリース状態及び移行進捗インジケータは単なる例示であり、したがって、他のリース状態または移行進捗インジケータも、本開示の範囲内と考えることができる。
【００５２】
最後に、リース状態及び／または移行進捗インジケータが変化する結果、ブロックレベルストレージサービスは、応答のための応答位置を判定８１２し、応答位置に応答を送信８１４し得る。いくつかの実施形態では複数の場所である応答位置は、入出力要求に対する応答を送信するべき場所である。例えば、移行前に送信された入出力要求は要求の発信元に送信されるべきであるため、移行前、応答位置がソース位置になり得る。逆に、入出力要求がソース位置の仮想マシンインスタンスによって送信されている間に、ブロックストレージデバイスの一貫した状態が維持されるようターゲット位置の仮想マシンインスタンスに応答を送信するべきであるため、移行中に、応答位置がターゲット位置になり得る。
【００５３】
図９は、図１で説明したような、少なくとも１つの実施形態による、仮想マシンインスタンス移行に関連するリソースが管理される、例示的な環境９００を示す。例示的な環境９００は、本明細書で説明する移行などの移行の初期部分を表す。ユーザは、ソース位置９０４の元のＶＭインスタンス９０６によって支援された仮想マシン抽出（ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ  ａｂｓｔｒａｃｔｉｏｎ）９０２にアクセスし得る。元のＶＭインスタンス９０６は、ネットワークインターフェース９０８と、本明細書で説明するブロックストレージデバイスなどの１つまたは複数のストレージデバイス９１０とを含むことができる。移行中、ユーザは、ソース位置９１４の元のＶＭインスタンス９１６によって支援された仮想マシン抽出９１２と同じアクセスをすることができる。元のＶＭインスタンス９１６は、依然としてネットワークインターフェース９１８及び１つまたは複数のストレージ位置９２０を含むことができるが、ネットワークインターフェース９１８は、ターゲット位置９２６の新たなＶＭインスタンス９２８により共有されてもよく、及び／または新たなネットワークインターフェース９２４として複製されてもよい。さらに、１つまたは複数のストレージ位置９２０へのアクセスは、１つまたは複数のリースを利用して、ブロックレベルストレージサービスによって管理できる。さらに、１つまたは複数のストレージ位置９２０は、元のＶＭインスタンス９１６と新たなＶＭインスタンス９２８との間で共有されてもよい。移行の間、メモリ及び／または状態情報は、元のＶＭインスタンス９１６から新たなＶＭインスタンス９２８にコピー及び転送９２２されてもよい。
【００５４】
図１０は、図１で説明したような、少なくとも１つの実施形態による、仮想マシンインスタンス移行に関連するリソースが管理される、例示的な環境１０００を示す。例示的な環境１０００は、本明細書で説明される移行などの移行の第２の部分を表す。ユーザは、仮想マシン抽出１００２にアクセスし得るが、移行が完了しているため、仮想マシン抽出１００２は、ターゲット位置１０１８で新たなＶＭインスタンス１０２０により支援されることが可能である。新たなＶＭインスタンス１０２０は、ネットワークインターフェース１０２２を有して１つまたは複数のストレージ位置１０１２へのアクセス１０２４をすることができる。１つまたは複数のストレージ位置１０１２へのアクセスは、１つまたは複数のリースを利用してブロックレベルストレージサービスによって管理されてもよい。一方、ソース位置１００４にある元のＶＭインスタンス１００６は、例えば、非アクティブリースで分解されているプロセスにある可能性がある。例えば、ネットワークインターフェース１００８への接続１０１０は終了してもよく、１つ以上のストレージ位置１０１２への接続１０１４を除去しても、非アクティブにマークしてもよく、また、元のＶＭインスタンスから新たなＶＭインスタンスへのパケット転送１０１６は、元のＶＭインスタンス１００６がまとまった後で停止し得る。
【００５５】
移行が成功した後、ユーザは、ターゲット位置１０２８で新たなＶＭインスタンス１０３０によって支援される仮想マシン抽出１０２６にアクセスし得る。この新たなＶＭインスタンス１０３０は、ネットワークインターフェース１０３４と、１つまたは複数のストレージ位置１０３２へのアクセスとを有し、異なる位置であることを除いて、図９に関連して説明した元のＶＭインスタンス９０６と同じであるように見えるべきである。
【００５６】
図１１は、様々な実施形態による態様を実装するための例示的な環境１１００の態様を示す。理解されるように、ウェブベースの環境が説明目的に使用されるが、必要に応じて、異なる環境を使用して様々な実施形態を実装してもよい。環境は、電子クライアントデバイス１１０２を含み、これは、適切なネットワーク１１０４上でリクエスト、メッセージまたは情報を送信しかつ／または受信し、かつ、一部の実施形態で、情報をデバイスのユーザに戻して伝達するように動作可能な任意の適切なデバイスを含み得る。そのようなクライアントデバイスの例には、パーソナルコンピュータ、携帯電話、ハンドヘルドメッセージングデバイス、ラップトップコンピュータ、タブレットコンピュータ、セットトップボックス、パーソナルデータアシスタント、埋め込み式コンピュータシステム、電子ブックリーダなどが含まれる。ネットワークは、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、衛星ネットワークまたは任意の他のそのようなネットワーク及び／またはそれらの組み合わせを含む任意の適切なネットワークを含むことができる。このようなシステムに用いられるコンポーネントは、少なくともある程度、ネットワークの種類および／または選択される環境に依存し得る。係るネットワークを介して通信するためのプロトコル及び構成要素は周知であり、本明細書において詳細に説明されない。ネットワークを介した通信は、有線または無線の接続及びそれらの組み合わせによって可能にし得る。この例では、要求を受信し、それに応答してコンテンツを提供するためのウェブサーバ１１０６を環境が含んでいるので、ネットワークはインターネットを含むが、他のネットワークについては、当業者に明らかであるように、類似した目的を提供する代替のデバイスが利用できる。
【００５７】
実例となる環境には、少なくとも１つのアプリケーションサーバ１１０８及びデータストア１１１０が含まれる。 複数のアプリケーションサーバ、レイヤまたは他の要素、プロセスまたはコンポーネントがあり得、それらは連鎖式でも別段に構成されていてもよく、適切なデータストアからデータを取得するなどのタスクを実行するためにやり取りできることを理解されたい。本明細書で利用するサーバは、ハードウェアデバイスや仮想コンピュータシステムなどの様々な方法で実装し得る。いくつかの状況では、サーバは、コンピュータシステムで実行されるプログラミングモジュールを示すことがある。本明細書で使用される場合、別段の記載がない限り、または文脈から明白でない限り、「データストア」という用語は、データを記憶、アクセス及び検索し得る任意のデバイスまたはデバイスの組み合わせを示し、任意の標準、分散型、仮想、またはクラスタの環境で、任意の組み合わせ及び数のデータサーバ、データベース、データストレージデバイス、及びデータストレージメディアを含むことができる。アプリケーションサーバは、クライアントデバイス用の１つまたは複数のアプリケーションの態様を実行し、アプリケーションのデータアクセス及びビジネスロジックの一部または全部を処理するために、必要に応じてデータストアと統合するための任意の適切なハードウェア、ソフトウェア及びファームウェアを含むことができる。アプリケーションサーバは、データストアと連携してアクセス制御サービスを提供でき、テキスト、グラフィックス、オーディオ、ビデオ、及び／またはユーザに提供するのに利用可能な他のコンテンツを含むが、これらに限定されないコンテンツを生成することができ、それらはハイパーテキストマークアップランゲージ（「ＨＴＭＬ」）、エクステンシブルマークアップランゲージ（「ＸＭＬ」）、ＪａｖａＳｃｒｉｐｔ（登録商標）、カスケーディングスタイルシート（「ＣＳＳ」）、または他の適切なクライアント側の構造化言語の形式でウェブサーバによってユーザに提供され得る。クライアントデバイスに転送されたコンテンツは、クライアントデバイスによって処理されて、ユーザに聴覚的、視覚的及び／または触角、味覚、及び／または嗅覚などの他の感覚を通じて知覚可能な形態を含むがこれに限定されない、１つ以上の形態で、コンテンツを提供し得る。クライアントデバイス１１０２とアプリケーションサーバ１１０８との間のコンテンツの配信だけでなく、すべての要求及び応答の処理は、ＰＨＰ：Ｈｙｐｅｒｔｅｘｔ  Ｐｒｅｐｒｏｃｅｓｓｏｒ（「ＰＨＰ」）、Ｐｙｔｈｏｎ、Ｒｕｂｙ、Ｐｅｒｌ、Ｊａｖａ（登録商標）、ＨＴＭＬ、ＸＭＬ、またはこの例における他の適切なサーバ側の構造化言語を用いて、ウェブサーバによって処理できる。本明細書で説明する構造化コードが、本明細書の他の場所で説明するように任意の適切なデバイスまたはホストマシンで実行できるので、ウェブサーバ及びアプリケーションサーバは必須ではなく、単なる例示的なコンポーネントであることを理解されたい。さらに、単一のデバイスによって実行されるものとして、本明細書で説明している動作は、文脈から別段に明白でない限り、分散型及び／または仮想システムを形成できる複数の装置によって集合的に実行されてもよい。
【００５８】
データストア１１１０は、本開示の特定の態様に関連するデータを記憶するための、いくつかの別個のデータテーブル、データベース、データドキュメント、動的データストレージスキーム、及び／または他のデータストレージ機構及びメディアを含むことができる。例えば、図示したデータストアは、生産側データ１１１２及びユーザ情報１１１６を記憶するための機構を含むことができ、生産側のためにコンテンツを提供するために利用し得る。データストアはまた、ログデータ１１１４を記憶するための機構を含むように示されており、これは、報告、分析、または他のそのような目的のために利用できる。データストア１１１０の適切なまたは付加的な機構として上記の機構のいずれかに記憶できる、ページ画像情報及びアクセス権情報のような、データストアに記憶する必要があり得る他の多くの態様があり得ることを理解されたい。データストア１１１０は、データストアと関連付けられたロジックを介して、アプリケーションサーバ１１０８から命令を受信し、それに応答してデータを取得、更新、またはさもなければ処理するように動作可能である。アプリケーションサーバ１１０８は、受信した命令に応答して静的データ、動的データ、または静的及び動的データの組み合わせを提供し得る。ウェブログ（ブログ）、ショッピングアプリケーション、ニュースサービス及び他のそのようなアプリケーションで利用されるデータなどの動的データは、本明細書で説明されるサーバ側構造化言語によって生成されてもよく、またはアプリケーションサーバ上で、またはアプリケーションサーバの制御下に置かれて動作するコンテンツ管理システム（「ＣＭＳ」）によって提供できる。一例では、ユーザは、ユーザが操作するデバイスを介して、特定のタイプの項目の検索要求を提出し得る。この事例において、データストアは、ユーザ情報にアクセスして、ユーザの識別情報を検証することができ、カタログの詳細情報にアクセスして、その種類の項目についての情報を取得することができる。次いで、ユーザがユーザデバイス１１０２でブラウザを介して閲覧し得るウェブページの結果リストなどの情報を、ユーザに戻すことができる。特定の関心項目に関する情報は、専用ページまたはブラウザのウィンドウに表示され得る。しかし、本開示の実施形態は必ずしもウェブページのコンテキストに限定されず、より一般的には、要求が必ずしもコンテンツに対する要求ではない一般的な処理要求に適用可能であることに留意されたい。
【００５９】
各サーバは、典型的には、そのサーバの一般的な管理及び動作のための実行可能プログラム命令を提供するオペレーティングシステムを含み、典型的には、サーバのプロセッサによって実行されるとき、サーバがその意図した機能を実行できるようにする命令を記憶するコンピュータ可読記憶媒体（例えば、ハードディスク、ランダムアクセスメモリ、読出し専用メモリなど）を含む。サーバのオペレーティングシステムおよび一般的な機能性の好適な実装は、既知であるか、または市販入手可能であり、特に、本明細書の開示を踏まえて、当業者によって容易に実装可能である。
【００６０】
環境は、一実施形態では、１つまたは複数のコンピュータネットワークまたは直接の接続を利用して、通信リンクを介して相互接続されるいくつかのコンピュータシステム及びコンポーネントを利用する分散型及び／または仮想コンピューティング環境である。しかし、当業者は、そのようなシステムが、図１１に示されているよりも少ないまたは多い数のコンポーネントを有するシステムにおいて、同等に良好に動作し得ることを理解するであろう。したがって、図１１のシステム１１００の描写は本質的に例示的であり、本開示の範囲を限定するものではないとみなすべきである。
【００６１】
本明細書で説明及び示唆される技法は、ソースホストコンピュータシステムからターゲットホストコンピュータシステムに至る仮想マシンインスタンスの移行中に仮想コンピュータシステム（本明細書では「仮想マシンインスタンス」とも称する）のリソース及びリソース状態の移行を管理するための方法、システム、及びプロセスを含む。本明細書で説明される方法、システム、及びプロセスは、クリティカルである移行フェーズ（例えば、仮想マシンインスタンスの変更が移行に悪影響を与える可能性がある移行のフェーズ）の長さ及び影響の両方を低減するように構成される移行フェーズに基づいて、仮想マシンインスタンスリソースに関連付けられた一つまたは複数の移行を管理する。本明細書で説明する例では、ブロックレベルストレージサービスによってもたらされるブロックストレージデバイスへのアクセスは、仮想マシンインスタンスの移行中管理され、仮想マシンインスタンスの状態及びブロックストレージデバイスの状態が移行によって悪影響を与えられない。このような管理の改善は、クリティカルである移行フェーズ中にリソースへのアクセスを管理し、その状態が保持されるように移行中に状態情報をコピー及び／または維持することによって達成される。
【００６２】
仮想マシン移行は段階的に進むことができる。実行中の仮想マシンインスタンスが、ソースホストコンピュータシステムから適切なターゲットホストコンピュータシステムへの移行のための有望な候補であると判定した結果として、まずターゲットホストコンピュータシステムを移行のため準備してもよい。ターゲット位置は、実行中の仮想マシンインスタンスの構成に少なくとも部分的に基づいて、可能な候補位置のセットから選択し得る。次いで、元の仮想マシンインスタンスと同じ構成でターゲットに仮想マシンの新しいインスタンスを作成でき、元の仮想マシンインスタンスが引き続き動作し続けている間に、元の仮想マシンインスタンスからのメモリ及び状態情報を新たな仮想マシンインスタンスにコピーすることができる。
【００６３】
この移行のフェーズ中に、実行中の仮想マシンインスタンスに関連付けられたリソースを識別し、それらのターゲット位置への移行を開始し得る。ブロックストレージデバイスの場合、ブロックストレージデバイスの状態の管理を開始することが重要である。実例として、動作中の仮想マシンでのプロセスが、使用測定基準を収集し、それらの使用測定基準を利用する場合、例えばデバイスの入出力帯域幅要求に関連する状態情報を、例えば維持する場合を考える。このような測定基準を１分ごとに収集して処理し、その間に仮想マシン移行が生じたら、状態情報が正しく移行されない可能性があり、その結果、デバイスの入出力帯域幅要件に一貫性のない結果が生じ、場合によってはリソース割り当てのエラーに至る。
【００６４】
本明細書に記載の技法を利用して、移行が始まると、ブロックストレージデバイスの状態の管理に対する段階的なアプローチが利用される。このアプローチを利用すると、移行が開始するとき、初期状態または準備的な状態がソース位置からターゲット位置にコピーされる。その後、移行のクリティカルフェーズの間、仮想マシンインスタンスがロックされ、最終状態をソース位置からターゲット位置にコピーして、次いで状態の２つのコピーを互いに一致させる。クリティカルフェーズの一部分が「フリップ」である。これは、ソース仮想マシンインスタンスがもはや利用されなくなり、ターゲット仮想マシンがアクティブになるときである。フリップが成功裏に完了し、クリティカルフェーズが成功裏に完了すると、新たな仮想マシンインスタンスが動作可能になり、元の仮想マシンインスタンスによるブロックストレージへのアクセスは終了する（例えば、リースステータスを「非アクティブ」に設定することによって）。その後、新たな仮想マシンインスタンスは、ブロックストレージデバイスへ完全かつ排他的にアクセスし、ソース位置と同じ状態でアクティブリースを有し得る。フリップが成功裏に完了せず、クリティカルフェーズがエラー、キャンセルまたはその他の何らかのそのような事象の結果として成功裏に完了しない場合、元の仮想マシンインスタンスはブロックストレージデバイスへのアクセスが復元され、状態が復元される。
【００６５】
図１２は、実施形態による、仮想マシン移行中の、仮想マシンインスタンスに関連するブロックストレージデバイスの状態情報が保存される例示的な環境１２００を示す。１つ以上の仮想マシンインスタンスは、コンピューティングリソースサービスプロバイダ１２０２によって提供されるホストコンピュータシステムで動作してもよい。図１２に示す例では、第１仮想マシンインスタンス（元のＶＭインスタンス１２１４）が第１の位置（ソース位置１２１０）で動作している。第１の位置は、１つまたは複数の仮想マシンインスタンスのインスタンス化のために、仮想コンピュータシステムサービスに、共有されるハードウェアを提供するように構成された１つまたは複数のホストコンピュータシステムであってもよい。元のＶＭインスタンス１２１４は、ソース位置１２１０に関連付けられた複数の仮想マシンインスタンスのうちの１つであってもよい。ソース位置１２１０に関連する複数の仮想マシンインスタンスの各々は、いくつかの状態の１つ、例えば動作中、一時停止中、中断中（例えば、一時停止して二次的なストレージに記憶する）、または他の何らかの状態にし得る。図１２に示す例では、元のＶＭインスタンス１２１４が動作中（すなわち、１つまたは複数の作動を実行しているところ）である。ソース位置１２１０における元のＶＭインスタンス１２１４は、以前移行した結果として、別の位置からソース位置１２１０に先行して移行していてもよい。
【００６６】
元のＶＭインスタンス１２１４の動作の過程で、元のＶＭインスタンス１２１４をソース位置１２１０からターゲット位置１２１２に移行することを決定してもよい。元のＶＭインスタンス１２１４を移行する決定は、ソース位置１２１０でのリソースの有用性の変化（例えば、計算能力の不足、メモリの不足、またはネットワーク帯域幅の不足）の結果として生じることがある。また、元のＶＭインスタンス１２１４を移行する決定は、元のＶＭインスタンス１２１４を論理的に１つ以上のコンピューティングリソースサービスプロバイダリソースのより近くに移動するように行われてもよい。また、元のＶＭインスタンス１２１４をソース位置１２１０からターゲット位置１２１２に移行させる決定は、例えば、元のＶＭインスタンス１２１４に関連する１つまたは複数のコストを削減するための顧客の要求により行ってもよい。また、元のＶＭインスタンス１２１４をソース位置１２１０からターゲット位置１２１２に移行させる決定は、仮想マシンインスタンスからより最適な位置を判定するように構成し得るコンピューティングリソースサービスプロバイダに関連して動作するサービス、プロセス、またはモジュールによって行うこともできる。図１２に示す例では、ターゲット位置１２１２がコンピューティングリソースサービスプロバイダ１２０２内に示されている。実施形態では、ソース位置１２１０、ターゲット位置１２１２、またはその両方は、コンピューティングリソースサービスプロバイダ１２０２の外部にあってもよい（例えば、それらは顧客及び／または他の第三者の環境によって提供されてもよい）。
【００６７】
元のＶＭインスタンス１２１４をソース位置１２１０からターゲット位置１２１２に移行することを決定した結果として、移行を開始１２０６するコマンドを生成し、ブロックレベルストレージサービス１２２０に送信１２０８してもよい。図１２に示す例で、移行を開始１２０６するコマンドは、コンピューティングリソースサービスプロバイダ１２０２により操作される移行マネージャ１２０４により生成される。実施形態では、移行マネージャ１２０４は、コンピューティングリソースサービスプロバイダ１２０２によって提供される複数のサービスのうちの１つとし得るサービスとして、実行される。移行マネージャ１２０４は、本明細書では移行マネージャコンピュータシステムとも称する場合があり、いくつかの実施形態では、分散型コンピュータシステムとして実装し得る。
【００６８】
元のＶＭインスタンス１２１４をソース位置１２１０からターゲット位置に移行するとき、いくつかのシステム、サービス、プロセス、及びリソースが元のＶＭインスタンス１２１４と通信することが可能である。これらのシステム、サービス、プロセス、及びリソースは、ソース位置１２１０の元のＶＭインスタンス１２１４からターゲット位置１２１２の新たなＶＭインスタンス１２１６に通信が切り替わるようにするため、挙動を同時に変更することは、一般に保証できない。移行マネージャ１２０４は、複数のシステム、サービス、プロセス、及びリソースの各々と通信するよう構成して、移行を管理するようにできる。移行マネージャ１２０４は、非限定的に、移行のための適切な順序の決定、移行のためのワークフローの管理、移行に関連するシステム、サービス、プロセス、及びリソースへのコマンドの発行、移行が成功したかどうかの判断、仮想マシンインスタンスの開始と停止、移行が失敗したかどうかの判断、移行をキャンセルすべきかの判断、エラーが発生した場合のロールバックの管理を含むアクションを実行することによって、移行を管理（または編成）するように構成できる。
【００６９】
移行の間、移行に関連する複数のシステム、サービス、プロセス、及びリソースの各々は、移行のその部分を認識することのみが可能である。移行マネージャ１２０４は、例えば、段階的な移行を管理してもよく、ＡＰＩ要求の発行、ライブラリの呼び出し、インターフェース（例えばウェブインターフェース）の利用、または他の何らかの手段によって、移行に関連する複数のシステム、サービス、プロセス、及びリソースの各々の移行を管理してもよい。移行のフェーズ（本明細書では「移行の現在の状態」とも称する）は、アプリケーションプログラミングインターフェース要求などの要求を許可またはブロックし得るかどうかを判定し、移行をキャンセルすべきかどうかを判定するために利用することもできる。
【００７０】
移行マネージャ１２０４はまた、各フェーズのタイムアウト、及び／または同様に移行をキャンセルするべきか判定するのに利用できる、移行に関連する複数のシステム、サービス、プロセス、及びリソースの各々に関連する各移行アクションのタイムアウトを管理することもできる。例えば、ブロックレベルストレージサービス１２２０などのブロックレベルストレージサービスは、移行中に、新たなＶＭインスタンス１２１６によるブロックストレージデバイス１２２６へのアクセスをもたらすために、移行マネージャ１２０４からＡＰＩ要求を受信し得る。このアクセスの一部として、ブロックレベルストレージサービスは、元のＶＭインスタンス１２１４と新たなＶＭインスタンス１２１６との間の状態を同期させる必要がある可能性がある。移行マネージャ１２０４は、この同期のためのタイムアウト値を確立してもよく、その結果例えば、ブロックレベルストレージサービスが妥当な時間内にＡＰＩ要求に応答しない場合、移行をキャンセルすることができる。
【００７１】
また、移行マネージャ１２０４は、新たな仮想マシンインスタンスをインスタンス化するターゲット位置を構成するコマンド、ターゲット位置１２１２で新たな仮想マシンインスタンスをインスタンス化するコマンド、メモリ、及び／または状態を元のＶＭインスタンス１２１４から新たなＶＭインスタンス１２１６にコピーするコマンド、元のＶＭインスタンス１２１４を非アクティブ化するコマンド、新たなＶＭインスタンス１２１６をアクティブ化するコマンド、元のＶＭインスタンス１２１４または新たなＶＭインスタンス１２１６のいずれかをロックするコマンド、元のＶＭインスタンス１２１４または新たなＶＭインスタンス１２１６のいずれかを一時停止するコマンド、元のＶＭインスタンス１２１４または新たなＶＭインスタンス１２１６のいずれかを一時停止解除するコマンド、元のＶＭインスタンス１２１４から新たなＶＭインスタンス１２１６へメモリ及び／または状態情報を転送するコマンド、元のＶＭインスタンス１２１４を分解するコマンド、ソース位置１２１０とターゲット位置１２１２の間の移行を終了するコマンド、及びソース位置１２１０からターゲット位置１２１２への元のＶＭインスタンス１２１４の移行に関連する他のこのようなコマンドを含むがこれらに限定されない、移行１２０６を開始するコマンドに加えて、１つまたは複数の他のコマンドを生成し得る。
【００７２】
元のＶＭインスタンス１２１４は、ブロックレベルストレージサービス１２２０により提供されるブロックストレージデバイス１２２６へのアクセス１２２２ができてよい。ブロックレベルストレージサービス１２２０は、コンピューティングリソースサービスプロバイダ１２０２によって提供されてもよい。元のＶＭインスタンス１２１４によるブロックストレージデバイス１２２６へのアクセス１２２２は、リースを利用してブロックレベルストレージサービス１２２０によって構成されてもよい。図１２に示す例では、元のＶＭインスタンス１２１４によるブロックストレージデバイス１２２６へのアクセス１２２２は、アクティブリース１２２８を利用して、ブロックレベルストレージデバイス１２２０によって構成されるが、これは、例えば、元のＶＭインスタンス１２１４が入出力要求を発行し、それらの入出力要求に対する応答を受信することを許容するようにする、一時的にブロックストレージデバイス１２２６へのアクセスをもたらすリースである。
【００７３】
また、新たなＶＭインスタンス１２１６は、ブロックレベルストレージサービス１２２０によって提供されるブロックストレージデバイス１２２６へのアクセス１２２４ができてよい。新たなＶＭインスタンス１２１６によるブロックストレージデバイス１２２６へのアクセス１２２４は、リースを利用してブロックレベルストレージサービス１２２０により構成できる。図１２に示す例で、新たなＶＭインスタンス１２１６によるブロックストレージデバイス１２２６へのアクセス１２２４は、ブロックレベルストレージサービス１２２０によってスタンバイリース１２３０（すなわち、スタンバイのステータスであるリース）を利用して構成されるものであり、このリースは、ブロックストレージデバイス１２２６への部分的なアクセスを一時的にもたらすリースであり、例えば新たなＶＭインスタンス１２１６が、例えばアクティブリース１２２８（すなわち、アクティブのステータスのリース）を利用して元のＶＭインスタンス１２１４によって生成された入出力要求に対する応答を受信することを許容するが、新たなＶＭインスタンス１２１６がそのような要求を生成することを許容しないリースである。
【００７４】
移行中に、ブロックレベルストレージサービス１２２０は、ソース位置１２１０に由来する状態情報１２３２をターゲット位置１２１２の状態情報１２３４に移行１２１８し得る。ソース位置１２１０の状態情報１２３２は、元のＶＭインスタンス１２１４内に記憶されてもよく、及び／または元のＶＭインスタンス１２１４とは別のソース位置１２１０に記憶されてもよい。ターゲット位置１２１２の状態情報１２３４は、新たなＶＭインスタンス１２１６内に記憶されてもよく、及び／または新たなＶＭインスタンス１２１６とは別であるターゲット位置１２１２で記憶できる。
【００７５】
ブロックストレージデバイスの状態情報は、非限定的に、ブロックストレージデバイスの位置、どのブロックレベルストレージサービスがブロックストレージデバイスをホストし得るかということ、及びブロックストレージデバイスに関連する１つまたは複数のリースの存在を含む状態情報を含むことができる。このような状態情報は、仮想マシンインスタンスによって記憶されてもよく、ソースまたはターゲット位置で記憶されてもよく、別の位置に記憶されてもよい。ブロックストレージデバイスの状態情報はまた、例えば、１秒当たりの入出力動作（「ＩＯＰＳ」）、帯域幅、読み込みバイト、書込みバイト、毎秒の読取り動作、毎秒の書込み動作、及び／またはアイドルに費やされた時間、を非限定的に含む、顧客直面能力測定基準なども含む顧客直面状態情報を含むことができる。さらに、ブロックストレージデバイスの状態情報は、例えば、デバイスの健全性の測定値、デバイスのエラーの期間、及び／または既に記載した測定基準のいずれかなどの内部能力測定基準（すなわち、ユーザや顧客に提供されない測定基準）を含み得る。ブロックストレージデバイスの他の状態情報は、セキュリティプロセス（例えば、暗号キー）、ポリシー、許可、パフォーマンス・スロットリングのパラメータ（例えば、ブロックストレージデバイスにアクセスする仮想マシンインスタンスに提供され得る利用可能な帯域幅の割合を指定するスロットリング率）に関する情報、または他のこのような状態情報を含むことができる。考えられるように、本明細書で説明されるブロックストレージデバイスの状態情報のタイプは、例示的な例であり、このためブロックストレージデバイスの他のタイプの状態情報は、本開示の範囲内であるとみなされ得る。
【００７６】
本明細書で利用されるように、リースは、一般的に言えば、例えばブロックストレージデバイス１２２６などのコンピュータシステムリソースにアクセスするための権利及び許可の交付であってもよい。リースはコンピュータシステムリソースへのアクセス（本明細書では「アクセスポリシー」または「アクセスのポリシー」とも称する）を指定できる。リースは、サービス（例えば、ブロックレベルストレージサービス１２２０）によって、または異なるプロセス、モジュール、サービス、アプリケーション、もしくはサービスと連携して動作するシステムによって提供され、１つまたは複数のコンピュータシステム上で実施される。ブロックレベルストレージサービス１２２０は、ブロックレベルストレージサービスコンピュータシステムとして実施することができ、例えば、１つまたは複数のコンピュータシステム及び／または１つまたは複数のコンピュータシステム環境で動作する分散型コンピュータシステムであり得る。リースは、アクセスのタイプ、そのアクセスに関連する許可及び／もしくは資格証明、そのアクセスの期間、またはリソースへのアクセスに関連する他のパラメータを指定し得る。例えば、リースは、限られた期間または設定された期間、リソースへのアクセスを認可する一時リースである場合がある。このような一時リースの例は、モバイルネットワーク上にネットワークアドレスを割り当てるリースである。このような一時リースは、通常、一定期間後に（手動または自動で）更新しなければならない。
【００７７】
リースは、リソース（すなわち、サービスに関連付けられたブロックストレージデバイス）へのアクセスを管理し、他のサービス、仮想マシンインスタンス、ユーザ（本明細書では「顧客」とも称する）、プロセス、アプリケーション、モジュール、システムなどのクライアントへのアクセスをもたらすブロックレベルストレージサービス１２２０などのサービスによって提供され得る。リースは、サービスによってクライアント（例えば、元のＶＭインスタンス１２１４または新たなＶＭインスタンス１２１６）に対して認可されてもよく、そのため、クライアントは、リース期間中、リソースにアクセスし得る。実施形態は、リースは、リースがクライアントの寿命の間認可され得るという点で、永続的であり得る。
【００７８】
また、リースの利用は、例えば、現在発行されている数及び種類のリースを利用して、システムがサブスクライブ過多であるか、将来的にサブスクライブ過多になる可能性があるかを判定することによって、サービスがそれ自体のリソースを管理することを可能にし得る。さらに、ブロックレベルストレージサービス１２２０などのサービスは、タイプにより異なるリース（本明細書では、「リースステータス」またはより簡素に「ステータス」とも称する）を分類することで、サービスのリソースに関連する機能を管理し得る。
【００７９】
例えば、クライアントＶＭインスタンスに提供されるブロックストレージデバイスのアクティブリースによって、クライアントＶＭインスタンスからブロックストレージデバイスへ入出力要求を送信する完全なアクセスが可能になり、これらの要求に対するすべての応答（ブロックストレージデバイスから）がクライアントＶＭインスタンスに送信されることを示すこともできる。逆に、非アクティブリースは依然として存在していてよいリースであるが、許可は制限されている。例えば、非アクティブステータスを有する、クライアントＶＭインスタンスに対して提供されるブロックストレージデバイスのリースは、クライアントＶＭインスタンスからブロックストレージデバイスへの入出力要求の送信を制限でき、また任意の先行して保留中の要求への任意の応答が、クライアントＶＭインスタンスに送信されるのを防ぐことも両方できる。他のリースステータスが存在でき、それはクライアントＶＭインスタンスからブロックストレージデバイスに入出力要求を送信することを許容するが、（ブロックストレージデバイスからの）それらの要求に対するすべての応答が異なるＶＭインスタンスに送信され得ることを示せるスタンバイリースが非限定的に含まれる。
【００８０】
図１３は、図１２に関連して説明したような、少なくとも１つの実施形態による、仮想インスタンスの移行中、状態情報を転送するための例示的なプロセス１３００を示す。図１２に関連して説明したブロックレベルストレージサービス１２２０などのブロックレベルストレージサービスは、図１３に示す処理を実行してもよい。
【００８１】
ブロックレベルストレージサービスは、最初に、ソース位置からターゲット位置への仮想マシンインスタンスの移行を開始１３０２するコマンドを、受信し得る。次に、ブロックレベルストレージサービスは、ブロックストレージデバイスのブロックレベルストレージサービス（すなわち、資格証明のセット及び／または資格証明の一時的なセット）によって提供されるブロックストレージデバイスに関連するスタンバイリースを生成１３０４することができ、それはブロックレベルストレージサービスによって提供されてもよい。次に、ブロックレベルストレージサービスは、ソース位置からターゲット位置への状態情報のコピー及び／または転送を開始１３０６し得る。
【００８２】
ソース位置からターゲット位置への移行のプロセスにある仮想マシンインスタンスが、クリティカルフェーズにあると判定１３０８されて、双方の仮想マシンインスタンスがロック１３１０されるべきで、またすべての変更がクリティカルフェーズの完了までブロックされるか、またはキューに入るべきである場合、ブロックレベルストレージサービスは、ターゲット位置のデバイスが機能している（本明細書では依然「利用可能な状態」であるとも称する）ことを確認１３１４する前に、ソース位置からターゲット位置への状態情報のコピーを完了１３１２できる。次に、ターゲットのリースをアクティブに設定１３１６し得る。移行が依然としてクリティカルフェーズにあると判定１３０８されない場合、ブロックレベルストレージサービスは、ソース位置からターゲット位置への状態情報のコピー及び／または転送を継続し得る。逆に、移行がクリティカルフェーズであると判定１３０８された場合、ブロックレベルストレージサービスはクリティカルフェーズが終了するのを待機１３１８してから続行してもよい。
【００８３】
クリティカルフェーズが終了１３２０した後、次に仮想マシンインスタンスの移行が成功１３２２であったかどうかを判断し得る。成功の場合、ターゲット位置の仮想マシンインスタンスが新たな有効な仮想マシンインスタンスであり、ターゲットは一時停止されず、移行が完了１３２４し得る。成功でなければ、ソース位置の仮想マシンインスタンスは有効な仮想マシンインスタンスのままである。その代わりに、ブロックレベルストレージデバイスは、例えば、移行のロールバックを実行することによって、移行を元に戻す１３２６ことができる。
【００８４】
図１４は、図１２に関連して説明したような、少なくとも１つの実施形態による、仮想マシンインスタンス移行に先立つ、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらしている例示的な環境１４００を示す。移行前、元のＶＭインスタンス１４０６は、ブロックレベルストレージサービス１４０８によりブロックストレージデバイス１４０２へのアクセスがもたらされた状態で、ソース位置１４０４で動作してよい。元のＶＭインスタンス１４０６によるブロックストレージデバイス１４０２までのアクセスをもたらすように構成されているリース１４１０は、ブロックレベルストレージサービス１４０８によって提供される。図１４に示す例で、リース１４１０はアクティブリースであり、元のＶＭインスタンス１４０６から受信された入出力要求は、応答が生成され、ソース位置１４０４の元のＶＭインスタンス１４０６に送信される。本明細書で説明するように、アクティブリース１４１０は、元のＶＭインスタンスに一時的に提供でき、ブロックレベルストレージサービス１４０８によって管理できる。移行を開始する前、ブロックストレージデバイス１４０２の状態１４１２は、ソース位置１４０４に存在してもよく、本明細書に記載の顧客直面状態及び内部状態の両方を含むことができる。
【００８５】
図１５は、図１２に関連して説明したような、少なくとも１つの実施形態による、仮想マシンインスタンス移行の開始後の、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらしている例示的な環境１５００を示す。移行の開始後、元のＶＭインスタンス１５０６は、上述したようにブロックレベルストレージサービス１５０８によりブロックストレージデバイス１５０２へのアクセスがもたらされた状態で、ソース位置１５０４で動作していてよい。元のＶＭインスタンス１５０６によるブロックストレージデバイス１５０２へのアクセスをもたらすように構成されたアクティブリース１５１０は、同様に上述したようにブロックレベルストレージサービス１５０８によって提供される。
【００８６】
移行が開始された結果、新たなＶＭインスタンス１５１４は、上述したようにブロックレベルストレージサービス１５０８によりブロックストレージデバイス１５０２へのアクセスがもたらされた状態で、ターゲット位置１５１２で動作していてよい。新たなＶＭインスタンス１５１４によるブロックストレージデバイス１５０２へのアクセスは、スタンバイリース１５１６を利用して提供し得る。スタンバイリース１５１６は、移行中にブロックストレージデバイス１５０２への部分的なアクセスをもたらすように構成し得る。例えば、スタンバイリース１５１６は、新たなＶＭインスタンス１５１４がブロックストレージデバイス１５０２への入出力要求を生成できないが、他のＶＭインスタンス（例えば、元のＶＭインスタンス１５０６）によって生成された入出力要求に対する応答を受信し得るように構成し得る。アクティブリース１５１０及びスタンバイリース１５１６の一方または両方は、各々のＶＭインスタンスに一時的に提供されてもよく、ブロックレベルストレージサービス１５０８により管理されてもよい。図１５に示す例で、アクティブリース１５１０は、元のＶＭインスタンス１５０６がブロックストレージデバイス１５０２への入出力要求を生成できるように構成され、スタンバイリース１５１６は、ブロックストレージデバイス１５０２に対する入出力要求への応答が新たなＶＭインスタンス１５１４に提供されるように構成される。移行が始まると、ソース位置１５０４におけるブロックストレージデバイス１５０２の状態１５１８の最初のコピー１５２０（本明細書では「準備的なコピー」とも称する）が、ターゲット位置１５１２に送信され、ブロックストレージデバイス１５０２のターゲット位置１５１２における状態１５２２を移行前の状態と一致させるプロセスを開始し得る。
【００８７】
図１６は、図１２に関連して説明したような、少なくとも１つの実施形態による、仮想マシンインスタンス移行のクリティカルフェーズ中の、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらしている例示的な環境１６００を示す。移行がクリティカルフェーズに達したとき、元のＶＭインスタンス１６０６がソース位置１６０４で動作してよい。ブロックレベルストレージサービス１６０８によって提供される元のＶＭインスタンス１６０６からブロックストレージデバイス１６０２へのリースは、非アクティブリース１６１０であってもよい。非アクティブリース１６１０は、元のＶＭインスタンス１６０６によるブロックストレージデバイス１６０２へのアクセスを防止するように構成することができ、その理由は、仮想マシンインスタンス移行のクリティカルフェーズの間、元のＶＭインスタンスからの入出力要求をブロックして、同期の問題を回避することができ、また先行して提出された入出力要求に対する応答をブロックして、同期の問題を回避することができるためである。実施形態では、非アクティブリースは、クリーンアップまたは他のそのような管理目的で利用される、以前のリース及び／または期限切れのリースを表すが、非アクティブリースは、ＶＭインスタンスと任意の入出力要求を送受信するように構成されていない。
【００８８】
さらに、移行がクリティカルフェーズに達した結果として、新たなＶＭインスタンス１６１４は、上述したようにブロックレベルストレージサービス１６０８によりブロックストレージデバイス１６０２へのアクセスがもたらされた状態で、ターゲット位置１６１２で動作してよい。新たなＶＭインスタンス１６１４によるブロックストレージデバイス１６０２へのアクセスは、図１５に関連して説明したようなスタンバイリースを利用して提供してもよく、図１６に示すようなアクティブリース１６１６を利用して提供してもよい。図１５に関連して説明したスタンバイリースは、移行のクリティカルフェーズ中にブロックストレージデバイス１６０２への部分的なアクセスをもたらすように構成することができ、アクティブリース１６１６は、移行のクリティカルフェーズ中にブロックストレージデバイス１６０２に完全なアクセスをもたらすように構成し得る。
【００８９】
例えば、アクティブリース１６１６は、新たなＶＭインスタンス１６１４がブロックストレージデバイス１６０２への入出力要求を生成でき、それらの入出力要求に対する応答を受信できるように構成し得る。この応答はまた、例えば、元のＶＭインスタンス１６０６により生成された入出力要求の結果として生成されていてもよく、この場合そのような入出力要求は元のＶＭインスタンス１６０６に対して提供されたリースが非アクティブリース１６１０になる前に生成されたものである。前述のように、非アクティブリース１６１０及びアクティブリース１６１６の一方または両方は、各々のＶＭインスタンスに一時的に提供されてもよく、ブロックレベルストレージサービス１６０８によって管理されてもよい。移行のクリティカルフェーズが終了する前に、ソース位置１６０４におけるブロックストレージデバイス１６０２の状態１６１８のコピーは、ターゲット位置１６１２におけるブロックストレージデバイス１６０２の状態１６２２と一致するように、最終コピーでファイナライズ１６２０してもよい。ソース位置１６０４におけるブロックストレージデバイス１６０２の状態１６１８のコピーは、新たなＶＭインスタンスへのリースがアクティブリース１６１６になる前や、元のＶＭインスタンスへのリースが非アクティブリース１６１０になる前（すなわち、移行のクリティカルフェーズの終了前）に、最終コピーでファイナライズ１６２０し得る。
【００９０】
図１７は、図１２に関連して説明したような、少なくとも１つの実施形態による、仮想マシンインスタンス移行の完了後の、ブロックレベルストレージサービスがブロックストレージデバイスへのアクセスをもたらしている例示的な環境１７００を示す。移行後、新たなＶＭインスタンス１７０６は、ブロックレベルストレージサービス１７０８によりブロックストレージデバイス１７０２へのアクセスがもたらされた状態で、ターゲット位置１７０４で動作してもよい。新たなＶＭインスタンス１７０６によるブロックストレージデバイス１７０２へのアクセスをもたらすように構成されたリース１７１０は、ブロックレベルストレージサービス１７０８によって提供される。図１７に示す例で、リース１７１０はアクティブリースであり、新たなＶＭインスタンス１７０６から受信された入出力要求は、応答を生成し、ターゲット位置１７０４の新たなＶＭインスタンス１７０６に送信し得る。本明細書で記載するように、アクティブリース１７１０は、新たなＶＭインスタンス１７０６に一時的に提供でき、ブロックレベルストレージサービス１７０８によって管理されてもよい。移行が完了すると、ターゲット位置１７０４におけるブロックストレージデバイスの状態１７１２を、移行前の状態と一致させることができる。
【００９１】
図１８は、図１２で説明したような、少なくとも１つの実施形態による、三角アプローチを利用してブロックストレージデバイスによる仮想マシンの仮想マシン移行を実行するための例示的なプロセス１８００を示す。図１２に関連して説明したブロックレベルストレージサービス１２２０などのブロックレベルストレージサービスは、図１８に示す処理を実行できる。
【００９２】
コンピューティングリソースサービスプロバイダが提供する１つまたは複数のコンピュータシステムで、サービスとして及び／または分散型のサービスとして実装され得るブロックレベルストレージサービスは、ブロックストレージデバイスのための第１のリースを、コンピューティングリソースサービスプロバイダによって提供されるコンピューティングデバイスのようなソース位置で動作する第１の仮想マシンインスタンスに、提供１８０２し得る。
【００９３】
ソース位置からターゲット位置（例えば、コンピューティングリソースサービスプロバイダによって提供される異なるコンピューティングデバイス）へ仮想マシンインスタンスが移行を開始するというインジケータを受信１８０４した後、ブロックレベルストレージサービスは、コンピューティングリソースサービスプロバイダによって提供されるコンピューティングデバイスなどのターゲット位置で動作する第２の仮想マシンインスタンスに対するブロックストレージデバイス用の第２のリースを提供１８０６し得る。スタンバイリースである第２のリースは、第２の仮想マシンインスタンスがブロックストレージデバイスにアクセスすることを許容する第２の資格証明セットを提供し得る。スタンバイリースでは、ブロックストレージデバイスへの部分的なアクセスのみが許容される。例えば、スタンバイリースでは、仮想マシンインスタンスは入出力要求に対する応答を受信することのみでき、そのような要求を生成するための資格証明を持たない可能性がある。次に、ブロックレベルストレージサービスは、ソース位置から準備的な状態情報をターゲット位置にコピー１８０８し得る。
【００９４】
ブロックレベルストレージデバイスは、少なくとも部分的に移行進捗インジケータ（本明細書では「移行の進捗のインジケータ」とも称する）に基づいて、第１のリースのステータスを更新１８１０し得る。移行がクリティカル状態に達し、ソースの状態情報が急激に変化しないとき（例えば、ソース及び／またはターゲットが一時停止しているとき）、ブロックレベルストレージサービスは、ソース位置からターゲット位置への最終的な状態情報セットをコピー１８１２でき、その結果ターゲット位置で仮想マシンインスタンスが再開されたとき、ブロックストレージデバイスの一貫した状態が維持される。移行が完了したとき（すなわち、クリティカルフェーズが完了したとき）、ブロックレベルストレージサービスは、例えば、第２のリースがアクティブリースになるように、移行進捗インジケータに少なくとも部分的に基づいて第２のリースのステータスを最終的に更新１８１４し得る。
【００９５】
例えば、移行進捗インジケータは、移行がクリティカルフェーズに達し、その結果、第１のリース及び第２のリースが非アクティブになり得、及び／またはスタンバイ状態になり得ることを示すことができる。また、移行進捗インジケータは、移行が成功し、そのため、第２のリースがアクティブになるのに対し第１のリースが非アクティブになり得る旨を示すことができる。同様に、移行進捗インジケータは、移行が失敗し、そのため、第２のリースが非アクティブになるのに対し第１のリースがアクティブになり得る旨を示すことができる。考えられるように、本明細書に記載されているリース状態及び移行進捗インジケータは単なる例示であり、したがって、他のリース状態または移行進捗インジケータも、本開示の範囲内と考えることができる。
【００９６】
さらに、本開示の実施形態は、以下の条項を考慮して、説明されることができる。
１．コンピュータ実装方法であって、
実行可能命令で構成されたブロックレベルストレージサービスコンピュータシステムの制御下で、
仮想マシンインスタンスをブロックストレージデバイスに関連付ける第１のリースを得ることであって、前記ブロックストレージデバイスは前記ブロックレベルストレージサービスによって提供され、前記第１のリースは前記仮想マシンインスタンスによる前記ブロックストレージデバイスへの第１のアクセスのポリシーを指定し、アクティブの第１のステータスを有する、前記第１のリースを得ること、
ソースコンピューティングデバイスからターゲットコンピューティングデバイスへの前記仮想マシンインスタンスの移行の開始のインジケータを受信すること、
前記ターゲットコンピューティングデバイスの前記仮想マシンインスタンスを前記ブロックストレージデバイスと関連付ける第２のリースを得ることであって、前記第２のリースは前記仮想マシンインスタンスによる前記ブロックストレージデバイスへの第２のアクセスのポリシーを指定し、前記第２のリースは第２のスタンバイのステータスを有する、前記第２のリースを得ること、
前記ブロックストレージデバイスに関連付けられる第１の状態情報セットを前記ソースコンピューティングデバイスから前記ターゲットコンピューティングデバイスにコピーすること、
前記移行の進捗のインジケータに少なくとも部分的に基づいて前記第１のステータスを更新すること、
前記ブロックストレージデバイスに関連付けられる第２の状態情報セットを前記ソースコンピューティングデバイスから前記ターゲットコンピューティングデバイスにコピーすること、及び
前記移行の進捗のインジケータに少なくとも部分的に基づいて、前記第２のステータスをアクティブに更新すること、を含む前記コンピュータ実装方法。
【００９７】
２．前記第１の状態情報セットは、第１の能力測定基準セットのサブセットを含み、
前記第２の状態情報セットは、第２の前記能力測定基準セットのサブセットを含み、
前記能力測定基準セットは、１秒当たりの入出力動作、使用される帯域幅、読取りバイト、書込みバイト、アイドルに費やされた時間、またはスロットル率のうちの少なくとも１つを含む、条項１に記載のコンピュータ実装方法。
【００９８】
３．前記能力測定基準セットが、
コンピューティングリソースサービスプロバイダの顧客に提示されるように構成された顧客直面能力測定基準セットと、
前記ブロックストレージデバイスの健全性の測定値を少なくとも判定するために、前記コンピューティングリソースサービスプロバイダのサービスによって使用可能な内部能力測定基準セットと、を含む、条項２に記載のコンピュータ実装方法。
【００９９】
４．前記コンピューティングリソースサービスプロバイダの前記サービスは、前記ブロックレベルストレージサービスである、条項３に記載のコンピュータ実装方法。
【０１００】
５．１つまたは複数のサービスを実装するように構成された少なくとも１つのコンピューティングデバイスを備えるシステムであって、
前記１つまたは複数のサービスは、
第１の位置から第２の位置への仮想マシンインスタンスの移行の開始に応答し、前記仮想マシンインスタンスが、ブロックレベルストレージサービスによって提供されるブロックストレージデバイスに前記仮想マシンインスタンスを関連付ける第１のリースを有し、少なくとも、
前記第２の位置にある前記仮想マシンインスタンスを前記ブロックストレージデバイスに関連付ける第２のリースを得ることであって、前記第２のリースは、前記仮想マシンインスタンスによる前記ブロックストレージデバイスへの第２のアクセスのポリシーを指定する、前記第２のリースを得ること、
前記ブロックストレージデバイスに関連付けられる第１の状態情報セットを前記第１の位置から前記第２の位置にコピーすること、及び
前記ブロックストレージデバイスに関連付けられる第２の状態情報セットを前記第１の位置から前記第２の位置にコピーすることであって、前記第２の状態情報セットは前記第１の状態情報セットのサブセットに対する１つ以上の変更を含む、前記前記第２の位置にコピーすること、を行うように構成される、前記システム。
【０１０１】
６．前記第１のリースは、前記ブロックストレージデバイスへの第１のアクセスのポリシーを指定し、
前記第２のリースは、前記ブロックストレージデバイスへの第２のアクセスのポリシーを指定する、条項５に記載のシステム。
【０１０２】
７．前記第１のリースがアクティブリースであり、
前記第２のリースがスタンバイリースである、条項５または６に記載のシステム。
【０１０３】
８．前記第１の状態情報セットが、前記ブロックストレージデバイスの能力測定基準セットを含む、条項５〜７のいずれかに記載のシステム。
【０１０４】
９．前記第２の状態情報セットは、スロットル率を含み、前記スロットル率が、ブロックストレージデバイスが使用できる利用可能な帯域幅の割合を指定する、条項５〜８のいずれかに記載のシステム。
【０１０５】
１０．前記第１の状態情報セットは、前記ブロックストレージデバイスに関連付けられる暗号情報を含む、条項５〜９のいずれかに記載のシステム。
【０１０６】
１１．前記第１の状態情報セットは、前記仮想マシンインスタンスによる前記ブロックストレージデバイスへのアクセスに関連するポリシーのセットを含む、条項５〜１０のいずれかに記載のシステム。
【０１０７】
１２．前記第１の位置がコンピューティングデバイスであり、
前記第２の位置は異なるコンピューティングデバイスである、条項５〜１１のいずれかに記載のシステム。
【０１０８】
１３．コンピュータシステムの１つまたは複数のプロセッサによって実行されるとき、前記コンピュータシステムに、少なくとも、
仮想マシンインスタンスの第１の位置から第２の位置への移行の第１のフェーズ中に、ブロックストレージデバイスに関連付けられる第１の状態情報セットを前記第１の位置から前記第２の位置にコピーすることであって、前記ブロックストレージデバイスは前記仮想マシンインスタンスに提供される、前記第２の位置にコピーすること、
前記移行のクリティカルフェーズを検出すること、及び
前記ブロックストレージデバイスに関連付けられる第２の状態情報セットをコピーすること、を行わせる実行可能命令が記憶された非一時的なコンピュータ可読記憶媒体。
【０１０９】
１４．前記第２の状態情報セットは、前記第１の状態情報セットのサブセットに対する１つ以上の変更を含む、条項１３に記載の非一時的なコンピュータ可読記憶媒体。
【０１１０】
１５．前記命令が、前記１つまたは複数のプロセッサによって実行されたときに、前記コンピュータシステムに、少なくとも、前記移行の完了を検出させ、前記移行の完了に基づいて、前記移行が失敗したことを判定させる命令をさらに含む、条項１３または１４に記載の非一時的なコンピュータ可読記憶媒体。
【０１１１】
１６．前記コンピュータシステムに、前記移行が失敗したと判定させる前記命令は、前記１つまたは複数のプロセッサによって実行されるとき、前記コンピュータシステムに、前記第１の状態情報セット及び前記第２の状態情報セットに少なくとも部分的に基づいて、前記第１の位置から前記ブロックストレージデバイスに関連付けられる第３の状態情報セットを更新させる命令をさらに備える、条項１５に記載の非一時的なコンピュータ可読記憶媒体。
【０１１２】
１７．前記仮想マシンインスタンスが、
前記第１の位置で動作する前記仮想マシンインスタンスを前記ブロックストレージデバイスに関連付ける第１の資格証明セットと、
前記第２の位置で動作している前記仮想マシンインスタンスを前記ブロックストレージデバイスに関連付ける第２の資格証明のセットと、を備える、条項１３〜１６のいずれかに記載の非一時的なコンピュータ可読記憶媒体。
【０１１３】
１８．前記第１の資格証明セットは、一時的な資格証明セットであり、前記第２の資格証明のセットは、一時的な資格証明セットである、条項１７に記載の非一時的なコンピュータ可読記憶媒体。
【０１１４】
１９．前記第１の資格証明セットは、前記ブロックストレージデバイスに関連付けられるブロックレベルストレージサービスから得られた第１のリースによって指定され、
前記第２の資格証明セットは、前記移行に応答して前記ブロックストレージデバイスに関連付けられる前記ブロックレベルストレージサービスによって生成された第２のリースによって指定される、条項１７に記載の非一時的なコンピュータ可読記憶媒体。
【０１１５】
２０．前記命令は、前記１つまたは複数のプロセッサによって実行されるとき、前記コンピュータシステムに、前記移行の前記クリティカルフェーズを検出したとたん前記第１のリースを非アクティブに設定させる命令をさらに含む、条項１９に記載の非一時的なコンピュータ可読記憶媒体。
【０１１６】
２１．コンピュータ実装方法であって、
実行可能命令で構成されたブロックレベルストレージサービスコンピュータシステムの制御下で、
仮想マシンインスタンスをブロックストレージデバイスに関連付ける第１のリースを得ることであって、前記ブロックストレージデバイスは、前記ブロックレベルストレージサービスによって提供され、前記第１のリースは、前記仮想マシンインスタンスによる前記ブロックストレージデバイスへの第１のアクセスのポリシーを指定し、前記第１のリースは、アクティブの第１のステータスを有する、前記第１のリースを得ること、
ソースコンピューティングデバイスからターゲットコンピューティングデバイスへの前記仮想マシンインスタンスの移行の開始のインジケータを受信すること、
前記ターゲットコンピューティングデバイスの前記仮想マシンインスタンスを前記ブロックストレージデバイスに関連付ける第２のリースを生成することであって、前記第２のリースは、前記仮想マシンインスタンスによる前記ブロックストレージデバイスへの第２のアクセスのポリシーを指定し、前記第２のリースは第２のスタンバイのステータスを有する、前記第２のリースを生成すること、
前記移行の進捗のインジケータに少なくとも部分的に基づいて前記第１のステータス及び前記第２のステータスを更新すること、
前記ブロックストレージデバイスを前記仮想マシンインスタンスからアドレス指定する入出力要求のセットを受信すること、及び
前記入出力要求セットの入出力要求に対する応答を提供することであって、前記応答は少なくとも前記応答を送信する応答位置を指定し、前記応答位置は、前記第１のステータスがアクティブであるかどうかに少なくとも部分的に基づいて判定され、前記応答位置は、前記ソースコンピューティングデバイス及び前記ターゲットコンピューティングデバイスから選択される、前記応答を提供すること、を含む、前記コンピュータ実装方法。
【０１１７】
２２．前記移行の進捗の前記インジケータがクリティカルフェーズに到達した結果として、前記第１のステータスが非アクティブに変更される、条項２１に記載のコンピュータ実装方法。
【０１１８】
２３．前記第２のステータスは、前記第１のステータスが非アクティブである結果としてアクティブに変更される、条項２１または２２に記載のコンピュータ実装方法。
【０１１９】
２４．前記応答位置が、前記第２のステータスが非アクティブでないかどうかに少なくとも部分的に基づいてさらに判定される、条項２１〜２３のいずれかに記載のコンピュータ実装方法。
【０１２０】
２５．１つまたは複数のサービスを実装するように構成された少なくとも１つのコンピューティングデバイスを備えるシステムであって、
１つ以上のサービスが、
仮想マシンインスタンスをブロックストレージデバイスに関連付ける第１のリースを得ることであって、前記ブロックストレージデバイスは、前記ブロックレベルストレージサービスによって提供され、前記第１のリースは前記仮想マシンインスタンスによる前記ブロックストレージデバイスへの第１のアクセスのポリシーを指定する、前記第１のリースを得ること、及び
第１の位置から第２の位置への仮想マシンインスタンスの移行の開始に応答し、少なくとも、
前記第２の位置にある前記仮想マシンインスタンスを前記ブロックストレージデバイスに関連付ける第２のリースを生成することであって、前記第２のリースは、前記仮想マシンインスタンスによる前記ブロックストレージデバイスへの第２のアクセスのポリシーを指定する、前記第２のリースを生成すること、
前記移行の進捗のインジケータに少なくとも部分的に基づいて前記第１のリースの第１のステータス及び前記第２のリースの第２のステータスを判定すること、及び
前記ブロックストレージデバイスをアドレス指定する入出力要求セットの入出力要求への応答をもたらすことであって、前記入出力応答は前記仮想マシンインスタンスから受信し、前記応答は応答位置セットを指定し、前記応答位置セットは前記第１のステータスと前記第２のステータスに少なくとも部分的に基づいている、を行うように構成されている、前記システム。
【０１２１】
２６．前記応答位置セットの応答位置は、前記第１の位置及び前記第２の位置から選択される、条項２５に記載のシステム。
【０１２２】
２７．前記応答位置セットは、前記第１のステータスがアクティブである場合、前記第１の位置を含む、条項２６に記載のシステム。
【０１２３】
２８．前記応答位置セットは、前記第２のステータスが非アクティブでない場合、前記第２の位置を含む、条項２６に記載のシステム。
【０１２４】
２９．前記応答が前記応答位置セットの応答位置に提供される、条項２５〜２８のいずれかに記載のシステム。
【０１２５】
３０．前記移行の進捗の前記インジケータが、少なくとも移行成功または移行失敗を含む、条項２５〜２９のいずれかに記載のシステム。
【０１２６】
３１．前記移行の進捗の前記インジケータが移行成功である場合、前記第１のステータスは非アクティブに変更され、
前記移行の進捗の前記インジケータが移行成功である場合、前記第２のステータスはアクティブに変更される、条項３０に記載のシステム。
【０１２７】
３２．前記移行の進捗の前記インジケータが移行失敗である場合、前記第１のステータスはアクティブに変更され、
前記移行の進捗の前記インジケータが移行失敗である場合、前記第２のステータスは非アクティブに変更される、条項３０に記載のシステム。
【０１２８】
３３．コンピュータシステムの１つまたは複数のプロセッサによって実行されるとき、前記コンピュータシステムに、少なくとも、
仮想マシンインスタンスの第１の位置から第２の位置への移行を開始することであって、前記仮想マシンインスタンスは、前記第１の位置で動作している前記仮想マシンインスタンスを、ブロックストレージデバイスに関連付ける第１の資格証明セットを備え、前記仮想マシンインスタンスは、前記第２の位置で動作している前記仮想マシンインスタンスをブロックストレージデバイスに関連付ける第２の資格証明セットを備える、前記移行を開始すること、及び
前記ブロックストレージデバイスをアドレス指定し、前記移行中に前記仮想マシンインスタンスから受信した入出力要求に対する応答をもたらすことであって、前記応答は、１つまたは複数の応答位置を指定し、前記１つまたは複数の応答位置は、前記移行の進捗のインジケータに少なくとも部分的に基づく、前記応答をもたらすこと、を行わせる実行可能命令を記憶した非一時的なコンピュータ可読記憶媒体。
【０１２９】
３４．前記第１の資格証明セット及び前記第２の資格証明セットは、前記コンピュータシステムによって判定された期間を有する資格証明の一時的なセットである、条項３３に記載の非一時的なコンピュータ可読記憶媒体。
【０１３０】
３５．前記第１の資格証明セットは、前記ブロックストレージデバイスに関連付けられるブロックレベルストレージサービスから得られた第１のリースによって指定され、
前記第２の資格証明セットは、前記移行に応答して前記ブロックストレージデバイスに関連付けられる前記ブロックレベルストレージサービスによって生成された第２のリースによって指定される、条項３３または３４に記載の非一時的なコンピュータ可読記憶媒体。
【０１３１】
３６．前記第１の位置がコンピューティングデバイスであり、
前記第２の位置が異なるコンピューティングデバイスである、条項３３〜３５のいずれかに記載の非一時的なコンピュータ可読記憶媒体。
【０１３２】
３７．前記移行の進捗の前記インジケータが、移行なし、移行開始、クリティカルフェーズ、移行成功、または移行失敗のうちの少なくとも１つである、条項３３〜３６のいずれかに記載の非一時的なコンピュータ可読記憶媒体。
【０１３３】
３８．前記進捗のインジケータが、移行、移行開始、または移行失敗ではない場合、前記１つ以上の応答ロケーションが前記第１のロケーションを含む、条項３７に記載の非一時的なコンピュータ可読記憶媒体。
【０１３４】
３９．前記進捗のインジケータが、移行開始または移行成功である場合、前記１つ以上の応答位置が前記第２の位置を含む、条項３７に記載の非一時的なコンピュータ可読記憶媒体。
【０１３５】
４０．前記１つ以上の応答位置は、前記進捗のインジケータがクリティカルフェーズである場合、前記第１の位置及び前記第２の位置を含む、条項３７に記載の非一時的なコンピュータ可読記憶媒体。
【０１３６】
様々な実施形態は、さらに、様々な動作環境で実施することができ、場合によっては、いくつかのアプリケーションのいずれかを動作させるために利用し得る１つ以上のユーザコンピュータ、コンピューティングデバイスまたは処理デバイスを含むことができる。ユーザーデバイスまたはクライアントデバイスは、標準オペレーティングシステムを実行するデスクトップコンピュータ、ラップトップコンピュータまたはタブレットのいくつかの汎用パーソナルコンピュータ等のいずれか、ならびに携帯電話向けソフトウェアを実行し、かついくつかのネットワーキングプロトコル及びメッセージプロトコルをサポートできる、セルラーデバイス、無線デバイス、及びハンドヘルドデバイスを含むことがある。そのようなシステムはまた、様々な市販のオペレーティングシステムのいずれかを実行する複数のワークステーション、及び開発及びデータベース管理などの目的のための他の公知のアプリケーションを含むことができる。これらのデバイスはまた、ダミー端末、シンクライアント、ゲームシステム、及びネットワークを介して通信し得る他のデバイスなどの他の電子デバイスを含むことができる。これらのデバイスは、仮想マシン、ハイパーバイザー、及びネットワークを介して通信できる他の仮想デバイスなどの仮想デバイスも含むことができる。
【０１３７】
本開示の様々な実施形態は、伝送制御プロトコル／インターネットプロトコル（「ＴＣＰ／ＩＰ」）、ユーザデータグラムプロトコル（「ＵＤＰ」）、開放型システム接続（「ＯＳＩ））モデルの様々なレイヤで動作するプロトコル、ファイル転送プロトコル（「ＦＴＰ」）、ユニバーサルプラグアンドプレイ（「ＵＰｎＰ」）、ネットワークファイルシステム（「ＮＦＳ」）、Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ（「ＣＩＦＳ」）、及びＡｐｐｌｅＴａｌｋといった様々な市販のプロトコルのいずれかを利用して通信をサポートするために、当業者によく知られている少なくとも１つのネットワークを利用する。ネットワークは、例えば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、衛星ネットワーク、及びそれらの任意の組み合わせをであってよい。
【０１３８】
ウェブサーバを利用する実施形態では、ウェブサーバは、ハイパーテキスト転送プロトコル（「ＨＴＴＰ」）サーバ、ＦＴＰサーバ、Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ（「ＣＧＩ」）サーバ、データサーバ、Ｊａｖａ（登録商標）サーバ、Ａｐａｃｈｅサーバ、ビジネスアプリケーションサーバを含む様々なサーバまたは中間層のアプリケーションのいずれかを実行し得る。サーバ（複数可）はまた、任意のプログラミング言語、例えばＪａｖａ（登録商標）、Ｃ、Ｃ＃、またはＣ＋＋、または任意のスクリプト言語、例えばＲｕｂｙ、ＰＨＰ、Ｐｅｒｌ、Ｐｙｔｈｏｎ、またはＴＣＬ、ならびにそれらの組み合わせなどで書かれた１つまたは複数のまたはプログラムとして実装され得る１つまたは複数のウェブアプリケーションを実行することなどによって、ユーザのデバイスからの要求に応答して、プログラムまたはスクリプトを実行し得る。 また、サーバ（複数可）は、データベースサーバ、例えば非限定的に、Ｏｒａｃｌｅ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）、Ｓｙｂａｓｅ（登録商標）、及びＩＢＭ（登録商標）で市販されているもの、ならびにオープンソースサーバ、例えばＭｙＳＱＬ、Ｐｏｓｔｇｒｅｓ、ＳＱＬｉｔｅ、ＭｏｎｇｏＤＢ、また構造化データまたは非構造化データを記憶、検索、及びアクセスできる他のいずれかのサーバを含むデータベースサーバも含み得る。 データベースサーバは、テーブルベースのサーバ、ドキュメントベースのサーバ、非構造化サーバ、リレーショナルサーバ、非リレーショナルサーバ、またはこれら及び／またはその他のデータベースサーバの組み合わせも含み得る。
【０１３９】
環境は、上述したように、様々なデータストア、ならびに他のメモリ及び記憶媒体を含むことができる。これらは、１つまたは複数のコンピュータにローカル（及び／またはそこに存在する）記憶媒体、またはネットワークを介してコンピュータの一部もしくは全部からリモートである記憶媒体などの、様々な位置に存在し得る。特定の実施形態のセットでは、情報は、当業者によく知られているストレージエリアネットワーク（「ＳＡＮ」）に存在していてもよい。同様に、コンピュータ、サーバまたは他のネットワークデバイスに起因する機能を実行するために必要な任意のファイルは、必要に応じてローカル及び／またはリモートに記憶し得る。システムがコンピュータ化されたデバイスを含む場合、そのような各デバイスは、バスを介して電気的に結合され得るハードウェア要素を含むことができ、その要素は、例えば、少なくとも１つの中央処理装置（「ＣＰＵ」または「プロセッサ」）、少なくとも１つの入力デバイス（例えば、マウス、キーボード、コントローラ、タッチスクリーンまたはキーパッド）、及び少なくとも１つの出力デバイス（例えば、ディスプレイデバイス、プリンタまたはスピーカ）を含む。また、そのようなシステムは、１つまたは複数のストレージデバイス、例えばディスクドライブ、光学的ストレージデバイス及びソリッドステートストレージデバイス、例えばランダムアクセスメモリ（「ＲＡＭ」）または読み出し専用メモリ（「ＲＯＭ」）、ならびにリムーバブルメディアデバイス、メモリカード、フラッシュカードなどを含み得る。
【０１４０】
また、そのようなデバイスは、コンピュータ可読記憶媒体読取装置、通信デバイス（例えば、モデム、ネットワークカード（無線または有線）、赤外線通信デバイスなど）、及び前述のワーキングメモリを含むことができる。コンピュータ可読記憶媒体読取装置は、リモートの、ローカルの、固定の、及び／または取り外し可能なストレージデバイスを表現するコンピュータ可読記憶媒体、ならびにコンピュータ可読情報を一時的及び／またはより永続的に包含、記憶、送信、及び読み出すための記憶媒体に接続することができるか、受信するように構成できる。また、システム及び様々なデバイスは、通常、いくつかのソフトウェアアプリケーション、モジュール、サービスまたは少なくとも１つのワーキングメモリデバイス内に配置された他の要素、例えばオペレーティングシステム及びアプリケーションプログラム、例えばクライアントアプリケーションまたはウェブブラウザを含む。代替の実施形態は、上述したものからの数多くの変形を有し得ることを理解されたい。例えば、カスタマイズされたハードウェアも利用してよく、及び／または特定の要素がハードウェア、ソフトウェア（アプレットなどのポータブルソフトウェアを含む）、またはその両方で実装されてもよい。さらに、ネットワーク入力／出力デバイス等の他のコンピューティングデバイスへの接続が用いられ得る。
【０１４１】
コードまたはコードの一部を包含するための記憶媒体及びコンピュータ可読媒体は、当技術分野で知られているまたは利用されている任意の適切な媒体を含むことができる。それは、記憶媒体及び通信媒体、例えば、非限定的に、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報の記憶及び／または伝達のための任意の方法または技術で実行される揮発性及び不揮発性、取り外し可能及び取り外し不可能な媒体を含み、それはＲＡＭ、ＲＯＭ、電気的消去再書込み可能な読出し専用メモリ（「ＥＥＰＲＯＭ」）、フラッシュメモリ、または他のメモリ技術、読み取り専用コンパクトディスク（「ＣＤ−ＲＯＭ」）、デジタル多目的ディスク（ＤＶＤ）、または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、または所望の情報を記憶するために利用することができ、システムデバイスがアクセスし得る任意の他の媒体を含む。本明細書で提供される開示及び教示に基づいて、当業者は、様々な実施形態を実装するための他の手段及び／または方法を理解するであろう。
【０１４２】
したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で認識されるべきである。しかし、特許請求の範囲に記載された本発明のより広い精神及び範囲から逸脱することなく、様々な修正及び変更を行うことができることは明白である。
【０１４３】
他の変形例は、本開示の精神の範囲内である。したがって、開示された技法が、様々な修正及び代替的な構成を受け入れることができるが、その特定の図示された実施形態を図面に示し、上で詳細に説明してきた。しかし、本発明を開示された特定の形態（複数可）に限定するつもりはなく、反対に、添付の特許請求の範囲に定義されるように、本発明の精神及び範囲内に入るすべての改変、代替的な構成及び等価物を網羅することが意図されていることを理解されたい。
【０１４４】
開示される実施形態を説明する文脈における（特に以下の特許請求の範囲の文脈における）「ａ」、「ａｎ」、及び「ｔｈｅ」という用語及び同様の指示語の使用は、本明細書において別段の指示がない限り、または文脈に明らかに矛盾するものでない限り、単数及び複数の双方を網羅すると解釈される。「ｃｏｍｐｒｉｓｉｎｇ（備える）」、「ｈａｖｉｎｇ（有する）」、「ｉｎｃｌｕｄｉｎｇ（含む）」及び「ｃｏｎｔａｉｎｉｎｇ（含有する）」という用語は、別段の記載がない限り、オープンエンドの用語（すなわち、「含むが、これに限定されない」を意味する）として解釈されるべきである。「ｃｏｎｎｅｃｔｅｄ（接続された）」という用語は、修飾されておらず、物理的な接続を示すときは、何かが介在していても部分的にまたは完全に包含されているか、付着しているか、共に結合しているものと解釈すべきである。本明細書の値の範囲の列挙は、本明細書中で別段の指示がない限り、範囲内の各別個の値を個別に示す簡略的な方法として提供することを単に意図しており、各々の別個の値は、まるで本明細書に個別に記載されているかの如く、明細書に組み込まれる。別段に明記されない限り、または文脈と矛盾しない限り、「セット」（例えば、「項目のセット」）または「サブセット」という用語の利用は、１つまたは複数の要素を含む非空の集まりとして解釈されるべきである。さらに、別段に明記されない限り、または矛盾しない限り、対応するセットの「サブセット」という用語は必ずしも対応するセットの適切なサブセットを意味するものではなく、サブセットと対応するセットが等しいものであってもよい。
【０１４５】
「Ａ、Ｂ、及びＣの少なくとも１つ」または「Ａ、Ｂ及びＣの少なくとも１つ」の形のフレーズなどの接続的な語は、具体的に別段に明記されていない限り、あるいは文脈に明らかに矛盾しない限り、項目、用語などが、ＡまたはＢまたはＣのいずれか、ＡとＢとＣのセットの任意の非空のサブセットであり得ることを示すよう一般的に使用される文脈で別段に理解される。例えば、３つの要素を含むセットの説明的な例で、「Ａ、Ｂ、及びＣの少なくとも１つ」と「Ａ、Ｂ及びＣの少なくとも１つ」は、｛Ａ｝、｛Ｂ｝、｛Ｃ｝、｛Ａ、Ｂ｝、｛Ａ、Ｃ｝、｛Ｂ、Ｃ｝、｛Ａ、Ｂ、Ｃ｝の集合のいずれかを示している。したがって、そのような接続的な語は、ある実施形態が、Ａの少なくとも１つ、Ｂの少なくとも１つ、及びＣの少なくとも１つが各々存在する必要があることを意味することを概して意図してはいない。
【０１４６】
本明細書に記載されるプロセスの操作は、本明細書で別段に指示されない限り、あるいは文脈に明らかに矛盾しない限り、任意の適切な順序で実施され得る。本明細書で説明されるプロセス（またはその変形及び／またはそれらの組み合わせ）は、実行可能命令で構成された１つまたは複数のコンピュータシステムの制御下で実行でき、１つまたは複数のプロセッサで、ハードウェアで、またはそれらの組み合わせによって、集合的に実行されるコード（例えば、実行可能命令、１つ以上のコンピュータプログラムまたは１つ以上のアプリケーション）として実行できる。コードは、例えば、１つまたは複数のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形態で、コンピュータ可読記憶媒体に記憶されてもよい。コンピュータ可読記憶媒体は、非一時的なものでもよい。
【０１４７】
本明細書で提供される一部の及びすべての実施例、または例示的な用語（例えば、「など」）の利用は、単に本発明の実施形態をよりよく示すことを意図しており、別段のクレームがない限り、本発明の範囲を限定するものではない。本明細書のいかなる言葉も、本発明の実施に不可欠な特許請求されていない要素を示すものとして解釈されるべきではない。
【０１４８】
本発明を実施するために本発明者らに知られている最良の形態を含む、本開示の実施形態を、本明細書に記載している。これらの実施形態の変形は、前述の説明を読むと、当業者に明らかになり得る。本発明者らは、当業者がこのような変形を適切に利用することを期待しており、本発明者らは、本明細書に具体的に記載されたものとは別の方法で本開示の実施形態が実施されることを意図する。したがって、本開示の範囲は、適用可能な法によって許容されるように、本明細書に添付された特許請求の範囲に記載された主題のすべての改変及び均等物を含む。さらに、本明細書で別段に指示されない限り、あるいは文脈に明らかに矛盾しない限り、すべての可能な変形における上記の要素の任意の組合せは、本開示の範囲に包含される。
【０１４９】
本明細書で引用された刊行物、特許出願及び特許を含むすべての参考文献は、各参考文献が個別にかつ具体的に参照により組み込まれることが示され、その全体が本明細書に記載されるのと同じ程度に、参照により本明細書に組み込まれる。
［項目１］
１つまたは複数のサービスを実装するように構成された少なくとも１つのコンピューティングデバイスを備えるシステムであって、
上記１つまたは複数のサービスは、
第１の位置から第２の位置への仮想マシンインスタンスの移行の開始に応答し、上記仮想マシンインスタンスが、ブロックレベルストレージサービスによって提供されるブロックストレージデバイスに上記仮想マシンインスタンスを関連付ける第１のリースを有し、少なくとも、
上記第２の位置にある上記仮想マシンインスタンスを上記ブロックストレージデバイスに関連付ける第２のリースを得ることであって、上記第２のリースは、上記仮想マシンインスタンスによる上記ブロックストレージデバイスへの第２のアクセスのポリシーを指定する、上記第２のリースを得ること、
上記ブロックストレージデバイスに関連付けられる第１の状態情報セットを上記第１の位置から上記第２の位置にコピーすること、及び
上記ブロックストレージデバイスに関連付けられる第２の状態情報セットを上記第１の位置から上記第２の位置にコピーすることであって、上記第２の状態情報セットは上記第１の状態情報セットのサブセットに対する１つ以上の変更を含む、上記第２の位置にコピーすること、を行う、上記システム。
［項目２］
上記第１のリースは、上記ブロックストレージデバイスへの第１のアクセスのポリシーを指定し、
上記第２のリースは、上記ブロックストレージデバイスへの第２のアクセスのポリシーを指定する、項目１に記載のシステム。
［項目３］
上記第１のリースがアクティブリースであり、
上記第２のリースがスタンバイリースである、項目１または２に記載のシステム。
［項目４］
上記第１の状態情報セットが、上記ブロックストレージデバイスの能力測定基準セットを含む、項目１〜３のいずれか一項に記載のシステム。
［項目５］
上記第２の状態情報セットは、スロットル率を含み、上記スロットル率が、上記ブロックストレージデバイスが使用できる利用可能な帯域幅の割合を指定する、項目１〜４のいずれか一項に記載のシステム。
［項目６］
上記第１の状態情報セットは、上記ブロックストレージデバイスに関連付けられる暗号情報を含む、項目１〜５のいずれか一項に記載のシステム。
［項目７］
上記第１の状態情報セットは、上記仮想マシンインスタンスによる上記ブロックストレージデバイスへのアクセスに関連するポリシーのセットを含む、項目１〜６のいずれか一項に記載のシステム。
［項目８］
上記第１の位置がコンピューティングデバイスであり、
上記第２の位置は異なるコンピューティングデバイスである、項目１〜７のいずれか一項に記載のシステム。
［項目９］
コンピュータシステムに、少なくとも、
仮想マシンインスタンスの第１の位置から第２の位置への移行の第１のフェーズ中に、ブロックストレージデバイスに関連付けられる第１の状態情報セットを上記第１の位置から上記第２の位置にコピーする手順であって、上記ブロックストレージデバイスは上記仮想マシンインスタンスに提供される、上記第２の位置にコピーする手順、
上記移行のクリティカルフェーズを検出する手順、及び
上記ブロックストレージデバイスに関連付けられる第２の状態情報セットをコピーする手順、を実行させるためのプログラム。
［項目１０］
上記第２の状態情報セットは、上記第１の状態情報セットのサブセットに対する１つ以上の変更を含む、項目９に記載のプログラム。
［項目１１］
上記コンピュータシステムに、少なくとも、上記移行の完了を検出させ、上記移行の上記完了に基づいて、上記移行が失敗したことを判定させる手順をさらに実行させるための、項目９または１０に記載のプログラム。
［項目１２］
上記コンピュータシステムに、上記移行が失敗したと判定させる上記手順は、上記コンピュータシステムに、上記第１の状態情報セット及び上記第２の状態情報セットに少なくとも部分的に基づいて、上記第１の位置から上記ブロックストレージデバイスに関連付けられる第３の状態情報セットを更新させる手順をさらに備える、項目９〜１１のいずれか一項に記載のプログラム。
［項目１３］
上記仮想マシンインスタンスが、
上記第１の位置で動作する上記仮想マシンインスタンスを上記ブロックストレージデバイスに関連付ける第１の資格証明セットと、
上記第２の位置で動作している上記仮想マシンインスタンスをブロックストレージデバイスに関連付ける第２の資格証明セットと、を備える、項目９〜１２のいずれか一項に記載のプログラム。
［項目１４］
上記第１の資格証明セットは、一時的な資格証明セットであり、上記第２の資格証明セットは、一時的な資格証明セットである、項目１３に記載のプログラム。
［項目１５］
上記第１の資格証明セットは、上記ブロックストレージデバイスに関連付けられるブロックレベルストレージサービスから得られた第１のリースによって指定され、
上記第２の資格証明セットは、上記移行に応答して上記ブロックストレージデバイスに関連付けられる上記ブロックレベルストレージサービスによって生成された第２のリースによって指定される、項目１３に記載のプログラム。
［項目１６］
上記コンピュータシステムに、上記移行の上記クリティカルフェーズを検出したとたん上記第１のリースを非アクティブに設定させる手順をさらに実行させるための、項目１５に記載のプログラム。
【図１】
2020035465.tif 000003
【図２】
2020035465.tif 000004
【図３】
2020035465.tif 000005
【図４】
2020035465.tif 000006
【図５】
2020035465.tif 000007
【図６】
2020035465.tif 000008
【図７】
2020035465.tif 000009
【図８】
2020035465.tif 000010
【図９】
2020035465.tif 000011
【図１０】
2020035465.tif 000012
【図１１】
2020035465.tif 000013
【図１２】
2020035465.tif 000014
【図１３】
2020035465.tif 000015
【図１４】
2020035465.tif 000016
【図１５】
2020035465.tif 000017
【図１６】
2020035465.tif 000018
【図１７】
2020035465.tif 000019
【図１８】
2020035465.tif 000020
【外国語明細書】
2020035465000001.pdf