(57)【特許請求の範囲】
【請求項１】
複数の計算機と、第１ネットワークを介して前記複数の計算機に接続される第１記憶装置と、を備える計算機システムであって、
前記複数の計算機は、第１計算機、第２計算機及び第３計算機を含み、
前記第１計算機、第２計算機及び第３計算機の各計算機は、前記第１ネットワークに接続されるインターフェースと、当該インターフェースに接続されるプロセッサと、当該プロセッサに接続されるメモリと、を備え、
前記第１記憶装置は、前記複数の計算機から書き込まれたデータを格納する複数の記憶領域と、前記複数の記憶領域へのデータの書き込み及び読み出しを制御する第１コントローラと、を備え、
前記計算機システムは、前記複数の計算機の負荷の値を含む負荷情報、及び、前記計算機システムに設定されたモードを示す設定情報を保持し、
前記第１計算機、第２計算機及び第３計算機の各計算機は、
前記設定情報が第１モードを示し、かつ、前記各計算機の負荷が前記第１計算機、第２計算機及び第３計算機における他の二つの計算機の負荷より低い場合、前記各計算機の前記プロセッサ、前記メモリ及び前記インターフェースに供給される電力の少なくとも一部を遮断し、
前記設定情報が第２モードを示し、かつ、前記各計算機の負荷が前記第１計算機、第２計算機及び第３計算機における他の二つの計算機の負荷の少なくとも一方より低い場合、前記各計算機の前記プロセッサ、前記メモリ及び前記インターフェースに供給される電力の少なくとも一部を遮断し、
前記各計算機の前記プロセッサ、前記メモリ及び前記インターフェースに供給される電力の少なくとも一部を遮断する前に、前記第１計算機、第２計算機及び第３計算機における他の一つの計算機に引き継ぎ要求を送信し、
前記他の一つの計算機は、前記引き継ぎ要求を受信した後、前記第１ネットワークを介して、前記第１記憶装置における前記引き継ぎ要求を送信した計算機のデータにアクセスし、
前記計算機システムは、さらに、第２ネットワークを介して前記複数の計算機と接続される第４計算機と、第３ネットワークを介して前記第４計算機に接続される第２記憶装置と、を備え、
前記第４計算機は、前記第３ネットワークに接続されるインターフェースと、当該インターフェースに接続されるプロセッサと、当該プロセッサに接続されるメモリと、を備え、
前記第２記憶装置は、前記第４計算機から書き込まれたデータを格納する第１記憶領域と、前記第１記憶領域へのデータの書き込み及び読み出しを制御する第２コントローラと、を備え、
前記第４計算機は、
前記第１計算機から前記第１記憶領域内の第１データへのアクセス要求を受信すると、前記第３ネットワークを介して前記第１記憶領域内の前記第１データにアクセスし、
前記第１データを複製する要求を前記第１計算機に送信し、
前記第１データを複製する要求を受信した前記第１計算機は、前記第１データの複製を、前記第１計算機に割り当てられている前記第１記憶装置の記憶領域に格納することを特徴とする計算機システム。
【請求項２】
複数の計算機と、第１ネットワークを介して前記複数の計算機に接続される第１記憶装置と、を備える計算機システムであって、
前記複数の計算機は、第１計算機、第２計算機及び第３計算機を含み、
前記第１計算機、第２計算機及び第３計算機の各計算機は、前記第１ネットワークに接続されるインターフェースと、当該インターフェースに接続されるプロセッサと、当該プロセッサに接続されるメモリと、を備え、
前記第１記憶装置は、前記複数の計算機から書き込まれたデータを格納する複数の記憶領域と、前記複数の記憶領域へのデータの書き込み及び読み出しを制御する第１コントローラと、を備え、
前記計算機システムは、前記複数の計算機の負荷の値を含む負荷情報、及び、前記計算機システムに設定されたモードを示す設定情報を保持し、
前記第１計算機、第２計算機及び第３計算機の各計算機は、
前記設定情報が第１モードを示し、かつ、前記各計算機の負荷が前記第１計算機、第２計算機及び第３計算機における他の二つの計算機の負荷より低い場合、前記各計算機の前記プロセッサ、前記メモリ及び前記インターフェースに供給される電力の少なくとも一部を遮断し、
前記設定情報が第２モードを示し、かつ、前記各計算機の負荷が前記第１計算機、第２計算機及び第３計算機における他の二つの計算機の負荷の少なくとも一方より低い場合、前記各計算機の前記プロセッサ、前記メモリ及び前記インターフェースに供給される電力の少なくとも一部を遮断し、
前記各計算機の前記プロセッサ、前記メモリ及び前記インターフェースに供給される電力の少なくとも一部を遮断する前に、前記第１計算機、第２計算機及び第３計算機における他の一つの計算機に引き継ぎ要求を送信し、
前記他の一つの計算機は、前記引き継ぎ要求を受信した後、前記第１ネットワークを介して、前記第１記憶装置における前記引き継ぎ要求を送信した計算機のデータにアクセスし、
前記前記計算機システムは、
前記負荷情報に基づいて算出された前記複数の計算機の負荷の統計値が第１範囲にある場合、前記第１モードを示す前記設定情報を保持し、
前記統計値が第２範囲にある場合、前記第２モードを示す前記設定情報を保持することを特徴とする計算機システム。
【請求項３】
前記複数の計算機の負荷の統計値は、前記複数の計算機の負荷の合計値又は前記複数の計算機の負荷の平均値であることを特徴とする請求項２に記載の計算機システム。
【請求項４】
複数の計算機と、第１ネットワークを介して前記複数の計算機に接続される第１記憶装置と、を備える計算機システムの制御方法であって、
前記複数の計算機は、第１計算機、第２計算機及び第３計算機を含み、
前記第１計算機、第２計算機及び第３計算機の各計算機は、前記第１ネットワークに接続されるインターフェースと、当該インターフェースに接続されるプロセッサと、当該プロセッサに接続されるメモリと、を備え、
前記第１記憶装置は、前記複数の計算機から書き込まれたデータを格納する複数の記憶領域と、前記複数の記憶領域へのデータの書き込み及び読み出しを制御する第１コントローラと、を備え、
前記計算機システムは、前記複数の計算機の負荷の値を含む負荷情報、及び、前記計算機システムに設定されたモードを示す設定情報を保持し、
前記方法は、
前記第１計算機、第２計算機及び第３計算機の各計算機が、前記第１ネットワークを介して前記第１記憶装置内のデータにアクセスする手順と、
前記設定情報が第１モードを示し、かつ、前記各計算機の負荷が前記第１計算機、第２計算機及び第３計算機における他の二つの計算機の負荷より低い場合、前記各計算機の前記プロセッサ、前記メモリ及び前記インターフェースに供給される電力の少なくとも一部を遮断する手順と、
前記設定情報が第２モードを示し、かつ、前記各計算機の負荷が前記第１計算機、第２計算機及び第３計算機における他の二つの計算機の負荷の少なくとも一方より低い場合、前記各計算機の前記プロセッサ、前記メモリ及び前記インターフェースに供給される電力の少なくとも一部を遮断する手順と、
前記各計算機の前記プロセッサ、前記メモリ及び前記インターフェースに供給される電力の少なくとも一部を遮断する前に、前記各計算機から前記第１計算機、第２計算機及び第３計算機における他の一つの計算機に引き継ぎ要求を送信する手順と、
前記他の一つの計算機が、前記引き継ぎ要求を受信した後、前記第１ネットワークを介して、前記第１記憶装置における前記引き継ぎ要求を送信した計算機のデータにアクセスする手順と、を含み
前記計算機システムは、さらに、第２ネットワークを介して前記複数の計算機と接続される第４計算機と、第３ネットワークを介して前記第４計算機に接続される第２記憶装置と、を備え、
前記第４計算機は、前記第３ネットワークに接続されるインターフェースと、当該インターフェースに接続されるプロセッサと、当該プロセッサに接続されるメモリと、を備え、
前記第２記憶装置は、前記第４計算機から書き込まれたデータを格納する第１記憶領域と、前記第１記憶領域へのデータの書き込み及び読み出しを制御する第２コントローラと、を備え、
前記方法は、さらに、
前記第４計算機が、前記第１計算機から前記第１記憶領域内の第１データへのアクセス要求を受信すると、前記第３ネットワークを介して前記第１記憶領域内の前記第１データにアクセスする手順と、
前記第４計算機が、前記第１データを複製する要求を前記第１計算機に送信する手順と、
前記第１データを複製する要求を受信した前記第１計算機が、前記第１データの複製を、前記第１計算機に割り当てられている前記第１記憶装置の記憶領域に格納する手順と、を含むことを特徴とする方法。
【請求項５】
複数の計算機と、第１ネットワークを介して前記複数の計算機に接続される第１記憶装置と、を備える計算機システムの制御方法であって、
前記複数の計算機は、第１計算機、第２計算機及び第３計算機を含み、
前記第１計算機、第２計算機及び第３計算機の各計算機は、前記第１ネットワークに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、
前記第１記憶装置は、前記複数の計算機から書き込まれたデータを格納する複数の記憶領域と、前記複数の記憶領域へのデータの書き込み及び読み出しを制御する第１コントローラと、を備え、
前記計算機システムは、前記複数の計算機の負荷の値を含む負荷情報、及び、前記計算機システムに設定されたモードを示す設定情報を保持し、
前記方法は、
前記第１計算機、第２計算機及び第３計算機の各計算機が、前記第１ネットワークを介して前記第１記憶装置内のデータにアクセスする手順と、
前記設定情報が第１モードを示し、かつ、前記各計算機の負荷が前記第１計算機、第２計算機及び第３計算機における他の二つの計算機の負荷より低い場合、前記各計算機の前記プロセッサ、前記メモリ及び前記インターフェースに供給される電力の少なくとも一部を遮断する手順と、
前記設定情報が第２モードを示し、かつ、前記各計算機の負荷が前記第１計算機、第２計算機及び第３計算機における他の二つの計算機の負荷の少なくとも一方より低い場合、前記各計算機の前記プロセッサ、前記メモリ及び前記インターフェースに供給される電力の少なくとも一部を遮断する手順と、
前記各計算機の前記プロセッサ、前記メモリ及び前記インターフェースに供給される電力の少なくとも一部を遮断する前に、前記各計算機から前記第１計算機、第２計算機及び第３計算機における他の一つの計算機に引き継ぎ要求を送信する手順と、
前記他の一つの計算機が、前記引き継ぎ要求を受信した後、前記第１ネットワークを介して、前記第１記憶装置における前記引き継ぎ要求を送信した計算機のデータにアクセスする手順と、を含み
前記計算機システムは、
前記負荷情報に基づいて算出された前記複数の計算機の負荷の統計値が第１範囲にある場合、前記第１モードを示す前記設定情報を保持し、
前記統計値が第２範囲にある場合、前記第２モードを示す前記設定情報を保持することを特徴とする方法。
【請求項６】
前記複数の計算機の負荷の統計値は、前記複数の計算機の負荷の合計値又は前記複数の計算機の負荷の平均値であることを特徴とする請求項５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書で開示される技術は、ストレージ装置の管理方法に関し、特に、いわゆるＮＡＳにおける消費電力の削減方法に関する。
【背景技術】
【０００２】
ネットワークに接続されたストレージシステムを、そのネットワークに接続された複数のクライアント計算機の共有ディスクとして使用する、ネットワーク接続ストレージ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ、ＮＡＳ）が知られている。ＮＡＳは、ネットワークインターフェース等を含むサーバと、データを格納するディスク装置とによって構成される。ＮＡＳを構成するサーバは、ＮＡＳサーバ又はＮＡＳノードと呼ばれる（以下、単にノードと記載する）。
【０００３】
ＮＡＳがファイル共有サービスを提供するために消費する電力量は、増加する傾向にある。これは、近年の計算機の高性能化、及び、サービス継続性確保のためのノードの冗長化の結果である。これに対し、冗長化による消費電力の増加を抑制する技術として、いわゆるコールドスタンバイ技術が知られている（例えば、特許文献１参照）。コールドスタンバイによれば、待機系のノードが停止するため、導入されるノードの台数に対する消費電力が抑制される。
【０００４】
一方、計算機の電力を制御するための技術が知られている。例えば、Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ（ＡＣＰＩ）は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）がＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）と連携して計算機の各パーツの電力を管理するために策定された規格である（非特許文献１参照）。ＡＣＰＩによれば、ＯＳが各機器の電力制御機能を細かく設定及び管理することができる。
【特許文献１】特開２００５−２６７１１１号公報
【非特許文献１】Hewlett-Packard Corporation、他４名、“Advanced Configuration and Power Interface Specification Revision 3.0b”、［online］、２００６年１０月１０日、［平成１９年７月５日検索］、インターネット＜ＵＲＬ：http://www.acpi.info/DOWNLOADS/ACPIspec30b.pdf＞
【発明の開示】
【発明が解決しようとする課題】
【０００５】
コールドスタンバイ技術によれば、障害発生時のサービスの引き継ぎに時間がかかるため、システムの信頼性が低下する。これは、障害発生時に、停止していた待機ノードを起動する必要があるためである。また、サービスを引き継ぐためには、ＮＡＳがクラスタ化されている必要がある。すなわち、クラスタを構成していないノードの組において消費電力を削減することはできなかった。
【課題を解決するための手段】
【０００６】
本願で開示する代表的な発明は、複数の計算機と、第１ネットワークを介して前記複数の計算機に接続される第１記憶装置と、を備える計算機システムである。前記複数の計算機は、第１計算機、第２計算機及び第３計算機を含む。前記第１計算機、第２計算機及び第３計算機の各計算機は、前記第１ネットワークに接続されるインターフェースと、当該インターフェースに接続されるプロセッサと、当該プロセッサに接続されるメモリと、を備える。前記第１記憶装置は、前記複数の計算機から書き込まれたデータを格納する複数の記憶領域と、前記複数の記憶領域へのデータの書き込み及び読み出しを制御する第１コントローラと、を備える。前記計算機システムは、前記複数の計算機の負荷の値を含む負荷情報、及び、前記計算機システムに設定されたモードを示す設定情報を保持する。前記第１計算機、第２計算機及び第３計算機の各計算機は、前記設定情報が第１モードを示し、かつ、前記各計算機の負荷が前記第１計算機、第２計算機及び第３計算機における他の二つの計算機の負荷より低い場合、前記各計算機の前記プロセッサ、前記メモリ及び前記インターフェースに供給される電力の少なくとも一部を遮断し、前記設定情報が第２モードを示し、かつ、前記各計算機の負荷が前記第１計算機、第２計算機及び第３計算機における他の二つの計算機の負荷の少なくとも一方より低い場合、前記各計算機の前記プロセッサ、前記メモリ及び前記インターフェースに供給される電力の少なくとも一部を遮断し、前記各計算機の前記プロセッサ、前記メモリ及び前記インターフェースに供給される電力の少なくとも一部を遮断する前に、前記第１計算機、第２計算機及び第３計算機における他の一つの計算機に引き継ぎ要求を送信する。前記他の一つの計算機は、前記引き継ぎ要求を受信した後、前記第１ネットワークを介して、前記第１記憶装置における前記引き継ぎ要求を送信した計算機のデータにアクセスする。前記計算機システムは、さらに、第２ネットワークを介して前記複数の計算機と接続される第４計算機と、第３ネットワークを介して前記第４計算機に接続される第２記憶装置と、を備える。前記第４計算機は、前記第３ネットワークに接続されるインターフェースと、当該インターフェースに接続されるプロセッサと、当該プロセッサに接続されるメモリと、を備える。前記第２記憶装置は、前記第４計算機から書き込まれたデータを格納する第１記憶領域と、前記第１記憶領域へのデータの書き込み及び読み出しを制御する第２コントローラと、を備える。前記第４計算機は、前記第１計算機から前記第１記憶領域内の第１データへのアクセス要求を受信すると、前記第３ネットワークを介して前記第１記憶領域内の前記第１データにアクセスし、前記第１データを複製する要求を前記第１計算機に送信する。前記第１データを複製する要求を受信した前記第１計算機は、前記第１データの複製を、前記第１計算機に割り当てられている前記第１記憶装置の記憶領域に格納する。
【発明の効果】
【０００７】
本発明の一実施形態によれば、ＮＡＳを構成するノードの消費電力を削減することによって、ランニングコストを削減することができる。このとき、システムの信頼性と消費電力削減量とを任意に調整することができる。所定の場合には、任意のノードの消費電力を削減することができる。
【発明を実施するための最良の形態】
【０００８】
以下、本発明の実施形態を、図面を参照して説明する。
【０００９】
最初に、本発明の第１の実施形態について説明する。
【００１０】
図１は、本発明の第１の実施形態の計算機システムのハードウェア構成を示すブロック図である。
【００１１】
本実施形態の計算機システムは、一つ以上のＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）クライアント１６０、及び、ＮＡＳクライアント１６０とＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）１８０を介して接続されたディスクサブシステム１００を備える。
【００１２】
ディスクサブシステム１００は、ノード１１０Ａ〜１１０Ｃ及びディスク装置１２０を備えるＮＡＳである。ノード１１０Ａ〜１１０Ｃ及びディスク装置１２０は、ストレージネットワーク１３０を介して相互に接続される。
【００１３】
なお、一つのディスクサブシステム１００が単一の筐体に含まれる必要はない。例えば、ノード１１０Ａ〜１１０Ｃ及びディスク装置１２０が、それぞれ独立した筐体を有し、それらをストレージネットワーク１３０によって相互に接続することによってディスクサブシステム１００が構成されてもよい。
【００１４】
ノード１１０Ａ〜１１０Ｃは、ディスク装置１２０をＬＡＮ１８０に接続するための計算機（いわゆるＮＡＳサーバ又はＮＡＳノード）である。ノード１１０Ａ等の構成については、後で詳細に説明する（図２参照）。図１のノード１１０Ａ〜１１０Ｃに表示された「ＮＡＳ−０１」〜「ＮＡＳ−０３」は、それぞれ、ノード１１０Ａ〜１１０Ｃの識別子である。
【００１５】
ディスク装置１２０は、ＮＡＳクライアント１６０からの書き込み要求を受信したノード１１０Ａ〜１１０Ｃによって書き込まれたデータを格納する装置である。本実施形態のディスク装置１２０は、ディスクコントローラ１２１及び一つ以上のディスクドライブ１２８を備える。
【００１６】
ディスクドライブ１２８は、データの記憶領域を提供する記憶装置である。ディスクドライブ１２８は、例えば、ハードディスクドライブ（ＨＤＤ）であってもよいが、他の種類の装置（例えば、フラッシュメモリ等の半導体記憶装置）であってもよい。ディスク装置１２０は、複数のディスクドライブ１２８を備えてもよい。複数のディスクドライブ１２８は、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）を構成してもよい。ＮＡＳクライアント１６０によって書き込まれたデータは、最終的に、ディスクドライブ１２８が提供する物理的な記憶領域に格納される。
【００１７】
論理ボリューム（ＬＵ）１２９は、ノード１１０Ａ〜１１０Ｃによって論理的なディスクドライブとして扱われる領域である。ＬＵ１２９の論理的な記憶領域は、ディスクドライブ１２８の物理的な記憶領域と対応付けられる。一つのＬＵ１２９の論理的な記憶領域は、一つのディスクドライブ１２８の物理的な記憶領域と対応付けられてもよいし、複数のディスクドライブ１２８の物理的な記憶領域と対応付けられてもよい。
【００１８】
ディスクコントローラ１２１は、ディスク装置１２０を制御する制御装置である。本実施形態のディスクコントローラ１２１は、相互に接続されたインターフェース（Ｉ／Ｆ）１２２、ＣＰＵ１２３、Ｉ／Ｆ１２４及びメモリ１２５を備える。
【００１９】
Ｉ／Ｆ１２２は、ディスクコントローラ１２１をストレージネットワーク１３０に接続するインターフェースである。ディスクコントローラ１２１は、Ｉ／Ｆ１２２を介して、ストレージネットワーク１３０に接続されたノード１１０Ａ等と通信する。
【００２０】
ＣＰＵ１２３は、メモリ１２５に格納されたプログラムを実行するプロセッサである。
【００２１】
Ｉ／Ｆ１２４は、ディスクコントローラ１２１をディスクドライブ１２８に接続するインターフェースである。ディスクコントローラ１２１は、Ｉ／Ｆ１２４を介して、ディスクドライブ１２８へのデータの書き込み及び読み出しを実行する。
【００２２】
メモリ１２５は、例えば半導体メモリであり、ＣＰＵ１２３によって実行されるプログラム及びＣＰＵ１２３によって参照されるデータを格納する。本実施形態のメモリ１２５は、少なくとも、Ｉ／Ｏ処理部１２７を格納する。Ｉ／Ｏ処理部１２７は、ディスクドライブ１２８へのデータの書き込み及び読み出しを制御するプログラムモジュールである。
【００２３】
ディスクコントローラ１２１は、さらに、ディスクドライブ１２８に書き込まれるデータ及びディスクドライブ１２８から読み出されるデータを一時的に格納するキャッシュメモリ（図示省略）を備えてもよい。
【００２４】
なお、図１には、ディスク装置１２０が複数のディスクドライブ１２８を備える例を示すが、ディスク装置１２０は、一つのディスクドライブ１２８のみを備えてもよい。あるいは、ディスク装置１２０が、ストレージネットワーク１３０に接続可能なインターフェースを備える一つのディスクドライブ１２８であってもよい。
【００２５】
ストレージネットワーク１３０は、ノード１１０Ａ〜１１０Ｃ及びディスク装置１２０の間の通信を媒介するネットワークである。ストレージネットワーク１３０は、任意の種類のネットワークであってよい。例えば、ストレージネットワーク１３０は、ＰＣＩバス又はＦＣ（ファイバーチャネル）ネットワークであってもよい。
【００２６】
なお、以下の説明において、ノード１１０Ａからノード１１０Ｃまでを特に区別する必要がない場合、これらを総称してノード１１０と記載する。
【００２７】
図１には、三つのノード１１０及び一つのディスク装置１２０を備える計算機システムを示す。しかし、三つ以上の任意の数のノード１１０及び一つ以上の任意の数のディスク装置１２０を備える計算機システムによって本実施形態を実現することができる。
【００２８】
ＮＡＳクライアント１６０は、各種アプリケーションを実行する計算機である。本実施形態のＮＡＳクライアント１６０は、ＣＰＵ１６１、Ｉ／Ｆ１６２及びメモリ１６３を備える。
【００２９】
ＣＰＵ１６１は、メモリ１６３に格納されたプログラムを実行するプロセッサである。
【００３０】
Ｉ／Ｆ１６２は、ＮＡＳクライアント１６０をＬＡＮ１８０に接続するインターフェースである。ＮＡＳクライアント１６０は、ＬＡＮ１８０に接続された装置（例えばノード１１０）と、Ｉ／Ｆ１６２を介して通信する。
【００３１】
メモリ１６３は、例えば半導体メモリであり、ＣＰＵ１６１によって実行されるプログラム及びＣＰＵ１６１によって参照されるデータを格納する。本実施形態のメモリ１６３は、少なくとも、Ｉ／Ｏ要求処理部１６４を格納する。
【００３２】
Ｉ／Ｏ要求処理部１６４は、ＮＡＳクライアント１６０で稼動するオペレーティングシステム（ＯＳ）（図示省略）の一部として提供される。ＮＡＳクライアント１６０のＯＳは、任意のもの（例えば、Ｗｉｎｄｏｗｓ（登録商標）又はＳｏｌａｒｉｓ（登録商標））であってよい。
【００３３】
メモリ１６３は、さらに、ＯＳ上で実行される各種のアプリケーションプログラム（図示省略）を格納する。アプリケーションプログラムが発行した書き込み要求及び読み出し要求は、Ｉ／Ｏ要求処理部１６４によって処理される。
【００３４】
本実施形態の計算機システムは、任意の数のＮＡＳクライアント１６０を備えてもよい。また、ＬＡＮ１８０は、Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＷＡＮ）によって置き換えられてもよいし、ＬＡＮとＷＡＮが混在するネットワークによって置き換えられてもよい。
【００３５】
図２は、本発明の第１の実施形態のノード１１０のハードウェア構成を示すブロック図である。
【００３６】
図２には、例として、ノード１１０Ａのハードウェア構成を示す。ノード１１０Ｂ及び１１０Ｃのハードウェア構成は、ノード１１０Ａのそれと同様であるため、図示及び説明を省略する。
【００３７】
ノード１１０は、相互に接続されたＩ／Ｆ２０１、ＣＰＵ２０２、Ｉ／Ｆ２０３及びメモリ２０４を備える。
【００３８】
Ｉ／Ｆ２０１は、ノード１１０をＬＡＮ１８０に接続するインターフェースである。ノード１１０は、ＬＡＮ１８０に接続された装置（例えばＮＡＳクライアント１６０）と、Ｉ／Ｆ２０１を介して通信する。Ｉ／Ｆ２０１は、例えば、いわゆるネットワークインターフェースカード（ＮＩＣ）である。
【００３９】
ＣＰＵ２０２は、メモリ２０４に格納されたプログラムを実行するプロセッサである。したがって、以下の説明においてメモリ２０４に格納されたプログラム（例えば、後述する省電力制御プログラム２１０）が実行する処理は、実際には、ＣＰＵ２０２によって実行される。
【００４０】
Ｉ／Ｆ２０３は、ノード１１０をストレージネットワーク１３０に接続するインターフェースである。ノード１１０は、Ｉ／Ｆ２０３を介してディスク装置１２０と通信する。Ｉ／Ｆ２０３は、例えば、いわゆるホストバスアダプタ（ＨＢＡ）である。
【００４１】
メモリ２０４は、例えば半導体メモリであり、ＣＰＵ２０２によって実行されるプログラム及びＣＰＵ２０２によって参照されるデータ等を格納する。本実施形態のメモリ２０４は、ＣＰＵ２０２によって実行されるプログラムモジュールとして、少なくとも、省電力制御プログラム２１０、ファイル共有プログラム２２０、ファイルシステム処理プログラム２３０及びデバイスドライバ２４０を格納する。ファイルシステム処理プログラム２３０及びデバイスドライバ２４０は、ノード１１０において稼動するＯＳ（図示省略）の一部として提供される。
【００４２】
省電力制御プログラム２１０は、ディスクサブシステム１００の消費電力を管理するため、より具体的には、消費電力を削減するためにＣＰＵ２０２によって実行されるプログラムモジュールである。省電力制御プログラム２１０は、ＬＵパス設定プログラム２１１、監視プログラム２１２及びスケジューリングプログラム２１３の各プログラムモジュールを含む。省電力制御プログラム２１０は、さらに、制御情報２１４を管理する。制御情報２１４は、省電力制御プログラム２１０の各プログラムモジュールによって参照される種々の情報を含む。制御情報２１４は、後述するように、例えばテーブル形式のデータとしてメモリ２０４内に格納される。
【００４３】
省電力制御プログラム２１０の各プログラムモジュールが実行する処理、及び、制御情報２１４については、後で詳細に説明する。
【００４４】
ファイル共有プログラム２２０は、ＬＡＮ１８０に接続されるＮＡＳクライアント１６０にファイル共有プロトコルを提供することによって、ＮＡＳクライアント１６０間のファイル共有機能を提供する。ファイル共有プロトコルは、例えば、ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）又はＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）であってもよい。ファイル共有プログラム２２０は、ＮＡＳクライアント１６０からファイル単位のＩ／Ｏ（すなわち読み出し又は書き込み）要求を受けると、その要求に対応したファイル単位のＩ／Ｏをファイルシステム（後述）に対して実行する。
【００４５】
ファイルシステム処理プログラム２３０は、上位層に対して階層構造化された論理ビュー（ディレクトリ、ファイル等）を提供するとともに、これらのビューを物理的なデータ構造（ブロックデータ、ブロックアドレス）に変換して下位層に対するＩ／Ｏ処理を実行する。
【００４６】
デバイスドライバ２４０は、ファイルシステム処理プログラム２３０から要求されたブロックＩ／Ｏを実行する。
【００４７】
次に、本発明の第１の実施形態の概要を、図３から図１０を参照して説明する。
【００４８】
図３は、本発明の第１の実施形態において実行される処理の前提となる計算機システムの構成を示す説明図である。
【００４９】
図３は、図１に示す計算機システムに対応する。ただし、説明に必要のない部分（例えば、ディスクコントローラ１２１等）の図示は省略する。
【００５０】
ノード１１０Ａ〜１１０Ｃ及び五つのＮＡＳクライアント１６０Ａ〜１６０Ｅは、ＬＡＮ１８０を介して相互に接続されている。ＮＡＳクライアント１６０Ａ〜１６０Ｅの各々は、図１に示す複数のＮＡＳクライアント１６０の一つである。
【００５１】
各ＮＡＳクライアント１６０では、種々のアプリケーションプログラムが稼動する。各アプリケーションプログラムは、各ノード１１０を介して一つ以上のファイルシステム３０２を使用する。例えば、ＮＡＳクライアント１６０Ａで稼動するアプリケーションプログラムは、ファイルシステム３０２Ａ〜３０２Ｃを使用する。ファイルシステム３０２Ａ〜３０２Ｃの各々は、複数のファイルシステム３０２の一つである。各ファイルシステム３０２は、一つ以上のファイル３０３を含む。例えば、ファイルシステム３０２Ａは、ファイル３０３Ａ、３０３Ｂ及び３０３Ｃを含む。ファイルシステム３０２Ｂは、例えば、ファイル３０３Ｄを含む。ファイル３０３Ａ、３０３Ｂ、３０３Ｃ及び３０３Ｄの各々は、複数のファイル３０３の一つである。
【００５２】
ＬＵ１２９Ａ〜１２９Ｃの各々は、図１に示す複数のＬＵ１２９の一つである。
【００５３】
図３の例では、各ＬＵ１２９Ａ〜１２９Ｃにファイルシステム３０２が一つずつ格納される。具体的には、図３の例では、ＬＵ１２９Ａにはファイルシステム３０２Ａ、ＬＵ１２９Ｂにはファイルシステム３０２Ｂ、ＬＵ１２９Ｃにはファイルシステム３０２Ｃが格納される。ファイルシステム３０２Ａ、ファイルシステム３０２Ｂ及びファイルシステム３０２Ｃは、それぞれ、識別子「ＦＳ１」、「ＦＳ２」及び「ＦＳ３」によって識別され、それぞれ、「／ｍｎｔ／ＦＳ１」、「／ｍｎｔ／ＦＳ２」及び「／ｍｎｔ／ＦＳ３」にマウントされている。
【００５４】
複数のノード１１０と複数のＬＵ１２９との間には、複数の通信経路（パス）３０１が設定されている。具体的には、ノード１１０ＡとＬＵ１２９Ａとの間にパス３０１Ａが、ノード１１０ＡとＬＵ１２９Ｂとの間にパス３０１Ｂが、ノード１１０ＡとＬＵ１２９Ｃとの間にパス３０１Ｃが設定されている。ノード１１０ＢとＬＵ１２９Ａとの間にパス３０１Ｄが、ノード１１０ＢとＬＵ１２９Ｂとの間にパス３０１Ｅが、ノード１１０ＢとＬＵ１２９Ｃとの間にパス３０１Ｆが設定されている。ノード１１０ＣとＬＵ１２９Ａとの間にパス３０１Ｇが、ノード１１０ＣとＬＵ１２９Ｂとの間にパス３０１Ｈが、ノード１１０ＣとＬＵ１２９Ｃとの間にパス３０１Ｉが設定されている。パス３０１Ａ〜３０１Ｉの各々は、複数のパス３０１の一つである。
【００５５】
本実施形態では、全パス３０１Ａ〜３０１Ｉに対応する物理的な通信経路が設定されている。ＬＵパス設定プログラムは、パス３０１Ａ〜３０１Ｉの設定を変更することによって、パス３０１Ａ〜３０１Ｉを介した通信の可／不可を論理的に切り替えることができる。このような切り替えは、どのような方法で実現されてもよい。例えば、このような切り替えは、各ファイルシステム３０２を各ノード１１０にマウント又はアンマウントすることによって実現されてもよいし、パス３０１の有効化／無効化によって実現されてもよい。
【００５６】
図３の例では、パス３０１Ａ、パス３０１Ｅ及びパス３０１Ｉが、それぞれ通信可能に設定されている。この場合、ＮＡＳクライアント１６０は、ノード１１０Ａにアクセスすることによって、ファイルシステム３０２Ａ内のファイル３０３に対する書き込み及び読み出しを実行することができる。同様にして、ＮＡＳクライアント１６０は、ノード１１０Ｂにアクセスすることによってファイルシステム３０２Ｂを、ノード１１０Ｃにアクセスすることによってファイルシステム３０２Ｃを使用することができる。一方、図３の例では、パス３０１Ｂが通信可能に設定されていない。このため、ＮＡＳクライアント１６０は、ノード１１０Ａにアクセスすることによって、ファイルシステム３０２Ｂを使用することができない。
【００５７】
図４は、本発明の第１の実施形態のノード１１０に設定される省電力レベルの説明図である。
【００５８】
各ノード１１０は、自ノード１１０内の各部に供給される電力を制限することによって、自ノード１１０が消費する電力を削減することができる。図４に示す省電力レベルは、削減される電力のレベルを意味する。各ノード１１０は、複数の省電力レベルを設定することができる。本実施形態の各ノード１１０は、省電力レベル０から省電力レベル３までの四つのレベルを設定することができる。
【００５９】
省電力レベル０は、稼動モードを意味する。省電力レベル０に設定されたノード１１０は、ＮＡＳクライアント１６０にファイル共有サービスを提供する。すなわち、省電力レベル０に設定されたノード１１０の各部は、通常の電力を供給され、稼動している。
【００６０】
省電力レベル１から３のいずれかに設定されたノード１１０は、自ノード１１０の少なくとも一部に供給される電力を制限する。このため、省電力レベル１から３のいずれかに設定されたノード１１０の消費電力は、省電力レベル０に設定されたノード１１０の消費電力より小さい。以下の説明において、ノード１１０が省電力レベル１から３のいずれかに設定された状態を省電力モードとも記載する。省電力モードに設定されたノード１１０は、その内部の少なくとも一部が稼動していないため、ＮＡＳクライアント１６０に対するファイル共有サービスを停止する。
【００６１】
省電力レベル１に設定されたノード１１０は、自ノード１１０のＣＰＵ２０２に供給される電力を制限する。このノード１１０は、ＣＰＵ２０２以外の部分に電力が供給されているため、比較的短時間で省電力レベル０に復帰することができる。このため、例えば、現在稼動しているノード１１０に障害が発生したときにそのノードからサービスを引き継ぐべきノード１１０が、省電力レベル１に設定される。
【００６２】
省電力レベル２（いわゆるメモリサスペンド）に設定されたノード１１０は、省電力モードに遷移する前の状態を示す情報をメモリ２０４に保存し、メモリ２０４以外の部分に供給される電力を制限する。メモリ２０４には、少なくとも、情報を保存し続けるために必要な電力が供給される。
【００６３】
省電力レベル３（いわゆるＳｏｆｔ  Ｏｆｆ）に設定されたノード１１０では、ＯＳが停止する。このノード１１０のハードウェアには、省電力レベル０に復帰するために必要な微弱な電力のみが供給されている。
【００６４】
このように、省電力レベルの値が大きくなるほど、ノード１１０内において電力の供給を制限される範囲が広くなる。このため、ノード１１０に設定された省電力レベルの値が大きくなるほど、ノード１１０の消費電力は小さくなるが、そのノード１１０の復帰時間（すなわち、そのノード１１０が正常にサービスを提供できる状態に復帰するまでの時間）は長くなる。
【００６５】
各ノード１１０の省電力レベルの切り替えは、周知の技術によって実現することができる。例えば、Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ（ＡＣＰＩ）を適用することによって省電力レベルを切り替えてもよい。ＡＣＰＩが適用される場合、上記の省電力レベル１はＡＣＰＩのＳ１  Ｓｌｅｅｐｉｎｇ  Ｓｔａｔｅに、省電力レベル２はＳ３  Ｓｌｅｅｐｉｎｇ  Ｓｔａｔｅに、省電力レベル３はＳ５  Ｓｏｆｔ  Ｏｆｆ  Ｓｔａｔｅに相当する。
【００６６】
ただし、本発明は、ＡＣＰＩ以外の技術によって省電力レベルを切り替える場合にも適用することができる。
【００６７】
なお、本実施の形態では、図４のように電力が供給される範囲を切り替えることによって、四つの省電力レベルが設定される。しかし、同様にして電力が供給される範囲を任意に設定することによって、二つ以上の任意の省電力レベルが設定されてもよい。いずれの場合でも、供給電力の制限によって消費電力が低下するほど、ノード１１０の復帰時間が長くなる。
【００６８】
図５は、本発明の第１の実施形態における省電力レベルの遷移の説明図である。
【００６９】
省電力レベル０に設定されているノード１１０は、省電力レベル１、２又は３のいずれにも遷移することができる。一方、省電力レベル１、２又は３のいずれかに設定されているノード１１０は、省電力レベル０にのみ遷移することができる。
【００７０】
図６は、本発明の第１の実施形態における停止スケジュール及び省電力方法の設定の説明図である。
【００７１】
ＮＡＳ管理者は、各ノード１１０の停止スケジュール及び省電力方法を設定することができる。停止スケジュールとは、各ノード１１０を省電力モードに設定するスケジュールである。省電力方法とは、省電力モードとして設定される具体的な省電力レベルである。
【００７２】
ＮＡＳ管理者は、各ノード１１０の稼動実績に基づいて、停止スケジュール及び省電力方法を設定することができる。稼動実績とは、例えば、各ノード１１０において所定の期間測定された性能情報の統計である。図６の例では、各ノード１１０のアクセスデータ量が時間帯ごとに測定される。
【００７３】
例えば、あるノード１１０において測定されたアクセスデータ量が所定の閾値より小さい時間帯において、そのノード１１０が省電力モードとなるように停止スケジュールが設定されてもよい。あるいは、例えば、全ノード１１０のアクセスデータ量の合計値に応じた適切な数のノード１１０が稼動するように（言い換えると、アクセスデータ量の合計値が大きくなるほど、稼動するノード１１０の数が多くなるように）、停止スケジュールが設定されてもよい。
【００７４】
同様にして、例えば、あるノード１１０において測定されたアクセスデータ量が小さいほど、そのノードの消費電力が小さくなるように、そのノード１１０の省電力レベルが設定されてもよい。
【００７５】
ただし、少なくとも一つのノード１１０が常に稼動するように停止スケジュールを設定することが望ましい。これによって、サービスの提供が完全に停止することが防止される。また、稼動しているノード１１０が一つしかない場合、省電力モードに設定されているノード１１０の少なくとも一つが省電力レベル１に設定されることが望ましい。これによって、稼動しているノード１１０に障害が発生した場合に、省電力レベル１に設定されているノード１１０が迅速に復帰して、障害ノード１１０からサービスを引き継ぐことができる。
【００７６】
あるいは、後述するように、稼動するノード１１０の数が所定のポリシーに基づいて決定されてもよい（図２２等参照）。例えば、システムの信頼性が優先される場合、常に二つ以上のノード１１０が稼動するように停止スケジュールが決定されてもよい。あるいは、消費電力の削減が優先される場合、所定の時間帯には一つのノード１１０のみが稼動するように停止スケジュールが設定されてもよい。
【００７７】
上記のような停止スケジュール及び省電力方法の設定は、ＮＡＳ管理者によって手動で実行されてもよいし、各ノード１１０によって自動的に実行されてもよい。
【００７８】
図６は、夜間に稼動するＮＡＳクライアント１６０の数が、昼間のそれより少ない場合の例を示す。この例において、ノード１００Ａ（すなわちＮＡＳ−０１）は、常時稼動するように設定されている。ノード１１０Ｂ（すなわちＮＡＳ−０２）は、毎日２３：００から５：００までの間、省電力レベル１となるように設定されている。ノード１１０Ｃ（すなわちＮＡＳ−０３）は、毎日２０：００から８：００までの間、省電力レベル３となるように設定されている。
【００７９】
なお、後述するように、各ノード１１０は、図６に示す停止スケジュール及び省電力方法を、停止スケジュールテーブル１４００として保持する（図１４参照）。
【００８０】
図７は、本発明の第１の実施形態において一つのノード１１０が省電力モードに遷移するために実行される処理の説明図である。
【００８１】
図６の例では、２０：００にノード１１０Ｃが省電力レベル３に遷移する。図７は、この時点の処理を示す。
【００８２】
現在時刻が２０：００に達すると、ノード１１０Ｃの監視プログラム２１２は、自ノード１１０Ｃが省電力モードに遷移するタイミングが到来したと判定する。この場合、ノード１１０Ｃの監視プログラム２１２は、稼動している他のノード１１０の一つ（すなわち、監視プログラム２１２が稼動しているノード１１０Ｃ以外のノードのうち一つ。図７の例では、ノード１１０Ａ）に引き継ぎ要求を送信する。ノード１１０Ｃは、ＬＵ１２９Ｃ内のファイルシステム３０２ＣをＮＡＳクライアント１６０に提供するサービスを実行していた。引き継ぎ要求は、このサービスを引き継ぐことをノード１１０Ａに要求するものである。すなわち、この引き継ぎ要求は、パス３０１Ｃを有効化するためのパス切り替え要求を含む。さらに、ノード１１０のＬＵパス設定プログラム２１１Ｃは、パス３０１Ｉを無効化する。
【００８３】
引き継ぎ要求を送信したノード１１０Ｃは、省電力レベル３に遷移する。
【００８４】
引き継ぎ要求を受信したノード１１０ＡのＬＵパス設定プログラム２１１は、パス３０１Ｃを有効化する。その後、ＮＡＳクライアント１６０は、ノード１１０Ａにアクセスすることによって、ＬＵ１２９Ｃ内のファイルシステム３０２Ｃを使用することができる。
【００８５】
なお、現在時刻は、各ノード１１０が備える時計（図示省略）から取得されてもよいし、ＬＡＮ１８０を介して接続された計算機（例えば時刻サーバ）（図示省略）から取得されてもよい。
【００８６】
図８は、本発明の第１の実施形態においてさらに一つのノード１１０が省電力モードに遷移するために実行される処理の説明図である。
【００８７】
図６の例では、２３：００にノード１１０Ｂが省電力レベル１に遷移する。図８は、この時点で実行される処理を示す。
【００８８】
現在時刻が２３：００に達すると、ノード１１０Ｂの監視プログラム２１２は、自ノード１１０Ｂが省電力モードに遷移するタイミングが到来したと判定する。この場合、ノード１１０Ｂの監視プログラム２１２は、稼動している他のノード１１０（図８の例では、ノード１１０Ａ）に引き継ぎ要求を送信する。ノード１１０Ｂは、ＬＵ１２９Ｂ内のファイルシステム３０２ＢをＮＡＳクライアント１６０に提供するサービスを実行していた。引き継ぎ要求は、このサービスを引き継ぐことをノード１１０Ａに要求するものである。すなわち、この引き継ぎ要求は、パス３０１Ｂを有効化するためのパス切り替え要求を含む。さらに、ノード１１０ＢのＬＵパス設定プログラム２１１は、パス３０１Ｅを無効化する。
【００８９】
引き継ぎ要求を送信したノード１１０Ｂは、省電力モード１に遷移する。
【００９０】
引き継ぎ要求を受信したノード１１０ＡのＬＵパス設定プログラム２１１は、パス３０１Ｂを有効化する。その後、ＮＡＳクライアント１６０は、ノード１１０Ａにアクセスすることによって、ＬＵ１２９Ｂ内のファイルシステム３０２Ｂを使用することができる。
【００９１】
図７及び図８に示すように、ノード１１０の負荷が低くなる時間帯（例えば稼動するＮＡＳクライアント１６０の数が少ない夜間）に、一つ以上のノード１１０を省電力モードに遷移させることによって、システム全体の消費電力が削減される。
【００９２】
図９は、本発明の第１の実施形態において一つのノード１１０が省電力モードから復帰するために実行される処理の説明図である。
【００９３】
図６の例では、５：００にノード１１０Ｂが省電力レベル１から省電力レベル０（すなわち稼動モード）に復帰する。図９は、この時点で実行される処理を示す。
【００９４】
現在時刻が５：００に達すると、ノード１１０Ａの監視プログラム２１２は、ノード１１０Ｂが省電力モードから復帰するタイミングが到来したと判定する。この場合、ノード１１０Ａの監視プログラム２１２は、ノード１１０Ｂに起動要求を送信する。ノード１１０Ａは、ＬＵ１２９Ｂ内のファイルシステム３０２ＢをＮＡＳクライアント１６０に提供するサービスをノード１１０Ｂから引き継いでいた。このため、起動要求は、このサービスを再びノード１１０Ｂが提供するようにノード１１０Ｂに指示するものである。さらに、ノード１１０ＡのＬＵパス設定プログラム２１１は、パス３０１Ｂを無効化する。
【００９５】
起動要求を受信したノード１１０Ｂは、省電力レベル１から省電力レベル０に遷移する。さらに、ノード１１０ＢのＬＵパス設定プログラム２１１は、パス３０１Ｅを有効化する。その後、ＮＡＳクライアント１６０は、ノード１１０Ｂにアクセスすることによって、ＬＵ１２９Ｂ内のファイルシステム３０２Ｂを使用することができる。
【００９６】
図１０は、本発明の第１の実施形態において稼動しているノード１１０に障害が発生した場合に実行される処理の説明図である。
【００９７】
図６の例では、２３：００から５：００までの間、ノード１１０Ａのみが稼動している。すなわち、この時間帯にノード１１０Ａに障害が発生すると、システムのサービス全体が停止する。図１０は、この時間帯のある時点（例えば３：００）にノード１１０Ａに障害が発生した場合に、システムのサービス全体の停止を防ぐために実行される処理を示す。
【００９８】
なお、図１０において発生する障害は、ＯＳレイヤ以上の障害である。すなわち、ＯＳが障害の発生を検知し、検知した障害を他のノード１１０に通知できることが図１０の処理の前提となる。
【００９９】
稼動しているノード１１０Ａが、障害の発生のためにＮＡＳクライアント１６０にサービスを提供できなくなると、ノード１１０Ａは、稼動していないノードのうち一つ（例えば、ノード１１０Ｂ）に起動要求を送信する。障害が発生する直前まで、ノード１１０Ａはファイルシステム３０２Ａ〜３０２ＣをＮＡＳクライアント１６０に提供するサービスを実行していた。このため、起動要求は、このサービスをノード１１０Ｂが引き継ぐことを指示するものである。
【０１００】
さらに、ノード１１０ＡのＬＵパス設定プログラム２１１は、パス３０１Ａ〜３０１Ｃを無効化する。
【０１０１】
起動要求を受信したノード１１０Ｂは、省電力レベル１から省電力レベル０に遷移する。さらに、ノード１１０ＢのＬＵパス設定プログラム２１１は、パス３０１Ｄ〜３０１Ｆを有効化する。その後、ＮＡＳクライアント１６０は、ノード１１０Ｂにアクセスすることによって、ＬＵ１２９Ａ〜１２９Ｃ内のファイルシステム３０２Ａ〜３０２Ｃを使用することができる。
【０１０２】
図１１は、本発明の第１の実施形態において稼動しているノード１１０の負荷が増大した場合に実行される処理の説明図である。
【０１０３】
図６の例では、２３：００から５：００までの間、ノード１１０Ａのみが稼動している。このような停止スケジュールは、例えば、２３：００から５：００までの間、ファイルシステム３０２Ａ〜３０２Ｃに対するアクセス負荷が低いという過去の実績に基づいて設定されている。
【０１０４】
しかし、実際には、過去の実績に反して、この時間帯にファイルシステム３０２Ａ〜３０２Ｃに対するアクセス負荷が増大する場合がある。図７〜図１０の例は、夜間にＮＡＳクライアント１６０Ｂのみが稼動しているため、ノード１１０Ａのみが稼動すれば十分である場合を示している。しかし、通常は停止しているはずのＮＡＳクライアント１６０（例えば、図１１のＮＡＳクライアント１６０Ｃ〜１６０Ｅ）が何らかの事情によって稼動している場合がある。このような場合、唯一稼動するノード１１０Ａの負荷が増大するため、ノード１１０Ａの処理が混雑し、その結果、ノード１１０の処理性能が低下する場合がある。図１１は、このような場合に性能低下を防ぐために実行される処理を示す。
【０１０５】
稼動しているノード１１０Ａの負荷が所定の閾値を超えると、ノード１１０Ａは、稼動していないノードのうち一つ（例えば、ノード１１０Ｂ）に起動要求を送信する。障害が発生する直前まで、ノード１１０Ａはファイルシステム３０２Ａ〜３０２ＣをＮＡＳクライアント１６０に提供するサービスを実行していた。このため、起動要求は、このサービスの一部をノード１１０Ｂが引き継ぐことを指示するものである。図１１には、ファイルシステム３０２ＢをＮＡＳクライアント１６０に提供するサービスをノード１１０Ｂが引き継ぐことが指示された場合を示す。
【０１０６】
さらに、ノード１１０ＡのＬＵパス設定プログラム２１１は、パス３０１Ｂを無効化する。
【０１０７】
起動要求を受信したノード１１０Ｂは、本来の停止スケジュールによればまだ起動しない時刻であっても、省電力レベル１から省電力レベル０に遷移する。さらに、ノード１１０ＢのＬＵパス設定プログラム２１１は、パス３０１Ｅを有効化する。その後、ＮＡＳクライアント１６０は、ノード１１０Ａにアクセスすることによって、ＬＵ１２９Ａ及び１２９Ｃ内のファイルシステム３０２Ａ及び３０２Ｃを使用することができ、ノード１１０Ｂにアクセスすることによって、ＬＵ１２９Ｂ内のファイルシステム３０２Ｂを使用することができる。その結果、アクセス負荷が複数のノード１１０に分散されるため、処理性能が改善される。
【０１０８】
図１２は、本発明の第１の実施形態の各ノード１１０が保持する収集情報テーブル１２００の説明図である。
【０１０９】
収集情報テーブル１２００は、制御情報２１４の一部として各ノード１１０のメモリ２０４に格納される。
【０１１０】
収集情報テーブル１２００は、各ノード１１０が、自ノード１１０及び他のノード１１０の負荷を示す情報を含む。この負荷情報は、所定のタイミングで（例えば定期的に）各ノード１１０のスケジューリングプログラム２１３が自ノード１１０及び他のノード１１０から取得したものである。
【０１１１】
収集情報テーブル１２００は、時刻（１２０１）、情報種別（１２０２）、ＮＡＳ−０１（１２０３）、ＮＡＳ−０２（１２０４）及びＮＡＳ−０３（１２０５）を含む。
【０１１２】
時刻（１２０１）は、情報が取得された時刻である。図１２の例における「ｈ１ｈ１：ｍ１ｍ１：ｓ１ｓ１」のうち、「ｈ１ｈ１」はある「時」、「ｍ１ｍ１」はある「分」、「ｓ１ｓ１」はある「秒」を示す。同様に、「ｈ２ｈ２：ｍ２ｍ２：ｓ２ｓ２」及び「ｈｘｈｘ：ｍｘｍｘ：ｓｘｓｘ」は、それぞれ、「ｈ１ｈ１：ｍ１ｍ１：ｓ１ｓ１」と異なる「時：分：秒」を示す。
【０１１３】
情報種別（１２０２）は、取得された情報の種類である。図１２の例では、負荷情報としてＣＰＵ負荷及びＩ／Ｏ負荷が取得される。ＣＰＵ負荷は、例えば、各ノード１１０のＣＰＵ２０２の使用率（％）である。Ｉ／Ｏ負荷は、例えば、各ノード１１０の単位時間当たりのＩ／Ｏデータ数（メガバイト／秒）である。
【０１１４】
スケジューリングプログラム２１３は、さらに、ファイルアクセス数を取得する。ファイルアクセス数は、例えば、各ノード１１０がアクセスした単位時間当たりのファイル数（個）である。ファイルアクセス数は、後述するファイルアクセス情報から取得されてもよい。ファイルアクセス数は、ＣＰＵ負荷及びＩ／Ｏ負荷と同様、ノード１１０の負荷を示す値として使用することができる。
【０１１５】
ＮＡＳ−０１（１２０３）は、識別子「ＮＡＳ−０１」で識別されるノード１１０Ａから取得されたノード１１０Ａの負荷の値である。
【０１１６】
ＮＡＳ−０２（１２０４）は、識別子「ＮＡＳ−０２」で識別されるノード１１０Ｂから取得されたノード１１０Ｂの負荷の値である。
【０１１７】
ＮＡＳ−０３（１２０５）は、識別子「ＮＡＳ−０３」で識別されるノード１１０Ｃから取得されたノード１１０Ｃの負荷の値である。
【０１１８】
図１２の例では、時刻（１２０１）の値「ｈ１ｈ１：ｍ１ｍ１：ｓ１ｓ１」に対応するＮＡＳ−０１（１２０３）のＣＰＵ負荷、Ｉ／Ｏ負荷及びファイルアクセス数として、それぞれ、「１０％」、「１ＭＢ／ｓ」及び「１００個」が格納されている。同じ時刻（１２０１）のＮＡＳ−０２（１２０４）には「１％」、「０．１ＭＢ／ｓ」及び「１０個」が、ＮＡＳ−０３（１２０５）には「０％」、「０ＭＢ／ｓ」及び「０個」が格納されている。これらの値は、時刻「ｈ１ｈ１：ｍ１ｍ１：ｓ１ｓ１」において、ノード１１０Ａの負荷が最も高く、ノード１１０Ｃは稼動していないことを示す。
【０１１９】
図１３は、本発明の第１の実施形態の各ノード１１０が保持する管理者設定テーブル１３００の説明図である。
【０１２０】
管理者設定テーブル１３００は、制御情報２１４の一部として各ノード１１０のメモリ２０４に格納される。
【０１２１】
管理者設定テーブル１３００は、各ノード１１０に設定される省電力レベル、及び、各ノード１１０が省電力モードに設定される時間を示す情報を含む。これらの情報は、各ノード１１０のスケジューリングプログラム２１３がＮＡＳ管理者から取得したものである。
【０１２２】
例えば、ＮＡＳ管理者は、ＬＡＮ１８０に接続された管理端末（図示省略）又はいずれかのノード１１０を操作して、管理者設定テーブル１３００に情報を入力することができる。このとき、任意のＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）又はＣＬＩ（Ｃｏｍｍａｎｄ  Ｌｉｎｅ  Ｉｎｔｅｒｆａｃｅ）が使用されてもよい。入力を受け付けた管理端末等は、各ノード１１０に入力された情報を送信する。その結果、各ノード１１０は、同一の管理者設定テーブル１３００を保持することができる。
【０１２３】
図１３の管理者設定テーブル１３００は、ＮＡＳ１３０１、省電力レベル１３０２、省電力時刻１３０３及び復帰時刻１３０４を含む。
【０１２４】
ＮＡＳ１３０１は、各ノード１１０の識別子である。図１３の例では、ノード１１０Ａ〜１１０Ｃの識別子「ＮＡＳ−０１」〜「ＮＡＳ−０３」が格納される。
【０１２５】
省電力レベル１３０２は、各ノード１１０に設定される省電力レベルである。
【０１２６】
省電力時刻１３０３は、各ノード１１０が稼動モードから省電力モードに遷移する時刻である。
【０１２７】
復帰時刻１３０４は、各ノード１１０が省電力モードから稼動モードに復帰する時刻である。
【０１２８】
すなわち、省電力時刻１３０３から復帰時刻１３０４までの時間が、各ノード１１０が省電力モードに設定される時間である。
【０１２９】
図１３の例では、ノード１１０Ａ（ＮＡＳ−０１）に対応する省電力レベル１３０２として「０」が格納されている。これは、ノード１１０Ａが常時稼動することを意味する。すなわち、ノード１１０Ａは省電力レベルに遷移しない。このため、ノード１１０Ａに対応する省電力時刻１３０３及び復帰時刻１３０４には有効な値が格納されなくてもよい。
【０１３０】
さらに、図１３の例では、ノード１１０Ｂ（ＮＡＳ−０２）に対応する省電力レベル１３０２、省電力時刻１３０３及び復帰時刻１３０４として、それぞれ、「１」、「２３：００」及び「０５：００」が格納されている。これは、ノード１１０Ｂが２３：００から０５：００までの間、省電力レベル１に設定されることを意味する。
【０１３１】
さらに、図１３の例では、ノード１１０Ｃ（ＮＡＳ−０３）に対応する省電力レベル１３０２、省電力時刻１３０３及び復帰時刻１３０４として、それぞれ、「３」、「ａｕｔｏ」及び「ａｕｔｏ」が格納されている。これは、ＮＡＳ管理者が、ノード１１０Ｃが設定されるべき省電力レベルとして省電力レベル３を指定したが、省電力レベル３に設定される時間を指定していないことを意味する。
【０１３２】
この場合、ノード１１０Ｃのスケジューリングプログラム２１３が、ノード１１０Ｃが省電力レベル３に設定される時間を算出する。この算出方法については後述する（図１４等参照）。
【０１３３】
図１４は、本発明の第１の実施形態の各ノード１１０が保持する停止スケジュールテーブル１４００の説明図である。
【０１３４】
停止スケジュールテーブル１４００は、制御情報２１４の一部として各ノード１１０のメモリ２０４に格納される。
【０１３５】
各ノード１１０のスケジューリングプログラム２１３は、管理者設定テーブル１３００の内容に基づいて、停止スケジュールテーブル１４００を生成する。具体的には、停止スケジュールテーブル１４００は、管理者設定テーブル１３００と同様の項目を含む。すなわち、停止スケジュールテーブル１４００は、ＮＡＳ１４０１、省電力レベル１４０２、省電力時刻１４０３及び復帰時刻１４０４を含む。
【０１３６】
管理者設定テーブル１３００の項目に、ＮＡＳ管理者によって入力された具体的な値が格納されている場合、スケジューリングプログラム２１３は、その値と同一の値を、その項目に対応する停止スケジュールテーブル１４００の項目に格納する。
【０１３７】
例えば、図１３の管理者設定テーブル１３００では、ノード１１０Ｂに対応する省電力レベル１３０２、省電力時刻１３０３及び復帰時刻１３０４としてそれぞれ「１」、「２３：００」及び「０５：００」が格納されている。この場合、スケジューリングプログラム２１３は、図１４において、ノード１１０Ｂに対応する省電力レベル１４０２、省電力時刻１４０３及び復帰時刻１４０４にそれぞれ「１」、「２３：００」及び「０５：００」を格納する。
【０１３８】
一方、管理者設定テーブル１３００の項目に「ａｕｔｏ」が格納されている場合、スケジューリングプログラム２１３は、その項目に格納されるべき値を算出する。
【０１３９】
例えば、図１３の管理者設定テーブル１３００では、ノード１１０Ｃに対応する省電力時刻１３０３及び復帰時刻１３０４として「ａｕｔｏ」が格納されている。この場合、スケジューリングプログラム２１３は、ノード１１０Ｃが稼動モードから省電力レベル３に遷移すべき時刻及び省電力レベル３から稼動モードに復帰すべき時刻を算出する。
【０１４０】
この算出は、収集情報テーブル１２００に格納された情報に基づいて実行されてもよい。例えば、２０：００から８：００までの間のノード１１０Ｃの負荷が所定の閾値より低く、それ以外の時間の負荷が所定の閾値より高い場合、スケジューリングプログラム２１３は、ノード１１０Ｃに対応する省電力時刻１４０３及び復帰時刻１４０４としてそれぞれ「２０：００」及び「０８：００」を算出し、停止スケジュールテーブル１４００に格納してもよい。
【０１４１】
なお、スケジューリングプログラム２１３は、省電力レベル１４０２に格納される値を算出してもよい。この算出も、収集情報テーブル１２００に格納された情報に基づいて実行されてもよい。スケジューリングプログラム２１３は、省電力レベル１４０２、省電力時刻１４０３及び復帰時刻１４０４を算出するために、図１５に示す省電力レベルポリシーテーブル１５００を参照してもよい。
【０１４２】
図１５は、本発明の第１の実施形態の各ノード１１０が保持する省電力レベルポリシーテーブル１５００の説明図である。
【０１４３】
省電力レベルポリシーテーブル１５００は、制御情報２１４の一部として各ノード１１０のメモリ２０４に格納される。
【０１４４】
省電力レベルポリシーテーブル１５００は、省電力レベル１５０１及び条件１５０２を含む。
【０１４５】
省電力レベル１５０１は、各ノード１１０に設定され得る省電力レベルを示す。例えば、図４に示すように、「０」から「３」までの四つの省電力レベルが各ノード１１０に設定され得る。
【０１４６】
条件１５０２は、省電力レベル１５０１に示す省電力レベルが各ノード１１０に設定される条件である。すなわち、条件１５０２に示す条件が満たされる場合、その条件１５０２に対応する省電力レベル１５０１が各ノード１１０に設定される。
【０１４７】
例えば、図１５では、省電力レベル１５０１の値「０」に対応する条件１５０２として、「（Ｘ１＜ＣＰＵ負荷＜Ｘ２）ＡＮＤ（Ｙ１＜Ｉ／Ｏ負荷＜Ｙ２）ＡＮＤ（Ｚ１＜ファイルアクセス数＜Ｚ２）」が格納されている。ここで、Ｘ１、Ｘ２、Ｙ１、Ｙ２、Ｚ１及びＺ２は、例えばＮＡＳ管理者によってあらかじめ定められた閾値である。同様に、Ｘ３〜Ｘ８、Ｙ３〜Ｙ８及びＺ３〜Ｚ８も、ＮＡＳ管理者によってあらかじめ定められた閾値である。この場合、スケジューリングプログラム２１３は、収集情報テーブル１２００及び省電力レベルポリシーテーブル１５００を参照して、負荷が上記の条件を満たす時刻のノード１１０の省電力レベルが「０」に設定されるように、停止スケジュールテーブル１４００を作成してもよい。
【０１４８】
図１６は、本発明の第１の実施形態の各ノード１１０が保持するＮＡＳ管理テーブル１６００の説明図である。
【０１４９】
ＮＡＳ管理テーブル１６００は、制御情報２１４の一部として各ノード１１０のメモリ２０４に格納される。
【０１５０】
ＮＡＳ管理テーブル１６００は、各ノード１１０の状態等を示す管理情報を含む。図１６の例では、管理情報は、状態１６１１、フェールオーバペア１６１２及びパス１６１３を含む。ＮＡＳ−０１（１６０１）、ＮＡＳ−０２（１６０２）及びＮＡＳ−０３（１６０３）は、それぞれ、ノード１００Ａ、１００Ｂ及び１００Ｃの管理情報である。
【０１５１】
状態１６１１は、各ノード１１０に設定されている省電力レベルを示す。
【０１５２】
フェールオーバペア１６１２は、各ノード１１０とともにフェールオーバペアを構成する他のノード１１０の識別子を示す。フェールオーバペアについては後で詳細に説明する（図２２参照）。図１６の例では、ＮＡＳ−０１（１６０１）に対応するフェールオーバペア１６１２として「ＮＡＳ−０２」が、ＮＡＳ−０２（１６０２）に対応するフェールオーバペア１６１２として「ＮＡＳ−０１」が格納されている。これは、ノード１００Ａ及びノード１１０Ｂが一つのフェールオーバペアを構成していることを示す。
【０１５３】
パス１６１３は、各ノードに接続されているパス３０１の状態（すなわち各パス３０１が有効であるか無効であるか）を示す。図１６の例において「ＯＮ」はパスが有効化されていること、「ＯＦＦ」はパスが無効化されていることを示す。
【０１５４】
図１６は、例として、図７に示す各ノード１１０が保持するＮＡＳ管理テーブル１６００を示す。
【０１５５】
この場合、ノード１１０Ａ及び１１０Ｂが稼動しており、ノード１１０Ｃが省電力レベル３に設定されている。このため、ノード１１０Ａ〜１１０Ｃに対応する状態１６１１として、それぞれ、「省電力レベル０」、「省電力レベル０」及び「省電力レベル３」が格納される。
【０１５６】
さらに、この場合、パス３０１Ａ、３０１Ｃ及び３０１Ｅが有効化されている。このため、パス１６１３には、パス３０１Ａ、３０１Ｃ及び３０１Ｅに対応する状態として「ＯＮ」が、その他のパス３０１に対応する状態として「ＯＦＦ」が格納される。
【０１５７】
図１６の例では、ノード１１０Ａ及びノード１１０Ｂが一つのフェールオーバペアを構成する。このため、ノード１１０Ａ及びノード１１０Ｂに対応するフェールオーバペア１６１２には、それぞれ、ペアの相手方のノード１１０の識別子である「ＮＡＳ−０２」及び「ＮＡＳ−０１」が格納される。
【０１５８】
図１７は、本発明の第１の実施形態の各ノード１１０が保持するファイルアクセス情報テーブル１７００の説明図である。
【０１５９】
各ノード１１０のスケジューリングプログラム２１３は、各ノード１１０によるファイルアクセスの履歴をファイルアクセス情報テーブル１７００に格納する。ファイルアクセス情報テーブル１７００は、制御情報２１４の一部として各ノード１１０のメモリ２０４に格納される。
【０１６０】
ファイルアクセス情報テーブル１７００は、ファイル１７０１、アクセス日時１７０２、アクセス種別１７０３及びアクセス元１７０４を含む。
【０１６１】
ファイル１７０１は、アクセスされたファイル３０３のファイル名である。
【０１６２】
アクセス日時１７０２は、ファイルアクセスが実行された日時である。
【０１６３】
アクセス種別１７０３は、実行されたアクセスの種類（すなわち、書き込み又は読み出し）である。
【０１６４】
アクセス元１７０４は、実行されたアクセスのアクセス元の識別子である。
【０１６５】
図１７は、ノード１１０Ｂが保持するファイルアクセス情報テーブル１７００の例を示す。図１７に示すファイルアクセス情報テーブル１７００の第１行には、ファイル１７０１、アクセス日時１７０２、アクセス種別１７０３及びアクセス元１７０４として、それぞれ、「ｍｎｔ／ＦＳ２／ＨＴＭＬ−２．ｈｔｍｌ」、「２００７／０５／０５  １６：４０」、「ｒｅａｄ」及び「ＮＡＳ−０１」が格納されている。これは、ノード１１０Ｂが、２００７年５月５日の１６時４０分に、ファイル「ｍｎｔ／ＦＳ２／ＨＴＭＬ−２．ｈｔｍｌ」に対する読み出し要求をノード１００Ａから受信し、要求された読み出しアクセスを実行したことを意味する。
【０１６６】
一方、第２行には、ファイル１７０１、アクセス日時１７０２、アクセス種別１７０３及びアクセス元１７０４として、それぞれ、「ｍｎｔ／ＦＳ２／ｂｂｂ．ｔｘｔ」、「２００７／０５／０７  １２：００」、「ｒｅａｄ」及び「Ｃｌｉｅｎｔ−Ａ」が格納されている。これは、ノード１１０Ｂが、２００７年５月７日の１２時００分に、ファイル「ｍｎｔ／ＦＳ２／ｂｂｂ．ｔｘｔ」に対する読み出し要求を、識別子「Ｃｌｉｅｎｔ−Ａ」によって識別されるＮＡＳクライアント１６０から受信し、要求された読み出しアクセスを実行したことを意味する。
【０１６７】
このように、ノード１１０がファイルアクセスを実行すると、スケジューリングプログラム２１３は、実行されたファイルアクセスに関する情報をファイルアクセス情報テーブル１７００に順次追加する。
【０１６８】
図１８は、本発明の第１の実施形態の各ノード１１０の各プログラムが実行する処理の概要の説明図である。
【０１６９】
図１８には、識別子「ＮＡＳ−Ｘ」によって識別されるノード１１０Ｘ、識別子「ＮＡＳ−Ｙ」によって識別されるノード１１０Ｙ、及び、識別子「ＮＡＳ−Ｚ」によって識別されるノード１１０Ｚの各プログラムが実行する処理の概要を示す。
【０１７０】
ここで、ノード１１０Ｘは、常時稼動するノード１１０である。ノード１１０Ｘは、図６の例のノード１１０Ａに相当する。ノード１１０Ｙは、所定の時間に省電力レベル１に設定されるノード１１０である。ノード１１０Ｙは、図６の例のノード１１０Ｂに相当する。ノード１１０Ｚは、上記のノード１１０Ｘ及び１１０Ｙのいずれにも当てはまらないノード１１０である。ノード１１０Ｚは、図６の例のノード１１０Ｃに相当する。
【０１７１】
以下の説明において、ノード１１０ＸのＬＵパス設定プログラム２１１、監視プログラム２１２及びスケジューリングプログラム２１３を、ＬＵパス設定プログラム２１１Ｘ、監視プログラム２１２Ｘ及びスケジューリングプログラム２１３Ｘと記載する。ノード１１０Ｙ及び１１０Ｚの各プログラムも、同様にＹ又はＺを付与して記載する。
【０１７２】
スケジューリングプログラム２１３Ｘは、所定のタイミングで各ノード１１０の負荷情報を取得し、取得した情報を収集情報テーブル１２００に蓄積する。さらに、スケジューリングプログラム２１３Ｘは、収集情報テーブル１２００に蓄積した値及び管理者設定テーブル１３００に格納された値を解析して、停止スケジュールテーブル１４００を作成する。
【０１７３】
監視プログラム２１２Ｘは、作成された停止スケジュールテーブル１４００及び現在時刻を示す時刻情報を参照して、自ノード１１０（すなわち、監視プログラム２１２Ｘを実行しているノード１１０Ｘ）が省電力モードに遷移する時刻が到来したか否かを判定する。
【０１７４】
自ノード１１０Ｘが省電力モードに遷移する時刻が到来した場合、監視プログラム２１２Ｘは、他のノード１１０にパス切り替え要求を送信した後、自ノード１１０Ｘを省電力モードに遷移させる。
【０１７５】
一方、自ノード１１０Ｘが省電力モードに遷移する時刻が到来していない場合、監視プログラム２１２Ｘは、現在が他ノード１１０を起動するタイミングであるか否かを判定する。
【０１７６】
現在が他ノード１１０（例えば、ノード１１０Ｙ）を起動するタイミングである場合、監視プログラム２１２Ｘは、ノード１１０Ｙを起動する。
【０１７７】
現在が他ノード１１０を起動するタイミングでない場合、監視プログラム２１２Ｘは、再び停止スケジュールテーブル１４００等を参照して、自ノード１１０が省電力モードに遷移する時刻が到来したか否かを判定する。
【０１７８】
ノード１１０Ｙのスケジューリングプログラム２１３Ｙ、監視プログラム２１２Ｙ及びＬＵパス設定プログラム２１１Ｙが実行する処理は、ノード１１０Ｘのスケジューリングプログラム２１３Ｘ、監視プログラム２１２Ｘ及びＬＵパス設定プログラム２１１Ｘが実行する処理と同様である。ただし、図１８の例では、ノード１１０Ｘが常時稼動するのに対し、ノード１１０Ｙは所定の時刻に省電力モードに移行する。以下、ノード１１０Ｙが省電力モードに移行するときの処理のみを説明する。ノード１１０Ｙによるその他の処理は、ノード１１０Ｘによるものと同様であるため、説明を省略する。
【０１７９】
監視プログラム２１２Ｙは、自ノード１１０（すなわち、監視プログラム２１２Ｙを実行しているノード１１０Ｙ）が省電力モードに遷移する時刻が到来したか否かを判定する。
【０１８０】
自ノード１１０Ｙが省電力モードに遷移する時刻が到来した場合、監視プログラム２１２Ｙは、他のノード１１０（図１８の例では、常時稼動するノード１１０Ｘ）にパス切り替え要求を送信した後、自ノード１１０Ｙを省電力モードに遷移させる。
【０１８１】
ノード１１０ＸのＬＵパス設定プログラム２１１Ｘは、他ノード１１０が起動した（すなわち、省電力モードから復帰した）か否かを監視する。
【０１８２】
他ノード１１０が起動した場合、ＬＵパス設定プログラム２１１Ｘは、自ノード１１０Ｘから使用可能に設定されていたパス３０１のうち、起動したノード１１０が使用するＬＵ１２９に至るパス３０１を、使用不可に切り替える。
【０１８３】
他ノード１１０が起動していない場合、ＬＵパス設定プログラム２１１Ｘは、他ノード１１０からパス切り替え要求を受信したか否かを判定する。
【０１８４】
例えば、他ノード１１０Ｙからパス切り替え要求を受信した場合、ＬＵパス設定プログラム２１１Ｘは、自ノード１１０Ｘから、ノード１１０Ｙが使用していたＬＵ１２９に至る、パス３０１を使用可能に切り替える。
ノード１１０Ｚの各プログラムは、ノード１１０Ｘ及び１１０Ｙの各プログラムと同様の処理を実行するため、これらの説明は省略する。
【０１８５】
以下、各プログラムによる処理の詳細を説明する。
【０１８６】
図１９は、本発明の第１の実施形態のスケジューリングプログラム２１３が実行する処理のフローチャートである。
【０１８７】
最初に、スケジューリングプログラム２１３は、情報収集タイミングを初期設定する（ステップ１９０１）。ここで、情報収集タイミングとは、収集情報テーブル１２００に格納される負荷情報等を取得するタイミングである。例えば、負荷情報等を一定の間隔で取得する場合、情報収集タイミングとしてその間隔が設定されてもよい。あるいは、負荷情報等を所定の時刻に収集する場合、情報収集タイミングとしてその時刻が設定されてもよい。
【０１８８】
次に、スケジューリングプログラム２１３は、現在が、ステップ１９０１において設定された情報収集タイミングであるか否か（言い換えると、ステップ１９０１において設定された情報収集タイミングが到来したか否か）を判定する（ステップ１９０２）。
【０１８９】
ステップ１９０２において、現在がファイルアクセス情報を収集するタイミングであると判定された場合、スケジューリングプログラム２１３は、ファイルアクセス情報を収集する（ステップ１９０３）。例えば、スケジューリングプログラム２１３は、前回の情報収集タイミングから今回の情報収集タイミングまでの間に自ノード１１０が実行したファイルアクセスの数を、ファイルアクセス情報テーブル１７００から取得する。さらに、スケジューリングプログラム２１３は、前回の情報収集タイミングから今回の情報収集タイミングまでの間に他ノード１１０が実行したファイルアクセスの数を、他ノード１１０のファイルアクセス情報テーブル１７００から取得する。スケジューリングプログラム２１３は、取得したファイルアクセス数をファイルアクセス情報テーブル１７００に格納する。
【０１９０】
一方、ステップ１９０２において、現在が負荷情報を収集するタイミングであると判定された場合、スケジューリングプログラム２１３は、負荷情報を収集する（ステップ１９０４）。例えば、スケジューリングプログラム２１３は、自ノード１１０のＣＰＵ負荷及びＩ／Ｏ負荷の値を取得する。さらに、スケジューリングプログラム２１３は、今回の情報収集タイミングにおける他ノード１１０のＣＰＵ負荷及びＩ／Ｏ負荷の値を他ノード１１０から取得する。スケジューリングプログラム２１３は、取得した負荷の値を収集情報テーブル１２００に格納する。
【０１９１】
ステップ１９０２において、現在が情報収集タイミングでないと判定された場合、スケジューリングプログラム２１３は、ステップ１９０３及び１９０４のいずれも実行せずにステップ１９０５に進む。
【０１９２】
次に、スケジューリングプログラム２１３は、ステップ１９０３又は１９０４において収集した情報を解析することによって、停止スケジュールテーブル１４００に登録されるべき値を算出する（ステップ１９０５）。具体的には、スケジューリングプログラム２１３は、図１４及び図１５を参照して説明したように、各ノード１１０に設定されるべき省電力レベル１４０２、省電力時刻１４０３及び復帰時刻１４０４を決定してもよい。
【０１９３】
次に、スケジューリングプログラム２１３は、ＮＡＳ管理者が新たな設定を入力したか否かを判定する（ステップ１９０６）。
【０１９４】
ステップ１９０６において、ＮＡＳ管理者が新たな設定を入力したと判定された場合、スケジューリングプログラム２１３は、入力された新たな設定を管理者設定テーブル１３００に反映させる（ステップ１９０７）。
【０１９５】
一方、ステップ１９０６において、ＮＡＳ管理者が新たな設定を入力していないと判定された場合、スケジューリングプログラム２１３は、ステップ１９０７を実行せずにステップ１９０８に進む。
【０１９６】
次に、スケジューリングプログラム２１３は、停止スケジュールテーブル１４００を作成（又は更新）する（ステップ１９０８）。具体的には、スケジューリングプログラム２１３は、管理者設定テーブル１３００に格納されている値を、停止スケジュールテーブル１４００にコピーする。このとき、スケジューリングプログラム２１３は、ステップ１９０５において算出された値のうち、管理者設定テーブル１３００に「ａｕｔｏ」が格納されている項目に対応する値を、停止スケジュールテーブル１４００に格納する。
【０１９７】
さらに、ステップ１９０８において、スケジューリングプログラム２１３は、更新した停止スケジュールテーブル１４００の値のうち、自ノード１１０に対応する値（すなわち、自ノード１１０に対応する更新された省電力レベル１４０２、１４０３及び１４０４の値）を、他ノード１１０に送信する。これらの値を受信した他ノード１１０は、受信した値を、その他ノード１１０が保持する停止スケジュールテーブル１４００の、送信元ノード１１０に対応するエントリに格納する。このように値を相互に通信することによって、全ノード１１０が保持する停止スケジュールテーブル１４００の内容が整合する。
【０１９８】
その後、スケジューリングプログラム２１３は、ステップ１９０２に戻り、ステップ１９０２以降の処理を繰り返し実行する。
【０１９９】
図２０は、本発明の第１の実施形態の監視プログラム２１２が実行する処理のフローチャートである。
【０２００】
最初に、監視プログラム２１２は、全ノード１１０の停止スケジュール（すなわち、停止スケジュールテーブル１４００の内容）を読み出す（ステップ２００１）。
【０２０１】
次に、監視プログラム２１２は、ステップ２００１において読み出された停止スケジュールに基づいて、自ノード１１０が停止すべきタイミングが到来したか否かを判定する（ステップ２００２）。具体的には、現在時刻が、自ノード１１０に対応する省電力時刻１４０３に到達した場合、監視プログラム２１２は、自ノード１１０が停止すべきタイミングが到来したと判定する。例えば、図７に示す時点のノード１１０Ｃ及び図８に示す時点のノード１１０Ｂの監視プログラム２１２は、自ノード１１０が停止すべきタイミングが到来したと判定する。
【０２０２】
ただし、例えば図１に示すシステムにおいて、自ノード１１０のみが稼動モードである場合、停止スケジュールにかかわらず、監視プログラム２１２は、自ノード１１０が停止すべきタイミングが到来していないと判定してもよい。
【０２０３】
ステップ２００２において、自ノード１１０が停止すべきタイミングが到来したと判定された場合、監視プログラム２１２は、パス切り替え要求を他ノード１１０のＬＵパス設定プログラム２１１に送信する（ステップ２００３）。この切り替え要求は、図７及び図８に示す引き継ぎ要求に含まれる。
【０２０４】
次に、監視プログラム２１２は、自ノード１１０を停止スケジュールテーブル１４００に設定された省電力レベルに遷移させる（ステップ２００４）。その結果、自ノード１１０によるＮＡＳクライアント１６０へのサービスの提供は停止する。
【０２０５】
一方、ステップ２００２において、自ノード１１０が停止すべきタイミングが到来していないと判定された場合、監視プログラム２１２は、他ノード１１０を起動させるべきタイミングが到来したか否かを判定する（ステップ２００５）。具体的には、現在時刻が、他ノード１１０に対応する復帰時刻１４０４に到達した場合、監視プログラム２１２は、他ノード１１０を起動させるべきタイミングが到来したと判定する（図９参照）。加えて、監視プログラム２１２は、自ノード１１０に障害が発生した場合、及び、自ノード１１０の負荷が所定の閾値より高くなった場合にも、他ノード１１０を起動させるべきタイミングが到来したと判定する（図１０及び図１１参照）。
【０２０６】
ステップ２００５において、他ノード１１０を起動させるべきタイミングが到来したと判定された場合、監視プログラム２１２は、他ノード１１０に起動要求を送信する（ステップ２００６）（図９〜図１１参照）。
【０２０７】
一方、ステップ２００５において、他ノード１１０を起動させるべきタイミングが到来していないと判定されたか、又は、ステップ２００６が実行された場合、処理はステップ２００１に戻る。以後、監視プログラム２１２は、ステップ２００１以降の処理を繰り返し実行する。
【０２０８】
図２１は、本発明の第１の実施形態のＬＵパス設定プログラム２１１が実行する処理のフローチャートである。
【０２０９】
最初に、ＬＵパス設定プログラム２１１は、他ノード１１０の状態を監視する（２１０１）。例えば、ＬＵパス設定プログラム２１１は、全ての他ノード１１０に所定の状態監視要求を送信し、その要求に対する応答に基づいて他ノード１１０の状態を監視してもよい。
【０２１０】
次に、ＬＵパス設定プログラム２１１は、停止していた他ノード１１０が起動したか否か（すなわち、他ノード１１０の少なくとも一つが、省電力モードから稼動モードに遷移したか否か）を判定する（ステップ２１０２）。
【０２１１】
ステップ２１０２において、停止していた他ノード１１０が起動したと判定された場合、ＬＵパス設定プログラム２１１は、新たに起動したノード１１０が新たに管理するＬＵ１２９に設定されていたパス３０１を無効化する。例えば、図９に示すように、ノード１１０Ｂが新たに起動した場合、ノード１１０Ａがこれまで管理していたＬＵ１２９Ｂは、新たにノード１１０Ｂに管理される。この場合、ノード１１０ＡのＬＵパス設定プログラム２１１は、パス３０１Ｂを無効化する。
【０２１２】
ステップ２１０２において、停止していた他ノード１１０が起動していないと判定されたか、又は、ステップ２１０３が実行された場合、ＬＵパス設定プログラム２１１は、他ノード１１０からパス切り替え要求を受信したか否かを判定する（ステップ２１０４）。このパス切り替え要求は、図２０のステップ２００３において送信されるものである。
【０２１３】
ステップ２１０４において、パス切り替え要求を受信したと判定された場合、ＬＵパス設定プログラム２１１は、受信したパス切り替え要求に従ってパス３０１を有効化する。例えば、図７の例において、ノード１１０Ｃから引き継ぎ要求を受信したノード１１０ＡのＬＵパス設定プログラム２１１は、その引き継ぎ要求に含まれるパス切り替え要求に従って、パス３０１Ｃを有効化する。
【０２１４】
一方、ステップ２１０４において、パス切り替え要求を受信していないと判定されたか、又は、ステップ２１０５が実行された場合、処理はステップ２１０１に戻る。以後、ＬＵパス設定プログラム２１１は、ステップ２１０１以降の処理を繰り返し実行する。
【０２１５】
以上に説明した本発明の第１の実施形態では、各ノード１１０の停止スケジュールは、原則として、所定の条件に従って個別に設定される。その結果、各ノード１１０は、そのノード１１０に設定された省電力時刻１４０３が到来すると、他のノード１１０が稼動モードであるか否かにかかわらず、省電力モードに遷移する。
【０２１６】
しかし、このように個別に設定された停止スケジュールに基づく代わりに、ディスクサブシステム１００全体に設定された状態に基づいて、各ノード１１０の状態が決定されてもよい。
【０２１７】
図２２は、本発明の実施の形態において、ディスクサブシステム１００全体に設定された状態に基づいて決定されるノード１１０の状態の例を示す説明図である。
【０２１８】
例えば、ディスクサブシステム１００が受信するアクセス要求の頻度が高い場合、それらのアクセス要求による負荷を分散することによって性能低下を防ぐために、全てのノード１１０が稼動することが望ましい。一方、ディスクサブシステム１００が受信するアクセス要求の頻度が低い場合、より少ない数のノード１１０でもアクセス要求を処理することができる。アクセス要求の頻度が十分に低い場合には、一つのノード１１０（例えば、図２２のノード１１０Ｘ）のみが稼動していれば、全てのアクセス要求を処理することができる。
【０２１９】
このように、アクセス頻度等が所定の条件を満たす場合に、一つのノード１１０のみを稼動モードに設定し、他のノードを省電力モードに設定することによって、ディスクサブシステム１００が消費する電力を最小限に抑えることができる。
【０２２０】
しかし、アクセス要求の頻度が低い場合であっても、例えば、夜間にバッチジョブが実行される場合のように、高い信頼性を要求される場合がある。このような場合には、常に少なくとも二つのノード１１０が稼動していることが望ましい。二つのノード１１０（例えば、図２２のノード１１０Ｘ及び１１０Ｙ）が稼動していれば、それらのうち一方に障害が発生しても、直ちに他のノード１１０が処理を引き継ぐことによって、アクセス処理の中断を防ぐことができるためである。
【０２２１】
上記のように、消費電力を最小限に抑えるために一つのノード１１０のみを稼動モードに設定した状態を、以下の説明において省電力優先モードと記載する。一方、信頼性を確保するために少なくとも二つのノード１１０を稼動モードに設定した状態を、以下の説明において信頼性優先モードと記載する。これらに対して、全ノード１１０が稼動している状態を全ノード稼動モードと記載する。全ノード稼動モードは、消費電力の削減よりも、処理性能及び信頼性が優先されるモードである。これらのモードは、上記のように、計算機システムに設定された状態を示している。
【０２２２】
信頼性優先モードにおいて、稼動している二つのノード１１０は、状態（すなわち、障害が発生したか否か）を互いに監視し合う。そして、一方のノード１１０に障害が発生した場合、その障害が発生したノード１１０が提供していたサービスをもう一方のノード１１０が引き継ぐ。このように相互に監視し合うノード１１０の組を、以下の説明においてフェールオーバペアと記載する。
【０２２３】
図２３は、本発明の第１の実施形態の各ノード１１０が保持する優先モードポリシーテーブル２３００の説明図である。
【０２２４】
優先モードポリシーテーブル２３００は、制御情報２１４の一部として各ノード１１０のメモリ２０４に格納される。
【０２２５】
優先モードポリシーテーブル２３００は、モード２３０１及び条件２３０２を含む。
【０２２６】
モード２３０１は、ディスクサブシステム１００に設定され得る状態を示す。例えば、図２３に示すように、「全ノード稼動モード」、「信頼性優先モード」及び「省電力優先モード」のいずれかがディスクサブシステム１００に設定され得る。
【０２２７】
条件２３０２は、モード２３０１に示す状態がディスクサブシステム１００に設定される条件である。すなわち、条件２３０２に示す条件が満たされる場合、その条件２３０２に対応する状態がディスクサブシステム１００に設定される。
【０２２８】
例えば、図２３では、モード２３０１の値「信頼性優先」に対応する条件２３０２として、「（Ｘ３＜ＣＰＵ負荷＜Ｘ４）ＡＮＤ（Ｙ３＜Ｉ／Ｏ負荷＜Ｙ４）ＡＮＤ（Ｚ３＜ファイルアクセス数＜Ｚ４）」が格納されている。ここで、Ｘ３、Ｘ４、Ｙ３、Ｙ４、Ｚ３及びＺ４は、例えばＮＡＳ管理者によってあらかじめ定められた閾値である。同様に、Ｘ１〜Ｘ８、Ｙ１〜Ｙ８及びＺ１〜Ｚ８も、ＮＡＳ管理者によってあらかじめ定められた閾値である。この場合、スケジューリングプログラム２１３は、収集情報テーブル１２００及び優先モードポリシーテーブル２３００を参照して、負荷が上記の条件を満たす時刻にディスクサブシステム１００が信頼性優先モードに設定されるように優先モードスケジュールテーブル２４００（後述）を作成してもよい。
【０２２９】
図２４は、本発明の第１の実施形態の各ノード１１０が保持する優先モードスケジュールテーブル２４００の説明図である。
【０２３０】
優先モードスケジュールテーブル２４００は、制御情報２１４の一部として各ノード１１０のメモリ２０４に格納される。
【０２３１】
優先モードスケジュールテーブル２４００は、時間２４０１及びモード２４０２を含む。
【０２３２】
時間２４０１に示す時間にディスクサブシステム１００に設定される状態が、モード２４０２として格納される。
【０２３３】
例えば、収集情報テーブル１２００を参照した結果、１７：００から２０：００までの間に取得された負荷情報等が条件「（Ｘ３＜ＣＰＵ負荷＜Ｘ４）ＡＮＤ（Ｙ３＜Ｉ／Ｏ負荷＜Ｙ４）ＡＮＤ（Ｚ３＜ファイルアクセス数＜Ｚ４）」を満たしていると判定された場合、時間２４０１の値「１７：００〜２０：００」に対応するモード２４０２として「信頼性優先」が格納される。
【０２３４】
なお、上記の図２３及び図２４の説明では、ディスクサブシステム１００に設定される状態が、各ノード１１０の負荷情報等に基づいて決定される。しかし、ディスクサブシステム１００に設定される状態は、別の方法によって定められてもよい。例えば、スケジューリングプログラム２１３は、高い信頼性を要求される処理が実行される時間帯に信頼性優先モードが設定されるように優先モードスケジュールテーブル２４００を作成してもよい。
【０２３５】
より具体的には、例えば高い信頼性を要求される処理を実行するＮＡＳクライアント１６０が限定されている場合、スケジューリングプログラム２１３は、ファイルアクセス情報テーブル１７００を参照して、高い信頼性を要求される処理を実行するＮＡＳクライアント１６０からのアクセス要求を受信する時間帯に信頼性優先モードが設定されるように優先モードスケジュールテーブル２４００を作成してもよい。
【０２３６】
あるいは、ＮＡＳ管理者が、各時間帯に実行する処理の種類に応じて、手動で優先モードスケジュールテーブル２４００を作成してもよい。
【０２３７】
図２５は、本発明の第１の実施形態の監視プログラム２１２が、ディスクサブシステム１００全体に設定された状態に基づいて実行する処理のフローチャートである。
【０２３８】
最初に、監視プログラム２１２は、優先モードスケジュールテーブル２４００を読み出す（ステップ２５０１）。
【０２３９】
次に、監視プログラム２１２は、自ノード１１０が停止すべきタイミングが到来したか否かを判定する（ステップ２５０２）。ステップ２５０２において実行される処理の例については、後で詳細に説明する（図２６参照）。
【０２４０】
ステップ２５０２において、自ノード１１０が停止すべきタイミングが到来したと判定された場合、監視プログラム２１２は、パス切り替え要求を他ノード１１０のＬＵパス設定プログラム２１１に送信する（ステップ２５０３）。この切り替え要求は、図７及び図８に示す引き継ぎ要求に含まれる。
【０２４１】
次に、監視プログラム２１２は、自ノード１１０がフェールオーバペアに属しているか否かを判定する（ステップ２５０４）。具体的には、監視プログラム２１２は、ＮＡＳ管理テーブル１６００（図１６）を参照する。自ノード１１０に対応するフェールオーバペア１６１２に他ノード１１０の識別子が格納されている場合、自ノード１１０がフェールオーバペアに属していると判定される。
【０２４２】
図１６の例では、ノード１１０Ａ（ＮＡＳ−０１）及びノード１１０Ｂ（ＮＡＳ−０２）が一つのフェールオーバペアを構成している。この場合、ノード１１０Ａ及びノード１１０Ｂの監視プログラム２１２は、ステップ２５０４において、自ノード１１０がフェールオーバペアに属していると判定する。
【０２４３】
ステップ２５０４において、自ノード１１０がフェールオーバペアに属していると判定された場合、ディスクサブシステム１００は信頼性優先モードに設定されている。ここで自ノード１１０が停止すると、フェールオーバペアに属するもう一方のノード１１０を監視するノード１１０が存在しなくなるため、信頼性が低下する。監視プログラム２１２は、信頼性を維持するために、自ノード１１０が停止する前に、自ノード１１０を含まない新たなフェールオーバペアを生成する必要がある。このため、監視プログラム２１２は、フェールオーバペア変更要求を他ノード１１０の監視プログラムに送信する（ステップ２５０５）。
【０２４４】
ステップ２５０４において、自ノード１１０がフェールオーバペアに属していないと判定されたか、又は、ステップ２５０５が実行された場合、監視プログラム２１２は、自ノード１１０を省電力モードに遷移させる（ステップ２５０６）。
【０２４５】
ステップ２５０２において、自ノード１１０が停止すべきタイミングが到来していないと判定された場合、監視プログラム２１２は、他ノード１１０を起動させるべきタイミングが到来したか否かを判定する（ステップ２５０７）。ステップ２５０７において実行される処理の例については、後で詳細に説明する（図２７参照）。
【０２４６】
ステップ２５０７において、他ノード１１０を起動させるべきタイミングが到来していないと判定された場合、処理はステップ２５１１に進む。
【０２４７】
一方、ステップ２５０７において、他ノード１１０を起動させるべきタイミングが到来したと判定された場合、監視プログラム２１２は、他ノード１１０に起動要求を送信する（ステップ２５０８）（図９〜図１１参照）。
【０２４８】
次に、監視プログラム２１２は、フェールオーバペアに属するノード１１０に障害が発生したか否かを判定する（ステップ２５０９）。
【０２４９】
ステップ２５０９において、フェールオーバペアに属するノード１１０に障害が発生していないと判定された場合、フェールオーバペアを変更する必要がないため、処理はステップ２５１１に進む。
【０２５０】
一方、ステップ２５０９において、フェールオーバペアに属するノード１１０に障害が発生したと判定された場合、信頼性を維持するために、フェールオーバペアを変更する必要がある。このため、監視プログラム２１２は、ステップ２５０８において起動したノード１１０にフェールオーバペア変更要求を送信する（ステップ２５１０）。
【０２５１】
次に、監視プログラム２１２は、フェールオーバペア変更要求を受信したか否かを判定する（ステップ２５１１）。具体的には、監視プログラム２１２は、他ノード１１０の監視プログラム２１２がステップ２５０５又はステップ２５１０において送信したフェールオーバペア変更要求を受信したか否かを判定する。
【０２５２】
ステップ２５１１において、フェールオーバペア変更要求を受信したと判定された場合、監視プログラム２１２は、フェールオーバペアを変更する（ステップ２５１２）。
【０２５３】
具体的には、監視プログラム２１２は、他ノード１１０の監視プログラム２１２がステップ２５０５において送信したフェールオーバペア変更要求を受信した場合、そのフェールオーバペア変更要求の送信元以外の、現在稼動しているノード１１０（例えば、ステップ２５０８において起動したノード１１０）と自ノード１１０とを含む新たなフェールオーバペアを生成する。
【０２５４】
あるいは、監視プログラム２１２は、他ノード１１０の監視プログラム２１２がステップ２５１０において送信したフェールオーバペア変更要求を受信した場合、そのフェールオーバペア変更要求の送信元であるノード１１０と自ノード１１０とを含む新たなフェールオーバペアを生成する。
【０２５５】
ステップ２５１２が実行された後、処理はステップ２５０１に戻る。その後、監視プログラム２１２は、ステップ２５０１以降の処理を繰り返し実行する。
【０２５６】
ステップ２５１１において、フェールオーバペア変更要求を受信していないと判定された場合、監視プログラム２１２は、ステップ２５１２を実行せずにステップ２５０１に戻る。
【０２５７】
図２６は、本発明の第１の実施形態の監視プログラム２１２が自ノード１１０を停止すべきタイミングを判定するために実行する処理のフローチャートである。
【０２５８】
具体的には、図２６は、図２５のステップ２５０２において監視プログラム２１２が実行する処理の例を示す。
【０２５９】
最初に、監視プログラム２１２は、ディスクサブシステム１００に現在設定されているモードを判定する（ステップ２６０１）。
【０２６０】
ステップ２６０１において、ディスクサブシステム１００が省電力優先モードであると判定された場合、監視プログラム２１２は、ディスクサブシステム１００に含まれるノード１１０の中で、自ノード１１０の負荷が最も高いか否かを判定する（ステップ２６０２）。
【０２６１】
ステップ２６０２において、自ノード１１０の負荷が最も高いと判定された場合、監視プログラム２１２は、自ノード１１０を停止すべきタイミングが到来していないと判定する（ステップ２６０５）。
【０２６２】
一方、ステップ２６０２において、自ノード１１０の負荷が最も高くない（すなわち、自ノード１１０の負荷が、他ノード１１０の少なくとも一つの負荷より低い）と判定された場合、監視プログラム２１２は、自ノード１１０を停止すべきタイミングが到来したと判定する（ステップ２６０４）。
【０２６３】
このように、ディスクサブシステム１００が省電力優先モードである場合、最も負荷が高いノード１１０以外のノード１１０は、停止すべきであると判定される。
【０２６４】
ステップ２６０１において、ディスクサブシステム１００が信頼性優先モードであると判定された場合、監視プログラム２１２は、ディスクサブシステム１００に含まれるノード１１０の中で、自ノード１１０の負荷が最も低いか否かを判定する（ステップ２６０３）。
【０２６５】
ステップ２６０３において、自ノード１１０の負荷が最も低くないと判定された場合、監視プログラム２１２は、自ノード１１０を停止すべきタイミングが到来していないと判定する（ステップ２６０５）。
【０２６６】
一方、ステップ２６０３において、自ノード１１０の負荷が最も低いと判定された場合、監視プログラム２１２は、自ノード１１０を停止すべきタイミングが到来したと判定する（ステップ２６０４）。ただし、ディスクサブシステム１００において稼動しているノード１１０の数が２以下である場合、監視プログラム２１２は、自ノード１１０を停止すべきタイミングが到来していないと判定する（ステップ２６０５）。
【０２６７】
このように、ディスクサブシステム１００が信頼性優先モードである場合、少なくとも二つのノード１１０が稼動するように、最も負荷が低いノード１１０は、停止すべきであると判定される。
【０２６８】
なお、ステップ２６０２及び２６０３において判定される「負荷」は、各ノード１１０の負荷を示す指標であれば、どのようなものであってもよい。例えば、この負荷は、収集情報テーブル１２００に格納されるＣＰＵ負荷、Ｉ／Ｏ負荷及びファイルアクセス数のうちいずれか一つ、又は、これらの値から算出された指標であってもよい。
【０２６９】
図２７は、本発明の第１の実施形態の監視プログラム２１２が他ノード１１０を起動すべきタイミングを判定するために実行する処理のフローチャートである。
【０２７０】
具体的には、図２７は、図２５のステップ２５０７において監視プログラム２１２が実行する処理の例を示す。
【０２７１】
監視プログラム２１２は、ディスクサブシステム１００の状態が信頼性優先モード又は省電力優先モードから全ノード稼動モードに遷移したか否かを判定する（ステップ２７０１）。
【０２７２】
ステップ２７０１において、ディスクサブシステム１００の状態が信頼性優先モード又は省電力優先モードから全ノード稼動モードに遷移したと判定された場合、監視プログラム２１２は、他ノードを起動するべきタイミングが到来したと判定する（ステップ２７０５）。
【０２７３】
一方、ステップ２７０１において、ディスクサブシステム１００の状態が信頼性優先モード又は省電力優先モードから全ノード稼動モードに遷移していないと判定された場合、監視プログラム２１２は、ディスクサブシステム１００の状態が省電力優先モードから信頼性優先モードに遷移したか否かを判定する（ステップ２７０２）。
【０２７４】
ステップ２７０２において、ディスクサブシステム１００の状態が省電力優先モードから信頼性優先モードに遷移したと判定された場合、監視プログラム２１２は、他ノードを起動するべきタイミングが到来したと判定する（ステップ２７０５）。
【０２７５】
一方、ステップ２７０２において、ディスクサブシステム１００の状態が省電力優先モードから信頼性優先モードに遷移していないと判定された場合、監視プログラム２１２は、フェールオーバペアに属するノード１１０に障害が発生したか否かを判定する（ステップ２７０３）。
【０２７６】
ステップ２７０３において、フェールオーバペアに属するノード１１０に障害が発生したと判定された場合、監視プログラム２１２は、他ノードを起動するべきタイミングが到来したと判定する（ステップ２７０５）。
【０２７７】
一方、ステップ２７０３において、フェールオーバペアに属するノード１１０に障害が発生していないと判定された場合、監視プログラム２１２は、他ノードを起動するべきタイミングが到来していないと判定する（ステップ２７０４）。
【０２７８】
以上、本発明の第１の実施形態によれば、要求される処理性能、信頼性又は消費電力等に基づいて、計算機システムの消費電力を最適に制御することができる。具体的には、要求される性能及び信頼性が損なわれない範囲内で、消費電力を最大限削減することができる。
【０２７９】
次に、本発明の第２の実施形態について説明する。
【０２８０】
図２８は、本発明の第２の実施形態の計算機システムのハードウェア構成を示すブロック図である。
【０２８１】
本実施形態の計算機システムは、一つ以上のＮＡＳクライアント１６０、及び、ＮＡＳクライアント１６０とＬＡＮ１８０を介して接続された複数のディスクサブシステム１００を備える。図２８に示すディスクサブシステム１００Ａ〜１００Ｄの各々は、複数のディスクサブシステム１００の一つである。
【０２８２】
ディスクサブシステム１００Ａは、図１のディスクサブシステム１００に相当する。すなわち、図２８のストレージネットワーク１３０Ａ及びＬＵ１２９Ａは、それぞれ、図１のストレージネットワーク１３０及びＬＵ１２９に相当する。このため、ディスクサブシステム１００Ａについての説明は省略する。なお、図２８において、ディスクコントローラ１２１及びディスクドライブ１２８は、図示を省略する。
【０２８３】
ディスクサブシステム１００Ｂ〜１００Ｄは、それぞれ、ディスクサブシステム１００Ａと同様である。すなわち、ノード１１０Ｄ〜１１０Ｆは、ノード１１０Ａと同様である。ストレージネットワーク１３０Ｂ〜１３０Ｄは、ストレージネットワーク１３０Ａと同様である。ディスク装置１２０Ｂ〜１２０Ｄは、ディスク装置１２０Ａと同様である。ＬＵ１２９Ｄ〜１２９Ｆは、ＬＵ１２９Ａと同様である。このため、ディスクサブシステム１００Ｂ〜１００Ｄについての説明も省略する。
【０２８４】
なお、図１において説明したように、各ディスクサブシステム１００が単一の筐体に含まれる必要はない。
【０２８５】
ストレージネットワーク１３０Ａ〜１３０Ｄは、相互に接続されていない。このため、あるノード１１０と、そのノード１１０が属するディスクサブシステム１００以外のディスクサブシステム１００に属するＬＵ１２９との間に、パス３０１を設定することができない。すなわち、例えば、ノード１１０Ａは、いずれかのストレージネットワーク１３０を介してＬＵ１２９Ｄにアクセスすることができない。
【０２８６】
図２８には、一つのディスクサブシステム１００に一つのノード１１０及び一つのＬＵ１２９が図示されている。しかし、各ディスクサブシステム１００は、任意の数のノード１１０及び任意の数のＬＵ１２９を備えることができる。
【０２８７】
次に、本実施形態の概要を、図２９及び図３０を参照して説明する。
【０２８８】
図２９は、本発明の第２の実施形態の計算機システムにおいて、相互に関連のある複数のファイルがそれぞれ異なるディスクサブシステム１００に格納されている例を示す説明図である。
【０２８９】
具体的には、図２９の例では、ディスクサブシステム１００ＡのＬＵ１２９Ａにファイル３０３Ｅが格納され、ディスクサブシステム１００ＢのＬＵ１２９Ｄにファイル３０３Ｆが格納され、ディスクサブシステム１００ＣのＬＵ１２９Ｅにファイル３０３Ｇが格納される。なお、図２９の計算機システムは図２８に示したものに対応するが、説明に必要のない部分（例えば、ストレージネットワーク１３０）は省略されている。
【０２９０】
ノード１１０ＡとＬＵ１２９Ａとの間に通信可能なパスが設定されている。ノード１１０ＤとＬＵ１２９Ｄとの間に通信可能なパスが設定されている。ノード１１０ＥとＬＵ１２９Ｅとの間に通信可能なパスが設定されている。
【０２９１】
ファイル３０３Ｅ及びファイル３０３Ｆは、それぞれ、ファイル名「ＨＴＭＬ−１」及び「ＨＴＭＬ−２」によって識別されるＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）ファイルである。ファイル３０３Ｇは、ファイル名「ＤＡＴＡ−１」によって識別されるデータファイルである。
【０２９２】
ファイル３０３Ｅには、ファイル３０３Ｆへのリンクが埋め込まれている。ファイル３０３Ｆには、ファイル３０３Ｇへのリンクが埋め込まれている。すなわち、ノード１１０Ａがファイル３０３Ｅにアクセスすると、その結果、ファイル３０３Ｆへのアクセスが必要になる場合がある。さらに、ファイル３０３Ｆにアクセスする結果、ファイル３０３Ｇへのアクセスが必要になる場合がある。
【０２９３】
ノード１１０ＡとＬＵ１２９Ｄとの間に通信可能なパス３０１を設定することができれば、ノード１１０Ａはそのパス３０１を介してＬＵ１２９Ｄ内のファイル３０３Ｆにアクセスすることができる。しかし、上記のように、ノード１１０ＡとＬＵ１２９Ｄとの間には通信可能なパス３０１を設定することができない。このため、ノード１１０Ａは、ノード１１０Ｄを介してファイル３０３Ｆにアクセスする必要がある。
【０２９４】
ノード１１０Ｄが稼動していれば、ノード１１０Ａは、ノード１１０Ｄを介してファイル３０３Ｆにアクセスすることができる。しかし、ノード１１０Ｄが省電力モードである場合、ノード１１０Ａは、ノード１１０Ｄを起動する（すなわち、稼動モードに遷移させる）必要がある。このため、ノード１１０Ｄの起動に要する時間だけ、ファイル３０３Ｆへのアクセスが遅延する。
【０２９５】
同様の問題は、ノード１１０Ｅが省電力モードである場合、ファイル３０３Ｇにアクセスする際にも発生する。
【０２９６】
この問題は、ノード１１０に設定されている省電力レベルの値が大きいほど深刻である。図４に示すように、省電力レベルの値が大きい（すなわち、削減される電力が大きい）ほど、省電力モードから稼動モードに復帰するために必要な時間が長くなるためである。
【０２９７】
図２９の例では、ノード１１０Ｄ、１１０Ｅ及び１１０Ｆに、それぞれ、省電力レベル１、２及び３が設定されている。この場合、ノード１１０Ｄの復帰に要する時間よりノード１１０Ｅの復帰に要する時間が長く、ノード１１０Ｆの復帰に要する時間はさらに長い。
【０２９８】
図３０は、本発明の第２の実施形態の計算機システムにおいて、相互に関連のある複数のファイルが同一のディスクサブシステム１００に格納されている例を示す説明図である。
【０２９９】
図２９に示すように、相互にリンクが設定された複数のファイル３０３が複数のディスクサブシステム１００に格納されている場合、それらのファイル３０３を、稼動しているノード１１０からパス３０１を介してアクセス可能なＬＵ１２９に移動することによって、アクセスの遅延を防ぐことができる。
【０３００】
図３０の例では、ファイル３０３Ｆ及び３０３Ｇが、いずれも、ファイル３０３Ｅを格納しているものと同一のＬＵ１２９Ａに格納されている。この場合、ノード１１０Ａは、通信可能に設定されたパス３０１を介して、ファイル３０３Ｅ〜３０３Ｇにアクセスすることができる。
【０３０１】
図３１は、本発明の第２の実施形態の監視プログラム２１２がファイル３０３を移動するために実行する処理のフローチャートである。
【０３０２】
本実施形態の監視プログラム２１２は、第１の実施形態の監視プログラム２１２と同様の処理（図２０及び図２５〜図２７参照）に加えて、図３１に示すファイル移動処理を実行する。このファイル移動処理は、図２９に示すように複数のディスクサブシステム１００に格納された、相互にリンクが設定された複数のファイル３０３を、図３０に示すように、一つのディスクサブシステム１００内のＬＵ１２９に移動する処理である。
【０３０３】
最初に、監視プログラム２１２は、ファイルアクセス情報テーブル１７００を参照し、他ノード１１０からアクセスされたファイル３０３を抽出する（ステップ３１０１）。
【０３０４】
例えば、ノード１１０Ｄが、図１７に示すファイルアクセス情報テーブル１７００を保持している場合、ノード１１０Ｄの監視プログラム２１２は、ファイルアクセス情報テーブル１７００のアクセス元１７０４として他ノード１１０Ａの識別子「ＮＡＳ−０１」が格納されているエントリのファイル１７０１の値「ｍｎｔ／ＦＳ２／ＨＴＭＬ−２．ｈｔｍｌ」を抽出する。このエントリは、ファイル名「ＨＴＭＬ−２．ｈｔｍｌ」によって識別されるファイル３０３Ｆが、他ノード１１０Ａからアクセスされたことを示している。このことは、ノード１１０Ａがアクセス可能ないずれかのファイル３０３と、ノード１１０Ｄがアクセス可能なノード１１０Ｄとの間に関連がある（例えば相互にリンクが設定されている）可能性が高いことを意味する。
【０３０５】
このため、次に、監視プログラム２１２は、ステップ３１０１において抽出されたファイル３０３を、アクセス元のノード１１０にコピーする（ステップ３１０２）。例えば、上記の図１７の例では、ノード１１０Ｄの監視プログラム２１２は、ファイル３０３Ｆの複製を作成する要求をノード１１０Ａに送信する。その結果、ファイル３０３Ｆの複製が、ノード１１０Ａがパス３０１を介してアクセス可能なＬＵ１２９（例えば、図３０に示すＬＵ１２９Ａ）にコピーされる。なお、図３０には、作成されたファイル３０３Ｆの複製をファイル３０３Ｆと表示している。
【０３０６】
複製の作成が終了した後、ＬＵ１２９Ｄからファイル３０３Ｆが削除されてもよいし、削除されなくてもよい。
【０３０７】
次に、監視プログラム２１２は、自ノード１１０を省電力モードに遷移させる（ステップ３１０３）。
【０３０８】
上記のファイル移動処理は、図２０のステップ２００４又は図２５のステップ２５０６において実行されてもよい。あるいは、ファイル移動処理は、所定のタイミングで（例えば定期的に）各ノード１１０の監視プログラム２１２によって実行されてもよい。
【０３０９】
上記のファイル移動処理がステップ２００４又はステップ２５０６において実行される場合、監視プログラム２１２は、自ノード１１０がこれから遷移する省電力レベルに基づいて、複製の作成の要否を判定してもよい。具体的には、監視プログラム２１２は、ステップ３１０１を実行する前に、自ノード１１０がこれから遷移する省電力レベルを判定してもよい。その結果、自ノード１１０がこれから省電力レベル３に遷移すると判定された場合、監視プログラム２１２は、ステップ３１０１〜３１０３を実行してもよい。一方、自ノード１１０がこれから省電力レベル１又は２に遷移すると判定された場合、監視プログラム２１２は、ステップ３１０１〜３１０２を実行せずに、ステップ３１０３を実行してもよい。
【０３１０】
なお、ノード１１０のスペック（例えば、記憶容量）の制限等によって、図３０に示すように一つのノード１１０の管理下に関連する複数のファイル３０３を集約することができない場合がある。この場合、アクセスの遅延の影響がより少なくなるようにファイル３０３を配置することが望ましい。
【０３１１】
例えば、図２９に示すように、ファイル３０３Ｅにファイル３０３Ｆへのリンクが埋め込まれ、ファイル３０３Ｆにファイル３０３Ｇへのリンクが埋め込まれている場合について説明する。この場合、ファイル３０３Ｅがアクセスされれば必ずファイル３０３Ｆへのアクセスが発生するとは限らない。同様に、ファイル３０３Ｆがアクセスされれば必ずファイル３０３Ｇへのアクセスが発生するとは限らない。このため、ファイル３０３Ｆ及びファイル３０３Ｇが独立にアクセスを受けない限り、ファイル３０３Ｅへのアクセス頻度が最も高く、ファイル３０３Ｇへのアクセス頻度が最も低くなる。
【０３１２】
このような場合、アクセス頻度がより低いファイル３０３を、省電力レベルの値がより大きいノード１１０の管理下に配置することによって、アクセス遅延の影響を最小限に抑えることができる。例えば、図２９に示すように、最もアクセス頻度が高いファイル３０３Ｅが、稼動しているノード１１０Ａの管理下に配置され、２番目にアクセス頻度が高いファイル３０３Ｆが、省電力レベル１に設定されたノード１１０Ｄの管理下に配置され、最もアクセス頻度が低いファイル３０３Ｇが、省電力レベル２に設定されたノード１１０Ｅの管理下に配置される。
【０３１３】
この場合、ノード１１０Ｅの起動に要する時間は、ノード１１０Ｄの起動に要する時間より長い。しかし、ノード１１０Ｅの起動が必要になる頻度は、ノード１１０Ｄの起動が必要になる頻度より低い。このため、アクセスの遅延が発生する頻度が抑制される。
【０３１４】
以上、本発明の第２の実施形態によれば、相互にリンクが設定された複数のファイル３０３を一つのディスクサブシステム１００にまとめて格納することができる。その結果、リンクに従ってファイル３０３がアクセスされる場合にも、省電力モードに設定されているノード１１０を起動する必要がなくなる。このため、アクセスの遅延を防ぐことができ、さらに、ノード１１０を起動することによる消費電力の増大を防ぐことができる。
【図面の簡単な説明】
【０３１５】
【図１】本発明の第１の実施形態の計算機システムのハードウェア構成を示すブロック図である。
【図２】本発明の第１の実施形態のノードのハードウェア構成を示すブロック図である。
【図３】本発明の第１の実施形態において実行される処理の前提となる計算機システムの構成を示す説明図である。
【図４】本発明の第１の実施形態のノードに設定される省電力レベルの説明図である。
【図５】本発明の第１の実施形態における省電力レベルの遷移の説明図である。
【図６】本発明の第１の実施形態における停止スケジュール及び省電力方法の設定の説明図である。
【図７】本発明の第１の実施形態において一つのノードが省電力モードに遷移するために実行される処理の説明図である。
【図８】本発明の第１の実施形態においてさらに一つのノードが省電力モードに遷移するために実行される処理の説明図である。
【図９】本発明の第１の実施形態において一つのノードが省電力モードから復帰するために実行される処理の説明図である。
【図１０】本発明の第１の実施形態において稼動しているノードに障害が発生した場合に実行される処理の説明図である。
【図１１】本発明の第１の実施形態において稼動しているノードの負荷が増大した場合に実行される処理の説明図である。
【図１２】本発明の第１の実施形態の各ノードが保持する収集情報テーブルの説明図である。
【図１３】本発明の第１の実施形態の各ノードが保持する管理者設定テーブルの説明図である。
【図１４】本発明の第１の実施形態の各ノードが保持する停止スケジュールテーブルの説明図である。
【図１５】本発明の第１の実施形態の各ノードが保持する省電力レベルポリシーテーブルの説明図である。
【図１６】本発明の第１の実施形態の各ノードが保持するＮＡＳ管理テーブルの説明図である。
【図１７】本発明の第１の実施形態の各ノードが保持するファイルアクセス情報テーブルの説明図である。
【図１８】本発明の第１の実施形態の各ノードの各プログラムが実行する処理の概要の説明図である。
【図１９】本発明の第１の実施形態のスケジューリングプログラムが実行する処理のフローチャートである。
【図２０】本発明の第１の実施形態の監視プログラムが実行する処理のフローチャートである。
【図２１】本発明の第１の実施形態のＬＵパス設定プログラムが実行する処理のフローチャートである。
【図２２】本発明の実施の形態において、ディスクサブシステム全体に設定された状態に基づいて決定されるノードの状態の例を示す説明図である。
【図２３】本発明の第１の実施形態の各ノードが保持する優先モードポリシーテーブルの説明図である。
【図２４】本発明の第１の実施形態の各ノードが保持する優先モードスケジュールテーブルの説明図である。
【図２５】本発明の第１の実施形態の監視プログラムが、ディスクサブシステム全体に設定された状態に基づいて実行する処理のフローチャートである。
【図２６】本発明の第１の実施形態の監視プログラムが自ノードを停止すべきタイミングを判定するために実行する処理のフローチャートである
【図２７】本発明の第１の実施形態の監視プログラムが他ノードを起動すべきタイミングを判定するために実行する処理のフローチャートである。
【図２８】本発明の第２の実施形態の計算機システムのハードウェア構成を示すブロック図である。
【図２９】本発明の第２の実施形態の計算機システムにおいて、相互に関連のある複数のファイルがそれぞれ異なるディスクサブシステムに格納されている例を示す説明図である。
【図３０】本発明の第２の実施形態の計算機システムにおいて、相互に関連のある複数のファイルが同一のディスクサブシステムに格納されている例を示す説明図である。
【図３１】本発明の第２の実施形態の監視プログラムがファイルを移動するために実行する処理のフローチャートである。
【符号の説明】
【０３１６】
１００、１００Ａ〜１００Ｄ  ディスクサブシステム
１１０Ａ〜１１０Ｆ  ノード
１２９、１２９Ａ〜１２９Ｆ  ＬＵ
１６０、１６０Ａ〜１６０Ｅ  ＮＡＳクライアント
２１０  省電力制御プログラム
２１１  ＬＵパス設定プログラム
２１２  監視プログラム
２１３  スケジューリングプログラム
２１４  制御情報
３０１Ａ〜３０１Ｉ  パス
３０３Ａ〜３０３Ｇ  ファイル
【図１】
0005090098.tif 000002
【図２】
0005090098.tif 000003
【図３】
0005090098.tif 000004
【図４】
0005090098.tif 000005
【図５】
0005090098.tif 000006
【図６】
0005090098.tif 000007
【図７】
0005090098.tif 000008
【図８】
0005090098.tif 000009
【図９】
0005090098.tif 000010
【図１０】
0005090098.tif 000011
【図１１】
0005090098.tif 000012
【図１２】
0005090098.tif 000013
【図１３】
0005090098.tif 000014
【図１４】
0005090098.tif 000015
【図１５】
0005090098.tif 000016
【図１６】
0005090098.tif 000017
【図１７】
0005090098.tif 000018
【図１８】
0005090098.tif 000019
【図１９】
0005090098.tif 000020
【図２０】
0005090098.tif 000021
【図２１】
0005090098.tif 000022
【図２２】
0005090098.tif 000023
【図２３】
0005090098.tif 000024
【図２４】
0005090098.tif 000025
【図２５】
0005090098.tif 000026
【図２６】
0005090098.tif 000027
【図２７】
0005090098.tif 000028
【図２８】
0005090098.tif 000029
【図２９】
0005090098.tif 000030
【図３０】
0005090098.tif 000031
【図３１】
0005090098.tif 000032