(57)【要約】      （修正有）【課題】データのライブマイグレーションのための方法、システムおよびコンピュータプログラムを提供する。【解決手段】クラウドベース環境１００において、コンピュータ記憶媒体上に符号化されたコンピュータプログラムを含む、ストレージマシン１４０からストレージマシン１５０にデータを移行する方法であって、データは、ストレージマシン１４０、１５０とは別の、ホストマシン１１０上で動作するプロセス（仮想マシン、アプリケーションまたは他のプロセス）用のデータであり、互いに排他的であるデータサブセット１４４に従って格納される。各データセットが移行されると、プロセスによる当該データセットへのアクセスができなくなるが、残りのデータセットへのアクセスは影響を受けない。プロセスによるデータセットへのアクセスは、データマイグレーションが完了すると、回復する。【選択図】図１
2020173840.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理マシンを備えるデータ処理システムによって実行される方法であって、
第１の物理マシンに、前記第１の物理マシンとは別の第２の物理マシン上で動作するデータ処理プロセス用のデータを格納するステップを含み、前記データを格納するステップは、互いに排他的である複数のデータサブセットに従って前記データを格納するステップを含み、前記方法は、さらに、
データサブセットごとに、前記データ処理プロセスが、マッピングにおいて、前記第１の物理マシン上の前記データサブセットのアドレス範囲を前記データ処理プロセスの論理アドレス範囲に論理的にマッピングするステップと、
前記論理アドレス指定に従って、前記データ処理プロセスによる前記データへの読出しアクセスおよび書込みアクセスを許可するステップと、
前記第１の物理マシン上に格納された第１のデータサブセットを、前記第１の物理マシンおよび前記第２の物理マシンとは別の第３の物理マシンに移行すると決定するステップと、前記決定するステップに応答して、
前記データ処理プロセスによる前記第１のデータサブセットへの読出しアクセスおよび書込みアクセスを、前記データ処理プロセスによるその他のデータサブセットへの読出しアクセスおよび書込みアクセスを維持したまま、ブロックするステップと、
前記第１のデータサブセットを前記第１の物理マシンから前記第３の物理マシンに移行して前記データサブセットを前記第３の物理マシン上に格納するステップと、
前記データ処理プロセスが、前記第３の物理マシン上の前記第１のデータサブセットのアドレス範囲を前記データ処理プロセスの前記論理アドレス範囲に論理的にマッピングすることによって、前記マッピングを更新するステップとを含む、方法。
【請求項２】
前記データ処理プロセスは、仮想マシンである、請求項１に記載の方法。
【請求項３】
前記第１の物理マシン上に格納された前記第１のデータサブセットを前記第３の物理マシンに移行すると決定するステップは、前記第１の物理マシンによって実行され、
前記仮想マシンによる前記第１のデータサブセットへの読出しアクセスおよび書込みアクセスを、前記仮想マシンによる前記その他のデータサブセットへの読出しアクセスおよび書込みアクセスを維持したままブロックするステップは、前記第１の物理マシンが、前記仮想マシンによる前記第１のデータサブセットへの読出しアクセスおよび書込みアクセスをブロックするステップを含む、請求項２に記載の方法。
【請求項４】
前記第１の物理マシンが、前記第１のデータサブセットの前記第３の物理マシンへの移行を前記仮想マシンに通知するステップをさらに含み、
前記第３の物理マシン上の前記第１のデータサブセットのアドレス範囲を前記仮想マシンの論理アドレス範囲に論理的にマッピングすることによって前記マッピングを更新するステップは、前記第１の物理マシンによる前記通知を前記仮想マシンが受信することに応答して実行される、請求項３に記載の方法。
【請求項５】
前記通知は、前記仮想マシンに、前記第１のデータサブセットにアクセスしないよう指示する、請求項４に記載の方法。
【請求項６】
前記第１のデータサブセットを前記第１の物理マシンから前記第３の物理マシンに移行して前記データサブセットを前記第３の物理マシン上に格納するステップは、前記第１のデータサブセットを前記第１の物理マシンから前記第３の物理マシンに直接送信するステップを含む、請求項４に記載の方法。
【請求項７】
前記第３の物理マシンが、前記仮想マシンに、前記第１のデータサブセットの前記第３
の物理マシンへの移行を通知するステップをさらに含み、
前記第３の物理マシン上の前記第１のデータサブセットのアドレス範囲を前記仮想マシンの論理アドレス範囲に論理的にマッピングすることによって前記マッピングを更新するステップは、前記仮想マシンが前記通知を受信することに応答して実行される、請求項３に記載の方法。
【請求項８】
前記第１の物理マシン上に格納された前記第１のデータサブセットを前記第３の物理マシンに移行すると決定するステップは、前記仮想マシンによって実行され、
前記第１のデータサブセットを前記第１の物理マシンから前記第３の物理マシンに移行して前記データサブセットを前記第３の物理マシン上に格納するステップは、
前記仮想マシンが、前記第１の物理マシンに、前記第１のデータサブセットを前記仮想マシンに送信するよう指示するステップと、
前記仮想マシンが、前記第１の物理マシンから受信した前記第１のデータサブセットを前記第３の物理マシンに送信するステップとを含む、請求項２に記載の方法。
【請求項９】
前記第１の物理マシンおよび前記第３の物理マシンは、前記仮想マシンのアドレスを参照しないで、前記複数のデータサブセットを格納する、請求項８に記載の方法。
【請求項１０】
前記仮想マシン用の前記第１のデータサブセットへの読出しアクセスおよび書込みアクセスを、前記第１の物理マシンから前記第３の物理マシンへの前記第１のデータサブセットの移行の後に回復させるステップをさらに含む、請求項２に記載の方法。
【請求項１１】
前記第１の物理マシン上に格納された前記第１のデータサブセットを前記第３の物理マシンに移行すると決定するステップは、前記第１の物理マシン、前記仮想マシン、および前記第３の物理マシンの外部のプロセスによって実行され、
前記第１のデータサブセットを前記第１の物理マシンから前記第３の物理マシンに移行して前記データサブセットを前記第３の物理マシン上に格納するステップは、
前記仮想マシンが、前記第１の物理マシンに、前記第１のデータサブセットを前記仮想マシンに送信するよう指示するステップと、
前記仮想マシンが、前記第１の物理マシンから受信した前記第１のデータサブセットを前記第３の物理マシンに送信するステップとを含む、請求項２に記載の方法。
【請求項１２】
前記複数のデータサブセットは、物理アドレス範囲に論理的にマッピングされたデータチャンクである、請求項１に記載の方法。
【請求項１３】
前記複数のデータサブセットは、データブロックである、請求項１に記載の方法。
【請求項１４】
互いに排他的である複数のデータサブセットに従ってデータを格納する第１の物理マシンと、
前記第１の物理マシンとは別の第２の物理マシンとを備え、前記第２の物理マシン上の仮想マシンは、前記第１の物理マシン上に格納された前記データへの読出しアクセスおよび書込みアクセスを有し、データサブセットごとに、マッピングにおいて、前記第１の物理マシン上の前記データサブセットのアドレス範囲を前記仮想マシンの論理アドレス範囲に論理的にマッピングし、
前記第１の物理マシン上に格納された第１のデータサブセットを、前記第１の物理マシンおよび前記第２の物理マシンとは別の第３の物理マシンに移行するとの決定に応答して、
前記第１のデータサブセットは、前記第１の物理マシンから前記第３の物理マシンに移行され、
前記移行中、前記仮想マシン用の前記第１のデータサブセットへの読出しアクセスお
よび書込みアクセスは、前記仮想マシンによるその他のデータサブセットへの読出しアクセスおよび書込みアクセスを維持したまま、ブロックされ、
前記第３の物理マシン上の前記第１のデータサブセットのアドレス範囲を前記仮想マシンの論理アドレス範囲に論理的にマッピングするように、前記マッピングが前記仮想マシンによって更新され、
前記仮想マシン用の前記第１のデータサブセットへの読出しアクセスおよび書込みアクセスは、前記第１の物理マシンから前記第３の物理マシンへの前記第１のデータサブセットの移行の後に回復する、システム。
【請求項１５】
前記第１の物理マシン上に格納された前記第１のデータサブセットを前記第３の物理マシンに移行するとの決定は、前記第１の物理マシンによって行われ、
前記仮想マシンによる前記第１のデータサブセットへの読出しアクセスおよび書込みアクセスをブロックすることは、前記第１の物理マシンによって行われる、請求項１３に記載のシステム。
【請求項１６】
前記第１の物理マシンは、前記仮想マシンに、前記第１のデータサブセットの前記第３の物理マシンへの移行を通知し、
前記第３の物理マシン上の前記第１のデータサブセットのアドレス範囲を前記仮想マシンの論理アドレス範囲に論理的にマッピングするように前記マッピングを更新することは、前記仮想マシンが前記通知を受信することに応答して行われる、請求項１４に記載のシステム。
【請求項１７】
前記通知は、前記仮想マシンに、前記第１のデータサブセットにアクセスしないよう指示する、請求項１５に記載のシステム。
【請求項１８】
前記第１の物理マシンから前記第３の物理マシンに前記第１のデータサブセットを移行することは、前記第１のデータサブセットを前記第１の物理マシンから前記第３の物理マシンに直接送信することを含む、請求項１５に記載のシステム。
【請求項１９】
さらに、
前記第３の物理マシンは、前記仮想マシンに、前記第１のデータサブセットの前記第３の物理マシンへの移行を通知し、
前記第３の物理マシン上の前記第１のデータサブセットのアドレス範囲を前記仮想マシンの論理アドレス範囲に論理的にマッピングするように前記マッピングを更新することは、前記仮想マシンが前記通知を受信することに応答して行われる、請求項１４に記載のシステム。
【請求項２０】
前記第１の物理マシン上に格納された前記第１のデータサブセットを前記第３の物理マシンに移行するとの決定は、前記仮想マシンによって行われ、
前記第１の物理マシンから前記第３の物理マシンに前記第１のデータサブセットを移行することは、
前記仮想マシンが、前記第１の物理マシンに、前記第１のデータサブセットを前記仮想マシンに送信するよう指示することと、
前記仮想マシンが、前記第１の物理マシンから受信した前記第１のデータサブセットを前記第３の物理マシンに送信することとを含む、請求項１３に記載のシステム。
【請求項２１】
前記第１の物理マシンおよび前記第３の物理マシンは、前記仮想マシンのアドレスを参照しないで、前記複数のデータサブセットを格納する、請求項１９に記載のシステム。
【請求項２２】
コンピュータ読み取り可能な命令を含むコンピュータプログラムであって、前記コンピ
ュータ読み取り可能な命令は、データ処理システムによって実行されると、前記データ処理システムに、請求項１に記載の方法を実行させる、コンピュータプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
背景
クラウドコンピューティングとは、データセンターまたは「サーバーファーム」に収容されるサーバの集まりが、計算資源およびデータストレージを必要に応じて遠隔のエンドユーザに提供するネットワークベースのコンピューティングを指す。いくつかのクラウドコンピューティングサービスは、ワードプロセッサおよび他の一般的に使われるアプリケーションなどのソフトウェアアプリケーションへのアクセスを、ウェブブラウザまたは他のクライアントサイドソフトウェアを通して当該アプリケーションとやり取りするエンドユーザに与える。ユーザの電子データファイルは、通常、ユーザのコンピューティングデバイス上ではなく、サーバーファームに格納される。ソフトウェアアプリケーションおよびユーザデータをサーバーファーム上で保持することによって、エンドユーザのコンピューティングデバイスの管理を簡素化できる。いくつかのクラウドコンピューティングサービスによって、エンドユーザは、仮想マシンにおいてソフトウェアアプリケーションを実行できるようになる。パブリッククラウドコンピューティング環境では、複数のユーザが仮想マシン（ＶＭ）を起動することができる。
【０００２】
特定の仮想マシン用のデータは、仮想マシンがインスタンス化される物理マシンとは別の、１台以上の物理マシン上に格納される場合が多い。負荷分割、サーバメンテナンスなど、さまざまな理由から、特定の物理マシン上に格納されるデータの一部またはすべては、別の物理マシンに移行（migrate）される可能性がある。データのライブマイグレーシ
ョン（live migration）とは、仮想マシン（または、非仮想処理エンティティ）がデータに対して任意に読出しおよび書込みを行っている間に、そのデータをある物理マシンから別の物理マシンに移動するプロセスである。
【発明の概要】
【課題を解決するための手段】
【０００３】
概要
本明細書は、データのライブマイグレーションに関する。
【０００４】
本明細書は、データに別の物理マシンからリモートアクセスしているサードパーティ処理装置（たとえば、仮想マシンまたはアプリケーション）に、そのデータへの安定した高性能アクセスを提供しつつ、あるストレージコンピュータから別のストレージコンピュータに当該データを移動するための体系的な方法およびシステムを説明する。
【０００５】
一般に、本明細書に記載の発明の主題の革新的な一態様は、方法で実施でき、当該方法は、第１の物理マシンに、第１の物理マシンとは別の第２の物理マシン上で動作するデータ処理プロセス用のデータを格納するアクションを含み、データを格納するアクションは、互いに排他的である複数のデータサブセットに従ってデータを格納するアクションを含み、方法は、さらに、データサブセットごとに、データ処理プロセスが、マッピングにおいて、第１の物理マシン上のデータサブセットのアドレス範囲をデータ処理プロセスの論理アドレス範囲に論理的にマッピングするアクションと、論理アドレス指定に従って、データ処理プロセスによるデータへの読出しアクセスおよび書込みアクセスを許可するアクションと、第１の物理マシン上に格納された第１のデータサブセットを、第１の物理マシンおよび第２の物理マシンとは別の第３の物理マシンに移行すると決定するアクションと、決定するアクションに応答して、データ処理プロセスによる第１のデータサブセットへの読出しアクセスおよび書込みアクセスを、データ処理プロセスによるその他のデータサブセットへの読出しアクセスおよび書込みアクセスを維持したまま、ブロックするアクシ
ョンと、第１のデータサブセットを第１の物理マシンから第３の物理マシンに移行してデータサブセットを第３の物理マシン上に格納するアクションと、データ処理プロセスが、第３の物理マシン上の第１のデータサブセットのアドレス範囲をデータ処理プロセスの論理アドレス範囲に論理的にマッピングすることによって、マッピングを更新するアクションとを含む。本態様の他の実施形態は、コンピュータの記憶装置上に符号化された当該方法のアクションを実行するように構成された対応するシステム、装置、およびコンピュータプログラムを含む。
【０００６】
一般に、本明細書に記載の発明の主題の別の態様は、システムで実施でき、当該システムは、互いに排他的である複数のデータサブセットに従ってデータを格納する第１の物理マシンと、第１の物理マシンとは別の第２の物理マシンとを備え、第２の物理マシン上の仮想マシンは、第１の物理マシン上に格納されたデータへの読出しアクセスおよび書込みアクセスを有し、データサブセットごとに、マッピングにおいて、第１の物理マシン上のデータサブセットのアドレス範囲を仮想マシンの論理アドレス範囲に論理的にマッピングし、第１の物理マシン上に格納された第１のデータサブセットを、第１の物理マシンおよび第２の物理マシンとは別の第３の物理マシンに移行するとの決定に応答して、第１のデータサブセットは、第１の物理マシンから第３の物理マシンに移行され、移行中、仮想マシン用の第１のデータサブセットへの読出しアクセスおよび書込みアクセスは、仮想マシンによるその他のデータサブセットへの読出しアクセスおよび書込みアクセスを維持したまま、ブロックされ、第３の物理マシン上の第１のデータサブセットのアドレス範囲を仮想マシンの論理アドレス範囲に論理的にマッピングするために、マッピングが仮想マシンによって更新され、仮想マシン用の第１のデータサブセットへの読出しアクセスおよび書込みアクセスは、第１の物理マシンから第３の物理マシンへの第１のデータサブセットの移行の後に回復する。本態様の他の実施形態は、コンピュータの記憶装置上に符号化された当該方法のアクションを実行するように構成された対応する方法、装置、およびコンピュータプログラムを含む。
【発明の効果】
【０００７】
本明細書に記載の発明の主題の特定の実施形態は、次の利点のうちの１つ以上を実現するように実施できる。この方法は、プレコピー型ライブマイグレーションおよびポストコピー型ライブマイグレーションなど、その他のライブマイグレーション方法よりも仮想マシンの性能が向上することを保証する。たとえば、プレコピー型ライブマイグレーションでは、データアドレス空間全体を１つの移行単位として考えるため、すべてのアドレス空間は、完全に移行元側に存在するか、完全に移行先側に存在するかのどちらかである。移行が進行している間にデータに「ライブ」アクセスできるようにするために、仮想マシンはデータを引き続き読出し／書込みすることができるが、ライブマイグレーションの受信側の物理マシン（複数可）に変更を再送できるように、書込みは追跡される。この再送には、読出し操作の帯域幅よりも多くの帯域幅、ネットワーク帯域幅、ＣＰＵ処理、および時間がかかる。さらに、使用中の仮想マシンは、通常、変更をネットワークで宛先に送信する速度よりも速い速度でデータを変更する。このような状況では、仮想マシンのアクセス速度を落とさなければならなくなり、性能が劣化してしまう。
【０００８】
ポストコピー型ライブマイグレーションを用いると、仮想マシンに移行先の物理マシンが知らされ、仮想マシンは、移行先の物理マシンにデータを要求する。移行先の物理マシンは、当該データが移行先の物理マシン上に格納されている場合、このデータを提供する。そうでない場合、移行先の物理マシンは、データが移行中の移行元の物理マシンからこのデータをフェッチした後、当該データを提供する。移行元の物理マシンからデータをフェッチしなければならない場合、仮想マシンのレイテンシが高くなる。移行先の物理マシンから移行元の物理マシンへのアクセスが多いと、全体的な帯域幅性能の大幅な劣化が生じてしまう。
【０００９】
しかしながら、後述する方法およびシステムは、これらの動作特性の一部またはすべてを解決し、データの格納および管理の技術分野に進歩をもたらす。移行データをＸＭＢのデータのチャンクまたはデータのページであり得るデータサブセットで処理することによって、当該移行は、プレコピー型ライブマイグレーションよりもはるかに粒度が細かくなる。移行中のデータサブセットには、仮想マシンによってアクセスすることができなくなる。したがって、書込みの追跡を行う必要はない。データサブセットが移行されると、これより先のすべてのアクセスが移行先に直接行くため、データサブセットが再送される必要はない。
【００１０】
仮想マシンは、移行中のデータサブセットにアクセスしていなければ、実質的には、性能に何ら影響を受けない。データサブセットのサイズが小さいほど、データサブセットが移行するのを待つ間に仮想マシンがブロックされる時間が減少する。逆に、データサブセットのサイズが大きいほど、ストレージマッピング用のメタデータの量が少なくなる。したがって、システム管理は、待ち時間とマッピングメンテナンスとのトレードオフを選択的に評価することによってデータサブセットのサイズを特定のアプリケーションに合わせればよく、その結果、このアプリケーションについての移行性能動作が向上する。
【００１１】
マイグレーション技術は、たしかに、オーバーヘッドのために多少の帯域幅を利用しているが、その利用量は、プレコピー型またはポストコピー型マイグレーションが利用する帯域幅と比較すると、少ない。これは、データマイグレーションの技術分野にとって、さらに別の進歩である。
【００１２】
移行中のデータサブセットへの読出しアクセスおよび書込みアクセスがブロックされるため、データサブセットへの変更を追跡するためのオーバーヘッドメカニズムを必要とせず、移行の目的でデータサブセットへの仮想マシンのアクセスを具体的に順序付けする必要もない。たとえば、データストアがディスクであり、ある位置への顕著な読出しがあるにもかかわらず、移行の目的で仮想マシンが同じ位置への書き込みを行う場合、読出しアクセスの結果は不定である。本明細書におけるシステムおよび方法は、移行中に特定の領域に仮想マシンがアクセスすることをブロックすることによって、同じ位置への同時アクセスが起こらないようにする。
【００１３】
後述するライブマイグレーションは、進行を維持したまま、いつでも停止することができる。これは、停止された場合は完全に初めからやり直さなければならないプレコピー型ライブマイグレーションとは対照的であり、また、仮想マシンへのアクセスが移行先に切り替わった後は停止できないポストコピー型ライブマイグレーションとも対照的である。
【００１４】
本明細書に記載の発明の主題の１つ以上の実施形態の詳細を、添付の図面および以下の明細書において説明する。発明の主題のその他の特徴、態様、および利点は、本明細書、図面、および請求の範囲から明らかになるだろう。
【図面の簡単な説明】
【００１５】
【図１】データがライブマイグレーションされ得るクラウドベース環境のブロック図である。
【図２】データのライブマイグレーションのための例示的なプロセスのフロー図である。
【図３】第１の物理マシンから第３の物理マシンにデータサブセットが直接移行される、データのライブマイグレーションの例示的なプロセスのフロー図である。
【図４】仮想マシンが実装される物理マシンを経由して、第１の物理マシンから第３の物理マシンにデータサブセットが移行される、データのライブマイグレーションの例示的なプロセスのフロー図である。
【発明を実施するための形態】
【００１６】
さまざまな図面における同じ参照番号および名称は、同じ要素を示す。
詳細な説明
概要
第１の物理マシンは、互いに排他的である複数のデータサブセットに従ってデータを格納する。このデータは、第１の物理マシンとは別の第２の物理マシン上で動作する仮想マシンなどのデータ処理プロセス用に格納される。データ処理プロセスは、第１の物理マシンに格納されたデータへの読出しアクセスおよび書込みアクセスを有し、データサブセットごとに、マッピングにおいて、第１の物理マシン上のデータサブセットのアドレス範囲をデータ処理プロセスの論理アドレス範囲に論理的にマッピングする。
【００１７】
第１の物理マシンからのデータを第３の物理マシンに移行する場合、以下のステップをとる。データは、データサブセットで移行される。移行中の（たとえば、第１の物理マシンから第３の物理マシンに「飛行中」の）データサブセットごとに、データ処理プロセスによるデータサブセットへの読出しアクセスおよび書込みアクセスがブロックされる。しかしながら、データ処理プロセスによるデータマイグレーション中ではないその他のデータサブセットへの読出しアクセスおよび書込みアクセスは維持される。このように、データ処理プロセスは、第１の物理マシンに格納されたデータの大半に今まで通りアクセスすることができる。第１の物理マシンから第３の物理マシンへの特定のデータサブセットの移行に応答して、データ処理プロセスによってマッピングが更新される。具体的には、第３の物理マシン上の特定のデータサブセットのアドレス範囲が、データ処理プロセスの論理アドレス範囲にマッピングされる。よって、移行前の特定のデータサブセットのマッピングが、更新後のマッピングに置き換えられる。データ処理プロセス用の第１のデータサブセットへの読出しアクセスおよび書込みアクセスは、第１の物理マシンから第３の物理マシンへの第１のデータサブセットの移行後に回復する。その後、データ処理プロセスは、移行されたデータサブセットに格納されたデータを必要とするとき、第３の物理マシンにアクセスする。
【００１８】
システム要件によっては、上記プロセスに対するいくつかの変形例が有利であり得る。たとえば、データ処理プロセスは、データサブセットの移行を知らされなくてもよい。データサブセットに格納されたデータへのアクセスをデータ処理プロセスが第１の物理マシンに要求する場合、データ処理プロセスは、データサブセットが第３の物理マシン上に現在格納されている（または、第３の物理マシンに現在移行中である）ことを知らせる応答を受信する。データサブセットが現在移行中である場合、第３の物理マシンは、移行が完了するまでデータサブセットへのアクセスをブロックしてもよい。
【００１９】
これに代えて、データ処理プロセスは、移行について事前に知らされてもよく、移行の予想完了時間を計算してもよい。次に、データ処理プロセスは、予想完了時間まで、データを要求するのを待ってもよい。
【００２０】
データサブセットは、第１の物理マシンから第３の物理マシンに直接送信されてもよく、その後、移行が完了すると、第１の物理マシンまたは第３の物理マシンの一方がデータ処理プロセスにデータサブセットの新しい位置を知らせる。しかしながら、これに代えて、データサブセットは、中間として機能するデータ処理プロセスを経由してもよく、データ処理プロセスは、移行に対して責任を負う。これによって、データ処理プロセスは、データがどこにあるかについての最新の情報をほぼリアルタイムで知ることができるようになる。
【００２１】
さらに別の実装形態において、データ処理プロセスは移行を制御するが、データサブセットは、一方のストレージマシンから他方のストレージマシンに直接送信される。たとえば、仮想マシンは、「アドレス範囲転送」メッセージを第１ストレージマシンに送信し、第１ストレージマシンに、アドレス範囲転送によって指定された特定のアドレス範囲を読み込み、そのデータを第２ストレージマシンの別のアドレス範囲に書込むよう指示する。ストレージマシンは、ステートレスであるが、データサブセットは、仮想マシンから送信された命令によって、第１ストレージマシンから第２ストレージマシンに直接送信される。これによって、データをＶＭに経由させる場合よりも、データ転送が少なくなり、これは、多くのストレージマシンを要する場合、よりスケーラブルである。
【００２２】
最後に、データサブセットは、さまざまな異なるデータ管理技術によって実現することができる。たとえば、データサブセットは、ページサイズまたはブロックサイズに関係ない、たとえば、１ＭＢ、１０ＭＢ、さらには、１ＧＢなどの固定サイズのメモリであってもよい。これに代えて、データサブセットは、ブロックレベルまたはページレベルで実現されてもよく、Ｘ未満のすべてのアドレスが第１の物理マシン上に存在し、Ｘ以上のすべてのアドレスが第３の物理マシン上に存在するように、「ウォーターマーク」が利用される。Ｘの値は、データが移行されると、データ処理プロセスにおいて更新される。これによって、データ処理プロセスが論理アドレスをデータサブセットにマッピングすることをなくすことができ、代わりに、Ｘというウォーターマーク値に従って、データを格納する物理マシンを区分けできる。
【００２３】
これらの特徴および他の特徴について、以下により詳細に説明する。
例示的な動作環境
図１は、データがライブマイグレーションされ得るクラウドベース環境１００のブロック図である。以下の明細書において、仮想マシンの例示的な実装形態を説明する。しかしながら、後述するシステムおよび方法によって、クライアントベースのストレージを有するクラウドベースアプリケーションまたはクラウドベースのストレージを有するクラウドベースアプリケーションなど、データ処理プロセスのうちのいくつかのデータ処理プロセス用データのデータマイグレーションが容易になってもよい。
【００２４】
クラウドベース環境１００における物理マシンであるホストマシン１１０は、ラックマウント式サーバまたは他のコンピューティングデバイスなど、１つ以上のデータ処理装置を含めることができる。こちらも物理マシンであるストレージマシン１４０および１５０は、ホストマシン１１０上で実行するデータ処理プロセス用のデータを格納する。また、ストレージマシン１４０および１５０は、ラックマウント式サーバまたは他のコンピューティングデバイスなど、１つ以上のデータ処理装置であってもよく、通常、ネットワーク１０２を通して通信を行うホストマシン１１０によるクラウドベースへのアクセス用データの格納を容易にするように設計される。
【００２５】
ホストマシン１１０は、ホストマシンのリソースを管理するホストオペレーティングシステム１１２を実行する。この例において、ホストオペレーティングシステム１１２は、基礎となるホストマシンハードウェアを仮想化して１台以上の仮想マシン１２０の同時実行を管理するソフトウェアを実行する。図１に示すように、ホストオペレーティングシステム１１２は、１台の仮想マシン１２０を管理する。ホストマシンは、一般に、さらに多くの台数の仮想マシンを管理することができる。しかしながら、その台数は、ホストマシンの物理リソースに基づいて限定され得る。わかりやすくするために、１台の仮想マシン１２０のみを図１に示す。
【００２６】
仮想マシン１２０は、シミュレートされたバージョンの基礎となるホストマシンハードウェアを使用する。当該ホストマシンハードウェアは、仮想ハードウェア１２２と称され
得る。仮想ハードウェア１２２が実行するソフトウェアは、ゲストオペレーティングシステム１２４およびゲストアプリケーション１２６など、ゲストソフトウェアと称され得る。いくつかの実装形態において、ゲストソフトウェアは、ゲストソフトウェアが仮想ハードウェアによって実行されているのかどうか、物理ホストマシンによって実行されているのかどうかを判断できない。ホストマシンのマイクロプロセッサ（複数可）は、ゲストソフトウェア命令をコードの書き直し、再コンパイル、または命令エミュレーションを必要としないでホストマシンのマイクロプロセッサ上で直接実行させることによって仮想ハードウェアがソフトウェアアプリケーションを効率的に実行することを可能にするためのプロセッサレベルのメカニズムを含み得る。
【００２７】
ホストマシン１２０には、基礎となるホストオペレーティングシステム１１２の仮想メモリから、仮想メモリページのセットが割り当てられ、かつ、仮想マシン上で実行するゲストソフトウェアが使用するための１つ以上の仮想ディスクドライブから、仮想ディスクブロックが割り当てられる。実際の物理ストレージは、ホストマシン１１０上にある必要はなく、図示する例において、当該ストレージは、ストレージマシン１４０によって実現される。
【００２８】
いくつかの実装形態において、仮想ディスクロックは、ストレージマシンが管理する物理ディスクドライブ上に割当てられ、ネットワーク１０２を通してホストマシン１１０と通信する。仮想マシン１２０にはネットワークアドレスが割り当てられ得る。当該ネットワークアドレスによって、ネットワークアドレスのそれぞれのプロセスは、ネットワーク１０２を介して他のプロセスと通信できる。
【００２９】
まず、仮想マシン１２０用データのすべてがストレージマシン１４０上に格納されていると想定する。この仮想マシン１２０用データを、ゲストデータ１４２と称する。ゲストデータ１４２は、最初に１台の物理マシン上に格納されている必要はなく、代わりに、最初に複数のストレージマシン間で格納され得る。しかしながら、説明をわかりやすくするために、この例の起点は、１台のストレージマシンである。
【００３０】
ゲストデータ１４２は、互いに排他的である複数のデータサブセットに従って格納される。図１に示すように、ゲストデータ１４２は、データサブセット１４４に格納され、各データサブセットは、例示的に、０〜ｎまでのインデックスのうちの１つによって索引付けされる。マッピングデータ１２８は、ストレージマシン１４０上のデータサブセットのアドレス範囲を仮想マシン１２０の論理アドレス範囲に論理的にマッピングする。したがって、マッピングデータ１２８を使用することにより、仮想マシン１２０は、論理アドレス空間を、特定の物理マシン上に格納された特定のデータサブセットにマッピングできる。最後に、マッピングデータ１２８は、仮想マシン１２０内にあると示されているが、マッピングデータ１２８は、ホストオペレーティングシステム１１２によって保持されてもよい。
【００３１】
ゲストデータ１４２の一部またはすべてを１台以上の他のストレージマシンに移行させ得るイベントが発生する場合がある。このようなイベントは、ストレージマシン１４０がサービスのためにオフラインになる準備をすること（ストレージマシンに格納されたデータすべての移行を必要とする）、負荷分散処理、（ストレージマシンに格納されたデータの少なくとも一部の移行を必要とする）、またはＱｏＳ（quality of service）要件を満たさないこと（ストレージマシンに格納されたデータの少なくとも一部の移行を必要とし得る）を含み得る。後述するが、いくつかの状況において、移行が必要であるときをストレージマシンが判定してもよく、他の状況において、移行が必要であるときを仮想マシン（または、ホストマシン）が判定してもよい。全体を上述し、さらに詳細を後述するように、さらに他の状況において、移行が必要であるときを、仮想マシン、ホストマシン、お
よびストレージマシンの外部のプロセスまたはエンティティが判定することもでき、仮想マシンが移行を制御することもでき、ストレージマシンが移行を制御することもできる。
【００３２】
図１において引き出し線２の矢印で示す、データのライブマイグレーションのための全体的なプロセスを、図２を参照して説明する。物理ストレージマシンが移行を部分的に（または、完全に）制御する１つの例示的なプロセスを、図３を参照して説明し、図１では、引き出し線３Ａおよび３Ｂの矢印と組み合わせて、引き出し線２の矢印で示す。最後に、仮想マシン（または、ホストマシン）が移行を部分的に（または、完全に）制御する例示的なプロセスを、図４を参照して説明し、図１では、引き出し線４Ａおよび４Ｂの矢印と組み合わせて、引き出し線２の矢印で示す。
【００３３】
わかりやすくするために、後述する移行の例では、データを１台の別の物理マシン、すなわち、ストレージマシン１５０に移行することを詳しく述べる。しかしながら、ゲストデータが複数のストレージマシン上に格納されている場合、ゲストデータは、ストレージマシンのうちの１台から、ゲストデータのうちのいくつかが現在格納されている別のストレージマシン、または、仮想マシン１２０用のゲストデータを現在格納していない新しいストレージマシンに移行されてもよい。
【００３４】
第１の物理マシンから第２の物理マシンへのライブマイグレーション
図２は、データのライブマイグレーションのための例示的なプロセス２００のフロー図である。プロセス２００は、図１の物理マシン１１０、１４０、および１５０において実施されてもよい。
【００３５】
プロセス２００は、第１の物理マシンに、第１の物理マシンとは別の第２の物理マシン上で動作する仮想マシン用のデータを格納する（２０２）。たとえば、図１に示すように、データ１４２は、互いに排他的であるデータサブセットに従って格納される。データ１４２の「データサブセット」は、ブロック、セクタ、またはページなど、定義済みのデータ構成体であり得、１ＫＢ、１ＭＢ、１０ＭＢ、さらには、１ＧＢの量のデータなど、任意に定義されたデータ単位であってもよい。前者の場合、ブロックまたはページは、仮想マシンのために仮想的に実現されるサイズのブロックまたはページであってもよく、または、使用される物理ハードウェアによって決まる物理サイズでのブロックまたはページあってもよい。
【００３６】
プロセス２００は、データサブセットごとに、仮想マシンによって、第１の物理マシン上のデータサブセットのアドレス範囲を仮想マシンの論理アドレス範囲に論理的にマッピングする（２０４）。たとえば、仮想マシン（または、ホストマシン）は、仮想マシンから見てデータが存在しているように見えるアドレスを、データが実際に存在する物理アドレスに論理的にマッピングする。第１マシン上のデータ処理プロセスにおける論理アドレスを第１マシンとは別の第２マシン上の物理アドレスにマッピングできる任意の適したアドレス変換処理を使用することができる。
【００３７】
データサブセットが任意のサイズである後者の実装形態の場合、このサイズを決定する際に管理者によっていくつかの要因が考慮されてもよい。データサブセットのサイズが小さいほど、より多くのマッピングデータ１２８を必要とする。しかしながら、データサブセットのサイズが減少すると、移行中にデータサブセットが飛行中である時間が減るため、データサブセットが小さいほど、仮想マシン１２０が移行中のデータサブセットにアクセスしようとする際に生じ得る読出し遅延および書込み遅延が減少する傾向にある。
【００３８】
いくつかの実装形態において、仮想マシン１２０またはホストマシン１１０は、移行によるデータアクセスのブロック率を、最大ブロック率閾値と比較してもよい。ブロック率
が最大ブロック率閾値を上回る場合、仮想マシンによって（または、データを格納しているストレージマシンによって）メモリ管理プロセスが呼び出され、データサブセットのサイズが減らされる。その後、データアクセスの新しいブロック率が決定される。このプロセスは、ブロック率が最大ブロック率閾値を下回るまで続けられてもよい。
【００３９】
他の実装形態において、仮想マシン１２０またはホストマシン１１０は、マッピングデータ１２８のサイズから導き出されたサイズ評価指標値を、最大サイズ閾値と比較してもよい。サイズ評価指標値が最大サイズ閾値を上回る場合、仮想マシンによって（または、データを格納しているストレージマシンによって）呼び出されたメモリ管理プロセスは、論理マッピングまたは物理マッピングのために必要なメタデータの量が減少するように、データサブセットのサイズを大きくしてもよい。
【００４０】
さらに他の実装形態において、データアクセスのブロック率およびマッピングデータ１２８のサイズから導き出されたサイズ評価指標値は、両方とも、データサブセットのサイズを管理するために利用されてもよい。２つの性能上の問題点の相対的な重要性を示す重みに基づいて、トレードオフを判断してもよい。
【００４１】
プロセス２００は、論理アドレス指定に従って、仮想マシンよるこのデータへの読出しアクセスおよび書込みアクセスを許可する（２０６）。たとえば、データサブセットが移行中ではない時、仮想マシン１２０は、ゲストデータ１４２のすべてのデータサブセットにアクセスすることができる。
【００４２】
プロセス２００は、第１の物理マシン上に格納された第１のデータサブセットを、第１の物理マシンおよび第２の物理マシンとは別の第３の物理マシンに移行すると決定する（２０８）。たとえば、ストレージマシン１４０上に格納されたデータの一部またはすべてが移行されてもよい。この場合もやはり、さまざまなイベントが、このデータの一部またはこのデータのすべての移行を必要とする可能性がある。この例において、図１において鎖線で示すデータサブセットのインデックス２が示す１つのデータサブセットが、ストレージマシン１４０からストレージマシン１５０に移行されると想定する。
【００４３】
プロセス２００は、仮想マシンによる第１のデータサブセットへの読出しアクセスおよび書込みアクセスをブロックし、仮想マシンによるその他のデータサブセットへの読出しアクセスおよび書込みアクセスを維持する（２１０）。いくつかの実装形態において、このブロック処理は、ストレージマシン１４０によって実行されてもよい。ストレージマシン１４０は、移行中のデータサブセットに格納されたデータに仮想マシン１２０がアクセスできないように、仮想マシン１２０に通知を送信してもよく、その後、仮想マシン１２０は、矢印３Ａおよび３Ｂがそれぞれ示すようにストレージマシン１４０またはストレージマシン１５０のいずれかから移行が完了したとの通知を受信するまで、読出しまたは書込み動作を差し控えてもよい。
【００４４】
これに代えて、ストレージマシン１４０は、仮想マシン１２０に移行を知らせなくてもよく、仮想マシン１２０は、移行が完了した場合にのみ通知を受信する。データサブセットが飛行中の時に仮想マシン１２０がデータサブセットからのデータを要求した場合、仮想マシン１２０は、移行を通知され、および／または、第２ストレージマシン１５０にリダイレクトされてもよい。
【００４５】
上記の例示的な実装形態において、データサブセットは、ストレージマシン１４０からストレージマシン１５０に直接移行され、ホストマシン１１０を経由しない。しかしながら、他の実装形態において、データサブセットは、ホストマシン１１０を経由して転送されてもよい。たとえば、仮想マシン１２０がデータサブセットの移行を処理する実装形態
において、データサブセットは、仮想マシンに転送された後、仮想マシン１２０からストレージマシン１５０に送信される。これは、図１において、矢印２が示す移行の実際のデータ経路を示す矢印４Ａおよび４Ｂによって示される。
【００４６】
仮想マシン１２０（または、ホストマシン１１０）は、利用可能な複数の異なるストレージマシンのうちの１つから第２ストレージマシン１５０を選択してもよい。この後者の実装形態によって、仮想マシンまたはその他のストレージマシンのアドレスを参照しないで、かつ、移行の状態を追跡して自身が「移行状態」であると確認する必要のない、データサブセットを格納する「ステートレス」なストレージマシンが容易になる。その代わりに、データストレージの管理は、仮想マシン１２０によって処理される。
【００４７】
プロセス２００は、第１の物理マシンから第３の物理マシンに第１のデータサブセットを移行して当該データサブセットを第３の物理マシン上に格納する（２１２）。上述したように、データサブセットは、ストレージマシン１４０からストレージマシン１５０に直接送信されてもよく、または、仮想マシン１２０によって第１ストレージマシン１４０からフェッチされてから、第２ストレージマシン１５０に送信されてもよい。
【００４８】
プロセス２００は、第３の物理マシン上の第１のデータサブセットのアドレス範囲を仮想マシンの論理アドレス範囲に論理的にマッピングすることによってマッピングを更新する（２１４）。マッピングを更新するために必要なデータは、使用する実装形態によって異なる。たとえば、仮想マシンまたはホストマシンが移行を制御する実装形態では、仮想マシンまたはホストマシンが、仮想マシンがデータサブセットを送信した先のストレージマシンのアドレスに基づいて、マッピングデータを更新できる。ストレージマシンがデータサブセットの移行を制御する実装形態では、仮想マシンまたはホストマシンが、データサブセットが送信された先のストレージマシンのアドレスを示す仮想マシンが受信した通知に基づいて、マッピングデータを更新できる。
【００４９】
ストレージマシン制御を条件とするライブマイグレーション
図３は、データサブセットが第１の物理マシンから第３の物理マシンに直接移行される、データのライブマイグレーションのための例示的なプロセス３００のフロー図である。プロセス３００は、ストレージマシン１４０および１５０のうちの一方または両方において実施されてもよい。
【００５０】
プロセス３００は、第１の物理マシン上に格納された第１のデータサブセットを第３の物理マシンに移行すると決定する（３０２）。たとえば、ストレージマシン１４０は、メンテナンスのためにオフラインになり、ストレージマシンに格納されたすべてのデータを移行する必要があると判断する、または、ストレージマシン１４０が記憶容量の限界に達してしまい、ストレージマシンに格納されるデータの一部を移行する必要があると判断してもよい。
【００５１】
プロセス３００は、仮想マシンによる第１のデータサブセットへの読出しアクセスおよび書込みアクセスをブロックし、仮想マシンによるその他のデータサブセットへの読出しアクセスおよび書込みアクセスを維持する（３０４）。たとえば、ストレージマシン１４０は、移行中のデータサブセットを知らせる通知であって、データサブセットへの書き込みまたはデータサブセットの読み込みを移行成功が通知されるまで行わないよう仮想マシンに指示する通知を仮想マシンに送信する。これは、図１の矢印３Ａで示される。
【００５２】
プロセス３００は、第１の物理マシンから第３の物理マシンに第１のデータサブセットを直接移行する（３０６）。たとえば、ストレージマシン１４０は、ホストマシン１１０を中間として介さずに、第２ストレージマシン１５０にデータサブセットを送信する。
【００５３】
プロセス３００は、移行が完了したことを仮想マシンに通知し、第１のデータサブセットへの読出しアクセスおよび書込みアクセスを許可する（３０８）。たとえば、第１ストレージマシン１４０は、データサブセットを無事受信したとの受信確認を第２ストレージマシン１５０から受信してもよく、次に、データサブセットの移行の通知および第２ストレージマシン１５０のアドレスを仮想マシン１２０に送信してもよい。次に、仮想マシン１２０は、そのマッピングデータ１２８を更新し、ストレージマシン１５０上の新しい位置において当該データサブセットへのアクセスを再開してもよい。これに代えて、第２ストレージマシン１５０は、データサブセットを無事受信した後、データサブセットの移行の通知および第２ストレージマシン１５０のアドレスを仮想マシン１２０に送信してもよい。次に、仮想マシン１２０は、そのマッピングデータ１２８を更新し、ストレージマシン１５０上の新しい位置において当該データサブセットへのアクセスを再開してもよい。
【００５４】
仮想マシン制御またはホストマシン制御を条件とするライブマイグレーション
図４は、仮想マシンが実装される物理マシンを経由してデータサブセットが第１の物理マシンから第３の物理マシンに移行される、データのライブマイグレーションの例示的なプロセス４００のフロー図である。このプロセスは、仮想マシン１２０（または、ホストマシン１１０）において実施されてもよい。
【００５５】
プロセス４００は、第１の物理マシン上に格納された第１のデータサブセットを第３の物理マシンに移行すると決定する（４０２）。たとえば、仮想マシン１２０は、ストレージマシン１４０のレイテンシが高いと判断してもよい。または、負荷分散作業が必要であると判断してもよい。または、第１ストレージマシン１４０がメンテナンスのためにオフラインになり、仮想マシン１２０用に格納されたデータを移行する必要があるとの通知を第１ストレージマシン１４０から受信してもよい。
【００５６】
プロセス４００は、第１の物理マシンに、第１のデータサブセットを第３の物理マシンに移行するよう指示する（４０４）。たとえば、仮想マシン１２０は、ストレージマシンに、データサブセットをストレージマシン１５０に移行するよう指示する。また、仮想マシン１２０は、移行が完了するまでデータサブセットにアクセスしない。
【００５７】
いくつかの実装形態において、矢印３Ａおよび３Ｂに示すように、仮想マシン１２０は、第１ストレージマシン１４０からデータサブセットを受信し、当該データサブセットをストレージマシン１５０に送信してもよい。他の実装形態において、仮想マシン１２０は、ストレージマシン１４０に、データサブセットをストレージマシン１５０に直接送信するよう指示してもよい。
【００５８】
プロセス４００は、第３の物理マシン上の第１のデータサブセットのアドレス範囲を仮想マシンの論理アドレス範囲に論理的にマッピングすることによってマッピングを更新する（４０６）。たとえば、ストレージマシン１５０からの受信確認メッセージから移行成功の通知を受信すると、仮想マシン１２０は、マッピングデータ１２８を更新し、データサブセットへのアクセスを回復させる。
【００５９】
実装形態のさらなる詳細
上述した例示的なシステムおよびプロセスに対する変形例を実装して、追加の特徴を実現してもよい。たとえば、仮想マシンは、移行成功の通知を待つ代わりに、移行の予想完了時間を計算してもよい。予想時間が経過した後、仮想マシンは、データサブセットへのアクセスを試みてもよい。移行が失敗した場合、仮想マシンは、さらに少しの時間待機してもよく、または、代わりに、メモリエラーイベントを呼び出してもよい。
【００６０】
他の実装形態において、データサブセットは、ブロックレベルまたはページレベルで実現されてもよく、Ｘ未満のすべてのアドレスが第１の物理マシン上に存在し、Ｘ以上のすべてのアドレスが第３の物理マシン上に存在するように、「ウォーターマーク」が利用される（または、３台以上の物理マシンにデータが格納されている場合、隣接するアドレス範囲を物理マシンごとに使用してもよい）。Ｘの値は、データが移行されると、データ処理プロセスにおいて更新される。これによって、データ処理プロセスが論理アドレスをデータサブセットにマッピングすることをなくすことができ、代わりに、Ｘというウォーターマーク値に従って、データを格納する物理マシンの区分けをマッピングすることができる。したがって、マッピングデータ１２８を実現するためのメタデータ要件が下がる。
【００６１】
他の実装形態において、プレコピー型およびポストコピー型マイグレーション技術をデータサブセット単位で利用してもよい。この実装形態によって、移行中にシステムの複雑性を犠牲にして仮想マシンが待機する時間を減らすまたはなくすことができる。
【００６２】
上記の例を、クラウドベースシステムを背景に、またはデータセンターにおいて説明した。しかしながら、本明細書に記載のシステムおよび方法は、格納データを、そのデータにアクセスするアプリケーションまたは仮想マシンが動作しているコンピュータからリモート管理する任意のシステムにおいて利用することができる。
【００６３】
本明細書に記載の発明の主題および動作の実施形態は、本明細書に開示の構造およびそれらの構造的均等物を含む、デジタル電子回路で実現され得、またはコンピュータソフトウェア、ファームウェア、もしくはハードウェア、またはそれらのうちの１つ以上の組み合わせで実現され得る。本明細書に記載の発明の主題の実施形態は、１つ以上のコンピュータプログラムとして、すなわち、データ処理装置によって実行するためにコンピュータ記憶媒体上に符号化されたコンピュータプログラム命令の１つ以上のモジュールとして、または、データ処理装置の動作を制御するためのコンピュータプログラム命令の１つ以上のモジュールとして実現することができる。
【００６４】
コンピュータ記憶媒体は、コンピュータ読み取り可能な記憶装置、コンピュータ読み取り可能な記憶基板、ランダムもしくはシリアルアクセスメモリアレイまたはメモリ素子、またはそれらのうちの１つ以上の組み合わせであり得る、またはそれらに含まれ得る。また、コンピュータ記憶媒体は、伝播信号ではないが、人為的に生成された伝播信号に符号化されたコンピュータプログラム命令の送信元または宛先であり得る。コンピュータ記憶媒体は、１つ以上の別々の物理コンポーネントまたは媒体（たとえば、複数のＣＤ、ディスク、または他の記憶装置）であり得る、またはそれらに含まれ得る。
【００６５】
本明細書に記載の動作は、１つ以上のコンピュータ読み取り可能な記憶装置上に格納されたデータまたは他の送信元から受信したデータに対してデータ処理装置が行う動作として実現することができる。
【００６６】
用語「データ処理装置」は、一例として、プログラマブルプロセッサ、コンピュータ、ＳｏＣ（System On a Chip）、または複数のそれらもしくはそれらの組み合わせを含む、上述のデータを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。装置は、専用の論理回路、たとえば、ＦＰＧＡ（Field Programmable Gate Array）また
はＡＳＩＣ（特定用途向け集積回路）を含み得る。また、装置は、ハードウェアに加えて、当該コンピュータプログラムの実行環境を作るコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォーム実行時環境、仮想マシン、またはそれらのうちの１つ以上の組み合わせを構成するコードを含み得る。装置および実行環境は、ウェブサービス、分散コンピューティングインフラストラクチャ、およびグリッド・コンピューティングインフラス
トラクチャなど、さまざまな異なるコンピューティングモデル・インフラストラクチャを実現できる。
【００６７】
コンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる）は、コンパイラ言語またはインタプリタ言語、宣言型言語または手続き型言語など、任意の形式のプログラミング言語で書くことができ、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境で使用するのに適したその他の構成単位としてなど、任意の形態でデプロイされ得る。コンピュータプログラムは、ファイルシステムにおけるファイルに相当し得るが、そうである必要はない。プログラムは、他のプログラムまたはデータを保持するファイルの一部（たとえば、マークアップ言語文書に格納された１つ以上のスクリプト）、当該プログラムに専用の１つのファイル、または複数の連携ファイル（たとえば、１つ以上のモジュール、サブプログラム、またはコードの部分を格納するファイル）に格納され得る。コンピュータプログラムは、１つコンピュータ上で、または、１つのサイトに位置するもしくは複数のサイト間で分散されて通信ネットワークによって互いに接続された複数のコンピュータ上で実行されるようデブロイされ得る。
【００６８】
本明細書に記載のプロセスおよび論理フローは、入力データを操作して出力を生成することによってアクションを行うために１つ以上のコンピュータプログラムを１つ以上のプログラム可能なプロセッサが実行することによって実行され得る。また、プロセスおよび論理フローは、専用の論理回路、たとえば、ＦＰＧＡ（Field Programmable Gate Array
）またはＡＳＩＣ（特定用途向け集積回路）によって実行され得、装置は、このような専用の論理回路として実現され得る。
【００６９】
コンピュータプログラムの実行に適したプロセッサは、一例として、汎用マイクロプロセッサおよび特定用途向けマイクロプロセッサの両方、ならびに任意の種類のデジタルコンピュータの１つ以上のプロセッサを含む。一般に、プロセッサは、ＲＯＭ（Read-Only Memory）、ＲＡＭ（Random Access Memory）、またはその両方から命令およびデータを受け取る。コンピュータの必須要素は、命令に従ってアクションを行うためのプロセッサと、命令およびデータを格納するための１つ以上のメモリ素子である。また、一般に、コンピュータは、データを格納するための１つ以上の大容量記憶装置、たとえば、磁気ディスク、光磁気ディスク、または光ディスクを備える、または、このような１つ以上の大容量記憶装置と操作可能に接続されて、データの受信、送信、もしくはその両方を行う。しかしながら、コンピュータは、このようなデバイスを有する必要はない。また、コンピュータは、別のデバイス、たとえば、一例を挙げると、携帯電話、ＰＤＡ（Personal Digital
Assistant）、携帯オーディオプレーヤもしくはビデオプレーヤ、ゲーム機、ＧＰＳ（Global Positioning System）受信機、またはポータブル記憶装置（たとえば、ＵＳＢ（Universal Serial Bus）フラッシュドライブ）に組み込まれ得る。コンピュータプログラム
命令およびデータを格納するのに適したデバイスは、全ての形態の不揮発性メモリ、媒体、およびメモリ素子を含み、一例として、ＥＰＲＯＭ、ＥＥＰＲＯＭ、およびフラッシュメモリ素子などの半導体メモリ素子、内蔵ハードディスクまたはリムーバブルディスクなどの磁気ディスク、光磁気ディスク、ならびにＣＤ−ＲＯＭおよびＤＶＤ−ＲＯＭディスクなどが挙げられる。プロセッサおよびメモリは、専用の論理回路によって補われ得、または、専用の論理回路に内蔵され得る。
【００７０】
ユーザとのやり取りを行うために、本明細書に記載の本発明の主題の実施形態は、ブラウン管（ＣＲＴ）モニタまたは液晶ディスプレイ（ＬＣＤ）モニタなど、ユーザに情報を表示するための表示装置と、ユーザがコンピュータに入力を行えるキーボードおよびマウスまたはトラックボールなどのポインティングデバイスとを有するコンピュータ上に実現
され得る。その他の種類のデバイスを使用してユーザとやり取りを行うこともできる。たとえば、ユーザに返されるフィードバックは、視覚フィードバック、聴覚フィードバック、または触覚フィードバックなど、任意の形式の感覚フィードバックで有り得、ユーザからの入力は、音響入力、音声入力、触覚入力を含む任意の形式で受信され得る。これに加えて、コンピュータは、ユーザが使用する機器との間で文書を送受信することによって、たとえば、ユーザのユーザデバイス上のウェブブラウザから受けた要求に応答してこのウェブブラウザにウェブページを送信することによって、ユーザとやり取りすることができる。
【００７１】
本明細書に記載の本発明の主題の実施形態は、データサーバなど、バックエンド・コンポーネントを備えるコンピュータシステム、アプリケーションサーバなど、ミドルウェア・コンポーネントを備えるコンピュータシステム、本明細書に記載の本発明の主題の実装形態とユーザがやり取りできるグラフィカルユーザインターフェースまたはウェブブラウザを有するユーザ・コンピュータなど、フロントエンド・コンポーネントを備えるコンピュータシステム、または、１つ以上のこのようなバックエンド・コンポーネント、ミドルウェア・コンポーネント、もしくはフロントエンド・コンポーネントの任意の組み合わせを備えるコンピュータシステムで実現され得る。システムの構成要素は、通信ネットワークなど、デジタルデータ通信の任意の形態または媒体によって互いに接続され得る。通信ネットワークとして、ローカルエリアネットワーク（「ＬＡＮ」）およびワイドエリアネットワーク（「ＷＡＮ」）、インターネットワーク（たとえば、インターネット）、ならびにピアツーピアネットワーク（たとえば、アドホック・ピアツーピアネットワーク）などが挙げられる。
【００７２】
コンピュータシステムは、ユーザとサーバとを含めることができる。ユーザおよびサーバは、一般に、互いから離れており、通常、通信ネットワークを通じてやり取りを行う。ユーザとサーバとの関係は、それぞれのコンピュータ上で動作し互いにユーザとサーバとの関係を有するコンピュータプログラムによって成り立つ。いくつかの実施形態において、サーバは、（たとえば、ユーザデバイスとやり取りしているユーザにデータを表示する、またはこのユーザからのユーザ入力を受信する目的のために、）ユーザデバイスにデータ（たとえば、ＨＴＭＬページ）を送信する。ユーザデバイスにおいて生成されたデータ（たとえば、ユーザインタラクションの結果）は、サーバにおいて、ユーザデバイスから受信され得る。
【００７３】
本明細書は、実装形態の多くの具体的な詳細を含むが、これらは、いずれの特徴の範囲または請求の範囲を限定するものとして解釈されるべきではなく、むしろ、特定の実施形態に特有の特徴の説明であると解釈されるべきである。また、別々の実施形態に関連して本明細書に記載したいくつかの特徴は、１つの実施形態に組み合わせて実現され得る。その逆に、１つの実施形態に関連して記載されたさまざまな特徴は、複数の実施形態に別々に、または任意の適した部分的な組み合わせで実現され得る。また、特徴は、いくつかの組み合わせで動作するものとして上述され、最初にそのように主張されているかもしれないが、主張された組み合わせからの１つ以上の特徴は、場合によっては、その組み合わせから削除することができ、主張された組み合わせは、部分的な組み合わせまたは部分的な組み合わせの変形例を対象としてもよい。
【００７４】
同様に、動作を特定の順番で図示したが、所望の結果を実現するために、図示した特定の順番または順序でこのような動作が行われる必要がある、または、図示した動作のすべてが行われる必要があると理解されるべきではない。特定の状況では、多重タスク処理および並列処理が有利である場合がある。また、上述の実施形態におけるさまざまなシステム構成要素を分離することは、すべての実施形態においてこのような分離が必要であると理解されるべきではなく、記載のプログラムコンポーネントおよびシステムは、一般に、
１つのソフトウェアプロダクトに一体化され得るまたは複数のソフトウェアプロダクトにパッケージ化され得ると理解されるべきである。
【００７５】
例示的な実施形態に従って、コンピュータ記憶媒体上に符号化されたコンピュータプログラムを含む、第１ストレージシステムから第２ストレージシステムにデータを移行するための方法、システム、および装置を開示した。そのデータは、第１ストレージシステムおよび第２ストレージシステムとは別のコンピュータシステム上で動作するプロセス（たとえば、仮想マシン、アプリケーション、または他のプロセス）用のデータである。そのデータは、互いに排他的であるデータサブセットに従って格納される。各データセットが移行されると、プロセスによる当該データセットへのアクセスはできなくなるが、残りのデータセットへのアクセスは影響を受けない。プロセスによるデータセットへのアクセスは、データマイグレーションが完了すると、回復する。
【００７６】
このように、本発明の主題についての具体的な実施形態を説明した。その他の実施形態は、添付の特許請求の範囲に含まれる。場合によっては、請求項に記載されたアクションは、異なる順序で実行され得、それでもなお所望の結果を実現し得る。これに加えて、添付の図面に示したプロセスは、所望の結果を実現するために必ずしも図示した特定の順番または順序である必要はない。いくつかの実装形態において、多重タスク処理および並列処理が有利である場合がある。
【図１】
2020173840.tif 000003
【図２】
2020173840.tif 000004
【図３】
2020173840.tif 000005
【図４】
2020173840.tif 000006
【手続補正書】
【提出日】令和2年7月29日(2020.7.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ処理システムによって実行される方法であって、
第１の物理マシンに格納されたデータを処理するデータ処理プロセス用のマッピングを格納するステップを含み、前記データは、複数のデータサブセットに従って格納され、前記方法は、さらに、
データサブセットごとに、前記マッピングにおいて、前記第１の物理マシン上の前記データサブセットのアドレス範囲を前記データ処理プロセスの論理アドレス範囲に論理的にマッピングするステップと、
前記論理アドレス指定に従って、前記データ処理プロセスのために前記データへの読出しアクセスおよび書込みアクセスを許可するステップと、
前記第１の物理マシン上に格納された第１のデータサブセットを、前記第１の物理マシンとは別の第２の物理マシンに移行するとの決定に応答して、前記データ処理プロセスの前記第１のデータサブセットへの読出しアクセスおよび書込みアクセスを、前記データ処理プロセスのその他のデータサブセットへの読出しアクセスおよび書込みアクセスを維持したまま、ブロックするステップとを含む、方法。
【請求項２】
前記第１のデータサブセットを前記第１の物理マシンから前記第２の物理マシンに移行して前記データサブセットを前記第２の物理マシン上に格納することに応答して、前記第２の物理マシン上の前記第１のデータサブセットのアドレス範囲を前記データ処理プロセスの前記論理アドレス範囲に論理的にマッピングすることによって前記マッピングを更新するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記複数のデータサブセットは、互いに排他的である、請求項１または２に記載の方法。
【請求項４】
前記データ処理プロセスは、前記第１の物理マシンおよび前記第２の物理マシンとは別の第３の物理マシン上で実行される、請求項１、２、または３のいずれか１項に記載の方法。
【請求項５】
前記第１の物理マシン上に格納された前記第１のデータサブセットを前記第２の物理マシンに移行すると決定するステップは、前記第１の物理マシンによって実行され、
前記データ処理プロセスの前記第１のデータサブセットへの読出しアクセスおよび書込みアクセスを、前記データ処理プロセスの前記その他のデータサブセットへの読出しアクセスおよび書込みアクセスを維持したままブロックするステップは、前記第１の物理マシンが、前記データ処理プロセスの前記第１のデータサブセットへの読出しアクセスおよび書込みアクセスをブロックするステップを含む、請求項４に記載の方法。
【請求項６】
前記第１の物理マシンから、前記第１のデータサブセットの前記第２の物理マシンへの移行の通知を前記データ処理プロセスによって受信するステップをさらに含み、
前記第２の物理マシン上の前記第１のデータサブセットのアドレス範囲を前記データ処理プロセスの論理アドレス範囲に論理的にマッピングすることによって前記マッピングを更新するステップは、前記第１の物理マシンによる前記通知を前記データ処理プロセスが受信することに応答して実行される、請求項５に記載の方法。
【請求項７】
前記通知は、前記データ処理プロセスに、前記第１のデータサブセットにアクセスしないよう指示する、請求項６に記載の方法。
【請求項８】
前記第２の物理マシンから、前記第１のデータサブセットの前記第２の物理マシンへの移行の通知を前記データ処理プロセスによって受信するステップをさらに含み、
前記第２の物理マシン上の前記第１のデータサブセットのアドレス範囲を前記データ処理プロセスの論理アドレス範囲に論理的にマッピングすることによって前記マッピングを更新するステップは、前記データ処理プロセスが前記通知を受信することに応答して実行される、請求項５に記載の方法。
【請求項９】
前記第１の物理マシン上に格納された前記第１のデータサブセットを前記第２の物理マシンに移行すると前記データ処理プロセスによって決定するステップをさらに含み、
前記第１のデータサブセットを前記第１の物理マシンから前記第２の物理マシンに移行して前記データサブセットを前記第２の物理マシン上に格納するステップは、
前記データ処理プロセスが、前記第１の物理マシンに、前記第１のデータサブセットを前記データ処理プロセスに送信するよう指示するステップと、前記データ処理プロセスが、前記第１の物理マシンから受信した前記第１のデータサブセットを前記第２の物理マシンに送信するステップとを含み、前記マッピングを更新することは、前記データ処理プロセスによって行われる、請求項４〜８のいずれか１項に記載の方法。
【請求項１０】
前記複数のデータサブセットは、物理アドレス範囲に論理的にマッピングされたデータチャンクである、請求項１〜９のいずれか１項に記載の方法。
【請求項１１】
前記複数のデータサブセットは、データブロックである、請求項１〜１０のいずれか１項に記載の方法。
【請求項１２】
システムであって、
データ処理装置と、
前記データ処理装置とデータ通信し、前記データ処理装置によって実行可能な命令を格納した非一時的なコンピュータ読み取り可能なメモリとを備え、前記命令は、実行されると、前記データ処理装置に動作を実行させ、前記動作は、
第１の物理マシンに格納されたデータを処理するデータ処理プロセス用のマッピングを格納することを含み、前記データは、複数のデータサブセットに従って格納され、前記動作は、さらに、
データサブセットごとに、前記マッピングにおいて、前記第１の物理マシン上の前記データサブセットのアドレス範囲を前記データ処理プロセスの論理アドレス範囲に論理的にマッピングすることと、
前記論理アドレス指定に従って、前記データ処理プロセスによる前記データへの読出しアクセスおよび書込みアクセスを許可することと、
前記第１の物理マシン上に格納された第１のデータサブセットを、前記第１の物理マシンとは別の第２の物理マシンに移行するとの決定に応答して、前記データ処理プロセスの前記第１のデータサブセットへの読出しアクセスおよび書込みアクセスを、前記データ処理プロセスのその他のデータサブセットへの読出しアクセスおよび書込みアクセスを維持したまま、ブロックすることとを含む、システム。
【請求項１３】
前記第１のデータサブセットを前記第１の物理マシンから前記第２の物理マシンに移行して前記データサブセットを前記第２の物理マシン上に格納することに応答して、前記第２の物理マシン上の前記第１のデータサブセットのアドレス範囲を前記データ処理プロセスの前記論理アドレス範囲に論理的にマッピングすることによって前記マッピングを更新することをさらに含む、請求項１２に記載のシステム。
【請求項１４】
前記データ処理装置は、前記第１の物理マシンおよび前記第２の物理マシンとは別の物理マシンである、請求項１２に記載のシステム。
【請求項１５】
前記データ処理プロセスは、前記データ処理装置上で実行される、請求項１２に記載のシステム。
【請求項１６】
前記データ処理プロセスは、前記データ処理装置、前記第１の物理マシン、および前記第２の物理マシンとは別の第３の物理マシン上で実行される、請求項１２に記載のシステム。
【請求項１７】
前記複数のデータサブセットは、互いに排他的である、請求項１２〜１６のいずれか１項に記載のシステム。
【請求項１８】
データ処理装置とデータ通信し、前記データ処理装置によって実行可能な命令を格納した非一時的なコンピュータ読み取り可能なメモリであって、前記命令は、実行されると、前記データ処理装置に動作を実行させ、前記動作は、
第１の物理マシンに格納されたデータを処理するデータ処理プロセス用のマッピングを格納することを含み、前記データは、複数のデータサブセットに従って格納され、前記動作は、さらに、
データサブセットごとに、前記マッピングにおいて、前記第１の物理マシン上の前記データサブセットのアドレス範囲を前記データ処理プロセスの論理アドレス範囲に論理的にマッピングすることと、
前記論理アドレス指定に従って、前記データ処理プロセスによる前記データへの読出しアクセスおよび書込みアクセスを許可することと、
前記第１の物理マシン上に格納された第１のデータサブセットを、前記第１の物理マシンとは別の第２の物理マシンに移行するとの決定に応答して、前記データ処理プロセスの前記第１のデータサブセットへの読出しアクセスおよび書込みアクセスを、前記データ処理プロセスのその他のデータサブセットへの読出しアクセスおよび書込みアクセスを維持したまま、ブロックすることとを含む、非一時的なコンピュータ読み取り可能なメモリ。
【請求項１９】
前記第１のデータサブセットを前記第１の物理マシンから前記第２の物理マシンに移行して前記データサブセットを前記第２の物理マシン上に格納することに応答して、前記第２の物理マシン上の前記第１のデータサブセットのアドレス範囲を前記データ処理プロセスの前記論理アドレス範囲に論理的にマッピングすることによって前記マッピングを更新することをさらに含む、請求項１８に記載の非一時的なコンピュータ読み取り可能なメモリ。
【請求項２０】
前記複数のデータサブセットは、物理アドレス範囲に論理的にマッピングされたデータチャンク、または、データブロックである、請求項１８または１９に記載の非一時的なコンピュータ読み取り可能なメモリ。
【外国語明細書】
2020173840000001.pdf