(57)【要約】【課題】任意の時点におけるスナップショットを効率よく取得すること。【解決手段】サーバ１００は、ディスクドライバ部１３０がＯＳカーネル部１２０からスナップショット要求を受付けた場合に、ＯＳスナップショットを作成し、作成したＯＳスナップショットをサーバ２００に転送すると共に、記憶部１４０に記憶されたデータを仮想ＲＡＭディスクにスワップアウトし、記憶部１４０に対するアクセスを凍結する。そして、サーバ２００からページ要求を受信した場合には、要求されたページを仮想ＲＡＭディスク１５０から検索し、検索したページをサーバ２００に転送する。また、スナップショット保存処理部１６０は、仮想ＲＡＭディスクに記憶されたデータのスナップショット１５０ｂと凍結された記憶部１４０のデータをスナップショット記憶部１７０に保存する。【選択図】        図３
2006277234.tif 000002
【特許請求の範囲】
【請求項１】
記憶部にデータを記憶しプログラムを実行するプログラム実行装置であって、
前記記憶部に対するアクセスを凍結するアクセス凍結手段と、
前記記憶部に記憶されたデータを他装置にマイグレーションし、自装置が実行していたプログラムを他装置に実行させるマイグレーション実行手段と、
を備えたことを特徴とするプログラム実行装置。
【請求項２】
前記マイグレーション実行手段は、前記他装置がプログラム実行するために必要な最小限のデータのみを該他装置に転送し、未転送のデータは前記他装置のデータ要求に応じて転送することを特徴とする請求項１に記載のプログラム実行装置。
【請求項３】
前記アクセス凍結手段は、サスペンド機能を利用して、前記記憶部のデータを仮想的な記憶部にスワップアウトさせるスワップアウト実行手段と、該スワップアウトを完了させた場合に、スワップアウトが完了した旨を要求元に通知しないことで前記記憶部に対するアクセスを凍結する凍結手段とを備えたこと特徴とする請求項１または２に記載のプログラム実行装置。
【請求項４】
前記マイグレーション実行手段は、自装置のプログラム実行中に前記記憶部に記憶されたデータを部分的に他装置に転送し、マイグレーション実行時には前記記憶部から他装置に転送されたデータのうち、転送後に変更されたデータだけを他装置に転送することを特徴とする請求項１に記載のプログラム実行装置。
【請求項５】
前記記憶部に記憶されたデータをスナップショットとして採取するスナップショット採取手段を更に備えたことを特徴とする請求項１〜４のいずれか一つに記載のプログラム実行装置。
【請求項６】
記憶部にデータを記憶した運用系計算機および待機系計算機から計算機システムを構成し、前記運用系計算機または待機系計算機にプログラムを実行させるプログラム実行方法であって、
前記運用系計算機の記憶部に対するアクセスを凍結するアクセス凍結工程と、
前記運用系計算機の記憶部に記憶されたデータを待機系計算機にマイグレーションし、運用系計算機が実行していたプログラムを前記待機系計算機に実行させるマイグレーション実行工程と、
を含んだことを特徴とするプログラム実行方法。
【請求項７】
前記マイグレーション実行工程は、前記待機系計算機のプログラム実行に必要なデータのみを前記運用系計算機から待機系計算機に転送し、未転送のデータは前記待機系計算機のデータ要求に応じて前記運用系計算機から転送することを特徴とする請求項６に記載のプログラム実行方法。
【請求項８】
前記アクセス凍結工程は、前記運用系計算機の記憶部のデータを仮想的な記憶部にスワップアウトさせるスワップアウト実行工程と、該スワップアウトを完了させた場合に、スワップアウトが完了した旨を要求元に通知しないことで前記運用系計算機の記憶部に対するアクセスを凍結する凍結工程とを含んだこと特徴とする請求項６または７に記載のプログラム実行方法。
【請求項９】
前記マイグレーション実行工程は、サスペンド機能を利用した前記運用系計算機の停止工程と、前記運用系計算機の記憶部に記憶されたデータを前記待機系計算機の記憶部に転送する転送工程と、レジューム機能を利用した前記待機系計算機の実行再開工程と、前記運用系計算機の記憶部から前記待機系計算機の記憶部へデータをスワップインするスワップイン実行工程とを含んだことを特徴とする請求項６、７または８に記載のプログラム実行方法。
【請求項１０】
記憶部にデータを記憶した運用系計算機および待機系計算機から計算機システムを構成し、前記運用系計算機または待機系計算機にサービスを提供させるサービス提供プログラムであって、
前記運用系計算機の記憶部に対するアクセスを凍結するアクセス凍結手順と、
前記運用系計算機の記憶部に記憶されたデータを待機系計算機にマイグレーションし、運用系計算機が提供していたサービスを前記待機系計算機に提供させるマイグレーション実行手順と、
をコンピュータに実行させることを特徴とするサービス提供プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、記憶部にデータを記憶しプログラムを実行するプログラム実行装置等に関し、特に任意時点におけるスナップショットを効率よく取得することができるプログラム実行装置、プログラム実行方法およびサービス提供プログラムに関するものである。
【背景技術】
【０００２】
従来、サーバシステムなどに障害が発生した場合には、この障害発生にかかる原因を究明するため、障害発生時の情報であるダンプ情報をメモリまたは仮想メモリなどから取り出し、磁気ディスク等の記憶装置に退避させている。
【０００３】
しかし、メモリまたは仮想メモリに記憶されたダンプ情報を全て記憶装置に退避させた後に、サーバシステムを復旧させる必要があるため、サーバシステムは、迅速にユーザに対するサービスを再開することができないという問題があった。
【０００４】
そこで、特許文献１では、運用系サーバと待機系サーバとを設置し、運用系サーバに障害が発生した場合に、運用系サーバのダンプ情報を待機系サーバに転送し、転送したダンプ情報を待機系サーバによって記憶装置に記憶させると共に、運用系サーバを復旧させる技術が公開されている。
【０００５】
また、特許文献２では、二重化した主記憶装置をサーバに設置し、サーバに障害が発生した場合に、二重化した主記憶装置を相互に切り離してそれぞれ個別の主記憶装置として機能させ、一方の主記憶装置を利用してサーバを復旧させると共に、他方の主記憶装置を利用してダンプ情報を保持させる技術が公開されている。
【０００６】
【特許文献１】特開２００１−２９０６７７号公報
【特許文献２】特開平７−２３４８０８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、かかる従来の技術では、任意の時点でのメモリ内のデータを効率よく取得することができないという問題があった。
【０００８】
なぜなら、特許文献１に公開された技術では、ダンプ情報を取得する場合に、運用系サーバに記憶されたダンプ情報を待機系サーバに転送する必要があり、運用系サーバから待機系サーバへのダンプ情報転送が遅れた場合には、運用系サーバを迅速に復旧させることができないからである。
【０００９】
また、特許文献２に公開された技術では、一度ダンプ情報を取得した際に、二重化された主記憶装置が切り離されてしまうため、再度、任意の時点でダンプ情報を取得する場合には、主記憶装置を再び二重化する必要があるため、膨大な時間およびコストが必要となってしまう。
【００１０】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、任意の時点におけるスナップショットを効率よく取得することができるプログラム実行装置、プログラム実行方法およびサービス提供プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するため、請求項１の発明に係るプログラム実行装置は、記憶部にデータを記憶しプログラムを実行するプログラム実行装置であって、前記記憶部に対するアクセスを凍結するアクセス凍結手段と、前記記憶部に記憶されたデータを他装置にマイグレーションし、自装置が実行していたプログラムを他装置に実行させるマイグレーション実行手段と、を備えたことを特徴とする。
【００１２】
この請求項１の発明によれば、プログラム実行装置は、データを記憶した記憶部に対するアクセスを凍結し、記憶部に記憶されたデータを他装置にマイグレーションし、自装置が実行していたプログラムを他装置に実行させる。
【００１３】
また、請求項２の発明に係るプログラム実行装置は、請求項１の発明において、前記マイグレーション実行手段は、前記他装置がプログラム実行するために必要な最小限のデータのみを該他装置に転送し、未転送のデータは前記他装置のデータ要求に応じて転送することを特徴とする。
【００１４】
この請求項２の発明によれば、プログラム実行装置は、データを記憶した記憶部に対するアクセスを凍結し、他装置がプログラムを実行するために必要な最小限のデータのみを他装置に転送し、未転送のデータは他装置のデータ要求に応じて転送する。
【００１５】
また、請求項３の発明に係るプログラム実行装置は、請求項１または２の発明において、前記アクセス凍結手段は、サスペンド機能を利用して、前記記憶部のデータを仮想的な記憶部にスワップアウトさせるスワップアウト実行手段と、該スワップアウトを完了させた場合に、スワップアウトが完了した旨を要求元に通知しないことで前記記憶部に対するアクセスを凍結する凍結手段とを備えたこと特徴とする。
【００１６】
この請求項３の発明によれば、プログラム実行装置は、サスペンド機能を利用して、記憶部のデータを仮想的な記憶部にスワップアウトさせ、このスワップアウトを完了させた場合に、スワップアウトが完了した旨を要求基に通知しないことで記憶部に対するアクセスを凍結させる。
【００１７】
また、請求項４の発明に係るプログラム実行装置は、請求項１の発明において、前記マイグレーション実行手段は、自装置のプログラム実行中に前記記憶部に記憶されたデータを部分的に他装置に転送し、マイグレーション実行時には前記記憶部から他装置に転送されたデータのうち、転送後に変更されたデータだけを他装置に転送することを特徴とする。
【００１８】
この請求項４の発明によれば、プログラム実行装置は、自装置のプログラム実行中に記憶部に記憶されたデータを部分的に他装置に転送し、マイグレーション実行時には記憶部から他装置に転送されたデータのうち、転送後に変更されたデータだけを他装置に転送する。
【００１９】
また、請求項５の発明に係るプログラム実行装置は、請求項１〜４のいずれか一つに記載の発明において、前記記憶部に記憶されたデータをスナップショットとして採取するスナップショット採取手段を更に備えたことを特徴とする。
【００２０】
この請求項５の発明によれば、プログラム実行装置は、データを記憶した記憶部に対するアクセスを凍結し、記憶部に記憶されたデータを他装置にマイグレーションし、自装置が実行していたプログラムを他装置に実行させ、自装置の記憶部に記憶されたデータをスナップショットとして採取する。
【００２１】
また、請求項６にかかるプログラム実行方法は、記憶部にデータを記憶した運用系計算機および待機系計算機から計算機システムを構成し、前記運用系計算機または待機系計算機にプログラムを実行させるプログラム実行方法であって、前記運用系計算機の記憶部に対するアクセスを凍結するアクセス凍結工程と、前記運用系計算機の記憶部に記憶されたデータを待機系計算機にマイグレーションし、運用系計算機が実行していたプログラムを前記待機系計算機に実行させるマイグレーション実行工程と、を含んだことを特徴とする。
【００２２】
この請求項６の発明によれば、プログラム実行方法は、運用系計算機の記憶部に対するアクセスを凍結し、運用系計算機の記憶部に記憶されたデータを待機系計算機にマイグレーションし、運用系計算機が実行していたプログラムを前記待機系計算機に実行させる。
【００２３】
また、請求項７にかかるプログラム実行方法は、請求項６の発明において、前記マイグレーション実行工程は、前記待機系計算機のプログラム実行に必要なデータのみを前記運用系計算機から待機系計算機に転送し、未転送のデータは前記待機系計算機のデータ要求に応じて前記運用系計算機から転送することを特徴とする。
【００２４】
この請求項７の発明によれば、プログラム実行方法は、運用系計算機の記憶部に対するアクセスを凍結し、待機系計算機がプログラムを実行するために必要なデータのみを運用系計算機から待機系計算機に転送し、未転送のデータは待機系計算機のデータ要求に応じて転送する。
【００２５】
また、請求項８にかかるプログラム実行方法は、請求項６または７の発明において、プログラム実行方法は、前記アクセス凍結工程は、前記運用系計算機の記憶部のデータを仮想的な記憶部にスワップアウトさせるスワップアウト実行工程と、該スワップアウトを完了させた場合に、スワップアウトが完了した旨を要求元に通知しないことで前記運用系計算機の記憶部に対するアクセスを凍結する凍結工程とを含んだこと特徴とする。
【００２６】
この請求項８の発明によれば、プログラム実行方法は、運用系計算機の記憶部のデータを仮想的な記憶部にスワップアウトさせ、このスワップアウトを完了させた場合に、スワップアウトが完了した旨を要求元に通知しないことで運用系計算機の記憶部に対するアクセスを凍結する。
【００２７】
また、請求項９にかかるプログラム実行方法は、請求項６、７または８の発明において、前記マイグレーション実行工程は、サスペンド機能を利用した前記運用系計算機の停止工程と、前記運用系計算機の記憶部に記憶されたデータを前記待機系計算機の記憶部に転送する転送工程と、レジューム機能を利用した前記待機系計算機の実行再開工程と、前記運用系計算機の記憶部から前記待機系計算機の記憶部へデータをスワップインするスワップイン実行工程とを含んだことを特徴とする。
【００２８】
この請求項９の発明によれば、プログラム実行方法は、前記待機系計算機におけるページフォルトを引き金にして、仮想的な記憶部に対してスワップイン要求を発生し、前記運用系計算機の凍結された記憶部のデータを前記待機系計算機の記憶部へ転送することによってスワップインする。
【００２９】
また、請求項１０にかかるサービス提供プログラムは、記憶部にデータを記憶した運用系計算機および待機系計算機から計算機システムを構成し、前記運用系計算機または待機系計算機にサービスを提供させるサービス提供プログラムであって、前記運用系計算機の記憶部に対するアクセスを凍結するアクセス凍結手順と、前記運用系計算機の記憶部に記憶されたデータを待機系計算機にマイグレーションし、運用系計算機が提供していたサービスを前記待機系計算機に提供させるマイグレーション実行手順と、をコンピュータに実行させることを特徴とする。
【００３０】
この請求項１０にかかるサービス提供プログラムは、運用系計算機の記憶部に対するアクセスを凍結し、運用系計算機の記憶部に記憶されたデータを待機系計算機にマイグレーションし、運用系計算機が実行していたプログラムを前記待機系計算機に実行させる。
【発明の効果】
【００３１】
請求項１の発明によれば、プログラム実行方法は、データを記憶した記憶部に対するアクセスを凍結し、記憶部に記憶されたデータを他装置にマイグレーションし、自装置が実行していたプログラムを他装置に実行させるので、サービス提供を滞らせることなく、マイグレーションを行うことができる。
【００３２】
また、請求項２の発明によれば、プログラム実行装置は、データを記憶した記憶部に対するアクセスを凍結し、他装置がプログラムを実行するために必要な最小限のデータのみを他装置に転送し、未転送のデータは他装置のデータ要求に応じて転送するので、迅速に自装置が実行していたプログラムを他装置に実行させることができる。
【００３３】
また、請求項３の発明によれば、プログラム実行装置は、サスペンド機能を利用して、記憶部のデータを仮想的な記憶部にスワップアウトさせ、このスワップアウトを完了させた場合に、スワップアウトが完了した旨を要求基に通知しないことで記憶部に対するアクセスを凍結させるので、ディスクドライバに機能を追加するだけでＯＳに新たな機能を追加することなくマイグレーションが実行可能となる。
【００３４】
また、請求項４の発明によれば、プログラム実行装置は、自装置のプログラム実行中に記憶部に記憶されたデータを部分的に他装置に転送し、マイグレーション実行時には記憶部から他装置に転送されたデータのうち、転送後に変更されたデータだけを他装置に転送するので、迅速に自装置が行っていたプログラムを他装置に実行させることができる。
【００３５】
また、請求項５の発明によれば、プログラム実行装置は、データを記憶した記憶部に対するアクセスを凍結し、記憶部に記憶されたデータを他装置にマイグレーションし、自装置が実行していたプログラムを他装置に実行させ、自装置の記憶部に記憶されたデータをスナップショットとして採取するので、サービス提供を滞らせることなく、マイグレーションを行うことができ、かつ任意時点でのスナップショットを効率よく採取することができる。
【００３６】
また、請求項６の発明によれば、プログラム実行方法は、運用系計算機の記憶部に対するアクセスを凍結し、運用系計算機の記憶部に記憶されたデータを待機系計算機にマイグレーションし、運用系計算機が実行していたプログラムを前記待機系計算機に実行させるので、サービス提供を滞らせることなく、マイグレーションを行うことができる。
【００３７】
また、請求項７の発明によれば、プログラム実行方法は、運用系計算機の記憶部に対するアクセスを凍結し、待機系計算機がプログラムを実行するために必要なデータのみを運用系計算機から待機系計算機に転送し、未転送のデータは待機系計算機のデータ要求に応じて転送するので、迅速に運用系計算機が実行していたプログラムを待機系計算機に実行させることができる。
【００３８】
また、請求項８の発明によれば、プログラム実行方法は、サスペンド機能を利用して運用系計算機の記憶部のデータを仮想的な記憶部にスワップアウトさせ、このスワップアウトを完了させた場合に、スワップアウトが完了した旨を要求元に通知しないことで運用系計算機の記憶部に対するアクセスを凍結するので、ディスクドライバに機能を追加するだけでＯＳに新たな機能を追加することなくマイグレーションを実行可能となる。
【００３９】
また、請求項９の発明によれば、プログラム実行方法は、前記待機系計算機におけるページフォルトを引き金にして、仮想的な記憶部に対してスワップイン要求を発生し、前記運用系計算機の凍結された記憶部のデータを前記待機系計算機の記憶部へ転送することによってスワップインするので、ディスクドライバに機能を追加するだけでＯＳに新たな機能を追加することなくマイグレーションが実行可能となる。
【００４０】
また、請求項１０の発明によれば、サービス提供プログラムは、運用系計算機の記憶部に対するアクセスを凍結し、運用系計算機の記憶部に記憶されたデータを待機系計算機にマイグレーションし、運用系計算機が実行していたプログラムを前記待機系計算機に実行させるので、サービス提供を滞らせることなく、マイグレーションを行うことができる。
【発明を実施するための最良の形態】
【００４１】
以下に添付図面を参照して、この発明に係るプログラム実行装置、プログラム実行方法およびサービス提供プログラムの好適な実施の形態を詳細に説明する。
【実施例】
【００４２】
まず、本実施例にかかるシステムの概念について説明する。図１は、本実施例にかかるシステムの概念を説明するための説明図である。なお、本実施例では、サーバ１００，２００がネットワークを介して接続されている場合について説明する。
【００４３】
図１に示すように、任意の時点で、サーバ１００のメモリ内に記憶されたデータをスナップショットとして取り出す場合には、サーバ１００は、サービスを一旦停止する。そして、サーバ１００は、メモリ内に記録されたデータのうち、サービス提供をする上で必要最小限のデータをサーバ２００に転送し、サーバ１００が行っていたサービスをサーバ２００に提供させる。
【００４４】
サーバ２００は、サービスを提供する過程において、ページフォルトが発生した場合には、対応するデータをサーバ１００に要求（オンデマンドで要求）し、足りないデータを補っていく。そして、サーバ１００は、スナップショット採取し、採取したスナップショットをハードディスクなどに保存する。
【００４５】
このように、サーバ１００のスナップショットを採取する場合には、最小限のデータをサーバ２００に転送し、直ちにサーバ１００が行っていたサービス提供をサーバ２００に提供させることができるので、任意の時点にかかるスナップショット採取を効率よく実行できると共に、サービス提供が途切れる期間が非常に短いため、頻繁にスナップショットを採取することができる。
【００４６】
また、サーバ２００がサーバ１００の代わりにサービスの提供を行っているため、サーバ１００側では、スナップショットにかかる記録をゆっくりかつ確実に行うことができる。
【００４７】
次に、スナップショット採取時にサーバ１００および２００の間で行われるマイグレーションについて説明する。図２は、スナップショット採取時にサーバ１００および２００の間で行われるマイグレーションを説明するための説明図である。同図に示すように、スナップショットを採取する場合には、サーバ１００は、動作中のプロセスを停止し、サスペンド機能を利用して、メモリ１００ａ内のデータ（スワップアウト不可能な領域に記録されたデータを除く）を仮想ＲＡＭ（Random Access Memory）ディスク１００ｂにスワップアウトさせ、ハードウェア１００ｃを停止させる。
【００４８】
仮想ＲＡＭディスクの実際にデータを記憶しておく場所はサーバの記憶部（メモリ）であり、スワップアウトはデータの記憶場所（ディスクのオフセット）とメモリのアドレスの対応表であるページテーブルの管理だけを行い、実際のメモリ転送は行わないので、スワップ処理は瞬時に終了する。
【００４９】
そして、サーバ１００は、ＯＳ（Operating System）を動作させる上で必要最小限のデータ（カーネル等にかかわるデータを含む）のスナップショットを作成し（以下、ＯＳスナップショット）、ハードウェア１００ｃを再開させ、ＯＳスナップショット１００ｆをサーバ２００に転送し、サーバ１００にかかるＩＰ（Internet Protocol）アドレスなどを変更する。
【００５０】
サーバ２００は、ＯＳスナップショット１００ｆを受信した場合に、メモリ２００ａにこのＯＳスナップショット１００ｆを格納し、ＯＳスナップショット１００ｆによってプロセスを再開させる。
【００５１】
そして、サーバ２００がプロセスを再開させた後に、ページフォルト（page fault）が発生した場合には、サーバ２００は対応するページをサーバ１００に要求し、サーバは要求されたページを仮想ＲＡＭディスク１００ｂから検索すると共に、検索したページをサーバ２００に転送する。
【００５２】
サーバ２００は、サーバ１００から転送されたページを、メモリ２００ａにスワップインする。なお、サーバ１００は、仮想ＲＡＭディスク１００ｂに格納されたデータをスナップショットとしてディスク１００ｅに保存する。
【００５３】
このように、サーバ１００は、仮想ＲＡＭディスク１００ｂを利用してメモリ１００ａのデータをスワップアウトし、サスペンド機能を利用してＯＳを停止し、サーバ２００は、レジーム機能を利用してＯＳの実行を再開し、仮想ＲＡＭディスク２００を利用してスワップインを行うことでマイグレーションが実行可能となるので、従来のマイグレーション技術のように、既存のＯＳにマイグレーションを行うための新しい機能を組み込む必要性を無くすことができると共に、マイグレーションにかかる信頼性を向上させることができる。
【００５４】
次に、本実施例にかかるサーバ１００および２００の構成について説明する。図３は、本実施例にかかるサーバ１００および２００の構成を示す機能ブロック図である。同図に示すように、サーバ１００は、インターフェース部１１０と、ＯＳカーネル部１２０と、ディスクドライバ部１３０と、記憶部１４０と、仮想ＲＡＭディスク１５０と、スナップショット保存処理部１６０とスナップショット記憶部１７０とを有し、サーバ２００は、インターフェース部２１０と、ＯＳカーネル部２２０と、ディスクドライバ部２３０と、記憶部２４０とを有する。
【００５５】
インターフェース部１１０は、所定の通信プロトコルを利用してサーバ２００と通信を行う処理部であり、ＯＳカーネル部１２０は、ディスクドライバ部１３０に対してデータの書き込み／読み込み要求またはスワップアウト要求などを行う処理部である。
【００５６】
ディスクドライバ部１３０は、記憶部１４０に記憶されたデータを仮想ＲＡＭディスク１５０にスワップアウトし、スワップアウトしたデータをサーバ２００にマイグレーションする処理部である。
【００５７】
ここで、ディスクドライバ１３０の処理を具体的に説明する。ディスクドライバ部１３０は、ＯＳカーネル部１２０からスワップアウト要求を受付けた場合に、記憶部１４０に記憶されたＡＰ（Application）データ１４０ａおよびＯＳデータ１４０ｂをスワップアウトする要求を受付ける。このとき、要求を受付けるだけで特に何も処理を行わない。ここに、ＡＰデータ１４０ａは、所定のアプリケーションプログラムを実行するためのデータであり、ＯＳデータ１４０ｂはＯＳにかかるプログラムを実行するためのデータである。
【００５８】
ディスクドライバ１３０は、処理完了通知をＯＳカーネル部１２０にあえて行わないことで、記憶部１４０に対するアクセスを凍結させ、記憶部１４０に記憶されたＡＰデータ１４０ａおよびＯＳデータ１４０ｂが書き換えられないようにする。
【００５９】
また、ディスクドライバ部１３０は、記憶部１４０のデータを一括してサーバ２００に転送するのではなく、非特許文献（ACM Computing Survey, Vol.32, No.3 September 2000, pp.241-299）によって公開された技術を利用して、ＯＳを実行させるために最低限必要となるデータのスナップショット（ＯＳスナップショット）を、ＯＳデータ１４０ｂを基に作成し、このＯＳスナップショットをサーバ２００に転送する。また、このＯＳスナップショットは、後にスナップショット記憶部１７０に保存するために、仮想ＲＡＭディスク１５０のスナップショットデータ１５０ｂに記録する。
【００６０】
そして、ディスクドライバ部１３０は、サーバ２００からのページ要求（ページフォルトによるページ要求）を受付けた場合には、要求されたページのアドレス情報を、ページテーブル１５０ａを基に特定し、特定したアドレス情報に位置するページをサーバ２００に転送する。ここに、ページテーブル１５０ａは、スワップアウトされた各ページと、各ページのアドレス情報との関係を示すテーブルである。
【００６１】
スナップショット保存処理部１６０は、仮想ＲＡＭディスク１５０に記憶されたスナップショットデータ１５０ｂのスナップショットを作成し、作成したスナップショットと記憶部１４０のデータをスナップショット記憶部１７０に記憶させる処理部である。スナップショット記憶部１７０は、スナップショット保存処理部１６０が作成したスナップショットを記憶する記憶部である。
【００６２】
インターフェース部２１０は、所定の通信プロトコルを利用して、サーバ１００と通信を行うための処理部であり、ＯＳカーネル部２２０は、ディスクドライバ部２３０に対してデータの書き込み／読み込み要求またはスワップアウト要求などを行う処理部である。
【００６３】
ディスクドライバ部２３０は、ページフォルトが発生した場合にＯＳカーネル部２２０からスワップイン要求を受付け、該当するページをサーバ１００に要求し、スワップインを実行する処理部である。
【００６４】
ここで、ディスクドライバ２３０の処理を具体的に説明する。ディスクドライバ部２３０は、サーバ１００からＯＳスナップショットを取得した場合に、取得したＯＳスナップショットを記憶部２４０にＯＳデータ２４０ｂとして記憶し、このＯＳデータ２４０ｂによってプロセスを開始し、サーバ１００が行っていたサービスの提供を行う。
【００６５】
なお、サービス提供を開始した場合に、ディスクドライバ部２３０は、ＯＳカーネル部２２０に対して、スワップアウト要求を棄却する旨を通知する。これは、完了通知を行わなかったために、サーバ１００から取得したＯＳスナップショットにディスクドライバ部１３０に対するスワップアウト要求が残っているためである。
【００６６】
また、ディスクドライバ２３０は、サーバ１００上で仮想ＲＡＭディスクにスワップアウトした全てのページについて、ページ無効化を行う。これにより記憶部２４０にまだ転送されていないページをサーバ２００がアクセスした場合に、ページフォルトが発生し、ディスクドライバ２３０に対しスワップイン要求が発生する。
【００６７】
なお、ディスクドライバ２３０は、スワップイン要求を受付けた場合には、対応するページをサーバ１００に要求し、要求したページをサーバ１００から受信した場合には、受信したデータを記憶部２４０に記憶させる。そして、ディスクドライバ２３０は、スワップインが完了した場合には、スワップインが完了した旨をＯＳカーネル部２２０に通知する。
【００６８】
次に、本実施例にかかるサーバ１００およびサーバ２００が行うスナップショット採取開始からサービス再開までの処理について説明する。図４は、本実施例にかかるサーバ１００およびサーバ２００が行うスナップショット採取開始からサービス再開までの処理を示すフローチャートである。
【００６９】
同図に示すように、サーバ１００は、ディスクドライバ部１３０がＯＳカーネル部１２０からスワップアウト要求を受付けた場合に、操作対象となるデータを先頭ページにセットし（ステップＳ１０１）、ＯＳを実行するのに必要不可欠であるカーネルが予約したページか否かを判定する（ステップＳ１０２）。
【００７０】
カーネルが予約したページである場合には（ステップＳ１０２、Ｙｅｓ）、操作対象は最後ページか否かを判定する（ステップＳ１０３）。一方、カーネルが予約したページでない場合には（ステップＳ１０２，Ｎｏ）、仮想ＲＡＭディスク１５０にスワップアウトし（ステップＳ１０４）、ステップＳ１０３に移行する。
【００７１】
操作対象が最終ページでない場合には（ステップＳ１０３，Ｎｏ）、操作対象を次のページにセットし（ステップＳ１０５）、ステップＳ１０２に移行する。一方、操作対象が最終ページである場合には（ステップＳ１０３，Ｙｅｓ）、カーネルの予約ページのコピーを作成し（ステップＳ１０６）、カーネルの予約ページ（ＯＳスナップショット）をサーバ２００に送信する（ステップＳ１０７）。
【００７２】
そして、スワップアウトしたページをスナップショット保存処理部１６０がスナップショット記憶部１７０に保存し、ディスクドライバ部１３０はサーバ２００からのページフォルトによるページ要求待ちの状態に移行する（ステップＳ１０９）。
【００７３】
続いて、サーバ２００は、ディスクドライバ部２３０がカーネル予約ページを受信し（ステップＳ１１０）、受信したカーネル予約ページと実行中のカーネルとを入れ替え（ステップＳ１１１）、操作対象を先頭ページにセットし（ステップＳ１１２）、スワップアウト処理したページか否かを判定する（ステップＳ１１３）。
【００７４】
スワップアウト処理したページでない場合には（ステップＳ１１３，Ｎｏ）、操作対象は最終ページが否かを判定する（ステップＳ１１４）。一方、スワップアウト処理したページである場合には（ステップＳ１１３，Ｙｅｓ）、スワップアウト要求をキャンセルしページを無効化し（ステップＳ１１５）、ステップＳ１１４に移行する。
【００７５】
操作対象が最終ページでない場合には（ステップＳ１１４，Ｎｏ）、操作対象を次のページにセットし（ステップＳ１１６）、ステップＳ１１３に移行する。一方、操作対象が最終ページである場合には（ステップＳ１１４，Ｙｅｓ）、サーバ２００は、サーバ１００が行っていたサービスを再開する（ステップＳ１１７）。
【００７６】
次に、本実施例にかかるサーバ１００およびサーバ２００が行うサービス再開後の処理について説明する。図５は、本実施例にかかるサーバ１００およびサーバ２００が行うサービス再開後の処理を示すフローチャートである。
【００７７】
同図に示すように、サーバ１００は、ディスクドライバ部１３０がサーバ２００からのページ要求のリクエスト待ちを行い（ステップＳ２０１）、サーバ２００は、ディスクドライバ部２３０がスワップイン要求をＯＳカーネル部２２０から受付け（ステップＳ２０２）、ページフォルトが発生した場合に、ページ要求をサーバ１００に行う（ステップＳ２０３）。
【００７８】
そして、ディスクドライバ部１３０がページ要求を受信し（ステップＳ２０４）、ページテーブル１５０ａを検索し、該当アドレスを取得し（ステップＳ２０５）、アドレスに対応するページの転送指示を行い（ステップＳ２０６）、ページをサーバ２００に転送する（ステップＳ２０７）。
【００７９】
サーバ２００は、ステップＳ２０３の後、ページの受信指示を行い（ステップＳ２０８）、ディスクドライバ部２３０がページを受信し、ページのデータを記憶部２４０に格納し（ステップＳ２０９）、スワップインが完了した場合に、スワップイン完了通知をＯＳカーネル部２２０に通知する（ステップＳ２１０）。
【００８０】
このように、ディスクドライバ部１３０がカーネル予約ページにかかるスナップショットを作成し、作成したスナップショットをサーバ２００に送信してサーバ１００が提供していたサービスを提供させ、残りのページはオンデマンドでサーバ２００に転送すると共に、スナップショット保存処理部１６０が仮想ＲＡＭディスク１５０に記憶されたスナップショットデータ１５０ｂと凍結された記憶部１４０のデータをスナップショットデータとしてスナップショット記憶部１７０に保存するので、任意の時点におけるスナップショットを効率よく採取することができる。
【００８１】
上述してきたように本実施例にかかるサーバ１００は、ディスクドライバ部１３０がＯＳカーネル部１２０からスナップショット要求を受付けた場合に、ＯＳスナップショットを作成し、作成したＯＳスナップショットをサーバ２００に転送すると共に、記憶部１４０に記憶されたデータを仮想ＲＡＭディスクにスワップアウトし、記憶部１４０に対するアクセスを凍結する。
【００８２】
そして、サーバ２００からページ要求を受信した場合には、要求されたページを仮想ＲＡＭディスク１５０から検索し、検索したページをサーバ２００に転送する。また、スナップショット保存処理部１６０は、仮想ＲＡＭディスクに記憶されたデータのスナップショット１５０ｂと凍結された記憶部１４０のデータをスナップショット記憶部１７０に保存するので、任意の時点におけるスナップショットを効率よく採取することができる。
【００８３】
また、サーバ１００の状態を、スナップショット採取前に戻したい場合には、従来ではディスクからスナップショットを読み出して記憶部１４０にわざわざ展開するという処理が必要であったが、本発明では、記憶部１４０に対するアクセスの凍結を解除するだけで元の状態に戻すことができる。
【００８４】
なお、本実施例では一例として、ディスクドライバ部１３０がサーバ２００にマイグレーションを実行する場合にＣＯＲ（Copy On Reference）方式を用いて行う場合を示したが、これに限定されるものではなく、precopy方式を利用してマイグレーションを実行しても良い。
【００８５】
すなわち、ディスクドライバ部１３０は、サーバ１００がサービス提供中に記憶部１４０に記憶されたデータをページ単位でサーバ２００に転送しておき、マイグレーションを実行する場合には、ページを転送してからマイグレーションを実行するまでの間に変更があったページのみをサーバ２００に転送し、サーバ２００にサーバ１００が行っていたサービス提供を効率よく行わせることができる。
【００８６】
ところで、本実施例では、２台のサーバ１００、２００間でマイグレーションを実行し、サーバ１００のスナップショットを採取する場合を示したが、複数のサーバなどを用意して、各サーバにスナップショットを残しながらＯＳが各サーバを渡り歩くようにして、任意の過去の状態を再現することもできる。
【００８７】
図６は、複数のサーバを用意して、複数のスナップショットを採取する手法を説明するための説明図である。図６では、説明の便宜上、５台のサーバを利用する場合について説明する。
【００８８】
同図に示すように、５台のサーバ１０〜５０を用意して、毎日スナップショットを採取することで、採取したスナップショットを基に、任意の日数前の状態にサーバを瞬時に戻すことができる。
【００８９】
すなわち、１日目にサーバ１０のデータをサーバ２０にマイグレートしてスナップショット１を採取し、２日目にサーバ２０のデータをサーバ３０にマイグレートしてスナップショット２を採取し、３日目にサーバ３０のデータをサーバ４０にマイグレートしてスナップショット３を採取し、４日目にサーバ４０のデータをサーバ５０にマイグレートしてスナップショット４を採取する。そして、例えば、１日目の状態にサーバを戻す場合には、スナップショット１を利用することで瞬時に１日目の状態にサーバを戻すことができる。
【００９０】
また、図７に示すように、サーバ２台を用意して相互にマイグレートを実行し、スナップショットを複数採取することも可能である。図７は、２台のサーバを利用して、複数のスナップショットを採取する手法を説明するための説明図である。なお、この場合、サーバ６０がサーバ７０に対してマイグレーションを実行し、スナップショットを取得した場合には、転送元のメモリに対するアクセス凍結をドライバが解除する（スワップアウト要求に対する完了通知を行う）。
【００９１】
また、サーバは、ＯＳのマイグレーションを複数のサーバに対して行い、転送元の仮想ＲＡＭディスクドライバが複数のサーバに対してスナップショットを転送しておくことで、転送元のサーバに故障が発生した場合に、サーバ故障に対する調査を複数人が行うこともできる。
【００９２】
（付記１）記憶部にデータを記憶しプログラムを実行するプログラム実行装置であって、
前記記憶部に対するアクセスを凍結するアクセス凍結手段と、
前記記憶部に記憶されたデータを他装置にマイグレーションし、自装置が実行していたプログラムを他装置に実行させるマイグレーション実行手段と、
を備えたことを特徴とするプログラム実行装置。
【００９３】
（付記２）前記マイグレーション実行手段は、前記他装置がプログラム実行するために必要な最小限のデータのみを該他装置に転送し、未転送のデータは前記他装置のデータ要求に応じて転送することを特徴とする付記１に記載のプログラム実行装置。
【００９４】
（付記３）前記アクセス凍結手段は、サスペンド機能を利用して、前記記憶部のデータを仮想的な記憶部にスワップアウトさせるスワップアウト実行手段と、該スワップアウトを完了させた場合に、スワップアウトが完了した旨を要求元に通知しないことで前記記憶部に対するアクセスを凍結する凍結手段とを備えたこと特徴とする付記１または２に記載のプログラム実行装置。
【００９５】
（付記４）前記マイグレーション実行手段は、自装置のプログラム実行中に前記記憶部に記憶されたデータを部分的に他装置に転送し、マイグレーション実行時には前記記憶部から他装置に転送されたデータのうち、転送後に変更されたデータだけを他装置に転送することを特徴とする付記１に記載のプログラム実行装置。
【００９６】
（付記５）前記記憶部に記憶されたデータをスナップショットとして採取するスナップショット採取手段を更に備えたことを特徴とする付記１〜４のいずれか一つに記載のプログラム実行装置。
【００９７】
（付記６）記憶部にデータを記憶した運用系計算機および待機系計算機から計算機システムを構成し、前記運用系計算機または待機系計算機にプログラムを実行させるプログラム実行方法であって、
前記運用系計算機の記憶部に対するアクセスを凍結するアクセス凍結工程と、
前記運用系計算機の記憶部に記憶されたデータを待機系計算機にマイグレーションし、運用系計算機が実行していたプログラムを前記待機系計算機に実行させるマイグレーション実行工程と、
を含んだことを特徴とするプログラム実行方法。
【００９８】
（付記７）前記マイグレーション実行工程は、前記待機系計算機のプログラム実行に必要な最小限のデータのみを前記運用系計算機から待機系計算機に転送し、未転送のデータは前記待機系計算機のデータ要求に応じて前記運用系計算機から転送することを特徴とする付記６に記載のプログラム実行方法。
【００９９】
（付記８）前記アクセス凍結工程は、前記運用系計算機の記憶部のデータを仮想的な記憶部にスワップアウトさせるスワップアウト実行工程と、該スワップアウトを完了させた場合に、スワップアウトが完了した旨を要求元に通知しないことで前記運用系計算機の記憶部に対するアクセスを凍結する凍結工程とを含んだこと特徴とする付記６または７に記載のプログラム実行方法。
【０１００】
（付記９）前記マイグレーション実行工程は、サスペンド機能を利用した前記運用系計算機の停止工程と、前記運用系計算機の記憶部に記憶されたデータを前記待機系計算機の記憶部に転送する転送工程と、レジューム機能を利用した前記待機系計算機の実行再開工程と、前記運用系計算機の記憶部から前記待機系計算機の記憶部へデータをスワップインするスワップイン実行工程とを含んだことを特徴とする付記６、７または８に記載のプログラム実行方法。
【０１０１】
（付記１０）前記マイグレーション実行工程は、前記運用系計算機のプログラム実行中に前記運用系計算機の記憶部に記憶されたデータを部分的に待機系計算機に転送し、マイグレーション実行時には前記運用系計算機の記憶部から待機系計算機に転送されたデータのうち、転送後に変更されたデータだけを待機系計算機に転送することを特徴とする付記６に記載のプログラム実行方法。
【０１０２】
（付記１１）前記運用系の記憶部に記憶されたデータをスナップショットとして採取するスナップショット採取工程を更に含んだことを特徴とする付記６〜１０のいずれか一つに記載のプログラム実行方法。
【０１０３】
（付記１２）記憶部にデータを記憶した運用系計算機および待機系計算機から計算機システムを構成し、前記運用系計算機または待機系計算機にサービスを提供させるサービス提供プログラムであって、
前記運用系計算機の記憶部に対するアクセスを凍結するアクセス凍結手順と、
前記運用系計算機の記憶部に記憶されたデータを待機系計算機にマイグレーションし、運用系計算機が提供していたサービスを前記待機系計算機に提供させるマイグレーション実行手順と、
をコンピュータに実行させることを特徴とするサービス提供プログラム。
【０１０４】
（付記１３）前記マイグレーション実行手順は、前記待機系計算機のサービス提供に必要な最小限のデータのみを前記運用系計算機から待機系計算機に転送し、未転送のデータは前記待機系計算機のデータ要求に応じて前記運用系計算機から転送することを特徴とする付記１２に記載のサービス提供プログラム。
【０１０５】
（付記１４）前記アクセス凍結手順は、前記運用系計算機の記憶部のデータを仮想的な記憶部にスワップアウトさせるスワップアウト実行手順と、該スワップアウトを完了させた場合に、スワップアウトが完了した旨を要求元に通知しないことで前記運用系計算機の記憶部に対するアクセスを凍結する凍結手順とをコンピュータに実行させること特徴とする付記１２または１３に記載のサービス提供プログラム。
【０１０６】
（付記１５）前記マイグレーション実行手順は、サスペンド機能を利用した前記運用系計算機の停止手順と、前記運用系計算機の記憶部に記憶されたデータを前記待機系計算機の記憶部に転送する転送手順と、レジューム機能を利用した前記待機系計算機の実行再開手順と、前記運用系計算機の記憶部から前記待機系計算機の記憶部へデータをスワップインするスワップイン実行手順とをコンピュータに実行させることを特徴とする付記１２、１３または１４に記載のサービス提供プログラム。
【０１０７】
（付記１６）前記マイグレーション実行手順は、前記運用系計算機のプログラム実行中に前記運用系計算機の記憶部に記憶されたデータを部分的に待機系計算機に転送し、マイグレーション実行時には前記運用系計算機の記憶部から待機系計算機に転送されたデータのうち、転送後に変更されたデータだけを待機系計算機に転送することを特徴とする付記１２に記載のサービス提供プログラム。
【０１０８】
（付記１７）前記運用系の記憶部に記憶されたデータをスナップショットとして採取するスナップショット採取手順を更にコンピュータに実行させることを特徴とする付記１２〜１６のいずれか一つに記載のサービス提供プログラム。
【産業上の利用可能性】
【０１０９】
以上のように、本発明にかかるプログラム実行装置、プログラム実行方法およびサービス提供プログラムは、サービス提供を滞らせることなく、任意の時点におけるスナップショットを採取する必要のあるサーバシステムなどに対して有用である。
【図面の簡単な説明】
【０１１０】
【図１】本実施例にかかるシステムの概念を説明するための説明図である。
【図２】スナップショット採取時にサーバ１００および２００の間で行われるマイグレーションを説明するための説明図である。
【図３】本実施例にかかるサーバ１００および２００の構成を示す機能ブロック図である。
【図４】本実施例にかかるサーバ１００およびサーバ２００が行うスナップショット採取開始からサービス再開までの処理を示すフローチャートである。
【図５】本実施例にかかるサーバ１００およびサーバ２００が行うサービス再開後の処理を示すフローチャートである。
【図６】複数のサーバを用意して、複数のスナップショットを採取する手法を説明するための説明図である。
【図７】２台のサーバを利用して、複数のスナップショットを採取する手法を説明するための説明図である。
【符号の説明】
【０１１１】
１００，２００    サーバ
１１０，２１０    インターフェース部
１２０，２２０    ＯＳカーネル部
１３０，２３０    ディスクドライバ部
１４０，２４０    記憶部
１４０ａ，２４０ａ    ＡＰデータ
１４０ｂ，２４０ｂ    ＯＳデータ
１５０    仮想ＲＡＭディスク
１５０ａ  ページテーブル
１５０ｂ  スナップショットデータ
１６０    スナップショット保存処理部
１７０    スナップショット記憶部
【図１】
2006277234.tif 000003
【図２】
2006277234.tif 000004
【図３】
2006277234.tif 000005
【図４】
2006277234.tif 000006
【図５】
2006277234.tif 000007
【図６】
2006277234.tif 000008
【図７】
2006277234.tif 000009