(57)【特許請求の範囲】
【請求項１】
切り替え動作を実行する方法であって、当該方法は第２のコンピューティングノードにより実行され、
クラウドコンピューティング環境内にホストされた第１のコンピューティングノードと前記第２のコンピューティングノードとの間のノード間通信リンクを使用するステップであって、前記第１のコンピューティングノードは前記クラウドコンピューティング環境内の第１のリソースセットへのアクセスをクライアントに提供するように構成され、前記第２のコンピューティングノードは前記クラウドコンピューティング環境内の第２のリソースセットへのアクセスをクライアントに提供するように構成され、前記第１のコンピューティングノード及び前記第２のコンピューティングノードは、動作可能ステート情報を前記クラウドコンピューティング環境のクラウド環境ノードステートプロバイダに提供するように構成される、ステップと、
前記ノード間通信リンクを通じての通信のロスを識別したことに応答して、
前記第１のコンピューティングノードの第１の動作可能ステート情報について前記クラウド環境ノードステートプロバイダに問い合わせるステップと、
前記第１のコンピューティングノードの障害を示す前記第１の動作可能ステート情報に応答して、前記第２のコンピューティングノードが前記第１のコンピューティングノードの障害復旧パートナーであることに基づき、前に前記第１のコンピューティングノードを通してクライアントにとってアクセス可能であった前記第１のリソースセットへのフェールオーバーアクセスをクライアントに提供するために前記第１のコンピューティングノードから前記第２のコンピューティングノードへの切り替え動作を実行するステップと、
を含む方法。
【請求項２】
前記第１のコンピューティングノード及び前記第２のコンピューティングノードは、前記動作可能ステート情報を前記クラウドコンピューティング環境のクラウドストレージサービスを通してアクセス可能なクラウド持続ストレージに記憶するように構成され、
当該方法は、
前記ノード間通信リンクを通じての前記通信のロスを識別したことに応答して、前記第１のコンピューティングノードの前記第１の動作可能ステート情報について前記クラウドストレージサービスに問い合わせるステップ、
を含む請求項１に記載の方法。
【請求項３】
前記第１のコンピューティングノード及び前記第２のコンピューティングノードは、前記ノード間通信リンクを通じて前記動作可能ステート情報を送信するように構成される、
請求項１又は２に記載の方法。
【請求項４】
前記第１のコンピューティングノードが動作可能ステートであると示す前記第１の動作可能ステート情報に応答して、前記切り替え動作を実行することをやめるステップ、
を含む請求項１乃至３のうちいずれか１項に記載の方法。
【請求項５】
前記ノード間通信リンクはインターネットプロトコル（ＩＰ）ベースの通信を含む、請求項１乃至４のうちいずれか１項に記載の方法。
【請求項６】
前記第１のコンピューティングノードは第１のクラウドレベルゾーン内にホストされ、前記第２のコンピューティングノードは前記第１のクラウドレベルゾーンと別個の第２のクラウドレベルゾーン内にホストされる、請求項１乃至５のうちいずれか１項に記載の方法。
【請求項７】
前記第１のコンピューティングノードが動作可能ステートであると示す前記第１の動作可能ステート情報に応答して、クラウドコンピューティング環境インフラストラクチャ障害が発生したと決定するステップ、
を含む請求項１乃至６のうちいずれか１項に記載の方法。
【請求項８】
前記第１のコンピューティングノードが動作可能ステートであると示す前記第１の動作可能ステート情報に応答して、前記ノード間通信リンクが動作不能であると決定するステップ、
を含む請求項１乃至７のうちいずれか１項に記載の方法。
【請求項９】
前記ノード間通信リンクを通じての動作可能ステート情報の最後の受信からのタイムアウトに基づき前記通信のロスを識別するステップ、
を含む請求項１乃至８のうちいずれか１項に記載の方法。
【請求項１０】
前記第１のコンピューティングノードは、前記第１のリソースセットに関連づけられたストレージ内に前記動作可能ステート情報を記憶するように構成され、
前記第２のコンピューティングノードは、前記ストレージにアクセスして前記第１の動作可能ステート情報を取り出すように構成される、
請求項１乃至９のうちいずれか１項に記載の方法。
【請求項１１】
前記ストレージへのアクセスのロスを識別したことに応答して、
前記第１の動作可能ステート情報について前記クラウド環境ノードステートプロバイダに問い合わせるステップ、
を含む請求項１０に記載の方法。
【請求項１２】
前記第１のコンピューティングノード及び前記第２のコンピューティングノードは、前記動作可能ステート情報を前記クラウドコンピューティング環境のクラウドストレージサービスを通してアクセス可能なクラウド持続ストレージに記憶するように構成され、
当該方法は、
前記ストレージへのアクセスのロスを識別したことに応答して、
前記第１の動作可能ステート情報について前記クラウドストレージサービスに問い合わせるステップ、
を含む請求項１０に記載の方法。
【請求項１３】
少なくとも１つのマシンにより実行されたときに前記マシンに請求項１乃至１２のうちいずれか１項に記載の方法を実行させるマシン実行可能コードを含むコンピュータプログラム。
【請求項１４】
マシン実行可能コードを含むコンピュータプログラムであって、前記マシン実行可能コードは少なくとも１つのマシンにより実行されたときに前記マシンに、
第１のコンピューティングノードと第２のコンピューティングノードとの間のノード間通信リンクを使用することであって、前記第１のコンピューティングノードは第１のリソースセットへのアクセスをクライアントに提供するように構成され、前記第２のコンピューティングノードは第２のリソースセットへのアクセスをクライアントに提供するように構成され、前記第１のコンピューティングノード及び前記第２のコンピューティングノードは、動作可能ステート情報をクラウドコンピューティング環境のクラウドストレージサービスを通してアクセス可能なクラウド持続ストレージに記憶するように構成され、
前記ノード間通信リンクを通じての通信のロスを識別したことに応答して、
前記第１のコンピューティングノードの第１の動作可能ステート情報について前記クラウドストレージサービスに問い合わせ、
前記第１のコンピューティングノードの障害を示す前記第１の動作可能ステート情報に応答して、前記第２のコンピューティングノードが前記第１のコンピューティングノードの障害復旧パートナーであることに基づき、前に前記第１のコンピューティングノードを通してクライアントにとってアクセス可能であった前記第１のリソースセットへのフェールオーバーアクセスをクライアントに提供するために前記第１のコンピューティングノードから前記第２のコンピューティングノードへの切り替え動作を実行すること
を実行させ、
前記マシンは前記第２のコンピューティングノードである、コンピュータプログラム。
【請求項１５】
前記第１のコンピューティングノード及び前記第２のコンピューティングノードは、前記動作可能ステート情報をクラウド環境ノードステートプロバイダに提供するように構成され、
前記マシン実行可能コードは前記マシンに、
前記ノード間通信リンクを通じての前記通信のロスを識別したことに応答して、前記第１のコンピューティングノードの前記第１の動作可能ステート情報について前記クラウド環境ノードステートプロバイダに問い合わせること
を実行させる、請求項１４に記載のコンピュータプログラム。
【請求項１６】
前記マシン実行可能コードは前記マシンに、
前記第１のコンピューティングノードが動作可能ステートであると示す前記第１の動作可能ステート情報に応答して、前記切り替え動作を実行することをやめること
を実行させる、請求項１４又は１５に記載のコンピュータプログラム。
【請求項１７】
前記第１のコンピューティングノード又は前記第２のコンピューティングノードのうち少なくとも１つが、前記クラウドコンピューティング環境の外部の非クラウドコンピューティング環境内にホストされる、請求項１４乃至１６のうちいずれか１項に記載のコンピュータプログラム。
【請求項１８】
コンピューティング装置であって、
コンピューティングノード間で切り替え動作を実行するかどうかを決定する方法を実行する命令を記憶したマシン実行可能コードを含むマシン読取可能媒体を含むメモリと、
前記メモリに結合されたプロセッサと、
を含み、
前記プロセッサは、前記マシン実行可能コードを実行して前記プロセッサに、
第１のコンピューティングノードと第２のコンピューティングノードとの間のノード間通信リンクを使用することであって、前記第１のコンピューティングノードは第１のリソースセットへのアクセスをクライアントに提供するように構成され、前記第２のコンピューティングノードは第２のリソースセットへのアクセスをクライアントに提供するように構成され、前記第１のコンピューティングノード及び前記第２のコンピューティングノードは、動作可能ステート情報をクラウドコンピューティング環境のクラウドストレージサービスを通してアクセス可能なクラウド持続ストレージに記憶するように構成され、
前記ノード間通信リンクを通じての通信のロスを識別したことに応答して、
前記第１のコンピューティングノードの第１の動作可能ステート情報について前記クラウドストレージサービスに問い合わせ、
前記第１のコンピューティングノードの障害を示す前記第１の動作可能ステート情報に応答して、前記第２のコンピューティングノードが前記第１のコンピューティングノードの障害復旧パートナーであることに基づき、前に前記第１のコンピューティングノードを通してクライアントにとってアクセス可能であった前記第１のリソースセットへのフェールオーバーアクセスをクライアントに提供するために前記第１のコンピューティングノードから前記第２のコンピューティングノードへの切り替え動作を実行すること
を実行させるように構成され、
当該コンピューティング装置は前記第２のコンピューティングノードである、コンピューティング装置。
【請求項１９】
前記第１のコンピューティングノード及び前記第２のコンピューティングノードは、前記動作可能ステート情報をクラウド環境ノードステートプロバイダに提供するように構成され、
前記マシン実行可能コードは前記プロセッサに、
前記ノード間通信リンクを通じての前記通信のロスを識別したことに応答して、前記第１のコンピューティングノードの前記第１の動作可能ステート情報について前記クラウド環境ノードステートプロバイダに問い合わせること
を実行させる、請求項１８に記載のコンピューティング装置。
【請求項２０】
前記マシン実行可能コードは前記プロセッサに、
前記第１のコンピューティングノードが動作可能ステートであると示す前記第１の動作可能ステート情報に応答して、前記切り替え動作を実行することをやめること
を実行させる、請求項１８又は１９に記載のコンピューティング装置。
【請求項２１】
前記第１のコンピューティングノード又は前記第２のコンピューティングノードのうち少なくとも１つが、前記クラウドコンピューティング環境の外部の非クラウドコンピューティング環境内にホストされる、請求項１８乃至２０のうちいずれか１項に記載のコンピューティング装置。
【発明の詳細な説明】
【背景技術】
【０００１】
多くのサービスプロバイダ、例えばネットワークストレージプロバイダなどは、クラウドコンピューティング環境（例えば、サードパーティクラウドプロバイダ）を利用して、こうしたサービスを提供するコンピューティングノードをホストすることがある。例えば、ネットワークストレージプロバイダが、会社の金融部門に対してストレージサービスを提供するために、クラウドコンピューティング環境に第１のコンピューティングノードを展開することがある。ストレージプロバイダは、会社のエンジニア部門に対してストレージサービスを提供するために、クラウドコンピューティング環境に第２のコンピューティングノードを展開することがある。ストレージプロバイダは、第１のコンピューティングノード及び第２のコンピューティングノードを災害復旧パートナーとして構成し、生き残りのコンピューティングノードが機能しなくなったコンピューティングノードのリソースを引き継いで、機能しなくなったコンピューティングノードにより前に提供されていたサービスに対するフェールオーバーアクセスをクライアントに提供することがある（例えば、第１のコンピューティングノードが機能しなくなったことを検出すると、第２のコンピューティングノードが第１のコンピューティングノードのストレージを引き継いで、金融部門に対するフェールオーバーストレージサービス、例えば、第１のコンピューティングノードを通して前にアクセス可能であったデータに対するアクセスなどを提供することがある）。
【０００２】
第１のコンピューティングノード及び第２のコンピューティングノードは、動作可能ステート情報（例えば、ハートビート、及び／又はコンピューティングノードが動作可能である、リブートしている、機能しなくなった、カーネルパニックモードである等の通知）を共有するために、ノード間通信リンク、例えば、インターネットプロトコル（ＩＰ）通信などを確立することがある。不幸なことに、ノード間通信リンクで通信がロストした場合、コンピューティングノードは、パートナーコンピューティングノードが機能しなくなったのか、又はノード間通信リンクが例えばクラウドコンピューティング環境内のＩＰネットワーク障害などに起因してダウンしているのかを、判定することができない可能性がある。ゆえに、コンピューティングノードが、パートナーコンピューティングノードが機能しなくなったと不正確に仮定する場合、コンピューティングノードは、依然として動作可能であるパートナーコンピューティングノードについて引継ぎしようと誤って試みる可能性がある。対照的に、パートナーコンピューティングノードの障害が通信ロスの原因である（例えば、機能しなくなったパートナーコンピューティングノードが障害に起因してハートビート情報を送信することができない）場合、コンピューティングノードが、通信ロスがノード間通信リンクがダウンしていることに起因すると不正確に仮定する場合に、クライアントは、機能しなくなったパートナーコンピューティングノードにより提供されたストレージサービスに対するアクセスを失う可能性があり、なぜならば、コンピューティングノードが機能しなくなったパートナーコンピューティングノードについて引き継がない可能性があるからである。同様に、第１のコンピューティングノード及び第２のコンピューティングノードがそれぞれのコンピューティングノードにより管理されたストレージを通して動作可能ステート情報を共有するように構成される場合、コンピューティングノードが例えばクラウドコンピューティング環境インフラストラクチャ障害に起因してなどでパートナーコンピューティングノードのストレージへのアクセスを失う事象において、コンピューティングノードはパートナーコンピューティングノードが機能しなくなったのかどうかを検出できない可能性がある。
【０００３】
関連出願
本出願は、2015年10月30日に申請され“IMPLEMENTING  SWITCHOVER  OPERATIONS  BETWEEN  COMPUTING  NODES”と題された米国非仮特許出願第14/928,137号に対する優先を主張し、該出願は本明細書において参照援用される。
【図面の簡単な説明】
【０００４】
【図１】本明細書に説明される対策の１つ以上による一例示的なクラスタ化ネットワークを示すコンポーネントブロック図である。
【図２】本明細書に説明される対策の１つ以上による一例示的なデータストレージシステムを示すコンポーネントブロック図である。
【図３Ａ】クラウドコンピューティング環境を示すコンポーネントブロック図である。
【図３Ｂ】クラウドコンピューティング環境を示すコンポーネントブロック図であり、第１のコンピューティングノードは切り替え動作を誤って実行する。
【図４Ａ】クラウド環境ノードステートプロバイダを利用してコンピューティングノード間で切り替え動作を実行すべきかどうかを決定する一例示的なコンピューティング装置を示すコンポーネントブロック図である。
【図４Ｂ】クラウド環境ノードステートプロバイダを利用してコンピューティングノード間で切り替え動作を実行すべきかどうかを決定する一例示的なコンピューティング装置を示すコンポーネントブロック図であり、切り替え動作は実行されない。
【図４Ｃ】クラウド環境ノードステートプロバイダを利用してコンピューティングノード間で切り替え動作を実行すべきかどうかを決定する一例示的なコンピューティング装置を示すコンポーネントブロック図であり、切り替え動作が実行される。
【図５Ａ】クラウドストレージサービスを利用してコンピューティングノード間で切り替え動作を実行すべきかどうかを決定する一例示的なコンピューティング装置を示すコンポーネントブロック図である。
【図５Ｂ】クラウドストレージサービスを利用してコンピューティングノード間で切り替え動作を実行すべきかどうかを決定する一例示的なコンピューティング装置を示すコンポーネントブロック図であり、切り替え動作は実行されない。
【図５Ｃ】クラウドストレージサービスを利用してコンピューティングノード間で切り替え動作を実行すべきかどうかを決定する一例示的なコンピューティング装置を示すコンポーネントブロック図であり、切り替え動作が実行される。
【図６】クラウド環境ノードステートプロバイダを利用してコンピューティングノード間で切り替え動作を実行すべきかどうかを決定する一例示的な方法を示すフローチャートである。
【図７】クラウドストレージサービスを利用してコンピューティングノード間で切り替え動作を実行すべきかどうかを決定する一例示的な方法を示すフローチャートである。
【図８】本明細書において説明される対策の１つ以上によるコンピュータ読取可能媒体の一例である。
【発明を実施するための形態】
【０００５】
次に、請求される対象事項のいくつかの例が図面を参照して説明され、図面において、同様の参照番号は一般に全体を通して同様の要素を参照するために使用される。下記の記載において、説明の目的で、請求される対象事項の理解を提供するために多数の特定の詳細が説明される。しかしながら、請求される対象事項はこれら特定の詳細なく実現され得ることが明らかであり得る。この詳細な説明内のいずれも従来技術と認められない。
【０００６】
コンピューティングノード間で切り替え動作を実行するかどうかを決定する１つ以上の手法及び／又はコンピューティング装置が提供される。例えば、第１のコンピューティングノード及び第２のコンピューティングノードが、コンピューティング環境（例えば、クラスタネットワークストレージコンピューティング環境、サードパーティによりホストされたクラウドコンピューティング環境、又は任意の他のコンピューティング環境）に展開され得る。第１のコンピューティングノード及び第２のコンピューティングノードは、ノード間（internode）通信リンク（例えば、ＩＰネットワーク）を通じて、及び／又はパートナーコンピューティングノードにより管理されたストレージを通して（例えば、第１のコンピューティングノードは、第１のコンピューティングノードにより所有されかつ第２のコンピューティングノードにより読み出すためにアクセス可能なストレージ内に記憶された動作可能ヘルス情報を記憶することができる）、動作可能ステート情報を共有することができる。
【０００７】
動作可能ステート情報が、コンピューティングノードが機能しなくなった（failed）と示す場合（例えば、ハートビートのロス）、生き残りのコンピューティングノードは、切り替え動作を実行して、機能しなくなったコンピューティングノードを通してクライアントにとって前にアクセス可能であったリソースへのフェールオーバーアクセスをクライアントに提供することができる。ノード間通信リンクがダウンしている可能性があり、かつ／あるいは、クラウドコンピューティング環境インフラストラクチャ障害（failure）が、コンピューティングノードがパートナーコンピューティングノードにより所有されたストレージ内の動作可能ステート情報にアクセスすることができないという結果をもたらす可能性があるため、コンピューティングノードは、実際には機能しなくなっていないパートナーコンピューティングノードについて切り替え動作を誤って実行する可能性がある。したがって、本明細書に提供されるように、第１のコンピューティングノード及び第２のコンピューティングノードは、クラウド環境ノードステートプロバイダ（例えば、クラウド環境ノードステートプロバイダは、クラウドコンピューティング環境内のコンピューティングノードの動作可能ステートを監視することができる）、及び／又はクラウドストレージサービスを通してアクセス可能であるクラウド持続ストレージ（cloud  persistent  storage）（例えば、コンピューティングノードが、パートナーコンピューティングノードにとって高度にアクセス可能であるクラウド持続ストレージを通して動作可能ステート情報を記憶することができる）を通して、動作可能ステート情報を共有するように構成され得る。こうして、コンピューティングノードは、パートナーコンピューティングノードが機能しなくなった（例えば、パートナーコンピューティングノードの障害に起因したハートビートのロス）か否（例えば、ノード間通信リンクがダウンしていること及び／又はクラウドコンピューティング環境インフラストラクチャ障害などのインフラストラクチャ障害に起因したハートビートのロス）かを確実に決定することができ、これは、誤った切り替えを軽減し得る。
【０００８】
コンピューティングノード間の切り替え動作を実行するかどうかを決定する文脈を提供するために、図１は、クラスタ化されたネットワーク環境１００又はネットワークストレージ環境の一実施例を示す。しかしながら、本明細書に説明される手法等は、クラスタ化ネットワーク環境１００、非クラスタネットワーク環境、及び／又は様々な他のコンピューティング環境、例えば、デスクトップコンピューティング環境などにおいて実現されてよいことが十分理解され得る。すなわち、別記の特許請求の範囲を含む本開示は、本明細書に提供される例に限定されるようには意図されない。同一又は同様のコンポーネント、要素、特徴、アイテム、モジュール等が後の図面に示され、しかし前の図に関して前に論じられていた場合、後の図を説明するときに（例えば、理解の簡素さ及び容易さの目的で）同じものについての同様の（例えば、冗長の）議論が省略され得ることが十分理解されるであろう。
【０００９】
図１は、本明細書に説明される手法及び／又はシステムの少なくともいくつかの実施例を実現することができる一例示的なクラスタ化されたネットワーク環境１００を示すブロック図である。例示的な環境１００は、データストレージシステム又はストレージサイト１０２及び１０４を含み、データストレージシステム又はストレージサイト１０２及び１０４は、該ストレージシステム１０２及び１０４（及び、その中の１つ以上のモジュール、コンポーネント等、例えばノード１１６及び１１８など）の間の通信を容易にするクラスタファブリック１０６、例えばプライベートＩｎｆｉｎｉｂａｎｄ、ファイバチャネル（ＦＣ）、又はイーサネット（登録商標）ネットワークとして具現化されたコンピューティングネットワークなどを通じて結合される。２つのデータストレージシステム１０２及び１０４並びに２つのノード１１６及び１１８が図１に示されるが、任意の適切な数のこうしたコンポーネントが企図されることが十分理解されるであろう。一例において、ノード１１６及び１１８は、ストレージコントローラを含み（例えば、ノード１１６が、プライマリ又はローカルストレージコントローラを含んでよく、ノード１１８が、セカンダリ又はリモートストレージコントローラを含んでよい）、上記ストレージコントローラは、データストレージ装置１２８、１３０内に記憶されたデータへのアクセスを、ホスト装置１０８、１１０などのクライアント装置に提供する。同様に、本明細書において別段具体的に提供されない限り、同じことが本明細書において参照されかつ／あるいは別記の図面に示される他のモジュール、要素、特徴、アイテム等に当てはまる。すなわち、本明細書に開示された特定数のコンポーネント、モジュール、要素、特徴、アイテム等は、限定的に解釈されるようには意図されない。
【００１０】
さらに、クラスタ化ネットワークは、任意の特定の地理的エリアに限定されず、ローカルに及び／又はリモートにクラスタ化されてよいことが十分理解されるであろう。ゆえに、一実施例において、クラスタ化ネットワークは、複数の地理的ロケーションに位置する複数のストレージシステム及び／又はノードにわたり分散されてよく、別の実施例において、クラスタ化ネットワークは、同じ地理的ロケーションに（例えば、データストレージ装置の単一のオンサイトのラック内に）存在するデータストレージシステム（例えば、１０２、１０４）を含んでよい。
【００１１】
示される例において、例えば、クライアント装置、パーソナルコンピュータ（ＰＣ）、記憶のために使用されるコンピューティング装置（例えば、ストレージサーバ）、及び他のコンピュータ又は周辺装置（例えば、プリンタ）を含み得る１つ以上のホスト装置１０８、１１０が、ストレージネットワーク接続１１２、１１４によりそれぞれのデータストレージシステム１０２、１０４に結合される。ネットワーク接続は、例えば、データパケットを交換するための共通インターネットファイルシステム（Common  Internet  File  System）（ＣＩＦＳ）プロトコル又はネットワークファイルシステム（Network  File  System）（ＮＦＳ）プロトコルなどのネットワークアタッチトストレージ（Network  Attached  Storage）（ＮＡＳ）プロトコルを利用するローカルエリアネットワーク（ＬＡＮ）又はワイドエリアネットワーク（ＷＡＮ）を含んでよい。例示的に、ホスト装置１０８、１１０は、アプリケーションを実行する汎用目的コンピュータでよく、情報の交換のためにクライアント／サーバモデルを使用してデータストレージシステム１０２、１０４と対話してよい。すなわち、ホスト装置は、データストレージシステムからのデータ（例えば、ホスト装置によりストレージ装置に対して発行されたＩ／Ｏコマンドを処理するように構成されたネットワークストレージ制御により管理された、該ストレージ装置上のデータ）を要求することができ、データストレージシステムは、１つ以上のネットワーク接続１１２、１１４を介してホスト装置に要求の結果を返すことができる。
【００１２】
クラスタ化されたデータストレージシステム１０２、１０４上のノード１１６、１１８は、例えば、リモートのロケーション、クラウドストレージ（例えば、ストレージエンドポイントはデータクラウド内に記憶されてもよい）等を有する企業などにデータストレージ及び管理サービスを提供するためにクラスタとして相互接続されたネットワーク又はホストノードを含むことができる。データストレージ及び管理ネットワーククラスタ環境１００におけるこうしたノードは、例えば接続ポイント、再分配ポイント、又は通信エンドポイントとしてネットワークにアタッチされた装置であり得る。ノードは、ネットワーク通信チャネルを通じて情報を送信し、受信し、及び／又は転送することができてよく、これら基準のうち任意のもの又はすべてに合う任意の装置を含むことができる。ノードの一例は、ネットワークにアタッチされたデータストレージ及び管理サーバであり得、該サーバは、データストレージ及び管理システムにおけるサーバとして動作するように特に構成された汎用目的コンピュータ又はコンピューティング装置を含むことができる。
【００１３】
一例において、ノード１１６、１１８などのノードの第１のクラスタ（例えば、１つ以上のストレージ装置の第１の論理グループ化を含む第１のストレージ集合体（storage  aggregate）へのアクセスを提供するように構成されたストレージコントローラの第１のセット）が、第１のストレージサイトに位置してよい。例示されていないクラスタの第２のノードが、第２のストレージサイトに位置してよい（例えば、１つ以上のストレージ装置の第２の論理グループ化を含む第２のストレージ集合体へのアクセスを提供するように構成されたストレージコントローラの第２のセット）。第１のノードクラスタ及び第２のノードクラスタは、災害復旧構成に従い構成されてよく、災害ノードクラスタを含む災害ストレージサイトで災害が発生した事象において、生き残りのノードクラスタが災害ノードクラスタのストレージ装置への切り替えアクセスを提供する（例えば、第２のストレージサイトで災害が発生した事象において、第１のノードクラスタが、第２のストレージ集合体のストレージ装置への切り替えデータアクセスをクライアント装置に提供する）。
【００１４】
例示的な環境１００に示されるように、ノード１１６、１１８は、クラスタのための分散ストレージアーキテクチャを提供するように協調する様々な機能コンポーネントを含むことができる。例えば、ノードは、ネットワークモジュール１２０、１２２と、データモジュール１２４、１２６とを含むことができる。ネットワークモジュール１２０、１２２は、例えば、ノード１１６、１１８（例えば、ネットワークストレージコントローラ）がネットワーク接続１１２、１１４を通じてホスト装置１０８、１１０と接続することを可能にするように構成でき、ホスト装置１０８、１１０が分散ストレージシステムに記憶されたデータにアクセスすることを可能にする。さらに、ネットワークモジュール１２０、１２２は、クラスタファブリック１０６を通して１つ以上の他のコンポーネントとの接続を提供することができる。例えば、図１において、第１のノード１１６の第１のネットワークモジュール１２０が、第２のノード１１８の第２のデータモジュール１２６を通して要求を送信することにより第２のデータストレージ装置１３０にアクセスすることができる。
【００１５】
データモジュール１２４、１２６は、１つ以上のデータストレージ装置１２８、１３０、例えば、ディスク又はディスクアレイ、フラッシュメモリ、又は何らかの他の形式のデータストレージなどを、ノード１１６、１１８に接続するように構成できる。ノード１１６、１１８は、例えば、クラスタファブリック１０６により相互接続でき、クラスタ内のそれぞれのノードが、クラスタ内の異なるノードに接続されたデータストレージ装置１２８、１３０上のデータにアクセスすることを可能にする。しばしば、データモジュール１２４、１２６は、例えば、スモールコンピュータシステムインターフェース（ＳＣＳＩ）又はファイバチャネルプロトコル（ＦＣＰ）などのストレージエリアネットワーク（ＳＡＮ）プロトコルに従いデータストレージ装置１２８、１３０と通信する。ゆえに、ノード１１６、１１８上のオペレーティングシステムから見られるとき、データストレージ装置１２８、１３０は、オペレーティングシステムにローカルにアタッチされているように見え得る。こうして、異なるノード１１６、１１８等が、抽象ファイルを明示的に要求するのでなくオペレーティングシステムを通してデータブロックにアクセスすることができる。
【００１６】
例示的な実施例１００は等しい数のネットワーク及びデータモジュールを示すが、他の実施例が異なる数のこれらモジュールを含んでよいことが十分理解されるべきである。例えば、複数のネットワーク及びデータモジュール間で１対１対応を有さないクラスタ内で相互接続された該ネットワーク及びデータモジュールがあり得る。すなわち、異なるノードが、異なる数のネットワーク及びデータモジュールを有することができ、同じノードが、データモジュールとは異なる数のネットワークモジュールを有することができる。
【００１７】
さらに、ホスト装置１０８、１１０は、ネットワーキング接続１１２、１１４を通じてクラスタ内のノード１１６、１１８とネットワーク化されることができる。一例として、クラスタにネットワーク化されたそれぞれのホスト装置１０８、１１０は、クラスタ内のノード１１６、１１８のサービス（例えば、データパケットの形式における情報の交換）を要求することができ、ノード１１６、１１８は、要求されたサービスの結果をホスト装置１０８、１１０に返すことができる。一実施例において、ホスト装置１０８、１１０は、データストレージシステム１０２、１０４内のノード（例えば、ネットワークホスト１１６、１１８）に存在するネットワークモジュール１２０、１２２との間で情報を交換することができる。
【００１８】
一実施例において、データストレージ装置１２８、１３０は、ボリューム（volumes）１３２を含み、ボリューム１３２は、例えば、データのファイルシステムとしてのディスクドライブ又はディスクアレイ又は他のストレージ（例えば、フラッシュ）への情報の記憶の一実現例である。ボリュームは、例えば、ディスクの一部分、ディスクの集合、又はディスクの複数部分に及ぶことができ、典型的に、ストレージシステム内のディスク空間上にファイルストレージの全体的論理配置を定義する。一実施例において、ボリュームは、記憶されたデータを、ボリューム内の階層ディレクトリ構造に存在する１つ以上のファイルとして含むことができる。
【００１９】
ボリュームは、特定のストレージシステムに関連づけられ得るフォーマットで典型的に構成され、それぞれのボリュームフォーマットは、例えばボリュームがクラスタを形成する能力を提供することなどの、ボリュームに対する機能性を提供する特徴を典型的に含む。例えば、第１のストレージシステムがそのボリュームについて第１のフォーマットを利用することがあり、第２のストレージシステムはそのボリュームについて第２のフォーマットを利用することがある。
【００２０】
例示的な環境１００において、ホスト装置１０８、１１０は、データストレージシステム１０２、１０４を利用して、データを記憶し、ボリューム１３２から取り出すことができる。この実施例において、例えば、ホスト装置１０８は、データストレージシステム１０２内のノード１１６のネットワークモジュール１２０にデータパケットを送信することができる。ノード１１６は、データモジュール１２４を使用してデータストレージ装置１２８にデータを転送することができ、データストレージ装置１２８は、ボリューム１３２Ａを含む。こうして、この例において、ホスト装置は、ネットワーク接続１１２により接続されたデータストレージシステム１０２を使用して、ストレージボリューム１３２Ａにアクセスしてデータを記憶し、かつ／あるいは取り出すことができる。さらに、この実施例において、ホスト装置１１０は、データストレージシステム１０４（例えば、これはデータストレージシステム１０２からリモートであり得る）内のホスト１１８のネットワークモジュール１２２との間でデータを交換することができる。ホスト１１８は、データモジュール１２６を使用してデータストレージ装置１３０にデータを転送することができ、これにより、データストレージ装置１３０に関連づけられたボリューム１３２Ｂにアクセスする。
【００２１】
コンピューティングノード間で切り替え動作を実行するかどうかを決定することは、クラスタ化ネットワーク環境１００内（例えば、クラウドコンピューティング環境内のノード、及び／又はクラウドコンピューティング環境の外部だがクラウドコンピューティング環境への通信アクセスを有するノード）で実現され得ることが十分理解され得る。一例において、ノード１１６（例えば、第１のコンピューティングノード）とノード１１８（例えば、第２のコンピューティングノード）とがクラウドコンピューティング環境内にホストされてよい。別の例において、ノード１１８がクラウドコンピューティング環境への通信アクセス（例えば、クラウドストレージサービスを通してアクセス可能なクラウド持続ストレージへのアクセス）を有する場合、ノード１１６がクラウドコンピューティング環境内にホストされてよく、ノード１１８がクラウドコンピューティング環境の外部にホストされてよい。別の例において、ノード１１６とノード１１８とがクラウドコンピューティング環境の外部でホストされてよいが、クラウドコンピューティング環境への通信アクセス（例えば、クラウドストレージサービスを通してアクセス可能なクラウド持続ストレージへのアクセス）を有し得る。クラウド環境ノードステートプロバイダ、及び／又はクラウドストレージサービスを通してアクセス可能なクラウド持続ストレージが、動作可能ステート情報を確実に共有するためにノード１１６及びノード１１８により使用されてよい。こうして、コンピューティングノードは、（例えば、通信リンク障害又は動作可能ステート情報の通信をその他の方法で妨害するインフラストラクチャ問題に応答して切り替えを誤って実行することと対照的に）パートナーコンピューティングノードが機能しなくなっており、ゆえに切り替え動作が実行されるべきであるかどうかを確実に決定することができる。コンピューティングノード間で切り替え動作を実行するかどうかを決定することは、任意タイプのコンピューティング環境について及び／又は該環境の間で実現されてよく、物理装置（例えば、ノード１１６、ノード１１８等）及び／又は（例えば、クラスタ化ネットワーク環境１００に関連づけられているか又は該環境１００に対してリモートの）クラウドコンピューティング環境の間で移転可能（transferrable）であり得ることが十分理解され得る。
【００２２】
図２は、データストレージシステム２００（例えば、図１の１０２、１０４）の一説明例であり、本明細書に説明される手法及び／又はシステムの１つ以上を実現できるコンポーネントの一実施例のさらなる詳細を提供する。例示的なデータストレージシステム２００は、ノード２０２（例えば、図１のホストノード１１６、１１８）と、データストレージ装置２３４（例えば、図１のデータストレージ装置１２８、１３０）とを含む。ノード２０２は、例えば、汎用目的コンピュータ、又は、ストレージサーバとして動作するように特に構成された何らかの他のコンピューティング装置であり得る。ホスト装置２０５（例えば、図１の１０８、１１０）は、例えば、ネットワーク２１６を通じてノード２０２に接続されて、データストレージ装置２３４上に記憶されたファイル及び／又は他のデータへのアクセスを提供することができる。一例において、ノード２０２は、データストレージ装置２３４内に記憶されたデータへのアクセスをホスト装置２０５などのクライアント装置に提供するストレージコントローラを含む。
【００２３】
データストレージ装置２３４は、大容量ストレージ装置、例えば、ディスクアレイ２１８、２２０、２２２のディスク２２４、２２６、２２８などを含むことができる。本明細書に説明される手法及びシステムは、例示的な実施例により限定されないことが十分理解されるであろう。例えば、ディスク２２４、２２６、２２８は、任意タイプの大容量ストレージ装置を含んでよく、これらに限られないが、ディスクドライブ、フラッシュメモリ、及び、例えばデータ（Ｄ）及び／又はパリティ（Ｐ）情報を含む情報を記憶するように適合された任意の他の同様の媒体が含まれる。
【００２４】
ノード２０２は、システムバス２４２により相互接続された１つ以上のプロセッサ２０４、メモリ２０６、ネットワークアダプタ２１０、クラスタアクセスアダプタ２１２、及びストレージアダプタ２１４を含む。ストレージシステム２００は、例えば、独立（又は安価）ディスクの冗長アレイ（Redundant  Array  of  Independent  (or  Inexpensive)  Disks）（ＲＡＩＤ）最適化手法を実現してアレイ内の機能しなくなったディスクのデータの再構築処理を最適化することができる、ノード２０２のメモリ２０６にインストールされたオペレーティングシステム２０８をさらに含む。
【００２５】
オペレーティングシステム２０８はまた、データストレージシステムの通信と、クラスタファブリック２１５（例えば、図１の１０６）にアタッチされているなどでクラスタ化ネットワーク内にあり得る他のデータストレージシステム間の通信とを管理することができる。ゆえに、ノード２０２、例えばネットワークストレージコントローラなどは、ホスト装置要求に応答して、これらホスト装置要求に従ってデータストレージ装置２３４（例えば、又はさらなるクラスタ化装置）上のデータを管理することができる。オペレーティングシステム２０８は、データストレージシステム２００上の１つ以上のファイルシステムをしばしば確立することができ、ここで、ファイルシステムは、例えば、ファイル及びディレクトリの持続的階層名前空間を実現するソフトウェアコード及びデータ構造を含むことができる。一例として、新しいデータストレージ装置（図示されていない）がクラスタ化ネットワークシステムに追加されるとき、オペレーティングシステム２０８は、既存のディレクトリツリー内のどこに新しいデータストレージ装置に関連づけられた新しいファイルが記憶されるべきかを知らされる。これは、ファイルシステムを「マウントすること」としてしばしば参照される。
【００２６】
例示的なデータストレージシステム２００において、メモリ２０６は、関連したソフトウェアアプリケーションコード及びデータ構造を記憶するためにプロセッサ２０４及びアダプタ２１０、２１２、２１４によりアドレス指定可能なストレージロケーションを含むことができる。プロセッサ２０４及びアダプタ２１０、２１２、２１４は、例えば、ソフトウェアコードを実行しデータ構造を操作するように構成された処理要素及び／又は論理回路を含んでよい。オペレーティングシステム２０８は、その一部が典型的にはメモリ２０６に存在し処理要素により実行され、とりわけストレージシステムにより実現されたファイルサービスをサポートするストレージ動作を呼び出すことにより、ストレージシステムを機能的に編成する。本明細書に説明される手法に属するアプリケーション命令を記憶及び／又は実行するために様々なコンピュータ読取可能媒体を含む他の処理及びメモリメカニズムが使用されてよいことが当業者に明らかであろう。例えば、オペレーティングシステムはまた、１つ以上の制御ファイル（図示されていない）を利用して仮想マシンの供給を支援することができる。
【００２７】
ネットワークアダプタ２１０は、コンピュータネットワーク２１６を通じてデータストレージシステム２００をホスト装置２０５に接続するために必要な機械的、電気的、及びシグナリング回路を含み、コンピュータネットワーク２１６は、とりわけ、ポイントツーポイント接続又は共有媒体、例えばローカルエリアネットワークなどを含んでよい。ホスト装置２０５（例えば、図１の１０８、１１０）は、アプリケーションを実行するように構成された汎用目的コンピュータであり得る。上記で説明されたように、ホスト装置２０５は、情報送達のクライアント／ホストモデルに従いデータストレージシステム２００と対話してよい。
【００２８】
ストレージアダプタ２１４は、ノード２０２上で実行しているオペレーティングシステム２０８と協調して、ホスト装置２０５により要求された情報にアクセスする（例えば、ネットワークストレージコントローラにより管理されたストレージ装置上のデータにアクセスする）。情報は、磁気ディスクドライブ、フラッシュメモリ、及び／又は情報を記憶するように適合された任意の他の同様の媒体などの、任意タイプのアタッチされたアレイの書き込み可能媒体に記憶されてよい。例示的なデータストレージシステム２００において、情報は、ディスク２２４、２２６、２２８上のデータブロックに記憶されることができる。ストレージアダプタ２１４は、ストレージエリアネットワーク（ＳＡＮ）プロトコル（例えば、スモールコンピュータシステムインターフェース（ＳＣＳＩ）、ｉＳＣＳＩ、ｈｙｐｅｒＳＣＳＩ、ファイバチャネルプロトコル（ＦＣＰ））などの入力／出力（Ｉ／Ｏ）相互接続配置を通じてディスクに結合するＩ／Ｏインターフェース回路を含むことができる。情報は、ストレージアダプタ２１４により取り出され、必要な場合、システムバス２４２を通じてネットワークアダプタ２１０（及び／又は、クラスタ内の別のノードに送信する場合にはクラスタアクセスアダプタ２１２）に転送される前に１つ以上のプロセッサ２０４により処理され、上記ネットワークアダプタ２１０（及び／又は、クラスタアクセスアダプタ２１２）において、情報はデータパケットにフォーマットされ、ネットワーク接続２１６を通じてホスト装置２０５に返される（かつ／あるいは、クラスタファブリック２１５を通じてクラスタにアタッチされた別のノードに返される）。
【００２９】
一実施例において、アレイ２１８、２２０、２２２上の情報のストレージは、ディスク空間の全体的論理配置を定義するディスク２２４、２２６、２２８のクラスタを含む１つ以上のストレージ「ボリューム」２３０、２３２として実現されてよい。１つ以上のボリュームを含むディスク２２４、２２６、２２８は、ＲＡＩＤの１つ以上のグループとして典型的に編成される。一例として、ボリューム２３０は、ディスクアレイ２１８及び２２０の集合体を含み、ディスクアレイ２１８及び２２０は、ディスク２２４及び２２６のクラスタを含む。
【００３０】
一実施例において、ディスク２２４、２２６、２２８へのアクセスを容易にするために、オペレーティングシステム２０８は、情報をディスク上のディレクトリ及びファイルの階層構造として論理的に編成するファイルシステム（例えば、ライトエニウェア（write  anywhere）ファイルシステム）を実現してよい。この実施例において、それぞれのファイルは、情報を記憶するように構成されたディスクブロックのセットとして実現されてよく、これに対し、ディレクトリは、他のファイル及びディレクトリに関する情報が記憶された特別にフォーマットされたファイルとして実現されてよい。
【００３１】
このデータストレージシステム２００内の基礎的な物理構成が何であれ、データが物理及び／又は仮想ボリューム内にファイルとして記憶されることができ、上記ボリュームは、ファイルシステム識別子（ＦＳＩＤ）などのそれぞれのボリューム識別子に関連づけられることができ、上記ファイルシステム識別子は、一例において長さ３２ビットであり得る。
【００３２】
物理ボリュームは、そのアドレス、アドレス指定可能空間、ロケーション等が変わらない物理ストレージ装置の少なくとも一部、例えば、１つ以上のデータストレージ装置２３４（例えば、独立（又は安価）ディスクの冗長アレイ（ＲＡＩＤシステム））のうち少なくともいくつかなどに対応する。典型的に、物理ボリュームのロケーションは、それにアクセスするために使用されるアドレス（の範囲）が一般に一定のままであるという点で、変わらない。
【００３３】
対照的に、仮想ボリュームは、異なる物理ストレージ装置の全く異なる部分の集合体にわたり記憶される。仮想ボリュームは、異なる物理ストレージ装置ロケーションの異なる利用可能部分、例えば、ディスク２２４、２２６、及び／又は２２８の各々からのいくらかの利用可能な空間などの、集合であり得る。仮想ボリュームはいずれか１つの特定ストレージ装置に「結び付けられ」ないため、仮想ボリュームは抽象化又は仮想化のレイヤを含むと言うことができ、上記抽象化又は仮想化のレイヤは、仮想ボリュームがいくつかの観点でリサイズされ、かつ／あるいは柔軟であることを可能にすることが十分理解されるであろう。
【００３４】
さらに、仮想ボリュームは、１つ以上の論理ユニット番号（ＬＵＮ）２３８、ディレクトリ２３６、Ｑｔｒｅｅ２３５、及びファイル２４０を含むことができる。とりわけ、これらの特徴、より詳細にはＬＵＮは、例えば、データが記憶される全く異なるメモリロケーションが識別され、データストレージユニットとしてグループ化されることを可能にする。そのようなものとして、ＬＵＮ２３８は、仮想ボリューム内のデータが集合体の範囲内で記憶される仮想ディスク又はドライブを構成するものとして特徴付けられ得る。例えば、ＬＵＮは、仮想ドライブとしてしばしば参照され、これらは、ボリュームの様々な部分に記憶されたデータブロックを実際には含むと同時に、汎用目的コンピュータからのハードドライブをエミュレートする。
【００３５】
一実施例において、１つ以上のデータストレージ装置２３４が１つ以上の物理ポートを有することができ、各物理ポートはターゲットアドレス（例えば、ＳＣＳＩターゲットアドレス）を割り当てられることができる。データストレージ装置に記憶されたそれぞれのボリュームを表すために、データストレージ装置上のターゲットアドレスが使用されて、１つ以上のＬＵＮ２３８を識別することができる。ゆえに、例えば、ノード２０２が、ストレージアダプタ２１４を通してボリューム２３０、２３２に接続するとき、ノード２０２とボリュームの基礎にある１つ以上のＬＵＮ２３８との間の接続が作成される。
【００３６】
一実施例において、それぞれのターゲットアドレスは複数のＬＵＮを識別することができ、ターゲットアドレスは複数のボリュームを表すことができる。例えば、ストレージアダプタ２１４内の回路及び／又はソフトウェアとして、又はメモリ２０６に存在しプロセッサ２０４により実行される実行可能コードとして実現され得るＩ／Ｏインターフェースは、ＬＵＮ２３８を識別する１つ以上のアドレスを使用することによりボリューム２３０に接続することができる。
【００３７】
コンピューティングノード間の切り替え動作を実行するかどうかを決定することが、データストレージシステム２００について実現されてよいことが十分理解され得る。一例において、ノード２０２（例えば、第１のコンピューティングノード）と第２のノード（例えば、第２のコンピューティングノード）とが、データストレージシステム２００に関連づけられたクラウドコンピューティング環境内にホストされてよい。別の例において、第２のノードがクラウドコンピューティング環境への通信アクセス（例えば、クラウドストレージサービスを通してアクセス可能なクラウド持続ストレージへのアクセス）を有する場合、ノード２０２がクラウドコンピューティング環境内にホストされてよく、第２のノードがクラウドコンピューティング環境の外部にホストされてよい。別の例において、ノード２０２と第２のノードとがクラウドコンピューティング環境の外部でホストされてよいが、クラウドコンピューティング環境への通信アクセス（例えば、クラウドストレージサービスを通してアクセス可能なクラウド持続ストレージへのアクセス）を有し得る。クラウド環境ノードステートプロバイダ、及び／又はクラウドストレージサービスを通してアクセス可能なクラウド持続ストレージが、動作可能ステート情報を確実に共有するためにノード２０２及び第２のノードにより使用されてよい。こうして、コンピューティングノードは、（例えば、通信リンク障害又は動作可能ステート情報の通信をその他の方法で妨害するインフラストラクチャ問題に応答して切り替えを誤って実行することと対照的に）パートナーコンピューティングノードが機能しなくなっており、ゆえに切り替え動作が実行されるべきであるかどうかを確実に決定することができる。コンピューティングノード間で切り替え動作を実行するかどうかを決定することは、任意タイプのコンピューティング環境について及び／又は該環境の間で実現されてよく、物理装置（例えば、ノード２０２、ホスト２０５等）及び／又は（例えば、ノード２０２及び／又はホスト２０５を含む）クラウドコンピューティング環境の間で移転可能であり得ることが十分理解され得る。
【００３８】
図３Ａ〜３Ｂは、クラウドコンピューティング環境３００を示す。図３Ａは、クラウドコンピューティング環境３００内にホストされている複数のコンピューティングノード、例えば、第１のコンピューティングノード３０４及び第２のコンピューティングノード３０６などを示す。一例において、第１のコンピューティングノード３０４及び／又は第２のコンピューティングノード３０６は、非クラウドコンピューティング環境内にホストされてよく、しかしクラウドコンピューティング環境３００への通信アクセス（例えば、クラウドストレージサービスを通してアクセス可能なクラウド持続ストレージへのアクセス）を有し得ることが十分理解され得る。コンピューティングノードは、ネットワーク３０２を通じてリソース及び／又はストレージをクライアントに提供することができる。例えば、ショッピング事業プロバイダが、ショッピングサービスをホストするためにクラウドコンピューティング環境３００内にコンピューティングノードを展開してよく、ビデオゲーム事業プロバイダが、ビデオゲームサービスをホストするためにクラウドコンピューティング環境３００内にコンピューティングノードを展開してよく、ネットワークストレージプロバイダが、第１のコンピューティングノード３０４を展開して、第１のリソースセット３１２及び第１のストレージ装置３１０を使用して会社クライアントのマーケティング部門のためのストレージサービスをホストしてよく、ネットワークストレージプロバイダは、第２のコンピューティングノード３０６を展開して、第２のリソースセット３１６及び第２のストレージ装置３１４を使用して会社クライアントのエンジニアリング部門のためのストレージサービスをホストしてよい。こうして、様々なサービスプロバイダが、サードパーティクラウドプロバイダによりホストされたクラウドコンピューティング環境３００を利用して、ネットワーク３０２を通じてサービスをクライアントに提供することができる。
【００３９】
一例において、ネットワークストレージプロバイダは、第１のコンピューティングノード３０４及び第２のコンピューティングノード３０６を災害復旧パートナーとして構成してよく、一コンピューティングノードが機能しなくなる場合、生き残りのコンピューティングノードが切り替え動作を実行して、機能しなくなったコンピューティングノードにより前に所有されたリソース及び／又はストレージ装置の所有権を取得するようにし、切り替えられたリソース及びストレージ装置を使用して、機能しなくなったコンピューティングノードにより前に提供されたサービスへのフェールオーバーアクセスをクライアントに提供する。切り替え動作を実行するかどうかを決定するために使用される動作可能ステート情報を共有する一例において、第１のコンピューティングノード３０４及び第２のコンピューティングノード３０６は、ノード間通信リンク３０８を通じて動作可能ステート情報（例えば、ハートビート、及び／又は、コンピューティングノードが動作可能である、機能しなくなった、リブートしている、カーネルパニックモードである、比較的高いレイテンシを有しクライアント要求についていけない、等かどうかに関する指標）を共有するように構成されてよい。例えば、ノード間通信リンク３０８はＩＰネットワークを含んでよく、第１のコンピューティングノード３０４は、第２のコンピューティングノード３０６に割り当てられたＩＰアドレスを使用して第２のコンピューティングノード３０６に第１の動作可能ステート情報を送信することができる。
【００４０】
切り替え動作を実行するかどうかを決定するために使用される動作可能ステート情報を共有する別の例において、第１のコンピューティングノード３０４は、第１のコンピューティングノード３０４により所有された第１のストレージ装置３１０内に第１の動作可能ステート情報を記憶するように構成されてよい。第２のコンピューティングノード３０６は、第１のクラウドインフラストラクチャ接続３２０を利用して、第１のストレージ装置３１０から第１の動作可能ステート情報を読み出すことができる。同様に、第２のコンピューティングノード３０６は、第２のコンピューティングノード３０６により所有された第２のストレージ装置３１４内に第２の動作可能ステート情報を記憶するように構成されてよい。第１のコンピューティングノード３０６は、第２のクラウドインフラストラクチャ接続３１８を利用して、第２のストレージ装置３１４から第２の動作可能ステート情報を読み出すことができる。こうして、第１のコンピューティングノード３０４及び第２のコンピューティングノード３０６は、切り替え動作が実行されるべきかどうかを決定するために使用される動作可能ステート情報を共有するためにノード間通信リンク３０８及び／又はクラウドインフラストラクチャ接続を利用することができる。
【００４１】
図３Ｂは、第２のコンピューティングノード３０６からの動作可能ステート情報のハートビートロス３３０を検出する第１のコンピューティングノード３０４を示す。ハートビートロス３３０を検出する一例において、ＩＰネットワーク障害が、ノード間通信リンク３０８がダウンしているという結果をもたらす可能性があり、ゆえに、第１のコンピューティングノード３０４は、ノード間通信リンク３０８がダウンしていることと対照的に、ハートビートロス３３０が第２のコンピューティングノード３０６が機能しなくなっていることの結果であると誤って決定する可能性がある。ハートビートロス３３０を検出する別の例において、クラウドインフラストラクチャ障害が、第２のクラウドインフラストラクチャ接続３１８がダウンしているという結果をもたらす可能性があり、ゆえに、第１のコンピューティングノード３０４は、第２のコンピューティングノード３０６がクラウドインフラストラクチャ障害に起因して第２のストレージ装置３１４内の動作可能ステート情報にアクセスできないことと対照的に、ハートビートロス３３０が第２のコンピューティングノード３０６が機能しなくなっていることの結果であると誤って決定する可能性がある。ゆえに、第１のコンピューティングノード３０４は、切り替え動作３３２を誤って実現して、第２のストレージ装置３１４及び／又は第２のリソースセット３１６を利用して第２のコンピューティングノード３０６により前に提供されたストレージサービスへのフェールオーバーアクセスをクライアントに提供するために第２のストレージ装置３１４及び／又は第２のリソースセット３１６の所有権を引き継ぐ可能性がある。不幸なことに、第１のコンピューティングノード３０４及び第２のコンピューティングノード３０６は、第２のストレージ装置３１４及び／又は第２のリソースセット３１６の所有権について不必要に競合する可能性があり、なぜならば、第２のコンピューティングノード３０６は動作可能であり、第１のコンピューティングノード３０４は誤って切り替え動作３３２を実行するよう試みているからである。
【００４２】
図４Ａ〜４Ｃは、コンピューティングノード間の切り替え動作を実行するかどうかを決定する例を示す。第１のコンピューティングノード４０４及び第２のコンピューティングノード４０６が、クラウドコンピューティング環境４００内にホストされてよい。一例において、第１のコンピューティングノード４０４及び／又は第２のコンピューティングノード４０６は、非クラウドコンピューティング環境内にホストされてよく、しかしクラウドコンピューティング環境４００への通信アクセス（例えば、クラウドストレージサービスを通してアクセス可能なクラウド持続ストレージへのアクセス）を有し得ることが十分理解され得る。一例において、第１のコンピューティングノード４０４は第１のクラウドレベルゾーン内にホストされてよく、第２のコンピューティングノード４０６は第２のクラウドレベルゾーン内にホストされてよい（例えば、データセンタのうち異なるゾーン又はロケーション内、異なるデータセンタ内、等にホストされる）。第１のコンピューティングノード４０４は、ネットワーク４０２を通じて、クラウドコンピューティング環境４００内の第１のストレージリソースセット４１２（例えば、第１のコンピューティングノード４０４により所有された第１のストレージ装置４１０に関連づけられたストレージリソース）へのアクセスをクライアントに提供することができる。第２のコンピューティングノード４０６は、ネットワーク４０２を通じて、クラウドコンピューティング環境４００内の第２のストレージリソースセット４１６（例えば、第２のコンピューティングノード４０６により所有された第２のストレージ装置４１４に関連づけられたストレージリソース）へのアクセスをクライアントに提供することができる。
【００４３】
ノード間通信リンク４０８が、第１のコンピューティングノード４０４及び第２のコンピューティングノード４０６の間に確立されてよい。例えば、ノード間通信リンク４０８は、ＩＰベースの通信、例えば、ＩＰネットワークなど（例えば、コンピューティングノード間の物理リンクなどのダイレクトリンクと対照的であり、これは、コンピューティングノードが異なるデータセンタ内又はデータセンタのうち異なるロケーション内などの異なるクラウドレベルゾーン内にあり得るため、非実際的であり得る）を含んでよい。第１のコンピューティングノード４０４及び第２のコンピューティングノード４０６は、ノード間通信リンク４０８を通じて動作可能ステート情報（例えば、ハートビート、障害の指標、通常動作の指標等）を送信するように構成されてよい。
【００４４】
一例において、第１のコンピューティングノード４０４は、第１のストレージ装置４１０内に第１の動作可能ステート情報を記憶するように構成されてよく、それにより、第２のコンピューティングノード４０６は、第１のクラウドインフラストラクチャ接続４２０を通じて第１のストレージ装置４１０から第１の動作可能ステート情報を読み出すことができる。第２のコンピューティングノード４０６は、第２のストレージ装置４１４内に第２の動作可能ステート情報を記憶するように構成されてよく、それにより、第１のコンピューティングノード４０４は、第２のクラウドインフラストラクチャ接続４１８を通じて第２のストレージ装置４１４から第２の動作可能ステート情報を読み出すことができる。
【００４５】
ノード間通信リンク４０８を動作不能にするＩＰネットワーク障害、及び／又は第１のクラウドインフラストラクチャ接続４２０及び第２のクラウドインフラストラクチャ接続４１８を動作不能にするクラウドコンピューティング環境インフラストラクチャ障害が、パートナーコンピューティングノードが機能しなくなったという偽の指標（例えば、ハートビートのロス）を提供する可能性があるため、クラウド環境ノードステートプロバイダ４３０が利用されて、コンピューティングノードの動作可能ステートを検証することができる。したがって、第１のコンピューティングノード４０４及び第２のコンピューティングノード４０６は、クラウドコンピューティング環境４００のクラウド環境ノードステートプロバイダ４３０に動作可能ステート情報を提供するように構成されてよい。一例において、クラウド環境ノードステートプロバイダ４３０は、クラウドコンピューティング環境４００のクラウドプロバイダ／所有者により提供されるサービスであり得、ゆえに、コンピューティングノードが動作可能であるか否かに関して高度に利用可能及び信頼可能な情報を提供することができる。
【００４６】
図４Ｂは、第２のコンピューティングノード４０６が動作可能である間、ノード間通信リンク４０８を通じての通信のロス４４０（例えば、ノード間通信リンク４０８を通じての第２のコンピューティングノード４０６からの動作ステート情報の最後の受信からのタイムアウト）、及び／又は第２のストレージ装置４１４へのアクセスのロス４４０（例えば、第２のクラウドインフラストラクチャ接続４１８を通じて第２のストレージ装置４１４にアクセスできないこと）を検出する第１のコンピューティングノード４０４を示す。ロス４４０を識別したことに応答して、第１のコンピューティングノード４０４は、第２のコンピューティングノード４０６の動作可能ステート情報についてクラウド環境ノードステートプロバイダ４３０に問い合わせることができる。第２のコンピューティングノード４０６が動作可能であるため、クラウド環境ステートプロバイダ４３０は、第２のコンピューティングノード４０６が動作可能ステートであることに関する動作可能ステートメッセージ４４２で応答することができる。したがって、第１のコンピューティングノード４０４は、第２のコンピューティングノード４０６が第２のリソースセット４１５へのアクセスをクライアントに提供するために動作可能であるため、切り替え動作を誤って実行することをやめることができる。ゆえに、第１のコンピューティングノード４０４は、ロス４４０がクラウドコンピューティング環境インフラストラクチャ障害及び／又はノード間通信リンク４０８の動作不能に対応すると決定することができる。
【００４７】
図４Ｃは、第２のコンピューティングノード４０６が機能停止ステート（failed  state）４５０である間、ノード間通信リンク４０８を通じての通信のロス４５１（例えば、ノード間通信リンク４０８を通じての第２のコンピューティングノード４０６からの動作ステート情報の最後の受信からのタイムアウト）、及び／又は第２のストレージ装置４１４へのアクセスのロス４５１（例えば、第２のクラウドインフラストラクチャ接続４１８を通じて第２のストレージ装置４１４にアクセスできないこと）を検出する第１のコンピューティングノード４０４を示す。ロス４５１を検出したことに応答して、第１のコンピューティングノード４０４は、第２のコンピューティングノード４０６の動作可能ステート情報についてクラウド環境ノードステートプロバイダ４３０に問い合わせることができる。第２のコンピューティングノード４０６が、第２のリソースセット４１６へのアクセスをクライアントに提供することができない機能停止ステート４５０であるため、クラウド環境ステートプロバイダ４３０は、第２のコンピューティングノード４０６に関して機能停止ステートメッセージ４５２で応答することができる。したがって、第１のコンピューティングノードは、切り替え動作４５４を実行して、第２のストレージ装置４１４及び／又は第２のリソースセット４１６を利用して第２のコンピューティングノード４０６により前に提供されたストレージサービスへのフェールオーバーアクセスをクライアントに提供するために第２のストレージ装置４１４及び／又は第２のリソースセット４１６の所有権を引き継ぐことができる。別の例において、第１のコンピューティングノード４０４はまた、コンピューティングノードが動作可能情報を記憶することができるクラウド持続ストレージをホストするクラウドストレージサービスに問い合わせて、第２のコンピューティングノード４０６の動作可能ステートを決定してもよい（例えば、図５Ａ〜５Ｃ）ことが十分理解され得る。
【００４８】
図５Ａ〜５Ｃは、コンピューティングノード間で切り替え動作を実行するかどうかを決定する例を示す。第１のコンピューティングノード５０４及び第２のコンピューティングノード５０６が、クラウドコンピューティング環境５００内にホストされてよい。一例において、第１のコンピューティングノード５０４及び／又は第２のコンピューティングノード５０６は、非クラウドコンピューティング環境内にホストされてよく、しかしクラウドコンピューティング環境５００への通信アクセス（例えば、クラウドストレージサービスを通してアクセス可能なクラウド持続ストレージへのアクセス）を有し得ることが十分理解され得る。一例において、第１のコンピューティングノード５０４は第１のクラウドレベルゾーン内にホストされてよく、第２のコンピューティングノード５０６は第２のクラウドレベルゾーン内にホストされてよい。第１のコンピューティングノード５０４は、ネットワーク５０２を通じて、クラウドコンピューティング環境５００内の第１のストレージリソースセット５１２（例えば、第１のコンピューティングノード５０４により所有された第１のストレージ装置５１０に関連づけられたストレージリソース）へのアクセスをクライアントに提供することができる。第２のコンピューティングノード５０６は、ネットワーク５０２を通じて、クラウドコンピューティング環境５００内の第２のストレージリソースセット５１６（例えば、第２のコンピューティングノード５０６により所有された第２のストレージ装置５１４に関連づけられたストレージリソース）へのアクセスをクライアントに提供することができる。
【００４９】
ノード間通信リンク５０８が、第１のコンピューティングノード５０４及び第２のコンピューティングノード５０６の間に確立されてよい。例えば、ノード間通信リンク５０８は、ＩＰベースの通信、例えば、ＩＰネットワークなどを含んでよい。第１のコンピューティングノード５０４及び第２のコンピューティングノード５０６は、ノード間通信リンク５０８を通じて動作可能ステート情報（例えば、コンピューティングノードの進捗を示す番号のシーケンスに対応するハートビート、障害の指標、通常動作の指標等）を送信するように構成されてよい。
【００５０】
一例において、第１のコンピューティングノード５０４は、第１のストレージ装置５１０内に第１の動作可能ステート情報を記憶するように構成されてよく、それにより、第２のコンピューティングノード５０６は、第１のクラウドインフラストラクチャ接続５２０を通じて第１のストレージ装置５１０から第１の動作可能ステート情報を読み出すことができる。第２のコンピューティングノード５０６は、第２のストレージ装置５１４内に第２の動作可能ステート情報を記憶するように構成されてよく、それにより、第１のコンピューティングノード５０４は、第２のクラウドインフラストラクチャ接続５１８を通じて第２のストレージ装置５１４から第２の動作可能ステート情報を読み出すことができる。
【００５１】
ノード間通信リンク５０８を動作不能にするＩＰネットワーク障害、及び／又は第１のクラウドインフラストラクチャ接続５２０及び第２のクラウドインフラストラクチャ接続５１８を動作不能にするクラウドコンピューティング環境インフラストラクチャ障害が、パートナーコンピューティングノードが機能しなくなったという偽の指標（例えば、ハートビートのロス）を提供する可能性があるため、クラウドストレージサービス５３０が利用されて、コンピューティング装置の動作可能ステートを検証することができる。したがって、第１のコンピューティングノード５０４及び第２のコンピューティングノード５０６は、クラウドコンピューティング環境５００のクラウドストレージサービス５３０を通してアクセス可能なクラウド持続ストレージに動作可能ステート情報を記憶するように構成されてよい。一例において、クラウドストレージサービス５３０及びクラウド持続ストレージは、クラウドコンピューティング環境５００のクラウドプロバイダ／所有者により提供され、ゆえに、コンピューティングノードが動作可能であるか否かに関して高度に利用可能及び信頼可能な情報を提供することができる。
【００５２】
図５Ｂは、第２のコンピューティングノード５０６が動作可能である間、ノード間通信リンク５０８を通じての通信のロス５４０（例えば、ノード間通信リンク５０８を通じての第２のコンピューティングノード５０６からの動作ステート情報の最後の受信からのタイムアウト）、及び／又は第２のストレージ装置５１４へのアクセスのロス５４０（例えば、第２のクラウドインフラストラクチャ接続５１８を通じて第２のストレージ装置５１４にアクセスできないこと）を検出する第１のコンピューティングノード５０４を示す。ロス５４０を検出したことに応答して、第１のコンピューティングノード５０４は、クラウド持続ストレージ内に第２のコンピューティングノード５０６により記憶された動作可能ステート情報５４２（例えば、第２のコンピューティングノード５０６の進捗を示すシーケンス番号を含むハートビート；障害、カーネルパニック、又は通常動作ステートの指標；等）についてクラウドストレージサービス５３０に問い合わせることができる。動作可能ステート情報５４２が、第２のコンピューティングノード５０６が動作可能であると示すことができるため、第１のコンピューティングノード５０４は、切り替え動作を誤って実行することをやめることができ、なぜならば、第２のコンピューティングノード５０６が第２のリソースセット５１６へのアクセスをクライアントに提供するために動作可能であるからである。ゆえに、第１のコンピューティングノード５０４は、ロス５４０がクラウドコンピューティング環境インフラストラクチャ障害及び／又はノード間通信リンク５０８の動作不能に対応すると決定することができる。
【００５３】
図５Ｃは、第２のコンピューティングノード５０６が機能停止ステート５５０である間、ノード間通信リンク５０８を通じての通信のロス５５１（例えば、ノード間通信リンク５０８を通じての第２のコンピューティングノード５０６からの動作ステート情報の最後の受信からのタイムアウト）、及び／又は第２のストレージ装置５１４へのアクセスのロス５５１（例えば、第２のクラウドインフラストラクチャ接続５１８を通じて第２のストレージ装置５１４にアクセスできないこと）を検出する第１のコンピューティングノード５０４を示す。ロス５５１を検出したことに応答して、第１のコンピューティングノード５０４は、クラウド持続ストレージ内に第２のコンピューティングノード５０６により記憶された動作可能ステート情報５５２（例えば、第２のコンピューティングノード５０６の進捗を示すシーケンス番号を含むハートビート；障害、カーネルパニック、又は通常動作ステートの指標；等）についてクラウドストレージサービス５３０に問い合わせることができる。動作ステート情報５５２が、第２のコンピューティングノード５０６が第２のリソースセット５１６へのアクセスをクライアントに提供することができない機能停止ステート５５０であると示すことができるため、第１のコンピューティングノードは、切り替え動作５５４を実行して、第２のストレージ装置５１４及び／又は第２のリソースセット５１６を利用して第２のコンピューティングノード５０６により前に提供されたストレージサービスへのフェールオーバーアクセスをクライアントに提供するために第２のストレージ装置５１４及び／又は第２のリソースセット５１６の所有権を引き継ぐことができる。別の例において、第１のコンピューティングノード５０４はまた、クラウド環境ノードステートプロバイダに問い合わせて第２のコンピューティングノード５０６の動作可能ステートを決定してもよい（例えば、図４Ａ〜４Ｃ）ことが十分理解され得る。
【００５４】
コンピューティングノード間の切り替え動作を実行するかどうかを決定する一実施例が、図６の例示的な方法６００により示される。６０２において、方法６００は開始する。６０４において、ノード間通信リンクが、クラウドコンピューティング環境内にホストされた第１のコンピューティングノードと第２のコンピューティングノードとの間に確立される。第１のコンピューティングノードは、クラウドコンピューティング環境内の第１のリソースセットへのアクセスをクライアントに提供するように構成される。第２のコンピューティングノードは、クラウドコンピューティング環境内の第２のリソースセットへのアクセスをクライアントに提供するように構成される。６０６において、第１のコンピューティングノード及び第２のコンピューティングノードは、クラウドコンピューティング環境のクラウド環境ノードステートプロバイダに動作可能ステート情報を提供するように構成される。
【００５５】
ノード間通信リンクを通じての通信のロスを識別したことに応答して、クラウド環境ノードステートプロバイダは、６０８において、第１のコンピューティングノードの第１の動作可能ステート情報について問い合わせられてよい。６１０において、第１のコンピューティングノードの障害を示す第１の動作可能ステート情報に応答して、切り替え動作が、第２のコンピューティングノードが第１のコンピューティングノードの障害復旧パートナーであることに基づき、第１のコンピューティングノードを通してクライアントにとって前にアクセス可能であった第１のリソースセットへのフェールオーバーアクセスをクライアントに提供するために第１のコンピューティングノードから第２のコンピューティングノードに実行されてよい。６１２において、方法６００は終了する。
【００５６】
コンピューティングノード間の切り替え動作を実行するかどうかを決定する一実施例が、図７の例示的な方法７００により示される。７０２において、方法７００は開始する。７０４において、ノード間通信リンクが、第１のコンピューティングノードと第２のコンピューティングノードとの間に確立される。一例において、第１のコンピューティングノード及び第２のコンピューティングノードは、クラウドコンピューティング環境内にホストされてよい。別の例において、第１のコンピューティングノード及び第２のコンピューティングノードは、非クラウドコンピューティング環境（例えば、クラスタネットワークストレージ環境）内にホストされてよく、しかしクラウドコンピューティング環境への通信アクセスを有し得る。別の例において、第１のコンピューティングノードはクラウドコンピューティング環境内にホストされてよく、第２のコンピューティングノードは非クラウドコンピューティング環境内にホストされてよく、第２のコンピューティングノードは、クラウドコンピューティング環境への通信アクセスを有する。第１のコンピューティングノードは、第１のリソースセットへのアクセスをクライアントに提供するように構成される。第２のコンピューティングノードは、第２のリソースセットへのアクセスをクライアントに提供するように構成される。７０６において、第１のコンピューティングノード及び第２のコンピューティングノードは、クラウドコンピューティング環境のクラウドストレージサービスを通してアクセス可能なクラウド持続ストレージに動作可能ステート情報を記憶するように構成される。
【００５７】
ノード間通信リンクを通じての通信のロスを識別したことに応答して、クラウドストレージサービスは、７０８において、第１のコンピューティングノードの第１の動作可能ステート情報について問い合わせられてよい。７１０において、第１のコンピューティングノードの障害を示す第１の動作可能ステート情報に応答して、切り替え動作が、第２のコンピューティングノードが第１のコンピューティングノードの障害復旧パートナーであることに基づき、第１のコンピューティングノードを通してクライアントにとって前にアクセス可能であった第１のリソースセットへのフェールオーバーアクセスをクライアントに提供するために第１のコンピューティングノードから第２のコンピューティングノードに実行されてよい。７１２において、方法７００は終了する。
【００５８】
さらに別の実施例には、本明細書に提示される手法の１つ以上を実現するように構成されたプロセッサ実行可能命令を含むコンピュータ読取可能媒体が含まれる。これら方法で考えられるコンピュータ読取可能媒体又はコンピュータ読取可能装置の一例示的な実施例が図８に示され、実現例８００は、コンピュータ読取可能データ８０６が符号化されたコンピュータ読取可能媒体８０８、例えば、ＣＤ‐Ｒ、ＤＶＤ‐Ｒ、フラッシュドライブ、ハードディスクドライブのプラッタ等を含む。このコンピュータ読取可能データ８０６、例えばゼロ又はイチのうち少なくとも一方を含むバイナリデータなどは、本明細書に説明される原理の１つ以上に従い動作するように構成されたコンピュータ命令８０４のセットを同様に含む。いくつかの実施例において、プロセッサ実行可能コンピュータ命令８０４は、方法８０２、例えば、図６の例示的な方法６００のうち少なくともいくつか及び／又は図７の例示的な方法７００のうち少なくともいくつかなどを実行するように構成される。いくつかの実施例において、プロセッサ実行可能命令８０４は、システム、例えば、図４Ａ〜４Ｃの例示的なシステム４００のうち少なくともいくつか及び／又は図５Ａ〜５Ｃの例示的なシステム５００のうち少なくともいくつかなどを実現するように構成される。多くのこうしたコンピュータ読取可能媒体が、本明細書に提示される手法に従い動作するように企図される。
【００５９】
本明細書に説明される処理、アーキテクチャ、及び／又は手順は、ハードウェア、ファームウェア、及び／又はソフトウェアにおいて実現できることが十分理解されるであろう。さらに、本明細書に説明される対策は、ストレージシステムとして具現化され又はストレージシステムを含み、スタンドアロンコンピュータ又はその一部を含む、任意タイプの特別目的コンピュータ（例えば、ファイルホスト、ストレージサーバ、及び／又はストレージ供給アプライアンス）及び／又は汎用目的コンピュータに適用されてよいことが十分理解されるであろう。さらに、本明細書における教示は、様々なストレージシステムアーキテクチャに対して構成でき、これらに限られないが、ネットワークアタッチトストレージ環境及び／又はストレージエリアネットワーク、並びにクライアント又はホストコンピュータに直接アタッチされたディスクアセンブリが含まれる。ストレージシステムは、したがって、ストレージ機能を実行するように構成され他の機器又はシステムに関連づけられた任意のサブシステムに追加でこうした配置を含むように広く取られるべきである。
【００６０】
いくつかの実施例において、本開示において説明及び／又は例示された方法は、全体的又は部分的にコンピュータ読取可能媒体上に実現されてよい。コンピュータ読取可能媒体は、本明細書に提示される方法の１つ以上を実現するように構成されたプロセッサ実行可能命令を含むことができ、コンピュータシステムによりその後読み出せるこのデータを記憶する任意のメカニズムを含んでよい。コンピュータ読取可能媒体の例には、（ハード）ドライブ（例えば、ネットワークアタッチトストレージ（ＮＡＳ）を介してアクセス可能）、ストレージエリアネットワーク（ＳＡＮ）、揮発及び不揮発メモリ、例えば、読取専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＥＰＲＯＭ、及び／又はフラッシュメモリ、ＣＤ‐ＲＯＭ、ＣＤ‐Ｒ、ＣＤ‐ＲＷ、ＤＶＤ、カセット、磁気テープ、磁気ディスクストレージ、光学又は非光学データストレージ装置、及び／又はデータを記憶するために使用できる任意の他の媒体が含まれる。
【００６１】
対象事項が構造的特徴又は方法論動作に固有の言語で説明されたが、別記の特許請求の範囲に定義される対象事項は必ずしも上記で説明された特定の特徴又は動作に限定されないことが理解されるべきである。むしろ、上記で説明された特定の特徴及び動作は、請求項のうち少なくともいくつかを実現する例示的な形式として開示される。
【００６２】
様々な実施例動作が本明細書において提供される。動作のうちいくつか又はすべてが説明された順序は、これら動作が必ず順序依存であることを示すようにみなされるべきではない。代替的な順序付けが、本説明の恩恵を考慮して十分理解されるであろう。さらに、すべての動作が必ずしも本明細書に提供された各実施例に存在するわけではないことが理解されるであろう。また、いくつかの実施例においてすべての動作が必要であるわけではないことが理解されるであろう。
【００６３】
さらに、請求される対象事項は、コンピュータを制御して開示された対象事項を実現するためのソフトウェア、ファームウェア、ハードウェア、又はこれらの任意の組み合わせを生み出すように標準のアプリケーション又はエンジニアリング手法を用いて方法、装置、又は製造品として実現される。本明細書において用いられるときの用語「製造品」は、任意のコンピュータ読取可能装置、キャリア、又は媒体からアクセス可能なコンピュータアプリケーションを包含するように意図される。当然ながら、請求される対象事項の範囲及び主旨から逸脱することなくこの構成に対して多くの変更が行われてよい。
【００６４】
本出願において用いられるとき、用語「コンポーネント」、「モジュール」、「システム」、「インターフェース」などは一般に、コンピュータ関連エンティティ、ハードウェア、ハードウェア及びソフトウェアの組み合わせ、ソフトウェア、又は実行中のソフトウェアを参照するように意図される。例えば、コンポーネントが、プロセッサ上で実行するプロセス、プロセッサ、オブジェクト、実行ファイル、実行のスレッド、アプリケーション、又はコンピュータを含む。例示として、コントローラ上で実行するアプリケーションとコントローラとの双方がコンポーネントであり得る。実行のプロセス又はスレッド内に存在する１つ以上のコンポーネントと一コンポーネントとが、１つのコンピュータ上に局所化されてもよく、あるいは２つ以上のコンピュータ間に分散されてもよい。
【００６５】
さらに、「例示的」は本明細書において、必ずしも利点としてでなく、例、事例、例示等の役割を果たすことを意味するために用いられる。本出願において用いられるとき、「又は」は、排他的な「又は」でなく包含的な「又は」を意味することが意図される。さらに、本出願において用いられる一の（“a”、“an”）は一般に、単数形に向けられるように別段指定されるか又は文脈から明らかかでない限り、「１つ以上」を意味するようにみなされるべきである。また、Ａ及びＢのうち少なくとも１つ及び／又は同様のものは一般に、Ａ、又はＢ、及び／又はＡ及びＢの双方を意味する。さらに、「含める」、「有している」、「有する」、「備える」、又はこれらの変形が用いられる範囲で、こうした用語は、用語「含む」と同様に包含的であることが意図される。
【００６６】
請求される対象事項の範囲及び主旨から逸脱することなく多くの変更が本開示に対して行われてよい。別段指定されない限り、「第１の」、「第２の」などは、時間的態様、空間的態様、順序付け等を示すようには意図されない。むしろ、こうした用語は、特徴、要素、アイテム等のための、識別子、名前等として専ら用いられる。例えば、第１の情報セット及び第２の情報セットは一般に、情報セットＡ及び情報セットＢ、又は２つの異なる若しくは２つの同一の情報セット、又は一の同じ情報セットに対応する。
【００６７】
また、本開示は１つ以上の実現例に関して図示され説明されたが、本明細書及び添付図面を読んで理解した当業者は均等的な修正及び変更に気づくであろう。本開示は、すべてのこうした変更及び修正を含み、下記の特許請求の範囲によってのみ限定される。特に、上記で説明されたコンポーネント（例えば、要素、リソース等）により実行される様々な機能に関し、こうしたコンポーネントを説明するために用いられる用語は、別段示されない限り、開示された構造に対して構造的に均等でないとしても、（例えば、機能的に均等である）説明されたコンポーネントの指定された機能を実行する任意のコンポーネントに対応することが意図される。さらに、開示の特定の特徴がいくつかの実現例のうち１つのみに関して開示されている可能性があるが、こうした特徴は、所望され得る他の実現例の１つ以上の他の特徴、及び任意の所与の又は特定の適用のための利点と組み合わせられてよい。
【図１】
0006476350.tif 000002
【図２】
0006476350.tif 000003
【図３Ａ】
0006476350.tif 000004
【図３Ｂ】
0006476350.tif 000005
【図４Ａ】
0006476350.tif 000006
【図４Ｂ】
0006476350.tif 000007
【図４Ｃ】
0006476350.tif 000008
【図５Ａ】
0006476350.tif 000009
【図５Ｂ】
0006476350.tif 000010
【図５Ｃ】
0006476350.tif 000011
【図６】
0006476350.tif 000012
【図７】
0006476350.tif 000013
【図８】
0006476350.tif 000014