(57)【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに対して動作可能に接続され、前記少なくとも１つのプロセッサにより実行された場合に、
マスターノードが、第１の生成識別子および第１のワークロード識別子を第１のワークロードと関連付けるステップであって、前記第１の生成識別子は、第１のワーカーノードに関連付けられた初期の優先度を示す、ステップと、
前記マスターノードが、前記第１の生成識別子、前記第１のワークロード識別子、および前記第１のワークロードを前記第１のワーカーノードに伝達するステップと、
ストレージシステムが、前記第１のワーカーノードから第１のアクセス要求を受信するステップであって、前記第１のアクセス要求が前記第１の生成識別子および前記第１のワークロード識別子と関連付けられた、ステップと、
前記第１のワーカーノードとの通信障害時に、前記マスターノードが、第２の生成識別子を生成し、前記第２の生成識別子を前記第１のワークロードと関連付け、前記第２の生成識別子、前記第１のワークロード識別子、および前記第１のワークロードを第２のワーカーノードに伝達するステップであって、前記第２の生成識別子は、前記第１の生成識別子と異なる優先度を示す、ステップと、
前記ストレージシステムが、前記第２のワーカーノードから第２のアクセス要求を受信するステップであって、前記第２のアクセス要求が前記第２の生成識別子および前記第１のワークロード識別子と関連付けられた、ステップと、
前記ストレージシステムが、前記第１の生成識別子の優先度と前記第２の生成識別子の優先度とに基づいて、前記第２のアクセス要求を許可するかを判定するステップと
を含む方法を実行する命令を含むメモリと、
を備えた、システム。
【請求項２】
前記第２の生成識別子が、前記第１の生成識別子よりも低い優先度を示す、請求項１に記載のシステム。
【請求項３】
前記マスターノードが、前記第２のワーカーノードから成功の指標を受信するステップと、
前記マスターノードが、前記第１の生成識別子よりも高い優先度を示す第３の生成識別子を生成するステップと、
前記マスターノードが、前記第３の生成識別子を前記第１のワークロードと関連付けるステップと、
前記マスターノードが、前記第３の生成識別子を前記第２のワーカーノードに伝達するステップと、
をさらに含む、請求項２に記載のシステム。
【請求項４】
前記第２の生成識別子を伝達するステップが、前記第１のワーカーノードが依然として前記第１のワークロードを処理していると判定される場合に、前記第２のワーカーノードが前記第１のワーカーノードを妨害すべきではない旨の指標を送信するステップを含む、
請求項１に記載のシステム。
【請求項５】
前記第１の生成識別子および前記第２の生成識別子がそれぞれ、少なくとも２つの部分で構成され、前記少なくとも２つの部分がそれぞれ優先度を示す、請求項１に記載のシステム。
【請求項６】
前記少なくとも２つの部分のうちの１つによる優先度の指標が、前記少なくとも２つの部分のうちの別の部分により示される優先度が先行するように、前記少なくとも２つの部分それぞれにより示される前記優先度が重み付けされた、請求項５に記載のシステム。
【請求項７】
コンピュータ実装方法であって、
対象データに対する第１のアクセス要求を受信するステップであって、前記対象データがストレージシステムにより格納され、前記第１のアクセス要求が第１の生成識別子および第１のワークロード識別子と関連付けられた、ステップと、
前記第１の生成識別子および前記第１のワークロード識別子を第１の格納生成識別子および第１の格納ワークロード識別子として、前記ストレージシステムの持続的ストレージに格納するステップと、
前記対象データに対する前記第１のアクセス要求を許可するステップと、
前記対象データに対する第２のアクセス要求を受信するステップであって、前記第２のアクセス要求が第２の生成識別子および前記第１のワークロード識別子と関連付けられた、ステップと、
前記第２の生成識別子を前記第１の格納生成識別子と比較し、前記第１のワークロード識別子を前記第１の格納ワークロード識別子と比較するステップと、
前記第２の生成識別子が前記第１の格納生成識別子よりも高い優先度を示し、前記第１のワークロード識別子が前記第１の格納ワークロード識別子に一致するものと判定するステップと、
前記第２の生成識別子を第２の格納生成識別子として持続的ストレージに格納するステップと、
前記対象データに対する前記第２のアクセス要求を許可するステップと、
前記対象データに対する第３のアクセス要求を受信するステップであって、前記第３のアクセス要求が前記第１の生成識別子および前記第１のワークロード識別子と関連付けられた、ステップと、
前記第１の生成識別子が前記第２の格納生成識別子よりも低い優先度を示し、前記第１のワークロード識別子が前記第１の格納ワークロード識別子に一致するものと判定するステップと、
前記対象データに対する前記第３のアクセス要求を拒絶するステップと、
を含む、方法。
【請求項８】
前記第１のアクセス要求および前記第３のアクセス要求が、第１のノードから受信され、前記第２のアクセス要求が、第２のノードから受信され、前記対象データに対する前記第３のアクセス要求を拒絶するステップが、前記第１のワークロード識別子に関連付けられた第１のワークロードが前記第２のノードに対して再割り当てされた旨の指標を前記第１のノードに提供するステップを含む、請求項７に記載の方法。
【請求項９】
前記第３のアクセス要求を拒絶するステップが、前記第１の生成識別子が前記第２の格納生成識別子よりも低い優先度を示す旨の指標を提供するステップを含む、請求項７に記載の方法。
【請求項１０】
前記第３のアクセス要求が、第１のノードから受信され、
前記対象データに対する第４のアクセス要求を第２のノードから受信するステップであって、前記第４のアクセス要求が第３の生成識別子および前記第１のワークロード識別子と関連付けられ、前記要求が許容状態である旨の指標を含む、ステップと、
前記第３の生成識別子が前記第２の格納生成識別子よりも高い優先度を示すものと判定するステップと、
前記ストレージシステムが依然として前記第１のノードと通信可能であるものと判定するステップと、
前記対象データに対する前記第４のアクセス要求を拒絶するステップと、
をさらに含む、請求項７に記載の方法。
【請求項１１】
前記第４のアクセス要求を拒絶するステップが、前記ストレージシステムが依然として前記第１のノードと通信可能である旨の指標を前記第２のノードに提供するステップを含む、請求項１０に記載の方法。
【請求項１２】
前記第１のアクセス要求の許可に際して、前記対象データをロックするステップと、
前記第２のアクセス要求の許可後、前記対象データの前記ロックを解除して、前記第１の格納生成識別子を持続的ストレージから削除するステップと、
をさらに含む、請求項７に記載の方法。
【請求項１３】
前記第１の生成識別子、前記第２の生成識別子、および第３の生成識別子がそれぞれ、少なくとも２つの部分で構成され、前記少なくとも２つの部分がそれぞれ優先度を示す、請求項７に記載の方法。
【請求項１４】
前記少なくとも２つの部分のうちの１つによる優先度の指標が、前記少なくとも２つの部分のうちの別の部分により示される優先度が先行するように、前記少なくとも２つの部分それぞれにより示される前記優先度が重み付けされた、請求項７に記載の方法。
【請求項１５】
前記第２のアクセス要求を許可するかを判定するステップが、
前記第２の生成識別子が前記第１の生成識別子よりも低い優先度を示す場合、
前記ストレージシステムが、前記第１のワークロードが処理されていることを前記第２のワーカーノードに通知するステップと、
前記第２の生成識別子が前記第１の生成識別子よりも高い優先度を示す場合、
前記ストレージシステムが、前記第２のアクセス要求を許可するステップと、
前記ストレージシステムが、前記第１のワークロードが再割り当てされた旨の指標を前記第１のワーカーノードに送信するステップと
をさらに含む、請求項１に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  ワークロードが複数のマシンに分散した環境等のクラスタ化環境は通常、分散ワークロードのフェイルオーバーおよび高可用性処理を提供するのに用いられる。クラスタ化環境によれば、環境の一部である１つまたは複数のノードに対して、ワークロードを分散可能である。クラスタ化環境は、クライアント、サーバ、または両者として機能し得る。クラスタにおいては、マスターノードにより、当該クラスタを構成するワーカーノードに対してワークロードが分散する可能性がある。ワーカーノードは、ストレージシステムにより格納された対象データに対するアクセス要求を発行する場合がある。マスターノードとワーカーノードとの間にエラーが生じた場合、ワーカーノードは、マスターノードを把握せずにワークロードを処理し続ける可能性がある。さらに、マスターノードは、ワーカーノードを把握せずにワークロードを異なるノードに再割り当てする可能性がある。
【０００２】
[0002]  上記および他の検討事項に関しては、例が挙げられている。また、比較的具体的な問題が論じられているものの、これらの例は、背景で特定される具体的な問題の解決に限定されるべきではないことが了解されるものとする。
【発明の概要】
【０００３】
[0003]  この概要は、簡単な形で概念を抜粋して紹介するものであり、以下の詳細な説明の項において詳述する。この概要は、特許請求の範囲に係る主題の重要な特徴または本質的な特徴を識別することを意図したものでもなければ、特許請求の範囲に係る主題の範囲の決定の補助として用いることを意図したものでもない。
【０００４】
[0004]  本明細書に開示のシステムおよび方法は、ワークロードが新しいノードに再割り当てされた状況およびワークロードが依然として古いノードにより処理されている状況を識別する機構を提供する。いくつかの態様によれば、マスターノードがワークロードをワーカーノードに割り当てる。マスターノードは、ワークロードと併せて、生成識別子およびワークロード識別子を伝達するようにしてもよい。ワークロードを処理する場合、ワーカーノードは、ストレージクラスタのノードにアクセス要求を送信して、対象データにアクセスする。例として、生成識別子およびワークロード識別子は、リソースを要求するノードおよび／または関連するワークロードの識別に用いられる。生成識別子および／またはワークロード識別子は、要求と併せて提供されるようになっていてもよい。ノードが対象データにアクセスした場合、生成識別子および／またはワークロード識別子は、持続的ストレージに格納され、要求された対象データと関連付けられる。
【０００５】
[0005]  ノードがワークロードの実行を完了する前に、障害が発生して、マスターノードがワーカーノードと通信できなくなる可能性がある。たとえば、ノードの再起動、ハードウェア障害の発生、通信リンクの障害等の可能性がある。このような状況において、マスターノードは、ワーカーノードの状態に気付かない。ただし、ワーカーノードは、依然としてストレージシステムにアクセス可能であり、ワークロードの処理およびファイルアクセス要求の発行を継続している可能性がある。障害時、マスターノードは、ワークロードを新しいワーカーノードに再割り当てするようにしてもよい。また、いくつかの例において、マスターノードは、ワークロード識別子およびワークロードと併せて、異なる生成識別子を伝達するようにしてもよい。新しいワーカーノードは、ワークロードの処理を開始した場合、ストレージクラスタのノードにアクセス要求を送信して、対象データにアクセスする。いくつかの例において、新しい生成識別子および／またはワークロード識別子は、要求と併せて提供されるようになっていてもよい。新しい生成識別子は、古い生成識別子よりも高い優先度を示していてもよい。新しいノードが対象データにアクセスした場合、新しい生成識別子は、持続的ストレージに格納され、要求された対象データと関連付けられる。この生成識別子によれば、要求を管理するストレージシステムは、ワークロードが新しいノードに再割り当てされたものと判定することができる。こうすることにより、ストレージシステムは、ワークロードが再割り当てされたことを古いノードに示すことができる。その結果、古いノードは、ワークロードの処理を停止可能である。さらに、古いノードは、ストレージシステムから再割り当て指標を受信していない場合、ワークロードが再割り当てされていないことが、古いノードに対して保証される。
【０００６】
[0006]  他の例においては、新しい生成識別子が古い生成識別子よりも低い優先度を示していてもよいし、新しいノードが「許容」アクセス要求を発行していてもよい。いずれの場合も、古いノードが依然としてワークロードを処理している間は、新しいノードがワークロードの処理を開始しない。その代わり、新しいノードは、古いノードが依然として作業中である旨の指標を受信し、その結果として、後続のアクセス要求を周期的に発行することにより、最終的に古いノードが処理を終えた場合にアクセスを得るようにしてもよい。こうすることにより、動作を中断してワークロードを新しいノードで再開するのではなく、古いノードはワークロードの処理を継続することができる。
【０００７】
[0007]  コンピュータプロセス、コンピュータシステム、またはコンピュータプログラム製品もしくはコンピュータ可読媒体等の製造品として例を実現するようにしてもよい。コンピュータプログラム製品は、コンピュータシステムによって読み込み可能であり、コンピュータプロセスを実行する命令のコンピュータプログラムを符号化したコンピュータ記憶媒体であってもよい。
【０００８】
[0008]  以下の図面を参照して、非限定的かつ非網羅的な例を説明する。
【図面の簡単な説明】
【０００９】
【図１】[0009]本明細書に記載の例の実現に使用可能なシステムを示した図である。
【図２】[0010]本明細書に記載の例の実現に使用可能なシステムを示した図である。
【図３】[0011]ストレージシステムと通信するノードの動作フローを示した図である。
【図４】[0012]ワークロードを他のノードに割り当てるノードの動作フローを示した図である。
【図５】[0013]ノードと通信するストレージシステムの動作フローを示した図である。
【図６】[0014]本発明の態様を実現可能なコンピュータ機器の一例を示したブロック図である。
【図７Ａ】[0015]本発明の態様を実現可能なモバイルコンピュータ機器の簡易ブロック図である。
【図７Ｂ】本発明の態様を実現可能なモバイルコンピュータ機器の簡易ブロック図である。
【図８】[0016]本発明の態様を実現可能な分散コンピュータシステムの簡易ブロック図である。
【発明を実施するための形態】
【００１０】
[0017]  以下、本明細書の一部を構成するとともに具体的かつ例示的な態様を示す添付の図面を参照して、種々の態様を詳述する。ただし、多くの異なる形態にて例を実現可能であるため、本明細書に示す例に限定されないものと解釈すべきである。したがって、ハードウェア実施態様、完全なソフトウェア実施態様、またはソフトウェアおよびハードウェアの態様を組み合わせた実施態様としての例の形態が可能である。このため、以下の詳細な説明は、限定的な意味で捉えられないものとする。
【００１１】
[0018]  本開示の例は、ワークロードが再割り当てされた場合にストレージシステムがノードに通知できるようにすることで分散ワークロードの高可用性処理を提供することに関する。例として、ストレージシステムは、ローカル機器、ネットワーク接続型記憶装置、分散ファイルサーバ、またはコンピュータ環境におけるその他任意の種類のストレージシステムであってもよい。ノードは、「マスター」ノードにより割り当てられたワークロードを「ワーカー」ノードが処理するクラスタの一部であってもよい。いくつかの例において、クラスタは、複数の層で構成されていてもよく、低層のワーカーノードが高層のマスターノードからワークロードの割り当てを受ける。他の例では、クラスタが１つの層のみを有していてもよく、各ノードがワーカーノード、マスターノード、または両者として振る舞うようになっていてもよい。
【００１２】
[0019]  一例においては、ワーカーノードがマスターノードからワークロードを割り当てられるようになっていてもよい。一方、ワーカーノードは、下位のワーカーノードのマスターノードとして機能するようになっていてもよく、その結果、下位のワーカーノードのうちの１つに対してワークロードをさらに分散させるようにしてもよい。ノードは、ネットワークを介して接続されていてもよい。当業者には当然のことながら、本明細書に開示のシステムおよび方法は、仮想ネットワーク等のその他任意の種類の環境において採用されるようになっていてもよいが、これに限定されない。
【００１３】
[0020]  データは、複数の要求元に共有されるようになっていてもよい。本明細書において、要求元には、任意のノード、アプリケーション、ワークロード、スレッド、または対象データへのアクセスを要求する他のプロセスもしくはエンティティを含んでいてもよい。本明細書に記載の例は、要求元として機能する「アプリケーション」、「クライアント」、「ノード」、または「ワークロード」に関して説明する場合があるものの、本開示はこれに限定されない。要求元が対象データにアクセスした場合は、対象データがロックされることにより、ロックが解除されるまで他の要求元のアクセスが禁止されるようになっていてもよい。対象データのロックにより、矛盾に対する保護がなされるようになっていてもよい。すなわち、アクセスしている要求元がその動作を実行する前に、別の要求元によって対象データが変更されることから保護するようになっていてもよい。通常、いくつかの例においては、ロックが許可されている場合、別の要求元がロックを先行し得る。たとえば、ストレージシステムは、要求元によりアクセス要求において提示または参照されるワークロード識別子を用いてロックを維持するようにしてもよい。
【００１４】
[0021]  場合により、ワーカーノードとのマスターノードの通信に影響する障害が発生した場合は、マスターノードがワーカーノードの状態に気付かなくなる可能性がある。たとえば、この障害は、マスターノードとワーカーノードとの間の通信問題の結果の場合もあれば、ワーカーノードの再起動の結果の場合もある。結果として、ワーカーノードは、通常動作していることから、依然としてワークロードを処理している場合もあれば、障害が発生してワークロードがもはや処理されていない場合もある。さらに、ワーカーノードは、ストレージシステムにより格納されたファイル情報に依然としてアクセス可能な場合もある。たとえば、ストレージシステムは、マスターノードと異なるネットワーク経路を介してアクセス可能であってもよい。
【００１５】
[0022]  障害により、マスターノードは、ワークロードを別のワーカーノードに再割り当てするようにしてもよい。その結果、新しいワーカーノードは、古いワーカーノードによりロックされているデータまたは過去にロックされたデータに対するアクセスを要求するようにしてもよい。いくつかの例において、ストレージシステムは、新しいノードからのアクセス要求と関連付けられたワークロード識別子が古いノードによる対象データのロックに一致するものと判定するようにしてもよい。そして、ストレージシステムは、古いロックを破棄して、対象データに新しいロックを設定する。
【００１６】
[0023]  ただし、古いノードが依然としてワークロードを処理している場合は、対象データに対する古いノードからのアクセス要求によって、上記と同じ振る舞いがなされることになる。ストレージシステムは、古いノードのアクセス要求がワークロード識別子と関連付けられているものと判定し、新しいノードのロックを破棄して、対象データに古いノードのための別のロックを設定することになる。その結果、２つのノードは、同じ対象データのロックを再取得し続け、他方のノードの存在に気付かなくなる可能性がある。これは、クラスタの性能に悪影響を及ぼし得る。たとえば、これにより、たとえば後で符号化プロセスの再開が必要となる映像符号化ワークロードの中断など、古いノードによる処理の終了ではなくワークロード処理の再開が必要となる、ワークロードの処理または中断の処理、が遅延する可能性がある。本明細書に開示のシステムおよび方法は、ワークロードが新しいノードに再割り当てされた状況およびワークロードが依然として古いノードにより処理されている状況を識別する機構を提供することによって、障害後のワークロード処理に対する影響を緩和する。
【００１７】
[0024]  図１は、いくつかの例の実現に使用可能なシステム１００を示している。システム１００は、ノード１０２、１０４、および１０６のほか、ストレージシステム１０８を具備する。図示の例において、ノード１０２は、ノード１０４および１０６のマスターノードとして機能する。ノード１０４および１０６は、ワーカーノードとして機能し、ノード１０２により割り当てられたワークロードを処理する。ストレージシステム１０８は、ノード１０４および１０６がアクセスする情報を格納する。図１は、ノード１０４および１０６のみがストレージシステム１０８と通信するものとして示しているが、他の例では、ワーカーノードとして機能するとともにストレージシステム１０８からの情報にアクセスするノードが３つ以上存在していてもよい。また、図１は、ノード１０２のみがノード１０４および１０６に関するマスターノードとして機能するものとして示しているが、他の例では、ワークロードをワーカーノードに割り当てるマスターノードが２つ以上存在していてもよい。
【００１８】
[0025]  一例によれば、ノード１０２、１０４、および１０６は、分散ワークロードの高可用性処理の提供に利用される。これは、マスターノード１０２とワーカーノード１０４および１０６との間に障害が発生した場合に、ノード１０２、１０４、および１０６、ならびにストレージシステム１０８上の構成要素を利用して、ワークロードを分割するとともに、ワークをさまざまなノードに再分散させることによって実現される。以下に詳述する通り、ワークロードが再割り当てされる場合にノードに提供される再割り当て通知によって、ノードクラスタは、分散ワークロードの高可用性処理を提供することができる。例として、ノード１０４および１０６は、サーバメッセージブロック（SMB）２．０／３．０プロトコルを用いてストレージシステム１０８と通信するようにしてもよい。
【００１９】
[0026]  一例の説明のため、ノード１０２は、第１のワークロードをノード１０６に割り当てるようにしてもよい。第１のワークロードは、当該第１のワークロードと併せてノード１０６に伝達可能な第１の生成識別子および／または第１のワークロード識別子と関連付けられていてもよい。ノード１０６は、第１のワークロードの処理を開始し、必要に応じて、ストレージシステム１０８により格納された対象データに対するファイルアクセス要求を送信する。ファイルアクセス要求は、第１の生成識別子および第１のワークロード識別子等の生成識別子および／またはワークロード識別子を含んでいてもよいし、参照するようにしてもよい。
【００２０】
[0027]  ストレージシステム１０８は、対象データに対するアクセス要求を受信する。いくつかの例において、ストレージシステム１０８は、対象データがロックされており、異なる生成識別子および／またはワークロード識別子と関連付けられているかを判定するようにしてもよい。対象データがロックされている場合、ストレージシステム１０８は、ファイルアクセス要求を拒絶してもよいし、ロックを破棄してもよいし、採用しているプロトコルに応じて他の措置を講じるようにしてもよい。
【００２１】
[0028]  要求が許可されるべきとの判定に際しては、ストレージシステム１０８によって、生成識別子および／またはワークロード識別子が持続的ストレージに格納されるようになっていてもよい。生成識別子および／またはワークロード識別子は、持続的ストレージに格納された場合、本明細書において格納生成識別子および格納ワークロード識別子と称する場合がある。いくつかの例において、対象データは、アクセス要求の許可前または許可後にロックされるようになっていてもよい。さらに、ロックは、要求のすべての動作が完了したら解除される（これにより、他のノードが対象データにアクセスできる）ように構成されていてもよい。ロックは、特定の期間後または当該特定の期間前に要求のすべての動作が完了した時点で失効するようになっていてもよい。さらに他の例において、ロックは、クライアントによるロック解除またはロック破棄のイベントが発生するまで、対象データに対するノード排他的アクセスを提供するようにしてもよい。たとえば、ＳＭＢプロトコルに準じて、ストレージシステム１０８からの排他的ＯｐＬｏｃｋがノード１０６に提供されるようになっていてもよい。ノード１０６は、対象データに対してアクセス可能な唯一のノードと仮定してもよく、また、すべての対象データをローカルのキャッシュに格納するほか、対象データのすべての変更をキャッシュに格納した後、ストレージシステム１０８の変更に注力するようにしてもよい。別のノード／ワークロードが同じ対象データを開こうとした場合、ストレージシステム１０８は、ノード１０６に対して過去に付与された排他的ＯｐＬｏｃｋを無効化するメッセージ（破棄または撤回と称する）をノード１０６に送信する。そして、ノード１０６は、対象データのすべての変更をフラッシュして、これらをストレージシステム１０８に委ねる。
【００２２】
[0029]  ある時点において、ノード１０２は、ノード１０６との通信障害が発生する可能性がある。いくつかの例において、この障害は、切断、ハードウェア障害、または再起動に起因する可能性がある。障害の結果として、ノード１０２は、第２の生成識別子を生成することにより、第１のワークロードをノード１０４に再割り当てする。第２の生成識別子、第１のワークロード識別子、および第１のワークロードは、ノード１０４に伝達される。いくつかの例において、ノード１０２は、所定時間待機した後、第１のワークロードをノード１０４に再割り当てするようにしてもよい。
【００２３】
[0030]  ノード１０４は、第１のワークロードの処理を開始し、必要に応じて、ストレージシステム１０８により格納された対象データに対するファイルアクセス要求を送信する。ファイルアクセス要求は、第２の生成識別子および第１のワークロード識別子等の生成識別子および／またはワークロード識別子を含んでいてもよいし、参照するようにしてもよい。
【００２４】
[0031]  ストレージシステム１０８は、ファイルアクセス要求を受信する。対象データが（たとえば、同じワークロード識別子を用いてノード１０６により）ロックされている場合、ストレージシステム１０８は、第２の生成識別子が格納生成識別子よりも高い優先度を示しているかを判定する。第２の生成識別子が格納生成識別子よりも高い優先度を示している場合、ストレージシステム１０８は、ノード１０６による対象データのロックを破棄し、対象データをノード１０４のためにロックして、アクセス要求を許可する。第２の生成識別子が高い優先度を示していない場合、ストレージシステム１０８は、対象データがロックされていることをノード１０４に示すようにしてもよい。さらに、この指標は、対象データがノード１０６によりロックされていることをノード１０４に通知するものであってもよい。第２の生成識別子が格納生成識別子よりも高い優先度を示している場合、ストレージシステム１０８は、格納生成識別子を第２の生成識別子で置き換える。
【００２５】
[0032]  いくつかの例において、ノード１０４により発行されたアクセス要求は、許容状態であってもよい。これは、ストレージシステム１０８が対象データの低優先度ロックを破棄することを期待するのではなく、対象データがロックまたは使用されている間、高優先度のアクセス要求が許可されるべきではないことをノード１０４が示すことを意味する。たとえば、ストレージシステム１０８は、対象データに対するノード１０６のロックを破棄するのではなく、ノード１０４からの許容アクセス要求を拒絶し、代わりに、ノード１０６が依然として第１のワークロードを処理している旨を通知する。ノード１０６は、ノード１０２と通信可能ではないが、ストレージシステム１０８と通信可能である限り、ワークロードの処理を継続する。その結果、ワークロードの実行がノード１０４により妨害されることはない。そして、ノード１０４は、後続の許容アクセス要求をストレージシステム１０８に対して周期的に送信することにより、ノード１０６が終了となった際に対象データへのアクセスを得るようにしてもよい。第１の生成識別子は、ノード１０４からの高優先度のファイルアクセス要求が許可されるまで、ストレージシステム１０８により格納生成識別子として保持されるようになっていてもよく、その後、第２の生成識別子が格納生成識別子として格納されるようになっていてもよい。
【００２６】
[0033]  他の例において、ノード１０２により生成された第２の生成識別子は、第１の生成識別子よりも低い優先度を示していてもよい。その結果、ノード１０６による対象データの使用中、ノード１０４により送信されたファイルアクセス要求は、拒絶される。ノード１０６がワークロードを処理しており、依然としてストレージシステム１０８にアクセス可能である場合は、低優先度の生成識別子によって、ノード１０４による妨害なく、ノード１０６がワークロードの処理を継続することができる。ノード１０４は、ストレージシステム１０８に対して、アクセス要求を周期的に送信し続けるようにしてもよい。最終的に対象データへのアクセスを得た際、ノード１０４は、その成功をノード１０２に示すようにしてもよい。そして、ノード１０２は、第１の生成識別子よりも高い優先度を示す第３の生成識別子を生成し、この第３の生成識別子をノード１０４に伝達する。そして、ノード１０４は、後続のファイルアクセス要求において、第２の生成識別子ではなく第３の生成識別子を使用するようにしてもよい。ノード１０４が第３の生成識別子を用いた対象データへのアクセスに成功した後、ストレージシステム１０８は、第３の生成識別子を格納生成識別子として保持するようにしてもよい。
【００２７】
[0034]  ノード１０２および１０６間の通信障害に関わらず、ノード１０６は、第１のワークロードの処理を継続可能である。第１のワークロードがノード１０４に再割り当てされ、ノード１０４の対象データへのアクセスがストレージシステム１０８により許可された後、ノード１０６は、対象データに対するファイルアクセス要求を行うようにしてもよい。ファイルアクセス要求は、第１の生成識別子を含んでいてもよいし、参照するようにしてもよい。ファイルアクセス要求の受信に際して、ストレージシステム１０８は、ファイルアクセス要求と関連付けられた生成識別子を評価する。ストレージシステム１０８は、ファイルアクセス要求と関連付けられた第１の生成識別子が格納生成識別子よりも低い優先度を示すものと判定する。結果として、ストレージシステム１０８は、ファイルアクセス要求を拒絶するとともに、そのワークロードが別のノードに再割り当てされたことをノード１０６に示す。いくつかの例において、この指標は、ワークロードがノード１０４に再割り当てされたことをノード１０６に通知するものであってもよい。そして、ノード１０６は、第１のワークロードの処理を停止するようにしてもよい。
【００２８】
[0035]  他の例において、ノード１０４は、ワーカーノードとして機能する間、マスターノードとしても機能し得る。ノード１０４は、その層内の別のノードであるノード１０６等に第２のワークロードを割り当てるようにしてもよい。第２のワークロードは、第２のワークロード識別子および第４の生成識別子と関連付けられていてもよい。この例においては、第４の生成識別子、第２のワークロード識別子、および第２のワークロードがノード１０６に伝達される。ノード１０６は、第２のワークロードの処理を開始し、必要に応じて、ストレージシステム１０８により格納された対象データに対するファイルアクセス要求を送信する。ファイルアクセス要求は、第４の生成識別子および第２のワークロード識別子等の生成識別子および／またはワークロード識別子を含んでいてもよいし、参照するようにしてもよい。上述の通り、ストレージシステム１０８は、第４の生成識別子を持続的ストレージに格納して、アクセス要求を許可する。
【００２９】
[0036]  ある時点において、ノード１０４は、ノード１０６との通信障害が発生する可能性がある。障害の結果として、ノード１０４は、第５の生成識別子を生成することにより、第２のワークロードをその層内の新しいノード（図示せず）に再割り当てする。そして、第５の生成識別子、第２のワークロード識別子、および第２のワークロードが新しいノードに伝達される。新しいノードは、第２のワークロードの処理を開始する。
【００３０】
[0037]  上述の通り、低優先度の第５の生成識別子の提供または許容状態の振る舞いを要求する指標と併せたファイルアクセス要求の発行により、再割り当てを許容状態としてもよい。いずれの例においても、ノード１０６は、通常動作中ではあるがノード１０４と通信できなくなった場合に、第２のワークロードの処理を終えることができる。したがって、再割り当てが許容状態である場合、ノード１０６が処理を終えた場合、ノード１０６がストレージシステム１０８との接続を失った場合、または、ノード１０４との通信障害とは別の障害が発生している場合等、ノード１０６がもはや対象データにアクセスしていない場合のみ、新しいノードは対象データに対するアクセスを獲得することができる。第５の生成識別子が格納生成識別子よりも高い優先度を示さなかった場合、新しいノードは、対象データへのアクセスを得ると、ノード１０４から高優先度の第６の生成識別子を受信するようにしてもよい。そして、この高優先度の生成識別子は、ストレージシステム１０８により格納されるようになっていてもよい。
【００３１】
[0038]  ノード１０４および１０６間の通信障害に関わらず、ノード１０６は、第２のワークロードの処理を継続可能である。第２のワークロードが新しいノードに再割り当てされ、新しいノードの対象データへのアクセスがストレージシステム１０８により許可された後、ノード１０６は、対象データに対するファイルアクセス要求を行うようにしてもよい。ファイルアクセス要求は、第４の生成識別子を含んでいてもよいし、参照するようにしてもよい。ファイルアクセス要求の受信に際して、ストレージシステム１０８は、ファイルアクセス要求と関連付けられた生成識別子を評価する。ストレージシステム１０８は、ファイルアクセス要求と関連付けられた第４の生成識別子が格納生成識別子よりも低い優先度を示すものと判定する。結果として、ストレージシステム１０８は、ファイルアクセス要求を拒絶するとともに、ワークロードが別のノードに再割り当てされたことをノード１０６に示す。いくつかの例において、この指標は、ワークロードが新しいノードに再割り当てされたことをノード１０６に通知するものであってもよい。そして、ノード１０６は、第２のワークロードの処理を停止するようにしてもよい。
【００３２】
[0039]  別の例において、ノード１０２は、ノード１０６が処理している第３のワークロードをノード１０６からノード１０４に移すようにしてもよい。第３のワークロードは、第３のワークロード識別子と関連付けられていてもよい。さらに、第３のワークロードは既に、ストレージシステム１０８に対するファイルアクセス要求の発行に際してノード１０６が使用する第７の生成識別子と関連付けられていてもよい。ノード１０２は、第８の生成識別子を生成する。第８の生成識別子は、第７の生成識別子よりも高い優先度を示していてもよい。そして、第８の生成識別子、第３のワークロード識別子、および第３のワークロードがノード１０４に伝達される。移行動作中のある時点において、ノード１０２および１０４間に障害が発生する場合がある。その結果、ノード１０２は、移行動作の完了に成功したかに気付いておらず、ノード１０４が第３のワークロードの処理を開始したかにも気付いていない。このため、ノード１０２は、第３のワークロードの処理を停止すべきか継続すべきか等、ノード１０６が講じるべき措置を決定することができない。
【００３３】
[0040]  ただし、移行動作の完了に成功した場合、ノード１０４は、第３のワークロードの処理を開始し、必要に応じて、ストレージシステム１０８に対するファイルアクセス要求を発行することになる。結果として、ストレージシステム１０８は、関連する第８の生成識別子を格納するとともに、上述の通り、ファイルアクセス要求を許可する。ノード１０６からの後続のファイルアクセス要求の受信に際して、ストレージシステム１０８は、関連する第７の生成識別子が格納生成識別子よりも低い優先度を示すものと判定して、ワークロードが再割り当てされた旨の指標を提供する。この指標は、ワークロードがノード１０４に移されたことをノード１０６に通知するものであってもよい。
【００３４】
[0041]  移行動作の完了に成功していない場合、ノード１０６は、第３のワークロードの処理を継続する。生成識別子により、クラスタは、移行動作の成否に関わらず、クラスタ内のノードにより第３のワークロードが継続して処理されるようにすることができる。さらに、移行に成功した場合は、ストレージシステム１０８を介する別の通知チャネルを提供するが、ノード１０２は、ワークロードが異なるノードに移されたことをノード１０６に通知することができない。
【００３５】
[0042]  以上の説明は、図１に示す例が作用し得る方法の一例に過ぎない。以下に詳述する通り、例には異なる工程または動作を含んでいてもよい。これらは、任意適当なソフトウェアまたはハードウェアコンポーネントまたはモジュールを用いて実装されていてもよい。
【００３６】
[0043]  図２は、いくつかの例の実現に使用可能なシステム２００を示している。システム２００は、ノード２０２、２０４、２０６、２０８、２１０、２１２、および２１４を具備する。ノード２０２は、ノード２０４および２０６のマスターノードとして機能する。ノード２０４および２０６は、ワーカーノードとして機能し、ノード２０２により割り当てられたワークロードを処理するようにしてもよい。さらに、ノード２０４は、ノード２０８および２１０のマスターノードとして機能し、ノード２０６は、ノード２１２および２１４のマスターノードとして機能する。ノード２０４および２０６は、マスターノードおよびワーカーノードの両者として機能するようになっていてもよい。ノード２０８および２１０は、ワーカーノードとして機能し、ノード２０４により割り当てられたワークロードを処理する。同様に、ノード２１２および２１４は、ワーカーノードとして機能し、ノード２０６により割り当てられたワークロードを処理する。ストレージシステム２１６は、ノード２０８、２１０、２１２、および２１４がネットワーク２３０を介してアクセスする情報を格納する。図２は、ノード２０８、２１０、２１２、および２１４のみがストレージシステム２１６と通信するものとして示しているが、他の例では、ノード２０２、２０４、および２０６を含めて、ストレージシステム２１６により格納されたファイル情報にアクセスするノードが５つ以上（または、３つ以下）存在していてもよい。
【００３７】
[0044]  図２に示すように、ストレージシステム２１６は、スケーラブルファイルサーバ２１８に対して高可用性および冗長性の両者を提供するノード２１６Ａおよび２１６Ｂを具備する。例として、ストレージシステム２１６は、ノード２０８、２１０、２１２、および２１４がアクセスするスケーラブルファイルサーバ２１８を提供する。スケーラブルファイルサーバ２１８は、協働によって分散ファイルシステム２２０からのファイル情報を提供可能な複数のクラスタ化サーバを備えていてもよい。分散ファイルシステム２２０は、物理的ストレージ２２８に格納されたファイル情報を含む。物理的ストレージ２２８のファイルシステム２２６は、ノード２１６Ｂに搭載されている。いくつかの例において、ファイルシステム２２６のフォーマットは、ニューテクノロジーファイルシステム（NTFS）であってもよいし、レジリエントファイルシステム（ReFS）であってもよい。ノード２１６Ｂは、分散ファイルシステム２２０のコーディネータとして機能し、読み出し、書き込み、およびメタデータ操作等のファイル操作を分散ファイルシステム２２０からファイルシステム２２６に中継する。いくつかの例において、ノード２１６Ａは、物理的ストレージ２２８に対して直接、ファイル操作を実行するようにしてもよいが、ノード２１６Ｂは、書き込み要求が物理的ストレージ２２８に直接送信されるのではなく、ノード２１６Ａによってノード２１６Ｂに転送されるように、排他的な書き込みアクセスが可能であってもよい。また、生成識別子フィルタ２２２がアクセス要求を生成識別子と関連付け、これらの生成識別子が後で持続的ストレージ２２４に格納される。たとえば、持続的ストレージ２２４は、ＮＴＦＳファイルシステムに付随する生成識別子フィルタが利用する生成識別子フィルタデータベースを備えていてもよい。図２には２つのノードを示しているが、他の例では、ストレージシステム２１６が３つ以上のノードを具備していてもよいし、１つ以下のノードを具備していてもよい。
【００３８】
[0045]  図２は、３つの「層」のノードおよび複数のサブグループを示している。ノード２０２は、グローバルマスター層を含む。ノード２０４および２０６は、ローカルマスター層を含み、ノード２０８、２１０、２１２、および２１４は、ローカルワーカー層を含む。グローバルマスター層のノードは、ローカルマスター層のノードにワークを分散させるようになっていてもよい。ローカルマスター層のノードは、ローカルワーカー層のノードにワークを分散させるようになっていてもよい。さらに、ノード２０４、２０８、および２１０があるサブグループを含む一方、ノード２０６、２１２、および２１４が別のサブグループを含んでいてもよい。結果として、ノード２０４がノード２０８および２１０間にワークロードを分散させ、ノード２０６がノード２１２および２１４間にワークロードを分散させるようになっていてもよい。ただし、ノード２０２は、最上位ノードとして、ワークロード分散全体の責を負い、ノード２０４および２０６による分散決定と独立してワークロードを分散させることができる。たとえば、ノード２０２は、ノード２０４がさらにローカルワーカー層のノード（たとえば、ノード２０８または２１０）にワークロードを分散させたか否かに関わらず、ローカルマスター層において、ノード２０４からノード２０６にワークロードを再割り当てさせるようにしてもよい。図２は、３層のノードしか示していないが、他の例では、４つ以上（または、２つ以下）の層が存在していてもよく、より高い層のノードがより低い層のノードに対してワークロードを割り当てるようになっていてもよい。また、図２では、各層に特定数のノードを示しているが、各層は、さまざまな数のノードを含んでいてもよい。
【００３９】
[0046]  生成識別子の作成においては、ノード２０２、２０４、２０６、２０８、２１０、２１２、および２１４間に存在する階層決定構造を捕捉するようにしてもよい。一例において、生成識別子は、２つの下位部分に細分され、前半の６４ビットが主識別子を示し、後半の６４ビットが副識別子を示す１２８ビットの識別子であってもよい。主識別子は、第２の層を含むノード（たとえば、ノード２０４および２０６）にワークロードを割り当てる際に変化する。同様に、副識別子は、第３の層を含むノード（たとえば、ノード２０８、２１０、２１２、および２１４）にワークロードを割り当てる際に変化する。結果として、生成識別子の下位部分は、ある生成識別子の別の生成識別子に対する優先度を考慮する場合、異なる評価がなされるようになっていてもよい。別の生成識別子の主識別子に関して高優先度の主識別子を有する生成識別子は、副識別子が示す優先度に関わらず、より高い優先度を有するものと判定されるようになっていてもよい。同様に、同様の優先度を示す主識別子を有する２つの生成識別子の優先関係は、副識別子が示す優先度の比較によって判定されるようになっていてもよい。他の例において、生成識別子は、異なる長さを有していてもよく、３つ以上または１つ以下の部分に細分されて、階層決定構造を表すようになっていてもよい。
【００４０】
[0047]  生成識別子の下位部分が示す優先度が考え得る最大の符号化値に達した場合は、高優先度の生成識別子に対する要求をマスターノードに送信することによって、後続の高優先度の生成識別子が得られるようになっていてもよい。たとえば、ノード２０４は、生成識別子の副識別子下位部分について考え得るすべての符号化値を使い果たした場合、所与の主識別子に関して、考え得るすべての副識別子が使い果たされたことをノード２０２に示すようにしてもよい。そして、ノード２０２は、高優先度の主識別子および副識別子で構成された新しい生成識別子で応答する。その後、ノード２０４は、新しい生成識別子の副識別子下位部分を変更し続けることにより、後続の高優先度の生成識別子を提供するようにしてもよい。
【００４１】
[0048]  他の例においては、使い果たされた下位部分を考え得る最大の符号化値から初期値（たとえば、考え得る最小の符号化値）に「ロールオーバ」することにより、高優先度の生成識別子が生成されるようになっていてもよい。たとえば、副識別子は、符号なし整数で表されている場合、考え得る最大の符号化値からゼロへと「ロールオーバ」する。主識別子は変化しない。２つの識別子を比較する場合は、生成識別子の各下位部分の最新の有効値を別の生成識別子の同等の下位部分から減算することによって、優先度判定がなされる。減算においては、２の補数計算を利用することにより、考え得る最大の符号化値をロールオーバ値から減算することによって正の値が得られるようにしてもよい。減算による負の値がより低い優先度を示す一方、正の値は、より高い優先度を示す。そして、上述の通り、生成識別子の個々の下位部分の評価によって、生成識別子の優先関係が評価される。
【００４２】
[0049]  例によれば、ノード２０２、２０４、２０６、２０８、２１０、２１２、および２１４は、分散ワークロードの高可用性処理の提供に利用される。これは、マスターノードとワーカーノードとの間に障害が発生した場合に、ノードおよびストレージシステム２１６上の構成要素を利用して、ワークロードを分割するとともに、ワークをさまざまなノードに再分散させることによって実現される。以下に詳述する通り、ワークロードが再割り当てされる場合にノードに提供される再割り当て通知によって、ノードクラスタは、分散ワークロードの高可用性処理を提供することができる。
【００４３】
[0050]  例として、ノード２０２は、分散ワークロードの分割およびワーカーノードへの割り当ての責を負う。ノード２０２は、第１のワークロードをノード２０４に割り当てるようにしてもよい。さらに、ノード２０４は、自身のワーカーノードの１つであるノード２１０等にワークロードを分散させるようにしてもよい。第１のワークロードは、第１の主番号および第１の副番号で構成された第１の生成識別子と関連付けられていてもよい。また、第１のワークロードは、第１のワークロード識別子と関連付けられていてもよい。第１の生成識別子、第１のワークロード識別子、および第１のワークロードは、ノード２１０に伝達されるようになっていてもよい。
【００４４】
[0051]  ノード２１０は、第１のワークロードの処理を開始し、必要に応じて、対象データに対するファイルアクセス要求をノード２１６Ａに送信する。アクセス要求は、生成識別子および／またはワークロード識別子と関連付けられていてもよいし、生成識別子および／またはワークロード識別子を含んでいてもよい。たとえば、新しいワークロードが開始となった場合は、生成識別子の指標がノード２１６Ａに伝達されるようになっていてもよい。対象データに対するアクセス要求には、対象データに実行する多くのファイル操作を含んでいてもよい。これらの操作は、たとえば、データの読み取り／書き込みのために開くこと、属性の列挙、データをローカルのキャッシュに格納するためのリース要求、または、他のファイルアクセス操作とすることができる。
【００４５】
[0052]  一例において、生成識別子は、＿ＮＥＴＷＯＲＫ＿ＡＰＰ＿ＩＮＳＴＡＮＣＥ＿ＶＥＲＳＩＯＮ＿ＥＣＰ＿ＣＯＮＴＥＸＴ構造に格納されていてもよい。＿ＮＥＴＷＯＲＫ＿ＡＰＰ＿ＩＮＳＴＡＮＣＥ＿ＶＥＲＳＩＯＮ＿ＥＣＰ＿ＣＯＮＴＥＸＴ構造は、以下のように定義されていてもよい。
[0053]  ｔｙｐｅｄｅｆ  ｓｔｒｕｃｔ＿ＮＥＴＷＯＲＫ＿ＡＰＰ＿ＩＮＳＴＡＮＣＥ＿ＶＥＲＳＩＯＮ＿ＥＣＰ＿ＣＯＮＴＥＸＴ  ｛
[0054]  ＵＳＨＯＲＴ  Ｓｉｚｅ；
[0055]  ＵＳＨＯＲＴ  Ｒｅｓｅｒｖｅｄ；
[0056]  ＵＩＮＴ６４  ＶｅｒｓｉｏｎＨｉｇｈ；
[0057]  ＵＩＮＴ６４  ＶｅｒｓｉｏｎＬｏｗ；
[0058]  ｝  ＮＥＴＷＯＲＫ＿ＡＰＰ＿ＩＮＳＴＡＮＣＥ＿ＶＥＲＳＩＯＮ＿ＥＣＰ＿ＣＯＮＴＥＸＴ，  ＊ＰＮＥＴＷＯＲＫ＿ＡＰＰ＿ＩＮＳＴＡＮＣＥ＿ＶＥＲＳＩＯＮ＿ＥＣＰ＿ＣＯＮＴＥＸＴ；
【００４６】
[0059]  このような例において、変数Ｓｉｚｅは、構造のサイズに関する情報を格納していてもよく、変数ＶｅｒｓｉｏｎＨｉｇｈは、主識別子であってもよく、変数ＶｅｒｓｉｏｎＬｏｗは、副識別子であってもよい。いくつかの例において、＿ＮＥＴＷＯＲＫ＿ＡＰＰ＿ＩＮＳＴＡＮＣＥ＿ＶＥＲＳＩＯＮ＿ＥＣＰ＿ＣＯＮＴＥＸＴまたは生成識別子を含む別のオブジェクトもしくは変数は、持続的ストレージ２２４に格納されていてもよい。例として、＿ＮＥＴＷＯＲＫ＿ＡＰＰ＿ＩＮＳＴＡＮＣＥ＿ＶＥＲＳＩＯＮ＿ＥＣＰ＿ＣＯＮＴＥＸＴ構造は、リソースへのアクセス要求（たとえば、作成または開く要求）に関連して、ノードからストレージシステムに送信されるようになっていてもよい。一例において、生成識別子は、マスターノードまたはワーカーノード等、ワークロードの処理または分散を行っているノードにより格納されていてもよい。別の例において、図２には示していないものの、ノードクラスタは、生成識別子を格納する中央レポジトリを有していてもよい。このような例においては、クラスタの複数のノードが中央レポジトリにアクセス可能である。さらに別の例においては、生成識別子が複数のレポジトリにわたって格納されていてもよい。このような例において、ノードクラスタは、複製アルゴリズムを採用することにより、複数のレポジトリが同じ生成識別子を含むようにしてもよい。
【００４７】
[0060]  ノード２１６Ａは、対象データに対するアクセス要求を受信する。要求が許可されるべきとの判定に際しては、生成識別子フィルタ２２２は、ノード２１０からのアクセス要求に包含または関連付けされた生成識別子を持続的ストレージ２２４に格納する。いくつかの例においては、その後、対象データがロックされるようになっていてもよい。
【００４８】
[0061]  ある時点において、ノード２１０は、ノード２０４との通信障害が発生する可能性がある。この障害は、たとえば切断、ハードウェア障害、または再起動に起因する可能性がある。障害の結果として、ノード２０４は、第１の主識別子および第２の副識別子を含む第２の生成識別子を生成することにより、第１のワークロードをノード２０８に再割り当てする。第２の生成識別子、第１のワークロード識別子、および第１のワークロードを、ノード２０８に伝達することができる。
【００４９】
[0062]  ノード２０８は、第１のワークロードの処理を開始し、必要に応じて、対象データに対するファイルアクセス要求をノード２１６Ａに送信する。ファイルアクセス要求は、第２の生成識別子および第１のワークロード識別子等の生成識別子および／またはワークロード識別子を含んでいてもよいし、参照するようにしてもよい。
【００５０】
[0063]  ノード２１６Ａは、ファイルアクセス要求を受信する。対象データが（たとえば、同じワークロード識別子を用いてノード２１０により）ロックされている場合、スケーラブルファイルサーバ２１８は、第２の生成識別子が格納生成識別子よりも高い優先度を示しているかを判定する。第２の生成識別子および格納生成識別子の両者の主識別子は、同じ優先度を示しているため、スケーラブルファイルサーバ２１８は、副識別子を比較する。第２の生成識別子の副識別子が格納生成識別子の副識別子よりも高い優先度を示している場合、ノード２１６Ａは、ノード２１０による対象データのロックを破棄し、対象データをノード２０８のためにロックして、アクセス要求を許可する。第２の生成識別子の副識別子が高い優先度を示していない場合、ノード２１６Ａは、対象データがロックされていることをノード２０８に示すようにしてもよい。さらに、この指標は、対象データがノード２１０によりロックされていることをノード２０８に通知するものであってもよい。第２の生成識別子が格納生成識別子よりも高い優先度を示している場合は、持続的ストレージ２２４に格納された生成識別子が第２の生成識別子で置き換えられ、これが格納生成識別子となる。
【００５１】
[0064]  また、上述の通り、ノード２０８が許容アクセス要求を発行するようにしてもよいし、第２の生成識別子の副識別子が格納生成識別子の副識別子よりも低い優先度を示していてもよい。これらいずれの例においても、ノード２１０は、通常動作中ではあるがノード２０４と通信できなくなった場合に、ワークロードの処理を終えることができる。したがって、ノード２１０が処理を終えた場合、ノード２１０がストレージシステム２１６との接続を失った場合、または、ノード２０４との通信障害とは別の障害が発生している場合等、ノード２１０がもはや対象データにアクセスしていない場合のみ、ノード２０８は対象データに対するアクセスを獲得することができる。第２の生成識別子が格納生成識別子よりも高い優先度を示さなかった場合、ノード２０８は、対象データへのアクセスを得ると、ノード２０４から高優先度の第３の生成識別子を受信するようにしてもよい。そして、この高優先度の生成識別子は、持続的ストレージ２２４に格納されるようになっていてもよい。
【００５２】
[0065]  ノード２０４および２１０間の通信障害に関わらず、ノード２１０は、第１のワークロードの処理を継続可能である。第１のワークロードがノード２０８に再割り当てされ、ノード２０８の対象データへのアクセスがノード２１６Ａにより許可された後、ノード２１０は、ファイルアクセス要求をノード２１６Ａに送信するようにしてもよい。ファイルアクセス要求は、第１の生成識別子を含んでいてもよいし、参照するようにしてもよい。アクセス要求の受信に際して、スケーラブルファイルサーバ２１８は、ファイルアクセス要求と関連付けられた生成識別子を評価する。スケーラブルファイルサーバ２１８は、ファイルアクセス要求と関連付けられた第１の生成識別子が格納生成識別子よりも低い優先度を示すものと判定することになる。結果として、ノード２１６Ａは、ファイルアクセス要求を拒絶するとともに、ワークロードが別のノードに再割り当てされたことをノード２１０に示す。いくつかの例において、この指標は、ワークロードがノード２０８に再割り当てされたことをノード２１０に通知するものであってもよい。そして、ノード２１０は、第１のワークロードの処理を停止するようにしてもよい。
【００５３】
[0066]  最終的に、ノード２０４は、ノード２０２との通信障害が発生する可能性がある。障害の結果として、ノード２０２は、第２の主識別子および第３の副識別子を含む第４の生成識別子を生成することにより、第１のワークロードをノード２０６に再割り当てする。第３の副識別子は、第１または第２の副識別子と同様の優先度を示していてもよいし、全く異なる優先度を示していてもよい。第４の生成識別子、第１のワークロード識別子、および第１のワークロードは、ノード２０６に伝達されるようになっていてもよい。さらに、ノード２０６は、そのワーカーノードの１つであるノード２１２等にワークロードを分散させるようにしてもよい。結果として、第４の生成識別子、第１のワークロード識別子、および第１のワークロードは、ノード２１２に伝達されるようになっていてもよい。
【００５４】
[0067]  ノード２１２は、第１のワークロードの処理を開始し、必要に応じて、対象データに対するアクセス要求をノード２１６Ｂに送信する。ファイルアクセス要求は、第４の生成識別子および第１のワークロード識別子等の生成識別子および／またはワークロード識別子と関連付けられていてもよいし、これらを含んでいてもよい。
【００５５】
[0068]  ノード２１６Ｂは、ファイルアクセス要求を受信する。対象データが（たとえば、同じワークロード識別子を用いてノード２１０により）ロックされている場合、スケーラブルファイルサーバ２１８は、第４の生成識別子が格納生成識別子よりも高い優先度を示しているかを判定する。第４の生成識別子の主識別子が格納生成識別子の主識別子よりも高い優先度を示している場合、ノード２１６Ｂは、ノード２０８による対象データのロックを破棄し、対象データをノード２１２のためにロックして、アクセス要求を許可する。スケーラブルファイルサーバ２１８は、主識別子がより高い優先度を示すものと判定するに際して、副識別子を無視するようにしてもよい。また、持続的ストレージ２２４の格納生成識別子は、高優先度の第４の生成識別子で置き換えられるようになっていてもよい。第４の生成識別子の主識別子が高い優先度を示していない場合、ノード２１６Ｂは、対象データがロックされていることをノード２１２に示すようにしてもよい。さらに、この指標は、対象データがノード２０８によりロックされていることをノード２１２に通知するものであってもよい。例として、ノード２１２は、このような情報をノード２０２に伝達するようにしてもよい。
【００５６】
[0069]  また、上述の通り、ノード２１２が許容アクセス要求を発行するようにしてもよいし、第４の生成識別子が格納生成識別子よりも低い優先度を示していてもよい。これらいずれの例においても、ノード２０８がアクセス要求を終了した場合および／またはいくつかの例において、ノード２０８がそのロックを解除した場合、ノード２１２は、対象データに対するアクセスの獲得のみを行う。第４の生成識別子が格納生成識別子よりも高い優先度を示さなかった場合、ノード２１２は、対象データへのアクセスを得ると、ノード２０２から高優先度の第５の生成識別子を受信するようにしてもよい。この高優先度の生成識別子は、持続的ストレージ２２４に格納される。これにより、ノード２１２が対象データへのアクセスを得ると、ノード２０８がその低優先度の生成識別子を用いてアクセスを再度得ることがなくなる。
【００５７】
[0070]  ノード２０４および２０２間の通信障害に関わらず、ノード２０８は、第１のワークロードの処理を継続可能である。第１のワークロードがノード２１２に再割り当てされ、ノード２１２の対象データへのアクセスがノード２１６Ｂにより許可された後、ノード２０８は、ファイルアクセス要求をノード２１６Ａに送信するようにしてもよい。ファイルアクセス要求は、第１の主識別子および第４の副識別子で構成された第６の生成識別子を含んでいてもよいし、参照するようにしてもよい。第４の副識別子は、第１、第２、または第３の副識別子と同様の優先度を示していてもよいし、全く異なる優先度を示していてもよい。アクセス要求の受信に際して、スケーラブルファイルサーバ２１８は、ファイルアクセス要求と関連付けられた生成識別子を評価する。スケーラブルファイルサーバ２１８は、ファイルアクセス要求と関連付けられた第６の生成識別子の主識別子が格納生成識別子の主識別子よりも低い優先度を示すものと判定する。例として、副識別子の優先度指標は、無視されるようになっていてもよい。生成識別子の主識別子が示す優先度に基づいて、高優先度の判定が既になされているためである。結果として、ノード２１６Ａは、ファイルアクセス要求を拒絶するとともに、ワークロードが別のノードに再割り当てされたことをノード２０８に示す。いくつかの例において、この指標は、ワークロードがノード２１２に再割り当てされたことをノード２０８に通知するものであってもよい。そして、ノード２０８は、第１のワークロードの処理を停止するようにしてもよい。
【００５８】
[0071]  当然のことながら、上記システム２００の説明は、本明細書に記載の例を制限することを意図したものではない。図２およびその説明は、いくつかの例の実現を示すことを意図しているに過ぎない。このため、図２の図示および記載内容に例が制限されることはない。
【００５９】
[0072]  図３、図４、および図５は、例に係る動作フロー３００、４００、および５００を示している。動作フロー３００、４００、および５００は、任意の適当なコンピュータ環境において実行されるようになっていてもよい。たとえば、これらの動作フローは、図１および図２に示すような環境により実行されるようになっていてもよい。したがって、動作フロー３００、４００、および５００の説明では、図１および図２の構成要素のうちの少なくとも１つを参照する場合がある。ただし、図１および図２の実施態様は、動作フロー３００、４００、および５００のための非限定的な環境であることが了解されるものとする。
【００６０】
[0073]  さらに、動作フロー３００、４００、および５００は、特定の順序で逐次的に図示および説明しているものの、他の例においては、異なる順序での実行、複数回の実行、および／または並列実行が可能である。さらに、いくつかの例においては、１つまたは複数の動作が省略されてもよいし、組み合わされてもよい。また、「第１」等の序数は、特別の定めのない限り、順序を暗示することを意図したものではなく、類似要素の識別に用いられることが了解されるものとする。たとえば、「第１の生成識別子」は、最初の生成識別子である必要がなく、「第２の生成識別子」と異なるものと解釈されるべきである。
【００６１】
[0074]  動作フロー３００は、ストレージシステムと通信しているノード等の動作を示している。例として、図３に示すフロー３００は、ワークロードを処理しているノードであるノード２１０（図２）等により実行されるようになっていてもよい。
【００６２】
[0075]  フロー３００は、動作３０２で開始となり、対象データに対するアクセス要求を送信する。アクセス要求は、第１の生成識別子、第１のワークロード識別子、および第１のワークロードと関連付けられていてもよい。一例においては、ネットワークを介して伝送されるメッセージにて第１の生成識別子が送信されるようになっていてもよい。生成識別子は、動作３０２の要求を含む同じメッセージにて伝送されるようになっていてもよいし、異なるメッセージにて伝送されるようになっていてもよい。このような例においては、＿ＮＥＴＷＯＲＫ＿ＡＰＰ＿ＩＮＳＴＡＮＣＥ＿ＶＥＲＳＩＯＮ＿ＥＣＰ＿ＣＯＮＴＥＸＴ等、生成識別子を含むオブジェクトが動作３０２で送信されるようになっていてもよいが、これに限定されない。
【００６３】
[0076]  一例においては、動作３０２での生成識別子の送信にインターフェースが用いられるようになっていてもよい。インターフェースは、クラスタ化環境において動作するノードに対して配置または利用可能とされたカーネルレベルインターフェースであってもよい。例として、カーネルレベルインターフェースを用いて、ノードが生成識別子をストレージシステムに送信することができる。以下は、動作３０２でアプリケーションインスタンス識別子を送信するために利用されるカーネルレベルインターフェースの非限定的な一例である。
[0077]  ／／
[0078]  ／／  アプリケーションがそのインスタンスＩＤを提供するためのＥＣＰコンテキスト。
[0079]  ／／
[0080]
[0081]  ｔｙｐｅｄｅｆ  ｓｔｒｕｃｔ＿ＮＥＴＷＯＲＫ＿ＡＰＰ＿ＩＮＳＴＡＮＣＥ＿ＶＥＲＳＩＯＮ＿ＥＣＰ＿ＣＯＮＴＥＸＴ  ｛
[0082]  ／／
[0083]  ／／  この構造のサイズに設定する必要がある。
[0084]  ／／
[0085]
[0086]  ＵＳＨＯＲＴ  Ｓｉｚｅ；
[0087]
[0088]  ／／
[0089]  ／／  ゼロに設定する必要がある。
[0090]  ／／
[0091]
[0092]  ＵＳＨＯＲＴ  Ｒｅｓｅｒｖｅｄ；
[0093]
[0094]  ／／
[0095]  ／／  呼び出し元は、主バージョンおよび副バージョンを設定する。
[0096]  ／／  このＥＣＰは、有効となるＮＥＴＷＯＲＫ＿ＡＰＰ＿ＩＮＳＴＡＮＣＥ＿ＥＣＰを伴う必要がある。
[0097]  ／／
[0098]  ／／
[0099]
[00100]  ＵＩＮＴ６４  ＶｅｒｓｉｏｎＨｉｇｈ；
[00101]  ＵＩＮＴ６４  ＶｅｒｓｉｏｎＬｏｗ；
[00102]
[00103]  ｝  ＮＥＴＷＯＲＫ＿ＡＰＰ＿ＩＮＳＴＡＮＣＥ＿ＶＥＲＳＩＯＮ＿ＥＣＰ＿ＣＯＮＴＥＸＴ，  ＊ＰＮＥＴＷＯＲＫ＿ＡＰＰ＿ＩＮＳＴＡＮＣＥ＿ＶＥＲＳＩＯＮ＿ＥＣＰ＿ＣＯＮＴＥＸＴ；
[00104]
[00105]  ／／
[00106]  ／／  ＧＵＩＤをＮＥＴＷＯＲＫ＿ＡＰＰ＿ＩＮＳＴＡＮＣＥ＿ＥＣＰ＿ＣＯＮＴＥＸＴ構造に使用。
[00107]  ／／  ｛６ＡＡ６ＢＣ４５−Ａ７ＥＦ−４ａｆ７−９００８−ＦＡ４６２Ｅ１４４Ｄ７４｝
[00108]  ／／
[00109]  ＤＥＦＩＮＥ＿ＧＵＩＤ（ＧＵＩＤ＿ＥＣＰ＿ＮＥＴＷＯＲＫ＿ＡＰＰ＿ＩＮＳＴＡＮＣＥ＿ＶＥＲＳＩＯＮ，  ０ｘｂ７ｄ０８２ｂ９，  ０ｘ５６３ｂ，  ０ｘ４ｆ０７，  ＯｘａＯ，  ０ｘ７ｂ，  ０ｘ５２，  ０ｘ４ａ，  ０ｘ８１，  ０ｘ１６，  ＯｘａＯ，  ０ｘ１０）；
【００６４】
[00110]  具体的なカーネルレベルインターフェースを示したが、当業者には当然のことながら、動作３０２で、他のインターフェースを利用して、生成識別子を送信するようにしてもよい。
【００６５】
[00111]  その後、フローは動作３０４へと続き、アクセス応答を受信する。判断３０６においては、対象データへのアクセスが許可されたかを判定する。たとえば、ワークロード識別子によって示されるように異なるワークロードにより対象データがロックまたは使用されていること、または、ワークロード識別子が同じワークロードを示すが、第１の生成識別子が、対象データに対する別のアクセス要求と最初に関連付けられた識別子よりも低い優先度を示すことから、アクセスが許可されない場合がある。他の例においては、対象データが依然として使用中である場合に、対象データの既存のロックを破棄すべきでないことを第１のアクセス要求が示したことから、アクセスが拒絶される場合がある。
【００６６】
[00112]  判断３０６において、対象データへのアクセスが許可された場合、フローは、動作３０８に移って、第１のワークロードの実行を継続する。動作３０８の後、動作フローは終了となる。
【００６７】
[00113]  判断３０６において、対象データへのアクセスが許可されなかった場合、フローは、判断３１０へと続き、ワークロードが再割り当てされたことをアクセス応答が示すかに関する判定を行う。
【００６８】
[00114]  判断３１０において、ワークロードが再割り当てされた旨の指標が受信された場合、フローは、動作３１２に移り、受信指標の結果として、第１のワークロードの実行を停止する。いくつかの例において、アクセス応答は、ワークロードが割り当てられたノードを示していてもよい。動作３１２の後、動作フローは終了となる。
【００６９】
[00115]  判断３１０において、ワークロードが再割り当てされた旨の指標が受信されなかった場合、フローは、動作３１４へと続き、アクセス要求を周期的に試行し、ある期間の後、動作３０２へと戻るようにしてもよい。
【００７０】
[00116]  動作フロー４００は、ワークロードを他のノードに割り当てているノード等の動作を示している。例として、フロー４００は、ワークを分散させているノードであるノード２０２（図２）等により実行されるようになっていてもよい。
【００７１】
[00117]  フロー４００は、動作４０２で開始となり、第１の生成識別子および第１のワークロード識別子を第１のワークロードと関連付ける。動作４０４においては、第１の生成識別子、第１のワークロード識別子、および第１のワークロードを第１のノードに伝達する。
【００７２】
[00118]  その後、フローは、動作４０６に移って、障害が発生する。この障害は、たとえば接続中断、ハードウェア障害、または再起動等に起因する可能性がある。判断４０８においては、許容要求が有効であるかを判定する。例として、第１のノードが通常動作中のワーカーノードであるが、そのマスターノードとの通信を停止しており、第１のワークロードがマスターノードにより再割り当てされている場合には、許容要求により、第１のノードが第１のワークロードの処理を継続可能である。上述の通り、許容要求を有効化し得る方法は２つあり、ワークをワーカーノードに割り当てるマスターノードの振る舞いは、（ａ）許容要求が有効であるか、（ｂ）許容要求（たとえば、許容フラグ）の肯定指標が有効であるかの両者の影響を受ける。許容要求が有効でない場合（たとえば、マスターノードがこれらに対応していない場合）、マスターノードは、デフォルトとして、第１の生成識別子よりも高い優先度を有する第２の生成識別子を第２のノードに提供することになる。許容要求が有効であるものの、（第２のノードもストレージシステムも）許容フラグに対応していない場合、マスターノードは、第１の生成識別子よりも優先度が低い第２の生成識別子を第２のノードに提供するようにしてもよい（これにより、ストレージシステムへの提示に際して、第２の生成識別子は、第１のノードが対象データに行う如何なる能動ワークも妨害しない）。ただし、許容フラグが有効である場合、マスターノードは、高優先度の生成識別子を生成して第２のノードに提供するようにしてもよいが、内部に設定される許容フラグ（または、このようなフラグを設定するための第２のノードに対する命令）により、第１のノードが対象データに対して任意の能動ワークを依然として行っている間、ストレージシステムが高優先度の生成識別子を無視することになる。これについては、以下に詳述する。
【００７３】
[00119]  判断４０８において、許容要求が有効でないと判定した場合、フローは、動作４１０へと続き、第１の生成識別子よりも高い優先度を示す第２の生成識別子を生成して、第１のワークロードと関連付ける。動作４１２においては、第２の生成識別子、第１のワークロード識別子、および第１のワークロードを第２のノードに伝達する。動作フローは、動作４１２において終了となる。
【００７４】
[00120]  判断４０８において、許容要求が有効であると判定した場合、フローは、判断４１４に移って、許容フラグが有効であるかを判定する。いくつかの例において、許容フラグは、より高い優先度を示す生成識別子とファイルアクセス要求が関連付けられている場合であっても、対象データが使用またはロックされている場合は、ファイルアクセス要求が許可されるべきでないことをワーカーノードがストレージシステムに示すのに有効化および使用されるようになっていてもよい。
【００７５】
[00121]  判断４１４において、許容フラグが有効であると判定した場合、フローは、動作４１６へと続き、第１の生成識別子よりも高い優先度を示す第３の生成識別子を生成して、第１のワークロードと関連付ける。動作４１８においては、許容フラグまたはストレージシステムへのアクセス要求を行う場合に第２のノードが許容フラグを設定すべきとの指標と併せて、第３の生成識別子、第１のワークロード識別子、および第１のワークロードを第２のノードに伝達する。動作４１８の後、動作フローは終了となる。
【００７６】
[00122]  判断４１４において、許容フラグが有効でないと判定した場合、フローは、動作４２０へと続き、第１の生成識別子よりも低い優先度を示す第４の生成識別子を生成して、第１のワークロードと関連付ける。動作４２２においては、第４の生成識別子、第１のワークロード識別子、および第１のワークロードを第２のノードに伝達する。フローは、動作４２４へと続き、最終的に、対象データへのアクセスに成功したことを示す通知を第２のノードから受信する。その後、フローは、動作４２６へと続き、第１の生成識別子よりも高い優先度を示す第５の生成識別子を生成して、第１のワークロードと関連付ける。動作４２８においては、第５の生成識別子を第２のノードに伝達する。動作４２８の後、動作フロー４００は終了となる。
【００７７】
[00123]  動作フロー５００は、ノードと通信するストレージシステム等の動作を示している。例として、フロー５００は、１つまたは複数のファイルサーバであるノード２１６Ａおよび／またはノード２１６Ｂ（図２）等のストレージシステムにより実行されるようになっていてもよい。
【００７８】
[00124]  フロー５００は、動作５０２で開始となり、対象データに対する第１のアクセス要求を受信する。第１のアクセス要求は、第１の生成識別子および第１のワークロード識別子と関連付けられる。いくつかの例において、第１の生成識別子および／または第１のワークロード識別子は、第１のアクセス要求の一部として含まれていてもよい。対象データに対するアクセス要求には、対象データに実行する多くのファイル操作を含んでいてもよい。これらの操作では、たとえば、開いてデータの読み出し／書き込みを行ったり、属性を列挙したり、要求をリースしてデータをローカルのキャッシュに格納したり、または、他のファイルアクセス操作を行ったりする。動作５０２の後、フロー５００は、動作５０４に移って、第１の生成識別子および第１のワークロード識別子を持続的ストレージに格納する。
【００７９】
[00125]  動作５０６においては、対象データを使用のためにロックするとともに、第１の生成識別子と関連付ける。また、対象データは、第１のワークロード識別子と関連付けられていてもよい。フロー５００は、動作５０８に移って、対象データへのアクセスを許可する。動作５１０へと続いて、対象データに対する第２のアクセス要求を受信する。第２のアクセス要求は、第２の生成識別子および／または第１のワークロード識別子と関連付けられていてもよいし、第２の生成識別子および／または第１のワークロード識別子を参照するようにしてもよい。
【００８０】
[00126]  判断５１２においては、第２の生成識別子が格納識別子よりも高い優先度を有するかを判定する。いくつかの例において、この判定は、主識別子下位部分および副識別子下位部分等、生成識別子のさまざまな下位部分が示す優先度の比較に基づいていてもよい。
【００８１】
[00127]  判断５１２において、第２の生成識別子が高い優先度を示していないと判定した場合、フローは、動作５１４へと続き、アクセス要求を拒絶するとともに対象データが使用中であることを示す。例として、このような指標には、特定のノードが対象データを使用中である旨の指標を含んでいてもよい。動作５１４の後、動作フローは終了となる。
【００８２】
[00128]  判断５１２において、第２の生成識別子が高い優先度を有すると判定した場合、フローは、動作５１６へと続き、第２のアクセス要求が許容状態であるかを判定する。判断５１６において、第２のアクセス要求が許容状態であると判定した場合、フローは、動作５１８へと続き、アクセス要求を拒絶するとともに対象データが使用中であることを示す。動作５１８の後、動作フローは終了となる。例として、第２のアクセス要求を行うノードは、対象データがロックされなくなるまで、第２のアクセス要求を試行することになる。
【００８３】
[00129]  判断５１６において、第２のアクセス要求が許容状態でないと判定した場合、動作フロー５００は、動作５２０へと進み、第１の生成識別子の代わりに、第２の生成識別子を持続的ストレージに格納する。動作５２２においては、対象データに対する第１の生成識別子と関連付けられたロックを破棄し、第２の生成識別子と関連付け可能なロックを対象データに設定する。そして、動作５２４へと続いて、アクセス要求を許可する。
【００８４】
[00130]  動作５２６においては、第３のアクセス要求を受信する。第３のアクセス要求は、第１の生成識別子および第１のワークロード識別子と関連付けられていてもよいし、第１の生成識別子および第１のワークロード識別子を参照するようにしてもよい。フローは、動作５２８へと進み、第１の生成識別子が格納生成識別子よりも高い優先度を示していないことから、第３のアクセス要求を拒絶する。さらに、対象データが再割り当てされたことを示す。そして、動作フロー５００は終了となる。
【００８５】
[00131]  図６〜図８および関連する説明では、本発明の例を実現できる多様な動作環境を論じている。ただし、図６〜図８に関して図示および記載する機器およびシステムは、例示を目的としており、本明細書に記載の本発明の例の実現に利用できる多数のコンピュータ機器構成を制限するものではない。
【００８６】
[00132]  図６は、本開示の例を実現可能なノード２０２、２０４、２０６、２０８、２１０、２１２、２１４、２１６Ａ、および２１６Ｂ等のコンピュータ機器６０２の物理的な構成要素を示したブロック図である。以下に記載するコンピュータ機器の構成要素は、上述のコンピュータ機器に適していてもよい。基本的な構成において、コンピュータ機器６０２は、少なくとも１つの処理ユニット６０４およびシステムメモリ６０６を具備していてもよい。コンピュータ機器の構成および種類に応じて、システムメモリ６０６は、揮発性ストレージ（たとえば、ランダムアクセスメモリ）、不揮発性ストレージ（たとえば、リードオンリーメモリ）、フラッシュメモリ、またはこのようなメモリの任意の組み合わせを含んでいてもよいが、これらに限定されない。システムメモリ６０６は、オペレーティングシステム６０７と、生成識別子６２６と関連付けられたワークロード６２４等のソフトウェアアプリケーション６２０の実行に適した１つまたは複数のプログラムモジュール６０８とを具備していてもよい。オペレーティングシステム６０７は、たとえばコンピュータ機器６０２の動作の制御に適していてもよい。さらに、本発明の例は、グラフィックスライブラリ、他のオペレーティングシステム、またはその他任意のアプリケーションプログラムと併せて実現されるようになっていてもよく、また、任意特定のアプリケーションまたはソフトウェアに限定されない。この基本的な構成は、点線６２２内の構成要素によって、図６に示している。コンピュータ機器６０２は、別の特徴または機能を有していてもよい。たとえば、コンピュータ機器６０２は、磁気ディスク、光ディスク、またはテープ等の別のデータ記憶装置（リムーバブルおよび／または非リムーバブル）を具備していてもよい。このような別のストレージは、リムーバブル記憶装置６０９および非リムーバブル記憶装置６１０によって、図６に示している。
【００８７】
[00133]  上述の通り、システムメモリ６０６には、多くのプログラムモジュールおよびデータファイルが格納されていてもよい。処理ユニット６０４での実行中、プログラムモジュール６０８（たとえば、生成識別子６２６と関連付けられたワークロード６２４）は、図３、図４、および図５に示す動作フロー３００、４００、および５００の段階のうちの１つまたは複数等のプロセスを実行するようにしてもよいが、これらに限定されない。本発明の例に従って使用可能な他のプログラムモジュールとしては、電子メールおよび連絡アプリケーション、文書処理アプリケーション、スプレッドシートアプリケーション、データベースアプリケーション、スライドプレゼンテーションアプリケーション、描画またはコンピュータ支援アプリケーションプログラムが挙げられる。
【００８８】
[00134]  さらに、本発明の例は、離散的電子素子を含む電気回路、論理ゲートを含むパッケージまたは集積電子チップ、マイクロプロセッサを利用した回路、または電子素子もしくはマイクロプロセッサを含む単一チップ上で実現されるようになっていてもよい。たとえば、本発明の例は、システムオンチップ（SOC）によって実現されるようになっていてもよく、図６に示す構成要素のそれぞれまたは多くは、単一の集積回路上に集積されていてもよい。このようなＳＯＣデバイスは、１つまたは複数の処理ユニット、グラフィックスユニット、通信ユニット、システム仮想化ユニット、およびさまざまなアプリケーション機能を具備していてもよく、これらはすべて、単一の集積回路としてチップ基板上に集積（または、「焼き付け」）されている。ＳＯＣによる動作の場合、本明細書に記載の機能は、コンピュータ機器６０２の他の構成要素とともに単一の集積回路（チップ）上に集積された特定用途向けロジックを介して動作するようになっていてもよい。また、本開示の例は、たとえばＡＮＤ、ＯＲ、およびＮＯＴ等の論理演算を実行可能な他の技術を用いて実現されるようになっていてもよく、機械的、光学的、流体的、および量子的な技術が挙げられるが、これらに限定されない。また、本発明の例は、汎用コンピュータまたはその他任意の回路もしくはシステムにおいて実現されるようになっていてもよい。
【００８９】
[00135]  また、コンピュータ機器６０２は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置等の１つまたは複数の入力装置６１２を有していてもよい。また、ディスプレイ、スピーカ、プリンタ等の出力装置６１４が備えられていてもよい。上記機器は例であり、これら以外が用いられるようになっていてもよい。コンピュータ機器６０２は、他のコンピュータ機器６１８との通信を可能にする１つまたは複数の通信接続６１６を具備していてもよい。適当な通信接続６１６の例としては、ＲＦ送信機、受信機、および／または送受信機回路や、ユニバーサルシリアルバス（USB）、パラレル、および／またはシリアルポートが挙げられるが、これらに限定されない。
【００９０】
[00136]  本明細書において、コンピュータ可読媒体という用語には、コンピュータ記憶媒体を含む場合がある。コンピュータ記憶媒体としては、コンピュータ可読命令、データ構造、またはプログラムモジュール等の情報を格納する任意の方法または技術において実装される揮発性および不揮発性のリムーバブルおよび非リムーバブル媒体が挙げられる。システムメモリ６０６、リムーバブル記憶装置６０９、および非リムーバブル記憶装置６１０はすべて、コンピュータ記憶媒体の例（すなわち、メモリストレージ）である。コンピュータ記憶媒体としては、ＲＡＭ、ＲＯＭ、電気的消去可能なリードオンリーメモリ（EEPROM）、フラッシュメモリ等のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（DVD）等の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ等の磁気記憶装置、または情報の格納に使用可能であるとともにコンピュータ機器６０２がアクセス可能なその他任意の製造品が挙げられる。このような任意のコンピュータ記憶媒体は、コンピュータ機器６０２の一部であってもよい。コンピュータ記憶媒体には、搬送波等の伝搬または変調データ信号を含まない。
【００９１】
[00137]  通信媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または搬送波もしくは他の搬送機構等の変調データ信号における他のデータにより具現化されていてもよく、任意の情報送達媒体を含む。用語「変調データ信号」は、１つもしくは複数の特性集合を有する信号または信号中の情報を符号化するように変更された信号を表す場合がある。非限定的な一例として、通信媒体としては、有線ネットワークまたは有線直結通信等の有線媒体および音響、無線周波数（RF）、赤外線等の無線媒体が挙げられる。
【００９２】
[00138]  図７Ａおよび図７Ｂは、たとえば携帯電話、スマートフォン、タブレットパソコン、ラップトップコンピュータ等、本発明の例を実現可能なモバイルコンピュータ機器７００を示している。たとえば、モバイルコンピュータ機器７００は、ノード２０２、２０４、２０６、２０８、２１０、２１２、および２１４の実装に用いられるようになっていてもよい。図７Ａには、上記例を実現するモバイルコンピュータ機器７００の一例を示している。基本的な構成において、モバイルコンピュータ機器７００は、入力素子および出力素子の両者を有する手持ち式のコンピュータである。モバイルコンピュータ機器７００は通常、ディスプレイ７０５と、ユーザによるモバイルコンピュータ機器７００への情報入力を可能にする１つまたは複数の入力ボタン７１０とを具備する。また、モバイルコンピュータ機器７００のディスプレイ７０５が入力装置（たとえば、タッチスクリーンディスプレイ）として機能するようになっていてもよい。任意選択としての側面入力素子７１５が備わっている場合は、これによってもユーザ入力が可能である。側面入力素子７１５は、回転スイッチ、ボタン、またはその他任意の種類の手動入力素子であってもよい。別の例において、モバイルコンピュータ機器７００の入力素子は、これらより多くても少なくてもよい。たとえば、いくつかの例において、ディスプレイ７０５は、タッチスクリーンでなくてもよい。さらに別の例において、モバイルコンピュータ機器７００は、セル方式電話等の携帯電話システムである。また、モバイルコンピュータ機器７００は、任意選択としてのキーパッド７３５を具備していてもよい。任意選択としてのキーパッド７３５は、物理的なキーパッドであってもよいし、タッチスクリーンディスプレイ上に生成される「ソフト」キーパッドであってもよい。さまざまな例において、出力素子としては、グラフィカルユーザインターフェース（GUI）を表示するディスプレイ７０５、視覚的表示器７２０（たとえば、発光ダイオード）、および／または音声トランスデューサ７２５（たとえば、スピーカ）が挙げられる。いくつかの例において、モバイルコンピュータ機器７００は、ユーザに触覚フィードバックを提供する振動トランスデューサを内蔵する。さらに別の例において、モバイルコンピュータ機器７００は、音声入力（たとえば、マイクジャック）、音声出力（たとえば、ヘッドホンジャック）、および外部機器に対する信号送信または信号受信を行う映像出力（たとえば、HDMIポート）等の入力および／または出力ポートを内蔵する。
【００９３】
[00139]  図７Ｂは、モバイルコンピュータ機器の一例のアーキテクチャを示したブロック図である。すなわち、モバイルコンピュータ機器７００は、いくつかの例を実現するシステム（すなわち、アーキテクチャ）７０２を内蔵可能である。一例において、システム７０２は、１つまたは複数のアプリケーション（たとえば、ブラウザ、電子メール、カレンダ、予定管理、メッセージクライアント、ゲーム、およびメディアクライアント／プレーヤ）を実行可能な「スマートフォン」として実装される。いくつかの例において、システム７０２は、個人用統合情報端末（PDA）および無線電話等のコンピュータ機器として統合されている。
【００９４】
[00140]  １つまたは複数のアプリケーションプログラム７６６がメモリ７６２にロードされ、オペレーティングシステム７６４上またはオペレーティングシステム７６４との関連で動作するようになっていてもよい。アプリケーションプログラムの例としては、電話ダイヤラプログラム、電子メールプログラム、個人情報管理（PIM）プログラム、文書処理プログラム、スプレッドシートプログラム、インターネットブラウザプログラム、メッセージングプログラム等が挙げられる。また、システム７０２は、メモリ７６２内に不揮発性の記憶領域７６８を具備する。不揮発性記憶領域７６８は、システム７０２の電源を落とした場合に失われない持続的情報の格納に用いられるようになっていてもよい。アプリケーションプログラム７６６は、電子メールアプリケーション等が使用する電子メールまたは他のメッセージ等の情報を使用するとともに、不揮発性記憶領域７６８に格納するようにしてもよい。また、システム７０２には、同期アプリケーション（図示せず）も存在しており、ホストコンピュータ上の対応する同期アプリケーションと相互作用して、不揮発性記憶領域７６８に格納された情報がホストコンピュータに格納された対応情報と同期し続けるようにプログラムされている。当然のことながら、本明細書に記載の生成識別子７８２と関連付けられたワークロード７８０等、他のアプリケーションがメモリ７６２にロードされ、モバイルコンピュータ機器７００上で動作するようになっていてもよい。
【００９５】
[00141]  システム７０２は、１つまたは複数のバッテリとして実現可能な電源７７０を有する。電源７７０は、ＡＣアダプタまたはバッテリを補完もしくは充電する給電ドッキングクレードル等の外部電源をさらに具備し得る。
【００９６】
[00142]  システム７０２は、当該システム７０２と１つまたは複数の周辺機器との間の接続を容易化する機能を実行する周辺機器ポート７７８を具備していてもよい。周辺機器ポート７７８に対する伝送は、オペレーティングシステム７６４の制御下で行われる。言い換えると、周辺機器ポート７７８が受信する情報は、オペレーティングシステム７６４を介してアプリケーションプログラム７６６に伝わり、逆も同様である。
【００９７】
[00143]  また、システム７０２は、無線周波数情報を送信および受信する機能を実行する無線装置７７２を具備していてもよい。無線装置７７２は、通信キャリアまたはサービスプロバイダを介したシステム７０２と「外界」との間の無線接続を容易化する。無線装置７７２に対する伝送は、オペレーティングシステム７６４の制御下で行われる。言い換えると、無線装置７７２が受信する情報は、オペレーティングシステム７６４を介してアプリケーションプログラム７６６に伝わり、逆も同様である。
【００９８】
[00144]  また、視覚的通知を提供するための視覚的表示器７２０の使用および／または音声トランスデューサ７２５を介した可聴通知の生成のための音声インターフェース７７４の使用が可能である。図示の例において、視覚的表示器７２０は発光ダイオード（LED）であり、音声トランスデューサ７２５はスピーカである。これらの機器は、バッテリ電力を節約するためにプロセッサ７６０等の構成要素を停止した場合であっても、起動後、通知機構が指示する期間にわたってオン状態を維持するように、電源７７０に直接結合されていてもよい。ＬＥＤは、機器の電源オン状態を示す措置をユーザが講じるまで、無制限にオン状態を維持するようにプログラムされていてもよい。音声インターフェース７７４は、ユーザに対する可聴信号の提供および可聴信号の受信に用いられる。たとえば、音声トランスデューサ７２５への結合のほか、音声インターフェース７７４は、通話の容易化等のため、マイクへの結合により、可聴入力を受信するようになっていてもよい。本発明の例によれば、マイクは、以下に説明する通り、通知の制御を容易化する音声センサとして機能するようになっていてもよい。システム７０２は、内蔵カメラ７３０の動作によって静止画像、映像ストリーム等を記録可能な映像インターフェース７７６をさらに具備していてもよい。
【００９９】
[00145]  システム７０２を実装したモバイルコンピュータ機器７００は、別の特徴または機能を有していてもよい。たとえば、モバイルコンピュータ機器７００は、磁気ディスク、光ディスク、またはテープ等の別のデータ記憶装置（リムーバブルおよび／または非リムーバブル）を具備していてもよい。このような別のストレージは、不揮発性記憶領域７６８によって、図７Ｂに示している。
【０１００】
[00146]  モバイルコンピュータ機器７００により生成または取得され、システム７０２を介して格納されたデータ／情報は、上述の通り、モバイルコンピュータ機器７００上でローカルに格納されていてもよいし、無線装置７７２またはモバイルコンピュータ機器７００とインターネット等の分散コンピュータネットワークのサーバコンピュータ等、モバイルコンピュータ機器７００と関連付けられた別個のコンピュータ機器との間の有線接続を介して機器がアクセス可能な任意数の記憶媒体に格納されていてもよい。当然のことながら、このようなデータ／情報は、モバイルコンピュータ機器７００、無線装置７７２、または分散コンピュータネットワークを介してアクセスされるようになっていてもよい。同様に、このようなデータ／情報は、電子メールおよび協調型データ／情報共有システム等、周知のデータ／情報伝送・格納手段により、コンピュータ機器間で容易に伝送されて格納および使用されるようになっていてもよい。
【０１０１】
[00147]  図８は、上述の通り、分散ワークロードを処理するとともに障害を取り扱うクラスタを１つまたは複数のクライアント機器に提供するシステムのアーキテクチャの一例を示している。ノード２０２、２０４、２０６、２０８、２１０、２１２、または２１４との関連でアクセス、相互作用、または編集される対象データは、異なる通信チャネルまたは他種のストレージに格納されるようになっていてもよい。たとえば、ディレクトリサービス８２２、ウェブポータル８２４、メールボックスサービス８２６、インスタントメッセージストア８２８、またはソーシャルネットワーキングサイト８３０を用いて、さまざまな文書が格納されるようになっていてもよい。ノード２１０等、ワークロードを処理するノードは、本明細書に記載の通り、データの利用を可能にするこれらの種類のシステム等のいずれかを使用するようにしてもよい。サーバ８２０は、ネットワーク８１５を介して、汎用コンピュータ機器６０２およびモバイル機器７００上で動作するノード２０８、２１０、２１２、および２１４が使用するストレージシステム２１６を提供するようにしてもよい。一例として、ネットワーク８１５は、インターネットまたはその他任意の種類のローカルもしくはワイドエリアネットワークを含んでいてもよく、ノード２０２、２０４、２０６、２０８、２１０、２１２、および２１４は、パソコン、タブレットコンピュータ機器、および／またはモバイルコンピュータ機器７００（たとえば、スマートフォン）にて具現化されたコンピュータ機器６０２として実装されていてもよい。クライアントコンピュータ機器６０２または７００のこれら実施形態のいずれかが、ストア８１６からコンテンツを取得するようにしてもよい。
【０１０２】
[00148]  本開示は、少なくとも１つのプロセッサと、当該少なくとも１つのプロセッサに対して動作可能に接続され、当該少なくとも１つのプロセッサにより実行された場合に、第１の生成識別子および第１のワークロード識別子を第１のワークロードと関連付けるステップと、第１の生成識別子、第１のワークロード識別子、および第１のワークロードを第１のノードに伝達するステップと、第１のノードとの通信障害時に、第２の生成識別子を生成し、第２の生成識別子を第１のワークロードと関連付け、第２の生成識別子、第１のワークロード識別子、および第１のワークロードを第２のノードに伝達するステップであって、第２の生成識別子が、第１の生成識別子と異なる優先度を伝達する、ステップと、を含む方法を実行する命令を含むメモリと、を備えたシステムを含む。例として、通信障害には、ノードの切断、ハードウェア障害、または再起動のうちの少なくとも１つを含む。また、第２の生成識別子は、第１の生成識別子よりも高い優先度を伝達するようにしてもよい。他の例において、第２の生成識別子は、第１の生成識別子よりも低い優先度を伝達するようにしてもよい。別の例において、これらのシステムおよび方法は、第２のノードから成功の指標を受信するステップと、第１の生成識別子よりも高い優先度を伝達する第３の生成識別子を生成するステップと、第３の生成識別子を第１のワークロードと関連付けるステップと、第３の生成識別子を第２のノードに伝達するステップと、をさらに含む。さらに、第２の生成識別子を伝達するステップは、第１のノードが依然として第１のワークロードを処理していると判定された場合に、第２のノードが第１のノードを妨害すべきではない旨の指標を送信するステップを含んでいてもよい。また、例として、第１および第２の生成識別子はそれぞれ、少なくとも２つの下位部分で構成され、これら少なくとも２つの下位部分がそれぞれ優先度を伝達する。さらに、例として、少なくとも２つの下位部分のうちの１つによる優先度の指標が、少なくとも２つの下位部分のうちの別の下位部分により示される優先度が先行するように、少なくとも２つの下位部分それぞれにより伝達される優先度が重み付けされている。
【０１０３】
[00149]  数ある例の中で、本開示は、対象データに対する第１のアクセス要求を受信することであって、対象データがストレージシステムにより格納され、第１のアクセス要求が第１の生成識別子および第１のワークロード識別子と関連付けられた、ことと、第１の生成識別子および第１のワークロード識別子を第１の格納生成識別子および第１の格納ワークロード識別子として持続的ストレージに格納することと、対象データに対する第１のアクセス要求を許可することと、対象データに対する第２のアクセス要求を受信することであって、第２のアクセス要求が第２の生成識別子および第１のワークロード識別子と関連付けられた、ことと、第２の生成識別子を第１の格納生成識別子と比較し、第１のワークロード識別子を第１の格納ワークロード識別子と比較することと、第２の生成識別子が第１の格納生成識別子よりも高い優先度を示し、第１のワークロード識別子が第１の格納ワークロード識別子に一致するものと判定することと、第２の生成識別子を第２の格納生成識別子として持続的ストレージに格納することと、対象データに対する第２のアクセス要求を許可することと、対象データに対する第３のアクセス要求を受信することであって、第３のアクセス要求が第１の生成識別子および第１のワークロード識別子と関連付けられた、ことと、第１の生成識別子が第２の格納生成識別子よりも低い優先度を示し、第１のワークロード識別子が第１の格納ワークロード識別子に一致するものと判定することと、対象データに対する前記第３のアクセス要求を拒絶することと、を行うシステムおよび方法を提示する。例として、第１のアクセス要求および第３のアクセス要求は、第１のノードから受信され、第２のアクセス要求は、第２のノードから受信され、対象データに対する第３のアクセス要求を拒絶することは、第１のワークロードが第２のノードに対して再割り当てされた旨の指標を第１のノードに提供することを含む。別の例として、第３のアクセス要求を拒絶することは、第１の生成識別子が第２の格納生成識別子よりも低い優先度を示す旨の指標を提供することを含む。別の例として、これらのシステムおよび方法は、対象データに対する第４のアクセス要求を第２のノードから受信することであって、第４のアクセス要求が第３の生成識別子および第１のワークロード識別子と関連付けられ、要求が許容状態である旨の指標を含む、ことと、第３の生成識別子が第２の格納生成識別子よりも高い優先度を示すものと判定することと、ストレージシステムが依然として第１のノードと通信可能であるものと判定することと、対象データに対する第４のアクセス要求を拒絶することと、をさらに含む。さらに、例として、第４のアクセス要求を拒絶することは、ストレージシステムが依然として第１のノードと通信可能である旨の指標を第２のノードに提供することを含む。他の例において、これらのシステムおよび方法は、第１のアクセス要求の許可に際して、対象データをロックすることと、第２のアクセス要求の許可後、対象データのロックを解除して、第１の格納生成識別子を持続的ストレージから削除することと、を含む。また、例として、第１、第２、および第３の生成識別子はそれぞれ、少なくとも２つの下位部分で構成され、これら少なくとも２つの下位部分がそれぞれ優先度を伝達する。さらに、少なくとも２つの下位部分のうちの１つによる優先度の指標が、少なくとも２つの下位部分のうちの別の下位部分により示される優先度が先行するように、少なくとも２つの下位部分それぞれにより伝達される優先度が重み付けされていてもよい。
【０１０４】
[00150]  本明細書の別の記載は、対象データに対する第１のアクセス要求をストレージシステムに送信することであって、第１のアクセス要求が第１の生成識別子と、第１のノード上で実行する第１のワークロードと関連付けられた第１のワークロード識別子と関連付けられた、ことと、対象データへのアクセスを許可する第１のアクセス応答を受信することと、第１のアクセス応答の受信後、対象データへのアクセスが許可された旨の指標を第２のノードに送信することと、後続のアクセス要求における使用のために第２の生成識別子を受信することと、対象データに対する第２のアクセス要求をストレージシステムに送信することであって、第２のアクセス要求が第２の生成識別子および第１のワークロード識別子と関連付けられた、ことと、対象データへのアクセスを許可する第２のアクセス応答を受信することと、を行うシステムおよび方法を開示する。別の例において、これらのシステムおよび方法は、対象データに対する第３のアクセス要求をストレージシステムに送信することであって、第３のアクセス要求が第２の生成識別子および第１のワークロード識別子と関連付けられた、ことと、対象データへのアクセスを拒絶するとともに、第１のワークロードに関して、対象データへのアクセスが第３のノードに再割り当てされた旨の指標を含む第３のアクセス応答を受信することと、受信した第３のアクセス応答の結果として、第１のノード上での第１のワークロードの実行を停止することと、を含む。さらに、例として、第１のアクセス要求は、当該第１のアクセス要求が許容状態である旨の指標を含む。他の例において、第３のアクセス応答は、第１のノードと第２のノードとの間の通信障害後に受信される。
【０１０５】
[00151]  本明細書の全体を通して、「一例（one exampleまたはan example）」という表現は、記載された特定の特徴、構造、または特性が少なくとも１つの例に含まれることを意味する。したがって、このような表現の使用は、２つ以上の例を表す場合がある。さらに、上記特徴、構造、または特性は、１つまたは複数の例において、任意適当に組み合わせ可能である。
【０１０６】
[00152]  ただし、当業者であれば、具体的詳細のうちの１つまたは複数を用いることなく、または、他の方法、リソース、材料等を用いて、上記例を実現可能であることが認識されよう。他の例では、周知の構造、リソース、または動作について、詳細な図示も説明も行っていないが、これは単に、上記例の曖昧な態様を確認可能とするためである。
【０１０７】
[00153]  以上、例および用途を図示および説明したが、これらの例は、上述の厳密な構成およびリソースに限定されないことが了解されるものとする。特許請求の範囲に係る例の範囲から逸脱することなく、本明細書に開示の方法およびシステムの構成、動作、および詳細について、当業者に明らかな種々改良、変更、および変形を行うことができる。
【図１】
0006654183.tif 000002
【図２】
0006654183.tif 000003
【図３】
0006654183.tif 000004
【図４】
0006654183.tif 000005
【図５】
0006654183.tif 000006
【図６】
0006654183.tif 000007
【図７Ａ】
0006654183.tif 000008
【図７Ｂ】
0006654183.tif 000009
【図８】
0006654183.tif 000010