以下、いくつかの実施形態について、図面を参照しながら詳細に説明する。具体的には、図1〜7を参照して、第1〜第5実施形態の概要について説明する。その後、図8〜12Bを参照して、第1実施形態について説明し、図13〜16を参照して、第2実施形態について説明する。また、図17〜19を参照して、第3実施形態について説明し、図20〜21を参照して、第4実施形態について説明する。さらに、図22を参照して、第5実施形態について説明する。最後に、その他の変形例についても説明する。
図1は、第1〜第5実施形態の概要を説明するフローチャートである。図1の処理は、管理コンピュータによって実行される。管理コンピュータは、冗長化システム中のアクティブな第1のコンピュータ(以下では「アクティブサーバ」ともいう)を含む、複数のコンピュータを管理する。以下では、管理コンピュータを「管理サーバ」ともいう。
冗長化システムにおいては、複数の第2のコンピュータ(以下では「スタンバイサーバ」ともいう)が、第1のコンピュータと対応づけられている。第1のコンピュータに故障(failure)が発生した場合には、対応づけに基づいて、第1のコンピュータから、ある1台の第2のコンピュータへのフェイルオーバまたはスイッチオーバが行われる。
冗長化システムのアーキテクチャに応じて、ホットスタンバイとコールドスタンバイのいずれの方式が採用されてもよい。コールドスタンバイ方式が採用される場合、スタンバイサーバは、アクティブサーバが正常な間は、アクティブサーバが実行する処理とは無関係な他のタスクを実行していてもよい。
なお、管理サーバが管理する上記複数のコンピュータの中には、上記冗長化システムには含まれないコンピュータが含まれていてもよい。例えば、上記冗長化システムと他の1つ以上のシステムを含む複数のシステムで使われる複数のコンピュータが、同じデータセンタ内に設置されていてもよい。あるいは、複数のシステムで使われる複数のコンピュータが、複数のデータセンタに地理的に分散されていてもよい。そして、管理サーバは、1つまたは複数のデータセンタ内の全コンピュータを管理してもよい。
例えば、管理サーバは、以下のような第1〜第3のシステム用のコンピュータすべてを管理してもよい。
・第1のシステム用の複数のコンピュータは、第1と第2のデータセンタに分散している。例えば、第1のシステムのアクティブサーバは、第1のデータセンタにあり、第1のシステムのスタンバイサーバの一部は、第1のデータセンタにあり、残りのスタンバイサーバは、第2のデータセンタにあってもよい。
・第2のシステム用の複数のコンピュータは、すべて第2のデータセンタ内に設置されている。
・第3のシステム用の複数のコンピュータは、第1と第3のデータセンタに分散している。
図1の処理は、具体的には、管理サーバが管理する上記複数のコンピュータのそれぞれから情報を収集する処理と、上記の複数の第2のコンピュータのうちの1台以上の第2のコンピュータのそれぞれについて、評価値を算出する処理を含む。
以下では、管理サーバにより収集される上記の情報を、説明の便宜上、「故障予兆情報」(failure-predictive information)ともいう。故障予兆情報は、故障の発生に関連する複数の種類の現象についての情報を含む。複数の種類の現象の中には、具体的には、温度に関する現象と、電圧に関する現象が含まれていることが好ましい。
また、ある第2のコンピュータについて管理サーバにより算出される評価値は、具体的には、当該第2のコンピュータに将来故障が生じる蓋然性を示す。管理サーバは、以下の双方の故障予兆情報を用いて、評価値を算出する。
・評価対象の当該第2のコンピュータから収集した、故障予兆情報。
・管理サーバが管理する上記の複数のコンピュータのうち、評価対象の当該第2のコンピュータ以外の、所定の1台以上のコンピュータから収集した、故障予兆情報。
故障予兆情報を収集する処理の例として、図1にはステップS102〜S104が例示されている。また、評価値を算出する処理の例として、図1にはステップS107が例示されている。以下では、図1中の各ステップについて、より具体的に説明する。
ステップS101に示すように、管理サーバは、所定の種類のイベントのいずれかが生じるまで、待機する。
そして、管理サーバの管理するいずれかのコンピュータから、管理サーバが故障予兆情報を受信すると、図1の処理はステップS102へと移行する。
また、管理サーバは、故障予兆情報を収集するために、管理サーバが管理する複数のコンピュータをポーリングしてもよい。ポーリングの時刻は、個々のコンピュータごとに異なっていてもよい。逆に、管理サーバが管理する全コンピュータについてポーリングの時刻が共通でもよい。いずれにせよ、管理サーバがポーリングを実行する時刻(つまり予定された時刻)になると、図1の処理は、ステップS103へと移行する。
また、管理サーバは、上記のとおり、1台以上の第2のコンピュータのそれぞれについて評価値を算出する。評価値を算出するためのトリガになり得るイベントの例として、図1には、次の3つのイベントが例示されている。
・アクティブサーバに故障が発生した、というイベント。
・評価値を算出する時刻になった、というイベント。
・評価値の算出をユーザに指示された、というイベント。
これら3つのイベントのいずれかが発生すると、図1の処理は、ステップS105へと移行する。
なお、管理サーバが複数のコンピュータから故障予兆情報を収集する方法は、実施形態に応じて任意である。図1には、以下の2つの方法が例示されているが、これら2つの方法のうち、一方のみが採用されてもよい。
・管理サーバが、能動的にポーリングを実行する方法。
・管理サーバが、管理対象のコンピュータから、受動的に故障予兆情報を受信する方法。
また、管理サーバが評価値を算出するタイミングも、実施形態に応じて任意である。図1には、評価値の算出のトリガになり得る3種類のイベントを例示したが、評価値を算出するためのトリガとなり得るイベントとして、これら3種類のイベントのうちの一部のみが採用されてもよい。
さて、ステップS102で管理サーバは、受信した故障予兆情報を適宜の記憶装置に格納する。そして、図1の処理はステップS101へ戻る。
また、ステップS103で管理サーバは、ポーリングする対象の1台または複数台のコンピュータのそれぞれに、問い合わせを送信する。
そして、次のステップS104で管理サーバは、各問い合わせに対する応答として、故障予兆情報を受信する。管理サーバは、受信した故障予兆情報を、ステップS102と同様に、適宜の記憶装置に格納する。そして、図1の処理はステップS101へ戻る。
また、ステップS105で管理サーバは、評価対象のスタンバイサーバを1台、選択する。例えば、アクティブサーバに対応付けられた複数のスタンバイサーバのすべてが、評価対象であってもよい。この場合、管理サーバは、アクティブサーバに対応付けられた複数のスタンバイサーバから、順に1台のスタンバイサーバを選択してもよい。
あるいは、ユーザから、評価対象の1台以上のスタンバイサーバが指定されてもよい。この場合、管理サーバは、指定された1台以上のスタンバイサーバから、順に1台のスタンバイサーバを選択してもよい。
次のステップS106で管理サーバは、ステップS105で選択したスタンバイサーバについての評価値を算出する。上記のとおり、評価値の算出において管理サーバは、選択したスタンバイサーバ自体から収集した故障予兆情報だけでなく、選択したスタンバイサーバとは別の所定の1台以上のコンピュータから収集した故障予兆情報も用いる。なお、上記の「所定の1台以上のコンピュータ」は、評価対象として選択されたスタンバイサーバに関連する、周囲の他の1台以上のサーバである。
例えば、温度の異常は故障の発生に関連する。そして、ある1台のコンピュータが何らかの原因により異常に高温になると、当該コンピュータと物理的に近い位置に設置されているコンピュータも、高温にさらされ得る。換言すれば、評価対象のスタンバイサーバと物理的に近い位置に設置されている他のコンピュータは、評価対象のスタンバイサーバにおける故障の発生に影響を及ぼすことがある。
そこで、評価対象のスタンバイサーバと物理的に近い位置に設置されている1台または複数台のコンピュータが上記の「所定の1台以上のコンピュータ」に含まれていることが好ましい。なお、上記の説明では「物理的に近い位置」と述べたが、「ある2台のコンピュータが互いに物理的に近い位置に設置されているか否か」ということは、実施形態に応じて適宜定義されてよい。また、詳しくは後述するが、複数のレベルの近さが定義されてもよい。
また、電圧の異常も故障の発生に関連する。そして、ある1台のコンピュータで電圧の異常が発生している場合、当該コンピュータ自体に起因して異常が発生している可能性もあるし、当該コンピュータに電力を供給する外部の電源ユニットに異常が発生している可能性もある。
もし、外部の電源ユニットに異常が発生しているとすると、当該電源ユニットに直接的にまたは間接的に接続されている他のコンピュータにおいても、電圧異常が発生する可能性があり、ひいては故障が発生する可能性がある。そこで、評価対象のスタンバイサーバと同じ電源ユニットを共有している他の1台または複数台のコンピュータが上記の「所定の1台以上のコンピュータ」に含まれていることが好ましい。
例えば上記のように、評価対象のスタンバイサーバが設置された位置との間の物理的な近さや、評価対象のスタンバイサーバが接続されている電源ユニットに応じて、適宜、上記の「所定の1台以上のコンピュータ」は定義される。したがって、ステップS106で管理サーバは、評価対象のスタンバイサーバおよび上記の「所定の1台以上のコンピュータ」から収集した故障予兆情報を用いて、評価値を算出する。なお、以下では説明の便宜上、評価値が低いほど、当該評価値は、将来故障が発生する蓋然性が低いことを示すものとする。
次に、ステップS107で管理サーバは、評価対象の他のスタンバイサーバがまだあるか否かを判断する。もし、評価対象の他のスタンバイサーバがまだあれば、図1の処理はステップS105に戻る。逆に、評価対象の他のスタンバイサーバがもうなければ、図1の処理はステップS108に移行する。
なお、ステップS107での判断は、ステップS106で算出された評価値に依存していてもよい。例えば、管理サーバは、所定の閾値以下の評価値が得られるまで、ステップS105〜S107の処理を繰り返し実行してもよい。
あるいは、アクティブサーバに対応づけられているスタンバイサーバの台数をNとすると(N>1)、N個の評価値のうち低い方からM位以内(1≦M<N)の評価値が見つかるまで、管理サーバは、ステップS105〜S107の処理を繰り返し実行してもよい。例えば、N=5かつM=2の場合、管理サーバは、4(=N−M+1)台以上のスタンバイサーバについてそれぞれ評価値を算出すれば、低い方から2位以内の評価値を見つけることができる。
もちろん、ステップS107での判断は、ステップS106で算出された評価値に依存していなくてもよい。例えば、N台のスタンバイサーバすべてについて評価値を算出することが予め決められていてもよい。
さて、ステップS108で管理サーバは、適宜の処理を実行する。適宜の処理の実行後、図1の処理はステップS101に戻る。
例えば、アクティブサーバにおける故障の発生に応じて、管理サーバが、N台のスタンバイサーバについてそれぞれ評価値を算出する場合がある。この場合、ステップS108で管理サーバは、アクティブサーバから、評価値が最も低いスタンバイサーバへの、フェイルオーバを実行してもよい。
また、フェイルオーバによって新たなアクティブサーバとなるサーバは、評価値が最も低いスタンバイサーバでなくてもよい。フェイルオーバ制御部4は、決められた基準が示すある蓋然性以下の蓋然性を示す値が評価値として算出された1台のスタンバイサーバを、アクティブサーバと交代するスタンバイサーバとして選択してもよい。
上記基準は、評価値に関する所定の閾値により決められていてもよい。例えば、フェイルオーバ制御部4は、所定の閾値以下の評価値が算出された1台のスタンバイサーバを、新たなアクティブサーバとして選択してもよい。
あるいは、上記基準は、複数のスタンバイサーバの中での評価値の相対的順序に関して決められていてもよい。例えば、フェイルオーバ制御部4は、N個の評価値のうち低い方からM位以内(1≦M<N)の評価値が算出された1台のスタンバイサーバを、新たなアクティブサーバとして選択してもよい。
あるいは、予め決められた時刻に、管理サーバが、N台のスタンバイサーバについてそれぞれ評価値を算出する場合がある。この場合、ステップS108で管理サーバは、単に、算出済みのN個の評価値を、適宜の記憶装置に格納してもよい。
また、ユーザからの指示に応じて、管理サーバが、1台または複数台のスタンバイサーバについてそれぞれ評価値を算出する場合がある。この場合、ステップS108で管理サーバは、評価値をディスプレイなどの出力装置に出力してもよい。
以上、図1を参照して説明したように、管理サーバは、複数のコンピュータからそれぞれ故障予兆情報を収集し、適宜のタイミングで1台または複数台のスタンバイサーバについてそれぞれ評価値を算出する。そして、評価値の算出には、評価対象のスタンバイサーバ自体から収集された故障予兆情報だけでなく、評価対象のスタンバイサーバにおける将来の故障の発生と関連する周辺の他のコンピュータから収集された故障予兆情報も用いられる。よって、管理サーバは、評価対象のスタンバイサーバの周辺の環境も考慮に入れて、スタンバイサーバに将来故障が発生する蓋然性を、より正確に評価することができる。
さて、図2は、管理サーバと、管理サーバが管理する複数のコンピュータの例を示す図である。図1のように動作する管理サーバは、具体的には、図2に示した管理サーバ1のように構成されていてもよい。
また、上記のとおり、管理サーバ1が管理する複数のコンピュータの中には、ある1つの冗長化システムにおけるアクティブサーバと、当該アクティブサーバに対応づけられた複数のスタンバイサーバだけでなく、他のコンピュータがさらに含まれていてもよい。しかし、以下では簡単化のため、管理サーバ1が、図2の7台のサーバ30−1〜30−7を管理する場合を例として、説明を行う。
管理サーバ1は、故障予兆情報やその他の情報を収集する収集部2と、評価値を算出する算出部3と、フェイルオーバを制御するフェイルオーバ制御部4を有する。管理サーバ1はさらに、収集部2が収集した情報と、算出部3が算出した結果を格納する管理DB(database)5を有する。管理DB5に含まれるテーブルの具体例は、後述する。
また、第1〜第5実施形態において算出部3は、温度評価部3aと電圧評価部3bと総合評価部3cを有する。図2にはさらに劣化評価部3dと時刻評価部3eが図示されているが、実施形態によっては、劣化評価部3dと時刻評価部3eは省略されてもよい。具体的には、下記の第2実施形態、第4実施形態、および第5実施形態では、算出部3が劣化評価部3dを含み、第3〜第5実施形態では、算出部3が時刻評価部3eを含む。
温度評価部3aは、温度に関する現象についての故障予兆情報を用いて、温度が故障の発生に与える影響を評価する。電圧評価部3bは、電圧に関する現象についての故障予兆情報を用いて、電圧が故障の発生に与える影響を評価する。劣化評価部3dは、いくつかの種類の故障予兆情報を用いて、経年劣化(degradation over time)が故障の発生に与える影響を評価する。時刻評価部3eは、いくつかの種類の故障予兆情報を用いて、特定の時間帯における故障の発生のしやすさを評価する。
総合評価部3cは、少なくとも温度評価部3aと電圧評価部3bによる評価結果を用いて、総合的な評価値を算出することが好ましい。図1のステップS106で算出される評価値は、具体的には、最終的に総合評価部3cによって算出される値である。実施形態に応じて、総合評価部3cは、劣化評価部3dによる評価結果と時刻評価部3eによる評価結果の一方または双方を、さらに評価値の算出に用いてもよい。
システム管理者などのユーザに対するユーザインタフェイスは、管理サーバ1の不図示の入出力装置により提供されてもよい。あるいは、管理サーバ1は、図2に示すように、適宜のネットワーク(例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネット、またはそれらの任意の組み合わせ)を介して、クライアント6と接続されていてもよい。そして、クライアント6によってユーザインタフェイスが提供されてもよい。クライアント6は、例えば、入出力装置を有するPC(Personal Computer)であってもよい。
ところで、図2には3台のラック10−1〜10−3が例示されている。ラック10−1には、ラック管理装置11−1と電源ユニット12−1が搭載されている。同様に、ラック10−2には、ラック管理装置11−2と電源ユニット12−2が搭載されており、ラック10−3には、ラック管理装置11−3と電源ユニット12−3が搭載されている。ラック10−1〜10−3の各々は、さらに、不図示のその他の装置(例えば、ファンやLANスイッチなど)を含んでいてもよい。
また、ラック10−1には、複数のブレード型サーバ(blade servers)を収容するためのシャーシ(chassis)20−1が搭載されている。ラック10−2にも、類似のシャーシ20−2が搭載されている。
シャーシ20−1は、シャーシ管理装置21−1とLANスイッチ22−1を含み、さらに2つの電源ユニット23−1と23−2を含む。また、シャーシ20−2は、シャーシ管理装置21−2とLANスイッチ22−2を含み、さらに1つの電源ユニット23−3を含む。なお、図2では紙幅の都合上、電源ユニット(Power Supply Unit)23−1と23−2は、「PSU」と略されている。
シャーシ20−1には、ブレード型サーバを搭載するための5つのスロットがある。図2の例では、1番目のスロットにサーバ30−1が搭載されており、4番目のスロットにサーバ30−2が搭載されており、5番目のスロットにサーバ30−3が搭載されている。そして、サーバ30−1はサーバ管理装置31−1を有し、サーバ30−2はサーバ管理装置31−2を有し、サーバ30−3はサーバ管理装置31−3を有する。未使用の2番目と3番目のスロットには、図2では斜線が引かれている。
また、シャーシ20−1においては、1番目のスロットに搭載されたサーバ30−1には電源ユニット23−1から電力が供給され、4番目と5番目のスロットにそれぞれ搭載されたサーバ30−2と30−3には、電源ユニット23−2から電力が供給される。もし2番目のスロットにサーバが搭載された場合は、当該サーバには電源ユニット23−1から電力が供給される。また、もし3番目のスロットにサーバが搭載された場合は、当該サーバには電源ユニット23−2から電力が供給される。
シャーシ20−2にも、ブレード型サーバを搭載するための5つのスロットがある。図2の例では、シャーシ20−2の1番目と2番目と5番目のスロットは使われていない。3番目のスロットにサーバ30−4が搭載されており、4番目のスロットにサーバ30−5が搭載されている。また、サーバ30−4はサーバ管理装置31−4を有し、サーバ30−5はサーバ管理装置31−5を有する。なお、シャーシ20−2においては、どのスロットに搭載されたサーバにも、電源ユニット23−3から電力が供給される。
ところで、図2の例では、ラック10−1に1台のシャーシ20−1のみが搭載されているが、ラック10−1には、さらにシャーシまたはラックマウント型サーバを搭載するためのスペースがある。ラック10−1に搭載される各装置には、電源ユニット12−1から、必要に応じて配電ユニット(PDU:Power Distribution Unit)を介して、電力が供給される。したがって、シャーシ20−1内のサーバ30−1〜30−3には、間接的には電源ユニット12−1から電力が供給される。
同様に、図2の例では、ラック10−2に1台のシャーシ20−2のみが搭載されているが、ラック10−2には、さらにシャーシまたはラックマウント型サーバ(rack-mount server)を搭載するためのスペースがある。ラック10−2に搭載される各装置には、電源ユニット12−2から、必要に応じて配電ユニットを介して、電力が供給される。したがって、シャーシ20−2内のサーバ30−4〜30−5には、間接的には電源ユニット12−2から電力が供給される。
また、ラック10−3には、2台のラックマウント型サーバ30−6と30−7が搭載されている。そして、サーバ30−6はサーバ管理装置31−6を有し、サーバ30−7はサーバ管理装置31−7を有する。ラック10−3にも、さらにシャーシまたはラックマウント型サーバを搭載するためのスペースがある。ラック10−3に搭載される各装置には、電源ユニット12−3から、必要に応じて配電ユニットを介して、電力が供給される。
ところで、ラック管理装置11−1〜11−3、LANスイッチ22−1〜21−2、およびラックマウント型サーバ30−6〜30−7は、ネットワークを介して管理サーバ1に接続されている。また、シャーシ20−1内のシャーシ管理装置21−1とサーバ30−1〜30−3は、LANスイッチ22−1に接続されている。同様に、シャーシ20−2内のシャーシ管理装置21−2とサーバ30−4〜30−5は、LANスイッチ22−2に接続されている。
したがって、管理サーバ1は、ラック管理装置11−1〜11−3、シャーシ管理装置21−1〜21−2、およびサーバ管理装置31−1〜31−7と、ネットワークを介して通信することができる。
管理サーバ1の収集部2は、ネットワークを介した通信により、ラック管理装置11−1〜11−3、シャーシ管理装置21−1〜21−2、およびサーバ管理装置31−1〜31−7から、各種情報を収集する。収集部2が収集する情報の詳細は、管理DB5の詳細とともに後述する。
なお、収集部2による情報の収集は、適宜のプロトコルにしたがって行われる。例えば、収集部2による情報の収集に利用可能な技術の例として、以下の技術が挙げられる(もちろん、収集部2は、他のプロトコル(あるいは他のインタフェイス)にしたがって各種情報を収集してもよい)。
・SNMP(Simple Network Management Protocol)
・IPMI(Intelligent Platform Management Interface)
・SMASH(Systems Management Architecture for Server Hardware)
また、管理サーバ1のフェイルオーバ制御部4は、ネットワークを介して、サーバ30−1〜30−7と通信することができる。したがって、フェイルオーバ制御部4は、ネットワークを介して、サーバ30−1〜30−7間でのフェイルオーバを制御することができる。
具体的には、図2の例では、管理サーバ1が管理する冗長化システムは、7台のサーバ30−1〜30−7を含む。説明の便宜上、以下では、「サーバ30−1がアクティブサーバとして稼働中である」と仮定する。すなわち、サーバ30−2〜30−7は、アクティブサーバとしてのサーバ30−1と対応づけられたスタンバイサーバである。
もし、アクティブサーバであるサーバ30−1に故障が発生すると、フェイルオーバ制御部4は、算出部3によって算出される評価値に基づいて、サーバ30−2〜30−7の中から適切な1台のサーバを選択する。そして、フェイルオーバ制御部4は、故障したサーバ30−1から選択したサーバへのフェイルオーバを、ネットワークを介して制御する。
なお、フェイルオーバ制御部4がフェイルオーバの要否を判断するために、収集部2が収集した情報が使われてもよい。つまり、フェイルオーバ制御部4は、アクティブサーバ30−1に故障が発生したか否かを、アクティブサーバ30−1から収集部2が収集した情報に基づいて判断してもよい。
ところで、図2の管理サーバ1、クライアント6、およびサーバ30−1〜30−7は、いずれもコンピュータ(すなわち情報処理装置)の1種であり、例えば図3のコンピュータ100のように構成されていてもよい。図3は、コンピュータのハードウェア構成図である。
コンピュータ100は、プロセッサの1種であるCPU(Central Processing Unit)101と、RAM(Random Access Memory)102と、ネットワークインタフェイス103を有する。ネットワークインタフェイス103は、例えば、有線LANインタフェイス、無線LANインタフェイス、またはその組み合わせである。ネットワークインタフェイス103は、具体的には、外付けのNIC(Network Interface Card)でもよいし、オンボード型のネットワークインタフェイスコントローラでもよい。
コンピュータ100は、さらに入力装置104と出力装置105を有していてもよい。入力装置104の例は、キーボードや、ポインティングデバイスなどである。ポインティングデバイスは、例えば、マウスでもよいしタッチスクリーンでもよい。出力装置105の例は、ディスプレイやスピーカなどである。ディスプレイはタッチスクリーンであってもよい。
また、コンピュータ100は、不揮発性記憶装置106を有する。不揮発性記憶装置106の例は、HDD(Hard Disk Drive)やSSD(Solid-State Drive)などである。
コンピュータ100は、さらに、コンピュータ読み取り可能な記憶媒体109の駆動装置107を有していてもよい。記憶媒体109の例は、CD(Compact Disc)やDVD(Digital Versatile Disk)などの光ディスク、光磁気ディスク、磁気ディスク、フラッシュメモリなどの半導体メモリカードなどである。
なお、コンピュータ100内の各部は、バス108を介して互いに接続されている。また、コンピュータ100は、ネットワークインタフェイス103を介してネットワーク110に接続されている。
コンピュータ100は、CPU101が適宜のプログラムを実行することにより適宜に動作する。例えば、図2の管理サーバ1を実現するコンピュータ100においては、CPU101が、図1の処理のためのプログラムを実行する。
CPU101は、プログラムをRAM102にロードし、RAM102をワーキングエリアとしても利用しながら、プログラムを実行する。CPU101が実行するプログラムは、予め不揮発性記憶装置106にインストールされていてもよい。
あるいは、プログラムは、記憶媒体109に格納されて提供され、記憶媒体109から駆動装置107により読み取られて不揮発性記憶装置106にコピーされ、その後、RAM102にロードされてもよい。または、ネットワーク110上のプログラム提供者111(例えばコンピュータ100とは別のコンピュータ)から、ネットワーク110とネットワークインタフェイス103を介して、プログラムがコンピュータ100にダウンロードされてもよい。
なお、RAM102と不揮発性記憶装置106と記憶媒体109は、いずれも、有形の(tangible)記憶媒体であり、信号搬送波のような一時的な(transitory)媒体ではない。
ところで、図2の管理サーバ1が図3のコンピュータ100により実現される場合、収集部2は、ネットワークインタフェイス103を介した通信を含む処理を実行するCPU101により、実現される。同様に、フェイルオーバ制御部4も、ネットワークインタフェイス103を介した通信を含む処理を実行するCPU101により、実現される。算出部3は、CPU101により実現される。また、管理DB5は、RAM102、不揮発性記憶装置106、またはその双方により、実現される。
続いて、図1に概要を示した処理の具体例について、フローチャートおよび各種テーブルの例を参照しながら説明する。
図4は、フェイルオーバ処理のフローチャートであり、図5は、フェイルオーバ処理の別のフローチャートである。第1〜第5実施形態では、アクティブサーバに故障が発生すると、図4または図5にしたがって、フェイルオーバが行われる。また、収集部2が収集する情報に基づいて、フェイルオーバ制御部4はアクティブサーバにおける故障の発生を認識することができる。
さて、ステップS201でフェイルオーバ制御部4は、アクティブサーバに対応付けられた複数のスタンバイサーバの中に、ステップS202〜S203の処理対象としてまだ選択していないスタンバイサーバが残っているか否かを判断する。そして、未選択のスタンバイサーバがまだ残っていれば、図4の処理はステップS202へと移行する。逆に、アクティブサーバに対応づけられたすべてのスタンバイサーバが選択済みならば、図4の処理はステップS204へと移行する。
例えば、図2の例では、サーバ30−1がアクティブサーバであり、サーバ30−2〜30−7がスタンバイサーバである。よって、フェイルオーバ制御部4は、サーバ30−2〜30−7の中に未選択のサーバが残っているか否かを判断する。
そして、ステップS202でフェイルオーバ制御部4は、未選択のスタンバイサーバを1つ選択する。また、次のステップS203でフェイルオーバ制御部4は、選択したスタンバイサーバについて評価値を算出するよう、算出部3に指示する。
なお、詳しくは図7とともに後述するが、管理サーバ1が管理する冗長化システム内のサーバ30−1〜30−7の各々には、ID(identifier)が予め割り当てられている。よって、ステップS203でフェイルオーバ制御部4は、選択したスタンバイサーバのIDを算出部3に引数として渡すことで、評価対象のサーバを算出部3に通知してもよい。
フェイルオーバ制御部4からの指示に応じて、ステップS203で算出部3は、指定されたIDのスタンバイサーバについて評価値を算出する。ステップS203は図1のステップS106に対応する。
図2に関して説明したように、第1〜第5実施形態においては、算出部3の総合評価部3cは、少なくとも温度評価部3aと電圧評価部3bによる評価結果を用いて、評価値を算出する。以下では説明の便宜上、温度評価部3a、電圧評価部3b、および総合評価部3cがそれぞれ算出する値を、「温度評価値」、「電圧評価値」、および「総合評価値」という。
また、第2実施形態と第4実施形態と第5実施形態では、劣化評価部3dによる評価も行われ、第3〜第5実施形態では時刻評価部3eによる評価も行われる。以下では説明の便宜上、劣化評価部3dと時刻評価部3eがそれぞれ算出する値を、「劣化評価値」と「時刻評価値」という。
図4のステップS203の総合評価処理の詳細は、実施形態に応じて異なる。総合評価処理の詳細については、図9、13、17、および20とともに後述する。なお、第1〜第5実施形態では、総合評価部3cは、算出した総合評価値を管理DB5に記録する。総合評価値の管理DB5への記録の後、図4の処理はステップS201へと戻る。
ところで、図1のステップS106に関して述べた仮定より、総合評価値が低いほど、将来故障が発生する蓋然性が低い。よって、二次故障を避けるためには、総合評価値が最も低いスタンバイサーバへのフェイルオーバが望ましい。
そこで、全スタンバイサーバについて、総合評価値が算出されて管理DB5に記録された後、ステップS204でフェイルオーバ制御部4は、管理DB5を参照することで、総合評価値が最も低いスタンバイサーバを認識する。フェイルオーバ制御部4は、総合評価値が最も低いスタンバイサーバを探すために、総合評価値をソートキーとするソート処理を実行してもよい。
あるいは、ステップS203で総合評価部3cが、管理DB5に記録済みの総合評価値と新たに算出した総合評価値とを比較して、新たに算出した総合評価値を適切な位置に挿入してもよい。すると、ステップS204の実行時点では、算出された総合評価値がソートされた状態で管理DB5に記録されている。よって、ステップS204でフェイルオーバ制御部4は、ソート済みのデータを参照することで、総合評価値が最も低いスタンバイサーバを認識することができる。
いずれにせよ、ステップS204でフェイルオーバ制御部4は、総合評価値が最も低いスタンバイサーバへのフェイルオーバを実行する。例えば、サーバ30−2〜30−7の中でサーバ30−7の総合評価値が最も低い場合、フェイルオーバ制御部4は、サーバ30−7に、アクティブサーバとして動作を開始するよう、ネットワークを介して命令する。そして、図4のフェイルオーバ処理は終了する。なお、ステップS204は図1のステップS108の一例である。
ところで、上記のとおり、フェイルオーバ処理は、図5にしたがって実行されてもよい。図4のフェイルオーバ処理によれば、アクティブサーバに故障が発生してから各スタンバイサーバについて総合評価値が算出されるが、総合評価値は、予め算出されて管理DB5に記録されていてもよい。例えば、算出部3は、「1時間に1回、各スタンバイサーバについて総合評価値を算出する」などの所定のスケジュールにしたがって、総合評価値を算出し、算出した総合評価値を管理DB5に格納してもよい。
すると、アクティブサーバに実際に故障が発生した場合には、フェイルオーバ制御部4は、各スタンバイサーバについて算出済みの総合評価値を管理DB5から取得することができる。よって、フェイルオーバ制御部4は、複数のスタンバイサーバそれぞれについて取得した総合評価値に基づいて、適切な1台のスタンバイサーバを選択することができる。
具体的には、図5のステップS301でフェイルオーバ制御部4は、アクティブサーバに対応付けられた複数のスタンバイサーバの中に、ステップS302〜S304の処理対象としてまだ選択していないスタンバイサーバが残っているか否かを判断する。そして、未選択のスタンバイサーバがまだ残っていれば、図5の処理はステップS302へと移行する。逆に、アクティブサーバに対応づけられたすべてのスタンバイサーバが選択済みならば、図5の処理はステップS305へと移行する。ステップS301はステップS201と類似である。
そして、ステップS302でフェイルオーバ制御部4は、未選択のスタンバイサーバを1つ選択する。また、次のステップS303でフェイルオーバ制御部4は、選択したスタンバイサーバについて算出済みの総合評価値を、管理DB5から取得する。フェイルオーバ制御部4は、取得した総合評価値を、選択したスタンバイサーバのIDと対応づけて、一時的にRAM102上に記憶する。
次のステップS304でフェイルオーバ制御部4は、取得済みの総合評価値をソートする。そして、処理はステップS301に戻る。
ステップS301〜S304の繰り返しにより、上記のようにRAM102上に次々と総合評価値が記憶される。よって、ステップS304の処理がn回目(n≧1)に実行されるときには、取得済みのn個の総合評価値が、それぞれスタンバイサーバのIDと対応づけられて、RAM102上に記憶されている。フェイルオーバ制御部4は、取得済みのn個の総合評価値をステップS304でソートする。
以上のようにして、全スタンバイサーバについて逐次的に総合評価値が取得された後、ステップS305でフェイルオーバ制御部4は、総合評価値が最も低いスタンバイサーバへのフェイルオーバを実行する。なお、ステップS304におけるソート処理の結果として、ステップS305の実行時には、全スタンバイサーバの総合評価値は既にソートされている。よって、フェイルオーバ制御部4は、総合評価値が最も低いスタンバイサーバ(すなわち、二次故障が発生する蓋然性が最も低いスタンバイサーバ)を認識することができる。
ステップS305も、図4のステップS204と同様に、図1のステップS108の一例である。総合評価値が最も低いスタンバイサーバに、アクティブサーバとして動作を開始するようにフェイルオーバ制御部4が命令した後、図5の処理は終了する。
ところで、総合評価値の具体的な算出方法は、上記のとおり実施形態に応じて異なる。以下では総合評価値の算出に関して、数式を参照することがある。そこで、後述の数式で使われる定数の例について、先に図6を参照して説明する。
図6には、係数201と重み202が、便宜上テーブル形式で例示されている。しかし、係数201と重み202は、例えば、算出部3を実現するためにCPU101が実行するプログラムに、固定的な定数として定義されていてもよい。
あるいは、係数201と重み202は、ユーザ定義可能な定数であってもよい。その場合、ユーザによって指定された係数201と重み202が、不図示の設定ファイルに適宜の形式で記録されていてもよい。設定ファイルは、管理サーバ1の不揮発性記憶装置106に格納される。もちろん、管理DB5が、ユーザ定義可能な係数201と重み202を記憶するためのテーブルを含んでいてもよい。
図6の係数201のテーブルの各行には、各係数に便宜上つけた名前と、後述の数式において当該係数を表す記号と、当該係数の例示的な値が示されている。
自己係数Cselfは、評価対象のスタンバイサーバ自体に発生中の異常が、当該スタンバイサーバでの将来の故障の発生にどれくらい影響するかを示す。他方、隣接係数Cadj、シャーシ係数Cchssis、およびラック係数Crackは、評価対象のスタンバイサーバの周辺の他のコンピュータに発生中の異常が、評価対象のスタンバイサーバでの将来の故障の発生にどれくらい影響するかを示す。また、同一電源係数Cpowerは、評価対象のスタンバイサーバの周辺の他のコンピュータに発生中の異常から推測される故障要因(具体的には電源ユニットの異常)が、評価対象のスタンバイサーバでの将来の故障の発生にどれくらい影響するかを示す。
なお、異常にはいくつかのレベルがある。例えば、あるサーバに軽微な異常が発生した場合、サーバはしばらくすると回復することがある。また、異常が軽微ならば、異常が継続している間も、サーバは所望の機能を提供し続けられることがある。つまり、たとえ異常な現象が発生していても、「サーバが提供する機能」という観点から見れば、「故障が発生していない」と言える場合がある。
例えば、2つの閾値Th1とTh2(Th1<Th2)により、正常な電圧の範囲が定義されている場合、閾値Th1未満の電圧は異常な電圧であり、閾値Th2を超える電圧も異常な電圧である。しかし、実際の電圧が正常な電圧の範囲からどの程度逸脱しているかに応じて、故障(すなわち、サーバが所望の機能を提供することのできない状態)が発生することもあるし、故障の発生に至らないこともある。
よって、仮に評価対象のスタンバイサーバ自体に異常が発生中であっても、評価対象のスタンバイサーバに将来故障が必ず発生するとは限らない。しかし、現在何らかの異常が発生しているサーバに将来故障が発生する蓋然性は、現在何の異常も発生していないサーバに将来故障が発生する蓋然性よりも高いと考えられる。よって、総合評価値には、評価対象のスタンバイサーバに発生中の異常の影響が反映される。自己係数Cselfは、その影響の度合を示すパラメタである。
同様に、評価対象のスタンバイサーバと関連する他のサーバに異常が発生中の場合、評価対象のスタンバイサーバに将来故障が必ず発生するとは限らない。しかし、評価対象のスタンバイサーバに将来故障が発生する蓋然性は、周囲のサーバに何の異常も発生していない場合よりも、周囲のサーバで何らかの異常が発生している場合の方が高いと考えられる。よって、総合評価値には、評価対象のスタンバイサーバの周囲の他のサーバに発生中の異常の影響が反映される。隣接係数Cadj、シャーシ係数Cchssis、ラック係数Crack、および同一電源係数Cpowerは、その影響の度合を示すパラメタである。
なお、周囲のサーバとは、換言すれば、図1に関して説明した「所定の1台以上のコンピュータ」(つまり、評価対象のスタンバイサーバに関する評価値の算出のために故障予兆情報が使われる、他の1台以上のコンピュータ)のことである。例えば、評価対象のスタンバイサーバがブレード型サーバの場合、評価対象のスタンバイサーバと同じシャーシ内にある他のサーバ(特に、シャーシ内で評価対象のスタンバイサーバに隣接するサーバ)は、評価対象のスタンバイサーバと関連する周囲のサーバの例である。また、評価対象のスタンバイサーバと同じラック内にある他のサーバや、評価対象のスタンバイサーバと電源ユニットを共有している他のサーバも、評価対象のスタンバイサーバと関連する周囲のサーバの例である。
また、第2実施形態と第4実施形態と第5実施形態では、劣化評価部3dが劣化評価値を算出する。電源投入係数Con、経年劣化係数Coff、温度依存劣化係数CdgrTmpr、および電圧依存劣化係数CdgrOvervolは、劣化評価値の算出に使われる。詳しくは後述するが、これらの係数は、将来故障が発生する蓋然性が各種の経年劣化によって高まる度合を示す。
そして、第3〜第5実施形態では、時刻評価部3eが時刻評価値を算出する。1ヶ月係数Cone、2ヶ月係数Ctwo、および3ヶ月係数Cthreeは、時刻評価値の算出に使われる。
詳しくは後述するが、時刻評価部3eは、1日の中のある特定の時間帯における過去の異常の発生の履歴に基づいて、当該特定の時間帯に将来故障が発生する蓋然性を評価する。その評価結果が時刻評価値である。1ヶ月係数Cone、2ヶ月係数Ctwo、および3ヶ月係数Cthreeは、当該特定の時間帯に将来故障が発生する蓋然性が、過去の履歴とどれくらい関連するのかを示す。
また、補正定数εは、総合評価部3cが総合評価値を算出する際に用いる定数である。補正定数εは、0による除算を防ぐために使われる、正の小さな値である。
さて、図6の重み202のテーブルの各行には、各重みの説明と、後述の数式において当該重みを表す記号と、当該重みに対応する異常のレベルと、当該重みの例示的な値が示されている。上記のとおり異常にはいくつかのレベルがあるが、以下では説明の便宜上、3つの異常のレベルがあるものとする。
具体的には、「レベル1」は軽微な異常に対応し、重みW1は軽微な異常の重みである。また、「レベル2」は重大な異常に対応し、重みW2は重大な異常の重みである。そして、「レベル3」は非常に重大な異常に対応し、重みW3は非常に重大な異常の重みである。
なお、数式の簡素化のため、正常な状態に対応する「レベル0」がさらに定義される。重みW0は正常を示し、重みW0の値は0である。また、図6に例示するとおり、異常のレベルが高いほど、重みの値も大きい。
続いて、各種評価値について、図6に例示した係数201と重み202および数式を用いて詳しく説明する。以下の数式で表される評価値は、具体的には、算出部3が後述のフローチャートにしたがって動作することにより、算出される。
以下では説明の便宜上、評価対象のサーバをsiとする。また、温度評価部3aが算出するサーバsiの温度評価値をftmpr(si)とする。第1〜第5実施形態では、具体的には、式(1)の温度評価値ftmpr(si)が算出される。
式(1)における係数Cself、Cadj、Cchassis、およびCrackの値は、例えば図6に例示した値でもよい。これらの係数は、式(2)の関係を満たす。式(2)の関係は、サーバsi以外の周囲の1台以上のサーバから収集された故障予兆情報よりも、サーバsi自体から収集された故障予兆情報の方に重きを置いて、サーバsiの評価値が算出されることを意味する。
ここで、式(1)中の重みwtmpr(si)とwtmpr(sj)は、式(3)により定義される。また、式(3)中の重みW0〜W3の値の具体例が図6に例示されており、これらの重みW0〜W3は式(4)の関係を満たす。
また、式(1)における集合adj(si)、chassis(si)、およびrack(si)は、式(5)〜(7)により定義される。
なお、式(5)と(6)の定義より、サーバsiがラックマウント型サーバの場合は、集合adj(si)は空集合であり、集合chassis(si)も空集合である。
また、式(1)〜(7)から明らかなとおり、式(1)において、第1項は、サーバsi自体で現在発生中の温度異常が、サーバsiにおける将来の故障の発生に与える影響を示す。
サーバsiがラックマウント型サーバの場合、第2項と第3項はいずれも0である。
サーバsiがブレード型サーバの場合、第2項は、1つのシャーシ内でサーバsiに隣接するサーバsjで現在発生中の温度異常が、サーバsiにおける将来の故障の発生に与える影響を示す。また、サーバsiがブレード型サーバの場合、第3項は、サーバsiと同じシャーシ内にあるがサーバsiと隣接はしない他のサーバsjで現在発生中の温度異常が、サーバsiにおける将来の故障の発生に与える影響を示す。
そして、第4項は、サーバsiと同じラック内にある他のサーバsj(ただし、サーバsiがブレード型サーバの場合、サーバsiと同じシャーシ内にある他のサーバは除く)で現在発生中の温度異常が、サーバsiにおける将来の故障の発生に与える影響を示す。
さて、電圧評価部3bが算出する電圧評価値をfvol(si)とする。第1〜第5実施形態では、具体的には、式(8)の電圧評価値fvol(si)が算出される。
式(8)における係数CselfとCpowerの値は、例えば図6に例示した値でもよい。これらの係数は、式(9)の関係を満たす。式(9)の関係は、サーバsi以外の周囲の1台以上のサーバから収集された故障予兆情報よりも、サーバsi自体から収集された故障予兆情報の方に重きを置いて、サーバsiの評価値が算出されることを意味する。
ここで、式(8)中の重みwvol(si)とwvol(sj)は、式(10)により定義される。式(10)中の重みW0〜W3は、前述のとおり、式(4)の関係を満たす。
また、式(8)における集合power(si)は、式(11)により定義される。
なお、ラックマウント型サーバは、ラック内の電源ユニットから直接的に電力を供給されるかもしれないが、ブレード型サーバは、ラック内の電源ユニットから間接的に(すなわち、シャーシ内の電源ユニットを介して)電力を供給されるかもしれない。しかし、式(11)の定義では、簡単化のため、直接的な電力供給と間接的な電力供給は区別されていない。
また、式(8)〜(11)から明らかなとおり、式(8)において、第1項は、サーバsi自体の電圧異常が、サーバsiにおける将来の故障の発生に与える影響を示す。また、第2項は、サーバsiと同じ電源ユニットを使う他のサーバsjにおける電圧異常から推測される当該電源ユニットの異常が、サーバsiにおける将来の故障の発生に与える影響を示す。
さて、劣化評価部3dが算出する劣化評価値をfdgr(si)とする。第2、第4、および第5実施形態では、具体的には、式(12)の劣化評価値fdgr(si)が算出される
式(12)における係数ConとCoffの値は、例えば図6に例示した値でもよい。
なお、式(12)において、関数ton(si)は、今までにサーバsiに電源が投入されていた時間の合計の長さを示す。また、関数toff(si)は、今までにサーバsiに電源が投入されていなかった時間の合計の長さを示す。
つまり、式(12)の第1項は、たとえサーバsiが正常に動作するだけでも、時間の経過につれてサーバsiが劣化していくことに対応する。第1項は、そのような経年劣化が、サーバsiにおける将来の故障の発生に与える影響を示す。
また、式(12)の第2項は、たとえサーバsiに電源が入れられていなくても(つまり、たとえサーバsiが何も処理を実行しなくても)、時間の経過につれてサーバsiが劣化していくことに対応する。第2項は、そのような経年劣化が、サーバsiにおける将来の故障の発生に与える影響を示す。
式(12)の第3項と第4項は、式(13)と(14)により定義される。
式(13)と(14)における定数Lは、異常のレベルの数である。図6の例では、L=3である。もちろん、実施形態に応じて、定数Lの値は、1でもよいし、2でもよいし、4以上でもよい。
また、式(13)における関数ttmpr(si,h)は、今までにサーバsiでレベルhの温度異常が続いた時間の合計の長さを示す。そして、式(14)における関数tovervol(si,h)は、今までにサーバsiでレベルhの電圧超過が続いた時間の合計の長さを示す。
例えば、今までにサーバsiでレベル1の温度異常が2回発生したことがあったとし、1回目の温度異常は2時間続いたとし、2回目の温度異常は0.5時間続いたとする。この場合、関数ttmpr(si,1)の値は、2.5である。
サーバsi自体に温度異常が発生した場合におけるサーバsiの劣化は、サーバsiが正常な場合におけるサーバsiの劣化よりも大きい。そして、劣化が大きいほど、サーバsiに将来故障が発生する蓋然性も高まる。式(13)は、温度異常に起因する追加的な劣化が、サーバsiにおける将来の故障の発生に与える影響を示す。
また、電圧異常には、電圧低下(undervoltage)と電圧超過(overvoltage)の2種類があるが、電圧超過の方が電圧低下よりも劣化に与える影響が大きい。式(12)と(14)は、「電圧低下に起因して、通常の経年劣化よりもさらに劣化が進む程度は、無視してもかまわない程度である」という前提に基づいている。
換言すれば、サーバsiに電圧低下が発生した場合におけるーバsiの劣化は、サーバsiが正常な場合におけるサーバsiの劣化とほぼ同じである。よって、劣化評価部3dは、劣化評価値fdgr(si)の算出において、電源低下に起因する追加的な劣化を考慮しなくてもよい。
他方、サーバsiに電圧超過が発生した場合におけるサーバsiの劣化は、サーバsiが正常な場合におけるサーバsiの劣化よりも大きい。そして、劣化が大きいほど、サーバsiに将来故障が発生する蓋然性も高まる。式(14)は、電圧超過に起因する追加的な劣化が、サーバsiにおける将来の故障の発生に与える影響を示す。
もちろん、実施形態によっては、電源低下に起因する追加的な劣化をさらに考慮に入れるため、式(12)が変形されてもよい。すなわち、劣化評価部3dは、変形された式にしたがって劣化評価値を算出してもよい。
なお、上記の式(13)と(14)における温度依存劣化係数CdgrTmprと電圧依存劣化係数CdgrOvervolの値は、例えば図6に例示した値でもよい。そして、式(12)〜(14)の各係数は、式(15)の関係を満たす。
ところで、第2、第4、および第5実施形態は、劣化評価部3dが、式(12)以外の式にしたがって劣化評価値を算出するように、変形されてもよい。
例えば、評価対象のサーバsiの周囲のサーバで異常が発生すると、当該異常がサーバsiの劣化に影響を与えることがあり得る。例えば、近傍のサーバが異常な高温になっていれば、近傍のサーバからの熱の影響で、サーバsiの劣化が進むことがあり得る。
よって、劣化評価部3dは、周囲のサーバに発生する異常に起因して間接的にサーバsiに生じる劣化を考慮に入れてもよい。具体的には、劣化評価部3dは、式(12)の代わりに式(16)にしたがって、劣化評価値を算出してもよい。
式(16)の右辺の第5項は、周囲のサーバからの間接的な影響を示し、具体的には式(17)により定義されてもよい。実施形態によっては、式(17)の右辺第1項と第2項のいずれか一方が省略されてもよい。また、式(17)の詳細は、式(18)と(19)のとおりであってもよい。
なお、式(17)中の係数CindirTmprは、式(13)の係数CdgrTmprよりも小さな適宜の正の値を持つ。また、式(17)中の係数CindrOvervolは、式(14)の係数CdgrOvervolよりも小さな適宜の正の値を持つ。式(17)〜(19)中のその他の各種係数や関数は、既に説明したものばかりである。
また、他の変形例では、劣化評価部3dが式(12)の代わりに式(20)または(21)にしたがって、劣化評価値を算出してもよい。
式(20)と(21)は、次のような考察に基づく。評価対象のサーバsiと同じモデルの他のサーバで異常が発生しやすい場合は、サーバsiでも異常が発生する蓋然性が高いと推測される。あるモデルのサーバで異常が発生しやすい原因としては、当該モデルの設計に何らかの不適切な点があることも考えられるし、当該モデルが既に古くなっていることも考えられる。モデル自体の設計には特に問題がなくても、古いモデルのサーバは、既に長期間にわたって運用され続けている蓋然性が高い。したがって、古いモデルのサーバにおける経年劣化は、比較的大きいと推測される。
つまり、あるモデルのサーバで異常が発生しやすい原因が、上記2つの原因のどちらであるにせよ、「もし、サーバsiと同じモデルの他のサーバで異常が発生しやすいならば、サーバsiに異常が発生する蓋然性も高い」と推測される。そして、異常が発生しやすければ、故障も発生しやすい。よって、同じモデルの他のサーバでの異常の発生のしやすさを考慮に入れるため、劣化評価部3dは、式(20)または(21)にしたがって、劣化評価値を算出してもよい。
式(20)と(21)中の評価関数fmodel(si)は、サーバsiと同じモデルの他のサーバでの異常の発生のしやすさを示し、具体的には、例えば式(22)により定義される。
なお、式(22)中の係数Cmodelは、図6には例示されていないが、適宜の正の係数である。また、式(22)中の関数tvol(si,h)は、今までにサーバsiでレベルhの電圧異常(すなわち電圧超過または電圧低下)が続いた時間の合計の長さを示す。
また、式(22)における集合model(si)は式(23)により定義される。
モデルごとに集合model(si)の要素数は異なり得るので、式(22)は、正規化のために、集合model(si)の要素数による除算を含む。なお、もし集合model(si)が空集合の場合は、評価関数fmodel(si)は、0と定義される。
ところで、図5に関して説明したように、総合評価値は、アクティブサーバでの故障の発生とは関係なく、定期的に予め算出されて管理DB5などに記録されていてもよい。その場合、総合評価値の算出に使われた他の評価値(例えば温度評価値など)も、あわせて記録されていてもよい。
温度評価値と電圧評価値は、算出される時点における状況を反映している。よって、温度評価値と電圧評価値は、算出されるたびに、単純に上書きされる。時刻評価値も、同様に、算出されるたびに、単純に上書きされる。
他方、劣化評価値は、他の種類の評価値と同様に、単純な上書きにより更新されることもあるが、さらに、適宜更新されてもよい。具体的には、以下のいずれかの場合に、劣化評価部3dは、式(24)にしたがって、記録されている劣化評価値fdgr(si)を更新してもよい。
・サーバsiから既存の部品が取り除かれたとき。
・サーバsiに新たな部品が取り付けられたとき。
・サーバsiの既存の部品が新たな部品に交換されたとき。
式(24)において、右辺の劣化評価値fdgr(si)は、以前の劣化評価値(つまり記録済みの劣化評価値)であり、左辺の劣化評価値fdgr(si)は、更新後の新たな劣化評価値である。また、式(24)中の本体係数Cbodyは、図6では省略されているが、適宜の正の係数である。本体係数Cbodyは、サーバsi本体に含まれていてしかも着脱不能な部品の影響を示す。
式(24)中の関数replaced(si)は、サーバsiにおいて今回交換された部品の個数を示す。例えば、既存の2枚の拡張カードが新たな2枚の拡張カードに交換された場合、関数replaced(si)の値は2である。
式(24)中の関数incdec(si)は、サーバsiにおいて今回増えたか減った部品の個数を示す。例えば、既存の1枚のNICがサーバsiから取り除かれた場合、関数incdec(si)の値は1である。あるいは、新たな3枚のメモリモジュールがサーバsiに取り付けられた場合、関数incdec(si)の値は3である。
式(24)中の関数removable(si)は、着脱可能な部品を最大でいくつまでサーバsiに搭載することが可能かを示す。なお、着脱可能な部品の例は、メモリモジュール、CPU、NICやHBA(Host Bus Adapter)などのインタフェイスカード、その他の種類の拡張カード、電源ユニット、ファン、HDDなどである。
関数replaced(si)、incdec(si)、およびremovable(si)の以上の定義から明らかなように、式(25)の関係が成立する。
ところで、式(24)の右辺において旧・劣化評価値に掛けられる被乗数の値は、0より大きく、1より小さい。なぜなら、本体係数Cbodyが正であり、式(25)の関係が成立するからである。
つまり、式(24)にしたがって劣化評価部3dが行う劣化評価値の更新は、「部品の交換、追加、または削除によって、サーバsiに将来故障が発生する蓋然性が下がるだろう」という予測を示す。このような予測の根拠は次のとおりである。
古い既存の部品が新しい部品に交換される場合は、異常の発生しやすい部品が異常の発生しにくい部品に交換される場合である、と見なせる。よって、この場合、経年劣化に起因する故障がサーバsiに将来発生する蓋然性は、下がると予測される。
また、単に古い既存の部品がサーバsiから取り除かれる場合は、異常の発生しやすい部品の数が減る場合である、と見なせる。よって、この場合、サーバsi全体としては、経年劣化に起因する異常が発生しにくくなり、ひいては故障も発生しにくくなると予測される。
そして、新たな部品がサーバsiに追加される場合は、サーバsiを構成する複数の部品に占める、異常の発生しにくい部品の割合が高まる場合である、と見なせる。よって、この場合も、サーバsi全体としては、経年劣化に起因する異常が発生しにくくなり、ひいては故障も発生しにくくなると予測される。
以上のような考察に基づいて、劣化評価部3dは、例えば式(24)にしたがって劣化評価値を更新してもよい。もちろん、実施形態によっては、サーバsiにおける部品の交換、追加、または削除の際に、劣化評価部3dが式(24)以外の適宜の式にしたがって劣化評価値を更新してもよい。
ところで、時刻評価部3eが算出する時刻評価値をftime(si,p)とすると、第3〜第5実施形態では、具体的には式(26)の時刻評価値ftime(si,p)が算出される。
式(26)の時刻評価値ftime(si,p)の第2引数pは、1日の中のある時間帯を示す。時間帯pは、算出部3により時刻評価部3eに対して指定されてもよいし、現在時刻に基づいて時刻評価部3eにより決定されてもよい。例えば、時間帯pは、「午前9時から午前10時までの1時間」という時間帯でもよい。時間帯pの長さは実施形態に応じて任意である。
時刻評価値ftime(si,p)は、1日の中のある時間帯pにサーバsiに故障が発生する蓋然性を示す。ある種の状況下では、サーバsiの電圧は、ある特定の時間帯pに不安定になりやすいかもしれないし、サーバsiの温度は、ある特定の時間帯pに上昇しやすいかもしれない。そのため、ある特定の時間帯pにサーバsiにおいて故障が発生しやすいかもしれない。
上記の「ある種の状況」の例は、例えば、以下のような状況である。
・サーバsiは、コールドスタンバイ方式の冗長化システムにおけるスタンバイサーバである。
・アクティブサーバが正常な間、スタンバイサーバsiは、アクティブサーバが実行する処理とは無関係な、他のサービスを提供するために使われる。
・スタンバイサーバsiが提供するサービスに対して、ある特定の時間帯pに集中して、大量のアクセスがある。
例えば上記のような状況下では、故障の起きやすさが時刻に依存することがある。時刻評価値ftime(si,p)は、時刻に依存する故障の起きやすさを、過去の履歴に基づいて表す。
式(26)中に現れる関数freqmonthly(si,h,m,p)は、サーバsiにおいて最近mヶ月以内に時間帯pの少なくとも一部において発生中だった、レベルhの異常の頻度を示す。なお、ある日発生した異常が、翌日以降まで継続することもあり得る。この場合、当該異常の頻度は、簡単のために「1回」とカウントされてもよいし、より精密な予測を期すために日ごとに別々にカウントされてもよい。
例えば、2011年10月1日9時30分に発生した異常が2011年10月3日11時まで継続したと仮定する。また、時間帯pが、午前9時から午前10時までの1時間であると仮定する。
この場合、当該異常の頻度は「3回」とカウントされてもよい。なぜなら、当該異常が継続している時間帯は、2011年10月1日の時間帯pとも重なっており、2011年10月2日の時間帯pとも重なっており、2011年10月3日の時間帯pとも重なっているからである。
なお、式(26)における係数Cone、Ctwo、およびCthreeの値は、例えば図6に例示した値でもよい。これらの係数は、式(27)の関係を満たす。式(27)の関係は、将来故障が生じる蓋然性の評価においては、古い履歴よりも新しい履歴の方に重きが置かれることを意味する。
ところで、第3〜第5実施形態は、時刻評価部3eが式(26)以外の式にしたがって時刻評価値を算出するように、変形されてもよい。例えば、式(26)の粒度は1ヶ月ごとだが、別の粒度(例えば、1週間ごとの粒度、または1日ごとの粒度)で、時刻評価値が算出されてもよい。また、式(26)で注目される異常の範囲は、「最近3ヶ月以内」という範囲だが、実施形態に応じて範囲も任意に設定可能である。例えば、時刻評価部3eは、式(28)にしたがって時刻評価値ftime(si,p)を算出してもよい。
式(28)におけるインデックス変数dは、日付を示す。また、時刻評価部3eが時刻評価値を算出する当日をTodayとする。式(28)中の日付Oldestは、時刻評価値の算出において考慮される履歴の範囲を規定する日付であり、実施形態に応じて任意に決められてよい。
式(28)中に現れる関数freqdayly(si,h,d,p)は、サーバsiにおいて、日付dに、時間帯pの少なくとも一部において発生中だった、レベルhの異常の頻度を示す。例えば、ある日dの時間帯pには、レベルhの温度異常とレベルhの電圧異常の双方が発生するかもしれない。この場合、関数freqdayly(si,h,d,p)の値は、2である。
また、式(28)中に現れる関数g(x)は、0以上の任意のxに対して0以上の値を返す単調減少関数であれば、どのような関数であってもよい。
ところで、総合評価部3cは、第1実施形態では式(29)にしたがって総合評価値ftotal(si)を算出し、第2実施形態では式(30)にしたがって総合評価値ftotal(si)を算出する。また、総合評価部3cは、第3実施形態では式(31)にしたがって総合評価値ftotal(si)を算出し、第4〜第5実施形態では式(32)にしたがって総合評価値ftotal(si)を算出する。
なお、式(29)〜(32)中の関数ftot(si)は、温度評価値ftmpr(si)と電圧評価値fvol(si)の重み付け和である。重み付けは、サーバsiでの温度異常の発生しやすさと、サーバsiでの電圧異常の発生しやすさに依存する。
換言すれば、関数ftot(si)は、以下の2つの値に依存する。
・温度に関する現象(具体的には温度異常)に関連する故障の、サーバsiにおける発生のしやすさを示す値。
・電圧に関する現象(具体的には電圧低下または電圧超過)に関連する故障の、サーバsiにおける発生のしやすさを示す値。
上記2つの値は、具体的には、サーバsi自体から収集された故障予兆情報に応じて得られる値であり、サーバsiで過去に発生した温度異常と電圧異常の履歴に基づく。重みづけにより、温度異常が発生しやすいサーバに関しては温度評価値が重視され、逆に、電圧異常が発生しやすいサーバに関しては電圧評価値が重視される。なお、関数ftot(si)のさらなる詳細は、式(34)〜(38)とともに後述する。
また、式(31)と(32)中の定数Nowは、総合評価部3cが総合評価値を算出する時点を示す。そして、関数period(Now)は、時点Nowを含む適宜の時間帯を示す。関数period(Now)は、例えば、時点Nowを含む長さ1時間の期間でもよい。
ところで、式(29)〜(32)を一般化すると、式(33)が得られる。3つの係数Ctot、Cdgr、およびCtimeは、0以上の値であれば任意である。例えば、式(29)は、式(33)においてCtot=1かつCdgr=0かつCtime=0の場合である。総合評価部3cは、実施形態に応じた適宜の係数Ctot、Cdgr、およびCtimeを用いて、式(33)にしたがって総合評価を算出することができる。
ここで、上記の式(29)〜(33)中の関数ftot(si)について説明する。関数ftot(si)は、第1〜5実施形態では、具体的には式(34)により定義される。
式(34)における定数εの値は、例えば図6に例示した値でもよい。定数εは、0による除算を防ぐための、正のごく小さな値である。
また、式(34)における関数ttmpr(si)は式(35)により定義され、関数tvol(si)は式(36)により定義される。式(35)中の関数ttmpr(si,h)については、式(13)に関連して既に説明した。また、式(35)中の関数tvol(si,h)については、式(22)に関連して既に説明した。
すなわち、式(35)の関数ttmpr(si)は、今までにサーバsiで1つ以上の温度異常の各々が続いた時間の長さの合計を示す。もちろん、今までにサーバsiで温度異常が発生したことがなければ、関数ttmpr(si)の値は0である。
また、式(36)の関数tvol(si)は、今までにサーバsiで1つ以上の電圧異常の各々が続いた時間の長さの合計を示す。もちろん、今までにサーバsiで電圧異常が発生したことがなければ、関数tvol(si)の値は0である。
なお、式(35)と(36)では、簡単のため、異常のレベルの違いが考慮されていない。しかし、実施形態によっては、式(35)や(36)のような単純な総和の代わりに、異常のレベルに応じた重みWhを用いた重み付け和が使われてもよい。
ここで、今までにサーバsiで少なくとも1回は、温度異常または電圧異常が発生したことがあるとする。この場合、定数εを0と見なすことにより、式(34)は、式(37)のように近似される。
式(37)の近似から分かるとおり、関数ftot(si)は、温度評価値ftmpr(si)と電圧評価値fvol(si)の重み付け和を算出するための関数である。そして、温度評価値ftmpr(si)に掛けられる重みは、今までにサーバsiで温度異常と電圧異常が続いた時間の合計の長さに対する、今までにサーバsiで温度異常が続いた時間の合計の長さの割合である。他方、電圧評価値fvol(si)に掛けられる重みは、今までにサーバsiで温度異常と電圧異常が続いた時間の合計の長さに対する、今までにサーバsiで電圧異常が続いた時間の合計の長さの割合である。
温度異常と電圧異常のどちらが発生しやすいかは、サーバごとに異なり得る。また、温度異常の発生のしやすさと電圧異常の発生のしやすさがどの程度異なるかも、サーバごとに異なり得る。つまり、温度異常の発生のしやすさと電圧異常の発生のしやすさの比率は、各サーバに固有の性質である。
式(37)のように近似される式(34)での重み付けは、サーバsiに固有の性質を反映している。もし、サーバsiでは電圧異常よりも温度異常の方が発生しやすいならば、サーバsiに関しては温度異常に大きな重みが与えられる。逆に、もしサーバsiでは温度異常よりも電圧異常の方が発生しやすいならば、サーバsiに関しては電圧異常に大きな重みが与えられる。
そして、式(29)〜(33)に示すように、総合評価値ftotal(si)には、関数ftot(si)の値が反映される。つまり、第1〜第5実施形態のいずれにおいても、総合評価部3cは、各スタンバイサーバに固有の性質を考慮に入れて各スタンバイサーバを総合的に評価する。その結果、フェイルオーバ制御部4は、最も適切なスタンバイサーバへのフェイルオーバを実行することができる。
なお、今までにサーバsiで温度異常も電圧異常も発生したことがない場合は、式(34)から式(38)が得られる。もしサーバsiに実際に異常が発生したことがないならば、サーバsiで発生しやすい異常の種類は不明である。よって、この場合、「サーバsiでは、温度異常と電圧異常の発生のしやすさが互角である」と想定するのが妥当である。式(38)はこの想定を表す。
以上、第1〜第5実施形態の概要を説明するために、具体的な数式を参照した。しかし、もちろん、上記に例示した式以外の式に基づいて算出部3内の各部が各種評価値を算出してもよい。
以下では、上記の数式にしたがった総合評価値の算出を実現するための、具体的なデータの例およびフローチャートの例について説明する。図7は、図2の管理DB5に含まれるサーバテーブルとシャーシテーブルの例を示す図である。
図7のサーバテーブル203は、7つのエントリを含む。これらの7つのエントリは、管理サーバ1が管理する図2の7台のサーバ30−1〜30−7にそれぞれ対応する。各エントリは、サーバID、シャーシID、スロットID、ラックID、ラック内位置、シリアル番号、CPU数、メモリサイズ、NIC数、カード数、シャーシ内電源ID、ラック内電源IDという、12個のフィールドを含む。
サーバIDは、サーバを識別するIDである。管理サーバ1が管理する複数のサーバには、互いに異なるサーバIDが予め割り当てられている。
シャーシIDとスロットIDは、ブレード型サーバに対応するエントリでのみ有効である。ブレード型サーバに対応するエントリにおいて、シャーシIDは、サーバが搭載されているシャーシを識別するIDであり、スロットIDは、サーバが差し込まれているスロットを識別するIDである。
スロットIDの値は、1台のシャーシ内で一意であればよい。ただし、以下では説明の簡単化のため、スロットIDが数値であるものとし、スロットIDの値によりシャーシ内の位置が表されるものとする。例えば、「2」というスロットIDで表されるスロットには、「1」と「3」というスロットIDでそれぞれ表される2つのスロットが隣接しているものとする。なお、ラックマウント型サーバに対応するエントリのシャーシIDの値とスロットIDの値は、無効な値である。
ラックIDとラック内位置は、ラックマウント型サーバに対応するエントリでのみ有効である。ラックマウント型サーバに対応するエントリにおいて、ラックIDは、サーバが搭載されているラックを識別するIDであり、ラック内位置は、サーバが搭載されているラック内での位置を識別するIDである。
ラック内位置の値は、1台のラック内で一意であればよい。なお、ブレード型サーバに対応するエントリのラックIDの値とラック内位置の値は、無効な値である。
シリアル番号は、サーバに固有の製造番号である。便宜上「シリアル番号」と呼んでいるが、シリアル番号は記号と数字の任意の組み合わせでよい。
CPU数は、サーバに搭載されているCPUの数である。メモリサイズは、サーバに搭載されているメモリの容量をメガバイト(MB)単位で示す数値である。NIC数は、サーバに取り付けられたNICの数と、サーバに内蔵されたオンボード型のネットワークインタフェイスコントローラの数の和である。カード数は、サーバに取り付けられた、NIC以外の拡張カード(例えばグラフィックカードなど)の数である。
シャーシ内電源IDは、ブレード型サーバに対応するエントリでのみ有効である。ブレード型サーバに対応するエントリにおいて、シャーシ内電源IDは、サーバに接続されている、シャーシ内の電源ユニットを識別するIDである。シャーシ内電源IDの値は、1台のシャーシ内で一意であればよい。ラックマウント型サーバに対応するエントリのシャーシ内電源IDの値は、無効な値である。
ラック内電源IDは、ラックマウント型サーバに対応するエントリでのみ有効である。ラックマウント型サーバに対応するエントリにおいて、ラック内電源IDは、サーバに接続されている、ラック内の電源ユニットを識別するIDである。シャーシ内電源IDの値は、1台のラック内で一意であればよい。ブレード型サーバに対応するエントリのラック内電源IDの値は、無効な値である。
図2と比較しながら図7のサーバテーブル203の各エントリについて説明すると、以下のとおりである。
ブレード型サーバ30−1のサーバIDは「1」である。また、サーバ30−1は、「1」というシャーシIDのシャーシ20−1内の、「1」というスロットIDのスロットに搭載されている。そして、サーバ30−1のシリアル番号は「A1」であり、サーバ30−1は2台のCPU101を有し、サーバ30−1のRAM102の容量は2048MBである。また、サーバ30−1には4つのネットワークインタフェイス103があるので、NIC数は4である。サーバ30−1には、さらに1枚の拡張カードも取り付けられている。そして、サーバ30−1には、「1」というシャーシ内電源IDの電源ユニット23−1から、電力が供給される。
ブレード型サーバ30−2のサーバIDは「2」である。また、サーバ30−2は、「1」というシャーシIDのシャーシ20−1内の、「4」というスロットIDのスロットに搭載されている。そして、サーバ30−2のシリアル番号は「B1」であり、サーバ30−2は2台のCPU101を有し、サーバ30−2のRAM102の容量は2048MBである。また、サーバ30−2には4つのネットワークインタフェイス103があるので、NIC数は4である。サーバ30−2には、さらに1枚の拡張カードも取り付けられている。そして、サーバ30−2には、「2」というシャーシ内電源IDの電源ユニット23−2から、電力が供給される。
ブレード型サーバ30−3のサーバIDは「3」である。また、サーバ30−3は、「1」というシャーシIDのシャーシ20−1内の、「5」というスロットIDのスロットに搭載されている。そして、サーバ30−3のシリアル番号は「C1」であり、サーバ30−3は2台のCPU101を有し、サーバ30−3のRAM102の容量は2048MBである。また、サーバ30−3には4つのネットワークインタフェイス103があるので、NIC数は4である。サーバ30−3には、さらに1枚の拡張カードも取り付けられている。そして、サーバ30−3には、「2」というシャーシ内電源IDの電源ユニット23−2から、電力が供給される。
ブレード型サーバ30−4のサーバIDは「4」である。また、サーバ30−4は、「2」というシャーシIDのシャーシ20−2内の、「3」というスロットIDのスロットに搭載されている。そして、サーバ30−4のシリアル番号は「D1」であり、サーバ30−4は4台のCPU101を有し、サーバ30−4のRAM102の容量は4096MBである。また、サーバ30−4には2つのネットワークインタフェイス103があるので、NIC数は2である。サーバ30−4には、さらに2枚の拡張カードも取り付けられている。そして、サーバ30−4には、「3」というシャーシ内電源IDの電源ユニット23−3から、電力が供給される。
ブレード型サーバ30−5のサーバIDは「5」である。また、サーバ30−5は、「2」というシャーシIDのシャーシ20−2内の、「4」というスロットIDのスロットに搭載されている。そして、サーバ30−5のシリアル番号は「E1」であり、サーバ30−5は4台のCPU101を有し、サーバ30−5のRAM102の容量は4096MBである。また、サーバ30−5には2つのネットワークインタフェイス103があるので、NIC数は2である。サーバ30−5には、さらに2枚の拡張カードも取り付けられている。そして、サーバ30−5には、「3」というシャーシ内電源IDの電源ユニット23−3から、電力が供給される。
ラックマウント型サーバ30−6のサーバIDは「6」である。また、サーバ30−6は、「3」というラックIDのラック10−3内の、「1」という値で識別される位置に搭載されている。そして、サーバ30−6のシリアル番号は「F1」であり、サーバ30−6は2台のCPU101を有し、サーバ30−6のRAM102の容量は1024MBである。また、サーバ30−6には6つのネットワークインタフェイス103があるので、NIC数は6である。サーバ30−6には、さらに2枚の拡張カードも取り付けられている。そして、サーバ30−6には、「3」というラック内電源IDの電源ユニット12−3から、電力が供給される。
ラックマウント型サーバ30−7のサーバIDは「7」である。また、サーバ30−7は、「3」というラックIDのラック10−3内の、「2」という値で識別される位置に搭載されている。そして、サーバ30−7のシリアル番号は「G1」であり、サーバ30−7は2台のCPU101を有し、サーバ30−7のRAM102の容量は1024MBである。また、サーバ30−7には6つのネットワークインタフェイス103があるので、NIC数は6である。サーバ30−7には、さらに2枚の拡張カードも取り付けられている。そして、サーバ30−7には、「3」というラック内電源IDの電源ユニット12−3から、電力が供給される。
さて、図7にはシャーシテーブル204も例示されている。シャーシテーブル204は、2つのエントリを含む。これらの2つのエントリは、図2のシャーシ20−1〜20−2にそれぞれ対応する。各エントリは、シャーシID、ラックID、ラック内位置、ラック内電源IDという、4つのフィールドを含む。
シャーシIDはシャーシを識別するIDであり、ラックIDはシャーシが搭載されているラックを識別するIDである。ラック内位置は、シャーシがラック内で占める範囲を示す。ブレード型サーバ用のシャーシの高さは、例えば、6Uであったり10Uであったりするので、シャーシに応じて、シャーシがラック内で占める範囲は異なり得る。そこで、ラック内での位置を識別するIDのペアを用いて、シャーシがラック内で占める範囲を示すことができる。なお、「U」はラック単位(rack unit)を示す。また、ラック内電源IDは、シャーシに接続されておりシャーシに電力を供給する、ラック内の電源ユニットを識別するIDである。
図2と比較しながら図7のシャーシテーブル204について説明すると、以下のとおりである。
シャーシ20−1のシャーシIDは上記のとおり「1」である。シャーシ20−1は、「1」というラックIDのラック10−1に搭載されている。また、シャーシ20−1の高さは6Uであり、シャーシ20−1は、ラック10−1内において、「1」と「6」という2つの値で示される範囲を占めている。また、シャーシ20−1には、「1」というラック内電源IDの電源ユニット12−1から、電力が供給される。
シャーシ20−2のシャーシIDは上記のとおり「2」である。シャーシ20−2は、「2」というラックIDのラック10−2に搭載されている。また、シャーシ20−2の高さは10Uであり、シャーシ20−2は、ラック10−2内において、「1」と「10」という2つの値で示される範囲を占めている。また、シャーシ20−2には、「2」というラック内電源IDの電源ユニット12−2から、電力が供給される。
ところで、サーバテーブル203とシャーシテーブル204は、例えばネットワーク管理者によって、クライアント6を介して予め用意されてもよいし、収集部2により自動的に生成されてもよい。
例えば、収集部2は、サーバIDとシリアル番号とCPU数とメモリサイズとNIC数とカード数を互いに対応づける情報を、サーバ管理装置31−1〜31−7から収集してもよい。また、収集部2は、ブレード型サーバに関して、サーバIDとシャーシIDとスロットIDとシャーシ内電源IDを互いに対応づける情報を、シャーシ管理装置21−1〜21−2から収集してもよい。収集部2は、ラックマウント型サーバに関して、サーバIDとラックIDとラック内位置とラック内電源IDを互いに対応づける情報を、ラック管理装置11−1〜11−3から収集してもよい。収集部2は、以上のようにして収集した情報を用いてサーバテーブル203を生成してもよく、生成したサーバテーブル203を管理DB5に格納してもよい。
また、収集部2は、シャーシIDとラックIDとラック内位置とラック内電源IDを互いに対応づける情報を、ラック管理装置11−1〜11−3から収集してもよい。収集部2は、以上のようにして収集した情報を用いてシャーシテーブル204を生成してもよく、生成したシャーシテーブル204を管理DB5に格納してもよい。
続いて、図8〜12Bを参照して、第1実施形態について説明する。
図8は、管理DB5に含まれるイベント管理テーブルの例を示す図である。図8のイベント管理テーブル205aと205bは、同じイベント管理テーブルの異なる2つの時点の状態を示す。
また、イベント管理テーブルに記憶される情報は、図1に関して説明した故障予兆情報の具体例である。イベント管理テーブルのエントリは、収集部2により追加および更新される。
イベント管理テーブル205aには12個のエントリがあり、各エントリは、エントリID、サーバID、開始時刻、終了時刻、イベントのレベル、およびイベントの種類という、6個のフィールドを含む。各エントリは、1台のサーバにおける1つのイベントに対応する。なお、イベント管理テーブル205bは、エントリIDが「13」と「14」と「15」のエントリをさらに含む点以外は、イベント管理テーブル205aと同じである。
エントリIDは、イベント管理テーブル内でエントリを識別するIDである。サーバIDは、当該エントリがどのサーバに関するものなのかを示す。
また、開始時刻はイベントが発生した時刻を示す。発生したイベントは、何らかの長さの時間にわたって継続する。例えば、「温度異常」というイベントが何時間か継続するかもしれない。既に終了したイベントに関するエントリでは、イベントが終了した時刻が終了時刻として記録されている。他方、現在継続中のイベントに関するエントリでは、終了時刻のフィールドには無効な値が設定されている。
また、イベントのレベルは、図8と15の例では、「Information」、「Minor」、「Major」、および「Critical」の4つのレベルのいずれかである。また、イベントの種類には、「電源ON」、「電源OFF」、「温度異常」、「電圧低下」、および「電圧超過」などがある。なお、図8と15の例では、以上のようにイベントのレベルと種類が文字列で表記されているが、イベントのレベルと種類は、イベント管理テーブルにおいて、適宜の数値により表されてもよい。
ここで、「電源ON」イベントと「電源OFF」イベントは、異常を示すイベントではない。よって、「電源ON」イベントまたは「電源OFF」イベントに関するエントリにおいては、イベントのレベルは、「Information」レベルである。つまり、「Information」レベルは、図6の重み202に関して説明したレベル0に対応する。
他方、「温度異常」イベント、「電圧低下」イベント、および「電圧超過」イベントは、異常を示すイベントである。よって、「温度異常」イベント、「電圧低下」イベント、または「電圧超過」イベントに関するエントリにおいては、イベントのレベルは、異常のレベルに応じた値で表される。具体的には、図6の重み202に関して説明したレベル1、レベル2、およびレベル3が、それぞれ、「Minor」レベル、「Major」レベル、および「Critical」レベルに対応する。
以下、具体的にイベント管理テーブル205aと205bの各エントリについて説明する。なお、図8と15の例では、エントリIDとしてシーケンス番号が使われているので、以下では単純化のため、エントリIDが「n」のエントリのことを「n番目のエントリ」ということがある。
なお、イベント管理テーブル205aは、2011年1月1日10時に12番目のエントリが追加された直後の状態を示す。また、イベント管理テーブル205bは、2011年1月2日11時に15番目のエントリが追加された直後の状態を示す。
1番目のエントリは、「1」というサーバIDが割り当てられたサーバ30−1のサーバ管理装置31−1から収集部2が収集した情報に基づいて生成されたエントリである。1番目のエントリは、サーバ30−1で2010年12月23日10時に発生した「電源ON」イベントを示す。つまり、1番目のエントリは、サーバ30−1の主電源スイッチが2010年12月23日10時に入れられ、サーバ30−1がブートしたことを示す。
サーバ30−1の状態を監視するサーバ管理装置31−1は、サーバ30−1の主電源スイッチが入れられたことを収集部2に通知する。よって、収集部2は、通知の内容に基づいて、イベントの種類を「電源ON」と判断し、1番目のエントリを生成する。
サーバ30−1はまだシャットダウンしていない。換言すれば、収集部2は、「電源ON」イベントの終了の通知をまだサーバ管理装置31−1から受信していない。よって、1番目のエントリの終了時刻は無効な値である。
2番目のエントリは、「2」というサーバIDが割り当てられたサーバ30−2のサーバ管理装置31−2から収集部2が収集した情報に基づいて生成されたエントリである。2番目のエントリは、サーバ30−2で2010年12月23日10時に発生した「電源OFF」イベントを示す。
ここで、サーバ30−2は、具体的には図3のコンピュータ100のように構成されていてもよい。その場合、コンピュータ100には、サーバ管理装置31−2(図3には不図示だが、図2に示されている)がさらに含まれる。サーバ管理装置31−2は、具体的には、例えば「サービスプロセッサ」などと呼ばれる、CPU101とは独立したプロセッサであってもよい。
また、コンピュータ100の外部からコンピュータ100に供給される電力は、コンピュータ100内部において、異なる2つの経路によりCPU101とサーバ管理装置31−2に供給されてもよい。この場合、「サーバ30−2としての機能を果たすコンピュータ100の本体には電源が入っていないが、サーバ管理装置31−2には電源が入っている」という状況が起こり得る。
例えば、サーバ30−2がシャーシ20−1の4番目のスロットに挿入されると、電源ユニット23−2からサーバ30−2への電力の供給が可能となる。しかし、サーバ30−2の主電源スイッチが入れられない限り、サーバ30−2本体(具体的にはCPU101)はブートしなくてもよい。他方、電源ユニット23−2からサーバ30−2への電力の供給が可能となり次第、サーバ管理装置31−2に自動的に電源が入るようになっていてもよい。
すると、サーバ管理装置31−2はサーバ30−2の状態を監視し始め、「サーバ30−2の主電源はまだ入っていない」という状態を認識する。サーバ管理装置31−2は、例えば以上のような認識に基づいて、サーバ30−2の主電源がまだ入っていないことを2010年12月23日10時に収集部2に通知してもよい。通知には、サーバ管理装置31−2が状態を監視する対象のサーバ30−2のサーバIDも含まれる。
通知を受信した収集部2は、通知の内容から、イベントの種類を「電源OFF」と判断し、通知の内容に基づいて2番目のエントリを生成する。なお、エントリが生成される時点では、終了時刻は無効な値である。
図8の例では、サーバ30−2の主電源スイッチが2010年12月28日10時に入れられる。すると、サーバ管理装置31−2はサーバ30−2の主電源が入ったことを収集部2に通知する。通知の内容に基づいて、収集部2は、2番目のエントリの終了時刻として、2010年12月28日10時という日時を記録する。また、この通知に基づいて、収集部2は、後述の8番目のエントリも生成する。
3番目のエントリも、2番目のエントリと類似の過程を経て生成および更新されたエントリである。3番目のエントリによれば、サーバ30−4は、2010年12月23日10時にはまだ単にシャーシ20−2内のスロットに取り付けられただけである。しかし、2010年12月27日10時には、サーバ30−4の主電源が入れられている。
4番目のエントリも、2番目のエントリと類似の過程を経て生成されたエントリである。4番目のエントリによれば、サーバ30−5は、2010年12月23日10時にシャーシ20−2のスロットに取り付けられたが、まだ主電源は入れられていない。そのため、4番目のエントリの「電源OFF」イベントはまだ終了しておらず、終了時刻は無効な値である。
5番目のエントリも、2番目のエントリと類似の過程を経て生成および更新されたエントリである。5番目のエントリによれば、サーバ30−6は、2010年12月23日10時にはまだ単にラック10−3に取り付けられただけである。しかし、2010年12月28日10時には、サーバ30−6の主電源が入れられている。
6番目のエントリも、2番目のエントリと類似の過程を経て生成および更新されたエントリである。6番目のエントリによれば、サーバ30−7は、2010年12月23日10時にはまだ単にラック10−3に取り付けられただけである。しかし、2010年12月31日10時には、サーバ30−7の主電源が入れられている。
7番目のエントリは、3番目のエントリの終了時刻を収集部2が更新する契機となった、サーバ管理装置31−4からの通知に基づいて、収集部2により生成される。つまり、サーバ30−4の主電源が入れられることは、「電源OFF」イベントの終了を意味するとともに、「電源ON」イベントの開始も意味する。そのため、収集部2は、サーバ管理装置31−4から通知を受け取ると、「電源OFF」イベントに関する3番目のエントリを更新するとともに、「電源ON」イベントに関する7番目のエントリを生成する。サーバ30−4は、主電源スイッチが入れられた後、まだシャットダウンしていないので、7番目のエントリの終了時刻は無効な値である。
同様に、8番目のエントリは、2番目のエントリの終了時刻を収集部2が更新する契機となった、サーバ管理装置31−2からの通知に基づいて、収集部2により生成される。サーバ30−2は、主電源スイッチが入れられた後、まだシャットダウンしていないので、8番目のエントリの終了時刻は無効な値である。
9番目のエントリは、2番目のエントリと類似の過程を経て生成されたエントリである。9番目のエントリによれば、サーバ30−3は、2010年12月28日10時にシャーシ20−1のスロットに取り付けられたが、まだ主電源は入れられていない。そのため、9番目のエントリの「電源OFF」イベントはまだ終了しておらず、終了時刻は無効な値である。
10番目のエントリは、5番目のエントリの終了時刻を収集部2が更新する契機となった、サーバ管理装置31−6からの通知に基づいて、収集部2により生成される。サーバ30−6は、主電源スイッチが入れられた後、まだシャットダウンしていないので、10番目のエントリの終了時刻は無効な値である。
11番目のエントリは、6番目のエントリの終了時刻を収集部2が更新する契機となった、サーバ管理装置31−7からの通知に基づいて、収集部2により生成される。サーバ30−7は、主電源スイッチが入れられた後、まだシャットダウンしていないので、11番目のエントリの終了時刻は無効な値である。
12番目のエントリは、サーバ30−2に2011年1月1日10時に発生した、「Major」レベルの「温度異常」イベントに対応する。具体的には、12番目のエントリは以下のようにして生成される。
サーバ管理装置31−2はサーバ30−2の状態を監視し、2011年1月1日10時に温度異常を検出する。例えば、サーバ30−2のCPU101が温度センサを備えていてもよく、サーバ管理装置31−2は、温度センサの出力を監視してもよい。
サーバ管理装置31−2は、サーバ30−2の温度異常(例えば、所定の閾値を超える高温)を検出すると、温度異常の検出を収集部2に通知する。サーバ管理装置31−2からの通知は、温度センサにより計測された温度自体の値を含んでいてもよいし、温度からサーバ管理装置31−2が判断した、温度異常のレベルを示す値を含んでいてもよい。
いずれにしろ、収集部2は、サーバ管理装置31−2からの通知に基づいて、サーバ30−2に「Major」レベルの「温度異常」イベントが発生したことを認識する。認識の結果、収集部2は、12番目のエントリを生成する。
なお、サーバ30−2における温度異常はまだ終熄していない。つまり、サーバ30−2の温度が正常に戻ったことを示す通知を、収集部2はまだ受信していない。そのため、12番目のエントリの終了時刻は無効な値である。
さて、イベント管理テーブル205aには、以上説明したような12個のエントリが含まれる。イベント管理テーブル205bは、その後さらに3つのエントリが追加された状態を示す。
13番目のエントリは、サーバ30−6において2011年1月1日11時に発生し、2011年1月1日12時に終熄した、「Minor」レベルの「電圧低下」イベントに対応する。具体的には、13番目のエントリは、以下のようにして生成され、更新される。
サーバ管理装置31−6はサーバ30−6の状態を監視し、2011年1月1日11時に電圧低下を検出する。すると、サーバ管理装置31−6は、電圧低下の検出を収集部2に通知する。サーバ管理装置31−6からの通知は、計測された電圧自体の値を含んでいてもよいし、電圧からサーバ管理装置31−6が判断した、電圧低下のレベルを示す値を含んでいてもよい。
いずれにしろ、収集部2は、サーバ管理装置31−6からの通知に基づいて、サーバ30−6に「Minor」レベルの「電圧低下」イベントが発生したことを認識する。認識の結果、収集部2は、13番目のエントリを生成する。生成された時点で、13番目のエントリの終了時刻は、無効な値である。
その後も、サーバ管理装置31−6は、サーバ30−6の状態の監視を続ける。そして、サーバ管理装置31−6は、電圧が正常に戻ったことを2011年1月1日12時に検出する。すると、サーバ管理装置31−6は、電圧が正常に戻ったことを収集部2に通知する。そして、収集部2は、サーバ管理装置31−6からの通知に基づいて、13番目のエントリの終了時刻として、2011年1月1日12時という日時を記録する。
14番目のエントリは、サーバ30−4において2011年1月2日10時に発生した「Critical」レベルの「電圧低下」イベントに対応する。具体的には、14番目のエントリは、以下のようにして生成される。
サーバ管理装置31−4はサーバ30−4の状態を監視し、2011年1月2日10時に電圧低下を検出する。すると、サーバ管理装置31−4は、電圧低下の検出を収集部2に通知する。サーバ管理装置31−4からの通知は、計測された電圧自体の値を含んでいてもよいし、電圧からサーバ管理装置31−4が判断した、電圧低下のレベルを示す値を含んでいてもよい。
いずれにしろ、収集部2は、サーバ管理装置31−4からの通知に基づいて、サーバ30−4に「Critical」レベルの「電圧低下」イベントが発生したことを認識する。認識の結果、収集部2は、14番目のエントリを生成する。生成された時点で、14番目のエントリの終了時刻は、無効な値である。
15番目のエントリは、サーバ30−6において2011年1月2日11時に発生した「Minor」レベルの「電圧低下」イベントに対応する。具体的には、15番目のエントリは、以下のようにして生成される。
サーバ管理装置31−6はサーバ30−6の状態を監視し、2011年1月2日11時に電圧低下を検出する。すると、サーバ管理装置31−6は、電圧低下の検出を収集部2に通知する。サーバ管理装置31−6からの通知は、計測された電圧自体の値を含んでいてもよいし、電圧からサーバ管理装置31−6が判断した、電圧低下のレベルを示す値を含んでいてもよい。
いずれにしろ、収集部2は、サーバ管理装置31−6からの通知に基づいて、サーバ30−6に「Minor」レベルの「電圧低下」イベントが発生したことを認識する。認識の結果、収集部2は、15番目のエントリを生成する。生成された時点で、15番目のエントリの終了時刻は、無効な値である。
なお、以上の図8の説明においては、便宜上、サーバ管理装置31−1〜31−7からの通知を収集部2が受信する場合(つまり図1のステップS102に相当する場合)を例示した。しかし、図1のステップS103〜S104に示すように、収集部2による問い合わせに対してサーバ管理装置31−1〜31−7が応答を返し、応答の受信に応じて収集部2がイベント管理テーブルにエントリを追加してもよい。
さて、図9は、第1実施形態での総合評価処理のフローチャートである。図9の総合評価処理は、図1のステップS106で算出部3が実行する。より具体的には、フェイルオーバ処理が図4のように行われる場合は、図4のステップS203で算出部3が図9の総合評価処理を実行し、フェイルオーバ処理が図5のように行われる場合は、図5の処理と独立して算出部3が適宜のタイミングで図9の総合評価処理を実行する。
また、図9の総合評価処理は、ある1台のサーバ(説明の便宜上、「サーバsi」とする)に関して実行される。例えば、フェイルオーバ制御部4が、サーバsiのIDを算出部3に指定して、算出部3に総合評価処理の実行を命じてもよい。あるいは、算出部3が定期的に各サーバsiについて図9の総合評価処理を実行してもよい。
いつ図9の総合評価処理が実行されるにせよ、第1実施形態では、管理DB5が図10のような結果テーブルを含む。図10の結果テーブル206aと206bは、同じ結果テーブルの異なる2つの時点の状態を示す。
結果テーブルに記録されるデータの具体例は後述するが、図10に示すとおり、第1実施形態の結果テーブルの各エントリは、サーバID、温度評価値、電圧評価値、および総合評価値という、4個のフィールドを含む。また、結果テーブルの各エントリは、各スタンバイサーバに対応する。図9の総合評価処理の進捗にともなって、結果テーブルは更新される。
さて、図9のステップS401で算出部3は、サーバsiのIDを温度評価部3aに指定し、図11A〜11Cの温度評価処理の実行を温度評価部3aに命じる。すると、温度評価部3aは、図11A〜11Cのフローチャートにしたがって、式(1)の温度評価値ftmpr(si)を算出する。そして、温度評価部3aは、結果テーブル中の、サーバsiに対応するエントリの温度評価値のフィールドに、算出結果を記録する。
次に、ステップS402で算出部3は、サーバsiのIDを電圧評価部3bに指定し、図12A〜12Bの電圧評価処理の実行を電圧評価部3bに命じる。すると、電圧評価部3bは、図12A〜12Bのフローチャートにしたがって、式(8)の電圧評価値fvol(si)を算出する。そして、電圧評価部3bは、結果テーブル中の、サーバsiに対応するエントリの電圧評価値のフィールドに、算出結果を記録する。
その後のステップS403〜S411では、総合評価部3cが、結果テーブルに記録された温度評価値と電圧評価値を用いて、式(29)と(34)にしたがって、総合評価値ftotal(si)を算出する。具体的には以下のとおりである。
ステップS403で総合評価部3cは、サーバsiに温度異常が発生していた時間の長さを示す変数Xtに、初期値εを代入する。また、総合評価部3cは、サーバsiに電圧異常が発生していた時間の長さを示す変数Xvに、初期値εを代入する。なお、初期値εの具体例は図6に示すとおりである。
次に、ステップS404で総合評価部3cは、ステップS405〜S406の処理対象として未選択の、サーバsiでの温度異常イベントがあるか否かを判断する。具体的には、総合評価部3cは、イベント管理テーブルの中に以下の3つの条件をすべて満たすエントリがあるか否かを判断する。
・「サーバID」フィールドの値がサーバsiのIDと等しい。
・「イベントの種類」フィールドが温度異常を示している。
・ステップS405〜S406の処理対象としてまだ選択されていない。
上記3つの条件をすべて満たすエントリがある場合、処理はステップS405に移行する。逆に、上記3つの条件をすべて満たすエントリがない場合(つまり、サーバsiでの温度異常イベントに関するエントリが存在しないか、または、上記3つの条件を満たすすべてのエントリを総合評価部3cが選択済みの場合)、処理はステップS407に移行する。
ステップS405で総合評価部3cは、サーバsiでの未選択の温度異常イベントを1つ選択する。つまり、総合評価部3cは、サーバsiでの温度異常イベントに関する未選択のエントリ1つ選択する。
そして、総合評価部3cは、選択したエントリから、当該温度異常イベントの開始時刻と終了時刻を取得する。なお、選択したエントリには有効な終了時刻の値が記録されていない場合は、総合評価部3cは、終了時刻の代わりに現在時刻を取得する。なぜなら、無効な終了時刻は、当該温度異常イベントがまだ継続中であることを示すからである。
そして、ステップS406で総合評価部3cは、選択したエントリに対応する温度異常イベントが続いた時間の長さを算出する。つまり、総合評価部3cは、取得した終了時刻または現在時刻から、取得した開始時刻を引く。そして、総合評価部3cは、減算により得た値を、変数Xtに足す。そして、処理はステップS404に戻る。
ステップS404〜S406の繰り返しループの結果として、ステップS407の実行時点では、「Xt=ε+ttmpr(si)」という式が成り立つ(式(34)と(35)を参照)。
ステップS407で総合評価部3cは、ステップS408〜S409の処理対象として未選択の、サーバsiでの電圧異常イベントがあるか否かを判断する。具体的には、総合評価部3cは、下記の3つの条件をすべて満たすエントリがイベント管理テーブルの中にあるか否かを判断する。
・「サーバID」フィールドの値がサーバsiのIDと等しい。
・「イベントの種類」フィールドが、電圧低下または電圧超過を示している。
・ステップS408〜S409の処理対象としてまだ選択されていない。
上記3つの条件をすべて満たすエントリがある場合、処理はステップS408に移行する。逆に、上記3つの条件をすべて満たすエントリがない場合(つまり、サーバsiでの電圧異常イベントに関するエントリが存在しないか、または、上記3つの条件を満たすすべてのエントリを総合評価部3cが選択済みの場合)、処理はステップS410に移行する。
ステップS408で総合評価部3cは、サーバsiでの未選択の電圧異常イベントを1つ選択する。つまり、総合評価部3cは、サーバsiでの電圧異常イベントに関する未選択のエントリ1つ選択する。そして、総合評価部3cは、選択したエントリから、当該電圧異常イベントの開始時刻と終了時刻を取得する。なお、選択したエントリには有効な終了時刻の値が記録されていない場合は、総合評価部3cは、終了時刻の代わりに現在時刻を取得する。なぜなら、当該電圧異常イベントはまだ継続中だからである。
そして、ステップS409で総合評価部3cは、選択したエントリに対応する電圧異常イベントが続いた時間の長さを算出する。つまり、総合評価部3cは、取得した終了時刻または現在時刻から、取得した開始時刻を引く。そして、総合評価部3cは、減算により得た値を、変数Xvに足す。その後、処理はステップS407に戻る。
ステップS407〜S409の繰り返しループの結果として、ステップS410の実行時点では、「Xv=ε+tvol(si)」という式が成り立つ(式(34)と(36)を参照)。
ステップS410で総合評価部3cは、変数XtとXvから、温度評価値ftmpr(si)と電圧評価値fvol(si)それぞれの影響の割合を算出する。すなわち、総合評価部3cは、Xt/(Xt+Xv)とXv/(Xt+Xv)を算出する。
そして、ステップS411で総合評価部3cは、以下の4つの値を用いて、総合評価値ftotal(si)を算出する。
・結果テーブルに記録されている温度評価値ftmpr(si)
・結果テーブルに記録されている電圧評価値fvol(si)
・算出した割合Xt/(Xt+Xv)
・算出した割合Xv/(Xt+Xv)
具体的には、総合評価部3cは、結果テーブルからサーバsiの温度評価値ftmpr(si)と電圧評価値fvol(si)を読み出す。そして、総合評価部3cは、温度評価値ftmpr(si)と割合Xt/(Xt+Xv)との積を算出し、電圧評価値fvol(si)と割合Xv/(Xt+Xv)の積を算出し、算出した2つの積の和を算出する。
こうして算出された結果は、式(34)の総合評価値ftotal(si)である。総合評価部3cは、結果テーブル中の、サーバsiに対応するエントリの総合評価値のフィールドに、算出結果を記録する。そして、図9の総合評価処理は終了する。
さて、図11A〜11Cは、温度評価処理のフローチャートである。第1実施形態では、図9のステップS401で温度評価部3aがサーバsiに関して温度評価処理を実行する。
ステップS501で温度評価部3aは、現在サーバsiに温度異常が発生中か否かを判断する。もし、イベント管理テーブルの中に、以下の3つの条件をすべて満たすエントリが存在すれば、サーバsiに現在温度異常が発生中である。逆に、以下の3つの条件をすべて満たすエントリが存在しなければ、現在サーバsiに温度異常は発生していない。
・「サーバID」フィールドの値がサーバsiのIDと等しい。
・「イベントの種類」フィールドが温度異常を示している。
・「終了時刻」フィールドに無効な値が記録されている。
温度評価部3aは、イベント管理テーブルから上記3つの条件をすべて満たすエントリを探すことで、ステップS501の判断を行う。そして、現在サーバsiに温度異常が発生中の場合、処理はステップS502に移行する。逆に、現在サーバsiに温度異常が発生していなければ、処理はステップS503に移行する。
ステップS502で温度評価部3aは、サーバsiに発生中の温度異常の重み(つまり式(1)の重みwtmpr(si))を取得する。具体的には、温度評価部3aは、ステップS501の検索で見つかったエントリの「イベントのレベル」フィールドの値を読み取り、読み取った値に対応する重みを取得する。例えば、図6の重み202の例によれば、イベントのレベルが「Major」の場合、温度評価部3aは「2」という重みを取得する。
さらに温度評価部3aは、取得した重みと自己係数Cselfの積を、温度評価値用の変数Xに代入する。そして、処理はステップS504に移行する。
他方、ステップS503で温度評価部3aは、温度評価用の変数Xに単に0を代入する。そして、処理はステップS504に移行する。以上のステップS502またはS503により、式(1)の第1項の値が変数Xに格納される。
さて、ステップS504で温度評価部3aは、図7のサーバテーブル203を参照することで、サーバsiの種別がブレード型かラックマウント型かを判断する。サーバテーブル203中の、サーバsiに対応するエントリにおいて、シャーシIDに有効な値が設定されていれば、サーバsiはブレード型である。逆に、サーバテーブル203中の、サーバsiに対応するエントリにおいて、ラックIDに有効な値が設定されていれば、サーバsiはラックマウント型である。
サーバsiがブレード型の場合、処理はステップS505に移行する。逆に、サーバsiがラックマウント型の場合、処理は図11BのステップS515に移行する。
ステップS505〜S509は、式(1)の第2項に対応する。具体的には、ステップS505で温度評価部3aは、サーバsiのサーバIDを検索キーとして用いて、サーバsiのシャーシIDとスロットIDを図7のサーバテーブル203から取得する。
そして、次のステップS506で温度評価部3aは、サーバsiに隣接する未選択のサーバがあるか否かを判断する。つまり、温度評価部3aは、以下の3つの条件をすべて満たすエントリがサーバテーブル203にあるか否かを判断する。
・「シャーシID」フィールドの値が、ステップS505で取得されたシャーシIDと等しい。
・「スロットID」フィールドの値と、ステップS505で取得されたスロットIDとの差が、1または−1である。
・ステップS508〜S509の処理対象としてまだステップS507で選択されていない。
もし上記3つの条件をすべて満たすエントリがあれば、処理はステップS507に移行する。逆に、上記の3つの条件をすべて満たすエントリがなければ、処理は図11BのステップS510に移行する。
ステップS507で温度評価部3aは、未選択の隣接サーバを1つ選択する。つまり、温度評価部3aは、ステップS506の上記3つの条件すべてを満たすエントリに対応するサーバを1つ選択する。
便宜上、以下のステップS508〜S509の説明においては、ステップS507で選択された隣接サーバを「サーバsj」という。ステップS507で選択されたサーバsjは、式(5)の集合adj(si)に属する。
次に、ステップS508で温度評価部3aは、ステップS507で選択したサーバsjに現在温度異常が発生中か否かを判断する。温度評価部3aは、イベント管理テーブルを参照することで、ステップS501と同様にして、ステップS508の判断を行うことができる。
現在サーバsjに温度異常が発生中の場合、処理はステップS509に移行する。逆に、現在サーバsjに温度異常が発生していなければ、処理はステップS506に戻る。
ステップS509で温度評価部3aは、サーバsjに発生中の温度異常の重み(つまり式(1)の第2項における重みwtmpr(sj))を取得する。具体的には、温度評価部3aは、ステップS508の判断のための検索の結果としてイベント管理テーブルにおいて見つかったエントリの「イベントのレベル」フィールドの値を読み取る。そして、温度評価部3aは、読み取った値に対応する重みを取得する。さらに温度評価部3aは、取得した重みと隣接係数Cadjの積を、変数Xに足す。そして、処理はステップS506に戻る。
さて、図11BのステップS510〜S513は、式(1)の第3項に対応する。
ステップS510で温度評価部3aは、サーバsiと同一シャーシ内の未選択のサーバがあるか否かを判断する。つまり、温度評価部3aは、以下の4つの条件をすべて満たすエントリがサーバテーブル203にあるか否かを判断する。
・「シャーシID」フィールドの値が、ステップS505で取得されたシャーシIDと等しい。
・「サーバID」フィールドの値が、サーバsiのIDとは異なる。
・ステップS512〜S513の処理対象としてまだステップS511で選択されていない。
・ステップS507で選択されたエントリではない。
もし上記4つの条件をすべて満たすエントリがあれば、処理はステップS511に移行する。逆に、上記4つの条件をすべて満たすエントリがなければ、処理はステップS514に移行する。
ステップS511で温度評価部3aは、サーバsiと同一のシャーシ内の未選択のサーバ(より詳しくは、上記の条件から明らかなように、サーバsiに隣接していない未選択のサーバ)を1つ選択する。つまり、温度評価部3aは、ステップS510の上記4つの条件すべてを満たすエントリに対応するサーバを1つ選択する。
便宜上、以下のステップS512〜S513の説明においては、ステップS511で選択されたサーバを「サーバsj」という。ステップS511で選択されたサーバsjは、式(6)の集合chassis(si)に属する。
次に、ステップS512で温度評価部3aは、ステップS511で選択したサーバsjに現在温度異常が発生中か否かを判断する。温度評価部3aは、イベント管理テーブルを参照することで、ステップS501と同様にして、ステップS512の判断を行うことができる。
現在サーバsjに温度異常が発生中の場合、処理はステップS513に移行する。逆に、現在サーバsjに温度異常が発生していなければ、処理はステップS510に戻る。
ステップS513で温度評価部3aは、サーバsjに発生中の温度異常の重み(つまり式(1)の第3項における重みwtmpr(sj))を取得する。具体的には、温度評価部3aは、ステップS512の判断のための検索の結果としてイベント管理テーブルにおいて見つかったエントリの「イベントのレベル」フィールドの値を読み取る。そして、温度評価部3aは、読み取った値に対応する重みを取得する。さらに温度評価部3aは、取得した重みとシャーシ係数Cchassisの積を、変数Xに足す。そして、処理はステップS510に戻る。
さて、図11BのステップS514から図11CのステップS525は、式(1)の第4項に対応する。ここで、式(1)の第4項は、式(7)の集合rack(si)に属するサーバに関する項である。そして、式(7)の定義から分かるように、集合rack(si)に属する個々のサーバは、ラックマウント型サーバのこともあるし、ブレード型サーバのこともある。ステップS514〜S525のうち、ステップS516〜S519は、サーバsiと同じラック内のラックマウント型サーバに関するステップであり、ステップS520〜S525は、サーバsiと同じラック内のブレード型サーバに関するステップである。
ステップS514で温度評価部3aは、ステップS505で取得したシャーシIDを用いてラックIDを取得する。具体的には、温度評価部3aは、「シャーシID」フィールドの値がステップS505で取得したシャーシIDと同じエントリを、図7のシャーシテーブル204において探す。そして、温度評価部3aは、見つかったエントリの「ラックID」フィールドの値を取得する。
ステップS514は、ブレード型サーバsiが搭載されているラックのIDを取得するためのステップである。ラックIDの取得後、処理はステップS516に移行する。
他方、温度評価値を算出する対象のサーバsiがラックマウント型の場合、温度評価部3aはステップS515で、サーバsiのIDを用いてラックIDを取得する。具体的には、温度評価部3aは、「サーバID」フィールドの値がサーバsiのIDと等しいエントリを、サーバテーブル203において探す。そして、温度評価部3aは、見つかったエントリの「ラックID」フィールドの値を取得する。
ステップS515は、ラックマウント型サーバsiが搭載されているラックのIDを取得するためのステップである。ラックIDの取得後、処理はステップS516に移行する。
ステップS516で温度評価部3aは、サーバsiと同一ラック内の未選択のラックマウント型サーバがあるか否かを判断する。つまり、温度評価部3aは、以下の5つの条件をすべて満たすエントリがサーバテーブル203にあるか否かを判断する。
・「ラックID」フィールドの値が、ステップS514またはS515で取得されたラックIDと等しい。
・「サーバID」フィールドの値が、サーバsiのIDとは異なる。
・ステップS507で選択されたエントリではない。
・ステップS511で選択されたエントリではない。
・ステップS518〜S519の処理対象としてまだステップS517で選択されていない。
もし上記5つの条件をすべて満たすエントリがあれば、処理はステップS517に移行する。逆に、上記5つの条件をすべて満たすエントリがなければ、処理は図11CのステップS520に移行する。
ステップS517で温度評価部3aは、サーバsiと同一ラック内の未選択のラックマウント型サーバを1つ選択する。つまり、温度評価部3aは、ステップS516の上記5つの条件すべてを満たすエントリに対応するサーバを1つ選択する。
便宜上、以下のステップS518〜S519の説明においては、ステップS517で選択されたサーバを「サーバsj」という。ステップS517で選択されるサーバsjは、式(7)の集合rack(si)に属するラックマウント型サーバである。
次に、ステップS518で温度評価部3aは、ステップS517で選択したサーバsjに現在温度異常が発生中か否かを判断する。温度評価部3aは、イベント管理テーブルを参照することで、ステップS501と同様にして、ステップS518の判断を行うことができる。
現在サーバsjに温度異常が発生中の場合、処理はステップS519に移行する。逆に、現在サーバsjに温度異常が発生していなければ、処理はステップS516に戻る。
ステップS519で温度評価部3aは、サーバsjに発生中の温度異常の重み(つまり式(1)の第4項における重みwtmpr(sj))を取得する。具体的には、温度評価部3aは、ステップS518の判断のための検索の結果としてイベント管理テーブルにおいて見つかったエントリの「イベントのレベル」フィールドの値を読み取る。そして、温度評価部3aは、読み取った値に対応する重みを取得する。さらに温度評価部3aは、取得した重みとラック係数Crackの積を、変数Xに足す。そして、処理はステップS516に戻る。
さて、図11CのステップS520で温度評価部3aは、サーバsiと同一ラック内の未選択の他のシャーシがあるか否かを判断する。つまり、温度評価部3aは、以下の3つの条件をすべて満たすエントリがシャーシテーブル204にあるか否かを判断する。
・「ラックID」フィールドの値が、ステップS514またはS515で取得されたラックIDと等しい。
・「シャーシID」フィールドの値が、サーバテーブル203においてサーバsiに対応するエントリの「シャーシID」フィールドの値とは異なる。
・ステップS522〜S525の処理対象としてまだステップS521で選択されていない。
もし上記3つの条件をすべて満たすエントリがあれば、処理はステップS521に移行する。逆に、上記3つの条件をすべて満たすエントリがなければ、処理はステップS526に移行する。
サーバsiがラックマウント型サーバの場合、上記3つの条件をすべて満たすエントリは、サーバsiと同じラックに搭載された、未選択のシャーシに対応する。逆に、サーバsiがブレード型サーバの場合、上記3つの条件をすべて満たすエントリは、サーバsiと同じラックに搭載されていて、かつ、サーバsiを搭載したシャーシとは異なる未選択のシャーシに対応する。
ステップS521で温度評価部3aは、サーバsiと同一ラック内の未選択の他のシャーシを1つ選択する。つまり、温度評価部3aは、ステップS520の上記3つの条件すべてを満たすエントリに対応するシャーシを1つ選択する。
次に、ステップS522で温度評価部3aは、ステップS521で選択したシャーシ内の未選択のサーバがあるか否かを判断する。つまり、温度評価部3aは、以下の3つの条件をすべて満たすエントリがサーバテーブル203にあるか否かを判断する。
・「ラックID」フィールドの値が、ステップS514またはS515で取得されたラックIDと等しい。
・「シャーシID」フィールドの値が、ステップS521で選択したシャーシのシャーシIDと等しい。
・ステップS524〜S525の処理対象としてまだステップS523で選択されていない。
もし上記の3つの条件をすべて満たすエントリがあれば、処理はステップS523に移行する。逆に、上記の3つの条件をすべて満たすエントリがなければ、処理はステップS520に戻る。
ステップS523で温度評価部3aは、ステップS521で選択したシャーシ内の未選択のサーバを1つ選択する。つまり、温度評価部3aは、ステップS522の上記3つの条件をすべて満たすエントリに対応するサーバを1つ選択する。
便宜上、以下のステップS524〜S525の説明においては、ステップS523で選択されたサーバを「サーバsj」という。ステップS523で選択されるサーバsjは、式(7)の集合rack(si)に属するブレード型サーバである。
次に、ステップS524で温度評価部3aは、ステップS523で選択したサーバsjに現在温度異常が発生中か否かを判断する。温度評価部3aは、イベント管理テーブルを参照することで、ステップS501と同様にして、ステップS524の判断を行うことができる。
現在サーバsjに温度異常が発生中の場合、処理はステップS525に移行する。逆に、現在サーバsjに温度異常が発生していなければ、処理はステップS522に戻る。
ステップS525で温度評価部3aは、サーバsjに発生中の温度異常の重み(つまり式(1)の第4項における重みwtmpr(sj))を取得する。具体的には、温度評価部3aは、ステップS524の判断のための検索の結果としてイベント管理テーブルにおいて見つかったエントリの「イベントのレベル」フィールドの値を読み取る。そして、温度評価部3aは、読み取った値に対応する重みを取得する。さらに温度評価部3aは、取得した重みとラック係数Crackの積を、変数Xに足す。そして、処理はステップS522に戻る。
以上の説明から明らかなとおり、ステップS526の実行時点において、変数Xには、式(1)の温度評価値ftmpr(si)が格納されている。よって、ステップS526で温度評価部3aは、変数Xの値を、サーバsiの温度評価値ftmpr(si)として記録する。つまり、温度評価部3aは、結果テーブル中の、サーバsiに対応するエントリの「温度評価値」フィールドに、変数Xの値を記録する。そして、図11A〜11Cの温度評価処理は終了する。
さて、図12A〜12Bは、電圧評価処理のフローチャートである。第1実施形態では、図9のステップS402で電圧評価部3bがサーバsiに関して電圧評価処理を実行する。
ステップS601で電圧評価部3bは、現在サーバsiに電圧異常が発生中か否かを判断する。もし、イベント管理テーブルの中に、以下の3つの条件をすべて満たすエントリが存在すれば、サーバsiに現在電圧異常が発生中である。逆に、以下の3つの条件をすべて満たすエントリが存在しなければ、現在サーバsiに電圧異常は発生していない。
・「サーバID」フィールドの値がサーバsiのIDと等しい。
・「イベントの種類」フィールドが電圧異常(具体的には、電圧低下または電圧超過)を示している。
・「終了時刻」フィールドに無効な値が記録されている。
電圧評価部3bは、イベント管理テーブルから上記3つの条件をすべて満たすエントリを探すことで、ステップS601の判断を行う。そして、現在サーバsiに電圧異常が発生中の場合、処理はステップS602に移行する。逆に、現在サーバsiに電圧異常が発生していなければ、処理はステップS603に移行する。
ステップS602で電圧評価部3bは、サーバsiに発生中の電圧異常の重み(つまり式(8)の重みwvol(si))を取得する。具体的には、電圧評価部3bは、ステップS601の検索で見つかったエントリの「イベントのレベル」フィールドの値を読み取り、読み取った値に対応する重みを取得する。
さらに電圧評価部3bは、取得した重みと自己係数Cselfの積を、電圧評価値用の変数Xに代入する。そして、処理はステップS604に移行する。
他方、ステップS603で電圧評価部3bは、電圧評価用の変数Xに単に0を代入する。そして、処理はステップS604に移行する。以上のステップS602またはS603により、式(8)の第1項の値が変数Xに格納される。
ステップS604で電圧評価部3bは、図7のサーバテーブル203を参照することで、サーバsiの種別がブレード型かラックマウント型かを判断する。ステップS604の判断は、図11AのステップS504の判断と類似である。
サーバsiがブレード型サーバの場合、処理はステップS605に移行する。逆に、サーバsiがラックマウント型の場合、処理はステップS607に移行する。
ステップS605で電圧評価部3bは、サーバsiのサーバIDを検索キーとして用いて、サーバsiのシャーシIDをサーバテーブル203から取得する。
そして、次のステップS606で電圧評価部3bは、ステップS605で取得したシャーシIDから、ラックIDとラック内電源IDを取得する。具体的には、電圧評価部3bは、「シャーシID」フィールドの値がステップS605で取得したシャーシIDと同じエントリを、図7のシャーシテーブル204において探す。そして、電圧評価部3bは、見つかったエントリの「ラックID」フィールドと「ラック内電源ID」フィールドの値を取得する。
サーバsiがブレード型サーバの場合、ステップS605〜S606の結果として、「サーバsiを搭載したシャーシには、ラック内のどの電源ユニットから電力が供給されるのか」ということが特定される。ラックIDとラック内電源IDの取得後、処理はステップS608に移行する。
他方、電圧評価値を算出する対象のサーバsiがラックマウント型の場合、電圧評価部3bはステップS607で、サーバsiのIDを用いて、ラックIDとラック内電源IDを取得する。具体的には、電圧評価部3bは、「サーバID」フィールドの値がサーバsiのIDと等しいエントリをサーバテーブル203において探す。そして、電圧評価部3bは、見つかったエントリの「ラックID」フィールドと「ラック内電源ID」フィールドの値を取得する。
サーバsiがラックマウント型サーバの場合、ステップS607の結果として、「サーバsiには、ラック内のどの電源ユニットから電力が供給されるのか」ということが特定される。ラックIDとラック内電源IDの取得後、処理はステップS608に移行する
ステップS608で電圧評価部3bは、サーバsiと同じラック内で同じラック内電源を使う未選択のラックマウント型サーバがあるか否かを判断する。つまり、電圧評価部3bは、以下の4つの条件をすべて満たすエントリがサーバテーブル203にあるか否かを判断する。
・「ラックID」フィールドの値が、ステップS606またはS607で取得されたラックIDと等しい。
・「ラック内電源ID」フィールドの値が、ステップS606またはS607で取得されたラック内電源IDと等しい。
・「サーバID」フィールドの値が、サーバsiのIDとは異なる。
・ステップS610〜S611の処理対象としてまだステップS609で選択されていない。
もし上記4つの条件をすべて満たすエントリがあれば、処理はステップS609に移行する。逆に、上記4つの条件をすべて満たすエントリがなければ、処理は図12BのステップS612に移行する。
ステップS609で電圧評価部3bは、サーバsiと同一ラック内の未選択のラックマウント型サーバを1つ選択する。つまり、電圧評価部3bは、ステップS608の上記4つの条件をすべて満たすエントリに対応するサーバを1つ選択する。
便宜上、以下のステップS610〜S611の説明においては、ステップS609で選択されたサーバを「サーバsj」という。ステップS609で選択されるサーバsjは、式(11)の集合power(si)に属するラックマウント型サーバである。
次に、ステップS610で電圧評価部3bは、ステップS609で選択したサーバsjに現在電圧異常が発生中か否かを判断する。電圧評価部3bは、イベント管理テーブルを参照することで、ステップS601と同様にして、ステップS610の判断を行うことができる。
現在サーバsjに電圧異常が発生中の場合、処理はステップS611に移行する。逆に、現在サーバsjに電圧異常が発生していなければ、処理はステップS608に戻る。
ステップS611で電圧評価部3bは、サーバsjに発生中の電圧異常の重み(つまり式(8)の第2項における重みwvol(sj))を取得する。具体的には、電圧評価部3bは、ステップS610の判断のための検索の結果としてイベント管理テーブルにおいて見つかったエントリの「イベントのレベル」フィールドの値を読み取る。そして、電圧評価部3bは、読み取った値に対応する重みを取得する。さらに電圧評価部3bは、取得した重みと同一電源係数Cpowerの積を、変数Xに足す。そして、処理はステップS608に戻る。
さて、図12BのステップS612で電圧評価部3bは、サーバsiと同一ラック内の未選択のシャーシがあるか否かを判断する。つまり、電圧評価部3bは、以下の3つの条件をすべて満たすエントリがシャーシテーブル204にあるか否かを判断する。
・「ラックID」フィールドの値が、ステップS606またはS607で取得されたラックIDと等しい。
・「ラック内電源ID」フィールドの値が、ステップS606またはS607で取得されたラック内電源IDと等しい。
・ステップS614〜S617の処理対象としてまだステップS613で選択されていない。
もし上記3つの条件をすべて満たすエントリがあれば、処理はステップS613に移行する。逆に、上記3つの条件をすべて満たすエントリがなければ、処理はステップS618に移行する。
サーバsiがラックマウント型サーバの場合、上記3つの条件をすべて満たすエントリは、サーバsiと同じラックに搭載された、未選択のシャーシに対応する。逆に、サーバsiがブレード型サーバの場合、上記3つの条件をすべて満たすエントリは、サーバsiと同じラックに搭載されている未選択のシャーシ(サーバsiが搭載されているシャーシのこともあるし、他のシャーシのこともある)に対応する。
ステップS613で電圧評価部3bは、サーバsiと同一ラック内の未選択のシャーシを1つ選択する。つまり、電圧評価部3bは、ステップS612の上記3つの条件すべてを満たすエントリに対応するシャーシを1つ選択する。
次に、ステップS614で電圧評価部3bは、ステップS613で選択したシャーシ内の未選択のサーバ(ただしサーバsi以外)があるか否かを判断する。つまり、電圧評価部3bは、以下の4つの条件をすべて満たすエントリがサーバテーブル203にあるか否かを判断する。
・「ラックID」フィールドの値が、ステップS606またはS607で取得されたラックIDと等しい。
・「シャーシID」フィールドの値が、ステップS613で選択されたシャーシのシャーシIDと等しい。
・「サーバID」フィールドの値が、サーバsiのIDと異なる。
・ステップS616〜S617の処理対象としてまだステップS615で選択されていない。
もし上記4つの条件をすべて満たすエントリがあれば、処理はステップS615に移行する。逆に、上記4つの条件をすべて満たすエントリがなければ、処理はステップS612に戻る。
ステップS615で電圧評価部3bは、ステップS613で選択したシャーシ内の未選択のサーバを1つ選択する。つまり、電圧評価部3bは、ステップS614の上記4つの条件をすべて満たすエントリに対応するサーバを1つ選択する。
便宜上、以下のステップS616〜S617の説明においては、ステップS615で選択されたサーバを「サーバsj」という。ステップS615で選択されるサーバsjは、式(11)の集合power(si)に属するブレード型サーバである。
次に、ステップS616で電圧評価部3bは、ステップS615で選択したサーバsjに現在電圧異常が発生中か否かを判断する。電圧評価部3bは、イベント管理テーブルを参照することで、ステップS601と同様にして、ステップS616の判断を行うことができる。
現在サーバsjに電圧異常が発生中の場合、処理はステップS617に移行する。逆に、現在サーバsjに電圧異常が発生していなければ、処理はステップS614に戻る。
ステップS617で電圧評価部3bは、サーバsjに発生中の電圧異常の重み(つまり式(8)の第2項における重みwvol(sj))を取得する。具体的には、電圧評価部3bは、ステップS616の判断のための検索の結果としてイベント管理テーブルにおいて見つかったエントリの「イベントのレベル」フィールドの値を読み取る。そして、電圧評価部3bは、読み取った値に対応する重みを取得する。さらに電圧評価部3bは、取得した重みと同一電源係数Cpowerの積を、変数Xに足す。そして、処理はステップS614に戻る。
以上の説明から明らかなとおり、ステップS618の実行時点において、変数Xには、式(8)の電圧評価値fvol(si)が格納されている。よって、ステップS618で電圧評価部3bは、変数Xの値を、サーバsiの電圧評価値fvol(si)として記録する。つまり、電圧評価部3bは、結果テーブル中の、サーバsiに対応するエントリの「電圧評価値」フィールドに、変数Xの値を記録する。そして、図12A〜12Bの電圧評価処理は終了する。
さて次に、図9、11A〜11C、および12A〜12Bのフローチャートに示した処理によって算出される評価値の具体例を、図8および10を参照しながら説明する。
図10の結果テーブル206aは、2011年1月2日9時30分に、スタンバイサーバ30−2〜30−7のそれぞれについて図9の総合評価処理が実行された直後の状態を示す。
図8のイベント管理テーブル205bに示すように、2011年1月2日9時30分には、スタンバイサーバ30−2で温度異常が発生中である。しかし、2011年1月2日9時30分には、他のスタンバイサーバ30−3、30−4、30−5、30−6、および30−7は正常であり、アクティブサーバ30−1も正常である。また、係数201と重み202の値は図6のとおりとする。
すると、サーバ30−2に関して図9のステップS401で算出される温度評価値は、200(=CselfW2+0+0+0=100×2)である。また、サーバ30−2に関してステップS402で算出される電圧評価値は0である。
そして、サーバ30−2では、2011年1月2日9時30分に温度異常が発生中だが、当該温度異常以外の異常は、2011年1月2日9時30分までには発生したことがない。つまり、サーバ30−2では今まで温度異常のみが発生したことがあり、電圧異常は発生したことがない。
また、補正定数εは図6のとおり非常に小さい。よって、式(37)で近似されるとおり、サーバ30−2の総合評価値は、約200(=1×200+0×0)である。結果テーブル206aにおいてサーバIDが「2」のエントリには、以上のようにして算出された200、0、および200という3つの値が記録される。
また、サーバ30−3に関してステップS401で算出される温度評価値は、12(=0+CadjW2+0+0=6×2)である。サーバ30−3に関してステップS402で算出される電圧評価値は0である。
そして、サーバ30−3では2011年1月2日9時30分までに何の異常も発生していない。したがって、式(38)に示すとおり、サーバ30−3の総合評価値は、6(=1/2×12+1/2×0)である。結果テーブル206aにおいてサーバIDが「3」のエントリには、以上のようにして算出された12、0、および6という3つの値が記録される。
また、サーバ30−4〜30−7のいずれに関しても、ステップS401で算出される温度評価値が0であり、ステップS402で算出される電圧評価値が0である。そのため、サーバ30−4〜30−7のいずれの総合評価値も、0である。したがって、結果テーブル206aにおいてサーバIDが「3」、「4」、「5」、「6」、および「7」のエントリのいずれにおいても、以上のようにして算出された0、0、および0という3つの値が記録される。
以上のようにして得られる結果テーブル206aによれば、将来故障が発生する蓋然性は、総合評価値が0のサーバ30−3〜30−7において最も低い。したがって、仮に2011年1月2日9時30分にアクティブサーバ30−1が故障した場合は、フェイルオーバ制御部4は、サーバ30−3〜30−7のいずれかを新たなアクティブサーバとして選択する。
ところで、アクティブサーバ30−1が正常なままの場合もある。例えば、管理DB5内のイベント管理テーブルは、2011年1月2日11時10分においても図8のイベント管理テーブル205bの状態のままであり、変わっていないとする。この場合、アクティブサーバ30−1は2011年1月2日11時10分の時点において、なお正常である。
図10の結果テーブル206bは、2011年1月2日11時10分に、スタンバイサーバ30−2〜30−7のそれぞれについて図9の総合評価処理が実行された直後の状態を示す。
図8のイベント管理テーブル205bに示すように、2011年1月2日11時10分には、スタンバイサーバ30−2で温度異常が発生中であり、スタンバイサーバ30−4と30−6で電圧異常が発生中である。しかし、2011年1月2日11時10分には、他のスタンバイサーバ30−3、30−5、および30−7は正常であり、アクティブサーバ30−1も正常である。また、係数201と重み202の値は図6のとおりとする。
すると、サーバ30−2と30−3に関する算出結果は、結果テーブル206aに示した2011年1月2日9時30分の算出結果と同じである。また、サーバ30−4〜30−7に関して図9のステップS401で算出される温度評価値も、結果テーブル206aと同様である。
他方、サーバ30−4に関して図9のステップS402で算出される電圧評価値は、600(=CselfW3+0=100×6)である。そして、サーバ30−4では、2011年1月2日11時10分に電圧異常が発生中だが、当該電圧異常以外の異常は、2011年1月2日11時10分までには発生したことがない。つまり、サーバ30−4では電圧異常のみが発生したことがあり、温度異常は発生したことがない。
また、補正定数εは図6のとおり非常に小さい。よって、式(37)で近似されるとおり、サーバ30−4の総合評価値は、約600(=0×0+1×600)である。結果テーブル206bにおいてサーバIDが「4」のエントリには、以上のようにして算出された0、600、および600という3つの値が記録される。
また、サーバ30−5に関してステップS402で算出される電圧評価値は、60(=0+CpowerW3=10×6)である。そして、サーバ30−5では2011年1月2日11時10分までに何の異常も発生していない。したがって、式(38)に示すとおり、サーバ30−5の総合評価値は、30(=1/2×0+1/2×60)である。結果テーブル206bにおいてサーバIDが「5」のエントリには、以上のようにして算出された0、60、および30という3つの値が記録される。
そして、サーバ30−6に関してステップS402で算出される電圧評価値は、100(=CselfW1+0=100×1)である。また、サーバ30−6では、2011年1月2日11時10分に電圧異常が発生中であり、2011年1月1日11時から2011年1月1日12時までの間にも、電圧異常が発生していた。しかし、サーバ30−6において温度異常が発生したことはない。
また、補正定数εは図6のとおり非常に小さい。よって、式(37)で近似されるとおり、サーバ30−6の総合評価値は、約100(=0×0+1×100)である。結果テーブル206bにおいてサーバIDが「6」のエントリには、以上のようにして算出された0、100、および100という3つの値が記録される。
そして、サーバ30−7に関してステップS402で算出される電圧評価値は、10(=0+CpowerW1=10×1)である。また、サーバ30−7では2011年1月2日11時10分までに何の異常も発生していない。したがって、式(38)に示すとおり、サーバ30−7の総合評価値は5(=1/2×0+1/2×10)である。結果テーブル206bにおいてサーバIDが「7」のエントリには、以上のようにして算出された0、10、5という3つの値が記録される。
以上のようにして得られる結果テーブル206bによれば、将来故障が発生する蓋然性は、総合評価値が5のサーバ30−7において最も低い。よって、仮に結果テーブル206bが更新される前にアクティブサーバ30−1が故障し、当該故障を機に図5にしたがってフェイルオーバ処理が行われる場合は、フェイルオーバ制御部4は、サーバ30−7を新たなアクティブサーバとして選択する。
続いて、図13〜16を参照して、第2実施形態について説明する。第2実施形態では式(30)の総合評価値ftotal(si)が算出される。具体的には、第2実施形態の算出部3は、図13のフローチャートにしたがって動作する。
図13は、第2実施形態での総合評価処理のフローチャートである。図13の総合評価処理は、図1のステップS106で算出部3が実行する。より具体的には、フェイルオーバ処理が図4のように行われる場合は、図4のステップS203で算出部3が図13の総合評価処理を実行し、フェイルオーバ処理が図5のように行われる場合は、図5の処理と独立して算出部3が適宜のタイミングで図13の総合評価処理を実行する。
また、図13の総合評価処理は、ある1台のサーバ(説明の便宜上、「サーバsi」とする)に関して実行される。例えば、フェイルオーバ制御部4が、サーバsiのIDを算出部3に指定して、算出部3に総合評価処理の実行を命じてもよい。あるいは、算出部3が定期的に各サーバsiについて図13の総合評価処理を実行してもよい。
いつ図13の総合評価処理が実行されるにせよ、第2実施形態では、管理DB5が図16のような結果テーブルを含む。図16の結果テーブルの詳細は後述するが、図16に示すとおり、第2実施形態の結果テーブルの各エントリは、サーバID、温度評価値、電圧評価値、劣化評価値、および総合評価値という、5個のフィールドを含む。また、結果テーブルの各エントリは、各スタンバイサーバに対応する。図13の総合評価処理の進捗にともなって、結果テーブルは更新される。
図13のステップS701〜S702は、図9のステップS401〜S402と同様なので、詳しい説明を省略する。
次のステップS703で算出部3は、サーバsiのIDを劣化評価部3dに指定し、図14A〜14Bの劣化評価処理の実行を劣化評価部3dに命じる。すると、劣化評価部3dは、図14A〜14Bのフローチャートにしたがって、式(12)の劣化評価値fdgr(si)を算出する。そして、劣化評価部3dは、結果テーブル中の、サーバsiに対応するエントリの劣化評価値のフィールドに、算出結果を記録する。
また、次のステップS704では、総合評価部3cが、図9のステップS403〜S410と同様にして、温度評価値ftmpr(si)と電圧評価値fvol(si)それぞれの影響の割合を算出する。
そして、ステップS705で総合評価部3cは、算出した割合を用いて温度評価値ftmpr(si)と電圧評価値fvol(si)を重み付けした値(すなわち式(34)のftot(si))を、算出する。ステップS705での重み付け和の算出方法は、図9のステップS411と同様である。
最後にステップS706で総合評価部3cは、ステップS705で算出した値ftot(si)に、ステップS703で結果テーブルに記録された劣化評価値fdgr(si)を加算することにより、総合評価値ftotal(si)を算出する。つまり、総合評価部3cは、式(30)にしたがって総合評価値ftotal(si)を算出する。
そして、総合評価部3cは、結果テーブル中の、サーバsiに対応するエントリの総合評価値のフィールドに、算出結果を記録する。すると、図13の総合評価処理は終了する。
さて、図14A〜14Bは、劣化評価処理のフローチャートである。第2実施形態では、図13のステップS703で劣化評価部3dが劣化評価処理を実行する。
ステップS801で劣化評価部3dは、電源投入時間の長さを示す変数Xonと、電源停止時間の長さを示す変数Xoffと、劣化評価値用の変数Xdgrを、それぞれ0に初期化する。
次に、ステップS802で劣化評価部3dは、ステップS803〜S804の処理対象として未選択の、サーバsiでの電源ONイベントがあるか否かを判断する。具体的には、劣化評価部3dは、下記の3つの条件をすべて満たすエントリがイベント管理テーブルの中にあるか否かを判断する。
・「サーバID」フィールドの値がサーバsiのIDと等しい。
・「イベントの種類」フィールドが、電源ONを示している。
・ステップS803〜S804の処理対象としてまだ選択されていない。
上記3つの条件をすべて満たすエントリがある場合、処理はステップS803に移行する。逆に、上記3つの条件をすべて満たすエントリがない場合、処理はステップS805に移行する。
ステップS803で劣化評価部3dは、サーバsiでの未選択の電源ONイベントを1つ選択する。つまり、劣化評価部3dは、サーバsiでの電源ONイベントに関する未選択のエントリ(すなわち上記3つの条件をすべて満たすエントリ)を1つ選択する。
そして、劣化評価部3dは、選択したエントリから、当該電源ONイベントの開始時刻と終了時刻を取得する。なお、選択したエントリに有効な終了時刻の値が記録されていない場合は、サーバsiは現在電源が投入された状態なので、劣化評価部3dは、終了時刻の代わりに現在時刻を取得する。
そして、ステップS804で劣化評価部3dは、選択したエントリに対応する電源投入時間の長さを算出する。つまり、劣化評価部3dは、取得した終了時刻または現在時刻から、取得した開始時刻を引く。そして、劣化評価部3dは、減算により得た値を、変数Xonに足す。その後、処理はステップS802に戻る。
ステップS802〜S804の繰り返しループの結果として、ステップS805の実行時点では、「Xon=ton(si)」という式が成り立つ(式(12)を参照)。
ステップS805で劣化評価部3dは、図6の電源投入係数Conを取得する。そして、劣化評価部3dは、電源投入係数Conと変数Xonの値との積を算出し、算出した値を変数Xdgrに足す。その結果、変数Xdgrには、式(12)の第1項の値が格納される。
次に、ステップS806で劣化評価部3dは、ステップS807〜S808の処理対象として未選択の、サーバsiでの電源OFFイベントがあるか否かを判断する。具体的には、劣化評価部3dは、下記の3つの条件をすべて満たすエントリがイベント管理テーブルの中にあるか否かを判断する。
・「サーバID」フィールドの値がサーバsiのIDと等しい。
・「イベントの種類」フィールドが、電源OFFを示している。
・ステップS807〜S808の処理対象としてまだ選択されていない。
上記3つの条件をすべて満たすエントリがある場合、処理はステップS807に移行する。逆に、上記3つの条件をすべて満たすエントリがない場合、処理はステップS809に移行する。
ステップS807で劣化評価部3dは、サーバsiでの未選択の電源OFFイベントを1つ選択する。つまり、劣化評価部3dは、サーバsiでの電源OFFイベントに関する未選択のエントリ(すなわち上記3つの条件をすべて満たすエントリ)を1つ選択する。
そして、劣化評価部3dは、選択したエントリから、当該電源OFFイベントの開始時刻と終了時刻を取得する。なお、選択したエントリに有効な終了時刻の値が記録されていない場合は、サーバsiは現在電源が切られた状態なので、劣化評価部3dは、終了時刻の代わりに現在時刻を取得する。
そして、ステップS808で劣化評価部3dは、選択したエントリに対応する電源停止時間の長さを算出する。つまり、劣化評価部3dは、取得した終了時刻または現在時刻から、取得した開始時刻を引く。そして、劣化評価部3dは、減算により得た値を、変数Xoffに足す。その後、処理はステップS806に戻る。
ステップS806〜S808の繰り返しループの結果として、ステップS809の実行時点では、「Xoff=toff(si)」という式が成り立つ(式(12)を参照)。
ステップS809で劣化評価部3dは、図6の経年劣化係数Coffを取得する。そして、劣化評価部3dは、経年劣化係数Coffと変数Xoffの値との積を算出し、算出した値を変数Xdgrに足す。その結果、変数Xdgrには、式(12)の第1項と第2項の和が格納される。
次に、図14BのステップS810で劣化評価部3dは、温度異常による劣化の評価用の(つまり式(12)と(13)のfdgrTmpr(si)を示すための)変数Xtを0に初期化する。また、劣化評価部3dは、電圧超過による劣化の評価用の(つまり式(12)と(14)のfdgrOvervol(si)を示すための)変数Xvも、0に初期化する。
そして、ステップS811で劣化評価部3dは、ステップS812〜S813の処理対象として未選択の、サーバsiでの温度異常イベントがあるか否かを判断する。具体的には、劣化評価部3dは、下記の3つの条件をすべて満たすエントリがイベント管理テーブルの中にあるか否かを判断する。
・「サーバID」フィールドの値がサーバsiのIDと等しい。
・「イベントの種類」フィールドが、温度異常を示している。
・ステップS812〜S813の処理対象としてまだ選択されていない。
上記3つの条件をすべて満たすエントリがある場合、処理はステップS812に移行する。逆に、上記3つの条件をすべて満たすエントリがない場合、処理はステップS814に移行する。
ステップS812で劣化評価部3dは、サーバsiでの未選択の温度異常イベントを1つ選択する。つまり、劣化評価部3dは、サーバsiでの温度異常イベントに関する未選択のエントリ(すなわち上記3つの条件をすべて満たすエントリ)を1つ選択する。
そして、劣化評価部3dは、選択したエントリから、当該温度異常イベントの開始時刻と終了時刻を取得する。なお、選択したエントリに有効な終了時刻の値が記録されていない場合は、当該温度異常イベントがまだ終熄していないので、劣化評価部3dは、終了時刻の代わりに現在時刻を取得する。
そして、ステップS813で劣化評価部3dは、選択した温度異常が続いた時間の長さを算出する。つまり、劣化評価部3dは、取得した終了時刻または現在時刻から、取得した開始時刻を引く。
さらに、劣化評価部3dは、選択した温度異常イベントの重みを取得する。具体的には、劣化評価部3dは、選択したエントリの「イベントのレベル」フィールドの値を読み取り、読み取った値に対応する重みを取得する。
そして、劣化評価部3dは、算出した時間の長さと取得した重みとの積を、変数Xtに足す。その後、処理はステップS811に戻る。
ステップS811〜S813の繰り返しループの結果として、ステップS814の実行時点における変数Xtには、式(13)において図6の温度依存劣化係数CdgrTmprに掛けられる乗数が、格納されている。
ステップS814で劣化評価部3dは、温度依存劣化係数CdgrTmprを取得する。そして、劣化評価部3dは、温度依存劣化係数CdgrTmprと変数Xtの値との積を算出し、算出した値を変数Xdgrに足す。その結果、変数Xdgrには、式(12)の第1項から第3項までの和が格納される。
次に、ステップS815で劣化評価部3dは、ステップS816〜S817の処理対象として未選択の、サーバsiでの電圧超過イベントがあるか否かを判断する。具体的には、劣化評価部3dは、下記の3つの条件をすべて満たすエントリがイベント管理テーブルの中にあるか否かを判断する。
・「サーバID」フィールドの値がサーバsiのIDと等しい。
・「イベントの種類」フィールドが、電圧超過を示している。
・ステップS816〜S817の処理対象としてまだ選択されていない。
上記3つの条件をすべて満たすエントリがある場合、処理はステップS816に移行する。逆に、上記3つの条件をすべて満たすエントリがない場合、処理はステップS818に移行する。
ステップS816で劣化評価部3dは、サーバsiでの未選択の電圧超過イベントを1つ選択する。つまり、劣化評価部3dは、サーバsiでの電圧超過イベントに関する未選択のエントリ(すなわち上記3つの条件をすべて満たすエントリ)を1つ選択する。
そして、劣化評価部3dは、選択したエントリから、当該電圧超過イベントの開始時刻と終了時刻を取得する。なお、選択したエントリには有効な終了時刻の値が記録されていない場合は、選択された電圧超過イベントはサーバsiにおいてまだ終熄していないので、劣化評価部3dは、終了時刻の代わりに現在時刻を取得する。
そして、ステップS817で劣化評価部3dは、選択した電圧超過が続いた時間の長さを算出する。つまり、劣化評価部3dは、取得した終了時刻または現在時刻から、取得した開始時刻を引く。
さらに、劣化評価部3dは、選択した電圧超過イベントの重みを取得する。具体的には、劣化評価部3dは、選択したエントリの「イベントのレベル」フィールドの値を読み取り、読み取った値に対応する重みを取得する。
そして、劣化評価部3dは、算出した時間の長さと取得した重みとの積を、変数Xvに足す。その後、処理はステップS815に戻る。
ステップS815〜S817の繰り返しループの結果として、ステップS818の実行時点において変数Xvに格納されている値は、式(14)において図6の電圧依存劣化係数CdgrOvervolに掛けられる乗数である。
ステップS818で劣化評価部3dは、電圧依存劣化係数CdgrOvervolを取得する。そして、劣化評価部3dは、電圧依存劣化係数CdgrOvervolと変数Xvの値との積を算出し、算出した値を変数Xdgrに足す。その結果、変数Xdgrには、式(12)の劣化評価値fdgr(si)が格納される。
最後に、ステップS819で劣化評価部3dは、変数Xdgrの値を、サーバsiの劣化評価値fdgr(si)として記録する。つまり、劣化評価部3dは、結果テーブル中の、サーバsiに対応するエントリの「劣化評価値」フィールドに、変数Xdgrの値を記録する。そして、図14A〜14Bの劣化評価処理は終了する。
さて、図15は、管理DBに含まれるイベント管理テーブルの例を示す図である。図15には、2011年1月3日11時におけるイベント管理テーブル205cが例示されている。図8のイベント管理テーブル205bと比べると、イベント管理テーブル205cでは、12番目と14番目と15番目のエントリの終了時刻が更新されており、16番目と17番目のエントリが追加されている。
具体的には、2011年1月2日12時にサーバ管理装置31−6は、サーバ30−6の電圧が正常に戻ったことを検出する。すると、サーバ管理装置31−6は、サーバ30−6の電圧低下からの復旧を収集部2に通知する。通知に応じて、収集部2は、15番目のエントリの終了時刻を2011年1月2日12時に更新する。
また、2011年1月3日10時にサーバ管理装置31−2は、サーバ30−2の温度が正常に戻ったことを検出する。すると、サーバ管理装置31−2は、サーバ30−2の温度異常からの復旧を収集部2に通知する。通知に応じて、収集部2は、12番目のエントリの終了時刻を2011年1月3日10時に更新する。
さらに、2011年1月3日10時にサーバ管理装置31−4は、サーバ30−4の電圧が正常に戻ったことを検出する。すると、サーバ管理装置31−4は、サーバ30−4の電圧低下からの復旧を収集部2に通知する。通知に応じて、収集部2は、14番目のエントリの終了時刻を2011年1月3日10時に更新する。
その後、2011年1月3日11時には、サーバ管理装置31−2が、サーバ30−2の温度異常を検出し、検出結果を収集部2に通知する。すると、収集部2は、サーバ管理装置31−2からの通知に基づいて、サーバ30−2に「Minor」レベルの「温度異常」イベントが発生したことを認識する。認識の結果、収集部2は、16番目のエントリを生成する。図15において、16番目のエントリの終了時刻は無効な値である。
さらに、2011年1月3日11時には、サーバ管理装置31−4が、サーバ30−4の電圧超過を検出し、検出結果を収集部2に通知する。すると、収集部2は、サーバ管理装置31−4からの通知に基づいて、サーバ30−4に「Major」レベルの「電圧超過」イベントが発生したことを認識する。認識の結果、収集部2は、17番目のエントリを生成する。図15において、17番目のエントリの終了時刻は無効な値である。
さて次に、第2実施形態で算出される評価値の具体例を、図15および図16を参照しながら説明する。図16の結果テーブル206cは、2011年1月3日10時30分に、スタンバイサーバ30−2〜30−7のそれぞれについて図13の総合評価処理が実行された直後の状態を示す。
図15のイベント管理テーブル205cに示すように、2011年1月3日10時30分には、サーバ30−1〜30−7のいずれも正常である。また、係数201と重み202の値は図6のとおりとする。
すると、サーバ30−2〜30−7のいずれに関しても、図13のステップS701で算出される温度評価値は、0である。また、サーバ30−2〜30−7のいずれに関しても、ステップS702で算出される電圧評価値は、0である。よって、サーバ30−2〜30−7のいずれに関しても、ステップS705で算出される重み付け和は、0である。
なお、図10と図16の比較から明らかなとおり、温度異常が終熄すれば温度評価値も下がり、電圧異常が終熄すれば電圧評価値も下がる。
さて、サーバ30−2に関する劣化評価値と総合評価値は、次のように算出される。
図15のイベント管理テーブル205cにおいて、サーバ30−2に関する2番目と8番目のエントリは、以下のことを示す。
・サーバ30−2は、2010年12月23日10時から2010年12月28日10時までの120時間の間、電源が投入されていない状態である。
・サーバ30−2は、2010年12月28日10時から2011年1月3日10時30分までの144.5時間の間、電源が投入された状態である。
したがって、式(12)においてton(si)=144.5かつtoff(si)=120である。つまり、図14AのステップS805において変数Xonの値は144.5であり、ステップS809において変数Xoffの値は120である。
また、イベント管理テーブル205cの12番目のエントリによれば、サーバ30−2では、2011年1月1日10時から2011年1月3日10時までの48時間の間、「Major」レベルの温度異常が続いている。なお、2011年1月3日10時30分には、イベント管理テーブル205cの16番目のエントリはまだ生成されていないことに注意されたい。
したがって、式(13)の関数fdgrTmpr(si)の値は、次の式から分かるとおり、約0.27である。
CdgrTmpr×W2×48=1/360×2×48=4/15≒0.27
つまり、図14BのステップS814では、変数Xtの値は96(=2×48)であり、変数Xdgrには上記の約0.27という値が足される。
なお、イベント管理テーブル205cによれば、2011年1月3日10時30分までにサーバ30−2に電圧超過が生じたことはない。したがって、式(14)の関数fdgrOvervol(si)の値は、0である。つまり、図14BのステップS818では、変数Xvの値は0であり、変数Xdgrには0が足される。
よって、サーバ30−2に関して式(12)にしたがって算出される劣化評価値は、次の式から分かるとおり、約0.83である。
1/360×144.5+1/720×120+4/15+0≒0.83
そして、上記のとおり図13のステップS705で算出される値は0である。よって、ステップS706で算出されるサーバ30−2の総合評価値は、約0.83(=0+0.83)である。
さて、サーバ30−3に関する劣化評価値と総合評価値は、次のように算出される。
イベント管理テーブル205cの9番目のエントリによれば、サーバ30−3は、2010年12月28日10時から2011年1月3日10時30分までの144.5時間の間、電源が投入されていない状態である。そして、サーバ30−3に関する電源ONイベントは記録されていない。したがって、式(12)においてton(si)=0かつtoff(si)=144.5である。
また、サーバ30−3には今まで温度異常も電圧超過も生じていない。よって、サーバ30−3に関して式(12)にしたがって算出される劣化評価値は、次の式から分かるとおり、約0.20である。
1/360×0+1/720×144.5+0+0≒0.20
また、上記のとおり図13のステップS705で算出される値は0である。よって、ステップS706で算出されるサーバ30−3の総合評価値は、約0.20(=0+0.20)である。
さて、サーバ30−4に関する劣化評価値と総合評価値は、次のように算出される。
イベント管理テーブル205cにおいてサーバ30−4に関する3番目と7番目のエントリは、以下のことを示す。
・サーバ30−4は、2010年12月23日10時から2010年12月27日10時までの96時間の間、電源が投入されていない状態である。
・サーバ30−4は、2010年12月27日10時から2011年1月3日10時30分までの168.5時間の間、電源が投入された状態である。
したがって、式(12)においてton(si)=168.5かつtoff(si)=96である。
また、イベント管理テーブル205cによれば、2011年1月3日10時30分までの間に、サーバ30−4には、電圧低下が生じたことはあるが、温度異常も電圧超過も生じたことはない。よって、サーバ30−4に関して式(12)にしたがって算出される劣化評価値は、次の式から分かるとおり、約0.60である。
1/360×168.5+1/720×96+0+0≒0.60
また、上記のとおり図13のステップS705で算出される値は0である。よって、ステップS706で算出されるサーバ30−4の総合評価値は、約0.60(=0+0.60)である。
さて、サーバ30−5に関する劣化評価値と総合評価値は、次のように算出される。
イベント管理テーブル205cの4番目のエントリによれば、サーバ30−5は、2010年12月23日10時から2011年1月3日10時30分までの264.5時間の間、電源が投入されていない状態である。そして、サーバ30−5に関する電源ONイベントは記録されていない。したがって、式(12)においてton(si)=0かつtoff(si)=264.5である。
また、サーバ30−5には今まで温度異常も電圧超過も生じていない。よって、サーバ30−5に関して式(12)にしたがって算出される劣化評価値は、次の式から分かるとおり、約0.37である。
1/360×0+1/720×264.5+0+0≒0.37
また、上記のとおり図13のステップS705で算出される値は0である。よって、ステップS706で算出されるサーバ30−5の総合評価値は、約0.37(=0+0.37)である。
さて、サーバ30−6に関する劣化評価値と総合評価値は、次のように算出される。
イベント管理テーブル205cにおいてサーバ30−6に関する5番目と10番目のエントリは、以下のことを示す。
・サーバ30−6は、2010年12月23日10時から2010年12月28日10時までの120時間の間、電源が投入されていない状態である。
・サーバ30−6は、2010年12月28日10時から2011年1月3日10時30分までの144.5時間の間、電源が投入された状態である。
したがって、式(12)においてton(si)=144.5かつtoff(si)=120である。
また、イベント管理テーブル205cによれば、2011年1月3日10時30分までの間に、サーバ30−6には、電圧低下が生じたことは2回あるが、温度異常も電圧超過も生じたことはない。よって、サーバ30−6に関して式(12)にしたがって算出される劣化評価値は、次の式から分かるとおり、約0.57である。
1/360×144.5+1/720×120+0+0≒0.57
また、上記のとおり図13のステップS705で算出される値は0である。よって、ステップS706で算出されるサーバ30−6の総合評価値は、約0.57(=0+0.57)である。
さて、サーバ30−7に関する劣化評価値と総合評価値は、次のように算出される。
イベント管理テーブル205cにおいてサーバ30−7に関する6番目と11番目のエントリは、以下のことを示す。
・サーバ30−7は、2010年12月23日10時から2010年12月31日10時までの192時間の間、電源が投入されていない状態である。
・サーバ30−7は、2010年12月31日10時から2011年1月3日10時30分までの72.5時間の間、電源が投入された状態である。
したがって、式(12)においてton(si)=72.5かつtoff(si)=192である。
また、イベント管理テーブル205cによれば、2011年1月3日10時30分までの間に、サーバ30−7には、温度異常も電圧超過も生じたことはない。よって、サーバ30−7に関して式(12)にしたがって算出される劣化評価値は、次の式から分かるとおり、約0.47である。
1/360×72.5+1/720×192+0+0≒0.47
また、上記のとおり図13のステップS705で算出される値は0である。よって、ステップS706で算出されるサーバ30−7の総合評価値は、約0.47(=0+0.47)である。
算出部3は、以上に説明したような、サーバ30−2〜30−7それぞれについての各種評価値を算出し、算出した評価値を図16の結果テーブル206cに格納する。結果テーブル206cによれば、将来故障が発生する蓋然性は、総合評価値が約0.20のサーバ30−3において最も低い。したがって、仮にアクティブサーバ30−1が故障した場合は、フェイルオーバ制御部4は、サーバ30−3を新たなアクティブサーバとして選択する。
続いて、図17〜20を参照して、第3実施形態について説明する。第3実施形態では、式(31)の総合評価値ftotal(si)が算出される。具体的には、第3実施形態の算出部3は、図17のフローチャートにしたがって動作する。
図17は、第3実施形態での総合評価処理のフローチャートである。図17の総合評価処理は、図1のステップS106で算出部3が実行する。より具体的には、フェイルオーバ処理が図4のように行われる場合は、図4のステップS203で算出部3が図17の総合評価処理を実行し、フェイルオーバ処理が図5のように行われる場合は、図5の処理と独立して算出部3が適宜のタイミングで図17の総合評価処理を実行する。
また、図17の総合評価処理は、ある1台のサーバ(説明の便宜上、「サーバsi」とする)に関して実行される。例えば、フェイルオーバ制御部4が、サーバsiのIDを算出部3に指定して、算出部3に総合評価処理の実行を命じてもよい。あるいは、算出部3が定期的に各サーバsiについて図17の総合評価処理を実行してもよい。
いつ図17の総合評価処理が実行されるにせよ、第3実施形態では、管理DB5が図19のような結果テーブルを含む。図19の結果テーブルの詳細は後述するが、図19に示すとおり、第3実施形態の結果テーブルの各エントリは、サーバID、温度評価値、電圧評価値、時刻評価値、および総合評価値という、5個のフィールドを含む。また、結果テーブルの各エントリは、各スタンバイサーバに対応する。図17の総合評価処理の進捗にともなって、結果テーブルは更新される。
図17のステップS901〜S902は、図9のステップS401〜S402と同様なので、詳しい説明を省略する。
次のステップS903で算出部3は、次の2つの値を引数として時刻評価部3eに指定し、図18の時刻評価処理の実行を時刻評価部3eに命じる。
・サーバsiのID
・現在時刻(式(31)では「Now」と表記されている)に応じて決まる、期間period(Now)
すると、時刻評価部3eは、図18のフローチャートにしたがって、時刻評価値ftime(si,period(Now))を算出する。そして、時刻評価部3eは、結果テーブル中の、サーバsiに対応するエントリの時刻評価値のフィールドに、算出結果を記録する。
なお、式(31)に関して説明したとおり、引数として与えられる期間period(Now)は、ステップS903が実行される時点を含む適宜の時間帯である。例えば、ステップS903が11時に実行される場合は、期間period(Now)は、11時から始まる時間帯(例えば11時から12時までの時間帯)でもよいし、11時を中途に含む時間帯(例えば10時30分から11時30分までの時間帯)でもよい。
関数period()の詳細は、実施形態に応じて予め適宜決められる。したがって、算出部3は、ステップS903が実行される時点の現在時刻に応じて、適宜の期間period(Now)を、引数として時刻評価部3eに指定することができる。
また、次のステップS904では、総合評価部3cが、図9のステップS403〜S410と同様にして、温度評価値ftmpr(si)と電圧評価値fvol(si)それぞれの影響の割合を算出する。
そして、ステップS905で総合評価部3cは、算出した割合を用いて温度評価値ftmpr(si)と電圧評価値fvol(si)を重み付けした値(すなわち式(34)のftot(si))を、算出する。ステップS905での重み付け和の算出方法は、図9のステップS411と同様である。
最後にステップS906で総合評価部3cは、ステップS905で算出した値ftot(si)に、ステップS903で結果テーブルに記録された時刻評価値ftime(si,period(Now))を加算することにより、総合評価値ftotal(si)を算出する。つまり、総合評価部3cは、式(31)にしたがって総合評価値ftotal(si)を算出する。
そして、総合評価部3cは、結果テーブル中の、サーバsiに対応するエントリの総合評価値のフィールドに、算出結果を記録する。すると、図17の総合評価処理は終了する。
さて、図18は、時刻評価処理のフローチャートである。第3実施形態では、図17のステップS903で時刻評価部3eが時刻評価処理を実行する。なお、図18の説明においては、時刻評価部3eに対して引数として指定される時間帯を「p」とする。
ステップS1001で時刻評価部3eは、時刻評価値用の変数Xを0に初期化する。また、時刻評価部3eは、図6の1ヶ月係数Coneと2ヶ月係数Ctwoと3ヶ月係数Cthreeの値を取得する。
次に、ステップS1002で時刻評価部3eは、ステップS1003〜S1010の処理対象として未選択の、サーバsiでの異常イベントがあるか否かを判断する。具体的には、時刻評価部3eは、下記の3つの条件をすべて満たすエントリがイベント管理テーブルの中にあるか否かを判断する。
・「サーバID」フィールドの値がサーバsiのIDと等しい。
・「イベントの種類」フィールドが、何らかの異常(具体的には、温度異常、電圧低下、または電圧超過)を示している。
・ステップS1003〜S1010の処理対象としてまだ選択されていない。
上記3つの条件をすべて満たすエントリがある場合、処理はステップS1003に移行する。逆に、上記3つの条件をすべて満たすエントリがない場合、処理はステップS1011に移行する。
ステップS1003で時刻評価部3eは、サーバsiでの未選択の異常イベントを1つ選択する。つまり、時刻評価部3eは、サーバsiでの異常イベントに関する未選択のエントリ(すなわち上記3つの条件をすべて満たすエントリ)を1つ選択する。
次に、ステップS1004で時刻評価部3eは、選択した異常イベントが続いた期間が、時間帯pと重なっているか否かを判断する。なお、時間帯pの長さは、1日より短く定められるものとする。よって、時刻評価部3eは、具体的には以下のように判断する。
もし、選択したエントリに終了時刻が記録されていなければ(すなわち、選択した異常イベントがまだ続いていれば)、時刻評価部3eは、現在時刻を終了時刻と見なす。そして、時刻評価部3eは、選択した異常イベントの開始時刻から終了時刻までの期間と、時間帯pとが、一部分でも重なっているか否かを判断する。
例えば、時間帯pが11時から12時までの時間帯だとする。この場合、例えば、開始時刻が2011年1月4日9時で終了時刻が2011年1月4日11時10分の異常イベントは、時間帯pと一部重なる。また、開始時刻が2011年1月4日13時で終了時刻が2011年1月5日11時30分の異常イベントも、時間帯pと一部重なる。他方、開始時刻が2011年1月4日13時で終了時刻が2011年1月4日14時の異常イベントは、時間帯pとまったく重ならない。
選択した異常イベントの開始時刻から終了時刻までの期間と、時間帯pとが、一部分でも重なっていれば、処理はステップS1005に移行する、逆に、選択した異常イベントの開始時刻から終了時刻までの期間と、時間帯pとが、まったく重なっていなければ、処理はステップS1002に戻る。
ステップS1005で時刻評価部3eは、選択した異常イベントが最近1ヶ月以内に発生した異常イベントなのか否かを判断する。時刻評価部3eは、選択したエントリの開始時刻に記録されている日付と、図18の時刻評価処理を実行している日から、ステップS1005の判断を行う。
もし、選択した異常イベントが最近1ヶ月以内に発生した異常イベントであれば、処理はステップS1006に移行する。逆に、選択した異常イベントが1ヶ月より前に発生した異常イベントであれば、処理はステップS1007に移行する。
ステップS1006で時刻評価部3eは、選択した異常イベントの重みを取得する。具体的には、時刻評価部3eは、選択したエントリの「イベントのレベル」フィールドの値を読み取り、読み取った値に対応する重みを取得する。
そして、時刻評価部3eは、取得した重みと1ヶ月係数Coneとの積を、変数Xに足す。その後、処理はステップS1002に戻る。
ステップS1007で時刻評価部3eは、選択した異常イベントが最近2ヶ月以内に発生した異常イベントなのか否かを判断する。もし、選択した異常イベントが最近2ヶ月以内に発生した異常イベントであれば、処理はステップS1008に移行する。逆に、選択した異常イベントが2ヶ月より前に発生した異常イベントであれば、処理はステップS1009に移行する。
ステップS1008で時刻評価部3eは、選択した異常イベントの重みを取得する。そして、時刻評価部3eは、取得した重みと2ヶ月係数Ctwoとの積を、変数Xに足す。その後、処理はステップS1002に戻る。
ステップS1009で時刻評価部3eは、選択した異常イベントが最近3ヶ月以内に発生した異常イベントなのか否かを判断する。もし、選択した異常イベントが最近3ヶ月以内に発生した異常イベントであれば、処理はステップS1010に移行する。逆に、選択した異常イベントが3ヶ月より前に発生した異常イベントであれば、処理はステップS1002に戻る。
ステップS1010で時刻評価部3eは、選択した異常イベントの重みを取得する。そして、時刻評価部3eは、取得した重みと3ヶ月係数Cthreeとの積を、変数Xに足す。その後、処理はステップS1002に戻る。
以上のステップS1002〜S1010の繰り返しループの結果として、ステップS1011の実行時点では、サーバsiで最近3ヶ月以内に発生したすべての異常イベントが選択済みである。つまり、ステップS1011の実行時点では、式(26)の時刻評価値ftime(si,p)が変数Xに格納されている。
よって、ステップS1011で時刻評価部3eは、変数Xの値をサーバsiの時刻評価値ftime(si,p)として記録する。つまり、時刻評価部3eは結果テーブル中の、サーバsiに対応するエントリの「時刻評価値」フィールドに、変数Xの値を記録する。そして、図18の時刻評価処理は終了する。
なお、ステップS1005、S1007、およびS1009における判断では、上記のように開始時刻が使われてもよい。しかし、実施形態によっては、開始時刻の代わりに、終了時刻(ただし、終了時刻が記録されていないエントリに関しては、現在時刻)が使われてもよい。
さて次に、第3実施形態で算出される評価値の具体例を、図15および図19を参照しながら説明する。図19の結果テーブル206dは、2011年1月3日11時10分に、スタンバイサーバ30−2〜30−7のそれぞれについて図17の総合評価処理が実行された直後の状態を示す。なお、以下では、管理DB5内のイベント管理テーブルは、2011年1月3日11時10分においても図15のイベント管理テーブル205cの状態のままであり、変わっていないものとする。
図15のイベント管理テーブル205cに示すように、2011年1月3日11時10分には、サーバ30−2に温度異常が発生しており、サーバ30−4に電圧超過が発生している。他方、他のサーバ30−1、30−3、30−5、30−6、30−7は正常である。
よって、サーバ30−2に関して図17のステップS901で算出される温度評価値は、100(=CselfW1+0+0+0=100×1)である。また、サーバ30−2に関してステップS902で算出される電圧評価値は0である。
そして、サーバ30−2では、今まで温度異常のみが発生したことがあり、電圧異常は発生したことがない。よって、式(37)で近似されるとおり、サーバ30−2に関してステップS905で算出される値は、約100(=1×100+0×0)である。
ここで、図17の総合評価処理が行われるのは、上記のとおり2011年1月3日11時10分である。つまり、式(31)において現在時刻を示す引数「Now」の値は、2011年1月3日11時10分である。以下では説明の便宜上、式(31)の時間帯period(Now)が、「11時10分から12時10分までの1時間」という時間帯であるとする。
以上の仮定と図15のイベント管理テーブル205cによれば、12番目と16番目のエントリにより表される温度異常が、サーバ30−2の時刻評価値の算出において考慮される。理由は以下のとおりである。
・12番目のエントリが表す温度異常の開始時刻は、最近1ヶ月以内である。また、当該温度異常が続いた期間は、2011年1月1日(と2011年1月2日)における11時10分から12時10分までの時間帯と重なる。
・16番目のエントリが表す温度異常の開始時刻は、最近1ヶ月以内である。また、当該温度異常は、まだ終熄しておらず、2011年1月3日11時10分の時点において継続中である。よって、当該温度異常が継続している期間は、2011年1月3日における11時10分から12時10分までの時間帯と、少なくとも一部が重なる。
具体的には、最近1ヶ月以内の上記時間帯period(Now)において、「Major」レベルの温度異常が「1回」とカウントされ、「Minor」レベルの温度異常が「1回」とカウントされる。よって、サーバ30−2の時刻評価値は、次の式から分かるとおり、12である。
Cone(W2×1+W1×1)=4×(2+1)=12
そして、上記のとおり図17のステップS905で算出される値は約100である。よって、ステップS906で算出されるサーバ30−2の総合評価値は、約112(=100+12)である。
さて、サーバ30−3に関して図17のステップS901で算出される温度評価値は、6(=0+CadjW1+0+0=6×1)である。また、サーバ30−3に関してステップS902で算出される電圧評価値は0である。
そして、サーバ30−3では、今まで温度異常も電圧異常も発生したことがない。よって、式(38)に示すとおり、サーバ30−3に関してステップS905で算出される値は3(=1/2×6+1/2×0)である。
また、サーバ30−3では今まで温度異常も電圧異常も発生したことがないので、当然、サーバ30−3の時刻評価値は0である。よって、ステップS906で算出されるサーバ30−3の総合評価値は、3(=0+3)である。
さて、サーバ30−4に関してステップS901で算出される温度評価値は、0である。
他方、図15のイベント管理テーブル205cの17番目のエントリが示すように、サーバ30−4では電圧超過が発生中である。よって、サーバ30−4に関してステップS902で算出される電圧評価値は、200(=CselfW2+0=100×2)である。
また、サーバ30−4では今まで、電圧異常のみが発生したことがあり、温度異常は発生したことがない。よって、式(37)で近似されるとおり、サーバ30−4に関してステップS905で算出される値は、約200(=0×0+1×200)である。
また、サーバ30−4の時刻評価値の算出においては、図15のイベント管理テーブル205cの14番目と17番目のエントリにより表される電圧異常が、考慮される。理由は以下のとおりである。
・14番目のエントリが表す電圧低下の開始時刻は、最近1ヶ月以内である。また、当該電圧低下が続いた期間は、2011年1月2日における11時10分から12時10分までの時間帯と重なる。
・17番目のエントリが表す電圧超過の開始時刻は、最近1ヶ月以内である。また、当該電圧超過は、まだ終熄しておらず、2011年1月3日11時10分の時点において継続中である。よって、当該電圧超過が継続している期間は、2011年1月3日における11時10分から12時10分までの時間帯と、少なくとも一部が重なる。
具体的には、最近1ヶ月以内の上記時間帯period(Now)において、「Critical」レベルの電圧低下が「1回」とカウントされ、「Major」レベルの電圧超過が「1回」とカウントされる。よって、サーバ30−4の時刻評価値は、次の式から分かるとおり、32である。
Cone(W3×1+W2×1)=4×(6+2)=32
そして、上記のとおり図17のステップS905で算出される値は約200である。よって、ステップS906で算出されるサーバ30−4の総合評価値は、約232(=200+32)である。
さて、サーバ30−5に関してステップS901で算出される温度評価値は、0である。他方、ステップS902で算出される電圧評価値は、20(=0+CpowerW2=10×2)である。
そして、サーバ30−5では、今まで温度異常も電圧異常も発生したことがない。よって、式(38)に示すとおり、サーバ30−5に関してステップS905で算出される値は、10(=1/2×0+1/2×20)である。
また、サーバ30−5では今まで温度異常も電圧異常も発生したことがないので、当然、サーバ30−5の時刻評価値は0である。よって、ステップS906で算出されるサーバ30−5の総合評価値は、10(=10+0)である。
さて、サーバ30−6に関してステップS901で算出される温度評価値は、0である。また、ステップS902で算出される電圧評価値も、0である。よって、ステップS905で算出される値も、0である。
また、サーバ30−6の時刻評価値の算出においては、図15のイベント管理テーブル205cの13番目と15番目のントリにより表される電圧異常が、考慮される。理由は以下のとおりである。
・13番目のエントリが表す電圧低下の開始時刻は、最近1ヶ月以内である。また、当該電圧低下が続いた期間は、2011年1月1日における11時10分から12時10分までの時間帯と、少なくとも一部が重なる。
・15番目のエントリが表す電圧低下の開始時刻は、最近1ヶ月以内である。また、当該電圧低下が続いた期間は、2011年1月2日における11時10分から12時10分までの時間帯と、少なくとも一部が重なる。
具体的には、最近1ヶ月以内の上記時間帯period(Now)において、「Minor」レベルの電圧低下が「2回」とカウントされる。よって、サーバ30−6の時刻評価値は、次の式から分かるとおり、8である。
Cone(W1×2)=4×(1×2)=8
そして、上記のとおり図17のステップS905で算出される値は0である。よって、ステップS906で算出されるサーバ30−6の総合評価値は、8(=0+8)である。
さて、サーバ30−7に関してステップS901で算出される温度評価値は、0である。また、ステップS902で算出される電圧評価値も、0である。よって、ステップS905で算出される値も、0である。
そして、サーバ30−7では、今まで温度異常も電圧異常も発生したことがないので、当然、サーバ30−7の時刻評価値は0である。よって、ステップS906で算出されるサーバ30−7の総合評価値は、0(=0+0)である。
算出部3は、以上に説明したような、サーバ30−2〜30−7それぞれについての各種評価値を算出し、算出した評価値を図19の結果テーブル206dに格納する。結果テーブル206dによれば、将来故障が発生する蓋然性は、総合評価値が0のサーバ30−7において最も低い。したがって、仮にアクティブサーバ30−1が故障した場合は、フェイルオーバ制御部4は、サーバ30−7を新たなアクティブサーバとして選択する。
続いて、図20〜21を参照して、第4実施形態について説明する。第4実施形態では、式(32)の総合評価値ftotal(si)が算出される。具体的には、第4実施形態の3は、図20のフローチャートにしたがって動作する。
図20は、第4実施形態での総合評価処理のフローチャートである。図20の総合評価処理は、図1のステップS106で算出部3が実行する。より具体的には、フェイルオーバ処理が図4のように行われる場合は、図4のステップS203で算出部3が図20の総合評価処理を実行し、フェイルオーバ処理が図5のように行われる場合は、図5の処理と独立して算出部3が適宜のタイミングで図20総合評価処理を実行する。
また、図20の総合評価処理は、ある1台のサーバ(説明の便宜上、「サーバsi」とする)に関して実行される。例えば、フェイルオーバ制御部4が、サーバsiのIDを算出部3に指定して、算出部3に総合評価処理の実行を命じてもよい。あるいは、算出部3が定期的に各サーバsiについて図20の総合評価処理を実行してもよい。
いつ図20の総合評価処理が実行されるにせよ、第4実施形態では、管理DB5が図21のような結果テーブルを含む。図21の結果テーブルの詳細は後述するが、図21に示すとおり、第4実施形態の結果テーブルの各エントリは、サーバID、温度評価値、電圧評価値、劣化評価値、時刻評価値、および総合評価値という、6個のフィールドを含む。また、結果テーブルの各エントリは、各スタンバイサーバに対応する。図20の総合評価処理の進捗にともなって、結果テーブルは更新される。
図20のステップS1101〜S1103は、図13のステップS701〜S703と同様なので、詳しい説明を省略する。また、その後のステップS1104〜S1106は、図17のステップS903〜S905と同様なので、詳しい説明を省略する。
ステップS1106の後、ステップS1107で総合評価部3cは、ステップS1106で算出した値に、ステップS1103で記録された劣化評価値とステップS1104で記録された時刻評価値を加算する。それにより、総合評価部3cは、式(32)の総合評価値ftotal(si)を算出する。
そして、総合評価部3cは、結果テーブル中の、サーバsiに対応するエントリの総合評価値のフィールドに、算出結果を記録する。すると、図20の総合評価処理は終了する。
さて次に、第4実施形態で算出される評価値の具体例を、図15および図21を参照しながら説明する。図21の結果テーブル206eは、2011年1月3日11時30分に、スタンバイサーバ30−2〜30−7のそれぞれについて図20の総合評価処理が実行された直後の状態を示す。なお、以下では、管理DB5内のイベント管理テーブルは、2011年1月3日11時30分においても図15のイベント管理テーブル205cの状態のままであり、変わっていないものとする。
結果テーブル206eにおける「温度評価値」、「電圧評価値」、および「時刻評価値」の列の値は、図19の結果テーブル206dにおける値と同じである。理由は以下のとおりである。
・結果テーブル206dは、2011年1月3日11時10分に実行された総合評価処理の結果を表す。他方、結果テーブル206eは、2011年1月3日11時30分に実行された総合評価処理の結果を表す。
・しかし、2011年1月3日の11時10分から11時30分までの間に新たに発生した異常はない。また、2011年1月3日の11時10分から11時30分までの間に終熄した異常もない。
・算出部3は、2011年1月3日の11時30分に時刻評価部3eに時刻評価値の算出を命じる際に、例えば、「11時30分から12時30分」という期間を引数として指定してもよい。このように期間が指定された場合も、図15のイベント管理テーブル205cの例の場合は、「11時10分から12時10分」という期間が引数として指定された場合と同じ時刻評価値が得られる。
よって、結果テーブル206eにおける「温度評価値」、「電圧評価値」、および「時刻評価値」の列の値についての詳しい説明は、省略する。
また、結果テーブル206eにおける「劣化評価値」の列の値は、図16の結果テーブル206cにおける値と多少異なる。違いの理由は、結果テーブル206cは、2011年1月3日10時30分に実行された図13の総合評価処理の結果を表すのに対し、結果テーブル206eは、2011年1月3日11時30分に実行された図20の総合評価処理の結果を表すからである。
具体的には、以下のような要因があるため、サーバ30−2〜30−7のいずれに関しても、図16よりも図21において劣化評価値が大きい。
・サーバ30−2、30−4、30−6、および30−7に関しては、電源が投入されていた時間の長さton(si)の値が、図16の例よりは図21の例において、1時間だけ大きい。時間の長さton(si)の増加にともない、劣化評価値も図21の例ではより大きくなる。
・サーバ30−3および30−5に関しては、電源が投入されていなかった時間の長さtoff(si)の値が、図16の例よりは図21の例において、1時間だけ大きい。時間の長さtoff(si)の増加にともない、劣化評価値も図21の例ではより大きくなる。
・サーバ30−2に関しては、2011年1月3日11時に発生した温度異常も、図21の劣化評価値を図16の劣化評価値より大きくする要因である。
・サーバ30−4に関しては、2011年1月3日11時に発生した電圧超過も、図21の劣化評価値を図16の劣化評価値より大きくする要因である。
以上のような要因により、図16と図21では、劣化評価値が異なる。しかし、劣化評価値の算出方法は同様である。よって、サーバ30−2〜30−7それぞれの劣化評価値の算出については、以下のとおり簡単に説明する。
サーバ30−2の劣化評価値は、以下の2つの式から分かるとおり、約0.84である。
fdgrTmpr(si)=CdgrTmpr×(W2×48+W1×0.5)=1/360×(2×48+1×0.5)≒0.27
fdgr(si)=1/360×145.5+1/720×120+fdgrTmpr(si)+0≒0.84
サーバ30−3の劣化評価値は、以下の式から分かるとおり、約0.20である。
1/360×0+1/720×145.5+0+0≒0.20
サーバ30−4の劣化評価値は、以下の2つの式から分かるとおり、約0.61である。
fdgrOvervol(si)=CdgrOvervol×W2×0.5=1/360×2×0.5≒0.00
fdgr(si)=1/360×169.5+1/720×96+0+fdgrOvervol(si)≒0.61
サーバ30−5の劣化評価値は、以下の式から分かるとおり、約0.37である。
1/360×0+1/720×265.5+0+0≒0.37
サーバ30−6の劣化評価値は、以下の式から分かるとおり、約0.57である。
1/360×145.5+1/720×120+0+0≒0.57
サーバ30−7の劣化評価値は、以下の式から分かるとおり、約0.47である。
1/360×73.5+1/720×192+0+0≒0.47
そして、各サーバについて図20のステップS1106で算出される値(つまり温度評価値と電圧評価値の重み付け和)は、図17のステップS905で算出される値と同様である。したがって、各サーバの総合評価値は以下のとおりである。
サーバ30−2の総合評価値は、約112.84(=100+0.84+12)である。サーバ30−3の総合評価値は、約3.20(=3+0.20+0)である。サーバ30−4の総合評価値は、約232.61(=200+0.61+32)である。サーバ30−5の総合評価値は、約10.37(=10+0.37+0)である。サーバ30−6の総合評価値は、約8.57(=0+0.57+8)である。サーバ30−7の総合評価値は、約0.47(=0+0.47+0)である。
算出部3は、以上に説明したような、サーバ30−2〜30−7それぞれについての各種評価値を算出し、算出した評価値を図21の結果テーブル206eに格納する。結果テーブル206eによれば、将来故障が発生する蓋然性は、総合評価値が約0.47のサーバ30−7において最も低い。したがって、仮にアクティブサーバ30−1が故障した場合は、フェイルオーバ制御部4は、サーバ30−7を新たなアクティブサーバとして選択する。
続いて、図22を参照して、第5実施形態について説明する。第5実施形態では、第4実施形態と同様に、式(32)の総合評価値ftotal(si)が算出される。第4実施形態と第5実施形態との違いは、ユーザインタフェイスである。
具体的には、第5実施形態では、図2のフェイルオーバ制御部4が、自動的に新たなアクティブサーバを選択する代わりに、算出部3による評価結果をクライアント6に通知する。クライアント6は、適宜のGUIを用いて、通知された評価結果を表示する。
すると、クライアント6のユーザは、表示された評価結果を見て認識することができる。そして、ユーザは、クライアント6を介して、切り替え先のスタンバイサーバ(すなわち新たなアクティブサーバ)をフェイルオーバ制御部4に指示することができる。フェイルオーバ制御部4は、クライアント6から受け取った指示にしたがって、今までのアクティブサーバ30−1から、指示された新たなサーバへの、切り替え(switchover)を制御する。
より具体的には、第5実施形態では、図22に例示するようなGUIが利用されてもよい。図22には、クライアント6のディスプレイに表示される、結果表示画面301とダイアログボックス302の例が示されている。
結果表示画面301は、算出部3による算出結果(具体的には管理DB5中の結果テーブルの内容を含むデータ)をテーブル形式で示す画面である。結果表示画面301には、見出しと、スタンバイサーバ30−2〜30−7のそれぞれに対応する行が含まれる。例えば、「2」というIDの割り当てられたサーバ30−2に対応する行は、以下のことを示している。
・サーバ30−2は、「1」というIDの割り当てられたアクティブサーバ30−1用に設けられたスタンバイサーバのうちの1台である。
・サーバ30−2に関して、温度評価値が12、電圧評価値が0、劣化評価値が21、時刻評価値が0と算出され、これらの各評価値に基づいて、総合評価値が33と算出された。
・アクティブサーバ30−1からの切り替え先のサーバとしての優先度が、総合評価値が小さいほど高優先度となるように定義されており、6台のスタンバイサーバ30−2〜30−7の中でのサーバ30−2の優先度は最低である。
他のサーバ30−3〜30−7についての行にも、同様に、アクティブサーバのIDと、優先度と、総合評価値と、温度評価値と、電圧評価値と、劣化評価値と、時刻評価値が表示されている。
そして、結果表示画面301の例においては、総合評価値が11のサーバ30−5の優先度が最も高く、総合評価値が13のサーバ30−7の優先度が2番目に高い。また、総合評価値が18のサーバ30−4の優先度が3番目に高く、総合評価値が23のサーバ30−3の優先度が4番目に高い。そして、総合評価値が25のサーバ30−6の優先度が5番目に高く、総合評価値が33のサーバ30−2の優先度は、上記のとおり最低である。
ユーザは、クライアント6のディスプレイに表示された結果表示画面301を見ることにより、サーバ30−2〜30−7のそれぞれにおいて将来故障が発生する蓋然性を判断することができる。また、結果表示画面301には、総合評価値だけでなく、総合評価値の算出に使われる他の評価値が「詳細」として示されている。よって、ユーザは、サーバ30−2〜30−7のそれぞれについて、故障に影響する各種要因の影響度を知ることもできる。
また、ユーザは、クライアント6のディスプレイに表示されたダイアログボックス302を介して、アクティブサーバ30−1からの切り替え先のサーバを、フェイルオーバ制御部4に対して指定することができる。図22の例では、「サーバ切り替え」という見出しがついたダイアログボックス302は、切り替え先のスタンバイサーバをユーザに選択させるためのプルダウンリストと、「OK」ボタンと、「キャンセル」ボタンを含む。図22のように、ダイアログボックス302は、さらに「ヘルプ」ボタンなどの他のGUI要素を含んでいてもよい。
プルダウンリストには、アクティブサーバ30−1に対応して設けられている6台のサーバ30−2〜30−6が、上記の優先度の降順に、6つの選択肢として挙げられている。ユーザの便宜のため、プルダウンリスト中の各選択肢には、サーバIDと、総合評価値が表示されている。ユーザは、プルダウンリストから任意のサーバ(例えば「5」というIDのサーバ30−5)を選び、「OK」ボタンをクリックすることにより、フェイルオーバ制御部4に対して、切り替え先のサーバを指定することができる。
このように、第5実施形態によれば、ユーザの意向に応じた手動の切り替えも可能である。たとえアクティブサーバからの切り替えがユーザ操作に応じてなされるとしても、各スタンバイサーバに将来故障が発生する蓋然性を予測する結果表示画面301のような情報をユーザに対して提示することは有益である。なぜなら、提示された情報に基づいてユーザがより適切なスタンバイサーバを選択することができるからである。
ところで、本発明は上記実施形態に限られるものではない。上記の説明においてもいくつかの変形について説明したが、上記実施形態は、さらに例えば下記の観点から様々に変形することもできる。下記の変形は、相互に矛盾しない限り、任意に組み合わせることが可能である。
様々なフローチャートを例示したが、ステップの順序は、矛盾が生じない限り適宜入れ替えられてよい。また、入れ替え可能なステップ同士は、並列に実行されてもよい。
例えば、図20の例において、ステップS1101〜S1104の順序は、任意に入れ替え可能である。また、ステップS1103〜S1104は、ステップS1105〜S1106の後に実行されてもよい。
算出部3は、スタンバイサーバだけでなく、アクティブサーバに関しても、評価値を算出してもよい。管理DB5の結果テーブルは、アクティブサーバに関する評価値をさらに格納していてもよい。
なお、イベント管理テーブルや結果テーブルなど、管理DB5中の各種データの例を、図面ではテーブル形式で例示した。しかし、データ形式は実施形態に応じて任意である。例えば、管理DB5は、XML(Extensible Markup Language)データベースであってもよいし、他の形式のデータベースであってもよい。また、管理DB5が結果テーブル206a〜206eのようなテーブルを保持する代わりに、結果テーブル206a〜206eと同等のデータを、単に算出部3がRAM102上の変数(例えばアレイ変数)に保持していてもよい。
また、時刻評価値が利用され、かつ、フェイルオーバ処理が図5のフローチャートにしたがって行われる場合は、異なる複数の時間帯それぞれに対応する複数の時刻評価値が、各サーバに対応づけられて管理DB5に格納されていてもよい。
例えば、1日が、長さ1時間の24個の期間に分割されてもよい。そして、時刻評価部3eは、1日に1回、決められた時刻に、24個の期間のそれぞれについて、各サーバの時刻評価値を算出し、算出結果を管理DB5に格納してもよい。総合評価部3cは、24個の期間のそれぞれについて算出された時刻評価値に対応して、24個の期間のそれぞれについて総合評価値を算出し、算出結果を管理DB5に格納してもよい。
また、劣化評価値が利用される場合、管理DB5には、下記の3つの値を互いに対応づける情報が格納されていてもよい。
・部品が交換、増加、または削除されたサーバのサーバID。
・部品が交換、増加、または削除された日時。
・交換、増加、または削除された部品の個数に応じて算出される、式(24)の右辺における被乗数。
そして、劣化評価部3dは、劣化評価値の算出において時間の長さ(例えば、ton(si)など)を評価する際に、部品が交換、増加、または削除された日時より前の期間の長さに対しては、記憶されている式(24)の被乗数を掛けてもよい。
ところで、第5実施形態と類似のGUIは、第1〜第3実施形態のいずれに対しても適用可能である。算出部3が式(29)〜(33)のいずれにしたがって総合評価値を算出するにせよ、フェイルオーバ制御部4は、自動的にフェイルオーバ処理を行ってもよいし、クライアント6を介してユーザから与えられる指示にしたがってスイッチオーバ処理を行ってもよい。
図6に示した係数201と重み202の具体的な値は、実施形態に応じて適宜変更されてもよい。また、係数201と重み202の値はユーザ定義可能な値であってもよい。
冗長化システムが複数のアクティブサーバを含んでいてもよい。また、第1のアクティブサーバ用に設けられる複数のスタンバイサーバは、第2のアクティブサーバ用に設けられる複数のスタンバイサーバと、異なっていてもよいし、一部または全部が共通であってもよい。
例えば、サーバプール内の複数のサーバの各々は、第1のアクティブサーバ用のスタンバイサーバとして第1のアクティブサーバに対応づけられるとともに、第2のアクティブサーバ用のスタンバイサーバとして第2のアクティブサーバに対応づけられてもよい。管理サーバ1は、例えば管理DB5の中に、アクティブサーバとスタンバイサーバの対応づけに関する情報を保持する。
いずれにせよ、算出部3は、各アクティブサーバに関して、当該アクティブサーバ用の複数のスタンバイサーバそれぞれの評価値を算出する。したがって、どのアクティブサーバに故障が生じた場合でも、フェイルオーバ制御部4は、総合評価値の小さなスタンバイサーバ(すなわち、故障が生じにくいと予測されるため、新たなアクティブサーバとして適切なサーバ)を選択することができる。
ところで、図2には、ある1つの冗長化システムにおけるアクティブサーバ30−1と、サーバ30−1に対応するスタンバイサーバ30−2〜30−7のみが例示されている。
しかし、実施形態によっては、例えば、ラック10−1の中に、別のシステムのサーバ(以下、説明の便宜上「独立サーバ」という)が1台以上さらに設置されていることもあり得る。もちろん、ラック10−2の中に独立サーバが1台以上設置されていることもあり得るし、ラック10−3の中に独立サーバが1台以上設置されていることもあり得る。
独立サーバは、機能の面では(つまり論理的には)、サーバ30−1〜30−7を含む冗長化システムとは無関係である。しかし、独立サーバは、物理的にはサーバ30−1〜30−7と関係することがある。
そこで、もしラック10−1〜10−3の中に独立サーバが1台以上存在するならば、収集部2は、独立サーバからも故障予兆情報を収集する。そして、算出部3は、独立サーバから収集された故障予兆情報も用いて、スタンバイサーバ30−2〜30−7それぞれの評価値を算出する。
換言すれば、論理的には別々の複数のシステムに属するサーバが、物理的には同じラックの中に存在してもよい。そして、管理サーバ1は、それら複数のシステムに属する全サーバを管理してもよい。
例えば、ブレード型の独立サーバがシャーシ20−1の3番目のスロットに搭載されており、当該独立サーバで温度異常が発生中だとする。この場合、温度異常が発生中の独立サーバは、シャーシ20−1内でサーバ30−2に隣接している。また、サーバ30−3は、独立サーバと隣接してはいないが、同じシャーシ20−1内にある。
よって、サーバ30−2や30−3は、当該独立サーバで発生中の温度異常の影響を受ける。したがって、収集部2が独立サーバからも故障予兆情報を収集することにより、サーバ30−2および30−3の温度評価値が、より正確に算出される。
あるいは、例えば、ラックマウント型の独立サーバがラック10−2に搭載されており、当該独立サーバで電圧異常が発生中だとする。この場合、電圧異常が発生中の独立サーバは、サーバ30−4および30−5と電源ユニット12−2を共用している。したがって、収集部2が独立サーバからも故障予兆情報を収集することにより、サーバ30−4および30−5の電圧評価値がより正確に算出される。
ところで、上記の説明においては、式(1)〜(38)のような様々な式を例示したが、算出部3が他の式にしたがって評価値を算出してもよい。例えば、あるサーバsiに隣接するサーバの集合adj(si)は、上記のとおり式(5)により定義されてもよいが、別の定義が採用されてもよい。また、あるサーバsiの電圧評価値に影響を与えるサーバの集合power(si)は、上記のとおり式(11)により定義されてもよいが、別の定義が採用されてもよい。
具体的には、例えば、「以下のいずれかの条件が成り立つとき、サーバsiとsjは隣接している」と定義されてもよい。
・サーバsiとsjはともにブレード型サーバであり、サーバsiとsjは、1つのシャーシ内で互いに隣接するスロットに搭載されている。
・サーバsiはブレード型サーバであり、サーバsjは、サーバsiの搭載されたシャーシのラック内位置のすぐ上(またはすぐ下)の位置に搭載された、ラックマウント型サーバである。
・サーバsiはラックマウント型サーバであり、サーバsjは、サーバsiのラック内位置のすぐ上(またはすぐ下)の位置に搭載されたシャーシに搭載された、ブレード型サーバである。
・サーバsiとsjはともにブレード型サーバであり、サーバsiを搭載したシャーシのラック内位置のすぐ上(またはすぐ下)の位置に、サーバsjを搭載したシャーシが搭載されている。
・サーバsiとsjはともにラックマウント型サーバであり、サーバsiのラック内位置のすぐ上(またはすぐ下)の位置に、サーバsjが搭載されている。
もちろん、実施形態によっては、さらに別の定義が採用されてもよい。また、例えば上記の5つの場合が区別されてもよく、互いに異なる5つの値を持つ5つの隣接係数が使われてもよい。
なお、例えばラック内位置が「1、2、3……」のようなシーケンス番号で表されるとすると、ラック内での上下方向の隣接関係は、ラックマウント型サーバまたはシャーシの高さと、ラック内位置を示す番号から、判定可能である。
例えば、高さが6Uのシャーシがラック内の3番から8番の位置を占めているとする。この場合、当該シャーシの上に隣接する装置は、2番の位置を占めている装置(例えば高さ1Uのラックマウント型サーバ)である。そして、当該シャーシの下に隣接する装置は、9番の位置を占めている装置である。9番の位置を占めている装置は、具体的には、例えば、9番から14番の位置を占める高さ6Uの別のシャーシかもしれないし、あるいは、9番の位置だけを占める高さ1Uのラックマウント型サーバかもしれない。
また、式(5)または上記の変形例のように定義される集合adj(si)を利用して、「レベル1の隣接関係」、「レベル2の隣接関係」、「レベル3の隣接関係」など、複数のレベルの隣接関係が定義されてもよい。例えば、以下のような定義が利用されてもよい。
・sj∈adj(si)ならば、サーバsiとsjは、レベル1で互いに隣接している。
・∃sk(sk∈adj(si)∧sk∈adj(sj))ならば、サーバsiとsjは、レベル2で互いに隣接している。
・∃sk,sh(sk∈adj(si)∧sk∈adj(sh)∧sh∈adj(sj))ならば、サーバsiとsjは、レベル3で互いに隣接している。
そして、温度評価値の算出においては、レベル1の隣接関係用の隣接係数と、レベル2の隣接関係用の隣接係数と、レベル3の隣接関係用の隣接係数が使われてもよい。つまり、あるサーバsiの温度評価値の算出においては、次のような様々な影響が考慮に入れられてもよい。
・サーバsiにレベル1で隣接している他のサーバからの影響。
・サーバsiにレベル2で隣接している他のサーバからの影響。
・サーバsiにレベル3で隣接している他のサーバからの影響。
・レベル1〜3ではサーバsiに隣接してはいないが、サーバsiと同じシャーシ内にある他のサーバからの影響。
・レベル1〜3ではサーバsiに隣接しておらず、サーバsiと同じシャーシ内にもないが、サーバsiと同じラック内にある他のサーバからの影響。
以上例示したように、あるサーバsiについての温度評価値の算出に、他のどのサーバsjが関係するかは、実施形態に応じて様々である。そして、上記の変形例とは逆に、例えば、式(1)の右辺の第4項を省略するか、あるいは、第3項と第4項を省略する変形も可能である。具体的には、以下のとおりである。
式(1)は、サーバsiとsjの近さについて式(5)〜(7)により定義された3つのレベルに基づいて、定義されている。しかし、サーバsiとsjの近さについて、1つのレベルだけが定義されてもよい。例えば、その1つのレベルは、式(3)または上記の変形例における集合adj(si)により定義されてもよい。もちろん、サーバsiとsjの近さについて、2つのレベルが定義されてもよいし、4つ以上のレベルが定義されてもよい。
そして、定義された近さのレベルの数に応じて、式(1)は適宜変形されてよい。例えば、実施形態によっては、式(1)の右辺の第4項が省略されてもよいし、あるいは、第3項と第4項の双方が省略されてもよい。
また、式(11)による集合power(si)の定義では、以下の2つの場合が区別されていない。そして、式(8)では、1種類の同一電源係数Cpowerが、以下の2つの場合の双方に対して使われる。
・サーバsiとsjが直接的に同じ電源ユニットから電力を供給される場合。
・サーバsiとsjが間接的に同じ電源ユニットから電力を供給される場合。
しかし、例えば以下の5つの場合が互いに区別されてもよく、互いに異なる値を持つ5つの同一電源係数が使われてもよい。
・サーバsiとsjはともにブレード型サーバであり、サーバsiとsjへの直接の電力供給源は、同じ1つのシャーシ内電源ユニットである。
・サーバsiとsjはともにブレード型サーバであり、同じ1つのシャーシに搭載されているが、サーバsiとsjには、異なる2つのシャーシ内電源ユニットからそれぞれ電力が供給されている。
・サーバsiとsjの一方はブレード型サーバであり、他方は、当該ブレード型サーバの搭載されたシャーシに電力を供給するラック内電源ユニットから電力を得ている、ラックマウント型サーバである。
・サーバsiとsjはともにラックマウント型サーバであり、サーバsiとsjへの直接の電力供給源は、同じ1つのラック内電源ユニットである。
・サーバsiとsjは異なる2つのラックに搭載されているが、それら2つのラックに搭載された各ラック内電源ユニットは、同じ部屋の同じ電源コンセントから電力を得ている。
もちろん、実施形態によっては、さらに別の定義が採用されてもよい。また、劣化評価値や時刻評価値に関しても、式(12)〜(28)の例とは異なる定義が採用されてもよい。
いずれにしろ、温度評価部3aは、サーバ同士の物理的な位置関係についての定義に応じた適宜の手順により、温度評価値を算出する。そして、電圧評価部3bは、電源の共有に関する定義に応じた適宜の手順により、電圧評価値を算出する。
また、劣化評価部3dは、経年劣化にどのような要因が影響するかに応じた適宜の手順により、劣化評価値を算出する。そして、時刻評価部3eは、故障の発生のしやすさが時刻または時間帯に依存する度合に応じた適宜の手順により、時刻評価値を算出する。
よって、総合評価部3cは、実施形態に応じた適宜の定義にしたがって他の評価部が算出した複数の評価値を使って、適宜の総合評価値を算出することができる。複数のスタンバイサーバそれぞれに関する総合評価値を用いることで、現在のアクティブサーバが故障した場合のフェイルオーバ先のサーバとしての適切さ(または優先度)が、複数のスタンバイサーバ間で比較可能となる。
よって、上記の様々な実施形態のいずれにおいても、故障の発生しにくいサーバを新たなアクティブサーバとして選択することで、二次故障を防ぐ効果が得られる。二次故障が起きなければ、冗長化システム全体としての可用性も高まる。