(57)【要約】      （修正有）【課題】仮想計算機を実行する複数の計算機から構成されるシステムにおいて、計算機の外部にあるストレージボリュームが不正に多重にアクセスされて、ボリューム内容が破壊されるのを防止する。【解決手段】仮想計算機とI/Oとを接続するスイッチと、計算機及びスイッチに接続され、仮想計算機を管理する管理部と、仮想計算機とI/Oとのログイン可否を判定する判定部とを備え、仮想計算機は、I/Oの識別子を割当られた仮想ＨＢＡを有し、判定部は、ある仮想計算機から前記I/Oへのログイン問い合わせの受信により、仮想計算機に付与された識別子の割当情報を参照して、ある仮想計算機に付与された識別子と、ある仮想計算機が実行される実計算機とは異なる実計算機上で実行される他の仮想計算機に付与された前記識別子とを比較して、ログイン可否判定をすることにより、I/Oへのアクセス制御を実施する。【選択図】図１
2010282447.tif 000002
【特許請求の範囲】
【請求項１】
複数の実計算機と、
前記実計算機上で実行される少なくとも１つ以上の仮想計算機と、
前記仮想計算機から外部装置へのログイン可否を判定する判定部とを備え、
前記仮想計算機は、前記外部装置へアクセスするための識別子が付与され、
前記判定部は、ある仮想計算機から前記外部装置へのログイン問い合わせの受信により、
前記仮想計算機に付与された前記識別子の割当情報を参照して、前記ある仮想計算機に付与された前記識別子と、前記ある仮想計算機が実行される実計算機とは異なる実計算機上で実行される他の仮想計算機に付与された前記識別子とを比較し、
前記ある仮想計算機に付与された前記識別子と前記他の仮想計算機に付与された前記識別子とが一致する場合、前記ログインを不可とし、
前記ある仮想計算機に付与された前記識別子と前記他の仮想計算機に付与された前記識別子とが一致しない場合、前記ログインを可とすること
を特徴とする仮想計算機システム。
【請求項２】
請求項１記載の仮想計算機システムにおいて、
前記実計算機と前記外部装置とは通信装置を介して接続していること
を特徴とする仮想計算機システム。
【請求項３】
請求項２記載の仮想計算機システムにおいて、
前記外部装置は、I/O装置であり、
前記識別子は、ＷＷＮであること
を特徴とする仮想計算機システム。
【請求項４】
請求項３記載の仮想計算機システムにおいて、
前記通信装置は、ファイバーチャネルスイッチであり、
前記実計算機は、前記ファイバーチャネルスイッチに接続される物理ＨＢＡを有し、
前記仮想計算機は、前記実計算機上にある仮想計算機モニタの制御下で実行され、前記付与された識別子を利用する仮想ＨＢＡを有し、
前記仮想計算機モニタは、前記仮想計算機が前記I/O装置へアクセスするための前記仮想ＨＢＡへのI/O操作をエミュレートして前記物理ＨＢＡへのI/O操作を指示し、
前記判定部によりログインを不可とされた場合、前記判定部は、前記物理ＨＢＡに接続拒否の応答を行う機能を有する
ことを特徴とした仮想計算機システム。
【請求項５】
請求項３記載の仮想計算機システムにおいて、
前記実計算機及び前記通信装置に接続し、前記仮想計算機の制御を管理する管理部を有し、
前記管理部が、前記識別子の割当情報を有する
ことを特徴とした仮想計算機システム。
【請求項６】
請求項５記載の仮想計算機システムにおいて、
前記管理部は、前記判定部を有し、
前記ログイン問い合わせは、前記通信装置から送信される
ことを特徴とした仮想計算機システム。
【請求項７】
請求項３記載の仮想計算機システムにおいて、
前記通信装置は、前記識別子の割当情報を保持するキャッシュを有する
ことを特徴とした仮想計算機システム。
【請求項８】
請求項７記載の仮想計算機システムにおいて、
前記物理ＨＢＡは、ポートを介して前記通信装置に接続しており、
前記ポートは、前記通信装置の有するポート割当部により割り当てられたポートＩＤを有し、
前記判定部は、前記ポートＩＤ割当部である
ことを特徴とした仮想計算機システム。
【請求項９】
請求項３記載の仮想計算機システムにおいて、
前記物理ＨＢＡは、ポートを介して前記通信装置に接続しており、
前記ポートは、前記通信装置の有するポート割当部により割り当てられたポートＩＤを有し、
前記ポートＩＤは、前記実計算機と前記通信装置との接続情報に保持され、
管理部が、前記接続情報を有する
ことを特徴とした仮想計算機システム。
【請求項１０】
請求項３記載の仮想計算機システムにおいて、
前記判定は、前記仮想計算機を異なる実計算機上へ移動させた後、前記仮想計算機を起動させるときに、前記識別子の割当情報を更新した後、
もしくは、前記仮想計算機の別の物理計算機上への移動が中断したときに、前記割当情報を更新した後に行われる
ことを特徴とした仮想計算機システム。
【請求項１１】
複数の実計算機と、前記実計算機上で実行される少なくとも１つの仮想計算機と、前記仮想計算機と外部装置とのログイン可否を判定する判定部とを備える仮想計算機システムにおけるアクセス制御方法であって、
前記仮想計算機は、前記外部装置へアクセスするための識別子が付与され、
前記判定部は、ある仮想計算機から前記外部装置へのログイン問い合わせの受信により、
前記仮想計算機に付与された前記識別子の割当情報を参照し、
前記ある仮想計算機に付与された前記識別子と、前記ある仮想計算機が実行される実計算機とは異なる実計算機上で実行される他の仮想計算機に付与された前記識別子とを比較し、
前記ある仮想計算機に付与された前記識別子と前記他の仮想計算機に付与された前記識別子とが一致する場合、前記ログインを不可とし、
前記ある仮想計算機に付与された前記識別子と前記他の仮想計算機に付与された前記識別子とが一致しない場合、前記ログインを可とすること
を特徴とするアクセス制御方法。
【請求項１２】
請求項１１記載のアクセス制御方法において、
前記実計算機と前記外部装置とは通信装置を介して接続していること
を特徴とするアクセス制御方法。
【請求項１３】
請求項１２記載のアクセス制御方法において、
前記外部装置は、I/O装置であり、
前記識別子は、ＷＷＮであること
を特徴とするアクセス制御方法。
【請求項１４】
請求項１３記載のアクセス制御方法において、
前記通信装置は、ファイバーチャネルスイッチであり、
前記実計算機は、前記ファイバーチャネルスイッチに接続される物理ＨＢＡを有し、
前記仮想計算機は、前記付与された識別子を利用する仮想ＨＢＡを有し、
前記実計算機上にある仮想計算機モニタは、前記仮想計算機を制御し、前記仮想計算機が前記I/O装置へアクセスするための前記仮想ＨＢＡへのI/O操作を前記物理ＨＢＡへのI/O操作にエミュレートし、
前記判定部によりログインを不可とされた場合、前記判定部は、前記物理ＨＢＡに接続拒否を応答すること
を特徴とするアクセス制御方法。
【請求項１５】
請求項１３記載のアクセス制御方法において、
前記実計算機及び前記通信装置に接続し、前記仮想計算機の制御を管理するる管理部を有し、
前記管理部が、前記識別子の割当情報を有すること
を特徴とするアクセス制御方法。
【請求項１６】
請求項１５記載のアクセス制御方法において、
前記管理部は、前記判定部を有し、
前記通信装置は、前記ログイン問い合わせを送信すること
を特徴とするアクセス制御方法。
【請求項１７】
請求項１３記載のアクセス制御方法において、
前記通信装置にある前記識別子の割当情報を保持するキャッシュを用いること
を特徴とするアクセス制御方法。
【請求項１８】
請求項１７記載のアクセス制御方法において、
前記物理ＨＢＡは、ポートを介して前記通信装置に接続しており、
前記通信装置は、ポート割当部を有し、
前記ポート割当部は、前記ポートにポートＩＤを割り当て、
前記ポートＩＤ割当部が、前記判定を行うこと
を特徴とするアクセス制御方法。
【請求項１９】
ポート番号を有するポートと、
ポートＩＤ割当部と、
実計算機上の仮想計算機に付与された外部装置へのアクセスのための識別子の割当情報を要約した要約情報を定期的に取得し、前記要約情報を保持するキャッシュとを有し、
前記要約情報は、前記ポート番号と、前記ポートでのログインを許可されている仮想計算機に付与された識別子である許可された識別子とを有し、
前記ポートＩＤ割当部は、ある仮想計算機から前記外部装置へのログイン問い合わせを受信した際、前記問い合わせで受信したポート番号と前記ポートを利用する識別子との組み合わせが、前記要約情報の有するポート番号と前記許可された識別子との組み合わせと、一致するか否か判定し、
一致する場合、前記ログインを可とし、
一致しない場合、前記ログインを不可とする
ことを特徴とする通信装置。
【請求項２０】
請求項１７記載の通信装置において、
前記通信装置は、ファイバーチャネルスイッチであること
を特徴とした通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機を実行する複数の計算機から構成されるシステムにおける、計算機の外部装置へのアクセス制御方法に関する。
【背景技術】
【０００２】
仮想化技術の進展は、従来の計算機システムの構成では成し得なかった機能を実現している。その１つに、仮想計算機のマイグレーション技術がある。これは、ある実計算機上で実行される仮想計算機を、他の実計算機の仮想化機構上で実行されるように移動する技術である。
【０００３】
一般に、仮想計算機のマイグレーションを実現するには、関係する計算機の両方からアクセス可能な外部装置であるストレージ装置やネットワークを用意する必要がある。
【０００４】
一方、セキュリティ向上のため、ストレージ装置内のボリュームやネットワークへのアクセスを制限する機能も利用されている。このようなアクセスコントロール機能を利用する場合、リソースへのアクセス発行元の名前やアドレスでアクセス制限を設定するのが一般的である。
【０００５】
仮想計算機が、外部リソースのアクセスコントロールに関わる名前やアドレスを持つこともある。更に、これらの名前やアドレスは、仮想計算機のマイグレーションに伴って一緒に移動するのが一般的である。名前やアドレスを仮想計算機と合わせて移動するため、仮想計算機の移動に合わせてスイッチやストレージ装置の設定を変更しなくても、アクセスコントロールは機能する。
【０００６】
仮想計算機にこのような名前やアドレスを与える技術としては、例えば、ストレージではファイバチャネルのN-Port ID Virtualization（ＮＰＩＶ）がある（非特許文献１、２参照）。ＮＰＩＶは、ストレージ装置に接続するネットワークであるＳＡＮ(Storage Area Network)上のアドレスを仮想化する技術である。計算機に搭載されるファイバチャネルアダプタ(ホストバスアダプタ、以下ＨＢＡ)のポートは、ＷＷＮ(World Wide Name)と呼ばれる識別子を付与されている。ファイバチャネルスイッチで構成されるファイバチャネルのネットワーク（ストレージネットワーク、ファブリック）は、ファブリックに接続する機器のポートにポートＩＤと呼ばれるファブリック内で有効なネットワークアドレスを付与し、そのポートＩＤを用いてデータをルーティングする。ＮＰＩＶは、機器のポートに複数のＷＷＮとそれに対応するポートＩＤを付与することを可能とする。仮想化機構は、ＮＰＩＶを利用すれば、仮想計算機が持つ仮想ＨＢＡに仮想的なＷＷＮを付与できることとなり、それによってファイバチャネルスイッチやストレージ装置のアクセスコントロールも利用可能となっている。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】“NPIV Functional Profile”, [online], 2002年8月1日発行、INCITS(InterNational Committee for Information Technology Standard) Technical Committee T11, 2009年2月20日検索、インターネット<URL: http://www.t11.org/ftp/t11/pub/fc/da/02-338v1.pdf>
【非特許文献２】“FC-DA Technical Report”, pp43-49, [online], 2004年8月3日発行、INCITS(InterNational Committee for Information Technology Standard) Technical Committee T11, 2009年2月20日検索、インターネット<URL:http://www.t11.org/ftp/t11/pub/fc/da/04-202vA.pdf>
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来技術に依れば、仮想計算機がアクセスする外部装置に対しても、仮想計算機と外部装置の双方に接続している通信装置や接続先のＩ／Ｏ装置そのもの(例えばストレージやネットワークなど)でアクセスコントロールを設定することができる。しかしながら、仮想計算機がマイグレーションする環境では、Ｉ／Ｏ装置にアクセスするための識別子によるアクセスコントロール、例えばポートのＷＷＮによるアクセスコントロールが機能しない場合がある。
【０００９】
例えば、仮想計算機のマイグレーションを許すシステムにおけるシステム障害からの回復のプロセスでは、仮想化機構への不正な設定によって同一の仮想計算機が複数の実計算機上で同時に実行されてしまうことや、誤って同一のＷＷＮを付与された異なる仮想計算機が複数の計算機上で同時に実行されてしまうことが発生し得る。具体的には、マイグレーション中に障害が発生した際の復旧手順において、誤ってマイグレーション元とマイグレーション先の仮想計算機もしくは実計算機の両方で同一のＷＷＮをもつ仮想計算機が定義されてしまうことが発生し得る。
【００１０】
一方、ＷＷＮに基づくストレージのアクセスコントロールは、同じＷＷＮを発行元として複数の仮想計算機から発生するＩ／Ｏ装置へのアクセス要求のどちらが正しいのかを判定することはできないため、意図しないアクセスが許可される場合がある。一般に、ストレージのボリュームの内容は、複数の計算機から同時期にアクセスされると破壊される。そのため、ボリューム内に格納されているファイルシステムやデータが破壊される可能性があり、課題である。
【課題を解決するための手段】
【００１１】
上記問題を解決するために、本発明に係わる仮想計算機システム及びそのアクセス制御方法では、実計算機上で実行される仮想計算機と仮想計算機から外部装置へのログイン可否を判定する判定部とを備え、判定部は、ある仮想計算機から前記外部装置へのログイン問い合わせの受信により、仮想計算機に付与された識別子の割当情報を参照して、ある仮想計算機に付与された識別子と、ある仮想計算機が実行される実計算機とは異なる実計算機上で実行される他の仮想計算機に付与された前記識別子とを比較して、ログイン可否判定をすることにより、外部装置へのアクセス制御を行うことを特徴とする。
【００１２】
また、本発明に係わる通信装置では、ポート番号を有するポートと、ポートＩＤ割当部と、実計算機上の仮想計算機に付与された外部装置へのアクセスのための識別子の割当情報を要約した要約情報を定期的に取得し、前記要約情報を保持するキャッシュとを有し、前記要約情報は、前記ポート番号と、前記ポートでのログインを許可されている仮想計算機に付与された識別子である許可された識別子とを有し、前記ポートＩＤ割当部は、ある仮想計算機から前記外部装置へのログイン問い合わせを受信した際、ログインの可否判定をすることを特徴とする。
【発明の効果】
【００１３】
本発明に依れば、仮想計算機に付与された識別子による外部装置へのアクセスが、システム内のどの実計算機から発行されるのが正当であるか判定でき、不正な外部装置へのアクセスを防止できる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第一の実施の形態でのシステム構成を示す図である。
【図２】本発明の第一の実施の形態での計算機の構成を示す図である。
【図３】本発明の第一の実施の形態での、管理サーバが保持するデータの構造を示す図である。
【図４】ファイバチャネルでのファブリックへのログイン手順を示すフローチャートである。
【図５】本発明の第一の実施の形態での、スイッチでのポートＩＤの割り当て手順を示すフローチャートである。
【図６】本発明の第一の実施の形態での、管理サーバでのログイン可否判定手順を示すフローチャートである。
【図７】本発明の第二、第三の実施の形態でのシステム構成を示す図である。
【図８】本発明の第三の実施の形態での、管理サーバが保持する データの構想を示す図である。
【図９】本発明の第三の実施の形態での、スイッチでのポートＩＤの割り当て手順を示すフローチャートである。
【図１０】本発明の第一の実施の形態での、管理サーバが保持するデータの更新後の構造を示す図である。
【発明を実施するための形態】
【実施例１】
【００１５】
本発明を適用した第一の実施の形態について説明する。第一の実施の形態では、ＮＰＩＶを利用する仮想化機構を含むシステムで、ファイバチャネルネットワークの接続情報と仮想化機構の定義情報を管理する管理サーバとの連携によって、ストレージへの不正なアクセスを防止する装置の構成、および、方法を示す。
【００１６】
図１は、第一の実施の形態のシステム構成を示す図である。システムは、サーバ１（１００）とサーバ２（１１０）、ストレージ装置１５０、それらを接続する通信装置(本実施例ではファイバチャネルスイッチ１３０)、管理サーバ１４０から構成される。
【００１７】
サーバ１（１００）、サーバ２（１１０）、管理サーバ１４０、スイッチ１３０は、それぞれに搭載されているネットワークアダプタ（ＮＩＣ）１０９と１１９によって通信可能なようにネットワーク１６０で接続されている。また、サーバ１（１００）とサーバ２（１１０）は、それぞれに搭載のファイバチャネルホストバスアダプタ（ＨＢＡ）１０６と１１６により、ストレージ装置１５０にスイッチ１３０を介して接続している。ＨＢＡ１０６とＨＢＡ１１６には、それぞれのＨＢＡに固有のＷＷＮが付与されている。
【００１８】
ＨＢＡ１０６と１１６は、ＮＰＩＶに対応したファイバチャネルのアダプタであるとする。また、スイッチ１３０もＮＰＩＶに対応しているとして説明する。
【００１９】
サーバ１（１００）とサーバ２（１１０）、及び管理サーバは、図２に示すような一般的な構成の計算機である。図２は、サーバ１（１００）の構成を示している。サーバ１（１００）は、ＣＰＵ２０１、メモリ２０２、ＨＢＡ１０６等で構成されている。ＣＰＵ２０１、メモリ２０２およびＩ／Ｏバス制御装置２０３がバスを介して接続している。Ｉ／Ｏバス制御装置２０３は、ＨＢＡ１０６、ネットワークアダプタ、キーボード、ディスプレイといった外部装置(本実施例ではＩ／Ｏ装置２０４)と、ＣＰＵ２０１が接続するバスを接続している。ＣＰＵ２０１は、メモリ２０２に読み込まれた仮想マシンモニタ(ＶＭＭ)、ＯＳ、アプリケーションプログラム等を実行する。以降の説明では、ＶＭＭ、ＯＳ、アプリケーションが実行するとして説明する。また、サーバ２（１１０）及び管理サーバも同様の構成の計算機である。
【００２０】
図には示さないが、管理サーバ１４０も同様の構成の計算機である。但し、ＨＢＡは有していなくてもよい。スイッチ１３０もＣＰＵ、メモリ等からなる計算機を搭載しており、各種の制御を実施するプログラムを実行する。以降の説明で、スイッチ１３０内の制御プログラムが実行するとは、スイッチ１３０内のＣＰＵがプログラムを実行することを示す。
【００２１】
図１のサーバ１（１００）とサーバ２（１１０）は、仮想化を実現する仮想計算機モニタＶＭＭ１０５、１１５が実行している。サーバ１（１００）では、仮想計算機が２つ、ＶＭ１（１０１）とＶＭ２（１０３）がＶＭＭ１０５上で実行している。また、それぞれのＶＭは、ＶＭＭ１０５が構成した仮想的なＨＢＡである仮想ＨＢＡ１０２と１０４を持っている。同様に、サーバ２（１１０）は、ＶＭＭ１１５の上でＶＭ３（１１１）を実行し、ＶＭ３（１１１）は仮想ＨＢＡ１１２を割り当てられている。仮想ＨＢＡへの操作は、ＨＢＡエミュレータ１０８と１１８でエミュレートされる。
【００２２】
ストレージ装置１５０には、各仮想計算機用のボリューム１５１ないし１５３が割り当てられている。
【００２３】
ＶＭＭは、各仮想ＨＢＡに仮想のＷＷＮを割り当てる。ここでは、ＶＭ１にＷＷＮ−１、ＶＭ２にＷＷＮ−２、ＶＭ３にＷＷＮ−３を割り当てたとして説明する。例えば、ＶＭＭ１０５は、ＨＢＡ１０６に対して、ＷＷＮ−１とＷＷＮ−２を利用可能とするよう指示する。ＨＢＡ１０６は、ＷＷＮ−１とＷＷＮ−２によるファブリックへのアクセスを実施するのに必要なリソースを割り当てる。以下、このそれぞれのリソースを識別する識別子をＶＨＢＡ−１、ＶＨＢＡ−２として、説明する。サーバ２（１１０）も同様である。
【００２４】
仮想計算機ＶＭ１（１０１）で実行するＯＳは、仮想ＨＢＡ１０２へのＩ／Ｏ操作を通じて、ストレージ装置１５０内のボリューム１５１へアクセスする指示を出す。ＶＭＭ１０５は仮想ＨＢＡ１０２へのＩ／Ｏ操作をトラップし、ＨＢＡエミュレータ１０８がその操作をサーバ１（１００）に搭載のＨＢＡ１０６へのＩ／Ｏ操作に変換して、ＨＢＡ１０６へのＩ／Ｏ操作を指示する。このとき、ＨＢＡエミュレータ１０８は、Ｉ／Ｏ操作を指示したＶＭを特定して、それに割り当てられているリソースを使用するように指示する情報を付与して、ＨＢＡ１０６のＩ／Ｏ操作を指示する。例えば、ＶＭ１(１０１)からのアクセスであれば、ＶＨＢＡ−１を付与する。ＨＢＡ１０６は付与されたリソース識別子を用いて、実際のファブリックアクセスを指示する。ここでは、ＷＷＮとしてはＷＷＮ−１が関連付けられることとなる。
【００２５】
ここで、本実施例と関係するファイバチャネルのファブリックへのログイン手順について説明する。
【００２６】
ファイバチャネルのＨＢＡは、スイッチやストレージ装置で構成されるファブリックに最初に接続する際、ログインと呼ばれる手順を実行する。本発明では、このログイン手順を改良することによって、ストレージ装置への二重アクセスを防止する方法を実現している。
【００２７】
ここでは、物理ＨＢＡのＨＢＡ１０６がファブリックにログインする際の手順を説明する。図４に手順を示す。
【００２８】
ＨＢＡ１０６は、初めてファブリックにアクセスする際、自身に設定されているＷＷＮをパラメータとしてファブリックログイン（ＦＬＯＧＩ）を実行する（ステップ４０１）。スイッチ１３０は、ファブリックログイン要求を受信して、ログインを送信したＨＢＡ１０６のポートのファブリック内でのアドレスを示すポートＩＤを割り当てて、ＨＢＡ１０６に返す。ポートＩＤの割り当ては、ポートＩＤ割当部１３２が実行する。次に、ＨＢＡ１０６は、自身のＷＷＮと与えられたポートＩＤをスイッチ１３０内のネームサーバ１３１に登録する（ステップ４０２）。
【００２９】
ネームサーバ１３１は、ファブリックに接続する機器のポートの種別、ＷＷＮ、それに付与されたポートＩＤ等を記録するスイッチ１３０内で実行するサービスである。ＨＢＡ１０６は、ＨＢＡ１０６から利用可能なデバイスをネームサーバ１３１に問い合わせる（ステップ４０３）。ネームサーバ１３１は、登録されているＨＢＡ１０６のＷＷＮを参照して、アクセス可能なデバイスのポートＩＤをＨＢＡ１０６に返す。ＨＢＡ１０６は、デバイスのポートＩＤを用いてデバイスにログインして、通信に必要なリソースを確保する（ステップ４０４）。以降のＨＢＡ１０６と他の機器との通信は、ＨＢＡ１０６のポートＩＤと機器のポートＩＤによって行われ、スイッチ１３０はポートＩＤに基づいて通信のルーティングを実施する。
【００３０】
ＮＰＩＶ対応のＨＢＡでは、仮想計算機の仮想ＨＢＡからのログイン手順が定義されている。例えば、ＶＭ１（１０２）が起動したときの処理を以下に示す。前記のＦＬＯＧＩは、物理ＨＢＡに対してのみ定義されている手順であり、異なる手順が実行される。
【００３１】
仮想計算機の仮想ＨＢＡからのログインの場合、ＨＢＡ１０６からの２回目以降のファブリックへのログインは、ファブリックディスカバリ（ＦＤＩＳＣ）と呼ばれるプロトコルで実現されている。ＶＭＭ１０５は、ＨＢＡ１０６に対して、ＶＭ１（１０１）に割り当てられているＷＷＮであるＷＷＮ−１を持ってＦＤＩＳＣを実行する。その際、ＦＬＯＧＩで取得したポートＩＤは使わず、発信元のポートＩＤは０であるとしてＦＤＩＳＣを実行する（ステップ４１１）。
【００３２】
スイッチ１３０は、発信元のポートＩＤが設定されていないＦＤＩＳＣを受信すると、仮想ＨＢＡからの２回目以降のログインであると判定し、与えられたＷＷＮ（ここではＷＷＮ−１）に対して新しいポートＩＤを付与する。新しいポートＩＤは、ＨＢＡ１０６内の仮想ＨＢＡ−１(ＶＨＢＡ−１)で識別されるリソースに記録されて、これ以降のＶＨＢＡ−１と指示される操作はこのポートＩＤを付与して実行される。ネームサーバへの登録、利用可能デバイスの問い合わせ、デバイスへのログインは、前述の手順と同様である（ステップ４１２ないし４１４）。
【００３３】
以上によって、ＶＭ１（１０１）の仮想ＨＢＡ１０２からのストレージアクセスは、ＷＷＮ−１に割り当てられたポートＩＤで実行されることとなる。
【００３４】
このとき、スイッチ１３０とストレージ装置１５０は、ＷＷＮ−１をベースとするアクセスコントロールを実施できる。このように、アクセスコントロールは、ファブリックに接続する機器のＷＷＮのみを参照して制御を実行する。
【００３５】
本発明では、仮想ＨＢＡがファブリックにログインする際に提示する仮想のＷＷＮが、ログインを指示した仮想ＨＢＡが存在するサーバで利用されるのが妥当であるかを判定することで、ストレージ装置内のボリュームへの不正なアクセスを防止する方法を実現する。以下に、これを実現するのに必要なシステム構成、データ構造および手順を説明する。
【００３６】
図１の管理サーバ１４０は、サーバとスイッチの接続関係を保持するファブリックトポロジテーブル１４１、サーバへのＷＷＮ割当を保持するＷＷＮ割当テーブル１４２、スイッチ１３０からのログイン可否問合せを処理するログイン制御部１４３を持っている。
【００３７】
図３にファブリックトポロジテーブル１４１とＷＷＮ割当テーブル１４２の構成を示す。ファブリックトポロジテーブル１４１は、ファイバチャネルファブリックを構成するサーバとスイッチの接続情報を保持する。具体的には、物理サーバとスイッチ間の各接続について、スイッチに接続している物理サーバを識別するサーバ名３０１、スイッチに接続している物理ＨＢＡのポートを示す物理ＨＢＡポート番号３０２、ファブリック内のどのスイッチのどのポートに接続されているかを識別するスイッチ番号３０３とポート番号３０４を記録している。物理ＨＢＡポート番号３０２は、サーバに搭載されている各物理ＨＢＡの全ポートをユニークに識別可能な番号であるとする。物理ＨＢＡポート番号３０２は、サーバに搭載の物理ＨＢＡを識別する番号と、各物理ＨＢＡでのポートを識別する番号の組み合わせであってもよい。スイッチのポート番号３０４は、スイッチ番号３０３の中でポートを識別可能な番号とする。スイッチ番号３０３は、ファイバチャネルスイッチで定義されるドメインＩＤのように、ファブリック内で一意にスイッチを識別可能な番号で、スイッチ自身が取得可能な番号とする。
【００３８】
例えば、テーブル１４１には、サーバ１（１００）で物理ＨＢＡ１０６にあるポート１が、ファブリックで１番として識別されるスイッチ１３０のポート１に接続していることを示す。
【００３９】
トポロジテーブル１４１は、システムの構成管理情報として作成するが、作成に必要なデータの取得方法は本発明では問わない。
【００４０】
ＷＷＮ割当テーブル１４２は、システムに構成されている仮想計算機への仮想ＷＷＮの割り当てと、各仮想計算機がどの物理サーバで実行するよう構成されているかを記録しているテーブルである。具体的には、仮想計算機名３１１とそれに割り当てられている仮想ＷＷＮ３１２と、仮想計算機が実行する物理サーバ名３１３、そのサーバで実行するときに仮想ＨＢＡに割り当てられる物理ＨＢＡのポート番号３１４が記録される。ポート番号３１４は、トポロジテーブル１４１の物理ＨＢＡポート番号３０２と同じ規則で付与された番号が記録される。仮想計算機名３１１、仮想ＷＷＮ３１２、物理ＨＢＡポート番号３１４は、ＶＭＭの構成情報から取得できる。また、仮想計算機を実行する物理サーバ名３１３は、サーバ管理者が指定する情報である。システム管理者は、仮想計算機を物理サーバ間でマイグレートする場合、ＷＷＮ割当テーブル１４２のデータも更新する。図１０にＷＷＮ割当テーブル１４２の更新後の様子を示す。ここでは、仮想計算機ＶＭ１（１０１）がサーバ２（１１０）にマイグレートしたときの状態を示している。テーブル１４２の物理サーバ名がサーバ２に書きかえられている。物理ＨＢＡポートの値は変わっていないが、これは、仮想計算機ＶＭ１（１０１）が、移動先のサーバ２（１１０）に搭載されている物理ＨＢＡポート１を使用していることを示している。この更新は、仮想化機構の管理機構によって自動化されてもよい。これは、第二の実施の形態で説明する。ＷＷＮ割当テーブル１４２は、各ＷＷＮを使用する仮想計算機が実行中であるかを示す実行状態３１５も保持していてもよい。ログイン制御部１４３は、スイッチ１３０のポートＩＤ割当部１３２からのファブリックログイン可否判定要求を受けて、トポロジテーブル１４１とＷＷＮ割当テーブル１４２の内容から、当該ログインの可否を判定する。
【００４１】
ポート割当部１３２とログイン制御部１４３処理による、ポートＩＤの割当処理手順を図５に示す。ここでは、仮想ＨＢＡ１０２がファブリックへのログインをする際の処理として説明する。
【００４２】
ＶＭＭ１０５は、ＶＭ１（１０１）起動時の処理として、仮想ＨＢＡ１０２のファブリックへのログインを実行する。具体的には、物理ＨＢＡ１０６に、仮想ＨＢＡ１０２用のリソースを割り当てて仮想ＷＷＮであるＷＷＮ−１を登録し、そのリソースによってＦＤＩＳＣ（Fabric Discovery）手順を実行するよう指示する。ＦＤＩＳＣとは、ファイバチャネルプロトコルで定義されている手順であり、ＨＢＡから利用可能なファブリック上のサービスを発見するための手順である。ＮＰＩＶでは、もともとのＦＤＩＳＣを拡張して、ＨＢＡのポートに追加のＷＷＮを定義する手順としている。物理ＨＢＡ１０６は、指示を受けて、ＷＷＮとして仮想ＨＢＡ１０２のＷＷＮであるＷＷＮ−１をもちいてＦＤＩＳＣを実行する。このとき、発信元のポートＩＤは０とする。
【００４３】
スイッチ１３０は、物理ＨＢＡ１０６からのＦＤＩＳＣを受けて、ポートＩＤ割当部１３２によってポートＩＤの割り当てを開始する。まず、ポートＩＤ割当部１３２は、ＦＤＩＳＣが実行されたポートの番号、スイッチ１３０に設定されているスイッチ番号、ＦＤＩＳＣで与えられたＷＷＮをパラメータとして、管理サーバ１２０のログイン制御部１４３を呼び出す（ステップ５０１）。
【００４４】
管理サーバ１４０のログイン制御部１４３は、与えられたスイッチ番号とポート番号で示されるポートにて、与えられたＷＷＮでファブリックへログインすることの可否を決定する（ステップ５１１）。
【００４５】
もし、ログイン制御部１４３の結果がログイン可であれば（ステップ５０２）、ポートＩＤ割当部１３２はこのログイン操作に対してポートＩＤを割り当てる（ステップ５０３）。ログイン不可であれば、このログインを失敗させる（ステップ５０４）。失敗させるとは、ＲＥＪＥＣＴ等で物理ＨＢＡ１０６に応答することを示す。又、ＲＥＪＥＣＴ応答が５回繰り返されるまでは、前述のログイン応答を繰り返すが、５回以上繰り返された場合には、このログイン処理は停止する。
【００４６】
次に、管理サーバ１４０のログイン制御部１４３の処理を示す。図６にログイン制御部１４３の処理フローを示す。
【００４７】
ログイン制御部１４３は、スイッチ１３０のポートＩＤ割当部１３２から呼び出されて実行する。まず、ログイン制御部１４３は、与えられたスイッチ番号とポート番号から、ファブリックトポロジテーブル１４１を参照して、当該のスイッチのポートに接続する物理サーバと物理ＨＢＡポート番号を求める（ステップ６０１）。
【００４８】
次に、ログイン制御部１４３は、ＷＷＮ割当テーブル１４２を参照して、与えられたＷＷＮと同一のＷＷＮを割り当てられていて、別の物理サーバ上で既に実行中の仮想計算機がないかを検索する（ステップ６０２）。そのような仮想計算機が存在する場合、同一のストレージボリュームへの不正な二重アクセスが発生する可能性があるため、ログインを不可と判定し（ステップ６０４）、結果を応答する（ステップ６０６）。
【００４９】
そのような仮想計算機が存在しない場合、ログイン１４３制御部はＷＷＮ割当テーブル１４２を参照して、求めた物理サーバと物理ＨＢＡのポートの組み合わせで、与えられたＷＷＮを定義されている仮想計算機が構成されているかを検索する（ステップ６０３）。そのような仮想計算機が定義されていない場合、不正なアクセスが発生する可能性が高いため、ログイン不可と判定し（ステップ６０４）、結果を応答する（ステップ６０６）。
【００５０】
そのような仮想計算機が構成されている場合、管理者が想定している通りの仮想計算機が実行しようとしていると判定し、ログイン可と判定する（ステップ６０５）。最後に得られた結果を、ポートＩＤ割当部１３２に応答する（ステップ６０６）。
【００５１】
スイッチ１３０から管理サーバ１４０のログイン制御部１４３を呼び出すには、管理サーバ１４０のネットワークアドレスや、パラメータを渡すためのプロトコルの情報が必要である。これらの情報は、管理者がスイッチ１３０に設定可能であるとする。例えば、管理サーバ１３０は、ＳＯＡＰを用いたＷｅｂサービスによってログイン制御部１４３のインタフェイスを公開しているとする。この場合、管理者が、このＷｅｂサービスのＷＳＤＬ(Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  Ｄｅｓｃｒｉｐｔｉｏｎ Ｌａｎｇｕａｇｅ)のＵＲＬをスイッチ１３０に設定すれば、スイッチ１３０から管理サーバ１４０のログイン制御部１４３を呼び出し可能となる。スイッチ１３０は、これを設定可能なインタフェイスを提供しているとする。
【００５２】
又もし、前述のような外部装置１５０と接続が切れた場合には、これらの処理をやり直すこととなる。
【００５３】
以上により、仮想計算機が起動するときに、その仮想計算機に割り当てられているＷＷＮによるファブリックへのアクセスが妥当かどうかを判定でき、不正なアクセスとなる可能性が高い場合に、以降のアクセスを防止できる。具体的には、同一のＷＷＮを付与されている仮想計算機が別の計算機で実行している場合や、管理サーバ１４０の関与しないところで構成された仮想計算機が不正なＷＷＮを付与されて実行することを防止できる。
【００５４】
また、実施例中ではログイン制御部１４３として説明した判定部を管理サーバ１４０に設けることで、仮想計算機周辺の環境情報をログインの判定に加味することができる。これにより、仮想ＷＷＮとポート番号と物理サーバ名の組み合わせを利用した、正確な仮想計算機のファブリックへのアクセス制御が可能である。
【００５５】
尚、本実施例では、判定部を管理サーバ１４０に設ける例を示したが、この判定部は、実計算機と外部装置の接続状態を把握できるならば、その他の通信装置であってもよい。また、本実施例はファイバーチャネルスイッチにおける例を示したが、実計算機がアクセスしている外部装置と接続していれば、その他の通信装置であってもよい。
【００５６】
また、本実施例では、同一実計算機内でのマイグレーションにおいての制御は説明していない。なぜならば、同一実計算機内において仮に、マイグレーションを行う時は、同一のＶＭＭがその制御を管理しているので、同一アドレスを設定してしまうことは考えられず、よって、本課題は発生しないと考えられるからである。
【実施例２】
【００５７】
次に本発明を適用した第二の実施の形態について説明する。第一の実施の形態では、仮想計算機が起動する時点でポートＩＤの割り当て処理を実行するとして説明したが、本発明の適用はこれに限定されない。例えば、仮想計算機をマイグレーションする場合に、移動先で仮想計算機の実行を再開するときに、ＶＭＭがファブリックへのログインを実行し、その際のポートＩＤの割り当て処理で本発明で示す処理を実行してもよい。
【００５８】
この場合、管理サーバ１４０のＷＷＮ割当テーブル１４２を適切に更新する必要がある。具体的には、ＷＷＮ割当テーブル１４２の物理サーバ名３１３と物理ＨＢＡポート番号３１４を、移動先の情報に更新する必要がある。これは、仮想計算機のマイグレーションを制御するプログラムと連携して実行すればよい。
【００５９】
図７は、本発明の第二の実施の形態を実現するシステム構成の例を示す。第一の実施の形態でのシステム構成要素に加え、仮想計算機管理サーバ７００がネットワーク１６０に接続している。仮想計算機管理サーバ７００は、システム内の仮想計算機の定義情報を保持する仮想計算機構成ＤＢ(データベース)７０２と、仮想計算機の物理サーバ間の移動を制御するマイグレーション制御部７０１を持っている。
【００６０】
また、管理サーバ１４０は、ファブリックトポロジテーブル１４１とＷＷＮ割当テーブル１４２を管理するテーブル管理部１４４を持っている。テーブル管理部１４４は、外部から呼び出し可能なインタフェイスを提供しているとする。
【００６１】
マイグレーション制御部７０１は、仮想計算機の定義を移動するのに際し、管理サーバ１４０のＷＷＮ割当テーブル１４２を更新する。例えば、ＶＭ１（１０１）がサーバ２（１１０）に移動する場合は、マイグレーション制御部７０１は、ＶＭ１（１０１）の構成について、実行サーバがサーバ２（１１０）となり、それに割り当てられている仮想ＨＢＡ１０２が、移動先では物理ＨＢＡ１１６のポート１を利用することを、管理サーバ１４０のテーブル管理部１４４に通知する。テーブル管理部１４４は、通知を受けてＷＷＮ割当テーブル１４２を更新する。
【００６２】
前記の更新処理は、稼働中の仮想計算機を移動する際に実行してもよい。稼働中のＶＭ１（１０１）を移動する場合、移動するＶＭ１（１０１）のメモリ内容をサーバ１（１００）からサーバ２（１１０）間でコピーすることとなるが、ある瞬間のメモリ内容をコピーするには、ＶＭ１（１０１）の実行を一旦中断する必要がある。この中断の間に、マイグレーション制御部７０１が前記の更新処理を実行する。その後、移動先のＶＭＭ１１５がＶＭ１（１０１）の実行を再開する。この際、ＶＭＭ１１５は、第一の実施の形態の図５に示したポートＩＤ割り当て処理を実行する。この割り当て処理を実行する時点で、ＷＷＮ割当テーブル１４２の内容は正しい情報に更新されているので、ログインは正当であると判定されて、割り当て処理で新しいポートＩＤが割り当てられる。これによって、ＶＭ１（１０１）は、中断前と同様に、再開後も同一のＷＷＮでアクセス可能なストレージ装置のボリュームへアクセスし続けることができる。
【００６３】
以上のように、仮想計算機のマイグレーションの制御手順と連携することによって、仮想計算機がサーバ間を移動しても、仮想ＨＢＡのファブリックへのログインの正当性を正しく確認できる。
【００６４】
第一の実施の形態では、ＶＭＭは仮想計算機の起動時に仮想ＨＢＡのファブリックへのログインを実行するとしたが、第二の実施の形態でのように、ＶＭＭは仮想計算機を中断状態から再開させる際に仮想ＨＢＡのファブリックへのログインを実行してもよい。これによって、稼働中の仮想計算機を移動する場合であっても、ストレージアクセスの正当性を確認することができる。
【実施例３】
【００６５】
次に本発明を適用した第三の実施の形態を説明する。これまでの実施の形態では、スイッチ１３０がネットワーク１６０を介して、管理サーバ１４０にログイン可否を問い合わせることによって、各時点のファブリックへのログインが正当であるかを判定するとしていた。しかしながら、管理サーバ１４０が障害で停止している時や、ネットワーク１６０で障害が発生している時は、スイッチ１３０から管理サーバ１４０への問い合わせは実行できない。この場合、ファブリックへのログイン可否判定が実行できなくなり、仮想計算機の実行に支障をきたすこととなる。
【００６６】
第三の実施の形態では、スイッチ１３０が、ファブリックトポロジテーブル１４１とＷＷＮ割当テーブル１４２の要約情報を管理サーバ１４０から定期的に取得して、それをキャッシュ１３３として記録する。ポートＩＤ割当部１３２は、管理サーバ１４０に接続できないときは、キャッシュ１３３の内容によってファブリックへのログイン可否を判定する。
【００６７】
第三の実施の形態を構成するシステム構成は、第二の実施の形態と同じく図７で示される。ここで、テーブル管理部１４４は、指定されたスイッチ番号に関係する、ファブリックトポロジテーブル１４１とＷＷＮ割当テーブル１４２の要約情報を生成するインタフェイスを提供する。この要約情報のデータ構造を図８に示す。
【００６８】
要約情報であるログイン許可要約テーブル８００は、スイッチのポート番号８０１とそのポートでログインを許可するＷＷＮ８０２から構成される。
【００６９】
この要約情報の生成手順を説明する。スイッチ１３０は、自身に発行されたログインの可否判定のために、管理サーバ１４０のテーブル管理部１４４に、ログイン許可要約情報を定期的に問い合わせる。このとき、自身に設定されているスイッチ番号を伴って問合せを実行する。管理サーバ１４０は、ファブリックトポロジテーブル１４１を参照して、与えられたスイッチ番号のスイッチの各ポートに接続しているサーバと物理ＨＢＡポートを列挙する。次に、列挙したサーバと物理ＨＢＡポートの各組み合わせについて、ＷＷＮ割当テーブル１４２を参照して、それを利用して実行する仮想計算機に割り当てられている仮想ＷＷＮを求める。これによって、スイッチの各ポートにログイン可能な仮想ＨＢＡのＷＷＮの組を求める。これが、ログイン許可要約テーブル８００となる。スイッチ１３０は、問い合わせにより取得した内容をキャッシュ１３３として保存し、ポートＩＤ割当部１３２が参照できるようにする。
【００７０】
ポートＩＤ割当部１３２は、キャッシュ１３３を参照するため、第一の実施の形態とは処理が若干異なる。第三の実施の形態におけるポートＩＤ割当部１３２の処理フローを図９に示す。図５に示したフローとの違いについて説明する。
【００７１】
ポートＩＤ割当部１３２は、ステップ５０１で管理サーバ１４０のログイン制御部１４３を呼び出した後、呼び出し自体が成功したかどうかを判定する（ステップ９０１）。ステップ９０１では、呼び出しの返値を判定するのではなく、呼び出しが成功して返値を取得できたかを判定する。返値を取得できない場合、キャッシュ１３３の内容にてログイン可否を判定する（ステップ９０２）。
【００７２】
キャッシュ１３３の内容は、ログイン許可要約テーブル８００である。ポートＩＤ割当部１３２は、テーブル８００を参照して、与えられたＷＷＮがログインの実行されたポートでのログインを許可されているか判定できる。これを持ってステップ５０２のログイン判定を実行する。
【００７３】
以上によって、スイッチ１３０が障害により管理サーバ１４０のログイン制御部１４３と通信できなくても、過去のある時点で正しいとされた構成情報に従って、仮想ＨＢＡによるファブリックへのログインの可否を判定できる。
【００７４】
以上、３つの実施の形態について説明したが、本発明を適用できるネットワークは、ファイバチャネルのネットワークに限定されるものではない。ネットワークが計算機の搭載のアダプタと計算機の間を接続するスイッチで構成され、スイッチに接続される計算機の構成情報を保持している管理サーバがあって、スイッチが、ある計算機からの通信の可否を管理サーバに問い合わせて決定する機能を有していることが、本発明の実施要件である。管理サーバは、通信があったポートに関する情報だけでなく、システム全体の計算機の構成情報から通信可否を判定する処理を提供すればよい。
【符号の説明】
【００７５】
１００…サーバ１、１０１…仮想計算機１（ＶＭ１）、１０２…仮想ＨＢＡ、１０３…仮想計算機２（ＶＭ２），１０４…仮想ＨＢＡ、１０５…ＶＭＭ、１０６…物理ＨＢＡ、１０８…ＨＢＡエミュレータ、１０９…ネットワークアダプタ、１１０…サーバ２、１１１…仮想計算機３（ＶＭ３）、１１２…仮想ＨＢＡ、１１５…ＶＭＭ、１１６…物理ＨＢＡ、１１８…ＨＢＡエミュレータ、１１９…ネットワークアダプタ、１３０…ファイバチャネルスイッチ、１３１…ネームサーバ、１３２…ポートＩＤ割当部、１３３…キャッシュ、１４０…管理サーバ、１４１…ファブリックトポロジテーブル、１４２…ＷＷＮ割当テーブル、１４３…ログイン制御部、１４４…テーブル管理部、１５０…ストレージ装置、１５１ないし１５３…ストレージボリューム、１６０…ネットワーク、２０１…ＣＰＵ、２０２…メモリ、２０３…Ｉ／Ｏバス制御装置、２０４…Ｉ／Ｏ装置、３０１ないし３０４…テーブル内データ、３１１ないし３１５…テーブル内データ、４０１ないし４０４…処理ステップ、４１１ないし４１４…処理ステップ、５０１ないし５０４および５１１…処理ステップ、６０１ないし６０６…処理ステップ、７００…仮想計算機管理サーバ、７０１…マイグレーション制御部、７０２…仮想計算機構成ＤＢ、８００…ログイン許可要約テーブル、８０１ないし８０２…テーブル内データ、９０１ないし９０２…処理ステップ
【図１】
2010282447.tif 000003
【図２】
2010282447.tif 000004
【図３】
2010282447.tif 000005
【図４】
2010282447.tif 000006
【図５】
2010282447.tif 000007
【図６】
2010282447.tif 000008
【図７】
2010282447.tif 000009
【図８】
2010282447.tif 000010
【図９】
2010282447.tif 000011
【図１０】
2010282447.tif 000012