(57)【特許請求の範囲】
【請求項１】
コンピュータに、
対象計算機に対し転送可能回数が異なる複数のパケットを送信し、
前記複数のパケットに対する応答に基づき、前記コンピュータから前記対象計算機への経路を示す経路情報を生成し、
前記経路情報により特定される、前記対象計算機までの経路に存在する複数の計算機それぞれについて、物理計算機または仮想計算機の計算機種別を示す種別情報を取得し、
前記対象計算機が仮想計算機である場合に、前記種別情報および前記経路情報に基づき、前記コンピュータから前記対象計算機までの経路上で前記対象計算機に最も近い物理計算機を、前記対象計算機が実行されている物理計算機として特定する、
処理を実行させる管理プログラム。
【請求項２】
前記送信では、前記転送可能回数が１ずつ相違する前記複数のパケットを送信する、
請求項１記載の管理プログラム。
【請求項３】
前記生成では、転送可能回数がｎ（ｎは１以上の整数）の第１のパケットに対する応答を返した第１応答計算機までの経路の先に、前記第１応答計算機から、転送可能回数がｎ＋１の第２のパケットに対する応答を返した第２応答計算機への経路を接続し、前記コンピュータから前記第２応答計算機への経路とする、
請求項２記載の管理プログラム。
【請求項４】
コンピュータに、
通信開始を要求する、転送可能回数が異なる複数のパケットを、対象計算機に対して送信し、
前記複数のパケットに対する応答に基づき、前記コンピュータから前記対象計算機への経路を示す経路情報を生成し、
前記経路情報により特定される、前記対象計算機までの経路に存在する複数の計算機それぞれについて、物理計算機または仮想計算機の計算機種別を示す種別情報を取得し、
前記対象計算機が仮想計算機である場合に、前記種別情報および前記経路情報に基づき、前記対象計算機が実行されている、物理計算機を特定する、
処理を実行させる管理プログラム。
【請求項５】
コンピュータが、
対象計算機に対し転送可能回数が異なる複数のパケットを送信し、
前記複数のパケットに対する応答に基づき、前記コンピュータから前記対象計算機への経路を示す経路情報を生成し、
前記経路情報により特定される、前記対象計算機までの経路に存在する複数の計算機それぞれについて、物理計算機または仮想計算機の計算機種別を示す種別情報を取得し、
前記対象計算機が仮想計算機である場合に、前記種別情報および前記経路情報に基づき、前記コンピュータから前記対象計算機までの経路上で前記対象計算機に最も近い物理計算機を、前記対象計算機が実行されている物理計算機として特定する、
管理方法。
【請求項６】
管理装置であって、
対象計算機に対し転送可能回数が異なる複数のパケットを送信し、前記複数のパケットに対する応答に基づき、前記管理装置から前記対象計算機への経路を示す経路情報を生成し、前記経路情報により特定される、前記対象計算機までの経路に存在する複数の計算機それぞれについて、物理計算機または仮想計算機の計算機種別を示す種別情報を取得し、前記対象計算機が仮想計算機である場合に、前記種別情報および前記経路情報に基づき、前記管理装置から前記対象計算機までの経路上で前記対象計算機に最も近い物理計算機を、前記対象計算機が実行されている物理計算機として特定する演算部、
を有する管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、管理プログラム、管理方法、管理装置に関する。
【背景技術】
【０００２】
データセンターなどの大規模なＩＣＴ（Information and Communication Technology）システムでは、ソフトウェアベンダから購入したソフトウェアについては、許容されたライセンス分のサーバでのみ、そのソフトウェアの実行が許可される。ライセンスには、例えばソフトウェアの実行を許可するＣＰＵ（Central Processing Unit）コア数が指定されている。この場合、ライセンス管理を行う管理サーバが、システム内のソフトウェアを実行しようとするサーバのＣＰＵコア数をディスカバリ技術により取得し、ライセンスに示される条件が満たされるかどうかを判断する。ライセンスの条件が満たされた場合にのみ、そのサーバによるソフトウェアの実行が許容される。
【０００３】
ディスカバリ技術によってサーバのＣＰＵコア数を取得するには、システムのネットワーク構成を把握しておくことが重要である。最近のＩＣＴシステムでは、様々な仮想化技術が用いられているため、例えば、仮想ＬＡＮ（Local Area Network）が設定されているネットワークにおいて仮想ＬＡＮトポロジを把握する技術が考えられている。また物理マシンと仮想マシンとを区別して表したネットワークトポロジを生成する技術もある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−３２８３１８号公報
【特許文献２】特開２０１４−４５４３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ライセンス管理対象のソフトウェアが仮想計算機で実行されている場合、例えばその仮想計算機を実行している物理計算機のＣＰＵコア数により、ライセンスの条件が満たされるかどうかが判断される。また、仮想計算機はライブマイグレーションによって、複数の物理計算機上を移動可能である。そのため、特定の仮想計算機がどの物理計算機で実行されているかについて、最新の情報を容易に取得できることが重要となる。
【０００６】
仮想計算機がどの物理計算機で実行されているのかに関する情報を管理する仮想化ソフトウェアには様々なベンダの製品が存在し、仮想化ソフトウェアの種別ごとに、情報取得のためのインタフェースが異なる。そのため、仮想化ソフトウェアの仕様変更や、新たな仮想化ソフトウェアの導入などがあると、適切な情報を取得できないことがある。また外部からの情報取得用のインタフェースが仮想化ソフトウェアで用意されていない場合、仮想計算機がどの物理計算機で実行されているのかを特定できない。このように、仮想化ソフトウェアからの情報取得を前提とする技術では、仮想計算機を実行している物理計算機を特定できない場合があり、仮想化を伴うネットワークについてのトポロジの把握が難しい。
【０００７】
１つの側面では、本件は、仮想計算機を実行している物理計算機を特定できるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
１つの案では、コンピュータに、対象計算機に対し転送可能回数が異なる複数の探索パケットを送信し、複数の探索パケットに対する応答に基づき、コンピュータから対象計算機への経路を示す経路情報を生成し、経路情報により特定される、対象計算機までの経路に存在する複数の計算機それぞれについて、物理計算機または仮想計算機の計算機種別を示す種別情報を取得し、対象計算機が仮想計算機である場合に、種別情報および経路情報に基づき、対象計算機が実行されている、物理計算機を特定する、処理を実行させる管理プログラムが提供される。
【発明の効果】
【０００９】
１態様によれば、仮想計算機を実行している物理計算機を特定することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態に係るシステムの一例を示す図である。
【図２】第２の実施の形態のシステム構成例を示す図である。
【図３】本実施の形態に用いる管理サーバのハードウェアの一構成例を示す図である。
【図４】管理サーバの機能を示すブロック図である。
【図５】運用フローに応じたシステム管理手順の一例を示す図である。
【図６】実行許否判定処理の詳細手順の一例を示すフローチャートである。
【図７】仮想サーバを実行している物理サーバの判定例を示す図である。
【図８】仮想サーバが多段構成となっている場合の例である。
【図９】ＩＣＭＰメッセージの種類を示す図である。
【図１０】エコー要求に対する応答状況の一例を示す図である。
【図１１】Ｓｙｎパケットを利用したＩＰアドレスの取得例を示す図である。
【図１２】ノード情報の収集と関係性情報の組み立て例を示す図である。
【図１３】結線情報を用いたＣＩ間の関係を示す図である。
【図１４】リレーションの設定例を示す図である。
【図１５】ノード情報の一例を示す図である。
【図１６】結線情報の一例を示す図である。
【図１７】物理サーバ情報取得処理の手順の一例を示す図である。
【図１８】ノード情報取得処理の手順の一例を示すフローチャートである。
【図１９】関係性情報組み立て処理の手順の一例を示すフローチャートである。
【図２０】物理サーバ特定処理の手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
図１は、第１の実施の形態に係るシステムの一例を示す図である。管理装置１０は、ネットワークを介して複数の計算機１〜３に接続されている。また管理装置１０は、演算部１１と記憶部１２とを有する。図１の例では、計算機１，２は物理計算機であり、計算機３は、計算機２が有する仮想化ソフトウェア２ａで実現されている仮想計算機である。各装置には、ネットワーク上に識別するための装置名が付与されている。管理装置１０の装置名は「Ｎ０」、計算機１の装置名は「Ｎ１」、計算機２の装置名は「Ｎ２」、計算機３の装置名は「Ｎ３」である。
【００１２】
仮想計算機である計算機３は、例えばライブマイグレーションにより、物理計算機間を移動可能である。そのため仮想計算機が、現在、どの物理計算機で実行されているのかを判断するのは容易ではない。そこで、第１の実施の形態では、管理装置１０の演算部１１による以下の処理により、仮想計算機である計算機３がどの物理計算機で実行されているのかを特定する。
【００１３】
まず、管理装置１０の演算部１１は、特定対象の計算機３に対し転送可能回数が異なる複数の探索パケット４，６，８を送信する（ステップＳ１，Ｓ２，Ｓ３）。例えば演算部１１は、計算機３を宛先として、転送可能回数が１ずつ相違する複数の探索パケット４，６，８を送信する。転送可能回数は、例えばＴＴＬ（Time to Live）の値を探索パケット４，６，８に設定することで指定できる。なお、探索パケット４，６，８としては、例えば通信開始を要求するパケット（Ｓｙｎパケット）を用いることができる。
【００１４】
探索パケット４，６，８に対して、各計算機１〜３から応答が返される。例えば演算部１１が、装置名「Ｎ３」の計算機３宛ての、ＴＴＬ値「１」の探索パケット４を送信する（ステップＳ１）と、その探索パケット４はまず計算機１に到達する。探索パケット４のＴＴＬ値は、計算機１において１だけ減算され「０」となる。ＴＴＬ値が「０」となった探索パケット４は、計算機１で破棄される（ステップＳ１１）。探索パケット４を破棄した計算機１は、管理装置１０に対してエラー応答５を送信する。
【００１５】
エラー応答５を受信した演算部１１は、探索パケット４が計算機３に到達していないことを認識し、装置名「Ｎ３」の計算機３宛ての、ＴＴＬ値「２」の探索パケット６を送信する（ステップＳ２）。すると、その探索パケット６はまず計算機１に到達する。探索パケット６のＴＴＬ値は、計算機１において１だけ減算され「１」となる。このとき、ＴＴＬ値が１以上であるため、計算機１は、探索パケット６を計算機２に転送する（ステップＳ１２）。計算機２において、探索パケット６のＴＴＬ値は、１だけ減算され「０」となる。ＴＴＬ値が「０」となった探索パケット６は、計算機２で破棄される（ステップＳ１３）。探索パケット６を破棄した計算機２は、管理装置１０に対してエラー応答７を送信する。
【００１６】
エラー応答７を受信した演算部１１は、探索パケット６が計算機３に到達していないことを認識し、装置名「Ｎ３」の計算機３宛ての、ＴＴＬ値「３」の探索パケット８を送信する（ステップＳ３）。すると、その探索パケット８はまず計算機１に到達する。探索パケット８のＴＴＬ値は、計算機１において１だけ減算され「２」となる。そして計算機１は、探索パケット８を計算機２に転送する（ステップＳ１４）。計算機２において、探索パケット８のＴＴＬ値は、１だけ減算され「１」となる。そして計算機２は、探索パケット８を計算機３に転送する（ステップＳ１５）。自身宛の探索パケット８を受信した計算機３は、その探索パケット８を取得（ステップＳ１６）し、探索パケット８に応じた正常応答９を、管理装置１０に対して送信する。
【００１７】
演算部１１は、複数の計算機１〜３それぞれからの探索パケット４，６，８に対する応答（エラー応答５，７、正常応答９）に基づき、管理装置１０から計算機３への経路を示す経路情報１２ａを生成する（ステップＳ４）。例えば演算部１１は、ＴＴＬ値がｎ（ｎは１以上の整数）の探索パケットに対する応答を返した計算機までの経路の先に、計算機から、転送可能回数がｎ＋１の探索パケットに対する応答を返した計算機への経路を接続し、その計算機への経路とする。具体的には、例えば演算部１１は、ＴＴＬ「１」の探索パケット４に対して計算機１から応答が返されたことで、管理装置１０に隣接して計算機１が接続されていることを示す経路情報１２ａを生成する。次に演算部１１は、ＴＴＬ「２」の探索パケット６に対して計算機２から応答が返されたことで、計算機１の先に計算機２が接続されていることを示す経路情報１２ａを生成する。さらに演算部１１は、ＴＴＬ「３」の探索パケット８に対して計算機３から応答が返されたことで、計算機２の先に計算機３が接続されていることを示す経路情報１２ａを生成する。例えば演算部１１は、生成した経路情報１２ａを、記憶部１２に格納する。
【００１８】
探索パケット４，６，８に対する応答を受信した演算部１１は、経路情報１２ａにより特定される、計算機３までの経路に存在する複数の計算機１〜３それぞれが物理計算機なのか仮想計算機なのかの種別を示す種別情報を取得する。例えば演算部１１は、計算機１〜３にアクセスし、種別情報を取得する。
【００１９】
そして演算部１１は、特定対象の計算機３が仮想計算機である場合に、種別情報および経路情報１２ａに基づき、種別が仮想計算機である計算機３を実行している、種別が物理計算機である計算機２を特定する。例えば仮想計算機による外部との通信は、その仮想計算機を実行している物理計算機のインタフェースを介して行われる。そこで、演算部１１は、管理装置１０から計算機３までの経路上で計算機３に最も近い、種別が物理計算機の計算機２を、計算機３を実行しているものとして特定する。
【００２０】
このような管理装置１０によれば、仮想化ソフトウェア２ａに依存せずに、仮想計算機がどの物理計算機で実行されているのかを容易に特定できる。例えばライブマイグレーションによって、仮想計算機を実行する物理計算機が変更されても、その仮想計算機のアドレス（例えばＩＰ（Internet Protocol）アドレス）が分かっていれば、その仮想計算機宛ての探索パケットを送信できる。探索パケットが送信できれば、経路情報の生成、および種別情報取得が可能である。その結果、仮想計算機を実行している物理計算機を特定できる。
【００２１】
また、管理対象として予め指定されている計算機を宛先として、転送可能回数が１ずつ相違する複数の探索パケットを送信することで、管理装置１０と管理対象の計算機との間の経路上のすべての計算機から、探索パケットに対する応答を確実に得ることができる。応答には、ＩＰアドレスなどの応答元の識別情報が含まれている。そのため、各計算機から確実に応答を受信することで、管理対象の計算機までの経路を確実に生成することができる。
【００２２】
なお、探索パケット４，６，８には、セキュリティ上の問題で受け取りが拒否される可能性の低い種別のパケットを用いることが望ましい。例えば、探索パケット４，６，８として、通信開始を要求するパケット（Ｓｙｎパケット）を用いることで、経路情報を、より確実に生成できるようになる。
【００２３】
なお、演算部１１は、例えば管理装置１０が有するプロセッサにより実現することができる。また、記憶部１２は、例えば管理装置１０が有するメモリにより実現することができる。
【００２４】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、ネットワークを介した運用操作を管理対象のサーバに実行する際に、そのサーバがライセンスの条件を満たしているか否かを判断するものである。例えばライセンスは、実行している物理サーバのＣＰＵコア数の総量により、実行できるサーバ数に制限を掛ける場合がある。しかし、ディスカバリ技術により仮想計算機から取得できる情報は、ハイパーバイザなどの仮想化ソフトウェアが仮想計算機に割り当てたＣＰＵコア数の情報であり、仮想計算機を実行している物理計算機のＣＰＵコア数の情報ではない。そのためライセンス対象のサーバが仮想サーバの場合、従来のディスカバリ技術を用いたのでは、正しいＣＰＵコア数を得ることができない。そこで、第２の実施の形態では、管理対象が仮想サーバの場合に、その仮想サーバを実行している物理サーバを確実に特定し、その物理サーバのＣＰＵコア数を取得できるようにする。
【００２５】
図２は、第２の実施の形態のシステム構成例を示す図である。ネットワーク２０には、複数の物理サーバ３１，３２，・・・が接続されている。物理サーバ３１，３２，・・・は、ネットワーク２０内のルータ４１，４２，・・・を介して接続されている。
【００２６】
またネットワーク２０には、管理サーバ１００が接続されている。管理サーバ１００は、システム全体を管理する。例えば管理サーバ１００は、物理サーバ３１，３２，・・・で実行するソフトウェアのライセンスを管理する。ライセンス管理では、例えばライセンス対象のソフトウェアを実行するサーバ（管理対象サーバ）が使用するＣＰＵコア数が、そのソフトウェアのライセンスで許容されている範囲内となるように、管理対象サーバによるソフトウェアの実行を管理する。
【００２７】
図３は、本実施の形態に用いる管理サーバのハードウェアの一構成例を示す図である。管理サーバ１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１がプログラムを実行することで実現する機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００２８】
メモリ１０２は、管理サーバ１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００２９】
バス１０９に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００３０】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、管理サーバ１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置（ＳＳＤ：Solid State Drive）を使用することもできる。
【００３１】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００３２】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３３】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００３４】
機器接続インタフェース１０７は、管理サーバ１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００３５】
ネットワークインタフェース１０８は、ネットワーク２０に接続されている。ネットワークインタフェース１０８は、ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００３６】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお、第１の実施の形態に示した装置も、図３に示した管理サーバ１００と同様のハードウェアにより実現することができる。
【００３７】
管理サーバ１００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。管理サーバ１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、管理サーバ１００に実行させるプログラムをＨＤＤ１０３に格納しておくことができる。プロセッサ１０１は、ＨＤＤ１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。また管理サーバ１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ＨＤＤ１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００３８】
図４は、管理サーバの機能を示すブロック図である。管理サーバ１００は、構成管理データベース（ＣＭＤＢ：Configuration Management Database）１１０、運用フロー記憶部１２０、実行部１３０、および解析部１４０を有する。
【００３９】
ＣＭＤＢ１１０は、ＩＣＴシステムの構成に関する情報を管理するデータベースである。ＣＭＤＢ１１０には、例えば構成要素（ＣＩ：Configuration Item）ごとの情報と、ＣＩ間の関係を示す情報が含まれる。ＣＩには、ネットワーク上のノードのシステム情報、ノードのマシン種別（物理マシンなのか仮想マシンなのか）、ノードの関係性情報などが含まれる。マシン種別が物理マシンのサーバを物理サーバと呼び、マシン種別が仮想マシンのサーバを仮想サーバと呼ぶ。ＣＭＤＢ１１０としては、例えばメモリ１０２またはＨＤＤ１０３の記憶領域の一部が使用される。
【００４０】
運用フロー記憶部１２０は、複数の運用フロー１２１，１２２，１２３，・・・を記憶する。複数の運用フロー１２１，１２２，１２３，・・・には、システムを管理するための処理の手順が記述されている。また運用フロー１２１，１２２，１２３，・・・には、管理対象サーバのホスト名、ＩＰアドレス、ユーザＩＤおよびパスワード、通信プロトコルなどの情報が含まれる。運用フロー記憶部１２０としては、例えばメモリ１０２またはＨＤＤ１０３の記憶領域の一部が使用される。
【００４１】
実行部１３０は、運用フロー記憶部１２０に格納されている複数の運用フロー１２１，１２２，１２３，・・・に記述されている処理を実行する。実行部１３０は、処理の実行内容に応じて、適宜ＣＭＤＢ１１０を参照する。また実行部１３０は、特定のソフトウェアに関する運用管理に関する処理を実行する場合、そのソフトウェアに関して有しているライセンスの範囲内で処理を実行する。例えば実行部１３０は、処理対象のソフトウェアを実行している物理サーバの情報の取得を解析部１４０に依頼する。実行部１３０は、解析部１４０から取得した物理サーバの情報に基づいて、処理対象のソフトウェアを実行している物理サーバのＣＰＵコア数を認識し、ライセンスの範囲内でソフトウェアが実行されているかどうかを判断する。そして実行部１３０は、ライセンスの範囲内でソフトウェアが実行されていることが確認できたら、運用フローに従って、そのソフトウェアを処理対象とした処理を実行する。
【００４２】
解析部１４０は、ネットワーク２０のトポロジを解析する。例えば解析部１４０は、管理対象サーバまでの通信経路上のノード情報を取得し、ＣＭＤＢ１１０を更新する。また解析部１４０は、取得したノード情報に基づいて、管理対象サーバが、物理サーバなのか仮想サーバなのかを解析する。さらに解析部１４０は、仮想サーバが管理対象であれば、その仮想サーバがどの物理サーバで実行されているのかを解析する。
【００４３】
図４の例では、管理サーバ１００に対して、ルータ４１を介して物理サーバ３１が接続されている。また管理サーバ１００に対して、２台のルータ４１，４２を介して、物理サーバ３２が接続されている。ルータ４１のホスト名は「Ｒ１」、ルータ４２のホスト名は「Ｒ２」である。
【００４４】
物理サーバ３１，３２には、仮想化ソフトウェア３１ａ，３２ａが導入されている。物理サーバ３１は、仮想化ソフトウェア３１ａを用いて仮想サーバ５１，５２を実行している。物理サーバ３２は、仮想化ソフトウェア３２ａを用いて仮想サーバ５３，５４を実行している。仮想サーバ５１のホスト名は「Ｓ１」、仮想サーバ５２のホスト名は「Ｓ２」、物理サーバ３１のホスト名は「Ｓ３」、仮想サーバ５３のホスト名は「Ｓ４」、仮想サーバ５４のホスト名は「Ｓ５」、物理サーバ３２のホスト名は「Ｓ６」である。
【００４５】
物理サーバ３１は８コアのＣＰＵを搭載しており、物理サーバ３２は２コアのＣＰＵを搭載している。この場合、物理サーバ３１で実行されている仮想サーバ５１，５２に対する運用操作を行うには、仮想サーバ５１，５２のライセンスにおいて、例えばＣＰＵコア数「８」での実行が許容されていることが条件となる。また物理サーバ３２で実行されている仮想サーバ５３，５４に対する運用操作を行うには、仮想サーバ５３，５４のライセンスにおいて、例えばＣＰＵコア数「２」での実行が許容されていることが条件となる。
【００４６】
仮想サーバ５１〜５４に対する運用操作手順は、運用フロー１２１，１２２，１２３，・・・に記述されている。そして、管理サーバ１００により、複数の運用フロー１２１，１２２，１２３，・・・に基づいて、システムが管理される。なお、図４に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図４に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【００４７】
図５は、運用フローに応じたシステム管理手順の一例を示す図である。実行部１３０は、運用フロー１２１に記述されている運用操作部品１２１ａを読み込む。運用操作部品１２１ａには、例えば管理対象サーバを指定して、そのサーバに対して実行する処理内容が記述されている。実行部１３０は、運用操作部品１２１ａを読み込むと、実行許否判定処理を行う（ステップＳ２１）。実行許否判定処理では、例えば管理対象サーバにおいて、保守管理などのサービス提供を受けるためのライセンスがあるか否かが判断される。実行許否判定の判断に、例えば管理対象サーバで使用しているＣＰＵコア数が参照される場合、実行部１３０は、物理サーバ情報の取得を、解析部１４０に依頼する。実行部１３０は、解析部１４０を介して取得した物理サーバ情報に基づいて、管理対象サーバが使用しているＣＰＵコア数を認識し、ライセンスに示される条件が満たされるか否かを判断する。ライセンスに示される条件が満たされる場合、実行部１３０は、運用操作部品１２１ａの処理を実行可能と判断する。実行部１３０は、実行可能と判断した場合、運用操作部品１２１ａに記述されている処理を実行する（ステップＳ２２）。
【００４８】
解析部１４０は、実行部１３０からの物理サーバの情報取得の依頼に応じ、管理対象となるサーバの情報を取得する（ステップＳ３１）。このとき、管理対象が、例えば物理サーバ３１であれば、物理サーバ３１自身の情報が取得される。また管理対象が、例えば物理サーバ３１で実行されている仮想サーバであれば、仮想サーバの情報が取得される。解析部１４０は、取得した情報に基づいて、管理対象サーバが仮想サーバか物理サーバかを判断する（ステップＳ３２）。管理対象サーバが仮想サーバであれば、その仮想サーバまでのネットワークの経路上のノード情報を取得し、取得したノード情報に基づいて、ノード間の関係を示す関係情報を組み立てる（ステップＳ３３）。解析部１４０は、関係情報の組み立てが完了したかどうかを判断し、未完了であれば、ノードの情報の取得を繰り返す（ステップＳ３４）。関係情報の組み立てが完了すると、解析部１４０は、ノード間の関係情報に基づいて、管理対象の仮想サーバを実行している物理サーバを特定する（ステップＳ３５）。解析部１４０は、特定した物理サーバ情報をＣＭＤＢ１１０から取得し、実行部１３０に送信する（ステップＳ３６）。
【００４９】
図６は、実行許否判定処理の詳細手順の一例を示すフローチャートである。
［ステップＳ１０１］実行部１３０は、管理対象サーバのライセンス状態確認フラグがＯＮかＯＦＦかを判断する。ライセンス状態確認フラグは、運用フローにおいて管理対象として指定されたサーバが、サービス提供を受けるためのライセンスを有しているか否かを示すフラグである。ライセンス状態確認フラグは、例えば、サーバの識別子（ホスト名またはＩＰアドレス）に対応付けてメモリ１０２に保持される。管理対象サーバのライセンス状態確認フラグがＯＮであれば、実行許否判定処理が終了する。管理対象サーバのライセンス状態確認フラグがＯＦＦであれば、処理がステップＳ１０２に進められる。
【００５０】
［ステップＳ１０２］実行部１３０は、使用可能なライセンス数が０より大きいか否かを判断する。使用可能なライセンス数は、ライセンスにおいて使用が許容されているＣＰＵコア数から、ライセンス状態フラグがＯＮとなっている管理対象サーバが使用しているＣＰＵコア数を減算して得られる数値であり、予め変数に設定されている。使用可能なライセンス数が０より多ければ、処理がステップＳ１０３に進められる。使用可能なライセンス数が０以下であれば、管理対象サーバへの処理の実行は不許可と判断され、実行許否判定処理が終了する。
【００５１】
［ステップＳ１０３］実行部１３０は、解析部１４０に物理サーバ情報の取得を依頼する。その依頼に応じて、解析部１４０が、物理サーバ情報の取得処理を行う。物理サーバ情報所得処理の詳細は後述する。
【００５２】
［ステップＳ１０４］実行部１３０は、使用可能なライセンス数と取得した物理サーバ情報に示されるＣＰＵコア数とを比較する。
［ステップＳ１０５］実行部１３０は、使用可能なライセンス数がＣＰＵコア数以上かどうかを判断する。使用可能なライセンス数がＣＰＵコア数以上であれば、処理がステップＳ１０６に進められる。使用可能なライセンス数がＣＰＵコア数未満であれば、管理対象サーバへの処理の実行は不許可と判断され、実行許否判定処理が終了する。
【００５３】
［ステップＳ１０６］実行部１３０は、使用可能なライセンス数から、取得したＣＰＵコア数を減算する。
［ステップＳ１０７］実行部１３０は、減算結果により、使用可能なライセンス数を更新する。例えば実行部１３０は、使用可能なライセンス数を示す変数に、減算結果を設定する。
【００５４】
［ステップＳ１０８］実行部１３０は、管理対象サーバのライセンス状態確認フラグをＯＮにする。
このようにして、ライセンスにおいて許容される範囲内で、管理対象サーバに対する運用フローに応じた処理が実行される。管理対象サーバが仮想サーバであれば、解析部１４０によって、仮想サーバを実行している物理サーバが特定され、その物理サーバから、ＣＰＵコア数を含む物理サーバ情報が取得される。以下、仮想サーバを実行している物理サーバの特定処理について詳細に説明する。なお、仮想サーバを物理サーバで実行することは、仮想サーバを物理サーバに配備するとも呼ばれる。
【００５５】
解析部１４０は、管理対象である仮想サーバがどの物理サーバで実行されているかの判断を、すべてのネットワークトポロジマップを作成するような大規模な処理をせずに、管理サーバ１００から管理対象サーバまでの経路を組み立てることで実現する。例えば解析部１４０は、ＩＣＭＰ（Internet Control Message Protocol）における生存時間を示すパラメタであるＴＴＬの仕組みを利用して、管理サーバ１００から管理対象の仮想サーバまでのネットワーク経路を取得する。ＴＴＬは、パケットの有効期間を示す値である。ＴＴＬを含むパケットが伝送するとき、パケットを受信したノードにおいてＴＴＬの値が１だけ減らされる。ＴＴＬが０になった場合、そのパケットの宛先に到達していなくても、そのパケットはそれ以上転送されずに破棄される。
【００５６】
管理対象の仮想サーバまでのネットワーク経路を取得した解析部１４０は、ネットワーク経路上に存在するノード情報を収集し、ノード間の関係性情報を組み立てる。組み立てた関係性情報から、管理対象の仮想サーバがどの物理サーバで実行されているのかが把握できる。このような処理により、仮想サーバを実行している物理サーバを、仮想化ソフトウェアを介さずに判断できるようになる。
【００５７】
図７は、仮想サーバを実行している物理サーバの判定例を示す図である。管理サーバ１００は、仮想サーバ５１〜５４のＩＰアドレスは保持しているが、仮想サーバ５１〜５４までのネットワーク経路上にどんなノードが存在しているかに関する最新の情報は保持していない。そのため、管理対象の仮想サーバ５１〜５４がどの物理サーバ３１，３２に配備されているかということが分からない。
【００５８】
なお物理サーバ３１，３２それぞれで実行されている仮想化ソフトウェア３１ａ，３２ａに対して問い合わせれば、物理サーバ３１，３２で実行されている仮想サーバ５１〜５４の情報を取得できる。しかし、仮想化ソフトウェア３１ａ，３２ａは、異なるベンダの製品の場合、各ベンダが、外部から仮想化ソフトウェア３１ａ，３２ａに問い合わせるためのＩ／Ｆ（インタフェース）を個別に規定している。例えば、Ａ社製の仮想化ソフトウェア３１ａへの問い合わせはＡ社が規定したコマンドＩ／Ｆを用い、Ｂ社製の仮想化ソフトウェア３２ａへの問い合わせはＢ社が規定したコマンドＩ／Ｆを用いることとなる。このように仮想化ソフトウェアに問い合わせる場合、管理サーバ１００において仮想化ソフトウェア製品のベンダごとのＩ／Ｆに対応しなければならず、管理負担が大きい。しかも外部からの問い合わせ用のＩ／Ｆが用意されていない仮想化ソフトウェア製品があった場合、仮想サーバがどの物理サーバで実行されているのかを、仮想化ソフトウェアに問い合わせることはできない。
【００５９】
そこで、第２の実施の形態では、仮想化ソフトウェアに依存せずに、管理対象の仮想サーバについて、どの物理サーバで実行されているのかを特定できるようにする。例えば第２の実施の形態では、仮想サーバ５１〜５４とのネットワークを介した通信は、仮想サーバ５１〜５４を実行する物理サーバ３１，３２のインタフェースを介して行われるということを利用する。すなわち、仮想サーバ５１〜５４までの通信経路上で、仮想サーバ５１〜５４の前に存在する最も近い物理サーバが分かれば、それが仮想サーバ５１〜５４が配備されている物理サーバであると特定できる。
【００６０】
ここで、仮想サーバ５１〜５４それぞれを管理対象サーバとする処理に関する運用フローが、実行部１３０で実行されたものとする。この場合、実行部１３０から解析部１４０に対して、物理サーバ情報の取得が依頼される。物理サーバ情報の取得を依頼する際、実行部１３０は、運用フローから、管理対象サーバのＩＰアドレス、ユーザＩＤ、パスワード、通信プロトコルの情報を抽出し、解析部１４０に渡す。解析部１４０は、実行部１３０から受け取った情報をもとに管理対象サーバに接続し、管理対象サーバが仮想サーバか、物理サーバか、ルータかを判断できる。
【００６１】
管理対象サーバに接続する際、解析部１４０は、ＴＴＬを１から順にカウントアップしながら、各仮想サーバ５１〜５４に対して繰り返しエコー要求６１〜６７を送信する（ステップＳ４１）。エコー要求６１〜６７は、ＴＴＬで指定した値分しか転送されず、エコー要求６１〜６７を破棄したノードはエラーを応答する。そのため管理サーバ１００は、管理サーバ１００から各管理対象サーバまでの経路上のノード、および管理対象サーバから応答を受信できる。
【００６２】
これにより、解析部１４０は、仮想サーバ５１までの経路上に、ルータ４１と物理サーバ３１とがあることを認識できる。同様に、解析部１４０は、仮想サーバ５３宛てのＴＴＬの異なるエコー要求６４〜６７それぞれに対する応答により、仮想サーバ５３までの経路上に、２台のルータ４１，４２と物理サーバ３２とがあることを認識できる。
【００６３】
管理対象サーバまでの経路上のマシンを認識した解析部１４０は、そのマシンの詳細情報を収集する（ステップＳ４２）。解析部１４０が収集した詳細情報は、ＣＭＤＢ１１０に格納される。例えば応答を返した各ノードの名称、ＩＰアドレス、ＣＰＵコア数、マシン種別（仮想マシン（ＶＭ）なのか物理マシン（ＰＭ）なのか）の情報が、ＣＭＤＢ１１０に格納される。
【００６４】
解析部１４０は、エコー要求に対する応答に基づいて、ノード間の接続関係を示す関係性情報１５０を組み立てる（ステップＳ４３）。例えばエコー要求６１〜６３に対する応答に基づいて、ルータ４１の先に物理サーバ３１があり、物理サーバ３１の先に仮想サーバ５１があることを示す関係性情報１５０が組み立てられる。関係性情報１５０は、メモリ１０２またはＨＤＤ１０３に格納される。
【００６５】
このようにして、ＣＭＤＢ１１０が最新の状態に更新され、関係性情報１５０にノード間の接続関係が保持される。実行部１３０は、ＣＭＤＢ１１０に格納された情報により、管理対象サーバのマシン種別を判断し、仮想サーバであれば、関係性情報１５０に基づいて、管理対象の仮想サーバの前に存在する最も近い物理サーバを特定する。そして実行部１３０は、特定した物理サーバのＣＰＵコア数をＣＭＤＢ１１０から取得して、実行許否判定を行う。
【００６６】
なお、図７に示した処理であれば、ネットワークトポロジにおいて、仮想サーバの先にさらに仮想サーバがある場合でも、仮想サーバを実行している物理サーバを正しく判断することができる。
【００６７】
図８は、仮想サーバが多段構成となっている場合の例である。図８の例では、仮想サーバ５２を介して仮想サーバ５１が接続されている。この場合、管理対象の仮想サーバ５１までのネットワーク経路が仮想サーバ５２を経由しているが、その前に必ず物理サーバ３１を経由する。そのため、管理サーバ１００から仮想サーバ５１までの経路上の各ノードのマシン種別を判別すれば、仮想サーバ５１が配備されている物理サーバ３１を特定可能である。
【００６８】
エコー要求が宛先に届いたか否かは、応答されたメッセージの種類によって判断できる。
図９は、ＩＣＭＰメッセージの種類を示す図である。ＩＣＭＰメッセージには、種類を識別するための値が付与されている。値が「０」のメッセージの種類は「応答」であり、エコー要求への応答（Echo Reply）であることを示している。値が「３」のメッセージの種類は「エラー」であり、宛先への到達不能（Destination Unreachable）であることを示している。値が「８」のメッセージの種類は「要求」であり、エコー要求（Echo Request）であることを示している。値が「１１」のメッセージの種類は「エラー」であり、時間切れエラー（Time Exceeded）であることを示している。
【００６９】
図１０は、エコー要求に対する応答状況の一例を示す図である。運用操作時に、管理サーバ１００と管理対象の仮想サーバ５１との間に存在するマシンのＩＰアドレスを取得するため、管理サーバ１００の解析部１４０が、仮想サーバ５１に向けて、ＩＰパケットでＴＴＬ＝１としたＩＣＭＰのエコー要求６１を送信する。このとき、管理サーバ１００と仮想サーバ５１との間にマシンが存在すると、管理サーバ１００から見て１番目のマシンであるルータ４１においてＩＰヘッダのＴＴＬの値が１減らされて、ＴＴＬ＝０となる。その結果、エコー要求６１はルータ４１で破棄される。エコー要求６１を破棄したルータ４１は、管理サーバ１００に「Time Exceeded」のエラー応答７１を送信する。管理サーバ１００の解析部１４０は、「Time Exceeded」のエラー応答７１の送信元のＩＰアドレスを確認、取得する。
【００７０】
「Time Exceeded」のエラー応答７１が返信されてきた場合は、マシンの詳細情報の収集やネットワークの関係情報の組み立て後、解析部１４０は、ＴＴＬの値を１増やして、再度、仮想サーバ５１に向けてＩＣＭＰのエコー要求６２を送信する。仮想サーバ５１宛てのＴＴＬ＝２のエコー要求６２は、ルータ４１から物理サーバ３１に転送される。エコー要求６２のＴＴＬの値は、物理サーバ３１が受信したときに「０」となり、破棄される。エコー要求６２を破棄した物理サーバ３１は、管理サーバ１００に「Time Exceeded」のエラー応答７２を送信する。管理サーバ１００の解析部１４０は、「Time Exceeded」のエラー応答７２の送信元のＩＰアドレスを確認、取得する。
【００７１】
その後、解析部１４０は、仮想サーバ５１宛てのＴＴＬ＝３のエコー要求６３を送信する。エコー要求６３は、ルータ４１と物理サーバ３１とを経由して、仮想サーバ５１に転送される。仮想サーバ５１は、自分宛てのエコー要求６３であることを認識し、エコー応答７３を返す。このエコー応答７３により、管理サーバ１００の解析部１４０は、管理対象サーバである仮想サーバ５１のＩＰアドレスを確認、取得する。
【００７２】
このようにエコー応答が返ってくるまで、ＴＴＬ値をカウントアップしながらのエコー要求の送信を繰り返すことで、管理サーバ１００と管理対象サーバとの間に存在するマシンのＩＰアドレスを順番に取得できる。
【００７３】
なお、セキュリティが強化され、デフォルトの設定では、ＩＣＭＰの受信を許可しないマシンもある。この場合ＩＣＭＰを利用した処理だけでは、管理サーバ１００と管理対象サーバとの間に存在するマシンのＩＰアドレスを取得できない。そこで第２の実施の形態では、管理サーバ１００は、管理対象サーバに対してＩＣＭＰ要求を送信したときＩＣＭＰのTime Exceededエラーが取得できない場合は、ＩＣＭＰの受信を許可しないマシンが経路上に存在すると判断する。ＩＣＭＰが利用できないと判断した場合、管理サーバ１００は、管理対象サーバを運用操作しようとしているプロトコル（例えばＳＳＨ：Secure Shell）のポートに対してＳｙｎフラグを設定したＴＣＰ（Transmission Control Protocol）パケットを送信する。ここで送信するＴＣＰパケット（Ｓｙｎパケット）にはＴＴＬの仕組みを付加したものを使用し、管理サーバ１００は、ＴＴＬ＝１から順に値を１ずつ増やしながら、管理対象サーバにＳｙｎパケットを送信する。管理サーバ１００から管理対象サーバの間に存在するマシンを通過するたびにＴＴＬの値を１減らされ、ＴＴＬの値が０になったマシンが、管理サーバ１００に対してＩＣＭＰの応答を送信する。
【００７４】
図１１は、Ｓｙｎパケットを利用したＩＰアドレスの取得例を示す図である。図１１の例では、仮想サーバ５１が管理対象サーバである。またルータ４１はＩＣＭＰを利用できるが、物理サーバ３１と仮想サーバ５１とはＩＣＭＰを利用できない。
【００７５】
この場合、管理サーバ１００の解析部１４０から仮想サーバ５１宛てのＴＴＬ＝１のエコー要求６１が出力されると、ルータ４１から「Time Exceeded」のエラー応答７１が返される。次に解析部１４０から仮想サーバ５１宛てのＴＴＬ＝２のエコー要求６２が出力されるが、そのエコー要求６２は物理サーバ３１で受信されない。そこで解析部１４０は、仮想サーバ５１宛てのＴＴＬ＝２のＳｙｎパケット６８を送信する。すると物理サーバ３１から「Time Exceeded」のエラー応答７４が返される。さらに解析部１４０から仮想サーバ５１宛てのＴＴＬ＝３のエコー要求６３が出力されるが、そのエコー要求６３は仮想サーバ５１で受信されない。そこで解析部１４０は、仮想サーバ５１宛てのＴＴＬ＝３のＳｙｎパケット６９を送信する。すると仮想サーバ５１から到達応答７５が返される。
【００７６】
各装置からの応答には、送信元のＩＰアドレスが含まれているため、管理サーバ１００は、管理対象サーバである仮想サーバ５１までの経路上の各マシンのＩＰアドレスを取得できる。すなわち、ＩＣＭＰの受信を許可しないマシンが途中に存在していた場合にも、管理サーバと管理対象サーバとの間に存在するマシンのＩＰアドレスを取得できる。
【００７７】
管理サーバ１００は、管理対象サーバまでの経路上の各マシンのＩＰアドレスを取得すると、それらのマシンのノード情報を収集し、関係性情報を組み立てる。
図１２は、ノード情報の収集と関係性情報の組み立て例を示す図である。管理対象サーバまでの経路上のマシンのＩＰアドレスを取得した管理サーバ１００は、経路上のノード情報を収集する（ステップＳ５１）。例えば管理サーバ１００の解析部１４０は、経路上のマシンのＩＰアドレスに基づいて、各マシンのＣＩを収集し、ＣＭＤＢ１１０に格納する。ＣＩとして収集する値は以下の通りである。
１．ノード情報（ＩＰアドレス、ホスト名など）
２．マシンの種別（仮想サーバ／物理サーバ／ルータ）を判断する情報
３．ＣＰＵ数
ノード情報を収集した管理サーバ１００は、収集したマシン間のネットワークの関係性を示す関係性情報１５０を組み立てるために、結線情報として結線用ＣＩを用意し、結線用ＣＩを更新する（ステップＳ５２）。この結線用ＣＩの属性値には結線情報として、結線ごとにユニークな識別子を格納する。結線用ＣＩを用いることで、マシン間の情報の関係性を明確にすることができる。例えば、ルータ４１から取得したノード情報により、ホスト名「Ｓ１」の仮想サーバ５１への結線情報に、ルータ４１のホスト名「Ｒ１」が登録される。次に、物理サーバ３１から取得したノード情報により、仮想サーバ５１への結線情報に、ルータ４１の接続先として物理サーバ３１のホスト名「Ｓ３」が登録される。さらに、仮想サーバ５１から取得したノード情報により、仮想サーバ５１への結線情報に、物理サーバ３１の接続先として仮想サーバ５１のホスト名「Ｓ１」が登録される。
【００７８】
このような結線情報に基づいて、管理対象の仮想サーバと、その仮想サーバを実行している物理サーバとの関係性を示す関係性情報が組み立てられる（ステップＳ５３）。
図１３は、結線情報を用いたＣＩ間の関係を示す図である。ノード情報が登録されたＣＩ１１１〜１１３とは別に、結線情報が登録されたＣＩ１５１，１５２が設けられている。ノード情報が登録されたＣＩ１１１〜１１３には、システム構成情報（ＩＰアドレスを含む）やマシン種別が設定されている。結線情報が登録されたＣＩ１５１，１５２には、ユニークな識別子が設定されている。結線情報のＣＩ１５１，１５２は、リレーション（ＣＩ間リンク）８１〜８４によって、ノード情報のＣＩ１１１〜１１３に関連付けられている。このようなリレーション８１〜８４を辿れば、仮想サーバがどの物理サーバで実行されているのかを認識できる。
【００７９】
図１４は、リレーションの設定例を示す図である。解析部１４０は、マシン間のネットワークの関係性情報を、以下の手順で組み立てる。まず解析部１４０は、管理対象サーバに対して、パケット（エコー要求またはＳｙｎパケット）を送信する際に、ＣＩ１５１に結線情報（例えばユニークな識別子）を格納する（ステップＳ６１）。次に解析部１４０は、ＣＩ１１２に対応するノードから応答を受信すると、直前に取得したマシン（最初は管理サーバ１００のノード情報）のＣＩ１１１との間にリレーションを設定する（ステップＳ６２）。また解析部１４０は、応答を返したノードのＣＩ１１２と直前に更新された結線情報のＣＩ１５１との間にリレーションを設定する（ステップＳ６３）。このような処理を繰り返して、結線情報に対応するＣＩを介して、経路上のノードが関係付けられる。
【００８０】
次に、ノード情報と結線情報について詳細に説明する。
図１５は、ノード情報の一例を示す図である。図１５には、ノード情報９１に含まれる要素の要素名（Element Name）、親要素名（Parent Element）、要素説明（Element Description）が示されている。また各要素に含まれるコンポーネントのコンポーネント名（Component Name）、コンポーネントタイプ（Component Type）、コンポーネント説明（Component Description）、データタイプ（Data Type）、数量（# of）が示されている。
【００８１】
図１５に示すように、ノード情報９１には、要素名「LogicalServer」のコンポーネント名「ipAddress」として、ＩＰアドレスが設定されている。要素名「LogicalServerConfiguration」のコンポーネント名「machineType」として、マシン種別が設定されている。要素名「LogicalCPU」のコンポーネント名「core」として、ＣＰＵコア数が設定されている。
【００８２】
図１６は、結線情報の一例を示す図である。図１６には、結線情報９２に含まれる要素の要素名（Element Name）、親要素名（Parent Element）、要素説明（Element Description）が示されている。また各要素に含まれるコンポーネントのコンポーネント名（Component Name）、コンポーネントタイプ（Component Type）、コンポーネント説明（Component Description）、データタイプ（Data Type）、数量（# of）が示されている。図１６に示すように、結線情報にはユニーク識別子が含まれている。
【００８３】
結線情報を介してノード間の接続関係が判明すると、解析部１４０は、管理対象の仮想サーバの前に存在する最も近い物理サーバを特定する。管理対象の仮想サーバの前に存在する最も近い物理サーバを特定する手順は、以下の通りである。
【００８４】
仮想サーバは必ず物理サーバに配備されており、物理サーバのインタフェースを介してアクセスされるため、仮想サーバの前に存在する最も近い物理サーバが、仮想サーバを実行している物理サーバであると判断できる。
１．ＣＭＤＢ１１０に格納されている管理対象サーバの情報を参照し、結線情報を介したリレーション先のマシンを特定する。
２．ＣＭＤＢ１１０に格納されているリレーション先のマシンのマシン種別を参照し、対象マシンが物理サーバかどうかを判断する。
３．リレーション先のマシン種別が物理サーバでない場合（仮想サーバと物理サーバの間に仮想ルータが存在するというような場合）は、マシン種別に「物理サーバ」という情報が格納されているマシンが見つかるまで、管理サーバに向けてリレーションを順に辿る。
【００８５】
管理対象である仮想サーバを実行している物理サーバを特定すると、解析部１４０は、物理サーバのＣＰＵコア数を取得する。例えば解析部１４０は、ＣＭＤＢ１１０に既に収集されているノード情報（図１５参照）から、管理対象の仮想サーバを実行している物理サーバのＣＰＵコア数の情報を取得する。
【００８６】
これらの処理により、仮想化ソフトウェアに問い合わせることなく、仮想サーバが配備されている物理サーバの情報（例えばＣＰＵコア数）が取得可能となる。しかも、管理対象の仮想サーバの前に存在する最も近いのが物理サーバか仮想サーバかに関係なく、仮想サーバが配備されている物理サーバの情報を取得できる。さらに、管理対象サーバまでの経路上に、セキュリティ強化によりＩＣＭＰの受信を許可しないノードがあっても、仮想サーバが配備されている物理サーバの情報を取得できる。
【００８７】
次に、物理サーバ情報取得処理の手順を詳細に説明する。
図１７は、物理サーバ情報取得処理の手順の一例を示す図である。
［ステップＳ１１１］実行部１３０は、運用フローを解析し、管理対象サーバへの接続情報（例えばＩＰアドレス）を取得する。実行部１３０は、取得した接続情報を含む、物理サーバ情報の取得要求を、解析部１４０に送信する。
【００８８】
［ステップＳ１１２］解析部１４０は、管理対象サーバに接続し、マシン種別を取得する。
［ステップＳ１１３］解析部１４０は、ＣＭＤＢ１１０内の、管理対象サーバの「LogicalServer」ＣＩの情報を更新する。
【００８９】
［ステップＳ１１４］解析部１４０は、管理対象サーバが仮想サーバか否かを判断する。仮想サーバであれば、処理がステップＳ１１５に進められる。仮想サーバでなければ、処理がステップＳ１２０に進められる。
【００９０】
［ステップＳ１１５］解析部１４０は、ノード情報取得処理を行う。ノード情報取得処理の詳細は後述する（図１８参照）。ノード情報取得処理により、管理サーバ１００から管理対象サーバまでの経路上の１つのノードのノード情報が取得される。
【００９１】
［ステップＳ１１６］解析部１４０は、取得したノード情報に基づいて、関係性情報組み立て処理を行う。関係性情報組み立て処理の詳細は後述する（図１９参照）。
［ステップＳ１１７］解析部１４０は、取得したノード情報に示されるノードが管理対象サーバか否かを判断する。管理対象サーバであれば、処理がステップＳ１１９に進められる。管理対象サーバでなければ、処理がステップＳ１１８に進められる。
【００９２】
［ステップＳ１１８］解析部１４０は、次のノード情報取得処理において送信するパケットのＴＴＬ値を１増加させる。その後、処理がステップＳ１１５に進められる。
［ステップＳ１１９］解析部１４０は、物理サーバ特定処理を行う。物理サーバ特定処理の詳細は後述する（図２０参照）。物理サーバ特定処理により、管理対象である仮想サーバを実行している物理サーバが特定される。
【００９３】
［ステップＳ１２０］解析部１４０は、ＣＭＤＢ１１０内の、特定された物理サーバの「LogicalServer」ＣＩから、ＣＰＵコア数などのＣＰＵ情報を抽出する。解析部１４０は、取得したＣＰＵ情報を、実行部１３０に送信する。
【００９４】
このようにして、実行部１３０は、管理対象サーバが使用しているＣＰＵコア数を取得することができる。取得したＣＰＵコア数を用いて、図６に示したようなライセンス管理が行われる。
【００９５】
次に、ノード情報取得処理について詳細に説明する。
図１８は、ノード情報取得処理の手順の一例を示すフローチャートである。
［ステップＳ１３１］解析部１４０は、ＴＴＬの値を設定したＩＣＭＰのエコー要求を、管理対象サーバ宛てに送信する。
【００９６】
［ステップＳ１３２］解析部１４０は、エコー要求に対する応答の種別を判定する。応答がエコー応答であれば、処理がステップＳ１３３に進められる。応答が「Time Exceeded」のエラー応答であれば、処理がステップＳ１３８に進められる。応答が到達不能メッセージであれば、処理がステップＳ１３４に進められる。
【００９７】
［ステップＳ１３３］解析部１４０は、エコー応答を受信した場合、管理対象サーバの判定フラグをＯＮにする。その後、処理がステップＳ１３８に進められる。
［ステップＳ１３４］解析部１４０は、到達不能メッセージを受信した場合、ＣＭＤＢ１１０から、管理対象サーバとの通信に使用する通信プロトコルのポート番号を取得する。
【００９８】
［ステップＳ１３５］解析部１４０は、ＴＴＬ値とＳｙｎフラグを設定したＴＣＰパケットを、管理対象サーバの通信プロトコルのポート宛てに送信する。
［ステップＳ１３６］解析部１４０は、送信したＴＣＰパケットに対する応答の種別を判定する。応答が「Time Exceeded」のエラー応答であれば、処理がステップＳ１３８に進められる。応答がエコー応答であれば、処理がステップＳ１３７に進められる。応答が到達不能メッセージであれば、ノード情報の取得に失敗したものとして、ノード情報取得処理が終了する。
【００９９】
［ステップＳ１３７］解析部１４０は、エコー応答を受信した場合、管理対象サーバの判定フラグをＯＮにする。
［ステップＳ１３８］解析部１４０は、応答の送信元のＩＰアドレスを、送信元のノードの経路情報として取得する。送信元のＩＰアドレスは、例えば応答パケットのヘッダ情報から取得できる。
【０１００】
［ステップＳ１３９］解析部１４０は、応答の送信元のノードのノード情報を収集する。例えば解析部１４０は、ステップＳ１３８で取得したＩＰアドレスを宛先として、ノード情報を要求するパケットを送信する。すると宛先として指定されたノードから、そのノードのノード情報が管理サーバ１００に送信される。解析部１４０は、取得したノード情報を、ＣＭＤＢ１１０内の「LogicalServer」ＣＩに格納する。
【０１０１】
［ステップＳ１４０］解析部１４０は、前回のノード情報取得処理で取得した経路情報（ＩＰアドレス）を、「変数１」に格納する。なお、初回のノード情報取得処理では、管理サーバ１００のＩＰアドレスが「変数１」に格納される。
【０１０２】
［ステップＳ１４１］解析部１４０は、今回のノード情報取得処理で取得した経路情報（ＩＰアドレス）を、「変数２」に格納する。その後、ノード情報取得処理が終了する。
このようにして、ノード情報が取得される。解析部１４０は、ノード情報を取得するごとに、関係性情報組み立て処理を行う。
【０１０３】
図１９は、関係性情報組み立て処理の手順の一例を示すフローチャートである。
［ステップＳ１５１］解析部１４０は、結線用ＣＩを作成する。
［ステップＳ１５２］解析部１４０は、結線用ＣＩにユニークな識別子を格納する。
【０１０４】
［ステップＳ１５３］解析部１４０は、「変数１」に格納された直前ノードの経路情報を基に、ＣＭＤＢ１１０からＣＩを検索する。直前ノードとは、前回のノード情報取得処理で取得したノード情報に対応するノードである。
【０１０５】
［ステップＳ１５４］解析部１４０は、直前ノードのＣＩと、ステップＳ１５１で作成した結線用ＣＩとの間にリレーションを作成する。
［ステップＳ１５５］解析部１４０は、「変数２」に格納された取得ノードの経路情報を基に、ＣＭＤＢ１１０からＣＩを検索する。取得ノードとは、今回のノード情報取得処理で取得したノード情報に対応するノードである。
【０１０６】
［ステップＳ１５６］解析部１４０は、取得ノードのＣＩと、ステップＳ１５１で作成した結線用ＣＩとの間にリレーションを作成する。
このようにして、ノード情報が取得されるごとに、関係性情報が組み立てられていく。管理サーバ１００から管理対象である仮想サーバまでの関係性情報が完成すれば、その関係性情報に基づいて、仮想サーバを実行している物理サーバを特定できる。
【０１０７】
図２０は、物理サーバ特定処理の手順の一例を示すフローチャートである。
［ステップＳ１６１］解析部１４０は、ＣＭＤＢ１１０の管理対象サーバのノード情報を参照する。
【０１０８】
［ステップＳ１６２］解析部１４０は、参照しているノード情報に対応するＣＩのリレーション先の結線用ＣＩの情報を、関係性情報１５０から取得する。
［ステップＳ１６３］解析部１４０は、取得した結線用ＣＩに格納されているユニーク識別子を取得する。
【０１０９】
［ステップＳ１６４］解析部１４０は、取得した結線用ＣＩのユニーク識別子を基に、その結線用ＣＩのもう一方のリレーション先のＣＩのノード情報を参照する。
［ステップＳ１６５］解析部１４０は、参照しているノード情報に格納されているマシン種別を参照する。
【０１１０】
［ステップＳ１６６］解析部１４０は、マシン種別が物理マシンか否かを判断する。物理マシンであれば、処理がステップＳ１６７に進められる。物理マシンでなければ、処理がステップＳ１６２に進められる。
【０１１１】
［ステップＳ１６７］解析部１４０は、現在参照しているノード情報に対応するノードが、管理対象の仮想サーバを実行している物理サーバであると特定する。その後、物理サーバ特定処理が終了する。
【０１１２】
このようにして、管理対象の仮想サーバを実行している物理マシンを特定することができる。すなわち、仮想サーバは物理サーバに配備されており、仮想サーバが外部と通信をする際にはネットワークの通信経路は物理サーバを経由する。そのため、管理対象の仮想サーバまでの通信経路を、運用フロー実行時に取得することで、仮想サーバが配備されている物理サーバの情報を、確認時点の情報で、確実に取得することが可能となる。
【０１１３】
また第２の実施の形態では、ネットワークトポロジマップを全て作成せずに、運用フロー実行時に管理サーバから管理対象サーバまでの経路だけをチェックすることで、仮想サーバが配備されている物理サーバの情報を取得可能である。そのため、仮想サーバを実行している物理サーバを、少ない処理負荷で特定できる。
【０１１４】
さらに第２の実施の形態では、物理サーバと仮想サーバの関係性を取得する際に、管理サーバ上のＣＭＤＢが、収集した管理サーバから管理対象サーバまでのネットワーク経路上のマシンの結線情報に基づいて、ノード情報間にリレーションを設定する。リレーションにより、従来独立して存在していた個々のノード情報が、関係性をもって組み立てられる。これにより、仮想化ソフトウェアを介さずとも仮想サーバが配備されている物理サーバの情報を取得可能となる。
【０１１５】
第２の実施の形態では、管理サーバ１００から管理対象サーバまでのネットワーク経路を取得する際に、ＩＣＭＰの「Time Exceeded」のエラー応答が取得できたかどうかに基づいて、ＩＣＭＰの受信を許可しないマシンが経路上に存在するかどうかが判断される。ＩＣＭＰの受信を許可しないマシンがあれば、管理対象サーバを操作しようとしているプロトコルに対してＴＴＬの情報を付加したＳｙｎパケットを送信することで、そのマシンの経路情報が取得される。これによって、管理サーバから管理対象サーバまでの経路の途中にＩＣＭＰの受信を許可しないマシンが存在しても、ネットワーク経路が取得可能となる。
【０１１６】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１１７】
１〜３  計算機
２ａ  仮想化ソフトウェア
４，６，８  探索パケット
５，７  エラー応答
９  正常応答
１０  管理装置
１１  演算部
１２  記憶部
１２ａ  経路情報
【図１】
0006515597.tif 000002
【図２】
0006515597.tif 000003
【図３】
0006515597.tif 000004
【図４】
0006515597.tif 000005
【図５】
0006515597.tif 000006
【図６】
0006515597.tif 000007
【図７】
0006515597.tif 000008
【図８】
0006515597.tif 000009
【図９】
0006515597.tif 000010
【図１０】
0006515597.tif 000011
【図１１】
0006515597.tif 000012
【図１２】
0006515597.tif 000013
【図１３】
0006515597.tif 000014
【図１４】
0006515597.tif 000015
【図１５】
0006515597.tif 000016
【図１６】
0006515597.tif 000017
【図１７】
0006515597.tif 000018
【図１８】
0006515597.tif 000019
【図１９】
0006515597.tif 000020
【図２０】
0006515597.tif 000021