(57)【特許請求の範囲】
【請求項１】
コンピュータシステムにおける構成情報管理方法であって、
管理コンピュータは、
待機系コンピュータからハードウェア構成情報を取得し、
前記取得したハードウェア構成情報と現用系コンピュータのハードウェア構成情報と比較し、
ハードウェア構成情報が異なっている場合に、前記異なるハードウェアを模擬する要求を前記現用系コンピュータに送信し、
前記要求を受信した前記現用系コンピュータは、
前記異なるハードウェアを模擬し、
前記模擬したハードウェアを検知した前記現用系コンピュータのオペレーティングシステムは、前記模擬したハードウェアに対応するドライバをインストールする
ことを特徴とする構成情報管理方法。
【請求項２】
請求項１に記載の構成情報管理方法であって、
前記現用系コンピュータは、前記ドライバをインストールした後、前記模擬したハードウェアが前記ドライバにより使用できるかどうかを確認する
ことを特徴とする構成情報管理方法。
【請求項３】
請求項１に記載の構成情報管理方法であって、
前記管理コンピュータは、前記ドライバをインストールした前記現用系コンピュータの前記オペレーティングシステムが格納された記憶装置と前記待機系コンピュータのハードウェアとを対応付け、
前記現用系コンピュータは、前記記憶装置に格納されたオペレーティングシステムを用いて前記待機系コンピュータを起動する
ことを特徴とする構成情報管理方法。
【請求項４】
請求項３に記載の構成情報管理方法であって、
前記管理コンピュータは、前記現用系コンピュータの障害を検知した場合に、前記ハードウェアの対応付けを行う
ことを特徴とする構成情報管理方法。
【請求項５】
請求項１に記載の構成情報管理方法であって、
前記管理コンピュータは、
前記ハードウェア構成情報を取得するプログラムを前記待機系コンピュータに送信し、
前記プログラムによって前記待機系コンピュータの前記ハードウェア構成情報を取得する
ことを特徴とする構成情報管理方法。
【請求項６】
請求項１に記載の構成情報管理方法であって、
前記管理コンピュータは、
ハードウェアとドライバとを対応づけたデバイス管理情報を有し、
前記デバイス管理情報に基づいて、前記模擬したハードウェアに対応するドライバを取得し、
前記ドライバをインストールする
ことを特徴とする構成情報管理方法。
【請求項７】
請求項１に記載の構成情報管理方法であって、
前記現用系コンピュータは、
前記異なるハードウェアが複数存在する場合、前記複数の異なるハードウェアを模擬し、
前記模擬した複数のハードウェアを検知した前記現用系コンピュータの前記オペレーティングシステムは、前記模擬した複数のハードウェアに対応する複数のドライバをインストールする
ことを特徴とする構成情報管理方法。
【請求項８】
コンピュータシステムであって、
待機系コンピュータからハードウェア構成情報を取得する構成情報取得部と、
前記取得したハードウェア構成情報と現用系コンピュータのハードウェア構成情報と比較する構成比較部と、
ハードウェア構成情報が異なっている場合に、前記異なるハードウェアを模擬する要求を前記現用系コンピュータに送信する初期化部と、
を有する管理コンピュータと、
前記異なるハードウェアを模擬する仮想化部と、
前記模擬したハードウェアを検知した場合に、前記模擬したハードウェアに対応するドライバをインストールするオペレーティングシステムを管理するアプリケーション環境管理部と、
を有する前記現用系コンピュータと、
を有することを特徴とするコンピュータシステム。
【請求項９】
請求項８に記載のコンピュータシステムであって、
前記現用系コンピュータの前記アプリケーション管理部は、前記ドライバをインストールした後、前記模擬したハードウェアが前記ドライバにより使用できるかどうかを確認する
ことを特徴とするコンピュータシステム。
【請求項１０】
請求項８に記載のコンピュータシステムであって、
前記管理コンピュータは、前記ドライバをインストールした前記現用系コンピュータの前記オペレーティングシステムが格納された記憶装置と前記待機系コンピュータのハードウェアとを対応付ける切り替え部を有し、
前記現用系コンピュータは、前記記憶装置に格納されたオペレーティングシステムを用いて前記待機系コンピュータを起動する起動部を有する、
ことを特徴とするコンピュータシステム。
【請求項１１】
請求項１０に記載のコンピュータシステムであって、
前記管理コンピュータの前記切り替え部は、前記現用系コンピュータの障害を検知した場合に、前記ハードウェアの対応付けを行う
ことを特徴とするコンピュータシステム。
【請求項１２】
請求項８に記載のコンピュータシステムであって、
前記管理コンピュータの前記構成取得部は、
前記ハードウェア構成情報を取得するプログラムを前記待機系コンピュータに送信し、
前記プログラムによって前記待機系コンピュータの前記ハードウェア構成情報を取得する
ことを特徴とするコンピュータシステム。
【請求項１３】
請求項８に記載のコンピュータシステムであって、
前記管理コンピュータは、ハードウェアとドライバとを対応づけたデバイス管理情報を有し、
前記管理コンピュータの前記アプリケーション環境管理部は、前記デバイス管理情報に基づいて、前記模擬したハードウェアに対応するドライバを取得し、前記オペレーションシステムに前記ドライバをインストールする
ことを特徴とするコンピュータシステム。
【請求項１４】
請求項８に記載のコンピュータシステムであって、
前記現用系コンピュータの前記仮想化部は、前記異なるハードウェアが複数存在する場合、前記複数の異なるハードウェアを模擬し、
前記模擬した複数のハードウェアを検知した場合に、前記オペレーティングシステムは、前記模擬した複数のハードウェアに対応する複数のドライバをインストールする
ことを特徴とするコンピュータシステム。
【請求項１５】
管理コンピュータであって、
待機系コンピュータからハードウェア構成情報を取得する構成情報取得部と、
前記取得したハードウェア構成情報と現用系コンピュータのハードウェア構成情報と比較する構成比較部と、
ハードウェア構成情報が異なっている場合に、前記異なるハードウェアを模擬する仮想化部と、前記模擬したハードウェアを検知した場合に前記模擬したハードウェアに対応するドライバをインストールするオペレーティングシステムを管理するアプリケーション環境管理部と、を有する前記現用系コンピュータに対して、前記異なるハードウェアを模擬する要求を送信する初期化部と、
を有することを特徴とする管理コンピュータ。
【請求項１６】
請求項１５に記載の管理コンピュータであって、
前記現用系コンピュータの前記アプリケーション管理部は、前記ドライバをインストールした後、前記模擬したハードウェアが前記ドライバにより使用できるかどうかを確認する
ことを特徴とする管理コンピュータ。
【請求項１７】
請求項１５に記載の管理コンピュータであって、
前記管理コンピュータは、前記ドライバをインストールした前記現用系コンピュータの前記オペレーティングシステムが格納された記憶装置と前記待機系コンピュータのハードウェアとを対応付ける切り替え部を有し、
前記現用系コンピュータは、前記記憶装置に格納されたオペレーティングシステムを用いて前記待機系コンピュータを起動する起動部を有する、
ことを特徴とする管理コンピュータ。
【請求項１８】
請求項１７に記載の管理コンピュータであって、
前記管理コンピュータの前記切り替え部は、前記現用系コンピュータの障害を検知した場合に、前記ハードウェアの対応付けを行う
ことを特徴とする管理コンピュータ。
【請求項１９】
請求項１５に記載の管理コンピュータであって、
前記管理コンピュータの前記構成取得部は、
前記ハードウェア構成情報を取得するプログラムを前記待機系コンピュータに送信し、
前記プログラムによって前記待機系コンピュータの前記ハードウェア構成情報を取得する
ことを特徴とする管理コンピュータ。
【請求項２０】
請求項１５に記載の管理コンピュータであって、
前記管理コンピュータは、ハードウェアとドライバとを対応づけたデバイス管理情報を有し、
前記管理コンピュータの前記アプリケーション環境管理部は、前記デバイス管理情報に基づいて、前記模擬したハードウェアに対応するドライバを取得し、前記オペレーションシステムに前記ドライバをインストールする
ことを特徴とする管理コンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フェイルオーバー機構を備える計算機のシステム構築簡単化方法に関する。
【背景技術】
【０００２】
サーバ装置は複数の異なる種類の外部装置と接続するためのインターフェースを有している。外部装置の例として、ネットワーク装置やストレージ装置等がある。インターフェースの例として、ストレージ装置に接続するためのＨＢＡ(Host  Bus  Adapter)やネットワークに接続するためのＮＩＣ(Network  Interface  Card)などがある。また、これらのインターフェースは、インターフェースを製造したメーカーやインターフェースの種類に対応してドライバが提供される。
【０００３】
ドライバは、サーバ装置で稼動するオペレーティングシステム（ＯＳ）にインストールされ、サーバ装置の起動時に行われるＯＳの初期化処理において、ドライバによってディスク装置やネットワークなどの外部装置との接続が確立される。ドライバによって外部装置との接続が確立された後は、アプリケーションプログラムからの入出力要求をＯＳが受け付け、その要求を必要なドライバに転送することでアプリケーションプログラムは外部装置との入出力を行うことができる。
【０００４】
サーバ装置の障害に備えて、現用系サーバ装置と待機系サーバ装置を設け、現用系サーバ装置に障害が発生した場合に、待機系に切り替えて処理を継続するフェイルオーバーを実現する方法がある。例えば、現用系サーバ装置と待機系サーバ装置でディスク装置を共有し、現用系サーバ装置に障害が発生した場合は、ディスク装置内の現用系サーバ装置が使用していたＯＳが格納されたブートディスクを待機系サーバ装置に切り替えることで処理を引き継ぐ方法がある。
【０００５】
この方法では、現用系サーバ装置のインターフェースと待機系サーバ装置のインターフェースは切り替えに備えて同じ外部装置に接続されている。現用系サーバ装置が稼動している間は、待機系サーバ装置は電源がＯＦＦの状態で待機している。現用系サーバに障害が発生し待機系サーバに切り替わる際に、待機系サーバ装置の電源がＯＮされると、前述のOSの初期化処理によって待機系サーバ装置のインターフェースが初期化され、外部装置との接続が確立される。これらのプロセスによって、現用系サーバ装置から待機系サーバ装置への切り替えが完了する。
【０００６】
【特許文献１】特開２００６−１６３９６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
一般に、前述のようなフェイルオーバーを行うシステムを構築する場合、現用系サーバ装置と待機系サーバ装置のハードウェアの構成を同一にする。例えば、サーバ装置が有するメモリ容量やプロセッサの種類や数である。これらは、切り替え後も切り替え前と同じ性能を維持するために必要となる。
【０００８】
一方、現用系サーバ装置と待機系サーバ装置が有するインターフェースも同一にしておく必要がある。これは、ドライバとインターフェースとの対応付けを保ち、サーバ装置の切り替え後も切り替え前と同じ外部装置と接続するためである。
【０００９】
ドライバとインターフェースとの対応付けが切り替え前と切り替え後で同じ場合は、切り替え後も切り替え前と同じようにシステムが正常に動作する。しかし、現用系サーバ装置のインターフェースと待機系サーバ装置のインターフェースの構成が異なっている場合は、切り替え後に正常に動作しないことがある。
【００１０】
正常に動作しない例の一つは、種類が異なっている場合である。ここで、種類とはＨＢＡやＮＩＣといった接続対象が異なる機能を持つインターフェースを指す。この場合は、現用系サーバ装置で接続していた外部装置が、待機系サーバ装置では接続できなくなるため正常に動作しない。このケースは、現用系サーバ装置と待機系サーバ装置が物理的に同じ外部装置に接続されていない事が原因であり、同じ種類のインターフェースを現用系と待機系のサーバ装置に設ける必要がある。
【００１１】
しかし、同じ種類のインターフェースであってもインターフェースを製造したメーカーが異なる場合は、切り替え後に必要なインターフェースのドライバがインストールされていないため正常に動作しない。つまり、インターフェースに対応するドライバが無いため、ＯＳの初期化時に正常に外部装置と接続できず切り替え前と同じ環境にならないため処理を継続することができなくなる。
【００１２】
さらに、同じ種類、同じメーカーであっても、インターフェース内に格納されたファームウェアのバージョン等の違いでも同じ現象になる可能性がある。ファームウェアは、インターフェースに新たな機能を追加する際にバージョンアップされることが多い。こういった場合、新しい機能に対応したドライバをＯＳにインストールしなければ正常に動作しないことがある。
【００１３】
そのため、フェイルオーバー環境を構築する際は、インターフェースの種類の違いやファームウェアのバージョンが違っても正常に動作するように、あらかじめＯＳに所定のドライバをインストールする作業を行う。しかし、この作業は現用系と待機系の全てのサーバに対して構成の違いやインストール作業が必要になるため、煩雑で時間がかかる。
【００１４】
例えば、現用系サーバ装置をＮ台、待機系サーバ装置をＭ台として、Ｎ台のいずれかの現用系サーバ装置に障害が発生すると、Ｍ台のいずれかの待機系サーバ装置に処理を引き継ぐ環境を構築する場合は、Ｎ＋Ｍ台のサーバ構成情報の取得、およびＮ×Ｍ回のドライバインストール作業が必要になる。従って、ＮとＭの台数が多くなるほど、フェイルオーバー環境の初期構築のための時間と作業が煩雑である。またそのためミスが増加する課題がある。
【課題を解決するための手段】
【００１５】
待機系サーバ装置に対して構成情報を取得するプログラムを転送し構成情報を取得し、前記待機系サーバ装置の構成情報と前記構成管理テーブルとを比較し、構成情報が異なっていた場合に、サーバ構成を模擬する手段を用いて現用系サーバ装置に不足する構成を模擬して前記現用系サーバ装置を起動し、前記不足する構成に対応するドライバをインストールする。
【発明の効果】
【００１６】
本発明によれば、フェイルオーバー機構のサーバ構築の時間を短縮し、簡単化することができる。
【発明を実施するための最良の形態】
【００１７】
以下、図面を用いて本願発明の実施の形態を説明する。
【実施例１】
【００１８】
図１は、本実施例の全体図の一例を示している。管理サーバ（管理コンピュータ）１０１は、障害管理部１０２と初期構築管理部１０３と各種テーブル（１０４〜１０７）から構成される。管理サーバ１０１は、ネットワークスイッチ１０８を介して、サーバ装置（コンピュータ装置）１０９、ＳＶＰ（Service Processor）１１０に接続される。ＳＶＰ１１０は全てのサーバ装置１０９と接続されている。
【００１９】
サーバ装置１０９はＩ／Ｏ仮想化部１１１と仮想サーバ（仮想コンピュータ）１１２を構成することができる。各サーバ装置１０９はストレージ装置１１３内のパス切り替え部１１４によって割り当てられたディスク１１５と接続され、サーバ装置１０９からディスク１１５にアクセスすることができる。
【００２０】
管理サーバ１０１は、サーバ装置１０９の障害を検知し回復する機能を有する。Ｉ／Ｏデバイス管理テーブル１０５は、Ｉ／Ｏデバイスとドライバの対応付け情報を格納する。Ｉ／Ｆ管理テーブル１０６はＩ／ＯデバイスのＨＢＡとインターフェースの対応付け情報を格納する。構成管理テーブル１０４はサーバ装置１０９の構成情報や状態などが格納される。なお、Ｉ／Ｆとはインターフェースのことである。Ｉ／Ｏとは入出力のことである。
【００２１】
サーバ切り替え管理テーブル１０７は、サーバ装置１０９に障害が発生した場合の、交代用のサーバ装置１０９が定義され、切り替えのための初期構築設定状態が格納されている。本実施例では、管理サーバ１０１が、サーバ装置１０９の障害発生時の切り替えを行うための初期構築を簡単化する一実施例を示す。
【００２２】
図２は、管理サーバ１０１の構成の一例を示す。管理サーバ１０１は、メモリ２０１とプロセッサ２０２とディスクインターフェース２０３とネットワークインターフェース２０４から構成される。
【００２３】
メモリ２０１内には、障害管理部１０２、初期構築管理部１０３、構成管理テーブル１０４、Ｉ／Ｏデバイス管理テーブル１０５、Ｉ／Ｆ管理テーブル１０６、サーバ切り替え管理テーブル１０７が格納される。メモリ内の障害管理部１０２、初期構築管理部１０３、テーブル（１０４〜１０７）は、プロセッサ２０２に読み込まれ処理される。ディスクインターフェース２０３は、管理サーバ１０１を起動するためのプログラムが格納されたディスクに接続される。ネットワークインターフェース２０４は、ネットワークに接続され各装置の障害情報などが転送される。ネットワークはＬＡＮ（Local Area Network）やＷＡＮ（Wide Area Network）など様々なネットワークが適用可能である。
【００２４】
障害管理部１０２や初期構築管理部１０３はプログラムであり、これらのプログラムをプロセッサ２０２で実行することにより各処理を実現する。しかし、障害管理部１０２や初期構築管理部１０３はマイクロチップに集積回路化するなどしてハードウェアで実現することも可能である。
【００２５】
図３は、障害管理部１０２の構成の一例を示す。障害管理部１０２は、障害検出部３０１、サーバ切り替え部３０２から構成される。障害検出部１０２は、サーバ装置１０９の障害を検知する機能を有する。実施例１では、障害の管理対象となるサーバ装置１０９は複数存在する。
【００２６】
障害検出部１０２は、複数のサーバ装置１０９から発行された障害イベントの内容から、障害が発生したサーバ装置１０９の特定や、障害の種類などを特定する機能を有する。サーバ切り替え部３０２は、サーバ装置１０９に障害が発生した場合に、交代用のサーバ装置１０９に切り替える機能を有する。実施例１では、複数のサーバ装置１０９の障害に対して、複数の交代用のサーバ装置１０９を設けることができる。
【００２７】
サーバ切り替え部３０２は、障害検出部１０２によって複数のサーバ装置１０９の中から障害が発生したサーバ装置１０９が特定されると、特定されたサーバ装置１０９から交代用として設けられたサーバ装置１０９に切り替える機能を有する。後で詳細は説明するが、ここで切り替えとは障害が発生したサーバ装置１０９が使用していたシステムが格納された起動用のディスクや、システムが動作するために必要なデータディスクが交代用のサーバ装置１０９に切り替えられる。これにより、障害が発生したサーバ装置１０９に換わって、交代用のサーバ装置１０９で処理を継続することができるようになる。
【００２８】
図４は、初期構築管理部１０３の構成の一例を示す。初期構築管理部１０３は、図３にて述べたサーバ装置１０９の障害時の切り替えを実現するための前処理を行う。初期構築管理部１０３は、一般にはサーバ装置１０９を導入してから、実際の業務を開始する前の段階で実行される。
【００２９】
サーバ装置１０９の障害時に、交代用のサーバ装置１０９への切り替えを行うことで業務やサービスを継続することができるが、障害が発生したサーバ装置１０９と交代用のサーバ装置１０９の構成が異なっていると切り替えが正常に行われない可能性がある。例えば、ディスクインターフェース２０３、ネットワークインターフェース２０４の種類や数、あるいはインターフェース内のファームウェアバージョンなどの違いから、切り替え後に正常に動作しないなどの可能性がある。特に、障害管理の対象となるサーバ装置１０９と、交代用のサーバ装置１０９がそれぞれ複数存在すると、構成を完全に一致させることは非常に困難である。従って、初期構築管理部１０３は、こういった構成の違いを吸収し、切り替えが行われた後でも正常に動作することを保証する役割を有する。
【００３０】
初期構築管理部１０３は、構築管理部４０１、構成比較部４０２、構成情報取得部４０３、ドライバ管理部４０４、初期化部４０５、Ｉ／Ｏ仮想化管理部４０６から構成される。
【００３１】
構成管理部４０１はフェイルオーバー機能のサーバを構築するメインルーチンで、初期構築全体を管理する。構成比較部４０２は現用系サーバ装置６０１と待機系サーバ装置６０２の構成を比較する。構成情報取得部４０３はミニＯＳの起動や管理を行い、待機系サーバ装置６０２の構成情報を取得する。ドライバ管理部４０４はＩ／Ｏデバイスに対して適合するドライバを管理する。初期化部４０５はサーバ装置１０９に対してフェイルオーバーの初期構築開始を指示する。Ｉ／Ｏ仮想化管理部４０６はＩ／Ｏ仮想化部１１１に対して、現用系物理サーバ６０１の持つＩ／Ｆ模擬の指示を行う。
【００３２】
障害検出部３０１、サーバ切り替え部３０２、構築管理部４０１、構成比較部４０２、構成情報取得部４０３、ドライバ管理部４０４、初期化部４０５、Ｉ／Ｏ仮想化管理部４０６はプログラムであり、これらのプログラムをプロセッサ２０２で実行することにより各処理を実現する。しかし、障害検出部３０１、サーバ切り替え部３０２、構築管理部４０１、構成比較部４０２、構成情報取得部４０３、ドライバ管理部４０４、初期化部４０５、Ｉ／Ｏ仮想化管理部４０６はマイクロチップに集積回路化するなどしてハードウェアで実現することも可能である。
【００３３】
以下説明を簡略化するため、各種プログラムである各処理部を各処理の主体として説明する。なお各処理部をハードウェアで実現した場合にはその各処理部が主体となって各処理を行う。
【００３４】
図５はサーバ装置１０９の構成の一例を示す。サーバ装置１０９は、メモリ５０１、プロセッサ５０２、Ｉ／Ｏインタフェース５０３、ＢＭＣ（Base board Management Controller）５０４から構成される。メモリ５０１には、サーバ装置１０９で処理されるプログラムが格納され、それらはプロセッサ５０２で実行される。
【００３５】
ＢＭＣ５０４は、ＳＶＰ１１０と接続され、構成情報の転送や障害の通知を行う。なお、ＢＭＣ５０４は、プロセッサ５０２とは独立に動作でき、プロセッサ５０２に障害が発生し動作できなくなった場合にも、障害をＳＶＰ１１０に通知することができる。ＢＭＣ５０４は、外部からの要求に従い電源管理をおこなうことができる。またＢＭＣ５０４は、サーバ１０９内に設置された温度センサや電圧センサの信号を監視して異常を監視しており、外部からの問い合わせに対して異常の有無を返信する機能を有する。なおＢＭＣ５０４はサーバ装置１０９とは別の、図には示していない補助電源から給電されるため、サーバ装置１０９の電源がオフの状態であっても常時機能する。
【００３６】
インターフェース５０３は、Ｉ／Ｏデバイスインターフェースに接続されストレージ装置１１３やネットワークスイッチ１０８などと接続する。一つのサーバ装置１０９に対して、複数のインターフェース５０３があっても良い。例えば、ストレージ装置１１３やネットワーク５０３に接続するケースや、高信頼化のために複数の同じ種類のインターフェース５０３を有するケースなどが考えられる。
【００３７】
サーバ起動部１１６は、ＳＶＰ１１０や管理サーバ１０１からの要求を受け、ストレージ装置１１３に格納されたＯＳを取得し、取得したＯＳ７０２を用いてサーバ装置１０９を起動する。また、ＳＶＰ１１０や管理サーバ１０１からの要求を受け、仮想サーバ１１２やＩ／Ｏ仮想化部１１１を起動する。
【００３８】
ＢＭＣ５０４は、サーバ装置１０９内のハードウェアに障害が発生した場合に、ネットワークを介して障害を通知する機能や電源のＯＮ／ＯＦＦを受け付ける機能を有する。
【００３９】
ＢＭＣ５０４は障害の発生箇所とは独立に動作できるため、メモリ５０１やプロセッサ５０２に障害が発生したとしてもネットワークを介して障害通知を転送することができる。
【００４０】
メモリ５０１では仮想サーバ１１２とＩ／Ｏ仮想化部１１１を構成することが可能である。仮想サーバ１１２にはアプリケーション環境管理部６０３を構成する。アプリケーション環境管理部６０３とは、サーバ装置で稼動させたい業務システムを意味する。Ｉ／Ｏ仮想化部１１１にはＩ／Ｆ模擬部５０８を構成する。
【００４１】
Ｉ／Ｆ模擬部５０８は、サーバ装置１０９が有するインターフェース５０３を異なるファームウェアバージョン、異なる機能、異なるメーカー、異なる種類といった、当該サーバ装置１０９が有しないインターフェース５０３を模擬する機能を有する。なお、このＩ／Ｆ模擬部はアプリケーション環境管理部６０３に対して、異なるインターフェース５０３を提供することができる。
【００４２】
Ｉ／Ｆ模擬とは、より具体的には、仮想サーバ内で処理されるアプリケーション環境管理部６０３に対して、異なるＩ／Ｆを有すると見せかける事を意味する。後で詳細に説明するが、アプリケーション環境管理部６０３はＯＳ７０２とアプリケーションプログラム７０１を管理する。アプリケーション環境管理部６０３に対する処理は、ＯＳ７０２やアプリケーションプログラム７０１等のアプリケーション環境に対する処理となる。Ｉ／Ｆの模擬の対象はＯＳ７０２に対して行う。ＯＳ７０２は、新しいＩ／Ｆを発見するとドライバのインストールを試みる。そのため、新しいＩ／ＦのドライバをインストールするためにはＯＳ７０２に対して新しいＩ／Ｆが発見されたことを示す必要がある。そのためのＩ／Ｆ模擬にはいくつかの方法が考えられる。
【００４３】
一つは、Ｉ／Ｆが接続された位置を模擬することである。一般にＩ／Ｆはサーバ装置１０９に設けられたバスなどに接続される。ＯＳ７０２は、Ｉ／Ｆとバスに接続された位置を対としてドライバを管理しており、Ｉ／Ｆの位置が変わったことでもドライバをインストールする必要がある。そのため、Ｉ／Ｆの位置を模擬し必要であればドライバをインストールすることが考えられる。Ｉ／Ｆの位置の模擬は、ＯＳ７０２の起動時に行われる初期化時に、Ｉ／Ｆ模擬部５０８がＯＳ７０２に対して所定の位置情報をＯＳに返答することで実現できる。
【００４４】
また、他の模擬の方法として、種類が異なるＩ／Ｆの模擬がある。ＯＳ７０２は種類が異なるＩ／ＦかどうかをＩ／Ｆ自身が有する識別子から判断する。識別子は、ＯＳ７０２の初期化時にＩ／Ｆが接続されたバスを全て検索し、Ｉ／Ｆが発見されると所定のプロトコルにてＩ／Ｆの識別子の返答を要求される。その際に、Ｉ／Ｆ模擬部５０８は、模擬したい識別子を返答することで、ＯＳ７０２に対して新しいＩ／Ｆが接続されたことを示すことができる。Ｉ／Ｆを模擬した後は、模擬したＩ／Ｆと実際の物理的なＩ／Ｆとの間のＩ／Ｏを相互に変換する。
【００４５】
また、他の方法として、Ｉ／Ｆが有する機能を模擬する方法が考えられる。Ｉ／Ｆは、一般に機能を実現するための処理機構が搭載されている。例えば、処理機構は集積回路として搭載される。ＯＳ７０２から見たＩ／Ｆの機能とは、ＯＳ７０２から発行されたディスクのＲＥＡＤ／ＷＲＩＴＥ要求を処理することである。Ｉ／Ｆの処理機構とＯＳ７０２とは、一般に処理機構が有する制御レジスタなどを使用して要求の受け付けを行う。
【００４６】
例えば、制御レジスタは、要求の形式やパラメタの順序などが決められており、これに従って処理が行われる。従って、Ｉ／Ｆの機能の模擬は、前述のＩ／Ｆの識別子と、ＯＳ７０２が発行するＩ／Ｆに対する制御レジスタの挙動をあらかじめＩ／Ｆ模擬部に登録しておき、Ｉ／Ｆの識別子の模擬の要求に対して、対応する制御レジスタの挙動を同じにすることで実現できる。
【００４７】
仮想サーバ１１２は、Ｉ／Ｏ仮想化部１１１からＣＰＵ時間やメモリを割り当てられ、ＯＳから見たＩ／Ｆを模擬（エミュレート）した模擬Ｉ／Ｆを割り当てられた、論理的なハードウェア装置である。したがって、仮想サーバ１１２上のＯＳからも、仮想サーバ１１２の外側からも仮想サーバ１１２は物理的なハードウェアを持つサーバ装置と同じものとして認識される。
【００４８】
Ｉ／Ｆとの入出力の際には、仮想サーバ１１２とサーバ装置１０９の実デバイスとの間にＩ／Ｏ仮想化部１１１が入ってそれぞれからの入出力を変換する。Ｉ／Ｆ模擬部はこの入出力の変換によってＯＳから見た物理的なデバイスを模擬するものである。具体的には、Ｉ／Ｏ仮想化部１１１が，サーバ装置１０９の実デバイスからの入力を、仮想サーバ１１２に割り当てられた模擬Ｉ／Ｆで処理可能な情報に変換し、仮想サーバ１１２に入力する。またＩ／Ｏ仮想化部１１１は、仮想サーバ１１２からの出力を、サーバ装置１０９の実デバイス（Ｉ／Ｆ）で処理可能な情報に変換し、サーバ装置１０９の実デバイスに出力する。変換の方法を変えることにより，Ｉ／Ｏ仮想化部１１１は様々な種類の物理デバイスを模擬したり，任意の数のデバイスとして模擬した仮想デバイスを，仮想サーバに割り当てることが可能である。
【００４９】
このようにＩ／Ｆ模擬では、仮想サーバ内で処理されるアプリケーション環境管理部６０３に対して、異なるＩ／Ｆを有すると見せかけ、その異なるＩ／Ｆと実際の物理Ｉ／Ｆとの間で入出力を変換する。
【００５０】
仮想サーバ１１２やＩ／Ｏ仮想化部１１１、アプリケーション環境管理部６０３、Ｉ／Ｆ模擬部５０８、サーバ起動部１１６はプログラムであり、これらをプロセッサ２０２で実行することにより各処理を実現するが、仮想サーバ１１２やＩ／Ｏ仮想化部１１１、アプリケーション環境管理部６０３、Ｉ／Ｆ模擬部５０８、サーバ起動部１１６は、マイクロチップに集積回路化するなどしてハードウェアで実現することも可能である。
【００５１】
図６は、本実施例におけるサーバ装置１０９障害時の切り替え動作の概要を示す一例である。図６では、現用系サーバ装置（現用系コンピュータ）６０１のいずれかに障害が発生した場合に、待機系サーバ装置（待機系コンピュータ）６０２を使用して回復する動作を行う。現用系サーバ装置６０１とストレージ装置１１３のディスク１１５を接続しアプリケーション環境管理部６０３を実現する。現用系サーバ装置６０１に障害が発生すると、障害検出部３０１がその障害を検出する。そしてサーバ切り替え部３０２がストレージ装置のパス切り替え部１１４に対して、サーバの切り替えを要求する。
【００５２】
要求を受けたパス切り替え部１１４は、ディスク１１５と現用系サーバ装置６０１との間の接続経路を、待機系サーバ装置６０２に変更する。これにより、現用系サーバ装置６０１の障害時に、待機系サーバ装置６０２に処理を引き継ぐことができるようになる。ここで待機系サーバ装置６０２に引き継ぐディスク１１５には、アプリケーション環境そのものが格納されたシステム用のディスクや、アプリケーション環境が使用するデータ用のディスクなどがある。
【００５３】
図７はアプリケーション環境管理部とインターフェース（７０５、７０６）の関係を示す例である。サーバ装置１０９はインターフェースＡ７０３やインターフェースＢ７０４など複数のインターフェースを構成している。サーバ装置１０９のアプリケーション環境管理部６０３はＯＳ７０２とＯＳ７０２上のアプリケーションプログラム７０１から構成されるアプリケーション環境を管理する。このサーバ装置１０９にＯＳ７０２を起動するためには、サーバ装置１０９のインターフェース（７０５、７０６）に適合したインターフェース用ドライバ（７０３、７０４）を、ＯＳ７０２にインストールしてある必要がある。
【００５４】
一般に、アプリケーション環境管理部６０３は、オペレーティングシステム（ＯＳ）７０２とアプリケーションプログラム７０１から構成されるアプリケーション環境を管理する。ＯＳ７０２には、サーバ装置１０９が有するインターフェース（７０５、７０６）の動作を制御し、外部とのデータ入出力を行うドライバ（７０３、７０４）が含まれる。アプリケーション環境管理部６０３はプログラムであり、これらをプロセッサ５０２で実行することにより各処理を実現するが、アプリケーション環境管理部６０３は、マイクロチップに集積回路化するなどしてハードウェアで実現することも可能である。
【００５５】
ドライバ（７０３、７０４）は、インターフェース（７０５、７０６）のそれぞれに対応して用意する必要がある。例えば、インターフェースＡ７０５のためにはインターフェースＡ用ドライバ７０３、インターフェースＢ７０６のためにはインターフェースＢ用ドライバ７０４のように、インターフェースが異なればそれに対応したドライバをＯＳ７０２にインストールしておく必要がある。もし、新たなインターフェース（図示せず）をサーバ装置１０９に設ける場合は、事前にＯＳ７０２に対してドライバをインストールする必要がある。
【００５６】
図８は従来の技術に対して初期構築の必要性を説明する一例を示している。図８では、現用系物理サーバ６０１と待機系物理サーバ６０２のインターフェースが異なっている場合を示している。インターフェースＡ７０５はストレージ装置１１３のブートディスク８０１に接続され、インターフェースＢ７０６はデータディスク８０２に接続されている例を示している。この環境において、現用系のサーバ装置６０１に障害が発生した場合、待機系サーバ装置６０２のそれぞれインターフェースＣ８０１に接続されることになる。
【００５７】
しかし、アプリケーション環境６０３には、インターフェースＣ用のドライバが存在しないため、論理的にはブートディスク８０１とデータディスク８０２が待機系サーバ装置６０２に切り替わったとしてもインターフェースＣを制御できるドライバが存在しないため、動作することはできない。
【００５８】
切り替え後に正常な動作を行うためには、切り替え前に事前にインターフェースに合わせたドライバをＯＳ６０３にインストールする必要がある。そのために、従来は、初期構築時において、事前に切り替えの組み合わせの回数だけ切り替えを実施し、必要なドライバをインストールしておく必要があった。
【００５９】
図９はドライバのインストール方法の一例を示している。
【００６０】
待機系サーバ装置６０２でＯＳ６０３を起動させるために、Ｉ／Ｆ  Ｃ８０１に適合したＣ用ドライバ９０１をインストールする必要がある。従来の初期構築は、待機系サーバ装置６０２でＯＳ６０３が持っているドライバ（７０５〜７０６）に合わせてＩ／Ｆを選びＯＳ６０３を起動させる。そして、待機系サーバ装置６０２にＩ／Ｆ  Ｃ７０８を用意しＣ用ドライバ９０１をインストールする。以上の手順を踏んで、待機系サーバ装置６０２でＩ／Ｆに適応したドライバをインストールし動作環境を整える必要があった。
【００６１】
図１０は本実施例における動作概要の一例を示している。現用系サーバ装置６０１でＩ／Ｏ仮想化部１１１と仮想サーバ１１２を立ち上げる。待機系サーバ装置６０２が有するインターフェースを事前に検出し、Ｉ／Ｏ仮想化部１１１ではＩ／Ｆ  Ｃ５０８を模擬することによってＯＳ６０３に対してＩ／Ｆ  Ｃ８０１があるように見え、Ｃ用ドライバ９０１をＯＳ６０３にインストールが可能となる。
【００６２】
各現用系サーバ装置６０１に対して、複数台で同時にＩ／Ｏ仮想化部１１１と仮想サーバ１１２を立ち上げることができる。そのため初期構築の時間を短縮することが可能となる。また待機系サーバ装置６０２に適合するドライバのインストールまで行うことが可能である。
【００６３】
つまり、従来技術では、待機系サーバ装置６０２が有するインターフェースは、実際に現用系のサーバ装置６０１から切り替えるまでＯＳ６０３は知ることができなかった。そのため、現用系サーバ装置６０１と、待機系サーバ装置６０２の組み合わせの回数だけ切り替えて、必要に応じてドライバをインストールする作業を順次行う必要があった。
【００６４】
実施例１では、事前に待機系サーバ装置６０２のインターフェースを検出し、それに対応したＩ／Ｆを模擬することで、切り替えによる初期構築を行う必要がなくなる。従って、より高速に環境を構築することが出来ると共に、複雑な切り替え作業をプログラムで行うので、構築のミスを大幅に低減することができるようになる。
【００６５】
図１１は構成管理テーブル１０４の一例を示す。カラム１１０１は、サーバ装置識別子を示す。カラム１１０２はサーバ装置の電源状態を示す。例えば、電源のＯＮ／ＯＦＦ状態などが格納される。カラム１１０３は、Ｉ／Ｏ仮想化部起動状態が格納される。サーバ装置１０９でＩ／Ｏ仮想化部１１１が起動している場合にＯＮ、起動していない場合にＯＦＦＦが格納される。
【００６６】
カラム１１０４はサーバ装置１０９のＩ／Ｏデバイス（入出力デバイス）を示す。カラム１１０４はＩ／Ｏデバイスの種類１１０５と模擬１１０６の有無で構成される。カラム１１０５のＩ／Ｏデバイスの種類には、サーバ識別子１１０１に示されるサーバ装置１０９に接続されている全てのデバイスが格納される。
【００６７】
カラム１１０６にはそのＩ／Ｏデバイスが模擬されているデバイスであるかどうかを示す。カラム１１０７はサーバ装置の割当てディスクを示す。Ｉ／Ｏデバイスの中から、ＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）に関しては、ストレージ装置１１３の割り当てディスク１１５が格納される。
【００６８】
なお、カラム１１０７には、図１０で示したブートディスク８０１とデータディスク８０２を示す情報を付加しても良い。ブートディスク８０１とデータディスク８０２の情報を付加する方法として、例えば管理者が入力しても良いし、ＯＳ７０２が発見したディスクの順番を記載しても良い。最初に発見されたディスクがブートディスク８０１であることが多いためである。
【００６９】
カラム１１０８はサーバ装置のインストール済みドライバを示す。カラム１１０９はサーバ装置の状態を示す。サーバ装置管理テーブル１０８によって、サーバ装置１０９に割り当てられたＩ／Ｏデバイスやインストール済みドライバを管理することができるようになる。
【００７０】
図１２は、Ｉ／Ｏデバイス管理テーブル１０５の一例を示す。Ｉ／Ｏデバイス管理テーブル１０５は、Ｉ／ＯデバイスのＩ／Ｆと、ＨＢＡなどのＩ／Ｏデバイスの種類の対応づけを示す。カラム１２０１は、Ｉ／Ｏデバイス情報である、Ｉ／ＯデバイスのＩ／Ｆ１２０２と、Ｉ／Ｏデバイスの種類１２０３と、ファームウェアバージョン１２０４をまとめて格納する。
【００７１】
カラム１２０２は、Ｉ／ＯデバイスのＩ／Ｆが格納される。カラム１２０３は、Ｉ／ＯデバイスのＩ／Ｆに適合するＩ／Ｏデバイスの種類が格納される。Ｉ／Ｏデバイスの種類には、例えば、ＨＢＡの種類や型といった情報が格納される。一つのＩ／ＯデバイスのＩ／Ｆに複数のＩ／Ｏデバイスの種類が対応する場合もある。カラム１２０４は、Ｉ／Ｏデバイスの種類に対するドライバ情報およびファームウェアバージョンを格納する。一つのＩ／Ｏデバイスの種類に、複数のファームウェアバージョンを持つことが可能であり、Ｉ／Ｏデバイスの種類が持つことのできるファームウェアバージョンを全て格納できる。このＩ／Ｏデバイス管理テーブル１０５の情報は、管理サーバ内で持つ定義ファイルから取得できる。管理サーバは、この定義ファイルをベンダーからネットワーク経由で取得する。
【００７２】
図１３は、Ｉ／Ｆ管理テーブル１０６の一例を示す。Ｉ／Ｆ管理テーブル１０６は、Ｉ／ＯデバイスのＩ／Ｆ毎にＯＳの動作に必要となるドライバを管理するためのテーブルである。カラム１３０１はＩ／ＯデバイスのＩ／Ｆが格納される。カラム１３０２は、Ｉ／ＯデバイスのＩ／Ｆに適合したＩ／Ｆドライバの名称が格納される。このＩ／Ｆ管理テーブル１０６の情報は、管理サーバ内で持つ定義ファイルから取得できる。この定義ファイルはベンダーが各管理サーバにネットワーク経由で提供する。そのため、Ｉ／Ｆ管理テーブル１０６によって、Ｉ／ＯデバイスのＩ／Ｆに適合したＩ／Ｆドライバの情報が取得できる。
【００７３】
図１４はサーバ切り替え管理テーブル１０７の一例を示す。カラム１４０１はサーバ装置識別子が格納される。電源状態がＯＦＦでもＳＶＰ１１０からサーバ識別子を取得することが可能である。カラム１４０２は現用系サーバ装置障害時の切り替えサーバ識別子（待機系サーバ装置６０２）が格納される。一つの切り替えサーバに複数の現用系サーバ装置６０１が対応することが可能である。
【００７４】
カラム１４０３はフェイルオーバーの初期構築の状態を表す。初期構築状態が未設定、設定中、設定済みの情報を格納する。
【００７５】
図１５は障害検出部１０３の処理フローの一例を示す。障害検出部１０３は、サーバ装置１０９、あるいはＳＶＰ１１０などから発行された障害通知を契機に処理を開始し、障害を回復するためにサーバの切り替えを行う。障害発生通知受信部は、障害発生通知を受信する（ステップ１５０１）。障害発生通知は障害が発生した装置から管理サーバ１０１に転送される。サーバ装置１０９内やＳＶＰ１１０内や、ストレージ装置１１３内や管理サーバ１０１自身の障害を検知することが可能である。
【００７６】
障害検出部１０３は、サーバ装置１０９の障害がどうかを判定する（ステップ１５０２）。サーバ装置１０９の障害の場合は、障害管理部１０２は、サーバ切り替え部を呼び出す（ステップ１５０３）。呼び出し時には、パラメタとして、障害が発生したサーバ装置１０９の識別子や障害の部位、障害の重要度などを有する障害発生メッセージがサーバの切り替えのための情報として転送される。ネットワーク装置やストレージ装置などのその他で起きた障害の場合は、サーバ装置１０９を切り替えることなく終了する。この処理フローによって、どのサーバ装置１０９で障害が発生しているかを判断し、現用系サーバ装置６０１と待機系サーバ装置６０２とをサーバ切り替え部３０２によって切り替える（ステップ１５０３）。
【００７７】
図１６はサーバ切り替え部３０２の処理フローの一例を示す。最初に、障害発生メッセージから障害が発生したサーバ装置１０９の識別子を取得する（ステップ１６０１）。障害発生メッセージによって、切り替えを行うか行わないかの設定をすることが可能である。次に、障害が発生したサーバ装置を停止する（ステップ１６０２）。これは、障害が発生したサーバ装置１０９によって不要なＩ／Ｏの発行を防ぐ目的と、サーバ装置１１４に割り当てられたＩ／Ｏデバイス１１７を解放する目的がある。
【００７８】
次に、サーバ切り替え管理テーブル１０７を検索し、フェイルオーバーの初期設定構築状態を取得する（ステップ１６０３）。サーバ切り替え部３０２は、ステップ１６０３で取得した設定状態の情報を判定し、フェイルオーバーの初期構築設定が設定済みであればステップ１６０５に進む（ステップ１６０４）。初期構築設定が未設定や設定中の場合はサーバ切り替えを行わず終了する。サーバ切り替え管理テーブル１０７のサーバ障害時切り替えサーバ１４０２を取得し、切り替え先の待機系サーバ装置６０２を特定する。
【００７９】
次に、構成管理テーブル１０４を検索し、障害が発生したサーバ装置１０９が接続されたストレージのディスク情報を取得する（ステップ１６０５）。これは、現用系サーバ装置と繋がっていたディスクを待機系サーバ装置６０２に切り替えるためである。そして、構成管理テーブル１０４を検索し、障害が発生したサーバ装置に割り当てられたＩ／Ｏデバイスを取得する（ステップ１６０６）。どのサーバ装置１０９のＩ／Ｆ７０５を繋ぎかえるか判定する。切り替え先の待機系サーバ装置６０２のＩ／Ｏデバイスも構成管理テーブル１０４から取得することができる。
【００８０】
次に、パス切り替え部１１４に命令し、待機系サーバ装置６０２のＩ／Ｏデバイスと、障害が発生したサーバのＩ／Ｏデバイスのパスを交換する（ステップ１６０７）。最後に、待機系サーバ装置６０２を起動する（ステップ１６０８）。現用系サーバ装置６０１と繋がっていたディスク１１５が、待機系サーバ装置６０２に切り替わっているため、ディスク１１５を切り替え前の状態で使うことが可能である。このフローによって、サーバ装置１０９に障害が発生した場合に、障害が発生したサーバ装置１０９が使用していたディスク１１５を待機用のサーバ装置１０９に引き継ぐことができる。
【００８１】
図１７は構築管理部４０１のフローの一例を示す。構成管理部４０１は、サーバ切り替え管理テーブル１０７のフェイルオーバー設定状態１４０３を検索し、初期設定状態の設定済み、設定中、未設定を判定する（ステップ１７０２）。未設定の場合ステップ１７０３に移る。設定中や設定済みの場合は終了する。
【００８２】
現用系サーバの構成管理部４０１は、構成管理テーブル１０４を検索し、現用系サーバ装置６０１が停止しているかを判定する（ステップ１７０３）。停止していない場合はステップ１７０５に移る。停止している場合はステップ１７０４に移る。
【００８３】
構成管理部４０１はサバー起動部にサーバ装置６０１の起動を指示する。サーバ起動部１１６は、特定の現用系サーバ装置６０１を起動する（ステップ１７０４）。
【００８４】
構成管理部４０１はドライバ管理部４０４を呼び出す（ステップ１７０５）。
【００８５】
ドライバ管理部４０４は、現用系サーバ装置６０１と繋がるディスク１１５にインストールされたドライバ情報を取得し、構成管理テーブル１０４のカラム１１０８が呼び出され、インストール済みドライバ１１０８が格納される（ステップ１７０５）。
【００８６】
次に、構成管理部４０１は構成情報取得部４０３を呼び出す。構成情報取得部４０３は、サーバ切り替え管理テーブル１０７で特定した待機系サーバ装置装置６０２のＩ／Ｏ情報を、ミニＯＳ部２００３を介して取得する（ステップ１７０６）。取得した情報は構成管理テーブル１０４のＩ／Ｏデバイスの種類１１０５に格納される。
【００８７】
次に、構成管理部４０１は、構成比較部４０２を呼び出す。構成比較部４０２は、現用系サーバ装置６０１と繋がるディスク１１５のドライバと待機系サーバ装置６０２のＩ／Ｆの情報を比較する（ステップ１７０７）。比較した後、新たにドライバのインストールが必要であるかどうかの情報を結果としてステップ１７０８に引き継ぐ。
【００８８】
構成管理部４０１は、ステップ１７０７で呼び出した比較情報の結果により、現用系サーバ装置６０１と待機系サーバ装置６０２を切り替えた後、待機系サーバ装置６０２でディスク１１５を継続して使用可能であるかを判定する（ステップ１７０８）。その結果、使用可能であれば初期構築の必要がないと判定し、ステップ１７１０へ移る。使用不可能であれば初期構築の必要があると判定し、初期化部４０５を呼び出す（ステップ１７０９）。なお、ステップ１７０７で新たにドライバのインストールが必要である判定された場合は、初期構築の必要がある。
【００８９】
次に、構成管理部４０１は、初期化部４０５を呼び出す。初期化部４０１は、現用系サーバ装置６０１に対し、フェイルオーバーの初期構築を開始する（ステップ１７０９）。この処理フローによって、フェイルオーバーの初期構築を行うことができる。
【００９０】
最後に、構成管理部４０１は、サーバ切り替え管理テーブル１０７のフェイルオーバー設定状態１４０３を“完了”に更新する（ステップ１７１０）。
【００９１】
図１８はドライバ管理部４０４の処理フローの一例を示す。ドライバ管理部４０４は構築管理部４０１から呼び出される。ドライバ管理部４０４は、現用系サーバ装置６０１のＯＳ７０２からインストールされたドライバの情報を取得する（ステップ１８０１）。ドライバ管理部４０４は、ステップ１８０１で取得したドライバの情報を構成管理テーブル１０４のカラム１１０８に格納し更新する（ステップ１８０２）。
【００９２】
このフローによって、インストールされたドライバ情報を取得し、その情報を構成管理テーブル１０４に設定できる。ドライバ管理部４０４はＯＳ７０２が起動するたびに呼び出され、ドライバ情報を取得することができる。また、ドライバ更新の時や新たにインストールした時も、ドライバ管理部４０４が呼び出しドライバ情報を取得できる。
【００９３】
図１９は構成情報取得部４０３の処理フローの一例を示す。構成情報取得部４０３は、構築管理部４０１から呼び出される（ステップ１７０６）。まず、構成情報取得部４０３はサーバ切り替え管理テーブル１０７から検索後、対象の待機系サーバ装置６０２でネットワークを介してミニオペレーティングシステムを起動させるようＳＶＰ１１０に命令する（ステップ１９０１）。この命令をうけてＳＶＰ１１０は、待機系サーバ装置６０２でミニオペレーティングシステムをネットワークブートさせる。なお、ミニＯＳは予め待機系サーバ装置６０２が有していてもよいし、構成情報取得部４０３またはＳＶＰ１１１がミニＯＳを待機系サーバ装置６０２に配布してもよい。
【００９４】
次に、起動したミニオペレーティングシステム（ミニＯＳ）は、待機系サーバ装置６０２のＩ／Ｆ情報やサーバ構成情報を取得する（ステップ１９０２）。そして、構成情報取得部４０３は、ミニＯＳがステップ１９０２で取得した情報を構成管理テーブル１０４のカラム１１０５に格納し更新する（ステップ１９０３）。この処理フローによって、待機系サーバ装置６０２のＩ／Ｆ情報を取得する。
【００９５】
図２０は、構成情報取得部４０３の動作概要の一例を示している。待機系サーバ装置６０２のＩ／Ｆ情報を取得するための動作方法を示している。ＳＶＰ１１０はミニＯＳ格納部２００１を持つ。ミニＯＳ格納部２００１は、初期構築管理部１０３で呼び出した構成情報取得部４０３から指示を受け、特定の待機系サーバ装置６０２のミニＯＳ部２００３を起動させる。ミニＯＳ部は予め待機系サーバ装置６０２が有していてもよいし、構成情報取得部４０３またはＳＶＰ１１１がミニＯＳを待機系サーバ装置６０２に配布してもよい。
【００９６】
ミニＯＳ部２００３は、待機系サーバ装置６０２のメモリ５０１内で起動する。ミニＯＳ部２００３の物理デバイス情報取得部２００２によりＩ／Ｆ情報を取得し、構成情報取得部４０３に提供する。ミニＯＳ部２００３は待機系サーバ装置６０１のハードウェア構成情報やネットワーク情報を取得可能である。ミニＯＳ部２００３は、取得したハードウェア構成情報やネットワーク情報を、構成情報取得部４０３に送信する。また、ミニＯＳ部２００３は、取得したハードウェア構成情報やネットワーク情報をＳＶＰ１１０に送信し、ＳＶＰ１１０が構成情報取得部４０３にそれを送信することもできる。構成情報取得部４０３は取得したＩ／Ｆ情報を構成管理テーブルに保存する。
【００９７】
ミニＯＳ格納部２００１、ミニＯＳ部２００３、物理デバイス情報取得部２００２、はプログラムである。しかし、ミニＯＳ格納部２００１、ミニＯＳ部２００３、物理デバイス情報取得部２００２は、マイクロチップに集積回路化するなどしてハードウェアで実現することも可能である。
【００９８】
図２１は構成比較部４０２の処理フローの一例を示す。構成比較部４０２は、構築管理部４０１から呼び出される（ステップ１７０７）。構成比較部４０２は、サーバ切り替え管理テーブル１０７のサーバ障害時切り替えサーバ１４０２の情報を取得する（ステップ２１０１）。そして、現用系サーバ装置６０１と待機系サーバ装置６０２の対応と設定状態を取得する。構成比較部４０２は、構成管理テーブル１０４で現用系サーバ装置６０１と待機系サーバ装置６０２のサーバ構成情報を取得する（ステップ２１０２）。
【００９９】
ここでは、サーバ装置１０９のＩ／Ｏデバイス情報１１０４を取得する。そして、構成比較部４０２は、現用系サーバ装置６０１と待機系サーバ装置６０２のＩ／Ｏデバイスが同種類であるか比較する（ステップ２１０３）。異なる種類の場合は、ステップ２１０４に移る。同じ種類の場合は、ドライバインストールの必要がないと判定し、構成比較部４０２を終了する。
【０１００】
ステップ２１０４では、構成比較部４０２が待機系サーバ装置６０２のＩ／Ｏデバイスと現用系にインストールされているドライバが一致するか比較する（ステップ２１０４）。一致しない場合、インストールが必要という結果を保持する（ステップ２１０５）。一致する場合は、ドライバインストールの必要がないと判定し、構成比較部４０２を終了する。
【０１０１】
インストールドライバが現用系のＩ／Ｏと一致しない場合、待機系サーバ装置６０２のドライバを現用系サーバ装置６０１にインストールする必要があるという結果を保持し終了する（ステップ２１０５）。このフローによって、初期構築が必要であるかどうかを判定しその結果を保持し、呼び出し元の構築管理部４０１のステップ１７０８に引き継ぐことができる。
【０１０２】
図２２は、初期化部４０５の処理フローの一例を示す。初期化部４０５は構築管理部４０１から呼び出される（ステップ１７０９）。初期化部４０５は、サーバ切り替え管理テーブル１０７のフェイルオーバー設定状態１４０３を「設定中」に更新する（ステップ２２０１）。次に、Ｉ／Ｏ仮想化管理部４０６を呼び出し、ドライバが必要と判定された場合、待機系サーバ装置６０２のＩ／Ｆを模擬する（ステップ２２０２）。これによりドライバをインストールする環境を現用系サーバ装置６０１で実現する。
【０１０３】
初期化部４０５は、Ｉ／Ｏ仮想化部１１１で新たにＩ／Ｆが模擬されているかを判定する（ステップ２２０３）。Ｉ／Ｆが模擬されている場合は、ステップ２２０４へ移る。Ｉ／Ｆが模擬されていない場合は、ステップ２２０８へ移る。
【０１０４】
初期化部４０５は、Ｉ／Ｏデバイス管理テーブル１０５の１２０４から、模擬されたＩ／Ｆに対応するドライバの情報を取得し、どのドライバをインストールすればよいか判定する（ステップ２２０４）。Ｉ／Ｏデバイス管理テーブル１０５の１２０４には、ドライバ情報およびそのファームウェアバージョンが格納されている。初期化部４０５は、ステップ２２０４で判定された、待機系サーバ装置６０２のＩ／Ｆに適合するドライバを管理サーバからネットワーク経由で現用系サーバ装置６０１に配信し、現用系サーバ装置６０１のＯＳ７０２にインストールする。
【０１０５】
ＯＳ７０２は、模擬された新しいＩ／Ｆを発見するとドライバのインストールを試み、配信されたドライバをインストールする。ＯＳ７０２はドライバのインストール時に、模擬されたＩ／Ｆとの通信を行い、ドライバが正常にインストールされたか確認する。
【０１０６】
本実施例では、待機系サーバ装置６０２のＩ／Ｆを現用系サーバ装置６０１で模擬し、ＯＳ７０２に新たなデバイスが検出させることで、ＯＳ７０２に対し新たなドライバをインストールするトリガを与え、待機系サーバ装置６０２のＩ／Ｆに対応するドライバをインストールする。
【０１０７】
初期化部４０５は、インストールしたドライバの情報を構成管理テーブル１０４のカラム１１０８に追加する（ステップ２２０６）。また、現用系サーバ装置６０１にインストールされたドライバと待機系サーバ装置６０２のＩ／Ｆを比較し、インストール済みドライバと未対応のＩ／Ｆが残っていないかを検索する。
【０１０８】
初期化部４０５は、インストールが必要なドライバが他に存在しないかを判定し、存在する場合は、ステップ２２０２に戻る（ステップ２２０７）。インストールするドライバが無くなるまで、ステップ２２０２〜ステップ２２０４を繰り返す。初期化部４０５は、ステップ２２０４でインストールするスドライバが見つからない場合、ステップ２２０８に移る。
【０１０９】
初期化部４０５は、ＳＶＰ１１０に指示し、仮想化サーバ１１２とＩ／Ｏ仮想化部１１１を撤去する（ステップ２２０８）。このフローでは、待機系サーバ装置６０２とディスク１１５を繋ぎかえること無く、現用系サーバ装置６０１に繋がるディスク１１５に待機系サーバ装置６０２のＩ／Ｆ用ドライバをインストールすることができる。
【０１１０】
なお、本実施例１では、待機系サーバ６０２に切り替えることなくドライバをインストールする方法について記載しているが、実施例１における方法と待機系サーバ６０２に切り替える方法とを混在させても良い。例えば、Ｉ／Ｆ管理テーブル１０６に格納されていないＩ／Ｆを待機系サーバ装置６０２が有していると判断された場合は、Ｉ／Ｆを模擬してドライバをインストールする方法を用いずに待機系サーバ装置６０２に切り替えてドライバをインストールしても良い。これにより、さらにフェイルオーバー環境の構築が容易になる。
【０１１１】
図２３は、Ｉ／Ｏ仮想化管理部４０６の処理フローの一例を示す。Ｉ／Ｏ仮想化管理部４０６は、初期化部４０５のから呼び出される（ステップ２２０２）。Ｉ／Ｏ仮想化管理部４０６は、構成管理テーブル１０４を呼び出し、構成管理テーブル１０４のＩ／Ｏ仮想化部起動状態１１０３の情報を取得する（ステップ２３０１）。次に、ステップ２３０１で呼び出した構成管理テーブル１０４から、該当する現用系サーバ装置６０１のＩ／Ｏ仮想化部起動状態１１０３を検索し、起動しているかどうか判定する（ステップ２３０２）。起動していない場合はステップ２３０３に移る。起動している場合は、ステップ２３０４に移る。
【０１１２】
Ｉ／Ｏ仮想化管理部４０６は、ＳＶＰ１１０を介して、現用系サーバ装置６０１のサーバ起動部１１６に起動命令を送信する。起動命令を受信したサーバ起動部１１６は、仮想サーバ１１２とＩ／Ｏ仮想化部１１１を起動する（ステップ２３０３）。Ｉ／Ｏ仮想化管理部４０６は、構成管理テーブル１０４のＩ／Ｏ仮想化部起動状態１１０３をＯＮに更新する（ステップ２３０４）。次に、構成管理テーブル１０４から待機系サーバ装置６０２のＩ／Ｏデバイス情報を取得する（ステップ２３０５）。そして、待機系サーバ装置６０２のＩ／Ｏデバイス情報をもとにＩ／Ｏデバイス管理テーブル１０５から対応するＩ／Ｆを取得し、模擬するＩ／Ｆを特定する（ステップ２３０６）。
【０１１３】
Ｉ／Ｏ仮想化管理部４０６の最後に、ステップ２３０６で特定したＩ／Ｆの模擬をＩ／Ｏ仮想化部１１１に指示する（ステップ２３０７）。このフローによって、Ｉ／Ｏ仮想化部１１１で待機系物理サーバ装置６０２の持つＩ／Ｆを、現用系物理サーバ装置６０１で模擬することができる。
【０１１４】
図２４は、Ｉ／Ｏ仮想化管理部４０６の動作概要の一例を示している。Ｉ／Ｆ  Ａ２４０１とＩ／Ｆ  Ｂ２４０２はＩ／Ｏ仮想化部１１１によって作り出されたＩ／Ｆである。Ｉ／Ｏ仮想化部１１１は部分的に仮想化することも可能である。例えば、Ｉ／Ｆ  Ａ２４０１やＩ／Ｆ  Ｂ２４０２はＩ／Ｏ仮想化部を通しＯＳ７０２と繋がっているが、Ｉ／Ｏ仮想化部１１１を通さず直接現用系サーバ装置６０２のＩ／Ｆ  Ａ７０５とＡ用ドライバ７０３をＩ／Ｆ  Ｂ７０６とＢ用ドライバ７０４を繋げることができる。Ｉ／Ｆ  Ｃ２４０３２のみ模擬しＩ／Ｆを作り出すことが可能である。
【０１１５】
ＯＳ７０２はＩ／Ｆ  Ａ２４０１とＡ用ドライバ７０３、Ｉ／Ｆ  Ｂ２４０２とＢ用ドライバ７０４がそれぞれ適合することで起動が可能となる。Ｉ／Ｏ仮想化部１１１のＩ／Ｆ模擬部５０８によって仮想Ｉ／Ｆ  Ｃ２４０３を作ることによって、ＯＳ７０２は現用物理サーバ６０１にＩ／Ｆ  Ｃが存在しているように見える。Ｉ／Ｆ  Ｃの模擬によってＯＳ７０２にＩ／Ｆ  Ｃを認識させることによって、ＯＳ７０２はＣ用ドライバ９０１のインストールを開始する。また、ＯＳ７０２はドライバのインストール時に、模擬されたＩ／Ｆとの通信を行い、ドライバが正常にインストールされたか確認する。
【実施例２】
【０１１６】
図２５は第２の実施例についての、初期構築の不必要性を説明している。図２５では、現用系サーバ装置６０１と待機系サーバ装置６０２のインターフェースが異なっている場合を示している。初期構築をしていないときの、待機系サーバ装置６０２でＯＳ７０２を起動させる構成例を示している。Ｉ／Ｆ  Ａ２５０１とＩ／Ｆ  Ｂ２５０２はＩ／Ｏ仮想化部１１１によって模擬されたＩ／Ｆである。
【０１１７】
図２６は第２の実施例について示している。図２６では、待機系サーバ装置６０２にてＯＳ７０２を起動させる場合の構成を示す。現用系サーバ装置６０１と待機系サーバ装置６０２のＩ／Ｆが異なる場合、切り替え先である待機系サーバ装置６０２でＩ／Ｏ仮想化部１１１を立ち上げる。Ｉ／Ｏ仮想化部１１１はＩ／Ｆ  ＣをＩ／Ｆ  Ａ２５０１とＩ／Ｆ  Ｂ２５０２に模擬する。Ｉ／Ｆ模擬部５０８は、例えば、Ｉ／Ｆの識別子と、ＯＳ７０２が発行するＩ／Ｆに対する制御レジスタの挙動をあらかじめＩ／Ｆ模擬部に登録しておき、Ｉ／Ｆの識別子の模擬の要求に対して、対応する制御レジスタの挙動を同じにすることでＩ／Ｆ  Ａ２５０１とＩ／Ｆ  Ｂ２５０２とが有する機能を模擬する。
【０１１８】
Ｉ／Ｆ  Ｃに対する入出力を、Ｉ／Ｆ  Ａ２５０１とＩ／Ｆ  Ｂ２５０２への入出力に変換する。この場合、Ｉ／Ｆ  Ｃに対する処理をＩ／Ｆ  Ａ２５０１とＩ／Ｆ  Ｂ２５０２への処理に振り分けてもよいし、すべての処理をＩ／Ｆ  Ａ２５０１またはＩ／Ｆ  Ｂ２５０２の片方に振り分けてもよい。
【０１１９】
模擬されたＩ／Ｆ  Ａ２５０１はＡ用ドライバに、Ｉ／Ｆ  Ｂ２５０２はＢ用ドライバによってＯＳ７０２が起動する。その後、起動したＯＳ７０２にＣ用ドライバをインストールする。Ｉ／Ｏ仮想化部１１１を取り去る時にはＣ用ドライバによってＯＳ７０２が起動される。ＯＳ７０２でインストールされているドライバに適合するＩ／ＦをＩ／Ｏ仮想化部１１１で模擬することによって、現用系サーバ装置６０１と構成が異なった待機系サーバ装置６０２にＯＳ７０２を起動させることができる。初期設定完了後に構成変更が行われた場合でも、フェイルオーバーが可能となる。
【０１２０】
図２７は実施例２のサーバ切り替え部３０２の処理フローを示す。ステップ２７０１〜２７０８は、図１６のステップ１６０１〜１６０８と同様の処理である。ステップ２７０９は待機系サーバ装置６０２を起動した後に構成管理部４０１を呼び出し、待機系サーバ装置６０２にてＩ／Ｏ仮想化部１１１を立ち上げる。この場合、初期設定の状態に関わらず、待機系サーバ装置でＯＳ７０２が起動することが可能である。また、初期設定から待機系サーバ装置の構成が変わっていなければ、本来のフェイルオーバー機能で現用系サーバ装置と切り替えることが可能である。
【０１２１】
なお、本実施例２では現用系サーバ装置６０１の障害時に、任意の待機系サーバ装置６０２を選択し、必要に応じてドライバのインストールを行う方法について述べている。他の方法として、任意の待機系サーバ装置６０２を選択するのではなく、ドライバのインストールができるだけ不要になる待機系サーバ６０２を選択する方法も考えられる。例えば、サーバ切り替え管理テーブル１０７のサーバ障害時切り替えサーバ１４０２のカラムに記載された待機系サーバ装置６０２について構成管理テーブル１０４を検索し、最も構成が似ている待機系サーバ装置６０２を選択するなどの方法が考えられる。
【０１２２】
ここで、構成が似ているとは、できるだけ障害が発生した現用系サーバ装置６０１が有するＩ／Ｆと同じＩ／Ｆを有する待機系サーバ装置６０２を選択する方法が考えられる。
【０１２３】
また、他の方法として、障害が発生した現用系サーバ装置６０１が有するＩ／Ｆの種類と待機系サーバ装置６０２が有するＩ／Ｆの種類ができるだけ同じ待機系サーバ装置６０２を選択する方法が考えられる。これは、現用系サーバ装置６０１と待機系サーバ装置６０２が有するＩ／Ｆの種類に違いが多いと、本来必要ではないドライバをインストールすることになり、インストールの時間がかかることや、不要なドライバがインストールされることでシステムの安定性が低下する可能性を排除する目的がある。
【０１２４】
また、ドライバのインストールが必要なＩ／Ｆがブートディスク８０１とデータディスク８０２かによって、ドライバのインストール方法を変えても良い。例えば、待機系サーバ装置６０２が有する複数のＩ／Ｆの内、ブートディスク８０１に接続されたＩ／Ｆのドライバが既にインストールされて起動可能である場合は、Ｉ／Ｏ仮想化部を用いずに待機系サーバ装置６０２を起動した後に、他の不足するＩ／Ｆのドライバをインストールする制御を行っても良い。
【０１２５】
ブートディスク８０１に接続されたＩ／Ｆのドライバが既にインストールされているかどうかは、構成管理テーブル１０４の割り当てディスク１１０７からブートディスクかどうかを判定し、ブートディスクに接続されたＩ／Ｏデバイスの種類１１０５が、現用系サーバ装置６０１と待機系サーバ装置６０２で一致しているかどうかで判定することができる。
【０１２６】
また、他の方法として、ブートディスク８０１を用いてブート可能な待機系サーバ装置６０２を検索し、切り替える方法も考えられる。例えば障害が発生した現用系サーバ装置６０１に接続されたブートディスク８０１と対応するＩ／Ｆを構成管理テーブル１０４のディスク１１０７とブートディスクに接続されたＩ／Ｏデバイスの種類１１０５から検索し、Ｉ／Ｏデバイスの種類１１０５と同じＩ／Ｆを有する待機系サーバ装置６０２を検索することで実現できる。
【０１２７】
これらの方法により、Ｉ／Ｏ仮想化部１１１が必要ない場合はＩ／Ｏ仮想化部１１１を起動する必要がなくなるため、構築に要する時間をさらに短縮することができる。
【図面の簡単な説明】
【０１２８】
【図１】本発明の全体構成図を示す。
【図２】管理サーバの構成図を示す。
【図３】障害管理部の構成図を示す。
【図４】初期構築管理部の構成図を示す。
【図５】サーバ装置の構成図を示す。
【図６】サーバ装置障害時の回復方法の概要を示す。
【図７】サーバ装置とアプリケーション環境の構成図を示す。
【図８】現用系サーバ装置と待機系サーバ装置の構成が異なった場合の概要を示す。
【図９】従来のフェイルオーバー初期構築方法を示す。
【図１０】本発明のフェイルオーバー初期構築方法を示す。
【図１１】構成管理テーブルを示す。
【図１２】Ｉ／Ｏデバイス管理テーブルを示す。
【図１３】Ｉ／Ｆ管理テーブルを示す。
【図１４】サーバ切り替え管理テーブルを示す。
【図１５】障害検出部のフローチャートを示す。
【図１６】サーバ切り替え部のフローチャートを示す。
【図１７】構成管理部のフローチャートを示す。
【図１８】ドライバ管理部のフローチャートを示す。
【図１９】構成情報取得部のフローチャートを示す。
【図２０】構成情報取得の実施例を示す。
【図２１】構成比各部のフローチャートを示す。
【図２２】初期化部のフローチャートを示す。
【図２３】Ｉ／Ｏ仮想化管理部のフローチャートを示す。
【図２４】Ｉ／Ｏ仮想化の実施例を示す。
【図２５】本発明の実施例２を示す。
【図２６】Ｉ／Ｏ仮想化の実施例２を示す。
【図２７】実施例２のサーバ切り替え部のフローチャートを示す。
【符号の説明】
【０１２９】
１０１    管理サーバ
１０２    障害管理部
１０３    初期構築管理部
１０４    構成管理テーブル
１０５    Ｉ／Ｏデバイス管理テーブル
１０６    Ｉ／Ｆ管理手^ブル
１０７    サーバ切り替え管理テーブル
１０８    ネットワークスイッチ
１０９    サーバ装置
１１０    ＳＶＰ
１１１    Ｉ／Ｏ仮想化部
１１２    仮想サーバ
１１３    ストレージ装置
１１４    パス切り替え部
１１５    ディスク
【図１】
0004448878.tif 000002
【図２】
0004448878.tif 000003
【図３】
0004448878.tif 000004
【図４】
0004448878.tif 000005
【図５】
0004448878.tif 000006
【図６】
0004448878.tif 000007
【図７】
0004448878.tif 000008
【図８】
0004448878.tif 000009
【図９】
0004448878.tif 000010
【図１０】
0004448878.tif 000011
【図１１】
0004448878.tif 000012
【図１２】
0004448878.tif 000013
【図１３】
0004448878.tif 000014
【図１４】
0004448878.tif 000015
【図１５】
0004448878.tif 000016
【図１６】
0004448878.tif 000017
【図１７】
0004448878.tif 000018
【図１８】
0004448878.tif 000019
【図１９】
0004448878.tif 000020
【図２０】
0004448878.tif 000021
【図２１】
0004448878.tif 000022
【図２２】
0004448878.tif 000023
【図２３】
0004448878.tif 000024
【図２４】
0004448878.tif 000025
【図２５】
0004448878.tif 000026
【図２６】
0004448878.tif 000027
【図２７】
0004448878.tif 000028