【実施例1】
【0013】
図1は、実施例1に係る計算機システムの構成図である。
【0014】
計算機システムは、管理サーバ1、ネットワークスイッチ2、複数のサーバ5、ファイバチャネルスイッチ3及びストレージ装置4を有する。管理サーバ1は、例えば、ネットワークインタフェースカード(NIC)等のネットワークインタフェース17を有する。管理サーバ1のネットワークインタフェース17が、ネットワークスイッチ2を介して複数のサーバ5に接続されている。複数のサーバ5は、ファイバチャネルスイッチ3を介してストレージ装置4に接続されている。よって、複数のサーバ5は、ネットワークスイッチ2及びファイバチャネルスイッチ3を介して互いに通信可能である。なお、ストレージ装置4は、ネットワークスイッチ2にも接続されていてよい。管理サーバ1とサーバ5の間の接続は、例えば、LAN(Local Area Network)等のインターネットプロトコルの通信ネットワークであり、ネットワークスイッチ2等を含む。サーバ5とストレージ装置4の間の接続は、例えば、SAN(Storage Area Network)等の通信ネットワークであり、ファイバチャネルスイッチ3等を含む。なお、各スイッチは、同種のスイッチであってもよい。
【0015】
各サーバ5は、物理的な計算機であり、メモリ52、ネットワークインターフェースカード(NIC)51、フラッシュメモリ53、プロセッサ(CPU)54及びホストバスアダプタ(HBA)55を備える。これらのサーバ5の構成要素は、それぞれ、1つであっても複数であってもよい。NIC51は、ネットワークスイッチ2に接続し、管理サーバ1と通信するためのインタフェースであり、HBA55は、ファイバチャネルスイッチ3に接続し、ストレージ装置4と通信するためのインタフェースである。NIC51及びHBA55は、多種のインタフェースが用いられてもよい。メモリ52には、例えば、CPU54が実行する各種プログラム521aが記憶されている。フラッシュメモリ53は、具体的には、例えば、SSDである。
【0016】
ストレージ装置4は、物理記憶デバイスとしてのハードディスクドライブ42及びフラッシュメモリ41と、物理記憶デバイスに接続されるコントローラ(図示なし)とを有する。フラッシュメモリ41は、例えばSSDなどである。複数の同種の物理記憶デバイスに基づき、RAIDグループが構成されてよい。コントローラは、その内部にプロセッサ及びメモリを備え、1つ又は複数の物理ディスクに基づきサーバ5にLU(Logical Unit)411、412を提供する。なお、物理記憶デバイスは、ハードディスクドライブ42及びフラッシュメモリ41のいずれか一方を備えてもよい。
【0017】
図2は、管理サーバ1の論理構成図である。
【0018】
管理サーバ1は、計算機であり、メモリ11、プロセッサ(CPU)13、ディスクインタフェース15及びネットワークインタフェース17を備える。これらの要素は、バスなどの内部ネットワークにより互いに接続されている(図示なし)。
【0019】
ネットワークインタフェース17は、ネットワークスイッチ2に接続し、複数のサーバ5との通信を行う。
【0020】
メモリ11は、管理プログラム110を格納する。管理プログラム110は、CPU13に実行されるコンピュータプログラム、及び、そのコンピュータプログラムを実行する際に参照されるテーブルである。具体的には、例えば、管理プログラム110には、切替え先・起動先決定プログラム111と、リソース評価値計算プログラム112と、OSの対サーバ評価値計算プログラム113と、サーバ起動前処理プログラム114と、サーバ起動処理プログラム115と、サーバ起動後処理プログラム116と、リソース管理テーブル300と、サーバ管理テーブル400と、OS管理テーブル500と、リソース評価観点管理テーブル600と、OSの対サーバ評価値管理テーブル700とが含まれる。各プログラム及びテーブルの詳細は後述する。
【0021】
図3は、リソース管理テーブル300である。
【0022】
リソース管理テーブル300は、各サーバが有するリソースのスペック値及び累積書込量を管理するテーブルである。例えば、リソース管理テーブル300は、リソース毎のエントリを有する。各エントリは、当該リソースを識別するリソースID301と、当該リソースを有するサーバ5を識別するサーバID303と、当該リソースの種別であるリソース種別305と、当該リソースの書込回数における寿命を示す書込回数上限値307と、当該リソースの累積書込回数309と、当該リソースの書込サイズ上限値311と、当該リソースの書込サイズにおける寿命を示す累積書込サイズ313と、当該リソースの評価値315とを有する。
【0023】
書込回数上限値307は、累積書込回数309の上限値が示されている。累積書込回数309は、例えば、フラッシュメモリ53における各セルへの延べ書き込み回数の平均値を示す。書込サイズ上限値311は、累積書込サイズ313の上限値が示されている。累積書込サイズ313は、具体的には、例えば、フラッシュメモリ53に書き込まれた延べデータサイズを示す。なお、累積書込回数309及び累積書込サイズ313は、フラッシュメモリ53毎にカウントされる値であり、CPU54を介して各フラッシュメモリ53から取得される。なお、累積書込回数309は、フラッシュメモリ53内の平均値を示しているが、平均値に限られず最小値、中央値等、他の値であってもよい。
また、書込回数上限値307及び書込サイズ上限値311は、各フラッシュメモリ53のスペック値であり、予め設定される。
【0024】
なお、本実施例は、簡単のため、このテーブル300において管理されるリソースをフラッシュメモリ53のみとしているが、他のリソースが管理されてもよい。また、本実施例では、簡単のため、このテーブル300において1つのサーバに1つのリソース(つまりフラッシュメモリ53)が対応づけられているが、当然に1つのサーバに複数のリソースが対応づけられていてもよい。
【0025】
図4は、サーバ管理テーブル400である。
【0026】
サーバ管理テーブル400は、各サーバ5の状態を管理するテーブルである。例えば、サーバ管理テーブル400は、サーバ5毎のエントリを有する。各エントリは、当該サーバ5を識別するサーバID401と、当該サーバで前回起動されたOSを識別する前回起動OS403と、当該サーバの電源のON/OFFを示す電源状態405と、当該サーバが正常に稼働しているか否かを示すサーバ状態407とを有する。なお、前回起動OS403は、換言すると、複数のサーバ5のそれぞれが最後に起動したOSである。なお、サーバ5に起動されるプログラムとしてOS以外のプログラムが用いられてもよい。
なお、本実施例では、OSを実行する事により、サーバで業務が実行されることを想定するが、これに限定されない。また、本実施例では、1つのサーバで1つ業務を実行する計算機システムを想定している。つまり、1つのサーバでは、1つのOSが実行されるものとするが、これに限定されない。
図においては、例えば、サーバ2は、前回起動OSが「OS2」であり、電源状態405が「ON」であり、かつ、サーバ状態407が「正常」である。これは、サーバ2上で、現在、OS2が実行されている状態であることを意味する。また、例えば、サーバ1は、前回起動OSが「OS1」であり、電源状態405が「OFF」であり、かつ、サーバ状態407が「正常」である。これは、サーバ1は現在停止状態であり、停止するまでOS1が実行されていたことを意味する。さらに、例えば、サーバ5は、前回起動OSがなく、電源状態405が「OFF」であり、サーバ状態407が正常である。これは、サーバ5は、未だOSが実行されていない待機系のサーバであることを意味する。また、サーバ1、3、4についても、電源状態405が「OFF」であり、かつ、サーバ状態407が「正常」であるため、前回起動OSとは別のOSを起動する可能性がある。
【0027】
なお、本実施例では、サーバは物理サーバを示しており、各サーバは、電源「ON」時に1つのOSを起動し、電源が「OFF」となった後の次の起動のタイミングで他のOSを起動してもよいし、前回の電源「ON」時に起動していたOSを連続して起動してもよいとする。また、本実施例では、任意の時点において、1つのOSが1つのサーバ5で実行される例を示しているが、複数のサーバ5が同じOSを実行してもよい。
【0028】
図5は、OS管理テーブルである。
【0029】
OS管理テーブル500は、各OSの情報を管理するテーブルである。例えば、OS管理テーブル500は、OS毎のエントリを有する。各エントリは、当該OSを識別するOSID501と、当該OSを起動する際に必要なプログラム及びデータを格納するLUを識別するLUID503と、当該OSが利用するリソースの種別である使用リソース種別505(本実施例ではフラッシュメモリ53のみ)と、当該OSによる当該リソースの用途507と、当該OSの1回の起動当たりのリソースへの平均書込回数509と、当該OSの1回の起動当たりのリソースへの平均書込サイズ511と、当該OSが1つのサーバで連続して起動する回数の目標値である連続起動目標回数513と、を有する。
CPU54がOSの起動に応じてフラッシュメモリ53へ書き込むデータとして、起動データ(起動ディスク)や更新データがある。起動データは、OSを起動する際に必要なプログラム及びデータであり、OSの起動前にフラッシュメモリ53へ書きこまれる。更新データは、OSにより書込要求されるデータであり、OSの起動後にフラッシュメモリ53へ書き込まれる。
【0030】
なお、リソースとしてのフラッシュメモリ53の用途507は、例えば、キャッシュメモリ(キャッシュ)であるかデータディスクであるかである。フラッシュメモリ53がキャッシュメモリの用途で利用される場合、CPU54aは、フラッシュメモリ53内のデータを対応するLUにコピーする。これにより、LUに書き込まれたデータの内アクセス頻度の高いデータがフラッシュメモリ53に格納されることとなる。一方、フラッシュメモリ53がデータディスクの用途で利用される場合、フラッシュメモリ53内の更新データはLUにコピーされない。
【0031】
また、前述したように、フラッシュメモリ53は、累積書込回数、累積書込サイズなどの上限値が定められている。あるサーバ5があるOSを実行した後に別のOSを起動する場合、OSに関するデータのコピー及び消去が多く発生してしまうため、フラッシュメモリ53の劣化に繋がってしまうおそれがある。サーバで起動するOSが頻繁に変わることを防止するため、連続起動目標回数513を定めている。以下に、OSに関するデータのコピー及び消去が発生する例を具体的に示す。
【0032】
あるサーバ(例えばサーバ5a)がOSaを実行した後、別のサーバ(例えばサーバ5b)が実行していたOSbを引き継ぐ場合、サーバ5bにおいてOSbがフラッシュメモリ53bに書き込んだ更新データが必要となる。OSbの更新データが、OSbにより書き込まれた最新のデータだからである。また、OSbの更新データがサーバ5aのフラッシュメモリ53aに正常にコピーされた場合、フラッシュメモリ53b内のOSbの更新データの消去が必要となる。これは、データの整合性又はセキュリティなどの観点から、OSbをサーバ5aが実行するときに、サーバ5bのOSbにもアクセスが発生するのを避けるためである。
なお、上記の場合において、サーバ5aのフラッシュメモリ53aにOSbの更新データを格納する場合、フラッシュメモリ53aの用途により、以下の2つが考えられる。1つにフラッシュメモリ53aの用途がキャッシュの場合は、フラッシュメモリ53a内のOSaが書き込んだデータ(OSaの更新データ)の消去が必要となる。これは、OSaの更新データが、フラッシュメモリ53aだけでなく対応するLUに格納されているためである。また1つに、フラッシュメモリ53bの用途がデータディスクの場合は、フラッシュメモリ53b内のOSbの更新データをフラッシュメモリ53aにコピーする必要がある。これは、OSbの最新の更新データが、フラッシュメモリ53bのみに格納されている可能性が高いためである。
なお、本実施例では、LUに起動データが格納されていることを前提とし、LUに格納された起動データに基づき、サーバ5がOSを起動する場合を説明するが、これに限定されない。例えば、サーバ5は、LUに格納された起動データを一旦自身のフラッシュメモリ53に読み出し、その起動データに基づきOSを起動させてもよい。また、例えば、予めフラッシュメモリ53にOSが書き込まれる場合、起動データがLUに格納されていなくてもよい。
【0033】
なお、本実施例では、各OSが利用するLU及びリソース(フラッシュメモリ)は、それぞれ1つとするが、複数であってもよい。また、本実施例では、リソース(フラッシュメモリ)の用途507をそれぞれ1つに定めているが、複数の用途に利用されてもよい。
【0034】
図6は、リソース評価観点管理テーブル600である。
【0035】
リソース評価観点管理テーブル600は、リソースの評価観点毎の重み付けを示すテーブルである。例えば、リソース評価観点管理テーブル600は、リソースの評価観点毎のエントリを有する。各エントリは、リソース種別を示すリソース種別601と、評価の対象の値の種類を示す評価観点603と、当該評価観点の重要度を示す重み605とを有する。
【0036】
次に、管理サーバ1が行うOS起動処理を説明する。この処理は、管理サーバ1が、サーバにOSを起動させる処理であり、このための要求であるOS起動要求を受信したことを契機に開始される。
本実施例では、管理サーバ1が、サーバを指定したOS起動要求を受信した場合に、そのサーバで実行されているOSを別のサーバで起動する処理を説明する。具体的には、例えば、OS起動要求は、障害が発生したサーバを指定する情報であってもよく、障害が発生したサーバや、その障害を検知した他のサーバから送信されてもよい。また、例えば、OS起動要求は、管理者などの管理サーバ1のクライアントから、切替え元のサーバを指定したサーバを切替える旨の要求であってもよい。以下の説明では、起動対象となるOSを対象OSという。本実施例において対象OSは、OS起動要求により指定されたサーバにより実行されているOSである。また、以下の説明では、切替え先のサーバ、つまり、対象OSの起動先のサーバを起動サーバという。
【0037】
また、本実施例では、起動サーバは、電源OFFのサーバとしている。さらに、各サーバ5には、そのサーバ5で起動するOSにより書き込まれるデータ(更新データ)の一部又は全部を格納するリソースとして、1つのフラッシュメモリ53が対応づけられるとしている。しかし、これらの構成には限られない。なお、前述の通り、各サーバ5は、OSに対応するLUに格納された起動データにより、OSを起動するとするが、これに限られない。各サーバ5のリソース(フラッシュメモリ53)には、OSの更新データのみならず、OSの起動データが格納されていてもよい。
【0038】
図8は、管理プログラムによるOS起動処理のフローチャートである。
【0039】
管理サーバ1は、障害の発生したサーバ5を検知した際の、障害の発生したサーバ5を指定したOS起動要求を受信したことを契機に管理プログラム110を実行する。なお、以下の説明では、ステップを単に「S」と略記する。
【0040】
S801で、管理プログラム110は、起動サーバ決定処理を実行する。具体的には、例えば、管理プログラム110は、後述の切替え先・起動先決定プログラム111に処理を引き渡す。
【0041】
S803で、管理プログラム110は、サーバ起動前処理を実行する。具体的には、例えば、管理プログラム110は、後述のサーバ起動前処理プログラム114に処理を引き渡す。
【0042】
S805で、管理プログラム110は、サーバ起動処理を実行する。具体的には,例えば、管理プログラム110は、後述のサーバ起動処理プログラム115に処理を引き渡す。
【0043】
S806で、管理プログラム110は、サーバ起動後処理を実行する。具体的には、例えば、管理プログラム110は、後述のサーバ起動後処理プログラム116に処理を引き渡す。
【0044】
上記処理により、管理サーバ1は、障害の発生したサーバで実行されていたOSを、障害の発生した以外の最適なサーバ(起動サーバ)で起動させることができる。
【0045】
図9は、起動サーバ決定処理のフローチャートである。
【0046】
この処理は、
図8のS801において、切替え先・起動先決定プログラム111が実行する処理である。
【0047】
この処理では、障害の発生したサーバの代替となって対象OSを起動する起動サーバとして、各サーバのフラッシュメモリの使用状況を考慮して適切なサーバを決定することができる。
【0048】
プログラム111は、サーバ管理テーブル400に登録されている全てのサーバ5について、それぞれ、S901(S903〜S907)の処理を実行する。
【0049】
S901で、プログラム111は、サーバ管理テーブル400を参照し、サーバの電源状態405が「OFF」であり、かつ、サーバ状態が「正常」であるかを判定する。サーバの電源状態が「ON」又はサーバ状態が「異常」の場合(S901;No)、プログラム111は、サーバ管理テーブル400の別のサーバを選択し、S901を繰り返す。
【0050】
一方、サーバの電源状態が「OFF」又はサーバ状態が「正常」の場合(S901;Yes)、プログラム111は、そのサーバを、対象OSを起動可能なサーバ(起動可能サーバ)であるとして取得する(S903)。そして、プログラム111は、リソース管理テーブル300を参照し、取得した起動可能サーバのサーバID303に対応するリソースID301を有するリソース、つまりその起動可能サーバが有するリソースを取得する。その起動可能サーバが有するリソースが複数ある場合は、全てのリソースを取得する。
【0051】
プログラム111は、その起動可能サーバが有する全てのリソースについて、S906、S907を実行する。プログラム111は、リソース評価値計算プログラム112に処理を引き渡す(S906)。そして、リソース評価値計算プログラム112により算出された各リソースの評価値を取得し、取得した評価値315によりリソース管理テーブル300を更新する(S907)。
【0052】
S909で、リソース管理テーブル300を参照し、評価値315の最も低いリソースを有する起動可能サーバを起動サーバとして決定する。
【0053】
上記処理により、プログラム111は、障害の発生したサーバで実行されていたOSを起動するサーバ(起動サーバ)として、最適なサーバを決定することができる。具体的には、プログラム111は、電源がOFFであり、かつ正常な状態のサーバが有するリソースの評価値に基づき、累積書込量の割合に基づく評価値の最も低いサーバを、起動サーバとして決定することができる。これにより、複数のサーバのリソース(フラッシュメモリ53)を均等に使用でき、複数のサーバが有するリソース(フラッシュメモリ53)の寿命を平準化できる。このため、サーバの寿命及びリプレイス期間よりもリソース(フラッシュメモリ53)の寿命が短くなってしまうことを防止することができる。
【0054】
図10は、リソース評価値計算プログラムのフローチャートである。
【0055】
リソース評価値計算プログラム112は、
図9のS906の処理である。この処理において、プログラム112は、起動可能サーバが有するリソースの情報に基づき、起動可能サーバの評価値を算出する。
【0056】
S1001で、プログラム112は、リソース評価観点管理テーブル600を参照し、対象OSの情報に基づいて対象OSに対応するリソースの評価観点603及び重み605を取得する。以下の説明では、対象OSに対応するリソースを対象リソースという。
【0057】
S1003で、プログラム112は、リソースの評価観点毎に、対象リソースの累積書込量の割合を算出する。本実施例では、リソースの評価観点として、フラッシュメモリの累積書込回数と、フラッシュメモリの累積書込サイズとがある。このため、以下では、このステップにおける評価観点毎のそれぞれのステップを具体的に説明する(点線の枠内のステップ)。
【0058】
S1003−1で、プログラム112は、リソース管理テーブル300を参照し、対象リソースの書込回数上限値に対する累積書込回数の割合である書込回数割合を算出する。
【0059】
S1003−2で、プログラム112は、リソース管理テーブル300を参照し、対象リソースの書込サイズ上限値に対する累積書込サイズの割合である書込サイズ割合を算出する。
【0060】
S1009で、プログラム112は、対象リソースの評価観点毎の対象リソースの評価値を算出する。以下では、このステップにおける評価観点毎のそれぞれのステップを具体的に説明する(点線の枠内のステップ)。
【0061】
S1009−1で、プログラム112は、対象リソースについて、書込回数割合に重みを掛けた値を累積書込回数評価値として算出する。
【0062】
S1009−2で、プログラム112は、対象リソースについて、累積書込サイズ割合に重みを掛けた値を累積書込サイズ評価値として算出する。
【0063】
S1011で、プログラム112は、S1009で算出した評価観点毎の評価値、つまり累積書込回数評価値及び累積書込サイズ評価値、を合計した値を、対象リソースの評価値として算出する。そして、プログラム112は、算出した評価値によりリソース管理テーブル300を更新するとともに、算出した評価値をプログラム111に渡して処理を終了する。
【0064】
上記処理により、対象リソースの寿命の指標となる値を、評価値として算出できる。
【0065】
なお、この処理はS906のタイミングに関わらず、定期的に又は不定期に実行されていてよい。また、対象リソースの評価値は、上記の算出方法には限られない。例えば、対象リソースの残りの寿命の予測値を評価値として算出してもよい。
【0066】
なお、上記処理においては、累積書込回数と、累積書込サイズとの2つの評価観点毎の累積書込量の割合に基づく、リソースの評価値を算出したがこれに限られない。例えば、評価値は、累積書込回数又は累積書込サイズのどちらか一方の評価観点の累積書込量の割合に基づき算出されてもよいし、別の評価観点を加えてもよい。
【0067】
また、上記処理においては、対象リソースの評価値は、評価観点毎の評価値を加算することで算出していたが、どのような方法であってもよい。また、上記処理においては、評価観点毎の評価値は、その評価観点の重要度により重みを付けているが、これに限られない。
【0068】
図11は、サーバ起動前処理のフローチャートである。
【0069】
この処理は、管理サーバ1が起動サーバで対象OSが起動するために必要な設定を行う処理である。この処理は、
図8のS803において、サーバ起動前処理プログラム114が実行する処理である。
【0070】
S1101で、プログラム114は、サーバ管理テーブル400を参照し、起動サーバの前回起動OSが対象OSであるか否かを判定する。判定の結果、起動サーバの前回起動OSが対象OSである場合(S1101;Yes)、プログラム114は、処理を終了する。
【0071】
一方、判定の結果、起動サーバの前回起動OSが対象OSでない場合(S1101;No)、プログラム114は、OS管理テーブル500を参照し、対象OSに対応するフラッシュメモリ(リソース)の用途を判定する。
【0072】
判定の結果、フラッシュメモリの用途がデータディスクの場合(S1103;データディスク)は、当該フラッシュメモリ内の更新データがLUに記憶されていない。このため、プログラム114は、サーバ管理テーブル400を参照し、対象OSを前回起動したサーバを特定し、特定したサーバが有するフラッシュメモリ内の更新データを、起動サーバのフラッシュメモリ53にコピーする指示を、特定したサーバ及び起動サーバに送信し(S1105)、S1109に処理を進める。なお、本実施例では、前回起動したサーバは、障害の発生したサーバである。
【0073】
一方、判定の結果、フラッシュメモリ53の用途がキャッシュの場合(S1103;キャッシュ)、プログラム114は、フラッシュメモリ53のデータの一部又は全部を消去する指示を起動サーバに送信し、S1109に処理を進める。なお、例えば、この指示を受信した起動サーバは、自身が前回起動したOSに関するフラッシュメモリ53内の全てのデータを消去してもよい。また、例えば、前回起動したOSの起動用のデータとそのOSが使用するキャッシュ領域内のデータがフラッシュメモリ53に格納されている場合、起動サーバは、そのキャッシュ領域内のデータのみを消去してもよい。
【0074】
S1109で、プログラム114は、対象OSを前回起動したサーバと、起動サーバの設定値を入れ替え、処理を終了する。なお、ここで設定値とは、BIOS設定の値、WWN(World Wide Name)などである。
【0075】
上記処理により、起動サーバで前回起動したOSが対象OSでない場合であっても、対象OSを起動する際に必要なデータを、対象OSを前回起動したサーバから取得することができる。
【0076】
具体的には、対象OSの更新データが、対象OSを前回起動したサーバのフラッシュメモリ53に格納されている場合であって、そのフラッシュメモリ53がデータディスクとして使用されている場合、フラッシュメモリ53内のデータを予め起動サーバへコピーすることで、起動サーバの電源をON時には、起動サーバをスムーズに起動させることができる。なお、データのコピーは、内蔵HDDを搭載しているサーバのコールドスタンバイ切替え方法と同様の方法で実現されてよい。
【0077】
また、起動サーバで起動されていたOSが、対象OS以外のOSである場合、このOSの更新データを、起動サーバから消去することができる。
【0078】
具体的には、対象OSの更新データが、対象OSを前回起動したサーバのフラッシュメモリ53に格納されている場合であって、対象OSを前回起動したサーバ5のフラッシュメモリ53がキャッシュとして使用されている場合、フラッシュメモリ53上の更新データの基となるデータはLUに格納されている。このため、このデータを消去することで、不要なデータをサーバに残すことを防止できる。なお、データの消去は、データ消去用のOSをPXE(preboot execution environment)ブートで起動するなどの方法で実現されてよい。
【0079】
また、対象OSが起動サーバで起動するために必要な設定変更ができる。具体的には、起動サーバの設定変更は、従来周知のサーバ障害発生時のコールドスタンバイ切替え方法と同様の方法で実現されてよい。
【0080】
上記処理では、S1105で、対象OSを前回起動したサーバのフラッシュメモリ53内のデータを、起動サーバのフラッシュメモリ53にコピーしていたが、これに限られない。例えば、対象OSを前回起動していたサーバの電源がOFFになった後、管理サーバ1が対象OSを前回起動したサーバのフラッシュメモリ53のバックアップをストレージ装置4へ書き込んでもよい。
【0081】
また、上記処理では、S1105において、起動サーバが対象OSを前回起動していたサーバ5にアクセスできない場合、例えば、そのサーバ5のフラッシュメモリ53の基となるLU内のデータを取得してもよい。これは例えば、対象OSを前回起動していたサーバ5のフラッシュメモリ53が、ライトスルーキャッシュとして機能している場合に効果的である。
【0082】
図12は、サーバ起動処理プログラムのフローチャートである。
【0083】
この処理は、管理サーバ1が起動サーバを起動させるための処理である。この処理は、
図8のS805において、サーバ起動処理プログラム115が実行する処理である。
【0084】
S1201で、プログラム115は、起動サーバに対し、電源を「ON」する指示を送信し、処理を終了する。
【0085】
上記処理により、起動サーバが対象OSを起動することができる。なお、プログラム115は、起動サーバの電源を「ON」する指示に、電源を「ON」にする日時の情報を加えてもよい。これにより、この指示を受信した起動サーバは、その日時に電源を「ON」することができる。例えば、プログラム115は、自身の負荷が少ない時間帯にこの処理を行っておき、起動サーバの起動日時を設定することができる。
【0086】
図13は、サーバ起動後処理プログラムのフローチャートである。
【0087】
この処理は、起動サーバで対象OSを起動させた後に、管理サーバ1が行う処理である。この処理は、
図8のS807において、サーバ起動後処理プログラム116が実行する処理である。
【0088】
S1301で、プログラム116は、サーバ管理テーブル400を参照し、起動サーバの前回起動OSが対象OSであるか否かを判定する。
【0089】
判定の結果、起動サーバの前回起動OSが対象OSでない場合(S1301;No)、プログラム116は、対象OSが前回起動したサーバのフラッシュメモリのデータを消去する指示を、その前回起動したサーバに送信する(S1303)。そして、プログラム116は、サーバ管理テーブル400について、対象OSが前回起動したサーバのサーバID401に対応する前回起動OS403の欄を削除し(S1305)、S1307に処理を進める。
【0090】
一方、判定の結果、起動サーバの前回起動OSが対象OSである場合(S1301;Yes)、プログラム114は、サーバ管理テーブル400の起動サーバの電源状態405を「ON」に変更し(S1307)処理をする。
【0091】
上記処理により、管理サーバ1は、OS起動処理が終了したそれぞれのサーバの情報を更新する事ができる。これにより、各サーバの実環境と、管理サーバが管理しているサーバの情報との整合性を保つことができる。
【0092】
また、上記処理により、起動サーバが、対象OSを前回起動したサーバと異なる場合、不要なデータをそのサーバに残すことを防止できる。また、対象OSを前回起動したサーバのフラッシュメモリのデータは最新の情報ではない不要なデータであるため、データを消去することで、データ漏洩などのセキュリティリスクを防止できる。特に、サーバは、多数のユーザが使用するため、不要なデータを消去しておく必要がある。
【実施例2】
【0093】
実施例2について、
図7、14及び15を用いて説明する。実施例1と同様の構成については、同じ参照番号を付して説明する。また、実施例1と同様の構成については、説明を省略する場合がある。
【0094】
本実施例においては、例えば管理者により管理サーバ1のクライアントや入力装置へ入力された、OSを指定したOS起動要求を受信したことにより、OS起動処理(
図8参照)が開始される場合を説明する。この処理においては、OS起動要求で指定されたOSを起動するサーバを、起動サーバとして決定する。なお、OS起動処理の開始の契機は、OS起動要求を管理者等から受信した場合に限られない。例えば、管理サーバ1において、予めOSの開始(及び終了)がスケジューリングされていてもよい。この場合、スケジューリングされたOSの開始時刻が、OS起動要求を受信したときに相当するものとする。
図7は、OSの対サーバ評価値管理テーブル700である。
【0095】
OSの対サーバ評価値管理テーブル700は、本実施例のOS引継処理において一時的に利用されるテーブルである。具体的には、このテーブル700は、後述する起動サーバ変更処理において、対象OSを前回起動したサーバの評価値を算出する際に作成される。なお、以下の説明において、最後に起動したOSが対象OSであり、且つ電源OFFになっているサーバを、前回起動サーバという。OSの対サーバ評価値管理テーブル700は、対象OS毎のエントリを有する。対象OSは、当該OSを識別するOSID701と、当該OSが利用するリソースを識別するリソースID703と、当該前回起動OSのサーバID705と、当該リソースの種別であるリソース種別707と、当該リソースの書込回数上限値709と、当該リソースの累積書込回数711と、当該リソースの書込サイズ上限値713と、当該リソースの累積書込サイズ715と、当該リソースの評価値717とを有する。なお、本実施例では、このテーブル300で管理されるリソースはフラッシュメモリ53のみであるが、他のリソースが管理されてもよい。また、リソース種別707、書込回数上限値709、累積書込回数711、書込サイズ上限値713及び累積書込サイズ715は、リソース管理テーブル300の同項目と同じであるため、説明を省略する。
【0096】
以下、本実施例のOS起動処理を説明する。
【0097】
図14は、起動サーバ変更処理のフローチャートである。
【0098】
本実施例において、この処理は、OS起動処理において、起動サーバ決定処理(
図9)の後に行われる処理である。起動サーバ決定処理については、説明を省略する。
【0099】
S911で、プログラム111は、受信したOS起動要求がサーバを指定した要求であるか否かを判定する。サーバが指定されている場合(S911;Yes)、プログラム111は、処理を終了する。この場合は、
図9のS909で決定された起動サーバが、起動サーバである。
【0100】
一方、サーバが指定されていない場合(S911;No)、つまり、対象OSの使用開始要求の場合、プログラム111は、S913に処理を進める。
【0101】
S913で、プログラム111は、サーバ管理テーブル400を参照し、S903で取得された起動可能サーバのうち、前回起動OS403が対象OSに一致するサーバを取得する。ここで取得したサーバは、正常状態であり電源がOFFのときで、かつ、対象OSの前回起動サーバが実行しているOSと同じOSを実行していたサーバ(前回起動サーバ)である。
【0102】
S915で、プログラム111は、OS管理テーブル500を参照し、対象OSの情報を取得する。
【0103】
S917で、プログラム111は、OSの対サーバ評価値計算プログラム113に処理を引き渡し、OSの対サーバ評価値計算プログラム113から対象OS起動サーバの評価値を取得する。
【0104】
S919で、プログラム111は、起動サーバの評価値がS917で取得した前回起動サーバの評価値を超えているか否かを判定する。判定の結果、起動サーバの評価値が前回起動サーバの評価値を超えている場合(S919;Yes)、前回起動サーバを起動サーバに変更し、処理を終了する。
【0105】
上記処理により、対象OSを起動するサーバとなる起動サーバに、フラッシュメモリの特性を考慮した最適なサーバを決定できる。
【0106】
また、OSを指定したOS起動要求を契機にOS起動処理が行われる場合には、前回起動サーバを含めた起動可能サーバの中から、最適な起動サーバを決定できる。
【0107】
なお、OSを指定したOS起動要求を契機にOS起動処理が行われる場合には、前回起動サーバも起動可能サーバに含めている。これは、前回起動サーバで対象OSを起動することで、対象OSの起動に関するデータを他のサーバのフラッシュメモリへコピーする必要がなくなることで、無駄な書込み及び消去を削減することができるからである。これにより、フラッシュメモリの劣化を防止することができる。つまり、起動サーバが前回起動サーバではない場合には、前回起動サーバのフラッシュメモリ53内のデータを起動サーバのフラッシュメモリにコピーし、さらに、コピー後には、そのデータを前回起動サーバのフラッシュメモリから消去しなければならない。書込み及び消去が劣化の原因となるフラッシュメモリにおいては、無駄な書込み及び消去を極力減らす必要がある。このため、前回起動サーバで対象OSを起動することで、無駄な書込及び消去を減らす事が可能となる。
【0108】
図15は、OSのサーバ評価値計算処理のフローチャートである。
【0109】
この処理は、
図14のS917において、OSの対サーバ評価値計算プログラム113が実行する処理である。
【0110】
S1501で、プログラム113は、OS管理テーブル500を参照し、対象OSの情報を取得する。
【0111】
S1503で、プログラム113は、サーバ管理テーブル400を参照し、対象OSを前回起動OS403とするサーバ、つまり前回起動サーバのサーバID401を取得する。そして、プログラム113は、リソース管理テーブル300を参照し、取得した前回起動サーバが有する全てのリソースを対象リソースとし、対象リソースの情報(エントリ)を取得する。
【0112】
S1505で、プログラム113は、リソース評価観点管理テーブル600を参照し、対象リソースの評価観点603及び重み605を取得する。
【0113】
S1507で、プログラム113は、S1503で取得した対象リソースの情報によりOSの対サーバ評価テーブル700のエントリを追加し、追加した対象リソースについて、サーバID705に前回起動サーバのIDを設定する。
【0114】
S1509で、プログラム113は、対象リソースの補正後の累積書込回数及び補正後の累積書込サイズを設定することにより、OSの対サーバ評価値管理テーブル700を更新する。前回起動サーバが対象OSを起動する場合、他のサーバが対象OSを起動する場合に比べて、累積書込回数及び累積書込サイズの増加は少ないと予測できる。そこで、プログラム113は、前回起動サーバを優先させるために、累積書込回数及び累積書込サイズを減少させる補正を行う。以下では、このステップにおける評価観点毎のそれぞれのステップを具体的に説明する(点線の枠内のステップ)。
【0115】
S1509−1で、プログラム113は、対象リソースの累積書込回数を補正する。具体的には、例えば、プログラム113は、OSの対サーバ評価値管理テーブル700及びOS管理テーブル500を参照し、対象OSの1起動当たりの平均書込回数509に連続起動目標回数513を掛けた値を、累積書込回数309から引いた値を補正後の累積書込回数として算出する。そして、プログラム113は、補正後の累積書込回数711を、OSの対サーバ評価値管理テーブル700に設定する。
【0116】
S1509−2で、プログラム113は、対象リソースの累積書込サイズを補正する。具体的には、例えば、プログラム113は、OSの対サーバ評価値管理テーブル700及びOS管理テーブル500を参照し、対象リソースの1起動当たりの平均書込サイズ511に連続起動目標回数513を掛けた値を、累積書込サイズ313から引いた値を補正後の累積書込サイズとして算出する。そして、プログラム113は、補正後の累積書込サイズ715を、OSの対サーバ評価値管理テーブル700に設定する。
【0117】
S1511で、プログラム113は、対象リソースの補正後の累積書込回数及び補正後の累積書込サイズに基づき、S1011と同様にして、対象リソースの補正後の評価値を算出する。そして、プログラム113は、対象リソースの補正後の評価値により、OSの対サーバ評価値管理テーブル700の評価値717を更新し、処理を終了する。
【0118】
上記処理により、対象OSが前回起動サーバで起動された場合に、リソース(フラッシュメモリ)の使用を抑えられることを考慮し、リソースの評価値を算出できる。これにより、対象OSが前回起動サーバで動作する場合を優遇することで、無駄なリソースの使用を防止できる。
【0119】
具体的には、前回起動サーバについては、リソース評価値計算プログラムにおいて、補正後の累積書込回数及び補正後の累積書込サイズによって対象リソースの評価値が算出されることとなる。補正後の累積書込回数は、対象OSの1起動当たりの平均書込回数に連続起動目標回数513(
図5)を掛けた値を、実際の累積書込回数から引いた値である。補正後の累積書込サイズについても同様である。上述の通り、前回起動サーバについては、リソース評価値計算プログラムにおいて、補正後の累積書込回数及び累積書込サイズに基づいて補正後の評価値が算出されるため、対象リソースの評価値が実際よりも低い値に算出され、前回起動サーバを起動サーバに優先的に選択できる。
なお、補正後の累積書込回数及び累積書込サイズの算出方法は、フラッシュメモリ53への書込回数及び書込サイズが多いとされる、OSを最初に起動したときの1起動当たりの書込回数及び書込サイズが考慮される方法であれば、上述の方法に限られない。例えば、あるOSを実行した後、対象OSを起動した場合の、前回起動サーバの1起動当たり書込回数及び書込サイズを前回起動サーバから取得し、累積書込回数及び累積書込サイズからこれらの値を引いた値を、補正後の累積書込回数及び累積書込サイズとしてもよい。
さらに、上記処理に代えて、前回起動サーバを優先させつつ、優先させすぎない処理を行ってもよい。これは、例えば、管理サーバ1が、前回起動サーバにおいて、対象OSが連続して起動した回数をカウントしており、連続起動目標回数以上になると優先しないような処理である。具体的には、例えば、対象OSの1起動当たりの平均書込回数×(連続起動目標回数−実際に連続して起動した回数)を補正後の累積書込回数としてもよい。なお、補正後の累積書込サイズについても同様である。
【0120】
起動サーバの判定の際に、補正後の累積書込回数評価値及び累積書込サイズ評価値を使用することで、対象OSが同じサーバ(前回起動サーバ)で連続して起動することを許容しつつ、計算機システム内の複数のサーバにおけるリソースの累積書込量を平準化できる。
【0121】
起動サーバ変更処理の後、実施例1と同様に、サーバ起動前処理、サーバ起動処理及びサーバ起動後処理が行われる(
図8参照)。
【0122】
なお、本実施例では、サーバ起動後処理において(
図13参照)、S1507の後、サーバ起動後処理プログラム116は、OSの対サーバ評価値管理テーブル700を更新し、処理を終了する。具体的には、プログラム116は、OSの対サーバ評価値管理テーブル700の起動サーバのエントリを削除する。