以下、本発明の実施形態を、図面を参照して説明する。
最初に、本発明の第1の実施形態について説明する。
図1は、本発明の第1の実施形態の計算機システムのハードウェア構成を示すブロック図である。
本実施形態の計算機システムは、一つ以上のNAS(Network Attached Storage)クライアント160、及び、NASクライアント160とLAN(Local Area Network)180を介して接続されたディスクサブシステム100を備える。
ディスクサブシステム100は、ノード110A〜110C及びディスク装置120を備えるNASである。ノード110A〜110C及びディスク装置120は、ストレージネットワーク130を介して相互に接続される。
なお、一つのディスクサブシステム100が単一の筐体に含まれる必要はない。例えば、ノード110A〜110C及びディスク装置120が、それぞれ独立した筐体を有し、それらをストレージネットワーク130によって相互に接続することによってディスクサブシステム100が構成されてもよい。
ノード110A〜110Cは、ディスク装置120をLAN180に接続するための計算機(いわゆるNASサーバ又はNASノード)である。ノード110A等の構成については、後で詳細に説明する(図2参照)。図1のノード110A〜110Cに表示された「NAS−01」〜「NAS−03」は、それぞれ、ノード110A〜110Cの識別子である。
ディスク装置120は、NASクライアント160からの書き込み要求を受信したノード110A〜110Cによって書き込まれたデータを格納する装置である。本実施形態のディスク装置120は、ディスクコントローラ121及び一つ以上のディスクドライブ128を備える。
ディスクドライブ128は、データの記憶領域を提供する記憶装置である。ディスクドライブ128は、例えば、ハードディスクドライブ(HDD)であってもよいが、他の種類の装置(例えば、フラッシュメモリ等の半導体記憶装置)であってもよい。ディスク装置120は、複数のディスクドライブ128を備えてもよい。複数のディスクドライブ128は、RAID(Redundant Arrays of Inexpensive Disks)を構成してもよい。NASクライアント160によって書き込まれたデータは、最終的に、ディスクドライブ128が提供する物理的な記憶領域に格納される。
論理ボリューム(LU)129は、ノード110A〜110Cによって論理的なディスクドライブとして扱われる領域である。LU129の論理的な記憶領域は、ディスクドライブ128の物理的な記憶領域と対応付けられる。一つのLU129の論理的な記憶領域は、一つのディスクドライブ128の物理的な記憶領域と対応付けられてもよいし、複数のディスクドライブ128の物理的な記憶領域と対応付けられてもよい。
ディスクコントローラ121は、ディスク装置120を制御する制御装置である。本実施形態のディスクコントローラ121は、相互に接続されたインターフェース(I/F)122、CPU123、I/F124及びメモリ125を備える。
I/F122は、ディスクコントローラ121をストレージネットワーク130に接続するインターフェースである。ディスクコントローラ121は、I/F122を介して、ストレージネットワーク130に接続されたノード110A等と通信する。
CPU123は、メモリ125に格納されたプログラムを実行するプロセッサである。
I/F124は、ディスクコントローラ121をディスクドライブ128に接続するインターフェースである。ディスクコントローラ121は、I/F124を介して、ディスクドライブ128へのデータの書き込み及び読み出しを実行する。
メモリ125は、例えば半導体メモリであり、CPU123によって実行されるプログラム及びCPU123によって参照されるデータを格納する。本実施形態のメモリ125は、少なくとも、I/O処理部127を格納する。I/O処理部127は、ディスクドライブ128へのデータの書き込み及び読み出しを制御するプログラムモジュールである。
ディスクコントローラ121は、さらに、ディスクドライブ128に書き込まれるデータ及びディスクドライブ128から読み出されるデータを一時的に格納するキャッシュメモリ(図示省略)を備えてもよい。
なお、図1には、ディスク装置120が複数のディスクドライブ128を備える例を示すが、ディスク装置120は、一つのディスクドライブ128のみを備えてもよい。あるいは、ディスク装置120が、ストレージネットワーク130に接続可能なインターフェースを備える一つのディスクドライブ128であってもよい。
ストレージネットワーク130は、ノード110A〜110C及びディスク装置120の間の通信を媒介するネットワークである。ストレージネットワーク130は、任意の種類のネットワークであってよい。例えば、ストレージネットワーク130は、PCIバス又はFC(ファイバーチャネル)ネットワークであってもよい。
なお、以下の説明において、ノード110Aからノード110Cまでを特に区別する必要がない場合、これらを総称してノード110と記載する。
図1には、三つのノード110及び一つのディスク装置120を備える計算機システムを示す。しかし、三つ以上の任意の数のノード110及び一つ以上の任意の数のディスク装置120を備える計算機システムによって本実施形態を実現することができる。
NASクライアント160は、各種アプリケーションを実行する計算機である。本実施形態のNASクライアント160は、CPU161、I/F162及びメモリ163を備える。
CPU161は、メモリ163に格納されたプログラムを実行するプロセッサである。
I/F162は、NASクライアント160をLAN180に接続するインターフェースである。NASクライアント160は、LAN180に接続された装置(例えばノード110)と、I/F162を介して通信する。
メモリ163は、例えば半導体メモリであり、CPU161によって実行されるプログラム及びCPU161によって参照されるデータを格納する。本実施形態のメモリ163は、少なくとも、I/O要求処理部164を格納する。
I/O要求処理部164は、NASクライアント160で稼動するオペレーティングシステム(OS)(図示省略)の一部として提供される。NASクライアント160のOSは、任意のもの(例えば、Windows(登録商標)又はSolaris(登録商標))であってよい。
メモリ163は、さらに、OS上で実行される各種のアプリケーションプログラム(図示省略)を格納する。アプリケーションプログラムが発行した書き込み要求及び読み出し要求は、I/O要求処理部164によって処理される。
本実施形態の計算機システムは、任意の数のNASクライアント160を備えてもよい。また、LAN180は、Wide Area Network(WAN)によって置き換えられてもよいし、LANとWANが混在するネットワークによって置き換えられてもよい。
図2は、本発明の第1の実施形態のノード110のハードウェア構成を示すブロック図である。
図2には、例として、ノード110Aのハードウェア構成を示す。ノード110B及び110Cのハードウェア構成は、ノード110Aのそれと同様であるため、図示及び説明を省略する。
ノード110は、相互に接続されたI/F201、CPU202、I/F203及びメモリ204を備える。
I/F201は、ノード110をLAN180に接続するインターフェースである。ノード110は、LAN180に接続された装置(例えばNASクライアント160)と、I/F201を介して通信する。I/F201は、例えば、いわゆるネットワークインターフェースカード(NIC)である。
CPU202は、メモリ204に格納されたプログラムを実行するプロセッサである。したがって、以下の説明においてメモリ204に格納されたプログラム(例えば、後述する省電力制御プログラム210)が実行する処理は、実際には、CPU202によって実行される。
I/F203は、ノード110をストレージネットワーク130に接続するインターフェースである。ノード110は、I/F203を介してディスク装置120と通信する。I/F203は、例えば、いわゆるホストバスアダプタ(HBA)である。
メモリ204は、例えば半導体メモリであり、CPU202によって実行されるプログラム及びCPU202によって参照されるデータ等を格納する。本実施形態のメモリ204は、CPU202によって実行されるプログラムモジュールとして、少なくとも、省電力制御プログラム210、ファイル共有プログラム220、ファイルシステム処理プログラム230及びデバイスドライバ240を格納する。ファイルシステム処理プログラム230及びデバイスドライバ240は、ノード110において稼動するOS(図示省略)の一部として提供される。
省電力制御プログラム210は、ディスクサブシステム100の消費電力を管理するため、より具体的には、消費電力を削減するためにCPU202によって実行されるプログラムモジュールである。省電力制御プログラム210は、LUパス設定プログラム211、監視プログラム212及びスケジューリングプログラム213の各プログラムモジュールを含む。省電力制御プログラム210は、さらに、制御情報214を管理する。制御情報214は、省電力制御プログラム210の各プログラムモジュールによって参照される種々の情報を含む。制御情報214は、後述するように、例えばテーブル形式のデータとしてメモリ204内に格納される。
省電力制御プログラム210の各プログラムモジュールが実行する処理、及び、制御情報214については、後で詳細に説明する。
ファイル共有プログラム220は、LAN180に接続されるNASクライアント160にファイル共有プロトコルを提供することによって、NASクライアント160間のファイル共有機能を提供する。ファイル共有プロトコルは、例えば、NFS(Network File System)又はCIFS(Common Internet File System)であってもよい。ファイル共有プログラム220は、NASクライアント160からファイル単位のI/O(すなわち読み出し又は書き込み)要求を受けると、その要求に対応したファイル単位のI/Oをファイルシステム(後述)に対して実行する。
ファイルシステム処理プログラム230は、上位層に対して階層構造化された論理ビュー(ディレクトリ、ファイル等)を提供するとともに、これらのビューを物理的なデータ構造(ブロックデータ、ブロックアドレス)に変換して下位層に対するI/O処理を実行する。
デバイスドライバ240は、ファイルシステム処理プログラム230から要求されたブロックI/Oを実行する。
次に、本発明の第1の実施形態の概要を、図3から図10を参照して説明する。
図3は、本発明の第1の実施形態において実行される処理の前提となる計算機システムの構成を示す説明図である。
図3は、図1に示す計算機システムに対応する。ただし、説明に必要のない部分(例えば、ディスクコントローラ121等)の図示は省略する。
ノード110A〜110C及び五つのNASクライアント160A〜160Eは、LAN180を介して相互に接続されている。NASクライアント160A〜160Eの各々は、図1に示す複数のNASクライアント160の一つである。
各NASクライアント160では、種々のアプリケーションプログラムが稼動する。各アプリケーションプログラムは、各ノード110を介して一つ以上のファイルシステム302を使用する。例えば、NASクライアント160Aで稼動するアプリケーションプログラムは、ファイルシステム302A〜302Cを使用する。ファイルシステム302A〜302Cの各々は、複数のファイルシステム302の一つである。各ファイルシステム302は、一つ以上のファイル303を含む。例えば、ファイルシステム302Aは、ファイル303A、303B及び303Cを含む。ファイルシステム302Bは、例えば、ファイル303Dを含む。ファイル303A、303B、303C及び303Dの各々は、複数のファイル303の一つである。
LU129A〜129Cの各々は、図1に示す複数のLU129の一つである。
図3の例では、各LU129A〜129Cにファイルシステム302が一つずつ格納される。具体的には、図3の例では、LU129Aにはファイルシステム302A、LU129Bにはファイルシステム302B、LU129Cにはファイルシステム302Cが格納される。ファイルシステム302A、ファイルシステム302B及びファイルシステム302Cは、それぞれ、識別子「FS1」、「FS2」及び「FS3」によって識別され、それぞれ、「/mnt/FS1」、「/mnt/FS2」及び「/mnt/FS3」にマウントされている。
複数のノード110と複数のLU129との間には、複数の通信経路(パス)301が設定されている。具体的には、ノード110AとLU129Aとの間にパス301Aが、ノード110AとLU129Bとの間にパス301Bが、ノード110AとLU129Cとの間にパス301Cが設定されている。ノード110BとLU129Aとの間にパス301Dが、ノード110BとLU129Bとの間にパス301Eが、ノード110BとLU129Cとの間にパス301Fが設定されている。ノード110CとLU129Aとの間にパス301Gが、ノード110CとLU129Bとの間にパス301Hが、ノード110CとLU129Cとの間にパス301Iが設定されている。パス301A〜301Iの各々は、複数のパス301の一つである。
本実施形態では、全パス301A〜301Iに対応する物理的な通信経路が設定されている。LUパス設定プログラムは、パス301A〜301Iの設定を変更することによって、パス301A〜301Iを介した通信の可/不可を論理的に切り替えることができる。このような切り替えは、どのような方法で実現されてもよい。例えば、このような切り替えは、各ファイルシステム302を各ノード110にマウント又はアンマウントすることによって実現されてもよいし、パス301の有効化/無効化によって実現されてもよい。
図3の例では、パス301A、パス301E及びパス301Iが、それぞれ通信可能に設定されている。この場合、NASクライアント160は、ノード110Aにアクセスすることによって、ファイルシステム302A内のファイル303に対する書き込み及び読み出しを実行することができる。同様にして、NASクライアント160は、ノード110Bにアクセスすることによってファイルシステム302Bを、ノード110Cにアクセスすることによってファイルシステム302Cを使用することができる。一方、図3の例では、パス301Bが通信可能に設定されていない。このため、NASクライアント160は、ノード110Aにアクセスすることによって、ファイルシステム302Bを使用することができない。
図4は、本発明の第1の実施形態のノード110に設定される省電力レベルの説明図である。
各ノード110は、自ノード110内の各部に供給される電力を制限することによって、自ノード110が消費する電力を削減することができる。図4に示す省電力レベルは、削減される電力のレベルを意味する。各ノード110は、複数の省電力レベルを設定することができる。本実施形態の各ノード110は、省電力レベル0から省電力レベル3までの四つのレベルを設定することができる。
省電力レベル0は、稼動モードを意味する。省電力レベル0に設定されたノード110は、NASクライアント160にファイル共有サービスを提供する。すなわち、省電力レベル0に設定されたノード110の各部は、通常の電力を供給され、稼動している。
省電力レベル1から3のいずれかに設定されたノード110は、自ノード110の少なくとも一部に供給される電力を制限する。このため、省電力レベル1から3のいずれかに設定されたノード110の消費電力は、省電力レベル0に設定されたノード110の消費電力より小さい。以下の説明において、ノード110が省電力レベル1から3のいずれかに設定された状態を省電力モードとも記載する。省電力モードに設定されたノード110は、その内部の少なくとも一部が稼動していないため、NASクライアント160に対するファイル共有サービスを停止する。
省電力レベル1に設定されたノード110は、自ノード110のCPU202に供給される電力を制限する。このノード110は、CPU202以外の部分に電力が供給されているため、比較的短時間で省電力レベル0に復帰することができる。このため、例えば、現在稼動しているノード110に障害が発生したときにそのノードからサービスを引き継ぐべきノード110が、省電力レベル1に設定される。
省電力レベル2(いわゆるメモリサスペンド)に設定されたノード110は、省電力モードに遷移する前の状態を示す情報をメモリ204に保存し、メモリ204以外の部分に供給される電力を制限する。メモリ204には、少なくとも、情報を保存し続けるために必要な電力が供給される。
省電力レベル3(いわゆるSoft Off)に設定されたノード110では、OSが停止する。このノード110のハードウェアには、省電力レベル0に復帰するために必要な微弱な電力のみが供給されている。
このように、省電力レベルの値が大きくなるほど、ノード110内において電力の供給を制限される範囲が広くなる。このため、ノード110に設定された省電力レベルの値が大きくなるほど、ノード110の消費電力は小さくなるが、そのノード110の復帰時間(すなわち、そのノード110が正常にサービスを提供できる状態に復帰するまでの時間)は長くなる。
各ノード110の省電力レベルの切り替えは、周知の技術によって実現することができる。例えば、Advanced Configuration and Power Interface(ACPI)を適用することによって省電力レベルを切り替えてもよい。ACPIが適用される場合、上記の省電力レベル1はACPIのS1 Sleeping Stateに、省電力レベル2はS3 Sleeping Stateに、省電力レベル3はS5 Soft Off Stateに相当する。
ただし、本発明は、ACPI以外の技術によって省電力レベルを切り替える場合にも適用することができる。
なお、本実施の形態では、図4のように電力が供給される範囲を切り替えることによって、四つの省電力レベルが設定される。しかし、同様にして電力が供給される範囲を任意に設定することによって、二つ以上の任意の省電力レベルが設定されてもよい。いずれの場合でも、供給電力の制限によって消費電力が低下するほど、ノード110の復帰時間が長くなる。
図5は、本発明の第1の実施形態における省電力レベルの遷移の説明図である。
省電力レベル0に設定されているノード110は、省電力レベル1、2又は3のいずれにも遷移することができる。一方、省電力レベル1、2又は3のいずれかに設定されているノード110は、省電力レベル0にのみ遷移することができる。
図6は、本発明の第1の実施形態における停止スケジュール及び省電力方法の設定の説明図である。
NAS管理者は、各ノード110の停止スケジュール及び省電力方法を設定することができる。停止スケジュールとは、各ノード110を省電力モードに設定するスケジュールである。省電力方法とは、省電力モードとして設定される具体的な省電力レベルである。
NAS管理者は、各ノード110の稼動実績に基づいて、停止スケジュール及び省電力方法を設定することができる。稼動実績とは、例えば、各ノード110において所定の期間測定された性能情報の統計である。図6の例では、各ノード110のアクセスデータ量が時間帯ごとに測定される。
例えば、あるノード110において測定されたアクセスデータ量が所定の閾値より小さい時間帯において、そのノード110が省電力モードとなるように停止スケジュールが設定されてもよい。あるいは、例えば、全ノード110のアクセスデータ量の合計値に応じた適切な数のノード110が稼動するように(言い換えると、アクセスデータ量の合計値が大きくなるほど、稼動するノード110の数が多くなるように)、停止スケジュールが設定されてもよい。
同様にして、例えば、あるノード110において測定されたアクセスデータ量が小さいほど、そのノードの消費電力が小さくなるように、そのノード110の省電力レベルが設定されてもよい。
ただし、少なくとも一つのノード110が常に稼動するように停止スケジュールを設定することが望ましい。これによって、サービスの提供が完全に停止することが防止される。また、稼動しているノード110が一つしかない場合、省電力モードに設定されているノード110の少なくとも一つが省電力レベル1に設定されることが望ましい。これによって、稼動しているノード110に障害が発生した場合に、省電力レベル1に設定されているノード110が迅速に復帰して、障害ノード110からサービスを引き継ぐことができる。
あるいは、後述するように、稼動するノード110の数が所定のポリシーに基づいて決定されてもよい(図22等参照)。例えば、システムの信頼性が優先される場合、常に二つ以上のノード110が稼動するように停止スケジュールが決定されてもよい。あるいは、消費電力の削減が優先される場合、所定の時間帯には一つのノード110のみが稼動するように停止スケジュールが設定されてもよい。
上記のような停止スケジュール及び省電力方法の設定は、NAS管理者によって手動で実行されてもよいし、各ノード110によって自動的に実行されてもよい。
図6は、夜間に稼動するNASクライアント160の数が、昼間のそれより少ない場合の例を示す。この例において、ノード100A(すなわちNAS−01)は、常時稼動するように設定されている。ノード110B(すなわちNAS−02)は、毎日23:00から5:00までの間、省電力レベル1となるように設定されている。ノード110C(すなわちNAS−03)は、毎日20:00から8:00までの間、省電力レベル3となるように設定されている。
なお、後述するように、各ノード110は、図6に示す停止スケジュール及び省電力方法を、停止スケジュールテーブル1400として保持する(図14参照)。
図7は、本発明の第1の実施形態において一つのノード110が省電力モードに遷移するために実行される処理の説明図である。
図6の例では、20:00にノード110Cが省電力レベル3に遷移する。図7は、この時点の処理を示す。
現在時刻が20:00に達すると、ノード110Cの監視プログラム212は、自ノード110Cが省電力モードに遷移するタイミングが到来したと判定する。この場合、ノード110Cの監視プログラム212は、稼動している他のノード110の一つ(すなわち、監視プログラム212が稼動しているノード110C以外のノードのうち一つ。図7の例では、ノード110A)に引き継ぎ要求を送信する。ノード110Cは、LU129C内のファイルシステム302CをNASクライアント160に提供するサービスを実行していた。引き継ぎ要求は、このサービスを引き継ぐことをノード110Aに要求するものである。すなわち、この引き継ぎ要求は、パス301Cを有効化するためのパス切り替え要求を含む。さらに、ノード110のLUパス設定プログラム211Cは、パス301Iを無効化する。
引き継ぎ要求を送信したノード110Cは、省電力レベル3に遷移する。
引き継ぎ要求を受信したノード110AのLUパス設定プログラム211は、パス301Cを有効化する。その後、NASクライアント160は、ノード110Aにアクセスすることによって、LU129C内のファイルシステム302Cを使用することができる。
なお、現在時刻は、各ノード110が備える時計(図示省略)から取得されてもよいし、LAN180を介して接続された計算機(例えば時刻サーバ)(図示省略)から取得されてもよい。
図8は、本発明の第1の実施形態においてさらに一つのノード110が省電力モードに遷移するために実行される処理の説明図である。
図6の例では、23:00にノード110Bが省電力レベル1に遷移する。図8は、この時点で実行される処理を示す。
現在時刻が23:00に達すると、ノード110Bの監視プログラム212は、自ノード110Bが省電力モードに遷移するタイミングが到来したと判定する。この場合、ノード110Bの監視プログラム212は、稼動している他のノード110(図8の例では、ノード110A)に引き継ぎ要求を送信する。ノード110Bは、LU129B内のファイルシステム302BをNASクライアント160に提供するサービスを実行していた。引き継ぎ要求は、このサービスを引き継ぐことをノード110Aに要求するものである。すなわち、この引き継ぎ要求は、パス301Bを有効化するためのパス切り替え要求を含む。さらに、ノード110BのLUパス設定プログラム211は、パス301Eを無効化する。
引き継ぎ要求を送信したノード110Bは、省電力モード1に遷移する。
引き継ぎ要求を受信したノード110AのLUパス設定プログラム211は、パス301Bを有効化する。その後、NASクライアント160は、ノード110Aにアクセスすることによって、LU129B内のファイルシステム302Bを使用することができる。
図7及び図8に示すように、ノード110の負荷が低くなる時間帯(例えば稼動するNASクライアント160の数が少ない夜間)に、一つ以上のノード110を省電力モードに遷移させることによって、システム全体の消費電力が削減される。
図9は、本発明の第1の実施形態において一つのノード110が省電力モードから復帰するために実行される処理の説明図である。
図6の例では、5:00にノード110Bが省電力レベル1から省電力レベル0(すなわち稼動モード)に復帰する。図9は、この時点で実行される処理を示す。
現在時刻が5:00に達すると、ノード110Aの監視プログラム212は、ノード110Bが省電力モードから復帰するタイミングが到来したと判定する。この場合、ノード110Aの監視プログラム212は、ノード110Bに起動要求を送信する。ノード110Aは、LU129B内のファイルシステム302BをNASクライアント160に提供するサービスをノード110Bから引き継いでいた。このため、起動要求は、このサービスを再びノード110Bが提供するようにノード110Bに指示するものである。さらに、ノード110AのLUパス設定プログラム211は、パス301Bを無効化する。
起動要求を受信したノード110Bは、省電力レベル1から省電力レベル0に遷移する。さらに、ノード110BのLUパス設定プログラム211は、パス301Eを有効化する。その後、NASクライアント160は、ノード110Bにアクセスすることによって、LU129B内のファイルシステム302Bを使用することができる。
図10は、本発明の第1の実施形態において稼動しているノード110に障害が発生した場合に実行される処理の説明図である。
図6の例では、23:00から5:00までの間、ノード110Aのみが稼動している。すなわち、この時間帯にノード110Aに障害が発生すると、システムのサービス全体が停止する。図10は、この時間帯のある時点(例えば3:00)にノード110Aに障害が発生した場合に、システムのサービス全体の停止を防ぐために実行される処理を示す。
なお、図10において発生する障害は、OSレイヤ以上の障害である。すなわち、OSが障害の発生を検知し、検知した障害を他のノード110に通知できることが図10の処理の前提となる。
稼動しているノード110Aが、障害の発生のためにNASクライアント160にサービスを提供できなくなると、ノード110Aは、稼動していないノードのうち一つ(例えば、ノード110B)に起動要求を送信する。障害が発生する直前まで、ノード110Aはファイルシステム302A〜302CをNASクライアント160に提供するサービスを実行していた。このため、起動要求は、このサービスをノード110Bが引き継ぐことを指示するものである。
さらに、ノード110AのLUパス設定プログラム211は、パス301A〜301Cを無効化する。
起動要求を受信したノード110Bは、省電力レベル1から省電力レベル0に遷移する。さらに、ノード110BのLUパス設定プログラム211は、パス301D〜301Fを有効化する。その後、NASクライアント160は、ノード110Bにアクセスすることによって、LU129A〜129C内のファイルシステム302A〜302Cを使用することができる。
図11は、本発明の第1の実施形態において稼動しているノード110の負荷が増大した場合に実行される処理の説明図である。
図6の例では、23:00から5:00までの間、ノード110Aのみが稼動している。このような停止スケジュールは、例えば、23:00から5:00までの間、ファイルシステム302A〜302Cに対するアクセス負荷が低いという過去の実績に基づいて設定されている。
しかし、実際には、過去の実績に反して、この時間帯にファイルシステム302A〜302Cに対するアクセス負荷が増大する場合がある。図7〜図10の例は、夜間にNASクライアント160Bのみが稼動しているため、ノード110Aのみが稼動すれば十分である場合を示している。しかし、通常は停止しているはずのNASクライアント160(例えば、図11のNASクライアント160C〜160E)が何らかの事情によって稼動している場合がある。このような場合、唯一稼動するノード110Aの負荷が増大するため、ノード110Aの処理が混雑し、その結果、ノード110の処理性能が低下する場合がある。図11は、このような場合に性能低下を防ぐために実行される処理を示す。
稼動しているノード110Aの負荷が所定の閾値を超えると、ノード110Aは、稼動していないノードのうち一つ(例えば、ノード110B)に起動要求を送信する。障害が発生する直前まで、ノード110Aはファイルシステム302A〜302CをNASクライアント160に提供するサービスを実行していた。このため、起動要求は、このサービスの一部をノード110Bが引き継ぐことを指示するものである。図11には、ファイルシステム302BをNASクライアント160に提供するサービスをノード110Bが引き継ぐことが指示された場合を示す。
さらに、ノード110AのLUパス設定プログラム211は、パス301Bを無効化する。
起動要求を受信したノード110Bは、本来の停止スケジュールによればまだ起動しない時刻であっても、省電力レベル1から省電力レベル0に遷移する。さらに、ノード110BのLUパス設定プログラム211は、パス301Eを有効化する。その後、NASクライアント160は、ノード110Aにアクセスすることによって、LU129A及び129C内のファイルシステム302A及び302Cを使用することができ、ノード110Bにアクセスすることによって、LU129B内のファイルシステム302Bを使用することができる。その結果、アクセス負荷が複数のノード110に分散されるため、処理性能が改善される。
図12は、本発明の第1の実施形態の各ノード110が保持する収集情報テーブル1200の説明図である。
収集情報テーブル1200は、制御情報214の一部として各ノード110のメモリ204に格納される。
収集情報テーブル1200は、各ノード110が、自ノード110及び他のノード110の負荷を示す情報を含む。この負荷情報は、所定のタイミングで(例えば定期的に)各ノード110のスケジューリングプログラム213が自ノード110及び他のノード110から取得したものである。
収集情報テーブル1200は、時刻(1201)、情報種別(1202)、NAS−01(1203)、NAS−02(1204)及びNAS−03(1205)を含む。
時刻(1201)は、情報が取得された時刻である。図12の例における「h1h1:m1m1:s1s1」のうち、「h1h1」はある「時」、「m1m1」はある「分」、「s1s1」はある「秒」を示す。同様に、「h2h2:m2m2:s2s2」及び「hxhx:mxmx:sxsx」は、それぞれ、「h1h1:m1m1:s1s1」と異なる「時:分:秒」を示す。
情報種別(1202)は、取得された情報の種類である。図12の例では、負荷情報としてCPU負荷及びI/O負荷が取得される。CPU負荷は、例えば、各ノード110のCPU202の使用率(%)である。I/O負荷は、例えば、各ノード110の単位時間当たりのI/Oデータ数(メガバイト/秒)である。
スケジューリングプログラム213は、さらに、ファイルアクセス数を取得する。ファイルアクセス数は、例えば、各ノード110がアクセスした単位時間当たりのファイル数(個)である。ファイルアクセス数は、後述するファイルアクセス情報から取得されてもよい。ファイルアクセス数は、CPU負荷及びI/O負荷と同様、ノード110の負荷を示す値として使用することができる。
NAS−01(1203)は、識別子「NAS−01」で識別されるノード110Aから取得されたノード110Aの負荷の値である。
NAS−02(1204)は、識別子「NAS−02」で識別されるノード110Bから取得されたノード110Bの負荷の値である。
NAS−03(1205)は、識別子「NAS−03」で識別されるノード110Cから取得されたノード110Cの負荷の値である。
図12の例では、時刻(1201)の値「h1h1:m1m1:s1s1」に対応するNAS−01(1203)のCPU負荷、I/O負荷及びファイルアクセス数として、それぞれ、「10%」、「1MB/s」及び「100個」が格納されている。同じ時刻(1201)のNAS−02(1204)には「1%」、「0.1MB/s」及び「10個」が、NAS−03(1205)には「0%」、「0MB/s」及び「0個」が格納されている。これらの値は、時刻「h1h1:m1m1:s1s1」において、ノード110Aの負荷が最も高く、ノード110Cは稼動していないことを示す。
図13は、本発明の第1の実施形態の各ノード110が保持する管理者設定テーブル1300の説明図である。
管理者設定テーブル1300は、制御情報214の一部として各ノード110のメモリ204に格納される。
管理者設定テーブル1300は、各ノード110に設定される省電力レベル、及び、各ノード110が省電力モードに設定される時間を示す情報を含む。これらの情報は、各ノード110のスケジューリングプログラム213がNAS管理者から取得したものである。
例えば、NAS管理者は、LAN180に接続された管理端末(図示省略)又はいずれかのノード110を操作して、管理者設定テーブル1300に情報を入力することができる。このとき、任意のGUI(Graphical User Interface)又はCLI(Command Line Interface)が使用されてもよい。入力を受け付けた管理端末等は、各ノード110に入力された情報を送信する。その結果、各ノード110は、同一の管理者設定テーブル1300を保持することができる。
図13の管理者設定テーブル1300は、NAS1301、省電力レベル1302、省電力時刻1303及び復帰時刻1304を含む。
NAS1301は、各ノード110の識別子である。図13の例では、ノード110A〜110Cの識別子「NAS−01」〜「NAS−03」が格納される。
省電力レベル1302は、各ノード110に設定される省電力レベルである。
省電力時刻1303は、各ノード110が稼動モードから省電力モードに遷移する時刻である。
復帰時刻1304は、各ノード110が省電力モードから稼動モードに復帰する時刻である。
すなわち、省電力時刻1303から復帰時刻1304までの時間が、各ノード110が省電力モードに設定される時間である。
図13の例では、ノード110A(NAS−01)に対応する省電力レベル1302として「0」が格納されている。これは、ノード110Aが常時稼動することを意味する。すなわち、ノード110Aは省電力レベルに遷移しない。このため、ノード110Aに対応する省電力時刻1303及び復帰時刻1304には有効な値が格納されなくてもよい。
さらに、図13の例では、ノード110B(NAS−02)に対応する省電力レベル1302、省電力時刻1303及び復帰時刻1304として、それぞれ、「1」、「23:00」及び「05:00」が格納されている。これは、ノード110Bが23:00から05:00までの間、省電力レベル1に設定されることを意味する。
さらに、図13の例では、ノード110C(NAS−03)に対応する省電力レベル1302、省電力時刻1303及び復帰時刻1304として、それぞれ、「3」、「auto」及び「auto」が格納されている。これは、NAS管理者が、ノード110Cが設定されるべき省電力レベルとして省電力レベル3を指定したが、省電力レベル3に設定される時間を指定していないことを意味する。
この場合、ノード110Cのスケジューリングプログラム213が、ノード110Cが省電力レベル3に設定される時間を算出する。この算出方法については後述する(図14等参照)。
図14は、本発明の第1の実施形態の各ノード110が保持する停止スケジュールテーブル1400の説明図である。
停止スケジュールテーブル1400は、制御情報214の一部として各ノード110のメモリ204に格納される。
各ノード110のスケジューリングプログラム213は、管理者設定テーブル1300の内容に基づいて、停止スケジュールテーブル1400を生成する。具体的には、停止スケジュールテーブル1400は、管理者設定テーブル1300と同様の項目を含む。すなわち、停止スケジュールテーブル1400は、NAS1401、省電力レベル1402、省電力時刻1403及び復帰時刻1404を含む。
管理者設定テーブル1300の項目に、NAS管理者によって入力された具体的な値が格納されている場合、スケジューリングプログラム213は、その値と同一の値を、その項目に対応する停止スケジュールテーブル1400の項目に格納する。
例えば、図13の管理者設定テーブル1300では、ノード110Bに対応する省電力レベル1302、省電力時刻1303及び復帰時刻1304としてそれぞれ「1」、「23:00」及び「05:00」が格納されている。この場合、スケジューリングプログラム213は、図14において、ノード110Bに対応する省電力レベル1402、省電力時刻1403及び復帰時刻1404にそれぞれ「1」、「23:00」及び「05:00」を格納する。
一方、管理者設定テーブル1300の項目に「auto」が格納されている場合、スケジューリングプログラム213は、その項目に格納されるべき値を算出する。
例えば、図13の管理者設定テーブル1300では、ノード110Cに対応する省電力時刻1303及び復帰時刻1304として「auto」が格納されている。この場合、スケジューリングプログラム213は、ノード110Cが稼動モードから省電力レベル3に遷移すべき時刻及び省電力レベル3から稼動モードに復帰すべき時刻を算出する。
この算出は、収集情報テーブル1200に格納された情報に基づいて実行されてもよい。例えば、20:00から8:00までの間のノード110Cの負荷が所定の閾値より低く、それ以外の時間の負荷が所定の閾値より高い場合、スケジューリングプログラム213は、ノード110Cに対応する省電力時刻1403及び復帰時刻1404としてそれぞれ「20:00」及び「08:00」を算出し、停止スケジュールテーブル1400に格納してもよい。
なお、スケジューリングプログラム213は、省電力レベル1402に格納される値を算出してもよい。この算出も、収集情報テーブル1200に格納された情報に基づいて実行されてもよい。スケジューリングプログラム213は、省電力レベル1402、省電力時刻1403及び復帰時刻1404を算出するために、図15に示す省電力レベルポリシーテーブル1500を参照してもよい。
図15は、本発明の第1の実施形態の各ノード110が保持する省電力レベルポリシーテーブル1500の説明図である。
省電力レベルポリシーテーブル1500は、制御情報214の一部として各ノード110のメモリ204に格納される。
省電力レベルポリシーテーブル1500は、省電力レベル1501及び条件1502を含む。
省電力レベル1501は、各ノード110に設定され得る省電力レベルを示す。例えば、図4に示すように、「0」から「3」までの四つの省電力レベルが各ノード110に設定され得る。
条件1502は、省電力レベル1501に示す省電力レベルが各ノード110に設定される条件である。すなわち、条件1502に示す条件が満たされる場合、その条件1502に対応する省電力レベル1501が各ノード110に設定される。
例えば、図15では、省電力レベル1501の値「0」に対応する条件1502として、「(X1<CPU負荷<X2)AND(Y1<I/O負荷<Y2)AND(Z1<ファイルアクセス数<Z2)」が格納されている。ここで、X1、X2、Y1、Y2、Z1及びZ2は、例えばNAS管理者によってあらかじめ定められた閾値である。同様に、X3〜X8、Y3〜Y8及びZ3〜Z8も、NAS管理者によってあらかじめ定められた閾値である。この場合、スケジューリングプログラム213は、収集情報テーブル1200及び省電力レベルポリシーテーブル1500を参照して、負荷が上記の条件を満たす時刻のノード110の省電力レベルが「0」に設定されるように、停止スケジュールテーブル1400を作成してもよい。
図16は、本発明の第1の実施形態の各ノード110が保持するNAS管理テーブル1600の説明図である。
NAS管理テーブル1600は、制御情報214の一部として各ノード110のメモリ204に格納される。
NAS管理テーブル1600は、各ノード110の状態等を示す管理情報を含む。図16の例では、管理情報は、状態1611、フェールオーバペア1612及びパス1613を含む。NAS−01(1601)、NAS−02(1602)及びNAS−03(1603)は、それぞれ、ノード100A、100B及び100Cの管理情報である。
状態1611は、各ノード110に設定されている省電力レベルを示す。
フェールオーバペア1612は、各ノード110とともにフェールオーバペアを構成する他のノード110の識別子を示す。フェールオーバペアについては後で詳細に説明する(図22参照)。図16の例では、NAS−01(1601)に対応するフェールオーバペア1612として「NAS−02」が、NAS−02(1602)に対応するフェールオーバペア1612として「NAS−01」が格納されている。これは、ノード100A及びノード110Bが一つのフェールオーバペアを構成していることを示す。
パス1613は、各ノードに接続されているパス301の状態(すなわち各パス301が有効であるか無効であるか)を示す。図16の例において「ON」はパスが有効化されていること、「OFF」はパスが無効化されていることを示す。
図16は、例として、図7に示す各ノード110が保持するNAS管理テーブル1600を示す。
この場合、ノード110A及び110Bが稼動しており、ノード110Cが省電力レベル3に設定されている。このため、ノード110A〜110Cに対応する状態1611として、それぞれ、「省電力レベル0」、「省電力レベル0」及び「省電力レベル3」が格納される。
さらに、この場合、パス301A、301C及び301Eが有効化されている。このため、パス1613には、パス301A、301C及び301Eに対応する状態として「ON」が、その他のパス301に対応する状態として「OFF」が格納される。
図16の例では、ノード110A及びノード110Bが一つのフェールオーバペアを構成する。このため、ノード110A及びノード110Bに対応するフェールオーバペア1612には、それぞれ、ペアの相手方のノード110の識別子である「NAS−02」及び「NAS−01」が格納される。
図17は、本発明の第1の実施形態の各ノード110が保持するファイルアクセス情報テーブル1700の説明図である。
各ノード110のスケジューリングプログラム213は、各ノード110によるファイルアクセスの履歴をファイルアクセス情報テーブル1700に格納する。ファイルアクセス情報テーブル1700は、制御情報214の一部として各ノード110のメモリ204に格納される。
ファイルアクセス情報テーブル1700は、ファイル1701、アクセス日時1702、アクセス種別1703及びアクセス元1704を含む。
ファイル1701は、アクセスされたファイル303のファイル名である。
アクセス日時1702は、ファイルアクセスが実行された日時である。
アクセス種別1703は、実行されたアクセスの種類(すなわち、書き込み又は読み出し)である。
アクセス元1704は、実行されたアクセスのアクセス元の識別子である。
図17は、ノード110Bが保持するファイルアクセス情報テーブル1700の例を示す。図17に示すファイルアクセス情報テーブル1700の第1行には、ファイル1701、アクセス日時1702、アクセス種別1703及びアクセス元1704として、それぞれ、「mnt/FS2/HTML−2.html」、「2007/05/05 16:40」、「read」及び「NAS−01」が格納されている。これは、ノード110Bが、2007年5月5日の16時40分に、ファイル「mnt/FS2/HTML−2.html」に対する読み出し要求をノード100Aから受信し、要求された読み出しアクセスを実行したことを意味する。
一方、第2行には、ファイル1701、アクセス日時1702、アクセス種別1703及びアクセス元1704として、それぞれ、「mnt/FS2/bbb.txt」、「2007/05/07 12:00」、「read」及び「Client−A」が格納されている。これは、ノード110Bが、2007年5月7日の12時00分に、ファイル「mnt/FS2/bbb.txt」に対する読み出し要求を、識別子「Client−A」によって識別されるNASクライアント160から受信し、要求された読み出しアクセスを実行したことを意味する。
このように、ノード110がファイルアクセスを実行すると、スケジューリングプログラム213は、実行されたファイルアクセスに関する情報をファイルアクセス情報テーブル1700に順次追加する。
図18は、本発明の第1の実施形態の各ノード110の各プログラムが実行する処理の概要の説明図である。
図18には、識別子「NAS−X」によって識別されるノード110X、識別子「NAS−Y」によって識別されるノード110Y、及び、識別子「NAS−Z」によって識別されるノード110Zの各プログラムが実行する処理の概要を示す。
ここで、ノード110Xは、常時稼動するノード110である。ノード110Xは、図6の例のノード110Aに相当する。ノード110Yは、所定の時間に省電力レベル1に設定されるノード110である。ノード110Yは、図6の例のノード110Bに相当する。ノード110Zは、上記のノード110X及び110Yのいずれにも当てはまらないノード110である。ノード110Zは、図6の例のノード110Cに相当する。
以下の説明において、ノード110XのLUパス設定プログラム211、監視プログラム212及びスケジューリングプログラム213を、LUパス設定プログラム211X、監視プログラム212X及びスケジューリングプログラム213Xと記載する。ノード110Y及び110Zの各プログラムも、同様にY又はZを付与して記載する。
スケジューリングプログラム213Xは、所定のタイミングで各ノード110の負荷情報を取得し、取得した情報を収集情報テーブル1200に蓄積する。さらに、スケジューリングプログラム213Xは、収集情報テーブル1200に蓄積した値及び管理者設定テーブル1300に格納された値を解析して、停止スケジュールテーブル1400を作成する。
監視プログラム212Xは、作成された停止スケジュールテーブル1400及び現在時刻を示す時刻情報を参照して、自ノード110(すなわち、監視プログラム212Xを実行しているノード110X)が省電力モードに遷移する時刻が到来したか否かを判定する。
自ノード110Xが省電力モードに遷移する時刻が到来した場合、監視プログラム212Xは、他のノード110にパス切り替え要求を送信した後、自ノード110Xを省電力モードに遷移させる。
一方、自ノード110Xが省電力モードに遷移する時刻が到来していない場合、監視プログラム212Xは、現在が他ノード110を起動するタイミングであるか否かを判定する。
現在が他ノード110(例えば、ノード110Y)を起動するタイミングである場合、監視プログラム212Xは、ノード110Yを起動する。
現在が他ノード110を起動するタイミングでない場合、監視プログラム212Xは、再び停止スケジュールテーブル1400等を参照して、自ノード110が省電力モードに遷移する時刻が到来したか否かを判定する。
ノード110Yのスケジューリングプログラム213Y、監視プログラム212Y及びLUパス設定プログラム211Yが実行する処理は、ノード110Xのスケジューリングプログラム213X、監視プログラム212X及びLUパス設定プログラム211Xが実行する処理と同様である。ただし、図18の例では、ノード110Xが常時稼動するのに対し、ノード110Yは所定の時刻に省電力モードに移行する。以下、ノード110Yが省電力モードに移行するときの処理のみを説明する。ノード110Yによるその他の処理は、ノード110Xによるものと同様であるため、説明を省略する。
監視プログラム212Yは、自ノード110(すなわち、監視プログラム212Yを実行しているノード110Y)が省電力モードに遷移する時刻が到来したか否かを判定する。
自ノード110Yが省電力モードに遷移する時刻が到来した場合、監視プログラム212Yは、他のノード110(図18の例では、常時稼動するノード110X)にパス切り替え要求を送信した後、自ノード110Yを省電力モードに遷移させる。
ノード110XのLUパス設定プログラム211Xは、他ノード110が起動した(すなわち、省電力モードから復帰した)か否かを監視する。
他ノード110が起動した場合、LUパス設定プログラム211Xは、自ノード110Xから使用可能に設定されていたパス301のうち、起動したノード110が使用するLU129に至るパス301を、使用不可に切り替える。
他ノード110が起動していない場合、LUパス設定プログラム211Xは、他ノード110からパス切り替え要求を受信したか否かを判定する。
例えば、他ノード110Yからパス切り替え要求を受信した場合、LUパス設定プログラム211Xは、自ノード110Xから、ノード110Yが使用していたLU129に至る、パス301を使用可能に切り替える。
ノード110Zの各プログラムは、ノード110X及び110Yの各プログラムと同様の処理を実行するため、これらの説明は省略する。
以下、各プログラムによる処理の詳細を説明する。
図19は、本発明の第1の実施形態のスケジューリングプログラム213が実行する処理のフローチャートである。
最初に、スケジューリングプログラム213は、情報収集タイミングを初期設定する(ステップ1901)。ここで、情報収集タイミングとは、収集情報テーブル1200に格納される負荷情報等を取得するタイミングである。例えば、負荷情報等を一定の間隔で取得する場合、情報収集タイミングとしてその間隔が設定されてもよい。あるいは、負荷情報等を所定の時刻に収集する場合、情報収集タイミングとしてその時刻が設定されてもよい。
次に、スケジューリングプログラム213は、現在が、ステップ1901において設定された情報収集タイミングであるか否か(言い換えると、ステップ1901において設定された情報収集タイミングが到来したか否か)を判定する(ステップ1902)。
ステップ1902において、現在がファイルアクセス情報を収集するタイミングであると判定された場合、スケジューリングプログラム213は、ファイルアクセス情報を収集する(ステップ1903)。例えば、スケジューリングプログラム213は、前回の情報収集タイミングから今回の情報収集タイミングまでの間に自ノード110が実行したファイルアクセスの数を、ファイルアクセス情報テーブル1700から取得する。さらに、スケジューリングプログラム213は、前回の情報収集タイミングから今回の情報収集タイミングまでの間に他ノード110が実行したファイルアクセスの数を、他ノード110のファイルアクセス情報テーブル1700から取得する。スケジューリングプログラム213は、取得したファイルアクセス数をファイルアクセス情報テーブル1700に格納する。
一方、ステップ1902において、現在が負荷情報を収集するタイミングであると判定された場合、スケジューリングプログラム213は、負荷情報を収集する(ステップ1904)。例えば、スケジューリングプログラム213は、自ノード110のCPU負荷及びI/O負荷の値を取得する。さらに、スケジューリングプログラム213は、今回の情報収集タイミングにおける他ノード110のCPU負荷及びI/O負荷の値を他ノード110から取得する。スケジューリングプログラム213は、取得した負荷の値を収集情報テーブル1200に格納する。
ステップ1902において、現在が情報収集タイミングでないと判定された場合、スケジューリングプログラム213は、ステップ1903及び1904のいずれも実行せずにステップ1905に進む。
次に、スケジューリングプログラム213は、ステップ1903又は1904において収集した情報を解析することによって、停止スケジュールテーブル1400に登録されるべき値を算出する(ステップ1905)。具体的には、スケジューリングプログラム213は、図14及び図15を参照して説明したように、各ノード110に設定されるべき省電力レベル1402、省電力時刻1403及び復帰時刻1404を決定してもよい。
次に、スケジューリングプログラム213は、NAS管理者が新たな設定を入力したか否かを判定する(ステップ1906)。
ステップ1906において、NAS管理者が新たな設定を入力したと判定された場合、スケジューリングプログラム213は、入力された新たな設定を管理者設定テーブル1300に反映させる(ステップ1907)。
一方、ステップ1906において、NAS管理者が新たな設定を入力していないと判定された場合、スケジューリングプログラム213は、ステップ1907を実行せずにステップ1908に進む。
次に、スケジューリングプログラム213は、停止スケジュールテーブル1400を作成(又は更新)する(ステップ1908)。具体的には、スケジューリングプログラム213は、管理者設定テーブル1300に格納されている値を、停止スケジュールテーブル1400にコピーする。このとき、スケジューリングプログラム213は、ステップ1905において算出された値のうち、管理者設定テーブル1300に「auto」が格納されている項目に対応する値を、停止スケジュールテーブル1400に格納する。
さらに、ステップ1908において、スケジューリングプログラム213は、更新した停止スケジュールテーブル1400の値のうち、自ノード110に対応する値(すなわち、自ノード110に対応する更新された省電力レベル1402、1403及び1404の値)を、他ノード110に送信する。これらの値を受信した他ノード110は、受信した値を、その他ノード110が保持する停止スケジュールテーブル1400の、送信元ノード110に対応するエントリに格納する。このように値を相互に通信することによって、全ノード110が保持する停止スケジュールテーブル1400の内容が整合する。
その後、スケジューリングプログラム213は、ステップ1902に戻り、ステップ1902以降の処理を繰り返し実行する。
図20は、本発明の第1の実施形態の監視プログラム212が実行する処理のフローチャートである。
最初に、監視プログラム212は、全ノード110の停止スケジュール(すなわち、停止スケジュールテーブル1400の内容)を読み出す(ステップ2001)。
次に、監視プログラム212は、ステップ2001において読み出された停止スケジュールに基づいて、自ノード110が停止すべきタイミングが到来したか否かを判定する(ステップ2002)。具体的には、現在時刻が、自ノード110に対応する省電力時刻1403に到達した場合、監視プログラム212は、自ノード110が停止すべきタイミングが到来したと判定する。例えば、図7に示す時点のノード110C及び図8に示す時点のノード110Bの監視プログラム212は、自ノード110が停止すべきタイミングが到来したと判定する。
ただし、例えば図1に示すシステムにおいて、自ノード110のみが稼動モードである場合、停止スケジュールにかかわらず、監視プログラム212は、自ノード110が停止すべきタイミングが到来していないと判定してもよい。
ステップ2002において、自ノード110が停止すべきタイミングが到来したと判定された場合、監視プログラム212は、パス切り替え要求を他ノード110のLUパス設定プログラム211に送信する(ステップ2003)。この切り替え要求は、図7及び図8に示す引き継ぎ要求に含まれる。
次に、監視プログラム212は、自ノード110を停止スケジュールテーブル1400に設定された省電力レベルに遷移させる(ステップ2004)。その結果、自ノード110によるNASクライアント160へのサービスの提供は停止する。
一方、ステップ2002において、自ノード110が停止すべきタイミングが到来していないと判定された場合、監視プログラム212は、他ノード110を起動させるべきタイミングが到来したか否かを判定する(ステップ2005)。具体的には、現在時刻が、他ノード110に対応する復帰時刻1404に到達した場合、監視プログラム212は、他ノード110を起動させるべきタイミングが到来したと判定する(図9参照)。加えて、監視プログラム212は、自ノード110に障害が発生した場合、及び、自ノード110の負荷が所定の閾値より高くなった場合にも、他ノード110を起動させるべきタイミングが到来したと判定する(図10及び図11参照)。
ステップ2005において、他ノード110を起動させるべきタイミングが到来したと判定された場合、監視プログラム212は、他ノード110に起動要求を送信する(ステップ2006)(図9〜図11参照)。
一方、ステップ2005において、他ノード110を起動させるべきタイミングが到来していないと判定されたか、又は、ステップ2006が実行された場合、処理はステップ2001に戻る。以後、監視プログラム212は、ステップ2001以降の処理を繰り返し実行する。
図21は、本発明の第1の実施形態のLUパス設定プログラム211が実行する処理のフローチャートである。
最初に、LUパス設定プログラム211は、他ノード110の状態を監視する(2101)。例えば、LUパス設定プログラム211は、全ての他ノード110に所定の状態監視要求を送信し、その要求に対する応答に基づいて他ノード110の状態を監視してもよい。
次に、LUパス設定プログラム211は、停止していた他ノード110が起動したか否か(すなわち、他ノード110の少なくとも一つが、省電力モードから稼動モードに遷移したか否か)を判定する(ステップ2102)。
ステップ2102において、停止していた他ノード110が起動したと判定された場合、LUパス設定プログラム211は、新たに起動したノード110が新たに管理するLU129に設定されていたパス301を無効化する。例えば、図9に示すように、ノード110Bが新たに起動した場合、ノード110Aがこれまで管理していたLU129Bは、新たにノード110Bに管理される。この場合、ノード110AのLUパス設定プログラム211は、パス301Bを無効化する。
ステップ2102において、停止していた他ノード110が起動していないと判定されたか、又は、ステップ2103が実行された場合、LUパス設定プログラム211は、他ノード110からパス切り替え要求を受信したか否かを判定する(ステップ2104)。このパス切り替え要求は、図20のステップ2003において送信されるものである。
ステップ2104において、パス切り替え要求を受信したと判定された場合、LUパス設定プログラム211は、受信したパス切り替え要求に従ってパス301を有効化する。例えば、図7の例において、ノード110Cから引き継ぎ要求を受信したノード110AのLUパス設定プログラム211は、その引き継ぎ要求に含まれるパス切り替え要求に従って、パス301Cを有効化する。
一方、ステップ2104において、パス切り替え要求を受信していないと判定されたか、又は、ステップ2105が実行された場合、処理はステップ2101に戻る。以後、LUパス設定プログラム211は、ステップ2101以降の処理を繰り返し実行する。
以上に説明した本発明の第1の実施形態では、各ノード110の停止スケジュールは、原則として、所定の条件に従って個別に設定される。その結果、各ノード110は、そのノード110に設定された省電力時刻1403が到来すると、他のノード110が稼動モードであるか否かにかかわらず、省電力モードに遷移する。
しかし、このように個別に設定された停止スケジュールに基づく代わりに、ディスクサブシステム100全体に設定された状態に基づいて、各ノード110の状態が決定されてもよい。
図22は、本発明の実施の形態において、ディスクサブシステム100全体に設定された状態に基づいて決定されるノード110の状態の例を示す説明図である。
例えば、ディスクサブシステム100が受信するアクセス要求の頻度が高い場合、それらのアクセス要求による負荷を分散することによって性能低下を防ぐために、全てのノード110が稼動することが望ましい。一方、ディスクサブシステム100が受信するアクセス要求の頻度が低い場合、より少ない数のノード110でもアクセス要求を処理することができる。アクセス要求の頻度が十分に低い場合には、一つのノード110(例えば、図22のノード110X)のみが稼動していれば、全てのアクセス要求を処理することができる。
このように、アクセス頻度等が所定の条件を満たす場合に、一つのノード110のみを稼動モードに設定し、他のノードを省電力モードに設定することによって、ディスクサブシステム100が消費する電力を最小限に抑えることができる。
しかし、アクセス要求の頻度が低い場合であっても、例えば、夜間にバッチジョブが実行される場合のように、高い信頼性を要求される場合がある。このような場合には、常に少なくとも二つのノード110が稼動していることが望ましい。二つのノード110(例えば、図22のノード110X及び110Y)が稼動していれば、それらのうち一方に障害が発生しても、直ちに他のノード110が処理を引き継ぐことによって、アクセス処理の中断を防ぐことができるためである。
上記のように、消費電力を最小限に抑えるために一つのノード110のみを稼動モードに設定した状態を、以下の説明において省電力優先モードと記載する。一方、信頼性を確保するために少なくとも二つのノード110を稼動モードに設定した状態を、以下の説明において信頼性優先モードと記載する。これらに対して、全ノード110が稼動している状態を全ノード稼動モードと記載する。全ノード稼動モードは、消費電力の削減よりも、処理性能及び信頼性が優先されるモードである。これらのモードは、上記のように、計算機システムに設定された状態を示している。
信頼性優先モードにおいて、稼動している二つのノード110は、状態(すなわち、障害が発生したか否か)を互いに監視し合う。そして、一方のノード110に障害が発生した場合、その障害が発生したノード110が提供していたサービスをもう一方のノード110が引き継ぐ。このように相互に監視し合うノード110の組を、以下の説明においてフェールオーバペアと記載する。
図23は、本発明の第1の実施形態の各ノード110が保持する優先モードポリシーテーブル2300の説明図である。
優先モードポリシーテーブル2300は、制御情報214の一部として各ノード110のメモリ204に格納される。
優先モードポリシーテーブル2300は、モード2301及び条件2302を含む。
モード2301は、ディスクサブシステム100に設定され得る状態を示す。例えば、図23に示すように、「全ノード稼動モード」、「信頼性優先モード」及び「省電力優先モード」のいずれかがディスクサブシステム100に設定され得る。
条件2302は、モード2301に示す状態がディスクサブシステム100に設定される条件である。すなわち、条件2302に示す条件が満たされる場合、その条件2302に対応する状態がディスクサブシステム100に設定される。
例えば、図23では、モード2301の値「信頼性優先」に対応する条件2302として、「(X3<CPU負荷<X4)AND(Y3<I/O負荷<Y4)AND(Z3<ファイルアクセス数<Z4)」が格納されている。ここで、X3、X4、Y3、Y4、Z3及びZ4は、例えばNAS管理者によってあらかじめ定められた閾値である。同様に、X1〜X8、Y1〜Y8及びZ1〜Z8も、NAS管理者によってあらかじめ定められた閾値である。この場合、スケジューリングプログラム213は、収集情報テーブル1200及び優先モードポリシーテーブル2300を参照して、負荷が上記の条件を満たす時刻にディスクサブシステム100が信頼性優先モードに設定されるように優先モードスケジュールテーブル2400(後述)を作成してもよい。
図24は、本発明の第1の実施形態の各ノード110が保持する優先モードスケジュールテーブル2400の説明図である。
優先モードスケジュールテーブル2400は、制御情報214の一部として各ノード110のメモリ204に格納される。
優先モードスケジュールテーブル2400は、時間2401及びモード2402を含む。
時間2401に示す時間にディスクサブシステム100に設定される状態が、モード2402として格納される。
例えば、収集情報テーブル1200を参照した結果、17:00から20:00までの間に取得された負荷情報等が条件「(X3<CPU負荷<X4)AND(Y3<I/O負荷<Y4)AND(Z3<ファイルアクセス数<Z4)」を満たしていると判定された場合、時間2401の値「17:00〜20:00」に対応するモード2402として「信頼性優先」が格納される。
なお、上記の図23及び図24の説明では、ディスクサブシステム100に設定される状態が、各ノード110の負荷情報等に基づいて決定される。しかし、ディスクサブシステム100に設定される状態は、別の方法によって定められてもよい。例えば、スケジューリングプログラム213は、高い信頼性を要求される処理が実行される時間帯に信頼性優先モードが設定されるように優先モードスケジュールテーブル2400を作成してもよい。
より具体的には、例えば高い信頼性を要求される処理を実行するNASクライアント160が限定されている場合、スケジューリングプログラム213は、ファイルアクセス情報テーブル1700を参照して、高い信頼性を要求される処理を実行するNASクライアント160からのアクセス要求を受信する時間帯に信頼性優先モードが設定されるように優先モードスケジュールテーブル2400を作成してもよい。
あるいは、NAS管理者が、各時間帯に実行する処理の種類に応じて、手動で優先モードスケジュールテーブル2400を作成してもよい。
図25は、本発明の第1の実施形態の監視プログラム212が、ディスクサブシステム100全体に設定された状態に基づいて実行する処理のフローチャートである。
最初に、監視プログラム212は、優先モードスケジュールテーブル2400を読み出す(ステップ2501)。
次に、監視プログラム212は、自ノード110が停止すべきタイミングが到来したか否かを判定する(ステップ2502)。ステップ2502において実行される処理の例については、後で詳細に説明する(図26参照)。
ステップ2502において、自ノード110が停止すべきタイミングが到来したと判定された場合、監視プログラム212は、パス切り替え要求を他ノード110のLUパス設定プログラム211に送信する(ステップ2503)。この切り替え要求は、図7及び図8に示す引き継ぎ要求に含まれる。
次に、監視プログラム212は、自ノード110がフェールオーバペアに属しているか否かを判定する(ステップ2504)。具体的には、監視プログラム212は、NAS管理テーブル1600(図16)を参照する。自ノード110に対応するフェールオーバペア1612に他ノード110の識別子が格納されている場合、自ノード110がフェールオーバペアに属していると判定される。
図16の例では、ノード110A(NAS−01)及びノード110B(NAS−02)が一つのフェールオーバペアを構成している。この場合、ノード110A及びノード110Bの監視プログラム212は、ステップ2504において、自ノード110がフェールオーバペアに属していると判定する。
ステップ2504において、自ノード110がフェールオーバペアに属していると判定された場合、ディスクサブシステム100は信頼性優先モードに設定されている。ここで自ノード110が停止すると、フェールオーバペアに属するもう一方のノード110を監視するノード110が存在しなくなるため、信頼性が低下する。監視プログラム212は、信頼性を維持するために、自ノード110が停止する前に、自ノード110を含まない新たなフェールオーバペアを生成する必要がある。このため、監視プログラム212は、フェールオーバペア変更要求を他ノード110の監視プログラムに送信する(ステップ2505)。
ステップ2504において、自ノード110がフェールオーバペアに属していないと判定されたか、又は、ステップ2505が実行された場合、監視プログラム212は、自ノード110を省電力モードに遷移させる(ステップ2506)。
ステップ2502において、自ノード110が停止すべきタイミングが到来していないと判定された場合、監視プログラム212は、他ノード110を起動させるべきタイミングが到来したか否かを判定する(ステップ2507)。ステップ2507において実行される処理の例については、後で詳細に説明する(図27参照)。
ステップ2507において、他ノード110を起動させるべきタイミングが到来していないと判定された場合、処理はステップ2511に進む。
一方、ステップ2507において、他ノード110を起動させるべきタイミングが到来したと判定された場合、監視プログラム212は、他ノード110に起動要求を送信する(ステップ2508)(図9〜図11参照)。
次に、監視プログラム212は、フェールオーバペアに属するノード110に障害が発生したか否かを判定する(ステップ2509)。
ステップ2509において、フェールオーバペアに属するノード110に障害が発生していないと判定された場合、フェールオーバペアを変更する必要がないため、処理はステップ2511に進む。
一方、ステップ2509において、フェールオーバペアに属するノード110に障害が発生したと判定された場合、信頼性を維持するために、フェールオーバペアを変更する必要がある。このため、監視プログラム212は、ステップ2508において起動したノード110にフェールオーバペア変更要求を送信する(ステップ2510)。
次に、監視プログラム212は、フェールオーバペア変更要求を受信したか否かを判定する(ステップ2511)。具体的には、監視プログラム212は、他ノード110の監視プログラム212がステップ2505又はステップ2510において送信したフェールオーバペア変更要求を受信したか否かを判定する。
ステップ2511において、フェールオーバペア変更要求を受信したと判定された場合、監視プログラム212は、フェールオーバペアを変更する(ステップ2512)。
具体的には、監視プログラム212は、他ノード110の監視プログラム212がステップ2505において送信したフェールオーバペア変更要求を受信した場合、そのフェールオーバペア変更要求の送信元以外の、現在稼動しているノード110(例えば、ステップ2508において起動したノード110)と自ノード110とを含む新たなフェールオーバペアを生成する。
あるいは、監視プログラム212は、他ノード110の監視プログラム212がステップ2510において送信したフェールオーバペア変更要求を受信した場合、そのフェールオーバペア変更要求の送信元であるノード110と自ノード110とを含む新たなフェールオーバペアを生成する。
ステップ2512が実行された後、処理はステップ2501に戻る。その後、監視プログラム212は、ステップ2501以降の処理を繰り返し実行する。
ステップ2511において、フェールオーバペア変更要求を受信していないと判定された場合、監視プログラム212は、ステップ2512を実行せずにステップ2501に戻る。
図26は、本発明の第1の実施形態の監視プログラム212が自ノード110を停止すべきタイミングを判定するために実行する処理のフローチャートである。
具体的には、図26は、図25のステップ2502において監視プログラム212が実行する処理の例を示す。
最初に、監視プログラム212は、ディスクサブシステム100に現在設定されているモードを判定する(ステップ2601)。
ステップ2601において、ディスクサブシステム100が省電力優先モードであると判定された場合、監視プログラム212は、ディスクサブシステム100に含まれるノード110の中で、自ノード110の負荷が最も高いか否かを判定する(ステップ2602)。
ステップ2602において、自ノード110の負荷が最も高いと判定された場合、監視プログラム212は、自ノード110を停止すべきタイミングが到来していないと判定する(ステップ2605)。
一方、ステップ2602において、自ノード110の負荷が最も高くない(すなわち、自ノード110の負荷が、他ノード110の少なくとも一つの負荷より低い)と判定された場合、監視プログラム212は、自ノード110を停止すべきタイミングが到来したと判定する(ステップ2604)。
このように、ディスクサブシステム100が省電力優先モードである場合、最も負荷が高いノード110以外のノード110は、停止すべきであると判定される。
ステップ2601において、ディスクサブシステム100が信頼性優先モードであると判定された場合、監視プログラム212は、ディスクサブシステム100に含まれるノード110の中で、自ノード110の負荷が最も低いか否かを判定する(ステップ2603)。
ステップ2603において、自ノード110の負荷が最も低くないと判定された場合、監視プログラム212は、自ノード110を停止すべきタイミングが到来していないと判定する(ステップ2605)。
一方、ステップ2603において、自ノード110の負荷が最も低いと判定された場合、監視プログラム212は、自ノード110を停止すべきタイミングが到来したと判定する(ステップ2604)。ただし、ディスクサブシステム100において稼動しているノード110の数が2以下である場合、監視プログラム212は、自ノード110を停止すべきタイミングが到来していないと判定する(ステップ2605)。
このように、ディスクサブシステム100が信頼性優先モードである場合、少なくとも二つのノード110が稼動するように、最も負荷が低いノード110は、停止すべきであると判定される。
なお、ステップ2602及び2603において判定される「負荷」は、各ノード110の負荷を示す指標であれば、どのようなものであってもよい。例えば、この負荷は、収集情報テーブル1200に格納されるCPU負荷、I/O負荷及びファイルアクセス数のうちいずれか一つ、又は、これらの値から算出された指標であってもよい。
図27は、本発明の第1の実施形態の監視プログラム212が他ノード110を起動すべきタイミングを判定するために実行する処理のフローチャートである。
具体的には、図27は、図25のステップ2507において監視プログラム212が実行する処理の例を示す。
監視プログラム212は、ディスクサブシステム100の状態が信頼性優先モード又は省電力優先モードから全ノード稼動モードに遷移したか否かを判定する(ステップ2701)。
ステップ2701において、ディスクサブシステム100の状態が信頼性優先モード又は省電力優先モードから全ノード稼動モードに遷移したと判定された場合、監視プログラム212は、他ノードを起動するべきタイミングが到来したと判定する(ステップ2705)。
一方、ステップ2701において、ディスクサブシステム100の状態が信頼性優先モード又は省電力優先モードから全ノード稼動モードに遷移していないと判定された場合、監視プログラム212は、ディスクサブシステム100の状態が省電力優先モードから信頼性優先モードに遷移したか否かを判定する(ステップ2702)。
ステップ2702において、ディスクサブシステム100の状態が省電力優先モードから信頼性優先モードに遷移したと判定された場合、監視プログラム212は、他ノードを起動するべきタイミングが到来したと判定する(ステップ2705)。
一方、ステップ2702において、ディスクサブシステム100の状態が省電力優先モードから信頼性優先モードに遷移していないと判定された場合、監視プログラム212は、フェールオーバペアに属するノード110に障害が発生したか否かを判定する(ステップ2703)。
ステップ2703において、フェールオーバペアに属するノード110に障害が発生したと判定された場合、監視プログラム212は、他ノードを起動するべきタイミングが到来したと判定する(ステップ2705)。
一方、ステップ2703において、フェールオーバペアに属するノード110に障害が発生していないと判定された場合、監視プログラム212は、他ノードを起動するべきタイミングが到来していないと判定する(ステップ2704)。
以上、本発明の第1の実施形態によれば、要求される処理性能、信頼性又は消費電力等に基づいて、計算機システムの消費電力を最適に制御することができる。具体的には、要求される性能及び信頼性が損なわれない範囲内で、消費電力を最大限削減することができる。
次に、本発明の第2の実施形態について説明する。
図28は、本発明の第2の実施形態の計算機システムのハードウェア構成を示すブロック図である。
本実施形態の計算機システムは、一つ以上のNASクライアント160、及び、NASクライアント160とLAN180を介して接続された複数のディスクサブシステム100を備える。図28に示すディスクサブシステム100A〜100Dの各々は、複数のディスクサブシステム100の一つである。
ディスクサブシステム100Aは、図1のディスクサブシステム100に相当する。すなわち、図28のストレージネットワーク130A及びLU129Aは、それぞれ、図1のストレージネットワーク130及びLU129に相当する。このため、ディスクサブシステム100Aについての説明は省略する。なお、図28において、ディスクコントローラ121及びディスクドライブ128は、図示を省略する。
ディスクサブシステム100B〜100Dは、それぞれ、ディスクサブシステム100Aと同様である。すなわち、ノード110D〜110Fは、ノード110Aと同様である。ストレージネットワーク130B〜130Dは、ストレージネットワーク130Aと同様である。ディスク装置120B〜120Dは、ディスク装置120Aと同様である。LU129D〜129Fは、LU129Aと同様である。このため、ディスクサブシステム100B〜100Dについての説明も省略する。
なお、図1において説明したように、各ディスクサブシステム100が単一の筐体に含まれる必要はない。
ストレージネットワーク130A〜130Dは、相互に接続されていない。このため、あるノード110と、そのノード110が属するディスクサブシステム100以外のディスクサブシステム100に属するLU129との間に、パス301を設定することができない。すなわち、例えば、ノード110Aは、いずれかのストレージネットワーク130を介してLU129Dにアクセスすることができない。
図28には、一つのディスクサブシステム100に一つのノード110及び一つのLU129が図示されている。しかし、各ディスクサブシステム100は、任意の数のノード110及び任意の数のLU129を備えることができる。
次に、本実施形態の概要を、図29及び図30を参照して説明する。
図29は、本発明の第2の実施形態の計算機システムにおいて、相互に関連のある複数のファイルがそれぞれ異なるディスクサブシステム100に格納されている例を示す説明図である。
具体的には、図29の例では、ディスクサブシステム100AのLU129Aにファイル303Eが格納され、ディスクサブシステム100BのLU129Dにファイル303Fが格納され、ディスクサブシステム100CのLU129Eにファイル303Gが格納される。なお、図29の計算機システムは図28に示したものに対応するが、説明に必要のない部分(例えば、ストレージネットワーク130)は省略されている。
ノード110AとLU129Aとの間に通信可能なパスが設定されている。ノード110DとLU129Dとの間に通信可能なパスが設定されている。ノード110EとLU129Eとの間に通信可能なパスが設定されている。
ファイル303E及びファイル303Fは、それぞれ、ファイル名「HTML−1」及び「HTML−2」によって識別されるHTML(HyperText Markup Language)ファイルである。ファイル303Gは、ファイル名「DATA−1」によって識別されるデータファイルである。
ファイル303Eには、ファイル303Fへのリンクが埋め込まれている。ファイル303Fには、ファイル303Gへのリンクが埋め込まれている。すなわち、ノード110Aがファイル303Eにアクセスすると、その結果、ファイル303Fへのアクセスが必要になる場合がある。さらに、ファイル303Fにアクセスする結果、ファイル303Gへのアクセスが必要になる場合がある。
ノード110AとLU129Dとの間に通信可能なパス301を設定することができれば、ノード110Aはそのパス301を介してLU129D内のファイル303Fにアクセスすることができる。しかし、上記のように、ノード110AとLU129Dとの間には通信可能なパス301を設定することができない。このため、ノード110Aは、ノード110Dを介してファイル303Fにアクセスする必要がある。
ノード110Dが稼動していれば、ノード110Aは、ノード110Dを介してファイル303Fにアクセスすることができる。しかし、ノード110Dが省電力モードである場合、ノード110Aは、ノード110Dを起動する(すなわち、稼動モードに遷移させる)必要がある。このため、ノード110Dの起動に要する時間だけ、ファイル303Fへのアクセスが遅延する。
同様の問題は、ノード110Eが省電力モードである場合、ファイル303Gにアクセスする際にも発生する。
この問題は、ノード110に設定されている省電力レベルの値が大きいほど深刻である。図4に示すように、省電力レベルの値が大きい(すなわち、削減される電力が大きい)ほど、省電力モードから稼動モードに復帰するために必要な時間が長くなるためである。
図29の例では、ノード110D、110E及び110Fに、それぞれ、省電力レベル1、2及び3が設定されている。この場合、ノード110Dの復帰に要する時間よりノード110Eの復帰に要する時間が長く、ノード110Fの復帰に要する時間はさらに長い。
図30は、本発明の第2の実施形態の計算機システムにおいて、相互に関連のある複数のファイルが同一のディスクサブシステム100に格納されている例を示す説明図である。
図29に示すように、相互にリンクが設定された複数のファイル303が複数のディスクサブシステム100に格納されている場合、それらのファイル303を、稼動しているノード110からパス301を介してアクセス可能なLU129に移動することによって、アクセスの遅延を防ぐことができる。
図30の例では、ファイル303F及び303Gが、いずれも、ファイル303Eを格納しているものと同一のLU129Aに格納されている。この場合、ノード110Aは、通信可能に設定されたパス301を介して、ファイル303E〜303Gにアクセスすることができる。
図31は、本発明の第2の実施形態の監視プログラム212がファイル303を移動するために実行する処理のフローチャートである。
本実施形態の監視プログラム212は、第1の実施形態の監視プログラム212と同様の処理(図20及び図25〜図27参照)に加えて、図31に示すファイル移動処理を実行する。このファイル移動処理は、図29に示すように複数のディスクサブシステム100に格納された、相互にリンクが設定された複数のファイル303を、図30に示すように、一つのディスクサブシステム100内のLU129に移動する処理である。
最初に、監視プログラム212は、ファイルアクセス情報テーブル1700を参照し、他ノード110からアクセスされたファイル303を抽出する(ステップ3101)。
例えば、ノード110Dが、図17に示すファイルアクセス情報テーブル1700を保持している場合、ノード110Dの監視プログラム212は、ファイルアクセス情報テーブル1700のアクセス元1704として他ノード110Aの識別子「NAS−01」が格納されているエントリのファイル1701の値「mnt/FS2/HTML−2.html」を抽出する。このエントリは、ファイル名「HTML−2.html」によって識別されるファイル303Fが、他ノード110Aからアクセスされたことを示している。このことは、ノード110Aがアクセス可能ないずれかのファイル303と、ノード110Dがアクセス可能なノード110Dとの間に関連がある(例えば相互にリンクが設定されている)可能性が高いことを意味する。
このため、次に、監視プログラム212は、ステップ3101において抽出されたファイル303を、アクセス元のノード110にコピーする(ステップ3102)。例えば、上記の図17の例では、ノード110Dの監視プログラム212は、ファイル303Fの複製を作成する要求をノード110Aに送信する。その結果、ファイル303Fの複製が、ノード110Aがパス301を介してアクセス可能なLU129(例えば、図30に示すLU129A)にコピーされる。なお、図30には、作成されたファイル303Fの複製をファイル303Fと表示している。
複製の作成が終了した後、LU129Dからファイル303Fが削除されてもよいし、削除されなくてもよい。
次に、監視プログラム212は、自ノード110を省電力モードに遷移させる(ステップ3103)。
上記のファイル移動処理は、図20のステップ2004又は図25のステップ2506において実行されてもよい。あるいは、ファイル移動処理は、所定のタイミングで(例えば定期的に)各ノード110の監視プログラム212によって実行されてもよい。
上記のファイル移動処理がステップ2004又はステップ2506において実行される場合、監視プログラム212は、自ノード110がこれから遷移する省電力レベルに基づいて、複製の作成の要否を判定してもよい。具体的には、監視プログラム212は、ステップ3101を実行する前に、自ノード110がこれから遷移する省電力レベルを判定してもよい。その結果、自ノード110がこれから省電力レベル3に遷移すると判定された場合、監視プログラム212は、ステップ3101〜3103を実行してもよい。一方、自ノード110がこれから省電力レベル1又は2に遷移すると判定された場合、監視プログラム212は、ステップ3101〜3102を実行せずに、ステップ3103を実行してもよい。
なお、ノード110のスペック(例えば、記憶容量)の制限等によって、図30に示すように一つのノード110の管理下に関連する複数のファイル303を集約することができない場合がある。この場合、アクセスの遅延の影響がより少なくなるようにファイル303を配置することが望ましい。
例えば、図29に示すように、ファイル303Eにファイル303Fへのリンクが埋め込まれ、ファイル303Fにファイル303Gへのリンクが埋め込まれている場合について説明する。この場合、ファイル303Eがアクセスされれば必ずファイル303Fへのアクセスが発生するとは限らない。同様に、ファイル303Fがアクセスされれば必ずファイル303Gへのアクセスが発生するとは限らない。このため、ファイル303F及びファイル303Gが独立にアクセスを受けない限り、ファイル303Eへのアクセス頻度が最も高く、ファイル303Gへのアクセス頻度が最も低くなる。
このような場合、アクセス頻度がより低いファイル303を、省電力レベルの値がより大きいノード110の管理下に配置することによって、アクセス遅延の影響を最小限に抑えることができる。例えば、図29に示すように、最もアクセス頻度が高いファイル303Eが、稼動しているノード110Aの管理下に配置され、2番目にアクセス頻度が高いファイル303Fが、省電力レベル1に設定されたノード110Dの管理下に配置され、最もアクセス頻度が低いファイル303Gが、省電力レベル2に設定されたノード110Eの管理下に配置される。
この場合、ノード110Eの起動に要する時間は、ノード110Dの起動に要する時間より長い。しかし、ノード110Eの起動が必要になる頻度は、ノード110Dの起動が必要になる頻度より低い。このため、アクセスの遅延が発生する頻度が抑制される。
以上、本発明の第2の実施形態によれば、相互にリンクが設定された複数のファイル303を一つのディスクサブシステム100にまとめて格納することができる。その結果、リンクに従ってファイル303がアクセスされる場合にも、省電力モードに設定されているノード110を起動する必要がなくなる。このため、アクセスの遅延を防ぐことができ、さらに、ノード110を起動することによる消費電力の増大を防ぐことができる。