JP2021168123A - ストレージ装置のネットワークキーバリューを使用して分散された読み取り/書き込みをロックするシステム及び方法 - Google Patents
ストレージ装置のネットワークキーバリューを使用して分散された読み取り/書き込みをロックするシステム及び方法 Download PDFInfo
- Publication number
- JP2021168123A JP2021168123A JP2021051588A JP2021051588A JP2021168123A JP 2021168123 A JP2021168123 A JP 2021168123A JP 2021051588 A JP2021051588 A JP 2021051588A JP 2021051588 A JP2021051588 A JP 2021051588A JP 2021168123 A JP2021168123 A JP 2021168123A
- Authority
- JP
- Japan
- Prior art keywords
- nkv
- lock
- targets
- client
- lock request
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 82
- 238000004891 communication Methods 0.000 claims abstract description 12
- 230000004044 response Effects 0.000 claims description 23
- 238000010586 diagram Methods 0.000 description 12
- 230000007246 mechanism Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000000903 blocking effect Effects 0.000 description 6
- 239000004744 fabric Substances 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 230000010076 replication Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000010354 integration Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 239000013256 coordination polymer Substances 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/406—Management or control of the refreshing or charge-regeneration cycles
- G11C11/40603—Arbitration, priority and concurrent access to memory cells for read/write or refresh operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/33—User authentication using certificates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0637—Permissions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
- G11C7/106—Data output latches
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1078—Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
- G11C7/1087—Data input latches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
Abstract
【課題】ネットワークキーバリュー(NKV)クライアント及びNKVターゲットを含むNKVストアにおけるロック要請を調整する方法及びシステムを提供する。
【解決手段】1つ以上のNKVクライアント及び1つ以上のNKVターゲットを含むNKVストアにおけるロック要請を調整する方法は、第1のNKVクライアントにより、NKVターゲットに格納されたオブジェクトのキーをロックするために通信インターフェースを介してクライアント装置からロック要請を受信する段階と、ロック要請に対応するNKVターゲットの中の1つを決定する段階と、ストレージインターフェースを介してロック要請をNKVターゲットの中の1つに伝送する段階と、ロック要請の優先順位を決定する段階と、優先順位に基づいてロック要請をロックする段階と、を有する。
【選択図】図1
【解決手段】1つ以上のNKVクライアント及び1つ以上のNKVターゲットを含むNKVストアにおけるロック要請を調整する方法は、第1のNKVクライアントにより、NKVターゲットに格納されたオブジェクトのキーをロックするために通信インターフェースを介してクライアント装置からロック要請を受信する段階と、ロック要請に対応するNKVターゲットの中の1つを決定する段階と、ストレージインターフェースを介してロック要請をNKVターゲットの中の1つに伝送する段階と、ロック要請の優先順位を決定する段階と、優先順位に基づいてロック要請をロックする段階と、を有する。
【選択図】図1
Description
本発明は、一般的にNVMeOF(non−volatile memory express over fabrics)を介してキーバリュー(key value)と共に使用するための分散された読み取り/書き込みのロック(lock)設計に関する。
キーバリューソリッドステートドライブ(KVSSD:key−value solid state drive)は、装置レベルにおけるキーバリューのインターフェースを提供し、それによって向上した性能と単純化されたストレージ管理を提供し、それによって高性能スケーリング、変換プロセスの単純化、並びにドライブ機能の拡張を可能にする。KVSSDのファームウェア内にキーバリュー(KV:key−value)ストア(store)のロジックを統合することにより、KVSSDは、ホストソフトウェアの介入を減らしながら、アプリケーション(application)からの直接のデータ要請にも応答することができる。KVSSDは、処理機能を提供するために、フラッシュ変換レイヤー(FTL:Flash Translation Layer)のソフトウェアを使用して強化されたSSDのハードウェアを使用する。
本背景技術の項目で開示した上記の情報は、本発明の背景技術の理解を助けるためのものであり、先行技術を構成していない情報を含み得る。
本発明は、上記従来技術に鑑みてなされたものであって、本発明の目的は、ネットワークキーバリュー(NKV)クライアント及びNKVターゲットを含むNKVストアにおけるロック(lock)要請を調整する方法及びシステムを提供することにある。
本明細書で説明する実施形態は、データストレージの改善を提供する。
上記目的を達成するためになされた本発明の一態様による方法は、1つ以上のネットワークキーバリュー(NKV)クライアント及び1つ以上のNKVターゲットを含むNKVストアにおけるロック(lock)要請を調整する方法であって、前記方法は、第1のNKVクライアントにより、前記1つ以上のNKVターゲットに格納されたオブジェクトのキーをロックするために通信インターフェースを介してクライアント装置からロック要請を受信する段階と、前記第1のNKVクライアントにより、前記ロック要請に対応する前記NKVターゲットの中の1つを決定する段階と、前記第1のNKVクライアントにより、ストレージインターフェースを介して前記ロック要請を前記NKVターゲットの中の1つに伝送する段階と、前記NKVターゲットの中の1つにより、前記ロック要請の優先順位を決定する段階と、前記NKVターゲットの中の1つにより、前記優先順位に基づいて前記ロック要請をロックする段階と、を有する。
格納されたオブジェクトのキーのロックは、読み取り/書き込みのロックである。なお、このようなロックモードでは、任意のライター(writer)よりも高い優先順位を有する全てのリーダー(reader)は、書き込みが行われていない間に、並列的にオブジェクトのキーにアクセス(access)することができ、各ライターは、ロック要請の対象となるオブジェクトのキーに排他的にアクセスすることができる。
格納されたオブジェクトのキーのロックは、読み取り/書き込みのロックである。なお、このようなロックモードでは、任意のライター(writer)よりも高い優先順位を有する全てのリーダー(reader)は、書き込みが行われていない間に、並列的にオブジェクトのキーにアクセス(access)することができ、各ライターは、ロック要請の対象となるオブジェクトのキーに排他的にアクセスすることができる。
前記通信インターフェースは、アプリケーション・プログラミング・インターフェース(API)を含み得る。
前記ストレージインターフェースは、NVMeOF(non−volatile memory express over fabrics)インターフェースを含み得る。
前記ロック要請の優先順位を決定する段階は、前記NKVターゲットの中の1つにより、優先順位のキューを確認する段階と、前記NKVターゲットの中の1つにより、前記優先順位のキュー内の要請の数に基づいて前記ロック要請の優先順位を決定する段階と、を含み得る。
前記方法は、前記NKVターゲットの中の1つにより、前記オブジェクトのキーが既にロックされているか否かを判定する段階と、前記NKVターゲットの中の1つにより、前記ロック要請を前記優先順位のキューに追加する段階と、を更に含み得る。
前記方法は、前記NKVターゲットの中の1つにより、前記オブジェクトのキーがロック解除されているか否かを判定する段階と、前記NKVターゲットの中の1つにより、前記オブジェクトのキーがロック解除されている場合、前記優先順位のキューから次のロック要請を実行する段階と、を更に含み得る。
前記オブジェクトのキーがロック解除されているか否かを判定する段階は、前記NKVターゲットの中の1つにより、前記オブジェクトのキーをロックした対応するNKVターゲットから有効なロック解除コマンドが受信されているか否かを判定する段階、又は前記NKVターゲットの中の1つにより、前記オブジェクトのキーに対するエポック(epoch)の期限が切れているか否かを判定する段階を含み、前記オブジェクトのキーは、前記有効なロック解除コマンドの受信又は前記期限が切れたエポックに応答してロック解除され得る。
前記方法は、前記第1のNKVクライアントにより、複数の特定のNKVターゲットに対する重みを決定する段階と、前記第1のNKVクライアントにより、前記複数の特定のNKVターゲットの中から最大の重みを有する前記複数の特定のNKVターゲットの中の1つを識別する段階と、前記第1のNKVクライアントにより、前記最大の重みを有する前記複数の特定のNKVターゲットの中の1つをマスターロックノードとして割り当てる段階と、前記第1のNKVクライアントにより、前記複数の特定のNKVターゲットの中から残りの他のものをスレーブロックノードとして割り当てる段階と、を更に含み、前記ロック要請は、前記複数の特定のNKVターゲットを含み、前記NKVターゲットの中の1つは、前記マスターロックノードに対応し得る。
前記重みを決定する段階は、ハッシュ化(hashing)アルゴリズムを使用することを含み得る。
前記ロック要請を前記NKVターゲットの中の1つに伝送する段階は、前記第1のNKVクライアントにより、前記ロック要請を前記マスターロックノードに伝送する段階を含み、前記ロック要請は、前記スレーブロックノードでもロックが維持される要請を含み、前記マスターロックノードは、前記ロック要請を前記スレーブロックノードに伝送し得る。
前記方法は、前記第1のNKVクライアントにより、前記ロック要請を前記マスターロックノードに伝送する段階と、前記第1のNKVクライアントにより、タイムアウトを決定する段階と、前記第1のNKVクライアントにより、前記複数の特定のNKVターゲットの中の残りのものからその次に最大の重みを有する前記複数の特定のNKVターゲットの中の他の1つを新たなマスターロックノードとして割り当てる段階と、を更に含み、前記NKVターゲットの中の1つは、前記新たなマスターロックノードに対応し得る。
上記目的を達成するためになされた本発明一態様によるコンピュータに下記方法を実行させるための命令語を含む非一時的なコンピュータ読み取り可能な記録媒体であって、1つ以上のネットワークキーバリューストア(NKV)クライアント及び1つ以上のNKVターゲットを含むNVMeOF(non−volatile memory express over fabrics)NKVの1つ以上のプロセッサによって前記命令語が実行されると、前記1つ以上のプロセッサは、下記方法を実行させるように制御し、前記方法は、前記1つ以上のNKVターゲットに格納されたオブジェクトのキーをロックするために通信インターフェースを介してクライアント装置からロック(lock)要請を受信する段階と、前記ロック要請に対応する前記NKVターゲットの中の1つを決定する段階と、ストレージインターフェースを介して前記ロック要請を前記NKVターゲットの中の1つの伝送する段階と、前記ロック要請の優先順位を決定する段階と、前記優先順位に基づいて前記ロック要請をロック段階と、を有する。
前記通信インターフェースは、アプリケーション・プログラミング・インターフェース(API)を含み、前記ストレージインターフェースは、NVMeOF(non−volatile memory express over fabrics)インターフェースを含み得る。
前記ロック要請の優先順位を決定する段階は、優先順位のキューを確認する段階と、前記優先順位のキュー内の要請の数に基づいて前記ロック要請の優先順位を決定する段階と、を含み得る。
前記方法は、前記オブジェクトのキーが既にロックされているか否かを判定する段階と、前記ロック要請を前記優先順位のキューに追加する段階と、前記オブジェクトのキーがロック解除されているか否かを判定する段階と、前記オブジェクトのキーがロック解除されている場合、前記優先順位のキューから次のロック要請を実行する段階と、を更に含み得る。
前記オブジェクトのキーがロック解除されているか否かを判定する段階は、前記オブジェクトのキーをロックした対応するNKVターゲットから有効なロック解除コマンドが受信されているか否かを判定する段階、又は前記オブジェクトのキーに対するエポック(epoch)の期限が切れているか否かを判定する段階、を含み、前記オブジェクトのキーは、前記有効なロック解除コマンドの受信又は前記期限が切れたエポックに応答してロック解除され得る。
前記方法は、ハッシュ化(hashing)アルゴリズムを使用して複数の特定のNKVターゲットに対する重みを決定する段階と、前記複数の特定のNKVターゲットの中から最大の重みを有する前記複数の特定のNKVターゲットの中の1つを識別する段階と、前記最大の重みを有する前記複数の特定のNKVターゲットの中の1つをマスターロックノードとして割り当てる段階と、前記複数の特定のNKVターゲットの中から残りの他のものをスレーブロックノードとして割り当てる段階と、を更に含み、前記ロック要請は、複数の特定のNKVターゲットを含み、前記NKVターゲットの中の1つは、前記マスターロックノードに対応し得る。
前記ロック要請を前記NKVターゲットの中の1つに伝送する段階は、前記ロック要請を前記マスターロックノードに伝送する段階を含み、前記ロック要請は、前記スレーブロックノードでもロックが維持される要請を含み、前記マスターロックノードは、前記ロック要請を前記スレーブロックノードに伝送し得る。
前記方法は、前記ロック要請を前記マスターロックノードに伝送する段階と、タイムアウトを決定する段階と、前記複数の特定のNKVターゲットの中の残りのものからその次に最大の重みを有する前記複数の特定のNKVターゲットの中の他の1つを新たなマスターロックノードとして割り当てる段階と、を更に含み、前記NKVターゲットの中の1つは、前記新たなマスターロックノードに対応し得る。
上記目的を達成するためになされた本発明一態様によるシステムは、1つ以上のネットワークキーバリュー(NKV)クライアント及び1つ以上のNKVターゲットを含むNKVストアにおけるロック(lock)要請を調整するシステムであって、前記システムは、第1のNKVクライアントにより、前記1つ以上のNKVターゲットに格納されたオブジェクトのキーをロックするために通信インターフェースを介してクライアント装置からロック要請を受信し、前記第1のNKVクライアントにより、前記ロック要請に対応する前記NKVターゲットの中の1つを決定し、前記第1のNKVクライアントにより、ストレージインターフェースを介して前記ロック要請を前記NKVターゲットの中の1つに伝送し、前記NKVターゲットの中の1つにより、前記ロック要請の優先順位を決定し、前記NKVターゲットの中の1つにより、前記優先順位に基づいて前記ロック要請をロックするように構成される。
従って、本発明は、向上したロックサービス又はロック方法(lock methodology)を可能にする基本的なストレージサービス(underlying storage service)を提供することで、データストレージの技術を改善し、オブジェクトストレージ装置に対する設計の柔軟性を向上させ、機能的に正しいアプローチで性能を向上させることができる。なお、実施形態のロック方法論の使用は、データの一貫性を保証するアプリケーションと共に使用される。更に、1つ以上のターゲットロック要請(multi−target lock request)中に、1つ以上のターゲット失敗(failures)が発生した場合、本発明のAPI(application programming interface)は、要請された大多数のターゲットが利用可能である限り、大いに利用可能である。
本発明によると、ネットワークキーバリュー(NKV)のクライアント及びNKVターゲットを含むNKVストアにおけるロック(lock)要請を調整する方法及びシステムを提供することができる。
また、本発明によると、基本的なストレージサービスを提供することで、データストレージの技術を改善し、オブジェクトストレージ装置の設計の柔軟性を向上させ、機能的に正しいアプローチでストレージの性能を向上させるシステム及び方法を提供することができる。
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。ここで類似する参照符号は、別の意味を示しているものとして明示しない限り、多様な図面に亘って類似した部分を指す。
対応する参照文字は、図面の多様なビュー(view)に亘って対応するコンポーネントを指す。本発明が属する技術分野における通常の技術者(当業者)は、図面におけるコンポーネントが単純性及び明瞭性のために例示されており、必ずしも縮尺に合わせて描かれていないことを理解するだろう。例えば、図面におけるコンポーネント、レイヤー、及び領域の一部の寸法は、多様な実施形態の明確性及び理解を向上させるために、他のコンポーネント、レイヤー、及び領域に比較して誇張されることがある。また、一般的であるが、よく知られているコンポーネント及び実施形態の説明に関係のない部分は、これらの多様な実施形態のより目立たない見方(ビュー)を容易にし、説明を明確にするために図示しない場合もある。
本発明の特徴及びこれらを達成する方法は、実施形態の詳細な説明及び図面を参照して、より容易に理解される。以下、実施形態を、図面を参照して、より詳細に説明する。しかし、説明する実施形態は、異なる多様な形態に実現されることがあり、本明細書で例示する実施形態だけで限定されるものと解釈してはならない。むしろ、これらの実施形態は例示として提供され、従って本発明は徹底的で完全なものになるはずであり、本発明の態様及び特徴を本発明が属する技術分野における通常の技術者に完全に伝えるだろう。従って、本発明の態様及び特徴の完全な理解のために、本発明が属する技術分野における通常の技術者にとって必要としないプロセス、コンポーネント、及び技法は説明しない可能性もある。
詳細な説明では、説明の目的のために、多様な実施形態の完全な理解を提供するために、多数の特定の詳細を提示する。しかし、多様な実施形態は、これらの特定の詳細なしに、又は1つ以上の同等の配置と共に実行されることが明らかである。他の例において、よく知られている構造及び装置は、多様な実施形態を不必要に曖昧にすることを避けるために、ブロック図の形態で示される。
「第1の」、「第2の」、「第3の」などの用語は、本明細書で多様な要素、コンポーネント、領域、レイヤー、及び/又はセクションを説明するために使用されるが、これらの要素、コンポーネント、領域、レイヤー、及び/又はセクションは、これらの用語により限定されないものと理解されるだろう。これらの用語は、他の要素、コンポーネント、領域、レイヤー、又はセクションから1つの要素、コンポーネント、領域、レイヤー、又はセクションを区別するために使用される。従って、後述する第1の要素、コンポーネント、領域、レイヤー、又はセクションは、本発明の思想及び範囲を逸脱することなく、第2の要素、コンポーネント、領域、レイヤー、又はセクションを指す。
本明細書で使用する用語は、単に特定の実施形態を説明するためのものであり、本発明を限定するものと意図されない。本明細書で使用するように、文脈上明らかに別の意味を示していると判定されない限り、単数形は、複数形も含むものと意図される。用語の「含む(comprises)」、「含んでいる(comprising)」、「有する(have)」、及び「有している(having)」は、本明細書で使用する場合、これらの用語は、定められた特徴、整数、段階、演算、要素、及び/又はコンポーネントの存在を指定するが、1つ以上の他の特徴、整数、段階、演算、要素、コンポーネント、及び/又はそれらのグループの追加若しくは存在を排除しない。本明細書で使用するように、用語の「及び/又は(そして/又は)」は、1つ以上の列挙された項目に関連付けられている任意且つ全ての組み合わせを含む。
本明細書で使用するように、「実質的に」、「約」、「およそ(大略)」及び、これと類似の用語は、近似の用語として使用され、程度の用語として使用されず、本発明が属する技術分野における通常の技術者(当業者)によって識別される測定又は計算された値の固有の偏差を考慮するためのものである。本明細書で使用する「約」又は「およそ(大略)」は、測定された値を含んでおり、本発明が属する技術分野における通常の技術者によって決定された特定の値に対する偏差の許容可能な範囲内を意味し、問題の測定、及び特定の数量の測定に関連するエラー(即ち、測定システムの限界)を考慮する。例えば、「約」は、1つ以上の標準偏差以内、又は測定された値の±30%、20%、10%、5%以内を意味する。なお、本発明の実施形態を説明する際、「できる」の使用は、「本発明の1つ以上の実施形態」を指す。
特定の実施形態が異なるように実施される場合、特定のプロセスの順序は、説明する順序とは異なるように遂行されることがある。例えば、2つの連続的に説明されたプロセスは、実質的に同時に遂行されるか、又は説明された順序と逆の順序で遂行される。
本明細書で記述する本発明の実施形態による電子若しくは電気装置、及び/又は他の任意の関連する装置若しくは要素は、任意の適切なハードウェア、ファームウェア(例えば、ASIC:Application Specific Integrated Circuit)、ソフトウェア、又はソフトウェア、ファームウェア、及びハードウェアの組み合わせを用いて実装される。例えば、これらの装置の多様な要素は、1つの集積回路(Integrated Circuit:IC)チップ又は別途のICチップに形成される。なお、これらの装置の多様な要素は、フレキシブルプリント回路フィルム(Flexible Printed Circuit Film)、TCP(Tape Carrier Package)、プリント回路ボード(Printed Circuit Board:PCB)上に実装されるか、又は単一の基材上に形成される。
なお、これらの装置の多様な要素は、コンピュータプログラムの命令語を実行して、本明細書で説明する多様な機能を遂行するための他のシステム要素と相互作用する1つ以上のコンピューティング装置、又は1つ以上のプロセッサで遂行されるプロセスやスレッド(Thread)である。コンピュータプログラムの命令語は、例えばRAM(Random Access Memory)などのような標準的なメモリ装置を利用するコンピューティング装置で実装されるメモリ内に格納される。コンピュータプログラムの命令語は、また、例えばCD−ROM、フラッシュドライブ(Flash Drive)、又はそのような他の非一時的コンピュータ読み取り可能な記録媒体(Non−transitory Computer Readable Media)に格納されることも可能である。また、本発明が属する技術分野における通常の技術者は、本発明の実施形態の思想及び範囲を逸脱することなく、多様なコンピューティング装置の機能が単一のコンピューティング装置に統合又は集積されるか、又は特定のコンピューティング装置の機能が1つ以上の他のコンピューティング装置に分散され得ることを認識しなければならない。
別の方法で定義されていない限り、本明細書で使用する全ての用語(技術や科学用語を含む)は、本発明が属する技術分野における通常の技術者(当業者)にとって一般的に理解されるのと同じ意味を有する。一般的に使用される辞書に定義されたもののような、これらの用語は、関連する技術及び/又は本明細書の文脈からそれらの意味と一致する意味を有するものと解釈されるべきであり、本明細書で明示的に定義されていない限り、理想的な又は過度に形式的な意味として解釈されてはならないことが、更に理解されるだろう。
データの一貫性を提供する分散されたオブジェクトストア(例えば、システムクラッシュの発生又はデータが多数のユーザーによってアクセスされた場合に、データが損傷されないことを保証する分散されたオブジェクトストア)は、多数のエンドアプリケーション(end−applications)が同一のオブジェクトにアクセスする際に異なって発生する可能性のあるエラーを回避するために、データインテグレーション(integration)を有効にする。即ち、データインテグレーションは、複数の最終のアプリケーション/クライアントが同一のデータオブジェクトを異なるように修正しようとする際、競合する書き込み操作によるエラーが発生しないことを保証するために活性化される。各オブジェクトストレージノードが全てのストレージノードにアクセスすることができる分散された(disaggregated)共有ストレージモデルで、高いレベルのデータインテグレーション及びデータの一貫性を提供することは、ターゲットストレージノードによる調整なしには困難である。
なお、オブジェクトストレージソフトウェアレベルで保証されたデータインテグレーション(例えば、同一のオブジェクトに対応する書き込み操作の競争によるエラーが発生しないように保証)を実施することは、一般的に、オブジェクトストレージノード間の調整を使用する。また、多数のオブジェクトストレージノードがあり得るため、スケール(scale)及び性能の問題が発生することがある。
本発明の一実施形態は、分散された読み取りのロック/書き込みのロック(read lock/write lock)(例えば、R/Wロック、又は本明細書で一般的に使用される一度に1つのクライアントだけがターゲットに格納されたデータのオブジェクトに対するアクセス(access)及び/又は修正できることを保証するための「ロック(lock)」)を提供し、これはキーバリュー(KV:key−value)装置のためのアプリケーション・プログラミング・インターフェース(API:application programming interface)として示(露出)される。一実施形態で、ロックは、一度に1つのクライアントのみがオブジェクトをライト(write)及び/又は修正するように保証する分散された書き込みのロック(Wロック)であるが、多数のクライアントは、相変わらずロックされたオブジェクトを並列的にアクセス及び/又はリード(read)することができる。従って、実施形態は、ネットワークキーバリューコマンドセット(NKV(network key−value)コマンドセット)を用いてロックセマンティクス(lock semantics)を制御する。本発明の一実施形態は、ネットワークキーバリューのプロトコルの使用を説明するが、開示する実施形態は、NVMeOF(non−volatile memory express over fabrics)キーバリューシステムでもまた実施されるか、又は任意の他の適切なプロトコルを使用して実施され得ることに留意しなければならない。
実施形態のいくつかによって提供されるロックAPIは、単一のNKVターゲット(例えば、データストア(data store)又はオブジェクトストア)をロックするのに使用される。ここで単一のNKVターゲットからの読み取り又は単一のNKVターゲットへの書き込みは発生しない可能性がある。ロックAPIは、(例えば、以下の図1〜図3に関して説明するように)複数のクライアント又はホストがNKVターゲットのクラスタで単一のNKVターゲットに関してロックの方法論を使用するシナリオで使用されるか、又は例えば削除コーディング(EC:erasure cording)若しくは複製セット/ミラーリングアプリケーションに関連して(例えば、以下の図4及び図5に関して説明するように)多数のNKVターゲットがクラスタ/セットに存在する多重ターゲット(multiple−target)モードで多数のNKVターゲットをロックするために使用される。一実施形態で、NKVターゲットがロックされるとしても、NKVターゲットは、特定のデータ/特定のキー(例えば、ロックされたオブジェクト)に対してのみロックすることができ、これはロックされたオブジェクトが、ロックが保持(hold)されている間に修正され得ないにも拘らず、ロックされたNKVターゲットでの他のキーは、アクセスされることが可能であり、更に修正され得ることを意味する。本明細書で使用される「クライアント(client)」又は「ホスト(host)」は変換(translation)レイヤーの使用なしでファブリック(fabric)へ及びファブリックから直接NVMeコマンドを伝送及び受信するのに使用されるNVMeクライアントソフトウェアを指し、「ターゲット(target)」(例えば、NKVターゲット)はNVMeストレージターゲットを指し、NVMeストレージターゲットは、それ自体及びファブリックによってサポートされる1つ以上のホスト(例えば、NVMeホストイニシエーター(initiator))との間の1つ以上のパスを含む。一実施形態で、NVMeストレージターゲットは、例えばソリッドステートドライブ(SSD:solid state drive)のようなストレージ装置として実装される。多様な実施形態で、NVMeストレージターゲットは、標準的なラージフォームファクタ(例えば、3.5インチハードドライブのフォームファクタ)、標準的なスモールフォームファクタ(例えば、2.5インチハードドライブのフォームファクタ)、M.2フォームファクタ、E1.Sフォームファクタ、及び/又はこれと類似したものに従う。他の実施形態で、NVMeストレージターゲットは、任意の適切な又は所望のこれらのフォームファクタの派生品(derivative)に従う。より一般的に、ターゲットはデータストアであり、クライアントはデータストアに格納されたデータにアクセスするアプリケーションである。従って、クライアント/ホストは、ファブリックを介してターゲットとの読み取り及び書き込みの動作(例えば、データアクセス動作)を遂行することができる。
本発明の一実施形態によると、NKVターゲットは、複数のNKVターゲットに亘って複数のロックを取得するために、クォーラムロジック(quorum(定足数)logic)を使用することなくロックされる。即ち、NKVシステムは、分散システムとして分散トランザクション(distributed transaction)がNKVシステムで動作を遂行することが許容される前に、クォーラム(例えば、対応する投票の最小数(定足数))の必要性を排除する。しかし、NKVターゲットに亘ってロックすることが有用である場合、APIは利用可能である。
例えば、本発明の一実施形態によると、クライアント側(client side)から複製/ミラーリング又はECを遂行するアプリケーションは、一般的にEC又は複製セットに亘ってデータの一貫性を保証することを追求する。従って全てのNKVターゲットに亘るロックは有用なメカニズムである。このようなアプリケーションは、クォーラムベースの実装方法を使用してクライアント側で実装されると、クライアントの数が一般的にNKVターゲットの数よりも大きくなる可能性があるため、(例えば、相当の大きさ)非効率的である。本発明の1つ以上の実施形態によると、簡単なターゲットベースのクォーラムスキーム(scheme)が提供され、例えばそれによってNKVターゲットはNVMeOF KVコマンドセットを介して相互通信してクォーラムを決定する。
なお、APIは、実施形態の一部で、古くなった(stale)ロックを効率的にハンドリング(処理)することができる。古くなったロックは、NKVクライアント又はNKVターゲットがロックを獲得し、NKVクライアント又はNKVターゲットは、その後、停電(power outage)又は他のクラッシュに当てられる。従ってNKVクライアント又はNKVターゲットは、ロックを解除するか又は別な方法で解除することができない(例えば、図2、図3、及び図5に関して説明するように)状況を指す。
また、APIは、実施形態の一部で、他のNKVクライアントに関連するクロックスキュー(clock skew)によって影響を受けないことがある。例えば、他のNKVのクライアント及び/又は他のNKVターゲット間のクロック時間は、ミスマッチされ、従って一実施形態で、カウンタエポック(epoch)の期間が古くなったロックを決定するために使用される。一実施形態で、APIは、効率的な優先順位のキュー(PQ:priority queue)を使用してロックの優先順位を分析するように構成され、リーダー/ライター(reader/writer)ロックの間で「枯渇問題(starving issue)」(例えば、クライアントが付与されていない(ungranted)ロックを要請する)を効率的に解決することができる。
しかし、本発明の実施形態の中の1つ以上によって達成される利点は、一部のトレードオフ(tradeoff)を有する。例えば、どのロック要請及びロック解除要請が付与(grant)及び拒絶されるかを決定するために使用される大部分の全てのロックロジックはNKVターゲット側にあるが、クライアント側は殆ど通過(pass−through)であり、これはNKVクライアントがどのロック要請が付与されたり拒絶されたりするかを決定していないことを意味する。追加的に、クライアント側で類似したロジックを実装することは、潜在的に困難な場合があり、これは追加の入力/出力(IO:input/output)トラフィックに起因して帯域幅が減少するからであり、クライアント側で加重された優先順位のキューを維持することは容易に達成されないからである。
なお、クライアント側で古くなったロックの検出のためのエポックを維持することは困難である。即ち、ロック要請が付与されたNKVクライアントからの推定された非活性(非アクティブ)のために(例えば、NKVクライアントはロックされたNKVターゲットにロックがもはや要請されないことを知らせるのに失敗したため、これはNKVクライアントのクラッシュによって発生する可能性がある)、与えられたNKVクライアントに対して付与されたロック要請を解除するか又はロック解除すべき時間フレームを設定することは困難な場合である。合法的なロックが古くなった状態として誤って分類されることを防止するために(例えば、NKVクライアントがなお所望の合法的ロックを早期に解除することを防止するために)クライアントノードがエポック(例えば、エポックの期間)に同意しなければならないことから困難が発生する。更に、クライアントノード及びNKVターゲットを含むクラスタに参加する任意の追加されたクライアントは、エポックに関して同期化する必要があり、これはそのロックから古い状態が発生した時期を決定するためにインプレイス(in−place)プロトコルを追加されたクライアント(又は複数のクライアント)に伝達するために追加の動作が使用されることを意味する。従って、本発明の一実施形態は、以下で説明するように、ロックが実際に古くなった時期を検出及び決定するための高帯域幅スキームを実施することができながら、正当なロックが古くなったと早期にラベリング(labeling)されることを避けることができる。
更に、一実施形態で、ロジックは、付与されたロックが古くなったものと判定される速度を増加させるために(例えば、古くなったロックが検出される方法を効率的に増加させるために)ターゲット側のメモリで実装される。NKVターゲットは、アクティブな連結を追跡して古くなったロックの存在を効率的に検出することができることから(例えば、どのNKVクライアントがNKVターゲットとアクティブ的に通信しているかを追跡することで、アクティブな連結を立証して付与されたロックが古くなったと誤って判定されることを防止する)、これは有益なことである。更に、NKVターゲットによって古くなったと決定されたロックのために、NKVターゲットがパワーダウンされた時点で存在した1つ以上のロックを再び付与せずにNKVターゲットが再起動されることがあることから、このような実施形態は、NKVターゲットの再起動が有用なシナリオをハンドリングすることを容易にする。
他の考慮事項は、フェンシングメカニズム(fencing mechanism)の実装に関するものである。フェンシングメカニズムは、クライアント(例えば、データ又はオブジェクトに対応する読み取りの動作又は書き込みの動作を遂行するユーザーアプリケーション)がロックを成功的に維持する(例えば、読み取りの動作又は書き込みの動作に関連して)が、いくつかのイベント(例えば、ネットワーク遅延、プログラムエラーなど)のために、ロックの期間は、クライアントによるIO動作の完了に先立って満了する(例えば、有効に付与されたロックが解除される)状況を扱う(解決する)。従って、フェンシングメカニズムがないと、NKVクライアントは、クライアントがそこからIOを伝送し始めている間、古くなったロックの誤った検出のために(例えば、タイムアウトにより)、又はそうではない場合に依然として要求されている合法的なロックを保持することができない。本発明の一実施形態によると、上述したフェンシングメカニズムは、ターゲット側で実装される。しかし、本発明の他の実施形態は、ロックの期間を調整することにより(例えば、エポックを調整することにより)この潜在的な問題を扱うことができることに留意しなければならない。
図1は、本発明の一実施形態によるブロックモード(blocking mode)でクライアントの要請に関連するデータのアクセスのロック及び後続のロック解除方法を示すタイミング図である。
図1を参照すると、本発明の一実施形態は、1つ以上のクライアントがターゲットに格納されたデータにアクセスすることを可能にし、競争するクライアントによるデータアクセス動作の競合を防止するためのロックサービス(又はロックメカニズム/ロック方法論)を可能にする基本的なストレージサービス(underlying storage service)を提供する。説明するロックサービスは、ターゲットとして使用されるオブジェクトストレージ装置の設計に対応する柔軟性を向上させ、またデータの一貫性を保証しながら(例えば、任意の与えられた時点で、単一のクライアントだけがデータオブジェクトが修正できることを保証しながら)性能を向上させることができる。
本発明の実施形態のロック方法論の使用は、データの一貫性を保証するアプリケーションを含む。即ち、ロック方法論はCAP定理(CAP theorem)のコンテキスト内にCPを含み、ここでCAPは、(1)一貫性(consistency)(例えば、全ての読み取りは最新の書き込み又はエラーを受信)、(2)利用可能性(availability)(例えば、全ての要請は応答が最新の書き込みを含むことを保証せずに(エラーない)応答を受信)、及び(3)分断耐性(partition tolerance)を表し、ここでCPは、全てのクライアントが同時に同一のデータを見るという一貫性(C)と、ネットワークの障害にも拘らずにシステムが動作し続ける分断耐性(P)と、に対応する。
図1に提供する例示は、ブロックモードでの書き込み要請に関連するデータへのアクセスをロックし、後続的に(subsequently)データアクセスをロック解除する方法を示すタイミング図である。ブロックモードでは、キーが既にロックされていたときに、要請するクライアントにエラーを返すよりは、NKVターゲットは、要請するクライアントのロックを取得する順番と成功応答が返される前に、(例えば、優先順位のキュー(PQ:priority queue)にある)要請するクライアントによる要請前の全ての要請のロック/ロック解除だけではなく、現在のアプリケーション(例えば、現在のクライアント)によってキーがロック解除されるのを待機する。
本例示で、プロセスは、140(参照符号)でNKV書き込みのロックを要請する第1のクライアント110(例えば、第1のクラウドストレージクライアント112及び第1のNKVクライアント111)によって開始(initiate)される。第1のクラウドストレージクライアント112は本明細書で説明する適切なAPIを使用して第1のNKVクライアント111と通信し、第1のNKVクライアント111は、例えばNVMeOFのような適切なストレージインターフェースを使用して(例えば、コネクタ及びプロトコルを使用して)NKVターゲットと通信する。例えば、第1のクラウドストレージクライアント112は、APIコマンド「NKV_write_lock_kvp()」を第1のNKVクライアント111に伝送し、これは変換されたコマンド「Wlock()over NVMeOF」に第1のNKVクライアントによって変換され、これは第1のNKVクライアントがライト(write)ベースのロック(例えば、オブジェクトのキーのような、特定のオブジェクトkvp())を遂行しようとすることを表す。しかし、本発明はこれに限定されず、NKVクライアントは、例えばPCIe(Peripheral Component Interconnect Express)、RDMAオーバーイーサネット(登録商標)(remote direct memory access over Ethernet(登録商標))、SCSI(Small Computer System Interface)、SAS(Serial Attached SCSI)、SATA(Serial Advanced Technology Attachment)、ファイバチャネル(Fiber Channel)、NVMe、及び/又はこれと類似のもののような任意の他の適切なストレージインターフェースを使用してNKVターゲットと通信することができる。
その後、NKVターゲット130は、141(参照符号)で書き込みのロック又は読み取りのロックが存在するか否かを(及び有効期限が切れていないか)を判定し、また142で(例えば、PQで待機している)第1のクライアント110からの要請を超える優先順位(priority)を有する異なるロック要請が存在するか否かを判定する。2つの判定に対する回答が「いいえ(No)」である場合、その後でNKVターゲット130は、143で書き込みのロックを第1のクライアント110に付与する(例えば、成功応答を返す)。
その後、第2のクライアント120(例えば、第2のクラウドストレージクライアント122及び第2のNKVクライアント121)は、144(参照符号)でNKV書き込みのロックを要請する(例えば、同一のオブジェクトkvp()に対する)。本例示で、第1のクライアント110に類似した方法で、コマンド「NKV_write_lock_kvp()」は、145で第2のNKVクライアント121によってコマンド「Wlock()over NVMeOF」に変換され、これは第2のNKVクライアントが書き込み(ライト)ベースのロック(例えば、オブジェクトのキーをロックするための)を遂行しようとすることをNKVターゲット130に示す。その後、NKVターゲット130は、146で書き込みのロック又は読み取りのロックが既に存在するか否か(そして有効期限が切れていないか)、そして(例えば、PQで待機する)第2のクライアント120からの要請を超える優先順位を有する異なるロック要請が存在するか否かを判定する。本例示で、第1のクライアント110による書き込みのロックのために、NKVターゲット130は、今後の回収(又は検索)(retrieval)のために156でPQ内の第2のクライアント120による書き込みのロック要請を追加する。
NKVターゲット130が146(参照符号)で前の書き込みのロックが存在することを決定し、そして/又は156でPQ内の第2のクライアント120の書き込みのロック要請を追加するうちに又は追加後に、第1のクライアント110は、147で読み取りの要請又はGET要請を提出し、148でNKVターゲット130からオブジェクトのキー(例えば、kvp())を回収する。その後、第1のクライアント110は、149で書き込みの要請又はPUT要請を提出して、NKVターゲット130にオブジェクトのキーをライト(write)する(例えば、その後150でNKVターゲット130から成功応答を受信する)。即ち、第2のクライアント120による要請がペンディング(pending)される中(例えば、146で又はPQで待機)、第1のクライアント110は、書き込みのロックに対応するオブジェクトのキーに対応するリード・アンド・ライトバック(read−and−writeback)の動作をしようと試み、そしてNKVターゲット130は、付与された書き込みのロックに基づいてリード・アンド・ライトバックの動作が遂行されるように許容する。
オブジェクトのキーがライトバック(write back)されると、第1のクライアント110は、151(参照符号)で要請を提出してNKVターゲット130がロックを解除(例えば、オブジェクトのキーのロック解除)する。例示で、コマンド「NKV_write_unlock_kvp()」及びその「Wunlock()over NVMeOF」への変換は、対応するクライアント(例えば、第1のクライアント110)がNKVターゲット130の前に付与されたロックを解除するように要請すること(例えば、ロックが他のクライアントに利用可能なように)を示すのに用いられる。152で任意のロックが存在するか否かを(そして有効期限が切れていないか)を再び判定して、153で待機中(例えば、PQで待機中の)の前のロック(又はロック解除)要請があるか否かを判定した後、NKVターゲット130は、154で第1のクライアント110によって維持されたロックを解除する。
最後に、第1のクライアント110に対するロックが解除されると、NKVターゲット130は、PQで待機中の第2のクライアント120の書き込みのロック要請を実行し(PQで優先順位がより高い他の要請がないと仮定)、155で成功応答を第2のクライアント120に返し、ここで成功応答は書き込みのロック要請が付与されることを示す。従って、ロック要請の優先順位の順序は、NKVターゲット130によって持続(maintain)される、そして要請クライアントのリソースは、ロック要請の再提出(resubmission)及びエラー応答を追跡する代わりに他のタスク(task)のために用いられる。
図2は、本発明の一実施形態による対応するクライアントクラッシュに従って獲得されたロックを解除する方法を示すタイミング図である。
図2を参照すると、本例示で、上述した図1に関して議論したものと同様の方式で、第1のクライアント110は、241で書き込みのロックを要請し、NKVターゲット130が242で書き込みのロック又は読み取りのロックが存在するか否かを(そして有効期限が切れていないか)を判定し、243で(例えば、PQで待機する)第1のクライアント110からの要請を超える優先順位を有する前の異なるロック要請があるか否かを判定した後、244で書き込みのロックを受信する。また、上述したように、第2のクライアント120は、第1のクライアント110による要請後に、245で書き込みのロックを後続的に要請する。従って第1のクライアント110による要請は、第2のクライアント120の要請の前に実行される。このように、本例示で、第1のクライアント110は、244で書き込みのロックを付与され、第2のクライアント120のロック要請は、今後の回収のためPQに追加される(例えば、図1の156を参照)。しかし、本発明は、これに限定されず、一実施形態で、後続の要請は、要請を作るクライアント、要請を作るクライアントの装置のタイプ、要請のタイプ、及び/又はこれらと類似のものに基づいて、先に受信された要請の前に実行される。
しかし、オブジェクトのキーをNKVターゲット130にライトバックする前に(例えば、図1に示すように、149でPUT要請を提出してオブジェクトのキーをNKVターゲット130にライトバックする前に)、第1のクライアント110は、246で衝突(クラッシュ)する(例えば、非応答的になり、又は別の方法で到達できなくなる)。本例示で、NKVターゲット130は、247でエポックが満了すると(例えば、第1のクライアント110が衝突したと推定されると判定した場合)、どちらかがより早く発生したNKVクライアントの連結が切れたと判定されたターゲットに応じて、又は第2のクライアント120から受信された書き込みのロック要請に応じて、第1のクライアント110に付与された書き込みのロックを解除するようにプログラミングされる。
従って、NKVターゲット130は、その後、書き込みのロックを解除し(例えば、衝突したと推定される第1のクライアント110に状態のアップデートを伝送せずに)、その後、248で第2のクライアント120に書き込みのロック要請を自由に付与する(例えば、PQで待機し、PQに優先順位の高い他の要請がないと仮定)。
図3は、クライアントがロックを獲得しているときにネットワークキーバリュー(NKV)ターゲットの衝突(クラッシュ)に従ってロックを解除する方法を示すタイミング図である。
図3を参照すると、図1及び図2に関連して説明した2つ前の例示のように、第1のクライアント110は、341でロックを要請し、第2のクライアント120は、後続的に342でロックを要請する。その後、NKVターゲット130は、343で第1のクライアント110にロックを付与し、第2のクライアント120のロック要請は、今後の回収のためにPQに追加される(例えば、図1の156を参照)。
しかし、第1のクライアント110が344でNKVターゲット130からのキーオブジェクトを再び書き込むか又は再び書き込みを試みるうちに、NKVターゲット130は、345で衝突(クラッシュ)する。このとき、第1のクライアント110(例えば、第1のNKVクライアント111)は、346でNKVターゲット130との連結を再設定(reestablish)しようと試み、NKVターゲット130に到達することができないと判定する。347で、第1のNKVクライアント111は、警告(例えば、エラーコード)を第1のクラウドストレージクライアント112に伝送し、警告はNKVターゲット130にもはや到達できないことを示す(例えば、第1のNKVクライアント111は、第1のNKVターゲット130が失敗したことをクライアント111が判定したことを示す適切なエラーコードと共にメッセージ「NKV_store_kvp()failure」を伝送する)。
同様に、十分な時間(例えば、臨界時間)が経過した後、第2のクライアント120は、348でNKVターゲット130との連結を再設定しようと試み、NKVターゲット130に到達することができないと判定する。従って、第2のNKVクライアント121は、349で第2のクラウドストレージクライアント122に警告を同様に伝送し、警告はNKVターゲット130にもはや到達できないことを示す(例えば、NKV_write_lock_kvp()failure)。
その後、350でNKVターゲット130がオンライン上に戻ってくると、NKVターゲット130は、351でNKVターゲット130のオブジェクト(例えば、オブジェクトキー)に対するロックを解除する。この場合、一実施形態で、NKVターゲット130は、任意のロックを保持することなくリセットされ、NKVクライアントは、衝突(crash)を検出し、再びNKVターゲット130をロックしようと試みる。
図4は、本発明の一実施形態による多数のNKVターゲットに亘ってロックを取得する方法を示すブロック図であり、図5は、本発明の一実施形態によるマスターNKVターゲットノードの衝突に従って獲得されたロックを解除する方法を示すタイミング図である。
本明細書で開示する実施形態の一部によると、NKV側は、高い利用可能性のロックサービスを提供する。例えば、アプリケーションは、NKV APIを介してノンブロッキングロック(non−blocking lock)のための要請(例えば、単一のオブジェクトに対応するロックのための要請)、又はブロッキングロック(blocking lock)のための要請(例えば、クラスタの1つ以上のNKVターゲットの全てのオブジェクトに亘るロックに対する要請)を作成する。それに応答して、NKVクライアントは、アルゴリズム(例えば、ランデブーハッシュアルゴリズム(Rendezvous hashing algorithm)又はHRW(highest random weight)ハッシュアルゴリズムのような、ハッシュアルゴリズム)を実行して、複数のNKVターゲットの中のどのNKVターゲットが選択されるかを決定する。例えば、選択されたNKVターゲットは、HRWハッシュアルゴリズムに従って重みが最も大きいと決定される。HRWハッシュアルゴリズムは、1つ以上のクライアントがより大きな可能なオプションのセットの中のオプションのサブセットに対して分散合意(distributed agreement)(例えば、第1及び第2のNKVターゲットに加えて、少なくとも1つの他の可能なNKVターゲットを含むクラスタの中から第1のNKVターゲット又は第2のNKVターゲットを選択するか否か)を達成することを許容する。選択されたNKVターゲット(例えば、重みが最も大きいと決定されたNKVターゲット)は、ハッシュされた(hashed)オブジェクトのキーに対するマスターロックノードと称される。
マスターロックノードに対応するNKVクライアントが、衝突(クラッシュ)するか又はネットワークからの連結が切断されない限り、オブジェクトのキーに対するロック要請は、同一のNKVターゲットに限定される。マスターロックノードがクラッシュすると、その次に重みが最も大きい(next−most−weighted)ターゲットノード(例えば、ランデブーハッシュアルゴリズムによって決定されたその次に重みが最大のノード)がマスターロックノードとして選択される。
アプリケーションは、NKV APIを介してアプリケーションがロックしようとする(例えば、EC/複製セットを介して)限られた数のターゲットノードを提供する。ハッシュアルゴリズムによって決定されるように、多数のターゲットノードの中の重みが最大のノードはマスターロックノードとして指定されるが、他の残りのノードはスレーブロックノードとして指定される。
マスターロックノードは、オブジェクトのキーに対するロック要請を生成して、ロック要請を他のスレーブノードに伝送する。マスターロックノードがNKVターゲットノードロックのクォーラム(又は定足数)(quorum)(例えば、少なくとも(N/2+1)個のNKVターゲットノードロック、ここでNはクライアントの要請でターゲットノードの数)を得ることができる場合、ロックは、マスターロックノードによって成功的に取得される。即ち、クライアントの要請で大多数のターゲットノードがロックされることが可能な場合、ロックは、マスターロックノードによって成功的に取得される。これは、1つ以上のターゲットノードが予期せぬ失敗を経験するが、そうでない場合、エラーなしに動作する状況での一貫性(インテグリティ)を保証する。従って、全ての要請されたターゲットロックは、応答を再び伝送する前に獲得される。そうでない場合、ロック要請がブロッキングロックの要請であるか又はノンブロッキングロックの要請であるか否かに基づいて、システムは既にロックされたターゲットノードで待機するか又はエラーが発生したことを示す警告を返す。
ランデブー/HRWハッシュアルゴリズムは、2つのパラメータとして、(1)キー(例えば、NKVターゲットの中のいずれか1つに格納される値に対応するオブジェクトのキー)と、(2)ターゲットID(例えば、データが格納されるそれぞれのNKVターゲットに対応する固有識別子又は入力/出力(IO)の識別)と、を使用する。従って、マスターロックノードの選択がハッシュアルゴリズムに基づくため、全てのNKVターゲットノードは、各ターゲットIDを有する各オブジェクトのキーのハッシュ結果に基づく異なる各オブジェクトのキーに対してマスターロックノード又はスレーブロックノードとして選択される。
NKVクラスタは、マスターロックノード又はスレーブロックノードが電力を失うか、又はそうではなくクラッシュ(衝突)する場合にも、ロックが常に使用可能であることを保証できることに留意しなければならない。例えば、マスターロックノードが動作しなくなる(die)と、その次に重みが最大のノードが(例えば、ランデブーハッシュアルゴリズムを使用して)NKVクライアントによって新たなマスターロックノードとして自動的に選択される。従って、マスターロックノードは、当該オブジェクトのキーに対する有効なロックがある場合、ブロックされるか又は(例えば、ノンブロッキングロック要請が発生した場合)エラーを示すため、警告を任意のノード(例えば、EC/複製セットの任意のノード)に返す。従って、ロックは、要請されたNKVターゲットノードの大多数が作動し続ける限り(例えば、(N/2+1)個のNKVターゲットノードが作動し続ける限り、ここでNはクライアントの要請におけるNKVターゲットノードの数を表す整数である)利用可能である。
NKVクライアント又はNKVターゲットのいずれかが動作しなくなると、古くなったロックは適切に処理される(例えば、NKVクライアント又はNKVターゲットが衝突(クラッシュ)するか、又はそうではなく動作を失うと推定される前に、ネットワーク上でNKVクライアント又はNKVターゲットが非アクティブに残る時間の量を決定するための合理的なサイズのタイムアウトを使用して)。これは、複数のクライアント/シングル(単一の)ターゲットシナリオに関連して上述したものと同様の方法で達成される。
図4を参照すると、本例示で、第1のクライアント(又は第1のクラウドストレージクライアント)410は、441で第1、第2、及び第3のNKVターゲット(131、132、133)にアクセスしようとし、第2のクライアント(又は第2のクラウドストレージクライアント)420は、442で第2、第4、及び第5のNKVターゲット(132、134、135)にアクセスしようとし、第3のクライアント(又は第3のクラウドストレージクライアント)430は、443でまた、第2、第4、及び、第5のNKVターゲット(132、134、135)にアクセスしようとする。
441で第1のNKVの例示の場合、444でハッシュアルゴリズム(例えば、ランデブー)が第1、第2、及び第3のNKVターゲット(131、132、133)に対して実行され、重みが最大であるNKVターゲットが選択される(例えば、第1のNKVターゲット131が、重みが最も大きいものとして選択される)。重みが最大であるNKVターゲットは、本例示で、第1のNKVターゲット131にマスターロックノードの役割を割り当てられる。従って、445で第1のクライアント410は、NKVロックコマンドを第1のNKVターゲット131に伝送し、ロックが第2及び第3のNKVターゲット(132、133)でも維持されるように要請する。
同様に、442で第2のNKV例示の場合、445aでハッシュアルゴリズムが第2、第4、及び第5のNKVターゲット(132、134、135)に対して実行され、重みが最大であるNKVターゲットが選択され(例えば、第2のNKVターゲット132が、重みが最も大きいものとして選択され)、マスターロックノードの役割が割り当てられる。従って、446で第2のクライアント420は、NKVロックコマンドを第2のNKVターゲット132に伝送し、ロックが第4及び第5のターゲット(134、135)でも維持されるように要請する。
最後に、443で第3のNKV例示の場合、447でハッシュアルゴリズムが第2、第4、及び第5のNKVターゲット(132、134、135)に対して実行され、重みが最大であるNKVターゲットが選択され(例えば、再度第2のNKVターゲット132が、重みが最も大きいものとして選択され)、マスターロックノードの役割が割り当てられる。従って、448で第3のクライアント430は、NKVロックコマンドを第2のNKVターゲット132に伝送し、ロックが第4及び第5のNKVターゲット(134、135)でも維持されるように要請する。しかし、449で第2のクライアント420がロックを解除していない間、又は第2のクライアント420によって得られたロックが満了していない間、第3のクライアント430は、ロックを成功的に付与されないことが有る(例えば、書き込みのロックを受信することができない)。
図5を参照すると、図4に関連して前に例として説明したように、540で第1のクライアント410は、第1、第2、及び第3NKVターゲット(131、132、133)にアクセスしようとする。541でハッシュアルゴリズム(例えば、ランデブー)が第1、第2、及び第3のNKVターゲット(131、132、133)に対して実行され、重みが最大であるNKVターゲットが選択され(例えば、第1のNKVターゲット131が選択され)、マスターロックノードの役割が割り当てられる。従って、542で第1のクライアント410は、NKVロックコマンドを第1のNKVターゲット131に伝送し、ロックが第2及び第3のNKVターゲット(132、133)で維持されるように要請する。要請に応じて、第1のNKVターゲット131は、543で第2及び第3のNKVターゲット(132、133)と通信してロックを維持する。
その後、第2のクライアント420は、また544で第1、第2、及び第3のNKVターゲット(131、132、133)にアクセスしようとする。また、第1のNKVターゲット131は、545でマスターロックノードの役割を割り当てられる。しかし、546で第1のNKVターゲット131に対するロックのための要請を伝送してから直ぐに、547で第1のNKVターゲット131は、衝突(クラッシュ)する(例えば、非応答的)。従って、適切な時間(例えば、臨界時間)が経過した後、第2のクライアント420は、548で第1のNKVターゲット131がタイムアウトされたと判定し、549で第2及び第3のNKVのターゲット中のその次に重みが最も高いNKVターゲット(例えば、本例示で、第2のNKVターゲット132が、その次に重みが最も高いNKVターゲットである)に、ロック要請を伝送する。
第2のNKVターゲット132は、550で第2のクライアント420から要請を受信し、第1のクライアント410は、第2のNKVターゲット132に対する書き込みのロックを維持することを決定する。従って、551で第2のNKVターゲット132は、第1のクライアント410がロックを解除し、第2のNKVターゲット132が成功的にロックを解除するまで待機するか又はタイムアウトが発生するまで(例えば、第1のクライアント410がクラッシュした場合)待機し、その後、552で(第2のクライアント420の要請に応じて)第3のNKVターゲット(133)に対するロックを開始し、553で状態(ステータス)のアップデートを第2のクライアント420に返す。ステータスのアップデートは、第2及び第3のNKVターゲット(132、133)が成功的にロックされたことを示す。
図6A〜図6Cは、本発明の一実施形態による1つ以上のNKVターゲットを含むNKVストアにおけるロック要請を調整する方法を示すフローチャートである。本発明は、図6に示す方法600の動作の順序又は個数に限定されず、本発明が属する技術分野における通常の技術者(当業者)によって認識される所望の動作の順序又は個数に変更される。例えば、一実施形態で、順序は変更されるか、或いは方法600は、より少ない動作又は追加の動作を含み得る。なお、方法600で示される動作は、上述した実施形態で1つ以上のコンポーネントの中の任意の適切な1つによって、又はコンポーネントの中の任意の適切な組み合わせによって実行される。
図6Aを参照すると、602でロック要請が、1つ以上のターゲットのストレージノードに格納されたオブジェクトのキーをロックするために、クライアント装置から通信インターフェースを介して受信される。例えば、一実施形態で、NKVクライアントは、クラウドストレージクライアントからロック要請コマンドのAPIを受信して、1つ以上のNKVターゲットに格納されたオブジェクトのキーをロックする。604で1つ以上のターゲットストレージノードが指定(特定)されたか否かが判定される。例えば、一実施形態で、NKVクライアントは、ロック要請を分析してクラウドストレージクライアントがロック要請で1つ以上のNKVターゲットを指定したか否かを判定する。604で1つ以上のターゲットストレージノードが指定された場合(はい)、その後、方法600は、Aで継続され、これは、図6Bを参照して、以下でより詳細に説明する。
604で1つのターゲットストレージノードのみが指定された場合(いいえ)、その後、606で既にロックがあるか否か、及びロックが有効であるか否かが判定される。例えば、一実施形態で、NKVクライアントは、ロックコマンドを変換し、ストレージインターフェース(例えば、NVMeOF)を介して指定されたNKVターゲットにロックコマンドを伝送する。606で指定されたNKVターゲットは決定を下す。606でオブジェクトのキーが既に有効にロックされている場合(はい)、その後、610でロックコマンドが、今後の回収のために優先順位のキュー(PQ)に追加される。606でオブジェクトのキーがロックされずに有効である場合(いいえ)、その後、608でより高い優先順位を有する任意のペンディング中のロック要請があるか否かを判定する。例えば、608で指定されたNKVターゲットは、PQを確認(check)してPQでもっと高い優先順位を有する任意のペンディング中のロック要請があるか否かを判定する。そうである場合(はい)、その後、610でロック要請が今後の回収のためにPQに追加される。一方、608でより高い優先順位のペンディング中の要請が存在しない場合(いいえ)、その後、612でオブジェクトのキーがロックされる。この場合、成功応答が要請を行ったクライアント(例えば、NKVクライアント)に伝送され、方法600は終了する。
一実施形態で、610でロック要請がPQに追加されると、その後、614で(例えば、ロック要請がPQに追加された後、適切な時間に)対応するオブジェクトのキーがロック解除されたか否かが判定される。例えば、一実施形態で、指定されたNKVターゲットは、オブジェクトのキーが有効なロック解除コマンドによってロック解除されたか否かを判定するか、又はターゲットコマンドスケジューラは、ロックに対するエポックの期限が切れたか否かを判定する。従って、614でオブジェクトのキーがロック解除されない場合(いいえ)、その後の方法600は、Bで続行され、これは、図6Cを参照して、以下でより詳細に説明する。一方、614でオブジェクトのキーがロック解除された場合(はい)、その後、616でロックコマンドは優先順位のキューから回収され、612でオブジェクトのキーが、ロックコマンドに応じてロックされる。一実施形態で、1つ以上のその次に優先順位が最も高いロックコマンドがリーダーロック(reader lock)である場合、指定されたNKVターゲットは、その次に優先順位が最も高い書き込みのロックコマンドが発生するまで優先順位のキューを介して継続され、全ての前のリーダーのロックコマンドを同時に(例えば、同時に又は実質的に同時に)付与する。この場合、成功応答は、要請を行ったクライアント(例えば、次のロックコマンドを発行するNKVクライアント)に伝送され、方法600は終了する。
図6A及び図6Bを参照すると、604においてロック要請で1つ以上のターゲットノードが指定された場合(はい)、その後、618で(例えば、ハッシュアルゴリズムを使用して)それぞれの指定されたターゲットストレージノードの重みが計算される。例えば、NKVクライアントは、任意の適切なハッシュアルゴリズム(例えば、ランデブーハッシュアルゴリズム)を使用して、それぞれの指定されたターゲットストレージノードに対する重みを計算する。620で、指定されたターゲットのストレージノードの中の最も大きな重みを有する第1のターゲットストレージノードはマスターロックノードとして割り当てられ、他の指定されたターゲットストレージノードはスレーブロックノードとして割り当てられ、622でロックコマンドが、マスターロックノードに伝送される。例えば、NKVクライアントは、ターゲットストレージノードの重みに基づいて、マスターロックノード及びスレーブロックノードを割り当て、ロックがスレーブノードでも維持されるとの要請と共にロックコマンドをマスターロックノードに伝送する。
624でタイムアウトが発生したか否かが判定される。例えば、一実施形態で、NKVクライアントは、マスターロックノードから成功応答を待機し、適切な臨界時間が超過すると、NKVクライアントは、マスターロックノードが衝突(クラッシュ)した(例えば、非応答的)と仮定する。この場合(624ではい)、626でスレーブロックノードの中のその次に最も大きな重みを有する1つがマスターロックノードとして割り当てられる。例えば、NKVクライアントは、指定されたターゲットストレージノードの中のその次に最も大きな重みを有する1つを新たなマスターノードとして割り当てる。622でロックコマンドは、新たなマスターノードに伝送され、624で方法600は、新たなマスターノードがクラッシュしたか否かを判定するために継続される(そうである場合、指定されたターゲットノードの中のその次に最も大きな重みを有する他の新たなマスターノードを割り当てる)。
624でタイムアウトが発生しない場合(いいえ)、その後、628でマスターロックノードは、コマンドをスレーブロックノードに伝送し、630でオブジェクトのキーが、マスターロックノード及びスレーブロックノードのそれぞれでロックされる(例えば、方法600を使用して)。この場合、成功応答は、クライアント(例えば、NKVクライアント)に伝送され、方法600は、終了する。他の実施形態で、マスターロックノードは、上述したようにNKVターゲットノードロックのクォーラムを得る。なお、スレーブノードの失敗が発生した場合、スレーブノードのクォーラム数(例えば、N/2+1)が成功的にロックを獲得することができる限り、成功ロックの表示が返される。
図6A及び図6Cを参照すると、614でオブジェクトのキーがロック解除されない場合、その後、632で有効なロック解除コマンドが受信されたか否かを判定する。例えば、NKVターゲットは、オブジェクトのキーをロックしたNKVクライアントからロック解除コマンドが受信されたか否かを判定する。632で有効なロック解除コマンドが受信されない場合(いいえ)、その後、634でオブジェクトのキーに対するエポックの期限が切れたか否かを判定する。例えば、一実施形態で、634でターゲットコマンドスケジューラ又は次のロック要請は、エポックの期限が切れたか否かを判定する。エポックの有効期限が切れていない場合(634でいいえ)、NKVターゲットは、有効なロック解除コマンドを待機し続ける。
一方、634でエポックが満了した場合、(はい)、636でNKVターゲットは、ロックを行ったNKVクライアントがクラッシュしたと(例えば、非応答的)仮定し、オブジェクトのキーはロック解除される。638で残りのロックコマンドの中の最も高い優先順位を有するその次のロックコマンドがPQから回収され、640でオブジェクトのキーがロックされる。この場合、成功応答は、要請を行ったクライアント(例えば、次のロックコマンドを発行したNKVクライアント)に伝送され、方法600は、終了する。
従って、本発明の実施形態は、基本的なストレージサービス又はストレージ方法論を提供することで、データの一貫性を保証する均一なロックメカニズムを提供するデータストレージのための向上した方法及びシステムを提供し、それによって開示された実施形態及び互換性のあるオブジェクトのストレージ装置のための設計オプションの範囲を改善し、それに応じてクラスタのターゲット及びクライアントの全体的な性能を向上させる。なお、上述した実施形態のロック方法論の使用は、データの一貫性を保証するために、アプリケーションと共に使用される。
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的思想から逸脱しない範囲内で多様に変更実施することが可能である。
110、120 第1、第2のクライアント
111、121 第1、第2のNKVクライアント
112、122 第1、第2のクラウドストレージクライアント
130 NKVターゲット
131〜135 第1〜第5のNKVターゲット
410、420、430 第1、第2、第3のクラウドストレージクライアント
111、121 第1、第2のNKVクライアント
112、122 第1、第2のクラウドストレージクライアント
130 NKVターゲット
131〜135 第1〜第5のNKVターゲット
410、420、430 第1、第2、第3のクラウドストレージクライアント
Claims (20)
- 1つ以上のネットワークキーバリュー(NKV)クライアント及び1つ以上のNKVターゲットを含むNKVストアにおけるロック(lock)要請を調整する方法であって、
第1のNKVクライアントにより、前記1つ以上のNKVターゲットに格納されたオブジェクトのキーをロックするために通信インターフェースを介してクライアント装置からロック要請を受信する段階と、
前記第1のNKVクライアントにより、前記ロック要請に対応する前記NKVターゲットの中の1つを決定する段階と、
前記第1のNKVクライアントにより、ストレージインターフェースを介して前記ロック要請を前記NKVターゲットの中の1つに伝送する段階と、
前記NKVターゲットの中の1つにより、前記ロック要請の優先順位を決定する段階と、
前記NKVターゲットの中の1つにより、前記優先順位に基づいて前記ロック要請をロックする段階と、を有することを特徴とする方法。 - 前記通信インターフェースは、アプリケーション・プログラミング・インターフェース(API)を含むことを特徴とする請求項1に記載の方法。
- 前記APIは利用可能であり、前記1つ以上のNKVターゲットの大多数が利用可能であることを特徴とする請求項2に記載の方法。
- 前記ストレージインターフェースは、NVMeOF(non−volatile memory express over fabrics)インターフェースを含むことを特徴とする請求項1に記載の方法。
- 前記ロック要請の優先順位を決定する段階は、
前記NKVターゲットの中の1つにより、優先順位のキューを確認する段階と、
前記NKVターゲットの中の1つにより、前記優先順位のキュー内の要請の数に基づいて前記ロック要請の優先順位を決定する段階と、を含むことを特徴とする請求項1に記載の方法。 - 前記NKVターゲットの中の1つにより、前記オブジェクトのキーが既にロックされているか否かを判定する段階と、
前記NKVターゲットの中の1つにより、前記ロック要請を前記優先順位のキューに追加する段階と、を更に含むことを特徴とする請求項5に記載の方法。 - 前記NKVターゲットの中の1つにより、前記オブジェクトのキーがロック解除されているか否かを判定する段階と、
前記NKVターゲットの中の1つにより、前記オブジェクトのキーがロック解除されている場合、前記優先順位のキューから次のロック要請を実行する段階と、を更に含むことを特徴とする請求項6に記載の方法。 - 前記オブジェクトのキーがロック解除されているか否かを判定する段階は、
前記NKVターゲットの中の1つにより、前記オブジェクトのキーをロックした対応するNKVターゲットから有効なロック解除コマンドが受信されているか否かを判定する段階、又は
前記NKVターゲットの中の1つにより、前記オブジェクトのキーに対するエポック(epoch)の期限が切れているか否かを判定する段階、を含み、
前記オブジェクトのキーは、前記有効なロック解除コマンドの受信又は前記期限が切れたエポックに応答してロック解除されることを特徴とする請求項7に記載の方法。 - 前記第1のNKVクライアントにより、ハッシュ(hashing)アルゴリズムを使用して複数の特定のNKVターゲットに対する重みを決定する段階と、
前記第1のNKVクライアントにより、前記複数の特定のNKVターゲットの中から最大の重みを有する前記複数の特定のNKVターゲットの中の1つを識別する段階と、
前記第1のNKVクライアントにより、前記最大の重みを有する前記複数の特定のNKVターゲットの中の1つをマスターロックノードとして割り当てる段階と、
前記第1のNKVクライアントにより、前記複数の特定のNKVターゲットの中から残りの他のものをスレーブロックノードとして割り当てる段階と、を更に含み、
前記ロック要請は、前記複数の特定のNKVターゲットを含み、
前記NKVターゲットの中の1つは、前記マスターロックノードに対応することを特徴とする請求項1に記載の方法。 - 前記ロック要請を前記NKVターゲットの中の1つに伝送する段階は、前記第1のNKVクライアントにより、前記ロック要請を前記マスターロックノードに伝送する段階を含み、
前記ロック要請は、前記スレーブロックノードでもロックが維持される要請を含み、
前記マスターロックノードは、前記ロック要請を前記スレーブロックノードに伝送することを特徴とする請求項9に記載の方法。 - 前記第1のNKVクライアントにより、前記ロック要請を前記マスターロックノードに伝送する段階と、
前記第1のNKVクライアントにより、タイムアウトを決定する段階と、
前記第1のNKVクライアントにより、前記複数の特定のNKVターゲットの中の残りのものからその次に最大の重みを有する前記複数の特定のNKVターゲットの中の他の1つを新たなマスターロックノードとして割り当てる段階と、を更に含み、
前記NKVターゲットの中の1つは、前記新たなマスターロックノードに対応することを特徴とする請求項9に記載の方法。 - コンピュータに下記方法を実行させるための命令語を含む非一時的なコンピュータ読み取り可能な記録媒体であって、
1つ以上のネットワークキーバリュー(NKV)クライアント及び1つ以上のNKVターゲットを含むNVMeOF(non−volatile memory express over fabrics)NKVストアの1つ以上のプロセッサによって前記命令語が実行されると、前記1つ以上のプロセッサは、下記方法を実行させるように制御し、
前記方法は、
前記1つ以上のNKVターゲットに格納されたオブジェクトのキーをロックするために通信インターフェースを介してクライアント装置からロック(lock)要請を受信する段階と、
前記ロック要請に対応する前記NKVターゲットの中の1つを決定する段階と、
ストレージインターフェースを介して前記ロック要請を前記NKVターゲットの中の1つに伝送する段階と、
前記ロック要請の優先順位を決定する段階と、
前記優先順位に基づいて前記ロック要請をロックする段階と、を有することを特徴とする非一時的なコンピュータ読み取り可能な記録媒体。 - 前記通信インターフェースは、アプリケーション・プログラミング・インターフェース(API)を含み、
前記ストレージインターフェースは、NVMeOF(non−volatile memory express over fabrics)インターフェースを含むことを特徴とする請求項12に記載の非一時的なコンピュータ読み取り可能な記録媒体。 - 前記ロック要請の優先順位を決定する段階は、
優先順位のキューを確認する段階と、
前記優先順位のキュー内の要請の数に基づいて前記ロック要請の優先順位を決定する段階と、を含むことを特徴とする請求項12に記載の非一時的なコンピュータ読み取り可能な記録媒体。 - 前記方法は、
前記オブジェクトのキーが既にロックされているか否かを判定する段階と、
前記ロック要請を前記優先順位のキューに追加する段階と、
前記オブジェクトのキーがロック解除されているか否かを判定する段階と、
前記オブジェクトのキーがロック解除されている場合、前記優先順位のキューから次のロック要請を実行する段階と、を更に含むことを特徴とする請求項14に記載の非一時的なコンピュータ読み取り可能な記録媒体。 - 前記オブジェクトのキーがロック解除されているか否かを判定する段階は、
前記オブジェクトのキーをロックした対応するNKVターゲットから有効なロック解除コマンドが受信されているか否かを判定する段階、又は
前記オブジェクトのキーに対するエポック(epoch)の期限が切れているか否かを判定する段階、を含み、
前記オブジェクトのキーは、前記有効なロック解除コマンドの受信又は前記期限が切れたエポックに応答してロック解除されることを特徴とする請求項15に記載の非一時的なコンピュータ読み取り可能な記録媒体。 - 前記方法は、
ハッシュ(hashing)アルゴリズムを使用して複数の特定のNKVターゲットに対する重みを決定する段階と、
前記複数の特定のNKVターゲットの中から最大の重みを有する前記複数の特定のNKVターゲットの中の1つを識別する段階と、
前記最大の重みを有する前記複数の特定のNKVターゲットの中の1つをマスターロックノードとして割り当てる段階と、
前記複数の特定のNKVターゲットの中から残りの他のものをスレーブロックノードとして割り当てる段階と、を更に含み、
前記ロック要請は、複数の特定のNKVターゲットを含み、
前記NKVターゲットの中の1つは、前記マスターロックノードに対応することを特徴とする請求項12に記載の非一時的なコンピュータ読み取り可能な記録媒体。 - 前記ロック要請を前記NKVターゲットの中の1つに伝送する段階は、前記ロック要請を前記マスターロックノードに伝送する段階を含み、
前記ロック要請は、前記スレーブロックノードでもロックが維持される要請を含み、
前記マスターロックノードは、前記ロック要請を前記スレーブロックノードに伝送することを特徴とする請求項17に記載の非一時的なコンピュータ読み取り可能な記録媒体。 - 前記方法は、
前記ロック要請を前記マスターロックノードに伝送する段階と、
タイムアウトを決定する段階と、
前記複数の特定のNKVターゲットの中の残りのものからその次に最大の重みを有する前記複数の特定のNKVターゲットの中の他の1つを新たなマスターロックノードとして割り当てる段階と、を更に含み、
前記NKVターゲットの中の1つは、前記新たなマスターロックノードに対応することを特徴とする請求項18に記載の非一時的なコンピュータ読み取り可能な記録媒体。 - 1つ以上のネットワークキーバリュー(NKV)クライアント及び1つ以上のNKVターゲットを含むNKVストアにおけるロック(lock)要請を調整するシステムであって、
第1のNKVクライアントにより、前記1つ以上のNKVターゲットに格納されたオブジェクトのキーをロックするために通信インターフェースを介してクライアント装置からロック要請を受信し、
前記第1のNKVクライアントにより、前記ロック要請に対応する前記NKVターゲットの中の1つを決定し、
前記第1のNKVクライアントにより、ストレージインターフェースを介して前記ロック要請を前記NKVターゲットの中の1つに伝送し、
前記NKVターゲットの中の1つにより、前記ロック要請の優先順位を決定し、
前記NKVターゲットの中の1つにより、前記優先順位に基づいて前記ロック要請をロックするように構成されることを特徴とするシステム。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063007281P | 2020-04-08 | 2020-04-08 | |
US63/007,281 | 2020-04-08 | ||
US16/886,748 US11422716B2 (en) | 2020-04-08 | 2020-05-28 | Systems and method for distributed read/write locking with network key values for storage devices |
US16/886,748 | 2020-05-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021168123A true JP2021168123A (ja) | 2021-10-21 |
Family
ID=74701382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021051588A Pending JP2021168123A (ja) | 2020-04-08 | 2021-03-25 | ストレージ装置のネットワークキーバリューを使用して分散された読み取り/書き込みをロックするシステム及び方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11422716B2 (ja) |
EP (1) | EP3893101A3 (ja) |
JP (1) | JP2021168123A (ja) |
KR (1) | KR20210125410A (ja) |
CN (1) | CN113496732A (ja) |
TW (1) | TW202211065A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113674821B (zh) * | 2021-10-21 | 2022-03-22 | 浙江太美医疗科技股份有限公司 | 网络交互方法、装置、设备和存储介质 |
TWI826137B (zh) * | 2022-11-22 | 2023-12-11 | 宏碁股份有限公司 | 電腦系統、應用於電腦系統的資源分配方法及執行資源分配方法的電腦程式產品 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6598068B1 (en) * | 1996-01-04 | 2003-07-22 | Sun Microsystems, Inc. | Method and apparatus for automatically managing concurrent access to a shared resource in a multi-threaded programming environment |
US7496574B2 (en) | 2003-05-01 | 2009-02-24 | International Business Machines Corporation | Managing locks and transactions |
US7548918B2 (en) | 2004-12-16 | 2009-06-16 | Oracle International Corporation | Techniques for maintaining consistency for different requestors of files in a database management system |
US7627574B2 (en) | 2004-12-16 | 2009-12-01 | Oracle International Corporation | Infrastructure for performing file operations by a database server |
US7634519B2 (en) | 2004-12-17 | 2009-12-15 | International Business Machines Corporation | Bypassing an intermediate synchronization server of a three tiered synchronization system |
US9578130B1 (en) | 2012-06-20 | 2017-02-21 | Amazon Technologies, Inc. | Asynchronous and idempotent distributed lock interfaces |
US9396043B2 (en) | 2013-04-10 | 2016-07-19 | Microsoft Technology Licensing, Llc | Synchronization across applications |
US9817703B1 (en) * | 2013-12-04 | 2017-11-14 | Amazon Technologies, Inc. | Distributed lock management using conditional updates to a distributed key value data store |
US9959308B1 (en) * | 2014-09-29 | 2018-05-01 | Amazon Technologies, Inc. | Non-blocking processing of federated transactions for distributed data partitions |
EP3062260B1 (en) | 2015-02-27 | 2017-05-31 | Sap Se | A method for controlling access to electronic documents using locks |
CN107577678B (zh) | 2016-06-30 | 2021-02-09 | 华为技术有限公司 | 处理数据库事务的方法、客户端和服务器 |
CN107977376B (zh) * | 2016-10-24 | 2020-07-07 | 腾讯科技(深圳)有限公司 | 分布式数据库系统及事务处理方法 |
US10769128B2 (en) * | 2017-01-31 | 2020-09-08 | Salesforce.Com, Inc. | Delegated key-level locking for a transactional multi-version key-value store |
US10180787B2 (en) | 2017-02-09 | 2019-01-15 | International Business Machines Corporation | Dispersed storage write process with lock/persist |
US10572161B2 (en) * | 2017-11-15 | 2020-02-25 | Samsung Electronics Co., Ltd. | Methods to configure and access scalable object stores using KV-SSDs and hybrid backend storage tiers of KV-SSDs, NVMe-SSDs and other flash devices |
-
2020
- 2020-05-28 US US16/886,748 patent/US11422716B2/en active Active
-
2021
- 2021-01-11 KR KR1020210003587A patent/KR20210125410A/ko active Search and Examination
- 2021-01-29 TW TW110103499A patent/TW202211065A/zh unknown
- 2021-02-22 EP EP21158421.4A patent/EP3893101A3/en active Pending
- 2021-03-25 JP JP2021051588A patent/JP2021168123A/ja active Pending
- 2021-04-08 CN CN202110376048.2A patent/CN113496732A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20210318813A1 (en) | 2021-10-14 |
US11422716B2 (en) | 2022-08-23 |
EP3893101A2 (en) | 2021-10-13 |
CN113496732A (zh) | 2021-10-12 |
EP3893101A3 (en) | 2021-12-22 |
TW202211065A (zh) | 2022-03-16 |
KR20210125410A (ko) | 2021-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107771321B (zh) | 数据中心中的恢复 | |
CN106843749B (zh) | 写入请求处理方法、装置及设备 | |
WO2014173364A1 (zh) | 共享资源访问方法和装置 | |
JP2021168123A (ja) | ストレージ装置のネットワークキーバリューを使用して分散された読み取り/書き込みをロックするシステム及び方法 | |
CN111897666B (zh) | 用于多进程之间通信的方法、设备及系统 | |
CN111324425B (zh) | 一种数据访问方法、装置、设备及存储介质 | |
CN104854845B (zh) | 使用高效的原子操作的方法和装置 | |
JP2023541298A (ja) | トランザクション処理方法、システム、装置、機器、及びプログラム | |
WO2006120225A2 (en) | Dumping data in processing systems to a shared storage | |
US20130138614A1 (en) | Two-phase data locking transaction processing with distributed partitions and mirroring | |
CN105302489A (zh) | 一种异构多核远程嵌入式存储器系统与方法 | |
CN111737063B (zh) | 双控脑裂的磁盘锁仲裁方法、装置、设备及介质 | |
CN116501506B (zh) | 一种资源轮询仲裁方法、装置、介质及计算设备 | |
CN110309224B (zh) | 一种数据复制方法及装置 | |
CN110659303A (zh) | 一种数据库节点的读写控制方法及装置 | |
EP4170503A1 (en) | Data reading method, data writing method, device, and system | |
JP2006523877A (ja) | ストレージ・クラスタの構成における低オーバーヘッドのロッキング | |
CN107870877B (zh) | 用于在存储系统中管理数据访问的方法和系统 | |
CN101523352A (zh) | 用于并发控制的持久锁/资源 | |
US7568121B2 (en) | Recovery from failure in data storage systems | |
CN115202884B (zh) | 基于轮询的高性能系统的加解读写锁的方法及应用 | |
CN109947572B (zh) | 通信控制方法、装置、电子设备及存储介质 | |
Liu et al. | Telepathy: A Lightweight Silent Data Access Protocol for NVRAM+ RDMA Enabled Distributed Storage | |
CN112463316A (zh) | 一种任务处理方法、系统、设备及计算机可读存储介质 | |
CN118132286A (zh) | 用于多进程之间通信的方法、设备及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240213 |