(57)【特許請求の範囲】
【請求項１】
計算機に備わるデータ転送装置であって、
データのコピーを作成するコピー手段と、
データを一時的に退避するための退避領域と、
データを自計算機外部へ送信する通信手段と、
複数の小領域から構成されるメモリの記憶データを自計算機外部へ転送する制御を行う制御手段とを有し、
前記制御手段は、
前記メモリ中の転送対象とする複数の前記小領域の中から、前記退避領域を経由して自計算機外部へ転送する前記小領域を間接転送小領域として、また、前記退避領域を経由せずに自計算機外部へ転送する前記小領域を直接転送小領域として、それぞれ選択し、
自計算機から前記メモリへの更新を停止させた期間内に、前記間接転送小領域として選択した前記小領域の記憶データを前記コピー手段を使用して前記メモリから前記退避領域にコピーし、該コピーと並行して、前記直接転送小領域として選択した前記小領域の記憶データを前記通信手段を使用して前記メモリから自計算機外部へ転送し、
前記退避領域にコピーされた前記小領域の記憶データを、前記通信手段を使用して前記退避領域から自計算機外部へ転送する
データ転送装置。
【請求項２】
前記制御手段は、前記選択では、前記メモリ中の転送対象とする複数の前記小領域の中から前記間接転送小領域としての前記小領域と前記直接転送小領域としての前記小領域をそれぞれ１つずつ選択し、前記間接転送小領域として選択した１つの前記小領域の記憶データが前記メモリから前記退避領域へコピーする処理が完了する毎に、前記間接転送小領域および前記直接転送小領域の何れにも未だ選択されていない転送対象とする前記小領域が残っている場合に、前記間接転送小領域とする次の一つの前記小領域を選択し、また、前記直接転送小領域として選択した１つの前記小領域の記憶データが前記メモリから自計算機外部へ転送する処理が完了する毎に、前記間接転送小領域および前記直接転送小領域の何れにも未だ選択されていない転送対象とする前記小領域が残っている場合に、前記直接転送小領域とする次の一つの前記小領域を選択する
請求項１に記載のデータ転送装置。
【請求項３】
前記制御手段は、前記選択では、前記メモリ中の転送対象とする複数の前記小領域を、前記間接転送小領域と前記直接転送小領域とに二分割し、該二分割では、前記間接転送小領域として選択された全ての前記小領域の記憶データを前記コピー手段を使用して前記メモリから前記退避領域にコピーするのに必要な時間と、前記直接転送小領域として選択された全ての前記小領域の記憶データを前記通信手段を使用して前記メモリから自計算機外部へ転送するのに必要な時間とのうちの最大値が最小となるように行う
請求項１に記載のデータ転送装置。
【請求項４】
前回のチェックポイント以降に更新された前記小領域のリストを記憶するログ記憶手段と、
前記メモリの前記小領域が更新されたときに前記リストを更新するメモリ管理手段と
をさらに有し、
前記制御手段は、前記リストを参照して、前記間接転送小領域および前記直接転送小領域を選択する
請求項１、２または３に記載のデータ転送装置。
【請求項５】
前記通信手段は、ＲＤＭＡ転送によりデータを転送する
請求項１乃至４の何れかに記載のデータ転送装置。
【請求項６】
前記通信手段は、ネットワークアダプタである
請求項１乃至５の何れかに記載のデータ転送装置。
【請求項７】
前記コピー手段は、ＤＭＡ転送によりデータを前記退避領域にコピーする
請求項１乃至６の何れかに記載のデータ転送装置。
【請求項８】
前記計算機は、ＦＴサーバを構成する主系の計算機であり、前記自計算機外部は、前記ＦＴサーバを構成する従系の計算機である
請求項１乃至７の何れかに記載のデータ転送装置。
【請求項９】
複数の小領域から構成されるメモリの記憶データを、計算機外部へ転送するデータ転送方法であって、
前記メモリ中の転送対象とする複数の前記小領域の中から、退避領域を経由して自計算機外部へ転送する前記小領域を間接転送小領域として、また、前記退避領域を経由せずに自計算機外部へ転送する前記小領域を直接転送小領域として、それぞれ選択し、
自計算機から前記メモリへの更新を停止させた期間内に、前記間接転送小領域として選択した前記小領域の記憶データを前記メモリから前記退避領域にコピーし、該コピーと並行して、前記直接転送小領域として選択した前記小領域の記憶データを前記メモリから自計算機外部へ転送し、
前記退避領域にコピーされた前記小領域の記憶データを、前記退避領域から自計算機外部へ転送する
データ転送方法。
【請求項１０】
前記選択では、前記メモリ中の転送対象とする複数の前記小領域の中から前記間接転送小領域としての前記小領域と前記直接転送小領域としての前記小領域をそれぞれ１つずつ選択し、前記間接転送小領域として選択した１つの前記小領域の記憶データが前記メモリから前記退避領域へコピーする処理が完了する毎に、前記間接転送小領域および前記直接転送小領域の何れにも未だ選択されていない転送対象とする前記小領域が残っている場合に、前記間接転送小領域とする次の一つの前記小領域を選択し、また、前記直接転送小領域として選択した１つの前記小領域の記憶データが前記メモリから自計算機外部へ転送する処理が完了する毎に、前記間接転送小領域および前記直接転送小領域の何れにも未だ選択されていない転送対象とする前記小領域が残っている場合に、前記直接転送小領域とする次の一つの前記小領域を選択する
請求項９に記載のデータ転送方法。
【請求項１１】
前記選択では、前記メモリ中の転送対象とする複数の前記小領域を、前記間接転送小領域と前記直接転送小領域とに二分割し、該二分割では、前記間接転送小領域として選択された全ての前記小領域の記憶データを前記メモリから前記退避領域にコピーするのに必要な時間と、前記直接転送小領域として選択された全ての前記小領域の記憶データを前記メモリから自計算機外部へ転送するのに必要な時間とのうちの最大値が最小となるように行う
請求項９に記載のデータ転送方法。
【請求項１２】
複数の小領域から構成されるメモリと、
データのコピーを作成するコピー手段と、
データを一時的に退避するための退避領域と、
データを自計算機外部へ送信する通信手段と、
前記メモリの記憶データを自計算機外部へ転送する制御を行う制御手段とを有し、
前記制御手段は、
前記メモリ中の転送対象とする複数の前記小領域の中から、前記退避領域を経由して自計算機外部へ転送する前記小領域を間接転送小領域として、また、前記退避領域を経由せずに自計算機外部へ転送する前記小領域を直接転送小領域として、それぞれ選択し、
自計算機から前記メモリへの更新を停止させた期間内に、前記間接転送小領域として選択した前記小領域の記憶データを前記コピー手段を使用して前記メモリから前記退避領域にコピーし、該コピーと並行して、前記直接転送小領域として選択した前記小領域の記憶データを前記通信手段を使用して前記メモリから自計算機外部へ転送し、
前記退避領域にコピーされた前記小領域の記憶データを、前記通信手段を使用して前記退避領域から自計算機外部へ転送する
計算機。
【請求項１３】
前記制御手段は、前記選択では、前記メモリ中の転送対象とする複数の前記小領域の中から前記間接転送小領域としての前記小領域と前記直接転送小領域としての前記小領域をそれぞれ１つずつ選択し、前記間接転送小領域として選択した１つの前記小領域の記憶データが前記メモリから前記退避領域へコピーする処理が完了する毎に、前記間接転送小領域および前記直接転送小領域の何れにも未だ選択されていない転送対象とする前記小領域が残っている場合に、前記間接転送小領域とする次の一つの前記小領域を選択し、また、前記直接転送小領域として選択した１つの前記小領域の記憶データが前記メモリから自計算機外部へ転送する処理が完了する毎に、前記間接転送小領域および前記直接転送小領域の何れにも未だ選択されていない転送対象とする前記小領域が残っている場合に、前記直接転送小領域とする次の一つの前記小領域を選択する
請求項１２に記載の計算機。
【請求項１４】
前記制御手段は、前記選択では、前記メモリ中の転送対象とする複数の前記小領域を、前記間接転送小領域と前記直接転送小領域とに二分割し、該二分割では、前記間接転送小領域として選択された全ての前記小領域の記憶データを前記コピー手段を使用して前記メモリから前記退避領域にコピーするのに必要な時間と、前記直接転送小領域として選択された全ての前記小領域の記憶データを前記通信手段を使用して前記メモリから自計算機外部へ転送するのに必要な時間とのうちの最大値が最小となるように行う
請求項１２に記載の計算機。
【請求項１５】
前回のチェックポイント以降に更新された前記小領域のリストを記憶するログ記憶手段と、
前記メモリの前記小領域が更新されたときに前記リストを更新するメモリ管理手段と
をさらに有し、
前記制御手段は、前記リストを参照して、前記間接転送小領域および前記直接転送小領域を選択する
請求項１２、１３または１４に記載の計算機。
【請求項１６】
主系サーバと該主系サーバと通信可能な従系サーバとを有し、
前記主系サーバは、
複数の小領域から構成されるメモリと、
データのコピーを作成するコピー手段と、
データを一時的に退避するための退避領域と、
データを前記従系サーバへ送信する通信手段と、
前記メモリの記憶データを前記従系サーバへ転送する制御を行う制御手段とを有し、
前記制御手段は、
前記メモリ中の転送対象とする複数の前記小領域の中から、前記退避領域を経由して前記従系サーバへ転送する前記小領域を間接転送小領域として、また、前記退避領域を経由せずに前記従系サーバへ転送する前記小領域を直接転送小領域として、それぞれ選択し、
自サーバから前記メモリへの更新を停止させた期間内に、前記間接転送小領域として選択した前記小領域の記憶データを前記コピー手段を使用して前記メモリから前記退避領域にコピーし、該コピーと並行して、前記直接転送小領域として選択した前記小領域の記憶データを前記通信手段を使用して前記メモリから前記従系サーバへ転送し、
前記退避領域にコピーされた前記小領域の記憶データを、前記通信手段を使用して前記退避領域から前記従系サーバへ転送する
フォールトトレラントサーバ。
【請求項１７】
前記制御手段は、前記選択では、前記メモリ中の転送対象とする複数の前記小領域の中から前記間接転送小領域としての前記小領域と前記直接転送小領域としての前記小領域をそれぞれ１つずつ選択し、前記間接転送小領域として選択した１つの前記小領域の記憶データが前記メモリから前記退避領域へコピーする処理が完了する毎に、前記間接転送小領域および前記直接転送小領域の何れにも未だ選択されていない転送対象とする前記小領域が残っている場合に、前記間接転送小領域とする次の一つの前記小領域を選択し、また、前記直接転送小領域として選択した１つの前記小領域の記憶データが前記メモリから前記従系サーバへ転送する処理が完了する毎に、前記間接転送小領域および前記直接転送小領域の何れにも未だ選択されていない転送対象とする前記小領域が残っている場合に、前記直接転送小領域とする次の一つの前記小領域を選択する
請求項１６に記載のフォールトトレラントサーバ。
【請求項１８】
前記制御手段は、前記選択では、前記メモリ中の転送対象とする複数の前記小領域を、前記間接転送小領域と前記直接転送小領域とに二分割し、該二分割では、前記間接転送小領域として選択された全ての前記小領域の記憶データを前記コピー手段を使用して前記メモリから前記退避領域にコピーするのに必要な時間と、前記直接転送小領域として選択された全ての前記小領域の記憶データを前記通信手段を使用して前記メモリから前記従系サーバへ転送するのに必要な時間とのうちの最大値が最小となるように行う
請求項１６に記載のフォールトトレラントサーバ。
【請求項１９】
前回のチェックポイント以降に更新された前記小領域のリストを記憶するログ記憶手段と、
前記メモリの前記小領域が更新されたときに前記リストを更新するメモリ管理手段と
をさらに有し、
前記制御手段は、前記リストを参照して、前記間接転送小領域および前記直接転送小領域を選択する
請求項１６、１７または１８に記載のフォールトトレラントサーバ。
【請求項２０】
複数の小領域から構成されるメモリと該メモリのデータを一時的に退避するための退避領域とを有するコンピュータを、
データのコピーを作成するコピー手段と、
データを自計算機外部へ送信する通信手段と、
前記メモリの記憶データを自計算機外部へ転送する制御を行う制御手段であって、
前記メモリ中の転送対象とする複数の前記小領域の中から、前記退避領域を経由して自計算機外部へ転送する前記小領域を間接転送小領域として、また、前記退避領域を経由せずに自計算機外部へ転送する前記小領域を直接転送小領域として、それぞれ選択し、
自計算機から前記メモリへの更新を停止させた期間内に、前記間接転送小領域として選択した前記小領域の記憶データを前記コピー手段を使用して前記メモリから前記退避領域にコピーし、該コピーと並行して、前記直接転送小領域として選択した前記小領域の記憶データを前記通信手段を使用して前記メモリから自計算機外部へ転送し、
前記退避領域にコピーされた前記小領域の記憶データを、前記通信手段を使用して前記退避領域から自計算機外部へ転送する制御手段と
して機能させるためのプログラム。
【請求項２１】
前記制御手段は、前記選択では、前記メモリ中の転送対象とする複数の前記小領域の中から前記間接転送小領域としての前記小領域と前記直接転送小領域としての前記小領域をそれぞれ１つずつ選択し、前記間接転送小領域として選択した１つの前記小領域の記憶データが前記メモリから前記退避領域へコピーする処理が完了する毎に、前記間接転送小領域および前記直接転送小領域の何れにも未だ選択されていない転送対象とする前記小領域が残っている場合に、前記間接転送小領域とする次の一つの前記小領域を選択し、また、前記直接転送小領域として選択した１つの前記小領域の記憶データが前記メモリから自計算機外部へ転送する処理が完了する毎に、前記間接転送小領域および前記直接転送小領域の何れにも未だ選択されていない転送対象とする前記小領域が残っている場合に、前記直接転送小領域とする次の一つの前記小領域を選択する
請求項２０に記載のプログラム。
【請求項２２】
前記制御手段は、前記選択では、前記メモリ中の転送対象とする複数の前記小領域を、前記間接転送小領域と前記直接転送小領域とに二分割し、該二分割では、前記間接転送小領域として選択された全ての前記小領域の記憶データを前記コピー手段を使用して前記メモリから前記退避領域にコピーするのに必要な時間と、前記直接転送小領域として選択された全ての前記小領域の記憶データを前記通信手段を使用して前記メモリから自計算機外部へ転送するのに必要な時間とのうちの最大値が最小となるように行う
請求項２０に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機のメモリに記憶されているデータを他の計算機へ転送するデータ転送装置、データ転送方法、およびプログラムに関する。
【背景技術】
【０００２】
可用性を高めた計算機システムとして、ホットスタンバイ構成のＨＡクラスタ（High availability cluster）、ＦＴサーバ（Fault Tolerant server）が知られている。
【０００３】
ＨＡクラスタは、複数台のサーバを相互接続し、システムの冗長化を図る。現在稼動している（稼動系）サーバに障害が発生した場合、待機系として用意されていたサーバが処理を引き継ぐため、クラスタ全体としては異常なく稼動し続けているように見える。主な方式として、アクティブスタンバイ方式とレプリケーション方式とがある。
【０００４】
アクティブスタンバイ方式のＨＡクラスタでは、運用系と待機系でストレージを共有する。運用系は、待機系を同期させるのに必要な、アプリケーションに依存した情報を共有ストレージに書き、待機系はフェイルオーバー時にこの情報を用いてリカバリを行う。即ち、アクティブスタンバイ方式では、フェイルオーバー時にアプリケーション毎のリカバリ処理が必要になるため、アプリケーションやＯＳから見て、透過的に可用性を得ることができない。また、フェイルオーバーには時間を要し、その間はサービスが提供できなくなるという問題がある。
【０００５】
レプリケーション方式のＨＡクラスタでは、運用系と待機系が個別にストレージを持ち、運用系のアプリケーションに到着したリクエストを待機系にも転送することで、待機系に運用系と同じ状態遷移をさせる。一般に、複数の系の状態を一致させることを、同期をとると言う。運用系に障害が発生して停止した場合、待機系のアプリケーションの状態は運用系と同期しているため、運用系を切り離してサービスを継続することができる。しかし、クラスタリングするアプリケーション毎にレプリケーションの仕組みを追加しなければならないため、アプリケーションやＯＳから見て、透過的に可用性を得ることができない。
【０００６】
このようにＨＡクラスタでは、アプリケーションやＯＳに可用性を意識した仕組みを追加しなければならない。これに対して、ＦＴサーバでは、そのような必要性はない。即ち、ＦＴサーバは、アプリケーションやＯＳが特別な処理を必要としないで、透過的にサービスを継続することができる。ＦＴサーバを実現する方式は、ハードウェア方式とソフトウェア方式とに大別される。
【０００７】
ハードウェア方式のＦＴサーバは、ＣＰＵ、メモリ、ストレージなどの主要なハードウェアコンポーネントを冗長化する。ＣＰＵやメモリ、チップセットを含むモジュールをＣＰＵサブシステム、各種ＩＯデバイスを含むモジュールをＩＯサブシステムと呼ぶ。ＣＰＵサブシステムとＩＯサブシステムとで二重化の方式が異なる。ＣＰＵサブシステムは、クロック単位でハードウェア的に完全に同期させる。これをロックステップと呼ぶ。両方とも完全に同じ動作をしているので、故障発生時は対象となるＣＰＵサブシステムを論理的に切り離し、正常なＣＰＵサブシステムで動作を続行させる。故に、ＣＰＵサブシステムには稼働系、待機系の概念はない。他方、ＩＯサブシステムは、一方を稼働系、他方を待機系として使用し、ソフトウェアによる二重化制御を行う。稼働系のＩＯサブシステムで故障が発生した場合、これをソフトウェアで検出し、直ちに待機系側に切り替える。ハードウェア方式のＦＴサーバは、極めて高い可用性を実現することができる。しかし、特殊なハードウェアで構成されるため、同程度の性能を持つＰＣサーバと比較して導入コストがかかる。
【０００８】
ソフトウェア方式のＦＴサーバは、物理計算機上で複数のＯＳを動作させることを可能とした仮想化技術を使用する。物理計算機上に仮想的に構築される計算機を、仮想計算機あるいは仮想マシンと呼ぶ。ソフトウェア方式のＦＴサーバでは、物理計算機を冗長化し、稼働系の仮想計算機と待機系の仮想計算機とをそれぞれ異なる物理計算機上に配置する。稼働系の仮想計算機が属する物理計算機でハードウェアの故障等の障害が発生した場合、その仮想計算機が行っている処理を他の物理計算機上の待機系の仮想計算機で継続して実行する。アプリケーションやＯＳから見て、透過的にサービスを継続するために、ソフトウェア方式のＦＴサーバでは、稼働系と待機系の仮想計算機の状態を一致させる処理、すなわち同期を行う。
【０００９】
稼働系と待機系の仮想計算機を同期させる方式には、主に仮想ロックステップ方式とチェックポイント方式の２つの方式がある。仮想ロックステップ方式は、稼働系の仮想計算機に対する入力を、待機系の仮想計算機に対しても与えることにより、待機系の仮想計算機の状態を稼働系の仮想計算機と同じように遷移させる。仮想計算機間の同期に必要なデータ量が少なくて済む利点がある反面、稼働系と待機系とでＣＰＵの種類が異なると動作しないといった課題がある。
【００１０】
他方、チェックポイント方式は、定期的に、稼働系の仮想計算機のイメージ（ＣＰＵ、メモリ、ストレージなど）を待機系に送り、待機系の仮想計算機の状態を稼働系の仮想計算機の状態に一致させる。チェックポイント方式は、仮想ロックステップ方式と比較して実装が容易であり、ＣＰＵの特定の機能に依存しないため、幅広い製品に実装できる利点がある。その反面、仮想計算機のイメージはデータ量が多いため、仮想ロックステップ方式よりも１回の同期にかかるオーバーヘッドが大きいという課題がある。
【００１１】
この課題を解決するために、前回のチェックポイント以降に更新された稼働系の仮想計算機のイメージのみを待機系に送ることが本発明に関連する第１の関連技術として提案されている（例えば非特許文献１参照）。この第１の関連技術では、チェックポイントが到来すると、稼働系の仮想計算機を一旦停止させることでメインメモリへの更新を遮断し、前回のチェックポイント以降に更新のあったメインメモリのページであるダーティページの全てを、メインメモリに設けたバッファにローカルコピーする。そして、ローカルコピーを完了すると、停止させていた稼働系の仮想計算機を再起動し、並行して、上記コピーされたダーティページを上記バッファから待機系へと転送する。
【先行技術文献】
【非特許文献】
【００１２】
【非特許文献１】Brendan Cully、外５名、“Remus: HighAvailability via Asynchronous Virtual Machine Replication”、[online]、[平成２４年９月５日検索]、インターネット〈URL:http://www.cs.ubc.ca/~andy/papers/remus-nsdi-final.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、メモリ中の転送対象となるページを全てローカルコピーするためにはそれ相当の処理時間を必要とする。上述した本発明に関連する第１の関連技術では、転送対象データを全てコピーし終えるまでメモリの更新を停止させなければならないため、計算機の性能が低下する。
【００１４】
本発明の目的は、上述した課題、すなわち、或る時点のメモリ内容を計算機外部へ転送する際には全転送対象データを全てコピーし終えるまでメモリの更新を停止させる必要がある、という課題を解決するデータ転送装置を提供することにある。
【課題を解決するための手段】
【００１５】
本発明の第１の観点に係るデータ転送装置は、
計算機に備わるデータ転送装置であって、
データのコピーを作成するコピー手段と、
データを一時的に退避するための退避領域と、
データを自計算機外部へ送信する通信手段と、
複数の小領域から構成されるメモリの記憶データを自計算機外部へ転送する制御を行う制御手段とを有し、
前記制御手段は、
前記メモリ中の転送対象とする複数の前記小領域の中から、前記退避領域を経由して自計算機外部へ転送する前記小領域を間接転送小領域として、また、前記退避領域を経由せずに自計算機外部へ転送する前記小領域を直接転送小領域として、それぞれ選択し、
自計算機から前記メモリへの更新を停止させた期間内に、前記間接転送小領域として選択した前記小領域の記憶データを前記コピー手段を使用して前記メモリから前記退避領域にコピーし、該コピーと並行して、前記直接転送小領域として選択した前記小領域の記憶データを前記通信手段を使用して前記メモリから自計算機外部へ転送し、
前記退避領域にコピーされた前記小領域の記憶データを、前記通信手段を使用して前記退避領域から自計算機外部へ転送する。
【００１６】
本発明の第２の観点に係るデータ伝送方法は、
複数の小領域から構成されるメモリの記憶データを、計算機外部へ転送するデータ転送方法であって、
前記メモリ中の転送対象とする複数の前記小領域の中から、前記退避領域を経由して自計算機外部へ転送する前記小領域を間接転送小領域として、また、前記退避領域を経由せずに自計算機外部へ転送する前記小領域を直接転送小領域として、それぞれ選択し、
自計算機から前記メモリへの更新を停止させた期間内に、前記間接転送小領域として選択した前記小領域の記憶データを前記メモリから前記退避領域にコピーし、該コピーと並行して、前記直接転送小領域として選択した前記小領域の記憶データを前記メモリから自計算機外部へ転送し、
前記退避領域にコピーされた前記小領域の記憶データを、前記退避領域から自計算機外部へ転送する。
【００１７】
本発明の第３の観点に係るプログラムは、
コンピュータを、
データのコピーを作成するコピー手段と、
データを一時的に退避するための退避領域と、
データを自計算機外部へ送信する通信手段と、
複数の小領域から構成されるメモリの記憶データを自計算機外部へ転送する制御を行う制御手段であって、
前記メモリ中の転送対象とする複数の前記小領域の中から、前記退避領域を経由して自計算機外部へ転送する前記小領域を間接転送小領域として、また、前記退避領域を経由せずに自計算機外部へ転送する前記小領域を直接転送小領域として、それぞれ選択し、
自計算機から前記メモリへの更新を停止させた期間内に、前記間接転送小領域として選択した前記小領域の記憶データを前記コピー手段を使用して前記メモリから前記退避領域にコピーし、該コピーと並行して、前記直接転送小領域として選択した前記小領域の記憶データを前記通信手段を使用して前記メモリから自計算機外部へ転送し、
前記退避領域にコピーされた前記小領域の記憶データを、前記通信手段を使用して前記退避領域から自計算機外部へ転送する制御手段と
して機能させる。
【発明の効果】
【００１８】
本発明は上述したような構成を有するため、或る時点のメモリ内容を計算機外部へ転送する際のメモリ更新停止期間を短縮でき、それによって計算機の性能を向上することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１の実施形態のブロック図である。
【図２】本発明の第１の実施形態の動作手順を示すフローチャートである。
【図３】本発明の第１の実施形態においてメモリコピーと転送動作とが並行して実施されている様子を示すタイムチャートである。
【図４】本発明の第２の実施形態のブロック図である。
【図５】本発明の第２の実施形態におけるメモリ管理手段の動作手順を示すフローチャートである。
【図６】本発明の第２の実施形態におけるログ管理情報記憶部およびログ記憶部を説明するための図である。
【図７】本発明の第２の実施形態における制御モジュールの動作手順を示すフローチャートである。
【図８】本発明の第２の実施形態におけるコピーモジュールの動作手順を示すフローチャートである。
【図９】本発明の第２の実施形態における転送モジュールの動作手順を示すフローチャートである。
【図１０】本発明の第２の実施形態におけるカレント領域番号記憶部を説明するための図である。
【図１１】本発明の第２の実施形態における仮想計算機の停止期間において、メモリコピーとデータ転送動作とが並行して実施され、仮想計算機の実行期間において、ダーティページのアドレスが記録される様子を示すタイムチャートである。
【発明を実施するための形態】
【００２０】
次に本発明の実施の形態について図面を参照して詳細に説明する。
[第１の実施形態]
図１を参照すると、本発明の第１の実施形態にかかるデータ転送装置１００は、計算機の１つのコンポーネントとして、計算機１１０に備えられている。
【００２１】
データ転送装置１００は、計算機１１０のメモリ１２０に記憶されたデータを計算機外部へ送信する機能を有する。メモリ１２０は、計算機１１０の例えばメインメモリ（主記憶）である。メモリ１２０は、複数の小領域１２１に分割して管理されている。小領域は、例えばページあるいはセグメントであってよい。
【００２２】
データ転送装置１００は、コピー部１０１と、退避領域１０２と、通信部１０３と、制御部１０４とを有する。コピー部１０１は、データのコピーを作成する機能を有する。退避領域１０２は、データを一時的に退避するための記憶領域である。退避領域１０２は、計算機１１０のメインメモリに設けられていても良いし、メインメモリとは独立した他のメモリ上に設けられていても良い。通信部１０３は、データを通信路１３０を通じて自計算機外部へ送信する機能を有する。通信路１３０は、専用の通信路であっても良いし、インターネット等の公衆通信路であっても良い。
【００２３】
制御部１０４は、メモリ１２０の記憶データを自計算機外部へ転送する制御を司る。より具体的には、制御部１０４は、メモリ１２０中の転送対象とする複数の小領域１２１の中から、退避領域１０２を経由して自計算機外部へ転送する小領域を間接転送小領域として、また、退避領域１０２を経由せずに自計算機外部へ転送する小領域を直接転送小領域として、それぞれ選択する機能を有する。また制御部１０４は、自計算機からメモリ１２０への更新を停止させた期間内に、間接転送小領域として選択した小領域１２１の記憶データをコピー部１０１を使用してメモリ１２０から退避領域１０２にコピーし、このコピーと並行して、直接転送小領域として選択した小領域１２１の記憶データを通信部１０３を使用してメモリ１２０から自計算機外部へ転送する機能を有する。さらに制御部１０４は、退避領域１０２にコピーされた小領域１２１の記憶データを、通信部１０３を使用して退避領域１０２から自計算機外部へ転送する機能を有する。
【００２４】
次に本実施形態の動作を説明する。図２は本実施形態の動作手順を示すフローチャートである。
【００２５】
データ転送装置１００の制御部１０４は、チェックポイントが到来する毎に、図２に示される一連の処理を実行するための制御を開始する。まず、制御部１０４は、メモリ１２０中の転送対象とする複数の小領域１２１の中から、自計算機内の退避領域１０２を経由して自計算機外部へ転送する小領域（間接転送小領域）と、退避領域１０２を経由せずに自計算機外部へ転送する小領域（直接転送小領域）とを選択する（ステップＳ１０１）。
【００２６】
次に制御部１０４は、自計算機からメモリ１２０への更新を停止させた期間内に、間接転送小領域として選択した小領域１２１の記憶データをコピー部１０１を使用してメモリ１２０から退避領域１０２にコピーし、該コピーと並行して、直接転送小領域として選択した小領域１２１の記憶データを通信部１０３を使用してメモリ１２０から自計算機外部へ転送する（ステップＳ１０２）。
【００２７】
次に制御部１０４は、退避領域１０２にコピーされた小領域１２１の記憶データを、通信部１０３を使用して退避領域１０２から自計算機外部へ転送する（ステップＳ１０３）。
【００２８】
図３は本実施形態においてメモリコピーと転送動作とが並行して実施されている様子を示すタイムチャートである。図３を参照すると、本実施形態においては、或るチェックポイントＣＰの時点で転送対象となる小領域１２１が複数存在する場合、メモリ１２０から退避領域１０２へ小領域１２１の記憶データをコピーする動作と、メモリ１２０から計算機外部へ小領域１２１の記憶データを転送する動作とが並行して行われる。メモリ１２０上の転送対象となる小領域１２１の全てが、退避領域１０２へコピーされるか、或いは計算機外部へ転送されてしまえば、メモリ１２０上の当該転送対象となる小領域１２１はもはや更新を禁止する必要はない。すなわち、メモリ１２０の更新を停止させなければならない期間は、チェックポイントＣＰの時点から、メモリ１２０から退避領域１０２へ小領域１２１の記憶データをコピーする動作が終了し、かつ、メモリ１２０から計算機外部へ小領域１２１の記憶データを転送する動作が終了した時点までとなる。
【００２９】
今、１つの小領域１２１の記憶データをメモリ１２０から退避領域１０２へコピーするのに要する時間をＴｃ、１つの小領域１２１の記憶データをメモリ１２０から計算機外部へ送信するのに要する時間をＴｓとする。また、転送対象となる小領域１２１の個数をｎ、そのうち退避領域１０２へコピーされる小領域１２１の個数をｍ（＜ｎ）とする。このとき、本実施形態におけるメモリ更新禁止期間は次式で与えられる。
ｍａｘ（ｍＴｃ，（ｎ−ｍ）Ｔｓ）    …（１）
ここで、ｍａｘ（Ｘ，Ｙ）は、ＸとＹのうちの最大値を表す。
【００３０】
従って、上記の（１）式で与えられるメモリ更新禁止期間が最小となるように、ｍの値、すなわち間接転送小領域の個数ｍと直接転送小領域の個数（ｎ−ｍ）を定めることで、メモリ更新禁止期間を最小にすることができる。但し、本発明では、必ずしも最小化する必要はない。転送対象となる小領域１２１の一部を直接転送小領域とし、残りを間接転送小領域とした場合に、転送対象となる小領域１２１の全てを間接転送小領域とした場合に比べて必要なメモリ更新禁止期間が短縮されるならば、どのようなｍの値であってもよい。
【００３１】
上記の（１）式で与えられるメモリ更新禁止期間が最小となるように、間接転送小領域の個数ｍと直接転送小領域の個数（ｎ−ｍ）を定める具体的な方法は幾つか考えられる。
【００３２】
例えば、制御部１０４は、チェックポイントＣＰ時点で確定する転送対象となる小領域１２１の個数ｎと、予め記憶している上記Ｔｃ、Ｔｓの値とを用いて、上記（１）式の値を最小化するようなｍを計算によって求めるようにして良い。
【００３３】
或いは、間接転送小領域の個数ｍと直接転送小領域の個数（ｎ−ｍ）を事前に計算で求めるのではなくて、結果的にそのようなｍの値でローカルコピーとデータ転送とが並列化されるように制御しても良い。具体的には、制御部１０４は、先ず、メモリ１２０中の転送対象とする複数の小領域１２１の中から間接転送小領域としての小領域１２１と直接転送小領域としての小領域１２１とをそれぞれ１つずつ選択する。次に、間接転送小領域として選択した１つの小領域１２１の記憶データがメモリ１２０から退避領域１０２へコピーする処理が完了する毎に、間接転送小領域および直接転送小領域の何れにも未だ選択されていない転送対象とする小領域１２１が残っている場合に、間接転送小領域とする次の一つの小領域１２１を選択する。また、直接転送小領域として選択した１つの小領域１２１の記憶データがメモリ１２０から自計算機外部へ転送する処理が完了する毎に、間接転送小領域および直接転送小領域の何れにも未だ選択されていない転送対象とする小領域１２１が残っている場合に、直接転送小領域とする次の一つの小領域１２１を選択する。
【００３４】
上述したように本実施形態によれば、或る時点のメモリ内容を計算機外部へ転送する際のメモリ更新停止期間を短縮でき、それによって計算機の性能を向上することができる。
【００３５】
その理由は、小領域１２１の記憶データをメモリ１２０から退避領域１０２にコピーする動作と並行して、他の小領域１２１の記憶データをメモリ１２０から自計算機外部へ転送する動作を行うため、転送対象となる全ての小領域１２１をメモリ１２０から退避領域１０２へコピーする場合に比べて、メモリ１２０から退避領域１０２を経由せずに自計算機外部へ転送する小領域の個数分だけ、コピーの総時間が短縮されるためである。
【００３６】
[第２の実施形態]
次に、本発明の第２の実施形態にかかるＦＴサーバについて説明する。
【００３７】
図４を参照すると、本実施形態にかかるＦＴサーバは、主系サーバ１と従系サーバ２とを備えている。主系サーバ１は通常時に業務を実行するサーバであり、従系サーバ２は主系サーバ１の障害時に、主系サーバ１が実行していた業務を引き継ぐサーバである。主系サーバ１は、従系サーバ２への業務の引き継ぎを可能にするため、チェックポイントとなる毎に、前回のチェックポイント以降に更新されたメモリ上のページ（ダーティページ）の内容を従系サーバ２へ送信し、両サーバ１，２のメモリの内容を一致させるようにしている。即ち、本実施形態は、チェックポイント方式によるＦＴサーバである。
【００３８】
このような機能を有する主系サーバ１は、物理計算機１０と、物理計算機１０上で動作するホストＯＳ２０と、ホストＯＳ２０上で動作する仮想マシンモニタ３０及び冗長化ソフトウェア５０と、仮想マシンモニタ３０上で動作する仮想計算機４０とから構成されている。
【００３９】
物理計算機１０は、メモリ１１と、ＤＭＡ(Direct Memory Access)コントローラ１２と、退避領域１３と、ＣＰＵ（図示せず）内に設けられた仮想化支援機構１４と、内部にＲＤＭＡ(Remote Direct Memory Access)コントローラ１６を有するネットワークアダプタ１５と、ログ管理情報記憶部１７と、ログ記憶部１８と、カレント領域番号記憶部１９とを備えている。ここで、メモリ１１は、物理計算機１０が備えているメモリ（メインメモリ）の内の、仮想計算機４０に割り当てられている部分を示している。換言すれば、メモリ１１は、仮想計算機４０の状態を表している。また、ログ管理情報記憶部１７とログ記憶部１８とカレント領域番号記憶部１９とは、例えば物理計算機１０が備えているメモリ（メインメモリ）に設けられる。
【００４０】
ホストＯＳ２０は、ＲＤＭＡコントローラ１６用のＲＤＭＡドライバ２１と、ＤＭＡコントローラ１２用のＤＭＡドライバ２２とを含んでいる。
【００４１】
仮想マシンモニタ３０は、ゲストＯＳ４１を有する仮想計算機４０を提供するものであり、メモリ管理手段３１を備えている。メモリ管理手段３１は、ページ毎にダーティか否かを示すダーティビットを管理する機能を有している。メモリ管理手段３１は、チェックポイント時点でメモリ１１のページに対応するダーティビットを全て“０”（非ダーティ）に初期化し、以降、メモリ１１のページが更新されると、当該ページに対応するダーティビットを“１”（ダーティ）にセットする。このため、次のチェックポイントが到来したときに、メモリ１１に対応する全ページのダーティビットを検査すれば、前回のチェックポイントから今回のチェックポイントまでに更新されたメモリ１１の全ページのリストは取得できる。しかし、この方法では、チェックポイント以降に、全ダーティビットをスキャンしなければならないので、チェックポイント時点で速やかにダーティページのリストは得られない。そこで、本実施形態のメモリ管理手段３１は、前回のチェックポイントから現在までの間に、ゲストＯＳ４１によってメモリ１１の新たなページが更新される毎にそのページ番号（ダーティページの先頭アドレス）をログ記憶部１８に記録することによって、チェックポイントが到来した時点ではダーティページのリストがログ記憶部１８に既に生成されているようにしている。なお、ログ記憶部１８に記録されるダーティページのリストの先頭アドレスやリスト長は、ログ管理情報記憶部１７に記憶されるようになっている。
【００４２】
このように仮想計算機４０の実行中に当該仮想計算機４０に割り当てられているメモリ１１のダーティページのリストを冗長化ソフトウェア５０から参照できるメモリ上に動的に生成する機能を、ダーティページロギング機能と呼ぶ。本実施形態では、仮想マシンモニタ３０にダーティページロギング機能を持たせたが、仮想化支援機構１４にダーティページロギング機能を持たせるようにしてもよい。
【００４３】
冗長化ソフトウェア５０は、従系サーバ２内の図示しない冗長化ソフトウェアと協調して、主系サーバ１と従系サーバ２とをＦＴサーバとして機能させるためのソフトウェアである。主系サーバ１側の冗長化ソフトウェア５０は、メモリ１１の記憶データを主系サーバ１の外部に転送する制御を司る制御部としての機能を有する。より具体的には、冗長化ソフトウェア５０は、制御モジュール５１と、コピーモジュール５２と、転送モジュール５３とを備えている。
【００４４】
制御モジュール５１は、チェックポイントにおいて、仮想計算機４０を一時停止させる機能や、コピーモジュール５２及び転送モジュール５３を起動する機能を有する。更に、制御モジュール５１は、コピーモジュール５２及び転送モジュール５３の処理が完了したとき、仮想計算機４０の処理を再開させる機能や、ＤＭＡドライバ２２に対して、コピーモジュール５２によって退避領域１３にコピー（ローカルコピー）されているデータの転送を指示する機能を有する。
【００４５】
コピーモジュール５２は、ログ記憶部１８に記憶されているダーティページのリストを参照して、メモリ１１中の一部のダーティページの内容を、ＤＭＡドライバ２２及びＤＭＡコントローラ１２を利用して、メモリ１１から退避領域１３にローカルコピーする機能を有する。
【００４６】
転送モジュール５３は、ログ記憶部１８に記憶されているダーティページのリストを参照して、メモリ１１中の他の一部のダーティページの内容を、ＲＤＭＡドライバ２１およびＲＤＭＡコントローラ１６を利用して、メモリ１１から従系サーバ２へ転送（直接転送）する機能を有する。
【００４７】
そして、本実施形態では、コピーモジュール５２によるローカルコピーと転送モジュール５３による直接転送とが、メモリ１１中の互いに異なるダーティページに対して並行して行われるようにするために、コピーモジュール５２は、ログ記憶部１８に記憶されているダーティページのリスト１８Ａの先頭から最後尾に向けて順に、ローカルコピー処理の対象とするダーティページを取得し、他方、転送モジュール５３は逆に当該リストの最後尾から先頭に向けて順に、直接転送処理の対象とするダーティページを取得するようにしている。また、双方のモジュール５２、５３が、他方のモジュールの処理の進捗状況を把握できるようにするために、ダーティページのリストのどのページまでローカルコピーの処理を終えたかを示すコピー用領域番号と、どのページまで直接転送の処理を終えたかを示す転送用領域番号とを、カレント領域番号記憶部１９に記録するようにしている。
【００４８】
次に、本実施形態の動作を説明する。
【００４９】
先ず、メモリ管理手段３１の動作を説明する。図５は、メモリ管理手段３１の動作手順を示すフローチャートである。
【００５０】
メモリ管理手段３１は、ゲストＯＳ４１によってメモリ１１上のページが更新されると（ステップＳ５１がＹｅｓ）、上記ページに対応するダーティフラグが“１”になっているか否かを判定する（ステップＳ５２）。ダーティフラグは、対応するページがダーティページであるか否かを示すものであり、本実施形態では、ダーティページに対応するダーティフラグは“１”になっている。
【００５１】
そして、ダーティフラグが“０”の場合（ステップＳ５２がＮｏ）は、上記ページがダーティページになったことを示すために、上記ページに対応するダーティフラグを“１”に変更する（ステップＳ５３）と共に、上記ページのページ番号（例えば、Ｐｋ）をログ記憶部１８のダーティページのリストに記録し（ステップＳ５４）、その後、再びステップＳ５１の処理を行う。ここで、ステップＳ５４の処理を図６を参照して詳しく説明する。図６は、ログ記憶部１８に記憶されているダーティページのリスト１８Ａの一例と、ログ管理情報記憶部１７に記憶されている情報の一例とを示している。
【００５２】
先ず、ログ管理情報記憶部１７から、ダーティページのリスト１８Ａの先頭を示す開始アドレスと、当該リストの最後尾を示す最大領域番号とを入力する。その後、最大領域番号をインクリメント（＋１）し、インクリメント後の最大領域番号によって示されるリスト１８Ａの領域に、今回のダーティページのページ番号「Ｐｋ」を記録すると共に、インクリメント後の最大領域番号をログ管理情報記憶部１７にライトする。例えば、図６に示すように、ログ管理情報記憶部１７から入力した最大領域番号が「ｎ」の場合は、領域番号「（ｎ＋１）」の領域にダーティページのページ番号「Ｐｋ」を記録する。以上がステップＳ５４で行われる処理である。
【００５３】
これに対して、ダーティフラグが“１”の場合（ステップＳ５２がＹｅｓ）は、既に上記ページのページ番号「Ｐｋ」は、ログ記憶部１８のダーティページリスト１８Ａに記録済みなので、ステップＳ５１の処理に戻る。
【００５４】
また、メモリ管理手段３１は、チェックポイントになった場合（ステップＳ５５がＹｅｓ）は、全てのページのダーティフラグを“０”に初期化すると共に、ログ管理情報記憶部１７中の最大領域番号を「０」に初期化した後（ステップＳ５６）、ステップＳ５１の処理に戻る。
【００５５】
次に、冗長化ソフトウェア５０内の制御モジュール５１、コピーモジュール５２、及び、転送モジュール５３の動作を説明する。図７、図８、及び、図９は、それぞれ制御モジュール５１、コピーモジュール５２、及び、転送モジュール５３の動作手順を示すフローチャートである。
【００５６】
制御モジュール５１は、チェックポイントになると、仮想計算機４０を一時停止させ（図７のステップＳ７１）、メモリ１１の更新を禁止する。次に、制御モジュール５１は、当該チェックポイント時点でログ記憶部１８に作成されているダーティページリスト１８Ａの開始アドレスから１だけ減じた値と、最終アドレス（最大領域番号）に１を加えた値とを、コピー用領域番号と転送用領域番号との初期値として、カレント領域番号記憶部１９に記録する（ステップＳ７２、図１０参照）。ダーティページリスト１８Ａの最終アドレス（最大領域番号）は、ログ管理情報記憶部１７から入力する。
【００５７】
その後、制御モジュール５１は、コピーモジュール５２と転送モジュール５３とを起動し（ステップＳ７３）、両モジュール５２，５３から完了通知が送られてくるのを待つ（ステップＳ７４）。
【００５８】
コピーモジュール５２は、起動されると、カレント領域番号記憶部１９を排他的にアクセスするためにロック取得処理を行う（ステップＳ８１）。排他制御のためのロック機構は計算機分野では周知の技術であるため、詳細な説明は省略する。コピーモジュール５２は、ロック取得処理に成功した場合に限り、ステップＳ８２以降の処理に進み、ロック取得処理に失敗した場合には、例えば一定時間経過後に再度ロック取得処理を試みる。
【００５９】
コピーモジュール５２は、ステップＳ８２では、カレント領域番号記憶部１９からコピー用領域番号と転送用領域番号とをリードする。次にコピーモジュール５２は、上記リードしたコピー用領域番号をインクリメント（＋１）した後の値と、上記リードした転送用領域番号とを比較する（ステップＳ８３）。インクリメント後のコピー用領域番号の方が転送用領域番号よりも小さい場合（ステップＳ８４がＹｅｓ）は、当該インクリメント後のコピー用領域番号で示されるダーティページリスト１８Ａのダーティページは、ローカルコピーの対象としてよい。このため、コピーモジュール５２は、上記インクリメント後のコピー用領域番号でカレント領域番号記憶部１９に記録されているコピー用領域番号を上書きし（ステップＳ８４）、取得したロックを解放する処理を行った後（ステップＳ８５）、ＤＭＡドライバ２２に対して、上記ローカルコピー対象のダーティページをメモリ１１から退避領域１３へローカルコピーする実行の指示を行う（ステップＳ８６）。その後、ＤＭＡドライバ２２からＤＭＡ転送の終了通知を受けると、ステップＳ８１の処理に戻る。
【００６０】
ここで、ステップＳ８６で行う処理の一例を以下に説明する。先ず、コピーモジュール５２は、上記インクリメント後のコピー用領域番号によって示される、ログ記憶部１８上のダーティページリスト１８Ａのページ番号を入力する。このページ番号は、今回ローカルコピーするダーティページの開始アドレスに相当する。次に、コピーモジュール５２は、退避領域１３の先頭アドレスと、自モジュール５２で保持している現在までのコピー回数（初期値は０）と、ページサイズとに基づいて、転送先のアドレス（開始アドレス）を求める。より具体的には、（退避領域１３の先頭アドレス）＋（ページサイズ）×（コピー回数）なる演算を行うことにより、転送先の開始アドレスを求める。
【００６１】
その後、コピーモジュール５２は、ＤＭＡドライバ２２に対して、転送元の開始アドレスとして今回ローカルコピーするダーティページの開始アドレスを、レングスとしてページサイズを、転送先の開始アドレスとして上記演算で求めたアドレスをそれぞれ指定した転送指示を出力する。これにより、ＤＭＡドライバ２２はＤＭＡコントローラ１２を制御して、転送元の開始アドレスによって示される、メモリ１１上の１ページ分のダーティページの内容を、退避領域１３にコピー（ＤＭＡ転送）する。ＤＭＡ転送の終了は、ＤＭＡコントローラ１２からＤＭＡドライバ２２を介してコピーモジュール５２に通知される。コピーモジュール５２は、コピー回数を＋１する。以上がステップＳ８６で行う処理の一例である。
【００６２】
これに対して、ステップＳ８３において、インクリメント後のコピー用領域番号が転送用領域番号以上であると判断した場合はローカルコピーすべきダーティページはもはや存在しないため、コピーモジュール５２は制御モジュール５１に対して完了通知を送り（ステップＳ８７）、自らの処理を終了する。この完了通知には、コピーモジュール５２が保持しているコピー回数あるいは退避領域１３の最終コピー位置が含まれる。
【００６３】
一方、転送モジュール５３は、制御モジュール５１によって起動されると、カレント領域番号記憶部１９を排他的にアクセスするためにロック取得処理を行い（図９のステップＳ９１）、ロックの取得に成功すると、カレント領域番号記憶１９からコピー用領域番号と転送用領域番号とをリードする（ステップＳ９２）。
【００６４】
次いで、転送モジュール５３は、上記リードしたコピー用領域番号と上記リードした転送用領域番号から１だけデクリメントした値とを比較する（ステップＳ９３）。そして、転送用領域番号から１だけデクリメントした値がコピー用領域番号よりも大きい場合（ステップＳ９３がＹｅｓ）は、当該デクリメント後の転送用領域番号で示されるダーティページリスト１８Ａのダーティページは、直接転送の対象としてよい。このため、転送モジュール５３は、上記デクリメント後の転送用領域番号でカレント領域番号記憶部１９に記録されている転送用領域番号を上書きし（ステップＳ９４）、取得したロックを解放する処理を行った後（ステップＳ９５）、ＲＤＭＡドライバ２１に対して、上記直接転送対象のダーティページをメモリ１１から従系サーバ２へＲＤＭＡ転送する実行の指示を行う（ステップＳ９６）。その後、ＲＤＭＡドライバ２１からＲＤＭＡ転送の終了通知を受けると、ステップＳ９１の処理に戻る。
【００６５】
ここで、ステップＳ９６で行う処理の一例を以下に説明する。先ず、転送モジュール５３は、カレント領域番号記憶部１９中の転送用領域番号によって示される、ログ記憶部１８上のダーティページリスト１８Ａのページ番号を入力する。このページ番号はダーティページの開始アドレスに相当する。その後、転送モジュール５３は、ＲＤＭＡドライバ２１に対して転送元の開始アドレス及びレングス（ページサイズ）と、転送先を示す情報（従系サーバ２を示す情報）とを含んだ転送指示を出力する。これにより、ＲＤＭＡドライバ２１はネットワークアダプタ１５内のＲＤＭＡコントローラを制御して、開始アドレス及びレングスよって示される、メモリ１１上のダーティページの内容を従系サーバ２に送信（ＲＤＭＡ転送）する。以上がステップＳ９６で行う処理の一例である。
【００６６】
これに対して、ステップＳ９３において、転送用領域番号がコピー用領域番号以下であると判定した場合は、直接転送すべきダーティページはもはや存在しないため、転送モジュール５３は制御モジュール５１に対して完了通知を送り（ステップＳ９７）、自らの処理を終了する。
【００６７】
さて、コピーモジュール５２及び転送モジュール５３からの完了通知を待っていた制御モジュール５１は、両モジュール５２，５３からの完了通知を受信すると（図７のステップＳ７４がＹｅｓ）、仮想計算機４０の処理を再開させる（ステップＳ７５）。次いで、制御モジュール５１は、ＲＤＭＡドライバ２１及びネットワークアダプタ１５内のＲＤＭＡコントローラ１６を利用して、退避領域１３にローカルコピーされているダーティページの内容を退避領域１３から従系サーバ２へ転送し（ステップＳ７６）、その後、処理を終了する。
【００６８】
ここで、ステップＳ７６で行う処理の一例を以下に説明する。モジュール５１は、先ず、コピーモジュール５２からの完了通知に含まれていたコピー回数と、ページサイズとに基づいて、ＲＤＭＡ転送するダーティページのレングスの合計値を求める。より具体的には、（ページサイズ）×（コピー回数）なる演算を行うことにより、レングスの合計値を求める。その後、制御モジュール５１は、ＲＤＭＡドライバ２１に対して転送元の開始アドレス（退避領域１３の先頭アドレス）及びＲＤＭＡ転送するダーティページのレングスの合計値と、転送先を示す情報（従系サーバ２を示す情報）とを含んだ転送指示を出力する。これにより、ＲＤＭＡドライバ２１はネットワークアダプタ１５内のＲＤＭＡコントローラ１６を制御して、開始アドレス及びレングスの合計値によって示される、退避領域１３上の領域にローカルコピーされているダーティページの内容を従系サーバ２に送信（ＲＤＭＡ転送）する。以上がステップＳ７６で行う処理の一例である。
【００６９】
図１１は、仮想計算機４０の停止期間においてローカルコピーと直接データ転送とが並行して行われ、また仮想計算機４０の実行中にダーティページのページ番号が記録される様子を示すタイムチャートである。図１１を参照すると、本実施形態では、或るチェックポイントＣＰ１の時点で、転送対象となるダーティページが複数存在する場合、メモリ１１から退避領域１３へダーティページのデータをローカルコピーする動作と、メモリ１１から従系サーバ２へダーティページのデータを転送する動作とが並行して行われる。そして、メモリ１１から退避領域１３へのコピー動作が終了し、且つ、メモリ１１から従系サーバ２への転送動作が完了すると、仮想計算機４０は実行状態となる。その後、稼働計算機４０で動作するゲストＯＳ４１によりメモリ１１上のページが更新されると、そのページ（ダーティページ）のアドレスが、チェックポイント時点で一旦初期化されたログ記憶部１８のダーティページリスト１８Ａに再び記録されていく。
【００７０】
このように本実施形態によれば、チェックポイント方式によるＦＴサーバにおいて、主系サーバ１で動作する仮想計算機４０の状態を表すメモリ１１の内容をチェックポイント毎に主系サーバ１から従系サーバ２へ転送する際の、稼働計算機４０の停止期間を短縮でき、それによって稼働計算機４０の性能を向上することができる。
【００７１】
その理由の一つは、メモリ１１中のダーティページをメモリ１１から退避領域１３にコピーする動作と並行して、メモリ１１中の他のダーティページをメモリ１１から退避領域１３を経由せずに従系サーバ２へ転送する動作を行うため、全てのダーティページをメモリ１１から退避領域１３へコピーする場合に比べて、メモリ１１から退避領域１２を経由せずに従系サーバ２へ転送するダーティページの個数分だけ、コピーの総時間が短縮されるためである。
【００７２】
他の理由は、メモリ管理手段３１が有するダーティページロギング機能により、チェックポイントが到来した時点でダーティページのリストがログ記憶部１８に既に生成されているため、ダーティページリストを作成するために仮想計算機４０を停止させる必要がなくなるためである。
【００７３】
さらに別の理由は、ＲＤＭＡ方式を使用して、ダーティページをメモリ１１から退避領域１３を経由せずに従系サーバ２を高速に転送できるためである。
【００７４】
［その他の実施形態］
上記の第２の実施形態では、主系サーバ１で動作する仮想計算機４０は１台としたが、複数の仮想計算機４０が動作していてもよい。主系サーバ１で第１の仮想計算機と第２の仮想計算機とが動作する場合、チェックポイント毎に、第１の仮想計算機の状態を表すメモリの記憶データと、第２の仮想計算機の状態を表すメモリの記憶データとが、主系サーバ１から従系サーバ２へ転送される。このとき、第１の仮想計算機の状態を表すメモリから間接転送小領域と直接転送小領域とを選択すると共に、第２の仮想計算機の状態を表すメモリから間接転送小領域と直接転送小領域とを選択することにより、ローカルコピーと直接転送とを並列に実施してもよい。これとは違って、第１の仮想計算機の状態を表すメモリの小領域は全て間接転送小領域として選択し、第２の仮想計算機の状態を表すメモリの小領域は全て直接転送小領域として選択し、ローカルコピーと直接転送とを並列に実施してもよい。
【００７５】
また、上記の第２の実施形態では、主系サーバ１のプロセッサ構成やメインメモリ構成について特に言及しなかったが、本発明は、単一プロセッサ構成の主系サーバ１に適用することができることは勿論、ＮＵＭＡ（Non Uniformed Memory Architecture）等を採用する密結合マルチプロセッサ構成の主系サーバ１に対しても適用可能である。
【符号の説明】
【００７６】
１００  データ転送装置
１０１  コピー部
１０２  退避領域
１０３  通信部
１０４  制御部
１１０  計算機
１２０  メモリ
１２１  小領域
１３０  通信路
１  主系サーバ
２  従系サーバ
１０  物理計算機
１１  メモリ
１２  ＤＭＡコントローラ
１３  退避領域
１４  仮想化支援機構
１５  ネットワークアダプタ
１６  ＲＤＭＡコントローラ
１７  ログ管理情報記憶部
１８  ログ記憶部
１８Ａ  ダーティページのリスト
１９  カレント領域番号記憶部
２０  ホストＯＳ
２１  ＲＤＭＡドライバ
２２  ＤＭＡドライバ
３０  仮想マシンモニタ
３１  メモリ管理手段
４０  仮想計算機
４１  ゲストＯＳ
５０  冗長化ソフトウェア
５１  制御モジュール
５２  コピーモジュール
５３  転送モジュール
【図１】
0005561334.tif 000002
【図２】
0005561334.tif 000003
【図３】
0005561334.tif 000004
【図４】
0005561334.tif 000005
【図５】
0005561334.tif 000006
【図６】
0005561334.tif 000007
【図７】
0005561334.tif 000008
【図８】
0005561334.tif 000009
【図９】
0005561334.tif 000010
【図１０】
0005561334.tif 000011
【図１１】
0005561334.tif 000012