(57)【要約】【課題】仮想的なプロセス実行部を物理マシン間で移設した場合における当該プロセス実行部のＩ／Ｏ処理性能低下を抑制する。【解決手段】情報処理装置１０は、仮想的なプロセス実行部１２がストレージ１１に対するＩ／Ｏ処理を実行したとき、Ｉ／Ｏ処理対象のデータをストレージ１１から情報処理装置２０を介してストレージ２１にコピーするコピー処理を、プロセス実行部１２を情報処理装置１０から情報処理装置２０に移設する移設処理の前処理として実行する。管理装置３０は、前処理の開始後におけるコピー処理を伴うプロセス実行部１２によるストレージ１１に対するＩ／Ｏ処理の監視結果から算出される、移設後のプロセス実行部２２によるＩ／Ｏ処理の性能影響度に基づいて、移設処理の実行タイミングを決定する。【選択図】図１
2020113031.tif 000002
【特許請求の範囲】
【請求項１】
第１のストレージが接続された第１の情報処理装置と、第２のストレージが接続された第２の情報処理装置と、管理装置とを有する情報処理システムであって、
前記第１の情報処理装置は、前記第１の情報処理装置で動作する仮想的なプロセス実行部が前記第１のストレージに対するＩ／Ｏ（Input／Output）処理を実行したとき、Ｉ／Ｏ処理対象のデータを前記第１のストレージから前記第２の情報処理装置を介して前記第２のストレージにコピーするコピー処理を、前記プロセス実行部を前記第１の情報処理装置から前記第２の情報処理装置に移設する移設処理の前処理として実行し、
前記管理装置は、前記前処理の開始後における前記コピー処理を伴う前記プロセス実行部による前記第１のストレージに対するＩ／Ｏ処理の監視結果から算出される、移設後の前記プロセス実行部によるＩ／Ｏ処理の性能影響度に基づいて、前記移設処理の実行タイミングを決定し、前記実行タイミングにおいて前記移設処理の実行指示を前記第１の情報処理装置および前記第２の情報処理装置に出力する、
情報処理システム。
【請求項２】
前記管理装置は、前記第１のストレージに格納されたデータのうち、書き込み後または更新後に読み出されていないデータに対する、前記第１の情報処理装置で動作する前記プロセス実行部による単位時間当たりの読み出し回数を、前記性能影響度として用いて前記実行タイミングを決定する、
請求項１記載の情報処理システム。
【請求項３】
前記管理装置は、さらに、前記第１の情報処理装置で動作する前記プロセス実行部による前記第１のストレージに対するＩ／Ｏ処理の実行に応じた、前記第１のストレージから前記第２のストレージへのデータのコピー状況を示す情報を、前記性能影響度として用いて前記実行タイミングを決定する、
請求項２記載の情報処理システム。
【請求項４】
前記管理装置は、前記第１のストレージに格納されたデータ量に対する、前記第２のストレージにコピーされていないデータ量の割合を、前記コピー状況を示す情報として用いる、
請求項３記載の情報処理システム。
【請求項５】
前記前処理の開始時刻は、前記管理装置が、前記第２の情報処理装置を含む複数の情報処理装置のそれぞれの動作状況に基づいて、前記プロセス実行部の移設先を前記第２の情報処理装置に決定した時刻である、
請求項１乃至４のいずれか１項に記載の情報処理システム。
【請求項６】
前記プロセス実行部は、コンテナ仮想化技術によって生成されるコンテナである、
請求項１乃至５のいずれか１項に記載の情報処理システム。
【請求項７】
第１のストレージが接続された第１の情報処理装置において動作する仮想的なプロセス実行部を、第２のストレージが接続された第２の情報処理装置に移設する移設処理を実行するための移設条件を記憶する記憶部と、
前記第１の情報処理装置で動作する前記プロセス実行部が前記第１のストレージに対するＩ／Ｏ処理を実行したとき、Ｉ／Ｏ処理対象のデータを前記第１のストレージから前記第２の情報処理装置を介して前記第２のストレージにコピーするコピー処理を、前記移設処理の前処理として前記第１の情報処理装置に実行させ、前記前処理の開始後における前記コピー処理を伴う前記プロセス実行部による前記第１のストレージに対するＩ／Ｏ処理の監視結果から算出される、移設後の前記プロセス実行部によるＩ／Ｏ処理の性能影響度に基づいて、前記移設処理の実行タイミングを決定し、前記実行タイミングにおいて前記移設処理の実行指示を前記第１の情報処理装置および前記第２の情報処理装置に出力する処理部と、
を有する管理装置。
【請求項８】
第１のストレージが接続された第１の情報処理装置と、第２のストレージが接続された第２の情報処理装置とに接続されたコンピュータに、
前記第１の情報処理装置で動作する仮想的なプロセス実行部が前記第１のストレージに対するＩ／Ｏ処理を実行したとき、Ｉ／Ｏ処理対象のデータを前記第１のストレージから前記第２の情報処理装置を介して前記第２のストレージにコピーするコピー処理を、前記プロセス実行部を前記第１の情報処理装置から前記第２の情報処理装置に移設する移設処理の前処理として前記第１の情報処理装置に実行させ、
前記前処理の開始後における前記コピー処理を伴う前記プロセス実行部による前記第１のストレージに対するＩ／Ｏ処理の監視結果から算出される、移設後の前記プロセス実行部によるＩ／Ｏ処理の性能影響度に基づいて、前記移設処理の実行タイミングを決定し、前記実行タイミングにおいて前記移設処理の実行指示を前記第１の情報処理装置および前記第２の情報処理装置に出力する、
処理を実行させる管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、管理装置および管理プログラムに関する。
【背景技術】
【０００２】
仮想マシンは、物理マシン上に仮想的なアプリケーション実行環境を構築する技術として広く利用されている。また、物理マシン間で仮想マシンを移動させる（マイグレートする）技術として、次のような提案がある。
【０００３】
例えば、ローカルストレージ上にデータを移動させることなく仮想マシンを即時にマイグレートし、データは、マイグレートされた仮想マシンが必要とするときにオンデマンドでコピーされる、オンデマンド型イメージストリーミングが提案されている。また、他の例として、次のような計算機システムも提案されている。この計算機システムでは、第１の仮想マシンを第２の仮想マシンが動作している計算機に移動させる際、第２の仮想マシンの仮想ボリュームにおけるアクセス頻度の低い仮想ページに割り当てられた実ページのデータが、直結ストレージから外部ストレージにデステージされる。そして、直結ストレージに生成された空きスペースに、第１の仮想マシンの仮想ボリュームにおける仮想ページに割り当てられた実ページのデータが移行される。
【０００４】
また、仮想的なアプリケーション実行環境を構築する他の技術として、コンテナ仮想化技術がある。この技術は、オペレーティングシステム（ＯＳ）まで含めて仮想化する仮想マシンとは異なり、ＯＳ上でのアプリケーション実行環境を仮想化する。このため、コンテナ仮想化技術によって生成されるコンテナの物理マシン間での移動は、仮想マシンの移動と比較して容易であるという特徴がある。
【０００５】
なお、仮想マシンとコンテナのいずれも、分離されたプロセス実行環境を仮想的に提供するものであることから、物理マシン上で動作する仮想的なプロセス実行部ということができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２０１３−５４２４８６号公報
【特許文献２】特開２０１５−１１１４３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、上記のような仮想的なプロセス実行部がアクセスする仮想ストレージが、このプロセス実行部が動作する物理マシンのローカルストレージによって実現される場合がある。このような仮想ストレージは、ＤＡＳ（Direct Attached Storage）タイプの仮想ストレージとも呼ばれる。ＤＡＳタイプの仮想ストレージは、データのＩ／Ｏ（Input／Output）処理を低レイテンシで実行できるという特徴がある。
【０００８】
ここで、ＤＡＳタイプの仮想ストレージを利用する上記のプロセス実行部を他の物理マシンに移設する場合には、次のような問題がある。プロセス実行部のみ他の物理マシンに移設されて仮想ストレージのデータが移動しないままだと、移設後のプロセス実行部は仮想ストレージのデータにアクセスするために移設前の物理マシンのローカルストレージにアクセスしなければならない。このため、移設後のプロセス実行部の仮想ストレージに対するＩ／Ｏ処理性能が低下してしまう。
【０００９】
１つの側面では、本発明は、仮想的なプロセス実行部を物理マシン間で移設した場合における当該プロセス実行部のＩ／Ｏ処理性能低下を抑制することが可能な情報処理システム、管理装置および管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
１つの案では、第１のストレージが接続された第１の情報処理装置と、第２のストレージが接続された第２の情報処理装置と、管理装置とを有する情報処理システムが提供される。第１の情報処理装置は、第１の情報処理装置で動作する仮想的なプロセス実行部が第１のストレージに対するＩ／Ｏ処理を実行したとき、Ｉ／Ｏ処理対象のデータを第１のストレージから第２の情報処理装置を介して第２のストレージにコピーするコピー処理を、プロセス実行部を第１の情報処理装置から第２の情報処理装置に移設する移設処理の前処理として実行する。管理装置は、前処理の開始後におけるコピー処理を伴うプロセス実行部による第１のストレージに対するＩ／Ｏ処理の監視結果から算出される、移設後のプロセス実行部によるＩ／Ｏ処理の性能影響度に基づいて、移設処理の実行タイミングを決定し、実行タイミングにおいて移設処理の実行指示を第１の情報処理装置および第２の情報処理装置に出力する。
【００１１】
また、１つの案では、記憶部と処理部とを有する管理装置が提供される。記憶部は、第１のストレージが接続された第１の情報処理装置において動作する仮想的なプロセス実行部を、第２のストレージが接続された第２の情報処理装置に移設する移設処理を実行するための移設条件を記憶する。処理部は、第１の情報処理装置で動作するプロセス実行部が第１のストレージに対するＩ／Ｏ処理を実行したとき、Ｉ／Ｏ処理対象のデータを第１のストレージから第２の情報処理装置を介して第２のストレージにコピーするコピー処理を、移設処理の前処理として第１の情報処理装置に実行させ、前処理の開始後におけるコピー処理を伴うプロセス実行部による第１のストレージに対するＩ／Ｏ処理の監視結果から算出される、移設後のプロセス実行部によるＩ／Ｏ処理の性能影響度に基づいて、移設処理の実行タイミングを決定し、実行タイミングにおいて移設処理の実行指示を第１の情報処理装置および第２の情報処理装置に出力する。
【００１２】
さらに、１つの案では、上記の情報処理システムに含まれる管理装置と同様の処理をコンピュータに実行させる管理プログラムが提供される。
【発明の効果】
【００１３】
１つの側面では、仮想的なプロセス実行部を物理マシン間で移設した場合における当該プロセス実行部のＩ／Ｏ処理性能低下を抑制できる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態に係る情報処理システムの構成例および処理例を示す図である。
【図２】第２の実施の形態に係る情報処理システムの構成例を示す図である。
【図３】サーバのハードウェア構成例を示す図である。
【図４】コンテナ移動処理の比較例について説明するための図である。
【図５】第２の実施の形態におけるコンテナ移動処理について説明するための図である。
【図６】サーバが備える処理機能の構成例を示すブロック図である。
【図７】管理サーバが備える処理機能の構成例を示すブロック図である。
【図８】移動対象のコンテナが検出される前の状態を示す図である。
【図９】移動対象のコンテナが検出された状態を示す図である。
【図１０】サーバがＩ／Ｏ転送モードに遷移した後の状態を示す図である。
【図１１】コンテナ移動を実行すると判定された後の状態を示す図である。
【図１２】コンテナの配置制御に関する処理例を示すフローチャートである。
【図１３】Ｉ／Ｏ転送モードのサーバにおけるＩ／Ｏ処理例を示すフローチャートである。
【図１４】コンテナが移設されたサーバにおけるＩ／Ｏ処理例を示すフローチャートである。
【図１５】第３の実施の形態におけるサーバのＩ／Ｏ処理例を示すフローチャートである。
【図１６】第３の実施の形態におけるコンテナ移動元サーバの性能影響度送信処理例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る情報処理システムの構成例および処理例を示す図である。図１に示す情報処理システムは、情報処理装置１０（第１の情報処理装置）、情報処理装置２０（第２の情報処理装置）および管理装置３０を有する。
【００１６】
情報処理装置１０には、ストレージ１１が接続されている。また、情報処理装置１０では、仮想的なプロセス実行部１２が動作している。プロセス実行部１２は、例えば、情報処理装置１０上に仮想的に構築されたプロセス実行環境を用いて動作する動作主体であり、例えば、コンテナや、ハイパバイザによって管理されるハイパバイザ型仮想マシンである。プロセス実行部１２が実行する処理には、ストレージ１１に対するＩ／Ｏ処理が含まれる。ストレージ１１は、プロセス実行部１２によって利用される記憶領域である。
【００１７】
情報処理装置２０には、ストレージ２１が接続されている。また、情報処理装置２０は、プロセス実行部１２の移設先となる情報処理装置である。図１では、移設後のプロセス実行部１２をプロセス実行部２２として示している。
【００１８】
管理装置３０は、情報処理装置１０，２０の動作を管理する装置である。特に、管理装置３０は、情報処理装置１０で動作しているプロセス実行部１２の移設処理を管理する。管理装置３０は、記憶部３１と処理部３２を有する。記憶部３１は、例えば、管理装置３０が備える図示しない記憶装置の記憶領域として実現される。処理部３２は、例えば、管理装置３０が備える図示しないプロセッサとして実現される。
【００１９】
記憶部３１には、プロセス実行部１２の移設処理の実行タイミングを判定するための移設条件３１ａが記憶されている。処理部３２は、情報処理装置１０の動作状況を監視し、動作状況と移設条件３１ａとに基づいて、プロセス実行部１２を情報処理装置１０から情報処理装置２０へ移設させる移設処理の実行タイミングを決定する。
【００２０】
以下、プロセス実行部１２の移設制御について詳しく説明する。
まず、プロセス実行部１２が動作している情報処理装置１０は、第１の動作モードと第２の動作モードとをとり得る。第１の動作モードは通常動作モードであり、この動作モードでは、プロセス実行部１２がストレージ１１との間でデータのＩ／Ｏ処理を実行する場合、単にプロセス実行部１２とストレージ１１との間でデータが送受信される。そして、管理装置３０の処理部３２は、所定のイベントの発生に応じて情報処理装置１０の動作モードを第１の動作モードから第２の動作モードに遷移させる。例えば、情報処理装置２０を含む複数の情報処理装置が存在しているとする。この場合、処理部３２は、各情報処理装置の動作状態を監視し、動作状態に基づいて情報処理装置２０をプロセス実行部１２の移設先と決定したときに、情報処理装置１０の動作モードを第１の動作モードから第２の動作モードに遷移させる。
【００２１】
第２の動作モードの状態では、情報処理装置１０は、移設処理の前処理として次のような処理を実行する。情報処理装置１０は、プロセス実行部１２がストレージ１１に対するＩ／Ｏ処理を実行したとき、Ｉ／Ｏ処理対象のデータをストレージ１１からの情報処理装置２０を介してストレージ２１にコピーする。例えば、プロセス実行部１２がストレージ１１からのデータＤ１の読み出しを要求した場合、データＤ１はストレージ１１からプロセス実行部１２に読み出される（ステップＳ１）。これとともに、情報処理装置１０は、データＤ１を情報処理装置２０に転送し、情報処理装置２０を介してストレージ２１にコピーする（ステップＳ２）。
【００２２】
一方、管理装置３０の処理部３２は、情報処理装置１０におけるプロセス実行部１２からストレージ１１に対するＩ／Ｏ処理の実行状況を監視する（ステップＳ３）。処理部３２は、Ｉ／Ｏ処理の監視結果から算出される、移設後のプロセス実行部２２によるＩ／Ｏ処理の性能影響度に基づいて、プロセス実行部１２の移設処理の実行タイミングを判定する。処理部３２は、性能影響度が移設条件３１ａを満たす値になった場合に、プロセス実行部１２の移設処理の実行タイミングになったと判定し、移設処理の実行指示を情報処理装置１０，２０に出力する（ステップＳ４）。この移設処理の実行指示により、プロセス実行部１２の移設が行われる。すなわち、移設前のプロセス実行部１２の動作が停止し、移設後のプロセス実行部２２の動作が開始される。
【００２３】
情報処理装置２０は、移設処理の実行指示に応じて、プロセス実行部２２の動作を開始する。プロセス実行部２２は、ストレージ１１に格納されたデータのうちストレージ２１にコピー済みのデータについては、ストレージ２１に対してＩ／Ｏ処理を実行する。一方、プロセス実行部２２は、ストレージ１１に格納されたデータのうちストレージ２１にコピーされていないデータについては、情報処理装置１０を介してストレージ１１に対してＩ／Ｏ処理を実行する。例えば、プロセス実行部２２が読み出しを要求したデータがストレージ２１にコピーされていない場合、そのデータはストレージ１１から読み出されて情報処理装置１０から転送される。
【００２４】
ここで、ストレージ１１からデータが読み出されて転送される場合には、ストレージ２１から読み出された場合と比較して、プロセス実行部２２によるデータ利用のためのレイテンシが大きくなり、プロセス実行部２２のＩ／Ｏ処理性能が低くなる。プロセス実行部１２のＩ／Ｏ処理性能の低下は、結果的にプロセス実行部２２自体の処理性能の低下につながる。
【００２５】
一方、ストレージ１１に記憶されたデータのうち、移設前のプロセス実行部１２がＩ／Ｏ処理を実行したデータは、プロセス実行部１２による利用頻度の高いデータであると推定できる。このため、プロセス実行部１２の移設前にこのようなデータがストレージ２１にコピーされることで、移設後のプロセス実行部２２がＩ／Ｏ処理を実行しようとする際に、ストレージ２１に対するＩ／Ｏ処理が実行される確率が高くなる。これにより、移設に伴うプロセス実行部２２のＩ／Ｏ処理性能の低下を抑制でき、その結果として、プロセス実行部２２自体の処理性能を改善できる。
【００２６】
また、情報処理装置１０が第２の動作モードに遷移した後のプロセス実行部１２の移設処理の実行タイミングは、移設後のプロセス実行部２２によるＩ／Ｏ処理の性能影響度に基づいて決定される。この性能影響度は、前処理の開始後におけるコピー処理を伴うプロセス実行部１２によるストレージ１１に対するＩ／Ｏ処理の監視結果に基づいて算出される。これにより、移設に伴うプロセス実行部２２のＩ／Ｏ処理性能の低下幅が小さい状態で、プロセス実行部１２を移設させることができる。
【００２７】
例えば、ストレージ１１に記憶されたデータのうち、移設前のプロセス実行部１２が高頻度で利用するデータが比較的多い場合には、ストレージ１１のデータをある程度ストレージ２１にコピーした後にプロセス実行部１２が移設された方が好ましい。したがって、処理部３２は例えば、プロセス実行部１２によるストレージ１１に対するＩ／Ｏ処理の実行に応じた、ストレージ１１からストレージ２１へのデータのコピー状況に基づいて、プロセス実行部１２の移設タイミングを決定する。
【００２８】
また、ストレージ１１に記憶されたデータのうち、移設前のプロセス実行部１２が利用するデータが比較的少ない場合には、早い段階でプロセス実行部１２の移設を実行しても、移設後のプロセス実行部２２によるＩ／Ｏ処理性能の低下幅はあまり大きくならない。したがって、処理部３２は例えば、ストレージ１１に格納されたデータ量に対する、ストレージ２１にコピーされていないデータ量の割合に基づいて、プロセス実行部１２の移設タイミングを決定する。
【００２９】
このような処理により、情報処理装置１０が第２の動作モードに遷移して前処理を開始してからプロセス実行部１２の移設処理が実行されるまでの時間を最小限に留めながら、移設後のプロセス実行部２２のＩ／Ｏ処理性能の低下を抑制できる。あるいは、ストレージ１１からストレージ２１へのデータ転送量を最小限に留めながら、移設後のプロセス実行部２２のＩ／Ｏ処理性能の低下を抑制できる。
【００３０】
〔第２の実施の形態〕
次に、第２の実施の形態として、仮想的なプロセス実行部の例としてコンテナが適用された場合について説明する。
【００３１】
図２は、第２の実施の形態に係る情報処理システムの構成例を示す図である。図２に示すように、第２の実施の形態に係る情報処理システムは、管理サーバ１００と、管理サーバ１００による管理対象となるサーバ２００，３００，４００，・・・とを含む。管理サーバ１００と、管理サーバ１００による管理対象となるサーバ２００，３００，４００，・・・とは、ネットワーク５０を介して接続されている。
【００３２】
管理サーバ１００は、サーバ２００，３００，４００，・・・の動作を管理するサーバコンピュータである。特に、管理サーバ１００は、サーバ２００，３００，４００，・・・上のコンテナの動作管理や、サーバ２００，３００，４００，・・・に対するコンテナの配置制御を行う。サーバ２００，３００，４００，・・・は、例えば業務処理などの各種の処理を実行するサーバコンピュータである。
【００３３】
なお、サーバ２００，３００，４００，・・・は、図１に示した情報処理装置１０または情報処理装置２０の一例である。また、管理サーバ１００は、図１に示した管理装置３０の一例である。
【００３４】
図３は、サーバのハードウェア構成例を示す図である。なお、図３ではサーバ２００について例示するが、他のサーバ３００，４００，・・・もサーバ２００と同様のハードウェア構成によって実現可能である。
【００３５】
サーバ２００は、プロセッサ２０１、メモリ２０２、通信インタフェース（Ｉ／Ｆ）２０３およびストレージ２０４ａ，２０４ｂ，２０４ｃ，・・・を備える。
プロセッサ２０１は、メモリ２０２からプログラムを読み出して処理する処理装置である。プロセッサ２０１は、例えば、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）またはＰＬＤ（Programmable Logic Device）である。また、プロセッサ２０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００３６】
メモリ２０２は、ＤＲＡＭ（Dynamic Random Access Memory）などの揮発性記憶装置であり、サーバ２００の主記憶装置として使用される。メモリ２０２には、プロセッサ２０１に実行させるＯＳプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ２０２には、プロセッサ２０１による処理に必要な各種データが格納される。
【００３７】
通信インタフェース２０３は、ネットワーク５０を介して管理サーバ１００などの他の装置と通信するためのインタフェース装置である。ストレージ２０４ａ，２０４ｂ，２０４ｃ，・・・は、ＤＡＳと呼ばれる直接接続型の物理ストレージであり、例えば、ＳＳＤ（Solid State Drive）、ＨＤＤ（Hard Disk Drive）などの不揮発性記憶装置である。ストレージ２０４ａ，２０４ｂ，２０４ｃ，・・・は、ＳＡＳ（Serial Attached SCSI，SCSI：Small Computer System Interface）やＳＡＴＡ（Serial Advanced Technology Attachment）などのインタフェースを介してプロセッサ２０１との間で通信を行う、サーバ２００のローカルストレージである。なお、ストレージ２０４ａ，２０４ｂ，２０４ｃ，・・・は、サーバ２００の外部に配置され、ネットワークを介さずにサーバ２００と接続されていてもよい。
【００３８】
なお、プロセッサ２０１に実行されるプログラムは、例えば、図示しない可搬型記録媒体に記憶され、メモリ２０２に読み込まれる。あるいは、プログラムは、ネットワーク５０を介して接続されたコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてメモリ２０２に読み込まれる。
【００３９】
また、管理サーバ１００についても、図３に示したハードウェア構成のコンピュータとして実現可能である。
次に、図４、図５を用いて、サーバ間でのコンテナの移動（配置変更）について説明する。初めに図４を用いてコンテナ移動処理の比較例について説明し、その後に図５を用いて本実施の形態におけるコンテナ移動処理について説明する。また、図４、図５では、例としてサーバ２００からサーバ３００に対してコンテナを移動する場合について説明する。
【００４０】
図４は、コンテナ移動処理の比較例について説明するための図である。
コンテナ仮想化技術は、ＯＳにおいて独立したアプリケーションの実行環境を構築する技術である。コンテナ仮想化技術は、単一のＯＳカーネルの環境においてプロセスを分離することで、異なるＯＳ環境を提供する、ということもできる。コンテナは、単一のＯＳプログラムが実行される環境において互いに分離された仮想的なユーザ空間である。このユーザ空間は、アプリケーションプログラムを実行するための互いに分離されたリソース群として提供される。例えば、コンテナには個別のメモリ空間が割り当てられる。
【００４１】
図４では例として、サーバ２００においてコンテナ２１０が動作している。コンテナ２１０によって、業務処理などのアプリケーションの処理が実行される。また、図４の例では、コンテナ２１０の実行に必要なデータが含まれるコンテナイメージ２１１が、ストレージ２０４ｅに格納されている。コンテナイメージ２１１には、アプリケーションプログラムが含まれる。コンテナエンジンと呼ばれるコンテナ管理機能によってコンテナイメージ２１１が読み込まれることで、コンテナ２１０が起動する。
【００４２】
また、サーバ２００では、コンテナ２１０が利用可能なストレージ領域として、仮想ストレージ２２０が設定されている。仮想ストレージ２２０は、例として、サーバ２００が備える物理ストレージのうち、ストレージ２０４ａ〜２０４ｄの記憶領域によって実現されるものとする。コンテナ２１０は、アプリケーションプログラムにしたがい、仮想ストレージ２２０に対するデータの書き込みや、仮想ストレージ２２０に書き込んだデータの読み出しを行う。
【００４３】
このように、仮想ストレージ２２０は、ストレージ２０４ａ〜２０４ｄのようなローカルの物理ストレージを用いたＤＡＳタイプの仮想ストレージとして実現されている。このため、コンテナ２１０は、仮想ストレージ２２０に対するデータのＩ／Ｏ処理を低レイテンシで実行できる。コンテナ２１０による仮想ストレージ２２０に対するＩ／Ｏ処理性能の向上は、コンテナ２１０上で動作するアプリケーションの処理性能の向上効果をもたらす。特に、データアクセスが多いアプリケーションほど処理性能の向上効果が顕著に得られる。
【００４４】
ところで、コンテナ仮想化技術は、仮想マシンのようなＯＳレベルでなく、アプリケーションレベルで仮想環境を構築する技術である。ここでいう仮想マシンとは、ハイパバイザによって実現される仮想マシン（ハイパバイザ型仮想マシン）を指す。ただし、コンテナも、物理マシン上で仮想的なプロセス実行環境が構築される点ではハイパバイザ型仮想マシンと共通しており、その意味ではコンテナも仮想マシンの一種ということもできる。
【００４５】
しかしながら、コンテナの起動は、ＯＳ上のプロセスの起動に相当するため、コンテナの起動はハイパバイザ型仮想マシンの起動と比較して高速である。また、コンテナの構築では、ハイパバイザ型仮想マシンと比較してメモリの使用量が少ない。このような特徴から、サーバ間におけるコンテナの移動はハイパバイザ型仮想マシンの移動と比較して容易であり、移動にかかる処理時間も短い。このため、一般的に、コンテナが移動される機会はハイパバイザ型仮想マシンと比較して多い。また、コンテナで動作するアプリケーションプログラムがアップデートされる機会も多く、アップデートに伴う実マシンやシステムのスケールアップ・ダウンの必要性から、コンテナが移動される場合も多い。
【００４６】
ここで、図４に示すコンテナ２１０を、サーバ２００からサーバ３００に移動させる場合について考える。コンテナ２１０の移動は、管理サーバ１００によって制御される。管理サーバ１００は、コンテナ２１０の移動の前に、コンテナ２１０に対応するコンテナイメージ２１１のコピーであるコンテナイメージ３１１を、サーバ３００の実ストレージ（図４の例ではストレージ３０４ｅ）に格納する。そして、管理サーバ１００は、コンテナ２１０の動作を停止させるとともに、格納されたコンテナイメージ３１１に基づき、サーバ３００上のコンテナ３１０を起動させる。これにより、移動前のコンテナ２１０と同様の処理を実行するコンテナ３１０がサーバ３００上で動作する。
【００４７】
また、図４に示す仮想ストレージ３２０は、移動後のコンテナ３１０が利用可能な仮想ストレージであり、仮想ストレージ２２０が移動されたものである。サーバ３００では、仮想ストレージ３２０の物理領域として、サーバ３００のローカルストレージであるストレージ３０４ａ〜３０４ｄの記憶領域を割り当て可能になっている。
【００４８】
しかし、コンテナ３１０の起動によりコンテナ移動だけが実行され、仮想ストレージ２２０のデータが移動していない状況では、移動後の仮想ストレージ３２０にはサーバ２００のローカルストレージの記憶領域が割り当てられたままである。このため、移動後のコンテナ３１０は仮想ストレージ３２０のデータを利用するためにサーバ２００にアクセスしなければならず、データ利用のためのレイテンシが増大化してしまう。また、仮想ストレージ２２０のデータはその後、サーバ２００のローカルストレージからサーバ３００のローカルストレージへ順次転送されるが、未転送のデータについてはコンテナ３１０がサーバ２００にアクセスして利用しなければならないことに変わりない。
【００４９】
このように、ＤＡＳタイプの仮想ストレージを用いた場合には、仮想ストレージ内のデータについてのサーバ間の転送が、サーバ間でのコンテナの高速移動に追従できない。コンテナを短時間に移動できても、移動直後の期間ではコンテナが利用するデータのローカリティが悪化し、コンテナによるデータのＩ／Ｏ処理性能が低下する。その結果、コンテナ上で動作するアプリケーションの処理性能が低下してしまうという問題がある。
【００５０】
また、コンテナの移動直後におけるデータローカリティを維持するための他の方法としては、例えば、コンテナの移動前に、移動先のサーバのローカルストレージに対して仮想ストレージのデータをすべて転送しておく方法が考えられる。しかし、この方法では、コンテナの移動が必要と判定された時刻から実際にコンテナを移動できるようになるまでの時間が長くなるという問題がある。また、コンテナに対応する仮想ストレージでは必ずしも記憶されたすべてのデータがコンテナの移動後に必要とならない場合もある。事前に仮想ストレージの全データを転送する方法では、コンテナの移動後に利用されない無駄なデータが転送されてしまう可能性があり、その分だけ処理効率が低くなるという問題もある。
【００５１】
図５は、第２の実施の形態におけるコンテナ移動処理について説明するための図である。
本実施の形態において、管理サーバ１００は、コンテナ２１０の移動が必要と判定し、かつ移動先のサーバ（ここではサーバ３００）を決定すると、移動元のサーバ２００の動作モードをＩ／Ｏ転送モードに遷移させる。Ｉ／Ｏ転送モードに遷移したサーバ２００は、コンテナ２１０から仮想ストレージ２２０に対するＩ／Ｏ要求が発行されると、そのＩ／Ｏ処理を実行する（ステップＳ１１）。これとともに、サーバ２００は、Ｉ／Ｏ処理対象のデータをサーバ３００のローカルストレージに転送する（ステップＳ１２）。これにより、サーバ２００のローカルストレージにおけるＩ／Ｏ処理対象のデータが、サーバ３００のローカルストレージにもコピーされる。
【００５２】
また、サーバ２００から管理サーバ１００に対して、コンテナ２１０の移動タイミングを判定するための性能影響度Ｒ１が定期的に送信される（ステップＳ１３）。性能影響度Ｒ１は、移動後のコンテナ３１０の性能に与える影響の大きさを示す指標であり、サーバ２００からサーバ３００へのデータの転送状況に基づいて算出される。移動後のコンテナ３１０の性能を大きく低下させる可能性があるほど、性能影響度Ｒ１の値は大きくなる。
【００５３】
管理サーバ１００は、サーバ２００から送信される性能影響度Ｒ１に基づいて、コンテナ配置制御を実行する（ステップＳ１４）。コンテナ配置制御では、管理サーバ１００は、性能影響度Ｒ１から、移動後のコンテナ３１０の性能に与える影響がある程度小さくなったと判定した場合に、サーバ２００上のコンテナ２１０を停止させるとともに、サーバ３００上のコンテナ３１０を起動させる。
【００５４】
移動前のコンテナ２１０から仮想ストレージ２２０に対してＩ／Ｏ処理が要求されたデータは、移動後のコンテナ３１０に利用される可能性が高いと推定されるので、転送の必要性が高い。このため上記処理では、このように転送の必要性が高いデータが、コンテナ２１０の移動前にサーバ３００へ優先的に転送される。これにより、仮想ストレージ２２０の全データをサーバ３００に転送しなくても、移動後のコンテナ３１０がサーバ３００のローカルストレージのデータにアクセスする確率を高めることができる。
【００５５】
また、性能影響度Ｒ１に基づき、移動直後における移動後のコンテナ３１０の性能低下幅が一定範囲に収まると推定されるほどデータの転送が進んだ場合に、コンテナ移動が実行される。これにより、コンテナ２１０の移動が必要と判定されてから実際に移動が行われるまでの時間を最小限に留めることができる。また、仮想ストレージ２２０に記憶されたデータのうち無駄なデータが転送される可能性を低減できる。
【００５６】
なお、コンテナの移動先のサーバは、コンテナ移動の実際の実行タイミングにおいて、その時点での処理負荷が低いなどの移動先として適切なサーバに決定されることが望ましい。コンテナ移動の前に仮想ストレージ２２０の全データを事前に転送するという前述の方法では、データ転送に時間がかかることから、データ転送が完了した時点でコンテナの移動先のサーバを決定することが望ましい。この場合、コンテナの移動先候補となるサーバが複数存在する場合に、移動先候補となるすべてのサーバに対して仮想ストレージのデータを事前に転送しなければならない。このため、移動先候補のサーバが決定されてそのサーバにコンテナが移動された際に、他のサーバに転送されたデータが無駄になってしまうという問題もある。
【００５７】
図５に示した本実施の形態の方法によれば、コンテナ２１０の移動が必要と判定した後、実際にコンテナ移動を実行するタイミングで移動先を決定したとしても、移動先の決定までの間に移動先候補の全サーバに転送するデータ量を抑制できる。一方、コンテナ２１０の移動が必要と判定したタイミングで移動先も決定した場合でも、実際にコンテナ移動を実行するまでの時間差を最小限に留めることができる。このため、移動先の決定からコンテナ移動の実行までの移動先サーバの動作状況（負荷状況など）の変動が小さくなる。その結果、上記時間差によって処理負荷が大きくなった不適切なサーバにコンテナ２１０が移動される可能性を低減できる。
【００５８】
なお、図５において、サーバ２００，３００、管理サーバ１００は、それぞれ図１に示した情報処理装置１０，２０、管理装置３０の一例である。また、ストレージ２０４ａ〜２０４ｄは図１に示したストレージ１１の一例であり、コンテナ２１０は図１に示したプロセス実行部１２の一例である。さらに、ストレージ３０４ａ〜３０４ｄは図１に示したストレージ２１の一例であり、コンテナ３１０は図１に示したプロセス実行部２２の一例である。
【００５９】
次に、本実施の形態に係る情報処理システムでのコンテナ移動処理について、詳細に説明する。
まず、図６は、サーバが備える処理機能の構成例を示すブロック図である。なお、図６ではサーバ２００について例示するが、他のサーバ３００，４００，・・・もサーバ２００と同様の処理機能を備えている。
【００６０】
サーバ２００は、記憶部２３０、コンテナ管理部２４０、Ｉ／Ｏ制御部２５０、データ転送処理部２６０およびデータ無効化部２７０を備える。記憶部２３０は、例えばメモリ２０２など、サーバ２００が備える記憶装置の記憶領域によって実現される。コンテナ管理部２４０、Ｉ／Ｏ制御部２５０、データ転送処理部２６０およびデータ無効化部２７０の処理は、プロセッサ２０１が所定のプログラムを実行することで実現される。
【００６１】
記憶部２３０には、転送管理情報２３１が記憶される。転送管理情報２３１は、Ｉ／Ｏ転送モードにおいて、コンテナによって利用される仮想ストレージ内のデータが移動先のサーバに転送される際の転送状況を示す情報である。例えば、転送管理情報２３１は、仮想ストレージ内のブロックごとのビットを備えるビットマップである。この場合、ブロックのデータが転送されると、ビットマップ上の対応するビットが「０」から「１」に変更される。
【００６２】
コンテナ管理部２４０は、サーバ２００におけるコンテナの動作を管理するコンテナエンジンである。以下の説明では、図５と同様に、コンテナ管理部２４０の管理の下でコンテナ２１０が動作するものとする。また、コンテナ２１０が利用するデータは、ストレージ２０４ａ〜２０４ｄによって実現される仮想ストレージ２２０に格納されるものとする。そして、転送管理情報２３１は、仮想ストレージ２２０に記憶されたデータの転送状況を示すものとする。
【００６３】
また、コンテナ管理部２４０は、通常モード（Ｉ／Ｏ転送モードでない動作モード）において、サーバ２００の性能情報を収集して管理サーバ１００に送信する機能を備える。性能情報は、コンテナ移動の要否や最適な移動先のサーバを判定するために利用される情報である。性能情報としては、例えば、サーバ２００のプロセッサ２０１やメモリ２０２の使用率、サーバ２００で動作しているコンテナごとのプロセッサ２０１やメモリ２０２の使用率などが収集される。
【００６４】
さらに、コンテナ管理部２４０は、Ｉ／Ｏ転送モードにおいて起動される性能影響度送信部２４１を備える。性能影響度送信部２４１は、転送管理情報２３１に基づいて性能影響度を算出し、管理サーバ１００に送信する。
【００６５】
Ｉ／Ｏ制御部２５０は、コンテナからの要求に応じた仮想ストレージに対するＩ／Ｏ処理を制御する。コンテナ２１０が動作している状態では、Ｉ／Ｏ制御部２５０は、コンテナ２１０からの要求に応じた仮想ストレージ２２０に対するＩ／Ｏ処理を制御する。また、Ｉ／Ｏ制御部２５０は、Ｉ／Ｏ転送モードにおいて起動される転送制御部２５１を備える。Ｉ／Ｏ制御部２５０は、コンテナから仮想ストレージに対するＩ／Ｏ要求を受け付けたとき、仮想ストレージに対するＩ／Ｏ処理を実行するとともに、Ｉ／Ｏ処理の対象のデータをコンテナの移動先サーバのローカルストレージに転送する。
【００６６】
データ転送処理部２６０は、他のサーバ３００，４００，・・・との間での、仮想ストレージのデータの転送を実行する。
データ無効化部２７０は、コンテナの移動が実行された場合に、移動前のコンテナに対応する仮想ストレージのデータのうち、移動先サーバのローカルストレージに転送済みのデータを無効化する。
【００６７】
図７は、管理サーバが備える処理機能の構成例を示すブロック図である。管理サーバ１００は、記憶部１１０、サーバ性能監視部１２０およびコンテナ配置制御部１３０を備える。記憶部１１０は、管理サーバ１００が備える記憶装置の記憶領域によって実現される。サーバ性能監視部１２０およびコンテナ配置制御部１３０の処理は、管理サーバ１００が備えるプロセッサが所定のプログラムを実行することで実現される。
【００６８】
記憶部１１０には、コンテナ配置制御部１３０の判定処理で参照される情報として、配置変更条件１１１と性能影響度条件１１２とが記憶される。配置変更条件１１１は、コンテナの配置変更に関する性能情報の条件を示す。配置変更条件１１１には、コンテナの移動を判定するための移動条件と、コンテナの移動先サーバを決定するための移動先条件とが含まれる。性能影響度条件１１２は、コンテナ移動を実行すると判定するための性能影響度の条件を示す。
【００６９】
サーバ性能監視部１２０は、通常モードにおいて、サーバ２００，３００，４００，・・・から性能情報を収集することで、サーバ２００，３００，４００，・・・のそれぞれや動作するコンテナごとの性能を監視する。また、サーバ性能監視部１２０は、サーバをＩ／Ｏ転送モードに遷移させたときに起動される性能影響度収集部１２１を備える。性能影響度収集部１２１は、コンテナの移動元サーバから性能影響度を収集する。
【００７０】
コンテナ配置制御部１３０は、サーバ２００，３００，４００，・・・のそれぞれにおけるコンテナの配置制御を実行する。コンテナ配置制御部１３０は、配置決定部１３１とイベント発行部１３２を備える。
【００７１】
配置決定部１３１は、サーバ２００，３００，４００，・・・のそれぞれが通常モードであるときに、サーバ２００，３００，４００，・・・から収集された性能情報を基に、移動すべきコンテナの有無を判定する。また、コンテナ配置制御部１３０は、移動すべきコンテナが存在する場合、そのコンテナが動作するサーバ以外のサーバからの性能情報に基づいて、コンテナの移動先サーバを決定する。さらに、配置決定部１３１は、いずれかのサーバがＩ／Ｏ転送モードであるときに、そのサーバから収集された性能影響度に基づいて、コンテナ移動を実行するタイミングを決定する。
【００７２】
イベント発行部１３２は、サーバ２００，３００，４００，・・・に対して各種の処理を実行させるためのイベントを発行する。このようなイベントとしては、コンテナの停止や起動、動作モードの変更などがある。
【００７３】
次に、サーバ２００上のコンテナ２１０をサーバ３００へ移動させる場合の処理について、図８〜図１１を用いて説明する。
図８は、移動対象のコンテナが検出される前の状態を示す図である。図８の状態では、サーバ２００，３００，４００，・・・は通常モードで動作している。これらのうちコンテナが起動しているサーバでは、コンテナがＩ／Ｏ制御部を介して仮想ストレージにアクセスしている。例えばサーバ２００では、コンテナ２１０がＩ／Ｏ制御部２５０を介して仮想ストレージ２２０にアクセスしており、これによってローカルストレージ（ストレージ２０４ａ〜２０４ｄ）のＩ／Ｏ処理が行われている。また、サーバ間では仮想ストレージのデータの転送が行われていない。
【００７４】
この状態では、サーバ２００，３００，４００，・・・のそれぞれのコンテナ管理部は、性能情報を定期的に収集して管理サーバ１００に送信する。性能情報としては、例えば、各サーバのプロセッサやメモリの使用率、動作しているコンテナによるプロセッサやメモリの使用率が送信される。
【００７５】
管理サーバ１００のサーバ性能監視部１２０は、サーバ２００，３００，４００，・・・から性能情報を受信する。コンテナ配置制御部１３０の配置決定部１３１は、サーバ性能監視部１２０が受信した性能情報のうち、コンテナごとの性能情報を取得して、性能情報が、配置変更条件１１１に含まれる移動条件を満たしているコンテナがあるかを判定する。移動条件としては、例えば、コンテナによるプロセッサの使用率が所定の第１の値より低い、または、コンテナによるメモリの使用率が所定の第２の値より低い、などの条件が適用される。
【００７６】
そして、性能情報が移動条件を満たすコンテナが現れた場合、そのコンテナが移動対象として検出されて、次の図９のような処理が行われる。また、このとき、配置決定部１３１は、移動対象のコンテナが動作するサーバ以外のサーバからの性能条件をサーバ性能監視部１２０から取得し、各サーバの性能条件を配置変更条件１１１に含まれる移動先条件と比較する。移動先条件としては、例えば、サーバにおけるプロセッサの使用率が所定の第３の値より低い、または、サーバにおけるメモリの使用率が所定の第４の値より低い、などの条件が適用される。そして、配置決定部１３１は、性能条件が移動先条件を満たすサーバを、移動対象のコンテナが移動される移動先のサーバとして決定する。
【００７７】
図９は、移動対象のコンテナが検出された状態を示す図である。図９では例として、サーバ２００のコンテナ２１０が移動対象として検出されたものとする。
管理サーバ１００の配置決定部１３１は、移動対象としてコンテナ２１０を検出すると、イベント発行部１３２を起動させる。イベント発行部１３２は、サーバ性能監視部１２０の性能影響度収集部１２１を起動させる。また、イベント発行部１３２は、コンテナ移動元のサーバ２００に対し、コンテナ管理部２４０の性能影響度送信部２４１と、Ｉ／Ｏ制御部２５０の転送制御部２５１とを起動させるように要求する。これにより、イベント発行部１３２は、サーバ２００を通常モードからＩ／Ｏ転送モードに遷移させる。
【００７８】
また、配置決定部１３１は、サーバ２００のローカルストレージに格納されている、コンテナ２１０に対応するコンテナイメージを、サーバ３００のローカルストレージにコピーする。
【００７９】
図１０は、サーバがＩ／Ｏ転送モードに遷移した後の状態を示す図である。コンテナ移動元のサーバ２００は、性能影響度送信部２４１と転送制御部２５１を起動することで、Ｉ／Ｏ転送モードに遷移する。
【００８０】
転送制御部２５１は、コンテナ２１０から仮想ストレージ２２０に対するＩ／Ｏ要求を受け付けると、仮想ストレージ２２０に対するＩ／Ｏ処理を実行する。これとともに、転送制御部２５１は、Ｉ／Ｏ処理の対象のデータを、データ転送処理部２６０を介してサーバ３００に転送して、サーバ３００のローカルストレージに格納するように要求する。サーバ３００のデータ転送処理部３６０は、サーバ２００から転送されたデータをサーバ３００のローカルストレージに格納する。図１０の例では、サーバ３００における格納先のローカルストレージとして、ストレージ３０４ａ〜３０４ｄが使用されている。
【００８１】
例えば、転送制御部２５１は、コンテナ２１０から仮想ストレージ２２０に対するデータの書き込み要求を受け付けると、データを仮想ストレージ２２０に書き込む。これにより、データはサーバ２００のローカルストレージ（ストレージ２０４ａ〜２０４ｄ）に書き込まれる。これとともに、転送制御部２５１は、書き込みが要求されたデータをサーバ３００に転送して、サーバ３００のローカルストレージにも書き込む。また、転送制御部２５１はこのとき、仮想ストレージ２２０における書き込み先領域のデータについてデータ転送が完了したことを示す情報を、転送管理情報２３１に記録する。転送管理情報２３１がビットマップである場合、書き込み先領域に対応するビットが「１」に更新される。
【００８２】
また、例えば、転送制御部２５１は、コンテナ２１０から仮想ストレージ２２０からのデータの読み出し要求を受け付けると、読み出しが要求されたデータを仮想ストレージ２２０から読み出し、コンテナ２１０に受け渡す。このとき、データはローカルストレージ（ストレージ２０４ａ〜２０４ｄ）から読み出される。これとともに、転送制御部２５１は、仮想ストレージ２２０から読み出したデータをサーバ３００に転送して、サーバ３００のローカルストレージにも書き込む。また、転送制御部２５１はこのとき、仮想ストレージ２２０における読み出し元領域のデータについてデータ転送が完了したことを示す情報を、転送管理情報２３１に記録する。転送管理情報２３１がビットマップである場合、読み出し元領域に対応するビットが「１」に更新される。
【００８３】
一方、性能影響度送信部２４１は、転送制御部２５１による仮想ストレージ２２０上のデータの転送状況を示す情報を、定期的に取得する。具体的には、性能影響度送信部２４１は、このような情報として転送管理情報２３１を読み込む。性能影響度送信部２４１は、転送管理情報２３１に基づいて性能影響度を算出し、管理サーバ１００に送信する。
【００８４】
ここで、仮想ストレージ２２０のデータのうち未転送のデータ量が多いほど、その時点でコンテナ２１０を移動したと仮定した場合に移動後のコンテナ３１０（図５参照）の性能が低くなる可能性が高い。これは、未転送のデータ量が多いほど、移動後のコンテナ３１０が仮想ストレージ３２０（図５参照）のデータを読み出そうとしたときに、そのデータを移動先のサーバ３００のローカルストレージから取得できない可能性が高いからである。
【００８５】
そこで、本実施の形態では例として、仮想ストレージ２２０の総データ量に対する未転送データのデータ量の割合が性能影響度として算出される。例えば、転送管理情報２３１がビットマップであり、ビットマップ全体のビット数をＢ＿ａｌｌ、ビット値が「１」であるビット（すなわち、転送済みを示すビット）のビット数をＢ＿ｔとする。このとき、性能影響度は次の式（１）によって算出される。
性能影響度＝１−Ｂ＿ｔ／Ｂ＿ａｌｌ      ・・・（１）
このようにして、コンテナ移動元のサーバ２００から管理サーバ１００に対して、性能影響度が定期的に送信される。管理サーバ１００では、性能影響度収集部１２１が、サーバ２００から送信された性能影響度を受信する。配置決定部１３１は、性能影響度収集部１２１が受信した性能影響度を取得し、この性能影響度を性能影響度条件１１２と比較する。そして、配置決定部１３１は、性能影響度が性能影響度条件１１２を満たしたとき、コンテナ２１０の移動を実行すると判定する。例えば、性能影響度条件１１２が「２０％未満」である場合、配置決定部１３１は、性能影響度が２０％未満になったときにコンテナ２１０の移動を実行すると判定する。
【００８６】
図１１は、コンテナ移動を実行すると判定された後の状態を示す図である。配置決定部１３１は、コンテナ２１０の移動を実行すると判定すると、イベント発行部１３２を再度起動させる。
【００８７】
イベント発行部１３２は、コンテナ移動元のサーバ２００の性能影響度送信部２４１と転送制御部２５１を停止させる。これにより、サーバ２００はＩ／Ｏ転送モードから通常モードに遷移する。また、イベント発行部１３２は、サーバ２００のコンテナ管理部２４０に対してコンテナ２１０の停止を要求するとともに、サーバ３００のコンテナ管理部３４０に対して、コンテナ２１０に対応するコンテナ３１０の起動を要求する。これにより、コンテナ２１０の動作が停止する。また、コンテナ３１０は、サーバ３００のローカルストレージにコピーされていた、コンテナ２１０に対応するコンテナイメージを用いて起動される。これにより、コンテナ移動が完了する。
【００８８】
コンテナ３１０は、サーバ３００のＩ／Ｏ制御部３５０を介して、コンテナ３１０に対応付けられた仮想ストレージ３２０（図５参照）にアクセスする。このとき、読み出しを要求したデータがサーバ３００のローカルストレージ（ストレージ３０４ａ〜３０４ｄ）に格納されている場合には、そのデータをローカルストレージから取得できる。なお、実際には、例えば、コンテナ３１０の起動が要求された時点で、転送管理情報２３１がサーバ２００からサーバ３００にコピーされる。Ｉ／Ｏ制御部３５０は、コピーされた転送管理情報２３１に基づいて、コンテナ３１０から読み出しが要求されたデータがサーバ３００のローカルストレージに格納されているかを判定できる。
【００８９】
また、管理サーバ１００のイベント発行部１３２は、サーバ２００のデータ無効化部２７０を起動する。データ無効化部２７０は、転送管理情報２３１に基づいて、ローカルストレージ（ストレージ２０４ａ〜２０４ｄ）に格納された仮想ストレージ２２０のデータのうち、サーバ３００に転送済みのデータを無効化する。
【００９０】
この後、必要に応じて、ローカルストレージ（ストレージ２０４ａ〜２０４ｄ）に格納された仮想ストレージ２２０のデータのうち、サーバ３００に対して未転送のデータがサーバ３００に転送されて、サーバ３００のローカルストレージ（ストレージ３０４ａ〜３０４ｄ）に格納される。
【００９１】
以上の図８〜図１１に示した処理によれば、コンテナ２１０が移動対象として検出された後、実際にコンテナ移動が実行されるまでの間に、移動後のコンテナ３１０が利用する可能性の高いデータがサーバ３００のローカルストレージに転送される。これにより、サーバ２００の仮想ストレージ２２０における一部のデータをコンテナ移動前に転送しておくだけで、移動後のコンテナ３１０がサーバ３００のローカルストレージのデータにアクセスする確率を高めることができる。その結果、コンテナ移動直後におけるコンテナ３１０の処理性能の低下を抑制できる。
【００９２】
次に、管理サーバ１００およびサーバ２００，３００，４００，・・・の処理について、フローチャートを用いて説明する。
まず、図１２は、コンテナの配置制御に関する処理例を示すフローチャートである。
【００９３】
まず、通常モードにおけるサーバ２００，３００，４００，・・・の性能情報送信処理について説明する。ここでは例としてサーバ２００での処理を示すが、他のサーバ３００，４００，・・・でも同様の処理が実行される。なお、通常モードでは、コンテナが動作しているサーバでは、コンテナがＩ／Ｏ制御部を介して、ローカルストレージを用いた仮想ストレージに対するアクセスを行っている。例えば、サーバ２００でコンテナ２１０が動作している場合、コンテナ２１０はＩ／Ｏ制御部２５０を介して、ストレージ２０４ａ〜２０４ｄを用いた仮想ストレージ２２０に対するアクセスを行っている。
【００９４】
サーバ２００のコンテナ管理部２４０は、サーバ２００に関する性能情報を収集する（ステップＳ２１）。性能情報としては、例えば、サーバ２００のプロセッサ２０１やメモリ２０２の使用率、動作しているコンテナによるプロセッサ２０１やメモリ２０２の使用率が収集される。コンテナ管理部２４０は、収集された性能情報を管理サーバ１００に送信する（ステップＳ２２）。そして、コンテナ管理部２４０は、一定時間後にステップＳ２１の処理を再度実行する。すなわち、ステップＳ２１、Ｓ２２の処理が一定時間間隔で実行される。
【００９５】
次に、Ｉ／Ｏ転送モードにおけるサーバ２００，３００，４００，・・・の性能影響度送信処理について説明する。ここでは例として、サーバ２００がＩ／Ｏ転送モードに遷移したものとする。管理サーバ１００のイベント発行部１３２からの要求に応じてコンテナ管理部２４０の性能影響度送信部２４１が起動すると、サーバ２００はＩ／Ｏ転送モードに遷移する。このとき、Ｉ／Ｏ制御部２５０の転送制御部２５１も起動される。サーバ２００のコンテナ２１０が移動対象として検出されたとすると、転送制御部２５１は、コンテナ２１０から仮想ストレージ２２０に対するＩ／Ｏ要求を受け付けたとき、要求に応じたＩ／Ｏ処理を実行するとともに、Ｉ／Ｏ要求対象のデータをコンテナ２１０の移動先サーバのローカルストレージに転送する。なお、Ｉ／Ｏ転送モードでの転送制御部２５１の処理については、後の図１３において説明する。
【００９６】
サーバ２００の性能影響度送信部２４１は、コンテナ２１０に関する性能影響度を収集する（ステップＳ３１）。具体的には、性能影響度送信部２４１は、転送制御部２５１による仮想ストレージ２２０上のデータの転送状況を示す情報として、転送管理情報２３１を記憶部２３０から読み込み、転送管理情報２３１に基づき、前述の式（１）を用いて性能影響度を算出する。性能影響度送信部２４１は、算出された性能影響度を管理サーバ１００に送信する（ステップＳ３２）。そして、性能影響度送信部２４１は、一定時間後にステップＳ３１の処理を再度実行する。すなわち、ステップＳ３１，Ｓ３２の処理が一定時間間隔で実行される。
【００９７】
次に、管理サーバ１００のコンテナ配置制御処理について説明する。サーバ２００，３００，４００，・・・のいずれも通常モードで動作しているとき、管理サーバ１００のサーバ性能監視部１２０は、サーバ２００，３００，４００，・・・のそれぞれから性能情報を収集する（ステップＳ４１）。このとき、前述のステップＳ２２においてサーバ２００，３００，４００，・・・のそれぞれから送信された性能情報を、サーバ性能監視部１２０が受信する。
【００９８】
コンテナ配置制御部１３０の配置決定部１３１は、サーバ性能監視部１２０によって収集された性能情報を取得し、性能情報が、配置変更条件１１１に含まれる移動条件を満たしているコンテナがあるかを判定する（ステップＳ４２）。移動条件としては、例えば、コンテナによるプロセッサの使用率が所定の第１の値を超えている、または、コンテナによるメモリの使用率が所定の第２の値を超えている、などの条件が適用される。
【００９９】
性能条件が移動条件を満たすコンテナが存在しない場合（ステップＳ４２：Ｎｏ）、一定時間後にサーバ性能監視部１２０によってステップＳ４１の処理が実行される。すなわち、性能条件が移動条件を満たすコンテナが検出されない間、ステップＳ４１，Ｓ４２の処理が一定時間間隔で実行される。
【０１００】
一方、性能条件が移動条件を満たすコンテナが存在する場合（ステップＳ４２：Ｙｅｓ）、配置決定部１３１は、そのコンテナを移動対象として検出する。また、配置決定部１３１は、移動対象のコンテナが動作するサーバ以外のサーバから収集された性能情報の中から各サーバの性能情報を取得し、配置変更条件１１１に含まれる移動先条件と比較する。移動先条件としては、例えば、サーバにおけるプロセッサの使用率が所定の第３の値より低い、または、サーバにおけるメモリの使用率が所定の第４の値より低い、などの条件が適用される。そして、配置決定部１３１は、性能条件が移動先条件を満たすサーバを、移動対象のコンテナが移動される移動先のサーバとして決定する（ステップＳ４３）。
【０１０１】
以下、サーバ２００のコンテナ２１０が移動対象として検出され、サーバ３００がコンテナ移動先として決定されたとする。配置決定部１３１は、イベント発行部１３２を起動させる。イベント発行部１３２は、サーバ性能監視部１２０の性能影響度収集部１２１を起動させる。また、イベント発行部１３２は、コンテナ移動元のサーバ２００に対し、コンテナ管理部２４０の性能影響度送信部２４１と、Ｉ／Ｏ制御部２５０の転送制御部２５１とを起動させるように要求する。これにより、イベント発行部１３２は、サーバ２００を通常モードからＩ／Ｏ転送モードに遷移させる（ステップＳ４４）。
【０１０２】
また、配置決定部１３１は、サーバ２００のローカルストレージに格納されている、コンテナ２１０に対応するコンテナイメージを、コンテナ移動先のサーバ３００のローカルストレージにコピーする。さらに、配置決定部１３１は、仮想ストレージ２２０の論理アドレスと物理アドレスとの対応関係を示すアドレス変換情報を、サーバ３００に転送する。これによりサーバ３００では、移動後のコンテナ３１０が利用する仮想ストレージ３２０（図５参照）が設定される。
【０１０３】
次に、性能影響度収集部１２１は、コンテナ移動元のサーバ２００から性能影響度を取得する（ステップＳ４５）。このとき、前述のステップＳ３２においてサーバ２００から送信された性能影響度を性能影響度収集部１２１が受信する。配置決定部１３１は、性能影響度収集部１２１によって取得された性能影響度を性能影響度条件１１２と比較する（ステップＳ４６）。例えば、性能影響度が２０％未満か否かが判定される。
【０１０４】
性能影響度が性能影響度条件１１２を満たさない場合（ステップＳ４６：Ｎｏ）、一定時間後に性能影響度収集部１２１によってステップＳ４５の処理が実行される。すなわち、性能影響度が性能影響度条件１１２を満たさない間、ステップＳ４５，Ｓ４６の処理が一定時間間隔で実行される。
【０１０５】
そして、性能影響度が性能影響度条件１１２を満たした場合（ステップＳ４６：Ｙｅｓ）、配置決定部１３１はコンテナ２１０の移動を実行すると判定する。この場合、配置決定部１３１はイベント発行部１３２を再度起動させて、コンテナ移動を実行させる（ステップＳ４７）。イベント発行部１３２は、コンテナ移動元のサーバ２００の性能影響度送信部２４１と転送制御部２５１を停止させる。これにより、サーバ２００はＩ／Ｏ転送モードから通常モードに遷移する（ステップＳ４８）。また、イベント発行部１３２は、サーバ２００のコンテナ管理部２４０に対してコンテナ２１０の停止を要求するとともに、サーバ３００のコンテナ管理部３４０に対して、コンテナ２１０に対応するコンテナ３１０の起動を要求する。これにより、コンテナ２１０の動作が停止する。また、コンテナ３１０は、サーバ３００のローカルストレージにコピーされていた、コンテナ２１０に対応するコンテナイメージを用いて起動される。これによりコンテナ移動が完了し、処理がステップＳ４１に戻される。
【０１０６】
図１３は、Ｉ／Ｏ転送モードのサーバにおけるＩ／Ｏ処理例を示すフローチャートである。ここでは例として、サーバ２００で動作するコンテナ２１０が移動対象として検出されたものとする。コンテナ２１０から出力された、仮想ストレージ２２０に対するＩ／Ｏ要求をＩ／Ｏ制御部２５０の転送制御部２５１が受け付けると、図１３の処理が実行される。
【０１０７】
［ステップＳ５１］転送制御部２５１は、Ｉ／Ｏ要求が書き込み要求の場合、ステップＳ５２，Ｓ５３の処理を実行し、Ｉ／Ｏ要求が読み出し要求の場合、ステップＳ５４の処理を実行する。
【０１０８】
［ステップＳ５２］転送制御部２５１は、書き込みが要求されたデータを仮想ストレージ２２０に書き込む。このとき、転送制御部２５１は、データをサーバ２００のローカルストレージに書き込む（ローカル書き込み）。
【０１０９】
［ステップＳ５３］転送制御部２５１は、書き込みが要求されたデータをコンテナの移動先サーバに転送して、そのサーバのローカルストレージにデータを書き込むように要求する（リモート書き込み）。
【０１１０】
［ステップＳ５４］転送制御部２５１は、転送管理情報２３１を参照し、仮想ストレージ２２０における読み出し元領域のデータがコンテナの移動先サーバに転送済みかを判定する。転送制御部２５１は、データが未転送の場合にはステップＳ５５，Ｓ５６の処理を実行し、データが転送済みの場合にはステップＳ５８の処理を実行する。例えば、転送管理情報２３１がビットマップの場合、読み出し元領域に対応するビットが「０」の場合にはステップＳ５５，Ｓ５６の処理が実行され、「１」の場合にはステップＳ５８の処理が実行される。
【０１１１】
［ステップＳ５５］転送制御部２５１は、読み出しが要求されたデータを仮想ストレージ２２０（実際にはローカルストレージ）から読み出し、コンテナ２１０に受け渡す。
［ステップＳ５６］転送制御部２５１は、読み出しが要求されたデータをコンテナの移動先サーバに転送して、そのサーバのローカルストレージにデータを書き込むように要求する（リモート書き込み）。
【０１１２】
なお、ステップＳ５３またはステップＳ５６の処理が実行されると、コンテナの移動先サーバでは次のような処理が実行される。移動先サーバは、転送されたデータを移動先サーバのローカルストレージに書き込む。また、移動先サーバは、移動後のコンテナ（例えば図５のコンテナ３１０）が利用する仮想ストレージ（例えば図５の仮想ストレージ３２０）の論理アドレスと物理アドレスとの対応関係を示すアドレス変換情報を更新する。このアドレス変換情報は、図１２のステップＳ４４においてサーバ２００から送信された、仮想ストレージ２２０の論理アドレスと物理アドレスとの対応関係を示す情報である。移動先サーバは、アドレス変換情報内の論理アドレスのうち書き込み先（ステップＳ５１：Ｙｅｓの場合）または読み出し元（ステップＳ５４：Ｎｏの場合）として指定された論理アドレスに対応する物理アドレスを、移動先サーバのローカルストレージにおけるデータの書き込み先のアドレスに更新する。これにより、移動後のコンテナが仮想ストレージ上の当該論理アドレスにアクセスする際に、ローカルストレージ上のデータにアクセスできるようになる。
【０１１３】
［ステップＳ５７］ステップＳ５２，Ｓ５３、またはステップＳ５５，Ｓ５６の処理が完了すると、ステップＳ５７の処理が実行される。転送制御部２５１は、仮想ストレージ２２０における書き込み先領域（ステップＳ５２が実行された場合）、または読み出し元領域（ステップＳ５４が実行された場合）のデータについてデータ転送が完了したことを示す情報を、転送管理情報２３１に記録する。例えば、転送管理情報２３１がビットマップの場合、書き込み先領域または読み出し領域に対応するビットが「０」から「１」に更新される。書き込み先領域に対応するビットがすでに「１」の場合には、ビットの値がそのまま維持される。
【０１１４】
［ステップＳ５８］転送制御部２５１は、読み出しが要求されたデータを仮想ストレージ２２０（実際にはローカルストレージ）から読み出し、コンテナ２１０に受け渡す。
図１４は、コンテナが移設されたサーバにおけるＩ／Ｏ処理例を示すフローチャートである。図１４では例として、サーバ３００にコンテナ３１０が移動された場合について説明する。コンテナ３１０から出力された、仮想ストレージ３２０に対するＩ／Ｏ要求をＩ／Ｏ制御部３５０が受け付けると、図１４の処理が実行される。
【０１１５】
なお、ここでは例として、コンテナ３１０の起動がサーバ２００から要求された時点でサーバ２００からコピーされた転送管理情報２３１を用いて、Ｉ／Ｏ処理が制御されるものとする。転送管理情報２３１は、サーバ３００の記憶部に記憶されている。また、図１４の処理と並行して、サーバ２００のローカルストレージにおける未転送データがサーバ３００に順次転送され、未転送データの転送（サーバ３００のローカルストレージへの格納）が完了すると転送管理情報２３１は更新される。
【０１１６】
［ステップＳ６１］Ｉ／Ｏ制御部３５０は、Ｉ／Ｏ要求が書き込み要求の場合、ステップＳ６２の処理を実行し、Ｉ／Ｏ要求が読み出し要求の場合、ステップＳ６４の処理を実行する。
【０１１７】
［ステップＳ６２］Ｉ／Ｏ制御部３５０は、書き込みが要求されたデータを仮想ストレージ３２０に書き込む。このとき、Ｉ／Ｏ制御部３５０は、データをサーバ３００のローカルストレージに書き込む（ローカル書き込み）。
【０１１８】
［ステップＳ６３］Ｉ／Ｏ制御部３５０は、転送管理情報２３１において、書き込み先領域に関する情報が転送未完了を示す場合には、この情報を転送完了を示すように更新する。例えば、転送管理情報２３１がビットマップの場合、書き込み先領域に対応するビットが「０」から「１」に更新される。書き込み先領域に対応するビットがすでに「１」の場合には、ビットの値がそのまま維持される。
【０１１９】
［ステップＳ６４］Ｉ／Ｏ制御部３５０は、転送管理情報２３１を参照し、仮想ストレージ３２０における読み出し元領域のデータがサーバ２００のローカルストレージから転送済みかを判定する。Ｉ／Ｏ制御部３５０は、データが未転送の場合にはステップＳ６５の処理を実行し、データが転送済みの場合にはステップＳ６６の処理を実行する。例えば、転送管理情報２３１がビットマップの場合、読み出し元領域に対応するビットが「１」の場合にはステップＳ６５の処理が実行され、「０」の場合にはステップＳ６６の処理が実行される。
【０１２０】
［ステップＳ６５］Ｉ／Ｏ制御部３５０は、読み出しが要求されたデータを、サーバ２００を介してサーバ２００のローカルストレージから取得し（リモート読み出し）、コンテナ３１０に受け渡す。
【０１２１】
［ステップＳ６６］Ｉ／Ｏ制御部３５０は、読み出しが要求されたデータをサーバ３００のローカルストレージから読み出し（ローカル読み出し）、コンテナ３１０に受け渡す。
【０１２２】
以上の図１４に示すように、移動されたコンテナ３１０は、読み出し対象のデータがサーバ３００のローカルストレージに転送済みの場合、リモート読み出しを行うことなく、データをローカルストレージから読み出すことができる。管理サーバ１００によるコンテナ配置制御により、コンテナ３１０がアクセスする可能性が高いデータはサーバ３００のローカルストレージに転送済みである可能性が高くなっている。このため、コンテナ３１０の起動後においてリモート読み出しが行われる可能性は低くなり、その結果として、コンテナ移動に伴うコンテナ３１０の処理性能の低下が抑制される。
【０１２３】
〔第３の実施の形態〕
以下、上記の第２の実施の形態における処理の一部を変形した第３の実施の形態について説明する。
【０１２４】
上記の第２の実施の形態では、移動前のコンテナ２１０のアクセス先である仮想ストレージ２２０のデータ量のうち、移動先のサーバ３００に対する未転送のデータ量の割合が、性能影響度として算出された。この方法は、ローカルストレージを用いた仮想ストレージへのアクセス頻度が高く、コンテナを移動した後でも、移動前と同じデータを頻繁にアクセスするようなコンテナの配置変更を行う際に有効である。これは、移動後のサーバ３００上のローカルストレージに対するデータ転送済みの領域が大きいほど、移動後のコンテナ３１０が仮想ストレージ３２０のデータについてリモートアクセスでなくローカルアクセスする確率が高くなるからである。これにより、移動直後におけるコンテナ３１０の性能影響度（性能を低下させる度合い）を抑制できる。
【０１２５】
一方、コンテナによっては、移動後に移動前と同じデータにアクセスする頻度が低い場合もあり得る。例えば、仮想ストレージにおけるアクセス先領域のバラツキが大きい場合や、仮想ストレージに対するアクセス頻度自体が低い場合などが考えられる。また、移動後のコンテナは、書き込みを要求する場合には更新前のデータにアクセスする必要はなく、移動先サーバのローカルストレージに書き込めばよい。このため、書き込み要求が多い場合も、移動後に移動前と同じデータにアクセスする頻度が低くなるケースと言える。
【０１２６】
このようなケースでは、例えば、コンテナ移動を実行するための判定閾値（性能影響度条件１１２の閾値）を低くして対処する方法が考えられる。あるいは、性能影響度の計算方法自体を変える方法も考えられる。以下、第３の実施の形態として、後者の方法を用いた場合について説明する。
【０１２７】
本実施の形態では、Ｉ／Ｏ転送モードに遷移したサーバは、一定期間（性能影響度の収集周期）ごとに、仮想ストレージの各領域に対する初回の読み出しが要求された回数をカウントする。そして、サーバは、カウント値に基づいて１秒当たりの初回読み出し回数Ｒ＿ｒｉｏｐｓを算出し、性能影響度を次の式（２）によって算出する。
性能影響度＝Ｒ＿ｉｏｐｓ／Ｖ＿ｉｏｐｓ      ・・・（２）
式（２）において、Ｖ＿ｉｏｐｓは、コンテナによる仮想ストレージに対するＩ／Ｏ処理能力を示すＩＯＰＳ（Input／Output per second）である。例えば、Ｖ＿ｉｏｐｓは、コンテナについてのこのようなＩＯＰＳの保証値として与えられる。Ｖ＿ｉｏｐｓは、コンテナおよびそのアクセス先の仮想ストレージの設定情報（容量、物理ストレージの構成などの情報を含む）に基づいて算出されてもよいし、ユーザ操作によって設定されてもよい。
【０１２８】
管理サーバ１００の配置決定部１３１は、式（２）を用いて算出された性能影響度をサーバから取得して、性能影響度を所定の性能影響度条件１１２と比較することによってコンテナ移動を実行するかを判定する。性能影響度が、性能影響度条件１１２として設定された閾値未満であれば、コンテナ移動を実行すると判定される。なお、使用される性能影響度条件１１２は、性能影響度の算出方法の違いに応じて設定されるものであり、第２の実施の形態で用いられる値とは異なる場合がある。
【０１２９】
単位時間における初回読み出し回数が小さいほど、移動後のコンテナが仮想ストレージからの読み出しを要求する確率が低くなるので、移動後のコンテナがリモートアクセスする確率も低くなる。特に、単位時間における読み出し回数全体でなく初回読み出し回数を用いることで、仮想ストレージにおける同じ領域からの重複読み出し回数がカウントされなくなり、仮想ストレージの領域のうち読み出しが１回でも発生した領域の数がカウントされる。このため、仮にコンテナ移動前に移動先サーバにデータ転送しなかった場合に、コンテナ移動後において移動後のコンテナがデータ読み出しのために移動元サーバ内のデータにリモートでアクセスしなければならなくなる回数を正確に計数できる。このような回数が少なければ、コンテナ移動を実行しても移動後のコンテナの性能低下は小さいと判断できる。したがって、式（２）を用いて算出された性能影響度を用いてコンテナ移動の実行タイミングを判定することで、移動後のコンテナの性能低下を最小限に抑制できるようになる。
【０１３０】
図１５は、第３の実施の形態におけるサーバのＩ／Ｏ処理例を示すフローチャートである。この図１５は、Ｉ／Ｏ転送モードに遷移したコンテナ移動元サーバにおけるＩ／Ｏ処理例を示しており、図１３と同じ内容の処理には同じステップ番号を付して示している。以下、図１３と同様、コンテナ２１０が移動対象として検出され、サーバ２００がコンテナ移動元サーバであるものとする。また、記憶部２３０には、カウント値Ｃ＿ｒｉｏｐｓが記憶されるものとする。
【０１３１】
図１５では、ステップＳ５５，Ｓ５６とステップＳ５７との間でステップＳ７１の処理が実行される点で、図１３とは異なる。ステップＳ７１において、転送制御部２５１は、カウント値Ｃ＿ｒｉｏｐｓをカウントアップする。このステップＳ７１の処理により、仮想ストレージ２２０の領域のうち、書き込み後または更新後における初回のデータ読み出しが実行された領域の回数がカウントされる。
【０１３２】
図１６は、第３の実施の形態におけるコンテナ移動元サーバの性能影響度送信処理例を示すフローチャートである。この図１６では、図１２と同じ内容の処理には同じステップ番号を付して示している。また、図１２と同様に、サーバ２００のコンテナ２１０が移動対象として検出され、サーバ２００がＩ／Ｏ転送モードに遷移したものとする。
【０１３３】
図１６では、ステップＳ３１の代わりにステップＳ３１ａ，Ｓ３１ｂが実行され、さらにステップＳ３２の後にステップＳ３２ａが実行される点で図１２とは異なる。すなわち、サーバ２００の性能影響度送信部２４１は、記憶部２３０からカウント値Ｃ＿ｒｉｏｐｓを取得する。また、性能影響度送信部２４１は、記憶部２３０にあらかじめ記憶されたＶ＿ｉｏｐｓを取得する（ステップＳ３１ａ）。性能影響度送信部２４１は、カウント値Ｃ＿ｒｉｏｐｓを性能影響度の取得周期で除算することで、１秒当たりの初回読み出し回数Ｒ＿ｒｉｏｐｓを算出し、前述の式（２）を用いて性能影響度を算出する（ステップＳ３１ｂ）。性能影響度送信部２４１は、算出された性能影響度を管理サーバ１００に送信し（ステップＳ３２）、記憶部のカウント値Ｃ＿ｒｉｏｐｓを「０」にリセットする（ステップＳ３２ａ）。そして、性能影響度送信部２４１は、一定時間後にステップＳ３１ａの処理を再度実行する。すなわち、ステップＳ３１ａ〜Ｓ３２ａの処理が一定時間間隔で実行される。
【０１３４】
以上の第３の実施の形態の処理によれば、第２の実施の形態と同様に、コンテナ２１０が移動対象として検出された後、実際にコンテナ移動が実行されるまでの間に、移動後のコンテナ３１０が利用する可能性の高いデータがサーバ３００のローカルストレージに転送される。これにより、サーバ２００の仮想ストレージ２２０における一部のデータをコンテナ移動前に転送しておくだけで、移動後のコンテナ３１０がサーバ３００のローカルストレージのデータにアクセスする確率を高めることができる。その結果、コンテナ移動直後におけるコンテナ３１０の処理性能の低下を抑制できる。そして、このような効果を、移動後に移動前と同じデータにアクセスする頻度が比較的低いコンテナについても得ることができる。
【０１３５】
＜変形例＞
第２、第３の実施の形態の変形例として、式（１）に基づく性能影響度と式（２）に基づく性能影響度の両方を用いてコンテナ配置制御が行われてもよい。例えば、管理サーバ１００の記憶部１１０には、式（１）に対応する性能影響度条件と式（２）に対応する性能影響度条件とが記憶される。性能影響度収集部１２１は、図１２のステップＳ４５において、式（１）に基づく性能影響度と式（２）に基づく性能影響度の両方をコンテナの移動元サーバから取得する。そして、配置決定部１３１は、図１２のステップＳ４６において次のような処理を実行する。
【０１３６】
配置決定部１３１は、まず、式（２）に基づく性能影響度が式（２）に対応する性能影響度条件を満たすかを判定する。条件を満たす場合、処理はステップＳ４７に進められる。これにより、コンテナの移動後に移動前と同じデータにアクセスする頻度が低い可能性が高く、移動後のコンテナの性能低下が小さいと判定される場合に、コンテナ移動を実行することができる。
【０１３７】
一方、上記の条件を満たさない場合、配置決定部１３１は、式（１）に基づく性能影響度が式（１）に対応する性能影響度条件を満たすかを判定する。条件を満たさない場合、処理はステップＳ４５に戻る。一方、条件を満たす場合、処理はステップＳ４７に進められる。これにより、コンテナの移動後に移動前と同じデータにアクセスする頻度が比較的高いと考えられる場合に、アクセスされる可能性の高いデータがある程度転送されてからコンテナ移動を実行することができる。
【０１３８】
以上説明した第２、第３の実施の形態およびその変形例では、サーバ間におけるコンテナの配置制御について説明した。しかし、このような配置制御を、コンテナの代わりにハイパバイザ型仮想マシンをサーバ間（実マシン間）で移動させる場合に適用することも可能である。
【０１３９】
なお、上記の各実施の形態に示した装置（例えば、情報処理装置１０，２０、管理装置３０、管理サーバ１００、サーバ２００，３００，４００，・・・）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、磁気テープなどがある。光ディスクには、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disc）、ブルーレイディスク（Blu-ray Disc：ＢＤ、登録商標）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１４０】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１４１】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【０１４２】
以上の各実施の形態に関し、さらに以下の付記を開示する。
（付記１）  第１のストレージが接続された第１の情報処理装置と、第２のストレージが接続された第２の情報処理装置と、管理装置とを有する情報処理システムであって、
前記第１の情報処理装置は、前記第１の情報処理装置で動作する仮想的なプロセス実行部が前記第１のストレージに対するＩ／Ｏ処理を実行したとき、Ｉ／Ｏ処理対象のデータを前記第１のストレージから前記第２の情報処理装置を介して前記第２のストレージにコピーするコピー処理を、前記プロセス実行部を前記第１の情報処理装置から前記第２の情報処理装置に移設する移設処理の前処理として実行し、
前記管理装置は、前記前処理の開始後における前記コピー処理を伴う前記プロセス実行部による前記第１のストレージに対するＩ／Ｏ処理の監視結果から算出される、移設後の前記プロセス実行部によるＩ／Ｏ処理の性能影響度に基づいて、前記移設処理の実行タイミングを決定し、前記実行タイミングにおいて前記移設処理の実行指示を前記第１の情報処理装置および前記第２の情報処理装置に出力する、
情報処理システム。
【０１４３】
（付記２）  前記管理装置は、前記第１のストレージに格納されたデータのうち、書き込み後または更新後に読み出されていないデータに対する、前記第１の情報処理装置で動作する前記プロセス実行部による単位時間当たりの読み出し回数を、前記性能影響度として用いて前記実行タイミングを決定する、
付記１記載の情報処理システム。
【０１４４】
（付記３）  前記管理装置は、さらに、前記第１の情報処理装置で動作する前記プロセス実行部による前記第１のストレージに対するＩ／Ｏ処理の実行に応じた、前記第１のストレージから前記第２のストレージへのデータのコピー状況を示す情報を、前記性能影響度として用いて前記実行タイミングを決定する、
付記２記載の情報処理システム。
【０１４５】
（付記４）  前記管理装置は、前記第１のストレージに格納されたデータ量に対する、前記第２のストレージにコピーされていないデータ量の割合を、前記コピー状況を示す情報として用いる、
付記３記載の情報処理システム。
【０１４６】
（付記５）  前記前処理の開始時刻は、前記管理装置が、前記第２の情報処理装置を含む複数の情報処理装置のそれぞれの動作状況に基づいて、前記プロセス実行部の移設先を前記第２の情報処理装置に決定した時刻である、
付記１乃至４のいずれか１つに記載の情報処理システム。
【０１４７】
（付記６）  前記プロセス実行部は、コンテナ仮想化技術によって生成されるコンテナである、
付記１乃至５のいずれか１つに記載の情報処理システム。
【０１４８】
（付記７）  第１のストレージが接続された第１の情報処理装置において動作する仮想的なプロセス実行部を、第２のストレージが接続された第２の情報処理装置に移設する移設処理を実行するための移設条件を記憶する記憶部と、
前記第１の情報処理装置で動作する前記プロセス実行部が前記第１のストレージに対するＩ／Ｏ処理を実行したとき、Ｉ／Ｏ処理対象のデータを前記第１のストレージから前記第２の情報処理装置を介して前記第２のストレージにコピーするコピー処理を、前記移設処理の前処理として前記第１の情報処理装置に実行させ、前記前処理の開始後における前記コピー処理を伴う前記プロセス実行部による前記第１のストレージに対するＩ／Ｏ処理の監視結果から算出される、移設後の前記プロセス実行部によるＩ／Ｏ処理の性能影響度に基づいて、前記移設処理の実行タイミングを決定し、前記実行タイミングにおいて前記移設処理の実行指示を前記第１の情報処理装置および前記第２の情報処理装置に出力する処理部と、
を有する管理装置。
【０１４９】
（付記８）  前記実行タイミングの決定では、前記第１のストレージに格納されたデータのうち、書き込み後または更新後に読み出されていないデータに対する、前記第１の情報処理装置で動作する前記プロセス実行部による単位時間当たりの読み出し回数を、前記性能影響度として用いて前記実行タイミングを決定する、
付記７記載の管理装置。
【０１５０】
（付記９）  前記実行タイミングの決定では、さらに、前記第１の情報処理装置で動作する前記プロセス実行部による前記第１のストレージに対するＩ／Ｏ処理の実行に応じた、前記第１のストレージから前記第２のストレージへのデータのコピー状況を示す情報を、前記性能影響度として用いて前記実行タイミングを決定する、
付記８記載の管理装置。
【０１５１】
（付記１０）  前記実行タイミングの決定では、前記第１のストレージに格納されたデータ量に対する、前記第２のストレージにコピーされていないデータ量の割合を、前記コピー状況を示す情報として用いる、
付記９記載の管理装置。
【０１５２】
（付記１１）  前記前処理の開始時刻は、前記処理部が、前記第２の情報処理装置を含む複数の情報処理装置のそれぞれの動作状況に基づいて、前記プロセス実行部の移設先を前記第２の情報処理装置に決定した時刻である、
付記７乃至１０のいずれか１つに記載の管理装置。
【０１５３】
（付記１２）  第１のストレージが接続された第１の情報処理装置と、第２のストレージが接続された第２の情報処理装置とに接続されたコンピュータに、
前記第１の情報処理装置で動作する仮想的なプロセス実行部が前記第１のストレージに対するＩ／Ｏ処理を実行したとき、Ｉ／Ｏ処理対象のデータを前記第１のストレージから前記第２の情報処理装置を介して前記第２のストレージにコピーするコピー処理を、前記プロセス実行部を前記第１の情報処理装置から前記第２の情報処理装置に移設する移設処理の前処理として前記第１の情報処理装置に実行させ、
前記前処理の開始後における前記コピー処理を伴う前記プロセス実行部による前記第１のストレージに対するＩ／Ｏ処理の監視結果から算出される、移設後の前記プロセス実行部によるＩ／Ｏ処理の性能影響度に基づいて、前記移設処理の実行タイミングを決定し、前記実行タイミングにおいて前記移設処理の実行指示を前記第１の情報処理装置および前記第２の情報処理装置に出力する、
処理を実行させる管理プログラム。
【符号の説明】
【０１５４】
１０，２０  情報処理装置
１１，２１  ストレージ
１２，２２  プロセス実行部
３０  管理装置
３１  記憶部
３１ａ  移設条件
３２  処理部
【図１】
2020113031.tif 000003
【図２】
2020113031.tif 000004
【図３】
2020113031.tif 000005
【図４】
2020113031.tif 000006
【図５】
2020113031.tif 000007
【図６】
2020113031.tif 000008
【図７】
2020113031.tif 000009
【図８】
2020113031.tif 000010
【図９】
2020113031.tif 000011
【図１０】
2020113031.tif 000012
【図１１】
2020113031.tif 000013
【図１２】
2020113031.tif 000014
【図１３】
2020113031.tif 000015
【図１４】
2020113031.tif 000016
【図１５】
2020113031.tif 000017
【図１６】
2020113031.tif 000018