(57)【特許請求の範囲】
【請求項１】
アプリケーションと前記アプリケーションからの情報の１以上のミラーとがネットワークを介して情報を通信可能に接続されたシステムにおいてサーバーにより実行される障害処理方法であって、
エラーが前記ミラーにおける媒体エラーであるのか又は前記ネットワークにおける接続エラーであるのかを判定するステップを含むエラータイプ検出プロセスを実行するステップと、
切離し判定プロセスを実行して適切な切離しシナリオを確立するステップであって、前記適切な切離しシナリオは、前記接続エラーがすべてのミラーに関連する場合に、いずれのミラーをも他のミラーから切り離さないステップを含む、ステップと、
障害を前記アプリケーションに報告するステップと、
を有する方法。
【請求項２】
前記切離し判定プロセスは、前記ミラーと前記情報を通信可能に接続されるノードが情報を一のミラーから読み取って他のミラーに書き込む読取り−書戻しプロセスの結果であるエラーとミラーとの関連に従ってミラーを切り離す請求項１に記載の障害処理方法。
【請求項３】
前記切離し判定プロセスは、前記ミラーに対する接続状況を報告するように一のノードが他のノードに要求する接続状態問合せを含み、且つ、ミラーは、前記接続状態問合せの結果であるエラーとミラーとの関連に従って切り離される請求項１に記載の障害処理方法。
【請求項４】
前記接続状態問合せは、ノードのそれぞれへの接続問合せを含む請求項３に記載の障害処理方法。
【請求項５】
読取り−書戻しプロセスにより、一貫性及び同期が前記ミラー間において維持される請求項１に記載の障害処理方法。
【請求項６】
所定数以上のノードにアクセス可能ではないミラーは、切り離される請求項１に記載の障害処理方法。
【請求項７】
前記エラータイプ検出プロセスを実行する前記ステップは、前記エラーが前記ミラーのサブセット又はすべてに関連するかどうかを分析するステップと、前記エラーが前記ミラーのすべてに関連する場合に、前記ミラーのいずれかが媒体エラーを有しているかどうかを判定するステップと、を含み、
切離し判定プロセスを実行する前記ステップは、切離しのために、媒体エラーを有するミラーのサブセット内のミラーと、前記ミラーのすべてが媒体エラーを有している場合の１つを除いたすべての前記ミラーと、を識別するステップを含む請求項１に記載の障害処理方法。
【請求項８】
マスタのロールを第１ノードから第２ノードに転送し、スレーブのロールを前記第２ノードから前記第１ノードに転送するステップを更に有し、この場合に、前記第１ノードは、前記ミラーへのアクセスを喪失しており、且つ、前記第２ノードは、前記ミラーへのアクセスを有する請求項１に記載の障害処理方法。
【請求項９】
その上部に保存された状態において、サーバーによって実行された際に、前記サーバーに方法を実行させるコンピュータ実行可能命令を有するコンピュータ可読ストレージ媒体であって、前記方法は、アプリケーションと前記アプリケーションからの情報の１以上のミラーとがネットワークを介して情報を通信可能に接続されたシステムにおいて実行され、
前記方法は、
エラーが前記ミラーにおける媒体エラーであるのか又は前記ネットワークにおける接続エラーであるのかを判定するステップを含むエラータイプ検出プロセスを実行するステップと、
切離し判定プロセスを実行して適切な切離しシナリオを確立するステップであって、前記適切な切離しシナリオは、前記接続エラーがすべてのミラーに関連する場合に、いずれのミラーをも他のミラーから切り離さないステップを含む、ステップと、
障害を前記アプリケーションに報告するステップと、
を有する、媒体。
【請求項１０】
前記エラータイプ検出プロセスを実行する前記ステップは、前記エラーが前記ミラーのサブセット又はすべてに関連するかどうかを分析するステップと、前記エラーが前記ミラーのすべてに関連する場合に、前記ミラーのいずれかが媒体エラーを有しているかどうかを判定するステップと、を含み、
切離し判定プロセスを実行する前記ステップは、切離しのために、媒体エラーを有しているミラーのサブセット内のミラーと、前記ミラーのすべてが媒体エラーを有している場合の１つを除いたすべての前記ミラーと、を識別するステップを含む請求項９に記載のコンピュータ可読ストレージ媒体。
【請求項１１】
マスタのロールを第１ノードから第２ノードに転送し、スレーブのロールを前記第２ノードから前記第１ノードに転送するステップを更に有し、この場合に、前記第１ノードは、前記ミラーへのアクセスを喪失しており、且つ、前記第２ノードは、前記ミラーへのアクセスを有する請求項９に記載のコンピュータ可読ストレージ媒体。
【請求項１２】
コンピュータ可読ストレージ媒体に結合されたプロセッサを有し、且つ、コンピュータ可読コードを実行するコンピュータシステムであって、
前記コンピュータ可読コードは、アプリケーションと前記アプリケーションからの情報の１以上のミラーとがネットワークを介して情報を通信可能に接続されたシステムにおいて実行され、
前記コンピュータ可読コードは、
エラーが前記ミラーにおける媒体エラーであるのか又は前記ネットワークにおける接続エラーであるのかを判定するステップを含むエラータイプ検出プロセスを実行するステップと、
切離し判定プロセスを実行して適切な切離しシナリオを確立するステップであって、前記適切な切離しシナリオは、前記接続エラーがすべてのミラーに関連する場合に、いずれのミラーをも他のミラーから切り離さないステップを含む、ステップと、
障害を前記アプリケーションに報告するステップと、
を含む動作を前記コンピュータシステムに実行させる、コンピュータシステム。
【請求項１３】
前記エラータイプ検出プロセスを実行する前記ステップは、前記エラーが前記ミラーのサブセット又はすべてに関連するかどうかを分析するステップと、前記エラーが前記ミラーのすべてに関連する場合に、前記ミラーのいずれかが媒体エラーを有しているかどうかを判定するステップと、を含み、
切離し判定プロセスを実行する前記ステップは、切離しのために、媒体エラーを有するミラーのサブセット内のミラーと、前記ミラーのすべてが媒体エラーを有している場合の１つを除いたすべての前記ミラーと、を識別するステップと、を含む請求項１２に記載のコンピュータシステム。
【請求項１４】
マスタのロールを第１ノードから第２ノードに転送し、スレーブのロールを前記第２ノードから前記第１ノードに転送するステップを更に有し、この場合に、前記第１ノードは、前記ミラーへのアクセスを喪失しており、且つ、前記第２ノードは、前記ミラーへのアクセスを有する請求項１２に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、情報保存及び障害処理の分野に関する。
【背景技術】
【０００２】
有利な結果を実現するために、多数のアプリケーションにおいて、しばしば、電子システム及び回路を利用している。ビジネス、科学、教育、及びエンターテインメントの大部分の領域において、コンピュータ、ビデオ機器、及び通信システムなどの多数の電子技術により、情報の分析及び伝達における生産性の向上とコストの低減を促進している。これらの活動には、しばしば、膨大な量の重要な且つ機密の情報の保存が伴っており、且つ、情報を保存及び処理することにより、大量のリソースが消費されている。しばしば、様々な理由から、情報の維持及び追跡が非常に重要である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
多数のストレージアーキテクチャは、様々な目的（例えば、回復、破壊、修復など）に利用可能なストレージミラーを含む。通常、ボリューム内のミラーは、それらのミラーに跨る読取りの一貫性を維持するために、同一のデータを有する必要がある。ミラーがソフトウェア層において実装され、且つ、ボリュームが共有ストレージクラスタ内の複数のノードに跨って共有されている際には、１つ又は複数のノードからのストレージ接続の完全な喪失をもたらす局所的な接続エラーが、書込みにおけるＩ／Ｏエラーをトリガする可能性がある。書込みが進行している間に接続の喪失が発生した場合には、ミラーに跨るデータの一貫性が結果的に失われる可能性があろう。このようなシナリオにおいては、従来の方法は、通常、切り離されたものとして、最後のものを除くすべてのミラーをマーキングすることにより、影響を受けていないノードからのデータの読取りにおける一貫性の喪失を防止している。しかしながら、この従来の切離しの方法によれば、通常、影響を受けたノードに対してなんらの追加的な利益をも提供することなしに、ミラーの冗長性が低減される。
【課題を解決するための手段】
【０００４】
障害処理のためのシステム及び方法が提示されている。一実施形態においては、障害処理方法は、エラーが媒体エラーであるのか又は接続エラーであるのかを判定するステップを含むエラータイプ検出プロセスを実行するステップと、切離し判定プロセスを実行して適切な切離しシナリオを確立するステップであって、適切な切離しシナリオは、接続エラーがすべてのミラーに関係する場合に、いずれのミラーをも切り離さないステップを含む、ステップと、障害を有するアプリケーション書込みを返すステップと、を含む。一実施形態においては、切離し判定プロセスは、読取り−書戻しプロセスの結果に従ってミラーを切り離す。例示用の一実装形態においては、切離し判定プロセスは、接続状態問合せを含み、且つ、ミラーは、接続状態問合せの結果に従って切り離される。例示用の一実装形態においては、接続状態問合せは、ＳＣＳＩ接続問合せを含む。一実施形態においては、一貫性及び同期は、読取り−書戻し動作を利用することにより、ミラー間において維持される。又、大部分のノードにアクセス可能ではないミラーを切り離すこともできる。
【０００５】
一実施形態においては、エラータイプ検出プロセスを実行するステップは、エラーがミラーのサブセット又はすべてに関係するかどうかを分析するステップと、エラーがミラーのすべてに関係する場合に、ミラーのいずれかが媒体エラーに遭遇しているかどうかを判定するステップと、を含む。例示用の一実装形態においては、切離し判定プロセスを実行するステップは、切離しのために、媒体エラーに遭遇するミラーのサブセット内のミラーと、ミラーのすべてが媒体エラーに遭遇している場合に、１つのものを除くすべてのミラーと、を識別するステップを含む。ロールを第１ノードから第２ノードに転送することが可能であり、この場合に、第１ノードは、ストレージアクセスの喪失の影響を受けており、且つ、第２ノードは、十分なストレージアクセスを有する。
【０００６】
一実施形態においては、コンピュータ可読ストレージ媒体は、コンピュータシステムによって実行された際にコンピュータシステムに方法を実行させるコンピュータ実行可能命令をその上部に保存している。一実施形態においては、本方法は、エラーが媒体エラーであるのか又は接続エラーであるのかを判定するステップを含むエラータイプ検出プロセスを実行するステップと、切離し判定プロセスを実行して適切な切離しシナリオを確立するステップであって、適切な切離しシナリオは、接続エラーがすべてのミラーに関係する場合に、いずれのミラーをも切り離さないステップを含む、ステップと、障害を有するアプリケーション書込みを返すステップと、を含む。一実施形態においては、切離し判定プロセスは、読取り−書戻しプロセスの結果に従ってミラーを切り離す。一実施形態においては、切離し判定プロセスは、読取り−書戻しプロセスの結果に従ってミラーを切り離す。例示用の一実装形態においては、切離し判定プロセスは、接続状態問合せを含み、且つ、ミラーは、接続状態問合せの結果に従って切り離される。例示用の一実装形態においては、接続状態問合せは、ＳＣＳＩ接続問合せを含む。一実施形態においては、読取り−書戻し動作を利用することにより、一貫性及び同期がミラー間において維持される。又、大部分のノードにアクセス可能ではないミラーを切り離すこともできる。ロールを第１ノードから第２ノードに転送することが可能であり、この場合に、第１ノードは、ストレージアクセスの喪失の影響を受けており、且つ、第２ノードは、十分なストレージアクセスを有する。
【０００７】
例示用の一実装形態においては、コンピュータシステムは、コンピュータ可読ストレージ媒体に結合されたプロセッサを有し、且つ、コンピュータシステムは、コンピュータシステムに動作を実行させるコンピュータ実行可能コードを実行し、動作は、エラーが媒体エラーであるのか又は接続エラーであるのかを判定するステップを含むエラータイプ検出プロセスを実行するステップと、切離し判定プロセスを実行して適切な切離しシナリオを確立するステップであって、適切な切離しシナリオは、接続エラーがすべてのミラーに関係する場合に、いずれのミラーをも切り離さないステップを含む、ステップと、障害を有するアプリケーション書込みを返すステップと、を含む。一実施形態においては、切離し判定プロセスは、読取り−書戻しプロセスの結果に従ってミラーを切り離す。一実施形態においては、切離し判定プロセスは、読取り−書戻しプロセスの結果に従ってミラーを切り離す。例示用の一実装形態においては、切離し判定プロセスは、接続状態問合せを含み、且つ、ミラーは、接続状態問合せの結果に従って切り離される。例示用の一実装形態においては、接続状態問合せは、ＳＣＳＩ接続問合せを含む。一実装形態においては、読取り−書戻し動作を利用することにより、一貫性及び同期がミラー間において維持される。又、大部分のノードにアクセス可能ではないミラーを切り離すこともできる。ロールを第１ノードから第２ノードに転送することが可能であり、この場合に、第１ノードは、ストレージアクセスの喪失の影響を受けており、且つ、第２ノードは、十分なストレージアクセスを有する。
【０００８】
本明細書に含まれると共にその一部を形成する添付図面は、本実施形態の原理を例示するために含まれており、且つ、本発明を本明細書に示されている特定の実装形態に限定することを意図したものではない。添付図面は、特記されていない限り、縮尺が正確ではない。
【図面の簡単な説明】
【０００９】
【図１Ａ】本発明の一実施形態による例示用のデータストレージシステムのブロックダイアグラムである。
【図１Ｂ】本発明の一実施形態によるストレージ接続コンポーネントとストレージリソースの間のクラスタグローバル障害を有する例示用のデータストレージシステムのブロックダイアグラムである。
【図１Ｃ】本発明の一実施形態によるマスタローカル障害及びスレーブローカル障害を有する例示用のデータストレージシステムのブロックダイアグラムである。
【図１Ｄ】本発明の一実施形態によるグローバル部分障害及びローカル部分障害を有する例示用のデータストレージシステムのブロックダイアグラムである。
【図１Ｅ】本発明の一実施形態によるクラスタグローバル障害を有する例示用のデータストレージシステムのブロックダイアグラムである。
【図２】本発明の一実施形態による例示用の障害処理方法のブロックダイアグラムである。
【図３Ａ】本発明の一実施形態による例示用の全ノード読取り−書戻し一貫性維持プロセスのブロックダイアグラムである。
【図３Ｂ】本発明の一実施形態による例示用の初期接続問合せ一貫性維持プロセスのブロックダイアグラムである。
【図４Ａ】本発明の一実施形態による例示用の切離し判定プロセスのブロックダイアグラムである。
【図４Ｂ】本発明の一実施形態による例示用の媒体エラー切離し構成プロセスのブロックダイアグラムである。
【図４Ｃ】本発明の一実施形態による例示用の接続エラー切離し構成判定プロセスのブロックダイアグラムである。
【図４Ｄ】本発明の一実施形態による例示用の切離しシナリオプロセスのブロックダイアグラムである。
【図５】本発明の一実施形態による例示用の接続エラー切離し構成プロセスのフローチャートである。
【図６】本発明の一実施形態による例示用のデータストレージシステムのブロックダイアグラムである。
【図７】本発明の一実施形態による一貫性の喪失を解消した後の例示用のデータストレージシステムのブロックダイアグラムである。
【図８】本発明の一実施形態による例示用の障害修復モジュールのブロックダイアグラムである。
【図９】本発明の一実施形態による例示用のネットワークアーキテクチャのブロックダイアグラムである。
【図１０】本発明の一実施形態に従って本方法を実装するのに適した例示用のコンピュータシステムのブロックダイアグラムを示す。
【発明を実施するための形態】
【００１０】
以下、その例が添付の図面に示されている好適な実施形態を詳細に参照することとする。本発明については、好適な実施形態との関連において説明するが、これらの実施形態は、本発明をこれらの実施形態に限定することを意図したものではないことを理解されたい。むしろ、本発明は、添付の請求項によって規定される精神及び範囲に含まれる代替肢、変更、及び均等物を含むものと解釈されたい。更には、以下の詳細な説明においては、十分な理解を提供するために、多数の特定の詳細事項について記述している。但し、当業者には、これらの特定の詳細事項を伴うことなしに、本発明を実施してもよいことが明らかとなろう。その他の状況においては、本発明の態様を不必要に曖昧にすることのないように、周知の方法、手順、コンポーネント、及び回路に関する詳細な説明は省略している。
【００１１】
この新しいシステム及び方法は、効率的且つ効果的な情報ストレージ管理及び障害処理を円滑に実行する。本システム及び方法は、データストレージリソースに対するＩ／Ｏエラーの影響の効果的な管理を円滑に実行し、且つ、既存のインフラストラクチャを補完することができる。例えば、本システム及び方法は、局所的なストレージ接続の問題を取り扱う際に、不適切な切離しが低減された状態において、ミラーリソースの安定した維持を円滑に実行することができる。一実施形態においては、切離し判定プロセスは、適切な切離しシナリオを伴っており、この場合に、適切な切離しシナリオは、接続エラーがすべてのミラーに関連する場合に、いずれのミラーをも切り離さないステップを含む。この新しいシステム及び方法は、ミラー間における一貫性及び同期を促進しつつ、１つ又は複数のノードからの完全なストレージ接続の喪失と関連したミラーの切離しの回避の改善を含む。この新しい方法は、完全な局所的接続障害の際に、最後のものを除くすべてのミラーを切り離すことにより、不必要な切離しが、影響を受けたノードに対してなんらの利益をも提供しない以前のシナリオを処理するための代替方法を含む。
【００１２】
一実施形態においては、本システム及び方法は、クラスタ環境において実装される。本システム及び方法は、共有ストレージクラスタ内の影響を受けたノードからＩ／Ｏの障害を返すことにより、その他のミラーに対するアクセスを有するノードからの障害が発生したＩ／Ｏの回復を円滑に実行することができる。本システム及び方法は、共有ストレージクラスタ内の装置のミラーに影響を与える局所的障害の処理の改善を円滑に実行することができる。共有ストレージクラスタ管理（例えば、ＣＦＳ／ＤＶＭ等）は、市場において非常に重要であり、且つ、システムが益々多くの数のノードをＣＦＳ／ＣＶＭクラスタ内においてサポートし始めるのに伴って、益々重要になっている。ミラーの冗長性は、多くの共有ストレージクラスタの主要な側面であり、且つ、ミラーリソースの不必要な切離しの回避と一貫性及び同期の維持は、クラスタ管理において有用である。この新しい方法は、ＲＡＩＤ１構成又はＲＡＩＤ１のその他の組合せを伴う構成を有する装置に対して適用することができることを理解されたい。
【００１３】
図１Ａは、本発明の一実施形態による例示用のデータストレージシステム１００のブロックダイアグラムである。データストレージシステム１００は、ストレージリソース１０１と、ストレージ接続コンポーネント１５５と、クラスタ１７０と、を含む。ストレージリソース１０１は、ミラー情報を保存するディスク１１２、１１３、１１４、１１５、及び１１７を含む。ミラー情報１２０は、ディスク１１２上に保存されたデータ１２２、１２３、及び１２４を含む。ミラー情報１３０は、ディスク１１３上に保存されたデータ１３２、１３３、及び１３４を含む。ミラー情報１４０は、ディスク１１４上に保存されたデータ１４２、１４３、及び１４４を含む。ミラー情報１５０は、ディスク１１５上に保存されたデータ１５２及び１５３と、ディスク１１７上に保存されたデータ１５４と、を含む。クラスタ１７０は、ノード１７１、１７２、１７３、及び１７４を含む。一実施形態においては、ミラーは、仮想レベルにおいて実装され、且つ、ミラーボリュームは、複数のノードに跨って（例えば、共有クラスタ内又はクラスタ１７０内等において）共有されている。
【００１４】
例示用のデータストレージシステム１００のコンポーネントは、協働し、データ情報の効率的且つ便利な保存を円滑に実行する。ディスク１１２、１１３、１１４、１１５、及び１１７は、情報を保存する。一実施形態においては、情報は、ミラー構成において保存されている。例示用の一実装形態においては、１つのミラー上に保存された情報は、その他のミラー上において複製又は「ミラーリング」されている。例示用の一実装形態においては、ミラー情報１２０は、個々の情報１３０、１４０、及び１５０と同一である。ストレージ接続コンポーネント１５５は、ノードクラスタ１７０とストレージリソース１０１の間の接続を提供している。一実施形態においては、ストレージ接続コンポーネント１５５は、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｒａｙ  Ｎｅｔｗｏｒｋ）スイッチを含む。ノード１７１、１７２、１７３、及び１７４は、ホストとして動作する。
【００１５】
本システム及び方法は、様々な構成又は編成における実装のために容易に構成可能であることを理解されたい。ミラーは、複数のディスク上のリソースを利用することができる。例えば、ミラー情報１５０は、ディスク１１５及び１１７上のストレージリソースを利用することができる。又、ディスクリソースは、複数のミラーによって利用することもできることを理解されたい。一実施形態においては、ディスク上のストレージリソースのブロックを１つのミラーに割り当てることが可能であり、且つ、同一ディスク上のストレージリソースのその他のブロックを別のミラーに割り当てることもできる。
【００１６】
例示用の一実装形態においては、情報（例えば、ミラー情報１３０）がアプリケーションから第１ミラーに書き込まれており、且つ、その他のミラーのうちの１つが、対応する情報（例えば、ミラー情報１４０）を（例えば、接続の喪失等に起因して）保存することができない場合に、データストレージシステム１００は、障害又はＩ／Ｏエラーの処理又は調節を開始する。本システムは、Ｉ／Ｏエラーがストレージ媒体障害に起因するのか又は別のエラー（例えば、接続の喪失等）の結果であるのかを判定する。エラーが、ストレージ媒体障害と関連していない場合には、本システムは、いずれのミラーがＩ／Ｏエラーに関連するのかをチェックする。１つ又は複数のミラーがＩ／Ｏエラーに関連する場合には、それらのミラーは、利用可能な更に別のミラーが存在している限り、切り離すことができる。但し、すべてのミラーがＩ／Ｏエラーに関連する場合には、いずれのミラーをも切り離さない。いずれのミラーをも切り離さない理由は、すべてのミラーが切り離されると、読取り又は書込みを実行するための残りのミラーが存在しなくなり、その結果、システムがアプリケーションに対応することができなくなるためである。
【００１７】
一実施形態においては、本システムは、障害処理方法を実行する。障害処理方法は、切離し判定プロセスを利用する。一実施形態においては、切離し判定プロセスは、すべてのノードによる読取り−書戻しプロセスを含み、且つ、切離しは、読取り−書戻しプロセスの結果に基づいている。一代替実施形態においては、切離し判定プロセスは、接続状態問合せを含み、且つ、切離しは、接続状態問合せの結果に基づいている。又、接続状態問合せ結果は、読取り−書戻しプロセスのための指定の単一のノードを選択するためにも利用される。いずれのシナリオにおいても、読取り−書戻しプロセスを利用し、一貫性又は同期の修復を円滑に実行する。例えば、読取り−書戻し動作を利用し、それぞれ、ブロック１２２、１２３、及び１２４のコンテンツが、ブロック１３２、１３３、及び１３４、ブロック１４２、１４３、及び１４４、並びに、ブロック１５２、１５３、及び１５４上においてミラーリングされることを保証する。障害処理方法とミラーの同期化の例に関する更なる情報は、以下の節において提供される。
【００１８】
様々な発生可能な障害又はエラーのシナリオが存在することを理解されたい。図１Ｂは、本発明の一実施形態によるストレージ接続コンポーネント１５５とストレージリソース１０１の間にクラスタグローバル障害１９１を有する例示用のデータストレージシステム１００のブロックダイアグラムである。図１Ｂのシナリオには、１つ又は複数のノードがすべてのミラーに対する接続を喪失するステップが伴っている。接続エラーがすべてのミラーに関連しているため、いずれのミラーをも切り離さない。
【００１９】
図１Ｃは、本発明の一実施形態によるマスタローカル障害１９２及びスレーブローカル障害１９３を有する例示用のデータストレージシステム１００のブロックダイアグラムである。マスタローカル障害１９２は、マスタノード１７１とストレージリソース１０１内のすべてのディスクの間にエラー又は障害を生成し、且つ、従って、ストレージ１０１内のすべてのミラーに対してエラーを生成する。スレーブローカル障害１９３は、スレーブノード１９３とストレージリソース１０１内のすべてのディスクの間にエラーを生成し、且つ、従って、ストレージ１０１内のすべてのミラーに対してエラーを生成する。これらのシナリオにおいては、いずれのミラーをも切り離さない。
【００２０】
一実施形態においては、ロールを第１ノードから第２ノードに転送することが可能であり、この場合に、第１ノードは、ストレージアクセスの喪失の影響を受けており、且つ、第２ノードは、十分なストレージアクセスを有する。例示用の一実装形態においては、マスタノード１７１が、マスタローカル障害１９２に遭遇し、且つ、接続を喪失した際に、マスタのロールを、ストレージリソース１０１に対する十分なストレージアクセスを依然として有するノード１７２に転送することができる。マスタのロールを転送した後には、ノード１７２がマスタとなり、且つ、ノード１７１は、スレーブとなることになろう。一実施形態においては、ロールの転送又は割当は、様々な測定基準に基づいたものであってよい。測定基準は、関連するノードの特性と、ストレージに対するそれらのノードのアクセスと、に関係したものであってもよい。例示用の一実装形態においては、転送は、ストレージに対する最大アクセスを有するノードに基づいている。接続特性は、重み付けされた考慮事項又は接続測定基準に基づいたものであってもよい。
【００２１】
図１Ｄは、本発明の一実施形態によるグローバル部分障害２９５及びローカル部分障害２９５を有する例示用のデータストレージシステム２００のブロックダイアグラムである。データストレージシステム２００は、データストレージアレイ２０１と、データストレージアレイ２０２と、ストレージ接続コンポーネント２５５と、ストレージ接続コンポーネント２５７と、クラスタ２７０と、を含む。ストレージアレイ２０１は、ディスク２１２及び２１３を含む。ストレージアレイ２０２は、ディスク２１４、２１５、及び２７７を含む。ディスクは、ミラー情報を保存する。ミラー情報２２０は、ディスク２１２上に保存されたデータ２２２、２２３、及び２２４を含む。ミラー情報２３０は、ディスク２１３上に保存されたデータ２３２、２３３、及び２３４を含む。ミラー情報２４０は、ディスク２１４上に保存されたデータ２４２、２４３、及び２４４を含む。ミラー情報２５０は、ディスク２１５上に保存されたデータ２５２及び２５３と、ディスク２１７上に保存されたデータ２５４と、を含む。クラスタ２７０は、ノード２７１、２７２、２７３、及び２７４を含む。一実施形態においては、ミラーは、仮想レベルにおいて実装され、且つ、ミラーボリュームは、複数のノードに跨って（例えば、共有クラスタ内又はクラスタ２７０内等において）共有されている。グローバル部分障害２９４は、すべてのディスクにエラー又は障害を生成するものではないが、すべてのノードがこれらのエラーを経験するため、これらのエラーは、グローバルであると見なされる。例えば、グローバル部分障害２９４は、ストレージアレイ２０１上のディスクとクラスタ２７０内のすべてのノードの間に障害を生成するが、ストレージアレイ２０２上のディスクとクラスタ２７０内のノードの間の障害は、生成しない。ローカル部分障害２９５は、すべてのディスクにエラー又は障害を生成するわけではない。例えば、ローカル部分障害２９５は、ノード２７４とストレージアレイ２０２の間の障害を生成するが、ストレージアレイ２０１上のディスクとノード２７４の間の障害は、生成しない。
【００２２】
一実施形態においては、エラーに関連するミラーのサブセットを切り離している。例えば、ノード２７１上のＩ／Ｏは、ストレージノード２０２との関係においては、エラーに遭遇しないが、ストレージアレイ２０１との関係においてエラーに遭遇することになり、従って、ストレージアレイ２０１と関連するミラーのサブセットを切り離すことになるが、ストレージアレイ２０２と関連するミラーのサブセットは、切り離すことにはならないであろう。但し、ノード２７４上のＩ／Ｏと関連するエラーは、切離しをトリガすることにはならず、その理由は、ノード２７４がすべてのミラーに対する接続を喪失するためであり、且つ、従って、いずれのミラーをも切り離さない。例えば、ノード２７４は、グローバル部分障害２９４に起因してストレージアレイ２０１に対する接続を喪失し、且つ、ローカル部分障害２９５に起因してストレージアレイ２０２に対する接続を喪失する。
【００２３】
図１Ｅは、本発明の一実施形態によるクラスタグローバル障害１９７を有する例示用のデータストレージシステム１００のブロックダイアグラムである。一実施形態においては、クラスタグローバル障害１９７は、ディスク１１２上の媒体障害の結果である。クラスタグローバル障害１９７は、ディスク１１２とすべてのノードの間にエラー又は障害を生成する。一実施形態においては、媒体エラーが発生した場合に、ミラー切離しプロセスは終了する。代替実施形態においては、媒体エラーが発生した際に、ミラー切離しプロセスは、媒体エラーに遭遇したミラーの組（例えば、すべてのミラー又はミラーのサブセット等）に基づいて継続する。例示用の一実装形態においては、すべてのミラーが媒体エラーに遭遇した場合には、１つを除いてすべてのミラーが切り離され、且つ、ミラーのサブセットが媒体エラーに遭遇した場合には、ミラーのサブセットが切り離される。
【００２４】
図２は、本発明の一実施形態による障害処理方法２８０のブロックダイアグラムである。一実施形態においては、障害処理方法２８０は、ローカルストレージ接続問題を処理する際に、ミラーの同期を修復しつつ、不適切な切離しが低減された状態において、ミラーリソースの維持を円滑に実行する。障害処理方法２８０は、共有されたストレージクラスタ内における装置のミラーに影響を与えるローカル障害の改善された処理を円滑に実行することができる。
【００２５】
ブロック２８１において、エラータイプ検出プロセスを実行している。一実施形態においては、エラータイプ検出プロセスを実行するステップは、エラーが媒体エラーであるのか又は接続エラーであるのかを判定するステップを含む。エラー通知（例えば、入出力（Ｉ／Ｏ）エラー通知等）を受信する。Ｉ／Ｏエラー通知は、試みたアプリケーション書込みの際の接続の喪失に応答したものであってよい。Ｉ／Ｏエラーが媒体障害に起因しているかどうかのチェックを実行する。一実施形態においては、Ｉ／Ｏエラーが媒体エラーであるかどうかを判定するステップは、Ｉ／Ｏ状態をチェックするステップを含む。例示用の一実装形態においては、エラーがすべてのミラー又はミラーのサブセットに関連するかどうかと、そのエラーがミラーのすべてに関連する場合に、ミラーのいずれかが媒体エラーに遭遇しているかどうかと、に関する分析を実行している。エラーコードをチェックすることにより、媒体エラーが関係するかどうかを判定することができる。一実施形態においては、エラーが媒体障害に起因したものである場合には、Ｉ／Ｏ障害をアプリケーションに返し、且つ、切離しプロセスを終了する。一代替実施形態においては、エラーが媒体エラーであることを結果が示した場合には、プロセスは、切離し判定ブロック２８４に進む。エラーが接続エラーであることを結果が示した場合には、プロセスは、切離し判定ブロック２８４の前に、一貫性維持ブロック２８２に進む。
【００２６】
ブロック２８２においては、一貫性維持プロセスを実行する。書込み動作によってミラー間の一貫性が喪失している可能性があるため、一貫性維持プロセスを実行する。読取り−書戻し動作を利用し、ミラーを同期させることができる。第１実施形態においては、全ノード読取り−書戻し一貫性維持プロセスを利用している。第２実施形態においては、初期接続問合せ一貫性維持プロセスを利用している。第１実施形態においては、すべてのノードが読取り−書戻し動作を実行し、且つ、第２実施形態においては、初期接続問合せに基づいて選択された専用のノードが読取り−書戻し動作を実行している。以下の節には、一貫性維持プロセスの更なる説明が含まれている。全ノード読取り−書戻し一貫性維持プロセスの成功及び失敗の結果に基づいた又は初期接続問合せ一貫性維持プロセスの接続通知の結果に基づいた接続の通知は、切り離すミラーを判定する際に利用するべく、転送される。
【００２７】
ブロック２８４において、切離し判定プロセスを実行して適切な切離しシナリオを確立する。一実施形態においては、切離し判定プロセスは、媒体エラーに遭遇するミラーに基づいた媒体エラー切離し構成プロセスを含むことができる。一実施形態においては、切離し判定プロセスは、接続エラーとのミラーの関連に基づいた接続エラー切離し構成プロセスを含むことができる。一実施形態においては、接続エラーとのミラーの関連を判定するステップは、ブロック２８２において実行される一貫性維持プロセスの結果に基づいている。接続エラーとのミラーの関連の通知に応じて、様々な適切な切離しシナリオが存在することを理解されたい。適切な切離しシナリオは、接続エラーがミラーのすべてに関連する場合にいずれのミラーをも切り離さないステップ、接続エラーに関連するミラーのサブセットを切り離すステップ、利用可能な少なくともある程度のミラーの冗長性が依然として存在する場合に接続エラーに関連するミラーを切り離すステップなどを含むことができる。切離し判定プロセス及び適切な切離しシナリオの更なる説明については、以下の節において記述する。
【００２８】
ブロック２８５において、障害を有するアプリケーション書込みを返す。例示用の一実装形態においては、アプリケーションは、切離し及び一貫性の修復の後に、この障害を処理することが可能であり、その理由は、アプリケーションが、Ｉ／Ｏの全体が書き込まれることを、Ｉ／Ｏの一部分が書き込まれることを、或いは、Ｉ／Ｏのいずれもが書き込まれないことを予想しており、且つ、これらのシナリオに対応することができるためである。
【００２９】
図３Ａは、本発明の一実施形態による例示用の全ノード読取り−書戻し一貫性維持プロセス３００Ａのブロックダイアグラムである。一実施形態においては、全ノード読取り−書戻し一貫性維持プロセス３００Ａの結果は、ミラーの一貫性の維持を円滑に実行することに加えて、適切な切離しシナリオの通知をも提供している。
【００３０】
ブロック３２０Ａにおいて、ミラーの一貫性の喪失を修復するために、メッセージをクラスタ内のその他のノードに送信する。一実施形態においては、開始又は制御ノードは、ミラーの一貫性の喪失を修復するためのメッセージをクラスタ内のその他のすべてのノードに送信している。又、制御又は開始ノードは、メッセージ内において、影響を受ける装置のアドレス範囲と、一貫性の喪失を修復するために使用するべきミラーと、をも規定している。規定のミラーは、様々な方法によって（例えば、接続問合せの結果に基づいてランダムに等）選択することができることを理解されたい。
【００３１】
ブロック３３０Ａにおいて、クラスタ内のその他ノードが規定のアドレス範囲において規定のミラーから読み取ると共にその他のミラーに書き込むことによってミラーの一貫性の喪失の修復を試みる読取り−書戻しプロセスを実行する。一実施形態においては、読取り−書戻し動作の結果は、動作結果の通知（例えば、失敗や成功等）と共に、開始又は制御ノードに返される。すべてのノードが失敗を報告した場合には、読み取るべき別の指定されたミラーを使用することにより、読取り−書戻しプロトコルを再実行することができる。例えば、読取り−書戻しプロセスは、第１の規定のミラーを利用した読取り−書戻しプロセスに対する失敗の応答が存在している場合には、第２の規定のミラーを利用することにより、反復される。第２ミラーは、様々なメカニズムに従って（例えば、接続問合せ結果に基づいてランダムに等）選択することができる。
【００３２】
ブロック３４０Ａにおいて、修復動作の際に観察された任意の障害と共に、修復動作の結果を制御又は開始ノードに返送する。一実施形態においては、制御又は開始ノードは、これらの結果を利用して接続エラーに関連するミラーを判定している。一実施形態においては、例示用の全ノード読取り−書戻し一貫性維持プロセス３００Ａの結果は、切離し判定プロセス（例えば、ブロック２８４に類似したもの等）において利用することができる。一実施形態においては、切離し判定プロセスは、全ノード読取り−書戻し一貫性維持プロセス結果を利用し、エラーとのミラーの関連を判定している。以下の節には、切離し判定プロセスの更なる詳細な説明が含まれている。
【００３３】
図３Ｂは、本発明の一実施形態による初期接続問合せ一貫性維持プロセス３００Ｂのブロックダイアグラムである。一実施形態においては、初期接続問合せ一貫性維持プロセス３００Ｂの結果は、ミラーの一貫性の維持を円滑に実行することに加えて、適切な切離しシナリオの通知をも提供している。
【００３４】
ブロック３２０Ｂにおいて、接続問合せプロセスを実行する。例示用の一実装形態においては、接続問合せプロセスは、クラスタ内のミラーに対する接続を報告するように制御又は開始ノードがその他のノードに対して要求するステップを含む。例示用の一実装形態においては、接続状態問合せは、ＳＣＳＩ接続問合せを含む。例えば、制御又は開始ノードは、通信状態にある装置のそれぞれごとにＳＣＳＩ問合せを実行することができる。
【００３５】
ブロック３３０Ｂにおいて、ミラーの一貫性の喪失を修復するために、メッセージをクラスタ内の指定されたノードに対して送信する。指定のノードの選択は、ブロック３２０Ａにおける接続問合せプロセスの結果に基づいている。一実施形態においては、開始又は制御ノードは、このミラーの一貫性の喪失を修復するためのメッセージを指定のノードに対して送信している。又、制御又は開始ノードは、メッセージ内において、影響を受ける装置のアドレス範囲と、一貫性の喪失を修復するために使用するべきミラーと、をも規定している。規定のミラーは、様々な方法で（例えば、接続問合せの結果に基づいてランダムに等）選択することができることを理解されたい。
【００３６】
ブロック３４０Ｂにおいて、指定されたノードは、規定のアドレス範囲において規定のミラーから読み取ると共にその他のミラーに書き込むことにより、読取り−書戻しプロセスを実行し、ミラーの一貫性の喪失を修復する。ミラーの一貫性の修復は、接続状態問合せによって判定された単一の指定されたノードによる読取り−書戻しに基づいたものであってもよい。例示用の一実装形態においては、修復動作の結果は、修復動作の際に観察される障害と共に、制御又は開始ノードに返送されている。修復動作結果の転送は、指定されたノードが一貫性の喪失を修復する能力を有していたことの確認として機能することができる。指定されたノードが失敗を報告した場合には、読み取るべき別の指定のノード又はミラーを使用することにより、読取り−書戻しプロトコルを再実行することができる。例えば、読取り−書戻しプロセスは、第１の規定のノードを利用した読取り−書戻しプロセスに対する失敗の応答が存在している場合には、第２の規定のノードを使用することによって反復される。
【００３７】
図４Ａは、本発明の一実施形態による切離し判定プロセス４００のブロックダイアグラムである。一実施形態においては、切離し判定プロセス４００は、ブロック２８４の切離し判定プロセスに類似している。
【００３８】
ブロック４０１において、エラータイプ通知を受信する。一実施形態においては、エラータイプ通知は、エラー検出プロセス（例えば、ブロック２８１のエラー検出プロセス等）から受信される。例示用の一実装形態においては、エラーがすべてのミラーに関連する場合には、ミラーのいずれかが媒体エラーに遭遇したかに関する判定を実行している。エラーが媒体エラーである場合には、プロセスは、ブロック４０２に進み、且つ、エラーが接続エラーである場合には、プロセスは、ブロック４０３に進む。
【００３９】
ブロック４０２において、媒体エラーに遭遇したミラーに基づいて媒体エラー切離し構成プロセスを実行する。媒体エラー又は障害切離し構成プロセスは、ブロック２８４における切離し判定プロセスの一部として実行することができる。図４Ｂは、本発明の一実施形態による例示用の媒体エラー切離し構成プロセス４２０のブロックダイアグラムである。ブロック４２１において、媒体エラーに関連するミラーを判定する。一実施形態においては、媒体エラーに関連するミラーは、Ｉ／Ｏ状態（例えば、エラーコード等）のチェックに基づいて判定することができる。ブロック４２２において、すべてのミラーが媒体エラーに遭遇している場合に、１つを除いたすべてのミラーを切り離す。ブロック４２３において、ミラーのサブセットが媒体エラーに遭遇している場合に、そのサブセット内のミラーを切り離す。
【００４０】
図４Ａを再度参照すれば、ブロック４０３において、接続エラー切離し構成判定プロセスを実行する。一実施形態においては、接続エラー切離し構成判定プロセスは、切り離すミラーを判定している。後続の節には、接続エラー切離し構成判定プロセスの更なる説明が含まれている。
【００４１】
図４Ｃは、本発明による例示用の接続エラー切離し構成判定プロセス４３０のブロックダイアグラムである。一実施形態においては、接続エラー切離し構成プロセス４３０は、ブロック４０３において利用されている構成エラー切離し判定に類似している。
【００４２】
ブロック４３１において、一貫性維持結果情報を受信する。全ノード読取り−書戻し一貫性維持プロセスと初期接続問合せ一貫性維持プロセスの両方の結果から、接続エラーとのミラーの関連の通知がもたらされる。一実施形態においては、一貫性維持結果は、ブロック２８２における一貫性維持動作と関連した結果情報を含んでいる。
【００４３】
ブロック４３２において、接続エラーミラー関連プロセスを実行する。このミラーエラー関連プロセスは、接続エラーとのミラーの関連を通知する。一実施形態においては、接続エラーミラー関連プロセスは、エラーがミラーのサブセット又はすべてと関連するかどうかを含むいずれのミラーがエラーに関連しているのかを分析するステップを含む。全ノード読取り−書戻し一貫性維持プロセス（例えば、３００Ａ等）に基づいた例示用の一実装形態においては、いずれのノード読取り−書戻し動作が成功であり、且つ、いずれが失敗であったのかに関する結果通知を分析し、一貫性エラーとのミラーの関連を判定している。初期接続問合せ一貫性維持プロセス（例えば、３００Ｂ等）に基づいた例示用の一代替実施形態においては、接続問合せに基づいたいずれのノードが接続問題を有しているのかに関する結果通知を分析し、接続エラーとのミラーの関連を判定している。
【００４４】
ブロック４３３において、ブロック４３２の接続エラーミラー関連プロセスの結果に基づいて、切離しシナリオプロセスを実行する。切離しシナリオプロセスは、（例えば、接続エラーの結果として等）、いずれのミラーを切り離し、且つ、いずれのミラーを切り離さないのかを判定する。一実施形態においては、切離しシナリオプロセスは、切離しのためにミラーを効率的且つ効果的に選択している。
【００４５】
図４Ｄは、本発明の一実施形態による例示用の切離しシナリオプロセス４９０のブロックダイアグラムである。ブロック４９１において、すべてのミラーが接続エラーに関連している場合には、いずれのミラーをも切り離さない。ブロック４９２において、ミラーのサブセットがすべてのノードとの関係において接続エラーに関連する場合には、そのミラーのサブセットを切り離す。ブロック４９３において、１つを除くすべてのミラーからなる特別なサブセットを切り離す。例示用の一実装形態においては、ミラーの接続エラーがすべてのノードに対して影響を及ぼす場合には、そのミラーは、１つのミラーが残っている限り、切り離される。ブロック４９４において、ミラーが大部分のノードとの関係において接続エラーと関連する場合に、そのミラーを切り離す。例示用の一実装形態においては、重み付けされた平均値を利用しており、この場合に、異なる重みが異なるノードに対して割り当てられる。
【００４６】
図５は、本発明による一実施形態による例示用の接続エラー切離し構成プロセス５００のフローチャートである。接続エラー切離し構成プロセス５００は、全ノード読取り−書戻し結果に基づいて接続エラーとのミラーの関連の通知を判定する。一実施形態においては、制御又は開始ノードは、すべてのその他のノードからの読取り−書戻し動作（例えば、ブロック３３０Ａに類似したもの等）の応答を待ち、且つ、それらの応答に基づいて更なる動作を実行する。適切な動作を実行した後に、（例えば、上述のブロック３１３において記述されているように）障害を有するアプリケーション書込みを返すことができる。
【００４７】
ブロック５１０において、少なくとも１つのノードが成功を返した場合には、いずれのミラーをも切り離さない。ブロック５２０において、すべてのノードがミラーのサブセットについてエラーを返した場合には、そのサブセットのミラーを切り離す。ブロック５３０において、すべてのノードが失敗を報告した場合には、読み取るべき別のミラーを使用することにより、読取り−書戻しプロトコルを再実行する。例えば、すべてのノードが第１の規定のノードを利用した読取り−書戻しプロセスの失敗を報告した場合には、読取り−書戻しプロセスは、読み取るべき第２の規定のミラーを利用することによって反復される。第２の規定のミラーは、（例えば、接続問合せ結果に基づいてランダムに等）残りのミラーから選択することができる。ブロック５４０において、ミラーがノードのいずれにもアクセス可能ではないと読取り−書戻し結果が通知した場合には、そのミラーを切り離すことができる。ブロック５５０において、アクセス可能なミラーのばらばらの組をノードが有する場合には、アクセス可能ではないミラーの組を切り離すこともできる。一実施形態においては、単純多数を利用している。例えば、５つのノードのうちの３つがミラーにアクセスすることができない場合には、そのミラーを切り離すことができる。例示用の一実装形態においては、重み付けされた平均値を利用しており、この場合に、異なる重みが異なるノードに対して割り当てられる。
【００４８】
図６は、本発明の一実施形態による例示用のデータストレージシステム６００のブロックダイアグラムである。データストレージシステム６５０は、アプリケーション６１０と、ミラー６２０と、ミラー６３０と、ミラー６４０と、を含む。ミラー６２０、ミラー６３０、及びミラー６４０は、通信可能な状態で結合されている。例示用のデータストレージシステム６５０のコンポーネントは、協働し、アプリケーション６１０からのデータ情報の効率的且つ便利な保存を円滑に実行する。一実施形態においては、１つのミラー上に保存された情報をその他のミラー上において複製又は「ミラーリング」している。本システム及び方法は、様々な構成又は編成における実装のために容易に構成可能であることを理解されたい。
【００４９】
例示用の一実装形態においては、情報は、アプリケーション６１０からミラー６２０に書き込まれている。例えば、コンテンツ「ＡＡＡＡ」がブロック６２２に書き込まれ、コンテンツ「ＢＢＢＢ」がブロック６２３に書き込まれ、且つ、コンテンツ「ＣＣＣＣ」がブロック６２４に書き込まれる。その他のミラーは、対応する情報を保存することができない。例えば、コンテンツ「ＡＡＡＡ」が、ブロック６３２に書き込まれ、コンテンツ「ＢＢＢＢ」が、ブロック６３３に書き込まれるが、コンテンツ「ＣＣＣＣ」は、ブロック６３４に書き込まれない。コンテンツ「ＡＡＡＡ」は、ブロック６４２に書き込まれるが、コンテンツ「ＢＢＢＢ」は、ブロック６４３に書き込まれず、且つ、コンテンツ「ＣＣＣＣ」も、ブロック６４４に書き込まれない。
【００５０】
データストレージシステム６５０は、障害又はＩ／Ｏエラーの処理及び調節を開始する。一実施形態においては、このシステムは、障害処理方法（例えば、障害処理方法２８０に類似したもの）を実行している。切離し判定プロセス（例えば、４００Ａや４００Ｂなどに類似したもの等）を実行する。例示用の一実装形態においては、切離し判定プロセスは、接続エラーがミラーのすべてに関連することを通知し、従って、いずれのミラーをも切り離さない。例示用の一実装形態においては、切離し判定プロセスは、接続エラーがミラーのサブセットに関連することを通知し、従って、そのミラーのサブセットを切り離す。一貫性及び同期の修復を実行する。例示用の一実装形態においては、読取り−書戻し動作を利用している。
【００５１】
図７は、本発明の一実施形態による一貫性及び同期の修復後の例示用のデータストレージシステム６５０のブロックダイアグラムである。イニシエータがミラー６３０と同期するようにミラーに対して命令する。例えば、ミラー６２０上において、コンテンツ「ＡＡＡＡ」がブロック６２２に書き込まれ、コンテンツ「ＢＢＢＢ」がブロック６２３に書き込まれ、且つ、コンテンツ「００００」がブロック６２４に書き込まれる。ミラー６３０上において、コンテンツ「ＡＡＡＡ」がブロック６３２に書き込まれ、コンテンツ「ＢＢＢＢ」がブロック６３３に書き込まれ、且つ、コンテンツ「００００」がブロック６３４に書き込まれる。ミラー６４０においては、コンテンツ「ＡＡＡＡ」がブロック６４２に書き込まれ、コンテンツ「ＢＢＢＢ」がブロック６４３に書き込まれ、且つ、コンテンツ「００００」がブロック６４４に書き込まれる。
【００５２】
図８は、保存方法（例えば、障害処理方法２８０等）を実行する際にプロセッサを制御するための命令を含む障害処理モジュール８００のブロックダイアグラムである。障害処理モジュール８００は、エラー検出モジュール８１０と、一貫性維持モジュール８１５と、エラー一貫性喪失修復モジュール８２０と、報告モジュール８３０と、を含む。エラー検出モジュール８１０は、エラーの検出を実行するための命令を含む。一実施形態においては、エラー検出モジュール８１０は、ブロック２８１に示されているようにエラーの検出を実行するための命令を含む。一貫性維持モジュール８１５は、ミラーの一貫性を維持するプロセスを実行するための命令を含む。一実施形態においては、一貫性維持モジュール８１５は、ブロック２８２においてミラーの一貫性の維持を実行するための命令を含む。切離し判定モジュール８２０は、適切な切離しシナリオを確立するためのプロセスを実行するための命令を含んでおり、この場合に、適切な切離しシナリオは、接続エラーがすべてのミラーに関連する場合にいずれのミラーをも切り離さないステップを含む。一実施形態においては、切離し判定モジュール８２０は、ブロック２８４において切離し判定を実行するための命令を含む。報告モジュール８３０は、書込み障害を報告するための命令を含む。一実施形態においては、報告モジュール８３０は、ブロック２８５に示されているように障害を報告するための命令を含む。
【００５３】
一実施形態においては、保存方法（例えば、障害処理方法２８０等）をネットワーク上において実装することができる。図９は、ネットワークアーキテクチャ１８００を示すブロックダイアグラムであり、この場合には、クライアントシステム１８１０、１８２０、及び１８３０と、ストレージサーバー１８４０Ａ及び１８４０Ｂ（これらは、いずれも、コンピュータシステム１１１０を使用して実装することができる）と、がネットワーク１８５０に結合されている。更に、ストレージサーバー１８４０Ａは、直接的に装着されたストレージ装置１８６０Ａ（１）〜１８６０Ａ（Ｎ）を有するものとして示されており、且つ、ストレージサーバー１８４０Ｂも、直接的に装着されたストレージ装置１８６０Ｂ（１）〜１８６０Ｂ（Ｎ）を有するものとして示されている。又、ストレージサーバー１８４０Ａ及び１８４０Ｂは、ＳＡＮファブリック１８７０にも接続されているが、ストレージエリアネットワークに対する接続は、本開示の動作のために必須ではない。ＳＡＮファブリック１８７０は、ストレージサーバー１８４０Ａ及び１８４０Ｂによる、且つ、従って、ネットワーク１８５０を介したクライアントシステム１８１０、１８２０、及び１８３０による、ストレージ装置１８８０（１）〜１８８０（Ｎ）に対するアクセスをサポートしている。又、インテリジェントストレージアレイ１８９０は、ＳＡＮファブリック１８７０を介してアクセス可能な特定のストレージ装置の一例として示されている。一実施形態においては、サーバー１８４０Ａは、障害処理モジュール１８９９を含む。一実施形態においては、障害処理モジュール１８９９は、障害処理モジュール８００に類似している。本システム及び方法は、様々な実装形態に適合していることを理解されたい。例えば、関連する情報及び命令の各部分は、様々なリソース内に分散させることができる。
【００５４】
図１０は、本方法を実装するのに適した例示用のコンピュータシステム１１１０のブロックダイアグラムを示している。コンピュータシステム１１１０は、バス１１７７を含み、バス１１７７は、中央プロセッサ１１１４、システムメモリ１１１７（通常は、ＲＡＭであるが、ＲＯＭ、フラッシュＲＡＭ、又はこれらに類似したものを含んでもよい）、入出力コントローラ１１１８、オーディオ出力インターフェイス１１２２を介したスピーカシステム１１２０などの外部オーディオ装置、ディスプレイアダプタ１１２６を介した表示画面１１２４などの外部装置、シリアルポート１１２８及び１１３０、（キーボードコントローラ１１３３に接続された）キーボード１１３２、ストレージインターフェイス１１３４、フロッピーディスク１１３８を受け入れるように動作可能なフロッピーディスクドライブ１１３７、Ｆｉｂｅｒ  Ｃｈａｎｎｅｌネットワーク１１９０と接続するように動作可能なＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）インターフェイスカード１１３５Ａ、ＳＣＳＩバス１１３９に接続するように動作可能なＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）インターフェイスカード１１１３５Ｂ、及び光ディスク１１４２を受け入れるように動作可能な光ディスクドライブ１１４０などのコンピュータシステム１１１０の主要なサブシステムを相互接続している。又、（シリアルポート１１２８を介してバス１１１２に結合された）マウス１１４６又はその他のポイント及びクリック装置、（シリアルポート１１３０を介してバス１１１２に結合された）モデム１１４７、及び（バス１１１２に直接的に結合された）ネットワークインターフェイス１１４８も含まれている。
【００５５】
バス１１７７は、中央プロセッサ１１４とシステムメモリ１１１７の間のデータ通信を許容しており、システムメモリ１１１７は、上述のように、読出し専用メモリ（ＲＯＭ）又はフラッシュメモリ（いずれも図示されてはいない）と、ランダムアクセスメモリ（ＲＡＭ）（図示されてはいない）と、を含んでもよい。一実施形態においては、障害処理方法（例えば、障害処理方法２８０に類似したもの等）を実行するための命令は、コンピュータシステム１１００の１つ又は複数のメモリ内（例えば、メモリの場所１１１９内）に保存されている。ＲＡＭは、一般に、その内部にオペレーティングシステム及びアプリケーションプログラムが読み込まれるメインメモリである。一実施形態においては、ＲＡＭ１１１７は、（例えば、メモリの場所１１１９内に）障害処理モジュールを含む。一実施形態においては、メモリの場所１１１９内に保存される障害処理モジュールは、障害処理モジュール８００に類似している。ＲＯＭ又はフラッシュメモリは、その他のコードに加えて、周辺コンポーネントとのやり取りなどの基本的なハードウェア動作を制御するＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ−Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）を収容することができる。コンピュータシステム１１１０と共に存在するアプリケーションは、一般に、ハードディスクドライブ（例えば、固定ディスク１１４４）、光ドライブ（例えば、光ドライブ１１４０）、フロッピーディスクユニット１１３７、又はその他のストレージ媒体などのコンピュータ可読媒体上に保存され、且つ、これを介してアクセスされる。更には、アプリケーションは、ネットワークモデム１１４７又はインターフェイス２４８を介してアクセスされた際にアプリケーション及びデータ通信技術に従って変調される電子信号の形態を有することもできる。
【００５６】
コンピュータシステム１１１０のその他のストレージインターフェイスと同様に、ストレージインターフェイス１１３４も、固定ディスクドライブ１１４４などの情報の保存及び／又は検索のための標準的なコンピュータ可読媒体に対して接続することができる。固定ディスクドライブ１１４４は、コンピュータシステム１１１０の一部であってもよく、或いは、別個のものであってもよく、且つ、その他のインターフェイスシステムを通じてアクセスされてもよい。モデム１１４７は、電話リンクを介してリモートサーバーに対する、或いは、ＩＳＰ（Ｉｎｔｅｒｎｅｔ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ）を介してインターネットに対する、直接的な接続を提供してもよい。ネットワークインターフェイス１１４８は、ＰＯＰ（Ｐｏｉｎｔ  Ｏｆ  Ｐｒｅｓｅｎｃｅ）を介したインターネットに対する直接的なリンクを介してリモードサーバーに対する直接的な接続を提供してもよい。ネットワークインターフェイス１１４８は、デジタルセルラー電話接続、ＣＤＰＤ（Ｃｅｌｌｕｌａｒ  Ｄｉｇｉｔａｌ  Ｐａｃｋｅｔ  Ｄａｔａ）接続、デジタル衛星データ接続、又はこれらに類似したものを含む無線技法を使用することにより、このような接続を提供してもよい。
【００５７】
多くのその他の装置又はサブシステム（図示されてはいない）を類似の方式によって接続してもよい（例えば、文書スキャナ、デジタルカメラなど）。逆に、本開示を実施するために、図１０に示されている装置のすべてが存在する必要があるというわけではない。装置及びサブシステムは、図１０に示されているものとは異なる方法によって相互接続することもできる。本開示を実装するためのコードは、システムメモリ１１１７、固定ディスク１１４４、光ディスク１１４２、又はフロッピーディスク１１３８のうちの１つ又は複数のものなどのコンピュータ可読ストレージ媒体内に保存することができる。コンピュータシステム１１１０上に提供されるオペレーティングシステムは、ＭＳ−ＤＯＳ（登録商標）、ＭＳ−ＷＩＮＤＯＷＳ（登録商標）、ＯＳ／２（登録商標）、ＵＮＩＸ（登録商標）、Ｌｉｎｕｘ（登録商標）、又はその他の既知のオペレーティングシステムであってもよい。
【００５８】
更には、本明細書に開示されている信号との関連において、当業者は、信号は、第１ブロックから第２ブロックに直接的に送信することも可能であり、或いは、信号は、ブロック間において変更（例えば、増幅、減衰、遅延、ラッチング、バッファリング、反転、フィルタリング、又はその他の方法によって変更）することもできることを認識するであろう。上述の実施形態の信号は、ブロック間において送信されることを特徴としているが、本開示のその他の実施形態は、信号の情報的及び／又は機能的側面がブロック間において送信される限り、これらの直接的に送信される信号の代わりに、変更された信号を含んでもよい。第２ブロックにおいて入力される信号は、ある程度、関連する回路の物理的な制限に起因して第１ブロックから出力される第１信号から導出された第２信号として概念化することができる（例えば、不可避に多少の減衰及び遅延が存在することになる）。従って、本明細書において使用されている第１信号から導出された第２信号は、第１信号を、或いは、回路の制限に起因した又は第１信号の情報的且つ／又は最終的な機能的側面を変更しないその他の回路要素を通過することに起因した第１信号に対する任意の変更を、含む。
【００５９】
コンピュータシステム１１１０を参照すれば、モデム１１４７、ネットワークインターフェイス１１４８、又はなんらかのその他の方法を使用することにより、クライアントコンピュータシステム１８１０、１８２０、及び１８３０のそれぞれからのネットワーク１８５０に対する接続を提供することができる。クライアントシステム１８１０、１８２０、及び１８３０は、例えば、ウェブブラウザ又はその他のクライアントソフトウェア（図示されてはいない）を使用することにより、ストレージサーバー１８４０Ａ又は１８４０Ｂ上の情報にアクセスすることができる。このようなクライアントにより、クライアントシステム１８１０、１８２０、及び１８３０は、ストレージサーバー１８４０Ａ又は１８４０Ｂ又はストレージ装置１８６０Ａ（１）〜１８６０Ａ（Ｎ）、１８６０Ｂ（１）〜１８６０Ｂ（Ｎ）、１８８０（１）〜１８８０（Ｎ）のうちの１つ又はインテリジェントストレージアレイ１８９０によってホスティングされたデータにアクセスすることができる。尚、図９は、データを交換するためのインターネットなどのネットワークの使用を示しているが、本開示は、インターネット又は任意の特定のネットワークに基づいた環境に限定されるものではない。
【００６０】
一実施形態においては、新しいシステム及び方法の利用の検出は、以下のステップによって検出することができる。別の製品を使用することにより、マルチノード（例えば、４つのノード）の共有ストレージクラスタを生成する。次いで、ＲＡＩＤ１装置を生成し、且つ、すべてのノード上においてＩ／Ｏ負荷を起動する。１つのノードからすべてのストレージを接続解除するようにし、且つ、装置のミラー及びミラーの一貫性の状態を観察する。いずれのミラーも、切り離されたものとマーキングされず、且つ、ミラーの内容が一貫性を有している場合には、それ自体が、本システム及び方法の使用を示唆することになろう。
【００６１】
従って、本システム及び方法は、効率的且つ効果的なデータ保存及び障害又はエラー処理を円滑に実行する。本システム及び方法は、ミラーの同期を修復しつつ、不適切な切離しが低減された状態において、ミラーリソースの維持を円滑に実行することができる。これらの障害処理システム及び方法は、共有ストレージクラスタ内の装置のミラーに影響を及ぼすローカルストレージ接続問題及び障害の処理の改善を円滑に実行することができる。又、本システム及び方法は、ミラーの一貫性の喪失の解消をも円滑に実行する。
【００６２】
詳述した説明の各部分は、方法の観点において提示及び説明されている。ステップ及びそれらの順序が、本方法の動作を説明する本明細書の図面に開示されているが、それらのステップ及び順序は、例示を目的としたものである。実施形態は、様々なその他のステップ又は本明細書の図面のフローチャートに記述されているステップの変形を本明細書に図示及び記述されているもの以外の順序において実行することに非常に適している。詳述した説明のいくつかの部分は、手順、ステップ、論理ブロック、処理、及びコンピュータメモリ内において実行することができるデータビットに対する操作のその他のシンボリックな表現の観点において提示されている。これらの説明及び表現は、データ処理分野の当業者が自身の研究内容を当業者に対して最も効果的に伝達するために使用する手段である。手順、コンピュータによって実行されるステップ、論理ブロック、プロセスなどは、ここでは、且つ、一般には、望ましい結果をもたらすステップ又は命令の自己矛盾のないシーケンスであるものと考えられる。ステップは、物理量の物理的な操作を含む。通常、必須ではないが、これらの量は、コンピュータシステム内において、保存、転送、組合せ、比較、及びその他の方法によって操作される電気的信号、磁気的信号、光学的信号、又は量子信号の形態を有する。しばしば、主には、一般的な使用法を理由として、これらの信号を、ビット、値、要素、シンボル、文字、期間、数値、又はこれらに類似したものと呼称することが便利であることが証明されている。
【００６３】
但し、これらの及び類似の用語は、いずれも、適切な物理量との関連付けを要すると共に、これらの量に対して適用される便利なラベルに過ぎないことに留意されたい。以下の説明から明らかとなるように、特記されていない限り、全体を通じて、「処理」、「演算」、「算出」、「判定」、「表示」、「アクセス」、「書込み」、「包含」、「保存」、「送信」、「横断」、「関連付け」、「識別」、又はこれらに類似したものなどの用語を利用した説明は、コンピュータシステムのレジスタ及びメモリ内における物理的（電子的）な量として表されたデータを操作し、且つ、コンピュータシステムメモリ又はレジスタ又はその他のこのような情報の保存、送信、又は表示装置内における物理量として同様に表されたその他のデータに変換するコンピュータシステム又は類似の電子演算装置の動作及びプロセスを意味していることを理解されたい。
【００６４】
演算装置は、少なくともなんらかの形態のコンピュータ可読媒体を含むことができる。コンピュータ可読媒体は、演算装置がアクセスすることができる任意の利用可能な媒体であってよい。一例として、且つ、限定としてではなく、コンピュータ可読媒体は、コンピュータストレージ媒体を有してもよい。コンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、又はその他のデータなどの情報の保存のための方法又は技術によって実装された揮発性及び不揮発性の着脱自在及び非着脱自在の媒体を含む。コンピュータストレージ媒体は、限定を伴うことなしに、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、又はその他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、又はその他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、又はその他の磁気ストレージ装置、或いは、望ましい情報を保存するために使用可能であると共に演算装置がアクセスすることができる任意のその他の媒体を含む。通信媒体は、通常、搬送波又はその他の搬送メカニズムを実施し、且つ、任意の情報供給媒体を含む。一例として、且つ、限定を伴うことなしに、通信媒体は、有線ネットワーク又は直接有線接続などの有線媒体と、音響、ＲＦ、赤外線、その他の無線媒体、及び上述のもののいずれかの組合せなどの無線媒体と、を含む。
【００６５】
いくつかの実施形態は、１つ又は複数のコンピュータ又はその他の装置によって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な環境において説明されよう。一般に、プログラムモジュールは、特定のタスクを実行するか又は特定の抽象的データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。プログラムモジュールの機能は、様々な実施形態において、必要に応じて、組み合わせてもよく、或いは、分散させてもよい。
【００６６】
特定の実施形態に関する以上の説明は、例示及び説明を目的として提示したものである。これらは、本発明のすべてを網羅し、或いは、本発明を開示された形態そのままに限定することを意図したものではなく、且つ、上述の教示内容に鑑み、多数の変更及び変形が可能である。実施形態は、原理及びその実際的な用途を最良に説明することにより、想定される特定の使用法に適した様々な変更を伴って当業者が本発明及び様々な実施形態を最良に利用することができように、選択され、且つ、記述されている。範囲は、添付の請求項及びその均等物によって規定されるものと解釈されたい。
【図１Ａ】
0005922127.tif 000002
【図１Ｂ】
0005922127.tif 000003
【図１Ｃ】
0005922127.tif 000004
【図１Ｄ】
0005922127.tif 000005
【図１Ｅ】
0005922127.tif 000006
【図２】
0005922127.tif 000007
【図３Ａ】
0005922127.tif 000008
【図３Ｂ】
0005922127.tif 000009
【図４Ａ】
0005922127.tif 000010
【図４Ｂ】
0005922127.tif 000011
【図４Ｃ】
0005922127.tif 000012
【図４Ｄ】
0005922127.tif 000013
【図５】
0005922127.tif 000014
【図６】
0005922127.tif 000015
【図７】
0005922127.tif 000016
【図８】
0005922127.tif 000017
【図９】
0005922127.tif 000018
【図１０】
0005922127.tif 000019