(57)【特許請求の範囲】
【請求項１】
コンテナ型仮想化技術により仮想化環境であるコンテナを構築可能な第１及び第２のコンピュータを備え、前記第１のコンピュータ上に構築されたコンテナを前記第２のコンピュータにマイグレーションさせるコンテナのマイグレーションシステムであって、
前記第１及び第２のコンピュータは、前記第１のコンピュータのコンテナを第２のコンピュータに反復的に差分同期させる同期処理部と、同期処理部による同期処理が開始されてからコンテナの動作を前記第１のコンピュータから前記第２のコンピュータに切り替える時期（切替時期）を判定する切替時期判定手段とを備え、
前記第１のコンピュータの同期処理部は、前記切替時期判定手段により切替時期と判定されると前記第１のコンピュータにおけるコンテナの動作を停止させ、最後の差分同期処理を実行し、前記第１のコンピュータにおけるコンテナを削除し、
前記第２のコンピュータの同期処理部は、前記第１のコンピュータと最後の差分同期処理の後に、第２のコンピュータにおいてコンテナの動作を開始させる
ことを特徴とするコンテナのマイグレーションシステム。
【請求項２】
前記第１のコンピュータにおける切替判定手段は、第１のコンピュータにおいて動作している前記コンテナの活動状況を取得し、取得した活動状況に基づき切替時期を判定する
ことを特徴とする請求項１記載のコンテナのマイグレーションシステム。
【請求項３】
前記第１のコンピュータにおける切替判定手段は、取得した活動状況から将来の活動状況を推定し、推定した活動状況に基づき切替時期を判定する
ことを特徴とする請求項２記載のコンテナのマイグレーションシステム。
【請求項４】
前記コンテナ内のプロセスに係るアプリケーションは切替時期の制御に用いられる切替時期情報を応答する手段を備え、
前記第１のコンピュータにおける切替判定手段は、第１のコンピュータにおいて動作している前記コンテナから切替時期情報を取得し、該切替時期情報に基づき切替時期を判定する
ことを特徴とする請求項１記載のコンテナのマイグレーションシステム。
【請求項５】
コンテナ型仮想化技術により仮想化環境であるコンテナを構築可能な第１及び第２のコンピュータを備え、前記第１のコンピュータ上に構築されたコンテナを前記第２のコンピュータにマイグレーションさせるコンテナのマイグレーション方法であって、
前記第１及び第２のコンピュータは、前記第１のコンピュータのコンテナを第２のコンピュータに反復的に差分同期させる同期処理部と、同期処理部による同期処理が開始されてからコンテナの動作を前記第１のコンピュータから前記第２のコンピュータに切り替える時期（切替時期）を判定する切替時期判定手段とを備え、
前記第１及び第２のコンピュータの同期処理部が、前記第１のコンピュータのコンテナを第２のコンピュータに反復的に差分同期させるステップと、
前記第１及び第２のコンピュータの切替時期判定手段が、前記第１のコンピュータの同期処理部による同期処理が開始されてからコンテナの動作を前記第１のコンピュータから前記第２のコンピュータに切り替える時期（切替時期）を判定するステップと、
前記第１のコンピュータの同期処理部が、前記切替時期判定手段により切替時期と判定されると前記第１のコンピュータにおけるコンテナの動作を停止させ、最後の差分同期処理を実行し、前記第１のコンピュータにおけるコンテナを削除するステップと、
前記第２のコンピュータの同期処理部が、前記第１のコンピュータと最後の差分同期処理の後に、第２のコンピュータにおいてコンテナの動作を開始させるステップとを備えた
ことを特徴とするコンテナのマイグレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンテナ型仮想化技術に関する。
【背景技術】
【０００２】
コンテナ型仮想化技術は、オペレーティングシステム（ＯＳ：Operating System）上に、論理的に名前空間やＣＰＵ・メモリ等のサーバリソースが分離された独立した仮想的な環境を作り出す仮想化技術である。この分離された仮想化環境はコンテナと呼ばれ、コンテナ毎にリソースの利用やファイルシステムへのアクセスが制御される。コンテナ型仮想化技術では、ＯＳ側（コンテナの外部）から見ると、コンテナに含まれないプロセスと同じように、コンテナ内部に透過的にアクセス可能であり、仮想環境の内部を監視・操作したり状態を取得したりできるという特徴がある。また、ＯＳ側から透過的にアクセス可能であるため、ＯＳ側からシグナル等を送出することで、コンテナ内部のプロセスに直接的に操作を加えることが可能であるという特徴がある。一方、同じ目的を持つハイパーバイザ型仮想化では、計算機上で仮想的な計算機をエミュレーションすることで仮想的な環境を作り出すため、ＯＳ側から仮想環境の内部にアクセスすることはできない（非特許文献１〜６参照）。
【０００３】
現在開発が進められている、コンテナ型仮想化技術におけるライブマイグレーション（あるサーバで動作しているコンテナを他のサーバで動作させること）では、コンテナを一時停止して、メモリの内容やコンテナの状態（ソケット，システムコール，シグナル，セッション，ＰＩＤ（Process ID）／ＰＰＩＤ（Parent Process ID）など）をダンプし、ダンプデータとコンテナのイメージファイル等をマイグレーション先のサーバに移動して、それらを元にコンテナを復元し、動作を再開することでマイグレーションを実現する（非特許文献７〜１２参照）。
【０００４】
上記マイグレーション処理において、コンテナからダンプを生成・再生する技術としてはＣｈｅｃｋｐｏｉｎｔ／Ｒｅｓｔａｒｔ（ＣＲ）技術が知られている。ＣＲ技術は、プロセスの一時停止、プロセスのチェックポイントの作成、プロセスのダンプの生成、ダンプを元にプロセスを復元するものである（非特許文献１３〜１７参照）。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Stephen Soltesz, et al., "Container-based operating system virtualization: a scalable, high-performance alternative to hypervisors", SIGOPS Oper. Syst. Rev. 41, 3 (March 2007), 275-287, DOI=10.1145/1272998.1273025, [online], [平成27年6月26日検索], インターネット<URL:http://doi.acm.org/10.1145/1272998.1273025>
【非特許文献２】Dirk Merkel, "Docker: lightweight Linux containers for consistent development and deployment", Linux J. 2014, 239, [online], [平成27年6月26日検索], インターネット<URL:http://dl.acm.org/citation.cfm?id=2600239.2600241>
【非特許文献３】加藤泰文、田向正一、「ＬＸＣで学ぶコンテナ入門−軽量仮想化環境を実現する技術」、技術評論社、[online], [平成27年6月26日検索], インターネット<URL:http://gihyo.jp/admin/serial/01/linux_containers>
【非特許文献４】"Docker Documentation", [online], [平成27年6月26日検索], インターネット<URL:https://docs.docker.com/>
【非特許文献５】"Linux Containers", [online], [平成27年6月26日検索], インターネット<URL:https://linuxcontainers.org/>
【非特許文献６】"Linux Containers - LXC - Introduction", [online], [平成27年6月26日検索], インターネット<URL:https://linuxcontainers.org/lxc/introduction/>
【非特許文献７】"Checkpointing and live migration - OpenVZ Linux Containers Wiki", [online], [平成27年6月26日検索], インターネット<URL:http://openvz.org/Checkpointing_and_live_migration>
【非特許文献８】"Live Migration in LXD", [online], [平成27年6月26日検索], インターネット<URL:http://tycho.ws/blog/2015/04/lxd-live-migration.html>
【非特許文献９】"Live migration - CRIU", [online], [平成27年6月26日検索], インターネット<URL:http://criu.org/Live_migration>
【非特許文献１０】"xemul/p.haul ・ GitHub", [online], [平成27年6月26日検索], インターネット<URL:https://github.com/xemul/p.haul>
【非特許文献１１】「lxd を使ったライブマイグレーション (1) - TenForwardの日記」, [online], [平成27年6月26日検索], インターネット<URL:http://d.hatena.ne.jp/defiant/20150415/1429089615>
【非特許文献１２】「lxd を使ったライブマイグレーション (2) - TenForwardの日記」, [online], [平成27年6月26日検索], インターネット<URL:http://d.hatena.ne.jp/defiant/20150415/1429090896>
【非特許文献１３】Oren Laadan, Serge E. Hallyn, "Linux-CR: Transparent Application Checkpoint-Restart in Linux", The Linux Symposium 2010, Ottawa, July 2010, [online], [平成27年6月26日検索], インターネット<URL:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.174.8336&rep=rep1&type=pdf>, <URL:http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.174.8336>
【非特許文献１４】Jason Duell, "The design and implementation of Berkeley Lab’s linux Checkpoint/Restart", [online], [平成27年6月26日検索], インターネット<URL http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.106.2346>
【非特許文献１５】Eric Roman, "A Survey of Checkpoint/Restart Implementations", Lawrence Berkeley National Laboratory, Tech, [online], [平成27年6月26日検索], インターネット<URL:http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.108.4784>
【非特許文献１６】"Linux Checkpoint / Restart Wiki", [online], [平成27年6月26日検索], インターネット<URL:https://ckpt.wiki.kernel.org/index.php/Main_Page>
【非特許文献１７】"CRIU: Time and Space travel Service for Linux Applications", [online], [平成27年6月26日検索], インターネット<URL:http://www.slideshare.net/openvz/criu-texaslinuxfest2014140614182445phpapp01>
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、上述した既存のライブマイグレーション方式では、コンテナの停止から再開までの停止時間が長いという問題がある。具体的には、上述した既存のライブマイグレーション方式では、マイグレーション元のコンテナを停止してダンプをディスクストレージ上に書き出し、マイグレーション先のサーバにダンプを転送し、マイグレーション先のサーバにおいて転送されたダンプをメモリ上に展開して、コンテナを再生して動作を再開するという手順を踏む。この処理時間中、コンテナは停止状態にあるため、コンテナの停止から再開までに要する停止時間が長いというものである。このようにコンテナの停止時間が長いと、コンテナ上で動作するプロセスの通信セッションが切断されてしまうなど種々の問題が発生するおそれがある。
【０００７】
本発明は上記事情に鑑みてなされたものであり、その目的とするところは、コンテナの停止時間を短くすることができるコンテナのマイグレーションシステム及び方法を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本願発明は、コンテナ型仮想化技術により仮想化環境であるコンテナを構築可能な第１及び第２のコンピュータを備え、前記第１のコンピュータ上に構築されたコンテナを前記第２のコンピュータにマイグレーションさせるコンテナのマイグレーションシステムであって、前記第１及び第２のコンピュータは、前記第１のコンピュータのコンテナを第２のコンピュータに反復的に差分同期させる同期処理部と、同期処理部による同期処理が開始されてからコンテナの動作を前記第１のコンピュータから前記第２のコンピュータに切り替える時期（切替時期）を判定する切替時期判定手段とを備え、前記第１のコンピュータの同期処理部は、前記切替時期判定手段により切替時期と判定されると前記第１のコンピュータにおけるコンテナの動作を停止させ、最後の差分同期処理を実行し、前記第１のコンピュータにおけるコンテナを削除し、前記第２のコンピュータの同期処理部は、前記第１のコンピュータと最後の差分同期処理の後に、第２のコンピュータにおいてコンテナの動作を開始させることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、差分同期処理の実行中でも第１のコンピュータにおいてコンテナの動作が継続するので、コンテナの停止時間を短くすることができる。
【図面の簡単な説明】
【００１０】
【図１】コンテナのマイグレーションシステムの構成図
【図２】コンテナ・ホスト機能部の構成図
【図３】同期処理部の動作を説明するフローチャート（マイグレーション元の場合）
【図４】切り替えタイミングを検出するアルゴリズムの一例
【図５】切り替えタイミングを検出するアルゴリズムの一例
【図６】切り替えタイミングを検出するアルゴリズムの一例
【図７】切り替えタイミングを検出するアルゴリズムの一例
【図８】切り替えタイミングを検出するアルゴリズムの一例
【図９】切り替えタイミングを検出するアルゴリズムの一例
【図１０】切り替えタイミングを検出するアルゴリズムの一例
【図１１】切り替えタイミングを検出するアルゴリズムの一例
【図１２】切り替えタイミングを検出するアルゴリズムの一例
【図１３】切り替えタイミングを検出するアルゴリズムの一例
【図１４】切り替えタイミングを検出するアルゴリズムの一例
【図１５】切り替えタイミングを検出するアルゴリズムの一例
【図１６】コンテナのマイグレーション動作を説明する図
【図１７】実施例１に係るマイグレーション動作を説明するシーケンスチャート
【図１８】実施例２に係るマイグレーション動作を説明するシーケンスチャート
【図１９】実施例３に係るマイグレーション動作を説明するシーケンスチャート
【図２０】実施例４に係るマイグレーション動作を説明するシーケンスチャート
【発明を実施するための形態】
【００１１】
本発明の一実施の形態に係るマイグレーションシステムについて図面を参照して説明する。図１はコンテナのマイグレーションシステムの構成図、図２はコンテナ・ホスト機能部の構成図である。
【００１２】
図１に示すように、第１のサーバ１００及び第２のサーバ２００は、ネットワーク機能部１１０，２１０を介してネットワーク３００と接続している。各サーバ１００，２００は、ＯＳ１２０，２２０と、コンテナ・ホスト機能部１３０，２３０とを備えており、このコンテナ・ホスト機能部１３０，２３０によりＯＳ１２０，２２０上にプロセスレベルでリソースが分離された仮想化環境である１つ以上のコンテナ１９０，２９０が構築される。
【００１３】
ここでコンテナ・ホスト機能部１３０，２３０により構築されるコンテナ１９０，２９０の特徴について説明する。ＯＳ１２０，２２０やコンテナ・ホスト機能部１３０，２３０は、コンテナ内部の情報や内部のプロセス間のやりとりを透過的にアクセス可能である。また、ＯＳ１２０，２２０やコンテナ・ホスト機能部１３０，２３０は、シグナルを送出して直接的にコンテナ内部のプロセスに対する種々の操作（例えば強制終了など）が可能である。また、コンテナ内部のプロセスは、コンテナ内部から外部へのやりとりも全て透過的にアクセス可能である。
【００１４】
コンテナに含まれるプロレスに関する情報としては、ＰＩＤ，ＰＰＩＤ，ＵＩＤ（User ID），ＧＩＤ（Group ID），ｕｌｉｍｉｔ，ｒｕｓａｇｅ，メモリ使用量，ＣＰＵ使用率，ＣＰＵ使用時間，一定時間以内に更新されたメモリアドレス，プロセスグループの情報，プロセス間通信の内容，プロセス間共有メモリの内容，シグナル・シグナルハンドラ，システムコール，ロックしているファイル，標準入出力，スレッド，ＴＣＰ（Transmission Control Protocol）ソケット，ＵＤＰ（User Datagram Protocol）ソケット，その他のソケット，ファイルＩ／Ｏ，コンテナに紐付いている仮想ＮＩＣ（Network Interface Card）に関する情報などが挙げられる。なお、コンテナに紐付いている仮想ＮＩＣに関する情報の詳細としては、バッファ使用量等，到来しているパケット数，送信パケット数などが挙げられる。
【００１５】
コンテナ・ホスト機能部１３０，２３０の詳細について図２を参照して説明する。ここでは、第１のサーバ１００のコンテナ・ホスト機能部１３０について説明するが、第２のサーバ２００のコンテナ・ホスト機能部２３０も同一の構成である。
【００１６】
コンテナ・ホスト機能部１３０は、図２に示すように、コンテナ管理部１３１と、マイグレーション制御部１３５とを備えている。
【００１７】
コンテナ管理部１３１は、コンテナの生成・開始・再生・再開・停止・削除などコンテナの管理を行う。ここで、コンテナの生成及び再生とは、ダンプやイメージファイルなどをサーバのメモリ上に展開して、コンテナを実行できるよう環境を構築することを意味する。また、コンテナの開始・再開とは、メモリ上に展開されたコンテナを動作させることを意味する。また、コンテナの停止とは、メモリ上のコンテナは維持しつつ、その動作のみを停止することを意味する。また、コンテナの削除とは、停止されたコンテナをメモリ上から消去又はコンテナが占有していたメモリを解放することを意味する。
【００１８】
マイグレーション制御部１３５は、自身のサーバと他のサーバ間との間でのコンテナのマイグレーション処理を制御する。マイグレーション制御部１３５は、他のサーバとの間で同期処理を行う同期処理部１３６と、マイグレーション元のサーバのコンテナを停止させ、マイグレーション先のサーバでコンテナの動作を開始させる時期を判定する切替時期判定部１３７とを備えている。
【００１９】
同期処理部１３６は他のサーバとの間でコンテナの差分同期処理を行う。ここで差分同期処理の方法としては、マイグレーション元のサーバにおいてメモリの内容やコンテナの状態（ソケット，システムコール，シグナル，セッション，ＰＩＤ／ＰＰＩＤなど）をダンプし、マイグレーション先のサーバに転送し、マイグレーション先のサーバにおいてダンプを適用することにより処理される。なお、コンテナを生成するためのベースイメージをマイグレーション元のサーバとマイグレーション先のサーバの双方で既に有している又は入手可能な場合には、ベースイメージとダンプの差分を初回分として転送し、マイグレーション先において当該差分とベースイメージから初回分のダンプを再現することにより、転送データ量を小さくすることができる。
【００２０】
同期処理部１３６は、自身のサーバがマイグレーション元のサーバである場合と、自身のサーバがマイグレーション先のサーバである場合とで動作が異なる。自身のサーバがマイグレーション元のサーバである場合の動作について図３のフローチャートを参照して説明する。
【００２１】
同期処理部１３６は、まず初回のダンプを生成し、マイグレーション先のサーバの同期処理部に転送する（ステップＳ１１）。以降、同期処理部１３６は、切替時期判定部１３７から切替開始信号を受信するまで、差分ダンプを生成し、マイグレーション先のサーバの同期処理部に転送する処理を反復的に繰り返す（ステップＳ１２，Ｓ１３）。差分ダンプの生成・転送処理は、所定時間毎であってもよいし更にサーバの動作状況に応じて行うようにしてもよい。そして同期処理部１３６は、切替時期判定部１３７から切替開始信号を受信すると、コンテナ管理部１３１に対してコンテナを停止するよう指示し（ステップＳ１４）、最後の差分ダンプを生成し、マイグレーション先のサーバの同期処理部に転送する（ステップＳ１５）。最後に同期処理部１３６は、コンテナ管理部１３１に対してコンテナを削除するよう指示する（ステップＳ１６）。
【００２２】
自身のサーバがマイグレーション先のサーバである場合、同期処理部１３６は、マイグレーション元のサーバから初回のダンプを受信すると記憶手段に記憶し、その後に差分ダンプを受信すると順次記憶手段に差分ダンプを適用し、最後のダンプを受信・適用したらコンテナ管理部１３１に対して記憶手段に記憶したダンプからコンテナを再生・再開するよう指示する。または、同期処理部１３６は、マイグレーション元のサーバから初回ダンプを受信するとコンテナ管理部１３１に対して初回ダンプからコンテナを再生するよう指示し、その後に差分ダンプを受信するとコンテナに差分ダンプを適用し、最後のダンプを受信・適用したらコンテナ管理部１３１に対してコンテナを再開するよう指示する。
【００２３】
切替時期判定部１３７は、自身のサーバがマイグレーション元のサーバである場合に、自身の同期処理部１３６による同期処理が開始されてからコンテナの動作をマイグレーション先のサーバに切り替える時期（切替時期）を判定する。当該判定処理としては、マイグレーション対象であるコンテナの活動状況など自身のサーバの状況を監視し、所定の活動状況になったら切替時期であると判定する又は現在の活動状況から将来の活動状況を推定して切替時期を判定するものや、対象のコンテナに切替時期情報を問い合わせて該切替時期情報から切替時期を判定するものなどが挙げられる。
【００２４】
切替時期判定部１３７の判定処理のより具体的なアルゴリズムとしては、（ａ）コンテナの活動量を考慮して切換タイミングを検出するアルゴリズム、（ｂ）コンテナにマイグレーションの可否を確認するアルゴリズム、（ｃ）コンテナの状態を考慮するアルゴリズム、（ｄ）コンテナの通信状態を考慮するアルゴリズムなどが挙げられる。前記（ａ）のコンテナの活動量は、具体的には、後述する（ｃ）や（ｄ）で挙げる値の他、同期処理部１３６で生成する差分ダンプのサイズなどをパラメータとして、何れか１つのパラメータ又は複数のパラメータを組み合わせて算出した評価値である。また、前記（ｂ）のアルゴリズムでは、コンテナ内のプロセス側に予め問合せに対して応答する手段を設けておく。
【００２５】
上記（ａ）のアルゴリズムの具体例として、図４に未来のコンテナの活動量を推定して切換タイミングを検出するもの、図５に現在のコンテナの活動量を計算して切換タイミングを検出するもの、図６に差分ダンプのサイズが十分小さくなったタイミングで切り替えるもの、についてフローチャートを示す。
【００２６】
上記（ｂ）のアルゴリズムの具体例として、図７にコンテナにマイグレーションの可否を確認するもの、図８にコンテナにマイグレーション可能な時刻を確認するもの、についてフローチャートを示す。
【００２７】
上記（ｃ）のアルゴリズムの具体例として、図９にコンテナのＣＰＵ使用率が一定以下のタイミングで切り替えるもの、図１０にコンテナのストレージＩ／Ｏが一定以下のタイミングで切り替えるもの、図１１にコンテナがロックするファイル数が一定以下のタイミングで切り替えるもの、についてフローチャートを示す。
【００２８】
上記（ｄ）のアルゴリズムの具体例として、図１２にコンテナの仮想ＮＩＣのバッファ使用率が一定以下のタイミングで切り替えるもの、図１３にコンテナ内部のプロセスが作成したソケットが解消されるタイミングで切り替えるもの、図１４にコンテナ内部のＥＳＴＡＢＬＩＳＨＥＤ状態のソケットが一定数以下のタイミングで切り替えるもの、図１５にＴＣＰソケットの受信・送信バッファの使用率が一定以下のタイミングで切り替えるもの、についてフローチャートを示す。
【００２９】
次に、本実施の形態に係るマイグレーションシステムにおけるマイグレーションの動作について図１６を参照して説明する。図１６は、第１のサーバ１００から第２のサーバ２００にコンテナをマイグレーションする場合を示している。
【００３０】
まず、（１）第１のサーバ１００は、実行中のコンテナを停止せずにダンプを生成し、メモリ上に保持し、（２）ネットワーク３００を介してダンプを第２のサーバ２００に転送する。次に、（３）実行中のコンテナと第１のサーバ１００上のダンプを差分同期し、（４）第１のサーバ１００と第２のサーバ２００のダンプの差分同期を行い、同期がとれたら前記（３）を実行する、という手順を繰り返し行う。一方、（５）第１のサーバ１００では、コンテナの状態等を監視し、最適なタイミングでコンテナを停止させる。次に、（６）停止したコンテナと第２のサーバ２００のダンプを差分同期し、（７）第２のサーバ２００においてコンテナを再生する。（８）第１のサーバ１００ではコンテナを削除し、（９）第２のサーバ２００ではコンテナを再開する。
【００３１】
本実施の形態によれば、差分同期処理の実行中でも第１のコンピュータにおいてコンテナの動作が継続するので、コンテナの停止時間を短くすることができる。
【実施例１】
【００３２】
本発明に実施例１について図１７のシーケンスチャートを参照して説明する。実施例１はコンテナの再生を最後に行う場合の例である。
【００３３】
第１のサーバ１００の同期処理部１３６は、第２のサーバ２００の同期処理部２３６に対して、ライブマイグレーションの依頼、ライブマイグレーション対象のコンテナが消費するリソース量などを通知する（ステップＳ１０１）。同期処理部２３６は、リソース量の要求を満たすか判断し（ステップＳ１０２）、同期処理部１３６に対して「許可」を通知する（ステップＳ１０３）。なお、リソース量の要求を満たさない場合ライブマイグレーションを拒否し、ライブマイグレーションは失敗となる。
【００３４】
次に、同期処理部１３６は、コンテナのダンプを生成し、記憶装置に保持し（ステップＳ１０４）、ダンプを同期処理部２３６に転送する（ステップＳ１０５）。同期処理部２３６は、受信したダンプを記憶手段に記憶し（ステップＳ１０６）、同期完了を同期処理部１３６に通知する（ステップＳ１０７）。同期処理部２３６は、切替時期判定部１３７に対して差分同期開始を通知する（ステップＳ１０８）。切替時期判定部１３７は、切替タイミングの検出アルゴリズムを実行して、コンテナ切換開始のタイミングを検出する（ステップＳ１０９）。
【００３５】
同期処理部１３６は、コンテナの更新差分から差分ダンプを生成し（ステップＳ１１０）、差分ダンプを同期処理部２３６に転送する（ステップＳ１１１）。同期処理部２３６は、記憶装置に保持しているダンプに受信した差分ダンプを適用し（ステップＳ１１２）、差分同期完了を同期処理部１３６に通知する（ステップＳ１１３）。このステップＳ１１０〜Ｓ１１３までの処理は、切替時期判定部１３７が切換開始のタイミングを通知（ステップＳ１１４）まで繰り返し実行する。
【００３６】
切替時期判定部１３７が切換開始のタイミングを通知すると（ステップＳ１１４）、同期処理部１３６は、コンテナを停止する（ステップＳ１１５）。次に、同期処理部１３６は、コンテナの更新差分から差分ダンプを生成し（ステップＳ１１６）、差分ダンプを同期処理部２３６に転送する（ステップＳ１１７）。同期処理部２３６は、記憶装置に保持しているダンプに受信した差分ダンプを適用し（ステップＳ１１８）、差分同期完了を同期処理部１３６に通知する（ステップＳ１１９）。
【００３７】
この後に、第１のサーバ１００の同期処理部１３６はコンテナを削除し（ステップＳ１２０）、第２のサーバ２００の同期処理部２３６は記憶装置に保持しているダンプを再生し、最後にコンテナを再開する（ステップＳ１２１）。
【００３８】
なお、上記シーケンスにおいてダンプを記憶保持する記憶装置としてはメモリが望ましいが、任意の記憶装置でもよい。
【実施例２】
【００３９】
本発明に実施例２について図１８のシーケンスチャートを参照して説明する。実施例２はコンテナの再生を最初に行う場合の例である。
【００４０】
第１のサーバ１００の同期処理部１３６は、第２のサーバ２００の同期処理部２３６に対して、ライブマイグレーションの依頼、ライブマイグレーション対象のコンテナが消費するリソース量などを通知する（ステップＳ２０１）。同期処理部２３６は、リソース量の要求を満たすか判断し（ステップＳ２０２）、同期処理部１３６に対して「許可」を通知する（ステップＳ２０３）。なお、リソース量の要求を満たさない場合ライブマイグレーションを拒否し、ライブマイグレーションは失敗となる。
【００４１】
次に、同期処理部１３６は、コンテナのダンプを生成し、記憶装置に保持し（ステップＳ２０４）、ダンプを同期処理部２３６に転送する（ステップＳ２０５）。同期処理部２３６は、ダンプからコンテナを再生する（ステップＳ２０６）。ただし、この時点では同期処理部２３６は、コンテナは停止の状態とする。次に、同期処理部２３６は、同期完了を同期処理部１３６に通知する（ステップＳ２０７）。同期処理部２３６は、切替時期判定部１３７に対して差分同期開始を通知する（ステップＳ２０８）。切替時期判定部１３７は、切替タイミングの検出アルゴリズムを実行して、コンテナ切換開始のタイミングを検出する（ステップＳ２０９）。
【００４２】
同期処理部１３６は、コンテナの更新差分から差分ダンプを生成し（ステップＳ２１０）、差分ダンプを同期処理部２３６に転送する（ステップＳ２１１）。同期処理部２３６は、コンテナに差分ダンプを適用し（ステップＳ２１２）、差分同期完了を同期処理部１３６に通知する（ステップＳ２１３）。このステップＳ２１０〜Ｓ２１３までの処理は、切替時期判定部１３７が切換開始のタイミングを通知（ステップＳ２１４）まで繰り返し実行する。
【００４３】
切替時期判定部１３７が切換開始のタイミングを通知すると（ステップＳ２１４）、同期処理部１３６は、コンテナを停止する（ステップＳ２１５）。次に、同期処理部１３６は、コンテナの更新差分から差分ダンプを生成し（ステップＳ２１６）、差分ダンプを同期処理部２３６に転送する（ステップＳ２１７）。同期処理部２３６は、コンテナに差分ダンプを適用し（ステップＳ２１８）、差分同期完了を同期処理部１３６に通知する（ステップＳ２１９）。
【００４４】
この後に、第１のサーバ１００の同期処理部１３６はコンテナを削除し（ステップＳ２２０）、第２のサーバ２００の同期処理部２３６はコンテナを再開する（ステップＳ２２１）。
【実施例３】
【００４５】
本発明に実施例３について図１９のシーケンスチャートを参照して説明する。実施例３は、コンテナのベースとなるダンプ(ベースイメージ)を使用して転送するデータ量を低減するものであり、且つ、コンテナの再生を最後に行う場合の例である。
【００４６】
第１のサーバ１００の同期処理部１３６は、第２のサーバ２００の同期処理部２３６に対して、ライブマイグレーションの依頼、ライブマイグレーション対象のコンテナが消費するリソース量などを通知する（ステップＳ３０１）ここで、ライブマイグレーションの依頼には、マイグレーション対象のコンテナを生成する際に用いたベースイメージを識別する識別情報を含む。同期処理部２３６は、リソース量の要求を満たすか判断し（ステップＳ３０２）、同期処理部１３６に対して「許可」且つ「ベースイメージが使用可能」であることを通知する（ステップＳ３０３）。なお、リソース量の要求を満たさない場合ライブマイグレーションを拒否し、ライブマイグレーションは失敗となる。
【００４７】
次に、同期処理部１３６は、コンテナのダンプを生成して記憶装置に保持し、ベースイメージとの差分を取得し（ステップＳ３０４）、ベースイメージとの差分を同期処理部２３６に転送する（ステップＳ３０５）。同期処理部２３６は、自身で別途入手したベースイメージに同期処理部１３６から受信した差分を適用してダンプを生成し、記憶装置に保持し（ステップＳ３０６）、同期完了を同期処理部１３６に通知する（ステップＳ３０７）。同期処理部２３６は、切替時期判定部１３７に対して差分同期開始を通知する（ステップＳ３０８）。切替時期判定部１３７は、切替タイミングの検出アルゴリズムを実行して、コンテナ切換開始のタイミングを検出する（ステップＳ３０９）。
【００４８】
同期処理部１３６は、コンテナの更新差分から差分ダンプを生成し（ステップＳ３１０）、差分ダンプを同期処理部２３６に転送する（ステップＳ３１１）。同期処理部２３６は、記憶装置に保持しているダンプに受信した差分ダンプを適用し（ステップＳ３１２）、差分同期完了を同期処理部１３６に通知する（ステップＳ３１３）。このステップＳ３１０〜Ｓ３１３までの処理は、切替時期判定部１３７が切換開始のタイミングを通知（ステップＳ３１４）まで繰り返し実行する。
【００４９】
切替時期判定部１３７が切換開始のタイミングを通知すると（ステップＳ３１４）、同期処理部１３６は、コンテナを停止する（ステップＳ３１５）。次に、同期処理部１３６は、コンテナの更新差分から差分ダンプを生成し（ステップＳ３１６）、差分ダンプを同期処理部２３６に転送する（ステップＳ３１７）。同期処理部２３６は、記憶装置に保持しているダンプに受信した差分ダンプを適用し（ステップＳ３１８）、差分同期完了を同期処理部１３６に通知する（ステップＳ３１９）。
【００５０】
この後に、第１のサーバ１００の同期処理部１３６はコンテナを削除し（ステップＳ３２０）、第２のサーバ２００の同期処理部２３６は記憶装置に保持しているダンプを再生し、最後にコンテナを再開する（ステップＳ３２１）。
【００５１】
なお、上記シーケンスにおいてダンプを記憶保持する記憶装置としてはメモリが望ましいが、任意の記憶装置でもよい。
【実施例４】
【００５２】
本発明に実施例４について図２０のシーケンスチャートを参照して説明する。実施例４は、コンテナのベースとなるダンプ(ベースイメージ)を使用して転送するデータ量を低減するものであり、且つ、コンテナの再生を最初に行う場合の例である。
【００５３】
第１のサーバ１００の同期処理部１３６は、第２のサーバ２００の同期処理部２３６に対して、ライブマイグレーションの依頼、ライブマイグレーション対象のコンテナが消費するリソース量などを通知する（ステップＳ４０１）。ここで、ライブマイグレーションの依頼には、マイグレーション対象のコンテナを生成する際に用いたベースイメージを識別する識別情報を含む。同期処理部２３６は、リソース量の要求を満たすか判断し（ステップＳ４０２）、同期処理部１３６に対して「許可」且つ「ベースイメージが使用可能」であることを通知する（ステップＳ４０３）。なお、リソース量の要求を満たさない場合ライブマイグレーションを拒否し、ライブマイグレーションは失敗となる。
【００５４】
次に、同期処理部１３６は、コンテナのダンプを生成して記憶装置に保持し、ベースイメージとの差分を取得し（ステップＳ４０４）、ベースイメージとの差分を同期処理部２３６に転送する（ステップＳ４０５）。同期処理部２３６は、自身で別途入手したベースイメージに同期処理部１３６から受信した差分を適用してダンプを生成し、該コンテナを再生する（ステップＳ４０６）。ただし、この時点では同期処理部２３６は、コンテナは停止の状態とする。次に、同期処理部２３６は、同期完了を同期処理部１３６に通知する（ステップＳ４０７）。同期処理部２３６は、切替時期判定部１３７に対して差分同期開始を通知する（ステップＳ４０８）。切替時期判定部１３７は、切替タイミングの検出アルゴリズムを実行して、コンテナ切換開始のタイミングを検出する（ステップＳ４０９）。
【００５５】
同期処理部１３６は、コンテナの更新差分から差分ダンプを生成し（ステップＳ４１０）、差分ダンプを同期処理部２３６に転送する（ステップＳ４１１）。同期処理部２３６は、コンテナに差分ダンプを適用し（ステップＳ４１２）、差分同期完了を同期処理部１３６に通知する（ステップＳ４１３）。このステップＳ４１０〜Ｓ４１３までの処理は、切替時期判定部１３７が切換開始のタイミングを通知（ステップＳ４１４）まで繰り返し実行する。
【００５６】
切替時期判定部１３７が切換開始のタイミングを通知すると（ステップＳ４１４）、同期処理部１３６は、コンテナを停止する（ステップＳ４１５）。次に、同期処理部１３６は、コンテナの更新差分から差分ダンプを生成し（ステップＳ４１６）、差分ダンプを同期処理部２３６に転送する（ステップＳ４１７）。同期処理部２３６は、コンテナに差分ダンプを適用し（ステップＳ４１８）、差分同期完了を同期処理部１３６に通知する（ステップＳ４１９）。
【００５７】
この後に、第１のサーバ１００の同期処理部１３６はコンテナを削除し（ステップＳ４２０）、第２のサーバ２００の同期処理部２３６はコンテナを再開する（ステップＳ４２１）。
【符号の説明】
【００５８】
１００，２００…サーバ
１１０，２１０…ネットワーク機能部
１２０，２２０…ＯＳ
１３０，２３０…コンテナ・ホスト機能部
１３１…コンテナ管理部
１３５…マイグレーション制御部
１３６…同期処理部
１３７…切替時期判定部
１９０，２９０…コンテナ
【図１】
0006319770.tif 000002
【図２】
0006319770.tif 000003
【図３】
0006319770.tif 000004
【図４】
0006319770.tif 000005
【図５】
0006319770.tif 000006
【図６】
0006319770.tif 000007
【図７】
0006319770.tif 000008
【図８】
0006319770.tif 000009
【図９】
0006319770.tif 000010
【図１０】
0006319770.tif 000011
【図１１】
0006319770.tif 000012
【図１２】
0006319770.tif 000013
【図１３】
0006319770.tif 000014
【図１４】
0006319770.tif 000015
【図１５】
0006319770.tif 000016
【図１６】
0006319770.tif 000017
【図１７】
0006319770.tif 000018
【図１８】
0006319770.tif 000019
【図１９】
0006319770.tif 000020
【図２０】
0006319770.tif 000021