(57)【特許請求の範囲】
【請求項１】
ＡＬＵＡ（ａｓｙｍｍｅｔｒｉｃ  ＬＵＮ  ａｃｃｅｓｓ）アレイ内のＬＵＮ（ｌｏｇｉｃａｌ  ｕｎｉｔ）用の複数のコントローラのうちどれが好適なコントローラかを検出するステップであって、前記ＡＬＵＡアレイは情報を、前記好適なコントローラを識別するマルチパスエージェントに提供せず、前記好適なコントローラを検出するステップは前記ＡＬＵＡアレイの当初の構成に基づいており、前記好適なコントローラを検出する前記ステップは、前記好適なコントローラを識別する情報をクラスタ内のその他のノードから受信するステップを有し、前記別のノードは、複数のコントローラのうちの１つを前記好適なコントローラとなるように選択している、
ステップと、
前記ＬＵＮの現在の所有者コントローラが前記好適なコントローラではないことを検出するステップと、
前記現在の所有者コントローラから前記好適なコントローラへの所有権の変更を開始するステップであって、前記好適なコントローラを好適として指定することは前記所有権の変更に影響を受けず、前記好適なコントローラを検出する前記ステップ、前記現在の所有者コントローラを検出する前記ステップ、および開始する前記ステップは、マルチパスエージェントを実装する演算装置によって実行される、ステップと、
を有する方法。
【請求項２】
前記好適なコントローラを検出する前記ステップは、前記ＬＵＮの前記現在の所有者コントローラと関連する状態情報を検出するステップを有する請求項１に記載の方法。
【請求項３】
前記ＬＵＮとの関係における前記ＡＬＵＡアレイ内の第１コントローラの初期状態を検出するステップであって、前記初期状態は、有効な最適化された状態である、ステップと、
前記ＬＵＮとの関係における前記第１コントローラの後続の状態を検出するステップであって、前記後続の状態を検出する前記ステップは、前記初期状態を検出する前記ステップの後に実行され、且つ、前記後続の状態を検出する前記ステップは、前記ＡＬＵＡアレイからの状態遷移を通知するメッセージの受信を検出しないときに実行される、ステップと、
前記後続の状態が前記有効な最適化された状態ではないことに応答して、前記演算装置が第２コントローラを介して前記ＬＵＮにアクセスするようにするステップであって、前記第２コントローラは、演算装置が第２コントローラを介して前記ＬＵＮにアクセスするようにする前記ステップが実行された際に、前記有効な最適化された状態にある、ステップと、
をさらに有する請求項１に記載の方法。
【請求項４】
前記後続の状態を検出する前記ステップは、前記演算装置が前記第１コントローラを介して前記ＬＵＮにアクセスした際に入出力性能の低下を検出するステップを有する請求項３に記載の方法。
【請求項５】
前記後続の状態を検出する前記ステップは、前記演算装置が管理者から要求を受け取ることに応答して実行される請求項３に記載の方法。
【請求項６】
前記後続の状態を検出する前記ステップは、前記演算装置が前記第１コントローラを介して前記ＬＵＮにアクセスした際に入出力エラーを検出するステップを有する請求項３に記載の方法。
【請求項７】
マルチパスエージェントを実行する演算装置によって実行可能なプログラム命令を有するコンピュータ可読ストレージ媒体であって、
前記プログラム命令は、
ＡＬＵＡ（ａｓｙｍｍｅｔｒｉｃ  ＬＵＮ  ａｃｃｅｓｓ）アレイ内のＬＵＮ（ｌｏｇｉｃａｌ  ｕｎｉｔ）用の複数のコントローラのうちどれが好適なコントローラかを検出し、前記ＡＬＵＡアレイは情報を、前記好適なコントローラを識別するマルチパスエージェントに提供せず、前記好適なコントローラを検出することは前記ＡＬＵＡアレイの当初の構成に基づき、前記好適なコントローラを検出することは、前記好適なコントローラを識別する情報をクラスタ内のその他のノードから受信することを含み、前記別のノードは、複数のコントローラのうちの１つを前記好適なコントローラとなるように選択しており、
前記ＬＵＮの現在の所有者コントローラが前記好適なコントローラではないことを検出し、且つ、
前記現在の所有者コントローラから前記好適なコントローラへの所有権の変更を開始し、前記好適なコントローラを好適として指定することは前記所有権の変更に影響を受けない、
ように実行可能である、媒体。
【請求項８】
前記好適なコントローラの検出は、前記ＬＵＮの前記現在の所有者コントローラと関連する状態情報を検出することを有する請求項７に記載のコンピュータ可読ストレージ媒体。
【請求項９】
前記ＬＵＮとの関係における前記ＡＬＵＡアレイ内の第１コントローラの初期状態を検出し、前記初期状態は、有効な最適化された状態であり、
前記ＬＵＮとの関係における前記第１コントローラの後続の状態を検出し、前記後続の状態の検出は、前記初期状態の検出の後に実行され、且つ、前記後続の状態の検出は、前記ＡＬＵＡアレイからの状態遷移を通知するメッセージの受信を検出しないときに実行され、且つ、
前記後続の状態が前記有効な最適化された状態ではないことに応答して、前記演算装置が第２コントローラを介して前記ＬＵＮにアクセスするようにし、前記第２コントローラは、前記演算装置が前記第２コントローラを介して前記ＬＵＮにアクセスするようにした際に、前記有効な最適化された状態にある、
ようにさらに実行可能であるプログラム命令を有する、請求項７に記載のコンピュータ可読ストレージ媒体。
【請求項１０】
前記後続の状態の検出は、前記演算装置が前記第１コントローラを介して前記ＬＵＮにアクセスした際の入出力性能の低下の検出を有する請求項９に記載のコンピュータ可読ストレージ媒体。
【請求項１１】
１つ又は複数のプロセッサと、
前記１つ又は複数のプロセッサに結合され、且つ、プログラム命令を保存するメモリと、
を有するシステムであって、
前記プログラム命令は、
ＡＬＵＡ（ａｓｙｍｍｅｔｒｉｃ  ＬＵＮ  ａｃｃｅｓｓ）アレイ内のＬＵＮ（ｌｏｇｉｃａｌ  ｕｎｉｔ）用の複数のコントローラのうちどれが好適なコントローラかを検出し、前記ＡＬＵＡアレイは情報を、前記好適なコントローラを識別するマルチパスエージェントに提供せず、前記好適なコントローラを検出することは前記ＡＬＵＡアレイの当初の構成に基づき、前記好適なコントローラを検出することは、前記好適なコントローラを識別する情報をクラスタ内のその他のノードから受信することを含み、前記別のノードは、複数のコントローラのうちの１つを前記好適なコントローラとなるように選択しており、
前記ＬＵＮの現在の所有者コントローラが前記好適なコントローラではないことを検出し、且つ、
前記現在の所有者コントローラから前記好適なコントローラへの所有権の変更を開始し、前記好適なコントローラを好適として指定することは前記所有権の変更に影響を受けない、
ように、前記１つ又は複数のプロセッサによって実行可能である、システム。
【請求項１２】
前記好適なコントローラの検出は、前記ＬＵＮの前記現在の所有者コントローラと関連する状態情報を検出することを有する請求項１１に記載のシステム。
【請求項１３】
前記ＬＵＮとの関係における前記ＡＬＵＡアレイ内の第１コントローラの初期状態を検出し、前記初期状態は、有効な最適化された状態であり、
前記ＬＵＮとの関係における前記第１コントローラの後続の状態を検出し、前記後続の状態の検出は、前記初期状態の検出の後に実行され、且つ、前記後続の状態の検出は、前記ＡＬＵＡアレイからの状態遷移を通知するメッセージの受信を検出しないときに実行され、且つ、
前記後続の状態が前記有効な最適化された状態ではないことに応答して、演算装置が第２コントローラを介して前記ＬＵＮにアクセスするようにし、前記第２コントローラは、前記演算装置が前記第２コントローラを介して前記ＬＵＮにアクセスするようにした際に、前記有効な最適化された状態にある、
ように、前記１つ又は複数のプロセッサによってさらに実行可能であるプログラム命令をさらに含む、請求項１１に記載のシステム。
【請求項１４】
前記後続の状態の検出は、前記演算装置が前記第１コントローラを介して前記ＬＵＮにアクセスした際の入出力性能の低下の検出を有する請求項１３に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＡＬＵＡ（ａｓｙｍｍｅｔｒｉｃ  ＬＵＮ（ｌｏｇｉｃａｌ  ｕｎｉｔ）  ａｃｃｅｓｓ）アレイに関する。
【背景技術】
【０００２】
いくつかのタイプのストレージアレイは、論理ユニット又はＬＵＮと呼ばれるストレージユニットのアレイに対する冗長経路を提供している。ＡＬＵＡ（ａｓｙｍｍｅｔｒｉｃ  ＬＵＮ（ｌｏｇｉｃａｌ  ｕｎｉｔ）  ａｃｃｅｓｓ）は、ストレージアレイの動作を規定する標準的なメカニズムである。ＡＬＵＡアレイにおいては、ホスト演算装置は、いくつかのアレイコントローラのうちのいずれかを介してアレイ内のそれぞれのＬＵＮにアクセスすることができる。但し、任意の所与の時点においては、所与のＬＵＮとの関係において、コントローラのうちの１つのみが最適化された状態にある（且つ、従って、より最適な性能を提供する）。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
従って、ホストが、最適化された状態にはないコントローラを介してＬＵＮに対するアクセスを試みた場合には、性能が悪影響を受けることになろう（例えば、ＬＵＮにアクセスする際に、Ｉ／Ｏスループットが低下するおよび／又は、ＬＵＮに対するアクセスが完全に不可能となる）。
【課題を解決するための手段】
【０００４】
ＡＬＵＡアレイコントローラの状態遷移を検出および処理するための様々なシステムおよび方法が開示される。それらの方法の１つは、ＡＬＵＡ（ａｓｙｍｍｅｔｒｉｃ  ＬＵＮ  ａｃｃｅｓｓ）アレイ内のＬＵＮ（ｌｏｇｉｃａｌ    ｕｎｉｔ）用の好適なコントローラを検出するステップと、次いで、ＬＵＮの現在の所有者コントローラが好適なコントローラではないことを検出するステップと、を伴う。これに応答して、本方法は、現在の所有者コントローラから好適なコントローラへの所有権の変更を開始することができる。この方法は、マルチパスエージェントを実装する演算装置によって実行することができる。
【０００５】
好適なコントローラを検出するステップは、ＡＬＵＡアレイによって提供される静的な選好インジケータにアクセスするステップ、ＬＵＮの現在の所有者コントローラと関連する状態情報を検出するステップ、および／又は好適なコントローラを識別する情報をクラスタ内の別のノードから受信するステップを伴うことが可能であり、この別のノードは、（例えば、予め規定されたアルゴリズムに従って）複数のコントローラのうちの１つを好適なコントローラとなるように選択している。
【０００６】
別の方法は、ＬＵＮとの関係においてＡＬＵＡアレイ内の第１コントローラの初期状態を検出するステップを伴う。この初期状態は、有効な最適化された状態である。次いで、本方法は、初期状態の検出の後に、ＬＵＮとの関係における第１コントローラの後続の状態を検出する。本方法は、ＡＬＵＡアレイからの状態遷移を通知するメッセージの受信に応答して後続の状態を検出してはいない（従って、本方法は、例えば、方法を実行するマルチパスエージェントがこのようなメッセージを受信しないシステム内において動作することができる）。次いで、本方法は、後続の状態が有効な最適化された状態ではないことに応答して、演算装置が第２コントローラを介してＬＵＮにアクセスするようにすることができる。演算装置が第２コントローラを介してＬＵＮにアクセスするようにするステップが実行される際に、第２コントローラは、有効な最適化された状態にある。
【０００７】
後続の状態を検出するステップは、演算装置が第１コントローラを介してＬＵＮにアクセスした際の入出力性能の低下を検出するステップ、ＬＵＮとの関係における第１コントローラの状態を識別する情報をＡＬＵＡアレイに対して要求するステップ、および／又は演算装置が第１コントローラを介してＬＵＮにアクセスした際の入出力エラーを検出するステップを伴うことができる。後続の状態を検出する動作は、演算装置が管理者から要求を受け取ることに応答して実行することができる。
【０００８】
システムの一例は、１つ又は複数のプロセッサと、これらのプロセッサに結合されたメモリと、を含むことができる。メモリは、上述のものなどの方法を実行するために実行可能なプログラム命令を保存する。同様に、このようなプログラム命令は、コンピュータ可読ストレージ媒体上に保存することもできる。
【０００９】
以上の内容は、概要であり、且つ、従って、必要に応じて、詳細事項の単純化、一般化、および省略を含んでおり、従って、当業者は、この概要が、例示を目的としたものに過ぎず、且つ、決して限定を意図したものはないことを理解するであろう。請求項によってのみ規定される本発明のその他の態様、発明上の特徴、利点については、後述する非限定的な詳細説明から明らかとなろう。
【００１０】
本発明については、添付図面を参照することにより、更に理解され、且つ、その多数の目的、特徴、および利点が当業者に明らかとなろう。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態によるＡＬＵＡアレイを含むシステムのブロックダイアグラムである。
【図２】本発明の実施形態によるＡＬＵＡアレイ内における選好の検出および処理の方法のフローチャートである。
【図３】本発明の一実施形態によるＡＬＵＡアレイ内における所有権の遷移を検出および処理する方法のフローチャートである。
【図４】本発明の一実施形態によるＡＬＵＡアレイに対するホストインターフェイスをソフトウェアによって実装する方法を示す演算装置のブロックダイアグラムである。
【図５】本発明の一実施形態による様々な演算装置がネットワークを介して通信する方法を示すネットワーク接続されたシステムのブロックダイアグラムである。
【発明を実施するための形態】
【００１２】
本発明には、様々な変更および代替形態が可能であるが、図面および詳細な説明には、本発明の特定の実施形態が例として提供されている。図面および詳細な説明は、開示されている特定の形態に本発明を限定することを意図したものではないことを理解されたい。むしろ、本発明は、添付の請求項によって規定された本発明の精神および範囲に含まれるすべての変更、均等物、および代替肢を含むものと解釈されたい。
【００１３】
図１は、ＡＬＵＡ（ａｓｙｍｍｅｔｒｉｃ  ＬＵＮ（ｌｏｇｉｃａｌ  ｕｎｉｔ）  ａｃｃｅｓｓ）アレイを含む演算システムのブロックダイアグラムである。このシステムにおいては、それぞれのホスト装置は、ＡＬＵＡアレイ内のコントローラの間におけるＬＵＮ所有権の変化を検出するおよび／又はＡＬＵＡアレイ内の好適なＬＵＮ所有権を検出するように構成されたマルチパスエージェント（例えば、ＤＭＰ（ｄｙｎａｍｉｃ  ｍｕｌｔｉｐａｔｈｉｎｇ）を実行するように構成されたエージェントなど）を実装している。この結果、マルチパスエージェントは、検出された情報の組のいずれか又は両方を使用することにより、そのマルチパスエージェントを含むホストがＡＬＵＡ内のＬＵＮに対してアクセスする方法を制御することができる。
【００１４】
図示されているように、図１のコンピュータシステムは、３つのホスト演算装置２０（１）、２０（２）、および２０（３）（集合的にホスト２０と呼称する）にネットワーク３０によって結合されたＡＬＵＡアレイ１０を含む。それぞれのホスト演算装置は、マルチパスエージェントを含んでいる。即ち、ホスト２０（１）は、マルチパスエージェント２５（１）を含み、ホスト２０（２）は、マルチパスエージェント２５（２）を含み、且つ、ホスト２０（３）は、マルチパスエージェント２５（３）を含む。
【００１５】
ＡＬＵＡアレイ１０は、２つのコントローラ１５（１）および１５（２）（集合的にコントローラ１５と呼称する）と、いくつかのＬＵＮ１８（１）、１８（２）、．．．、１８（ｎ）（集合的にＬＵＮ１８と呼称する）と、を含む。尚、図１の例には、特定数のホスト、コントローラ、およびＬＵＮが示されているが、それぞれのタイプのコンポーネントの数は、実施形態ごとに変化することができることに留意されたい。従って、いくつかの実施形態は、３つを著しく上回る数のホストを含んでもよい。同様に、いくつかの実施形態は、２つ以上のコントローラを含んでもよい。
【００１６】
ＬＵＮ１８は、それぞれ、論理的なストレージ装置である。それぞれのＬＵＮは、ハードドライブ、ＣＤ（ｃｏｍｐａｃｔ  ｄｉｓｃ）、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｃ）、フラッシュメモリなどのＳＳＤ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ）メモリ、およびこれらに類似したものを含む様々な異なるストレージ装置のうちの１つ又は複数のストレージ装置のそれぞれのストレージ装置の少なくとも一部を含むことができる。
【００１７】
ホスト２０は、それぞれ、サーバー、パーソナル演算装置、ラップトップコンピュータ、ネットブック、パーソナルデジタルアシスタント、携帯電話機、又はこれらに類似したものを含む様々な異なるタイプの演算装置のいずれかを含むことができる。それぞれのホスト２０は、ＡＬＵＡアレイ１０内のＬＵＮ１８のうちの１つ又は複数のＬＵＮ内に保存される情報にアクセス（例えば、生成、読取り、書込み、又は削除）するように構成されている。それぞれのホスト２０は、コントローラ１５のうちの１つと通信することにより、ＬＵＮ１８に対してアクセスする。
【００１８】
まず、図１のシステムが起動した際に、管理者又はＡＬＵＡアレイ１０用の既定のアルゴリズムを使用し、それぞれのＬＵＮ１８の所有権をコントローラ１５のうちの１つに対して割り当てることができる。この初期構成は、ＡＬＵＡアレイ１０の選好（ｐｒｅｆｅｒｅｎｃｅ）と呼称することもできる。ＬＵＮのオリジナルの所有者は、そのＬＵＮの好適な所有者と呼称することができる。
【００１９】
ＬＵＮ１８を所有するコントローラ１５は、所有しているＬＵＮの（例えば、そのＬＵＮから読み取られるおよび／又はそれに対して書き込まれる最近アクセスされたデータの）キャッシュ情報を維持することになる。従って、ホスト２０が、非所有者コントローラを介してそのＬＵＮに対するアクセスを試みた場合には、非所有者コントローラは、ＬＵＮの現在のキャッシュを取得するために、所有者コントローラと通信することが必要となる。この結果、通常、非所有者コントローラを介してＬＵＮにアクセスした際には、入出力（Ｉ／Ｏ）性能が低下することになる。
【００２０】
このコントローラに対するＬＵＮ所有権のオリジナルの割当は、ＡＬＵＡアレイの動作負荷をバランスさせるように、実行することができる。例えば、ＬＵＮをコントローラの間において均等に分割することができる。或いは、この代わりに、予想アクセスパターンを考慮することにより、より人気のあるＬＵＮ（例えば、より頻繁にアクセスされると予想されるＬＵＮ、より高品質のサービスを提供すると予想されるＬＵＮ、又はその他の類似の特性を有すると予想されるＬＵＮ）の所有権が割り当てられているコントローラに対しては、人気のないＬＵＮが割り当てられているコントローラよりも、相対的に少ない数のＬＵＮが割り当てられるようにすることもできる。
【００２１】
それぞれのコントローラは、所与のＬＵＮとの関係において、いくつかの状態のうちの１つの状態において動作することができる。コントローラが適切に動作し、且つ、そのＬＵＮに対するアクセスを提供することができる場合には、コントローラは、有効な状態にある。有効なコントローラが、現在、そのＬＵＮの所有者である場合には、そのコントローラは、（例えば、所有者コントローラを介してそのＬＵＮにアクセスすることにより、より最適な性能が提供されるため）、有効な最適化された状態において動作している。その代わりに、有効なコントローラがそのＬＵＮの現在の所有者ではない場合には、コントローラは、（例えば、非所有者コントローラを介してＬＵＮにアクセスすることにより、最適とは言えない性能が提供されるため）、有効ではあるが最適化されてはいない状態において動作している。又、コントローラは、スタンバイ状態（例えば、現時点においてはＬＵＮに対するアクセスを提供していないが、フェールオーバーコントローラとして利用可能である場合）において、又は利用不能な状態（例えば、障害が発生しているか又はそのＬＵＮに対してアクセスすることができない場合）において、動作してもよい。
【００２２】
ＬＵＮの所有権は、１つのコントローラから別のコントローラに遷移することができることに留意されたい。従って、ＬＵＮの現在の所有者が好適な所有者ではない場合がある。大部分のＡＬＵＡアレイにおいては、マルチパスエージェントは、ＬＵＮの現在の所有者を識別する情報に対してアクセスすることはできるが、多くのＡＬＵＡアレイは、ＬＵＮの好適な所有者を直接的に識別するための情報をマルチパスエージェントに提供してはいない（後述するように、いくつかのＡＬＵＡアレイは、この情報を選好インジケータの形態で提供しているが、多くのＡＬＵＡアレイは、この機能を含んではいない。更には、いくつかのＡＬＵＡアレイは、選好インジケータを提供してはいるが、すべてのＡＬＵＡアレイがこのインジケータを静的な状態で維持しているわけではなく、その結果、インジケータが、究極的には、好適な所有者ではなく、現在の所有者のみを識別することになりうる）。
【００２３】
ホスト２０内のマルチパスエージェント２５は、それぞれのホストからそれぞれのＬＵＮにアクセスすると共にそれぞれのＬＵＮに対してアクセスするべく個々のホストが使用する経路を制御するために利用可能な（異なるコントローラを介した）複数の経路を検出することができる。ＬＵＮにアクセスするために現在使用している経路内に障害又は性能の低下が観察された場合には、マルチパスエージェントは、別の経路を使用してＬＵＮにアクセスすることをホストが開始するようにする。従って、マルチパスエージェントにより、ホストは、ＡＬＵＡアレイによって提供される冗長経路の利益を享受することができる。
【００２４】
更には、マルチパスエージェントは、ＬＵＮの好適なコントローラ所有権を検出することができる。この結果、マルチパスエージェントは、ＡＬＵＡアレイ内において変化が発生するのに伴って、好適な割当に遅滞なく追随することができる。例えば、当初、コントローラ１５（１）にＬＵＮ１８（１）の所有権が割り当てられ、これにより、コントローラ１５（１）がＬＵＮ１８（１）の好適な所有者となっていると仮定しよう。この後に、コントローラ１５（１）に障害が発生し、従って、所有権がコントローラ１５（２）に移る。少し後の時点において、コントローラ１５（１）が、修復され、且つ、有効な動作に復帰する。この時点において、マルチパスエージェントは、ＬＵＮにアクセスするために使用している現在のコントローラがそのＬＵＮ用の好適なコントローラではなく、且つ、好適なコントローラが利用可能であることを検出することができる。これに応答して、マルチパスエージェントは、（例えば、コントローラ１５（２）からコントローラ１５（１）へのフェールバックを起動することによって）ＬＵＮの所有権が修復済みのコントローラ１５（１）に戻るようにすることができる。
【００２５】
好適な構成を検出し、且つ、可能な際には動作を好適な構成に回復することにより、マルチパスエージェントは、ＡＬＵＡアレイ用に規定されたオリジナルの構成の維持を支援することができる。これにより、例えば、そのＡＬＵＡアレイ用に元々確立されていた負荷バランス構成の維持を支援することができる。
【００２６】
いくつかの実施形態においては、マルチパスエージェントは、そのＬＵＮのためにＡＬＵＡアレイによって提供される静的な選好情報に単純にアクセスすることにより、それぞれのＬＵＮ用の好適な構成を検出することができる。この選好情報は、そのＬＵＮの好適な所有者を識別している。それぞれのマルチパスエージェントが、同一の選好情報を観察することになると共に、同一のコントローラを介して所与のＬＵＮにアクセスするべくすべてのホストを構成することができるように、同一の方式により、その情報を使用することになるという点に留意されたい。
【００２７】
多くの実施形態においては、ＡＬＵＡアレイは、それぞれのＬＵＮ用の選好情報を提供してはない。いくつかのこのような実施形態においては、マルチパスエージェントは、それぞれのＬＵＮ／コントローラのペアについて発生する状態遷移を追跡するように構成することができる。次いで、追跡した状態遷移を使用することにより、ＬＵＮ用の好適な構成を識別することができる。例えば、マルチパスエージェントが所与のＬＵＮとの関係において単一の状態遷移（例えば、有効な最適化された状態をその他のコントローラに移動させるコントローラから別のコントローラーへのフェールオーバー）を検出した場合には、マルチパスエージェントは、ＬＵＮがそれからフエールオーバーされたコントローラがそのＬＵＮの好適な所有者であることを識別することができる。複数の遷移を同様に追跡することが可能であり、且つ、これらの遷移を使用し、好適な所有者を識別することができる。それぞれのマルチパスエージェントは、同一のコントローラを使用して所与のＬＵＮにアクセスするべくすべてのホストを構成することができるように、同一の方式により、これらの状態遷移を追跡および使用することができる。
【００２８】
いくつかの実施形態においては、状態情報（例えば、ＡＡＳ（ａｓｙｍｍｅｔｒｉｃ  ａｃｃｅｓｓ  ｓｔａｔｅ）値および／又はＡＬＵＡ「ＳＴＡＴＵＳ  ＣＯＤＥ」値）をＬＵＮ用のコントローラに対して要求することにより、状態遷移を検出することができる。状態情報は、コントローラがそのＬＵＮとの関係において状態を変化させたかどうかと、遷移の理由と、を集合的に通知することができる。例えば、コントローラが、有効ではあるが最適化されていない状態にあることをＡＡＳが通知しており、且つ、遷移がＬＵＮについて発生したことをＳＴＡＴＵＳ  ＣＯＤＥが通知している場合には、マルチパスエージェントは、そのコントローラが好適なコントローラであることを検出することができる。その代わりに、コントローラが有効な最適化された状態にあり、且つ、遷移が発生したことをＳＴＡＴＵＳ  ＣＯＤＥが通知した場合には、マルチパスエージェントは、そのコントローラが好適なコントローラではないことを検出することができる。状態の変化が検出されていないことをＳＴＡＴＵＳ  ＣＯＤＥが通知した場合には、マルチパスエージェントは、そのコントローラが好適なコントローラであるかどうかをその現在の状態に基づいて判定することができる（例えば、現在、有効な最適化されたコントローラであるとＡＡＳが通知している場合には、好適である）。
【００２９】
いくつかのＡＬＵＡアレイの実装形態は、状態情報を使用して好適なコントローラを識別することができるような方式で、ＳＴＡＴＵＳ  ＣＯＤＥ値などの状態情報を維持してはいないであろう。具体的には、ＡＬＵＡ規格は、フェールバックの後のＳＴＡＴＵＳ  ＣＯＤＥ値を規定してはいない（例えば、コントローラ１５（１）が好適なコントローラであり、且つ、フェールオーバーが、コントローラ１５（１）からコントローラ１５（２）に発生し、且つ、次いで、コントローラ１５（１）に戻った場合）。従って、ＡＬＵＡアレイのいくつかの実装形態は、フェールバックの後に、ＳＴＡＴＵＳ  ＣＯＤＥ値をリセットしてはいない。フェールバックの後にＳＴＡＴＵＳ  ＣＯＤＥ値をリセットしないことにより、マルチパスエージェントが上述の方式によって好適なコントローラを識別するのが妨げられ得る。
【００３０】
いくつかの実施形態においては、状態の遷移を追跡する代わりに（例えば、ＡＬＵＡアレイがＳＴＡＴＵＳ  ＣＯＤＥ値などの状態情報を提供しない場合、又はＡＬＵＡアレイがフェールバックの後にＳＴＡＴＵＳ  ＣＯＤＥ値をリセットしない場合）、マルチパスエージェントは、一貫性のあるアルゴリズムを単純に使用して好適な構成を識別することができる。一貫性のあるアルゴリズムは、同一のコントローラを使用して所与のＬＵＮにアクセスするべくすべてのホストを構成することができるように、同一システム内のすべてのマルチパスエージェントによって利用される。
【００３１】
一貫性のあるアルゴリズムの一例は、コントローラの特性（例えば、コントローラの識別子）を単純に使用してＬＵＮの所有者を選択するように、構成されている。例えば、最低の（又は、最大の）識別子を有する有効なコントローラをＬＵＮの好適な所有者として選択するように、すべてのマルチパスエージェントを構成することができる。同様に、現在の有効な最適化されたコントローラをＬＵＮの好適な所有者として使用するように、マルチパスエージェントを構成することもできる。
【００３２】
一貫性のあるアルゴリズムの別の例は、所与のＬＵＮ用の好適なコントローラを１つのホスト（例えば、クラスタ内のプライマリノード）が選択するように構成されているものである。この結果、そのホストは、その選択結果をシステム内のその他のホストのすべてに対して伝達し、これらのホストは、提供された選択結果を使用することになる。そのホストは、例えば、クラスタ通信プロコルを使用することにより、その選択結果を伝達することができる。
【００３３】
好適な構成が検出されたら、マルチパスエージェントは、（例えば、現在の所有者コントローラの識別子を好適な所有者コントローラと比較することによって）ＬＵＮの現在の所有者がＬＵＮの好適な所有者であるかどうかを判定することできる。現在の所有者が好適な所有者ではなく、且つ、好適な所有者が利用可能である（例えば、有効又はスタンバイ状態にある）場合には、マルチパスエージェントは、現在の所有者から好適な所有者への所有権の遷移を開始することが可能であり、且つ、マルチパスエージェントを含むホストが好適な所有者を介してＬＵＮに対するアクセスを開始するようにすることができる。マルチパスエージェントは、例えば、好適な所有者へのフェールバック動作を起動することにより、或いは、（自動トレスパスをサポートしている実施形態において）自動トレスパス動作を実行して好適な所有者を介してＬＵＮにアクセスすることにより、これらの動作を起動することができる。
【００３４】
ＡＬＵＡアレイの好適な構成を検出すると共に、その好適な構成を使用してＬＵＮにアクセスするためにホストが使用する経路を制御することができることに加えて（又は、この代わりに）、マルチパスエージェントは、状態の遷移が発生したことを検出することが可能であり、且つ、その情報を使用し、個々のホストがＡＬＵＡアレイ内のＬＵＮにアクセスする方法を制御することができる。
【００３５】
上述のように、ＡＬＵＡアレイの構成をその当初の構成から変化させるコントローラの状態遷移が発生する可能性がある。これらの状態遷移は、様々な理由から発生する可能性がある。例えば、状態遷移は、コントローラの障害、管理者によるＬＵＮの所有権の再構成、別のホストによるＬＵＮの所有権の移動、ＡＬＵＡアレイによる負荷バランス動作の実行、有効なトレスパスの発生、およびこれらに類似したものに起因して発生する可能性がある。
【００３６】
コントローラの状態遷移のＡＬＵＡアレイ通知がホスト上のマルチパスエージェントに到達しないＡＬＵＡの実装形態においては、１つの問題が発生することになろう。例えば、いくつかのＡＬＵＡアレイは、装置注意通知警報（ｕｎｉｔ  ａｔｔｅｎｔｉｏｎ  ｎｏｔｉｆｉｃａｔｉｏｎ  ａｌｅｒｔ）をホストに送信しているが、この警報は、しばしば、マルチパスエージェントが実装されている層よりも下位のソフトウェア層（例えば、ＳＣＳＩ（ｓｍａｌｌ  ｃｏｍｐｕｔｅｒ  ｓｙｓｔｅｍ  ｉｎｔｅｒｆａｃｅ）層（ＳＣＳＩドライバ））によって消費され、これにより、装置注意通知警報は、確実にマルチパスエージェントまで到達しない。
【００３７】
それにも拘らず、特定の状況においては、マルチパスエージェントは、状態遷移を検出することになる。例えば、状態遷移がコントローラの障害に起因して発生した場合には、マルチパスエージェントは、障害が発生したコントローラを介したＬＵＮに対するアクセスをホストが次回に試みた際に、エラーを検出することになる。従って、この結果、マルチパスエージェントは、新しい有効な最適化されたコントローラを使用してＬＵＮにアクセスすることを開始することができる。
【００３８】
しかしながら、その他の状況においては、マルチパスエージェントは、状態遷移を検出しないであろう。例えば、状態遷移が発生しているが、それまでの有効な最適化されたコントローラが、依然として有効であり、且つ、利用可能である場合には、マルチパスエージェントは、そのコントローラを介してＬＵＮに対するアクセスを継続することが可能であり、且つ、エラーメッセージを観察することにもならない。この結果、ホストは、ＬＵＮにアクセスした際に最適とは言えない性能を経験することになり得る。
【００３９】
最適化されてはいないコントローラを介してホストがＬＵＮにアクセスする状況を防止するために、ＡＬＵＡアレイ内のコントローラの状態遷移を検出するように、マルチパスエージェントを構成することができる。まず、動作を開始した際に、マルチパスエージェントは、それぞれのＬＵＮ用の初期の有効な最適化されたコントローラを識別することができる。例えば、マルチパスエージェントは、それぞれのＬＵＮの現在の所有者を識別する状態情報（例えば、上述した所与のＬＵＮ用のコントローラのＡＡＳコード）にアクセスすることが可能であり、且つ、その情報を使用することにより、所与のＬＵＮ用の有効な最適化されたコントローラを識別することができる。次いで、マルチパスエージェントは、将来使用するために、この情報を保存することができる。
【００４０】
開始後のいずれかの後続の時点において、マルチパスエージェントは、ＬＵＮ用の当初の有効な最適化されたコントローラの状態を再チェックすることができる。この結果、そのコントローラの状態が遷移している場合には、マルチパスエージェントは、ＡＬＵＡアレイからいかなる遷移の通知を受け取っていないにも拘らず、遷移を検出することができるようになる。即ち、このマルチパスエージェントは、最初にＡＬＵＡアレイから通知を（例えば、装置注意警報メッセージの形態で）必ずしも受け取ることなく、状態遷移をチェックしていることに留意されたい。
【００４１】
いくつかの実施形態においては、マルチパスエージェントは、規則的に（例えば、周期的に、或いは、既定の刺激に応答して）コントローラの状態をアレイに対して要求することにより、状態を再チェックするように、構成することができる。例えば、コントローラ１５（１）がＬＵＮ１８（１）用の有効な最適化されたコントローラであると当初判明している場合には、マルチパスエージェントは、ＬＵＮ１８（１）との関係におけるコントローラ１５（１）の（例えば、上述した）ＡＡＳ値を周期的に要求することができる。ＡＡＳ値が変化し、これにより、遷移が発生したことを通知した場合に、マルチパスエージェントは、ＬＵＮ１８（１）用の新しい有効な最適化されたコントローラを識別することができる。
【００４２】
その他の実施形態においては、コントローラの状態を規則的に要求する代わりに、マルチパスエージェントは、ホストが現在のコントローラを介してＬＵＮにアクセスするのに伴って、（例えば、Ｉ／Ｏを実行した際のスループットおよび／又は受信されるエラーメッセージの観点において）入出力（Ｉ／Ｏ）の性能を監視することができる。Ｉ／Ｏ性能の低下が（例えば、スループットの低下および／又はエラーメッセージを検出することによって）検出された場合には、マルチパスエージェントは、上述のように、コントローラの状態を要求することができる。
【００４３】
更にその他の実施形態においては、マルチパスエージェントは、ＬＵＮにアクセスするために現在使用されているコントローラの状態をマルチパスエージェントが再チェックするように管理者および／又はその他のユーザー（例えば、人間のユーザー又はアプリケーション）が要求できるようにするインターフェイス（例えば、グラフィカルユーザーインターフェイス、コマンドラインインターフェイス、アプリケーションプログラミングインターフェイス、又はこれらに類似したもの）を提供することができる。このトリガは、上述のものの代わり、且つ／又は、それらに加えて、実装することができる。
【００４４】
遷移が発生しており、且つ、ＬＵＮにアクセスするために現在使用されるコントローラが、もはや、ＬＵＮ用の有効な最適化されたコントローラではないことをマルチパスエージェントが検出した場合には、マルチパスエージェントは、ホストが新しい有効な最適化されたコントローラを使用してＬＵＮにアクセスすることを開始するようにすることができる。
【００４５】
それぞれのマルチパスエージェントは、（例えば、上述の技法のうちの１つ又は複数を使用することによって）状態遷移を検出および処理するための同一の機能を実装するように構成することができる。この結果、状態遷移が発生した場合に、それぞれのホスト上のマルチパスエージェントは、同一の方式により、状態遷移を検出および処理することになる。従って、ＬＵＮの所有者が変化した場合に、ホストのそれぞれは、この遷移に関するなんらの情報をもホスト間において伝達しないにも拘わらず、同一の方式によって応答し、且つ、同一のコントローラ（ＬＵＮの新しい所有者）を介したＬＵＮに対するアクセスを開始することになる。更には、所有権の変化が１つのホストによってトリガされた場合に、その他のホストは、変化をトリガしたホストから変化に関する通知を受け取ることがないにも拘わらず、遷移を検出することが可能であり、且つ、適切に応答することができる。
【００４６】
図２は、ＡＬＵＡアレイ内のＬＵＮ用の好適なコントローラを検出し、且つ、次いで、その情報を使用することにより、ホストが好適なコントローラ（利用可能である場合）を使用してＬＵＮにアクセスするようにする方法のフローチャートである。この方法は、図１のマルチパスエージェント２５などのマルチパスエージェントによって実行することができる。
【００４７】
本方法は、２００において始まっており、ここで、マルチパスエージェントは、ＡＬＵＡアレイがＬＵＮ用の好適なコントローラを規定しているかどうかを検出している。この動作は、ＬＵＮ用の選好インジケータをＡＬＵＡアレイに対して要求することにより、実行することができる。選好インジケータが静的であるかどうかに関する情報は、ＡＬＵＡアレイの仕様から（例えば、システム構成の際に管理者によって）判定することができる。
【００４８】
ＡＬＵＡアレイが好適なコントローラを規定していない場合には（例えば、ＡＬＵＡアレイが選好インジケータをサポートしていないと共に／又は、選好インジケータを静的に維持していない場合）、マルチパスエージェントは、２０５において示されているように、ＬＵＮについて状態遷移を検出することができるかどうかを判定することができる。例えば、マルチパスエージェントは、ＬＵＮおよびコントローラの両方と関連する上述のＡＡＳおよびＳＴＡＴＵＳ  ＣＯＤＥ値などの状態情報をＡＬＵＡアレイに対して要求することができる。この状態情報は、そのＬＵＮとの関係においてコントローラの状態が遷移しているかどうかを集合的に示すことができる。状態情報によって通知された１つ又は複数の状態遷移（存在する場合）（並びに、恐らくは、そのＬＵＮとの関係においてその他のコントローラと関連する状態情報）に基づいて、マルチパスコントローラは、２１０において示されているように、ＬＵＮの好適なコントローラを判定することができる。このような状態情報に基づいて好適なコントローラを検出するための様々な技法については、図１との関連において上述している。
【００４９】
状態遷移を通知する情報が入手不能であると共に／又は、ＳＴＡＴＵＳ  ＣＯＤＥ値がフェールバックの後にリセットされていない場合には（例えば、そのようにアレイの仕様に示されている場合）、マルチパスエージェントは、２１５において示されているように、一貫性のあるアルゴリズムを使用し、ＬＵＮ用の好適なコントローラを選択することができる。このアルゴリズムは、すべてのマルチパスエージェントによって得られる結果がシステムの全体を通じて互いに一貫性を有するように、システム内のそれぞれのマルチパスエージェントが同一のアルゴリズムを使用しているという点において一貫性を有している。様々な一貫性を有するアルゴリズムについては、図１との関連において上述している。
【００５０】
ＬＵＮ用の好適なコントローラが検出されたら、マルチパスエージェントは、２２０において示されているように、その好適なコントローラが、現在、ＡＬＵＡアレイ内において有効であるかどうかを検出することができる。例えば、マルチパスエージェントは、好適なコントローラの状態をＡＬＵＡアレイに対して要求することができる。次いで、マルチパスエージェントは、２２５において示されているように、好適なコントローラが利用可能である場合には、そのマルチパスエージェントを含むホストが好適なコントローラを介してＬＵＮにアクセスするようにする。好適なコントローラが、ホストによって現在使用されているコントローラではない場合には、マルチパスエージェントは、例えば、現在のコントローラから好適なコントローラへのフェールバックを起動することにより、動作２２５が実行されるようにする。好適なコントローラが現在利用可能ではない場合には、マルチパスエージェントは、２３０において示されているように、ホストが好適ではないコントローラを介してＬＵＮにアクセスできるようにする。
【００５１】
図２に示されている動作は、いくつかの異なるマルチパスエージェントのそれぞれにより、且つ、いくつかの異なるＬＵＮのそれぞれごとに、実行することができる。いくつかの動作は、特定の実施形態においては、省略してもよく、且つ、その他の実施形態は、図２に示されているものの代わりに、および／又は、これらに加えて、その他の動作を含んでもよい。例えば、いくつかの実施形態においては、マルチパスエージェントは、動作２００、２０５、および２１５の（すべてを実行するように構成されるのではなく）いくつかを実行するようにのみ、構成してもよい。例えば、いくつかのマルチパスエージェントは、（選好インジケータおよび／又は一貫性のあるアルゴリズムに基づいて好適なコントローラを検出することができるようにではなく）状態遷移を識別する情報にアクセスすることによってのみ好適なコントローラを検出するように、構成してもよい。
【００５２】
図３は、ＡＬＵＡアレイ内のコントローラの状態遷移を検出および処理する方法のフローチャートである。この方法は、図１のマルチパスエージェント２５などのマルチパスエージェントによって実行することができる。
【００５３】
本方法は、３００において始まっており、ここで、マルチパスエージェントは、ＡＬＵＡアレイ内のＬＵＮ用の現在の有効な最適化されたコントローラを検出している。マルチパスエージェントは、ＬＵＮ用の有効な最適化されたコントローラの識別情報をＡＬＵＡアレイに対して要求することにより、この動作を実行することができる。いくつかの実施形態においては、動作３００は、マルチパスエージェントの起動に応答して、或いは、ＡＬＵＡアレイが起動するとおよび／又はマルチパスエージェントにとって利用可能となったことをマルチパスエージェントが検知することに応答して、実行される。
【００５４】
その後、マルチパスエージェントは、３０５に示されているように、３００において識別されたコントローラの状態の遷移を監視することができる。マルチパスエージェントは、様々な方法によって動作３０５を実行することができる。例えば、マルチパスエージェントは、コントローラの状態を（例えば、ＡＡＳ状態コードの形態で）規則的に（例えば、周期的に）ＡＬＵＡアレイに対して要求するように、構成することもできる。或いは、この代わりに、マルチパスエージェントは、コントローラを介したＬＵＮに対するアクセスのＩ／Ｏ性能を監視するように、構成することもできる。性能の低下が観察された場合に、マルチパスエージェントは、コントローラの状態をＡＬＵＡアレイに対して要求することができる。又、マルチパスエージェントは、（例えば、ユーザー、アプリケーション、又は管理者から）その旨の要求を受け取ることに応答して、コントローラの状態をＡＬＵＡアレイに対して要求するように、構成することもできる。状態遷移が発生した場合に、マルチパスエージェントは、そのホストが、３１０において示されているように、ＬＵＮ用の新しい有効な最適化された（即ち、所有者）コントローラを介してＬＵＮに対するアクセスを開始するようにすることができる。
【００５５】
図２の動作と同様に、図３の動作も、いくつかの異なるマルチパスエージェントのそれぞれにより、且つ、いくつかの異なるＬＵＮのそれぞれごとに、実行することができる。いくつかの動作は、特定の実施形態においては、省略してもよく、且つ、その他の実施形態は、図３に示されているものの代わりに、および／又は、これらに加えて、その他の動作を含んでもよい。
【００５６】
図４は、上述のバックアップインターフェイスを有するアーカイブモジュールを実装する能力を有する演算システム４１０のブロックダイアグラムである。演算システム４１０は、コンピュータ可読命令を実行する能力を有する任意のシングル又はマルチプロセッサ演算装置又はシステムを広範に表している。演算システム４１０の例は、限定を伴うことなしに、ワークステーション、パーソナルコンピュータ、ラップトップ、クライアントサイド端末、サーバー、分散型演算システム、ハンドヘルド型装置（例えば、パーソナルデジタルアシスタントおよび携帯電話機）、ネットワーク機器、ストレージコントローラ（例えば、アレイコントローラ、テープドライブコントローラ、又はハードドライブコントローラ）、およびこれらに類似したものを含む様々な装置のうちの任意の１つ又は複数を含む。その最も基本的な構成において、演算システム４１０は、少なくとも１つのプロセッサ４１４と、システムメモリ４１６と、を含んでもよい。マルチパスエージェント２５を実装するソフトウェアを実行することにより、演算システム４１０は、ＡＬＵＡアレイ内の選好および／又は状態遷移を検出すると共にその検出された情報を使用して演算システム４１０がＡＬＵＡアレイ内のＬＵＮにアクセスする方法を制御するように構成された特殊目的演算装置となる。
【００５７】
プロセッサ４１４は、一般に、データを処理する又は命令を解釈および実行する能力を有する任意のタイプ又は形態の処理ユニットを表している。特定の実施形態においては、プロセッサ４１４は、ソフトウェアアプリケーション又はモジュールから命令を受け取ってもよい。これらの命令は、プロセッサ４１４が本明細書に記述および／又は図示されている実施形態のうちの１つ又は複数の実施形態の機能を実行するようにしてもよい。例えば、プロセッサ４１４は、本明細書に記述されている動作のすべて又は一部を実行してもよいと共に／又はこれらを実行するための手段であってもよい。又、プロセッサ４１４は、本明細書に記述および／又は図示されている任意のその他の動作、方法、又はプロセスを実行してもよいと共に／又はこれらを実行するための手段であってもよい。
【００５８】
システムメモリ４１６は、一般に、データおよび／又はその他のコンピュータ可読命令を保存する能力を有する任意のタイプ又は形態の揮発性又は不揮発性のストレージ装置又は媒体を表している。システムメモリ４１６の例は、限定を伴うことなしに、ランダムアクセスメモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）、フラッシュメモリ、又は任意のその他の適切なメモリ装置を含む。一例において、マルチパスエージェント２５を有するアーカイブモジュール５０を実装するプログラム命令は、システムメモリ４１６に読み込んでもよい。
【００５９】
又、特定の実施形態においては、演算システム４１０は、プロセッサ４１４およびシステムメモリ４１６に加えて、１つ又は複数のコンポーネント又は要素を含んでもよい。例えば、図４に示されているように、演算システム４１０は、メモリコントローラ４１８、入出力（Ｉ／Ｏ）コントローラ４２０、および通信インターフェイス４２２を含んでもよく、これらのそれぞれは、通信インフラストラクチャ４１２を介して相互接続してもよい。通信インフラストラクチャ４１２は、一般に、演算装置の１つ又は複数のコンポーネントの間の通信を促進する能力を有する任意のタイプ又は形態のインフラストラクチャを表している。通信インフラストラクチャ４１２の例は、限定を伴うことなしに、通信バス（ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）、ＰＣＩｅ（ＰＣＩ  ｅｘｐｒｅｓｓ）、又はこれらに類似したバス）およびネットワークを含む。
【００６０】
メモリコントローラ４１８は、一般に、メモリ又はデータを取り扱うか又は演算システム４１０の１つ又は複数のコンポーネントの間の通信を制御する能力を有する任意のタイプ又は形態の装置を表している。例えば、特定の実施形態においては、メモリコントローラ４１８は、プロセッサ４１４、システムメモリ４１６、およびＩ／Ｏコントローラ４２０の間の通信を通信インフラストラクチャ４１２を介して制御してもよい。特定の実施形態においては、メモリコントローラ４１８は、単独で又はその他の要素との組合せにおいて、本明細書に記述および／又は図示されている動作又は機能の１つ又は複数のものを実行してもよいと共に／又はこれらを実行するための手段であってもよい。
【００６１】
Ｉ／Ｏコントローラ４２０は、一般に、演算装置の入出力機能を調整および／又は制御する能力を有する任意のタイプ又は形態のモジュールを表している。例えば、特定の実施形態においては、Ｉ／Ｏコントローラ４２０は、プロセッサ４１４、システムメモリ４１６、通信インターフェイス４２２、ディスプレイアダプタ４２６、入力インターフェイス４３０、およびストレージインターフェイス４３４などの演算システム４１０の１つ又は複数の要素の間のデータの転送を制御又は促進してもよい。
【００６２】
通信インターフェイス４２２は、演算システム４１０と１つ又は複数の更なる装置の間の通信を促進する能力を有する任意のタイプ又は形態の通信装置又はアダプタを広範に表している。例えば、特定の実施形態においては、通信インターフェイス４２２は、演算システム４１０と更なる演算システムを含むプライベート又はパブリックネットワークの間の通信を促進してもよい。通信インターフェイス４２２の例は、限定を伴うことなしに、有線ネットワークインターフェイス（ネットワークインターフェイスカードなど）、無線ネットワークインターフェイス（無線ネットワークインターフェイスカードなど）、モデム、および任意のその他の適切なインターフェイスを含む。少なくとも１つの実施形態においては、通信インターフェイス４２２は、インターネットなどのネットワークに対する直接リンクを介してリモートサーバーに対する直接接続を提供してもよい。又、通信インターフェイス４２２は、例えば、ローカルエリアネットワーク（Ｅｔｈｅｒｎｅｔネットワークなど）、パーソナルエリアネットワーク、電話又はケーブルネットワーク、携帯電話接続、衛星データ接続、又は任意のその他の適切な接続などを通じて、このような接続を間接的に提供してもよい。
【００６３】
又、特定の実施形態においては、通信インターフェイス４２２は、演算システム４１０と１つ又は複数の更なるネットワーク又はストレージ装置の間の通信を外部バス又は通信チャネルを介して促進するように構成されたホストアダプタを表してもよい。ホストアダプタの例は、限定を伴うことなしに、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）ホストアダプタ、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ホストアダプタ、ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）１３９４ホストアダプタ、ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）、およびｅＳＡＴＡ（ｅｘｔｅｎａｌ  ＳＡＴＡ）ホストアダプタ、ＡＴＡ（Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）およびＰＡＴＡ（Ｐａｒａｌｌｅｌ  ＡＴＡ）ホストアダプタ、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌインターフェイスアダプタ、Ｅｔｈｅｒｎｅｔアダプタ、又はこれらに類似したものを含む。
【００６４】
又、通信インターフェイス４２２は、演算システム４１０が分散型又はリモート演算に関与できるようにしてもよい。例えば、通信インターフェイス４２２は、リモート装置から命令を受け取ってもよく、或いは、実行のために命令をリモート装置に送ってもよい。
【００６５】
又、図４に示されているように、演算システム４１０は、ディスプレイアダプタ４２６を介して通信インフラストラクチャ４１２に結合された少なくとも１つの表示装置４２４を含んでもよい。表示装置４２４は、一般に、ディスプレイアダプタ４２６によって転送された情報を視覚的に表示する能力を有する任意のタイプ又は形態の装置を表している。同様に、ディスプレイアダプタ４２６は、一般に、表示装置４２４上における表示のために通信インフラストラクチャ４１２から（又は、当該技術分野において既知のフレームバッファから）グラフィックス、テキスト、およびその他のデータを転送するように構成された任意のタイプ又は形態の装置を表している。
【００６６】
又、図４に示されているように、演算システム４１０は、入力インターフェイス４３０を介して通信インフラストラクチャ４１２に結合された少なくとも１つの入力装置４２８を含んでもよい。入力装置４２８は、一般に、コンピュータ又は人間によって生成された入力を演算システム４１０に提供する能力を有する任意のタイプ又は形態の入力装置を表している。入力装置４２８の例は、限定を伴うことなしに、キーボード、ポインティング装置、音声認識装置、又は任意のその他の入力装置を含む。
【００６７】
又、図４に示されているように、演算システム４１０は、ストレージインターフェイス４３４を介して通信インフラストラクチャ４１２に結合されたプライマリストレージ装置４３２およびバックアップストレージ装置４３３を含んでもよい。ストレージ装置４３２および４３３は、一般に、データおよび／又はその他のコンピュータ可読命令を保存する能力を有する任意のタイプ又は形態のストレージ装置又は媒体を表している。例えば、ストレージ装置４３２および４３３は、それぞれ、磁気ディスクドライブ（例えば、所謂ハードドライブ）、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブ、又はこれらに類似したものを含んでもよい。ストレージインターフェイス４３４は、一般に、ストレージ装置４３２および４３３と演算システム４１０のその他のコンポーネントの間においてデータを転送するための任意のタイプ又は形態のインターフェイス又は装置を表している。上述のように、プライマリストレージ装置４３２などのストレージ装置を使用することにより、アーカイブデータリポジトリおよび／又はバックアップストレージを実装することができる。
【００６８】
特定の実施形態においては、ストレージ装置４３２および４３３は、コンピュータソフトウェア、データ、又はその他のコンピュータ可読情報を保存するように構成された着脱自在のストレージユニットとの間において読取りおよび／又は書込みを実行するように構成されてもよい。適切な着脱自在のストレージユニットの例は、限定を伴うことなしに、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリ装置、又はこれらに類似したものを含む。又、ストレージ装置４３２および４３３は、コンピュータソフトウェア、データ、又はその他のコンピュータ可読命令を演算システム４１０に読み込むことができるようにするためのその他の類似の構造又は装置を含んでもよい。例えば、ストレージ装置４３２および４３３は、ソフトウェア、データ、又はその他のコンピュータ可読情報の読取りおよび書込みを実行するように構成されてもよい。又、ストレージ装置４３２および４３３は、演算システム４１０の一部であってもよく、或いは、その他のインターフェイスシステムを通じてアクセスされる別個の装置であってもよい。  
【００６９】
多くのその他の装置又はサブシステムを演算システム４１０に接続してもよい。逆に、本明細書に記述および／又は図示されている実施形態を実施するために、図４に示されているコンポーネントおよび装置のすべてが存在する必要があるというわけでもない。又、上述の装置およびサブシステムは、図４に示されている方法とは異なる方法によって相互接続してもよい。
【００７０】
又、演算システム４１０は、任意の数のソフトウェア、ファームウェア、および／又はハードウェア構成を利用してもよい。例えば、本明細書に開示されている実施形態の１つ又は複数は、コンピュータ可読ストレージ媒体上のコンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御ロジックとも呼ばれる）として符号化してもよい。コンピュータ可読ストレージ媒体の例は、磁気ストレージ媒体（例えば、ハードディスクドライブおよびフロッピーディスク）、光ストレージ媒体（例えば、ＣＤ−又はＤＶＤ−ＲＯＭ）、電子ストレージ媒体（例えば、ソリッドステートドライブおよびフラッシュ媒体）、およびこれらに類似したものを含む。又、このようなコンピュータプログラムは、メモリ内における保存のために、インターネットなどのネットワークを介して、或いは、搬送波媒体上において、演算システム４１０に転送することもできる。
【００７１】
コンピュータプログラムを収容するコンピュータ可読媒体を演算システム４１０に装填してもよい。次いで、コンピュータ可読媒体上に保存されているコンピュータプログラムのすべて又は一部をシステムメモリ４１６内におよび／又はストレージ装置４３２および４３３の様々な部分内に保存してもよい。演算システム４１０に読み込まれたコンピュータプログラムは、プロセッサ４１４によって実行された際に、プロセッサ４１４が、本明細書に記述および／又は図示されている実施形態のうちの１つ又は複数の実施形態の機能を実行するようにしてもよく、および／又は、これらを実行するための手段となるようにしてもよい。更には、又はこの代わりに、本明細書に記述および／又は図示されている実施形態のうちの１つ又は複数は、ファームウェアおよび／又はハードウェアとして実装してもよい。例えば、演算システム４１０は、本明細書に開示されている実施形態のうちの１つ又は複数を実装するように適合されたＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）として構成してもよい。
【００７２】
図５は、ネットワークアーキテクチャ５００のブロックダイアグラムであり、この場合に、クライアントシステム５１０、５２０、および５３０と、サーバー５４０および５４５と、は、ネットワーク５５０に結合されてもよい。クライアントシステム５１０、５２０、および５３０は、一般に、任意のタイプ又は形態の演算装置又はシステムを表している。
【００７３】
同様に、サーバー５４０および５４５は、一般に、様々なデータベースサービスを提供すると共に／又は特定のソフトウェアアプリケーションを実行するように構成された図４の演算システム４１０などの演算装置上において実装されたアプリケーションサーバー又はデータベースサーバーなどの演算装置又はシステムを表している。ネットワーク５５０は、一般に、例えば、イントラネット、ＷＡＮ（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＰＡＮ（ｐｅｒｓｏｎａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、又はインターネットを含む任意の通信又はコンピュータネットワークを表している。一例においては、クライアントシステム５１０、５２０、および／又は５３０、および／又はサーバー５４０および／又は５４５は、図１および図４に示されているマルチパスエージェント２５を含んでもよい。
【００７４】
図５に示されているように、１つ又は複数のストレージ装置５６０（１）〜５６０（Ｎ）は、サーバー５４０に直接的に装着してもよい。同様に、１つ又は複数のストレージ装置５７０（１）〜５７０（Ｎ）も、サーバー５４５に直接的に装着してもよい。ストレージ装置５６０（１）〜５６０（Ｎ）およびストレージ装置５７０（１）〜５７０（Ｎ）は、一般に、データおよび／又はその他のコンピュータ可読命令を保存する能力を有する任意のタイプ又は形態のストレージ装置を表しており、且つ、上述のように、ＡＬＵＡアレイとして編成することができる。特定の実施形態においては、ストレージ装置５６０（１）〜５６０（Ｎ）およびストレージ装置５７０（１）〜５７０（Ｎ）は、ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）、ＳＭＢ（Ｓｅｒｖｅｒ  Ｍｅｓｓａｇｅ  Ｂｌｏｃｋ）、又はＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）などの様々なプロトコルを使用してサーバー５４０および５４５と通信するように構成されたＮＡＳ（ｎｅｔｗｏｒｋ−ａｔｔａｃｈｅｄ  ｓｔｏｒａｇｅ）装置を表してもよい。
【００７５】
又、サーバー５４０および５４５は、ＳＡＮ（ｓｔｏｒａｇｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）ファブリック５８０に接続されてもよい。ＳＡＮファブリック５８０は、一般に、複数のストレージ装置の間の通信を促進する能力を有する任意のタイプ又は形態のコンピュータネットワーク又はアーキテクチャを表している。ＳＡＮファブリック５８０は、サーバー５４０および５４５と複数のストレージ装置５９０（１）〜５９０（Ｎ）、および／又は、インテリジェントストレージアレイ５９５（例えば、ＡＬＵＡアレイ）の間の通信を促進してもよい。又、ＳＡＮファブリック５８０は、装置５９０（１）〜５９０（Ｎ）およびアレイ５９５がクライアントシステム５１０、５２０、および５３０からローカルに装着された装置として見えるように、ネットワーク５５０およびサーバー５４０および５４５を介して、クライアントシステム５１０、５２０、および５３０とストレージ装置５９０（１）〜５９０（Ｎ）、および／又は、インテリジェントストレージアレイ５９５の間の通信を促進してもよい。ストレージ装置５６０（１）〜５６０（Ｎ）およびストレージ装置５７０（１）〜５７０（Ｎ）と同様に、ストレージ装置５９０（１）〜５９０（Ｎ）およびインテリジェントストレージアレイ５９５も、一般に、データおよび／又はその他のコンピュータ可読命令を保存する能力を有する任意のタイプ又は形態のストレージ装置又は媒体を表している。
【００７６】
特定の実施形態においては、且つ、図４の演算システム４１０を参照すれば、図４の通信インターフェイス４２２などの通信インターフェイスは、それぞれのクライアントシステム５１０、５２０、および５３０とネットワーク５５０の間の接続を提供するように使用されてもよい。クライアントシステム５１０、５２０、および５３０は、例えば、ウェブブラウザ又はその他のソフトウェアを使用してサーバー５４０又は５４５上の情報にアクセス可能であってもよい。このようなソフトウェアは、クライアントシステム５１０、５２０、および５３０が、サーバー５４０、サーバー５４５、ストレージ装置５６０（１）〜５６０（Ｎ）、ストレージ装置５７０（１）〜５７０（Ｎ）、ストレージ装置５９０（１）〜５９０（Ｎ）、又はインテリジェントストレージアレイ５９５によってホスティングされるデータに対してアクセスできるようにしてもよい。図５は、データ交換のための（インターネットなどの）ネットワークの使用を示しているが、本明細書に記述および／又は図示されている実施形態は、インターネット又は任意の特定のネットワークに基づいた環境に限定されるものではない。
【００７７】
少なくとも１つの実施形態においては、本明細書に開示されている実施形態のうちの１つ又は複数の実施形態のすべて又は一部は、コンピュータプログラムとして符号化してもよく、且つ、サーバー５４０、サーバー５４５、ストレージ装置５６０（１）〜５６０（Ｎ）、ストレージ装置５７０（１）〜５７０（Ｎ）、ストレージ装置５９０（１）〜５９０（Ｎ）、インテリジェントストレージアレイ５９５、又はこれらの任意の組合せに読み込んでもよく、且つ、これらによって実行してもよい。又、本明細書に開示されている実施形態のうちの１つ又は複数の実施形態のすべて又は一部は、コンピュータプログラムとして符号化してもよく、サーバー５４０内に保存してもよく、サーバー５４５によって実行してもよく、且つ、ネットワーク５５０を通じてクライアントシステム５１０、５２０、および５３０に配布してもよい。
【００７８】
いくつかの例においては、図１、図４、および図５の演算装置のすべて又は一部は、クラウド演算又はネットワークに基づいた環境の一部を表してもよい。クラウド演算環境は、インターネットを介して様々なサービスおよびアプリケーションを提供してもよい。これらのクラウドに基づいたサービス（例えば、サービスとしてのソフトウェア、サービスとしてのプラットフォーム、サービスとしてのインフラストラクチャなど）は、ウェブブラウザ又はその他のリモートインターフェイスを通じてアクセス可能であってよい。本明細書に記述されている様々な機能は、リモートデスクトップ環境又は任意のその他のクラウドに基づいた演算環境を通じて提供してもよい。
【００７９】
更には、本明細書に記述されているコンポーネントの１つ又は複数は、データ、物理的装置、および／又は物理的装置の表現の形態を別のものへと変更してよい。例えば、図１のマルチパスエージェントは、演算装置がＡＬＵＡアレイ内の選好および／又は状態遷移に関する検出された情報に基づいてＡＬＵＡアレイに対するアクセスを再度バランスさせるようにするために、演算装置の動作を変更してもよい。
【００８０】
以上、いくつかの実施形態との関連において、本発明について説明したが、本発明は、本明細書に記述されている特定の形態に限定されるものと解釈してはならない。むしろ、本発明は、添付の請求項によって規定された本発明の範囲に合理的に含まれうる代替肢、変更、および均等物を含むものと解釈されたい。
【産業上の利用可能性】
【００８１】
本発明は、演算およびデータストレージの分野に適用される。
【図１】
0005986577.tif 000002
【図２】
0005986577.tif 000003
【図３】
0005986577.tif 000004
【図４】
0005986577.tif 000005
【図５】
0005986577.tif 000006