(57)【要約】      （修正有）【課題】データ・ネットワークに接続される第一のコンピュータ・システムから第二のコンピュータ・システムにワークロードを移行する。【解決手段】コンピュータ構成１において、インターネット８上の第一のコンピュータ・システム２は、第一のコンピュータ・システムの第一の記憶装置５から、ブロック・デバイス・レベルで、移行されるべきワークロードを読み、移行されるべきワークロードを、あらかじめ定義されたサイズの複数のデータ・ブロック１５に分割し、複数のデータ・ブロックに対応するデータ１５０を第三のコンピュータ・システム４に逐次的にアップロードする。第二のコンピュータ・システム３は、複数のデータ・ブロックに対応するデータ１５０を、第三のコンピュータ・システムからダウンロードして、複数のデータ・ブロックを第二のコンピュータ・システムの第二の記憶装置６に書き込む。【選択図】図１
2019003618.tif 000002
【特許請求の範囲】
【請求項１】
第一のコンピュータ・システムから第二のコンピュータ・システムにワークロードを移行する方法であって、前記第一および第二のコンピュータ・システムはデータ・ネットワークに接続され、当該方法は：
・前記データ・ネットワークを介した前記第一のコンピュータ・システムから第三のコンピュータ・システムへの第一のデータ・リンクおよび前記第二のコンピュータ・システムから前記第三のコンピュータ・システムへの第二のデータ・リンクをセットアップする段階であって、前記第一および第二のデータ・リンクは、それぞれ前記第一および第二のコンピュータ・システムによって開始される、段階と；
・前記第一のコンピュータ・システムによって、前記第一のコンピュータ・システムの第一の記憶装置から、ブロック・デバイス・レベルで、移行されるべきワークロードを読む段階と；
・前記第一のコンピュータ・システムによって、移行されるべきワークロードを、あらかじめ定義されたサイズの複数のデータ・ブロックに分割する段階と；
・前記第一のコンピュータ・システムによって、前記複数のデータ・ブロックに対応するデータを前記第一のコンピュータ・システムから前記第一のデータ・リンクを介して前記第三のコンピュータ・システムに逐次的にアップロードする段階と；
・前記第二のコンピュータ・システムによって、前記複数のデータ・ブロックに対応するデータを、前記第二のデータ・リンクを介して前記第三のコンピュータ・システムから前記第二のコンピュータ・システムにダウンロードする段階と；
・前記第二のコンピュータ・システムによって、前記複数のデータ・ブロックを前記第二のコンピュータ・システムの第二の記憶装置に書き込み、それにより、前記第一のコンピュータ・システムから移行されるべきワークロードの同一のコピーが生成される、段階とを含む、
方法。
【請求項２】
前記ワークロードを移行することが、前記第一の記憶装置に記憶されているデータおよび／またはオペレーティング・システムおよび／またはアプリケーションを含むパーティションおよび／またはディスク・イメージを前記第二の記憶装置にコピーすることを含む、請求項１記載の方法。
【請求項３】
・前記複数のデータ・ブロックに対応するデータをアップロードする前に、前記第三のコンピュータ・システムによって、前記複数のデータ・ブロックを前記第一のコンピュータ・システムに要求する段階をさらに含む、
請求項１記載の方法。
【請求項４】
・前記データをダウンロードする前に、前記第三のコンピュータ・システムによって、前記複数のデータ・ブロックに対応するデータが前記第二のコンピュータ・システムによってダウンロードされることを命令する段階をさらに含み、前記第三のコンピュータ・システムは、前記複数のデータ・ブロックに対応するどのデータが次にダウンロードされるべきかを決定する、請求項１記載の方法。
【請求項５】
当該方法がさらに：
・前記第一のコンピュータ・システムを第一のブート媒体からブートする段階であって、前記第一のブート媒体は、第一の補助オペレーティング・システムと、前記第一のデータ・リンクをセットアップし、移行されるべきワークロードを読み、ワークロードを前記複数のデータ・ブロックに分割し、前記複数のデータ・ブロックに対応するデータを前記第一のコンピュータ・システムから前記第三のコンピュータ・システムに逐次的にアップロードするための実行可能なプログラム・コードとを含む、段階；および／または
・前記第二のコンピュータ・システムを第二のブート媒体からブートする段階であって、前記第二のブート媒体は、第二の補助オペレーティング・システムと、前記第二のデータ・リンクをセットアップし、前記複数のデータ・ブロックに対応するデータを前記第三のコンピュータ・システムから前記第二のコンピュータ・システムにダウンロードし、前記複数のデータ・ブロックを前記第二の記憶装置に書き込むための実行可能なプログラム・コードとを含む、段階を含む、
請求項１記載の方法。
【請求項６】
前記複数のデータ・ブロックの前記あらかじめ定義されたサイズは、前記第一のデータ・リンクおよび／または前記第二のデータ・リンクの品質に基づいて決定される、請求項１記載の方法。
【請求項７】
前記複数のデータ・ブロックの前記あらかじめ定義されたサイズは、ユーザーによって与えられる、請求項１記載の方法。
【請求項８】
・前記第一のコンピュータ・システムによって、あらかじめ定義されたサイズの前記複数のデータ・ブロックの各データ・ブロックを逐次的に前記第一のコンピュータ・システムのメイン・メモリにロードする段階と；
・各データ・ブロックに対応するデータをアップロードする前に、前記第一のコンピュータ・システムによって、各データ・ブロックを圧縮および／または暗号化する段階とをさらに含む、
請求項１記載の方法。
【請求項９】
・各データ・ブロックに対応するデータを、前記第二のコンピュータ・システムによって、前記第三のコンピュータ・システムから逐次的にダウンロードし、前記データを前記第二のコンピュータ・システムのメイン・メモリにロードする段階と；
・各データ・ブロックを前記第二の記憶装置に書き込む前に、前記第二のコンピュータ・システムによって、各データ・ブロックに対応するデータを解読および／または圧縮解除する段階とをさらに含む、
請求項１記載の方法。
【請求項１０】
・前記第一のコンピュータ・システムによって、移行されるべきワークロードの圧縮可能性マップを作成する段階をさらに含み、前記圧縮可能性マップはたとえば、各データ・ブロックの圧縮可能性についての情報および／またはワークロードにおいてどこに空のデータ・ブロックが位置しているかについての情報を含み、前記複数のデータ・ブロックに対応するデータをアップロードする順序は、前記圧縮可能性マップによって決定される、請求項１記載の方法。
【請求項１１】
・前記第二のコンピュータ・システムによって前記データ・ブロックに対応するデータをダウンロードする前に、前記複数のデータ・ブロックに対応するデータを前記第三のコンピュータ・システムの不揮発性の第三の記憶装置に中間的に記憶する段階をあさらに含む、
請求項１記載の方法。
【請求項１２】
前記ワークロードは前記第一のコンピュータ・システムから前記第二のコンピュータ・システムに、前記データ・ブロックに対応するデータを前記第三のコンピュータ・システムの不揮発性の第三の記憶装置に中間的に記憶することなく、移行される、請求項１記載の方法。
【請求項１３】
移行の間に、移行されるべきワークロードが前記第一のコンピュータ・システムで修正される場合、当該方法は：
・前記複数のデータ・ブロックのうち、前記第一のコンピュータ・システム上の源データが修正を受けたデータ・ブロックに対応するデータをアップロードし直す段階を含む、
請求項１記載の方法。
【請求項１４】
第一のコンピュータ・システム、第二のコンピュータ・システムおよび第三のコンピュータ・システムを有するコンピュータ構成であって、前記第一のコンピュータ・システム、前記第二のコンピュータ・システムおよび前記第三のコンピュータ・システムはデータ・ネットワークに接続され、
前記第一のコンピュータ・システムは、
・前記データ・ネットワークを介した前記第三のコンピュータ・システムへの第一のデータ・リンクをセットアップし；
・前記第一のコンピュータ・システムの第一の記憶装置から、ブロック・デバイス・レベルで、移行されるべきワークロードを読み；
・移行されるべきワークロードを、あらかじめ定義されたサイズの複数のデータ・ブロックに分割し；
・前記複数のデータ・ブロックに対応するデータを前記第一のコンピュータ・システムから前記第一のデータ・リンクを介して前記第三のコンピュータ・システムに逐次的にアップロードするよう構成されており、
前記第二のコンピュータ・システムは、
・前記データ・ネットワークを介した前記第三のコンピュータ・システムへの第二のデータ・リンクをセットアップし；
・前記複数のデータ・ブロックに対応するデータを、前記第三のコンピュータ・システムから前記第二のデータ・リンクを介してダウンロードし；
・前記複数のデータ・ブロックを前記第二のコンピュータ・システムの第二の記憶装置に書き込むよう構成されており、それにより、前記第一のコンピュータ・システムから移行されるべきワークロードの同一のコピーが生成される、
コンピュータ構成。
【請求項１５】
前記第三のコンピュータ・システムは、前記第一のコンピュータ・システムおよび前記第二のコンピュータ・システムからハイパーテキスト転送プロトコル（HTTP）を介して受領される要求を処理するウェブ・サーバーであり、前記第三のコンピュータ・システムは、前記第一のコンピュータ・システムおよび前記第二のコンピュータ・システムによって送られる要求があるかどうか、ポート80上で傾聴する、請求項１４記載のコンピュータ構成。
【請求項１６】
前記第一のコンピュータ・システムが第一のローカル・エリア・ネットワークに位置しており、前記第二のコンピュータ・システムが第二のローカル・エリア・ネットワークに位置しており、前記第三のコンピュータ・システムが広域ネットワーク、特にインターネットに位置しており、前記第一および第二のローカル・エリア・ネットワークはそれぞれ前記広域ネットワークに接続されている、請求項１４記載のコンピュータ構成。
【請求項１７】
コンピュータ・プログラム・コードを有する不揮発性記憶媒体であって、前記コンピュータ・プログラム・コードは、前記第一のコンピュータ・システム、前記第二のコンピュータ・システムまたは前記第三のコンピュータ・システムのうち少なくとも一つのものの少なくとも一つの処理装置によって実行されたときに、それぞれ前記第一のコンピュータ・システム、前記第二のコンピュータ・システムまたは前記第三のコンピュータ・システムによって実行される請求項１記載の方法の段階を実行する、媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第一のコンピュータ・システムから第二のコンピュータ・システムにワークロード（work  load）を移行する方法に関する。本発明はさらに、第一のコンピュータ・システムおよび第二のコンピュータ・システムを有するコンピュータ構成ならびに不揮発性記憶媒体に関する。
【背景技術】
【０００２】
第一のコンピュータ・システムから第二のコンピュータ・システムにワークロードを移行することは、コンピュータ関係のワークフローにおいて一般的なプロセスである。ワークロードを移行するには、第一のコンピュータ・システム上に記憶されているデータおよび／またはオペレーティング・システムおよび／またはアプリケーションを含むパーティションおよび／またはディスク・イメージが第二のコンピュータ・システムに転送される。そのようなワークロード移行は通例、データ・ネットワークを使って実行される。そのようなワークロードのデータ量は非常に多いことがあるので、データ・ネットワークを介した移行は非常に時間がかかることがある。さらに、不安定なネットワークを介したワークロードの移行は、データ転送における中断のたびに移行全体を最初からやり直すことになることがあるので、大量の努力を要求することがある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明の目的は、第一のコンピュータ・システムから第二のコンピュータ・システムにワークロードを移行する方法ならびにそのような方法を実行するよう構成されたコンピュータ構成および不揮発性記憶媒体を提供することである。
【課題を解決するための手段】
【０００４】
本発明の第一の側面によれば、第一のコンピュータ・システムから第二のコンピュータ・システムにワークロードを移行する方法が開示される。ここで、第一および第二のコンピュータ・システムはデータ・ネットワークに接続される。本方法は、前記データ・ネットワークを介した第一のコンピュータ・システムから第三のコンピュータ・システムへの第一のデータ・リンクおよび第二のコンピュータ・システムから第三のコンピュータ・システムへの第二のデータ・リンクをセットアップすることを含む。ここで、第一および第二のデータ・リンクは、それぞれ第一および第二のコンピュータ・システムによって開始される。第一のコンピュータ・システムは、第一のコンピュータ・システムの第一の記憶装置から、ブロック・デバイス・レベルで、移行されるべきワークロードを読む。第一のコンピュータ・システムはさらに、移行されるべきワークロードを、あらかじめ定義されたサイズの複数のデータ・ブロックに分割し、前記複数のデータ・ブロックに対応するデータを第一のコンピュータ・システムから第一のデータ・リンクを介して第三のコンピュータ・システムに逐次的にアップロードする。第二のコンピュータ・システムは、前記複数のデータ・ブロックに対応するデータを、第三のコンピュータ・システムからダウンロードして、前記複数のデータ・ブロックを第二のコンピュータ・システムの第二の記憶装置に書き込む。それにより、第一のコンピュータ・システムから移行されるべきワークロードの同一のコピーが生成される。
【０００５】
第一のデータ・リンクが第一のコンピュータ・システムによって開始され、第二のデータ・リンクが第二のコンピュータ・システムによって開始されることの利点は、第一のコンピュータ・システムおよび／または第二のコンピュータ・システムがファイアウォールのようなネットワーク・セキュリティー・システムによって保護される場合、それらのコンピュータ・システムの一つからデータを送ることは通常、許可され、別のコンピュータ・システムからデータを受信することは通常、ファイアウォールによって禁止されるということである。この実装によって回避される同様の問題が、ルーター、ゲートウェイ、ネットワーク・アドレス変換（network  address  translation）NATおよびプロキシ・サーバーによって引き起こされることがある。本方法は、ネットワーク・セキュリティー・システムおよびネットワーク構造とは独立に実行されうる。たとえば、第一および第二のコンピュータ・システムは、任意の種類の実際のまたは仮想のデータ・ネットワークに位置されてもよい。また、それらは同じネットワークに、あるいはインターネットのような相互接続ネットワークに接続されている異なるネットワークに位置されてもよい。
【０００６】
第一の記憶装置からブロック・デバイス・レベルで移行されるべきワークロードを読むことの利点は、ワークロードの移行が、第一のコンピュータ・システムのオペレーティング・システムおよびファイル・システムとは独立であるということである。第一の記憶装置がバイトに基づいてデータを記憶している限り、論理ボリューム・マネージャまたは暗号化された隠されたパーティションを含むあらゆるオペレーティング・システムおよびあらゆるファイル・システムが移行されることができる。
【０００７】
ワークロードを複数のデータ・ブロックに分割する結果として、いくつかの利点が生じる。第一に、ワークロード全体を移行することが、いくつかのセッションに分割できる。それらのセッションは、ユーザーにとって便利なときにいつでも開始され、停止され、続けられることができる。たとえば移行プロセス全体は、ネットワーク占有が一般に少ない夜間のいくつかのセッションにおいて実施されるだけであってもよい。第二に、不安定なネットワークが移行のために使われる場合、移行プロセスは、ネットワークに障害が発生したときに送信されていたデータ・ブロックに対応するデータをもって続けられることができる。よって、移行プロセス全体を最初からやり直す必要はない。さらに、ワークロードをデータ・ブロックに分割することは、各データ・ブロックの独立した処理を許容する。したがって、処理パワーおよび一時的なメモリ要求が最適化され、データ完全性検査が加速され、ディスクおよびネットワーク・エラーが管理可能となる。
【０００８】
本発明の少なくとも一つの実施形態では、本方法は、第一のコンピュータ・システムを第一のブート媒体からブートすることを含む。第一のブート媒体は、第一の補助オペレーティング・システムと、前記第一のデータ・リンクをセットアップし、移行されるべきワークロードを読み、ワークロードを複数のデータ・ブロックに分割し、前記複数のデータ・ブロックに対応するデータを第一のコンピュータ・システムから第三のコンピュータ・システムに逐次的にアップロードするための実行可能なプログラム・コードとを含む。代替的または追加的に、本方法は、第二のコンピュータ・システムを第二のブート媒体からブートすることを含む。第二のブート媒体は、第二の補助オペレーティング・システムと、第二のデータ・リンクをセットアップし、前記複数のデータ・ブロックに対応するデータを第三のコンピュータ・システムからダウンロードし、前記複数のデータ・ブロックを前記第二の記憶装置に書き込むための実行可能なプログラム・コードとを含む。
【０００９】
第一のコンピュータ・システムおよび／または第二のコンピュータ・システムをそれぞれ第一および第二の補助オペレーティング・システムを含む第一のブート媒体および第二のブート媒体からブートすることの利点は、移行プロセスが、第一のコンピュータ・システムおよび第二のコンピュータ・システムにインストールされているいかなる主オペレーティング・システムからも独立に開始され、実行されることができるということである。第二の記憶装置が移行プロセスのはじめに空であり、第二のコンピュータ・システムに主オペレーティング・システムがインストールされていない場合には、第二のブート媒体はそもそも第二のコンピュータ・システムを開始するために必要とされる。さらに、移行プロセスを許可するために、第一のコンピュータ・システムの主オペレーティング・システムにおける特別なユーザー・パーミッションが作成される必要はない。さらに、この実施形態において、接続のセットアップに干渉しうる、第一および第二のコンピュータ・システムの主オペレーティング・システムにインストールされたファイアウォールが回避される。
【００１０】
補助オペレーティング・システムのもう一つの利点は、種々のオペレーティング・システムのための種々のプログラムを用いる解決策ではなく、補助オペレーティング・システムのための一つのライセンス、開発努力、トレーニングおよびトラブルシューティングだけが必要とされるということである。メンテナンスおよびトレーニングのために費やされる時間、よってコストが低減できる。
【００１１】
本発明の少なくとも一つの実施形態では、前記複数のデータ・ブロックのあらかじめ定義されたサイズは、前記第一のデータ・リンクおよび／または前記第二のデータ・リンクの品質に基づいて決定される。少なくとも一つの代替的な実施形態では、前記複数のデータ・ブロックの前記あらかじめ定義されたサイズはユーザーによって与えられる。
【００１２】
データ・ブロックのサイズが第一および／または第二のデータ・リンクの品質に関係していることの利点は、移行のプロセスが、ネットワークの品質に合わせて最適に適応されうるということである。ネットワークがかなり不安定である場合、より小さなサイズ、よってより高い粒度のデータ・ブロックが有利であることがある。ネットワークの中断の場合、ネットワークが障害を起こしたときに送信中だったデータ・ブロックに対応するデータがアップロードし直さなければならないときに無駄になる時間が少なくなる。しかしながら、ネットワークがかなり安定な場合には、より大きなデータ・ブロックが有利であることがある。後述するようなデータ・ブロックのさらなる処理が、より高速に実行でき、データ・ブロック・オーバーヘッドを低減できるからである。
【００１３】
本発明の少なくとも一つの実施形態では、本方法はさらに、第一のコンピュータ・システムによって、移行されるべきワークロードの圧縮可能性マップを作成する段階を含む。ここで、前記複数のデータ・ブロックに対応するデータをアップロードする順序は、前記圧縮可能性マップによって決定される。
【００１４】
そのような圧縮可能性マップはたとえば、各データ・ブロックの圧縮可能性と、ワークロードにおいてどこに空のデータ・ブロックが位置しているかとについての情報を含んでいてもよい。そのような圧縮可能性マップを用いて、データ・ブロックに対応するデータをアップロードする順序は、たとえば、空のデータ・ブロックおよびよく圧縮されたデータ・ブロックに対応するデータが先にアップロードされ、より悪い圧縮比をもつデータ・ブロックに対応するデータは後でアップロードされるように、配列されることができる。あるいはまた、空のデータ・ブロックは移行プロセスにおいて省略されることができる。そのような圧縮可能性マップに依存するもう一つの順序は、たとえば、よりよく圧縮されたデータ・ブロックに対応するデータが、より少ないネットワーク資源を消費するために日中にアップロードされ、一方、より悪い圧縮比をもつデータ・ブロックに対応するデータは夜間にアップロードされるというものであってもよい。そのような圧縮可能性マップはさらに、ワークロード全体の移行にどのくらいの時間がかかるかのよりよい予測を提供してもよい。
【００１５】
本発明の少なくとも一つの実施形態では、本方法はさらに、第二のコンピュータ・システムによってデータ・ブロックに対応するデータをダウンロードする前に、前記複数のデータ・ブロックに対応するデータを第三のコンピュータ・システムの不揮発性の第三の記憶装置に中間的に記憶する段階を含む。
【００１６】
前記複数のデータ・ブロックに対応するデータを不揮発性の第三の記憶装置に中間的に記憶することは、第一のデータ・リンクおよび第二のデータ・リンクが変動する伝送レートおよび／または安定性を示す場合に有利でありうる。特に、第二のデータ・リンクが第一のデータ・リンクより低い伝送レートをもつ場合には、データ・ブロックに対応するデータは、第二のコンピュータ・システムによってダウンロードされる前に、第三のコンピュータ・システム上で待機しうる。第二のデータ・リンクが中断された場合、前記データ・ブロックに対応するデータを第三のコンピュータ・システムの不揮発性の第三の記憶装置に中間的に記憶することは、第二のデータ・リンクの途絶が、前記データ・ブロックに対応するデータを第一のコンピュータ・システムから第三のコンピュータ・システムにアップロードすることには干渉しないという利点をもつ。前記データ・ブロックに対応するデータを不揮発性の第三の記憶装置に記憶することは、該不揮発性の第三の記憶装置の容量に依存して、第三のコンピュータ・システムが大量のデータを中間的に記憶することを許容する。それは、移行されるべき大きなワークロードがあり、多くのワークロードが同時に移行される必要がある企業における大規模な配備のために有利でありうる。あるいはまた、消費する記憶資源を少なくするために、第三のコンピュータ・システムは、単一のまたは若干数のデータ・ブロックに対応するデータを同時に記憶することができるだけであるよう構成されることができる。
【００１７】
少なくとも一つの実施形態では、ワークロードは第一のコンピュータ・システムから第二のコンピュータ・システムに、前記データ・ブロックに対応するデータを第三のコンピュータ・システムの不揮発性の第三の記憶装置に中間的に記憶することなく、移行される。
【００１８】
前記データ・ブロックに対応するデータを、該データを第三のコンピュータ・システムの不揮発性の第三の記憶装置に中間的に記憶することなく転送することは、第三のコンピュータ・システムにおいて不揮発性の記憶が必要とされないという利点をもつ。この実施形態では、前記データ・ブロックに対応するデータが第二のコンピュータ・システムによってダウンロードされる前に、前記データ・ブロックに対応するデータは、第三のコンピュータ・システムのRAMのような揮発性メモリに記憶される。
【００１９】
本稿での第一、第二および第三のコンピュータ・システムの構成は、第三のコンピュータ・システムが第一および第二のコンピュータ・システムのためのデータ待ち行列であるクライアント‐キュー‐クライアント（CQC:  client-queue-client）または受動クライアント・システムに似ている。データ・ブロックに対応するデータは、非常に短時間だけ、たとえば一秒未満だけ、記憶されうる。しかしながら、第二のデータ・リンクが中断される場合、データ・ブロックに対応するデータは、第二のデータ・リンクが復旧するまで、第三のコンピュータ・システムの揮発性メモリに記憶されてもよい。第三のコンピュータ・システムの揮発性メモリは、該揮発性メモリの容量が許容するだけの量のデータ・ブロックに対応するデータを中間的に記憶することができ、あるいは、メモリ資源の消費を少なくするために、同時には単一のまたは若干数のデータ・ブロックに対応するデータを記憶するだけであるよう構成されることができる。あるいはまた、第三のコンピュータ・システムの揮発性メモリに中間的に記憶される一つまたは複数のデータ・ブロックに対応するデータは、第二のコンピュータ・システムによってダウンロードされることができない場合には、ある時間後に揮発性メモリから破棄されてもよい。その場合、第一のコンピュータ・システムは、第二のデータ・リンクが復旧したときに、中断された点から移行プロセスを再開するために、第三のコンピュータ・システムの揮発性メモリから破棄された一つまたは複数のデータ・ブロックに対応するデータをアップロードし直す。
【００２０】
本発明の第二の側面によれば、第一のコンピュータ・システム、第二のコンピュータ・システムおよび第三のコンピュータ・システムを有するコンピュータ構成が開示される。第一のコンピュータ・システム、第二のコンピュータ・システムおよび第三のコンピュータ・システムはデータ・ネットワークに接続される。第一のコンピュータ・システムは、前記データ・ネットワークを介した第三のコンピュータ・システムへの第一のデータ・リンクをセットアップし、第一のコンピュータ・システムの第一の記憶装置から、ブロック・デバイス・レベルで、移行されるべきワークロードを読むよう構成される。第一のコンピュータ・システムはさらに、移行されるべきワークロードを、あらかじめ定義されたサイズの複数のデータ・ブロックに分割し、前記複数のデータ・ブロックに対応するデータを第一のコンピュータ・システムから第一のデータ・リンクを介して第三のコンピュータ・システムに逐次的にアップロードする。第二のコンピュータ・システムは、前記データ・ネットワークを介した第三のコンピュータ・システムへの第二のデータ・リンクをセットアップし、前記複数のデータ・ブロックに対応するデータを、第三のコンピュータ・システムから第二のコンピュータ・システムに第二のデータ・リンクを介してダウンロードして、前記複数のデータ・ブロックを第二のコンピュータ・システムの第二の記憶装置に書き込むよう構成される。それにより、第一のコンピュータ・システムから移行されるべきワークロードの同一のコピーが生成される。
【００２１】
少なくとも一つの実施形態では、当該コンピュータ構成の第三のコンピュータ・システムは、第一のコンピュータ・システムおよび第二のコンピュータ・システムからハイパーテキスト転送プロトコル（HTTP）を介して受領される要求を処理するウェブ・サーバーであり、第三のコンピュータ・システムは、第一のコンピュータ・システムおよび第二のコンピュータ・システムによって送られる要求があるかどうか、ポート80上で傾聴する。
【００２２】
通例、HTTPを介した各通信において、少なくとも三つのポートが使われる。第一のコンピュータ・システム（または第二のコンピュータ・システム）上の一つのポートと、ウェブ・サーバー（すなわち、第三のコンピュータ・システム）上の二つのポートである。第一の（または第二の）コンピュータ・システムと第三のコンピュータ・システムとの間のデータ・リンクを確立するために重要なのは、傾聴ポートである。残りの二つのポートは、通信プロトコルのネゴシエーションの間にランダムに選択され、53810または48256などのような任意の利用可能なポート番号を受け取ることができる。HTTPを介して通信を開始することを可能にするポートは、傾聴ポートであり、第三のコンピュータ・システム上でポート番号80をもつ。
【００２３】
第三のコンピュータ・システムが第一のコンピュータ・システムおよび第二のコンピュータ・システムからHTTPを介して受領される要求を処理するウェブ・サーバーであることの利点は、そのようなプロトコルを介した通信が、通例、セキュリティーで保護された環境内のコンピュータ・システムについて許可されるということである。企業ネットワークは通例、いくつかのサブネットをもつ複雑な構造をもつ。ファイアウォールおよびNATのため、そのような複雑な構造の内部の第一のコンピュータ・システムが、外部データ・ネットワークからの第二のコンピュータ・システムにとって可視であることは不可能であることがある。その場合、第一および第二のコンピュータ・システムの間のポイントツーポイント（PtP）接続を確立することは、複雑なネットワークの多数のルーターについて明示的なポート転送規則を設定することを必要とすることになる。各ルーター修正は、管理者への／からの要求、決定、承認およびドキュメント更新などを必要とすることになる。ワークロードを移行するための第一および第二のコンピュータ・システムと第三のコンピュータ・システムとの間のHTTPを介した通信は、上述した問題すべてを回避する。また、第一および／または第二のコンピュータ・システムが、たとえばピアツーピア・ネットワーキング（P2P）を介したデータ転送を許可しないファイアウォールによって保護されている場合、移行プロセスはいずれにせよ、いかなる特別な許可も必要とせずに実施されることができる。ファイアウォールを通じたデータ転送を許可する特別なパーミッションを生成することは、常に、ファイアウォールにおける危険を作り出し、よって、常にリスク、追加コストおよび追加的な時間の消費と組み合わされる。
【００２４】
本発明の第三の側面によれば、コンピュータ・プログラム・コードを有する不揮発性記憶媒体が開示される。前記コンピュータ・プログラム・コードは、第一のコンピュータ・システム、第二のコンピュータ・システムまたは第三のコンピュータ・システムのうち少なくとも一つのものの少なくとも一つの処理装置によって実行されたときに、上述した方法に従って、それぞれ第一のコンピュータ・システム、第二のコンピュータ・システムまたは第三のコンピュータ・システムのうち少なくとも一つのものの段階を実行する。
【００２５】
本発明のさらなる有利な実施形態は、付属の請求項および例示的実施形態の下記の詳細な説明において開示される。例示的実施形態は、付像の図面との関連で記述される。
【図面の簡単な説明】
【００２６】
【図１】本発明のある実施形態に基づくコンピュータ構成の概略図である。
【図２】第一のコンピュータ・システムから第二のコンピュータ・システムにワークロードを移行するための方法のフローチャートである。
【図３】第一のコンピュータ・システムから第二のコンピュータ・システムにワークロードを移行するための方法のフローチャートである。
【図４】第一のコンピュータ・システムから第二のコンピュータ・システムにワークロードを移行するための方法のフローチャートである。
【図５】第一のコンピュータ・システムから第二のコンピュータ・システムにワークロードを移行するための方法のフローチャートである。
【図６】第一のコンピュータ・システムから第二のコンピュータ・システムにワークロードを移行するための方法のフローチャートである。
【図７】第一のコンピュータ・システムから第二のコンピュータ・システムにワークロードを移行するための方法のフローチャートである。
【発明を実施するための形態】
【００２７】
図１は、本発明のある実施形態に基づくコンピュータ構成１の概略図である。コンピュータ構成１は、第一のコンピュータ・システム２、第二のコンピュータ・システム３および第三のコンピュータ・システム４を有する。
【００２８】
この実施形態では、第一および第二のコンピュータ・システムはそれぞれ第一の記憶装置５および第二の記憶装置６を有するデスクトップ・コンピュータである。しかしながら、第一のコンピュータ・システム２および第二のコンピュータ・システム３は、サーバー、ワークステーション、仮想マシン、クラウド・インスタンスなどといったいかなる種類のコンピュータ・システムであってもよい。以下では、明確のため、第一のコンピュータ・システム２のユーザー、第二のコンピュータ・システム３のユーザーおよび第三のコンピュータ・システム４のユーザーの間の区別がされる。しかしながら、もちろん、三つのコンピュータ・システム２、３、４すべてが同じユーザーによって管理されることが可能である。特に、第一および第二のコンピュータ・システム２、３または三つ全部が同じローカル・エリア・ネットワークに位置している場合はそうである。
【００２９】
この実施形態では、第三のコンピュータ・システム４は、不揮発性の第三の記憶装置７を含むウェブ・サーバーである。しかしながら、第三のコンピュータ・システム４は、不揮発性の第三の記憶装置７なしで実装されてもよく、いかなる種類の物理的または仮想的コンピュータ・システムであってもよい。
【００３０】
第一のコンピュータ・システム２、第二のコンピュータ・システム３および第三のコンピュータ・システム４はデータ・ネットワーク、この実施形態ではインターネット８に接続されている。第一のコンピュータ・システム２および第二のコンピュータ・システム３はそれぞれ第一のファイアウォール９および第二のファイアウォール１０によって保護される。第一のファイアウォール９および第二のファイアウォール１０はたとえば、第一のコンピュータ・システム２および第二のコンピュータ・システム３が位置しているローカル・エリア・ネットワークのファイアウォールであってもよい。別の実施形態では、第一のコンピュータ・システム２および第二のコンピュータ・システム３は、同じまたは別個の広域ネットワーク（WAN）、ローカル・エリア・ネットワーク（LAN）、都市圏ネットワーク（MAN）、パーソナル・エリア・ネットワーク（PAN）、仮想閉域網（VPN）、企業プライベート・ネットワーク（EPN）、イントラネット、エクストラネットまたはアドホック・ネットワークなどに位置していてもよい。その場合、これらのネットワークは第三のコンピュータ・システム４が位置しているインターネット８に接続される。三つすべてのコンピュータ・システム２、３、４がみな同じWAN、LAN、MAN、PAN、VPN、EPN、イントラネット、エクストラネットまたはアドホック・ネットワークなどに位置していることも可能であってもよい。一般に、第一と第三のコンピュータ・システム２、４の間および第二と第三のコンピュータ・システム３、４の間の転送制御プロトコル／インターネット・プロトコル（TCP/IP）リンクが構成されることができる限り、第一、第二および第三のコンピュータ・システム２、３、４の任意の配位が可能である。
【００３１】
図１はさらに、それぞれ第一のコンピュータ・システム２および第二のコンピュータ・システム３に接続された第一のブート媒体１１および第二のブート媒体１２を示している。この実施形態では、第一のブート媒体１１および第二のブート媒体１２は、そこからコンピュータ・システム２、３がブートされることができるメモリースティックである。他の実施形態では、第一のブート媒体１１および／または第二のブート媒体１２は、CDまたはDVDのようなブート可能ディスク、ISOイメージまたはクラウド・イメージであってもよい。
【００３２】
この実施形態では、第一のコンピュータ・システム２から第二のコンピュータ・システム３に移行されるワークロードは、第一の記憶装置５に記憶されているコンテンツおよびファイル・システム構造全体を含む。本発明によれば、第一の記憶装置５のデータの同一のコピーが第二の記憶装置６にコピーされる。第二のコンピュータ・システム３の第二の記憶装置６は移行プロセスのはじめには空である。あるいは、第二の記憶装置６上にデータが記憶されていてもよく、第二の主オペレーティング・システムがインストールされていてもよく、これらは第一のコンピュータ・システム２からのデータおよび第一の主オペレーティング・システムで上書きされる。その場合、第一のコンピュータ・システム２の第一の主オペレーティング・システムは、第二のコンピュータ・システム３にインストールされている第二の主オペレーティング・システムと異なっていてもよい。また、その場合、移行の開始時に、第一の記憶装置５および第二の記憶装置６のファイル・システムは異なっていてもよい。
【００３３】
第一のブート媒体１１は、第一の補助オペレーティング・システム１６を有する。これは、第一のブート媒体１１からブートされるときに第一のコンピュータ・システム２で実行される。第二のブート媒体１２は、第二のブート媒体１２からブートされるときに第二のコンピュータ・システム３で実行される、第一の補助オペレーティング・システム１６と同様の第二の補助オペレーティング・システム１７を有する。第一の補助オペレーティング・システム１６を第一のブート媒体１１からブートすることは、ワークロード移行を、第一のコンピュータ・システム２の第一の主オペレーティング・システムとは独立にする。
【００３４】
第二の補助オペレーティング・システム１７を第二のブート媒体１２からブートすることは、第二のコンピュータ・システム３のユーザーが、移行プロセスのために空の第二のコンピュータ・システム３をセットアップすることを許容する。さらに、第一のコンピュータ・システムのユーザーが移行を実行することを許容するために、インストールされている第一の主オペレーティング・システムについて、ワークロード移行のための特別なパーミッションが必要とされない。第一および第二の補助オペレーティング・システム１６、１７の類似性により、第一および第二のコンピュータ・システム２、３上の異なるオペレーティング・システムのための異なる解決策を使わなければならないことに比べて、ユーザーが学習し、理解するのが容易になる。また、異なる第一の主オペレーティング・システムがインストールされている異なる第一のコンピュータ・システム２から移行プロセスを実行するユーザーは、一つ一つの第一の主オペレーティング・システムについて異なる移行アプリケーションを使う必要はない。
【００３５】
この実施形態では、第一および第二の補助オペレーティング・システム１６、１７は、かなり単純なユニックス様のオペレーティング・システム、たとえばそれぞれ第一および第二のブート媒体１１、１２上に記憶されている実行可能プログラム・コードが高々30メガバイトである小さなリナックス(登録商標)・オペレーティング・システムである。この実施形態において、第一および第二のブート媒体１１、１２はそれぞれ、カーネル、ドライバおよびユニックス・シェルを含む10メガバイトのリナックス・オペレーティング・システムと、すべて込みのPHP実行可能形式と、PHPエンジンによって実行される、それぞれ第一および第二のコンピュータ・システム２、３のための1メガバイトの移行アプリケーションとを有する。
【００３６】
第一のブート媒体１１および第二のブート媒体２２はそれぞれ、補助オペレーティング・システム１６、１７のほかに、第一のコンピュータ・システム２および第二のコンピュータ・システム３から第三のコンピュータ・システム４へのそれぞれ第一のデータ・リンク１３および第二のデータ・リンク１４をセットアップするためのさらなる実行可能なプログラム・コードを有する。第一のコンピュータ・システム２から第三のコンピュータ・システム４への第一のデータ・リンク１３は第一のコンピュータ・システム２によって開始され、第一、第三のコンピュータ・システム２、４をインターネット８を介して接続する。この実施形態において、第一および第二のデータ・リンク１３、１４はステートレスなデータ・リンクである。第一および第二のコンピュータ・システム２、３の第三のコンピュータ・システム４とのすべての通信は、図２との関連で詳細に説明するように、ハイパーテキスト転送プロトコル（HTTP）を介して実行される。したがって、第一または第二のコンピュータ・システム２、３と第三のコンピュータ・システム４との間のデータまたは情報のあらゆる交換のために、それぞれ別個の第一または第二のデータ・リンク１３、１４がセットアップされる。
【００３７】
第一のブート媒体１１はさらに、第一のコンピュータ・システム２によって実行されることのできるリーダー（reader）・ソフトウェア１８を有する。実行されたとき、リーダー・ソフトウェア１８は、第一のコンピュータ・システム２によって、ブロック・デバイス・レベルで、移行されるべきワークロードを読む。ブロック・デバイス・レベルは、第一の記憶装置５に記憶されているデータへのアクセスを、前記記憶装置５のファイル・システムより低レベルで提供する。ブロック・デバイス・レベルは、記憶されている情報を含むバイトの基本概念に基づき、ブロック・デバイス・レベルでそれらのバイトを読むとは、記憶装置５の表面から独立してかつ連続的に各バイトを読むことを意味する。ブロック・デバイス・レベルのアクセスは、第一のコンピュータ・システム２が、実際のパーティション、ファイル・システムおよびそれらに含まれる一切の下にある物理的なハードウェア・ディスク全体を、直接読むことを可能にする。仮想またはクラウド環境の場合、ハードウェア・ディスクがエミュレートされる。
【００３８】
第一の記憶装置５全体が第一の補助システム１６およびリーダー・ソフトウェア１８に対して、第一の記憶装置５全体のサイズに等しいサイズをもつ単一の中断されない第一のバイナリー・ファイルとして呈される。たとえば、第一の記憶装置５が80ギガバイトのディスクを有する場合、それは、パーティション境界、ファイル・システムの型またさらには何らかのファイル・システムがあるか否かさえ示すことなく、80ギガバイト（85899345920バイト）の第一のバイナリー・ファイルとして呈される。この第一のバイナリー・ファイル全体が、第一のコンピュータ・システム２から第二のコンピュータ・システム３にコピーされる。
【００３９】
ブロック・デバイス・レベルのアクセスは、上記のように、第一の記憶装置５のすべての（既知／未知／有意／無意味の）詳細が第二の記憶装置６において同一の形で再現されることを保証する。これらの詳細は、パーティション・レイアウト、ファイル・システム、一つまたは複数のオペレーティング・システム、暗号化されたファイルおよびパーティション、インストールされているソフトウェアおよびライセンス、セキュリティー設定、さらには法科学的アーティファクト（forensic  artifacts）およびシステムによって未使用の領域にわたって分散している他のすべてのノイズを含むことができる。これらすべてのバイトの実際の意味は、移行プロセスにとっては重要ではない。ブロック・デバイス・レベルのアクセスは、任意の、あらゆる可能な型の記憶内容について、一つの普遍的なコピー機構を可能にするので、有利である。同一のコピーを作り出すためには、それらのバイトが、第二のコンピュータ・システム３上の第二の記憶装置６に、厳密に同じ順序で書き込まれる必要があるだけである。
【００４０】
リーダー・ソフトウェア１８は、第一のコンピュータ・システムによって実行されたときにさらに、ワークロードを、読みながら、あらかじめ定義されたサイズのデータ・ブロック１５に分割する。移行されるべきワークロードは、通例、ネットワーク転送のためには巨大なので（上述したように、今の例では80ギガバイトのファイル）、多数の小さなデータ・ブロック１５に分割して、それらのデータ・ブロック１５を一つ一つ個別にコピーすることが有利である。
【００４１】
この巨大なファイルから、リーダー・ソフトウェア１８によって、オフセットを用いて読むことによって、データ・ブロック１５が取得される。リーダー・ソフトウェア１８は、バイト番号Xに行き、その点からリーダー・ソフトウェア１８はY個のバイトを読む。結果として、読まれたデータ・ブロックをはY個のバイトを含み、さらに、その始まりがバイト番号Xが位置している点に対応するべきであるという情報に関連付けられる。そのような情報はたとえば、ヘッダに格納される。リーダー・ソフトウェア１８は、各データ・ブロック１５を、対応するヘッダと組み合わせて、データ・ブロック１５に対応する、第三のコンピュータ・システム４にアップロードされるデータ１５０を生成する。この実施形態では、常に一つのデータ・ブロック１５が、第一のコンピュータ・システム２によって、個々に処理されて、アップロードされるべき前記データ１５０を生成する。しかしながら、たとえばデータ・オーバーヘッドを低減するために、アップロードされるべきいくつかのデータ・ブロック１５を、データ１５０として一緒に組み合わせることも可能であろう。
【００４２】
そのようなヘッダは、HTTP内で実現される、第三のコンピュータ・システム４と第一のコンピュータ・システム２または第二のコンピュータ・システム３との間の上述した通信に固有である。ヘッダの目的は、移行プロセスのアカウンティングの方法を可能にするとともに、移行されるデータの完全性（integrity）および完備性（completeness）を保証することである。この通信は、小さな伝送オーバーヘッドをなす（たとえば、8メガバイトのデータ・ブロック１５については0.008%で、ブロックが大きいほど低くなる）。このデータ・オーバーヘッドはかなり小さく、通例は、これより大幅に小さくすることはできない。たとえばデータ転送が始まる前にそれぞれの新しいデータ・リンクを確立するために使われるランタイム・オーバーヘッドを低減することも重要である。一つの確立されたデータ・リンク１３、１４を使って多くのデータ・ブロックが送られる場合、時間節約は明白であり、グローバル移動通信システム（GSM(登録商標)）規格または長距離国際リンクのような高レイテンシー・ネットワークでは特にそうである。
【００４３】
データ・ブロック１５のサイズは、移行プロセスを実行する第三のコンピュータ・システム４のユーザーによって選ばれることができる。データ・ブロック１５のデータ・ブロック・サイズに関するさらなる詳細は、図２との関連で述べる。リーダー・ソフトウェア１８は、データ・ブロック１５を第一のコンピュータ・システム２のメイン・メモリにロードし、第一のコンピュータ・システム２によって該データ・ブロック１５を暗号化する。したがって、この実施形態では、アップロードされるべき各データ１５０は、一つの圧縮され、暗号化されたデータ・ブロック１５を有する。暗号化プロセスを実装するためのソフトウェアは、リーダー・ソフトウェア１８に含まれている。データ・ブロック１５の暗号化は、図２および図５との関連でより詳細に記載される。
【００４４】
データ・ブロック１５に対応するデータ１５０は、第一のコンピュータ・システム２から第三のコンピュータ・システム４に、第一のデータ・リンク１３を介してアップロードされる。第三のコンピュータ・システム４は、暗号化されたデータ・ブロック１５の解読のための鍵をもたない。よって、データ・ブロック１５の内容を、第三のコンピュータ・システム４またはインターネット８上の何らかの中間のコンピュータ・システムが読むことはできない。第三のコンピュータ・システム４は、データ・ブロック１５に対応するデータ１５０を転送するためのハブ・サービスを実装する。それにより、後述するように、第二のコンピュータ・システム３は、データ１５０を第二のデータ・リンク１４を介してダウンロードすることができる。第二のデータ・リンク１４で何らかの中断が発生する場合または第二のデータ・リンク１４が第一のデータ・リンク１３より低い伝送レートをもつ場合、任意的に、データ・ブロック１５に対応するデータ１５０は、第三のコンピュータ・システム４の不揮発性の第三の記憶装置７上に中間的に記憶されることができる。しかしながら、データ・ブロック１５の内容へのアクセスは、第三のコンピュータ・システム４からは可能ではないし、必要とされもしない。
【００４５】
第二のブート媒体１２は、第二のコンピュータ・システム３によって実行される、第二のデータ・リンク１４をセットアップするための実行可能プログラム・コードを有する。第二のデータ・リンク１４は、第二のコンピュータ・システム３を第三のコンピュータ・システム４にインターネット８を介して接続するために、第二のコンピュータ・システム３によって開始される。先述したように、第二のデータ・リンク１４もステートレスである。第二のブート・システム１２はさらに、データ・ブロック１５に対応するデータ１５０をダウンロードして、データ・ブロック１５を第二のコンピュータ・システム３の第二の記憶装置６にブロック・デバイス・レベルで書き込むためのライター（writer）・ソフトウェア１９を有する。第二のコンピュータ・システム３上で実行されるライター・ソフトウェア１９は、データ１５０を解読し、圧縮解除して、データ・ブロック１５を取り出す。解読プロセスを実装するためのソフトウェアはライター・ソフトウェア１９に含まれている。データ１５０の解読は、図２および図７との関連でより詳細に述べる。
【００４６】
データ・ブロック１５をブロック・デバイス・レベルで第二の記憶装置６に書き込むために、ライター・ソフトウェア１９は第二の記憶装置６全体を、第二のバイナリー・ファイルとして見る。第二のコンピュータ・システム３によって受領されたデータ・ブロック１５は次いで、ライター・ソフトウェア１９によって、オフセットをもって書き込むことによって、この第二のバイナリー・ファイルに配置される。たとえば、データ・ブロック１５はその先頭がバイト番号Xが位置する点に対応するべきであるとの情報に関連付けられており、データ・ブロック１５について、ライター・ソフトウェア１９はバイト番号Xの位置に行き、その点から、Y個のバイトを書き込む。値XおよびYは、アップロードされたデータ・ブロック１５に組み合わされているヘッダから取られる。結果として、第二のバイナリー・ファイルにおける位置Xから始まって、Y個のバイトが現われ、これらY個のバイトの内容は、第一の記憶装置５上でリーダー・ソフトウェア１８が見た第一のバイナリー・ファイルにおける位置XにあるY個のバイトの内容と同一である。換言すれば、第一の記憶装置５でのバイト番号Xにあるバイトは、第二の記憶装置６でのバイト番号Xにあるバイトと同一であり、第一の記憶装置５でのバイト番号X＋1にあるバイトは、第二の記憶装置６でのバイト番号X＋1にあるバイトと同一である、などとなる。
【００４７】
リーダー・ソフトウェア１８によって第一のバイナリー・ファイルを読んで、データ・ブロック１５に分割し、それらをライター・ソフトウェア１９によって書き込むことは、第一のバイナリー・ファイル全体の長さにわたって繰り返される。それぞれリーダー・ソフトウェア１８およびライター・ソフトウェア１９が見る第一および第二のバイナリー・ファイルは、それぞれ第一および第二の記憶装置５、６の表面に直接接続される。第一のバイナリー・ファイルのすべての部分が第二のバイナリー・ファイルにコピーされたらすぐに、第一の記憶装置５に含まれるすべての情報が全体的に、第二の記憶装置６にコピーされたことになる。
【００４８】
ハブ・サービスのための、より高いパフォーマンスが必要とされる場合、あるいはネットワーク速度が負荷均衡される（load-balanced）べきである場合には、ハブ・サービスは、いかなる仮想または物理マシンによって実行されてもよい。ハブ・サービスを配備するために、図１には示されていない第三のブート媒体が、任意の仮想または物理マシンでハブ・サービスを開始するために使われる。その後、ハブ・サービスは、完全に前記仮想または物理マシンのメイン・メモリにおいて走り、仮想または物理マシンの記憶装置のもとの内容は影響されない。ワークロード移行が終了してハブ・サービスがもはや必要とされなくなった後に、第三のブート媒体なしで仮想または物理マシンをリスタートすることによって、仮想または物理マシンはそのもとの状態に復元されることができる。
【００４９】
あるいはまた、第三のコンピュータ・システム４のハブ・サービスは、たとえば任意の既存のPHPホスト空間に配備されることができる。前記PHPホスト空間上で第三のコンピュータ・システムを実装するために、このサービスのためのすべての情報を含むパッケージが、たとえばファイル転送プロトコルFTPを使ってアップロードされることができる。しかしながら、該パッケージをアップロードするための他のいかなる手段も使用できる。記載される実施形態において、前記パッケージは、10メガバイトより大きくないサイズをもつ。たとえば、図１の実施形態において、前記パッケージは、移行プロセスを実行するハブ・サービスのバックエンドのための1.2メガバイトの実行可能プログラム・コードと、ハブ・サービスのためのフロントエンドのための4.2メガバイトの実行可能プログラム・コードとを含む。該フロントエンドは、図２に関連してさらに述べる、ウェブ・ベースのグラフィカル・ユーザー・インターフェース、ウェブGUIを含む。しかしながら、本発明によれば、一つのフロントエンドは複数のバックエンドを制御でき、よって、フロントエンドの配備は任意的である。少なくとも一つのフロンエンドへのアクセスが必要とされるだけであり、そのフロントエンドはどこに配備されてもよく、バックエンドが走っているサーバーのポート80に到達することができる。フロントエンドは、たとえばHTMLおよびJavascriptのみを用いて実装可能である。
【００５０】
第三のコンピュータ・システム４はデータ・ブロック１５に対応するデータ１５０を転送するだけなので、移行プロセスにおけるあらゆるCPU集約的な作業は本方法によれば、第一のコンピュータ・システム２および第二のコンピュータ・システム３によってなされる。よって、第三のコンピュータ・システム４は、同時に、第三のコンピュータ・システム４の各CPUまたはCPUコアごとのいくつかの並行した移行のためのハブとして使用されることができる。
【００５１】
図２ないし図７は、本発明のある実施形態に基づく移行方法のフローチャートを示している。図２は方法の概観を示し、図３ないし図７は図２のいくつかの段階をより詳細に示している。図２ないし図７に基づく方法は、図１のコンピュータ構成１に適用されてもよい。よって、図２ないし図７の実施形態に関してなされるあらゆる言及は、図１の実施形態に適用可能であってもよく、逆も成り立つ。
【００５２】
図２の段階２０では、第三のコンピュータ・システム４を第三のブート媒体からブートすることによって、第三のコンピュータ・システム４はワークロード移行のためのハブとしてセットアップされる。図２に基づくフローチャートの段階２０は任意的である。ハブとしては、ウェブ・サーバーを提供する、あらかじめ構成された第三のコンピュータ・システムも使用できる。ハブは、ウェブ・ベースのグラフィカル・ユーザー・インターフェース（ウェブGUI）を通じて、インターネット８を介してアクセスされることができる。ハブをセットアップする間、たとえば第一のコンピュータ・システム２についておよび第二のコンピュータ・システム３についてのログイン・データ、たとえばユーザー名およびパスワードが、生成され、ハブのログイン／パスワード・データベースにおいて記憶される。それらのログイン・データは、第一のコンピュータ・システム２で走るリーダー・ソフトウェア１８および第二のコンピュータ・システム３で走るライター・ソフトウェア１９によって、第一のデータ・リンク１３または第二のデータ・リンク１４を通じてハブにアクセスするために使用される。
【００５３】
データ・リンク１３、１４は、第一のコンピュータ・システム２および第二のコンピュータ・システム３からハブへのネットワーク経路を提供するが、それらのログイン・データとともに第一または第二のコンピュータ・システム２、３によってなされる要求だけが、ハブによって応答される。第一および／または第二のコンピュータ・システム２、３が誤ったログイン・データをもつ場合には、ハブはそれらの要求には応答しない。ログイン・データを使った第一および第二のコンピュータ・システム２、３からの要求を介した通信のそのような実装は、ハブにおけるマルチテナントを可能にする。ログイン・データは、同時にハブに接続される複数のリーダーおよびライターの間の区別をするために使われる。ログイン・データは、第一のコンピュータ・システム２に、および該当するなら第二のコンピュータ・システム３にインストールされている主オペレーティング・システムとは独立である。ハブが事前構成されている場合、そのようなログイン・データはハブにすでに存在していてもよく、あるいは後の任意の時点においてウェブGUIを使ってハブで生成されてもよい。たとえば、新しいワークロード移行が計画されるときは常に、新たなログイン・データが生成されるのでもよい。
【００５４】
段階２１では、第一のコンピュータ・システム２がリーダーとしてセットアップされ、第一のデータ・リンク１３が移行のためにセットアップされる。段階２２では、第二のコンピュータ・システム３がライターとしてセットアップされ、第二のデータ・リンク１４が移行のためにセットアップされる。段階２１、２２の両方は、それぞれ図３および図４に関して、より詳細に記載される。
【００５５】
その後の段階２３では、第三のコンピュータ・システム４のユーザーは、ウェブ・ブラウザーを介してハブにアクセスし、第一のデータ・リンク１３および第二のデータ・リンク１４のセットアップが成功であった場合に移行することを望むワークロードを選ぶ。この実施形態では、ハブにアクセスするためのウェブ・ブラウザーは、インターネット８に接続された任意のコンピュータ・システムを介してアクセスされうる。リーダーはハブに、ディスクを含むリーダーの記憶装置５についての情報を送り、該情報はハブのウェブGUIに表示される。それにより、第三のコンピュータ・システム４のユーザーは、移行させたいワークロードを選ぶことができる。
【００５６】
追加的に、第三のコンピュータ・システム４のユーザーは、バッファ・サイズ、暗号化モード、圧縮レベルおよびデータ・ブロック１５のデータ・ブロック・サイズを、ハブのウェブGUIを通じて選択することができる。バッファ・サイズは、不揮発性の第三の記憶装置７においてまたは第三のコンピュータ・システム４の揮発性記憶において、データ・ブロック１５を中間的に記憶するために割り当てられるスペースである。
【００５７】
暗号化は、移行プロセスのために使われるネットワークのセキュリティー・レベルに依存してオンおよびオフにされることができる。たとえば、ネットワークが安全であれば、第一および第二のコンピュータ・システム２、３のCPU処理の量を減らすことによって移行時間を短縮するために、暗号化はオフにされることができる。ネットワークはこの文脈では、リーダー、ハブ、ライターおよびそれらの間のリンクが不正なアクセスから保護されるネットワーク、たとえばデータセンターにおける内部メンテナンスLANの孤立したサブネットである。
【００５８】
よりよい圧縮レベルは、データ・ブロックを、よりよい圧縮比で圧縮する。よりよく圧縮されたデータ・ブロックの転送は、消費する時間およびネットワーク資源が少なくなる。しかしながら、圧縮プロセスにおいて時間および電気のような計算資源が消費される。
【００５９】
データ・ブロック・サイズは、記載される実施形態では、手動で選ばれることができる。技術的には、一バイトという最小サイズが選ばれてもよいが、最小ブロック・サイズとして1メガバイトから始まるオプションのみを提供することが有利であることがある。
【００６０】
段階２４では、ハブは、選ばれたワークロードの移行を開始するようリーダーに要求する。要求を開始するために、リーダーは、HTTPを介してハブからの命令を連続的に問い合わせる。各問い合わせは、リーダーによって、図３に関連して詳細に述べるような、いわゆる「POSTメソッドによるフォーム提出」をエミュレートすることによって第一のデータ・リンク１３をセットアップすることによってなされる。リーダーは、HTTPを介してハブに連続的にアクセスする。この実施形態では、移行プロセスのためのすべての命令は、ハブによって提供される。しかしながら、命令をリーダーに送達するために、リーダーは連続的に命令要求をハブに送る。ハブ自身は、この実施形態では、リーダーに連絡する手段をもたない。ファイアウォールまたは他のネットワーク・セキュリティーのために、ハブとリーダーとの間のHTTPを介したこの通信は、ウェブ・ページへの通常のアクセスに似る。したがって、移行を許可するためにネットワーク・セキュリティーの変更は必要とされない。
【００６１】
段階２５では、第一のコンピュータ・システム２が、ブロック・デバイス・レベルで、移行されるべきワークロードを読んでデータ・ブロック１５にし、それらのデータ・ブロック１５を、図５との関連でより詳細に述べるように処理する。段階２６では、図１に記載されるようなデータ・ブロック１５に対応するデータ１５０が第三のコンピュータ・システム４にアップロードされ、第三のコンピュータ・システムによって、第二のコンピュータ・システム３によるダウンロードのために利用可能にされ、第二のコンピュータ・システム３によってダウンロードされる。これは図６に関連してより詳細に記載される。段階２７では、データ１５０は第二のコンピュータ・システム３によって処理されてデータ・ブロック１５が取得され、それらのデータ・ブロック１５がブロック・デバイス・レベルで第二の記憶装置６に書き込まれる。これは図７に関連してさらに述べる。
【００６２】
段階２５ないし２７は、すべてのデータ・ブロック１５がライターにコピーされるまで反復的に実行される。すべてのデータ・ブロック１５がライターにコピーされたかどうかは、図７において後述されるように、ハブによって、ライターから受領される確認に基づいて判断される。ハブがすべてのデータ・ブロック１５がライターによって成功裏にダウンロードされ、書き込まれたと判定するとき、ハブは「移行完了」信号をリーダーおよびライターに提供する。段階２５ないし２７のいくつかまたは一部は、同時に実行されてもよい。一般に、第一のデータ・ブロック１５に対応するデータ１５０がリーダーからハブにアップロードされるとすぐ、リーダーは第二のデータ・ブロック１５をロードして、第一のデータ・ブロック１５がダウンロードされて第一のデータ・ブロックがライターによって第二の記憶装置６に書き込まれている間に、第二のデータ・ブロック１５を処理する。
【００６３】
複数の第一の記憶装置および複数の第二の記憶装置がそれぞれ第一および第二のコンピュータ・システム２、３にインストールされている場合には、一つの記憶装置からのワークロードの移行が終了した後、プロセスは次の記憶装置に切り換えられる。上記の方法に基づくプロセス全体が、複数の記憶装置のすべてのワークロードの移行が終了するまで、繰り返される。第三のコンピュータ・システム４のユーザーは、ウェブGUIにおいて、どの記憶装置を移行し、どれを省略するかを選択できる。
【００６４】
追加的に、ウェブGUIは、第一と第二のコンピュータ・システム２、３の間で記憶装置を「ペアリングすること」を許容する。通常、移行は第一の記憶装置Aから第二の記憶装置Aに、第一の記憶装置Bから第二の記憶装置Bに、第一の記憶装置Cから第二の記憶装置Cに、などとなされる。記憶装置を「ペアリング」することは、第三のコンピュータ・システム４のユーザーが、たとえば第一の記憶装置Aから第二の記憶装置Bに、第一の記憶装置Bから第二の記憶装置Cに、第一の記憶装置Cから第二の記憶装置Aに移行することを選ぶことを、あるいは記憶装置Cを完全に省略することを許容する。この機能は、第一および第二の記憶装置５、６のサイズまたはケーブルが第一および第二のコンピュータ・システム２、３の間で同一に対応していないことがありうる場合に、有利でありうる。第三のコンピュータ・システム４のユーザーは、何らかの制限のために正しくない構築がされている場合または変更されている場合に、第二のコンピュータ・システム３のハードウェアを再構成設定または再構築する必要なしに、ワークロードにおける記憶装置の順序を変更することを決定できる。
【００６５】
すべてのデータ・ブロック１５が第二の記憶装置６に書き込まれた後、段階２８および２９において、第一のコンピュータ・システム２および第二のコンピュータ・システム３は、ブート媒体１１、１２なしにリブートされる。
【００６６】
第一のコンピュータ・システム２をリブートした後、第一のコンピュータ・システム２はそのもとの状態にある。ワークロードを抽出および送信するために、第一のコンピュータ・システム２に対して何の修正も実行されていない。第二のコンピュータ・システム３は今や第二の記憶装置６上に、第一のコンピュータ・システム２にインストールされた主オペレーティング・システムのコピーを含め、第一のコンピュータ・システム２の第一の記憶装置５のデータの同一のコピーを有する。第二のコンピュータ・システム３（たとえば新たなハードウェア・ドライバ）での動作のためにクローニングされたシステムを用意するために、何らかの修正が必要とされる場合、それらの修正は第二のコンピュータ・システム３上で実行される。あるいはまた、ユーザーのニーズおよび結果として生じる移行プランに依存して、そのような修正は第一のコンピュータ・システム２で実行されてもよい。
【００６７】
移行のプロセスの間に、移行されるべきワークロードのある種の部分が源システム（すなわち第一のコンピュータ・システム２）上で修正された場合、宛先システム（すなわち第二のコンピュータ・システム３）は、可能な最小数のデータ・ブロック１５を移行し直すことによって、迅速に更新される。そのような修正はたとえば、新たなデータベース記録、新たなログ、インストールされた新たなソフトウェア／更新などを含んでいてもよい。移行されるべきワークロードのそのような修正は、移行が完了する前に移行が中断され、第一のコンピュータ・システム２がその主オペレーティング・システムをもって再びブートされ、移行が後刻、継続される場合に、起こりうる。この場合、第一のコンピュータ・システム２が移行セッションと移行セッションの間に日々の動作を実行し、よって、上述した修正にさらされることができる。
【００６８】
移行を再開するときに第一のコンピュータ・システム２へのそのような変更を検出するために、第一のコンピュータ・システム２の移行されるべきワークロードが何らかの修正を受けたかどうかの検査が、ハブ上のウェブGUIを通じて第三のコンピュータ・システム４のユーザーによって手動でトリガーされてもよい。たとえば、ウェブGUIは、移行プロセスが再開されるときに、そのような検査が必要とされるかもしれないというメッセージを、第三のコンピュータ・システム４のユーザーに対して示してもよい。たとえば、移行プロセスがいくつかのセッションに分割される場合、そのような修正についての検査なしにすべてのセッションを実行して、最後のセッションが完了した後に、第一のコンピュータ・システム２上の移行されるべきワークロードと第二のコンピュータ・システム３上のクローニングされたワークロードとの間のあらゆる相違をなくすために、最終的な検査を実行することが十分でありうる。あるいはまた、ワークロード移行が中断されて後刻再開される場合に自動検査を実装することが可能であろう。そのような自動検査は、移行が再開されるたびに実行されてもよく、あるいはハブがすべてのデータ・ブロック１５が成功裏に移行されたと判定した後に実行されてもよい。
【００６９】
修正についての上記の検査は、リーダーおよびライター両方でデータ・ブロック１５のフィンガープリント・マップを生成することによってなされる。それらのフィンガープリント・マップは比較のためにハブに送られる。たとえばフィンガープリント・マップは、図５との関連で詳細に述べる圧縮可能性マップと同様の内容をもつが、圧縮比の代わりに、各データ・ブロック１５についてのフィンガープリントを保持する。そのようなフィンガープリントは、たとえば、各データ・ブロック１５をたった数バイトのストリングに短縮するハッシュ関数によって計算される。たとえば、8メガバイトのサイズのデータ・ブロック１５が、16バイトの一意的なストリングに短縮されうる。したがって、フィンガープリント・マップをハブにアップロードするためのフィンガープリント・マップのサイズが最適に縮小される。リーダーおよびライターからのフィンガープリント・マップの差が識別され、ハブは、それらのフィンガープリント・マップにおけるミスマッチに基づいて、どのデータ・ブロック１５が再びリーダーから要求されるかのプランを生成する。よって、上述した方法に従って段階２５ないし２７は繰り返される。
【００７０】
以下では、段階２１、２２、２５、２６、２７がそれぞれ図３、図４、図５、図６、図７に従ってより詳細に記述される。
【００７１】
図３は、第一のコンピュータ・システム２および第一のデータ・リンク１３のセットアップのフローチャートである。段階３０では、そこからワークロードが第二のコンピュータ・システム３に移行されるところの、第一の主オペレーティング・システムを走らせている第一のコンピュータ・システム２がシャットダウンされる。続く段階３１では、第一のコンピュータ・システム２が移行プロセスのためのリーダーとしてセットアップされる。第一のコンピュータ・システム２はリスタートされ、第一のブート媒体１１からブートされる。第一のブート媒体１１からブートすることによって、第一のコンピュータ・システム２は第一の補助オペレーティング・システム１６をそのメイン・メモリにロードし、第一のブート媒体１１に記憶されていたリーダー・ソフトウェア１８の実行を開始する。
【００７２】
段階３２では、第一のデータ・リンク１３が初めてリーダーによって開始される。そうするために、ネットワーク・インターフェースおよびIPアドレス取得方法が選ばれることができる。また、ハブについてのアクセス情報、たとえば段階２０で述べた、第三のコンピュータ・システム４にアクセスするためのウェブ・アドレスおよび第一のコンピュータ・システム２のためのログイン・データが入力されることができる。第一のデータ・リンクがセットアップされ、データまたは情報が送られるたびに、それはHTTPを介してなされ、ウェブサイトとの通常の対話をエミュレートする。特に、いわゆる「POSTメソッドによるフォーム提出」をエミュレートする。POSTメソッドは、アップロード・データのデータ長およびデータ型に関して制約されず、そのことは本稿に記載される方法に関して有利である。しかしながら、POSTにおけるデータ長は、ハブが実装されているウェブ・サーバー上の設定によって制約されることがある。いくつかのホスティング空間では、最大データ長はきわめて低く、たとえば2ないし4メガバイトである。たいていの場合、そのような制限は、ホスティング空間の管理者からの許可を求めることなく、ハブ・バックエンドから直接発されるPHPコマンドを使って上げられることができる。可能なときはいつでも、ハブは、必要とされるブロック・サイズを受け入れるためにこの限界を上げようとする。上げることがホスティング空間の管理者によって無効にされている場合には、ユーザーは、より小さなブロック・サイズを選ぶ必要がある。あるいはまた、HTTPSおよびポート443を介した通信が使われてもよいが、この実施形態では、HTTPによってアップロードされるデータ・ブロックは暗号化されるので、この方法のデータ・セキュリティー・レベルは、HTTPSを使うことに等しいまたはそれ以上となる。HTTPを使うことは、より簡単なネットワーク・アクセスを可能にし、HTTPSヘッダは、ある種の仕方で構成されたプロキシ・サーバーおよび／またはファイアウォールを通過した後には、破損したり、はぎ取られたりすることがある。その結果、通信の中断またはハブに到達できないことが生じうる。
【００７３】
リーダーを認証するよう、要求がリーダーからハブに送られる。第一のデータ・リンク１３を介してリーダーからハブにメッセージが送られる。メッセージは、平文のログインおよび鍵によって暗号化された部分を含む。鍵は、リーダーのための以前に入力されたパスワードから暗号学的に導出される。それは段階２０において生成される。パスワードはリーダーからハブに送られない。図１に関して述べたように、第一のデータ・リンク１３はステートレスである。したがって、認証の要求が送られた後、第一のデータ・リンク１３は持続されない。続く移行プロセスにおいて第一のデータ・リンク１３を通じて通信が実施されるたびに、第一のコンピュータ・システム２は、上記のようにハブに対してそのアクセス権を証明しなければならない。攻撃者がパスワードを取得して移行されるデータに干渉しようとしているのだと疑われる場合には、ウェブGUIにおいてパスワードが変更される必要があるだけである。攻撃者のデータ・リンクはすぐに無効になる。次いで、パスワードはリーダー・ソフトウェア（またはライター・ソフトウェア）において更新されることができ、移行がすぐに再開される。段階３３では、ハブはリーダーを認証する。ハブが第一のコンピュータ・システム２によって送られたメッセージを受信するとき、ログイン・ストリングを使って、ハブのログイン／パスワード・データベースにおいてこのログイン・データに対応するパスワードが見出される。ハブは、見出されたパスワードから暗号学的に導出された鍵を用いて該メッセージを解読しようとする。鍵導出アルゴリズムは、リーダー側（またはライター側）で使われたものと同じである。メッセージは、解読試行後に可視になる二つの型の証明情報を含んでいる。これらの証明に基づいて、ハブは解読が成功したかどうかを判定できる。
【００７４】
証明情報は、ハブに知られているパスワードがこの特定のメッセージのためにリーダーによって使われたパスワードと同じである場合にのみ正しく計算される。証明が失敗したら、失敗が意図しないミスによって引き起こされたものか悪意によって、あるいはさらにはネットワークの障害のような伝送破損によって引き起こされたものかを問わず、メッセージは単に破棄される。メッセージは、暗号学的に強い証明の計算に基づいてのみ信頼される。力づくでそれをリバースエンジニアリングまたは攻撃することは実現可能ではない。
【００７５】
図４は、ライターとしての第二のコンピュータ・システム３と、第二のデータ・リンク１４とのセットアップのフローチャートである。段階４０ないし４２は、図３の段階３０ないし３３の前、後またはそれと並列に実行されうる。段階４０では、第二のコンピュータ・システム３が第二のブート媒体１２からブートされる。第二のコンピュータ・システム３は第二の補助オペレーティング・システム１７をその主メモリにロードし、第二のブート媒体１２に記憶されているライター・ソフトウェア１９の実行を開始する。段階４１では、第二のコンピュータ・システム３と第三のコンピュータ・システム４との間の第二のデータ・リンク１４が初めてセットアップされる。段階４２では、ライターは、ハブによって認証される。段階４１および４２は、図３の段階３２および３３と同様に実行される。
【００７６】
図５は、図２の段階２５を詳細に説明するフローチャートである。ここで、第一のコンピュータ・システム２がブロック・デバイス・レベルで、移行されるべきワークロードを読んでデータ・ブロック１５にして、それらのデータ・ブロック１５を処理する。
【００７７】
この実施形態では、段階５０において、圧縮試験が実行される。ただし、圧縮試験は任意的である。たとえばネットワーク・トラフィック整形が重要でない場合には圧縮試験はスキップされてもよい。圧縮試験を実行しないことによって、時間が節約されうる。しかしながら、圧縮試験を実行することは、移行プロセスの間に、圧縮試験から得られた戦略に基づいて移行プロセスを実行することによって、それ以上の時間を節約することがありうる。リーダーは、ブロック・デバイス・レベルで、選ばれたワークロードを第一の記憶装置５から読む。リーダーは、前に選ばれたデータ・ブロック・サイズのデータ・ブロック１５への読み込みの間に、第一の記憶装置５から読まれた選ばれたワークロードを分割する。データ・ブロック１５は第一のコンピュータ・システム２のメイン・メモリにロードされ、圧縮され、次いで、アップロードすることなくメイン・メモリから破棄される。メイン・メモリ消費を最小化するためである。この圧縮試験の間に、リーダーは、圧縮可能性マップを生成する。圧縮可能性マップは、ワークロードの空のデータ・ブロックについての情報と、それぞれの空でないデータ・ブロック１５についてどのように良好な圧縮が達成できるかについての情報とを含む。次いで、圧縮可能性マップは、リーダーからハブに送られる。圧縮可能性マップはたとえば、コンマ区切りの値（CSV:  comma-separated  values）ファイルと同様のテキスト・ファイルであって、ブロック番号（block  number）、バイト単位のブロック・サイズ、空ブロックであるかどうか、もし空でなければ各データ・ブロック１５についての圧縮比に関する項目を含む。この実施形態における圧縮比は、0.0から1.0までの間の端数であり、小数位の数〔小数第何位までか〕は変わりうる。1.0の値は圧縮なしに似る。0.0に近い値は非常に良好な圧縮に似る。
【００７８】
まれな場合には、データの圧縮可能性はあまりに悪く、レートが1.0より大きな数、たとえば1.02を示す。そのような情報も価値がある。十分に悪い圧縮可能性をもつすべてのデータ・ブロック１５が圧縮なしに単純に移行されることになるからである。通例、悪い圧縮可能性は、遅い、CPUヘビーな圧縮を引き起こす。一般に、0.9〜0.95より高い圧縮比は、悪い圧縮可能性と考えることができる。データ・ブロック１５が実際に移行されるときにそのようなデータ・ブロック１５の圧縮を選択的に省略することによって、移行プロセスの間にCPU時間が節約できる。
【００７９】
ハブは段階５１において、第一のコンピュータ・システム２から一つのデータ・ブロック１５を要求する。図２に関して述べたように、図２の段階２５ないし２７は繰り返される。この反復されるプロセスの間にには、任意的な段階５０はもちろん省略され、段階２７が完了したが移行プロセスはまだ完了していない場合、プロセスは段階５１をもって再開する。この実施形態では、要求は、後述するように、圧縮可能性マップの情報に基づく。ハブから要求を受領するために、上述したようにリーダーがハブから命令を要求するたびに第一のデータ・リンク１３をセットアップすることによって、リーダーは、いまだハブからの命令を連続的に要求している。段階５２では、リーダーは、図１に関連して詳細に説明したように、ブロック・デバイス・レベルで第一の記憶装置５から要求されたデータ・ブロック１５を読む。
【００８０】
段階５３では、要求されたデータ・ブロック１５を圧縮し、暗号化するために、要求されたデータ・ブロック１５は、第一のコンピュータ・システム２のメイン・メモリにロードされる。データ・ブロック１５をメイン・メモリにロードすることは、選ぶことのできるデータ・ブロック・サイズに上限を与える。利用可能なメイン・メモリのサイズより大きなデータ・ブロック１５は扱うことができない。安定した移行プロセスを保証するために、比較的小さなデータ・ブロック・サイズのデータ・ブロック１５については、データ・ブロック・サイズのサイズの少なくとも八倍の容量をもつメイン・メモリをもつ第一のコンピュータ・システム２を使うことが有利でありうる。比較的大きなデータ・ブロック・サイズについては、データ・ブロック・サイズの三倍のサイズの第一のコンピュータ・システム２のメイン・メモリの容量で十分でありうる。それらの差は、動作のためにRAMを食う補助オペレーティング・システム、この実施形態ではリナックス・システムによって引き起こされる。小さなデータ・ブロック・サイズでは、オペレーティング・システムがRAMを食う割合がより顕著になる。たとえば、32メガバイトのデータ・ブロック・サイズを使っているときは、256メガバイトのRAMのメイン・メモリ容量がこの実施形態において必要とされる。暗号化プロセスを実装するためのソフトウェアは、リーダー・ソフトウェア１８に含まれる。暗号化のための鍵は、たとえばリーダーをセットアップする間に、第一のコンピュータ・システム２のユーザーによって入力され、第一のコンピュータ・システム２の揮発性メモリに記憶される。しかしながら、この暗号化鍵は、図３に関して述べた入力パスワードから暗号学的に導出される鍵と同じではない。入力パスワードから暗号学的に導出される鍵は、ハブとの認証およびヘッダの暗号化のために使われる。ここで記載される暗号化鍵は、データ・ブロック１５の保護のために使われる。代替的に、暗号化鍵を第一のブート媒体１２上に記憶することが可能である。しかしながら、鍵は、ハブにも他のいかなるコンピュータ・システムにも送られない。
【００８１】
図６は、図２の段階２６をより詳細に記載するフローチャートである。段階６０では、圧縮され暗号化されたデータ・ブロック１５がリーダーからハブにアップロードされる。圧縮され、暗号化されたデータ・ブロック１５は、図１との関連で述べたヘッダと組み合わされて、前記データ・ブロック１５に対応するデータ１５０を形成する。よって、データ１５０をハブにアップロードすることは、リーダーからハブへの通常のウェブ・ページ・アクセスに似る。そうするために、もう一つの第一のデータ・リンク１３がリーダーとハブの間にセットアップされる。この実施形態では、データ１５０のアップロードは、上記で詳細に説明したように、「POSTメソッドによるフォーム提出」をエミュレートすることによってなされる。
【００８２】
段階６１では、ハブによって受領されるデータ１５０は公開される、すなわちハブによってダウンロードのために利用可能にされる。この実施形態では、ハブはデータ１５０をいかなる仕方でも修正しない。しかしながら、代替的な実施形態では、データ１５０はさまざまな仕方でハブによって修正されてもよい。
【００８３】
段階６２では、データ１５０がハブによってダウンロードのために利用可能にされた後、ライターがデータ１５０をダウンロードする。ライターによるハブからのデータ１５０のダウンロードは、リーダーからハブへのデータ１５０のアップロードと同様になされる。ライターは、ハブからの命令を連続的に問い合わせている。各問い合わせは、ライターとハブとの間の第二のデータ・リンク１４を「POSTメソッドによるフォーム提出」に従ってセットアップすることによってなされる。データ・ブロック１５に対応するデータ１５０がハブでダウンロードのために利用可能であれば、ライターの問い合わせは、データ・ブロック１５に対応するそのデータ１５０をハブからダウンロードする命令をもって応答される。しかしながら、いくつかのデータ・ブロック１５に対応するデータ１５０がハブの揮発性メモリまたは不揮発性記憶装置７にバッファリングされる場合には、ハブはデータ・ブロック１５に対応するデータ１５０を、ライターによってダウンロードされる順序で、待ち行列に入れる。その場合、ハブは、諸データ・ブロック１５に対応するデータ１５０のどれが待ち行列において次であるかを判断し、ライターに該データ１５０をダウンロードするよう命令する。そのような待ち行列の順序は、たとえば、圧縮可能性マップが任意的な段階３０において生成されていた場合には、圧縮可能性マップに基づいていてもよい。圧縮可能性マップが生成されなかった場合には、ワークロードは、第一の記憶装置５に現われる順序での諸データ・ブロック１５として処理されてもよい。
【００８４】
図７は、図２の段階２７をより詳細に記載するフローチャートである。段階７０では、ライターは、第二のコンピュータ・システム３のメイン・メモリにおけるデータ・ブロック１５に対応するダウンロードされたデータ１５０を解読し、圧縮解除する。第二のコンピュータ・システム３のメイン・メモリの容量は、段階５３に関しての第一のコンピュータ・システム２のメイン・メモリの容量に関して述べたのと同様の仕方で、データ・ブロック・サイズと相関する。解読のための鍵は、たとえばライターをセットアップする間に、第二のコンピュータ・システム３のユーザーによって入力され、第二のコンピュータ・システム３の揮発性メモリに記憶される。あるいはまた、第二のブート媒体１２上に解読のための鍵を記憶することが可能である。解読プロセスを実装するためのソフトウェアは、ライター・ソフトウェア１９に含まれる。段階７１では、ライターは、ダウンロードされたデータ１５０から取り出されたデータ・ブロック１５を、図１に関して詳細に説明したように、ブロック・デバイス・レベルで第二の記憶装置６に書き込む。
【００８５】
その後の段階７２において、ライターは、データ・ブロック１５が第二の記憶装置６に無事書き込まれたかどうかの試験を実行する。データ・ブロック１５が無事書き込まれたか否かは再読み出し試験に基づいて判定される：データ・ブロック１５は、第二の記憶装置６に書き込まれた後に第二のコンピュータ・システム３のメイン・メモリから破棄される。データ・ブロック１５のフィンガープリントのみがメイン・メモリにおいて保持される。その後、このデータ・ブロック１５がライターによって、第二の記憶装置６から第二のコンピュータ・システムのメイン・メモリに読み込まれ、新たなフィンガープリントが計算される。新たなフィンガープリントおよびメイン・メモリに残っていたフィンガープリントが一致すれば、データ・ブロック１５は無事書き込まれたと確認される。それらのフィンガープリントが一致しない場合には、ライターは段階６２に戻って、ハブから同じデータ・ブロック１５を再ダウンロードする。このプロセスは、データ・ブロック１５の無事書き込みが確認されるまで、繰り返されてもよい。
【００８６】
その後の段階７３では、データ・ブロック１５が第二の記憶装置６に無事書き込まれた後、ライターは、「データ・ブロック番号Xが確認されました！」とハブに確認を提出する。データ・ブロック１５は、ライターからの該確認をハブが受信した後になってハブから削除されるだけである。ハブはこれらの確認を収集して、移行の進展を追跡し、どのデータ・ブロック番号をリーダーから次に要求すべきかを決定し、完了までに残っている移行時間の予測を計算する。ハブは、この情報に依存して、図２に関して述べたように移行プロセスが完了したかどうかを判断もする。
【００８７】
何らかの理由により移行プロセスを実行するためのネットワーク接続が利用可能でない場合には、オフライン移行が実行されてもよい。オフライン移行のためには、上記の方法は実行されるが、データ・ブロック１５を第三のコンピュータ・システム４にアップロードする代わりに、データ・ブロック１５は一時的バッファに移送される。そのような一時的バッファはたとえば、第一の補助システム１６が走っている時間の間に第一のコンピュータ・システム２に接続された外部記憶装置であってもよい。
【００８８】
たとえば、一時的バッファは、外部USBハードディスクまたはUSBメモリースティックであってもよい。あるいはまた、オフライン移行は、より侵入的な仕方で、第一のコンピュータ・システム２のマザーボードまたは記憶コントローラにケーブル（SATA、SASなど）を取り付けることによって第一のコンピュータ・システム２に内部ハードディスクを追加することによって、第一のコンピュータ・システム２の記憶アレイのスロットに該ディスクを挿入することによって、あるいは仮想環境ではホスト・マシンにディスクを取り付けてそれを第一のコンピュータ・システム２にマッピングすることによってなされてもよい。最後のケースにおいては、第一のコンピュータ・システム２は前記ホスト・マシンにおけるゲストである。
【００８９】
一時バッファは次いで、物理的に第二のコンピュータ・システム３まで運ばれ、一時バッファのデータ・ブロック１５は第二のコンピュータ・システム３の第二の記憶装置６に書き込まれる。第二の記憶装置６にデータ・ブロック１５を書き込むことは、上記のような第一のコンピュータ・システム２と一時バッファとの間の以前にセットアップされた接続と同様にして、一時バッファと第二のコンピュータ・システム３との間の接続をセットアップすることによってなされる。ワークロードのデータ・ブロック１５への分割のため、外部USBディスク、USBメモリースティックまたは他のポータブル記憶装置のようなポータブル記憶装置に収まるには大きすぎるワークロードも、この方法によってオフライン移行されることができる。それはたとえば、物理的な行ったり来たりを何回か繰り返すことによる、あるいは複数のそのようなポータブル記憶装置を同時に使うことによる。
【００９０】
一時バッファは、ハブにおけるのと同じ型のバッファであるが、バッファ・サイズは、図２の段階２８に関して述べたように、一時バッファ全体の記憶スペース・サイズに設定される。ハブにおけるのと同じバッファなので、この一時バッファの物理的な移転の間、データ秘匿性が維持される。暗号化鍵はリーダーおよびライターのほかにはどこにも記憶されない。一時バッファが物理的に盗まれても、データは読めないままである。
【００９１】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
第一のコンピュータ・システムから第二のコンピュータ・システムにワークロードを移行する方法であって、前記第一および第二のコンピュータ・システムはデータ・ネットワークに接続され、当該方法は：
・前記データ・ネットワークを介した前記第一のコンピュータ・システムから第三のコンピュータ・システムへの第一のデータ・リンクおよび前記第二のコンピュータ・システムから前記第三のコンピュータ・システムへの第二のデータ・リンクをセットアップする段階であって、前記第一および第二のデータ・リンクは、それぞれ前記第一および第二のコンピュータ・システムによって開始される、段階と；
・前記第一のコンピュータ・システムによって、前記第一のコンピュータ・システムの第一の記憶装置から、ブロック・デバイス・レベルで、移行されるべきワークロードを読む段階と；
・前記第一のコンピュータ・システムによって、移行されるべきワークロードを、あらかじめ定義されたサイズの複数のデータ・ブロックに分割する段階と；
・前記第一のコンピュータ・システムによって、前記複数のデータ・ブロックに対応するデータを前記第一のコンピュータ・システムから前記第一のデータ・リンクを介して前記第三のコンピュータ・システムに逐次的にアップロードする段階と；
・前記第二のコンピュータ・システムによって、前記複数のデータ・ブロックに対応するデータを、前記第二のデータ・リンクを介して前記第三のコンピュータ・システムから前記第二のコンピュータ・システムにダウンロードする段階と；
・前記第二のコンピュータ・システムによって、前記複数のデータ・ブロックを前記第二のコンピュータ・システムの第二の記憶装置に書き込み、それにより、前記第一のコンピュータ・システムから移行されるべきワークロードの同一のコピーが生成される、段階とを含む、
方法。
（付記２）
前記ワークロードを移行することが、前記第一の記憶装置に記憶されているデータおよび／またはオペレーティング・システムおよび／またはアプリケーションを含むパーティションおよび／またはディスク・イメージを前記第二の記憶装置にコピーすることを含む、付記１記載の方法。
（付記３）
・前記複数のデータ・ブロックに対応するデータをアップロードする前に、前記第三のコンピュータ・システムによって、前記複数のデータ・ブロックを前記第一のコンピュータ・システムに要求する段階をさらに含む、
付記１記載の方法。
（付記４）
・前記データをダウンロードする前に、前記第三のコンピュータ・システムによって、前記複数のデータ・ブロックに対応するデータが前記第二のコンピュータ・システムによってダウンロードされることを命令する段階をさらに含み、前記第三のコンピュータ・システムは、前記複数のデータ・ブロックに対応するどのデータが次にダウンロードされるべきかを決定する、付記１記載の方法。
（付記５）
当該方法がさらに：
・前記第一のコンピュータ・システムを第一のブート媒体からブートする段階であって、前記第一のブート媒体は、第一の補助オペレーティング・システムと、前記第一のデータ・リンクをセットアップし、移行されるべきワークロードを読み、ワークロードを前記複数のデータ・ブロックに分割し、前記複数のデータ・ブロックに対応するデータを前記第一のコンピュータ・システムから前記第三のコンピュータ・システムに逐次的にアップロードするための実行可能なプログラム・コードとを含む、段階；および／または
・前記第二のコンピュータ・システムを第二のブート媒体からブートする段階であって、前記第二のブート媒体は、第二の補助オペレーティング・システムと、前記第二のデータ・リンクをセットアップし、前記複数のデータ・ブロックに対応するデータを前記第三のコンピュータ・システムから前記第二のコンピュータ・システムにダウンロードし、前記複数のデータ・ブロックを前記第二の記憶装置に書き込むための実行可能なプログラム・コードとを含む、段階を含む、
付記１記載の方法。
（付記６）
前記複数のデータ・ブロックの前記あらかじめ定義されたサイズは、前記第一のデータ・リンクおよび／または前記第二のデータ・リンクの品質に基づいて決定される、付記１記載の方法。
（付記７）
前記複数のデータ・ブロックの前記あらかじめ定義されたサイズは、ユーザーによって与えられる、付記１記載の方法。
（付記８）
・前記第一のコンピュータ・システムによって、あらかじめ定義されたサイズの前記複数のデータ・ブロックの各データ・ブロックを逐次的に前記第一のコンピュータ・システムのメイン・メモリにロードする段階と；
・各データ・ブロックに対応するデータをアップロードする前に、前記第一のコンピュータ・システムによって、各データ・ブロックを圧縮および／または暗号化する段階とをさらに含む、
付記１記載の方法。
（付記９）
・各データ・ブロックに対応するデータを、前記第二のコンピュータ・システムによって、前記第三のコンピュータ・システムから逐次的にダウンロードし、前記データを前記第二のコンピュータ・システムのメイン・メモリにロードする段階と；
・各データ・ブロックを前記第二の記憶装置に書き込む前に、前記第二のコンピュータ・システムによって、各データ・ブロックに対応するデータを解読および／または圧縮解除する段階とをさらに含む、
付記１記載の方法。
（付記１０）
・前記第一のコンピュータ・システムによって、移行されるべきワークロードの圧縮可能性マップを作成する段階をさらに含み、前記圧縮可能性マップはたとえば、各データ・ブロックの圧縮可能性についての情報および／またはワークロードにおいてどこに空のデータ・ブロックが位置しているかについての情報を含み、前記複数のデータ・ブロックに対応するデータをアップロードする順序は、前記圧縮可能性マップによって決定される、付記１記載の方法。
（付記１１）
・前記第二のコンピュータ・システムによって前記データ・ブロックに対応するデータをダウンロードする前に、前記複数のデータ・ブロックに対応するデータを前記第三のコンピュータ・システムの不揮発性の第三の記憶装置に中間的に記憶する段階をあさらに含む、
付記１記載の方法。
（付記１２）
前記ワークロードは前記第一のコンピュータ・システムから前記第二のコンピュータ・システムに、前記データ・ブロックに対応するデータを前記第三のコンピュータ・システムの不揮発性の第三の記憶装置に中間的に記憶することなく、移行される、付記１記載の方法。
（付記１３）
移行の間に、移行されるべきワークロードが前記第一のコンピュータ・システムで修正される場合、当該方法は：
・前記複数のデータ・ブロックのうち、前記第一のコンピュータ・システム上の源データが修正を受けたデータ・ブロックに対応するデータをアップロードし直す段階を含む、
付記１記載の方法。
（付記１４）
第一のコンピュータ・システム、第二のコンピュータ・システムおよび第三のコンピュータ・システムを有するコンピュータ構成であって、前記第一のコンピュータ・システム、前記第二のコンピュータ・システムおよび前記第三のコンピュータ・システムはデータ・ネットワークに接続され、
前記第一のコンピュータ・システムは、
・前記データ・ネットワークを介した前記第三のコンピュータ・システムへの第一のデータ・リンクをセットアップし；
・前記第一のコンピュータ・システムの第一の記憶装置から、ブロック・デバイス・レベルで、移行されるべきワークロードを読み；
・移行されるべきワークロードを、あらかじめ定義されたサイズの複数のデータ・ブロックに分割し；
・前記複数のデータ・ブロックに対応するデータを前記第一のコンピュータ・システムから前記第一のデータ・リンクを介して前記第三のコンピュータ・システムに逐次的にアップロードするよう構成されており、
前記第二のコンピュータ・システムは、
・前記データ・ネットワークを介した前記第三のコンピュータ・システムへの第二のデータ・リンクをセットアップし；
・前記複数のデータ・ブロックに対応するデータを、前記第三のコンピュータ・システムから前記第二のデータ・リンクを介してダウンロードし；
・前記複数のデータ・ブロックを前記第二のコンピュータ・システムの第二の記憶装置に書き込むよう構成されており、それにより、前記第一のコンピュータ・システムから移行されるべきワークロードの同一のコピーが生成される、
コンピュータ構成。
（付記１５）
前記第三のコンピュータ・システムは、前記第一のコンピュータ・システムおよび前記第二のコンピュータ・システムからハイパーテキスト転送プロトコル（HTTP）を介して受領される要求を処理するウェブ・サーバーであり、前記第三のコンピュータ・システムは、前記第一のコンピュータ・システムおよび前記第二のコンピュータ・システムによって送られる要求があるかどうか、ポート80上で傾聴する、付記１４記載のコンピュータ構成。
（付記１６）
前記第一のコンピュータ・システムが第一のローカル・エリア・ネットワークに位置しており、前記第二のコンピュータ・システムが第二のローカル・エリア・ネットワークに位置しており、前記第三のコンピュータ・システムが広域ネットワーク、特にインターネットに位置しており、前記第一および第二のローカル・エリア・ネットワークはそれぞれ前記広域ネットワークに接続されている、付記１４記載のコンピュータ構成。
（付記１７）
コンピュータ・プログラム・コードを有する不揮発性記憶媒体であって、前記コンピュータ・プログラム・コードは、前記第一のコンピュータ・システム、前記第二のコンピュータ・システムまたは前記第三のコンピュータ・システムのうち少なくとも一つのものの少なくとも一つの処理装置によって実行されたときに、それぞれ前記第一のコンピュータ・システム、前記第二のコンピュータ・システムまたは前記第三のコンピュータ・システムによって実行される付記１記載の方法の段階を実行する、媒体。
【符号の説明】
【００９２】
１  コンピュータ構成
２  第一のコンピュータ・システム
３  第二のコンピュータ・システム
４  第三のコンピュータ・システム
５  第一の記憶装置
６  第二の記憶装置
７  第三の記憶装置
８  インターネット
９  第一のファイアウォール
１０  第二のファイアウォール
１１  第一のブート媒体
１２  第二のブート媒体
１３  第一のデータ・リンク
１４  第二のデータ・リンク
１５  データ・ブロック
１５０  データ・ブロックに対応するデータ
１６  第一の補助オペレーティング・システム
１７  第二の補助オペレーティング・システム
１８  リーダー・ソフトウェア
１９  ライター・ソフトウェア
２０ないし２９  段階
３０ないし３３  段階
４０ないし４２  段階
５０ないし５３  段階
６０ないし６２  段階
７０ないし７３  段階
【図１】
2019003618.tif 000003
【図２】
2019003618.tif 000004
【図３】
2019003618.tif 000005
【図４】
2019003618.tif 000006
【図５】
2019003618.tif 000007
【図６】
2019003618.tif 000008
【図７】
2019003618.tif 000009
【外国語明細書】
2019003618000001.pdf