(57)【要約】【課題】業務システムのサービスレベルを遵守する。【解決手段】現用系及び待機系の業務実行物理サーバにクラスタ共有ボリュームを共有させたクラスタシステムである。システムの稼動目標であるサービスレベル，複数の仮想サーバの再起動順序を記憶し，仮想サーバの稼動実績を検出する稼動実績検出部と，仮想サーバのメンテナンス中に仮想サーバの再起動時間を計測し，計測した再起動時間に更新する構成変更検出部と，複数の仮想サーバの冗長度を算出し，算出した冗長度と，検出された稼動実績と，記憶されているサービスレベルと，更新された再起動時間とに基づいて，新たな再起動順序を決定し，決定した新たな再起動順序に更新する再起動順序更新部と，現用系の業務実行物理サーバから待機系の業務実行物理サーバへフェイルオーバーするとき，更新された新たな再起動順序に基づいて，待機系の業務実行物理サーバ上で複数の仮想サーバを再起動する仮想サーバ再起動部とを備える。【選択図】図１
2012108651.tif 000002
【特許請求の範囲】
【請求項１】
業務システムを実現する複数の仮想サーバを稼動させる業務実行物理サーバを，現用系と待機系のクラスタ構成にし，前記現用系及び前記待機系の業務実行物理サーバにクラスタ共有ボリュームを共有させたクラスタシステムであって，
前記業務システムの稼動目標であるサービスレベルを前記クラスタ共有ボリュームに記憶するＳＬＡ記憶部と，
前記複数の仮想サーバの再起動順序を前記クラスタ共有ボリュームに記憶する再起動順序記憶部と，
前記仮想サーバの稼動実績を検出する稼動実績検出部と，
前記クラスタ共有ボリュームに格納されている，前記仮想サーバのメンテナンス期間を示すメンテナンス情報に基づいて，前記メンテナンス期間中に前記仮想サーバの再起動時間を計測し，前記クラスタ共有ボリュームに記憶されている，前記仮想サーバの再起動時間を計測した前記再起動時間に更新する構成変更検出部と，
前記複数の仮想サーバの各々の冗長度を算出し，算出した前記冗長度と，前記稼動実績検出部で検出された前記稼動実績と，前記ＳＬＡ記憶部で記憶されている前記サービスレベルと，更新された前記再起動時間とに基づいて，新たな再起動順序を決定し，前記クラスタ共有ボリュームに記憶されている再起動順序を，決定した前記新たな再起動順序に更新する再起動順序更新部と，
前記現用系の業務実行物理サーバから前記待機系の業務実行物理サーバへフェイルオーバーするとき，前記再起動順序更新部によって更新された前記新たな再起動順序に基づいて，前記待機系の業務実行物理サーバ上で前記複数の仮想サーバを再起動する仮想サーバ再起動部と，
を備えたことを特徴とするクラスタシステム。
【請求項２】
前記サービスレベルは，前記業務システムの許容ダウン時間及び許容ダウン回数であり，
前記稼動実績検出部は，前記仮想サーバのダウンの検出に応答して，前記仮想サーバがダウンしてから再起動されるまでのダウン時間を算出し，前記ダウン時間が前記許容ダウン時間を超過したら，前記クラスタ共有ボリュームに記憶されているダウン回数を加算し，加算した前記ダウン回数を前記稼動実績とし，
前記再起動順序更新部は，前記複数の仮想サーバの各々の冗長度を算出し，算出した前記冗長度と，前記稼動実績検出部で検出された前記稼動実績としての前記ダウン回数と，前記ＳＬＡ記憶部で記憶されている前記許容ダウン回数と，更新された前記再起動時間とに基づいて，前記新たな再起動順序を決定し，前記クラスタ共有ボリュームに記憶されている再起動順序を，決定した前記新たな再起動順序に更新することを特徴とする請求項１記載のクラスタシステム。
【請求項３】
前記再起動順序更新部は，前記複数の仮想サーバに対して予め設定されている起動ルールに応じて，前記新たな再起動順序を入れ替えることを特徴とする請求項２記載のクラスタシステム。
【請求項４】
前記メンテナンス期間の残り時間と前記新たな再起動時間との差に基づき，前記仮想サーバを再起動させる仮想サーバ再起動部を備えたことを特徴とする請求項３記載のクラスタシステム。
【請求項５】
前記稼動実績検出部は，前記再起動時間と前記業務システムの所定期間におけるダウンタイムとの和を予測ダウンタイムとして（（業務提供時間−予測ダウンタイム）＊１００／業務提供時間）により実稼働率を求め，前記許容稼働率と求めた前記実稼働率との差を前記仮想サーバの稼動実績とすることを特徴とする請求項１記載のクラスタシステム。
【請求項６】
前記構成変更検出部は，前記再起動時間を計測する前記仮想サーバをコピーし，コピーした前記仮想サーバを起動させる仮想サーバコピー部を備え，
前記構成変更検出部は，前記コピーした仮想サーバを再起動させたときの再起動時間を計測することを特徴とする請求項１記載のクラスタシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，仮想サーバを稼動させる物理サーバによるクラスタシステムに関する。
【背景技術】
【０００２】
サーバ仮想化環境では，１台の物理サーバの障害が複数の仮想サーバの停止を引き起こす。そこで，物理サーバの障害から業務の可用性を高めるために，ハイパーバイザー層でのクラスタ技術（以降，ＶＭクラスタと呼ぶ）が提供されている。ＶＭクラスタでは，障害が発生した物理サーバ上で稼働していた仮想サーバを他の物理サーバ上で再起動させ高可用性を確保する。ＶＭクラスタにおいて，仮想サーバの再起動の順番は，あらかじめ管理者が各仮想サーバの再起動時間を考慮して入力した再起動順序に従う。
【０００３】
特許文献１に記載されている技術によれば，ユーザからのリクエストの種別と起動順序との対応テーブルを用意しておき，このテーブルに記載の起動順序とリクエスト件数からソフトウェアをフェイルオーバーした際の起動順序を決定している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２６０３５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
仮想サーバの再起動時間（再起動時間は，仮想サーバ上で稼働するＯＳやソフトウェアが停止してから，再起動し，利用可能になる状態までを示す。）は，この仮想サーバのメンテナンス（ＯＳやソフトウェアのアップデート）を行うことで変更される。アップデートの内容やタイミングは，仮想サーバが提供する業務，ＯＳやソフトウェアの種別によって異なる。そのため当初予定していた再起動順序で各仮想サーバをフェイルオーバーし，再起動しても，当初予定していた再起動時間よりも実際の再起動時間が長くなり，仮想サーバが提供する業務の提供開始時間が遅れ，当該業務を利用するユーザとの間で締結されたＳＬＡ(Ｓｅｒｖｉｃｅ Ｌｅｖｅｌ Ａｇｒｅｅｍｅｎｔ)が守れなくなるという課題がある。また，物理サーバ上に，新規に仮想サーバをデプロイし，起動させた場合も，デプロイした仮想サーバの再起動順序の設定によっては，同じ物理サーバ上で稼働している他の仮想サーバの再起動順序が変更される。また，再起動順序の設定を誤った場合も，仮想サーバが提供する業務の提供開始時間が遅れ，当該業務を利用するユーザとの間で締結されたＳＬＡが守れなくなる。
【０００６】
特許文献１の方法によれば，ソフトウェアに関連する業務の重要度（ソフトウェアに対するアクセス件数など）に基づいて，該ソフトウェアのフェイルオーバーの起動順序を決定しており，顧客と取り決めたサービスレベル（可用性）を確保しつつ，仮想サーバを起動できるかどうかの判定は行っていない。また，仮想サーバの起動時間の考慮は行っていない。そのため，複数の仮想サーバに対する顧客からのリクエストが同じである場合，起動時間の短い仮想サーバから起動させた方が効率的であるが，そのような処理は行っておらず，結果として多くの顧客リクエストを取りこぼしてしまうケースがある。また，特許文献１の方法により決定した起動優先順でサーバを起動した際，予定していた仮想サーバの起動時間よりも，実際の仮想サーバの起動時間が長い場合，この仮想サーバに関連する業務システムのサービスレベル（可用性）を違反してしまうケースがある。
【課題を解決するための手段】
【０００７】
開示されるクラスタシステムは、業務システムを実現する複数の仮想サーバを稼動させる業務実行物理サーバを，現用系と待機系のクラスタ構成にし，現用系及び待機系の業務実行物理サーバにクラスタ共有ボリュームを共有させたクラスタシステムである。業務システムの稼動目標であるサービスレベルをクラスタ共有ボリュームに記憶するＳＬＡ記憶部と，複数の仮想サーバの再起動順序をクラスタ共有ボリュームに記憶する再起動順序記憶部と，仮想サーバの稼動実績を検出する稼動実績検出部と，クラスタ共有ボリュームに格納されている，仮想サーバのメンテナンス期間を示すメンテナンス情報に基づいて，メンテナンス期間中に仮想サーバの再起動時間を計測し，クラスタ共有ボリュームに記憶されている，仮想サーバの再起動時間を計測した再起動時間に更新する構成変更検出部と，複数の仮想サーバの各々の冗長度を算出し，算出した冗長度と，稼動実績検出部で検出された稼動実績と，ＳＬＡ記憶部で記憶されているサービスレベルと，更新された再起動時間とに基づいて，新たな再起動順序を決定し，クラスタ共有ボリュームに記憶されている再起動順序を，決定した新たな再起動順序に更新する再起動順序更新部と，現用系の業務実行物理サーバから待機系の業務実行物理サーバへフェイルオーバーするとき，再起動順序更新部によって更新された新たな再起動順序に基づいて，待機系の業務実行物理サーバ上で複数の仮想サーバを再起動する仮想サーバ再起動部とを備える。
【０００８】
開示されるクラスタシステムの他の望ましい態様は、サービスレベルは，業務システムの許容ダウン時間及び許容ダウン回数であり，稼動実績検出部は，仮想サーバのダウンの検出に応答して，仮想サーバがダウンしてから再起動されるまでのダウン時間を算出し，ダウン時間が許容ダウン時間を超過したら，クラスタ共有ボリュームに記憶されているダウン回数を加算し，加算したダウン回数を稼動実績とし，再起動順序更新部は，複数の仮想サーバの各々の冗長度を算出し，算出した冗長度と，稼動実績検出部で検出された稼動実績としてのダウン回数と，ＳＬＡ記憶部で記憶されている許容ダウン回数と，更新された再起動時間とに基づいて，新たな再起動順序を決定し，クラスタ共有ボリュームに記憶されている再起動順序を，決定した新たな再起動順序に更新する。
【０００９】
開示されるクラスタシステムのさらに他の望ましい態様は、再起動順序更新部は，複数の仮想サーバに対して予め設定されている起動ルールに応じて，新たな再起動順序を入れ替える。
【００１０】
開示されるクラスタシステムのさらに他の望ましい態様は、メンテナンス期間の残り時間と新たな再起動時間との差に基づき，仮想サーバを再起動させる仮想サーバ再起動部を備える。
【００１１】
開示されるクラスタシステムのさらに他の望ましい態様は、稼動実績検出部は，再起動時間と業務システムの所定期間におけるダウンタイムとの和を予測ダウンタイムとして（（業務提供時間−予測ダウンタイム）＊１００／業務提供時間）により実稼働率を求め，許容稼働率と求めた実稼働率との差を前記仮想サーバの稼動実績とする。
【００１２】
開示されるクラスタシステムのさらに他の望ましい態様は、構成変更検出部は，再起動時間を計測する仮想サーバをコピーし，コピーした仮想サーバを起動させる仮想サーバコピー部を備え，構成変更検出部は，コピーした仮想サーバを再起動させたときの再起動時間を計測する。
【発明の効果】
【００１３】
本発明によれば，仮想サーバの起動時間が変更されても，業務システムのサービスレベルの遵守が可能となる。
【図面の簡単な説明】
【００１４】
【図１】業務システムの構成の一例を示すブロック図である。
【図２】業務実行物理サーバのハードウェア構成図の一例である。
【図３】ＳＬＡ定義テーブルの一例である。
【図４】システム構成テーブルの一例である。
【図５】再起動順序テーブルの一例である。
【図６】メンテナンステーブルの一例である。
【図７】業務ダウン回数テーブルの一例である。
【図８】クラスタ構成テーブルの一例である。
【図９】起動ルールテーブルの一例である。
【図１０】業務提供情報テーブルの一例である。
【図１１】業務ダウンタイムテーブルの一例である。
【図１２】稼働率ベース再起動順序テーブルの一例である。
【図１３】仮想サーバの再起動順序決定処理のフロー図の一例である。
【図１４】構成変更検出部による，仮想サーバの再起動時間の計測処理のフロー図の一例である。
【図１５】再起動順序更新部による，仮想サーバの再起動順序を決定する処理のフロー図の一例である。
【図１６】再起動更新部による，仮想サーバの再起動順序の入れ替え処理のフロー図の一例である。
【図１７】稼働率算出部による，業務システムの稼働率遵守度の算出処理のフロー図の一例である。
【発明を実施するための形態】
【００１５】
開示されるクラスタシステムは、業務システムを実現する複数の仮想サーバを稼動させる業務実行物理サーバを，現用系と待機系のクラスタ構成にし，現用系及び待機系の業務実行物理サーバにクラスタ共有ボリュームを共有させたクラスタシステムである。業務システムの稼動目標であるサービスレベルをクラスタ共有ボリュームに記憶するＳＬＡ記憶部と，複数の仮想サーバの再起動順序をクラスタ共有ボリュームに記憶する再起動順序記憶部と，仮想サーバの稼動実績を検出する稼動実績検出部と，クラスタ共有ボリュームに格納されている，仮想サーバのメンテナンス期間を示すメンテナンス情報に基づいて，メンテナンス期間中に仮想サーバの再起動時間を計測し，クラスタ共有ボリュームに記憶されている，仮想サーバの再起動時間を計測した再起動時間に更新する構成変更検出部と，複数の仮想サーバの各々の冗長度を算出し，算出した冗長度と，稼動実績検出部で検出された稼動実績と，ＳＬＡ記憶部で記憶されているサービスレベルと，更新された再起動時間とに基づいて，新たな再起動順序を決定し，クラスタ共有ボリュームに記憶されている再起動順序を，決定した新たな再起動順序に更新する再起動順序更新部と，現用系の業務実行物理サーバから待機系の業務実行物理サーバへフェイルオーバーするとき，再起動順序更新部によって更新された新たな再起動順序に基づいて，待機系の業務実行物理サーバ上で複数の仮想サーバを再起動する仮想サーバ再起動部とを備える。
【００１６】
なお、稼動実績検出部として、仮想サーバがダウンしてから再起動されるまでのダウン時間を算出し，ダウン時間が許容ダウン時間を超過したら，クラスタ共有ボリュームに記憶されているダウン回数を加算し、ダウン回数を稼動実績とする業務ダウン検出と、仮想サーバの実稼働率を求め，許容稼働率と求めた実稼働率との差を仮想サーバの稼動実績とする稼動実績検出の態様を説明する。
【００１７】
図１は，本実施形態の業務システム１０の構成を示すブロック図である。業務システム１０は，業務実行物理サーバ（現用系）１００，業務実行物理サーバ（待機系）２００，記憶装置としてのクラスタ共有ボリューム３００を有し，それらは，ネットワーク１４０９を介して相互に通信可能に接続している。
【００１８】
業務実行物理サーバ（現用系）１００および業務実行物理サーバ（待機系）２００は，一般的なハードウェア構成を有する計算機であって，その構成例を図２に示す。計算機１４０１は，ＣＰＵ１４０２，メモリ（ＲＡＭ，ＲＯＭ等）１４０３，通信インタフェース（ＮＩＣ等）１４０５，キーボード，マウス等の入力装置１４０７，表示装置，プリンタ等の出力装置１４０８などを備えている。
【００１９】
図１では，業務実行物理サーバ（現用系）１００および業務実行物理サーバ（待機系）２００の各々を異なる物理サーバとして示しているが，これらの各々を更に複数の物理サーバで構成しても良い。また，業務実行物理サーバ（現用系）１００の仮想サーバ１０１と，仮想サーバ１０１の運用管理部分を切り離し，運用管理部分だけを統合した運用管理サーバを使用しても良い。業務実行物理サーバ（待機系）２００においても同様である。さらに，運用管理サーバは，物理サーバに限定されない。すなわち，仮想サーバであってもよいし，クラスタ構成などで定義される論理サーバであってもよい。
【００２０】
業務実行物理サーバ（現用系）１００および業務実行物理サーバ（待機系）２００の各処理部（例えば業務実行物理サーバ（現用系）１００の起動順序更新部１０６など）の処理は，クラスタ共有ボリューム３００に格納されているプログラムをメモリ１４０３に読み出してＣＰＵ１４０２が実行することにより実現される。なお，業務実行物理サーバ（待機系）２００は，業務実行物理サーバ（現用系）１００と同じ構成であり，各処理部の構成や処理内容も同じであるため，詳細な説明は省略する。
【００２１】
業務実行物理サーバ（現用系）１００，および業務実行物理サーバ（待機系）２００は，業務実行物理サーバ（現用系）１００および業務実行物理サーバ（待機系）２００にて構成される業務システム１０の実行，および負荷，障害，メンテナンス等の業務システムの管理を行う。より詳細には，業務実行物理サーバ（現用系）１００および業務実行物理サーバ（待機系）２００上で複数の仮想サーバを実行させ，業務システムの業務を実現する。業務システム１０とは，販売や生産，会計，物流など会社を運営するために必要な業務処理を実行するシステムであり，代表的なものに財務管理システム，給与管理システム，オンライン購買システム，営業管理システムなどがある。
【００２２】
また，業務実行物理サーバ（現用系）１００および業務実行物理サーバ（待機系）２００は，互いにクラスタ構成を組んでおり，業務実行物理サーバ（現用系）１００に障害が発生し，業務実行物理サーバ（現用系）１００で稼働していた全ての仮想サーバ１０１を業務実行物理サーバ（待機系）２００にフェイルオーバー（再起動）する際に，仮想サーバ１０１の再起動順序を求め，制御することで，稼働サーバ１０１が提供していた業務のサービスレベルの遵守を支援する。したがって，業務実行物理サーバ（現用系）１００および業務実行物理サーバ（待機系）２００は，仮想サーバ１０１の再起動順序決定および設定装置としての機能を有することになる。業務実行物理サーバ（現用系）１００は，業務実行物理サーバ（現用系）１００上で仮想サーバ１０１を稼働しており，仮想サーバ１０１の起動，停止，負荷，障害等の運用に関わる管理を実行する。
【００２３】
業務実行物理サーバ（現用系）１００と業務実行物理サーバ（待機系）２００は，外部に記憶装置として，クラスタ共有ボリューム３００を共有しており，業務実行物理サーバ（現用系）１００上で稼働する仮想サーバ１０１及び仮想サーバ１０１が使用する記憶領域はクラスタ共有ボリューム３００に格納されている。さらに、業務実行物理サーバ（待機系）２００上で稼働する仮想サーバ２０１は，仮想サーバ１０１が使用するクラスタ共有ボリューム３００上の記憶領域と同じ記憶領域を使用する。したがって，業務実行物理サーバ（待機系）２００は，業務実行物理サーバ（現用系）１００上で稼働していた仮想サーバ１０１に対応する仮想サーバ２０１を，業務実行物理サーバ（待機系）２００で再起動させる際，仮想サーバ２０１は，仮想サーバ１０１が使用していたクラスタ共有ボリューム３００内の記憶領域をそのまま使用する。そのため，仮想サーバ１０１が使用していた記憶領域を，フェイルオーバー後の仮想サーバ２０１用にコピーする必要はない。
【００２４】
業務実行物理サーバ（現用系）１００について説明する。業務実行物理サーバ（現用系）１００は，業務実行物理サーバ（現用系）１００上の仮想サーバ１０１に障害が発生した際に，業務実行物理サーバ（待機系）２００にて仮想サーバ１０１に対応する仮想サーバ２０１の再起動順序を決定する処理を実行する。したがって，業務実行物理サーバ（現用系）１００は，障害の発生に備えて事前に再起動順序を決定しておく。
【００２５】
業務実行物理サーバ（現用系）１００は，仮想サーバ１０１，ＳＬＡ記憶部１０２，再起動順序記憶部１０３，業務ダウン記憶部１０４，構成変更検出部１０５，再起動順序更新部１０６，仮想サーバ再起動部１０７，起動ルール記憶部１０８，稼働率算出部１０９，仮想サーバコピー部１１０，入力部１１１，出力部１１２，および通信部１１３の各処理部，並びに記憶部１１４を有する。仮想サーバ１０１，仮想サーバ２０１，及びこれらが使用する記憶領域は，クラスタ共有ボリューム３００上にあると説明したが，ＳＬＡ記憶部１０２などの各処理部及び記憶部１１４もクラスタ共有ボリューム３００上にある。さらに，記憶部１１４は、業務実行物理サーバ（現用系）１００および業務実行物理サーバ（待機系）２００により共有される。以下，各処理部の処理概要について説明するが，説明中の各種テーブルについては処理概要に引き続き説明する。
【００２６】
仮想サーバ１０１は，業務実行物理サーバ（現用系）１００上で稼働しており，業務実行物理サーバ（現用系）１００により，起動，停止，構成変更などを管理および制御される仮想化されたサーバである。
【００２７】
ＳＬＡ記憶部１０２は，入力部１１１により入力された，業務システム１０の利用者との間で締結されたサービスレベル（例えば，１カ月間の業務システム１０の許容ダウンタイムやダウン回数，稼働率など）を，業務システム１０が提供する業務ごとにＳＬＡ定義テーブル４００に記憶する。また，後述する実施例３においては，入力部１１１により入力された業務システム１０の業務提供時間と許容稼働率を業務提供情報テーブル１１００に記憶する。
再起動順序記憶部１０３は，入力部１１１により入力された，仮想サーバ１０１のフェイルオーバー時の再起動順序を仮想サーバ１０１ごとに再起動順序テーブル６００に記憶する。
【００２８】
業務ダウン記憶部１０４は，入力部１１１により入力された，業務システム１０が提供する業務のダウン回数を業務ごとに業務ダウン回数テーブル８００に記憶する。
【００２９】
構成変更検出部１０５は，メンテナンステーブル７００を記憶部１１４から読込み，現在メンテナンス中の仮想サーバを検索する。また，メンテナンス中（メンテナンスの開始時刻から終了予定時刻の間）の仮想サーバの再起動時間を計測し，再起動順序テーブル６００に記憶する。より具体的には、メンテナンステーブル７００を記憶部１１４から読込み，メンテナンス終了前の仮想サーバ１０１をメンテナンス期間が終了する前に再起動させて再起動時間を計測する。
【００３０】
再起動順序更新部１０６は，ＳＬＡ定義テーブル４００と，システム構成テーブル５００と，メンテナンステーブル７００と，業務ダウン回数テーブル８００と，クラスタ構成テーブル９００とを記憶部１１４から読込み，メンテナンスが終了した仮想サーバ，および仮想サーバが稼働している物理サーバ上の全ての仮想サーバの再起動順序を決定し，仮想サーバが稼働する物理サーバの再起動順序テーブル６００および物理サーバとクラスタ構成を組んでいる物理サーバの再起動順序テーブル６００に記憶する。また，後述する実施例２においては，起動ルールテーブル１０００を記憶部１１４から読込み，仮想サーバの起動順序を入れ替え，再起動順序テーブル６００に記憶する。さらに，後述する実施例３においては，稼働率遵守度テーブル１３００を記憶部１１４から読込み，メンテナンスが終了した仮想サーバ，および仮想サーバが稼働している物理サーバ上の全ての仮想サーバの再起動順序を決定し，再起動順序テーブル６００に記憶する。このように業務ダウン回数テーブル８００や稼働率遵守度テーブル１３００のような稼動実績を示すテーブルの内容を用いて，仮想サーバの再起動順序を決定する。
【００３１】
仮想サーバ再起動部１０７は，記憶部１１４にある再起動順序テーブル６００を参照して，仮想サーバ１０１を再起動させる。
【００３２】
起動ルール記憶部１０８は，入力部１１１により入力された，同じ業務システム１０内の仮想サーバの起動順序を決定するルールを仮想サーバごとに起動ルールテーブル１０００に記憶する。
【００３３】
稼働率算出部１０９は，システム構成テーブル５００と，業務提供情報テーブル１１００と，業務ダウンタイムテーブル１２００とを記憶部１１４から読込み，業務システム１０の実稼働率と許容稼働率との差を算出し，稼働率遵守度テーブル１３００に記憶する。
【００３４】
仮想サーバコピー部１１０は，後述する実施例４において，仮想サーバ１０１をコピーする。
【００３５】
入力部１１１は，入力装置１４０７及びその制御プログラムである。出力部１１２は，出力装置１４０８及びその制御プログラムである。通信部１１３は，ネットワーク１４０９と接続する通信インタフェース１４０５及びその制御プログラムである。
【００３６】
記憶部１１４は，クラスタ共有ボリューム３００上にあり、業務実行物理サーバ（現用系）１００および業務実行物理サーバ（待機系）２００により共有され，ＳＬＡ定義テーブル４００，システム構成テーブル５００，再起動順序テーブル６００，メンテナンステーブル７００，業務ダウン回数テーブル８００，クラスタ構成テーブル９００，起動ルールテーブル１０００，業務提供情報テーブル１１００，業務ダウンタイムテーブル１２００，稼働率遵守度テーブル１３００を格納している。
【００３７】
ＳＬＡ定義テーブル４００は，業務実行物理サーバ（現用系）１００が管理する，業務システム１０のサービスレベル（許容ダウンタイム，許容ダウン回数，稼働率など）を記憶する，図３に，ＳＬＡ定義テーブル４００の一例を示す。ＳＬＡ定義テーブル４００は，業務識別子欄４０１，許容ダウンタイム欄４０２，許容ダウン回数欄４０３を備えている。業務識別子欄４０１は，業務実行物理サーバ（現用系）１００を含む業務システム１０により利用者に提供される業務を一意に特定できる識別情報（例えば，業務名）である業務識別子を記憶する。許容ダウンタイム欄４０２は，業務システム１０の利用者との間で決定された，業務停止１回あたりの，業務を提供できなくても許される連続時間を記憶する。許容ダウン回数欄４０３は，業務システムの利用者との間で決定された，許容ダウンタイム欄４０２で特定されるダウンタイムを違反しても問題ないと見なす，１カ月や１年などの一定期間におけるダウン回数を記憶する。ダウンタイムに違反しないように，業務システムを構築，運用するので，ダウンタイムを違反するとは，許容ダウンタイム欄４０２に示される値を僅かに超えるダウンタイムである。なお、分かり易くするために、業務システムの利用者との間で決定されたサービスレベルとして説明するが、一般には業務システムの利用者との間で決定されたサービスレベルより厳しい条件を設計目標値または運用目標値として用いる。したがって、ここで言うサービスレベルは、そのような設計目標値や運用目標値のような稼動目標値である。である。
【００３８】
システム管理者が入力部１１１を介して，ＳＬＡ定義テーブル４００に示す情報を入力し，業務実行物理サーバ（現用系）１００は，入力された情報を記憶部１１４のＳＬＡ定義テーブル４００に記憶する。また，通信部１１３により受信された，別途ツールやユーティリティを用いて収集した業務システム１０のＳＬＡ定義情報を，業務実行物理サーバ（現用系）１００がＳＬＡ定義テーブル６００に記憶しても良い。
【００３９】
システム構成テーブル５００は，業務実行物理サーバ（現用系）１００が管理する，業務システム１０の業務名や業務システム１０を構成する物理サーバや仮想サーバの情報を記憶する。図４に，システム構成テーブル５００の一例を示す。システム構成テーブル５００は，提供業務識別子欄５０１，役割欄５０２，物理サーバ識別子欄５０３，仮想サーバ識別子欄５０４，再起動時間欄５０５を備えている。提供業務識別子欄５０１は，業務実行物理サーバ（現用系）１００が管理対象とする，業務システム１０が提供する業務を一意に特定できる識別情報である業務識別子を記憶し，この業務識別子によって，ＳＬＡ定義テーブル４００の業務識別子欄４０１で特定される業務と対応付けられる。役割欄５０２は，業務システム１０における物理サーバ，もしくは仮想サーバの役割（例えば，ウェブサーバ，アプリケーションサーバ，データベースサーバなど）を記憶する。物理サーバ識別子欄５０３は，業務システム１０を構成する物理サーバを一意に特定できる識別情報（例えば，ホスト名，ＩＰアドレスなど）を記憶する。仮想サーバ識別子欄５０４は，物理サーバ識別子欄５０３にて特定される物理サーバ上で稼働する仮想サーバを一意に特定できる識別情報（例えば，ホスト名，ＩＰアドレスなど）を記憶する。再起動時間欄５０５は，仮想サーバ識別子欄５０４にて特定される仮想サーバ上で稼働し，後述するメンテナンステーブル７００の起動検知プロセス欄７０５に記載のプロセスが停止してから，再起動するまでに要する時間を記憶する。
【００４０】
システム管理者が入力部１１１を介して，システム構成テーブル５００に示す情報を入力し，業務実行物理サーバ（現用系）１００は，入力された情報を記憶部１１４のシステム構成テーブル５００に記憶する。また，通信部１１３により受信された，別途ツールやユーティリティを用いて収集した業務システムの構成情報を，業務実行物理サーバ（現用系）１００がシステム構成テーブル５００に記憶しても良い。
【００４１】
再起動順序テーブル６００は，業務実行物理サーバ（現用系）１００が停止した際に，仮想サーバ１０１を業務実行物理サーバ（待機系）２００にて再起動するときの再起動順序を記憶する。図５に，再起動順序テーブル６００の一例を示す。再起動順序テーブル６００は，仮想サーバ識別子欄６０１，起動順序欄６０２，冗長度欄６０３，許容ダウン回数と実ダウン回数との差欄６０４，許容ダウンタイムと再起動時間との差欄６０５を備えている。仮想サーバ識別子欄６０１は，仮想サーバ１０１を一意に特定できる識別情報である仮想サーバ識別子を記憶し，この仮想サーバ識別子によって，システム構成テーブル５００の仮想サーバ識別子欄５０４で特定される仮想サーバと対応付けられる。起動順序欄６０２は，業務実行物理サーバ（現用系）１００が停止した際に，仮想サーバ１０１を業務実行物理サーバ（待機系）２００にて再起動するときの再起動順序を記憶する。冗長度欄６０３は，仮想サーバ識別子欄６０１で特定される仮想サーバ１０１と，同じ業務と役割を提供し，かつ他の業務実行物理サーバ（現用系）１００上で稼働する仮想サーバ１０１の数を記憶する。許容ダウン回数と実ダウン回数との差欄６０４は，仮想サーバ識別子欄６０１で特定される仮想サーバ１０１に関連するＳＬＡ定義テーブル４００に記載の業務システム１０の許容ダウン回数と，業務ダウン回数テーブル８００に記載の業務システム１０のダウン回数との差を記憶する。許容ダウンタイムと再起動時間との差欄６０５は，仮想サーバ識別子欄６０１で特定される仮想サーバ１０１に関連するＳＬＡ定義テーブル４００に記載の業務システム１０の許容ダウンタイムと，システム構成テーブル５００に記載の仮想サーバ識別子欄６０１で特定される仮想サーバ１０１の再起動時間との差を記憶する。
【００４２】
システム管理者が入力部１１１を介して，仮想サーバ識別子欄６０１に示す情報と，起動順序欄６０２に示す情報とを入力する。また，再起動順序更新部１０６が起動順序欄６０２と，冗長度欄６０３と，許容ダウン回数と実ダウン回数との差欄６０４と，許容ダウンタイムと再起動時間との差欄６０５とに示す情報を算出し，記憶部１１４の再起動順序テーブル６００に記憶する。
【００４３】
メンテナンステーブル７００は，業務実行物理サーバ（現用系）１００，または仮想サーバ１０１のメンテナンス情報を記憶する。図６にメンテナンステーブル７００の一例を示す。メンテナンステーブル７００は，仮想サーバ識別子欄７０１，物理サーバ識別子欄７０２，メンテナンス日時欄７０３，メンテナンス内容欄７０４，起動検知プロセス欄７０５を備えている。仮想サーバ識別子欄７０１は，仮想サーバ１０１を一意に特定できる識別情報である仮想サーバ識別子を記憶し，この仮想サーバ識別子によって，システム構成テーブル５００の仮想サーバ識別子欄５０４で特定される仮想サーバと対応付けられる。物理サーバ識別子欄７０２は，業務実行物理サーバ（現用系）１００を一意に特定できる識別情報である物理サーバ識別子を記憶し，この仮想サーバ識別子によって，システム構成テーブル５００の物理サーバ識別子欄５０３で特定される業務実行物理サーバ（現用系）１００と対応付けられる。メンテナンス日時欄７０３は，仮想サーバ識別子欄７０１で特定される仮想サーバ１０１，もしくは，物理サーバ識別子欄７０２で特定される業務実行物理サーバ（現用系）１００に対して，ＯＳやソフトウェアのアップデートなど，メンテナンスを行う期間を記憶する。メンテナンス内容欄７０４は，仮想サーバ識別子欄７０１で特定される仮想サーバ１０１，もしくは，物理サーバ識別子欄７０２で特定される業務実行物理サーバ（現用系）１００に対して，メンテナンス日時欄７０３で特定されるメンテナンス期間に実行されるメンテナンスの内容を記憶する。起動検知プロセス欄７０５は，仮想サーバ識別子欄７０１で特定される仮想サーバ１０１，もしくは，物理サーバ識別子欄７０２で特定される業務実行物理サーバ（現用系）１００を再起動させて，再起動時間を計測する際，仮想サーバもしくは物理サーバが，停止もしくは起動したと判断するプロセスを識別する情報であるプロセス識別子（プロセス名など）を記憶する。
【００４４】
システム管理者が入力部１１１を介して，メンテナンステーブル７００に示す情報を入力し，業務実行物理サーバ（現用系）１００は，入力された情報を記憶部１１４のメンテナンステーブル７００に記憶する。また，通信部１１３により受信された，別途ツールやユーティリティを用いて収集した仮想サーバ１０１や業務実行物理サーバ１００に関するメンテナンス情報を，業務実行物理サーバ（現用系）１００がメンテナンステーブル５００に記憶しても良い。
【００４５】
業務ダウン回数テーブル８００は，業務システム１０が提供する業務のダウン回数を記憶する。図７に，業務ダウン回数テーブル８００の一例を示す。業務ダウン回数テーブル８００は，業務識別子欄８０１，ダウン回数欄８０２を備えている。業務識別子欄８０１は，業務実行物理サーバ（現用系）１００が管理対象とする，業務システム１０が提供する業務を一意に特定できる識別情報である業務識別子を記憶し，この業務識別子によって，システム構成テーブル５００の提供業務識別子欄５０１で特定される業務と対応付けられる。ダウン回数欄８０２は，業務識別子欄８０１で特定される業務が，１カ月や１年など所定期間において停止した回数を記憶する。
【００４６】
システム管理者が入力部１１１を介して，業務ダウン回数テーブル８００に示す情報を入力し，業務実行物理サーバ（現用系）１００は，入力された情報を記憶部１１４の業務ダウン回数テーブル８００に記憶する。また，通信部１１３により受信された，別途ツールやユーティリティを用いて収集した業務システム１０が提供する業務の停止回数を，業務実行物理サーバ（現用系）１００が，業務ダウン回数テーブル８００に記憶しても良い。
【００４７】
クラスタ構成テーブル９００は，業務システム１０におけるクラスタの構成情報を記憶する。図８に，クラスタ構成テーブル９００の一例を示す。クラスタ構成テーブル９００は，クラスタ識別子欄９０１，現用系物理サーバ識別子欄９０２，待機系物理サーバ識別子欄９０３を備えている。クラスタ識別子欄９０１は，業務システム１０におけるクラスタを一意に特定できる識別情報（例えば，クラスタ名）であるクラスタ識別子を記憶する。現用系物理サーバ識別子欄９０２は，クラスタの現用系となる物理サーバを一意に特定できる識別情報（例えば，ホスト名）である現用系物理サーバ識別子を記憶し，この物理サーバ識別子によって，システム構成テーブル５００の物理サーバ識別子欄５０３で特定される業務実行物理サーバ（現用系）１００と対応付けられる。待機系物理サーバ識別子欄９０３は，クラスタの待機系となる物理サーバを一意に特定できる識別情報（例えば，ホスト名）である待機系物理サーバ識別子を記憶し，この物理サーバ識別子によって，システム構成テーブル５００の物理サーバ識別子欄５０３で特定される業務実行物理サーバ（現用系）１００と対応付けられる。
【００４８】
システム管理者が入力部１１１を介して，クラスタ構成テーブル９００に示す情報を入力し，業務実行物理サーバ（現用系）は，入力された情報を記憶部１１４のクラスタ構成テーブル９００に記憶する。また，通信部１１３から受信された，別途ツールやユーティリティを用いて収集したクラスタの構成情報を，業務実行物理サーバ（現用系）１００が，クラスタ構成テーブル９００に記憶しても良い。
【００４９】
起動ルールテーブル１０００は，業務実行物理サーバ（現用系）１００が停止した際に，仮想サーバ１０１を業務実行物理サーバ（待機系）２００にて再起動するときの再起動順序を制御するためのルールを記憶する。図９に，起動ルールテーブル１０００の一例を示す。起動ルールテーブル１０００は，ルール適用仮想サーバ識別子欄１００１，前起動仮想サーバ識別子欄１００２を備えている。ルール適用仮想サーバ識別子１００１は，仮想サーバ１０１を一意に特定できる識別情報である仮想サーバ識別子を記憶し，この仮想サーバ識別子によって，システム構成テーブル５００の仮想サーバ識別子欄５０４で特定される仮想サーバと対応付けられる。前起動仮想サーバ識別子１００２は，ルール適用仮想サーバ識別子１００１で特定される仮想サーバ１０１よりも先に起動する仮想サーバ１０１を一意に特定できる識別情報である仮想サーバ識別子を記憶し，この仮想サーバ識別子によって，システム構成テーブル５００の仮想サーバ識別子欄５０４で特定される仮想サーバと対応付けられる。
【００５０】
システム管理者が入力部１１１を介して，起動ルールテーブル１０００に示す情報を入力し，業務実行物理サーバ（現用系）は，入力された情報を記憶部１１４の起動ルールテーブル１０００に記憶する。また，通信部１１３から受信された，別途ツールやユーティリティを用いて収集した仮想サーバ１０１の起動ルールを，業務実行物理サーバ（現用系）１００が，起動ルールテーブル１０００に記憶しても良い。
【００５１】
業務提供情報テーブル１１００は，業務システム１０により提供される業務の提供時間やＳＬＡ（業務提供時間における許容稼働率など）を記憶する。図１０に，業務提供情報テーブル１１００の一例を示す。業務提供情報テーブル１１００は，業務識別子欄１１０１，業務提供時間欄１１０２，許容稼働率欄１１０３を備えている。業務識別子欄１１０１は，業務実行物理サーバ（現用系）１００が管理対象とする，業務システム１０が提供する業務を一意に特定できる識別情報である業務識別子を記憶し，この業務識別子によって，システム構成テーブル５００の提供業務識別子欄５０１で特定される業務と対応付けられる。業務提供時間欄１１０２は，業務識別子欄１１０１で特定される業務が利用者に提供される時間帯を記憶する。許容稼働率欄１１０３は，業務識別子欄１１０１で特定される業務が，１カ月や１年など所定期間において，遵守しなければならない稼働率を記憶する。
【００５２】
システム管理者が入力部１１１を介して，業務提供情報テーブル１１００に示す情報を入力し，業務実行物理サーバ（現用系）は，入力された情報を記憶部１１４の業務提供情報テーブル１１００に記憶する。また，通信部１１３から受信された，別途ツールやユーティリティを用いて収集した業務の提供情報を，業務実行物理サーバ（現用系）１００が，業務提供情報テーブル１１００に記憶しても良い。
【００５３】
業務ダウンタイムテーブル１２００は，１カ月や１年など所定期間において，業務システムが停止し，ユーザに業務が提供できなかった時間を記憶する。図１１に，業務ダウンタイムテーブル１２００の一例を示す。業務ダウンタイムテーブル１２００は，業務識別子欄１２０１，ダウンタイム欄１２０２を備えている。業務識別子欄１２０１は，業務実行物理サーバ（現用系）１００が管理対象とする，業務システム１０が提供する業務を一意に特定できる識別情報である業務識別子を記憶し，この業務識別子によって，システム構成テーブル５００の提供業務識別子欄５０１で特定される業務と対応付けられる。ダウンタイム欄１２０２は，１カ月や１年など所定期間において，業務システムが停止し，ユーザに業務が提供できなかった時間を記憶する。
【００５４】
システム管理者が入力部１１１を介して，業務ダウンタイムテーブル１２００に示す情報を入力し，業務実行物理サーバ（現用系）は，入力された情報を記憶部１１４の業務ダウンタイムテーブル１２００に記憶する。また，通信部１１３から受信された，別途ツールやユーティリティを用いて収集した業務の停止時間を，業務実行物理サーバ（現用系）１００が，業務ダウンタイムテーブル１２００に記憶しても良い。
【００５５】
稼働率遵守度テーブル１３００は，業務システム１０のこれまでのダウン時間と，業務システム１０に関連する仮想サーバ１０１を再起動させたときの再起動時間とを考慮した稼働率が，業務提供情報テーブル１１００の許容稼働率欄１１０３で特定される許容稼働率を，どの程度遵守できているかを仮想サーバごとに記憶する。図１２に，稼働率遵守度テーブル１３００の一例を示す。稼働率遵守度テーブル１３００は，仮想サーバ識別子欄１３０１，許容稼働率と実稼働率との差欄１３０２を備えている。仮想サーバ識別子欄１３０１は，仮想サーバ１０１を一意に特定できる識別情報である仮想サーバ識別子を記憶し，この仮想サーバ識別子によって，システム構成テーブル５００の仮想サーバ識別子欄５０４で特定される仮想サーバと対応付けられる。許容稼働率と実稼働率との差欄１３０２は，（１）業務提供情報テーブル１１００の許容稼働率欄１１０３で特定される業務システム１０の許容稼働率と，（２）業務ダウンタイムテーブル１２００のダウンタイム欄１２０２で特定される実ダウン時間，および，システム構成テーブル５００の再起動時間欄５０５で特定される業務システム１０に関連する仮想サーバ１０１の再起動時間から求めた実稼働率との差を記憶する。
【００５６】
以下，本実施形態における仮想サーバの再起動順序の決定処理について実施例として示す。仮想サーバの再起動順序決定処理は，仮想サーバの再起動順序決定装置としての機能を有する業務実行物理サーバ（現用系）１００により実行されるが，以下の実施例の説明を簡明にするために，業務実行物理サーバ（現用系）１００と，業務実行物理サーバ（待機系）２００との間の，テーブルや情報の送受信に関して説明を省略又は簡略化する。
【実施例１】
【００５７】
本実施例の仮想サーバの再起動順序決定処理について説明する。図１３に，業務実行物理サーバ（現用系）１００による仮想サーバの再起動順序決定処理フロー図の一例を示す。再起動順序決定処理は，構成変更検出部１０５がメンテナンステーブル７００を参照し，メンテナンス中の仮想サーバ１０１を検出することで，実行を開始するが，システム管理者からの再起動順序決定要求や，周期タイマからの起動により実行を開始してもよい。
【００５８】
構成変更検出部１０５は，メンテナンステーブル７００のメンテナンス日時欄７０３を参照し，現在時刻と比較し，メンテナンス中（現在時刻が，メンテナンス日時の開始時刻から終了時刻の間に含まれる。）の仮想サーバがあるかどうかを検索する（ステップ２００１）。構成変更検出部１０５は，現在メンテナンス中の仮想サーバがない場合，処理を終了する。
【００５９】
構成変更検出部１０５は，メンテナンス中の仮想サーバがある場合，図１４に示す処理を実行し，仮想サーバの再起動時間を計測する（ステップ２００２）。
【００６０】
図１４に，仮想サーバの再起動時間の計測処理フロー図の一例を示す。
【００６１】
構成変更検出部１０５は，メンテナンステーブル７００に記載のメンテナンス中の仮想サーバの仮想サーバ識別子７０１に対応する起動検知プロセス識別子７０５を取得する（ステップ２１０１）。起動検知プロセスとは、対応する仮想サーバの起動や停止を検知するプロセスであり、検知結果を検知時刻を伴ったイベントとして発行する。
【００６２】
構成変更検出部１０５は，仮想サーバ再起動部１０７を起動し、ステップ２１０２〜ステップ２１０５を実行する。
【００６３】
仮想サーバ再起動部１０７は，メンテナンステーブル７００を検索し，メンテナンス中の仮想サーバ７０１に対応するメンテナンス日時欄７０３に記憶しているメンテナンス終了時刻を取得する（ステップ２１０２）。仮想サーバ再起動部１０７は，メンテナンス中の仮想サーバ７０１をキーにして，システム構成テーブル５００を検索し，再起動時間５０５を取得する（ステップ２１０３）。
【００６４】
仮想サーバ再起動部１０７は，ステップ２１０２で取得したメンテナンス終了時刻と現在の時刻との差，ステップ２１０３で取得した再起動時間とを比較し，メンテナンス終了時刻と現在の時刻との差が，規定時間（ここでは，再起動時間の２倍とする）よりも短くなれば，ステップ２１０５の処理を実行する（ステップ２１０４）。
【００６５】
仮想サーバ再起動部１０７は，メンテナンス中の仮想サーバ７０１を再起動する（ステップ２１０５）。
【００６６】
構成変更検出部１０５は，取得した起動検知プロセス識別子７０５で特定されるプロセスの停止イベントの受信を待つ（ステップ２１０６）。ここで，プロセスの停止イベントは，メールや他のツールから通知されても良いし，システム管理者が入力部１１１を介し，入力しても良い。
【００６７】
構成変更検出部１０５は，停止イベントの発行時刻を取得する（ステップ２１０７）。
【００６８】
構成変更検出部１０５は，起動検知プロセス識別子７０５で特定されるプロセスの開始イベントの受信を待つ（ステップ２１０８）。
【００６９】
構成変更検出部１０５は，開始イベントの発行時刻を取得し，開始イベントの発行時刻から停止イベントの発行時刻を減算した時間を，仮想サーバの識別子７０１に対応するシステム構成テーブル５００の再起動時間欄５０５に記憶する（ステップ２１０９）。
【００７０】
図１３に説明を戻し，ステップ２００３以降の処理について説明する。
【００７１】
構成変更検出部１０５は，メンテナンステーブル７００を検索し，前記メンテナンスが終了したかどうかを判断する。具体的には，メンテナンステーブル７００のメンテナンス時間欄７０３に記憶されているメンテナンス終了時刻が，現在時刻よりも前かどうかを判断する（ステップ２００３）。構成変更検出部１０５は，メンテナンスが終了していなければ，メンテナンスの終了処理を待つ。
【００７２】
再起動順序更新部１０６は，メンテナンス中であった仮想サーバのすべてが終了した場合，図１５に示す処理を実行し，メンテナンスが終了した仮想サーバに関連する業務実行物理サーバ上で稼働する全ての仮想サーバの再起動順序を決定する（ステップ２００４）。
【００７３】
図１５に，仮想サーバの再起動順序の決定処理フロー図の一例を示す。
【００７４】
再起動順序更新部１０６は，メンテナンステーブル７００のメンテナンスが終了した仮想サーバ識別子７０１に対応する物理サーバ識別子７０２をキーにして，システム構成テーブル５００を検索する（ステップ２２０１）。物理サーバ識別子５０３が同じ仮想サーバ識別子５０４が複数ある場合，該当する物理サーバ識別子５０３および仮想サーバ識別子５０４の組の複数の行が検索結果として得られる。
【００７５】
再起動順序更新部１０６は，検索結果として仮想サーバ識別子５０４が得られたかどうかを判定し，得られなかった場合，処理を終了する（ステップ２２０２）。
【００７６】
再起動順序更新部１０６は，検索結果として得られた全ての仮想サーバ識別子５０４に対する再起動順序を更新したかどうかを判定し（ステップ２２０４以降の処理にて，検索結果から仮想サーバ識別子５０４に該当する行を取り出し，検索結果から削除することで，判定できる），全ての仮想サーバ識別子５０４に対する再起動順序を更新した場合，処理をステップ２２０８に移す（ステップ２２０３）。
【００７７】
再起動順序更新部１０６は，通信部１１３を介して，他の業務実行物理サーバ１００と通信し，仮想サーバ識別子５０４に対応付けられている提供業務識別子５０１と，役割５０２をキーにして，他の業務実行物理サーバ１００のシステム構成テーブル５００を検索し，検索結果の数を冗長度とし，再起動順序テーブル６００の冗長度欄６０３に冗長度を仮想サーバ識別子６０１に対応付けて格納する（ステップ２２０４）。
【００７８】
再起動順序更新部１０６は，ステップ２２０１で検索結果として得られた，仮想サーバ識別子５０４に対応付けられる提供業務識別子５０１をキーにして，ＳＬＡ定義テーブル４００を検索し，許容ダウンタイム４０２と許容ダウン回数４０３（提供業務識別子５０１および，検索結果が複数ある場合は，許容ダウンタイムの最小値と許容ダウン回数の最小値）を取得する（ステップ２２０５）。
【００７９】
再起動順序更新部１０６は，提供業務識別子５０１をキーにして，業務ダウン回数テーブル８００を検索し，ステップ２２０５にて得られた許容ダウン回数４０３からダウン回数８０２で特定される実ダウン回数を減算した結果を，再起動順序テーブル６００の許容ダウン回数と実ダウン回数との差欄６０４に，仮想サーバ識別子６０１に対応付けて格納する（ステップ２２０６）。
【００８０】
再起動順序更新部１０６は，仮想サーバ識別子５０４に対応する再起動時間を再起動時間欄５０５から取得し，ステップ２２０５にて得られた許容ダウンタイム４０２から再起動時間５０５を減算した結果を，再起動順序テーブル６００の許容ダウンタイムと再起動時間との差欄６０５に，仮想サーバ識別子６０１に対応付けて格納する（ステップ２２０７）。
【００８１】
全ての仮想サーバ識別子５０４に対する再起動順序を更新したならば（Ｓ２２０３），再起動順序更新部１０６は，再起動順序テーブル６００を，（１）冗長度６０３，（２）許容ダウン回数と実ダウン回数との差６０４，（３）許容ダウンタイムと再起動時間との差６０５の順番で，それぞれ昇順にソートし，上位から順に再起動順序を割り当て，起動順序欄６０２に記憶されている再起動順序を更新する（ステップ２２０８）。
【００８２】
再起動順序更新部１０６は，再起動順序更新部２０６に，ステップ２２０８で更新した仮想サーバの再起動順序６０２を送信する（ステップ２２０９）。
【００８３】
再起動順序更新部１０６は，受信した仮想サーバの再起動順序６０２を，再起動順序テーブル６００の起動順序欄６０２に仮想サーバ識別子６０１に対応付けて記憶する（ステップ２２１０）。
【００８４】
本実施例によれば，仮想サーバのクラスタ環境において，仮想サーバの構成変更（ＯＳやソフトウェアのアップデート）に起因して，仮想サーバの再起動時間が変更しても，業務管理者や顧客と取り決めた可用性を遵守しつつ，仮想サーバをフェイルオーバーできる。また、メンテナンス後の仮想サーバの再起動時間を漏れなく計測し，起動順序を更新することができる。
【実施例２】
【００８５】
本実施例では，業務システム１０において，業務システム１０内の仮想サーバ間で守らなければいけない起動ルール（起動順序）が設定されている場合，この起動ルールに基づいて，実施例１により決定した，仮想サーバの起動順序を入れ替える処理を追加する。図１６に，再起動順序更新部１０６による仮想サーバの再起動順序の入れ替え処理フロー図の一例を示す。
【００８６】
再起動順序更新部１０６は，起動ルールテーブル１０００を検索し，任意のルールを取得する（ステップ２３０１）。
【００８７】
再起動順序更新部１０６は，ルールが取得できたかどうかを判断し，ルールが取得できなかった場合は処理を終了する（ステップ２３０２）。
【００８８】
再起動順序更新部１０６は，取得したルールのルール適用仮想サーバ１００１および前起動仮想サーバ１００２をキーにして，再起動順序テーブル６００を検索し，それぞれの再起動順序６０２を取得する（ステップ２３０３）。
【００８９】
再起動順序更新部１０６は，取得した前起動仮想サーバの起動順序とルール適用仮想サーバの起動順序とを比較し，前起動仮想サーバの起動順序が，ルール適用仮想サーバの起動順序よりも早い場合は，ステップ２３０１の処理に戻り，前起動仮想サーバの起動順序が，ルール適用仮想サーバの起動順序よりも遅い場合は，ステップ２３０５の処理を実行する（ステップ２３０４）。
【００９０】
再起動順序更新部１０６は，前起動仮想サーバの起動順序と，ルール適用仮想サーバの起動順序と，を入れ替える（ステップ２３０５）。
【００９１】
実施例２によれば，起動順序を誤ると正しく業務を提供できない業務システム（例えばＷｅｂ３階層の場合，ＤＢサーバ，ＡＰサーバ，Ｗｅｂサーバの順に起動しないと，これらのサーバ間の通信が正常にできない等）に対して，起動ルールに基づき，仮想サーバを正しい起動順序で起動することで，利用者に業務を確実に提供できるようになる。
【実施例３】
【００９２】
実施例１では，メンテナンス中の仮想サーバ７０１の起動順序は，仮想サーバの稼動実績としての業務の許容ダウン回数や許容ダウン時間に基づいて算出していたが，業務の利用者とＳＬＡを締結する際，稼働率を指標として締結することが一般的である。そこで，本実施例では，稼動率に基づいて仮想サーバの起動順序を決定できるように，業務実行物理サーバ（現用系）１００に稼働率算出部１０９と，記憶部１１４に業務提供情報テーブル１１００と，業務ダウンタイムテーブル１２００と，稼働率遵守度テーブル１３００とを設け，仮想サーバに関連する業務の稼働率の遵守度を算出する処理を追加する。図１７に，稼働率算出部１０９による稼働率遵守度の算出処理フロー図の一例を示す。
【００９３】
稼働率算出部１０９は，メンテナンステーブル７００のメンテナンスが終了した仮想サーバ識別子７０１に対応する物理サーバ識別子７０２をキーにして，システム構成テーブル５００を検索する（ステップ２４０１）。物理サーバ識別子５０３が同じ仮想サーバ識別子５０４が複数ある場合，該当する物理サーバ識別子５０３および仮想サーバ識別子５０４の組の複数の行が検索結果として得られる。
【００９４】
稼働率算出部１０９は，検索結果として仮想サーバ識別子５０４が得られたかどうかを判定し，得られなかった場合，処理を終了する（ステップ２４０２）。
【００９５】
稼働率算出部１０９は，検索結果として得られた全ての仮想サーバ識別子５０４に対する稼働率遵守度を算出したかどうかを判定し（ステップ２４０４以降の処理にて，検索結果から仮想サーバ識別子５０４に該当する行を取り出し，検索結果から削除することで，判定できる），全ての仮想サーバ識別子５０４に対する稼働率遵守度を算出した場合，処理を終了する（ステップ２４０３）。
【００９６】
稼働率算出部１０９は，検索結果として得られた仮想サーバ識別子５０４に対応付けられる提供業務識別子５０１をキーにして，業務提供情報テーブル１１００と業務ダウンタイムテーブル１２００を検索し，業務提供時間１１０２と許容稼働率１１０３と，ダウンタイム１２０２を取得する（ステップ２４０４）。
【００９７】
稼働率算出部１０９は，ステップ２４０４で取得したダウンタイム１２０２と，仮想サーバ５０４で特定される仮想サーバの再起動時間５０５とを合計し，仮想サーバを再起動させたときの予測ダウンタイムを算出する（ステップ２４０５）。
【００９８】
稼働率算出部１０９は，ステップ２４０４で取得した業務提供時間１１０２とステップ２４０５で算出した予測ダウンタイムを，稼働率を算出する式：（（業務提供時間−予測ダウンタイム）＊１００／業務提供時間）に代入し，提供業務識別子５０１で特定される業務の稼働率を算出する（ステップ２４０６）。
【００９９】
稼働率算出部１０９は，ステップ２５０４で取得した許容稼働率１１０３から，ステップ２４０６で算出した稼働率を減算した結果を稼動率遵守度として，稼働率遵守度テーブル１３００の許容稼働率と実稼働率との差欄１３０２に，仮想サーバ識別子５０４と対応付けて記憶する（ステップ２４０７）。
【０１００】
本実施例３によれば，業務の利用者との間で締結したＳＬＡに基づいた指標に沿って再起動順序を決定するため，実稼働環境に沿った仮想サーバの再起動順序管理ができる。
【実施例４】
【０１０１】
実施例１では，仮想サーバのメンテナンス情報を契機に再起動時間を計測していたが，メンテナンス期間外で仮想サーバのＯＳやソフトウェアのアップデートが行われた場合，仮想サーバに関連する業務システムに影響を与えずに起動順序を変更する必要がある。そこで，本実施例では，業務実行物理サーバ（現用系）１００に仮想サーバコピー部１１０を設け，アップデートが行われた仮想サーバをコピーし，コピーした仮想サーバを使用して再起動時間を計測する。
【０１０２】
具体的には，仮想サーバコピー部１１０が，アップデートが行われた仮想サーバをコピーし起動させて，仮想サーバ再起動部が，コピーした仮想サーバを再起動し，構成変更検出部が，コピーした仮想サーバの再起動時間を計測する処理を付加する。
【０１０３】
本実施例によると，再起動順序を更新したい仮想サーバが，メンテナンス中ではなく，実際に業務提供中の場合でも，仮想サーバをコピーし，コピーした仮想サーバで再起動時間を計測し，この再起動時間を使用して，仮想サーバの再起動順序を決定することで，仮想サーバを再起動することなく，つまり，業務に影響を与えることなく仮想サーバの再起動順序を更新できる。
【０１０４】
本実施例に類似して、業務実行物理サーバ（現用系）１００ではなく、業務実行物理サーバ（待機系）２００により仮想サーバで再起動時間を計測し，仮想サーバの再起動順序を決定してもよい。
【０１０５】
以上説明した実施形態によれば、仮想サーバの起動時間が変更されても，業務システムのサービスレベルの遵守が可能となる。
【符号の説明】
【０１０６】
１０：業務システム，１００：業務実行物理サーバ（現用系），１０１：仮想サーバ，１０２：ＳＬＡ記憶部，１０３：再起動順序記憶部，１０４：業務ダウン記憶部，１０５：構成変更検出部，１０６：再起動順序更新部，１０７：仮想サーバ再起動部，１０８：起動ルール記憶部，１０９：稼動率算出部，１１０：仮想サーバコピー部，１１１：入力部，１１２：出力部，１１３：通信部，１１４：記憶部，２００：業務実行物理サーバ（待機系），３００：クラスタ共有ボリューム，４００：ＳＬＡ定義テーブル，５００：システム構成テーブル，６００：再起動順序テーブル，７００：メンテナンステーブル，８００：業務ダウン回数テーブル，９００：クラスタ構成テーブル，１０００：起動ルールテーブル，１１００：業務提供情報テーブル，１２００：業務ダウンタイムテーブル，１３００：稼働率遵守度テーブル，１４０１：計算機，１４０２：ＣＰＵ，１４０３：メモリ，１４０５：通信インタフェース，１４０７：入力装置，１４０８：出力装置，１４０９：ネットワーク。
【図１】
2012108651.tif 000003
【図２】
2012108651.tif 000004
【図３】
2012108651.tif 000005
【図４】
2012108651.tif 000006
【図５】
2012108651.tif 000007
【図６】
2012108651.tif 000008
【図７】
2012108651.tif 000009
【図８】
2012108651.tif 000010
【図９】
2012108651.tif 000011
【図１０】
2012108651.tif 000012
【図１１】
2012108651.tif 000013
【図１２】
2012108651.tif 000014
【図１３】
2012108651.tif 000015
【図１４】
2012108651.tif 000016
【図１５】
2012108651.tif 000017
【図１６】
2012108651.tif 000018
【図１７】
2012108651.tif 000019