JP2015508213A - ストレージプール内のディスク所有権の調停 - Google Patents

ストレージプール内のディスク所有権の調停 Download PDF

Info

Publication number
JP2015508213A
JP2015508213A JP2014558762A JP2014558762A JP2015508213A JP 2015508213 A JP2015508213 A JP 2015508213A JP 2014558762 A JP2014558762 A JP 2014558762A JP 2014558762 A JP2014558762 A JP 2014558762A JP 2015508213 A JP2015508213 A JP 2015508213A
Authority
JP
Japan
Prior art keywords
node
registration key
reservation
key
registration
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.)
Granted
Application number
JP2014558762A
Other languages
English (en)
Other versions
JP6170512B2 (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 JP2015508213A publication Critical patent/JP2015508213A/ja
Application granted granted Critical
Publication of JP6170512B2 publication Critical patent/JP6170512B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

本発明は、1つまたは複数の物理ディスクの所有権を確立するために永続的な予約技法を実装するための方法、システム、およびコンピュータープログラム製品に及ぶ。これらの永続的な予約技法は、ストレージプール内、ならびに任意の他のストレージ構成内で物理ディスクの所有権を決定するために使用することができる。本発明の永続的な予約技法を使用すると、ネットワークパーティションが発生したとき、物理ディスクのディフェンダーは、チャレンジャーがもはやディフェンダーのパーティション内にないという通知をディフェンダーが受け取るまでチャレンジャーの登録鍵を除去しない。このようにして、チャレンジャー上で実行するアプリケーションからの保留中のI/Oは、物理ディスクの適正な所有権を解決することができるまで、チャレンジャーの鍵が除去されることにより失敗することはない。

Description

本願発明の一実施例は、例えば、ストレージプール内のディスク所有権の調停に関する。
[0001]
[0002]コンピューターシステム、および関連技術は、社会の多くの側面に影響を及ぼす。実際、情報を処理するためのコンピューターシステムの能力は、我々の暮らし方や働き方を一変した。今や、コンピューターシステムは一般に、コンピューターシステムの出現前には手作業で実施されていた多数のタスク(たとえば、ワードプロセッシング、スケジューリング、会計など)を実施する。ごく最近では、コンピューターシステムは、互いに、また他の電子デバイスに結合され、有線および無線のコンピューターネットワークを形成しており、このコンピューターネットワーク上でコンピューターシステムおよび他の電子デバイスが電子データを転送することができる。したがって、多数のコンピューティングタスクの実施が、いくつかの異なるコンピューターシステムおよび/またはいくつかの異なるコンピューティング環境にわたって分散される。
[0003]クラスタ化は、本明細書ではノードと呼ばれる複数のコンピューターシステムをグループ化することを指す。クラスタは、しばしば、共有ストレージを使用し、ノードのいずれかで実行されるアプリケーションが同じデータにアクセスすることを可能にする。共有ストレージは、クラスタ内のノード間でのアプリケーションのフェイルオーバーを可能にする。たとえば、ノードが故障した場合、その故障したノード上で実行されるアプリケーションを、それらが引き続き実行される別のノードに入れ替えることができる。フェイルオーバーされたアプリケーションによって使用されるデータは任意のノードからアクセス可能な共有ストレージ上に記憶されているので、アプリケーションは、別のノードに切り替えられた後で引き続き実行する(たとえば、同じデータにアクセスする)ことができる。このようにして、フェイルオーバーは、ユーザーから見て本質的に透過的なものである。
[0004]クラスタを実装するためには、ノードの間で一貫性を維持することが必要である。たとえば、クラスタ構成データは、各ノードがその構成データに対してアクセスを有するにしても、ノードの間で依然として一貫しているべきである。各ノードがクラスタ内の他のノードと通信することができる限り、一貫性を維持することができる。クラスタによっては、各ノードがクラスタ構成データのコピーを記憶し、クラスタサービスがノードの間でデータを同期する。
[0005]ネットワークパーティションが発生し、したがってノードが通信できないとき、1つの問題が発生する。図1(従来技術)は、ネットワークパーティション107がクラスタ100内で発生し、ノードの第1のパーティション(ノード101〜102)がノードの第2のパーティション(ノード103〜104)と通信できない例を示す。共有ストレージ106は、クラスタの各ノードにとって依然としてアクセス可能であるが、第1のパーティション内のノードは、第2のパーティション内のノードと通信することができない。クラスタ内のそのような分割が発生したとき、一貫性が確実に維持されるように、1つのパーティションだけがクラスタとして機能し続けることが必要である。
[0006]クラスタ内の1つのパーティションだけが確実に実行し続ける(すなわち、共有ストレージ106に対するアクセスを保持する)ためには、クラスタサービスは、パーティションにクォーラムを有するように要求する。一般に、クォーラムを有するとは、パーティションがクラスタ内の要素の過半数を含むことを意味する。クラスタの構成に応じて、要素は、クラスタのノード、またおそらくはディスク(ディスク証人(disk witness)と呼ばれることもある)またはファイル共有を含むことができる。ディスク証人は、偶数のノードが存在するとき使用され、タイが発生するはずの状況(たとえば、過半数を決定するときそれらのノードだけが考慮される場合)を防止する。
[0007]図1では、第1のパーティションと第2のパーティションが共に同じ数のノードを有する。したがって、共有ストレージ106の所有権を有するどちらのパーティションも、クォーラム(すなわち、2つのノード+1つのディスク)を有することになる。ノードは、ディスクを所有するとき、ディスクに対して書込みアクセスを有する。他のノードもディスクに書き込むことができるが、所有者は、どのノードがアクセスを有するか制御することができる。このようにして、単一のノードが、誰がディスクにアクセスすることができるかに対して制御することができる。図1では、ネットワークパーティション107の発生前、ノード101が共有ストレージ106の所有権を有する。
[0008]一般に、所有者ノードは、クラスタのメンバである、また(たとえばパーティションが発生したとき)所有者ノードのパーティション内にあることを知っているノードに対してアクセスを可能にする。したがって、パーティションが発生したとき、ディスクを所有するノードは、過半数外のノードが共有ストレージにアクセスするのを防止する責任を負う。たとえば、図1では、ノード101は、所有者として、ネットワークパーティション107が発生した後、ノード103〜104が共有ストレージ106にアクセスするのを防止することになる。
[0009]ディスク所有権は、一般に、永続的な予約(Persistent Reservation、PR)として知られるSCSIプロトコルを使用して決定および管理される。PRは、防御/チャレンジ機構である。PRでは、各ノードが、登録鍵として知られる一意の鍵を有する。ディスクの所有権を得るために、ノードは、登録されたそれ自体の鍵を有していなければならず、次いで、その鍵で予約を得なければならない。
[0010]図2A(従来技術)は、PRで使用される2つのテーブルを示す。図2Aは、ノード101がディスク(共有ストレージ106)の現在の所有者であるとき2つのテーブルの状態を表す。2つのテーブルがこの例で示されているが、PRは、単一のテーブル、または同様の情報を記憶するための他のデータ構造を使用して実装することができる。
[0011]ディスクに対する書込みアクセスを有するために、ノードは、その登録鍵を登録しなければならない。ノードは、その鍵を登録テーブル201に追加することによってその鍵を登録する。たとえば、登録テーブル201は、ノード101〜104のそれぞれが、それらの鍵を登録済みであることを示す。したがって、ノード101〜104は、共有ストレージ106に対して書込みアクセスを有する。
[0012]登録された後、次いでノードは、その鍵を、予約テーブル202に追加することによって予約しようと試みることができる。たとえば、予約テーブル202は、ノード101がその鍵を予約することに成功し、それによりノード101をそのディスクの所有者にすることを示す。ノードは、その鍵を予約した後で、その鍵を使用し、ディスクを制御することができる。
[0013]しかし、ノード(チャレンジャーと呼ばれる)がその鍵を予約しようと試みたとき予約がすでに存在する場合、予約は失敗することになる。たとえば、ノード101の鍵がすでに予約されているので、他のノードの、予約しようとする試みは失敗することになる。この失敗した予約の一部として、チャレンジャーは、現在の予約鍵(たとえば、ノード101の鍵)を受け取る。
[0014]予約がすでに存在するとき、ノードは、それ自体の鍵を受け取ることができる前に、まず予約をプリエンプトしなければならない。所有者ノード(ディフェンダーと呼ばれる)がディスクのその所有権を防御することを可能にするために、PR規則はチャレンジャーに、予約が失敗した後、プリエンプトコマンドを発光する前に、指定された期間(概して6秒)待つことを要求する。この期間後、チャレンジャーは起動状態になり、ディフェンダーの鍵を予約テーブルから除去しようと試みるためにプリエンプトコマンドを発行する。プリエンプトコマンドは、チャレンジャーの鍵と、現在の予約鍵(チャレンジャーが予約に失敗したとき受け取った予約テーブル内に予約されたディフェンダーの鍵)とを指定する。たとえば、プリエンプトコマンドは、予約テーブル202から除去するための鍵(ディフェンダーの鍵)と、予約テーブル202内で予約するための鍵(チャレンジャーの鍵)とを指定する。
[0015]プリエンプトコマンドが成功するために、チャレンジャーの鍵が依然として登録テーブル201内になければならない。その所有権を防御する(すなわち、チャレンジャーのプリエンプトコマンドに失敗させる)ために、ディフェンダーは、チャレンジャーがプリエンプトコマンドを発行する前にチャレンジャーの登録鍵を登録テーブル201から除去しなければならない。一般に、3秒ごとに、ディフェンダーは起動状態になり、何らかのチャレンジがなされたかどうか判定するために予約テーブル202を検査することになる。ディフェンダーは、ディスクを所有しているので、任意の他のノードの登録鍵を登録テーブル201から除去することができる。
[0016]ノード101が登録テーブル201内でノード104の鍵を見たとき、ノード101は、ノード104の鍵を登録テーブル201から除去することになる。図2B(従来技術)は、ノード101がノード104のチャレンジに対して防御した後の2つのテーブルの状態を表す。図のように、ノード104の鍵は、もはや登録テーブル201内にリストされていない。
[0017]したがって、ノード104が起動状態になり、プリエンプトコマンドを発行したとき、ディフェンダーがノード104の登録鍵をすでに除去しているので、プリエンプトコマンドは失敗することになる。ノード104の登録鍵が登録テーブル201から除去されているので、ノード104は、もはや共有ストレージ106に対するアクセスを有していない。
[0018]ディフェンダーはチャレンジャーより短い期間の間スリープするので、ディフェンダーが依然として機能する状態にあり、その所有権を防御しない理由がない限り、ディフェンダーは、所有権を求めてチャレンジするノードの登録鍵を定期的に除去することによって所有権を保持することになる。しかし、ディフェンダーは、ディスクに対するアクセスに失敗した、または他の形でアクセスを失った場合、チャレンジャーの登録鍵を除去することに失敗し、それによりチャレンジャーが所有権をプリエンプトする(すなわち、ディフェンダーの鍵を登録テーブルおよび予約テーブルから除去する)のに成功することを許すことになる。
[0019]また、防御時にチャレンジャーの登録鍵を除去することに加えて、ディフェンダーは、アクティブクラスタの一部であると認識できないノードの登録鍵を定期的に除去することになる。換言すれば、クラスタ内のノードは、ディフェンダーがどのノードと通信することができるかに関して定期的に更新される。所有者ノードが、(たとえば、ネットワークパーティションにより)クラスタ内の別のノードと通信することができないという通知を受け取った場合、所有者ノードは、その別のノードがクラスタストレージにアクセスするのを防止するためにその別のノードの登録鍵を除去することになる。
[0020]したがって、従来のPRでは、ノードの登録鍵が除去されることになる2つの一般的な状態、すなわち、(1)所有者ノードが、そのノードと通信することができないという通知を受け取ったとき、および(2)そのノードが、共有ストレージの所有権を求めるチャレンジに成功しなかったときがある。
[0021]ネットワークパーティションが発生したとき(すなわち、ノードが、クラスタ内の各ノードと通信することができないと気付いたとき)、ディスクの所有権を有していないパーティション内のノードは、一般に、ディスクの所有権を求めてチャレンジを開始することになる。たとえば、図1では、ネットワークパーティション107が発生した後、ノード103〜104の1つまたは複数は、ノード101の、共有ストレージ106の所有権をプリエンプトするためにチャレンジを開始することができる(なぜなら、ノード103、104は、クォーラムを取得し、それによりクラスタ内で引き続き機能することができるように、共有ストレージ106の所有権を必要とするからである)。
[0022]図1では、ネットワークパーティション107により、ノードのいずれも共有ストレージ106にアクセスするのを妨げられない(すなわち、ノード101〜102がノード103〜104と通信するのを防止するだけである)。したがって、ノード101は、その共有ストレージ106の所有権をノード103またはノード104のチャレンジから防御し続けることになる。
[0023]しかし、ノード101が共有ストレージ106に対する接続に失敗する、または他の形でその接続を失う(または、クォーラムを有することができるパーティション内にないので防御すべきでないと決定する)ことになった場合、ノード103またはノード104からのチャレンジは成功することになる(なぜなら、ノード101は、ノード103またはノード104の登録鍵を除去することができないことになるからである)。その結果、チャレンジャー(ノード103またはノード104)が起動状態になったとき、その登録鍵は依然として登録テーブル201内にリストされており、したがってチャレンジャーがノード101の所有権をプリエンプトすることを可能にすることになる。次いで、チャレンジャーは、共有ストレージ106の所有権を取ることになる。そのノードは、所有者として、上述のように(たとえば、ノード101またはノード102が所有権を求めてチャレンジを開始した場合)その所有権を防御し始めることになる。
[0024]上記の例は、ノードおよびストレージに所有権を決定するための投票権を与えるクラスタについて述べている。上述のPR技法を使用する他の投票方式も存在する。これらの方式は、ノードだけの投票(そのノードだけが投票権を有する)、およびノード+ファイル共有投票(ノードとファイルが投票権を共有する)を含む。ノードだけの投票は、一般に、クラスタが奇数のノードを含むとき使用される。ノード+ファイル共有投票は、上述のノード+ストレージ投票に似ているが、ファイル共有が共有ストレージのために使用されるとき使用される。
[0025]上述のPRは、多数の典型的なストレージ構成内で正しく機能する。しかし、上述のように、PRは、他のタイプのストレージ構成で使用されたとき(たとえば、クラスタが共有ストレージとして仮想ディスクを使用するとき)必ずしも満足のゆくものではない。Windows(登録商標)オペレーティングシステムでは、仮想ディスクは、「記憶域スペース」と呼ばれる。記憶域スペースでは、複数の物理ディスクがストレージプールに集約される。次いで、このストレージプールを、1つまたは複数の論理的な「スペース」(または仮想ディスク)に分割することができる。このスペースは仮想化され、実際には多数の異なる物理記憶デバイスにまたがる可能性があるにもかかわらず、各スペースは、アプリケーションにとって物理記憶デバイスとして見える。
[0026]たとえば、図3(従来技術)は、共有ストレージ106がストレージプール306に置き換えられたことを除いて図1のクラスタ100と同様であるクラスタ300を示す。ストレージプール306は、3つの物理記憶デバイス310〜312を含む。このプールから、ユーザーは1つまたは複数のスペースを作成することができる。図3は、ユーザーが単一のスペース307を作成したことを示す。スペース307は、クラスタ内の各ノード上のアプリケーションから見て、通常の物理ディスクとして扱うことができる。
[0027]スペースが使用されるとき、これらのスペースは物理ディスク間に散らばっている可能性があるので、クラスタのノードは、基礎となるプール内の各物理ディスクに対するアクセスを有する必要がある。たとえば、クラスタ300では、スペース307に書き込まれたデータは、ストレージプール306内の3つの物理記憶デバイスのどれにでも物理的に記憶される可能性がある。スペースを使用するとき、単一のノードがストレージプールを所有する(これは、そのノードがプール内の各物理ディスクを所有することを意味する)。
[0028]スペースを用いて標準的なPR技法を適用することによって引き起こされる1つの特定の問題は、スペースがそこから作成されるプールの所有権をプリエンプトしようとチャレンジャーが試みるときはいつでも、プールの所有者は、チャレンジャーの鍵を除去し、したがって、(チャレンジャー上のアプリケーションが物理ディスクに書き込むことを可能にするためには、チャレンジャーの鍵が物理ディスクに登録されていなければならないので)チャレンジャー上のアプリケーションから任意のスペースへのI/Oを失敗させることになることである。
[0029]チャレンジャーからのI/Oを失敗させることは、チャレンジの正しくない結果となり得る。たとえば、チャレンジャーは、ディフェンダーの前にネットワークパーティションについて通知を受けてもよい。ネットワークパーティションに応答して、チャレンジャーは、プールを求めてチャレンジを開始する。チャレンジャーが、クォーラムを有するパーティション内にある場合、正しい結果は、チャレンジャーがチャレンジを勝ち取り、プールの所有権を取る(それにより、チャレンジャーのパーティションが引き続き実行することを可能にする)ことであろう。
[0030]しかし、ディフェンダーがネットワークパーティションについて通知されなかった(したがって、クォーラムを有するパーティション内にあることを通知されなかった)場合、ディフェンダーは、そのプールの所有権を防御するのに成功することになる。上述の従来のPR技法を使用すると、この防御は、チャレンジャーの登録鍵を除去することを含み、その結果、チャレンジャーからの書込みは失敗することになる。ディフェンダーは、ネットワークパーティションの通知を受け取るまで、その所有権を防御するのに成功し続けることになる。したがって、ディフェンダーがネットワークパーティションの通知を受け取るまで、クラスタは、クォーラムを有するパーティション(すなわち、チャレンジャーのパーティション)での適正な動作を開始しないことになる。他のシナリオでは、従来のPR技法の適用は、やはり望ましくない結果に通じる。
[0031]本発明は、1つまたは複数の物理ディスクの所有権を確立するために永続的な予約技法を実装するための方法、システム、およびコンピュータープログラム製品に及ぶ。これらの永続的な予約技法は、ストレージプール内、ならびに任意の他のストレージ構成内で物理ディスクの所有権を決定するために使用することができる。本発明の永続的な予約技法を使用すると、ネットワークパーティションが発生したとき、物理ディスクのディフェンダーは、チャレンジャーがもはやディフェンダーのパーティション内にないという通知をディフェンダーが受け取るまでチャレンジャーの登録鍵を除去しない。このようにして、チャレンジャー上で実行するアプリケーションからの保留中のI/Oは、物理ディスクの適正な所有権を解決することができるまで、チャレンジャーの鍵が除去されることにより失敗することはない。
[0032]一実施形態では、第1のノードは、記憶デバイスに対する第1のノードの永続的な予約をプリエンプトしようとする別のノードの試みに対して防御する。第1のノードがクラスタ内の別のノードと通信するのを妨げるネットワークパーティションの後、および第1のノードがそのネットワークパーティションについて通知される前に、第1のノードは、クラスタ内のノードによって共有される記憶デバイスをクラスタ内の別のノードが予約しようと試みたことを検出する。この検出は、その別のノードが、登録データ構造内のその別のノードの登録鍵を変更したことを識別することを含む。
[0033]第1のノードは第1のノードの登録鍵を変更し、変更された登録鍵を登録データ構造内で登録し、変更された登録鍵を予約データ構造内で予約する。
[0034]他の実施形態では、第2のノードが記憶デバイスに対する第1のノードの永続的な予約を除去し、第2のノードのための永続的な予約を得ようと試みる。第2のノードは、第2のノードが第1のノードと通信するのを妨げるネットワークパーティションが発生したという通知を受け取る。
[0035]第2のノードは、記憶デバイスに対する永続的な予約を得るように第2のノードの登録鍵を予約しようと試みる。予約しようとする試みは、第2のノードが、予約データ構造内に記憶されている第1のノードの登録鍵を読み取り、第1のノードの鍵を記憶することを含む。また、予約しようとする試みは、第2のノードが、第2のノードの登録鍵を変更し、変更された登録鍵を登録することを含む。また、予約しようとする試みは、第2のノードが、指定された期間の間スリープしてから、プリエンプトコマンドを発行し、第1のノードの永続的な予約を除去することを含む。
[0036]この概要は、以下、詳細な説明でさらに述べる概念のうちの選ばれたものを簡単な形態で紹介するために設けられている。この概要は、特許請求されている主題の重要な特徴または本質的な特徴を識別するものでも、特許請求されている主題の範囲を決定する助けとして使用されるものでもない。
[0037]本発明の追加の特徴および利点は、以下の説明で述べられることになり、一部にはその説明から明らかとなり、または本発明を実施することによって学習することができる。本発明のそれらの特徴および利点は、添付の特許請求の範囲で特に指摘される手段および組合せにより実現され得られる可能性がある。本発明のこれら、および他の特徴は、以下の説明および添付の特許請求の範囲からより十分に明らかになり、または以下に記載のように本発明を実施することによって学習することができる。
[0038]本発明の上記および他の利点および特徴をどのように得ることができるか述べるために、上記で簡単に述べた本発明のより具体的な説明を、添付の図面に示されているその特定の実施形態を参照することによって行う。これらの図面は、本発明の典型的な実施形態を示すにすぎず、したがってその範囲を限定するものと考えるべきでないことを理解して、本発明について、添付の図面を使用して追加の特殊性および詳細と共に述べ、説明する。
[0039]従来の永続的な予約技法が使用されるノードの典型的なクラスタの図である。 [0040]従来の永続的な予約を実装する際に使用される例示的なテーブルの図である。 従来の永続的な予約を実装する際に使用される例示的なテーブルの図である。 [0041]共有ストレージのための仮想ディスクを使用するノードのクラスタの図である。 [0042]共有ストレージのための複数の仮想ディスクを使用するノードの別のクラスタの図である。 [0043]本発明の永続的な予約技法を実装する際に使用される例示的なテーブルの図である。 本発明の永続的な予約技法を実装する際に使用される例示的なテーブルの図である。 本発明の永続的な予約技法を実装する際に使用される例示的なテーブルの図である。 本発明の永続的な予約技法を実装する際に使用される例示的なテーブルの図である。 本発明の永続的な予約技法を実装する際に使用される例示的なテーブルの図である。 本発明の永続的な予約技法を実装する際に使用される例示的なテーブルの図である。 [0044]本発明による永続的な予約に使用することができる登録鍵の例示的なフォーマットの図である。 [0045]第1のノードが記憶デバイスに対する第1のノードの永続的な予約をプリエンプトしようとする別のノードの試みに対して防御するための例示的な方法の流れ図である。 [0046]第2のノードが記憶デバイスに対する第1のノードの永続的な予約を除去し、第2のノードのための永続的な予約を得ようと試みるための例示的な方法の流れ図である。
[0047]本発明は、1つまたは複数の物理ディスクの所有権を確立するために永続的な予約技法を実装するための方法、システム、およびコンピュータープログラム製品に及ぶ。これらの永続的な予約技法は、ストレージプール内、ならびに任意の他のストレージ構成内で物理ディスクの所有権を決定するために使用することができる。本発明の永続的な予約技法を使用すると、ネットワークパーティションが発生したとき、物理ディスクのディフェンダーは、チャレンジャーがもはやディフェンダーのパーティション内にないという通知をディフェンダーが受け取るまでチャレンジャーの登録鍵を除去しない。このようにして、チャレンジャー上で実行するアプリケーションからの保留中のI/Oは、物理ディスクの適正な所有権を解決することができるまで、チャレンジャーの鍵が除去されることにより失敗することはない。
[0048]一実施形態では、第1のノードは、記憶デバイスに対する第1のノードの永続的な予約をプリエンプトしようとする別のノードの試みに対して防御する。第1のノードがクラスタ内の別のノードと通信するのを妨げるネットワークパーティションの後、および第1のノードがそのネットワークパーティションについて通知される前に、第1のノードは、クラスタ内のノードによって共有される記憶デバイスをクラスタ内の別のノードが予約しようと試みたことを検出する。この検出は、その別のノードが、登録データ構造内のその別のノードの登録鍵を変更したことを識別することを含む。
[0049]第1のノードは第1のノードの登録鍵を変更し、変更された登録鍵を登録データ構造内で登録し、変更された登録鍵を予約データ構造内で予約する。
[0050]他の実施形態では、第2のノードが記憶デバイスに対する第1のノードの永続的な予約を除去し、第2のノードのための永続的な予約を得ようと試みる。第2のノードは、第2のノードが第1のノードと通信するのを妨げるネットワークパーティションが発生したという通知を受け取る。
[0051]第2のノードは、記憶デバイスに対する永続的な予約を得るように第2のノードの登録鍵を予約しようと試みる。予約しようとする試みは、第2のノードが、予約データ構造内に記憶されている第1のノードの登録鍵を読み取り、第1のノードの鍵を記憶することを含む。また、予約しようとする試みは、第2のノードが、第2のノードの登録鍵を変更し、変更された登録鍵を登録することを含む。また、予約しようとする試みは、第2のノードが、指定された期間の間スリープしてから、プリエンプトコマンドを発行し、第1のノードの永続的な予約を除去することを含む。
[0052]本発明の実施形態は、下記でより詳細に論じる、たとえば1つまたは複数のプロセッサーおよびシステムメモリーなどコンピューターハードウェアを含む専用コンピューターまたは汎用コンピューターを含む、または使用することができる。また、本発明の範囲内の実施形態は、コンピューター実行可能命令および/またはデータ構造を担持または記憶するための物理的、または他のコンピューター可読媒体を含む。そのようなコンピューター可読媒体は、専用コンピューターシステムまたは汎用コンピューターシステムによってアクセスすることができる任意の使用可能な媒体とすることができる。コンピューター実行可能命令を記憶するコンピューター可読媒体は、コンピューター記憶媒体(デバイス)である。コンピューター実行可能命令を担持するコンピューター可読媒体は、伝送媒体である。したがって、限定するものではなく例として、本発明の実施形態は、少なくとも2つの明らかに異なる種類のコンピューター可読媒体、すなわちコンピューター記憶媒体(デバイス)と伝送媒体とを含むことができる。
[0053]コンピューター記憶媒体(デバイス)は、RAM、ROM、EEPROM、CD−ROM、ソリッドステートデバイス(SSD)(たとえばRAMをベースとするもの)、フラッシュメモリー、相変化メモリー(PCM)、他のタイプのメモリー、他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、またはコンピューター実行可能命令もしくはデータ構造の形態で所望のプログラムコード手段を記憶するために使用することができ、専用コンピューターまたは汎用コンピューターによってアクセスすることができる任意の他の媒体を含む。
[0054]「ネットワーク」は、コンピューターシステムおよび/またはモジュールおよび/または他の電子デバイス間で電子データの移送を可能にする1つまたは複数のデータリンクと定義される。情報がネットワークまたは別の通信接続(ハードワイヤード、無線、またはハードワイヤードもしくは無線の組合せ)を介してコンピューターに転送または提供されるとき、コンピューターは、その接続を伝送媒体として適正に見る。伝送媒体は、コンピューター実行可能命令もしくはデータ構造の形態で所望のプログラムコード手段を担持するために使用することができ、専用コンピューターまたは汎用コンピューターによってアクセスすることができるネットワークおよび/またはリンクを含むことができる。上記の組合せもまた、コンピューター可読媒体の範囲内に含まれるべきである。
[0055]さらに、様々なコンピューターシステムコンポーネントに到達したとき、コンピューター実行可能命令もしくはデータ構造の形態にあるプログラムコード手段を、伝送媒体からコンピューター記憶媒体(デバイス)に(または逆も同様に)自動的に転送することができる。たとえば、ネットワークまたはデータリンクを介して受信されたコンピューター実行可能命令またはデータ構造は、ネットワークインターフェースモジュール(たとえば、NIC)内のRAM内にバッファされ、次いで、最終的にコンピューターシステムのRAMに、および/またはコンピューターシステムにおける、それより揮発性の低いコンピューター記憶媒体(デバイス)に転送することができる。したがって、コンピューター記憶媒体(デバイス)は、伝送媒体をも(さらには主として)使用するコンピューターシステムコンポーネントに含まれ得ることを理解されたい。
[0056]コンピューター実行可能命令は、たとえば、プロセッサーによって実行されたとき汎用コンピューター、専用コンピューター、または専用処理デバイスにある種の機能または機能のグループを実施させる命令およびデータを含む。コンピューター実行可能命令は、たとえば、バイナリ、アセンブリ言語など中間フォーマットの命令、さらにはソースコードであってもよい。主題について構造上の特徴および/または方法上の行為に特有の言語で述べたが、添付の特許請求の範囲に規定されている主題は、記載の特徴または上記の行為に必ずしも限定されないことを理解されたい。むしろ、記載の特徴および行為は、特許請求の範囲を実施する例示的な形態として開示されている。
[0057]本発明は、パーソナルコンピューター、デスクトップコンピューター、ラップトップコンピューター、メッセージプロセッサー、ハンドヘルドデバイス、マルチプロセッサーシステム、マイクロプロセッサーをベースとする、またはプログラム可能な消費者家電、ネットワークPC、ミニコンピューター、メインフレームコンピューター、移動電話、PDA、タブレット、ページャー、ルーター、スイッチなどを含めて、多数のタイプのコンピューターシステム構成を有するネットワークコンピューティング環境で実施されてもよいことを、当業者なら理解するであろう。また、本発明は、ネットワークを介して(ハードワイヤードデータリンク、無線データリンクによって、またはハードワイヤードデータリンクと無線データリンクの組合せによって)リンクされるローカルコンピューターシステムと遠隔コンピューターシステムが共にタスクを実施する分散システム環境で実施されてもよい。分散システム環境では、プログラムモジュールがローカルメモリー記憶デバイスと遠隔メモリー記憶デバイスの両方に位置してもよい。
[0058]本発明は、図4に示されているクラスタ400内に実装されるものとして述べられているが、PR技法は、複数のノードを含む他のコンピューターアーキテクチャーで実装することもできることを理解されたい。クラスタ400は、4つの相互接続されたノード(ノード401〜404)を含む。各ノードは、記憶デバイス410〜412のそれぞれに接続される。記憶デバイス410〜412は、複数の仮想ディスク(またはスペース)430a〜430nがそこから作成されたストレージプール420を含む。したがって、各ノード上のアプリケーションは、仮想ディスク430a〜430nのそれぞれにアクセスすることができる。クラスタ400内のクォーラムは、ノード+ストレージ投票方式を使用して決定されるものと仮定される。したがって、ノード401〜404のそれぞれ、およびプール420が投票権を有する。単一のノードが、所与の時間にプール420内の各記憶デバイスを所有する。
[0059]さらに、図5A〜図5Fは、本発明のPR技法を実装するために維持され得る登録テーブル501および予約テーブル502の様々な状態を示す。登録テーブルおよび予約テーブルの別々のセットが記憶デバイス410〜412のそれぞれについて維持される。以下の説明では、登録テーブル501および予約テーブル502は記憶デバイス410に関連するものと仮定されるが、各記憶デバイスの所有権を決定するために、同様のプロセスに従うことになることを理解されたい。また、2つのテーブルが示されているが、本発明は、単一のテーブル、または任意の数の他のデータ構造を使用して実装することができる。したがって、鍵を記憶するために使用されるデータ構造は、本発明にとって不可欠なものではない。
[0060]図5A〜図5Fは、本発明のPRプロセス中にノードが現在予約されている鍵をどのように記憶するか示すためにノード401およびノード404をも含む。当然ながら、図示されていないが、各ノードは、やはりその登録鍵を記憶する。
[0061]図5Aは、ネットワークパーティション405の発生前の2つのテーブルの状態を表す。図5Aでは、登録テーブル501は、ノード401〜404に1つずつ、4つの登録鍵を含み、クラスタ内の各ノードが記憶デバイス410に書き込むことができることを示す。予約テーブル502もまた、ノード401の登録鍵を含み、ノード401が記憶デバイス410に対する予約を有する(すなわち、ノード401は、物理ディスクの現在の所有者である)ことを示す。
[0062]ネットワークパーティション405が発生したとき、クラスタ内の各ノードは、パーティションについて通知されることになる。しかし、各ノードは、必ずしも同時に通知されない。この例では、ノード404は、ネットワークパーティション405について通知されており、したがって(ノード404のパーティションは、クォーラムを有するためにプール420の所有権を必要とするので)プール420内の各記憶デバイスの所有権を求めてチャレンジを開始している。
[0063]しかし、ノード404のチャレンジの時点で、ノード401はまだネットワークパーティション405について通知されていない。したがって、ノード401は、依然としてノード404と同じパーティションにあると考えることになる。従来のPRでは、ノード404が記憶デバイス410の所有権を求めてチャレンジするとき、ノード404が同じパーティション内にあるとノード401が依然として考えることは問題にならないはずであり、ノード401はノード404の登録鍵を登録テーブル501から除去し、したがってノード404からのI/Oを失敗させることになる。
[0064]対照的に、本発明では、異なるPR技法を適用し、ノード404がもはや同じパーティション内にないことをノード401が知るまでノード401がノード404の登録鍵を除去しないことを確実にする。図5B〜図5Eは、本発明のPR技法がどのように実装されるかを示す。
[0065]図5Bは、ノード404が記憶デバイス410の所有権を求めてチャレンジを開始した後の2つのテーブルの状態を表す。したがって、図5Bは、ノード404が眠っており、ノード401が、まだその所有権を防御するために起動状態になっていない期間を表すことができる。
[0066]ノード404は、以下のタスクを実施することによって予約しようと試みる。ノード404は、それ自体の登録鍵を増分し(または他の方法で変更し)、それを(その古い登録鍵の代わりに)登録テーブル501内で登録する。しかし、ノード401が現在の所有者であるため、予約しようとするノード404の試みは最初失敗することになり、したがって、ノード401の予約をプリエンプトしようとする試みの前にノード404がスリープすることを必要とする。予約が失敗したので、ノード404もまた現在の予約鍵(予約テーブル502内のノード401の鍵)を読み取り、それを記憶する。
[0067]したがって、図5Bは、登録テーブル501が、ノード404の古い登録鍵をノード404の増分された登録鍵で置き換えることによって変更されたことを示す。図5Bでは、ノード404は、現在の予約鍵、すなわちノード401の登録鍵を記憶して示されている。
[0068]図5Cは、ノード401がその所有権を防御するために起動状態になった後で、しかしノード401がネットワークパーティション405について通知される前の2つのテーブルの状態を表す。防御では、ノードは、所有者ノードのパーティションの一部であると認識されないノードの登録鍵を除去する。したがって、ノード401が登録テーブル501内でノード404の増分された登録鍵を見たとき、ノード401は、ノード404が依然として同じパーティション内にあると信じるので、ノード401はノード404の登録鍵を除去しない。
[0069]ノード404の登録鍵を登録テーブル501から除去する(したがって、ノード404が記憶デバイス410に書き込むのを妨げる)のではなく、ノード401は、その代わりにそれ自体の登録鍵を増分し、増分された鍵を登録し、増分された鍵を予約する。これが、異なるパーティションにあることが知られていないノードが所有権を求めてチャレンジするときの、所有者ノードの防御の形態である。
[0070]したがって、図5Cは、登録テーブル501および予約テーブル502が、今やそれぞれ、ノード401の以前の鍵の代わりにノード401の増分された登録鍵を含むことを示す。要するに、ノード401は、まだノード401とノード404がもはや同じパーティション内にないことを知らないので、ノード404のチャレンジに対するノード401の応答は、ノード404の登録鍵を登録テーブル501から除去するのではなく、その登録鍵を増分し予約することを含む。
[0071]図5Dは、ノード404が起動状態になり、プリエンプトコマンド530を発行した後の2つのテーブルの状態を表す。プリエンプトコマンド530は、ノード404の現在の登録鍵と、ノード404がスリープする前に読み取った予約鍵とを含む。ノード401は、その登録鍵を増分し、増分された鍵を予約したので、ノード404によって保持されている予約鍵は、予約テーブル502内に記憶された現在の予約鍵と一致しないことになる(Node_401_key_0001 != Node_401_key_0002)。したがって、ノード404のプリエンプトの試みは失敗することになり、ノード401は、依然として記憶デバイス410の所有権のままとなる。したがって、ノード401が依然として所有権のままであるが、ノード404の登録を除去していないので、図5Dは、どちらのテーブルも図5Cと同じままであることを示す。
[0072]しばらくして、ノード404(または同様にノード403)は、図5A〜図5Bに関連して述べたようにして別のチャレンジを開始することができる。図5Eは、ノード404が別のチャレンジを開始した後の2つのテーブルの状態を表す。図のように、登録テーブル501は、今やノード404の増分された鍵(Node_404_key_0003)を含む。また、ノード404は、現在の予約鍵(Node_401_key_0002)を記憶している。
[0073]ノード401がその所有権を防御するために起動状態になる前に、ノード401はネットワークパーティション405について通知された。したがって、ノード401は、ノード404のチャレンジに対して異なるように応答する。具体的には、ノード401は、今やノード404が同じパーティション内にないことを知っており、したがって、ノード401は、ノード404の登録鍵を登録テーブル501から除去し、ノード404のチャレンジを失敗させ、ノード404が記憶デバイス410に書き込むのを妨げる。
[0074]したがって、図5Fは、ノード401がネットワークパーティション405について通知された後、かつノード401がノード404のチャレンジに対して防御した後の2つのテーブルの状態を表す。図のように、登録テーブル501は、ノード404の登録鍵を含まない。ノード404は、依然として現在の予約鍵を記憶して示されているが、ノード404の登録鍵が登録テーブル501内にないので、ノード404によるプリエンプトの試みは失敗することになる。
[0075]上記の説明は、鍵を増分する例を使用しているが、本発明は、チャレンジについて別のノードに通知するために任意の他の方法で鍵を変更することによって実装することもできる。たとえば、その鍵を増分するのではなく、ノード404は、ビットを変更することができる。要するに、登録鍵を変更することは、ネットワークパーティションによりノードが直接通信することが妨げられたにもかかわらずノードが引き続き通信するための方法として働く。したがって、ノードのチャレンジを連絡するために登録鍵を修正する任意の手段を、本発明において使用することができる。
[0076]ノード404の登録鍵は、ノード404がチャレンジを開始することなしに除去されてもよいことに留意されたい。ノード401は、所有権を防御するために起動状態になるときはいつでも、最初に、同じパーティションの一部であると認識できないノードの登録鍵について検査する。たとえば、ノード401が、ネットワークパーティション405の後、ノード404がチャレンジを開始する前に起動状態になった場合、ノード404、403がもはや同じパーティション内にないので、ノード401は、ノード404の登録鍵(ならびにノード403の鍵)を登録テーブル501から除去することになる。
[0077]したがって、所有者ノードは、別のノードが所有者ノードと同じパーティション内にないことを所有者ノードが知るまでその別のノードの登録鍵を除去しない。このようにして、所有者ノードは、ネットワークパーティションが発生したとき、所有者ノードがそのネットワークパーティションについて知り、それに応じて(たとえば、その所有権を防御する、または防御しないことによって)応答することができるまで別のノードの鍵を除去しない。
[0078]当然ながら、任意の所与の防御中、所有者ノードは、同じパーティションの一部であると認識できないノードの登録鍵を除去することも、まだ別のパーティション内にあることを知らないノードからのチャレンジに応答してその登録鍵を増分し、登録し、予約することもできる。図5A〜図5Fの同じ例を使用すると、ノード403、404が同時にチャレンジしたが、ノード401はノード404がもはや同じパーティション内にないことだけ通知された場合、ノード401は、ノード404の鍵を除去し、一方、ノード403の鍵は残し、それ自体の鍵を増分することになる。
[0079]同様に、いつでも、ノード401は、クォーラムを有していないパーティション内にあることに気付いた場合(たとえば、ネットワークパーティション405がノード401をノード402〜404から分離した場合)、ノード401はその所有権を防御せず、したがって他のパーティション内のノードの1つがノード401の所有権をプリエンプトするのに成功することを可能にすることになる。
[0080]上述のように、図5A〜図5Fに関連して述べたプロセスは、ストレージプール内のあらゆる記憶デバイスについて実施される。たとえば、ノード404は、記憶デバイス411、412の所有権を求めて、同じようにしてチャレンジすることになる。しかし、単一のノードは、一般に、プール内のあらゆる記憶デバイスの所有権を有するべきである。単一のノードが各記憶デバイスの所有権を確実に得て保持するために、上述のプロセスは、各記憶デバイスに対して予め定義された順序で実施される。
[0081]換言すれば、各ノードは、各記憶デバイスを求めてチャレンジすべき順序について知っている。この順序は、たとえば、記憶デバイスに関連付けられた識別子(たとえば、プールGUID)に基づいて決定することができる。たとえば、ノード404が起動状態になりプリエンプトコマンドを発行するとき、ノード404は、(記憶デバイス410をプリエンプトし、次いで記憶デバイス411、次いで記憶デバイス412をプリエンプトすることによって)指定された順序でプリエンプトコマンドを発行することができる。
[0082]プリエンプトコマンドが失敗した場合、チャレンジしているノードは、所有権を求めてのチャレンジを止める。たとえば、ノード404のプリエンプトコマンドが記憶デバイス410に対して失敗した場合、ノード404は、記憶デバイス411、412の所有権をプリエンプトしようとは試みないことになる。プリエンプトコマンドを指定された順序で発行することによって、1つのノードがプール内のいくつかの記憶デバイスの所有権を勝ち取り、一方、1つまたは複数の他のノードがプール内の他の記憶デバイスの所有権を勝ち取るという状況を回避することができる。
[0083]所有者ノードまたはチャレンジャーノードが、クォーラムを有するパーティションの一部である(またはプールの所有権を得ることによってクォーラムを有することができる)ことを確実にすることに加えて、ノードは、プールの記憶デバイスの防御またはそれを求めてのチャレンジを開始する前にプール内のディスクのクォーラムがアクセス可能であることを検証することもできる。たとえば、ノード401がその所有権を防御するために起動状態になったとき、ノード401は、最初にプール420内のすべての記憶デバイスを列挙することができる。列挙された記憶デバイスの数がプール内の記憶デバイスの過半数未満(たとえば、記憶デバイス410〜412の2未満)である場合、ノード401は、その防御を止めることができる。同様に、ノード404がチャレンジを試みるとき、ノード404もまた、記憶デバイスを列挙し、記憶デバイスのクォーラムがアクセス可能でない場合、チャレンジを止めることができる。記憶デバイスは、故障している、または他の形で正しい動作を停止した場合、アクセス不能となり得る。
[0084]図6は、登録鍵600のための例示的なフォーマットを示す。登録鍵600は、4つのセクション、すなわち、識別子セクション601、改訂セクション602、ノード識別子セクション603、および署名セクション604を含む。識別子セクション601は、登録鍵が使用される記憶デバイスの識別子を含む。改訂セクション602は、上述のように増分される鍵の部分である。ノード識別子セクション603は、その鍵に関連するノードの識別子を含む。署名セクション604は、対応するノードによって生成された一意の署名を含む。
[0085]図7は、記憶デバイスに対する第1のノードの永続的な予約をプリエンプトしようとする別のノードの試みに対して第1のノードが防御するための例示的な方法700の流れ図を示す。方法700について、図4および図5A〜図5Fに関連して述べる。
[0086]方法700は、第1のノードがクラスタ内の別のノードと通信するのを妨げるネットワークパーティションの後、および第1のノードがそのネットワークパーティションについて通知される前に、第1のノードは、クラスタ内のノードによって共有される記憶デバイスをクラスタ内の別のノードが予約しようと試みたことを検出する行為701を含む。この検出は、その別のノードが、登録データ構造内のその別のノードの登録鍵を変更したことを識別することを含む。たとえば、ノード401は、ノード401が記憶デバイス410に対する永続的な予約を有するが、ノード404が記憶デバイス410に関連する登録テーブル501内のその登録鍵を変更したことを検出することができる。
[0087]方法700は、第1のノードが第1のノードの登録鍵を変更し、変更された登録鍵を登録データ構造内で登録し、変更された登録鍵を予約データ構造内で予約する行為702を含む。たとえば、ノード401は、その登録鍵を変更(たとえば増分)し、変更された登録鍵を登録テーブル501内で登録し、変更された登録鍵を予約テーブル502内で予約することができる。
[0088]図8は、第2のノードが記憶デバイスに対する第1のノードの永続的な予約を除去し、第2のノードのための永続的な予約を得ようと試みるための例示的な方法800の流れ図を示す。方法800について、図4および図5A〜図5Fに関連して述べる。
[0089]方法800は、第2のノードが第1のノードと通信するのを妨げるネットワークパーティションが発生したという通知を第2のノードが受け取る行為801を含む。たとえば、ノード404は、ネットワークパーティション405が発生したという通知を受け取ることができる。
[0090]方法800は、第2のノードが、記憶デバイスに対する永続的な予約を得るように第2のノードの登録鍵を予約しようと試みる行為802を含む。行為802は、下位の行為802a〜802cを含む。
[0091]下位の行為802aは、第2のノードが、予約データ構造内に記憶されている第1のノードの登録鍵を読み取り、第1のノードの鍵を記憶することを含む。たとえば、ノード404は、予約テーブル502内のノード401の登録鍵を読み取ることができる。
[0092]下位の行為802bは、第2のノードが、第2のノードの登録鍵を変更し、変更された登録鍵を登録することを含む。たとえば、ノード404は、その登録鍵を変更し、変更された登録鍵を登録テーブル501内で登録することができる。
[0093]下位の行為802cは、第2のノードが、指定された期間の間スリープしてから、プリエンプトコマンドを発行し、第1のノードの永続的な予約を除去することを含む。たとえば、ノード404は、ディフェンダーノードがスリープする期間の少なくとも2倍(たとえば、ノード401が3秒間スリープする場合6秒)の間スリープしてから起動状態になり、プリエンプトコマンドを発行し、記憶デバイス410に対するノード401の予約を除去することができる。
[0094]本発明は、その精神または本質的な特徴から逸脱することなしに他の特定の形態で実施することができる。記載の実施形態は、あらゆる点で例示的なものにすぎず、限定するものではないとみなされるべきである。したがって、本発明の範囲は、前述の説明によってではなく、添付の特許請求の範囲によって示される。特許請求の範囲の均等物の趣旨および範囲内に入る変更すべてが、それらの範囲内に含まれるべきである。

Claims (15)

  1. クラスタの第1のノードにおいて、前記第1のノードが、前記クラスタ内のノードによって共有される記憶デバイスに対する永続的な(persistent)予約(reservation)を所有しており、前記第1のノードの永続的な予約をプリエンプト(preempt)しようとする別のノードの試み(attempt)に対して前記第1のノードが防御するための方法であって、
    前記第1のノードが前記クラスタ内の別のノードと通信するのを妨げる(prevents)ネットワークパーティションの後、および前記第1のノードが前記ネットワークパーティションについて通知される前に、前記第1のノードが、前記クラスタ内のノードによって共有される前記記憶デバイスを前記クラスタ内の別のノードが予約(reserve)しようと試みた(attempted)ことを検出するステップであって、前記検出は、前記別のノードが、登録データ構造内の前記別のノードの登録鍵(registration key)を変更したことを識別する(identifying)ことを含む、ステップと、
    前記第1のノードが前記第1のノードの登録鍵を変更し、前記変更された登録鍵を前記登録データ構造内で登録し(registering)、前記変更された登録鍵を予約データ構造(reservation data structure)内で予約するステップと
    を含む方法。
  2. 前記第1のノードが前記ネットワークパーティションの通知を受け取るステップと、
    前記第1のノードが、前記別のノードが前記記憶デバイスにアクセスするのを防止するために前記別のノードの登録鍵を前記登録データ構造から除去するステップと
    をさらに含む、請求項1に記載の方法。
  3. 前記別のノードの登録鍵を除去する前に、前記第1のノードがクォーラム(quorum)を有するパーティションの一部であると前記第1のノードが決定するステップをさらに含む、請求項2に記載の方法。
  4. 前記第1のノードが前記ネットワークパーティションの通知を受け取るステップと、
    前記第1のノードがクォーラムを有していないパーティションの一部であると前記第1のノードが決定するステップと、
    前記第1のノードの永続的な予約をプリエンプトしようとする別のノードの試みに対して防御する(defend)のに前記第1のノードが失敗する(failing)ステップと
    をさらに含む、請求項1に記載の方法。
  5. 前記第1のノードおよび別のノードの変更された登録鍵が、それぞれ前記第1のノードおよび別のノードの登録鍵の増分された(incremented)バージョンを含む、請求項1に記載の方法。
  6. 前記登録データ構造および前記予約データ構造が、同じデータ構造または別々のデータ構造である、請求項1に記載の方法。
  7. クラスタの第2のノードにおいて、前記クラスタが、前記クラスタ内の第1のノードが永続的な予約を有する記憶デバイスを共有しており(sharing)、前記第2のノードが前記第1のノードの永続的な予約を除去し、前記第2のノードのための永続的な予約を得ようと試みるための方法であって、
    前記第2のノードが前記第1のノードと通信するのを妨げるネットワークパーティションが発生したという通知を前記第2のノードが受け取るステップと、
    前記第2のノードが、前記記憶デバイスに対する永続的な予約を得るように前記第2のノードの登録鍵を予約しようと試みるステップとを含み、前記予約しようと試みるステップが、
    前記第2のノードが、予約データ構造内に記憶されている前記第1のノードの前記登録鍵を読み取り、前記第1のノードの鍵を記憶するステップ、
    前記第2のノードが、前記第2のノードの登録鍵を変更し、前記変更された登録鍵を登録するステップ、および
    前記第2のノードが、指定された期間の間スリープ(sleeping)してから、プリエンプトコマンドを発行し、前記第1のノードの永続的な予約を除去するステップを含む、方法。
  8. 前記第2のノードが、前記指定された期間の後で起動状態(awaking)になるステップと、
    前記第2のノードがプリエンプトコマンドを発行し、前記第1のノードの永続的な予約を除去しようと試みるステップであって、前記プリエンプトコマンドが、前記第2のノードの変更された登録鍵と、前記予約データ構造から読み取られた前記第1のノードの登録鍵とを含む、ステップと、
    前記第1のノードが前記第1のノードの登録鍵を変更し、その結果、前記プリエンプトコマンド内の前記第1のノードの登録鍵が前記予約データ構造内に予約されている前記第1のノードの登録鍵の現在の変更されているバージョンと一致しないので、前記プリエンプトコマンドが失敗したという通知を前記第2のノードが受け取るステップと
    をさらに含む、請求項7に記載の方法。
  9. 記第2のノードが、前記指定された期間の後で起動状態になるステップと、
    前記第2のノードがプリエンプトコマンドを発行し、前記第1のノードの永続的な予約を除去しようと試みるステップであって、前記プリエンプトコマンドが、前記第2のノードの変更された登録鍵と、前記予約データ構造から読み取られた前記第1のノードの登録鍵とを含む、ステップと、
    前記第2のノードの変更された登録鍵が前記登録データ構造内に含まれており、前記プリエンプトコマンド内の前記第1のノードの登録鍵が前記予約データ構造内の前記第1のノードの登録鍵と一致するので、前記プリエンプトコマンドが成功したという通知を前記第2のノードが受け取るステップと
    をさらに含む、請求項7に記載の方法。
  10. 前記記憶デバイスが、複数の記憶デバイスを含むストレージプール(storage pool)の一部である、請求項7に記載の方法。
  11. 記第2のノードが、前記指定された期間の後で起動状態になるステップと、
    前記第2のノードが、アクセス可能である前記プール内の記憶デバイスすべてを列挙する(enumerating)ステップと、
    アクセス可能な記憶デバイスの数が前記プール内の前記記憶デバイスの過半数未満(less than a majority)である場合、前記第2のノードがプリエンプトコマンドを発行するのに失敗するステップと
    をさらに含む、請求項10に記載の方法。
  12. 記第2のノードが、前記指定された期間の後で起動状態になるステップと、
    前記第2のノードが、前記プール内の各記憶デバイスに対して指定された順序でプリエンプトコマンドを発行するステップと
    をさらに含む、請求項10に記載の方法。
  13. プリエンプトコマンドが失敗した場合、前記第2のノードが、前記プール内のそれ以上他の記憶デバイスに対してプリエンプトコマンドを発行するのを止める(ceasing)ステップをさらに含む、請求項12に記載の方法。
  14. 前記第2のノードが前記第2のノードの登録鍵を予約しようと試みる前に、前記第2のノードがクォーラムを有するパーティション内にある、または前記第2のノードが前記記憶デバイスに対する永続的な予約を得た場合クォーラムを有することになると前記第2のノードが決定するステップをさらに含む、請求項7に記載の方法。
  15. ノードのクラスタであって、
    前記クラスタのノードによって共有された記憶デバイスのプール内の複数の記憶デバイスのそれぞれに対して永続的な予約を所有する第1のノードを備え、前記第1のノードが、前記プール内の各記憶デバイスに対するその永続的な予約を防御するために、
    前記第1のノードが前記クラスタ内の第2のノードと通信するのを妨げるネットワークパーティションの後、および前記第1のノードが前記ネットワークパーティションについて通知される前に、前記クラスタの前記第2のノードが前記プール内の各記憶デバイスの所有権(ownership)を取ろうとしていることを検出し、前記検出は、前記第2のノードが、第2のノードの登録鍵の増分されたバージョンを各記憶デバイスについて登録データ構造に追加した(added)ことを識別することを含むこと、および
    各記憶デバイスについて、前記第1のノードの登録鍵を増分し、前記増分された登録鍵を前記登録データ構造内で登録し、前記増分された登録鍵を予約データ構造内で予約することを実施し、
    前記第2のノードが、前記ネットワークパーティションについて通知されたとき前記プール内の各記憶デバイスに対する永続的な予約を得ようと試みて、
    各記憶デバイスについて、前記予約データ構造内に記憶されている前記第1のノードの前記登録鍵を読み取り、前記第1のノードの鍵を記憶すること、
    各記憶デバイスについて、前記第2のノードの登録鍵を増分し、前記増分された登録鍵(registration key)を登録すること、および
    指定された期間の間スリープしてから、前記記憶デバイスのそれぞれに対してプリエンプトコマンドを発行し、各記憶デバイスに対する前記第1のノードの永続的な予約をプリエンプトしようと試みることを実施する、クラスタ。
JP2014558762A 2012-02-28 2013-02-13 ストレージプール内のディスク所有権の調停 Expired - Fee Related JP6170512B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/407,428 2012-02-28
US13/407,428 US8738701B2 (en) 2012-02-28 2012-02-28 Arbitration of disk ownership in a storage pool
PCT/US2013/025798 WO2013130262A1 (en) 2012-02-28 2013-02-13 Arbitration of disk ownership in a storage pool

Publications (2)

Publication Number Publication Date
JP2015508213A true JP2015508213A (ja) 2015-03-16
JP6170512B2 JP6170512B2 (ja) 2017-07-26

Family

ID=49004471

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014558762A Expired - Fee Related JP6170512B2 (ja) 2012-02-28 2013-02-13 ストレージプール内のディスク所有権の調停

Country Status (7)

Country Link
US (1) US8738701B2 (ja)
EP (1) EP2820549B1 (ja)
JP (1) JP6170512B2 (ja)
KR (1) KR102008042B1 (ja)
CN (1) CN104160380B (ja)
ES (1) ES2632558T3 (ja)
WO (1) WO2013130262A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016162916A1 (ja) * 2015-04-06 2016-10-13 株式会社日立製作所 管理計算機およびリソース管理方法
JP2018534665A (ja) * 2015-09-30 2018-11-22 ベリタス テクノロジーズ エルエルシー 入力/出力フェンシングの最適化

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652030B2 (en) 2009-01-30 2017-05-16 Microsoft Technology Licensing, Llc Navigation of a virtual plane using a zone of restriction for canceling noise
US10404520B2 (en) 2013-05-29 2019-09-03 Microsoft Technology Licensing, Llc Efficient programmatic memory access over network file access protocols
US9641614B2 (en) 2013-05-29 2017-05-02 Microsoft Technology Licensing, Llc Distributed storage defense in a cluster
US9389968B2 (en) 2014-04-30 2016-07-12 Netapp, Inc. Preventing non-detectable data loss during site switchover
US10270735B2 (en) * 2014-10-10 2019-04-23 Microsoft Technology Licensing, Llc Distributed components in computing clusters
WO2016106682A1 (zh) * 2014-12-31 2016-07-07 华为技术有限公司 一种集群脑裂后仲裁处理方法、仲裁存储装置以及系统
US9923965B2 (en) 2015-06-05 2018-03-20 International Business Machines Corporation Storage mirroring over wide area network circuits with dynamic on-demand capacity
US9930140B2 (en) * 2015-09-15 2018-03-27 International Business Machines Corporation Tie-breaking for high availability clusters
US9843453B2 (en) * 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US9923784B2 (en) 2015-11-25 2018-03-20 International Business Machines Corporation Data transfer using flexible dynamic elastic network service provider relationships
US9923839B2 (en) 2015-11-25 2018-03-20 International Business Machines Corporation Configuring resources to exploit elastic network capability
US10177993B2 (en) 2015-11-25 2019-01-08 International Business Machines Corporation Event-based data transfer scheduling using elastic network optimization criteria
US10057327B2 (en) 2015-11-25 2018-08-21 International Business Machines Corporation Controlled transfer of data over an elastic network
US10216441B2 (en) 2015-11-25 2019-02-26 International Business Machines Corporation Dynamic quality of service for storage I/O port allocation
US10581680B2 (en) 2015-11-25 2020-03-03 International Business Machines Corporation Dynamic configuration of network features
US10158743B2 (en) * 2016-06-12 2018-12-18 International Business Machines Corporation Compute node cluster management
US11397545B1 (en) 2021-01-20 2022-07-26 Pure Storage, Inc. Emulating persistent reservations in a cloud-based storage system

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001001241A2 (en) * 1999-06-30 2001-01-04 Emc Corporation Method and apparatus for identifying network devices on a storage network
JP2002163156A (ja) * 2000-10-13 2002-06-07 Internatl Business Mach Corp <Ibm> 非並行クラスタリング環境においてscsi−3持続予約を使用しマルチパスi/oを提供する方法及び装置
US7631066B1 (en) * 2002-03-25 2009-12-08 Symantec Operating Corporation System and method for preventing data corruption in computer system clusters
US20100077249A1 (en) * 2008-09-19 2010-03-25 Microsoft Corporation Resource arbitration for shared-write access via persistent reservation
US20110179231A1 (en) * 2010-01-21 2011-07-21 Sun Microsystems, Inc. System and method for controlling access to shared storage device
US20110252270A1 (en) * 2010-04-12 2011-10-13 Symantec Corporation Updating a list of quorum disks

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6178529B1 (en) 1997-11-03 2001-01-23 Microsoft Corporation Method and system for resource monitoring of disparate resources in a server cluster
US6279032B1 (en) 1997-11-03 2001-08-21 Microsoft Corporation Method and system for quorum resource arbitration in a server cluster
US7774469B2 (en) 1999-03-26 2010-08-10 Massa Michael T Consistent cluster operational data in a server cluster using a quorum of replicas
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
US6965936B1 (en) 2000-12-06 2005-11-15 Novell, Inc. Method for detecting and resolving a partition condition in a cluster
US7127565B2 (en) 2001-08-20 2006-10-24 Spinnaker Networks, Inc. Method and system for safely arbitrating disk drive ownership using a timestamp voting algorithm
US7277952B2 (en) * 2001-09-28 2007-10-02 Microsoft Corporation Distributed system resource protection via arbitration and ownership
US20050132154A1 (en) 2003-10-03 2005-06-16 International Business Machines Corporation Reliable leader election in storage area network
US7260678B1 (en) * 2004-10-13 2007-08-21 Network Appliance, Inc. System and method for determining disk ownership model
US7840730B2 (en) 2008-06-27 2010-11-23 Microsoft Corporation Cluster shared volumes
US8046467B2 (en) 2008-08-29 2011-10-25 Microsoft Corporation Maintaining client affinity in network load balancing systems

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001001241A2 (en) * 1999-06-30 2001-01-04 Emc Corporation Method and apparatus for identifying network devices on a storage network
JP2003503790A (ja) * 1999-06-30 2003-01-28 イーエムシー コーポレーション 記憶ネットワーク上においてネットワーク・デバイスを識別する方法および装置
JP2002163156A (ja) * 2000-10-13 2002-06-07 Internatl Business Mach Corp <Ibm> 非並行クラスタリング環境においてscsi−3持続予約を使用しマルチパスi/oを提供する方法及び装置
US6954881B1 (en) * 2000-10-13 2005-10-11 International Business Machines Corporation Method and apparatus for providing multi-path I/O in non-concurrent clustering environment using SCSI-3 persistent reserve
US7631066B1 (en) * 2002-03-25 2009-12-08 Symantec Operating Corporation System and method for preventing data corruption in computer system clusters
US20100077249A1 (en) * 2008-09-19 2010-03-25 Microsoft Corporation Resource arbitration for shared-write access via persistent reservation
JP2012503249A (ja) * 2008-09-19 2012-02-02 マイクロソフト コーポレーション 永続予約を介する共有書込みアクセスのリソースアービトレーション
US20110179231A1 (en) * 2010-01-21 2011-07-21 Sun Microsystems, Inc. System and method for controlling access to shared storage device
US20110252270A1 (en) * 2010-04-12 2011-10-13 Symantec Corporation Updating a list of quorum disks

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016162916A1 (ja) * 2015-04-06 2016-10-13 株式会社日立製作所 管理計算機およびリソース管理方法
JPWO2016162916A1 (ja) * 2015-04-06 2017-12-07 株式会社日立製作所 管理計算機およびリソース管理方法
JP2018534665A (ja) * 2015-09-30 2018-11-22 ベリタス テクノロジーズ エルエルシー 入力/出力フェンシングの最適化

Also Published As

Publication number Publication date
ES2632558T3 (es) 2017-09-14
KR20140131961A (ko) 2014-11-14
EP2820549A1 (en) 2015-01-07
CN104160380B (zh) 2017-08-15
EP2820549A4 (en) 2016-03-30
WO2013130262A1 (en) 2013-09-06
US20130227009A1 (en) 2013-08-29
EP2820549B1 (en) 2017-04-19
US8738701B2 (en) 2014-05-27
CN104160380A (zh) 2014-11-19
KR102008042B1 (ko) 2019-10-21
JP6170512B2 (ja) 2017-07-26

Similar Documents

Publication Publication Date Title
JP6170512B2 (ja) ストレージプール内のディスク所有権の調停
US11888599B2 (en) Scalable leadership election in a multi-processing computing environment
EP3357191B1 (en) Input/output fencing optimization
US9411646B2 (en) Booting secondary processors in multicore system using kernel images stored in private memory segments
US7739541B1 (en) System and method for resolving cluster partitions in out-of-band storage virtualization environments
US8543781B2 (en) Hybrid locking using network and on-disk based schemes
US7631066B1 (en) System and method for preventing data corruption in computer system clusters
US20030065782A1 (en) Distributed system resource protection via arbitration and ownership
US8533171B2 (en) Method and system for restarting file lock services at an adoptive node during a network filesystem server migration or failover
US10372384B2 (en) Method and system for managing storage system using first and second communication areas
US8875157B2 (en) Deployment of pre-scheduled tasks in clusters
JP2002229837A (ja) 共有ディスク・パラレル・データ・ファイル内のデータに対するアクセスを制御する方法
CN107526537B (zh) 用于锁定存储系统中的存储区域的方法和系统
US7565498B1 (en) System and method for maintaining write order fidelity in a distributed environment
WO2021082465A1 (zh) 一种保证数据一致性的方法及相关设备
CN102904946B (zh) 集群内节点管理方法和装置
US10742724B2 (en) Cluster computer system with failover handling
JP6044363B2 (ja) コンピュータ、nasアクセス方法およびnasアクセスプログラム
US20240223510A1 (en) Scalable leadership election in a multi-processing computing environment
JP2021009554A (ja) コンピュータ装置、データ共有システム、データアクセス方法、及びプログラム
Balakrishnan et al. Going beyond paxos
JP2020135138A (ja) ストレージシステム、ストレージシステムの回復方法
JP2006053621A (ja) 計算機システムおよびそのトランザクション回復方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170310

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170525

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: 20170602

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170630

R150 Certificate of patent or registration of utility model

Ref document number: 6170512

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees