JP2014238677A - トランザクション再開プログラム、情報処理装置及びトランザクション再開方法 - Google Patents

トランザクション再開プログラム、情報処理装置及びトランザクション再開方法 Download PDF

Info

Publication number
JP2014238677A
JP2014238677A JP2013120250A JP2013120250A JP2014238677A JP 2014238677 A JP2014238677 A JP 2014238677A JP 2013120250 A JP2013120250 A JP 2013120250A JP 2013120250 A JP2013120250 A JP 2013120250A JP 2014238677 A JP2014238677 A JP 2014238677A
Authority
JP
Japan
Prior art keywords
virtual machine
packet
virtual
response
snapshot
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013120250A
Other languages
English (en)
Other versions
JP6115331B2 (ja
Inventor
智裕 大嶽
Tomohiro Otake
智裕 大嶽
小高 敏裕
Toshihiro Odaka
敏裕 小高
敦二 関口
Atsuji Sekiguchi
敦二 関口
堀田 勇次
Yuji Hotta
勇次 堀田
智弘 清水
Toshihiro Shimizu
智弘 清水
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013120250A priority Critical patent/JP6115331B2/ja
Priority to US14/291,949 priority patent/US9342409B2/en
Priority to EP14170643.2A priority patent/EP2811402B1/en
Publication of JP2014238677A publication Critical patent/JP2014238677A/ja
Application granted granted Critical
Publication of JP6115331B2 publication Critical patent/JP6115331B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1443Transmit or communication errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Abstract

【課題】未完了であったトランザクションが存在する場合であっても、仮想マシンの復元完了後にトランザクションを再開できる技術を提供する。【解決手段】仮想マシンに接続された仮想スイッチが、仮想マシン宛てのパケットを受信すると、パケットを仮想マシンに転送し、受信したパケットであって、未完了のトランザクションに関連するパケットを、未完了のトランザクションに対応付けて第1記憶部に記憶し、仮想マシンを復元させる指示に応じて、仮想マシンへのパケットの転送を停止し、仮想マシンの復元の完了に応じて、転送の再開指示を受信した場合に、未完了のトランザクションに対応付けて第1記憶部に記憶された1または複数のパケットを仮想マシンに送信することにより、上記課題の解決を図る。【選択図】図1

Description

本発明は、トランザクションを再開させる技術に関する。
情報システムの運用者がシステムの設定変更やアプリケーションの更新をする時に設定変更ミスや新バージョンのバグなどによってサービスに不具合が出てしまうことがある。そのような状況が起きた時に即座に以前の状態に戻すために仮想マシンのスナップショットを用いることが行われている。
仮想マシンのスナップショットを用いたリカバリーとは、仮想マシンの状態を保存しておき、後になってその状態にマシンを復元できる機能のことを指す。
第1技術としては、通信を相互に行っている複数の仮想計算機のスナップショットを同時に作成する際に、送信中のデータを失うことなく整合性が取れた状態で行う技術がある(例えば、特許文献1)。第1技術では、ゲストOS(Operating System)A,Bについてのスナップショット保存を行う際に、保存実行部A,Bが、管理OS側仮想ネットワークドライバA,Bに指示して、ゲストOSA,Bによるネットワーク送信キューA,Bへのデータ格納を停止させ、ネットワーク送信キューA,B及びネットワーク受信キューA,Bが空になるのを待ち、これらキューが空になった際に、VMモニターA,Bにスナップショット指示を出力して、ゲストOSA,Bの仮想ハードウェアの状態のスナップショット保存を行わせる。
第2技術としては、1つまたは複数の仮想マシンをホストしているホストサーバは、ホストボリュームおよびそれにインストールされている1つまたは複数の仮想マシンを、アプリケーション整合方法でバックアップする技術がある(例えば、特許文献2)。第2技術では、ホストレベルのリクエスタは、どの仮想マシンがアプリケーション整合バックアップにふさわしいかを識別するようホストレベルのライタに指示する。次いで、ホストレベルのリクエスタは、適切に構成された各仮想マシンにおけるゲストレベルのリクエスタを介して、仮想マシンバックアップを開始するようホストレベルのライタに指示する。仮想マシンは、仮想マシンボリューム内にアプリケーション整合バックアップを作成する。ホストレベルのリクエスタは、次いで、ホストレベル上のサーバボリュームのスナップショットを開始する。したがって、仮想マシンレベルのスナップショットを、サーバボリュームのホストレベルのスナップショット内から取り出すことができる。
第3技術としては、システム外部への出力を待機させることなく、外部との整合性を保てる状態の如何を問わずに、仮想計算機の状態を障害発生時点まで復元できるようにする技術がある(例えば、特許文献3)。第3技術では、通信記録装置は、外部システム及び仮想計算機との間で入出力される通信データを通信のログとして時系列順に記録する。スナップショット管理機構は、障害発生のために仮想計算機の復元が必要となった場合、スナップショット格納部に格納されている当該仮想計算機の最新のスナップショットに基づき、当該仮想計算機を当該スナップショットの取得時点(第1の時点)に復元する。ログ再生機構は、この仮想計算機に、通信記録装置によって記録されている通信のログに含まれている第1の時点から障害発生時である第2の時点までの入力データを時系列順に投入することにより、当該仮想計算機を第2の時点まで復元する。
第4技術としては、連携中の仮想マシンを一時停止した場合でも、再開時に連携中の仮想マシン間の整合性を確保する技術がある(例えば、特許文献4)。第4技術では、管理サーバは、物理マシンを管理すると共に、物理マシン上で展開する複数の仮想マシンを管理し、複数の仮想マシンで相互に連携して制御処理を実行可能にする。管理サーバは、依存関係一覧作成部、対象管理テーブル作成部、対象提示部を有する。依存関係一覧作成部は、仮想マシンの依存関係を管理する依存関係一覧テーブルを作成する。対象管理テーブル作成部は、一時停止対象の仮想マシンの選択指示を検出すると、依存関係一覧テーブルに基づき、同仮想マシンと依存関係にある全仮想マシンを管理する一時停止順序管理テーブルを作成する。対象提示部は、一時停止順序管理テーブルに基づき、依存関係が大きい順に一時停止対象の全仮想マシンをクライアントに視覚的に提示する。
第5技術としては、仮想マシンが動作している物理計算機に障害が発生した場合、別の物理計算機上で再生成または再起動される仮想マシンによりサービスを継続させる技術がある(例えば、特許文献5)。第5技術では、仮想マシンが動作しているサーバ計算機に障害が発生した場合、サーバ計算機の仮想マシンモニタは、障害発生時刻に最も近い時点でディスク装置に採取されたスナップショットに基づき、仮想マシンを仮想マシンとしてサーバ計算機上に再生成する。通信記録ユニットの状態再現部は、仮想マシンに対応付けられた通信履歴に基づき、スナップショットの採取時期から上記障害発生時刻までの期間における仮想マシンの状態を仮想マシンに再現させる。再起動部は、例えば仮想マシンの状態の再現に失敗した場合、仮想マシンをサーバ計算機上で再起動する。
特開2011−253350号公報 特表2009−533777号公報 特開2009−80705号公報 特開2009−245317号公報 特開2009−80692号公報
しかしながら、第1技術では、スナップショットへの復元時に、スナップショット作成時点でのコネクション情報に復元されてしまうため、復元時に確立していたコネクションが維持されず、クライアントから見たらコネクションが切れてしまったかのように見えてしまう。
本発明では、一側面として、未完了であったトランザクションが存在する場合であっても、仮想マシンの復元完了後にトランザクションを再開できる技術を提供する。
トランザクション再開プログラムは、情報処理装置に、仮想マシンに接続された仮想スイッチが以下を行う処理を実行させる。仮想スイッチは、仮想マシン宛てのパケットを受信すると、パケットを仮想マシンに転送する。仮想スイッチは、受信したパケットであって、未完了のトランザクションに関連するパケットを、未完了のトランザクションに対応付けて第1記憶部に記憶する。仮想スイッチは、仮想マシンを復元させる指示に応じて、仮想マシンへのパケットの転送を停止する。仮想スイッチは、仮想マシンの復元の完了に応じて、転送の再開指示を受信した場合に、未完了のトランザクションに対応付けて第1記憶部に記憶された1または複数のパケットを仮想マシンに送信する。
本発明の一側面によれば、未完了であったトランザクションが存在する場合であっても、仮想マシンの復元完了後にトランザクションを再開できる。
本実施形態における情報処理装置のブロック図である。 本実施形態における物理マシンのハードウェア構成図である。 本実施形態における複数の仮想マシンを稼動させる物理マシンの構成の一例を示す。 本実施形態における仮想マシンの論理構成図である。 本実施形態における仮想システムの論理構成図である。 本実施形態におけるリクエスト再送信テーブルの一例を示す。 本実施形態におけるリクエスト再送信テーブルの1つの行の状態の遷移の一例を示す。 本実施形態におけるスナップショット管理テーブルの一例を示す。 本実施形態における仮想スイッチのリクエスト/レスポンス受信時の動作の一例を表したアクティビティ図である。 本実施形態におけるスナップショットを作成する場合の仮想システム内の動作の一例を表したアクティビティ図である。 本実施形態におけるスナップショットを復元する場合の仮想システム内の動作の一例を表したアクティビティ図である。 本実施形態におけるスナップショットを復元する場合の仮想システム内の動作の一例を表したアクティビティ図である。 本実施形態におけるスナップショット復元時の仮想スイッチのリクエスト再送信(S211〜S213)に係るアクティビティ図である。 本実施形態の変形例におけるリクエスト再送信テーブルの一例を示す。
個別の仮想マシンに関してはスナップショットを取ることができるが、複数の仮想マシンにまたがったシステムについてシステムレベルでスナップショットを取ることは容易ではない。その理由として、システム内のマシン間で同じタイミングでスナップショットが取れる保証がないことと、システム内のネットワークの状態が保存できていないことが挙げられる。
ところが、現在の情報システムは高度化しており、単体のマシンだけではシステムは完結していないことが多い。そのため仮想マシンのスナップショットではシステム全体のスナップショットを取ることが必要となっている。
第1技術では、複数の仮想マシンにおいてネットワークドライバを制御することでネットワーク通信を止めてからスナップショットを作成することで、複数マシンにまたがって整合性が取れたスナップショットを作成する。しかしながら、第1技術では、スナップショットの対象のマシンとそれ以外との間の整合性について考慮されておらず、実運用を行っているシステムで用いることが困難である。具体的には外部のネットワークにあるクライアントが考慮されておらず、閉じたシステム内の身を想定してしまっていること、および、データ用ディスクが考慮されていないことにより、スナップショットへの復元時にデータ変更が消失することである。また、スナップショットへの復元時に、スナップショット作成時点でのコネクション情報に復元されてしまうため、復元時に張られていたコネクションが維持されず、クライアントから見たらコネクションが切れてしまったかのように見えてしまう。
第2技術では、ホストサーバが仮想マシンに指示を出すことで、仮想マシンを停止せずに仮想マシンの整合性のあるスナップショットを作成できるようにする。NTFSのシャドーコピーを使うことでアプリケーションレベルでの整合性のあるスナップショットを作成する。しかしながら、第2技術は、個別のマシンに対するスナップショットについてであり、複数マシンの間での整合性までは保てない。
第3技術では、スナップショット作成から復元までの全ての通信を保存しておき、スナップショットに戻した後に保存しておいた通信を再投入することでスナップショット作成後のデータ変更に応じられるようにしている。第3技術ではスナップショットを作成時点からの通信を再現するため、スナップショットを作成したときからの時間に応じて復元に時間がかかってしまう。
第5技術では、仮想マシンの依存関係を用いて仮想マシンと物理マシンのシャットダウンを行うが、システムを止めることになるためサービスを継続したままスナップショットを取ることができない。
そこで、本実施形態では、未完了であったトランザクションが存在する場合であっても、仮想マシンの復元完了後にトランザクションを再開できる技術を提供する。さらに、本実施形態では、複数の仮想マシンを含めた仮想システム全体でのスナップショットの復元をサービス無停止でできるようにする技術を提供する。さらに、本実施形態では、スナップショットの作成から復元までの間にされたデータ更新を復元後でも維持でき、復元に要する時間を短縮させる技術を提供する。
図1は、本実施形態における情報処理装置のブロック図である。情報処理装置1は、第1転送制御部2、記憶制御部3、停止制御部4、送信制御部5を含む。
第1転送制御部2は、仮想マシンに接続された仮想スイッチが仮想マシン宛てのパケットを受信すると、仮想スイッチに、パケットを転送させる。第1転送制御部2の一例としては、ハイパバイザ32が挙げられる。
記憶制御部3は、受信されたパケットであって、未完了のトランザクションに関連するパケットを、仮想スイッチに、未完了のトランザクションに対応付けて第1記憶部に記憶させる。記憶制御部3の一例としては、ハイパバイザ32が挙げられる。第1記憶部の一例としては、リクエスト再送信テーブルが格納された外部記憶装置16が挙げられる。
停止制御部4は、仮想マシンを復元させる指示に応じて、仮想スイッチに、仮想マシンへのパケットの転送を停止させる。停止制御部4の一例としては、ハイパバイザ32が挙げられる。
送信制御部5は、仮想マシンの復元の完了に応じて、転送の再開指示を受信した場合に仮想スイッチに、未完了のトランザクションに対応付けて第1記憶部に記憶された1または複数のパケットを仮想マシンへ送信させる。
このように構成することにより、未完了であったトランザクションが存在する場合であっても、仮想マシンの復元完了後にトランザクションを再開できる。
記憶制御部3は、未完了のトランザクションに対応付けてパケットを第1記憶部に記憶する場合、パケットに、パケットの受信時刻または転送時刻を付与する。
このように構成することにより、再送信するパケットの順序を定めることができる。
情報処理装置1は、さらに、第2転送制御部6、転送量記憶制御部7を含む。第2転送制御部6は、仮想スイッチがパケットにより形成される仮想マシンへの要求に対する応答に関するパケットを受信すると、仮想スイッチに、応答に関するパケットを転送させる。第2転送制御部6の一例としては、ハイパバイザ32が挙げられる。
転送量記憶制御部7は、仮想スイッチに、応答に関するパケットの転送量を第1記憶部に記憶させる。転送量記憶制御部7の一例としては、ハイパバイザ32が挙げられる。
第2転送制御部6は、仮想マシンの復元完了に応じて、転送の再開指示を受信した場合に、さらに、応答に関するパケットを仮想マシンから受信すると、仮想スイッチに、次の処理を行わせる。すなわち、第2転送制御部6は、仮想スイッチに、第1記憶部に記憶された転送量に対応するパケットを破棄させ、転送量を超えるパケットを転送させる。
このように構成することにより、既にクライアントに送ったパケットは送らず、未送信のパケットのみを送ることができる。
情報処理装置1は、さらに、仮想マシン制御部8、作成部9を含む。仮想マシン制御部8は、仮想マシンに、応答に関するパケットの送信を停止させ、仮想マシンが用いる記憶領域に対応する第2記憶部に書き込む前に記憶領域に一時的に保持されている書込情報を、第2記憶部へ書き込ませる。仮想マシン制御部8の一例としては、ハイパバイザ32が挙げられる。
作成部9は、仮想スイッチから前記仮想マシンへの要求に関するパケットの転送の停止、仮想マシンからの応答に関するパケットの送信の停止、及び書込情報の書き込みの後に、仮想マシンのスナップショットを作成する。作成部9の一例としては、ハイパバイザ32が挙げられる。
このように構成することにより、仮想システムを停止させずに、スナップショットを作成できるので、仮想システムによるサービスを継続したままスナップショットを作成することができる。また、記憶領域に一時的に保持されている書込情報を、第2記憶部へ書き込ませ、第2記憶部についてはスナップショットの対象にならないから、スナップショット作成時間及びそのスナップショットを用いた復元時の時間を短縮することができる。
情報処理装置は、さらに、復元制御部10を含む。復元制御部10は、スナップショットに対応する仮想マシンを復元する。
このとき、仮想マシン制御部8は、スナップショット作成後に、停止させていた要求に関するパケット及び応答に関するパケットの送信が再開している場合、次の処理を行う。すなわち、仮想マシン制御部8は、スナップショットに対応する仮想マシンに、実行中の処理を停止させ、仮想マシンに、記憶領域に一時的に保持されている書込情報を、第2記憶部へ書き込ませる。
復元制御部10は、仮想マシンが実行中の処理の停止、仮想スイッチから仮想マシンへの前記要求に関するパケットの転送の停止、及び書込情報の書き込みの後に、スナップショットを用いて、該スナップショットに対応する仮想マシンを復元する。
仮想マシン制御部8は、さらに、
復元された前記仮想マシンに、第2記憶部から読み出されて一時的に保持されている読出情報を破棄させる。仮想マシン制御部8は、スナップショット作成時に停止させていた応答に関するパケットの送信を再開させる。仮想マシン制御部8は、スナップショット作成時に行っていた処理を停止させる。
このように構成することにより、スナップショットの作成から復元までの間に行われたデータの更新を復元後でも維持することができる。
図2は、本実施形態における物理マシンのハードウェア構成図である。物理マシン11は、中央演算装置(Central Processing Unit:CPU)12、メモリ13、入力装置14、出力装置15、外部記憶装置16、可搬記録媒体駆動装置17、ネットワーク接続装置18、バス20を含む。バス20には、CPU12、メモリ13、入力装置14、出力装置15、外部記憶装置16、可搬記録媒体駆動装置17、ネットワーク接続装置18が接続されている。
メモリ13は、ROM(Read Only Memory)、RAM(Random Access Memory)等の記憶装置である。外部記憶装置16は、メモリ13に比べて大容量の記憶装置である。外部記憶装置16としては、ハードディスクドライブ、フラッシュメモリ装置、磁気ディスク装置など様々な形式の記憶装置を使用することができる。
CPU(物理CPU)12は、ROMまたは外部記憶装置16等に格納した後述する処理を実現するプログラムを読み出し、当該プログラムを実行する。
可搬記録媒体駆動装置17は、可搬記録媒体19を読み出す装置である。可搬型記憶媒体19としてはCD−ROM、フレキシブルディスク、光ディスク、光磁気ディスク、ICカード、DVD、USBメモリ装置など様々な形式の記憶媒体を使用することができる。
ネットワーク接続装置18は、ネットワーク21に接続された他の情報処理装置と通信するための通信インターフェースカードである。ネットワーク21は、インターネット、LAN、WAN、専用線、有線、無線等の通信網であってよい。
入力装置14には、キーボード、マウス、電子カメラ、ウェブカメラ、マイク、スキャナ、センサ、タブレット、タッチパネルなどを用いることが可能である。また、出力装置15には、ディスプレイ、プリンタ、スピーカなどを用いることが可能である。
後述する実施形態で説明する処理を実現するプログラムは、プログラム提供者側から通信ネットワーク21、およびネットワーク接続装置18を介して、例えば外部記憶装置16に格納してもよい。また、後述する実施形態で説明する処理を実現するプログラムは、市販され、流通している可搬型記憶媒体に格納されていてもよい。この場合、この可搬型記憶媒体は可搬記録媒体駆動装置17に設定されて、CPU12によってそのプログラムが読み出されて、実行されてもよい。
図3は、本実施形態における複数の仮想マシンを稼動させる物理マシンの構成の一例を示す。物理マシン11にはハイパバイザ32がインストールされており、そのハイパバイザ32上で複数の仮想スイッチ42−1,42−yと複数の仮想マシン41−11〜41−1x,・・・.41−y1〜41―yzが稼働している。仮想スイッチと仮想マシンの論理的な集合をシステムと呼ぶことにする。また、複数の仮想マシン41−11〜41−1x,・・・.41−y1〜41―yzを総称して、仮想マシン41という。複数の仮想スイッチ42−1,42−yを総称して、仮想スイッチ42という。
物理マシン11は、仮想化プログラムとしてのハイパバイザ32を実行することにより、複数の仮想マシン(VM:Virtual Machine)として機能する。物理マシン11は、図2で説明したように、CPU12、メモリ13等を含む物理的なデバイス群である。
物理マシン11上では、ハイパバイザ32、及び複数の仮想システム1〜yが稼働している。各仮想システムは、仮想スイッチ42、複数の仮想マシン41を含む。例えば、仮想システム1は、仮想スイッチSW_1、仮想マシンVM_11、・・・、仮想マシンVM_1xを含む。仮想システムyは、仮想スイッチSW_y、仮想マシンVM_y1,・・・,VM_yzを含む。
ハイパバイザ32は、物理マシン11上で、仮想スイッチ42、複数の仮想マシン41を稼動させて制御するために、仮想スイッチ42、仮想マシン41に対して仮想的なハードウェア環境を提供するプログラムである。具体的は、ハイパバイザ32は、各仮想マシン41のオペレーティングシステム(OS:Operating System)のディスパッチ(実CPUの制御権割り当て)、それらのOSが実行する特権命令のエミュレーション、物理CPU12等のハードウェアの制御等を行う。
各仮想マシン41は、ハイパバイザ32上で、他の仮想マシン41と独立して稼動する仮想的な計算機である。各仮想マシン41は、それぞれのOSがハイパバイザ32を介して物理CPU12の制御権を獲得して当該CPU12上で実行されることにより実現される。
仮想スイッチ42は、物理マシン11が接続されるネットワークを介して、送信された通信パケット(以下、「パケット」という)を受信すると、そのパケットの宛先を参照して、その宛先が示す仮想マシンへそのパケットを転送する。また、仮想スイッチ42は、物理マシン内のいずれかの仮想マシンからパケットを受信すると、その通信パケットの宛先を参照して、その宛先が示す当該物理マシン内の他の仮想マシン、他の物理マシン、または他のマシン内の仮想マシンへそのパケットを転送する。ここで、リクエストメッセージ(以下、「リクエスト」という)、レスポンスメッセージ(以下、「レスポンス」という)等のメッセージは、所定のサイズに分解されて、分解されたデータに所定の通信プロトコルに対応するヘッダが付与されたものをパケットという。
図4は、本実施形態における仮想マシンの論理構成図である。仮想マシン41は、CPU412、メモリ413、入力装置414、出力装置415、システム用ディスク416、データ用ディスク417、ネットワーク接続装置418、ハイパバイザ連携装置419、バス420等の論理的(仮想的)なデバイスを含む。
CPU412は、システム用ディスク416等に格納した後述する処理を実現するプログラムを読み出し、当該プログラムを実行する論理的なCPUである。メモリ413は、CPU412により使用される一時的にプログラムを保持したり、データを保持したりする論理的な記憶装置である。
入力装置414は、仮想マシン41に対してデータを入力する論理的な入力装置である。また、出力装置415は、仮想マシン41が用いる論理的な出力装置である。
システム用ディスク416には、OSやアプリケーションや設定ファイルなどが格納されている。データ用ディスク417には、アプリケーションソフトウェアが保存するデータが格納されている。システム用ディスク416もデータ用ディスク417も実体としては物理マシン11の外部記憶装置16上のファイルとして実装されていることが多い。
ネットワーク接続装置418は、ネットワークを介して、他の物理マシンまたは仮想マシンと通信するための論理的なネットワークインターフェースカード(NIC)である。ネットワークは、インターネット、LAN、WAN、専用線、有線、無線等の通信網であってよい。
ハイパバイザ連携装置(以下、HV連携装置という)419は、ハイパバイザ32と仮想マシン11のOSが連携を行うための仮想的なデバイスである。HV連携装置419を使ってハイパバイザ32と仮想マシン41のOSが連携することができる。また、HV連携装置419は、仮想マシン41の電源管理やクリップボードの共有などを可能としている。
図5は、本実施形態における仮想システムの論理構成図である。仮想システム51は、ハイパバイザ32上で駆動しているいずれかの仮想システムである。仮想システム51では、複数の仮想マシン41(VM_1〜VM_n)が内部ネットワーク52によって結合されている。また、仮想システム51は、内部ネットワーク52と外部ネットワーク55をつなぐ仮想スイッチ42を含んでいる。
たとえば仮想サーバVM_1(41−1)がアプリケーションサーバであり、仮想サーバVM_n(41−n)がデータベースサーバという2階層システムの場合、仮想システム51は以下の動作を行う。クライアント装置(以下、「クライアント」と称する)が外部ネットワーク55から発したリクエストは、仮想スイッチ42を通り、内部ネットワーク52を経由して仮想マシンVM_1に送信される。仮想マシンVM_1は内部ネットワーク52を通して仮想マシンVM_nのデータベースに問合せを行い、仮想スイッチ42を通じてレスポンスをクライアントに返す。
本実施形態では、HV連携装置419を通じて、仮想マシン41の受信バッファとデータ用ディスク417のライトバッファを制御する機構を追加することで、複数の仮想マシン41にまたがった一貫性のあるスナップショットを作成できるようにする。また、スナップショットを用いた復元においては、HV連携装置419を通じて仮想マシン41に対して実行中のリクエストを中断させ、仮想スイッチ42から実行中のリクエストを再度送り直す。これにより、スナップショット復元時でもクライアントから見てリクエストが継続しているかのように見せることができる。
仮想スイッチ42は、外部ネットワーク仮想スイッチ42は、外部ネットワークから送信された、実行中のリクエストを記憶しておくバッファ53を有する。仮想スイッチ42は、外部から来るリクエストの内容を、リクエストに対するレスポンスが終わるまでバッファ53に記憶し続ける。バッファ53は、スナップショットの復元時に用いる。また、仮想スイッチ42の論理的なメモリ領域には、リクエスト再送信テーブル54が格納されている。
図6は、本実施形態におけるリクエスト再送信テーブルの一例を示す。図7は、本実施形態におけるリクエスト再送信テーブルの1つの行の状態の遷移の一例を示す。リクエスト再送信テーブル54は、「リクエストID」54−1、「リクエスト」54−2、「送信済みレスポンス長」54−3、「送信元」54−4、「送信先」54−5のデータ項目を含む。
「リクエストID」54−1は、受信したリクエストを識別するための識別情報であり、図6の例では、追加された行順に識別番号が昇順に付与されている。「リクエスト」54−2には、受信したリクエストのボディのバイト列が記録される。ここで、リクエストボディとは、リクエストメッセージのボディ(ヘッダ以外の部分)を示す。リクエストメッセージ(リクエストボディ)は、パケットに分解されて送信され、仮想スイッチ42はその分解された各データを順次受信して、バッファに格納するが、そのバッファに格納されるデータの単位を、リクエストのボディのバイト列という。「送信済みレスポンス長」54−3は、そのリクエストに対応するレスポンスについて、送信済のレスポンス長(バイト)が格納される。「送信元」54−4には、リクエストを送信した送信元のアドレスが格納される。「送信先」54−5には、そのリクエストの送信先のアドレスが格納される。図7の詳細は、図9にて説明する。
図8は、本実施形態におけるスナップショット管理テーブルの一例を示す。スナップショット管理テーブル61は、ハイパバイザにより管理される記憶装置に格納されている。スナップショット管理テーブル61は、「システムスナップショットID」61−1、「システムID」61−2、「スナップショット作成日時」61−3、「個別マシンスナップショット」61−4のデータ項目を含む。
「システムスナップショットID」61−1には、各仮想システムのスナップショットを識別するための識別情報が格納される。「システムID」61−2には、スナップショットが作成された仮想システムを識別するための識別情報が格納される。「スナップショット作成日時」61−3には、スナップショットが作成された日時が格納される。「個別マシンスナップショット」61−4には、システムIDで特定される仮想システム内に含まれる仮想マシンのうち、スナップショットを作成した仮想マシンの名称とスナップショット名が格納される。図8では、システムID=1の仮想システムの場合、仮想マシン名「vm1」、「vm2」、「vm3」で特定される仮想マシンのスナップショットが作成されている。具体的には、仮想マシン「vm1」のスナップショットは、「snapshot-123」である。仮想マシン「vm2」のスナップショットは、「snapshot-234」である。仮想マシン「vm3」のスナップショットは、「snapshot-456」である。
図9は、本実施形態における仮想スイッチのリクエスト/レスポンス受信時の動作の一例を表したアクティビティ図である。アクティビティ図では、個別のリクエスト/レスポンスごとに状態を持たせた図にしてある。図7を参照しながら図9について説明する。
仮想スイッチ42は、外部ネットワーク55を介して、クライアントから新規リクエストに関するパケットが届くと、リクエスト再送信テーブル54に、新たな行を追加する。図7(A)において、追加した行の例が、リクエストID=10で示す行である。
仮想スイッチ42は、新規リクエストのパケットのヘッダ情報を参照して、新たに追加した行の「送信元」54−4、「送信先」54−5にそれぞれ、送信元アドレス、送信先アドレスを登録する。
なお、新規リクエストの受信開始時点ではリクエストボディがまだ未達であるため、リクエスト再送信テーブル54の「リクエスト」54−2は空である。また、この時点では、レスポンスに関するパケットもまだ返されていないため、「送信済みレスポンス長」54−3も「0」である。「リクエスト」54−2の白い四角は、まだ受信していないリクエストボディを表し、黒い四角は受信済みのリクエストボディを表すものとする。なお、図6及び図7の例では、あらかじめ受信するリクエストボディのサイズが判明している例を記載しているが、これは説明の便宜のためであり、これに限定されず、あらかじめ受信するリクエストボディのサイズは、不明であってもよい。この場合、仮想スイッチ42は、リクエストボディの最後のデータを有するパケットを解析する。
仮想スイッチ42は、リクエストボディ待ちになっている状態で当該リクエストのリクエストボディを含むパケットを受信した場合、リクエストの宛先に応じて、そのリクエストボディを含むパケットを仮想マシンへ転送すると共に、次の処理を行う。すなわち、仮想スイッチ42は、リクエスト再送信テーブル54における、その受信したリクエストに対応する行の「リクエスト」54−2の値にリクエストボディを追記する(S001)。この時の行の例が、図7(B)において、リクエストID=10で示す行である。「リクエスト」54−2には、黒い四角で示すように、受信済みのリクエストボディが記録されている。なお、この時点では、「送信済みレスポンス長」54−3の値は「0」である。
クライアントによるリクエストの送信が終了すると、当該リクエスト/レスポンスに対する仮想スイッチ42の状態は、リクエストボディ待ちからレスポンスボディ待ちになる(S002)。この時の行の例が、図7(C)において、リクエストID=10で示す行である。
仮想スイッチ42は、内部ネットワーク52内の仮想マシン41から、上記で登録したリクエストボディに対するレスポンスボディを含むパケットを受信した場合、レスポンスの宛先に応じて、そのレスポンスボディを含むパケットを転送する。それと共に、仮想スイッチ42は、そのレスポンスボディを含むパケットを外部ネットワーク55のクライアントに送信し、送信したレスポンスボディのバイト数を「送信済みレスポンス長」54−3の値としてリクエスト再送信テーブル54に記録する。この時の行の例が、図7(D)において、リクエストID=10で示す行である。ここで、レスポンスボディとは、レスポンスメッセージのボディ(ヘッダ以外の部分)を示す。
なお、受信したレスポンスが、S001で登録したリクエストボディに対するレスポンスであるかの判断の位置としては、次のものが考えられる。例えば、レスポンスのヘッダの送信元が、リクエスト再送信テーブル54の「送信先」54−5と一致し、レスポンスのヘッダの送信先が、「送信元」54−4と一致する場合、リクエストボディに対するレスポンスと判断することが考えられる。また、S001において、仮想マシンへ転送する際に、リクエストメッセージ(またはパケット)のヘッダに、リクエストIDを付与してカプセル化してもよい。この場合、仮想マシン41は、そのカプセル化されたリクエストを受信すると、そのリクエストに対する処理を行い、その処理結果(レスポンス)のヘッダ(またはパケット)に、そのリクエストIDを付与してカプセル化し、仮想スイッチ42へ送信する。仮想スイッチ42は、その受信したレスポンスのパケットを受信すると、リクエスト再送信テーブル54から、その受信したレスポンス(またはそのパケット)に付与されたリクエストIDと一致する行を検索する。付与されたリクエストIDと一致する行が検索された場合、仮想スイッチ42は、その行の「送信済みレスポンス長」54−3の値を更新する。
仮想スイッチ42は、リクエストに対するレスポンスに関するパケットの送信が終了すると、リクエスト再送信テーブル54から、その送信したレスポンスに対応する行を削除して、当該リクエスト/レスポンスに対応する状態遷移を終える。
図10は、本実施形態におけるスナップショットを作成する場合の仮想システム内の動作の一例を表したアクティビティ図である。アクティビティ図では、個別のリクエスト/レスポンスごとに状態を持たせた図にしてある。
運用者がシステムの設定変更やアプリケーションの更新を行いたい場合に、仮想システムのスナップショットが作成されることについて説明する。ここで、アクティビティ図で矢印を並行に複数本書いている個所は、複数の仮想マシンVMにまたがって指示を並行して出していることを示す。
ハイパバイザ32は、HV連携装置419を通じて、仮想システム51内の仮想マシン41、および仮想スイッチ42にスナップショットの作成準備の指示を出す。
仮想マシンVM_iは、ハイパバイザ32からの指示を受けると、ネットワーク接続装置418の送信バッファから新たにパケットを送信しないように制御する(S101)。一方、仮想マシンVM_iは、パケットの受信については今まで通り行う。
仮想スイッチ42は、ハイパバイザ32からの指示を受けると、外部ネットワーク55から内部ネットワーク52へ入るパケット(インバウンドパケット)をバッファ53に溜めておき、内部ネットワーク52には送信しないようにする(S102)。仮想スイッチ42は、内部ネットワーク52内だけで送受信されるパケット、及び内部ネットワーク52から外部ネットワーク55へのパケット(アウトバウンドパケット)については今まで通り通過させる。
仮想スイッチ42は、内部ネットワーク52にパケットが流れなくなるまで待つ(S103)。ここでは、例えば、仮想スイッチ42は、内部ネットワーク52にパケットが流れなくなるまで所定時間待つ。
ハイパバイザ32は、HV連携装置419を通じて、仮想システム51内の仮想マシンVM_iに対して、データ用ディスク417に書き込むためにバッファに保持している情報(ライトバッファ)の書き出しを指示する。この指示に基づいて、仮想マシンVM_iはライトバッファをデータ用ディスク417に書き出す(S104)。S104の処理は、後にスナップショットに復元したときにライトバッファの中身をデータ用ディスク417に書き出させないようにするためである。
その仮想マシンVM_iが、HV連携装置419を介してバッファの書き出し終了を通知すると、ハイパバイザ32は、その仮想マシンVM_iのスナップショットを作成する(S105)。ハイパバイザ32は、その作成したスナップショットを、ハイパバイザ32が管理するディスク(例えば、外部記憶装置16)に格納する。このとき、ハイパバイザ32は、外部記憶装置16に格納されているスナップショット管理テーブル61を更新する。ただし、データ用ディスク417はスナップショットの対象外である。すべての仮想マシンのスナップショット作成が終わった場合、ハイパバイザ32は仮想システム51内の仮想マシンVM_iと仮想スイッチ42に作成終了の指示を出す。
仮想マシンVM_iは、ハイパバイザ32からのスナップショット作成終了指示を受信すると、ネットワーク接続装置418を用いて、送信処理を再開する(S106)。
仮想スイッチ42は、ハイパバイザ32からのスナップショット作成終了指示を受信すると、バッファ53に溜めていたインバウンドパケットを送り出し、続くインバウンドパケットも送り出すようにする(S107)。
上記では、1台のハイパバイザ32での動作例を示したが、複数のハイパバイザにまたがってシステムが構築されている場合でもハイパバイザ間で連携を行うことで、システム全体でのスナップショットの作成が可能である。例えば、ハイパバイザ間で連携させるハイパバイザ管理プログラムを用いて、各ハイパバイザの動作タイミングを制御し、ハイパバイザ間で連携を行うことができる。
次に、スナップショットの破棄について説明する。スナップショットを作成した後に運用者が設定の変更やアプリケーションの更新を行った後、何も問題がなければ作成したスナップショットを破棄してもよい。スナップショットの破棄は各仮想マシン41のスナップショットをそのまま破棄するだけで実現できる。
ここで、スナップショットを作成した後に運用者が設定の変更やアプリケーションの更新を行った後、何らかの不具合が出てスナップショットに戻したいということがある。しかしながら、単純にスナップショットに戻す場合には以下の問題がある。
まずは、クライアントとサーバ(仮想マシン)間でコネクションが確立している状態でスナップショットを用いて復元すると、クライアントとサーバも互いに相手を認知することができず、すなわち、処理中のリクエストが失われるという問題がある。
また、サーバ(仮想マシン)はクライアントからのリクエストを処理するためにリクエストのロックを外し、その旨をファイルシステムの管理情報に書き込む。この場合に、復元すると、復元された管理情報ではリクエストのロックがはずれていることが記録されていないので、リクエストが解放されていない状態(デッドロック状態)になるので、そのリクエストについて処理することができないという問題がある。
また、スナップショット作成時の状態に戻すことで、スナップショット作成時に実行していた処理が再実行されうるという問題がある。
これらの問題に対処するために、スナップショットを復元する場合に、図11の処理を行う。
図11は、本実施形態におけるスナップショットを復元する場合の仮想システム内の動作の一例を表したアクティビティ図である。アクティビティ図では、個別のリクエスト/レスポンスごとに状態を持たせた図にしてある。ここで、アクティビティ図で矢印を並行に複数本書いている個所は、複数の仮想マシンVMにまたがって指示を並行して出していることを示す。
ハイパバイザ32は、運用者から指示のあったシステムスナップショットIDに基づいて、スナップショット管理テーブル61から、そのシステムスナップショットIDを有する行を取得する。ハイパバイザ32は、その取得した行から、復元する仮想システム51の各仮想マシン41を特定する。ハイパバイザ32は、HV連携装置419を通じて、その特定した仮想システム51内の仮想マシン41、および仮想スイッチ42にスナップショットの復元準備の指示を出す。
仮想マシンVM_iは、ハイパバイザ32からのスナップショット復元指示を受けると、リクエストに対する処理中の実行を中断する(S201)。中断の手段としては、たとえばワーカースレッドに割り込みを入れるなどがある。例えば、Java(登録商標)アプリケーションであればリクエストを処理しているスレッドで例外を発生させ、アプリケーションのfinallyブロックでリソースを解放させることができる。
仮想マシンVM_iは、S201の中断処理が終わるまで待つ(S202)。仮想スイッチ42からインバウンドリクエストはもう来ないため、中断処理はやがては終わる。
仮想スイッチ42は、ハイパバイザ32からのスナップショット復元指示を受けると、外部ネットワーク55から内部ネットワーク52に入っているインバウンドパケットをバッファ53に溜めておき、内部ネットワーク52には流さないようにする(S203)。仮想スイッチ42は、内部ネットワーク52内だけのパケットおよび内部ネットワーク52から外部ネットワーク55へのアウトバウンドパケットについて、今まで通り通す。
仮想スイッチ42は、内部ネットワーク52にパケットが流れなくなるまで待つ(S204)。ここでは、例えば、仮想スイッチ42は、内部ネットワーク52にパケットが流れなくなるまで所定時間待つ。
ハイパバイザ32は、HV連携装置419を通じて、仮想システム51内の仮想マシンVM_iに対して、データ用ディスク417に書き込むためにバッファに保持している情報(ライトバッファ)の書き出しを指示する。仮想マシンVM_iは、その指示に基づいて、ライトバッファをデータ用ディスク417に書き出す(S205)。
その仮想マシンVM_iが、HV連携装置419を介してバッファの書き出し終了を通知すると、ハイパバイザ32は、その仮想マシンVM_iに対して、スナップショットへの復元を行う(S206)。ただしデータ用ディスク417は、スナップショットの対象外であるため復元前の状態のままとなる。
データ用ディスク417は、スナップショット作成時とスナップショット復元時で内容が異なり得るため、ハイパバイザ32は、HV連携装置419を通じて、仮想マシンVM_iにデータ用ディスク417をマウントし直させる(S207)。これにより、データ用ディスク417から読み出してバッファに保持されている情報(リードバッファ)を破棄し、リードバッファとデータ用ディスク417との整合性を維持することができる。
スナップショットの状態に戻された仮想マシンVM_iは、ネットワーク接続装置418の送信バッファからパケットが出ない状態になっている。この場合、ハイパバイザ32は、HV連携装置419を通じて、仮想マシンVM_iのネットワーク接続装置418の送信バッファからの送信を再開させる(S208)。
スナップショットの状態に戻された仮想マシンVM_iは、スナップショットを作成した時点のS105で実行中だったリクエストを処理しているままとなっている。そこで、ハイパバイザ32は、それらの処理をS201と同様の方法で中断させる(S209)。
仮想マシンVM_iは、S209の中断処理が終わるまで待つ(S210)。仮想スイッチ42からインバウンドリクエストはもう来ないため、中断処理はやがては終わる。
仮想スイッチ42は、リクエスト再送信テーブル54におけるリクエストボディに、パケットヘッダを付与したパケットを仮想マシンVM_iに再度送信する(S211)。
仮想スイッチ42は、バッファ53に溜めていたインバウンドパケットを内部ネットワーク52へ送り出し、続くインバウンドパケットも内部ネットワーク52へ送り出すようにする(S212)。
仮想スイッチ42はリクエスト再送信テーブル53における送信済みレスポンス長が正である時には、そのレスポンス長分のレスポンスに関するパケットを破棄し、それ以降のレスポンスに関するパケットのみをクライアントに返す(S213)。
上記では、1台のハイパバイザ32での動作例を示したが、複数のハイパバイザにまたがってシステムが構築されている場合でもハイパバイザ間で連携を行うことで、システム全体でのスナップショットへの復元が可能である。例えば、ハイパバイザ間で連携させるハイパバイザ管理プログラムを用いて、各ハイパバイザの動作タイミングを制御し、ハイパバイザ間で連携を行うことができる。
図12は、本実施形態におけるスナップショット復元時の仮想スイッチのリクエスト再送信(S211〜S213)に係るアクティビティ図である。図12は、図9と比較して「リクエストの再送信」と「レスポンスボディスキップ中」の動作状態が追加され、それに合わせて分岐も追加されたアクティビティ図となっている。図12では、図11のS211〜S213の動作を具体的に説明する。ここでは、図6のリクエスト再送信テーブル54でのリクエストIDごとに状態遷移の例を挙げつつ説明する。
まずは、仮想スイッチ42は、リクエストに関するパケットの再送信を行う(S301)。ここでは、図6において、リクエストIDが「1」の例では、リクエスト再送信テーブル54の「リクエスト」54−2にリクエストがないため、何もせずにS302の処理に進む。
また、図6において、リクエストIDが「2」、「3」、「4」の例では、「リクエスト」54−2に保存されているリクエストボディ、すなわちバッファ53内に、再送信していないリクエストボディがある。この場合、仮想スイッチ42は、「リクエスト」54−2に保存されているリクエストをサーバ(仮想マシンVM_i)に再送信する。具体的には、仮想スイッチ42は、リクエスト再送信テーブル54において、送信対象のリクエストボディの行に含まれる「送信元」54−4、「送信先」54−5を用いて、再送信用のリクエストに関するパケットヘッダを作成する。仮想スイッチ42は、その作成したヘッダを、各リクエストボディに付与してパケットを作成し、そのパケットを、送信先に再送信する。
S302の条件分岐では、リクエスト/レスポンスのうちのリクエストが終了しているか否かで分岐する。S302において、図6にてリクエストIDが「3」、「4」の例では、リクエストの受信が完了であるため、処理がS305へ進む。
S302において、リクエストIDが「1」、「2」の場合、リクエストの受信が未完了なので、処理がS303へ進み、仮想スイッチ42は、クライアントからのリクエスト待ち状態になる(S303)。ここでは、クライアントからリクエストに関するパケットが送られて来たら、仮想スイッチ42は、そのパケットに含まれるリクエストボディをリクエスト再送信テーブル54に保存すると共に、サーバ(仮想マシンVM_i)にそのパケットを送信する。リクエストの受信が完了した場合、処理はS304へ進む。
S304の条件分岐では、リクエスト再送信テーブル54の送信済みレスポンス長によって分岐する。S304において、図6のリクエストIDが「1」、「2」、「3」の例では、送信済みレスポンス長が0であるため、処理がS306へ進む。S304において、リクエストIDが「4」の例では、送信済みレスポンス長が0よりも大きいため、処理はS305へ進む。
S305において、仮想マシンVM_iにはリクエストが既に送られているので、それに対するレスポンスに関するパケットが返ってくる。しかし、スナップショット作成時の状態への復元よりも前に既にクライアントにレスポンスに関するパケットの一部を送っているため、仮想スイッチ42は、送信済みレスポンス長までのレスポンスに関するパケットをクライアントに送らずに破棄する。
仮想スイッチ42は、仮想サーバ41から、送信済みレスポンス長を超えるレスポンスに関するパケットを受信した場合、すなわち、クライアントにまだ送っていないレスポンスに関するパケットを受信した場合、仮想スイッチ42は、次の処理を行う。すなわち、仮想スイッチ42は、クライアントにまだ送っていないレスポンスに関するパケットをクライアントに転送する。仮想スイッチ42は、そのレスポンスに関するパケットを全て転送した場合、そのレスポンスに関する行をリクエスト再送信テーブル54から削除する(S306)。
次に、本実施形態の変形例について説明する。
図13は、本実施形態の変形例におけるリクエスト再送信テーブルの一例を示す。図6のリクエスト再送信テーブル54では、再送信するパケットの順序が定まらず、図6の4番目の行のレスポンスが再送信によって変わってしまう可能性がある。それを防ぐために、図13に示すように、リクエスト再送信テーブル54内の「リクエスト」54−2aの各パケットに仮想マシン(サーバ)に送った時刻をタイムスタンプとして付け、再送信時にはそのタイムスタンプの順で再送信を行ってもよい。または、「リクエスト」54−2aの各パケットに仮想スイッチが受信した時刻をタイムスタンプとして付け、再送信時にはそのタイムスタンプの順で再送信を行ってもよい。
具体的には、図9のS001において、仮想スイッチ42は、「リクエスト」54−2の値にリクエストボディを追記する際に、仮想マシン(サーバ)41に送った時刻をタイムスタンプとして付与する。そして、リクエスト再送信時には、図11のS211において、仮想スイッチは、リクエスト再送信テーブル54の「リクエスト」54−2を参照して、そのタイムスタンプの順でリクエストを仮想マシン41に再度送信する。
本実施形態によれば、ハイパバイザ32から仮想マシンのネットワーク送信バッファの送信を制御する機構が、HV連携装置419に追加されている。また、ハイパバイザ32からの指示に従い、仮想マシン41のOSは、送信バッファからパケットの送信を行うか判断することができる。同様に、仮想スイッチ41のバッファ制御がハイパバイザ32から行うことができる。
ハイパバイザ32からの指示に基づきデータ用ディスク417へのライトバッファ書き出しを行うことにより、データの保全を図ることができる。スナップショットからの復元時にデータ用ディスク417を再マウントさせることにより、リードバッファ内のデータを破棄することができる。ハイパバイザ32からの指示に基づき、リクエストに対する実行中の処理を中断させる。また、スナップショットへの復元後にリクエストを再度仮想スイッチから送ることで、復元時点において貼られていたコネクションを維持することができる。
本実施形態によれば、クライアントから受信したリクエストからそのレスポンスまでの一連の処理が完結していない、すなわち未完了のトランザクションが存在する場合であっても、仮想マシンの復元完了後にトランザクションを再開することができる。また、複数マシンを含めたシステム全体でのスナップショットの復元がサービスを停止することなくできるようになる。また、スナップショットの作成から復元までに間に行われたデータ更新を復元後でも維持することができる。
なお、本実施の形態は、以上に述べた実施の形態に限定されるものではなく、本実施の形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
上記実施形態に関し、さらに、以下の付記を開示する。
(付記1)
情報処理装置に、
仮想マシンに接続された仮想スイッチが、
前記仮想マシン宛てのパケットを受信すると、該パケットを該仮想マシンに転送し、
受信した前記パケットであって、未完了のトランザクションに関連する該パケットを、該未完了のトランザクションに対応付けて第1記憶部に記憶し、
前記仮想マシンを復元させる指示に応じて、前記仮想マシンへの前記パケットの転送を停止し、
該仮想マシンの復元の完了に応じて、前記転送の再開指示を受信した場合に、前記未完了のトランザクションに対応付けて前記第1記憶部に記憶された1または複数のパケットを前記仮想マシンに送信する、
処理を実行させることを特徴とするトランザクション再開プログラム。
(付記2)
前記未完了のトランザクションに対応付けて該パケットを前記第1記憶部に記憶する場合、該パケットに、該パケットの受信時刻または転送時刻を付与する
ことを特徴とする付記1に記載のトランザクション再開プログラム。
(付記3)
前記仮想スイッチが、さらに、前記パケットにより形成される前記仮想マシンへの要求に対する応答に関するパケットを受信すると、該応答に関するパケットを転送し、
前記応答に関するパケットの転送量を前記第1記憶部に記憶し、
該仮想マシンの復元完了に応じて、前記転送の再開指示を受信した場合に、さらに、前記応答に関するパケットを前記仮想マシンから受信すると、前記第1記憶部に記憶された前記転送量に対応するパケットを破棄し、前記転送量を超えるパケットを転送する
ように処理を実行させることを特徴とする付記1または2に記載のトランザクション再開プログラム。
(付記4)
前記情報処理装置に、さらに、
仮想マシンが、
前記応答に関するパケットの送信を停止し、
前記仮想マシンが用いる記憶領域に対応する第2記憶部に書き込む前に該記憶領域に一時的に保持されている書込情報を、前記第2記憶部へ書き込み、
前記仮想スイッチから前記仮想マシンへの前記要求に関するパケットの転送の停止、該仮想マシンからの前記応答に関するパケットの送信の停止、及び前記書込情報の書き込みの後に、前記仮想マシンのスナップショットを作成する
ように処理を実行させることを特徴とする付記1〜3のうちいずれか1項に記載のトランザクション再開プログラム。
(付記5)
前記情報処理装置に、さらに、
前記スナップショットに対応する前記仮想マシンが、前記スナップショット作成後に、停止させていた前記要求に関するパケット及び前記応答に関するパケットの送信が再開している場合、実行中の処理を停止し、
前記仮想マシンが、前記記憶領域に一時的に保持されている書込情報を、前記第2記憶部へ書き込み、
前記仮想マシンが実行中の処理の停止、前記仮想スイッチから前記仮想マシンへの前記要求に関するパケットの転送の停止、及び前記書込情報の書き込みの後に、前記スナップショットを用いて、該スナップショットに対応する仮想マシンを復元する
ように処理を実行させることを特徴とする付記4に記載のトランザクション再開プログラム。
(付記6)
前記情報処理装置に、さらに、
復元された前記仮想マシンが、
前記第2記憶部から読み出されて一時的に保持されている読出情報を破棄し、
前記スナップショット作成時に停止させていた前記応答に関するパケットの送信を再開し、
前記スナップショット作成時に行っていた処理を停止する
ように処理を実行させることを特徴とする付記5に記載のトランザクション再開プログラム。
(付記7)
仮想マシンに接続された仮想スイッチが前記仮想マシン宛てのパケットを受信すると、該仮想スイッチに、該パケットを転送させる第1転送制御部と、
受信された前記パケットであって、未完了のトランザクションに関連する該パケットを、該仮想スイッチに、該未完了のトランザクションに対応付けて第1記憶部に記憶させる記憶制御部と、
前記仮想マシンを復元させる指示に応じて、前記仮想スイッチに、前記仮想マシンへの前記パケットの転送を停止させる停止制御部と、
該仮想マシンの復元の完了に応じて、前記転送の再開指示を受信した場合に、前記仮想スイッチに、前記未完了のトランザクションに対応付けて前記第1記憶部に記憶された1または複数のパケットを前記仮想マシンへ送信させる送信制御部と、
を備えることを特徴とする情報処理装置。
(付記8)
前記記憶制御部は、前記未完了のトランザクションに対応付けて該パケットを前記第1記憶部に記憶する場合、該パケットに、該パケットの受信時刻または転送時刻を付与する
ことを特徴とする付記7に記載の情報処理装置。
(付記9)
前記情報処理装置は、さらに、
前記仮想スイッチが前記パケットにより形成される前記仮想マシンへの要求に対する応答に関するパケットを受信すると、前記仮想スイッチに、該応答に関するパケットを転送させる第2転送制御部と、
前記仮想スイッチに、前記応答に関するパケットの転送量を前記第1記憶部に記憶させる転送量記憶制御部と、
を備え、
前記第2転送制御部は、該仮想マシンの復元完了に応じて、前記転送の再開指示を受信した場合に、さらに、前記応答に関するパケットを前記仮想マシンから受信すると、前記仮想スイッチに、前記第1記憶部に記憶された前記転送量に対応するパケットを破棄させ、前記転送量を超えるパケットを転送させる
ことを特徴とする付記7または8に記載の情報処理装置。
(付記10)
前記情報処理装置は、さらに、
仮想マシンに、前記応答に関するパケットの送信を停止させ、前記仮想マシンが用いる記憶領域に対応する第2記憶部に書き込む前に該記憶領域に一時的に保持されている書込情報を、前記第2記憶部へ書き込ませる仮想マシン制御部と
前記仮想スイッチから前記仮想マシンへの前記要求に関するパケットの転送の停止、該仮想マシンからの前記応答に関するパケットの送信の停止、及び前記書込情報の書き込みの後に、前記仮想マシンのスナップショットを作成する作成部と、
を備えることを特徴とする付記7〜9のうちいずれか1項に記載の情報処理装置。
(付記11)
前記情報処理装置は、さらに、
該スナップショットに対応する仮想マシンを復元する復元制御部
を備え、
前記仮想マシン制御部は、前記スナップショット作成後に、停止させていた前記要求に関するパケット及び前記応答に関するパケットの送信が再開している場合、前記スナップショットに対応する前記仮想マシンに実行中の処理を停止させ、前記仮想マシンに、前記記憶領域に一時的に保持されている書込情報を、前記第2記憶部へ書き込ませ、
前記復元制御部は、前記仮想マシンが実行中の処理の停止、前記仮想スイッチから前記仮想マシンへの前記要求に関するパケットの転送の停止、及び前記書込情報の書き込みの後に、前記スナップショットを用いて、該スナップショットに対応する仮想マシンを復元する
ことを特徴とする付記10に記載の情報処理装置。
(付記12)
前記仮想マシン制御部は、さらに、
復元された前記仮想マシンに、前記第2記憶部から読み出されて一時的に保持されている読出情報を破棄させ、前記スナップショット作成時に停止させていた前記応答に関するパケットの送信を再開させ、前記スナップショット作成時に行っていた処理を停止させる
ことを特徴とする付記11に記載の情報処理装置。
(付記13)
情報処理装置は、
仮想マシンに接続された仮想スイッチに、
前記仮想マシン宛てのパケットを受信すると、該パケットを該仮想マシンに転送し、
受信した前記パケットであって、未完了のトランザクションに関連する該パケットを、該未完了のトランザクションに対応付けて第1記憶部に記憶し、
前記仮想マシンを復元させる指示に応じて、前記仮想マシンへの前記パケットの転送を停止し、
該仮想マシンの復元の完了に応じて、前記転送の再開指示を受信した場合に、前記未完了のトランザクションに対応付けて前記第1記憶部に記憶された1または複数のパケットを前記仮想マシンに送信する、
処理を実行させることを特徴とするトランザクション再開方法。
(付記14)
前記情報処理装置は、
前記未完了のトランザクションに対応付けて該パケットを前記第1記憶部に記憶する場合、該パケットに、該パケットの受信時刻または転送時刻を付与する
ことを特徴とする付記13に記載のトランザクション再開方法。
(付記15)
前記情報処理装置は、
前記仮想スイッチに、さらに、前記パケットにより形成される前記仮想マシンへの要求に対する応答に関するパケットを受信すると、該応答に関するパケットを転送し、
前記応答に関するパケットの転送量を前記第1記憶部に記憶し、
該仮想マシンの復元完了に応じて、前記転送の再開指示を受信した場合に、さらに、前記応答に関するパケットを前記仮想マシンから受信すると、前記第1記憶部に記憶された前記転送量に対応するパケットを破棄し、前記転送量を超えるパケットを転送する
ように処理を実行させることを特徴とする付記13または14に記載のトランザクション再開方法。
1 情報処理装置
2 第1転送制御部
3 記憶制御部
4 停止制御部
5 送信制御部
6 第2転送制御部
7 転送量記憶制御部
8 仮想マシン制御部
9 作成部
10 復元制御部
11 物理マシン
32 ハイパバイザ
41 仮想マシン
42 仮想スイッチ

Claims (8)

  1. 情報処理装置に、
    仮想マシンに接続された仮想スイッチが、
    前記仮想マシン宛てのパケットを受信すると、該パケットを該仮想マシンに転送し、
    受信した前記パケットであって、未完了のトランザクションに関連する該パケットを、該未完了のトランザクションに対応付けて第1記憶部に記憶し、
    前記仮想マシンを復元させる指示に応じて、前記仮想マシンへの前記パケットの転送を停止し、
    該仮想マシンの復元の完了に応じて、前記転送の再開指示を受信した場合に、前記未完了のトランザクションに対応付けて前記第1記憶部に記憶された1または複数のパケットを前記仮想マシンに送信する、
    ように処理を実行させることを特徴とするトランザクション再開プログラム。
  2. 前記未完了のトランザクションに対応付けて該パケットを前記第1記憶部に記憶する場合、該パケットに、該パケットの受信時刻または転送時刻を付与する
    ことを特徴とする付記1に記載のトランザクション再開プログラム。
  3. 前記仮想スイッチが、さらに、前記パケットにより形成される前記仮想マシンへの要求に対する応答に関するパケットを受信すると、該応答に関するパケットを転送し、
    前記応答に関するパケットの転送量を前記第1記憶部に記憶し、
    該仮想マシンの復元完了に応じて、前記転送の再開指示を受信した場合に、さらに、前記応答に関するパケットを前記仮想マシンから受信すると、前記第1記憶部に記憶された前記転送量に対応するパケットを破棄し、前記転送量を超えるパケットを転送する
    ように処理を実行させることを特徴とする付記1または2に記載のトランザクション再開プログラム。
  4. 前記情報処理装置に、さらに、
    仮想マシンが、
    前記応答に関するパケットの送信を停止し、
    前記仮想マシンが用いる記憶領域に対応する第2記憶部に書き込む前に該記憶領域に一時的に保持されている書込情報を、前記第2記憶部へ書き込み、
    前記仮想スイッチから前記仮想マシンへの前記要求に関するパケットの転送の停止、該仮想マシンからの前記応答に関するパケットの送信の停止、及び前記書込情報の書き込みの後に、前記仮想マシンのスナップショットを作成する
    ように処理を実行させることを特徴とする付記1〜3のうちいずれか1項に記載のトランザクション再開プログラム。
  5. 前記情報処理装置に、さらに、
    前記スナップショットに対応する前記仮想マシンが、前記スナップショット作成後に、停止させていた前記要求に関するパケット及び前記応答に関するパケットの送信が再開している場合、実行中の処理を停止し、
    前記仮想マシンが、前記記憶領域に一時的に保持されている書込情報を、前記第2記憶部へ書き込み、
    前記仮想マシンが実行中の処理の停止、前記仮想スイッチから前記仮想マシンへの前記要求に関するパケットの転送の停止、及び前記書込情報の書き込みの後に、前記スナップショットを用いて、該スナップショットに対応する仮想マシンを復元する
    ように処理を実行させることを特徴とする付記4に記載のトランザクション再開プログラム。
  6. 前記情報処理装置に、さらに、
    復元された前記仮想マシンが、
    前記第2記憶部から読み出されて一時的に保持されている読出情報を破棄し、
    前記スナップショット作成時に停止させていた前記応答に関するパケットの送信を再開し、
    前記スナップショット作成時に行っていた処理を停止する
    ように処理を実行させることを特徴とする付記5に記載のトランザクション再開プログラム。
  7. 仮想マシンに接続された仮想スイッチが前記仮想マシン宛てのパケットを受信すると、該仮想スイッチに、該パケットを転送させる第1転送制御部と、
    受信された前記パケットであって、未完了のトランザクションに関連する該パケットを、該仮想スイッチに、該未完了のトランザクションに対応付けて第1記憶部に記憶させる記憶制御部と、
    前記仮想マシンを復元させる指示に応じて、前記仮想スイッチに、前記仮想マシンへの前記パケットの転送を停止させる停止制御部と、
    該仮想マシンの復元の完了に応じて、前記転送の再開指示を受信した場合に、前記仮想スイッチに、前記未完了のトランザクションに対応付けて前記第1記憶部に記憶された1または複数のパケットを前記仮想マシンへ送信させる送信制御部と、
    を備えることを特徴とする情報処理装置。
  8. 情報処理装置は、
    仮想マシンに接続された仮想スイッチに、
    前記仮想マシン宛てのパケットを受信すると、該パケットを該仮想マシンに転送し、
    受信した前記パケットであって、未完了のトランザクションに関連する該パケットを、該未完了のトランザクションに対応付けて第1記憶部に記憶し、
    前記仮想マシンを復元させる指示に応じて、前記仮想マシンへの前記パケットの転送を停止し、
    該仮想マシンの復元の完了に応じて、前記転送の再開指示を受信した場合に、前記未完了のトランザクションに対応付けて前記第1記憶部に記憶された1または複数のパケットを前記仮想マシンに送信する、
    処理を実行させることを特徴とするトランザクション再開方法。
JP2013120250A 2013-06-06 2013-06-06 トランザクション再開プログラム、情報処理装置及びトランザクション再開方法 Active JP6115331B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013120250A JP6115331B2 (ja) 2013-06-06 2013-06-06 トランザクション再開プログラム、情報処理装置及びトランザクション再開方法
US14/291,949 US9342409B2 (en) 2013-06-06 2014-05-30 Recording medium storing transaction resuming program, information processing apparatus and transaction resuming method
EP14170643.2A EP2811402B1 (en) 2013-06-06 2014-05-30 Transaction resuming program, information processing apparatus and transaction resuming method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013120250A JP6115331B2 (ja) 2013-06-06 2013-06-06 トランザクション再開プログラム、情報処理装置及びトランザクション再開方法

Publications (2)

Publication Number Publication Date
JP2014238677A true JP2014238677A (ja) 2014-12-18
JP6115331B2 JP6115331B2 (ja) 2017-04-19

Family

ID=50884697

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013120250A Active JP6115331B2 (ja) 2013-06-06 2013-06-06 トランザクション再開プログラム、情報処理装置及びトランザクション再開方法

Country Status (3)

Country Link
US (1) US9342409B2 (ja)
EP (1) EP2811402B1 (ja)
JP (1) JP6115331B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6115331B2 (ja) * 2013-06-06 2017-04-19 富士通株式会社 トランザクション再開プログラム、情報処理装置及びトランザクション再開方法
US9588870B2 (en) * 2015-04-06 2017-03-07 Microsoft Technology Licensing, Llc Time travel debugging for browser components
US10025609B2 (en) * 2015-04-23 2018-07-17 International Business Machines Corporation Virtual machine (VM)-to-VM flow control for overlay networks
US10031834B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10042737B2 (en) 2016-08-31 2018-08-07 Microsoft Technology Licensing, Llc Program tracing for time travel debugging and analysis
US10324851B2 (en) 2016-10-20 2019-06-18 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using way-locking in a set-associative processor cache
US10310977B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using a processor cache

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04175830A (ja) * 1990-11-07 1992-06-23 Nec Software Kansai Ltd 再実行制御方式
JPH11265307A (ja) * 1998-03-17 1999-09-28 Nec Corp トランザクションレコード管理装置及びトランザクションレコード管理方法
US20110099267A1 (en) * 2009-10-27 2011-04-28 Vmware, Inc. Resource Optimization and Monitoring in Virtualized Infrastructure
JP2012169733A (ja) * 2011-02-10 2012-09-06 Fujitsu Ltd 通信制御プログラム、情報処理装置およびパケット通信方法
JP2013186745A (ja) * 2012-03-08 2013-09-19 Fuji Xerox Co Ltd 処理システム及びプログラム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8631066B2 (en) * 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US8321377B2 (en) 2006-04-17 2012-11-27 Microsoft Corporation Creating host-level application-consistent backups of virtual machines
JP4560074B2 (ja) 2007-09-26 2010-10-13 株式会社東芝 仮想計算機システム及び同システムにおける仮想計算機復元方法
JP2009080692A (ja) 2007-09-26 2009-04-16 Toshiba Corp 仮想計算機システム及び同システムにおけるサービス引き継ぎ制御方法
JP5365051B2 (ja) 2008-03-31 2013-12-11 富士通株式会社 管理プログラム、管理装置及び管理方法
US8577845B2 (en) * 2008-06-13 2013-11-05 Symantec Operating Corporation Remote, granular restore from full virtual machine backup
US8898508B2 (en) 2010-05-18 2014-11-25 Vmware, Inc. Method and system for enabling checkpointing fault tolerance across remote virtual machines
JP5419802B2 (ja) 2010-06-02 2014-02-19 三菱電機株式会社 仮想計算機制御システム
US9110703B2 (en) 2011-06-07 2015-08-18 Hewlett-Packard Development Company, L.P. Virtual machine packet processing
US9141487B2 (en) * 2013-01-15 2015-09-22 Microsoft Technology Licensing, Llc Healing cloud services during upgrades
JP6115331B2 (ja) * 2013-06-06 2017-04-19 富士通株式会社 トランザクション再開プログラム、情報処理装置及びトランザクション再開方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04175830A (ja) * 1990-11-07 1992-06-23 Nec Software Kansai Ltd 再実行制御方式
JPH11265307A (ja) * 1998-03-17 1999-09-28 Nec Corp トランザクションレコード管理装置及びトランザクションレコード管理方法
US20110099267A1 (en) * 2009-10-27 2011-04-28 Vmware, Inc. Resource Optimization and Monitoring in Virtualized Infrastructure
JP2012169733A (ja) * 2011-02-10 2012-09-06 Fujitsu Ltd 通信制御プログラム、情報処理装置およびパケット通信方法
JP2013186745A (ja) * 2012-03-08 2013-09-19 Fuji Xerox Co Ltd 処理システム及びプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
泉谷 洋三 他: "「運用・利用の容易さと無停止運転機能を取り込んだ超大型汎用コンピュータ」", 日経コンピュータNIKKEI COMPUTER, vol. 第120号, JPN6017000254, 28 April 1986 (1986-04-28), JP, pages 165 - 178, ISSN: 0003499151 *

Also Published As

Publication number Publication date
US9342409B2 (en) 2016-05-17
EP2811402B1 (en) 2015-08-19
EP2811402A1 (en) 2014-12-10
US20140366026A1 (en) 2014-12-11
JP6115331B2 (ja) 2017-04-19

Similar Documents

Publication Publication Date Title
JP6115331B2 (ja) トランザクション再開プログラム、情報処理装置及びトランザクション再開方法
JP6140303B2 (ja) 仮想マシンのライブマイグレーション方法、仮想マシンのメモリデータ処理方法、サーバ及び仮想マシンシステム
US8370832B2 (en) Method and system for virtual machine migration
US7657787B2 (en) Method of restoring communication state of process
US20110145471A1 (en) Method for efficient guest operating system (os) migration over a network
US9256464B2 (en) Method and apparatus to replicate stateful virtual machines between clouds
Kadav et al. Live migration of direct-access devices
JP5477660B2 (ja) ネットブート型シンクライアントシステム、コンピュータ、シンクライアント実施方法、及びシンクライアント用プログラム
US9754007B2 (en) Checkpoint capture and tracking in a high availability system
US9336050B2 (en) Server device, log transferring method, and log transferring system
US11477102B2 (en) Upgrading user space networking stacks without disruptions to network traffic
US7437606B2 (en) Method of checkpointing parallel processes in execution within plurality of process domains
JP2004234114A (ja) 計算機システム、計算機装置、オペレーティングシステムの移送方法及びプログラム
US20060167932A1 (en) Method for the acceleration of the transmission of logging data in a multi-computer environment and system using this method
JP4071098B2 (ja) ネットワークフィルタドライバのためのアーキテクチャおよびランタイム環境
US11349702B2 (en) Communication apparatus, system, rollback method, and non-transitory medium
JP2011159249A (ja) コンピュータシステム、仮想マシン管理方法、及び仮想マシン管理プログラム
US10915335B1 (en) System and method for intercepting data flow between computer process and system resource
US10452408B1 (en) System and method for intercepting data flow between a computer process and a file
JP6653786B2 (ja) I/o制御方法およびi/o制御システム
US11722368B2 (en) Setting change method and recording medium recording setting change program
JP4877608B2 (ja) 仮想マシンサーバ、仮想マシンサーバの情報保存方法及び仮想マシンサーバの情報保存用プログラム
WO2014041664A1 (ja) 情報処理システム、情報処理装置、移行制御プログラム、及び移行制御方法
US20210281482A1 (en) Communication apparatus, system, rollback method, and non-transitory medium
JP7326234B2 (ja) 情報処理装置、情報処理方法及びコンピュータプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160310

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170117

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170124

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170221

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170306

R150 Certificate of patent or registration of utility model

Ref document number: 6115331

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150