JP6654183B2 - 通信障害後の分散ワークロード再割り当て - Google Patents

通信障害後の分散ワークロード再割り当て Download PDF

Info

Publication number
JP6654183B2
JP6654183B2 JP2017503008A JP2017503008A JP6654183B2 JP 6654183 B2 JP6654183 B2 JP 6654183B2 JP 2017503008 A JP2017503008 A JP 2017503008A JP 2017503008 A JP2017503008 A JP 2017503008A JP 6654183 B2 JP6654183 B2 JP 6654183B2
Authority
JP
Japan
Prior art keywords
identifier
node
workload
access request
generation identifier
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017503008A
Other languages
English (en)
Other versions
JP2017530437A5 (ja
JP2017530437A (ja
Inventor
クルーゼ,デイビッド
チュー,キーボ
ディオン,デイビッド
ペッター,ウラジミール
シュリーニバス コッポル,ロケシュ
シュリーニバス コッポル,ロケシュ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2017530437A publication Critical patent/JP2017530437A/ja
Publication of JP2017530437A5 publication Critical patent/JP2017530437A5/ja
Application granted granted Critical
Publication of JP6654183B2 publication Critical patent/JP6654183B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2046Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share persistent storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • G06F16/1774Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/465Distributed object oriented systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1034Reaction to server failures by a load balancer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Hardware Redundancy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Small-Scale Networks (AREA)
  • Maintenance And Management Of Digital Transmission (AREA)

Description

[0001] ワークロードが複数のマシンに分散した環境等のクラスタ化環境は通常、分散ワークロードのフェイルオーバーおよび高可用性処理を提供するのに用いられる。クラスタ化環境によれば、環境の一部である1つまたは複数のノードに対して、ワークロードを分散可能である。クラスタ化環境は、クライアント、サーバ、または両者として機能し得る。クラスタにおいては、マスターノードにより、当該クラスタを構成するワーカーノードに対してワークロードが分散する可能性がある。ワーカーノードは、ストレージシステムにより格納された対象データに対するアクセス要求を発行する場合がある。マスターノードとワーカーノードとの間にエラーが生じた場合、ワーカーノードは、マスターノードを把握せずにワークロードを処理し続ける可能性がある。さらに、マスターノードは、ワーカーノードを把握せずにワークロードを異なるノードに再割り当てする可能性がある。
[0002] 上記および他の検討事項に関しては、例が挙げられている。また、比較的具体的な問題が論じられているものの、これらの例は、背景で特定される具体的な問題の解決に限定されるべきではないことが了解されるものとする。
[0003] この概要は、簡単な形で概念を抜粋して紹介するものであり、以下の詳細な説明の項において詳述する。この概要は、特許請求の範囲に係る主題の重要な特徴または本質的な特徴を識別することを意図したものでもなければ、特許請求の範囲に係る主題の範囲の決定の補助として用いることを意図したものでもない。
[0004] 本明細書に開示のシステムおよび方法は、ワークロードが新しいノードに再割り当てされた状況およびワークロードが依然として古いノードにより処理されている状況を識別する機構を提供する。いくつかの態様によれば、マスターノードがワークロードをワーカーノードに割り当てる。マスターノードは、ワークロードと併せて、生成識別子およびワークロード識別子を伝達するようにしてもよい。ワークロードを処理する場合、ワーカーノードは、ストレージクラスタのノードにアクセス要求を送信して、対象データにアクセスする。例として、生成識別子およびワークロード識別子は、リソースを要求するノードおよび/または関連するワークロードの識別に用いられる。生成識別子および/またはワークロード識別子は、要求と併せて提供されるようになっていてもよい。ノードが対象データにアクセスした場合、生成識別子および/またはワークロード識別子は、持続的ストレージに格納され、要求された対象データと関連付けられる。
[0005] ノードがワークロードの実行を完了する前に、障害が発生して、マスターノードがワーカーノードと通信できなくなる可能性がある。たとえば、ノードの再起動、ハードウェア障害の発生、通信リンクの障害等の可能性がある。このような状況において、マスターノードは、ワーカーノードの状態に気付かない。ただし、ワーカーノードは、依然としてストレージシステムにアクセス可能であり、ワークロードの処理およびファイルアクセス要求の発行を継続している可能性がある。障害時、マスターノードは、ワークロードを新しいワーカーノードに再割り当てするようにしてもよい。また、いくつかの例において、マスターノードは、ワークロード識別子およびワークロードと併せて、異なる生成識別子を伝達するようにしてもよい。新しいワーカーノードは、ワークロードの処理を開始した場合、ストレージクラスタのノードにアクセス要求を送信して、対象データにアクセスする。いくつかの例において、新しい生成識別子および/またはワークロード識別子は、要求と併せて提供されるようになっていてもよい。新しい生成識別子は、古い生成識別子よりも高い優先度を示していてもよい。新しいノードが対象データにアクセスした場合、新しい生成識別子は、持続的ストレージに格納され、要求された対象データと関連付けられる。この生成識別子によれば、要求を管理するストレージシステムは、ワークロードが新しいノードに再割り当てされたものと判定することができる。こうすることにより、ストレージシステムは、ワークロードが再割り当てされたことを古いノードに示すことができる。その結果、古いノードは、ワークロードの処理を停止可能である。さらに、古いノードは、ストレージシステムから再割り当て指標を受信していない場合、ワークロードが再割り当てされていないことが、古いノードに対して保証される。
[0006] 他の例においては、新しい生成識別子が古い生成識別子よりも低い優先度を示していてもよいし、新しいノードが「許容」アクセス要求を発行していてもよい。いずれの場合も、古いノードが依然としてワークロードを処理している間は、新しいノードがワークロードの処理を開始しない。その代わり、新しいノードは、古いノードが依然として作業中である旨の指標を受信し、その結果として、後続のアクセス要求を周期的に発行することにより、最終的に古いノードが処理を終えた場合にアクセスを得るようにしてもよい。こうすることにより、動作を中断してワークロードを新しいノードで再開するのではなく、古いノードはワークロードの処理を継続することができる。
[0007] コンピュータプロセス、コンピュータシステム、またはコンピュータプログラム製品もしくはコンピュータ可読媒体等の製造品として例を実現するようにしてもよい。コンピュータプログラム製品は、コンピュータシステムによって読み込み可能であり、コンピュータプロセスを実行する命令のコンピュータプログラムを符号化したコンピュータ記憶媒体であってもよい。
[0008] 以下の図面を参照して、非限定的かつ非網羅的な例を説明する。
[0009]本明細書に記載の例の実現に使用可能なシステムを示した図である。 [0010]本明細書に記載の例の実現に使用可能なシステムを示した図である。 [0011]ストレージシステムと通信するノードの動作フローを示した図である。 [0012]ワークロードを他のノードに割り当てるノードの動作フローを示した図である。 [0013]ノードと通信するストレージシステムの動作フローを示した図である。 [0014]本発明の態様を実現可能なコンピュータ機器の一例を示したブロック図である。 [0015]本発明の態様を実現可能なモバイルコンピュータ機器の簡易ブロック図である。 本発明の態様を実現可能なモバイルコンピュータ機器の簡易ブロック図である。 [0016]本発明の態様を実現可能な分散コンピュータシステムの簡易ブロック図である。
[0017] 以下、本明細書の一部を構成するとともに具体的かつ例示的な態様を示す添付の図面を参照して、種々の態様を詳述する。ただし、多くの異なる形態にて例を実現可能であるため、本明細書に示す例に限定されないものと解釈すべきである。したがって、ハードウェア実施態様、完全なソフトウェア実施態様、またはソフトウェアおよびハードウェアの態様を組み合わせた実施態様としての例の形態が可能である。このため、以下の詳細な説明は、限定的な意味で捉えられないものとする。
[0018] 本開示の例は、ワークロードが再割り当てされた場合にストレージシステムがノードに通知できるようにすることで分散ワークロードの高可用性処理を提供することに関する。例として、ストレージシステムは、ローカル機器、ネットワーク接続型記憶装置、分散ファイルサーバ、またはコンピュータ環境におけるその他任意の種類のストレージシステムであってもよい。ノードは、「マスター」ノードにより割り当てられたワークロードを「ワーカー」ノードが処理するクラスタの一部であってもよい。いくつかの例において、クラスタは、複数の層で構成されていてもよく、低層のワーカーノードが高層のマスターノードからワークロードの割り当てを受ける。他の例では、クラスタが1つの層のみを有していてもよく、各ノードがワーカーノード、マスターノード、または両者として振る舞うようになっていてもよい。
[0019] 一例においては、ワーカーノードがマスターノードからワークロードを割り当てられるようになっていてもよい。一方、ワーカーノードは、下位のワーカーノードのマスターノードとして機能するようになっていてもよく、その結果、下位のワーカーノードのうちの1つに対してワークロードをさらに分散させるようにしてもよい。ノードは、ネットワークを介して接続されていてもよい。当業者には当然のことながら、本明細書に開示のシステムおよび方法は、仮想ネットワーク等のその他任意の種類の環境において採用されるようになっていてもよいが、これに限定されない。
[0020] データは、複数の要求元に共有されるようになっていてもよい。本明細書において、要求元には、任意のノード、アプリケーション、ワークロード、スレッド、または対象データへのアクセスを要求する他のプロセスもしくはエンティティを含んでいてもよい。本明細書に記載の例は、要求元として機能する「アプリケーション」、「クライアント」、「ノード」、または「ワークロード」に関して説明する場合があるものの、本開示はこれに限定されない。要求元が対象データにアクセスした場合は、対象データがロックされることにより、ロックが解除されるまで他の要求元のアクセスが禁止されるようになっていてもよい。対象データのロックにより、矛盾に対する保護がなされるようになっていてもよい。すなわち、アクセスしている要求元がその動作を実行する前に、別の要求元によって対象データが変更されることから保護するようになっていてもよい。通常、いくつかの例においては、ロックが許可されている場合、別の要求元がロックを先行し得る。たとえば、ストレージシステムは、要求元によりアクセス要求において提示または参照されるワークロード識別子を用いてロックを維持するようにしてもよい。
[0021] 場合により、ワーカーノードとのマスターノードの通信に影響する障害が発生した場合は、マスターノードがワーカーノードの状態に気付かなくなる可能性がある。たとえば、この障害は、マスターノードとワーカーノードとの間の通信問題の結果の場合もあれば、ワーカーノードの再起動の結果の場合もある。結果として、ワーカーノードは、通常動作していることから、依然としてワークロードを処理している場合もあれば、障害が発生してワークロードがもはや処理されていない場合もある。さらに、ワーカーノードは、ストレージシステムにより格納されたファイル情報に依然としてアクセス可能な場合もある。たとえば、ストレージシステムは、マスターノードと異なるネットワーク経路を介してアクセス可能であってもよい。
[0022] 障害により、マスターノードは、ワークロードを別のワーカーノードに再割り当てするようにしてもよい。その結果、新しいワーカーノードは、古いワーカーノードによりロックされているデータまたは過去にロックされたデータに対するアクセスを要求するようにしてもよい。いくつかの例において、ストレージシステムは、新しいノードからのアクセス要求と関連付けられたワークロード識別子が古いノードによる対象データのロックに一致するものと判定するようにしてもよい。そして、ストレージシステムは、古いロックを破棄して、対象データに新しいロックを設定する。
[0023] ただし、古いノードが依然としてワークロードを処理している場合は、対象データに対する古いノードからのアクセス要求によって、上記と同じ振る舞いがなされることになる。ストレージシステムは、古いノードのアクセス要求がワークロード識別子と関連付けられているものと判定し、新しいノードのロックを破棄して、対象データに古いノードのための別のロックを設定することになる。その結果、2つのノードは、同じ対象データのロックを再取得し続け、他方のノードの存在に気付かなくなる可能性がある。これは、クラスタの性能に悪影響を及ぼし得る。たとえば、これにより、たとえば後で符号化プロセスの再開が必要となる映像符号化ワークロードの中断など、古いノードによる処理の終了ではなくワークロード処理の再開が必要となる、ワークロードの処理または中断の処理、が遅延する可能性がある。本明細書に開示のシステムおよび方法は、ワークロードが新しいノードに再割り当てされた状況およびワークロードが依然として古いノードにより処理されている状況を識別する機構を提供することによって、障害後のワークロード処理に対する影響を緩和する。
[0024] 図1は、いくつかの例の実現に使用可能なシステム100を示している。システム100は、ノード102、104、および106のほか、ストレージシステム108を具備する。図示の例において、ノード102は、ノード104および106のマスターノードとして機能する。ノード104および106は、ワーカーノードとして機能し、ノード102により割り当てられたワークロードを処理する。ストレージシステム108は、ノード104および106がアクセスする情報を格納する。図1は、ノード104および106のみがストレージシステム108と通信するものとして示しているが、他の例では、ワーカーノードとして機能するとともにストレージシステム108からの情報にアクセスするノードが3つ以上存在していてもよい。また、図1は、ノード102のみがノード104および106に関するマスターノードとして機能するものとして示しているが、他の例では、ワークロードをワーカーノードに割り当てるマスターノードが2つ以上存在していてもよい。
[0025] 一例によれば、ノード102、104、および106は、分散ワークロードの高可用性処理の提供に利用される。これは、マスターノード102とワーカーノード104および106との間に障害が発生した場合に、ノード102、104、および106、ならびにストレージシステム108上の構成要素を利用して、ワークロードを分割するとともに、ワークをさまざまなノードに再分散させることによって実現される。以下に詳述する通り、ワークロードが再割り当てされる場合にノードに提供される再割り当て通知によって、ノードクラスタは、分散ワークロードの高可用性処理を提供することができる。例として、ノード104および106は、サーバメッセージブロック(SMB)2.0/3.0プロトコルを用いてストレージシステム108と通信するようにしてもよい。
[0026] 一例の説明のため、ノード102は、第1のワークロードをノード106に割り当てるようにしてもよい。第1のワークロードは、当該第1のワークロードと併せてノード106に伝達可能な第1の生成識別子および/または第1のワークロード識別子と関連付けられていてもよい。ノード106は、第1のワークロードの処理を開始し、必要に応じて、ストレージシステム108により格納された対象データに対するファイルアクセス要求を送信する。ファイルアクセス要求は、第1の生成識別子および第1のワークロード識別子等の生成識別子および/またはワークロード識別子を含んでいてもよいし、参照するようにしてもよい。
[0027] ストレージシステム108は、対象データに対するアクセス要求を受信する。いくつかの例において、ストレージシステム108は、対象データがロックされており、異なる生成識別子および/またはワークロード識別子と関連付けられているかを判定するようにしてもよい。対象データがロックされている場合、ストレージシステム108は、ファイルアクセス要求を拒絶してもよいし、ロックを破棄してもよいし、採用しているプロトコルに応じて他の措置を講じるようにしてもよい。
[0028] 要求が許可されるべきとの判定に際しては、ストレージシステム108によって、生成識別子および/またはワークロード識別子が持続的ストレージに格納されるようになっていてもよい。生成識別子および/またはワークロード識別子は、持続的ストレージに格納された場合、本明細書において格納生成識別子および格納ワークロード識別子と称する場合がある。いくつかの例において、対象データは、アクセス要求の許可前または許可後にロックされるようになっていてもよい。さらに、ロックは、要求のすべての動作が完了したら解除される(これにより、他のノードが対象データにアクセスできる)ように構成されていてもよい。ロックは、特定の期間後または当該特定の期間前に要求のすべての動作が完了した時点で失効するようになっていてもよい。さらに他の例において、ロックは、クライアントによるロック解除またはロック破棄のイベントが発生するまで、対象データに対するノード排他的アクセスを提供するようにしてもよい。たとえば、SMBプロトコルに準じて、ストレージシステム108からの排他的OpLockがノード106に提供されるようになっていてもよい。ノード106は、対象データに対してアクセス可能な唯一のノードと仮定してもよく、また、すべての対象データをローカルのキャッシュに格納するほか、対象データのすべての変更をキャッシュに格納した後、ストレージシステム108の変更に注力するようにしてもよい。別のノード/ワークロードが同じ対象データを開こうとした場合、ストレージシステム108は、ノード106に対して過去に付与された排他的OpLockを無効化するメッセージ(破棄または撤回と称する)をノード106に送信する。そして、ノード106は、対象データのすべての変更をフラッシュして、これらをストレージシステム108に委ねる。
[0029] ある時点において、ノード102は、ノード106との通信障害が発生する可能性がある。いくつかの例において、この障害は、切断、ハードウェア障害、または再起動に起因する可能性がある。障害の結果として、ノード102は、第2の生成識別子を生成することにより、第1のワークロードをノード104に再割り当てする。第2の生成識別子、第1のワークロード識別子、および第1のワークロードは、ノード104に伝達される。いくつかの例において、ノード102は、所定時間待機した後、第1のワークロードをノード104に再割り当てするようにしてもよい。
[0030] ノード104は、第1のワークロードの処理を開始し、必要に応じて、ストレージシステム108により格納された対象データに対するファイルアクセス要求を送信する。ファイルアクセス要求は、第2の生成識別子および第1のワークロード識別子等の生成識別子および/またはワークロード識別子を含んでいてもよいし、参照するようにしてもよい。
[0031] ストレージシステム108は、ファイルアクセス要求を受信する。対象データが(たとえば、同じワークロード識別子を用いてノード106により)ロックされている場合、ストレージシステム108は、第2の生成識別子が格納生成識別子よりも高い優先度を示しているかを判定する。第2の生成識別子が格納生成識別子よりも高い優先度を示している場合、ストレージシステム108は、ノード106による対象データのロックを破棄し、対象データをノード104のためにロックして、アクセス要求を許可する。第2の生成識別子が高い優先度を示していない場合、ストレージシステム108は、対象データがロックされていることをノード104に示すようにしてもよい。さらに、この指標は、対象データがノード106によりロックされていることをノード104に通知するものであってもよい。第2の生成識別子が格納生成識別子よりも高い優先度を示している場合、ストレージシステム108は、格納生成識別子を第2の生成識別子で置き換える。
[0032] いくつかの例において、ノード104により発行されたアクセス要求は、許容状態であってもよい。これは、ストレージシステム108が対象データの低優先度ロックを破棄することを期待するのではなく、対象データがロックまたは使用されている間、高優先度のアクセス要求が許可されるべきではないことをノード104が示すことを意味する。たとえば、ストレージシステム108は、対象データに対するノード106のロックを破棄するのではなく、ノード104からの許容アクセス要求を拒絶し、代わりに、ノード106が依然として第1のワークロードを処理している旨を通知する。ノード106は、ノード102と通信可能ではないが、ストレージシステム108と通信可能である限り、ワークロードの処理を継続する。その結果、ワークロードの実行がノード104により妨害されることはない。そして、ノード104は、後続の許容アクセス要求をストレージシステム108に対して周期的に送信することにより、ノード106が終了となった際に対象データへのアクセスを得るようにしてもよい。第1の生成識別子は、ノード104からの高優先度のファイルアクセス要求が許可されるまで、ストレージシステム108により格納生成識別子として保持されるようになっていてもよく、その後、第2の生成識別子が格納生成識別子として格納されるようになっていてもよい。
[0033] 他の例において、ノード102により生成された第2の生成識別子は、第1の生成識別子よりも低い優先度を示していてもよい。その結果、ノード106による対象データの使用中、ノード104により送信されたファイルアクセス要求は、拒絶される。ノード106がワークロードを処理しており、依然としてストレージシステム108にアクセス可能である場合は、低優先度の生成識別子によって、ノード104による妨害なく、ノード106がワークロードの処理を継続することができる。ノード104は、ストレージシステム108に対して、アクセス要求を周期的に送信し続けるようにしてもよい。最終的に対象データへのアクセスを得た際、ノード104は、その成功をノード102に示すようにしてもよい。そして、ノード102は、第1の生成識別子よりも高い優先度を示す第3の生成識別子を生成し、この第3の生成識別子をノード104に伝達する。そして、ノード104は、後続のファイルアクセス要求において、第2の生成識別子ではなく第3の生成識別子を使用するようにしてもよい。ノード104が第3の生成識別子を用いた対象データへのアクセスに成功した後、ストレージシステム108は、第3の生成識別子を格納生成識別子として保持するようにしてもよい。
[0034] ノード102および106間の通信障害に関わらず、ノード106は、第1のワークロードの処理を継続可能である。第1のワークロードがノード104に再割り当てされ、ノード104の対象データへのアクセスがストレージシステム108により許可された後、ノード106は、対象データに対するファイルアクセス要求を行うようにしてもよい。ファイルアクセス要求は、第1の生成識別子を含んでいてもよいし、参照するようにしてもよい。ファイルアクセス要求の受信に際して、ストレージシステム108は、ファイルアクセス要求と関連付けられた生成識別子を評価する。ストレージシステム108は、ファイルアクセス要求と関連付けられた第1の生成識別子が格納生成識別子よりも低い優先度を示すものと判定する。結果として、ストレージシステム108は、ファイルアクセス要求を拒絶するとともに、そのワークロードが別のノードに再割り当てされたことをノード106に示す。いくつかの例において、この指標は、ワークロードがノード104に再割り当てされたことをノード106に通知するものであってもよい。そして、ノード106は、第1のワークロードの処理を停止するようにしてもよい。
[0035] 他の例において、ノード104は、ワーカーノードとして機能する間、マスターノードとしても機能し得る。ノード104は、その層内の別のノードであるノード106等に第2のワークロードを割り当てるようにしてもよい。第2のワークロードは、第2のワークロード識別子および第4の生成識別子と関連付けられていてもよい。この例においては、第4の生成識別子、第2のワークロード識別子、および第2のワークロードがノード106に伝達される。ノード106は、第2のワークロードの処理を開始し、必要に応じて、ストレージシステム108により格納された対象データに対するファイルアクセス要求を送信する。ファイルアクセス要求は、第4の生成識別子および第2のワークロード識別子等の生成識別子および/またはワークロード識別子を含んでいてもよいし、参照するようにしてもよい。上述の通り、ストレージシステム108は、第4の生成識別子を持続的ストレージに格納して、アクセス要求を許可する。
[0036] ある時点において、ノード104は、ノード106との通信障害が発生する可能性がある。障害の結果として、ノード104は、第5の生成識別子を生成することにより、第2のワークロードをその層内の新しいノード(図示せず)に再割り当てする。そして、第5の生成識別子、第2のワークロード識別子、および第2のワークロードが新しいノードに伝達される。新しいノードは、第2のワークロードの処理を開始する。
[0037] 上述の通り、低優先度の第5の生成識別子の提供または許容状態の振る舞いを要求する指標と併せたファイルアクセス要求の発行により、再割り当てを許容状態としてもよい。いずれの例においても、ノード106は、通常動作中ではあるがノード104と通信できなくなった場合に、第2のワークロードの処理を終えることができる。したがって、再割り当てが許容状態である場合、ノード106が処理を終えた場合、ノード106がストレージシステム108との接続を失った場合、または、ノード104との通信障害とは別の障害が発生している場合等、ノード106がもはや対象データにアクセスしていない場合のみ、新しいノードは対象データに対するアクセスを獲得することができる。第5の生成識別子が格納生成識別子よりも高い優先度を示さなかった場合、新しいノードは、対象データへのアクセスを得ると、ノード104から高優先度の第6の生成識別子を受信するようにしてもよい。そして、この高優先度の生成識別子は、ストレージシステム108により格納されるようになっていてもよい。
[0038] ノード104および106間の通信障害に関わらず、ノード106は、第2のワークロードの処理を継続可能である。第2のワークロードが新しいノードに再割り当てされ、新しいノードの対象データへのアクセスがストレージシステム108により許可された後、ノード106は、対象データに対するファイルアクセス要求を行うようにしてもよい。ファイルアクセス要求は、第4の生成識別子を含んでいてもよいし、参照するようにしてもよい。ファイルアクセス要求の受信に際して、ストレージシステム108は、ファイルアクセス要求と関連付けられた生成識別子を評価する。ストレージシステム108は、ファイルアクセス要求と関連付けられた第4の生成識別子が格納生成識別子よりも低い優先度を示すものと判定する。結果として、ストレージシステム108は、ファイルアクセス要求を拒絶するとともに、ワークロードが別のノードに再割り当てされたことをノード106に示す。いくつかの例において、この指標は、ワークロードが新しいノードに再割り当てされたことをノード106に通知するものであってもよい。そして、ノード106は、第2のワークロードの処理を停止するようにしてもよい。
[0039] 別の例において、ノード102は、ノード106が処理している第3のワークロードをノード106からノード104に移すようにしてもよい。第3のワークロードは、第3のワークロード識別子と関連付けられていてもよい。さらに、第3のワークロードは既に、ストレージシステム108に対するファイルアクセス要求の発行に際してノード106が使用する第7の生成識別子と関連付けられていてもよい。ノード102は、第8の生成識別子を生成する。第8の生成識別子は、第7の生成識別子よりも高い優先度を示していてもよい。そして、第8の生成識別子、第3のワークロード識別子、および第3のワークロードがノード104に伝達される。移行動作中のある時点において、ノード102および104間に障害が発生する場合がある。その結果、ノード102は、移行動作の完了に成功したかに気付いておらず、ノード104が第3のワークロードの処理を開始したかにも気付いていない。このため、ノード102は、第3のワークロードの処理を停止すべきか継続すべきか等、ノード106が講じるべき措置を決定することができない。
[0040] ただし、移行動作の完了に成功した場合、ノード104は、第3のワークロードの処理を開始し、必要に応じて、ストレージシステム108に対するファイルアクセス要求を発行することになる。結果として、ストレージシステム108は、関連する第8の生成識別子を格納するとともに、上述の通り、ファイルアクセス要求を許可する。ノード106からの後続のファイルアクセス要求の受信に際して、ストレージシステム108は、関連する第7の生成識別子が格納生成識別子よりも低い優先度を示すものと判定して、ワークロードが再割り当てされた旨の指標を提供する。この指標は、ワークロードがノード104に移されたことをノード106に通知するものであってもよい。
[0041] 移行動作の完了に成功していない場合、ノード106は、第3のワークロードの処理を継続する。生成識別子により、クラスタは、移行動作の成否に関わらず、クラスタ内のノードにより第3のワークロードが継続して処理されるようにすることができる。さらに、移行に成功した場合は、ストレージシステム108を介する別の通知チャネルを提供するが、ノード102は、ワークロードが異なるノードに移されたことをノード106に通知することができない。
[0042] 以上の説明は、図1に示す例が作用し得る方法の一例に過ぎない。以下に詳述する通り、例には異なる工程または動作を含んでいてもよい。これらは、任意適当なソフトウェアまたはハードウェアコンポーネントまたはモジュールを用いて実装されていてもよい。
[0043] 図2は、いくつかの例の実現に使用可能なシステム200を示している。システム200は、ノード202、204、206、208、210、212、および214を具備する。ノード202は、ノード204および206のマスターノードとして機能する。ノード204および206は、ワーカーノードとして機能し、ノード202により割り当てられたワークロードを処理するようにしてもよい。さらに、ノード204は、ノード208および210のマスターノードとして機能し、ノード206は、ノード212および214のマスターノードとして機能する。ノード204および206は、マスターノードおよびワーカーノードの両者として機能するようになっていてもよい。ノード208および210は、ワーカーノードとして機能し、ノード204により割り当てられたワークロードを処理する。同様に、ノード212および214は、ワーカーノードとして機能し、ノード206により割り当てられたワークロードを処理する。ストレージシステム216は、ノード208、210、212、および214がネットワーク230を介してアクセスする情報を格納する。図2は、ノード208、210、212、および214のみがストレージシステム216と通信するものとして示しているが、他の例では、ノード202、204、および206を含めて、ストレージシステム216により格納されたファイル情報にアクセスするノードが5つ以上(または、3つ以下)存在していてもよい。
[0044] 図2に示すように、ストレージシステム216は、スケーラブルファイルサーバ218に対して高可用性および冗長性の両者を提供するノード216Aおよび216Bを具備する。例として、ストレージシステム216は、ノード208、210、212、および214がアクセスするスケーラブルファイルサーバ218を提供する。スケーラブルファイルサーバ218は、協働によって分散ファイルシステム220からのファイル情報を提供可能な複数のクラスタ化サーバを備えていてもよい。分散ファイルシステム220は、物理的ストレージ228に格納されたファイル情報を含む。物理的ストレージ228のファイルシステム226は、ノード216Bに搭載されている。いくつかの例において、ファイルシステム226のフォーマットは、ニューテクノロジーファイルシステム(NTFS)であってもよいし、レジリエントファイルシステム(ReFS)であってもよい。ノード216Bは、分散ファイルシステム220のコーディネータとして機能し、読み出し、書き込み、およびメタデータ操作等のファイル操作を分散ファイルシステム220からファイルシステム226に中継する。いくつかの例において、ノード216Aは、物理的ストレージ228に対して直接、ファイル操作を実行するようにしてもよいが、ノード216Bは、書き込み要求が物理的ストレージ228に直接送信されるのではなく、ノード216Aによってノード216Bに転送されるように、排他的な書き込みアクセスが可能であってもよい。また、生成識別子フィルタ222がアクセス要求を生成識別子と関連付け、これらの生成識別子が後で持続的ストレージ224に格納される。たとえば、持続的ストレージ224は、NTFSファイルシステムに付随する生成識別子フィルタが利用する生成識別子フィルタデータベースを備えていてもよい。図2には2つのノードを示しているが、他の例では、ストレージシステム216が3つ以上のノードを具備していてもよいし、1つ以下のノードを具備していてもよい。
[0045] 図2は、3つの「層」のノードおよび複数のサブグループを示している。ノード202は、グローバルマスター層を含む。ノード204および206は、ローカルマスター層を含み、ノード208、210、212、および214は、ローカルワーカー層を含む。グローバルマスター層のノードは、ローカルマスター層のノードにワークを分散させるようになっていてもよい。ローカルマスター層のノードは、ローカルワーカー層のノードにワークを分散させるようになっていてもよい。さらに、ノード204、208、および210があるサブグループを含む一方、ノード206、212、および214が別のサブグループを含んでいてもよい。結果として、ノード204がノード208および210間にワークロードを分散させ、ノード206がノード212および214間にワークロードを分散させるようになっていてもよい。ただし、ノード202は、最上位ノードとして、ワークロード分散全体の責を負い、ノード204および206による分散決定と独立してワークロードを分散させることができる。たとえば、ノード202は、ノード204がさらにローカルワーカー層のノード(たとえば、ノード208または210)にワークロードを分散させたか否かに関わらず、ローカルマスター層において、ノード204からノード206にワークロードを再割り当てさせるようにしてもよい。図2は、3層のノードしか示していないが、他の例では、4つ以上(または、2つ以下)の層が存在していてもよく、より高い層のノードがより低い層のノードに対してワークロードを割り当てるようになっていてもよい。また、図2では、各層に特定数のノードを示しているが、各層は、さまざまな数のノードを含んでいてもよい。
[0046] 生成識別子の作成においては、ノード202、204、206、208、210、212、および214間に存在する階層決定構造を捕捉するようにしてもよい。一例において、生成識別子は、2つの下位部分に細分され、前半の64ビットが主識別子を示し、後半の64ビットが副識別子を示す128ビットの識別子であってもよい。主識別子は、第2の層を含むノード(たとえば、ノード204および206)にワークロードを割り当てる際に変化する。同様に、副識別子は、第3の層を含むノード(たとえば、ノード208、210、212、および214)にワークロードを割り当てる際に変化する。結果として、生成識別子の下位部分は、ある生成識別子の別の生成識別子に対する優先度を考慮する場合、異なる評価がなされるようになっていてもよい。別の生成識別子の主識別子に関して高優先度の主識別子を有する生成識別子は、副識別子が示す優先度に関わらず、より高い優先度を有するものと判定されるようになっていてもよい。同様に、同様の優先度を示す主識別子を有する2つの生成識別子の優先関係は、副識別子が示す優先度の比較によって判定されるようになっていてもよい。他の例において、生成識別子は、異なる長さを有していてもよく、3つ以上または1つ以下の部分に細分されて、階層決定構造を表すようになっていてもよい。
[0047] 生成識別子の下位部分が示す優先度が考え得る最大の符号化値に達した場合は、高優先度の生成識別子に対する要求をマスターノードに送信することによって、後続の高優先度の生成識別子が得られるようになっていてもよい。たとえば、ノード204は、生成識別子の副識別子下位部分について考え得るすべての符号化値を使い果たした場合、所与の主識別子に関して、考え得るすべての副識別子が使い果たされたことをノード202に示すようにしてもよい。そして、ノード202は、高優先度の主識別子および副識別子で構成された新しい生成識別子で応答する。その後、ノード204は、新しい生成識別子の副識別子下位部分を変更し続けることにより、後続の高優先度の生成識別子を提供するようにしてもよい。
[0048] 他の例においては、使い果たされた下位部分を考え得る最大の符号化値から初期値(たとえば、考え得る最小の符号化値)に「ロールオーバ」することにより、高優先度の生成識別子が生成されるようになっていてもよい。たとえば、副識別子は、符号なし整数で表されている場合、考え得る最大の符号化値からゼロへと「ロールオーバ」する。主識別子は変化しない。2つの識別子を比較する場合は、生成識別子の各下位部分の最新の有効値を別の生成識別子の同等の下位部分から減算することによって、優先度判定がなされる。減算においては、2の補数計算を利用することにより、考え得る最大の符号化値をロールオーバ値から減算することによって正の値が得られるようにしてもよい。減算による負の値がより低い優先度を示す一方、正の値は、より高い優先度を示す。そして、上述の通り、生成識別子の個々の下位部分の評価によって、生成識別子の優先関係が評価される。
[0049] 例によれば、ノード202、204、206、208、210、212、および214は、分散ワークロードの高可用性処理の提供に利用される。これは、マスターノードとワーカーノードとの間に障害が発生した場合に、ノードおよびストレージシステム216上の構成要素を利用して、ワークロードを分割するとともに、ワークをさまざまなノードに再分散させることによって実現される。以下に詳述する通り、ワークロードが再割り当てされる場合にノードに提供される再割り当て通知によって、ノードクラスタは、分散ワークロードの高可用性処理を提供することができる。
[0050] 例として、ノード202は、分散ワークロードの分割およびワーカーノードへの割り当ての責を負う。ノード202は、第1のワークロードをノード204に割り当てるようにしてもよい。さらに、ノード204は、自身のワーカーノードの1つであるノード210等にワークロードを分散させるようにしてもよい。第1のワークロードは、第1の主番号および第1の副番号で構成された第1の生成識別子と関連付けられていてもよい。また、第1のワークロードは、第1のワークロード識別子と関連付けられていてもよい。第1の生成識別子、第1のワークロード識別子、および第1のワークロードは、ノード210に伝達されるようになっていてもよい。
[0051] ノード210は、第1のワークロードの処理を開始し、必要に応じて、対象データに対するファイルアクセス要求をノード216Aに送信する。アクセス要求は、生成識別子および/またはワークロード識別子と関連付けられていてもよいし、生成識別子および/またはワークロード識別子を含んでいてもよい。たとえば、新しいワークロードが開始となった場合は、生成識別子の指標がノード216Aに伝達されるようになっていてもよい。対象データに対するアクセス要求には、対象データに実行する多くのファイル操作を含んでいてもよい。これらの操作は、たとえば、データの読み取り/書き込みのために開くこと、属性の列挙、データをローカルのキャッシュに格納するためのリース要求、または、他のファイルアクセス操作とすることができる。
[0052] 一例において、生成識別子は、_NETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT構造に格納されていてもよい。_NETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT構造は、以下のように定義されていてもよい。
[0053] typedef struct_NETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT {
[0054] USHORT Size;
[0055] USHORT Reserved;
[0056] UINT64 VersionHigh;
[0057] UINT64 VersionLow;
[0058] } NETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT, *PNETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT;
[0059] このような例において、変数Sizeは、構造のサイズに関する情報を格納していてもよく、変数VersionHighは、主識別子であってもよく、変数VersionLowは、副識別子であってもよい。いくつかの例において、_NETWORK_APP_INSTANCE_VERSION_ECP_CONTEXTまたは生成識別子を含む別のオブジェクトもしくは変数は、持続的ストレージ224に格納されていてもよい。例として、_NETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT構造は、リソースへのアクセス要求(たとえば、作成または開く要求)に関連して、ノードからストレージシステムに送信されるようになっていてもよい。一例において、生成識別子は、マスターノードまたはワーカーノード等、ワークロードの処理または分散を行っているノードにより格納されていてもよい。別の例において、図2には示していないものの、ノードクラスタは、生成識別子を格納する中央レポジトリを有していてもよい。このような例においては、クラスタの複数のノードが中央レポジトリにアクセス可能である。さらに別の例においては、生成識別子が複数のレポジトリにわたって格納されていてもよい。このような例において、ノードクラスタは、複製アルゴリズムを採用することにより、複数のレポジトリが同じ生成識別子を含むようにしてもよい。
[0060] ノード216Aは、対象データに対するアクセス要求を受信する。要求が許可されるべきとの判定に際しては、生成識別子フィルタ222は、ノード210からのアクセス要求に包含または関連付けされた生成識別子を持続的ストレージ224に格納する。いくつかの例においては、その後、対象データがロックされるようになっていてもよい。
[0061] ある時点において、ノード210は、ノード204との通信障害が発生する可能性がある。この障害は、たとえば切断、ハードウェア障害、または再起動に起因する可能性がある。障害の結果として、ノード204は、第1の主識別子および第2の副識別子を含む第2の生成識別子を生成することにより、第1のワークロードをノード208に再割り当てする。第2の生成識別子、第1のワークロード識別子、および第1のワークロードを、ノード208に伝達することができる。
[0062] ノード208は、第1のワークロードの処理を開始し、必要に応じて、対象データに対するファイルアクセス要求をノード216Aに送信する。ファイルアクセス要求は、第2の生成識別子および第1のワークロード識別子等の生成識別子および/またはワークロード識別子を含んでいてもよいし、参照するようにしてもよい。
[0063] ノード216Aは、ファイルアクセス要求を受信する。対象データが(たとえば、同じワークロード識別子を用いてノード210により)ロックされている場合、スケーラブルファイルサーバ218は、第2の生成識別子が格納生成識別子よりも高い優先度を示しているかを判定する。第2の生成識別子および格納生成識別子の両者の主識別子は、同じ優先度を示しているため、スケーラブルファイルサーバ218は、副識別子を比較する。第2の生成識別子の副識別子が格納生成識別子の副識別子よりも高い優先度を示している場合、ノード216Aは、ノード210による対象データのロックを破棄し、対象データをノード208のためにロックして、アクセス要求を許可する。第2の生成識別子の副識別子が高い優先度を示していない場合、ノード216Aは、対象データがロックされていることをノード208に示すようにしてもよい。さらに、この指標は、対象データがノード210によりロックされていることをノード208に通知するものであってもよい。第2の生成識別子が格納生成識別子よりも高い優先度を示している場合は、持続的ストレージ224に格納された生成識別子が第2の生成識別子で置き換えられ、これが格納生成識別子となる。
[0064] また、上述の通り、ノード208が許容アクセス要求を発行するようにしてもよいし、第2の生成識別子の副識別子が格納生成識別子の副識別子よりも低い優先度を示していてもよい。これらいずれの例においても、ノード210は、通常動作中ではあるがノード204と通信できなくなった場合に、ワークロードの処理を終えることができる。したがって、ノード210が処理を終えた場合、ノード210がストレージシステム216との接続を失った場合、または、ノード204との通信障害とは別の障害が発生している場合等、ノード210がもはや対象データにアクセスしていない場合のみ、ノード208は対象データに対するアクセスを獲得することができる。第2の生成識別子が格納生成識別子よりも高い優先度を示さなかった場合、ノード208は、対象データへのアクセスを得ると、ノード204から高優先度の第3の生成識別子を受信するようにしてもよい。そして、この高優先度の生成識別子は、持続的ストレージ224に格納されるようになっていてもよい。
[0065] ノード204および210間の通信障害に関わらず、ノード210は、第1のワークロードの処理を継続可能である。第1のワークロードがノード208に再割り当てされ、ノード208の対象データへのアクセスがノード216Aにより許可された後、ノード210は、ファイルアクセス要求をノード216Aに送信するようにしてもよい。ファイルアクセス要求は、第1の生成識別子を含んでいてもよいし、参照するようにしてもよい。アクセス要求の受信に際して、スケーラブルファイルサーバ218は、ファイルアクセス要求と関連付けられた生成識別子を評価する。スケーラブルファイルサーバ218は、ファイルアクセス要求と関連付けられた第1の生成識別子が格納生成識別子よりも低い優先度を示すものと判定することになる。結果として、ノード216Aは、ファイルアクセス要求を拒絶するとともに、ワークロードが別のノードに再割り当てされたことをノード210に示す。いくつかの例において、この指標は、ワークロードがノード208に再割り当てされたことをノード210に通知するものであってもよい。そして、ノード210は、第1のワークロードの処理を停止するようにしてもよい。
[0066] 最終的に、ノード204は、ノード202との通信障害が発生する可能性がある。障害の結果として、ノード202は、第2の主識別子および第3の副識別子を含む第4の生成識別子を生成することにより、第1のワークロードをノード206に再割り当てする。第3の副識別子は、第1または第2の副識別子と同様の優先度を示していてもよいし、全く異なる優先度を示していてもよい。第4の生成識別子、第1のワークロード識別子、および第1のワークロードは、ノード206に伝達されるようになっていてもよい。さらに、ノード206は、そのワーカーノードの1つであるノード212等にワークロードを分散させるようにしてもよい。結果として、第4の生成識別子、第1のワークロード識別子、および第1のワークロードは、ノード212に伝達されるようになっていてもよい。
[0067] ノード212は、第1のワークロードの処理を開始し、必要に応じて、対象データに対するアクセス要求をノード216Bに送信する。ファイルアクセス要求は、第4の生成識別子および第1のワークロード識別子等の生成識別子および/またはワークロード識別子と関連付けられていてもよいし、これらを含んでいてもよい。
[0068] ノード216Bは、ファイルアクセス要求を受信する。対象データが(たとえば、同じワークロード識別子を用いてノード210により)ロックされている場合、スケーラブルファイルサーバ218は、第4の生成識別子が格納生成識別子よりも高い優先度を示しているかを判定する。第4の生成識別子の主識別子が格納生成識別子の主識別子よりも高い優先度を示している場合、ノード216Bは、ノード208による対象データのロックを破棄し、対象データをノード212のためにロックして、アクセス要求を許可する。スケーラブルファイルサーバ218は、主識別子がより高い優先度を示すものと判定するに際して、副識別子を無視するようにしてもよい。また、持続的ストレージ224の格納生成識別子は、高優先度の第4の生成識別子で置き換えられるようになっていてもよい。第4の生成識別子の主識別子が高い優先度を示していない場合、ノード216Bは、対象データがロックされていることをノード212に示すようにしてもよい。さらに、この指標は、対象データがノード208によりロックされていることをノード212に通知するものであってもよい。例として、ノード212は、このような情報をノード202に伝達するようにしてもよい。
[0069] また、上述の通り、ノード212が許容アクセス要求を発行するようにしてもよいし、第4の生成識別子が格納生成識別子よりも低い優先度を示していてもよい。これらいずれの例においても、ノード208がアクセス要求を終了した場合および/またはいくつかの例において、ノード208がそのロックを解除した場合、ノード212は、対象データに対するアクセスの獲得のみを行う。第4の生成識別子が格納生成識別子よりも高い優先度を示さなかった場合、ノード212は、対象データへのアクセスを得ると、ノード202から高優先度の第5の生成識別子を受信するようにしてもよい。この高優先度の生成識別子は、持続的ストレージ224に格納される。これにより、ノード212が対象データへのアクセスを得ると、ノード208がその低優先度の生成識別子を用いてアクセスを再度得ることがなくなる。
[0070] ノード204および202間の通信障害に関わらず、ノード208は、第1のワークロードの処理を継続可能である。第1のワークロードがノード212に再割り当てされ、ノード212の対象データへのアクセスがノード216Bにより許可された後、ノード208は、ファイルアクセス要求をノード216Aに送信するようにしてもよい。ファイルアクセス要求は、第1の主識別子および第4の副識別子で構成された第6の生成識別子を含んでいてもよいし、参照するようにしてもよい。第4の副識別子は、第1、第2、または第3の副識別子と同様の優先度を示していてもよいし、全く異なる優先度を示していてもよい。アクセス要求の受信に際して、スケーラブルファイルサーバ218は、ファイルアクセス要求と関連付けられた生成識別子を評価する。スケーラブルファイルサーバ218は、ファイルアクセス要求と関連付けられた第6の生成識別子の主識別子が格納生成識別子の主識別子よりも低い優先度を示すものと判定する。例として、副識別子の優先度指標は、無視されるようになっていてもよい。生成識別子の主識別子が示す優先度に基づいて、高優先度の判定が既になされているためである。結果として、ノード216Aは、ファイルアクセス要求を拒絶するとともに、ワークロードが別のノードに再割り当てされたことをノード208に示す。いくつかの例において、この指標は、ワークロードがノード212に再割り当てされたことをノード208に通知するものであってもよい。そして、ノード208は、第1のワークロードの処理を停止するようにしてもよい。
[0071] 当然のことながら、上記システム200の説明は、本明細書に記載の例を制限することを意図したものではない。図2およびその説明は、いくつかの例の実現を示すことを意図しているに過ぎない。このため、図2の図示および記載内容に例が制限されることはない。
[0072] 図3、図4、および図5は、例に係る動作フロー300、400、および500を示している。動作フロー300、400、および500は、任意の適当なコンピュータ環境において実行されるようになっていてもよい。たとえば、これらの動作フローは、図1および図2に示すような環境により実行されるようになっていてもよい。したがって、動作フロー300、400、および500の説明では、図1および図2の構成要素のうちの少なくとも1つを参照する場合がある。ただし、図1および図2の実施態様は、動作フロー300、400、および500のための非限定的な環境であることが了解されるものとする。
[0073] さらに、動作フロー300、400、および500は、特定の順序で逐次的に図示および説明しているものの、他の例においては、異なる順序での実行、複数回の実行、および/または並列実行が可能である。さらに、いくつかの例においては、1つまたは複数の動作が省略されてもよいし、組み合わされてもよい。また、「第1」等の序数は、特別の定めのない限り、順序を暗示することを意図したものではなく、類似要素の識別に用いられることが了解されるものとする。たとえば、「第1の生成識別子」は、最初の生成識別子である必要がなく、「第2の生成識別子」と異なるものと解釈されるべきである。
[0074] 動作フロー300は、ストレージシステムと通信しているノード等の動作を示している。例として、図3に示すフロー300は、ワークロードを処理しているノードであるノード210(図2)等により実行されるようになっていてもよい。
[0075] フロー300は、動作302で開始となり、対象データに対するアクセス要求を送信する。アクセス要求は、第1の生成識別子、第1のワークロード識別子、および第1のワークロードと関連付けられていてもよい。一例においては、ネットワークを介して伝送されるメッセージにて第1の生成識別子が送信されるようになっていてもよい。生成識別子は、動作302の要求を含む同じメッセージにて伝送されるようになっていてもよいし、異なるメッセージにて伝送されるようになっていてもよい。このような例においては、_NETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT等、生成識別子を含むオブジェクトが動作302で送信されるようになっていてもよいが、これに限定されない。
[0076] 一例においては、動作302での生成識別子の送信にインターフェースが用いられるようになっていてもよい。インターフェースは、クラスタ化環境において動作するノードに対して配置または利用可能とされたカーネルレベルインターフェースであってもよい。例として、カーネルレベルインターフェースを用いて、ノードが生成識別子をストレージシステムに送信することができる。以下は、動作302でアプリケーションインスタンス識別子を送信するために利用されるカーネルレベルインターフェースの非限定的な一例である。
[0077] //
[0078] // アプリケーションがそのインスタンスIDを提供するためのECPコンテキスト。
[0079] //
[0080]
[0081] typedef struct_NETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT {
[0082] //
[0083] // この構造のサイズに設定する必要がある。
[0084] //
[0085]
[0086] USHORT Size;
[0087]
[0088] //
[0089] // ゼロに設定する必要がある。
[0090] //
[0091]
[0092] USHORT Reserved;
[0093]
[0094] //
[0095] // 呼び出し元は、主バージョンおよび副バージョンを設定する。
[0096] // このECPは、有効となるNETWORK_APP_INSTANCE_ECPを伴う必要がある。
[0097] //
[0098] //
[0099]
[00100] UINT64 VersionHigh;
[00101] UINT64 VersionLow;
[00102]
[00103] } NETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT, *PNETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT;
[00104]
[00105] //
[00106] // GUIDをNETWORK_APP_INSTANCE_ECP_CONTEXT構造に使用。
[00107] // {6AA6BC45−A7EF−4af7−9008−FA462E144D74}
[00108] //
[00109] DEFINE_GUID(GUID_ECP_NETWORK_APP_INSTANCE_VERSION, 0xb7d082b9, 0x563b, 0x4f07, OxaO, 0x7b, 0x52, 0x4a, 0x81, 0x16, OxaO, 0x10);
[00110] 具体的なカーネルレベルインターフェースを示したが、当業者には当然のことながら、動作302で、他のインターフェースを利用して、生成識別子を送信するようにしてもよい。
[00111] その後、フローは動作304へと続き、アクセス応答を受信する。判断306においては、対象データへのアクセスが許可されたかを判定する。たとえば、ワークロード識別子によって示されるように異なるワークロードにより対象データがロックまたは使用されていること、または、ワークロード識別子が同じワークロードを示すが、第1の生成識別子が、対象データに対する別のアクセス要求と最初に関連付けられた識別子よりも低い優先度を示すことから、アクセスが許可されない場合がある。他の例においては、対象データが依然として使用中である場合に、対象データの既存のロックを破棄すべきでないことを第1のアクセス要求が示したことから、アクセスが拒絶される場合がある。
[00112] 判断306において、対象データへのアクセスが許可された場合、フローは、動作308に移って、第1のワークロードの実行を継続する。動作308の後、動作フローは終了となる。
[00113] 判断306において、対象データへのアクセスが許可されなかった場合、フローは、判断310へと続き、ワークロードが再割り当てされたことをアクセス応答が示すかに関する判定を行う。
[00114] 判断310において、ワークロードが再割り当てされた旨の指標が受信された場合、フローは、動作312に移り、受信指標の結果として、第1のワークロードの実行を停止する。いくつかの例において、アクセス応答は、ワークロードが割り当てられたノードを示していてもよい。動作312の後、動作フローは終了となる。
[00115] 判断310において、ワークロードが再割り当てされた旨の指標が受信されなかった場合、フローは、動作314へと続き、アクセス要求を周期的に試行し、ある期間の後、動作302へと戻るようにしてもよい。
[00116] 動作フロー400は、ワークロードを他のノードに割り当てているノード等の動作を示している。例として、フロー400は、ワークを分散させているノードであるノード202(図2)等により実行されるようになっていてもよい。
[00117] フロー400は、動作402で開始となり、第1の生成識別子および第1のワークロード識別子を第1のワークロードと関連付ける。動作404においては、第1の生成識別子、第1のワークロード識別子、および第1のワークロードを第1のノードに伝達する。
[00118] その後、フローは、動作406に移って、障害が発生する。この障害は、たとえば接続中断、ハードウェア障害、または再起動等に起因する可能性がある。判断408においては、許容要求が有効であるかを判定する。例として、第1のノードが通常動作中のワーカーノードであるが、そのマスターノードとの通信を停止しており、第1のワークロードがマスターノードにより再割り当てされている場合には、許容要求により、第1のノードが第1のワークロードの処理を継続可能である。上述の通り、許容要求を有効化し得る方法は2つあり、ワークをワーカーノードに割り当てるマスターノードの振る舞いは、(a)許容要求が有効であるか、(b)許容要求(たとえば、許容フラグ)の肯定指標が有効であるかの両者の影響を受ける。許容要求が有効でない場合(たとえば、マスターノードがこれらに対応していない場合)、マスターノードは、デフォルトとして、第1の生成識別子よりも高い優先度を有する第2の生成識別子を第2のノードに提供することになる。許容要求が有効であるものの、(第2のノードもストレージシステムも)許容フラグに対応していない場合、マスターノードは、第1の生成識別子よりも優先度が低い第2の生成識別子を第2のノードに提供するようにしてもよい(これにより、ストレージシステムへの提示に際して、第2の生成識別子は、第1のノードが対象データに行う如何なる能動ワークも妨害しない)。ただし、許容フラグが有効である場合、マスターノードは、高優先度の生成識別子を生成して第2のノードに提供するようにしてもよいが、内部に設定される許容フラグ(または、このようなフラグを設定するための第2のノードに対する命令)により、第1のノードが対象データに対して任意の能動ワークを依然として行っている間、ストレージシステムが高優先度の生成識別子を無視することになる。これについては、以下に詳述する。
[00119] 判断408において、許容要求が有効でないと判定した場合、フローは、動作410へと続き、第1の生成識別子よりも高い優先度を示す第2の生成識別子を生成して、第1のワークロードと関連付ける。動作412においては、第2の生成識別子、第1のワークロード識別子、および第1のワークロードを第2のノードに伝達する。動作フローは、動作412において終了となる。
[00120] 判断408において、許容要求が有効であると判定した場合、フローは、判断414に移って、許容フラグが有効であるかを判定する。いくつかの例において、許容フラグは、より高い優先度を示す生成識別子とファイルアクセス要求が関連付けられている場合であっても、対象データが使用またはロックされている場合は、ファイルアクセス要求が許可されるべきでないことをワーカーノードがストレージシステムに示すのに有効化および使用されるようになっていてもよい。
[00121] 判断414において、許容フラグが有効であると判定した場合、フローは、動作416へと続き、第1の生成識別子よりも高い優先度を示す第3の生成識別子を生成して、第1のワークロードと関連付ける。動作418においては、許容フラグまたはストレージシステムへのアクセス要求を行う場合に第2のノードが許容フラグを設定すべきとの指標と併せて、第3の生成識別子、第1のワークロード識別子、および第1のワークロードを第2のノードに伝達する。動作418の後、動作フローは終了となる。
[00122] 判断414において、許容フラグが有効でないと判定した場合、フローは、動作420へと続き、第1の生成識別子よりも低い優先度を示す第4の生成識別子を生成して、第1のワークロードと関連付ける。動作422においては、第4の生成識別子、第1のワークロード識別子、および第1のワークロードを第2のノードに伝達する。フローは、動作424へと続き、最終的に、対象データへのアクセスに成功したことを示す通知を第2のノードから受信する。その後、フローは、動作426へと続き、第1の生成識別子よりも高い優先度を示す第5の生成識別子を生成して、第1のワークロードと関連付ける。動作428においては、第5の生成識別子を第2のノードに伝達する。動作428の後、動作フロー400は終了となる。
[00123] 動作フロー500は、ノードと通信するストレージシステム等の動作を示している。例として、フロー500は、1つまたは複数のファイルサーバであるノード216Aおよび/またはノード216B(図2)等のストレージシステムにより実行されるようになっていてもよい。
[00124] フロー500は、動作502で開始となり、対象データに対する第1のアクセス要求を受信する。第1のアクセス要求は、第1の生成識別子および第1のワークロード識別子と関連付けられる。いくつかの例において、第1の生成識別子および/または第1のワークロード識別子は、第1のアクセス要求の一部として含まれていてもよい。対象データに対するアクセス要求には、対象データに実行する多くのファイル操作を含んでいてもよい。これらの操作では、たとえば、開いてデータの読み出し/書き込みを行ったり、属性を列挙したり、要求をリースしてデータをローカルのキャッシュに格納したり、または、他のファイルアクセス操作を行ったりする。動作502の後、フロー500は、動作504に移って、第1の生成識別子および第1のワークロード識別子を持続的ストレージに格納する。
[00125] 動作506においては、対象データを使用のためにロックするとともに、第1の生成識別子と関連付ける。また、対象データは、第1のワークロード識別子と関連付けられていてもよい。フロー500は、動作508に移って、対象データへのアクセスを許可する。動作510へと続いて、対象データに対する第2のアクセス要求を受信する。第2のアクセス要求は、第2の生成識別子および/または第1のワークロード識別子と関連付けられていてもよいし、第2の生成識別子および/または第1のワークロード識別子を参照するようにしてもよい。
[00126] 判断512においては、第2の生成識別子が格納識別子よりも高い優先度を有するかを判定する。いくつかの例において、この判定は、主識別子下位部分および副識別子下位部分等、生成識別子のさまざまな下位部分が示す優先度の比較に基づいていてもよい。
[00127] 判断512において、第2の生成識別子が高い優先度を示していないと判定した場合、フローは、動作514へと続き、アクセス要求を拒絶するとともに対象データが使用中であることを示す。例として、このような指標には、特定のノードが対象データを使用中である旨の指標を含んでいてもよい。動作514の後、動作フローは終了となる。
[00128] 判断512において、第2の生成識別子が高い優先度を有すると判定した場合、フローは、動作516へと続き、第2のアクセス要求が許容状態であるかを判定する。判断516において、第2のアクセス要求が許容状態であると判定した場合、フローは、動作518へと続き、アクセス要求を拒絶するとともに対象データが使用中であることを示す。動作518の後、動作フローは終了となる。例として、第2のアクセス要求を行うノードは、対象データがロックされなくなるまで、第2のアクセス要求を試行することになる。
[00129] 判断516において、第2のアクセス要求が許容状態でないと判定した場合、動作フロー500は、動作520へと進み、第1の生成識別子の代わりに、第2の生成識別子を持続的ストレージに格納する。動作522においては、対象データに対する第1の生成識別子と関連付けられたロックを破棄し、第2の生成識別子と関連付け可能なロックを対象データに設定する。そして、動作524へと続いて、アクセス要求を許可する。
[00130] 動作526においては、第3のアクセス要求を受信する。第3のアクセス要求は、第1の生成識別子および第1のワークロード識別子と関連付けられていてもよいし、第1の生成識別子および第1のワークロード識別子を参照するようにしてもよい。フローは、動作528へと進み、第1の生成識別子が格納生成識別子よりも高い優先度を示していないことから、第3のアクセス要求を拒絶する。さらに、対象データが再割り当てされたことを示す。そして、動作フロー500は終了となる。
[00131] 図6〜図8および関連する説明では、本発明の例を実現できる多様な動作環境を論じている。ただし、図6〜図8に関して図示および記載する機器およびシステムは、例示を目的としており、本明細書に記載の本発明の例の実現に利用できる多数のコンピュータ機器構成を制限するものではない。
[00132] 図6は、本開示の例を実現可能なノード202、204、206、208、210、212、214、216A、および216B等のコンピュータ機器602の物理的な構成要素を示したブロック図である。以下に記載するコンピュータ機器の構成要素は、上述のコンピュータ機器に適していてもよい。基本的な構成において、コンピュータ機器602は、少なくとも1つの処理ユニット604およびシステムメモリ606を具備していてもよい。コンピュータ機器の構成および種類に応じて、システムメモリ606は、揮発性ストレージ(たとえば、ランダムアクセスメモリ)、不揮発性ストレージ(たとえば、リードオンリーメモリ)、フラッシュメモリ、またはこのようなメモリの任意の組み合わせを含んでいてもよいが、これらに限定されない。システムメモリ606は、オペレーティングシステム607と、生成識別子626と関連付けられたワークロード624等のソフトウェアアプリケーション620の実行に適した1つまたは複数のプログラムモジュール608とを具備していてもよい。オペレーティングシステム607は、たとえばコンピュータ機器602の動作の制御に適していてもよい。さらに、本発明の例は、グラフィックスライブラリ、他のオペレーティングシステム、またはその他任意のアプリケーションプログラムと併せて実現されるようになっていてもよく、また、任意特定のアプリケーションまたはソフトウェアに限定されない。この基本的な構成は、点線622内の構成要素によって、図6に示している。コンピュータ機器602は、別の特徴または機能を有していてもよい。たとえば、コンピュータ機器602は、磁気ディスク、光ディスク、またはテープ等の別のデータ記憶装置(リムーバブルおよび/または非リムーバブル)を具備していてもよい。このような別のストレージは、リムーバブル記憶装置609および非リムーバブル記憶装置610によって、図6に示している。
[00133] 上述の通り、システムメモリ606には、多くのプログラムモジュールおよびデータファイルが格納されていてもよい。処理ユニット604での実行中、プログラムモジュール608(たとえば、生成識別子626と関連付けられたワークロード624)は、図3、図4、および図5に示す動作フロー300、400、および500の段階のうちの1つまたは複数等のプロセスを実行するようにしてもよいが、これらに限定されない。本発明の例に従って使用可能な他のプログラムモジュールとしては、電子メールおよび連絡アプリケーション、文書処理アプリケーション、スプレッドシートアプリケーション、データベースアプリケーション、スライドプレゼンテーションアプリケーション、描画またはコンピュータ支援アプリケーションプログラムが挙げられる。
[00134] さらに、本発明の例は、離散的電子素子を含む電気回路、論理ゲートを含むパッケージまたは集積電子チップ、マイクロプロセッサを利用した回路、または電子素子もしくはマイクロプロセッサを含む単一チップ上で実現されるようになっていてもよい。たとえば、本発明の例は、システムオンチップ(SOC)によって実現されるようになっていてもよく、図6に示す構成要素のそれぞれまたは多くは、単一の集積回路上に集積されていてもよい。このようなSOCデバイスは、1つまたは複数の処理ユニット、グラフィックスユニット、通信ユニット、システム仮想化ユニット、およびさまざまなアプリケーション機能を具備していてもよく、これらはすべて、単一の集積回路としてチップ基板上に集積(または、「焼き付け」)されている。SOCによる動作の場合、本明細書に記載の機能は、コンピュータ機器602の他の構成要素とともに単一の集積回路(チップ)上に集積された特定用途向けロジックを介して動作するようになっていてもよい。また、本開示の例は、たとえばAND、OR、およびNOT等の論理演算を実行可能な他の技術を用いて実現されるようになっていてもよく、機械的、光学的、流体的、および量子的な技術が挙げられるが、これらに限定されない。また、本発明の例は、汎用コンピュータまたはその他任意の回路もしくはシステムにおいて実現されるようになっていてもよい。
[00135] また、コンピュータ機器602は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置等の1つまたは複数の入力装置612を有していてもよい。また、ディスプレイ、スピーカ、プリンタ等の出力装置614が備えられていてもよい。上記機器は例であり、これら以外が用いられるようになっていてもよい。コンピュータ機器602は、他のコンピュータ機器618との通信を可能にする1つまたは複数の通信接続616を具備していてもよい。適当な通信接続616の例としては、RF送信機、受信機、および/または送受信機回路や、ユニバーサルシリアルバス(USB)、パラレル、および/またはシリアルポートが挙げられるが、これらに限定されない。
[00136] 本明細書において、コンピュータ可読媒体という用語には、コンピュータ記憶媒体を含む場合がある。コンピュータ記憶媒体としては、コンピュータ可読命令、データ構造、またはプログラムモジュール等の情報を格納する任意の方法または技術において実装される揮発性および不揮発性のリムーバブルおよび非リムーバブル媒体が挙げられる。システムメモリ606、リムーバブル記憶装置609、および非リムーバブル記憶装置610はすべて、コンピュータ記憶媒体の例(すなわち、メモリストレージ)である。コンピュータ記憶媒体としては、RAM、ROM、電気的消去可能なリードオンリーメモリ(EEPROM)、フラッシュメモリ等のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)等の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ等の磁気記憶装置、または情報の格納に使用可能であるとともにコンピュータ機器602がアクセス可能なその他任意の製造品が挙げられる。このような任意のコンピュータ記憶媒体は、コンピュータ機器602の一部であってもよい。コンピュータ記憶媒体には、搬送波等の伝搬または変調データ信号を含まない。
[00137] 通信媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または搬送波もしくは他の搬送機構等の変調データ信号における他のデータにより具現化されていてもよく、任意の情報送達媒体を含む。用語「変調データ信号」は、1つもしくは複数の特性集合を有する信号または信号中の情報を符号化するように変更された信号を表す場合がある。非限定的な一例として、通信媒体としては、有線ネットワークまたは有線直結通信等の有線媒体および音響、無線周波数(RF)、赤外線等の無線媒体が挙げられる。
[00138] 図7Aおよび図7Bは、たとえば携帯電話、スマートフォン、タブレットパソコン、ラップトップコンピュータ等、本発明の例を実現可能なモバイルコンピュータ機器700を示している。たとえば、モバイルコンピュータ機器700は、ノード202、204、206、208、210、212、および214の実装に用いられるようになっていてもよい。図7Aには、上記例を実現するモバイルコンピュータ機器700の一例を示している。基本的な構成において、モバイルコンピュータ機器700は、入力素子および出力素子の両者を有する手持ち式のコンピュータである。モバイルコンピュータ機器700は通常、ディスプレイ705と、ユーザによるモバイルコンピュータ機器700への情報入力を可能にする1つまたは複数の入力ボタン710とを具備する。また、モバイルコンピュータ機器700のディスプレイ705が入力装置(たとえば、タッチスクリーンディスプレイ)として機能するようになっていてもよい。任意選択としての側面入力素子715が備わっている場合は、これによってもユーザ入力が可能である。側面入力素子715は、回転スイッチ、ボタン、またはその他任意の種類の手動入力素子であってもよい。別の例において、モバイルコンピュータ機器700の入力素子は、これらより多くても少なくてもよい。たとえば、いくつかの例において、ディスプレイ705は、タッチスクリーンでなくてもよい。さらに別の例において、モバイルコンピュータ機器700は、セル方式電話等の携帯電話システムである。また、モバイルコンピュータ機器700は、任意選択としてのキーパッド735を具備していてもよい。任意選択としてのキーパッド735は、物理的なキーパッドであってもよいし、タッチスクリーンディスプレイ上に生成される「ソフト」キーパッドであってもよい。さまざまな例において、出力素子としては、グラフィカルユーザインターフェース(GUI)を表示するディスプレイ705、視覚的表示器720(たとえば、発光ダイオード)、および/または音声トランスデューサ725(たとえば、スピーカ)が挙げられる。いくつかの例において、モバイルコンピュータ機器700は、ユーザに触覚フィードバックを提供する振動トランスデューサを内蔵する。さらに別の例において、モバイルコンピュータ機器700は、音声入力(たとえば、マイクジャック)、音声出力(たとえば、ヘッドホンジャック)、および外部機器に対する信号送信または信号受信を行う映像出力(たとえば、HDMIポート)等の入力および/または出力ポートを内蔵する。
[00139] 図7Bは、モバイルコンピュータ機器の一例のアーキテクチャを示したブロック図である。すなわち、モバイルコンピュータ機器700は、いくつかの例を実現するシステム(すなわち、アーキテクチャ)702を内蔵可能である。一例において、システム702は、1つまたは複数のアプリケーション(たとえば、ブラウザ、電子メール、カレンダ、予定管理、メッセージクライアント、ゲーム、およびメディアクライアント/プレーヤ)を実行可能な「スマートフォン」として実装される。いくつかの例において、システム702は、個人用統合情報端末(PDA)および無線電話等のコンピュータ機器として統合されている。
[00140] 1つまたは複数のアプリケーションプログラム766がメモリ762にロードされ、オペレーティングシステム764上またはオペレーティングシステム764との関連で動作するようになっていてもよい。アプリケーションプログラムの例としては、電話ダイヤラプログラム、電子メールプログラム、個人情報管理(PIM)プログラム、文書処理プログラム、スプレッドシートプログラム、インターネットブラウザプログラム、メッセージングプログラム等が挙げられる。また、システム702は、メモリ762内に不揮発性の記憶領域768を具備する。不揮発性記憶領域768は、システム702の電源を落とした場合に失われない持続的情報の格納に用いられるようになっていてもよい。アプリケーションプログラム766は、電子メールアプリケーション等が使用する電子メールまたは他のメッセージ等の情報を使用するとともに、不揮発性記憶領域768に格納するようにしてもよい。また、システム702には、同期アプリケーション(図示せず)も存在しており、ホストコンピュータ上の対応する同期アプリケーションと相互作用して、不揮発性記憶領域768に格納された情報がホストコンピュータに格納された対応情報と同期し続けるようにプログラムされている。当然のことながら、本明細書に記載の生成識別子782と関連付けられたワークロード780等、他のアプリケーションがメモリ762にロードされ、モバイルコンピュータ機器700上で動作するようになっていてもよい。
[00141] システム702は、1つまたは複数のバッテリとして実現可能な電源770を有する。電源770は、ACアダプタまたはバッテリを補完もしくは充電する給電ドッキングクレードル等の外部電源をさらに具備し得る。
[00142] システム702は、当該システム702と1つまたは複数の周辺機器との間の接続を容易化する機能を実行する周辺機器ポート778を具備していてもよい。周辺機器ポート778に対する伝送は、オペレーティングシステム764の制御下で行われる。言い換えると、周辺機器ポート778が受信する情報は、オペレーティングシステム764を介してアプリケーションプログラム766に伝わり、逆も同様である。
[00143] また、システム702は、無線周波数情報を送信および受信する機能を実行する無線装置772を具備していてもよい。無線装置772は、通信キャリアまたはサービスプロバイダを介したシステム702と「外界」との間の無線接続を容易化する。無線装置772に対する伝送は、オペレーティングシステム764の制御下で行われる。言い換えると、無線装置772が受信する情報は、オペレーティングシステム764を介してアプリケーションプログラム766に伝わり、逆も同様である。
[00144] また、視覚的通知を提供するための視覚的表示器720の使用および/または音声トランスデューサ725を介した可聴通知の生成のための音声インターフェース774の使用が可能である。図示の例において、視覚的表示器720は発光ダイオード(LED)であり、音声トランスデューサ725はスピーカである。これらの機器は、バッテリ電力を節約するためにプロセッサ760等の構成要素を停止した場合であっても、起動後、通知機構が指示する期間にわたってオン状態を維持するように、電源770に直接結合されていてもよい。LEDは、機器の電源オン状態を示す措置をユーザが講じるまで、無制限にオン状態を維持するようにプログラムされていてもよい。音声インターフェース774は、ユーザに対する可聴信号の提供および可聴信号の受信に用いられる。たとえば、音声トランスデューサ725への結合のほか、音声インターフェース774は、通話の容易化等のため、マイクへの結合により、可聴入力を受信するようになっていてもよい。本発明の例によれば、マイクは、以下に説明する通り、通知の制御を容易化する音声センサとして機能するようになっていてもよい。システム702は、内蔵カメラ730の動作によって静止画像、映像ストリーム等を記録可能な映像インターフェース776をさらに具備していてもよい。
[00145] システム702を実装したモバイルコンピュータ機器700は、別の特徴または機能を有していてもよい。たとえば、モバイルコンピュータ機器700は、磁気ディスク、光ディスク、またはテープ等の別のデータ記憶装置(リムーバブルおよび/または非リムーバブル)を具備していてもよい。このような別のストレージは、不揮発性記憶領域768によって、図7Bに示している。
[00146] モバイルコンピュータ機器700により生成または取得され、システム702を介して格納されたデータ/情報は、上述の通り、モバイルコンピュータ機器700上でローカルに格納されていてもよいし、無線装置772またはモバイルコンピュータ機器700とインターネット等の分散コンピュータネットワークのサーバコンピュータ等、モバイルコンピュータ機器700と関連付けられた別個のコンピュータ機器との間の有線接続を介して機器がアクセス可能な任意数の記憶媒体に格納されていてもよい。当然のことながら、このようなデータ/情報は、モバイルコンピュータ機器700、無線装置772、または分散コンピュータネットワークを介してアクセスされるようになっていてもよい。同様に、このようなデータ/情報は、電子メールおよび協調型データ/情報共有システム等、周知のデータ/情報伝送・格納手段により、コンピュータ機器間で容易に伝送されて格納および使用されるようになっていてもよい。
[00147] 図8は、上述の通り、分散ワークロードを処理するとともに障害を取り扱うクラスタを1つまたは複数のクライアント機器に提供するシステムのアーキテクチャの一例を示している。ノード202、204、206、208、210、212、または214との関連でアクセス、相互作用、または編集される対象データは、異なる通信チャネルまたは他種のストレージに格納されるようになっていてもよい。たとえば、ディレクトリサービス822、ウェブポータル824、メールボックスサービス826、インスタントメッセージストア828、またはソーシャルネットワーキングサイト830を用いて、さまざまな文書が格納されるようになっていてもよい。ノード210等、ワークロードを処理するノードは、本明細書に記載の通り、データの利用を可能にするこれらの種類のシステム等のいずれかを使用するようにしてもよい。サーバ820は、ネットワーク815を介して、汎用コンピュータ機器602およびモバイル機器700上で動作するノード208、210、212、および214が使用するストレージシステム216を提供するようにしてもよい。一例として、ネットワーク815は、インターネットまたはその他任意の種類のローカルもしくはワイドエリアネットワークを含んでいてもよく、ノード202、204、206、208、210、212、および214は、パソコン、タブレットコンピュータ機器、および/またはモバイルコンピュータ機器700(たとえば、スマートフォン)にて具現化されたコンピュータ機器602として実装されていてもよい。クライアントコンピュータ機器602または700のこれら実施形態のいずれかが、ストア816からコンテンツを取得するようにしてもよい。
[00148] 本開示は、少なくとも1つのプロセッサと、当該少なくとも1つのプロセッサに対して動作可能に接続され、当該少なくとも1つのプロセッサにより実行された場合に、第1の生成識別子および第1のワークロード識別子を第1のワークロードと関連付けるステップと、第1の生成識別子、第1のワークロード識別子、および第1のワークロードを第1のノードに伝達するステップと、第1のノードとの通信障害時に、第2の生成識別子を生成し、第2の生成識別子を第1のワークロードと関連付け、第2の生成識別子、第1のワークロード識別子、および第1のワークロードを第2のノードに伝達するステップであって、第2の生成識別子が、第1の生成識別子と異なる優先度を伝達する、ステップと、を含む方法を実行する命令を含むメモリと、を備えたシステムを含む。例として、通信障害には、ノードの切断、ハードウェア障害、または再起動のうちの少なくとも1つを含む。また、第2の生成識別子は、第1の生成識別子よりも高い優先度を伝達するようにしてもよい。他の例において、第2の生成識別子は、第1の生成識別子よりも低い優先度を伝達するようにしてもよい。別の例において、これらのシステムおよび方法は、第2のノードから成功の指標を受信するステップと、第1の生成識別子よりも高い優先度を伝達する第3の生成識別子を生成するステップと、第3の生成識別子を第1のワークロードと関連付けるステップと、第3の生成識別子を第2のノードに伝達するステップと、をさらに含む。さらに、第2の生成識別子を伝達するステップは、第1のノードが依然として第1のワークロードを処理していると判定された場合に、第2のノードが第1のノードを妨害すべきではない旨の指標を送信するステップを含んでいてもよい。また、例として、第1および第2の生成識別子はそれぞれ、少なくとも2つの下位部分で構成され、これら少なくとも2つの下位部分がそれぞれ優先度を伝達する。さらに、例として、少なくとも2つの下位部分のうちの1つによる優先度の指標が、少なくとも2つの下位部分のうちの別の下位部分により示される優先度が先行するように、少なくとも2つの下位部分それぞれにより伝達される優先度が重み付けされている。
[00149] 数ある例の中で、本開示は、対象データに対する第1のアクセス要求を受信することであって、対象データがストレージシステムにより格納され、第1のアクセス要求が第1の生成識別子および第1のワークロード識別子と関連付けられた、ことと、第1の生成識別子および第1のワークロード識別子を第1の格納生成識別子および第1の格納ワークロード識別子として持続的ストレージに格納することと、対象データに対する第1のアクセス要求を許可することと、対象データに対する第2のアクセス要求を受信することであって、第2のアクセス要求が第2の生成識別子および第1のワークロード識別子と関連付けられた、ことと、第2の生成識別子を第1の格納生成識別子と比較し、第1のワークロード識別子を第1の格納ワークロード識別子と比較することと、第2の生成識別子が第1の格納生成識別子よりも高い優先度を示し、第1のワークロード識別子が第1の格納ワークロード識別子に一致するものと判定することと、第2の生成識別子を第2の格納生成識別子として持続的ストレージに格納することと、対象データに対する第2のアクセス要求を許可することと、対象データに対する第3のアクセス要求を受信することであって、第3のアクセス要求が第1の生成識別子および第1のワークロード識別子と関連付けられた、ことと、第1の生成識別子が第2の格納生成識別子よりも低い優先度を示し、第1のワークロード識別子が第1の格納ワークロード識別子に一致するものと判定することと、対象データに対する前記第3のアクセス要求を拒絶することと、を行うシステムおよび方法を提示する。例として、第1のアクセス要求および第3のアクセス要求は、第1のノードから受信され、第2のアクセス要求は、第2のノードから受信され、対象データに対する第3のアクセス要求を拒絶することは、第1のワークロードが第2のノードに対して再割り当てされた旨の指標を第1のノードに提供することを含む。別の例として、第3のアクセス要求を拒絶することは、第1の生成識別子が第2の格納生成識別子よりも低い優先度を示す旨の指標を提供することを含む。別の例として、これらのシステムおよび方法は、対象データに対する第4のアクセス要求を第2のノードから受信することであって、第4のアクセス要求が第3の生成識別子および第1のワークロード識別子と関連付けられ、要求が許容状態である旨の指標を含む、ことと、第3の生成識別子が第2の格納生成識別子よりも高い優先度を示すものと判定することと、ストレージシステムが依然として第1のノードと通信可能であるものと判定することと、対象データに対する第4のアクセス要求を拒絶することと、をさらに含む。さらに、例として、第4のアクセス要求を拒絶することは、ストレージシステムが依然として第1のノードと通信可能である旨の指標を第2のノードに提供することを含む。他の例において、これらのシステムおよび方法は、第1のアクセス要求の許可に際して、対象データをロックすることと、第2のアクセス要求の許可後、対象データのロックを解除して、第1の格納生成識別子を持続的ストレージから削除することと、を含む。また、例として、第1、第2、および第3の生成識別子はそれぞれ、少なくとも2つの下位部分で構成され、これら少なくとも2つの下位部分がそれぞれ優先度を伝達する。さらに、少なくとも2つの下位部分のうちの1つによる優先度の指標が、少なくとも2つの下位部分のうちの別の下位部分により示される優先度が先行するように、少なくとも2つの下位部分それぞれにより伝達される優先度が重み付けされていてもよい。
[00150] 本明細書の別の記載は、対象データに対する第1のアクセス要求をストレージシステムに送信することであって、第1のアクセス要求が第1の生成識別子と、第1のノード上で実行する第1のワークロードと関連付けられた第1のワークロード識別子と関連付けられた、ことと、対象データへのアクセスを許可する第1のアクセス応答を受信することと、第1のアクセス応答の受信後、対象データへのアクセスが許可された旨の指標を第2のノードに送信することと、後続のアクセス要求における使用のために第2の生成識別子を受信することと、対象データに対する第2のアクセス要求をストレージシステムに送信することであって、第2のアクセス要求が第2の生成識別子および第1のワークロード識別子と関連付けられた、ことと、対象データへのアクセスを許可する第2のアクセス応答を受信することと、を行うシステムおよび方法を開示する。別の例において、これらのシステムおよび方法は、対象データに対する第3のアクセス要求をストレージシステムに送信することであって、第3のアクセス要求が第2の生成識別子および第1のワークロード識別子と関連付けられた、ことと、対象データへのアクセスを拒絶するとともに、第1のワークロードに関して、対象データへのアクセスが第3のノードに再割り当てされた旨の指標を含む第3のアクセス応答を受信することと、受信した第3のアクセス応答の結果として、第1のノード上での第1のワークロードの実行を停止することと、を含む。さらに、例として、第1のアクセス要求は、当該第1のアクセス要求が許容状態である旨の指標を含む。他の例において、第3のアクセス応答は、第1のノードと第2のノードとの間の通信障害後に受信される。
[00151] 本明細書の全体を通して、「一例(one exampleまたはan example)」という表現は、記載された特定の特徴、構造、または特性が少なくとも1つの例に含まれることを意味する。したがって、このような表現の使用は、2つ以上の例を表す場合がある。さらに、上記特徴、構造、または特性は、1つまたは複数の例において、任意適当に組み合わせ可能である。
[00152] ただし、当業者であれば、具体的詳細のうちの1つまたは複数を用いることなく、または、他の方法、リソース、材料等を用いて、上記例を実現可能であることが認識されよう。他の例では、周知の構造、リソース、または動作について、詳細な図示も説明も行っていないが、これは単に、上記例の曖昧な態様を確認可能とするためである。
[00153] 以上、例および用途を図示および説明したが、これらの例は、上述の厳密な構成およびリソースに限定されないことが了解されるものとする。特許請求の範囲に係る例の範囲から逸脱することなく、本明細書に開示の方法およびシステムの構成、動作、および詳細について、当業者に明らかな種々改良、変更、および変形を行うことができる。

Claims (15)

  1. 少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサに対して動作可能に接続され、前記少なくとも1つのプロセッサにより実行された場合に、
    マスターノードが、第1の生成識別子および第1のワークロード識別子を第1のワークロードと関連付けるステップであって、前記第1の生成識別子は、第1のワーカーノードに関連付けられた初期の優先度を示す、ステップと、
    前記マスターノードが、前記第1の生成識別子、前記第1のワークロード識別子、および前記第1のワークロードを前記第1のワーカーノードに伝達するステップと、
    ストレージシステムが、前記第1のワーカーノードから第1のアクセス要求を受信するステップであって、前記第1のアクセス要求が前記第1の生成識別子および前記第1のワークロード識別子と関連付けられた、ステップと、
    前記第1のワーカーノードとの通信障害時に、前記マスターノードが、第2の生成識別子を生成し、前記第2の生成識別子を前記第1のワークロードと関連付け、前記第2の生成識別子、前記第1のワークロード識別子、および前記第1のワークロードを第2のワーカーノードに伝達するステップであって、前記第2の生成識別子は、前記第1の生成識別子と異なる優先度を示す、ステップと、
    前記ストレージシステムが、前記第2のワーカーノードから第2のアクセス要求を受信するステップであって、前記第2のアクセス要求が前記第2の生成識別子および前記第1のワークロード識別子と関連付けられた、ステップと、
    前記ストレージシステムが、前記第1の生成識別子の優先度と前記第2の生成識別子の優先度とに基づいて、前記第2のアクセス要求を許可するかを判定するステップと
    を含む方法を実行する命令を含むメモリと、
    を備えた、システム。
  2. 前記第2の生成識別子が、前記第1の生成識別子よりも低い優先度を示す、請求項1に記載のシステム。
  3. 前記マスターノードが、前記第2のワーカーノードから成功の指標を受信するステップと、
    前記マスターノードが、前記第1の生成識別子よりも高い優先度を示す第3の生成識別子を生成するステップと、
    前記マスターノードが、前記第3の生成識別子を前記第1のワークロードと関連付けるステップと、
    前記マスターノードが、前記第3の生成識別子を前記第2のワーカーノードに伝達するステップと、
    をさらに含む、請求項2に記載のシステム。
  4. 前記第2の生成識別子を伝達するステップが、前記第1のワーカーノードが依然として前記第1のワークロードを処理していると判定される場合に、前記第2のワーカーノードが前記第1のワーカーノードを妨害すべきではない旨の指標を送信するステップを含む、
    請求項1に記載のシステム。
  5. 前記第1の生成識別子および前記第2の生成識別子がそれぞれ、少なくとも2つの部分で構成され、前記少なくとも2つの部分がそれぞれ優先度を示す、請求項1に記載のシステム。
  6. 前記少なくとも2つの部分のうちの1つによる優先度の指標が、前記少なくとも2つの部分のうちの別の部分により示される優先度が先行するように、前記少なくとも2つの部分それぞれにより示される前記優先度が重み付けされた、請求項5に記載のシステム。
  7. コンピュータ実装方法であって、
    対象データに対する第1のアクセス要求を受信するステップであって、前記対象データがストレージシステムにより格納され、前記第1のアクセス要求が第1の生成識別子および第1のワークロード識別子と関連付けられた、ステップと、
    前記第1の生成識別子および前記第1のワークロード識別子を第1の格納生成識別子および第1の格納ワークロード識別子として、前記ストレージシステムの持続的ストレージに格納するステップと、
    前記対象データに対する前記第1のアクセス要求を許可するステップと、
    前記対象データに対する第2のアクセス要求を受信するステップであって、前記第2のアクセス要求が第2の生成識別子および前記第1のワークロード識別子と関連付けられた、ステップと、
    前記第2の生成識別子を前記第1の格納生成識別子と比較し、前記第1のワークロード識別子を前記第1の格納ワークロード識別子と比較するステップと、
    前記第2の生成識別子が前記第1の格納生成識別子よりも高い優先度を示し、前記第1のワークロード識別子が前記第1の格納ワークロード識別子に一致するものと判定するステップと、
    前記第2の生成識別子を第2の格納生成識別子として持続的ストレージに格納するステップと、
    前記対象データに対する前記第2のアクセス要求を許可するステップと、
    前記対象データに対する第3のアクセス要求を受信するステップであって、前記第3のアクセス要求が前記第1の生成識別子および前記第1のワークロード識別子と関連付けられた、ステップと、
    前記第1の生成識別子が前記第2の格納生成識別子よりも低い優先度を示し、前記第1のワークロード識別子が前記第1の格納ワークロード識別子に一致するものと判定するステップと、
    前記対象データに対する前記第3のアクセス要求を拒絶するステップと、
    を含む、方法。
  8. 前記第1のアクセス要求および前記第3のアクセス要求が、第1のノードから受信され、前記第2のアクセス要求が、第2のノードから受信され、前記対象データに対する前記第3のアクセス要求を拒絶するステップが、前記第1のワークロード識別子に関連付けられた第1のワークロードが前記第2のノードに対して再割り当てされた旨の指標を前記第1のノードに提供するステップを含む、請求項7に記載の方法。
  9. 前記第3のアクセス要求を拒絶するステップが、前記第1の生成識別子が前記第2の格納生成識別子よりも低い優先度を示す旨の指標を提供するステップを含む、請求項7に記載の方法。
  10. 前記第3のアクセス要求が、第1のノードから受信され、
    前記対象データに対する第4のアクセス要求を第2のノードから受信するステップであって、前記第4のアクセス要求が第3の生成識別子および前記第1のワークロード識別子と関連付けられ、前記要求が許容状態である旨の指標を含む、ステップと、
    前記第3の生成識別子が前記第2の格納生成識別子よりも高い優先度を示すものと判定するステップと、
    前記ストレージシステムが依然として前記第1のノードと通信可能であるものと判定するステップと、
    前記対象データに対する前記第4のアクセス要求を拒絶するステップと、
    をさらに含む、請求項7に記載の方法。
  11. 前記第4のアクセス要求を拒絶するステップが、前記ストレージシステムが依然として前記第1のノードと通信可能である旨の指標を前記第2のノードに提供するステップを含む、請求項10に記載の方法。
  12. 前記第1のアクセス要求の許可に際して、前記対象データをロックするステップと、
    前記第2のアクセス要求の許可後、前記対象データの前記ロックを解除して、前記第1の格納生成識別子を持続的ストレージから削除するステップと、
    をさらに含む、請求項7に記載の方法。
  13. 前記第1の生成識別子、前記第2の生成識別子、および第3の生成識別子がそれぞれ、少なくとも2つの部分で構成され、前記少なくとも2つの部分がそれぞれ優先度を示す、請求項7に記載の方法。
  14. 前記少なくとも2つの部分のうちの1つによる優先度の指標が、前記少なくとも2つの部分のうちの別の部分により示される優先度が先行するように、前記少なくとも2つの部分それぞれにより示される前記優先度が重み付けされた、請求項7に記載の方法。
  15. 前記第2のアクセス要求を許可するかを判定するステップが、
    前記第2の生成識別子が前記第1の生成識別子よりも低い優先度を示す場合、
    前記ストレージシステムが、前記第1のワークロードが処理されていることを前記第2のワーカーノードに通知するステップと、
    前記第2の生成識別子が前記第1の生成識別子よりも高い優先度を示す場合、
    前記ストレージシステムが、前記第2のアクセス要求を許可するステップと、
    前記ストレージシステムが、前記第1のワークロードが再割り当てされた旨の指標を前記第1のワーカーノードに送信するステップと
    をさらに含む、請求項1に記載のシステム。
JP2017503008A 2014-08-12 2015-08-10 通信障害後の分散ワークロード再割り当て Active JP6654183B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/457,842 US9847918B2 (en) 2014-08-12 2014-08-12 Distributed workload reassignment following communication failure
US14/457,842 2014-08-12
PCT/US2015/044404 WO2016025354A1 (en) 2014-08-12 2015-08-10 Distributed workload reassignment following communication failure

Publications (3)

Publication Number Publication Date
JP2017530437A JP2017530437A (ja) 2017-10-12
JP2017530437A5 JP2017530437A5 (ja) 2018-08-30
JP6654183B2 true JP6654183B2 (ja) 2020-02-26

Family

ID=53836912

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017503008A Active JP6654183B2 (ja) 2014-08-12 2015-08-10 通信障害後の分散ワークロード再割り当て

Country Status (7)

Country Link
US (4) US9847918B2 (ja)
EP (1) EP3180694B1 (ja)
JP (1) JP6654183B2 (ja)
CN (1) CN106575245B (ja)
BR (1) BR112017001850B1 (ja)
RU (1) RU2701094C2 (ja)
WO (1) WO2016025354A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9665432B2 (en) 2014-08-07 2017-05-30 Microsoft Technology Licensing, Llc Safe data access following storage failure
US9847918B2 (en) * 2014-08-12 2017-12-19 Microsoft Technology Licensing, Llc Distributed workload reassignment following communication failure
US9703830B2 (en) * 2014-10-09 2017-07-11 International Business Machines Corporation Translation of a SPARQL query to a SQL query
US10055164B2 (en) * 2016-09-07 2018-08-21 Sandisk Technologies Llc Data storage at an access device
US10069597B2 (en) * 2016-09-07 2018-09-04 Western Digital Technologies, Inc. Aggregated metadata transfer at a data storage device
US11054887B2 (en) * 2017-12-28 2021-07-06 Advanced Micro Devices, Inc. System-wide low power management
CN110324375B (zh) * 2018-03-29 2020-12-04 华为技术有限公司 一种信息备份方法及相关设备
CN110119400B (zh) * 2019-04-04 2021-07-20 上海易点时空网络有限公司 适用于逻辑运算的唯一标识生成方法及装置
US11847012B2 (en) * 2019-06-28 2023-12-19 Intel Corporation Method and apparatus to provide an improved fail-safe system for critical and non-critical workloads of a computer-assisted or autonomous driving vehicle
US20230169483A1 (en) * 2021-11-26 2023-06-01 Paypal, Inc. Decentralized transaction processing
US12056035B2 (en) * 2022-01-13 2024-08-06 Dell Products L.P. System and method for enhanced container deployment
CN114826905A (zh) * 2022-03-31 2022-07-29 西安超越申泰信息科技有限公司 一种下层节点切换管理服务的方法、系统、设备及介质
US20240022609A1 (en) * 2023-03-31 2024-01-18 Ned M. Smith Security and resiliency for cloud to edge deployments

Family Cites Families (140)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1229091A (en) 1916-08-30 1917-06-05 X Ray Incubator Company Gas and smoke sealing device for incubators.
JPH04271454A (ja) 1991-02-27 1992-09-28 Toshiba Corp 疎結合計算機システム
JPH06301655A (ja) 1993-04-14 1994-10-28 Hitachi Ltd 分散処理システム
US5625817A (en) 1995-02-28 1997-04-29 Bmc Software, Inc. Method of identifying DB2 objects to be recovered from an unavailable DASD volume without need to access the DASD volume itself and without need for pre-failure preparation
JPH10133971A (ja) 1996-10-25 1998-05-22 Nec Corp ファイル転送処理方式
US6442533B1 (en) * 1997-10-29 2002-08-27 William H. Hinkle Multi-processing financial transaction processing system
US6178529B1 (en) * 1997-11-03 2001-01-23 Microsoft Corporation Method and system for resource monitoring of disparate resources in a server cluster
JP4040178B2 (ja) 1998-07-21 2008-01-30 キヤノン株式会社 通信制御装置、通信制御方法、および、記憶媒体
US6301676B1 (en) 1999-01-22 2001-10-09 Sun Microsystems, Inc. Robust and recoverable interprocess locks
US6757289B1 (en) * 1999-04-23 2004-06-29 Nortel Networks Limited Apparatus and method for managing communication between a failed application and other executing applications
US6539446B1 (en) 1999-05-07 2003-03-25 Oracle Corporation Resource locking approach
US6574749B1 (en) 1999-10-29 2003-06-03 Nortel Networks Limited Reliable distributed shared memory
AU2001248164A1 (en) * 2000-03-31 2001-10-15 Mdsi Mobile Data Solutions, Inc. Enterprise scheduling system for scheduling mobile service representatives
WO2001077844A1 (fr) 2000-04-10 2001-10-18 Fujitsu Limited Systeme de traitement d'informations et serveur associe
US6564229B1 (en) 2000-06-08 2003-05-13 International Business Machines Corporation System and method for pausing and resuming move/copy operations
FR2820874B1 (fr) 2001-02-13 2003-05-30 St Microelectronics Sa Procede de gestion a acces aleatoire et rapide d'une memoire dram
US6636585B2 (en) * 2000-06-26 2003-10-21 Bearingpoint, Inc. Metrics-related testing of an operational support system (OSS) of an incumbent provider for compliance with a regulatory scheme
US6990606B2 (en) 2000-07-28 2006-01-24 International Business Machines Corporation Cascading failover of a data management application for shared disk file systems in loosely coupled node clusters
US7120697B2 (en) * 2001-05-22 2006-10-10 International Business Machines Corporation Methods, systems and computer program products for port assignments of multiple application instances using the same source IP address
US7191442B2 (en) * 2000-10-30 2007-03-13 Research Investment Network, Inc. BCA writer serialization management
US7711831B2 (en) * 2001-05-22 2010-05-04 International Business Machines Corporation Methods, systems and computer program products for source address selection
US6839662B2 (en) * 2001-08-17 2005-01-04 Lockheed Martin Corporation Command and control system architecture for convenient upgrading
US7093004B2 (en) * 2002-02-04 2006-08-15 Datasynapse, Inc. Using execution statistics to select tasks for redundant assignment in a distributed computing platform
US7904360B2 (en) * 2002-02-04 2011-03-08 Alexander William EVANS System and method for verification, authentication, and notification of a transaction
JP4176359B2 (ja) 2002-03-01 2008-11-05 株式会社エヌ・ティ・ティ・ドコモ データ取得方法、中継装置、プログラムおよび記録媒体
US6732171B2 (en) 2002-05-31 2004-05-04 Lefthand Networks, Inc. Distributed network storage system with virtualization
US20050144189A1 (en) * 2002-07-19 2005-06-30 Keay Edwards Electronic item management and archival system and method of operating the same
US7159211B2 (en) * 2002-08-29 2007-01-02 Indian Institute Of Information Technology Method for executing a sequential program in parallel with automatic fault tolerance
US7254687B1 (en) 2002-12-16 2007-08-07 Cisco Technology, Inc. Memory controller that tracks queue operations to detect race conditions
US7284151B2 (en) 2003-07-21 2007-10-16 Oracle International Corporation Conditional data access after database system failure
US7380039B2 (en) * 2003-12-30 2008-05-27 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
US20050165881A1 (en) * 2004-01-23 2005-07-28 Pipelinefx, L.L.C. Event-driven queuing system and method
US8543781B2 (en) 2004-02-06 2013-09-24 Vmware, Inc. Hybrid locking using network and on-disk based schemes
US7818444B2 (en) * 2004-04-30 2010-10-19 Move Networks, Inc. Apparatus, system, and method for multi-bitrate content streaming
WO2005111772A2 (en) 2004-05-13 2005-11-24 Matsushita Electric Industrial Co., Ltd. An information processing apparatus, an integrated circuit, a data transfer controlling method, a data transfer controlling program, a program storage medium, a program transmission medium and a data storage medium
US20050268300A1 (en) * 2004-05-14 2005-12-01 Microsoft Corporation Distributed task scheduler for computing environments
US7145450B2 (en) * 2004-05-28 2006-12-05 Brown William J Compactor service and monitoring system
US11049349B2 (en) * 2004-06-01 2021-06-29 Daniel William Onischuk Computerized voting system
US8023417B2 (en) * 2004-08-30 2011-09-20 International Business Machines Corporation Failover mechanisms in RDMA operations
US7979862B2 (en) * 2004-12-21 2011-07-12 Hewlett-Packard Development Company, L.P. System and method for replacing an inoperable master workload management process
US7962915B2 (en) 2005-03-18 2011-06-14 International Business Machines Corporation System and method for preserving state for a cluster of data servers in the presence of load-balancing, failover, and fail-back events
CA2504333A1 (en) * 2005-04-15 2006-10-15 Symbium Corporation Programming and development infrastructure for an autonomic element
US9418040B2 (en) * 2005-07-07 2016-08-16 Sciencelogic, Inc. Dynamically deployable self configuring distributed network management system
US7688794B2 (en) * 2005-12-13 2010-03-30 Xerox Corporation System and method for diverting a printing job to a proximal networked device
US20110010518A1 (en) * 2005-12-19 2011-01-13 Srinivas Kavuri Systems and Methods for Migrating Components in a Hierarchical Storage Network
US7949863B2 (en) 2006-03-30 2011-05-24 Silicon Image, Inc. Inter-port communication in a multi-port memory device
US20100138745A1 (en) * 2006-11-15 2010-06-03 Depth Analysis Pty Ltd. Systems and methods for managing the production of a free-viewpoint and video-based animation
US7444459B2 (en) * 2006-12-12 2008-10-28 Lsi Logic Corporation Methods and systems for load balancing of virtual machines in clustered processors using storage related load information
JP5018133B2 (ja) * 2007-02-27 2012-09-05 富士通株式会社 ジョブ管理装置、クラスタシステム、およびジョブ管理プログラム
US8453142B2 (en) 2007-04-26 2013-05-28 Hewlett-Packard Development Company, L.P. Virtual machine control
US8180747B2 (en) 2007-11-12 2012-05-15 F5 Networks, Inc. Load sharing cluster file systems
US8326910B2 (en) * 2007-12-28 2012-12-04 International Business Machines Corporation Programmatic validation in an information technology environment
US8365185B2 (en) * 2007-12-28 2013-01-29 International Business Machines Corporation Preventing execution of processes responsive to changes in the environment
US8259910B2 (en) * 2008-03-14 2012-09-04 Voicecloud Method and system for transcribing audio messages
US20090234643A1 (en) * 2008-03-14 2009-09-17 Afifi Sammy S Transcription system and method
US10372924B2 (en) * 2008-05-12 2019-08-06 George Madathilparambil George Master device for controlling application security environments
US7840730B2 (en) 2008-06-27 2010-11-23 Microsoft Corporation Cluster shared volumes
US8281023B2 (en) * 2008-11-14 2012-10-02 Qualcomm Incorporated Systems and methods for data authorization in distributed storage networks
JP5223707B2 (ja) * 2009-02-05 2013-06-26 富士通株式会社 ソフトウェア更新指示プログラム、ソフトウェア更新指示方法、および情報処理装置
US8914511B1 (en) 2009-06-26 2014-12-16 VMTurbo, Inc. Managing resources in virtualization systems
US9021158B2 (en) 2009-09-09 2015-04-28 SanDisk Technologies, Inc. Program suspend/resume for memory
US8458500B2 (en) 2009-11-30 2013-06-04 International Business Machines Corporation Server allocation to workload based on energy profiles
US8355713B1 (en) 2010-01-21 2013-01-15 Sprint Spectrum L.P. Use of femtocell to control wireless communication device priorities
US8572612B2 (en) 2010-04-14 2013-10-29 International Business Machines Corporation Autonomic scaling of virtual machines in a cloud computing environment
JP4951092B2 (ja) 2010-06-03 2012-06-13 株式会社東芝 アクセス制御プログラム及び装置
US9329947B2 (en) 2010-06-22 2016-05-03 Red Hat Israel, Ltd. Resuming a paused virtual machine without restarting the virtual machine
US8566640B2 (en) 2010-07-19 2013-10-22 Veeam Software Ag Systems, methods, and computer program products for instant recovery of image level backups
US8631277B2 (en) 2010-12-10 2014-01-14 Microsoft Corporation Providing transparent failover in a file system
US8879382B2 (en) 2010-12-30 2014-11-04 Juniper Networks, Inc. Partial failure messaging
US8713365B2 (en) 2011-01-28 2014-04-29 Microsoft Corporation Re-establishing push notification channels via user identifiers
US8364888B2 (en) 2011-02-03 2013-01-29 Stec, Inc. Erase-suspend system and method
US9003104B2 (en) * 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US10108630B2 (en) 2011-04-07 2018-10-23 Microsoft Technology Licensing, Llc Cluster unique identifier
US8745434B2 (en) * 2011-05-16 2014-06-03 Microsoft Corporation Platform for continuous mobile-cloud services
US20120303654A1 (en) 2011-05-26 2012-11-29 James Michael Ferris Methods and systems to automatically extract and transport data associated with workload migrations to cloud networks
US8769537B1 (en) * 2011-06-08 2014-07-01 Workday, Inc. System for partitioning batch processes
US8856582B2 (en) 2011-06-30 2014-10-07 Microsoft Corporation Transparent failover
US8490092B2 (en) 2011-07-06 2013-07-16 Microsoft Corporation Combined live migration and storage migration using file shares and mirroring
KR20130022091A (ko) 2011-08-24 2013-03-06 주식회사 케이티 클라우드 컴퓨팅 서버 시스템의 가상머신 제어 장치 및 방법
US8788579B2 (en) 2011-09-09 2014-07-22 Microsoft Corporation Clustered client failover
US20130067095A1 (en) 2011-09-09 2013-03-14 Microsoft Corporation Smb2 scaleout
US8694462B2 (en) * 2011-09-12 2014-04-08 Microsoft Corporation Scale-out system to acquire event data
US20130066674A1 (en) * 2011-09-12 2013-03-14 Microsoft Corporation Marketplace for timely event data distribution
US8595322B2 (en) * 2011-09-12 2013-11-26 Microsoft Corporation Target subscription for a notification distribution system
US20130067024A1 (en) * 2011-09-12 2013-03-14 Microsoft Corporation Distributing multi-source push notifications to multiple targets
US9208476B2 (en) * 2011-09-12 2015-12-08 Microsoft Technology Licensing, Llc Counting and resetting broadcast system badge counters
US9804928B2 (en) * 2011-11-14 2017-10-31 Panzura, Inc. Restoring an archived file in a distributed filesystem
US20130159487A1 (en) * 2011-12-14 2013-06-20 Microsoft Corporation Migration of Virtual IP Addresses in a Failover Cluster
US9154367B1 (en) * 2011-12-27 2015-10-06 Google Inc. Load balancing and content preservation
DK2791748T3 (da) * 2012-02-08 2020-11-09 Omron Robotics And Safety Tech Inc Opgavestyringssystem for en flåde af autonome mobile robotter
JP5948933B2 (ja) * 2012-02-17 2016-07-06 日本電気株式会社 ジョブ継続管理装置、ジョブ継続管理方法、及び、ジョブ継続管理プログラム
US9405005B1 (en) * 2012-04-24 2016-08-02 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Automatic dependent surveillance broadcast (ADS-B) system for ownership and traffic situational awareness
US8918672B2 (en) 2012-05-31 2014-12-23 International Business Machines Corporation Maximizing use of storage in a data replication environment
US9223626B2 (en) * 2012-08-30 2015-12-29 International Business Machines Corporation Task execution and management in a clustered computing environment
WO2014032174A1 (en) 2012-08-31 2014-03-06 Bce Inc. Ip mpls pop virtualization and fault tolerant virtual router
US9304878B2 (en) 2012-10-11 2016-04-05 Vmware, Inc. Providing multiple IO paths in a virtualized environment to support for high availability of virtual machines
US9135049B2 (en) 2012-10-16 2015-09-15 Red Hat Israel, Ltd. Performing thin-provisioning operations on virtual disk images using native features of the storage domain
US9635088B2 (en) * 2012-11-26 2017-04-25 Accenture Global Services Limited Method and system for managing user state for applications deployed on platform as a service (PaaS) clouds
US9658983B1 (en) * 2012-12-14 2017-05-23 Amazon Technologies, Inc. Lifecycle support for storage objects having multiple durability levels specifying different numbers of versions
US9355060B1 (en) * 2012-12-14 2016-05-31 Amazon Technologies, Inc. Storage service lifecycle policy transition management
US9727522B1 (en) * 2012-12-14 2017-08-08 Amazon Technologies, Inc. Multi-tenant storage service object lifecycle management using transition job objects
RU2543316C2 (ru) * 2012-12-25 2015-02-27 Закрытое акционерное общество "Лаборатория Касперского" Система и способ отказоустойчивого выполнения задач по расписанию в распределенных средах
US20140201292A1 (en) 2013-01-17 2014-07-17 Icon.me, LLC Digital business card system performing social networking commonality comparisions, professional profile curation and personal brand management
US20140214801A1 (en) * 2013-01-29 2014-07-31 Vito Anthony Ciliberti, III System and Method for Enterprise Asset Management and Failure Reporting
US9779038B2 (en) 2013-01-31 2017-10-03 Apple Inc. Efficient suspend-resume operation in memory devices
US9071677B2 (en) * 2013-02-12 2015-06-30 Unify Square, Inc. Enhanced data capture, analysis, and reporting for unified communications
US9338055B2 (en) * 2013-03-15 2016-05-10 Cisco Technology, Inc. Virtual router upgrade via graceful restart
US9202591B2 (en) 2013-05-10 2015-12-01 Omnivision Technologies, Inc. On-line memory testing systems and methods
US9602423B2 (en) * 2013-06-28 2017-03-21 Pepperdata, Inc. Systems, methods, and devices for dynamic resource monitoring and allocation in a cluster system
US10310903B2 (en) * 2014-01-17 2019-06-04 Red Hat, Inc. Resilient scheduling of broker jobs for asynchronous tasks in a multi-tenant platform-as-a-service (PaaS) system
US9813516B2 (en) * 2014-02-18 2017-11-07 Salesforce.Com, Inc. Transparent sharding of traffic across messaging brokers
US20150263900A1 (en) * 2014-03-11 2015-09-17 Schlumberger Technology Corporation High performance distributed computing environment particularly suited for reservoir modeling and simulation
US9495478B2 (en) * 2014-03-31 2016-11-15 Amazon Technologies, Inc. Namespace management in distributed storage systems
US9482683B2 (en) * 2014-04-22 2016-11-01 Wipro Limited System and method for sequential testing across multiple devices
US9665432B2 (en) 2014-08-07 2017-05-30 Microsoft Technology Licensing, Llc Safe data access following storage failure
US9847918B2 (en) * 2014-08-12 2017-12-19 Microsoft Technology Licensing, Llc Distributed workload reassignment following communication failure
US11290524B2 (en) * 2014-08-13 2022-03-29 Microsoft Technology Licensing, Llc Scalable fault resilient communications within distributed clusters
US10102086B2 (en) * 2014-12-19 2018-10-16 Futurewei Technologies, Inc. Replicated database distribution for workload balancing after cluster reconfiguration
JP6413789B2 (ja) * 2015-01-22 2018-10-31 富士通株式会社 ジョブ管理プログラム、ジョブ管理方法及びジョブ管理装置
US9692729B1 (en) * 2015-02-18 2017-06-27 Amazon Technologies, Inc. Graceful migration of isolated virtual network traffic
US10084873B2 (en) * 2015-06-19 2018-09-25 Commvault Systems, Inc. Assignment of data agent proxies for executing virtual-machine secondary copy operations including streaming backup jobs
US9563514B2 (en) * 2015-06-19 2017-02-07 Commvault Systems, Inc. Assignment of proxies for virtual-machine secondary copy operations including streaming backup jobs
EP3329429A4 (en) * 2015-07-31 2019-04-03 Cisco Technology, Inc. QUORUM-BASED DISTRIBUTED ANOMALY AND REPAIR
US9928108B1 (en) * 2015-09-29 2018-03-27 Amazon Technologies, Inc. Metaevent handling for on-demand code execution environments
US11831682B2 (en) * 2015-10-28 2023-11-28 Qomplx Llc Highly scalable distributed connection interface for data capture from multiple network service and cloud-based sources
US10140206B2 (en) * 2015-11-17 2018-11-27 Proov Systems Ltd. Computerized method and end-to-end “pilot as a service” system for controlling start-up/enterprise interactions
US9952942B2 (en) * 2016-02-12 2018-04-24 Bank Of America Corporation System for distributed data processing with auto-recovery
US10067869B2 (en) * 2016-02-12 2018-09-04 Bank Of America Corporation System for distributed data processing with automatic caching at various system levels
EP3430515B1 (en) * 2016-03-15 2021-09-22 Datomia Research Labs Ou Distributed storage system data management and security
US10402728B2 (en) * 2016-04-08 2019-09-03 The Aerospace Corporation Systems and methods for multi-objective heuristics with conditional genes
US11218418B2 (en) * 2016-05-20 2022-01-04 Nutanix, Inc. Scalable leadership election in a multi-processing computing environment
WO2018170276A2 (en) * 2017-03-15 2018-09-20 Fauna, Inc. Methods and systems for a database
US20190089773A1 (en) * 2017-09-20 2019-03-21 Illumio, Inc. Segmentation server cluster for managing a segmentation policy
US10754720B2 (en) * 2018-09-26 2020-08-25 International Business Machines Corporation Health check diagnostics of resources by instantiating workloads in disaggregated data centers
US11042416B2 (en) * 2019-03-06 2021-06-22 Google Llc Reconfigurable computing pods using optical networks
US11122347B2 (en) * 2019-07-01 2021-09-14 Google Llc Reconfigurable computing pods using optical networks with one-to-many optical switches
US20210014177A1 (en) * 2020-09-26 2021-01-14 Intel Corporation Deterministic packet scheduling and dma for time sensitive networking
US20220108167A1 (en) * 2020-10-07 2022-04-07 Commvault Systems, Inc. Artificial intelligence-based information management system performance metric prediction
US20220276901A1 (en) * 2021-02-26 2022-09-01 Capital One Services, Llc Batch processing management
US11645215B2 (en) * 2021-06-11 2023-05-09 International Business Machines Corporation Efficient selection of a particular processor thread for handling an interrupt

Also Published As

Publication number Publication date
EP3180694A1 (en) 2017-06-21
US20180198691A1 (en) 2018-07-12
US11882011B2 (en) 2024-01-23
US20240137295A1 (en) 2024-04-25
US11228510B2 (en) 2022-01-18
US20220166690A1 (en) 2022-05-26
JP2017530437A (ja) 2017-10-12
US9847918B2 (en) 2017-12-19
US20160050294A1 (en) 2016-02-18
WO2016025354A1 (en) 2016-02-18
EP3180694B1 (en) 2021-06-09
BR112017001850B1 (pt) 2023-04-11
CN106575245B (zh) 2020-12-08
RU2701094C2 (ru) 2019-09-24
BR112017001850A2 (pt) 2017-11-21
CN106575245A (zh) 2017-04-19

Similar Documents

Publication Publication Date Title
JP6654183B2 (ja) 通信障害後の分散ワークロード再割り当て
US10545831B2 (en) Safe data access following storage failure
AU2012304549B2 (en) Clustered client failover
JP6382958B2 (ja) クラスタにおけるストレージ防御の分散
JP6266588B2 (ja) ローカル・データーおよびリモート・データーの同期
US20120239697A1 (en) Discovery and Client Routing to Database Nodes
WO2018120810A1 (zh) 一种解决数据冲突的方法和系统
CN112148695A (zh) 一种资源锁管理方法及装置
US9590839B2 (en) Controlling access to a shared storage system
KR101889749B1 (ko) 메시지 스케줄링 방법
KR20190010508A (ko) 메시지 스케줄링 방법

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20170321

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180720

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180720

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190320

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190422

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190620

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190926

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191220

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200106

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200129

R150 Certificate of patent or registration of utility model

Ref document number: 6654183

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250