(57)【要約】  管理サーバは、メモリと、それぞれがサーバプロセッサ及び不揮発性メモリを有する複数のサーバに、接続される通信インタフェースと、メモリと通信インタフェースに接続される管理プロセッサと、を有する。プログラムの起動に応じて、サーバプロセッサにより、不揮発性メモリへデータが書き込まれる。メモリは、不揮発性メモリの累積書込量の限界値を記憶する。管理プロセッサは、複数のサーバの各サーバから不揮発性メモリの累積書込量を受信し、第１プログラムの起動を要求するための起動要求を受信した場合に、限界値及び累積書込量に基づき、各サーバにおける不揮発性メモリの評価値を算出し、評価値に基づき、複数のサーバの中から一つの起動サーバを選択し、起動サーバに対し、第１プログラムを起動することを要求する実行要求を送信する。
2016027381.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
それぞれがサーバプロセッサ及び不揮発性メモリを有する複数のサーバに、接続される通信インタフェースと、
前記メモリと前記通信インタフェースに接続される管理プロセッサと、
を有し、
プログラムの起動に応じて、前記サーバプロセッサにより、前記不揮発性メモリへデータが書き込まれ、
前記メモリは、前記不揮発性メモリの累積書込量の限界値を記憶し、
管理プロセッサは、
前記複数のサーバの各サーバから不揮発性メモリの累積書込量を受信し、
第１プログラムの起動を要求するための起動要求を受信した場合に、前記限界値及び前記累積書込量に基づき、各サーバにおける前記不揮発性メモリの評価値を算出し、
前記評価値に基づき、前記複数のサーバの中から一つの起動サーバを選択し、
前記起動サーバに対し、前記第１プログラムを起動することを指示する実行指示を送信する、
管理サーバ。
【請求項２】
請求項１に記載の管理サーバであって、
前記管理プロセッサは、
前記限界値に対する前記累積書込量の割合に基づいて前記評価値を算出する、
管理サーバ。
【請求項３】
請求項２に記載の管理サーバであって、
前記管理プロセッサは、
前記起動要求を受信した場合に、前記複数のサーバのうち、プログラムが実行されておらず且つ正常状態のサーバを起動可能サーバとして選択し、
前記起動可能サーバの前記評価値に基づき、前記起動可能サーバの中から前記起動サーバを選択する、
管理サーバ。
【請求項４】
請求項３に記載の管理サーバであって、
前記管理プロセッサは、
前記複数のサーバのうち、前記第１プログラムを実行している第１サーバが、前記起動要求により指定された場合、前記第１サーバの不揮発性メモリに格納されたデータを、前記起動サーバの不揮発性メモリへコピーする指示を前記第１サーバに送信し、
前記起動サーバに対し、前記第１プログラムを起動することを指示する実行指示を送信する、
管理サーバ。
【請求項５】
請求項４に記載の管理サーバであって、
前記管理プロセッサは、
前記起動可能サーバの中から、前記評価値の最も低いサーバを前記起動サーバとして選択する、
管理サーバ。
【請求項６】
請求項５に記載の管理サーバであって、
前記管理プロセッサは、
前記実行指示の送信前に前記起動サーバにより最後に起動されたプログラムが、前記第１プログラムと異なる第２プログラムの場合、前記起動サーバの不揮発性メモリに格納されているデータを消去する指示を、前記起動サーバに送信する、
管理サーバ。
【請求項７】
請求項２に記載の管理サーバであって、
前記管理プロセッサは、
前記複数のサーバのそれぞれが最後に起動していたプログラムを示す情報であるサーバ管理情報を前記メモリに記憶し、
前記第１プログラムが前記起動要求により指定された場合、
前記管理プロセッサは、
前記サーバ管理情報に基づき、最後に起動したプログラムが前記第１プログラムであるサーバを、前記前回起動サーバとして選択し、
前記前回起動サーバの前記評価値を減少させて補正し、
前記複数のサーバの中から、前記評価値の最も低いサーバを前記起動サーバとして選択する、
管理サーバ。
【請求項８】
請求項７に記載の管理サーバであって、
前記管理プロセッサは、
前記実行指示の送信前に前記起動サーバにより最後に起動されたプログラムが、前記第１プログラムでない場合、前記複数のサーバのうち、前記前回起動サーバの不揮発性メモリに格納されたデータを、前記起動サーバの不揮発性メモリへコピーする指示を前記第１サーバに送信し、
前記起動サーバに対し、前記第１プログラムを起動することを要求する実行指示を送信する、
管理サーバ。
【請求項９】
請求項８に記載の管理サーバであって、
前記管理プロセッサは、
前記実行命令の送信前に、前記起動サーバにより最後に起動されたプログラムが前記第１プログラムでない場合、前記コピーの後に、前記起動サーバの不揮発性メモリに格納されているデータを消去する指示を、前記起動サーバに送信する、
管理サーバ。
【請求項１０】
それぞれが、サーバプロセッサ及び不揮発性半導体メモリを有する複数のサーバと、
前記複数のサーバに接続される管理サーバと、
を有し、
前記サーバプロセッサは、前記プログラムの起動に応じて前記不揮発性メモリへデータを書き込み、
前記管理サーバは、
前記不揮発性メモリの累積書込量の限界値を記憶し、
前記複数のサーバの各サーバから不揮発性メモリの累積書込量を受信し、
第１プログラムを起動させることを要求するための起動要求を受信した場合に、前記限界値及び前記累積書込量に基づき、各サーバにおける前記不揮発性メモリの評価値を算出し、
前記評価値に基づき、前記複数のサーバの中から一つの起動サーバを選択し、
前記起動サーバに対し、前記第１プログラムを起動することを指示する実行指示を送信し、
前記起動サーバのサーバプロセッサは、前記実行指示を受信し、前記第１プログラムを起動する、
計算機システム。
【請求項１１】
請求項１０に記載の計算機システムであって、
前記管理サーバは、
前記限界値に対する前記累積書込量の割合に基づいて前記評価値を算出する、
計算機システム。
【請求項１２】
請求項１１に記載の計算機システムであって、
前記複数のサーバに接続されるストレージ装置を更に有し、
管理サーバは、
前記複数のサーバのそれぞれが有する不揮発性メモリに格納されるデータが、前記ストレージ装置へコピーされるか否かを示す用途情報を記憶し、
前記複数のサーバのうち、前記第１プログラムを実行している第１サーバが、前記起動要求により指定された場合、前記用途情報に基づき、前記第１サーバの不揮発性メモリに格納されたデータが前記ストレージ装置へコピーされるか否かを判定し、
前記第１サーバの不揮発性メモリに格納されたデータが前記ストレージ装置へコピーされないと判定された場合、前記起動サーバの不揮発性メモリへ前記データをコピーする指示を前記第１サーバに送信し、
前記起動サーバに対し、前記第１プログラムを起動することを指示する実行指示を送信する、
計算機システム。
【請求項１３】
請求項１２に記載の計算機システムであって、
前記起動要求により、第１プログラムが指定された場合、
管理サーバは、
前記サーバ管理情報に基づき、最後に起動したプログラムが前記第１プログラムであるサーバを、前記前回起動サーバとして選択し、
前記前回起動サーバの前記評価値を減少させて補正し、
前記複数のサーバの中から、前記評価値の最も低いサーバを前記起動サーバとして選択する、
計算機システム。
【請求項１４】
請求項１３に記載の計算機システムであって、
前記複数のサーバに接続されるストレージ装置を更に有し、
管理サーバは、
前記複数のサーバのそれぞれが有する不揮発性メモリに格納されるデータが、前記ストレージ装置へコピーされるか否かを示す用途情報を記憶し、
前記実行指示の送信前に前記起動サーバにより最後に起動されたプログラムが、前記第１プログラムでない場合、前記用途情報に基づき、前記前回起動サーバの不揮発性メモリに格納されたデータが前記ストレージ装置へコピーされるか否かを判定し、
前記前回起動サーバの不揮発性メモリに格納されたデータが前記ストレージ装置へコピーされないと判定された場合、前記複数のサーバのうち、前記前回起動サーバの不揮発性メモリに格納されたデータを、前記起動サーバの不揮発性メモリへコピーする指示を前記第１サーバに送信し、
前記起動サーバに対し、前記第１プログラムを起動することを要求する実行指示を送信する、
計算機システム。
【請求項１５】
それぞれが、サーバプロセッサ及び不揮発性メモリを有する複数のサーバの管理方法であって、
前記不揮発性メモリの累積書込量の限界値が記憶され、
前記複数のサーバの前記各サーバから不揮発性メモリの累積書込量を受信し、
第１プログラムを起動させることを要求するための起動要求を受信した場合に、前記限界値及び前記累積書込量に基づき、各サーバにおける前記不揮発性メモリの評価値を算出し、
前記評価値に基づき、前記複数のサーバの中から一つの起動サーバを選択し、
前記起動サーバに対し、前記第１プログラムを起動することを要求する実行要求を送信する、
ことを有し、
プログラムの起動に応じて、前記サーバプロセッサにより、前記不揮発性メモリへデータが書き込まれる、
管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のサーバを管理する技術に関する。
【背景技術】
【０００２】
現用サーバと予備サーバと管理サーバとを有するサーバシステムにおいて、管理サーバが、現用サーバのディスクイメージを予め予備サーバに配信しておき、現用サーバに障害が発生した場合に、業務の引継が可能な予備サーバを選択して、現行サーバの業務を実行するように制御するサーバ切替え方法が知られている（特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−９０７４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一方、近年、記憶デバイスとしてＨＤＤ（ハードディスクドライブ）に代えてフラッシュメモリなどの不揮発性メモリを搭載した計算機が主流になってきている。不揮発性メモリが搭載される複数のサーバがネットワーク接続されたシステムにおいては、上記のサーバ切替え方法を適用することができる。しかし、上記方法を適用しただけでは、不揮発性メモリの特性が考慮されていない。不揮発性メモリは、データの読み書きの速度が速いなどの利点がある一方、書き込み及び消去を繰り返すことで劣化するため、書き込み回数に限界があるという特性を有するデバイスである。このため、不揮発性メモリを搭載した複数のサーバを有するシステムにおいて、特定のサーバの負荷が集中した場合、その特定のサーバについてはサーバの寿命やメーカが推奨するサーバのリプレイス期間よりも不揮発性メモリの寿命が短くなり交換が必要になってしまうおそれがある。【０００５】
特に、複数のサーバを有するシステムにおいて、各サーバは、複数のクライアントからアクセスを受ける場合も多い。このため、特定のサーバにクライアントからのアクセスが集中してしまえば、サーバの寿命やリプレイス期間よりも早く不揮発性メモリの交換が必要となってしまうおそれがある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明に係る管理サーバは、メモリと、それぞれがサーバプロセッサ及び不揮発性メモリを有する複数のサーバに、接続される通信インタフェースと、メモリと通信インタフェースに接続される管理プロセッサと、を有する。プログラムの起動に応じて、サーバプロセッサにより、不揮発性メモリへデータが書き込まれる。メモリは、不揮発性メモリの累積書込量の限界値を記憶する。管理プロセッサは、複数のサーバの各サーバから不揮発性メモリの累積書込量を受信し、第１プログラムの起動を要求するための起動要求を受信した場合に、限界値及び累積書込量に基づき、各サーバにおける不揮発性メモリの評価値を算出し、評価値に基づき、複数のサーバの中から一つの起動サーバを選択し、起動サーバに対し、第１プログラムを起動することを要求する実行要求を送信する。
【発明の効果】
【０００７】
複数のサーバに搭載される不揮発性メモリの劣化を平準化することができる。
【図面の簡単な説明】
【０００８】
【図１】実施例１に係る計算機システムの構成図である。
【図２】管理サーバの論理構成図である。
【図３】リソース管理テーブルである。
【図４】サーバ管理テーブルである。
【図５】ＯＳ管理テーブルである。
【図６】リソース評価観点管理テーブルである。
【図７】ＯＳサーバ評価管理テーブルである。
【図８】管理プログラムのフローチャートである。
【図９】起動サーバ決定処理のフローチャートである。
【図１０】リソース評価値計算プログラムのフローチャートである。
【図１１】サーバ起動前処理のフローチャートである。
【図１２】サーバ起動処理プログラムのフローチャートである。
【図１３】サーバ起動後処理プログラムのフローチャートである。
【図１４】起動サーバ変更処理のフローチャートである。
【図１５】ＯＳのサーバ評価値計算処理のフローチャートである。
【発明を実施するための形態】
【０００９】
以下の説明では、「ｋｋｋテーブル」の表現にて情報を説明することがあるが、情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「ｋｋｋテーブル」を「ｋｋｋ情報」と呼ぶことができる。
【００１０】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶資源（例えば、メモリ）及び／又は通信インターフェイスデバイス（例えば、通信ポート）を用いながら行うため、処理の主語がプロセッサとされてもよい。逆に、プロセッサが主語となっている処理は、１以上のプログラムを実行することにより行われると解釈することができる。プロセッサは、典型的には、ＣＰＵ（Central  Processing  Unit）のようなマイクロプロセッサであるが、処理の一部（例えば、暗号化／復号化、圧縮／伸張）を実行するハードウェア回路を含んでもよい。
【００１１】
また、以下の説明では、「ＬＵ」は、論理ユニットの略であり、論理的な記憶デバイスである。ＬＵは、論理ボリュームと呼ばれてもよい。ＬＵは、実ＬＵであっても良いし、仮想ＬＵであっても良い。実ＬＵは、１以上のＰＤＥＶに基づくＬＵである。「ＰＤＥＶ」は、不揮発性の物理的な記憶デバイスの略であり、例えば、ＨＤＤ（Hard  Disk  Drive）又はＳＳＤ（Solid  State  Drive）である。複数のＰＤＥＶで１以上のＲＡＩＤグループ（Redundant  Array  of  Independent  (or  Inexpensive)  Disks）が構成されてよい（ＲＡＩＤグループはパリティグループと呼ばれてもよい）。仮想ＬＵとしては、例えば、外部接続ＬＵと、ＴＰ（Thin  Provisioning）−ＬＵと、スナップショットＬＵとがあってよい。外部接続ＬＵは、ストレージシステムに接続されている外部のストレージシステムの記憶資源（例えばＬＵ）に基づいておりストレージ仮想化技術に従うＬＵである。ＴＰ−ＬＵは、容量仮想化技術（典型的にはThin  Provisioning）に従うＬＵである。スナップショットＬＵは、オリジナルのＬＵのスナップショットとして提供されるＬＵである。ストレージシステムは、１以上のストレージ装置で構成されてよい。
【００１２】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号を使用し、同種の要素を区別して説明する場合には、その要素の参照符号に代えて、その要素に割り振られた識別子（例えば番号及び符号のうちの少なくとも１つ）を使用することがある。
【実施例１】
【００１３】
図１は、実施例１に係る計算機システムの構成図である。【００１４】
計算機システムは、管理サーバ１、ネットワークスイッチ２、複数のサーバ５、ファイバチャネルスイッチ３及びストレージ装置４を有する。管理サーバ１は、例えば、ネットワークインタフェースカード（ＮＩＣ）等のネットワークインタフェース１７を有する。管理サーバ１のネットワークインタフェース１７が、ネットワークスイッチ２を介して複数のサーバ５に接続されている。複数のサーバ５は、ファイバチャネルスイッチ３を介してストレージ装置４に接続されている。よって、複数のサーバ５は、ネットワークスイッチ２及びファイバチャネルスイッチ３を介して互いに通信可能である。なお、ストレージ装置４は、ネットワークスイッチ２にも接続されていてよい。管理サーバ１とサーバ５の間の接続は、例えば、ＬＡＮ（Local  Area  Network）等のインターネットプロトコルの通信ネットワークであり、ネットワークスイッチ２等を含む。サーバ５とストレージ装置４の間の接続は、例えば、ＳＡＮ（Storage  Area  Network）等の通信ネットワークであり、ファイバチャネルスイッチ３等を含む。なお、各スイッチは、同種のスイッチであってもよい。【００１５】
各サーバ５は、物理的な計算機であり、メモリ５２、ネットワークインターフェースカード（ＮＩＣ）５１、フラッシュメモリ５３、プロセッサ（ＣＰＵ）５４及びホストバスアダプタ（ＨＢＡ）５５を備える。これらのサーバ５の構成要素は、それぞれ、１つであっても複数であってもよい。ＮＩＣ５１は、ネットワークスイッチ２に接続し、管理サーバ１と通信するためのインタフェースであり、ＨＢＡ５５は、ファイバチャネルスイッチ３に接続し、ストレージ装置４と通信するためのインタフェースである。ＮＩＣ５１及びＨＢＡ５５は、多種のインタフェースが用いられてもよい。メモリ５２には、例えば、ＣＰＵ５４が実行する各種プログラム５２１ａが記憶されている。フラッシュメモリ５３は、具体的には、例えば、ＳＳＤである。【００１６】
ストレージ装置４は、物理記憶デバイスとしてのハードディスクドライブ４２及びフラッシュメモリ４１と、物理記憶デバイスに接続されるコントローラ（図示なし）とを有する。フラッシュメモリ４１は、例えばＳＳＤなどである。複数の同種の物理記憶デバイスに基づき、ＲＡＩＤグループが構成されてよい。コントローラは、その内部にプロセッサ及びメモリを備え、１つ又は複数の物理ディスクに基づきサーバ５にＬＵ（Logical  Unit）４１１、４１２を提供する。なお、物理記憶デバイスは、ハードディスクドライブ４２及びフラッシュメモリ４１のいずれか一方を備えてもよい。【００１７】
図２は、管理サーバ１の論理構成図である。【００１８】
管理サーバ１は、計算機であり、メモリ１１、プロセッサ（ＣＰＵ）１３、ディスクインタフェース１５及びネットワークインタフェース１７を備える。これらの要素は、バスなどの内部ネットワークにより互いに接続されている（図示なし）。【００１９】
ネットワークインタフェース１７は、ネットワークスイッチ２に接続し、複数のサーバ５との通信を行う。【００２０】
メモリ１１は、管理プログラム１１０を格納する。管理プログラム１１０は、ＣＰＵ１３に実行されるコンピュータプログラム、及び、そのコンピュータプログラムを実行する際に参照されるテーブルである。具体的には、例えば、管理プログラム１１０には、切替え先・起動先決定プログラム１１１と、リソース評価値計算プログラム１１２と、ＯＳの対サーバ評価値計算プログラム１１３と、サーバ起動前処理プログラム１１４と、サーバ起動処理プログラム１１５と、サーバ起動後処理プログラム１１６と、リソース管理テーブル３００と、サーバ管理テーブル４００と、ＯＳ管理テーブル５００と、リソース評価観点管理テーブル６００と、ＯＳの対サーバ評価値管理テーブル７００とが含まれる。各プログラム及びテーブルの詳細は後述する。【００２１】
図３は、リソース管理テーブル３００である。【００２２】
リソース管理テーブル３００は、各サーバが有するリソースのスペック値及び累積書込量を管理するテーブルである。例えば、リソース管理テーブル３００は、リソース毎のエントリを有する。各エントリは、当該リソースを識別するリソースＩＤ３０１と、当該リソースを有するサーバ５を識別するサーバＩＤ３０３と、当該リソースの種別であるリソース種別３０５と、当該リソースの書込回数における寿命を示す書込回数上限値３０７と、当該リソースの累積書込回数３０９と、当該リソースの書込サイズ上限値３１１と、当該リソースの書込サイズにおける寿命を示す累積書込サイズ３１３と、当該リソースの評価値３１５とを有する。【００２３】
書込回数上限値３０７は、累積書込回数３０９の上限値が示されている。累積書込回数３０９は、例えば、フラッシュメモリ５３における各セルへの延べ書き込み回数の平均値を示す。書込サイズ上限値３１１は、累積書込サイズ３１３の上限値が示されている。累積書込サイズ３１３は、具体的には、例えば、フラッシュメモリ５３に書き込まれた延べデータサイズを示す。なお、累積書込回数３０９及び累積書込サイズ３１３は、フラッシュメモリ５３毎にカウントされる値であり、ＣＰＵ５４を介して各フラッシュメモリ５３から取得される。なお、累積書込回数３０９は、フラッシュメモリ５３内の平均値を示しているが、平均値に限られず最小値、中央値等、他の値であってもよい。
また、書込回数上限値３０７及び書込サイズ上限値３１１は、各フラッシュメモリ５３のスペック値であり、予め設定される。【００２４】
なお、本実施例は、簡単のため、このテーブル３００において管理されるリソースをフラッシュメモリ５３のみとしているが、他のリソースが管理されてもよい。また、本実施例では、簡単のため、このテーブル３００において1つのサーバに1つのリソース（つまりフラッシュメモリ５３）が対応づけられているが、当然に１つのサーバに複数のリソースが対応づけられていてもよい。【００２５】
図４は、サーバ管理テーブル４００である。【００２６】
サーバ管理テーブル４００は、各サーバ５の状態を管理するテーブルである。例えば、サーバ管理テーブル４００は、サーバ５毎のエントリを有する。各エントリは、当該サーバ５を識別するサーバＩＤ４０１と、当該サーバで前回起動されたＯＳを識別する前回起動ＯＳ４０３と、当該サーバの電源のＯＮ／ＯＦＦを示す電源状態４０５と、当該サーバが正常に稼働しているか否かを示すサーバ状態４０７とを有する。なお、前回起動ＯＳ４０３は、換言すると、複数のサーバ５のそれぞれが最後に起動したＯＳである。なお、サーバ５に起動されるプログラムとしてＯＳ以外のプログラムが用いられてもよい。
なお、本実施例では、ＯＳを実行する事により、サーバで業務が実行されることを想定するが、これに限定されない。また、本実施例では、１つのサーバで１つ業務を実行する計算機システムを想定している。つまり、１つのサーバでは、１つのＯＳが実行されるものとするが、これに限定されない。
図においては、例えば、サーバ２は、前回起動ＯＳが「ＯＳ２」であり、電源状態４０５が「ＯＮ」であり、かつ、サーバ状態４０７が「正常」である。これは、サーバ２上で、現在、ＯＳ２が実行されている状態であることを意味する。また、例えば、サーバ１は、前回起動ＯＳが「ＯＳ１」であり、電源状態４０５が「ＯＦＦ」であり、かつ、サーバ状態４０７が「正常」である。これは、サーバ１は現在停止状態であり、停止するまでＯＳ１が実行されていたことを意味する。さらに、例えば、サーバ５は、前回起動ＯＳがなく、電源状態４０５が「ＯＦＦ」であり、サーバ状態４０７が正常である。これは、サーバ５は、未だＯＳが実行されていない待機系のサーバであることを意味する。また、サーバ１、３、４についても、電源状態４０５が「ＯＦＦ」であり、かつ、サーバ状態４０７が「正常」であるため、前回起動ＯＳとは別のＯＳを起動する可能性がある。  【００２７】
なお、本実施例では、サーバは物理サーバを示しており、各サーバは、電源「ＯＮ」時に１つのＯＳを起動し、電源が「ＯＦＦ」となった後の次の起動のタイミングで他のＯＳを起動してもよいし、前回の電源「ＯＮ」時に起動していたＯＳを連続して起動してもよいとする。また、本実施例では、任意の時点において、１つのＯＳが１つのサーバ５で実行される例を示しているが、複数のサーバ５が同じＯＳを実行してもよい。【００２８】
図５は、ＯＳ管理テーブルである。【００２９】
ＯＳ管理テーブル５００は、各ＯＳの情報を管理するテーブルである。例えば、ＯＳ管理テーブル５００は、ＯＳ毎のエントリを有する。各エントリは、当該ＯＳを識別するＯＳＩＤ５０１と、当該ＯＳを起動する際に必要なプログラム及びデータを格納するＬＵを識別するＬＵＩＤ５０３と、当該ＯＳが利用するリソースの種別である使用リソース種別５０５（本実施例ではフラッシュメモリ５３のみ）と、当該ＯＳによる当該リソースの用途５０７と、当該ＯＳの１回の起動当たりのリソースへの平均書込回数５０９と、当該ＯＳの１回の起動当たりのリソースへの平均書込サイズ５１１と、当該ＯＳが1つのサーバで連続して起動する回数の目標値である連続起動目標回数５１３と、を有する。
ＣＰＵ５４がＯＳの起動に応じてフラッシュメモリ５３へ書き込むデータとして、起動データ（起動ディスク）や更新データがある。起動データは、ＯＳを起動する際に必要なプログラム及びデータであり、ＯＳの起動前にフラッシュメモリ５３へ書きこまれる。更新データは、ＯＳにより書込要求されるデータであり、ＯＳの起動後にフラッシュメモリ５３へ書き込まれる。【００３０】
なお、リソースとしてのフラッシュメモリ５３の用途５０７は、例えば、キャッシュメモリ（キャッシュ）であるかデータディスクであるかである。フラッシュメモリ５３がキャッシュメモリの用途で利用される場合、ＣＰＵ５４ａは、フラッシュメモリ５３内のデータを対応するＬＵにコピーする。これにより、ＬＵに書き込まれたデータの内アクセス頻度の高いデータがフラッシュメモリ５３に格納されることとなる。一方、フラッシュメモリ５３がデータディスクの用途で利用される場合、フラッシュメモリ５３内の更新データはＬＵにコピーされない。【００３１】
また、前述したように、フラッシュメモリ５３は、累積書込回数、累積書込サイズなどの上限値が定められている。あるサーバ５があるＯＳを実行した後に別のＯＳを起動する場合、ＯＳに関するデータのコピー及び消去が多く発生してしまうため、フラッシュメモリ５３の劣化に繋がってしまうおそれがある。サーバで起動するＯＳが頻繁に変わることを防止するため、連続起動目標回数５１３を定めている。以下に、ＯＳに関するデータのコピー及び消去が発生する例を具体的に示す。【００３２】
あるサーバ（例えばサーバ５ａ）がＯＳａを実行した後、別のサーバ（例えばサーバ５ｂ）が実行していたＯＳｂを引き継ぐ場合、サーバ５ｂにおいてＯＳｂがフラッシュメモリ５３ｂに書き込んだ更新データが必要となる。ＯＳｂの更新データが、ＯＳｂにより書き込まれた最新のデータだからである。また、ＯＳｂの更新データがサーバ５ａのフラッシュメモリ５３ａに正常にコピーされた場合、フラッシュメモリ５３ｂ内のＯＳｂの更新データの消去が必要となる。これは、データの整合性又はセキュリティなどの観点から、ＯＳｂをサーバ５ａが実行するときに、サーバ５ｂのＯＳｂにもアクセスが発生するのを避けるためである。
なお、上記の場合において、サーバ５ａのフラッシュメモリ５３ａにＯＳｂの更新データを格納する場合、フラッシュメモリ５３ａの用途により、以下の２つが考えられる。１つにフラッシュメモリ５３ａの用途がキャッシュの場合は、フラッシュメモリ５３ａ内のＯＳａが書き込んだデータ（ＯＳａの更新データ）の消去が必要となる。これは、ＯＳａの更新データが、フラッシュメモリ５３ａだけでなく対応するＬＵに格納されているためである。また１つに、フラッシュメモリ５３ｂの用途がデータディスクの場合は、フラッシュメモリ５３ｂ内のＯＳｂの更新データをフラッシュメモリ５３ａにコピーする必要がある。これは、ＯＳｂの最新の更新データが、フラッシュメモリ５３ｂのみに格納されている可能性が高いためである。
なお、本実施例では、ＬＵに起動データが格納されていることを前提とし、ＬＵに格納された起動データに基づき、サーバ５がＯＳを起動する場合を説明するが、これに限定されない。例えば、サーバ５は、ＬＵに格納された起動データを一旦自身のフラッシュメモリ５３に読み出し、その起動データに基づきＯＳを起動させてもよい。また、例えば、予めフラッシュメモリ５３にＯＳが書き込まれる場合、起動データがＬＵに格納されていなくてもよい。【００３３】
なお、本実施例では、各ＯＳが利用するＬＵ及びリソース（フラッシュメモリ）は、それぞれ１つとするが、複数であってもよい。また、本実施例では、リソース（フラッシュメモリ）の用途５０７をそれぞれ１つに定めているが、複数の用途に利用されてもよい。【００３４】
図６は、リソース評価観点管理テーブル６００である。【００３５】
リソース評価観点管理テーブル６００は、リソースの評価観点毎の重み付けを示すテーブルである。例えば、リソース評価観点管理テーブル６００は、リソースの評価観点毎のエントリを有する。各エントリは、リソース種別を示すリソース種別６０１と、評価の対象の値の種類を示す評価観点６０３と、当該評価観点の重要度を示す重み６０５とを有する。【００３６】
次に、管理サーバ１が行うＯＳ起動処理を説明する。この処理は、管理サーバ１が、サーバにＯＳを起動させる処理であり、このための要求であるＯＳ起動要求を受信したことを契機に開始される。
本実施例では、管理サーバ１が、サーバを指定したＯＳ起動要求を受信した場合に、そのサーバで実行されているＯＳを別のサーバで起動する処理を説明する。具体的には、例えば、ＯＳ起動要求は、障害が発生したサーバを指定する情報であってもよく、障害が発生したサーバや、その障害を検知した他のサーバから送信されてもよい。また、例えば、ＯＳ起動要求は、管理者などの管理サーバ１のクライアントから、切替え元のサーバを指定したサーバを切替える旨の要求であってもよい。以下の説明では、起動対象となるＯＳを対象ＯＳという。本実施例において対象ＯＳは、ＯＳ起動要求により指定されたサーバにより実行されているＯＳである。また、以下の説明では、切替え先のサーバ、つまり、対象ＯＳの起動先のサーバを起動サーバという。【００３７】
また、本実施例では、起動サーバは、電源ＯＦＦのサーバとしている。さらに、各サーバ５には、そのサーバ５で起動するＯＳにより書き込まれるデータ（更新データ）の一部又は全部を格納するリソースとして、１つのフラッシュメモリ５３が対応づけられるとしている。しかし、これらの構成には限られない。なお、前述の通り、各サーバ５は、ＯＳに対応するＬＵに格納された起動データにより、ＯＳを起動するとするが、これに限られない。各サーバ５のリソース（フラッシュメモリ５３）には、ＯＳの更新データのみならず、ＯＳの起動データが格納されていてもよい。【００３８】
図８は、管理プログラムによるＯＳ起動処理のフローチャートである。【００３９】
管理サーバ１は、障害の発生したサーバ５を検知した際の、障害の発生したサーバ５を指定したＯＳ起動要求を受信したことを契機に管理プログラム１１０を実行する。なお、以下の説明では、ステップを単に「Ｓ」と略記する。【００４０】
Ｓ８０１で、管理プログラム１１０は、起動サーバ決定処理を実行する。具体的には、例えば、管理プログラム１１０は、後述の切替え先・起動先決定プログラム１１１に処理を引き渡す。【００４１】
Ｓ８０３で、管理プログラム１１０は、サーバ起動前処理を実行する。具体的には、例えば、管理プログラム１１０は、後述のサーバ起動前処理プログラム１１４に処理を引き渡す。【００４２】
Ｓ８０５で、管理プログラム１１０は、サーバ起動処理を実行する。具体的には，例えば、管理プログラム１１０は、後述のサーバ起動処理プログラム１１５に処理を引き渡す。【００４３】
Ｓ８０６で、管理プログラム１１０は、サーバ起動後処理を実行する。具体的には、例えば、管理プログラム１１０は、後述のサーバ起動後処理プログラム１１６に処理を引き渡す。【００４４】
上記処理により、管理サーバ１は、障害の発生したサーバで実行されていたＯＳを、障害の発生した以外の最適なサーバ（起動サーバ）で起動させることができる。【００４５】
図９は、起動サーバ決定処理のフローチャートである。【００４６】
この処理は、図８のＳ８０１において、切替え先・起動先決定プログラム１１１が実行する処理である。【００４７】
この処理では、障害の発生したサーバの代替となって対象ＯＳを起動する起動サーバとして、各サーバのフラッシュメモリの使用状況を考慮して適切なサーバを決定することができる。【００４８】
プログラム１１１は、サーバ管理テーブル４００に登録されている全てのサーバ５について、それぞれ、Ｓ９０１（Ｓ９０３〜Ｓ９０７）の処理を実行する。【００４９】
Ｓ９０１で、プログラム１１１は、サーバ管理テーブル４００を参照し、サーバの電源状態４０５が「ＯＦＦ」であり、かつ、サーバ状態が「正常」であるかを判定する。サーバの電源状態が「ＯＮ」又はサーバ状態が「異常」の場合（Ｓ９０１；Ｎｏ）、プログラム１１１は、サーバ管理テーブル４００の別のサーバを選択し、Ｓ９０１を繰り返す。【００５０】
一方、サーバの電源状態が「ＯＦＦ」又はサーバ状態が「正常」の場合（Ｓ９０１；Ｙｅｓ）、プログラム１１１は、そのサーバを、対象ＯＳを起動可能なサーバ（起動可能サーバ）であるとして取得する（Ｓ９０３）。そして、プログラム１１１は、リソース管理テーブル３００を参照し、取得した起動可能サーバのサーバＩＤ３０３に対応するリソースＩＤ３０１を有するリソース、つまりその起動可能サーバが有するリソースを取得する。その起動可能サーバが有するリソースが複数ある場合は、全てのリソースを取得する。【００５１】
プログラム１１１は、その起動可能サーバが有する全てのリソースについて、Ｓ９０６、Ｓ９０７を実行する。プログラム１１１は、リソース評価値計算プログラム１１２に処理を引き渡す（Ｓ９０６）。そして、リソース評価値計算プログラム１１２により算出された各リソースの評価値を取得し、取得した評価値３１５によりリソース管理テーブル３００を更新する（Ｓ９０７）。【００５２】
Ｓ９０９で、リソース管理テーブル３００を参照し、評価値３１５の最も低いリソースを有する起動可能サーバを起動サーバとして決定する。【００５３】
上記処理により、プログラム１１１は、障害の発生したサーバで実行されていたＯＳを起動するサーバ（起動サーバ）として、最適なサーバを決定することができる。具体的には、プログラム１１１は、電源がＯＦＦであり、かつ正常な状態のサーバが有するリソースの評価値に基づき、累積書込量の割合に基づく評価値の最も低いサーバを、起動サーバとして決定することができる。これにより、複数のサーバのリソース（フラッシュメモリ５３）を均等に使用でき、複数のサーバが有するリソース（フラッシュメモリ５３）の寿命を平準化できる。このため、サーバの寿命及びリプレイス期間よりもリソース（フラッシュメモリ５３）の寿命が短くなってしまうことを防止することができる。【００５４】
図１０は、リソース評価値計算プログラムのフローチャートである。【００５５】
リソース評価値計算プログラム１１２は、図９のＳ９０６の処理である。この処理において、プログラム１１２は、起動可能サーバが有するリソースの情報に基づき、起動可能サーバの評価値を算出する。【００５６】
Ｓ１００１で、プログラム１１２は、リソース評価観点管理テーブル６００を参照し、対象ＯＳの情報に基づいて対象ＯＳに対応するリソースの評価観点６０３及び重み６０５を取得する。以下の説明では、対象ＯＳに対応するリソースを対象リソースという。【００５７】
Ｓ１００３で、プログラム１１２は、リソースの評価観点毎に、対象リソースの累積書込量の割合を算出する。本実施例では、リソースの評価観点として、フラッシュメモリの累積書込回数と、フラッシュメモリの累積書込サイズとがある。このため、以下では、このステップにおける評価観点毎のそれぞれのステップを具体的に説明する（点線の枠内のステップ）。【００５８】
Ｓ１００３−１で、プログラム１１２は、リソース管理テーブル３００を参照し、対象リソースの書込回数上限値に対する累積書込回数の割合である書込回数割合を算出する。【００５９】
Ｓ１００３−２で、プログラム１１２は、リソース管理テーブル３００を参照し、対象リソースの書込サイズ上限値に対する累積書込サイズの割合である書込サイズ割合を算出する。【００６０】
Ｓ１００９で、プログラム１１２は、対象リソースの評価観点毎の対象リソースの評価値を算出する。以下では、このステップにおける評価観点毎のそれぞれのステップを具体的に説明する（点線の枠内のステップ）。【００６１】
Ｓ１００９−１で、プログラム１１２は、対象リソースについて、書込回数割合に重みを掛けた値を累積書込回数評価値として算出する。【００６２】
Ｓ１００９−２で、プログラム１１２は、対象リソースについて、累積書込サイズ割合に重みを掛けた値を累積書込サイズ評価値として算出する。【００６３】
Ｓ１０１１で、プログラム１１２は、Ｓ１００９で算出した評価観点毎の評価値、つまり累積書込回数評価値及び累積書込サイズ評価値、を合計した値を、対象リソースの評価値として算出する。そして、プログラム１１２は、算出した評価値によりリソース管理テーブル３００を更新するとともに、算出した評価値をプログラム１１１に渡して処理を終了する。【００６４】
上記処理により、対象リソースの寿命の指標となる値を、評価値として算出できる。【００６５】
なお、この処理はＳ９０６のタイミングに関わらず、定期的に又は不定期に実行されていてよい。また、対象リソースの評価値は、上記の算出方法には限られない。例えば、対象リソースの残りの寿命の予測値を評価値として算出してもよい。【００６６】
なお、上記処理においては、累積書込回数と、累積書込サイズとの２つの評価観点毎の累積書込量の割合に基づく、リソースの評価値を算出したがこれに限られない。例えば、評価値は、累積書込回数又は累積書込サイズのどちらか一方の評価観点の累積書込量の割合に基づき算出されてもよいし、別の評価観点を加えてもよい。【００６７】
また、上記処理においては、対象リソースの評価値は、評価観点毎の評価値を加算することで算出していたが、どのような方法であってもよい。また、上記処理においては、評価観点毎の評価値は、その評価観点の重要度により重みを付けているが、これに限られない。【００６８】
図１１は、サーバ起動前処理のフローチャートである。【００６９】
この処理は、管理サーバ１が起動サーバで対象ＯＳが起動するために必要な設定を行う処理である。この処理は、図８のＳ８０３において、サーバ起動前処理プログラム１１４が実行する処理である。【００７０】
Ｓ１１０１で、プログラム１１４は、サーバ管理テーブル４００を参照し、起動サーバの前回起動ＯＳが対象ＯＳであるか否かを判定する。判定の結果、起動サーバの前回起動ＯＳが対象ＯＳである場合（Ｓ１１０１；Ｙｅｓ）、プログラム１１４は、処理を終了する。【００７１】
一方、判定の結果、起動サーバの前回起動ＯＳが対象ＯＳでない場合（Ｓ１１０１；Ｎｏ）、プログラム１１４は、ＯＳ管理テーブル５００を参照し、対象ＯＳに対応するフラッシュメモリ（リソース）の用途を判定する。【００７２】
判定の結果、フラッシュメモリの用途がデータディスクの場合（Ｓ１１０３；データディスク）は、当該フラッシュメモリ内の更新データがＬＵに記憶されていない。このため、プログラム１１４は、サーバ管理テーブル４００を参照し、対象ＯＳを前回起動したサーバを特定し、特定したサーバが有するフラッシュメモリ内の更新データを、起動サーバのフラッシュメモリ５３にコピーする指示を、特定したサーバ及び起動サーバに送信し（Ｓ１１０５）、Ｓ１１０９に処理を進める。なお、本実施例では、前回起動したサーバは、障害の発生したサーバである。【００７３】
一方、判定の結果、フラッシュメモリ５３の用途がキャッシュの場合（Ｓ１１０３；キャッシュ）、プログラム１１４は、フラッシュメモリ５３のデータの一部又は全部を消去する指示を起動サーバに送信し、Ｓ１１０９に処理を進める。なお、例えば、この指示を受信した起動サーバは、自身が前回起動したＯＳに関するフラッシュメモリ５３内の全てのデータを消去してもよい。また、例えば、前回起動したＯＳの起動用のデータとそのＯＳが使用するキャッシュ領域内のデータがフラッシュメモリ５３に格納されている場合、起動サーバは、そのキャッシュ領域内のデータのみを消去してもよい。【００７４】
Ｓ１１０９で、プログラム１１４は、対象ＯＳを前回起動したサーバと、起動サーバの設定値を入れ替え、処理を終了する。なお、ここで設定値とは、ＢＩＯＳ設定の値、ＷＷＮ（World  Wide  Name）などである。【００７５】
上記処理により、起動サーバで前回起動したＯＳが対象ＯＳでない場合であっても、対象ＯＳを起動する際に必要なデータを、対象ＯＳを前回起動したサーバから取得することができる。【００７６】
具体的には、対象ＯＳの更新データが、対象ＯＳを前回起動したサーバのフラッシュメモリ５３に格納されている場合であって、そのフラッシュメモリ５３がデータディスクとして使用されている場合、フラッシュメモリ５３内のデータを予め起動サーバへコピーすることで、起動サーバの電源をＯＮ時には、起動サーバをスムーズに起動させることができる。なお、データのコピーは、内蔵ＨＤＤを搭載しているサーバのコールドスタンバイ切替え方法と同様の方法で実現されてよい。【００７７】
また、起動サーバで起動されていたＯＳが、対象ＯＳ以外のＯＳである場合、このＯＳの更新データを、起動サーバから消去することができる。【００７８】
具体的には、対象ＯＳの更新データが、対象ＯＳを前回起動したサーバのフラッシュメモリ５３に格納されている場合であって、対象ＯＳを前回起動したサーバ５のフラッシュメモリ５３がキャッシュとして使用されている場合、フラッシュメモリ５３上の更新データの基となるデータはＬＵに格納されている。このため、このデータを消去することで、不要なデータをサーバに残すことを防止できる。なお、データの消去は、データ消去用のＯＳをＰＸＥ（preboot execution environment）ブートで起動するなどの方法で実現されてよい。【００７９】
また、対象ＯＳが起動サーバで起動するために必要な設定変更ができる。具体的には、起動サーバの設定変更は、従来周知のサーバ障害発生時のコールドスタンバイ切替え方法と同様の方法で実現されてよい。【００８０】
上記処理では、Ｓ１１０５で、対象ＯＳを前回起動したサーバのフラッシュメモリ５３内のデータを、起動サーバのフラッシュメモリ５３にコピーしていたが、これに限られない。例えば、対象ＯＳを前回起動していたサーバの電源がＯＦＦになった後、管理サーバ１が対象ＯＳを前回起動したサーバのフラッシュメモリ５３のバックアップをストレージ装置４へ書き込んでもよい。【００８１】
また、上記処理では、Ｓ１１０５において、起動サーバが対象ＯＳを前回起動していたサーバ５にアクセスできない場合、例えば、そのサーバ５のフラッシュメモリ５３の基となるＬＵ内のデータを取得してもよい。これは例えば、対象ＯＳを前回起動していたサーバ５のフラッシュメモリ５３が、ライトスルーキャッシュとして機能している場合に効果的である。【００８２】
図１２は、サーバ起動処理プログラムのフローチャートである。【００８３】
この処理は、管理サーバ１が起動サーバを起動させるための処理である。この処理は、図８のＳ８０５において、サーバ起動処理プログラム１１５が実行する処理である。【００８４】
Ｓ１２０１で、プログラム１１５は、起動サーバに対し、電源を「ＯＮ」する指示を送信し、処理を終了する。【００８５】
上記処理により、起動サーバが対象ＯＳを起動することができる。なお、プログラム１１５は、起動サーバの電源を「ＯＮ」する指示に、電源を「ＯＮ」にする日時の情報を加えてもよい。これにより、この指示を受信した起動サーバは、その日時に電源を「ＯＮ」することができる。例えば、プログラム１１５は、自身の負荷が少ない時間帯にこの処理を行っておき、起動サーバの起動日時を設定することができる。【００８６】
図１３は、サーバ起動後処理プログラムのフローチャートである。【００８７】
この処理は、起動サーバで対象ＯＳを起動させた後に、管理サーバ１が行う処理である。この処理は、図８のＳ８０７において、サーバ起動後処理プログラム１１６が実行する処理である。【００８８】
Ｓ１３０１で、プログラム１１６は、サーバ管理テーブル４００を参照し、起動サーバの前回起動ＯＳが対象ＯＳであるか否かを判定する。【００８９】
判定の結果、起動サーバの前回起動ＯＳが対象ＯＳでない場合（Ｓ１３０１；Ｎｏ）、プログラム１１６は、対象ＯＳが前回起動したサーバのフラッシュメモリのデータを消去する指示を、その前回起動したサーバに送信する（Ｓ１３０３）。そして、プログラム１１６は、サーバ管理テーブル４００について、対象ＯＳが前回起動したサーバのサーバＩＤ４０１に対応する前回起動ＯＳ４０３の欄を削除し（Ｓ１３０５）、Ｓ１３０７に処理を進める。【００９０】
一方、判定の結果、起動サーバの前回起動ＯＳが対象ＯＳである場合（Ｓ１３０１；Ｙｅｓ）、プログラム１１４は、サーバ管理テーブル４００の起動サーバの電源状態４０５を「ＯＮ」に変更し（Ｓ１３０７）処理をする。【００９１】
上記処理により、管理サーバ１は、ＯＳ起動処理が終了したそれぞれのサーバの情報を更新する事ができる。これにより、各サーバの実環境と、管理サーバが管理しているサーバの情報との整合性を保つことができる。【００９２】
また、上記処理により、起動サーバが、対象ＯＳを前回起動したサーバと異なる場合、不要なデータをそのサーバに残すことを防止できる。また、対象ＯＳを前回起動したサーバのフラッシュメモリのデータは最新の情報ではない不要なデータであるため、データを消去することで、データ漏洩などのセキュリティリスクを防止できる。特に、サーバは、多数のユーザが使用するため、不要なデータを消去しておく必要がある。
【実施例２】
【００９３】
実施例２について、図７、１４及び１５を用いて説明する。実施例１と同様の構成については、同じ参照番号を付して説明する。また、実施例１と同様の構成については、説明を省略する場合がある。【００９４】
本実施例においては、例えば管理者により管理サーバ１のクライアントや入力装置へ入力された、ＯＳを指定したＯＳ起動要求を受信したことにより、ＯＳ起動処理（図８参照）が開始される場合を説明する。この処理においては、ＯＳ起動要求で指定されたＯＳを起動するサーバを、起動サーバとして決定する。なお、ＯＳ起動処理の開始の契機は、ＯＳ起動要求を管理者等から受信した場合に限られない。例えば、管理サーバ１において、予めＯＳの開始（及び終了）がスケジューリングされていてもよい。この場合、スケジューリングされたＯＳの開始時刻が、ＯＳ起動要求を受信したときに相当するものとする。
図７は、ＯＳの対サーバ評価値管理テーブル７００である。【００９５】
ＯＳの対サーバ評価値管理テーブル７００は、本実施例のＯＳ引継処理において一時的に利用されるテーブルである。具体的には、このテーブル７００は、後述する起動サーバ変更処理において、対象ＯＳを前回起動したサーバの評価値を算出する際に作成される。なお、以下の説明において、最後に起動したＯＳが対象ＯＳであり、且つ電源ＯＦＦになっているサーバを、前回起動サーバという。ＯＳの対サーバ評価値管理テーブル７００は、対象ＯＳ毎のエントリを有する。対象ＯＳは、当該ＯＳを識別するＯＳＩＤ７０１と、当該ＯＳが利用するリソースを識別するリソースＩＤ７０３と、当該前回起動ＯＳのサーバＩＤ７０５と、当該リソースの種別であるリソース種別７０７と、当該リソースの書込回数上限値７０９と、当該リソースの累積書込回数７１１と、当該リソースの書込サイズ上限値７１３と、当該リソースの累積書込サイズ７１５と、当該リソースの評価値７１７とを有する。なお、本実施例では、このテーブル３００で管理されるリソースはフラッシュメモリ５３のみであるが、他のリソースが管理されてもよい。また、リソース種別７０７、書込回数上限値７０９、累積書込回数７１１、書込サイズ上限値７１３及び累積書込サイズ７１５は、リソース管理テーブル３００の同項目と同じであるため、説明を省略する。【００９６】
以下、本実施例のＯＳ起動処理を説明する。【００９７】
図１４は、起動サーバ変更処理のフローチャートである。【００９８】
本実施例において、この処理は、ＯＳ起動処理において、起動サーバ決定処理（図９）の後に行われる処理である。起動サーバ決定処理については、説明を省略する。【００９９】
Ｓ９１１で、プログラム１１１は、受信したＯＳ起動要求がサーバを指定した要求であるか否かを判定する。サーバが指定されている場合（Ｓ９１１；Ｙｅｓ）、プログラム１１１は、処理を終了する。この場合は、図９のＳ９０９で決定された起動サーバが、起動サーバである。【０１００】
一方、サーバが指定されていない場合（Ｓ９１１；Ｎｏ）、つまり、対象ＯＳの使用開始要求の場合、プログラム１１１は、Ｓ９１３に処理を進める。【０１０１】
Ｓ９１３で、プログラム１１１は、サーバ管理テーブル４００を参照し、Ｓ９０３で取得された起動可能サーバのうち、前回起動ＯＳ４０３が対象ＯＳに一致するサーバを取得する。ここで取得したサーバは、正常状態であり電源がＯＦＦのときで、かつ、対象ＯＳの前回起動サーバが実行しているＯＳと同じＯＳを実行していたサーバ（前回起動サーバ）である。【０１０２】
Ｓ９１５で、プログラム１１１は、ＯＳ管理テーブル５００を参照し、対象ＯＳの情報を取得する。【０１０３】
Ｓ９１７で、プログラム１１１は、ＯＳの対サーバ評価値計算プログラム１１３に処理を引き渡し、ＯＳの対サーバ評価値計算プログラム１１３から対象ＯＳ起動サーバの評価値を取得する。【０１０４】
Ｓ９１９で、プログラム１１１は、起動サーバの評価値がＳ９１７で取得した前回起動サーバの評価値を超えているか否かを判定する。判定の結果、起動サーバの評価値が前回起動サーバの評価値を超えている場合（Ｓ９１９；Ｙｅｓ）、前回起動サーバを起動サーバに変更し、処理を終了する。【０１０５】
上記処理により、対象ＯＳを起動するサーバとなる起動サーバに、フラッシュメモリの特性を考慮した最適なサーバを決定できる。【０１０６】
また、ＯＳを指定したＯＳ起動要求を契機にＯＳ起動処理が行われる場合には、前回起動サーバを含めた起動可能サーバの中から、最適な起動サーバを決定できる。【０１０７】
なお、ＯＳを指定したＯＳ起動要求を契機にＯＳ起動処理が行われる場合には、前回起動サーバも起動可能サーバに含めている。これは、前回起動サーバで対象ＯＳを起動することで、対象ＯＳの起動に関するデータを他のサーバのフラッシュメモリへコピーする必要がなくなることで、無駄な書込み及び消去を削減することができるからである。これにより、フラッシュメモリの劣化を防止することができる。つまり、起動サーバが前回起動サーバではない場合には、前回起動サーバのフラッシュメモリ５３内のデータを起動サーバのフラッシュメモリにコピーし、さらに、コピー後には、そのデータを前回起動サーバのフラッシュメモリから消去しなければならない。書込み及び消去が劣化の原因となるフラッシュメモリにおいては、無駄な書込み及び消去を極力減らす必要がある。このため、前回起動サーバで対象ＯＳを起動することで、無駄な書込及び消去を減らす事が可能となる。【０１０８】
図１５は、ＯＳのサーバ評価値計算処理のフローチャートである。【０１０９】
この処理は、図１４のＳ９１７において、ＯＳの対サーバ評価値計算プログラム１１３が実行する処理である。【０１１０】
Ｓ１５０１で、プログラム１１３は、ＯＳ管理テーブル５００を参照し、対象ＯＳの情報を取得する。【０１１１】
Ｓ１５０３で、プログラム１１３は、サーバ管理テーブル４００を参照し、対象ＯＳを前回起動ＯＳ４０３とするサーバ、つまり前回起動サーバのサーバＩＤ４０１を取得する。そして、プログラム１１３は、リソース管理テーブル３００を参照し、取得した前回起動サーバが有する全てのリソースを対象リソースとし、対象リソースの情報（エントリ）を取得する。【０１１２】
Ｓ１５０５で、プログラム１１３は、リソース評価観点管理テーブル６００を参照し、対象リソースの評価観点６０３及び重み６０５を取得する。【０１１３】
Ｓ１５０７で、プログラム１１３は、Ｓ１５０３で取得した対象リソースの情報によりＯＳの対サーバ評価テーブル７００のエントリを追加し、追加した対象リソースについて、サーバＩＤ７０５に前回起動サーバのＩＤを設定する。【０１１４】
Ｓ１５０９で、プログラム１１３は、対象リソースの補正後の累積書込回数及び補正後の累積書込サイズを設定することにより、ＯＳの対サーバ評価値管理テーブル７００を更新する。前回起動サーバが対象ＯＳを起動する場合、他のサーバが対象ＯＳを起動する場合に比べて、累積書込回数及び累積書込サイズの増加は少ないと予測できる。そこで、プログラム１１３は、前回起動サーバを優先させるために、累積書込回数及び累積書込サイズを減少させる補正を行う。以下では、このステップにおける評価観点毎のそれぞれのステップを具体的に説明する（点線の枠内のステップ）。【０１１５】
Ｓ１５０９−１で、プログラム１１３は、対象リソースの累積書込回数を補正する。具体的には、例えば、プログラム１１３は、ＯＳの対サーバ評価値管理テーブル７００及びＯＳ管理テーブル５００を参照し、対象ＯＳの１起動当たりの平均書込回数５０９に連続起動目標回数５１３を掛けた値を、累積書込回数３０９から引いた値を補正後の累積書込回数として算出する。そして、プログラム１１３は、補正後の累積書込回数７１１を、ＯＳの対サーバ評価値管理テーブル７００に設定する。【０１１６】
Ｓ１５０９−２で、プログラム１１３は、対象リソースの累積書込サイズを補正する。具体的には、例えば、プログラム１１３は、ＯＳの対サーバ評価値管理テーブル７００及びＯＳ管理テーブル５００を参照し、対象リソースの１起動当たりの平均書込サイズ５１１に連続起動目標回数５１３を掛けた値を、累積書込サイズ３１３から引いた値を補正後の累積書込サイズとして算出する。そして、プログラム１１３は、補正後の累積書込サイズ７１５を、ＯＳの対サーバ評価値管理テーブル７００に設定する。【０１１７】
Ｓ１５１１で、プログラム１１３は、対象リソースの補正後の累積書込回数及び補正後の累積書込サイズに基づき、Ｓ１０１１と同様にして、対象リソースの補正後の評価値を算出する。そして、プログラム１１３は、対象リソースの補正後の評価値により、ＯＳの対サーバ評価値管理テーブル７００の評価値７１７を更新し、処理を終了する。【０１１８】
上記処理により、対象ＯＳが前回起動サーバで起動された場合に、リソース（フラッシュメモリ）の使用を抑えられることを考慮し、リソースの評価値を算出できる。これにより、対象ＯＳが前回起動サーバで動作する場合を優遇することで、無駄なリソースの使用を防止できる。【０１１９】
具体的には、前回起動サーバについては、リソース評価値計算プログラムにおいて、補正後の累積書込回数及び補正後の累積書込サイズによって対象リソースの評価値が算出されることとなる。補正後の累積書込回数は、対象ＯＳの１起動当たりの平均書込回数に連続起動目標回数５１３（図５）を掛けた値を、実際の累積書込回数から引いた値である。補正後の累積書込サイズについても同様である。上述の通り、前回起動サーバについては、リソース評価値計算プログラムにおいて、補正後の累積書込回数及び累積書込サイズに基づいて補正後の評価値が算出されるため、対象リソースの評価値が実際よりも低い値に算出され、前回起動サーバを起動サーバに優先的に選択できる。
なお、補正後の累積書込回数及び累積書込サイズの算出方法は、フラッシュメモリ５３への書込回数及び書込サイズが多いとされる、ＯＳを最初に起動したときの１起動当たりの書込回数及び書込サイズが考慮される方法であれば、上述の方法に限られない。例えば、あるＯＳを実行した後、対象ＯＳを起動した場合の、前回起動サーバの１起動当たり書込回数及び書込サイズを前回起動サーバから取得し、累積書込回数及び累積書込サイズからこれらの値を引いた値を、補正後の累積書込回数及び累積書込サイズとしてもよい。
さらに、上記処理に代えて、前回起動サーバを優先させつつ、優先させすぎない処理を行ってもよい。これは、例えば、管理サーバ１が、前回起動サーバにおいて、対象ＯＳが連続して起動した回数をカウントしており、連続起動目標回数以上になると優先しないような処理である。具体的には、例えば、対象ＯＳの１起動当たりの平均書込回数×（連続起動目標回数−実際に連続して起動した回数）を補正後の累積書込回数としてもよい。なお、補正後の累積書込サイズについても同様である。【０１２０】
起動サーバの判定の際に、補正後の累積書込回数評価値及び累積書込サイズ評価値を使用することで、対象ＯＳが同じサーバ（前回起動サーバ）で連続して起動することを許容しつつ、計算機システム内の複数のサーバにおけるリソースの累積書込量を平準化できる。【０１２１】
起動サーバ変更処理の後、実施例１と同様に、サーバ起動前処理、サーバ起動処理及びサーバ起動後処理が行われる（図８参照）。【０１２２】
なお、本実施例では、サーバ起動後処理において（図１３参照）、Ｓ１５０７の後、サーバ起動後処理プログラム１１６は、ＯＳの対サーバ評価値管理テーブル７００を更新し、処理を終了する。具体的には、プログラム１１６は、ＯＳの対サーバ評価値管理テーブル７００の起動サーバのエントリを削除する。
【実施例３】
【０１２３】
実施例３を説明する。実施例１及び２と同様の構成については、同じ参照番号を付して説明する。また、実施例１及び２と同様の構成については、説明を省略する場合がある。【０１２４】
実施例１及び２では、物理サーバであるサーバ５の間でのＯＳ起動処理を説明したが、仮想サーバ間でＯＳ起動処理が行われてもよい。本実施例では、仮想サーバ間でＯＳ起動処理が行われる場合を説明する。【０１２５】
本実施例に係る計算機システムにおいては、サーバ５のメモリに格納されるプログラムに、ハイパーバイザが含まれる。この場合、ＣＰＵ５４がハイパーバイザを実行することにより、１つ以上の仮想サーバが提供される。従って、この１つ以上の仮想サーバが、サーバ５（物理サーバ）とフラッシュメモリ５３を共有する。【０１２６】
また、本実施例では、各サーバ５で稼働する１つ以上の仮想サーバが、それぞれ異なるＯＳを実行する場合がある。このため、各サーバ５のフラッシュメモリには、そのサーバ５で稼働する１つ以上の仮想サーバ上で起動するＯＳの更新データが格納される場合がある。また、フラッシュメモリには、ハイパーバイザの起動データ（及び更新データ）も格納される場合がある。なお、サーバ管理テーブル４００において、前回起動ＯＳ４０３には、サーバ５で起動する１つ以上の仮想サーバのＩＤが含まれ、さらに、それら仮想サーバのＩＤに複数のＯＳのＩＤが対応づけられることとなる。また、ＯＳ管理テーブル５００には、仮想サーバ上で起動するＯＳもエントリされることとなる。【０１２７】
以下、本実施例のＯＳ起動処理を説明する。本実施例のＯＳ起動処理（図８参照）においては、ＯＳに仮想サーバ上で起動するＯＳが含まれる以外は実施例１及び２と同様である。以下、実施例１及び２と異なる部分のみ補足的に説明する。【０１２８】
本実施例の起動サーバ決定処理において（図９参照）、Ｓ９０１で、切替え先・起動先決定プログラム１１１は、サーバ管理テーブル４００を参照し、サーバの電源状態４０５が「ＯＦＦ」かつサーバ状態が「正常」の場合に加えて、サーバの電源状態４０５が「ＯＮ」であり、かつサーバ状態が「正常」であり、かつ対象ＯＳが仮想サーバ上で起動するＯＳである場合に（Ｓ９０１；Ｙｅｓ）、Ｓ９０３〜Ｓ９０７を行う。【０１２９】
一方、サーバ５の状態が「異常」であるか、又は対象ＯＳが仮想サーバ上で起動するＯＳでない場合（Ｓ９０１；Ｎｏ）に、プログラム１１１は、サーバ管理テーブル４００の別のサーバを選択し、Ｓ９０１を繰り返す。【０１３０】
本実施例のサーバ起動前処理では（図１３参照）、サーバ起動前処理プログラム１１４は、Ｓ１３０５における前回起動サーバのフラッシュメモリのデータのコピーについては、当該仮想サーバの更新データのみとする。【０１３１】
また、サーバ起動前処理プログラム１１４は、Ｓ１３０７における前回起動サーバのフラッシュメモリのデータの消去についても、当該仮想サーバの更新データのみを消去するものとする。【０１３２】
さらに、サーバ起動前処理プログラム１１４は、Ｓ１３０９において、例えば、仮想サーバのマイグレーション時に必要な設定など、ハイパーバイザの設定値を変更する場合もあってよい。【０１３３】
本実施例のサーバ起動処理では（図１４参照）、サーバ起動処理プログラム１１５は、Ｓ１４０１において、起動サーバに対する電源を「ＯＮ」の要求だけでなく、起動サーバとしての仮想サーバに対し、ＯＳ起動要求を送信してもよい。【０１３４】
なお、上記処理は、仮想サーバ上で対象ＯＳを起動する場合だけでなく、対象ＯＳを実行している仮想サーバを実行しているハイパーバイザを、別の物理サーバで実行されているハイパーバイザに切替える場合にも適用できる。この場合、管理サーバ１は、ハイパーバイザ間（つまり、物理サーバ間）で仮想サーバの起動データや更新データをマイグレーションさせる指示をこれらの物理サーバに送信することとなる。このため、対象ＯＳを実行するハイパーバイザを決定するために、物理サーバのフラッシュメモリの累積書込回数及び累積書込サイズ等を考慮することとなる。【０１３５】
以上、幾つかの実施例を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。【０１３６】
また、上記実施例では、フラッシュメモリを用いる不揮発性メモリを対象として説明しているが、フラッシュメモリに代えて、他の不揮発性メモリ、例えばＦｅＲＡＭ（Ferroelectric  Random  Access  Memory）、ＭＲＡＭ（Magnetoresistive  Random  Access  Memory）、相変化メモリ（Ovonic  Unified  Memory）、ＲＲＡＭ（登録商標、Resistance  RAM）を用いる不揮発性メモリデバイスに適用してもよい。
なお、上記実施例においては、ＯＳ起動処理として、ＯＳの起動サーバを決定し起動サーバでＯＳを起動させていたが、起動対象はコンピュータプログラムであれば、ＯＳに限られない。
【符号の説明】
【０１３７】
１…管理サーバ  ２…ネットワークスイッチ  ３…ファイバチャネルスイッチ  ４…ストレージ装置  ５…サーバ  ５３…フラッシュメモリ
【図１】
2016027381.tif 000003
【図２】
2016027381.tif 000004
【図３】
2016027381.tif 000005
【図４】
2016027381.tif 000006
【図５】
2016027381.tif 000007
【図６】
2016027381.tif 000008
【図７】
2016027381.tif 000009
【図８】
2016027381.tif 000010
【図９】
2016027381.tif 000011
【図１０】
2016027381.tif 000012
【図１１】
2016027381.tif 000013
【図１２】
2016027381.tif 000014
【図１３】
2016027381.tif 000015
【図１４】
2016027381.tif 000016
【図１５】
2016027381.tif 000017
【国際調査報告】
2016027381.tif 000018
2016027381.tif 000019
2016027381.tif 000020
2016027381.tif 000021