JP2019128959A - Key-value data reliability system, data storage method therefor, and non-transitory computer-readable medium including computer code implementing that method - Google Patents

Key-value data reliability system, data storage method therefor, and non-transitory computer-readable medium including computer code implementing that method Download PDF

Info

Publication number
JP2019128959A
JP2019128959A JP2019006709A JP2019006709A JP2019128959A JP 2019128959 A JP2019128959 A JP 2019128959A JP 2019006709 A JP2019006709 A JP 2019006709A JP 2019006709 A JP2019006709 A JP 2019006709A JP 2019128959 A JP2019128959 A JP 2019128959A
Authority
JP
Japan
Prior art keywords
value
objects
storage devices
data
key
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
JP2019006709A
Other languages
Japanese (ja)
Other versions
JP7171452B2 (en
JP2019128959A5 (en
Inventor
ピチュマニ,レクハ
Pitchumani Rekha
亮 ソク 奇
Yang Seok Ki
亮 ソク 奇
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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
Priority claimed from US15/876,028 external-priority patent/US10795760B2/en
Priority claimed from US15/967,302 external-priority patent/US10552062B2/en
Priority claimed from US16/165,655 external-priority patent/US11275762B2/en
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2019128959A publication Critical patent/JP2019128959A/en
Publication of JP2019128959A5 publication Critical patent/JP2019128959A5/ja
Application granted granted Critical
Publication of JP7171452B2 publication Critical patent/JP7171452B2/en
Active 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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/061Improving I/O performance
    • 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
    • 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
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/0653Monitoring storage devices or systems
    • 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/0662Virtualisation aspects
    • 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/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

To provide a method of storing data in a key-value reliability system including N storage devices, where N is an integer, grouped into a reliability group as a single logical unit and managed by a virtual device management layer.SOLUTION: A method of storing data in a key-value reliability system including N storage devices, where N is an integer, grouped into a reliability group as a single logical unit and managed by a virtual device management layer includes determining whether the data meets a threshold corresponding to a reliability mechanism for storing the data, selecting the reliability mechanism when the data satisfies the threshold, and storing the data according to the selected reliability mechanism.SELECTED DRAWING: Figure 1

Description

本発明に係る開示(以下、単に本発明ともいう)は、一般的にデータストレージシステムに係り、さらに詳細には複数のキーバリューストレージ装置を含むキーバリュー信頼性システムにキーバリューデータを高信頼度の格納ができる信頼性メカニズムを選択する方法に係る。   The disclosure according to the present invention (hereinafter also simply referred to as “the present invention”) generally relates to a data storage system, and more particularly, to a key value reliability system including a plurality of key value storage devices. It is related with the method of selecting the reliability mechanism which can store.

消去コーディング(erasure coding)のようなデータ信頼性メカニズム(data reliability mechanisms)は、複数のストレージ装置を含む多様な設備でストレージ装置の故障及び‘データ汚染’(data corruptions)によるデータ損失を解決するのに使用できる。   Data reliability mechanisms such as erasure coding solve data loss due to storage device failure and 'data corruptions' in various facilities including multiple storage devices. Can be used for

従来のソリッドステートドライブ(SSD;solid state drives)は一般的にブロックインタフェイス(block interface)のみを使用し、RAID(redundant array of independent disks)方式を通じ、消去コーディング(erasure coding)又は複製(replication)を用いてデータ信頼性を提供できる。
客体フォーマットのサイズが多様になり、且つ構造化されない(unstructured)ので、客体とブロック間レベルのインタフェイスにおいて効率的なデータ変換(data conversion)が要求されている。さらに、スペース効率性及び高速アクセス時間特性を維持しながら、データ信頼性を確保する必要がある。
Conventional solid state drives (SSDs) generally use only a block interface, and through erasure array of independent disks (RAID), erase coding or replication Can provide data reliability.
Since the object formats have various sizes and are not structured, efficient data conversion is required at the object-block level interface. Furthermore, there is a need to ensure data reliability while maintaining space efficiency and fast access time characteristics.

RAIDのような技法は従来のブロックストレージ装置に対して広く研究されている。しかし、比較的新しいキーバリューストレージ装置は従来のブロック装置と異なるインタフェイス及び異なるストレージセマンティクス(storage semantics)を有する。従って、多様な新しいキーバリューストレージ装置(key−value storage device)にとり、キーバリューデータ及びキーバリューストレージ装置向けに特注されるか、又は特別に採用された新しいデータ信頼性技法が役立つ潜在的な可能性がある。   Techniques such as RAID are widely studied for conventional block storage devices. However, relatively new key-value storage devices have different interfaces and different storage semantics than conventional block devices. Therefore, for a variety of new key-value storage devices, potential new data reliability techniques that are custom-made or specifically adopted for key-value data and key-value storage devices may be useful There is sex.

米国特許第9,594,633号公報U.S. Patent No. 9,594,633 米国特許第9,639,268号公報U.S. Patent No. 9,639,268

本発明の目的は単一の論理ユニットとして1つの信頼性グループにグループ化され、仮想装置管理レイヤによって管理されるN(但し、Nは整数)個のストレージ装置を含むキーバリュー信頼性システムのデータ格納方法を提供することにある。   An object of the present invention is data of a key-value reliability system including N (where N is an integer) storage devices grouped into one reliability group as a single logical unit and managed by a virtual device management layer It is to provide a storage method.

本発明に係る実施形態は、その信頼性メカニズムが、仮想装置管理レイヤが故障したメモリ装置に存在する全てのキーを復旧し、新しいメモリ装置にコピーできるようにする単一キー復旧手続を各々遂行できるので、本文で記載された実施形態はメモリストレージ分野における改善に貢献できる。   Embodiments in accordance with the present invention each perform a single key recovery procedure that allows the reliability mechanism to recover all keys present in the failed memory device and allow the virtual device management layer to copy to the new memory device. As it can, the embodiments described herein can contribute to improvements in the memory storage field.

(1) 本発明の実施形態によれば、単一の論理ユニットとして1つの信頼性グループにグループ化され、仮想装置管理レイヤによって管理されるN(但し、Nは整数)個のストレージ装置を含むキーバリュー信頼性システムのデータ格納方法が提供される。
前記方法は前記データが前記データを格納するための信頼性メカニズムに対応する閾値を満足するか否かを決定する段階、前記閾値を前記データが満足した場合、前記信頼性メカニズムを選択する段階、及び前記選択された信頼性メカニズムに応じて前記データを格納する段階を含む。
(1) According to an embodiment of the present invention, it includes N (where N is an integer) storage devices grouped into one reliability group as a single logical unit and managed by the virtual device management layer A data storage method of a key-value reliability system is provided.
The method determining whether the data satisfies a threshold corresponding to a reliability mechanism for storing the data, selecting the reliability mechanism if the data is satisfied the threshold; And storing the data in response to the selected reliability mechanism.

(2) 前記閾値は前記データの客体サイズ、前記データの処理能力考慮(throughput consideration)、前記データの読出し/書込み温度(read/write temperature)(即ち、読出し/書込み頻度)、及び前記N個のストレージ装置の基本(underlying)消去コーディング能力の中で1つ又はそれ以上に基づく。
(3) 前記方法は1つ又はそれ以上のブルームフィルタ又はキャッシュを使用して前記信頼性メカニズムに対する前記データをテストする段階をさらに含む。
(4) 前記選択された信頼性メカニズム、前記データを格納する前記N個のストレージ装置の各々に対する1つ又はそれ以上のチェックサム、前記データを格納する前記N個のストレージ装置の各々に格納された前記データのバリュー客体のサイズ、及び前記N個のストレージ装置の中でどこに前記データが格納されているのかを示す前記N個のストレージ装置のパリティグループメンバーの位置を記録するためのメタデータを前記データに対応するキーと共に挿入する段階をさらに含む。
(5) 前記選択された信頼性メカニズムは客体複製を含み、前記データを格納する段階はKVバリューを選択する段階、前記選択されたKVバリューに対応するキーをハッシングするためのハッシュを計算する段階、前記KVバリューに対応するキー客体のレプリカを格納するために前記N個のストレージ装置の中でストレージ装置の部分集合を決定する段階、及び同一の使用者キー名の下で、前記決定されたストレージ装置の部分集合内の各々に前記KVバリューに対応するアップデートされたバリューを書込む段階を含む。
(2) The threshold may be an object size of the data, a throughput consideration of the data, a read / write temperature of the data (i.e., a read / write frequency), and the N Based on one or more of the storage device's underlying erasure coding capabilities.
(3) The method further includes testing the data against the reliability mechanism using one or more Bloom filters or caches.
(4) The selected reliability mechanism, one or more checksums for each of the N storage devices storing the data, stored in each of the N storage devices storing the data Metadata for recording the size of the value object of the data and the position of the parity group member of the N storage devices indicating where the data is stored in the N storage devices. The method may further include inserting with the key corresponding to the data.
(5) The selected reliability mechanism includes object replication, and storing the data includes selecting a KV value, and calculating a hash for hashing a key corresponding to the selected KV value. Determining a subset of storage devices among the N storage devices to store a replica of the key object corresponding to the KV value, and under the same user key name Writing the updated value corresponding to the KV value into each of the storage device subsets.

(6) 前記選択された信頼性メカニズムはパッキング(packing)を含み、前記データを格納する段階は前記グループ化されてなる信頼性グループの前記N個のストレージ装置の中でk(但し、kは整数)個のストレージ装置に格納されたk個のキー客体を選択する段階、前記k個のキー客体に対応するk個のバリュー客体を回収する段階、前記k個のバリュー客体全部の仮想サイズが同一になるように、前記k個のバリュー客体の中で最大のバリューサイズを有しないバリュー客体の終端に仮想ゼロをパディングする段階、前記k個のキー客体からr(但し、rは整数)個のパリティ客体を生成する段階、前記k個のキー客体を前記k個のストレージ装置に書込む段階、及び前記r個のパリティ客体を前記N個のストレージ装置の中でr個のストレージ装置に書込む段階を含み、前記r個のストレージ装置の各々は前記k個のストレージ装置と峻別され(distinct)、但し、k+r=Nである。 (6) The selected reliability mechanism includes packing, and the step of storing the data is performed by selecting k among the N storage devices of the grouped reliability group, where k is Selecting k key objects stored in an integer number of storage devices, collecting k value objects corresponding to the k key objects, a virtual size of all the k value objects being Padding virtual zero to the end of the value object that does not have the maximum value size among the k value objects, so that r (where r is an integer) from the k key objects Generating parity objects of the plurality of storage devices, writing the k key objects to the k storage devices, and generating the r parity objects of the N storage devices. In comprising the step of writing to the r storage device, wherein each of r pieces of storage device is distinguished as the k-number of the storage device (distinct), provided that k + r = N.

(7) 前記選択された信頼性メカニズムは伝統的な(traditional)消去コーディングを使用するパッキングを含み、前記N個のストレージ装置は伝統的な(k、r)MDS(maximum distance separable)消去コーディングで構成される。
(8) 前記選択された信頼性メカニズムは再生成消去コーディングを使用するパッキングを含み、前記N個のストレージ装置は(k、r、d)再生成消去コーディングで構成される。
(7) The selected reliability mechanism includes packing using a traditional erasure coding, and the N storage devices have a traditional (k, r) maximum distance separate (MDS) erasure coding. Configured
(8) The selected reliability mechanism includes packing using regeneration erasure coding, and the N storage devices are configured with (k, r, d) regeneration erasure coding.

(9) 前記選択された信頼性メカニズムはスプリッティングを含み、前記データを格納する段階はKVバリューを選択する段階、前記KVバリューをk(但し、kは整数)個の同一サイズの客体に分割する段階、前記k個の同一サイズの客体からr(但し、rは整数)個のパリティ客体を生成する段階、前記選択されたKVバリューに対応するキーをハッシングするためのハッシュを計算する段階、前記ハッシュに基づいて前記N個のストレージ装置の中で前記KVバリューが位置する主要ストレージ装置を決定する段階、及び前記主要ストレージ装置から始めて連続する順序に前記k個の同一サイズの客体及び前記r個のパリティ客体の各々を前記N個のストレージ装置に書込む段階を含み、但し、k+r=Nである。 (9) The selected reliability mechanism includes splitting, and storing the data comprises selecting a KV value, and dividing the KV value into k (where k is an integer) equal sized objects Generating r (where r is an integer) parity objects from the k equal-sized objects, calculating a hash for hashing a key corresponding to the selected KV value, Determining a main storage device where the KV value is located among the N storage devices based on a hash, and the k equal-sized objects and the r pieces in a sequential order starting from the main storage device Writing each of the N parity objects to the N storage devices, where k + r = N.

(10) 前記選択された信頼性メカニズムは伝統的な消去コーディングを使用するスプリッティングを含み、前記N個のストレージ装置は伝統的な(k、r)MDS(maximum distance separable)消去コーディングで構成される。
(11) 前記選択された信頼性メカニズムは再生成消去コーディングを使用するパッキングを含み、前記N個のストレージ装置は(k、r、d)再生成消去コーディングで構成され、前記データを格納する段階は前記再生成消去コーディングを使用して前記k個の同一サイズのバリュー客体をm(但し、mは整数)個のサブパケットに分割する段階、及び前記r個のパリティ客体の各々をm個のパリティサブパケットに分割する段階をさらに含む。
(10) The selected reliability mechanism includes splitting using traditional erasure coding, and the N storage devices are configured with traditional (k, r) maximum distance separate (MDS) erasure coding. .
(11) The selected reliability mechanism includes packing using regenerative erasure coding, and the N storage devices are configured with (k, r, d) regenerative erasure coding and storing the data. Divides the k identically sized value objects into m (where m is an integer) subpackets using the regenerative erasure coding, and each of the r parity objects is m The method further includes dividing into parity subpackets.

(12) 本発明の他の実施形態によれば、選択された信頼性メカニズムに基づいてデータを格納するデータ信頼性システムが提供される。前記データ信頼性システムは選択された信頼性メカニズムに基づいてデータを格納するデータ信頼性システムにおいて、テートレスデータ保護を使用して仮想装置として構成されるN(但し、Nは整数)個のストレージ装置、及び前記選択された信頼性メカニズムに応じて、前記N個のストレージ装置を前記仮想装置として管理して前記N個のストレージ装置の中で選択されたストレージ装置にデータを格納するように構成された仮想装置管理レイヤを含み、前記仮想装置管理レイヤは前記データが前記データを格納するための信頼性メカニズムに対応する閾値を満足するか否かを決定し、前記閾値を前記データが満足した場合、前記信頼性メカニズムを選択し、前記選択された信頼性メカニズムに応じて前記データを格納するように構成される。 (12) According to another embodiment of the present invention, there is provided a data reliability system for storing data based on a selected reliability mechanism. The data reliability system is N (where N is an integer) storage configured as a virtual device using dataless data protection in a data reliability system storing data based on a selected reliability mechanism According to the device and the selected reliability mechanism, the N storage devices are managed as the virtual device and configured to store data in a storage device selected among the N storage devices. The virtual device management layer, wherein the virtual device management layer determines whether the data meets a threshold corresponding to a reliability mechanism for storing the data, the threshold being satisfied by the data. If configured, the reliability mechanism is selected to store the data according to the selected reliability mechanism. That.

(13) 前記選択された信頼性メカニズムは客体複製を含み、前記仮想装置管理レイヤはKVバリューを選択し、前記選択されたKVバリューに対応するキーをハッシングするためのハッシュを計算し、前記KVバリューに対応するキー客体のレプリカを格納するために前記N個のストレージ装置の中でストレージ装置の部分集合を決定し、同一の使用者キー名の下で前記決定されたストレージ装置の部分集合内の各々に前記KVバリューに対応するアップデートされたバリューを書込むことによって、前記データを格納するように構成される。
(14) 前記選択された信頼性メカニズムはパッキングを含み、前記仮想装置管理レイヤは前記N個のストレージ装置の中でk(但し、kは整数)個のストレージ装置に格納されたk個のキー客体を選択し、前記k個のキー客体に対応するk個のバリュー客体を回収し、前記k個のバリュー客体全ての仮想バリューサイズが同一になるように、前記k個のバリュー客体の中で最大のバリューサイズを有しないバリュー客体の終端に仮想ゼロをパディングし、前記k個のキー客体からr(但し、rは整数)個のパリティ客体を生成し、前記k個のキー客体を前記k個のストレージ装置に書込み、前記r個のパリティ客体を前記N個のストレージ装置の中でr個のストレージ装置に書込むことによって、前記データを格納するように構成され、前記r個のストレージ装置の各々は前記k個のストレージ装置の各々と峻別され、但し、k+r=Nである。
(13) The selected reliability mechanism includes object replication, and the virtual device management layer selects a KV value, calculates a hash for hashing a key corresponding to the selected KV value, and the KV A subset of storage devices is determined among the N storage devices to store replicas of key objects corresponding to values, and a subset of the determined storage devices is stored under the same user key name. Are each configured to store the data by writing updated values corresponding to the KV values.
(14) The selected reliability mechanism includes packing, and the virtual device management layer includes k keys stored in k (where k is an integer) storage devices among the N storage devices. An object is selected, k value objects corresponding to the k key objects are collected, and the virtual value size of all the k value objects is the same among the k value objects. A virtual zero is padded to the end of the value object that does not have the maximum value size, and r (where r is an integer) parity objects are generated from the k key objects, and the k key objects are defined as the k objects. The storage device is configured to store the data by writing to the storage devices and writing the r parity objects to the r storage devices among the N storage devices. Each of the r storage devices is distinguished from each of the k storage devices, where k + r = N.

(15) 前記選択された信頼性メカニズムはスプリッティングを含み、前記仮想装置管理レイヤはKVバリューを選択し、前記KVバリューをk(但し、kは整数)個の同一サイズのバリュー客体に分割し、前記k個の同一サイズのバリュー客体からr個のパリティ客体を生成し、但し、rは整数、前記選択されたKVバリューに対応するキーをハッシングするためのハッシュを計算し、前記ハッシュに基づいて前記N個のストレージ装置の中で前記KVバリューが位置する主要ストレージ装置を決定し、前記主要ストレージ装置から始めて連続する順序に前記k個の同一サイズのバリュー客体及び前記r個のパリティ客体の各々を前記N個のストレージ装置に書込むことによって、前記データを格納するように構成され、但し、k+r=Nである。
(16) 前記選択された信頼性メカニズムは再生成消去コーディングを使用するスプリッティングを含み、前記N個のストレージ装置は(k、r、d)再生成消去コーディングで構成され、前記仮想装置管理レイヤは前記再生成消去コーディングを使用して前記k個の同一サイズの客体をm(但し、mは整数)個のサブパケットに分割し、前記r個のパリティ客体の各々をm個のパリティサブパケットに分割することによって、前記データを格納するようにさらに構成される。
(15) The selected reliability mechanism includes splitting, the virtual device management layer selects a KV value, and divides the KV value into k (where k is an integer) equal sized value objects, R parity objects are generated from the k same size value objects, where r is an integer, calculates a hash for hashing a key corresponding to the selected KV value, based on the hash A primary storage device in which the KV value is located is determined from among the N storage devices, and each of the k value objects of the same size and the r parity objects is sequentially arranged starting from the primary storage device. Are configured to store the data by writing to the N storage devices, where k + r = N It is.
(16) The selected reliability mechanism includes splitting using regeneration and erasure coding, the N storage devices are configured with (k, r, d) regeneration and erasure coding, and the virtual device management layer is Using the regenerative erasure coding, the k objects of the same size are divided into m (where m is an integer) subpackets, and each of the r parity objects is divided into m parity subpackets. The division is further configured to store the data.

(17) 本発明のその他の実施形態によれば、プロセッサ上で実行される場合、単一の論理ユニットとして1つの信頼性グループにグループ化され、仮想装置管理レイヤによって管理されるN個のストレージ装置を含むキーバリュー信頼性システムにおいてデータを格納する方法を具現するコンピュータコードを含む非一時的なコンピュータ読出し可能である媒体が提供される。前記方法は前記データが前記データを格納するための信頼性メカニズムに対応する閾値を満足するか否かを決定する段階、前記閾値を前記データが満足した場合、前記信頼性メカニズムを選択する段階、及び前記選択された信頼性メカニズムに応じてデータを格納する段階を含む。 (17) According to another embodiment of the present invention, N storages grouped into one reliability group as a single logical unit and managed by the virtual device management layer when executed on a processor A non-transitory computer readable medium comprising computer code embodying a method of storing data in a key-value reliability system comprising the device is provided. The method determining whether the data satisfies a threshold corresponding to a reliability mechanism for storing the data, selecting the reliability mechanism if the data is satisfied the threshold; And storing the data according to the selected reliability mechanism.

(18) 前記選択された信頼性メカニズムは客体複製を含み、前記データを格納する段階はKVバリューを選択する段階、前記選択されたKVバリューに対応するキーをハッシングするためのハッシュを計算する段階、前記KVバリューに対応するキー客体のレプリカを格納するために前記N個のストレージ装置の中でストレージ装置の部分集合を選択する段階、及び同一の使用者キー名の下で、前記KVバリューに対応するアップデートされたバリューを前記決定されたストレージ装置の部分集合内の各々に書込む段階を含む。
(19) 前記選択された信頼性メカニズムはパッキングを含み、前記データを格納する段階は前記信頼性グループの前記N個のストレージ装置の中でk(但し、kは整数)個のストレージ装置に格納されたk個のキー客体を選択する段階、前記k個のキー客体に対応するk個のバリュー客体を回収する段階、前記k個のバリュー客体全ての仮想バリューサイズが同一になるように前記k個のバリュー客体の中で最大のバリューサイズを有しないバリュー客体の終端に仮想ゼロをパディングする段階、前記k個のキー客体からr(但し、rは整数)個のパリティ客体を生成する段階、前記k個のキー客体を前記k個のストレージ装置に書込む段階、及び前記r個のパリティ客体を前記N個のストレージ装置の中でr個のストレージ装置に書込む段階を含み、前記r個のストレージ装置の各々は前記k個のストレージ装置と峻別され、k+r=Nである。
(20) 前記選択された信頼性メカニズムはスプリッティングを含み、前記データを格納する段階はKVバリューを選択する段階、前記KVバリューをk(但し、kは整数)個の同一サイズのバリュー客体に分割する段階、前記k個の同一サイズのバリュー客体からr(但し、rは整数)個のパリティ客体を生成する段階、前記選択されたKVバリューに対応するキーをハッシングするためのハッシュを計算する段階、前記ハッシュに基づいて、前記N個のストレージ装置の中で前記KVバリューが位置する主要ストレージ装置を選択する段階、及び前記主要ストレージ装置から始めて連続した順序に、前記k個の同一サイズのバリュー客体及び前記r個のパリティ客体の各々を前記N個のストレージ装置に書込む段階を含み、k+r=Nである。
(18) The selected reliability mechanism includes object replication, and storing the data includes selecting a KV value, and calculating a hash for hashing a key corresponding to the selected KV value. Selecting a subset of storage devices among the N storage devices to store replicas of key objects corresponding to the KV values, and under the same user key name, to the KV values. Writing the corresponding updated value into each of the determined storage device subsets.
(19) The selected reliability mechanism includes packing, and the step of storing the data is stored in k (where k is an integer) storage devices among the N storage devices of the reliability group. Selecting k key objects, collecting k value objects corresponding to the k key objects, and setting the k value objects such that the virtual value sizes of all the k value objects are the same. Padding virtual zeros at the end of the value objects not having the largest value size among the value objects, generating r (where r is an integer) parity objects from the k key objects, Writing the k key objects to the k storage devices, and writing the r parity objects to r storage devices among the N storage devices. Each of the r storage devices is divided into the k storage devices, and k + r = N.
(20) The selected reliability mechanism includes splitting, and storing the data comprises selecting a KV value, and dividing the KV value into k (where k is an integer) equal sized value objects Generating r (where r is an integer) parity objects from the k equal-sized value objects, and calculating a hash for hashing a key corresponding to the selected KV value. Selecting the primary storage device in which the KV value is located among the N storage devices based on the hash, and the k identically sized values in sequential order starting from the primary storage device. Writing each of the object and the r parity objects into the N storage devices, where k + r = N is there.

本発明の実施形態に係る信頼性メカニズムによれば、仮想装置管理レイヤが故障したメモリ装置に存在する全てのキーを復旧し、新しいメモリ装置にコピーできるようにする単一キー復旧手続を各々遂行できるので、メモリストレージの信頼性を向上させることができる。   According to the reliability mechanism according to the embodiment of the present invention, the virtual device management layer performs each single key recovery procedure, which recovers all keys present in the failed memory device and enables copying to the new memory device. Therefore, the reliability of the memory storage can be improved.

上述された思想及び/又はその他の思想は、添付された図面と組み合わせた以下の実施形態の詳細な記述からさらに明確になり且つ真価が分かるであろう。
本発明の実施形態に係る、選択された信頼性メカニズムに基づいてキーバリューデータを格納するキーバリュー信頼性システムを示すブロック図である。 本発明の実施形態に係る、キーバリューペアのデータのサイズに対応するサイズ閾値に基づいてキーバリュー信頼性システムによって使用される信頼性メカニズムの選択を示す順序図である。 本発明の実施形態に係る、伝統的な消去コーディングを使用するK−客体(k、r)消去コーディング、即ち多重客体“パッキング”の信頼性メカニズムに応じてキーバリューデータを格納するように構成されたKVストレージ装置のグループを示すブロック図である。 本発明の実施形態に係る、伝統的な消去コーディングを使用するK−客体(k、r)消去コーディング、即ち多重客体“パッキング”の信頼性メカニズムに応じるバリュー客体及びパリティ客体の格納を示すブロック図である。 本発明の実施形態に係る、伝統的な消去コーディングを使用する、“単一客体(Single_Object)(k、r)消去コーディング”、即ち“スプリッティング(Splitting)”の信頼性メカニズムに応じてキーバリューデータを格納するように構成されたKVストレージ装置のグループを示すブロック図である。 本発明の実施形態に係る、再生成消去コーディングを使用する、“単一客体(Single_Object)(k、r、d)消去コーディング”、即ち“スプリッティング(Splitting)”の信頼性メカニズムに応じてキーバリューデータを格納するように構成されたKVストレージ装置のグループを示すブロック図である。
The above-described idea and / or other ideas will become clearer and more fully appreciated from the detailed description of the following embodiments in combination with the accompanying drawings.
1 is a block diagram illustrating a key-value reliability system that stores key-value data based on selected reliability mechanisms according to an embodiment of the present invention. FIG. FIG. 6 is a flow chart illustrating selection of a reliability mechanism used by a key-value reliability system based on a size threshold corresponding to the size of data of a key-value pair according to an embodiment of the present invention. According to an embodiment of the present invention, configured to store key-value data according to a reliability mechanism of K-object (k, r) erasure coding using multi-object "packing" using traditional erasure coding. FIG. 7 is a block diagram showing a group of KV storage devices. FIG. 4 is a block diagram illustrating storage of value objects and parity objects according to a reliability mechanism of K-object (k, r) erasure coding using multiple erasure coding, that is, multi-object “packing”, according to an embodiment of the present invention. It is. Key-value data according to the reliability mechanism of “Single Object (k, r) erasure coding”, or “Splitting”, using traditional erasure coding according to an embodiment of the present invention. 2 is a block diagram showing a group of KV storage devices configured to store the. Key value depending on the reliability mechanism of “Single Object (k, r, d) erasure coding”, ie, “Splitting”, using regenerative erasure coding according to an embodiment of the present invention. FIG. 5 is a block diagram illustrating a group of KV storage devices configured to store data.

本発明の多様な特徴及び本発明を達成する方法は添付された図面及び実施形態に対する以下の詳細な記述を参照してさらに詳細に理解されることができる。以下で、実施形態は添付された図面を参照してさらに詳細に記述する。類似な参照番号は全体で類似な構成要素を指す。しかし、本発明が多様な他の形態に具現されることができ、ここに図解した実施形態に制限されることと理解されてはならない。むしろ、このような実施形態は本発明の全般的な理解を助けるための例示として提供され、当業者に本発明の技術的特徴及び様相を十分に伝達できるものである。従って、当業者が本発明の特徴及び様相を完全に理解するのに不必要なプロセス、要素、及び技法は記述しないことがある。異なりに言及されない限り、添付された図面及び記載された詳細な記述の全般に掛けて、類似な参照番号は類似な要素を指称し、それらの記述は繰り返さない。図面で、要素、階層、及び領域の相対的なサイズは明確性のために誇張されることができる。   Various features of the present invention and methods of achieving the same may be understood in more detail with reference to the accompanying drawings and the following detailed description of the embodiments. Embodiments are described in more detail below with reference to the attached drawings. Similar reference numbers generally refer to similar components. However, it should not be understood that the present invention can be embodied in various other forms and is not limited to the embodiments illustrated herein. Rather, such embodiments are provided as an illustration to assist in a general understanding of the invention, and may sufficiently convey the technical features and aspects of the invention to those skilled in the art. Accordingly, processes, elements, and techniques that are not necessary for those skilled in the art to fully understand the features and aspects of the present invention may not be described. Unless otherwise stated, like reference numerals refer to similar elements throughout the attached drawings and the detailed description set forth, and the description thereof will not be repeated. In the drawings, the relative sizes of elements, hierarchies, and regions can be exaggerated for clarity.

多様な実施形態が実施形態及び/又は中間構造の概略図である断面図を参照して本文で記述する。このように、例えば製造技術及び/又は許容誤差の結果として図解された形態からの変形が予想されなければならない。さらに、本文で記載された特定な構造的又は機能的な記述は本発明の思想に係る実施形態を記述するための単純な図解である。即ち、本文に記載された実施形態は領域の特定に図解された形態に制限されることと解釈されてはならなく、例えば製造の結果である形状の偏差を含むべきである。例えば、長方形に図解されたインプラント領域は、伝統的に、インプラントから非インプラント領域への二進変化ではなく、それらのエッジでラウンドされたか、又は曲線の特徴及び/又はインプラント濃度の勾配を有するごとができる。同様に、インプラントによって形成された埋め込み領域は埋め込み領域とインプラントが発生する表面との間の領域で一部のインプラントを惹起することができる。即ち、図面に図解された領域は本質的に概略であり、それらの形状が装置の領域の実際形状を図解することを意図しなく、これを制限することではない。追加的に、当業者が認識することができるように、記載された実施形態は本発明の思想又は範囲から逸脱しなく、多様な他の方式に変形されることができる。   Various embodiments are described herein with reference to cross-section illustrations that are schematic illustrations of embodiments and / or intermediate structures. Thus, for example, variations from the illustrated form as a result of manufacturing techniques and / or tolerances should be expected. Furthermore, the specific structural or functional description given in the text is a simple illustration to describe an embodiment according to the inventive idea. That is, the embodiments described herein should not be construed as being limited to the illustrated form of identifying a region, but should include, for example, shape deviations that are the result of manufacturing. For example, rectangularly illustrated implant regions are traditionally rounded at their edges, rather than binary changes from implants to non-implant regions, or have curved features and / or gradients of implant concentration. Can do. Similarly, the implant area formed by the implant can trigger some implants in the area between the implant area and the surface on which the implant occurs. That is, the areas illustrated in the drawings are essentially schematic and their shape is not intended to illustrate the actual shape of the area of the device, and is not limiting. Additionally, as one of ordinary skill in the art can appreciate, the described embodiments can be modified in various other ways without departing from the spirit or scope of the present invention.

以下の詳細な記述で、説明の便宜及び多様な実施形態の理解を助けるために、多数の特定記述が提供される。しかし、多様な実施形態が詳細な記述無しで又は1つ又はそれ以上の均等な代替物と共に具現されることができる。他の例で、広く公知された構造及び装置は多様な実施形態を不必要に曖昧にしないようにブロック図の形態に図示される。   In the following detailed description, numerous specific details are provided to aid in the convenience of the description and the understanding of the various embodiments. However, various embodiments can be embodied without a detailed description or with one or more equivalent alternatives. In other instances, widely known structures and devices are shown in block diagram form in order not to obscure the various embodiments unnecessarily.

“第1(first)”、“第2(second)”、“第3(third)”等のような用語は多様な要素、構成、領域、階層、及び/又は区域を記述するために本文で使用されるが、このような要素、構成、領域、階層、及び/又は区域はこのような用語に限定されないことがよく理解されるべきである。このような用語は1つの要素、構成、領域、階層、又は区域を他の1つの要素、構成、領域、階層、又は区域から区分するためのみに使用される。即ち、以下で記載される第1要素、構成、領域、階層、又は区域は本発明の思想及び範囲から逸脱しなく、第2要素、構成、領域、階層、又は区域と称されることができる。   Terms such as “first,” “second,” “third,” etc. may be used in the text to describe various elements, configurations, areas, hierarchies, and / or areas. It should be understood that although used, such elements, configurations, areas, hierarchies, and / or areas are not limited to such terms. Such terms are only used to separate one element, configuration, area, hierarchy or area from another element, configuration, area, hierarchy or area. That is, a first element, configuration, region, hierarchy, or area described below may be referred to as a second element, configuration, region, hierarchy, or area without departing from the spirit and scope of the present invention. .

“〜の下(beneath、below、lower、under)”、“〜の上(above、upper)”等のような空間的に相対的な用語(spatially relative terms)は図面で図解された他の1つの要素又は特徴と1つの要素又は特徴との関連性を容易に説明するために本文で使用されることができる。空間的に相対的な用語は図面に図示された指向性に追加的に動作又は使用で装置の他の指向性(orientations)を含むことと意図されることがよく理解される。例えば、図面で装置が裏返されている場合、他の要素又は特徴の“下(below or beneath or under)”として記述した要素は他の要素又は特徴の“上(above)”に向かうことになる。即ち、“下(below、under)”の例示的な用語は上及び下の方向を全て含むことができる。装置が他の方向(例えば、90°回転するか、又は他の方向)を指向することができ、本文で使用される空間的に相対的な記述はこれによって解釈されなければならない。類似に、第1部分が第2部分“上(on)”に整列されたことと記述した場合、これは重力方向に基づいてその上部面に対する限定無しで、第1部分が第2部分の上部面又は下部面に整列されたことを示す。   Spatial relative terms such as “beath, below, lower, under”, “above, upper”, etc. are other ones illustrated in the drawings. It can be used herein to easily describe the association of an element or feature with an element or feature. It is well understood that spatially relative terms are intended to include other orientations of the device in operation or use in addition to the directivity illustrated in the drawings. For example, if a device is flipped in the drawing, an element described as “below or beneath or under” other elements or features will go “above” other elements or features. . That is, the exemplary term “below, under” can include all up and down directions. The device can be oriented in other directions (eg, rotated 90 ° or other directions), and the spatially relative description used in the text should be interpreted accordingly. Similarly, if it is described that the first part is aligned with the second part “on”, this is based on the direction of gravity, with no limitation on its upper surface, and the first part is the upper part of the second part. Indicates that it is aligned to the surface or lower surface.

要素、階層、領域、又は構成が他の要素、階層、領域、又は構成と“連結された(on、connected to、又はcoupled to)”ことと指称される場合、他の要素、階層、領域、又は構成と直接的に(directly)連結させるか、又は1つ又はそれ以上の中間要素、階層、領域、又は構成が存在することができる。しかし、“直接的に連結された”の用語は1つの構成要素が中間構成無しで他の構成要素と直接的に連結されることを指す。一方、“〜間(between、immediately between)”又は“隣接(adjacent to又はdirectly adjacent to)のように構成の間の関係を記述する他の表現は類似に解釈されることができる。追加的に、要素又は階層が2つの要素又は階層の間(between)であることと指称される場合、要素又は構成の間にただ要素又は階層のみが存在するか、又は1つ又はそれ以上の中間要素又は階層がさらに存在することができることと理解されることができる。   When an element, hierarchy, region, or configuration is referred to as "on, connected to, or coupled to" with another element, hierarchy, region, or configuration, the other component, hierarchy, region, or Or, there may be one or more intermediate elements, hierarchies, regions, or configurations that are directly connected to the configuration. However, the term "directly linked" refers to one component being directly linked to another without intermediate construction. On the other hand, other expressions that describe the relationship between constructs, such as "between, immediately between" or "adjacent to or directly adjacent to" can be interpreted similarly. , Where an element or hierarchy is referred to as being between two elements or hierarchies, only an element or hierarchy exists between the elements or configurations, or one or more intermediate elements or It can be understood that more hierarchies can exist.

本文で使用される用語はただ特定な実施形態を記述するための例示的なものであり、本発明がこれに限定されることではない。本文で使用されるように、脈絡で明確に異なりに指称されない限り、単数用語は複数の形態を含むことと意図される。“含む”の用語が詳細な記述で使用される場合、列挙された特徴、整数、段階、動作、要素、及び/又は構成の存在を定義するが、1つ又はそれ以上の他の特徴、整数、段階、動作、要素、構成、及び/又はそれらのグループの存在又は追加を排除しない。本文で使用されるように、“及び/又は”の用語は関連されて列挙された目録の1つ又はそれ以上の全ての組合又は一部を含む。   The terminology used herein is merely illustrative for describing a particular embodiment and is not intended to limit the invention. As used herein, the singular term is intended to include the plural forms unless the context clearly indicates otherwise. When the term "including" is used in the detailed description, it defines the presence of the recited feature, an integer, a step, an action, an element, and / or a configuration, but one or more other features, an integer Does not exclude the presence or addition of steps, acts, elements, configurations, and / or groups thereof. As used herein, the term “and / or” includes any union or part of one or more of the listed listed related.

本文で使用されるように、“実質的な(substantial)”、“約(about、approximately)”の用語及び類似な用語は近似の用語として使用され、程度の用語(terms of degree)として使用されなく、当業者によって認識されることができる測定されるか、又は計算された値で固有な偏差を記述することと意図される。本文で使用される“約(about、approximately)”の用語は言及された値を含み、特定な量の測定と連関された誤差及び問題の測定値(例えば、測定システムの限界)を考慮した、当業者によって決定された特定な値に対する許容可能な偏差内であることを意味する。例えば、“約(about)“は1つ又はそれ以上の標準偏差内であることを、又は言及された値の±30%、20%、10%、5%内であることを意味することができる。本文で使用されるように、“使用(use、using、及びused)”の用語は“活用(utilize、utilizing、及びutilized)”と同意語として看做されることができる。また“例示的な(exemplary)”の用語は“例(example)又は図解(illustration)”を指称することと意図される。   As used herein, the terms "substantial", "about, approximately" and similar terms are used as approximate terms and as terms of degree Rather, it is intended to describe the inherent deviation with measured or calculated values that can be recognized by those skilled in the art. As used herein, the term “about” includes the stated value, taking into account the error associated with the particular amount of measurement and the measurement in question (eg, measurement system limitations), It is meant to be within an acceptable deviation for a particular value determined by one skilled in the art. For example, "about" means within one or more standard deviations, or within ± 30%, 20%, 10%, 5% of the stated value it can. As used herein, the term "use, using, and used" may be considered synonymous with "utilize, utilizing, and utilized". Also, the term “exemplary” is intended to refer to “example or illustration”.

特定な実施形態が異なりに具現される場合、特定なプロセス順序が記載された順序と異なりに遂行されることができる。例えば、2つの連続して記述されたプロセスは実質的に同時に遂行されるか、又は記載された順序と反対の順序に遂行されることができる。   If a particular embodiment is implemented differently, a particular process order may be performed differently than the order described. For example, two consecutively described processes can be performed substantially simultaneously or in an order opposite to the order described.

本文に記載された本発明の実施形態に係る電気又は電子装置及び/又は他の連関された装置又は構成は適切なハードウェア、ファームウェア(例えば、アプリケーション−特定集積回路(ASIC;application−specific integrated circuit)、ソフトウェア、又はソフトウェア、ファームウェア、及びハードウェアの組合を使用して具現されることができる。例えば、このような装置の多様な構成は1つの集積回路(IC;integrated circuit)チップ又は別のICチップに形成されることができる。さらに、このような装置の多様な構成は軟性印刷回路フィルム(flexible printed circuit film)、テープキャリヤーパッケージ(TCP;tape carrier package)、印刷回路基板(PCB;printed circuit board)に具現できるか、又は1つの基板(substrate)上に形成されることができる。さらに、このような装置の多様な構成は本文で記述した多様な機能を遂行するために他のシステム構成と通信し、コンピュータプログラム命令語を実行する、1つ又はそれ以上のコンピューティング装置での、1つ又はそれ以上のプロセッサで駆動するプロセス又はスレッドである。コンピュータプログラム命令語はRAM(random access memory)のような標準メモリ装置を使用するコンピューティング装置に具現されることができるメモリに格納される。コンピュータプログラム命令語は、例えばCD−ROM、フラッシュドライブ等のような他の非一時的なコンピュータ読出し可能な媒体に格納されることができる。また、当業者は本発明の例示的な実施形態の思想及び様相からの逸脱しなく、多様なコンピューティング装置の機能が単一コンピューティング装置に組合又は集積されることができるか、又は特定コンピューティング装置の機能が1つ又はそれ以上の他のコンピューティング装置に分散されることを理解することができる。   The electrical or electronic devices and / or other associated devices or configurations according to embodiments of the invention described herein are suitable hardware, firmware (e.g., application-specific integrated circuit (ASIC), application-specific integrated circuit). , Software, or a combination of software, firmware, and hardware, for example, the various configurations of such devices may be integrated circuits (ICs) chips or other In addition, various configurations of such devices include flexible printed circuit films, tape carrier packages (TCP; ta e carrier package), printed circuit board (PCB) may be embodied, or may be formed on a single substrate In addition, various configurations of such devices are described herein Processes or threads driven by one or more processors in one or more computing devices that communicate with other system configurations and execute computer program instructions to perform the various functions described above The computer program instructions are stored in a memory that can be embodied in a computing device using a standard memory device such as a RAM (Random Access Memory), such as a CD-ROM, It can be stored on other non-transitory computer readable media, such as a rush drive, etc. Also, those skilled in the art will recognize a variety of without departing from the spirit and aspect of the exemplary embodiments of the invention. Understand that the functions of a computing device can be combined or integrated into a single computing device, or that the functions of a particular computing device are distributed to one or more other computing devices Can do.

異なりに定義されない限り、本文で使用される技術的/科学的用語を含む全ての用語は本発明が属する技術分野での当業者によって共通的に理解されることと同一の意味を有する。共用辞書に定義されたことのような用語は連関された技術の脈絡及び/又は本発明の詳細な記述でそれらの意味と一貫された意味を有することと解釈されるべきであり、本文に明示的に定義されない限り、理想的であるか,又はあまりにも形式的な意味に解釈されてはならない。   Unless otherwise defined, all terms including technical / scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in the shared dictionary should be construed as having a meaning consistent with their meaning in the context of the relevant art and / or in the detailed description of the invention, and are explicitly stated in the text Unless otherwise defined, it should not be interpreted as ideal or too formal.

以下で記述するように、本開示発明の実施形態は単一の論理ユニットにグループ化された複数のキーバリュー(KV;key−value)ストレージ装置で構成されたキーバリュー信頼性システム(key−value reliability system)にキーバリューデータを信頼できるように格納する方法を提供する。さらに、本発明の実施形態はドライブを管理し、キーバリュー(KV;key−value)ペアの格納を制御するステートレスハイブリッド信頼性管理者(stateless hybrid reliability manager)を提供する。ステートレスハイブリッド信頼性管理者は、客体複製(Object Replication);K−客体(k、r)消去コーディング−パッキング(K−Object(k、r) erasure coding−Packing);単一客体(k、r)消去コーディング−スプリッティング(Single Object(k、r) erasure coding−Splitting);K−客体(k、r、d)再生成コーディング−パッキング(K−Object(k、r、d) regeneration coding−Packing);単一客体(k、r、d)再生成コーディング−スプリッティング(Single Object(k、r、d) regeneration coding−Splitting)を含む複数のプラグ可能な(pluggable)信頼性メカニズム/技法/具現に依存する。   As described below, embodiments of the disclosed invention are a key-value reliability system (key-value) comprised of multiple key-value (KV) storage devices grouped into a single logical unit. provides a method for storing key-value data in a reliable manner. Furthermore, embodiments of the present invention provide a stateless hybrid reliability manager that manages drives and controls storage of key-value (KV) pairs. The stateless hybrid trust manager is responsible for object replication; K-object (k, r) erasure coding-packing (K-Object (k, r) erasure coding-packing); single object (k, r). Erase coding-Splitting (Single Object (k, r) erasure coding-Splitting); K-Object (k, r, d) Regenerating coding-Packing (K-Object (k, r, d) regeneration coding-Packing); Multiple objects including single object (k, r, d) regenerating coding-splitting (Single Object (k, r, d) regeneration coding-splitting) Depend on the pluggable reliability mechanism / technique / implementation.

複数のプラグ可能な信頼性メカニズムに依存したステートレスハイブリッド信頼性管理者が装置を管理でき、KVペアの格納を制御でき、信頼性メカニズムの選択に対して開示された方法が異なるサイズのKVペアの効率的な格納、回収、及び復旧を確保できるので、記載された実施形態はメモリストレージ(例えば、キーバリューストレージ装置内にキーバリューデータの格納)の性能を向上できる。   A stateless hybrid reliability manager dependent on multiple pluggable reliability mechanisms can manage the device, control the storage of KV pairs, and the disclosed method for selection of reliability mechanisms has different sized KV pairs As efficient storage, retrieval, and recovery can be ensured, the described embodiments can improve the performance of memory storage (eg, storage of key-value data in a key-value storage device).

図1は本発明の実施形態に係る、選択された信頼性メカニズムに基づいてキーバリューデータを格納するキーバリュー信頼性システムを示すブロック図である。   FIG. 1 is a block diagram illustrating a key-value reliability system that stores key-value data based on a selected reliability mechanism according to an embodiment of the present invention.

図1を参照すれば、上述されたように、多様な新しいキーバリュー(KV)「ストレージ装置」{別名、「メモリ装置」「ドライブ」「KV−SSD」}(130)にとり、キーバリューデータ及びKVストレージ装置130向けに特注される(tailored)か、又は特別に採用された新しいデータ信頼性メカニズムが役立つ潛在的な可能性がある。従って、このようなKVストレージ装置130のためのハイブリッドキーバリュー信頼性システムは1つ又はそれ以上のプラグ可能信頼性メカニズム(pluggable reliability mechanisms)に応じてハイブリッド信頼性メカニズムを使用してKVストレージ装置130を管理し、それらにKVペアの格納を制御するステートレスハイブリッド信頼性管理者/仮想装置管理者レイヤ/仮想装置管理レイヤ120を含む。
たとえ、本文に記述されたKVストレージ装置を指すためにSSD(solid−state drives)が一般的に使用されるが、他のストレージ装置が本発明の実施形態に係って使用され得る。本発明の実施形態に係る仮想装置管理レイヤ120のデザイン及び動作は以下で記述される。
Referring to FIG. 1, as described above, key-value data and various other key-value (KV) “storage devices” {alias “memory devices” “drives” “KV-SSD”} (130) New data reliability mechanisms that are tailored or specifically adopted for the KV storage device 130 may be ubiquitous. Thus, a hybrid key-value reliability system for such a KV storage device 130 uses the KV storage device 130 according to one or more pluggable reliability mechanisms. And a stateless hybrid reliability manager / virtual device manager layer / virtual device management layer 120 that controls storage of KV pairs to them.
Even though solid-state drives (SSDs) are commonly used to refer to the KV storage devices described herein, other storage devices may be used in accordance with embodiments of the present invention. The design and operation of virtual device management layer 120 according to an embodiment of the present invention is described below.

現在の実施形態で、仮想装置管理レイヤ120はキーバリュー信頼性システムにキーバリューデータ/KVペア170を信頼性があるように格納する方法を可能にできる。キーバリュー信頼性システムは単一の論理ユニット(single logical unit)にグループ化された複数のKVストレージ装置130を含む。単一の論理ユニットは信頼性グループ140と称される。   In the current embodiment, the virtual device management layer 120 may enable a method for storing the key value data / KV pair 170 reliably in the key value reliability system. The key-value reliability system includes multiple KV storage devices 130 grouped into a single logical unit. A single logical unit is referred to as a reliability group 140.

信頼性グループ140のKVストレージ装置130はキーバリューデータ170に対応する、消去コーディングされたデータ及び/又は複製されたデータの各々のチャンクを格納する。信頼性グループ140のKVストレージ装置130は、キーバリュー動作が仮想装置管理レイヤ120を通じて指向される(be directed to)、見かけ上は単一仮想装置110として露出される。   The KV storage device 130 of the reliability group 140 stores each chunk of erase-coded data and / or replicated data corresponding to the key-value data 170. The KV storage device 130 of the reliability group 140 is apparently exposed as a single virtual device 110 with key-value operations being directed to the virtual device management layer 120.

仮想装置110は仮想装置管理レイヤ120としてステートレスハイブリッド信頼性管理者(stateless hybrid reliability manager)を含む。即ち、仮想装置管理レイヤ120はステートレス方式(即ち、キーバリューと装置との間のマッピングを維持することを必要としない)により動作する。   The virtual device 110 includes a stateless hybrid reliability manager as a virtual device management layer 120. That is, the virtual device management layer 120 operates in a stateless manner (i.e., it is not necessary to maintain the mapping between key values and devices).

従って、仮想装置110はN個のKVストレージ装置130(但し、Nは整数)(例えば、KV−SSD130−1、130−2、130−3、130−4、…、130−N)を通じてキーバリューデータ170を格納し、仮想装置管理レイヤ120を通じてKVストレージ装置130にキーバリューデータ170を格納する。即ち、仮想装置管理レイヤ120はKVストレージ装置130を管理し、それにKVペアを格納することを制御する。   Accordingly, the virtual device 110 has a key value through N KV storage devices 130 (where N is an integer) (for example, KV-SSD 130-1, 130-2, 130-3, 130-4,..., 130-N). Data 170 is stored, and key value data 170 is stored in the KV storage device 130 through the virtual device management layer 120. In other words, the virtual device management layer 120 manages the KV storage device 130 and controls storing KV pairs in it.

他の実施形態で、キーバリュー信頼性システムはキーバリューデータ170のキーと連関されたメタデータ及び/又はデータを選択的に格納して動作速度を向上させるキャッシュをさらに含み得る。信頼性メカニズムはKVペアに対応するメタデータを含むようにKVペアのバリューを添付できる。即ち、キー及びバリューの両方はメタデータ識別子“MetaID”に対応する情報を添付されて、そのKVペアに特有の追加的なメタデータを格納できる。メタデータはチェックサム(checksum)、データを格納するのに使用される信頼性メカニズムを識別するための信頼性メカニズム識別子、消去コード識別子、客体サイズ、パリティグループ番号の位置等を含む。   In another embodiment, the key-value reliability system may further include a cache that selectively stores metadata and / or data associated with keys of the key-value data 170 to improve operation speed. The reliability mechanism can attach the value of the KV pair to include metadata corresponding to the KV pair. That is, both the key and the value can be attached with information corresponding to the metadata identifier “MetaID” to store additional metadata specific to the KV pair. The metadata includes a checksum, a reliability mechanism identifier for identifying a reliability mechanism used to store data, an erasure code identifier, an object size, a position of a parity group number, and the like.

他の実施形態で、キーバリュー信頼性システムは以下で記述する信頼性メカニズムに対応するブルームフィルタ(bloom filters)をさらに含み得る。ブルームフィルタは対応する信頼性メカニズムを使用して格納されたキーを格納でき、それによって、キーバリュー信頼性システムを読出し動作において支援できる。従って、キーバリュー信頼性システムの1つ又はそれ以上のブルームフィルタ又はキャッシュは、現存する信頼性メカニズムに対してキーの速やかなテストを可能にできる。   In other embodiments, the key-value trust system may further include bloom filters that correspond to the trust mechanisms described below. The Bloom filter can store the stored key using a corresponding reliability mechanism, which can support the key-value reliability system in the read operation. Thus, one or more bloom filters or caches of a key-value trust system can allow rapid testing of keys against existing trust mechanisms.

本文で記述する信頼性メカニズムの各々は、KVストレージ装置130の中で対応する1つの数字のキーモジュロ(key modulo)に対する同一のハッシュ関数を使用してキーバリューデータ170に対応するKVペアの第1のコピー又はチャンクを先ず格納できる。即ち、プラグ可能な信頼性メカニズムの各々に対して、信頼性メカニズムは使用者キーと同一のキーを使用して少なくとも第1のコピー/チャンクを格納できる。   Each of the reliability mechanisms described herein uses the same hash function for a single numeric key modulo in the KV storage device 130 using the first hash function corresponding to the key-value data 170. A copy or chunk of can be stored first. That is, for each pluggable trust mechanism, the trust mechanism can store at least the first copy / chunk using the same key as the user key.

上述されたように、本発明の実施形態は複数のKVストレージ装置130にキーバリューデータ170の信頼性ある格納を保障する複数のプラグ可能な信頼性メカニズム(multiple pluggable reliability mechanisms)を提供する。従って、仮想装置管理レイヤ120は信頼性メカニズムを必要とし、信頼性メカニズムの中で何れが使用されるかを決定できる。   As mentioned above, embodiments of the present invention provide multiple pluggable reliability mechanisms that ensure reliable storage of key-value data 170 in multiple KV storage devices 130. Accordingly, the virtual device management layer 120 requires a reliability mechanism and can determine which one is used in the reliability mechanism.

信頼性メカニズムは仮想装置110のセットアップ中に設定されるバリューサイズ閾値(value−size thresholds)、及び/又は、客体読出し/書込み頻度(object read/write frequency)などの政策に基づき得る。従って、仮想装置管理レイヤ120はシステムの指定された政策に基づいて適切な信頼性メカニズムを選択することができる。   The reliability mechanism may be based on policies such as value-size thresholds and / or object read / write frequency set during setup of the virtual device 110. Thus, the virtual device management layer 120 can select an appropriate reliability mechanism based on the specified policies of the system.

本発明の実施形態の5つの信頼性メカニズムに対して、仮想装置管理レイヤ120によって信頼性メカニズムがどのように動作するか、そして信頼性メカニズムが何時適切に使用され、選択されるかを以下で記述する。この5つの信頼性メカニズムは、客体複製(Object Replication)、K客体(k、r)消去コーディング−パッキング(K−Object(k、r) erasure coding−Packing)、単一客体(k、r)消去コーディング−スプリッティング(Single Object(k、r) erasure coding−Splitting)、K客体(k、r、d)再生成コーディング−パッキング(K−Object(k、r、d) regeneration coding−Packing)、及び単一客体(k、r、d)再生成コーディング−スプリッティング(Single Object(k、r、d) regeneration coding−Splitting)と称され得る。   For the five reliability mechanisms of the embodiment of the present invention, how the reliability mechanism operates by the virtual device management layer 120 and when the reliability mechanism is properly used and selected are described below. Describe. These five reliability mechanisms are object replication, K object (k, r) erasure coding-packing (K-Object (k, r) erasure coding-packing), single object (k, r) erasure. Coding-Splitting (Single Object (k, r) erasure coding-Splitting), K Object (k, r, d) Regeneration Coding-Packing (K-Object (k, r, d) regeneration coding-Packing), and Single One object (k, r, d) may be referred to as regenerating coding (single object (k, r, d) regeneration coding).

図2は本発明の実施形態に係る、KVペアのデータのサイズに対応するサイズ閾値に基づいたキーバリュー信頼性システムによって使用される信頼性メカニズムの選択を示す順序図(200)である。   FIG. 2 is a flow diagram (200) illustrating the selection of a reliability mechanism used by a key-value reliability system based on a size threshold corresponding to the size of data of a KV pair according to an embodiment of the present invention.

図2を参照すれば、サイズ閾値に基づいた支援される信頼性メカニズムの全体(例えば、5つの上述された信頼性メカニズム)に対して、仮想装置管理レイヤ120はデータ(例えば、キーバリューデータ170)のバリューサイズを決定でき、バリューサイズが各々の信頼性メカニズムに対応する与えられた閾値(t)より小さいか否かを決定でき、バリューサイズ閾値の要求を満足する第1信頼性メカニズムを選択できる。 Referring to FIG. 2, for an entire supported reliability mechanism based on a size threshold (eg, the five above-described reliability mechanisms), the virtual device management layer 120 has data (eg, key-value data 170). A first reliability mechanism that satisfies the requirement of the value size threshold, and can determine whether the value size of the value size is smaller than a given threshold (t i ) corresponding to each reliability mechanism. It can be selected.

例えば、S210で、仮想装置管理レイヤ120はサイズ閾値基盤の支援されている“n”(nは整数)個の信頼性メカニズムを受信する。S220で、仮想装置管理レイヤ120は1からnの順に1回に1つずつ、信頼性メカニズムの各々を単純に検討する。S230で、支援されるべき信頼性メカニズムの各々の検討で、仮想装置管理レイヤ120はデータのバリューサイズが各々の信頼性メカニズムに対応する閾値tより小さいか否かを決定する。 For example, in S210, the virtual device management layer 120 receives “n” (n is an integer) reliability mechanisms supported on a size threshold basis. At S220, the virtual device management layer 120 simply considers each of the reliability mechanisms, one at a time in the order 1 to n. At S230, at each discussion of the reliability mechanisms to be supported, the virtual device management layer 120 determines whether the value size of the data is smaller than the threshold t i corresponding to each reliability mechanism.

S240で、データのバリューサイズより大きいか、或いは同一である閾値tを有する信頼性メカニズムが発見された場合、仮想装置管理レイヤ120はその信頼性メカニズムの使用を選択する。S250で、S240で使用される信頼性メカニズムが決定されたか、又はS220の最終反複でバリューサイズを満足する適切な閾値tを有する信頼性メカニズムがN個の信頼性メカニズムの中で無いと決定された場合、仮想装置管理レイヤ120は使用されるべき信頼性メカニズムの決定を終了する。 If at S240 a reliability mechanism having a threshold t i greater than or equal to the value size of the data is found, the virtual device management layer 120 chooses to use that reliability mechanism. In S250, determination and reliability mechanisms with appropriate thresholds t i satisfying Reliability mechanisms is determined, or S220 of the value size in the final reaction birefringence used in S240 is not within the N Reliability Mechanism If so, the virtual device management layer 120 ends the determination of the reliability mechanism to be used.

現在の実施形態で、“n”は本文に記載された実施形態の5つの異なる信頼性メカニズムに応じて5に等しい。比較的に非常に小さいキーバリュー(即ち、バリューサイズが比較的小さい場合)に対して、仮想装置管理レイヤ120は客体複製(Object Replication)の信頼性メカニズムの使用を選択する。若干大きいキーバリューに対して、仮想装置管理レイヤ120はパッキング、そしてその次に、スプリッティング(Splitting)(例えば、順に)の信頼性メカニズムを選択する一方、各々に対して伝統的な消去コーディングを使用する。しかし、さらに大きいキーバリューに対して、仮想装置管理レイヤ120はパッキング、その次にスプリッティング(Splitting)を選択する一方、伝統的な消去コーディングの代わりに再生成消去コーディング(regeneration erasure coding)を使用する。   In the current embodiment, “n” is equal to 5 depending on the five different reliability mechanisms of the embodiments described herein. For relatively small key values (i.e., relatively small value sizes), the virtual device management layer 120 chooses to use the Object Replication reliability mechanism. For slightly larger key values, the virtual device management layer 120 chooses the reliability mechanism for packing and then splitting (eg, in order), while using traditional erasure coding for each To do. However, for larger key values, the virtual device management layer 120 selects packing and then splitting, while using regeneration erasure coding instead of traditional erasure coding. .

本発明の実施形態で、使用のための信頼性メカニズムの選択は、客体の客体サイズ、客体に対する処理能力要求条件、対応するキーバリューペアの読出し/書込み温度(read/write temperature)、即ち読出し/書込み頻度、複数のKVストレージ装置の基本8underlying)コーディング能力、及び/又はキーがホットであるか、又はコールドであるかに対する検出の中で1つ又はそれ以上に基づき得る。例えば、“ホット(hot)”キーは、それらのバリューサイズに拘わらず、客体複製(Object Replication)の信頼性メカニズムを使用する反面に、“コールド(cold)”キーはそれらのバリューサイズに応じて消去コーディング方式の信頼性メカニズムの中で1つに適用される。他の実施形態として、客体複製(Object Replication)の信頼性メカニズムを使用するか否かに対する決定はサイズ及び読出し/書込み温度の両方に基づき得る。従って、客体読出し/書込み温度、即ち客体読出し/書込み頻度に対応する閾値が、図2の順序図200でサイズに対応する閾値の代わりに、信頼性メカニズムを決定するのに使用され得る。   In an embodiment of the present invention, the selection of a reliability mechanism for use includes object size, processing capacity requirement for the object, read / write temperature of the corresponding key-value pair, ie read / write temperature. It may be based on one or more of write frequency, basic 8 underlying of multiple KV storage devices, and / or detection of whether the key is hot or cold. For example, while "hot" keys use the object replication reliability mechanism regardless of their value size, "cold" keys depend on their value size. One of the reliability mechanisms of the erasure coding scheme is applied. In another embodiment, the decision on whether or not to use an object replication reliability mechanism may be based on both size and read / write temperature. Thus, the object read / write temperature, ie, the threshold corresponding to the object read / write frequency, may be used to determine the reliability mechanism instead of the threshold corresponding to the size in the sequence diagram 200 of FIG.

5つの信頼性メカニズムの各々の動作は以下で記述する。   The operation of each of the five reliability mechanisms is described below.

図1を再び参照すれば、以前に言及されたように、KVペアのバリューサイズが比較的小さい場合、“客体複製(Object Replication)”の信頼性メカニズムが仮想装置管理レイヤ120による選択として適切である。客体複製(Object Replication)は客体毎(例えば、キーバリューデータ/KVペア170毎)に適用される。客体複製(Object Replication)の信頼性メカニズムは、高いストレージオーバヘッド(storage overhead)を有するが、読出し及び復旧費用が低いので、非常に小さいバリューサイズに対して適切である。   Referring back to FIG. 1, as previously mentioned, when the value size of the KV pair is relatively small, the reliability mechanism of “Object Replication” is appropriate as a choice by the virtual device management layer 120 is there. Object replication is applied to each object (eg, each key value data / KV pair 170). The reliability mechanism of Object Replication has high storage overhead but is suitable for very small value sizes because of the low read and recovery costs.

客体複製(Object Replication)の信頼性メカニズムは頻繁なアップデートを有するキーバリュー(例えば、キーバリューデータ170)に対しても適切であり、従って読出し及び書込み頻度に基づいて選択される。   The object replication reliability mechanism is also appropriate for key-values with frequent updates (eg, key-value data 170) and is therefore selected based on read and write frequencies.

客体複製(Object Replication)の間に、書込みが発生する毎に、キーバリューデータ170は1つ又はそれ以上の追加的なKVストレージ装置130に複製される。キーバリューデータ170の主要コピー(primary copy)はキーモジュロ(N)のハッシュによって指定されたKVストレージ装置130の中の1つに配置される。キーバリューデータ170の主要コピーのレプリカ(複製、replicas)は循環的な方式により、順次連続したKVストレージ装置130、又は直接隣接する(immediately adjacent)KVストレージ装置130に配置される。   Each time writing occurs during object replication, the key value data 170 is replicated to one or more additional KV storage devices 130. A primary copy of the key-value data 170 is placed in one of the KV storage devices 130 designated by a key modulo (N) hash. Replicas (replicas) of the main copy of the key-value data 170 are arranged in a sequential manner on the KV storage apparatus 130 or immediately adjacent KV storage apparatus 130 in a cyclic manner.

仮想装置管理レイヤ120又は使用者はキーバリューデータ170のコピーをどのぐらい多く生成するかを決定する。例えば、仮想装置管理レイヤ120を使用する分散されたシステムは3ウェイ複製(3−way replication)を選択し、3ウェイ複製を既定方式に(default)設定できる。しかし、システムの使用者は客体のレプリカの数を選択された規定値(default)より多く或いは少なく構成することができる。   The virtual device management layer 120 or the user determines how many copies of the key value data 170 are to be generated. For example, a distributed system using the virtual device management layer 120 can select 3-way replication and set 3-way replication as a default. However, the user of the system can configure the number of object replicas to be greater or less than a selected default.

従って、例えば、3ウェイ複製が使用され、主要(primary)KVストレージ装置130−2がデータ(例えば、キーバリューデータ170)の主要コピーを含む場合、仮想装置管理レイヤ120はデータの主要コピーのレプリカを後続複製KVストレージ装置130−3、130−4に格納し、データの全てのコピーは同一である。即ち、データのコピーはデータの主要コピーを含むKVストレージ装置130−2に後続する2つの(又はそれ以上の)直接後続するKVストレージ装置130−3、130−4(例えば、循環的方式により)に格納される。   Thus, for example, if 3-way replication is used and the primary KV storage device 130-2 contains a primary copy of data (eg, key-value data 170), then the virtual device management layer 120 will be a replica of the primary copy of the data Are stored in the subsequent replica KV storage devices 130-3 and 130-4, and all copies of the data are the same. That is, two (or more) direct following KV storage devices 130-3, 130-4 (eg, in a cyclic fashion) that follow the KV storage device 130-2 that contains the primary copy of the data. Stored in

データのコピーは複製KVストレージ装置130−3、130−4において、主要KVストレージ装置130−2と同一のキー名(keyname)/同一の使用者キー(user key)下で格納される。データの全てのコピーは複製されたキーバリューデータ170を識別するための識別子及びチェックサムを含む。   A copy of the data is stored in the duplicate KV storage devices 130-3 and 130-4 under the same keyname / same user key as the main KV storage device 130-2. Every copy of the data includes an identifier and a checksum to identify the replicated key value data 170.

従って、特定のKVストレージ装置130が故障している場合(例えば、KVストレージ装置130−3が故障している場合)、故障しているKVストレージ装置130−3の直接前後のKVストレージ装置130(例えば、KVストレージ装置130−3の直接前後のKVストレージ装置130−2、130−4)に対してキー名に関して復旧メカニズム(recovery mechanism)を使用してバリューを復旧することによって、複製されたキーが復旧されることを保障する。   Therefore, when a specific KV storage device 130 has failed (for example, when the KV storage device 130-3 has failed), the KV storage devices 130 immediately before and after the failed KV storage device 130-3 ( For example, the KV storage device 130-3, 130-4, 130-4) directly before and after the KV storage device 130-3) recovers the value by using a recovery mechanism for the key name, thereby reproducing the duplicated key. Ensure that they are restored.

客体複製(Object Replication)の信頼性メカニズムを要約すれば、仮想装置管理レイヤ120はキーバリューデータ170を受信し、キー客体をハッシングしてキー客体のレプリカを格納するのに使用されるKVストレージ装置130を決定する。仮想装置管理レイヤ120は、以後に、同一の使用者キー名(例えば、適切なMetaIDフィールド)の下で、アップデートされたバリューを選択されたKVストレージ装置130(例えば、選択されたKVストレージ装置130−2、130−3、130−4)に書込む。   In summary of the object replication reliability mechanism, the virtual device management layer 120 receives key-value data 170, and KV storage device used to hash key objects and store key object replicas. 130 is determined. The virtual device management layer 120 subsequently selects the updated KV storage device 130 (eg, selected KV storage device 130) under the same user key name (eg, appropriate MetaID field). -2, 130-3, 130-4).

図3は本発明の実施形態に係る、伝統的な消去コーディング(traditional erasure coding)を使用するK−客体(k、r)消去コーディング(K−Object(k、r) erasure coding)又は多重客体“パッキング”(multiple object “Packing”)の信頼性メカニズムに応じてキーバリューデータを格納するように構成されたKVストレージ装置のグループを示すブロック図である。   FIG. 3 shows K-object (k, r) erasure coding (K-Object (k, r) erasure coding) or multi-object “, using traditional erasure coding according to an embodiment of the present invention FIG. 6 is a block diagram illustrating a group of KV storage devices configured to store key-value data according to a reliability mechanism of “multiple object“ Packing ”.

図3を参照すれば、伝統的な消去コーディングを使用するパッキングの信頼性メカニズムは、チャンクに分割されることが(例えば、より良いデータ処理能力(throughput)を得るために)適切ではない小さいバリューサイズを有するデータに対して選択される。例えば、伝統的な消去コーディングを使用するパッキングの信頼性メカニズムは、以前に記述された客体複製(Object Replication)の信頼性メカニズムの選択に帰着したバリューサイズよりは大きいバリューサイズ(しかし、依然として比較的小さい)を有するデータに対して仮想装置管理レイヤ120によって選択される。   Referring to FIG. 3, the packing reliability mechanism using traditional erasure coding is a small value that is not suitable to be divided into chunks (e.g. to get better data throughput) Selected for data having a size. For example, a packing reliability mechanism that uses traditional erasure coding is a larger value size (but still relatively smaller than the value size that results in the choice of the Object Replication reliability mechanism described previously. Selected by the virtual device management layer 120.

伝統的な消去コーディングを使用するパッキングは伝統的な(k、r)MDS(maximum distance separable)消去コーディングでもって構成され、体系的なMDSコード(systemic MDS code)と共に使用される。例として、該消去コードは基本的に(by_default)、(4、2)リードソロモンコード(Reed−Solomon Code)であり、その理由は、(4、2)リードソロモンコードが比較的広く研究されており、それに対応する高速具現ライブラリが容易に利用可能であるからである。   Packing using traditional erasure coding is configured with traditional (k, r) MDS (maximum distance separable) erasure coding and used with systematic MDS code. For example, the erasure code is basically (by_default), (4, 2) Reed-Solomon code (Reed-Solomon Code) because (4, 2) Reed-Solomon code has been studied relatively widely. The reason is that the corresponding high speed implementation library is easily available.

伝統的な消去コーディングを使用するパッキングの信頼性メカニズムを使用することで、同一のパリティグループ/消去コードグループ340を形成するN個の相異なるKVストレージ装置330−1、・・・、330−Nの一部であるk個の相異なるKVストレージ装置330のキューからのk個のキー/キー客体350が選択され、消去コーディングされてパッキングされる(kは整数である)。   By using a packing reliability mechanism using traditional erasure coding, N different KV storage devices 330-1,..., 330-N that form the same parity group / erasure code group 340. The k key / key objects 350 from the queue of k different KV storage devices 330 that are a part of are selected, erasure coded and packed (k is an integer).

例えば、仮想装置管理レイヤ120は各KVストレージ装置330(例えば、図1の信頼性グループ140の各KVストレージ装置130)に対して最近に書込まれたキー客体350のバッファを維持して、仮想装置管理レイヤ120がk個の相異なるKVストレージ装置からk個のキー客体350を選択して消去コーディングの実行を可能にし、これによってKVペアに対応するk個のキー客体350をパッキングする。   For example, the virtual device management layer 120 may maintain a buffer of key objects 350 recently written to each KV storage device 330 (eg, each KV storage device 130 of the reliability group 140 of FIG. 1) The device management layer 120 selects k key objects 350 from k different KV storage devices to enable execution of erasure coding, thereby packing k key objects 350 corresponding to KV pairs.

現在の実施形態で、仮想装置管理レイヤ120は4つの異なるKVストレージ装置330−1、330−3、330−4、330−Nから各々4つのキー客体350x、350y、350b、350cを選択する(現在の実施形態で、k=4)。   In the current embodiment, the virtual device management layer 120 selects four key objects 350x, 350y, 350b, 350c from four different KV storage devices 330-1, 330-3, 330-4, 330-N, respectively ( In the current embodiment, k = 4).

図4は本発明の実施形態に係る、伝統的な消去コーディングを使用するK−客体(k、r)消去コーディング、又は多重客体“パッキング”の信頼性メカニズムに応じるバリュー客体及びパリティ客体の格納を示すブロック図である。   FIG. 4 illustrates the storage of value objects and parity objects according to the reliability mechanism of K-object (k, r) erasure coding, or multi-object “packing” using traditional erasure coding according to an embodiment of the present invention. It is a block diagram shown.

図3及び図4を参照すれば、キー客体350は「キーモジュロnのハッシュ」番目のKVストレージ装置330に位置される。即ち、各キー客体350に対してキーモジュロnの各々のハッシュが遂行されて、その特定のKVストレージ装置330のキューに伝送される。現在の実施形態で、第iキー(Key)350−iはハッシュされ、KV−SSD1(330−1)に位置され、第jキー(Key)350−jはハッシュされ、KV−SSD2(330−2)に位置され、第kキー(Key)350−kはハッシュされ、KV−SSD4(330−4)に位置される。 Referring to FIGS. 3 and 4, the key object 350 is positioned in the “key modulo n hash” th KV storage device 330. That is, the hash of each key modulo n is performed for each key object 350 and transmitted to the queue of that particular KV storage device 330. In the current embodiment, the i-th key (Key i ) 350-i is hashed and located in KV-SSD1 (330-1), the j-th key (Key j ) 350-j is hashed, and KV-SSD2 ( 330-2), the k th key (Key k ) 350-k is hashed and located in KV-SSD4 (330-4).

格納された各々のバリュー客体450の使用者バリュー長さ/バリューサイズ462は、書込まれた使用者バリュー長さ/バリューサイズと同一である。しかし、消去コーディングを可能にする一貫性のために、使用者バリュー/バリュー客体450はそれらに添付された“0”充填(filling)/仮想ゼロ/仮想ゼロパディング464を有することによって全て同一のサイズを有すると看做される。
即ち、相異なるバリュー客体450の各々の使用者バリューサイズ462が変化する可能性がある(即ち、バリュー客体450は可変する長さを有するか、又は可変長さキーバリューである)ので、仮想ゼロパディング464の方法を具現することによって(即ち、コーディングのために仮想ゼロパディング464のゼロをバリュー客体450にパディングする一方、パディングされたゼロを含むバリュー客体450を示すデータを実際に再書込むことを避けることによって)、パリティ客体460はパリティグループ340内で最大サイズのバリュー客体470と同一のサイズを有する。
従って、現在の実施形態で、バリュー客体450“Val x”、“Val y”、及び“Val b”はKVストレージ装置に実際に格納されない仮想ゼロでもってパディングされ、それによって最大サイズのバリュー客体470“Val c”と同一のサイズを有することと看做される。従って、パリティ客体460が計算される。
User value length / value size 462 of each stored value object 450 is the same as the written user value length / value size. However, for consistency to allow for erasure coding, user value / value objects 450 are all the same size by having “0” filling / virtual zero / virtual zero padding 464 attached to them. It is considered to have
That is, since the user value size 462 of each of the different value objects 450 may change (that is, the value object 450 has a variable length or is a variable-length key value), virtual zero By embodying the padding 464 method (ie, padding zeros of the virtual zero padding 464 into the value object 450 for coding, while actually rewriting the data representing the value object 450 including the padded zeros. Parity object 460 has the same size as the largest sized value object 470 in parity group 340).
Thus, in the present embodiment, the value objects 450 "Val x", "Val y" and "Val b" are padded with virtual zeros that are not actually stored in the KV storage device, whereby the maximum sized value object It is considered to have the same size as “Val c”. Thus, a parity object 460 is calculated.

k個のキー客体350のコーディングの後に、仮想装置管理レイヤ120はk個のキー客体350に対応するk個のバリュー/k個のバリュー客体450からr個のパリティ客体460を計算する。この時、rは整数であり、k+r=Nであり、Nはパリティグループ340内のKVストレージ装置330(例えば、図1の信頼性グループ140のN個のKVストレージ装置130)の数である。   After coding the k key objects 350, the virtual device management layer 120 calculates r parity objects 460 from k values / k value objects 450 corresponding to the k key objects 350. At this time, r is an integer, k + r = N, and N is the number of KV storage devices 330 in the parity group 340 (for example, the N KV storage devices 130 in the reliability group 140 in FIG. 1).

仮想装置管理レイヤ120はr個のパリティ客体460をパリティグループ340内の残るr個の相異なるKVストレージ装置330(即ち、k個のキー客体350が選択され、消去コーディングされるk個のKVストレージ装置330を含むキューからr個のKVストレージ装置が区分される)に格納する。従って、k個のキー客体350及びr個のパリティ客体460の各々はN個のストレージ装置330の中で相異なる各々に格納され、それに対応するデータはパリティグループ340のN個のKVストレージ装置330の各々に均等に分散される。   The virtual device management layer 120 processes the r parity objects 460 to the remaining r different KV storage devices 330 in the parity group 340 (ie, k KV storages for which k key objects 350 are selected and erasure coded) Store K volume storage devices from the queue containing the device 330). Therefore, each of the k key objects 350 and the r parity objects 460 is stored in different ones of the N storage devices 330, and the corresponding data is stored in the N KV storage devices 330 of the parity group 340. Distributed evenly over each of the

伝統的な消去コーディングを使用するパッキングの信頼性メカニズムに対して、読出し及び書込みは比較的簡単であるが、パリティの再計算及び復旧はそれほど簡単ではない。パリティの復旧及び再計算に対して(例えば、アップデートの場合)、どのキー客体350が同一のパリティグループ340に一緒にグループ化されているかを知り、それによってパリティの計算を可能にするために、キー客体350のグループに関する情報は、各バリュー客体450の実際のバリューサイズ462(即ち、仮想ゼロパディング464を除いたバリューサイズ462)と共に、KVストレージ装置330(例えば、図1のKVストレージ装置130)の各々にメタデータ客体として格納され得る。従って、現在の実施形態で、追加的なメタデータがキー客体350(例えば、図1の信頼性グループ140に位置されたキー客体350)、キー客体350に対応するバリュー客体450の各々の元の長さ、及びキー客体350のコーディング順序にKVストレージ装置130を格納するのに使用され得る。   For packing reliability mechanisms using traditional erasure coding, reading and writing are relatively simple, but parity recalculation and restoration is not as simple. For parity recovery and recalculation (eg, in the case of updates), to know which key objects 350 are grouped together in the same parity group 340, thereby enabling parity calculations Information about the group of key objects 350 includes the actual value size 462 of each value object 450 (that is, the value size 462 excluding the virtual zero padding 464) and the KV storage device 330 (for example, the KV storage device 130 of FIG. 1). May be stored as metadata objects. Thus, in the current embodiment, additional metadata is provided for the original of each of the key objects 350 (eg, key objects 350 located in the trust group 140 of FIG. 1) and the value objects 450 corresponding to the key objects 350. It may be used to store the KV storage device 130 in length and key object 350 coding order.

例えば、メタデータ客体バリューは信頼性グループ140のキー客体350の全体を表示し(indicate)、またバリュー客体450のバリューサイズ462を表示するフィールドを含み、パリティ客体キー(即ち、仮想ゼロパディング464のゼロを含むバリュー客体450)、パリティ客体460のバリューサイズ462、及びr個のパリティ客体460が格納された対応するr個のKVストレージ装置330の識別のための装置IDを示す相異なるフィールドを含み得る。   For example, the metadata object value includes a field indicating the entire key object 350 of the credibility group 140 and a value size 462 of the value object 450, and a parity object key (ie, virtual zero padding 464). A value object 450 including zero, a value size 462 of the parity object 460, and different fields indicating device IDs for identifying the corresponding r KV storage devices 330 in which the r parity objects 460 are stored. obtain.

データは使用者キーを使用して格納される。メタデータは使用者キー及び“Metadata”と称するMetaIDインジケータ(表示部、indicator)を使用して形成された内部キーに格納される。さらに、バリュー客体450がどこで終了されたか、仮想ゼロパディング464のゼロがどこで開始するかを決定することによって、バリュー客体450が再生成される場合に正確な再構成のためにバリューサイズ462はメタデータに格納されて仮想ゼロパディング464の位置(即ち、ゼロが何処に追加されたか)の認識を可能にする。   Data is stored using the user key. The metadata is stored in an internal key formed using the user key and a MetaID indicator called "Metadata" (display, indicator). Further, by determining where the value object 450 is terminated and where the zero of the virtual zero padding 464 begins, the value size 462 is meta-metabolized for accurate reconstruction when the value object 450 is regenerated. Stored in the data to allow recognition of the location of the virtual zero padding 464 (ie where the zero was added).

KVストレージ装置330の中で1つが故障であれば、データ及びメタデータの全てが同一のKVストレージ装置330に格納される可能性があるので、データ及びメタデータが消失する可能性が潛在的にあり、それによって、復旧が不可能になる可能性である。しかし、このような状況を防止するために、メタデータ客体バリューは、以前に言及された客体複製(Object Replication)の信頼性メカニズムをメタデータ客体バリューに対して具現できる仮想装置管理レイヤ120の“客体複製エンジン(Object Replication Engine)”を使用して複製され得る。   If one of the KV storage devices 330 fails, all of the data and metadata may be stored in the same KV storage device 330, so there is a possibility that the data and metadata may be lost. Yes, which can make recovery impossible. However, in order to prevent such a situation, the metadata object value is a virtual object management layer 120 that can implement the reliability mechanism of the object replication previously mentioned for the metadata object value. It can be replicated using the "Object Replication Engine".

追加的に、メタデータ客体バリューは信頼性グループ140の全ての客体に対して同一であるので、KVストレージ装置330が客体連結(object linking)を支援する場合、同一のメタデータ客体バリューは同一のKVストレージ装置330に共通に位置する多重のキー名(keynames)に連結されることができる。さらに、集団書込み(batch writing)が支援される場合、客体バリューはさらに良い処理能力のために共にバッチ処理(batched)され得る。   In addition, since the metadata object value is the same for all objects in the reliability group 140, when the KV storage device 330 supports object linking, the same metadata object value is the same. Multiple key names that are commonly located in the KV storage device 330 can be linked. Furthermore, if batch writing is supported, object values can be batched together for better processing power.

現在の実施形態に係る伝統的な消去コーディングを使用するパッキングの信頼性メカニズムを要約すれば、仮想装置管理レイヤ120はバッファを介してk個の異なるKVストレージ装置330からk個の最近に格納されたキー客体350を選択できる。
仮想装置管理レイヤ120は、以後に、各々のキー客体350に対応するバリュー客体450(パリティグループ440の最大サイズのバリュー客体470を除く)を回収し、仮想ゼロパディング350でもってパディングしてバリュー客体450を同一のサイズ(例えば、最大サイズのバリュー客体470のサイズ)に生成できる。
仮想装置管理レイヤ120は、以後に、MDSコードプロセスを使用してk個のキー客体350からr個のパリティ客体を生成できる。
仮想装置管理レイヤ120は、以後に、r個のパリティ客体460をN個のKVストレージ装置330の中でキー客体350が選択されたk個のKVストレージ装置330と相異なるr個のKVストレージ装置330に書込みできる。この時、k+rはNと同一である。
仮想装置管理レイヤ120は、以後に、上述された情報を示すメタデータ客体を生成できる。
最後に、仮想装置管理レイヤ120は使用者キー及びメタデータ識別子から形成されたキーと共にキー客体350及びパリティ客体460をN個のKVストレージ装置330(例えば、複製エンジンと類似である)に書込みできる。
To summarize the packing reliability mechanism using traditional erasure coding according to the current embodiment, the virtual device management layer 120 is stored in the k most recently stored k different KV storage devices 330 from the k different KV storage devices 330. The key object 350 can be selected.
Thereafter, the virtual device management layer 120 collects the value objects 450 (excluding the maximum size value object 470 of the parity group 440) corresponding to each key object 350, and performs padding with the virtual zero padding 350 to obtain the value object. 450 may be generated to the same size (e.g., the size of the largest sized value object 470).
The virtual device management layer 120 can subsequently generate r parity objects from the k key objects 350 using the MDS code process.
The virtual device management layer 120 thereafter sets r parity objects 460 to r KV storage devices different from the k KV storage devices 330 for which the key object 350 is selected among the N KV storage devices 330. It can write to 330. At this time, k + r is the same as N.
Thereafter, the virtual device management layer 120 can generate a metadata object indicating the above-described information.
Finally, the virtual device management layer 120 can write the key object 350 and the parity object 460 to N KV storage devices 330 (e.g., similar to replication engine) with a key formed from the user key and the metadata identifier. .

図5は本発明の実施形態に係る、伝統的な消去コーディングを使用する単一客体(k、r)消去コーディング(Single Object (k、r) erasure coding)、又は“スプリッティング(Splitting)”の信頼性メカニズムに応じてキーバリューデータを格納するように構成されたKVストレージ装置のグループを示すブロック図である。   FIG. 5 illustrates a single object (k, r) erasure coding or traditional “splitting” confidence using traditional erasure coding according to an embodiment of the present invention. FIG. 6 is a block diagram illustrating a group of KV storage devices configured to store key-value data in accordance with a gender mechanism.

図5を参照すれば、以前に言及された客体複製(Object Replication)及び伝統的な消去コーディングを使用するパッキングの信頼性メカニズムに適合するバリューサイズより大きいバリューサイズを有するバリューに対して、仮想装置管理レイヤ120は、伝統的な消去コーディングを使用する“単一客体(Single_Object)(k、r)消去コーディング”、即ち“スプリッティング(splitting)”の信頼性メカニズムを選択できる。
伝統的な消去コーディングを使用するスプリッティングの信頼性メカニズムは、比較的大きいバリューサイズを有し、k個の同一サイズのバリュー客体550に分割された場合、良い被処理能力を有するKVバリュー(キーバリューデータ/KVペア)570に適合するKVバリュー(キーバリューデータ/KVペア)単位の信頼性メカニズムである。
Referring to FIG. 5, for a value having a value size larger than the value size compatible with the packing reliability mechanism using the object replication and traditional erasure coding mentioned earlier, the virtual device The management layer 120 may select a "Single-Object (k, r) erasure coding" or "splitting" reliability mechanism using traditional erasure coding.
The reliability mechanism of splitting using traditional erasure coding has a relatively large value size, and when divided into k equal-sized value objects 550, it has KV value (key-value with good processing capability) It is a reliability mechanism in units of KV values (key-value data / KV pairs) conforming to data / KV pairs 570.

KVバリュー570を分割した後に、実施形態によれば、仮想装置管理レイヤ120はk個のバリュー客体550の各々に対してチェックサムを計算する。その後に、仮想装置管理レイヤ120はk個のバリュー客体550の各々の前にメタデータを挿入する。   After dividing the KV value 570, according to the embodiment, the virtual device management layer 120 calculates a checksum for each of the k value objects 550. Thereafter, the virtual device management layer 120 inserts metadata before each of the k value objects 550.

伝統的な消去コーディングを使用するスプリッティングはKVバリュー570を複数のさらに小さいバリュー客体550に分割すること、その後にKVバリュー570を分割して得られた複数のさらに小さいバリュー客体550をk個の連続したKVストレージ装置530に亘って分散することを含む。従って、k個の同一サイズのバリュー客体550のサイズは基本(underlying)KVストレージ装置530の各々によって支援され得る。   Splitting using traditional erasure coding divides the KV value 570 into a plurality of smaller value objects 550 and then divides the KV value 570 into k consecutive values objects 550. Distributed over the KV storage devices 530. Accordingly, the size of the k identically sized value objects 550 can be supported by each of the underlying KV storage devices 530.

伝統的な消去コーディングを使用するスプリッティングを使用する場合、仮想装置管理レイヤ120は体系的なMDSコード(例えば、仮想装置レイヤ120が、基本(de_fault)コードとして、(4、2)リードソロモンコードなどの伝統的な(k、r)MDS消去コーディングを前提として構成される場合)を使用して生成されたr個のパリティバリュー/客体560をまた追加できる。以後に、上述された伝統的な消去コーディングを使用するパッキングの信頼性メカニズムと類似な方式により、仮想装置管理レイヤ120はk個のバリュー客体550及びr個のパリティ客体560をN個のKVストレージ装置530に書込みできる(k+r=N)。   When splitting using traditional erasure coding is used, the virtual device management layer 120 is a systematic MDS code (for example, the virtual device layer 120 is a basic (de_fault) code, (4, 2) Reed Solomon code, etc. The r parity values / objects 560 generated using the traditional (k, r) MDS erasure coding scenario can also be added. Thereafter, in a manner similar to the packing reliability mechanism using the traditional erasure coding described above, the virtual device management layer 120 converts the k value objects 550 and the r parity objects 560 into N KV storages. The device 530 can be written (k + r = N).

従って、仮想装置管理レイヤ120は比較的大きいKVバリュー570をk個のバリュー客体550に分割でき、r個のパリティ客体560を計算し、追加でき、k個のバリュー客体550及びr個のパリティ客体560を(k+r)個のKVストレージ装置530に格納できる。   Thus, the virtual device management layer 120 can divide the relatively large KV value 570 into k value objects 550, calculate and add r parity objects 560, and can add k value objects 550 and r parity objects. 560 can be stored in (k + r) KV storage devices 530.

伝統的な消去コーディングを使用するスプリッティングの信頼性メカニズムを使用する場合、KVバリュー570のバリューに対応するキー580をハッシングした後に、仮想装置管理レイヤ120は対応するバリュー客体を格納する(例えば、k個のバリュー客体550の中で第1のバリュー客体、図5の実施形態におけるD1をハッシュマークゼロに格納する)ために、主要KVストレージ装置530a(例えば、図5に図示された実施形態における、KV−SSD2)を決定できる。k+r個のバリュー客体550、560は同一の使用者キー名の下で、主要KVストレージ装置530a及び(N−1)個の連続的なKVストレージ装置530の各々に書込まれ得る。
即ち、図5に図示された実施形態で、k個のバリュー客体550の中で第1のバリュー客体は主要KVストレージ装置530a“KV−SSD2”に書込まれ、k個のバリュー客体550の中で残りはr個のパリティ客体560と共にKVストレージ装置530“KV−SSD3”乃至“KV−SSDN”及び“KV−SSD1”に循環方式の順に書込まれる(例えば、上述された客体複製の信頼性メカニズムに対して記述されたことと類似な方式である)。
When using a splitting reliability mechanism using traditional erasure coding, after hashing the key 580 corresponding to the KV value 570 value, the virtual device management layer 120 stores the corresponding value object (eg, k In order to store the first value object among the number of value objects 550, D1 in the embodiment of FIG. 5 at the hash mark zero, the main KV storage device 530a (eg, in the embodiment illustrated in FIG. KV-SSD 2) can be determined. The k + r value objects 550, 560 may be written to each of the main KV storage device 530a and the (N-1) consecutive KV storage devices 530 under the same user key name.
That is, in the embodiment illustrated in FIG. 5, the first value object among the k value objects 550 is written in the main KV storage device 530a “KV-SSD2”, And the rest are written to the KV storage devices 530 “KV-SSD3” to “KV-SSDN” and “KV-SSD1” in the order of the circulation system together with the r parity objects 560 (for example, the reliability of the object duplication described above) A scheme similar to that described for the mechanism).

伝統的な消去コーディングを使用するスプリッティングの信頼性メカニズムを要約すれば、仮想装置管理レイヤ120は比較的大きいKVバリュー570をk個の同一サイズのバリュー客体550に分割できる。仮想装置管理レイヤ120は、以後に、MDSコードプロセスを使用してk個のバリュー客体550に対するr個のパリティ客体560を生成できる。仮想装置管理レイヤ120は、以後に、KVバリュー570のバリューに対応するキーをハッシングして第1のバリュー客体が位置するべき主要KVストレージ装置530aを決定できる。仮想装置管理レイヤ120は、以後に、仮想装置管理レイヤ120によって生成され、循環方式の順に主要KVストレージ装置530a及び(N−1)個の連続したKVストレージ装置530に対応する適切なMetaIDフィールドを含む同一の使用者キー名の下で、(k+r)個のバリュー客体550とパリティ客体560を書込みできる。   To summarize the splitting reliability mechanism using traditional erasure coding, the virtual device management layer 120 can divide a relatively large KV value 570 into k identically sized value objects 550. The virtual device management layer 120 may subsequently generate r parity objects 560 for k value objects 550 using an MDS code process. Thereafter, the virtual device management layer 120 may hash the key corresponding to the value of the KV value 570 to determine the main KV storage device 530 a where the first value object should be located. The virtual device management layer 120 is subsequently generated by the virtual device management layer 120, and the appropriate MetaID fields corresponding to the main KV storage device 530a and the (N-1) consecutive KV storage devices 530 in the order of the circulation method are Under the same user key name, (k + r) value objects 550 and parity objects 560 can be written.

図3及び図4を再び参照すれば、他の実施形態によれば、仮想装置管理レイヤ120は再生成消去コーディングを使用する、K−客体(k、r、d)消去コーディング、即ち多重客体(multiple_object“パッキング”の信頼性メカニズムを選択できる(例えば、図2の順序図200に従って)。現在の信頼性メカニズムは仮想装置管理レイヤ120がk個の客体をk個のKVストレージ装置にパッキングする点で、以前に記述された伝統的な消去コーディングを使用するパッキングの信頼性メカニズムと類似である。しかし、再生成消去コーディングを使用するパッキングは伝統的な(k、r)消去コードを使用する代わりに、(k、r、d)再生成コードを使用する。従って、図3及び図4は現在の実施形態に対しては、一般的実施形態として参照され得る。   Referring again to FIGS. 3 and 4, according to another embodiment, the virtual device management layer 120 uses K-object (k, r, d) erasure coding, ie, multi-object (K), using regeneration and erasure coding. A multiple_object “packing” reliability mechanism can be selected (eg, according to the sequence diagram 200 of FIG. 2), in which the virtual device management layer 120 packs k objects into k KV storage devices. And is similar to the reliability mechanism of packing using traditional erase coding as previously described, but packing using regenerative erase coding is an alternative to using traditional (k, r) erase codes Use the (k, r, d) regenerated code, so for the present embodiment, FIGS. It may be referred to as a common embodiment.

従って、再生成コードが適切であるけれども、客体を分割することが適切ではなく、若しくは、客体を分割などせずにそのまま維持する(intact)ことがさらに適切である場合に、再生成消去コーディングを使用するパッキングが使用され得る。再生成消去コーディングを使用するパッキングは以前に言及された客体複製、並びに伝統的な消去コーディングを使用するスプリッティング及びパッキングの信頼性メカニズムのために使用されるバリューサイズより大きいバリューサイズに対して適切であり得る。
再生成消去コーディングを使用するパッキングは、客体の複数のサブパケットの読出しが全体客体の読出しよりも低い性能に帰着しない場合に使用され得る。再生成消去コーディングを使用するパッキングは、基本(underlying)KVストレージ装置(例えば、図1のKVストレージ装置130、又は図3のKVストレージ装置330)が復旧/再構成の間に補助できて、再生成コードを認識可能な(aware)KVストレージ装置である場合に、適切であり得る。
Therefore, if the regeneration code is appropriate, but it is not appropriate to divide the object, or if it is more appropriate to maintain the object without dividing it, the regeneration erasure coding is performed. The packing used may be used. Packing using regeneration and erasure coding is appropriate for the object replication previously mentioned, as well as value sizes larger than the value size used for reliability mechanisms of splitting and packing using traditional erasure coding. possible.
Packing using regenerative erasure coding may be used when reading multiple subpackets of an object does not result in lower performance than reading of the entire object. Packing using regeneration and erasure coding can be assisted during recovery / reconfiguration by the underlying KV storage device (eg, KV storage device 130 of FIG. 1 or KV storage device 330 of FIG. 3). It may be appropriate if it is a KV storage device that is aware of the generated code.

図6は本発明の実施形態に係る、再生成消去コーディングを使用する“単一客体(Single_Object)(k、r、d)消去コーディング”、即ち、“スプリッティング(Splitting)”の信頼性メカニズムに応じてキーバリューデータを格納するように構成されたKVストレージ装置のグループを示すブロック図である。   FIG. 6 illustrates the reliability mechanism of “Single_Object (k, r, d) erasure coding”, ie “splitting” using regeneration coding according to an embodiment of the present invention. 2 is a block diagram showing a group of KV storage devices configured to store key value data.

図6を参照すれば、現在の信頼性メカニズムは、伝統的な(k、r)MDS消去コーディングの代わりに(k、r、d)再生成コードを使用する点のみを除外すれば、仮想装置管理レイヤが、図5に図示されたように、伝統的な消去コーディングを使用するスプリッティングと類似な方式による動作を可能になし得る。再生成消去コーディングを使用するパッキングと同様に、現在の信頼性メカニズムは基本(underlying)KVストレージ装置630が復旧/再構成の間に補助できて、再生成コードを認識可能なKVストレージ装置である場合に適切であり得る。   Referring to FIG. 6, the current reliability mechanism is a virtual device, except that it only uses (k, r, d) regeneration code instead of traditional (k, r) MDS erasure coding. The management layer may allow for operation in a manner similar to splitting using traditional erasure coding, as illustrated in FIG. Similar to packing using regenerative erasure coding, the current reliability mechanism is a KV storage device in which the underlying KV storage device 630 can assist during recovery / reconfiguration and can recognize the regenerated code. In some cases it may be appropriate.

KVバリュー客体670が以前に記載された信頼性メカニズムと対応するKVバリュー客体よりさらに大きいバリューサイズを有し、KVバリュー客体670のk個のスプリット(バリュー客体)650の複数のサブパケット690の読出しが、スプリット(バリュー客体)650全体の読出し(例えば、伝統的な消去コーディングを使用するスプリッティングの信頼性メカニズムで遂行される)よりも低い性能に帰着しない場合に、再生成消去コーディングを使用するスプリッティングが適切であり得る。   KV value object 670 has a larger value size than the KV value object corresponding to the reliability mechanism described previously, and reads a plurality of subpackets 690 of k splits (value object) 650 of KV value object 670 Splitting using regenerative erasure coding if does not result in lower performance than reading the entire split (value object) 650 (eg, performed with a splitting reliability mechanism using traditional erasure coding) May be appropriate.

再生成消去コーディングを使用するスプリッティングの信頼性メカニズムは、KVバリュー客体670がk個の同一サイズのバリュー客体(スプリット)650に分割(split)され、各スプリット650が複数のサブパケット690(例えば、現在の実施形態では、スプリット650が1個当たり4つのサブパケット690に分割される)に仮想的にさらに分割(split)され、KVバリュー客体670からの複数のサブパケット690の読出しがKVバリュー客体670の全体の読出しよりも良い処理能力を有する場合に適切な処理量を有し得る程の非常に大きいバリューサイズを有するKVバリュー客体に適合し得るKVバリュー客体(KVペア)単位のメカニズムである。バリューサイズは全ての基本(underlying)KVストレージ装置630によって支援される。   A splitting reliability mechanism that uses regenerative erasure coding is to split a KV value object 670 into k equal-sized value objects (splits) 650, each split 650 having multiple subpackets 690 (eg, In the current embodiment, the split 650 is virtually split into four subpackets 690), and the reading of a plurality of subpackets 690 from the KV value object 670 is a KV value object. It is a KV value object (KV pair) unit mechanism that can be adapted to a KV value object having a very large value size that can have an appropriate throughput if it has better processing capacity than 670 total reads. . Value size is supported by all underlying KV storage devices 630.

伝統的な消去コーディングを使用するスプリッティングと類似に、図5に図示されたように、現在信頼性メカニズムの仮想装置管理レイヤ120は体系的な再生成コードを使用してr個のパリティ客体660を追加して、k個のスプリット(バリュー客体)650及びr個のパリティ客体660をN個のKVストレージ装置630に書込み得る(ここで、(k+r)=N)。しかし、r個のパリティ客体660の各々は複数個のパリティサブパケット692(該複数個の個数は、例えば、スプリット(バリュー客体)650当たりのサブパケット690の個数に対応する)に分割され得る。伝統的な消去コーディングを使用するスプリッティングと異なり、現在の実施形態では、基本(default)コードが(4、2、5)ジグザグコード(zigzag code)であり得る。   Similar to splitting using traditional erasure coding, as shown in FIG. 5, the virtual device management layer 120 of the current reliability mechanism uses the systematic regeneration code to reconstruct r parity objects 660. Additionally, k splits (value objects) 650 and r parity objects 660 may be written to N KV storage devices 630 (where (k + r) = N). However, each of the r parity objects 660 may be divided into a plurality of parity subpackets 692 (the number corresponding to the number of subpackets 690 per split (value object) 650, for example). Unlike splitting, which uses traditional erasure coding, in the present embodiment, the default code may be a (4, 2, 5) zigzag code.

再生成消去コーディングを使用するスプリッティングの信頼性メカニズムを要約すれば、仮想装置レイヤ120は大きいKVバリュー客体670をk個の同一サイズのスプリット(バリュー客体)650に分割できる。仮想装置管理レイヤ120は、以後に、k個の客体650の各々をm個の同一サイズのサブパケット690に分割できる(k、mは整数である)。仮想装置管理レイヤ120は、以後に、再生成コーディングプロセスを使用してk個の客体650に対するr個のパリティ客体660を生成して、r個のパリティ客体660の各々は、m個の同一サイズのパリティサブパケット692に分割され得る。
仮想装置管理レイヤ120は、以後に、KVバリュー客体670に対応するキーをハッシングして第1スプリット(バリュー客体)D1が位置する主要KVストレージ装置630a(この場合、KV−SSD_2)を決定できる。仮想装置管理レイヤ120は、以後に、仮想装置管理レイヤ120によって生成され、循環方式により主要KVストレージ装置630a(この場合、KV−SSD_2)及び(N−1)個の連続したKVストレージ装置630(この場合、KV−SSD_3〜KV−SSD_k+r、KV−SSD_1)に対応する適切なMetaIDフィールドを含み得る同一の使用者キー名の下で、各々がm個のサブパケット690を含むk個のスプリット(バリュー客体)650(D1〜Dk)、及び各々がm個のパリティサブパケット692を含むr個のパリティ客体660(Dk+1〜Dk+r)を書込み得る。
To summarize the reliability mechanism of splitting using regeneration and erasure coding, the virtual device layer 120 can divide a large KV value object 670 into k equal-sized splits (value objects) 650. Thereafter, the virtual device management layer 120 can divide each of the k objects 650 into m sub-packets 690 having the same size (k and m are integers). Virtual device management layer 120 subsequently generates r parity objects 660 for k objects 650 using a regenerative coding process, each of r parity objects 660 being m identical in size. Can be divided into parity subpackets 692 of
Thereafter, the virtual device management layer 120 can determine the main KV storage device 630a (in this case, KV-SSD_2) where the first split (value object) D1 is located by hashing the key corresponding to the KV value object 670. The virtual device management layer 120 is subsequently generated by the virtual device management layer 120, and the primary KV storage device 630a (in this case, KV-SSD_2) and (N-1) consecutive KV storage devices 630 In this case, under the same user key name, which may include an appropriate MetaID field corresponding to KV-SSD_3 to KV-SSD_k + r, KV-SSD_1), k splits (each containing m subpackets 690). Value objects 650 (D1 to Dk) and r parity objects 660 (Dk + 1 to Dk + r) each including m parity subpackets 692 may be written.

上述されたことによれば、仮想装置管理レイヤは、キーバリューデータの1つ又はそれ以上の属性に基づいてキーバリューデータの格納に対して信頼性メカニズムのグループから適切な信頼性メカニズムを選択できる。従って、本文に記載された実施形態は、記載された信頼性メカニズムが各々何れも単一キー復旧手続を遂行できるので、メモリストレージの分野における性能改善に貢献する。
メモリ装置の全体が故障した場合、本発明の実施形態の仮想装置管理レイヤは故障したメモリ装置に存在するキーの全てを復旧し、新しいメモリ装置にコピーできる。仮想装置管理レイヤは、信頼性グループ内の故障したメモリ装置に隣接するメモリ装置に存在するキーの全体に対する反複動作を遂行し、信頼性メカニズムが故障であるメモリ装置に存在することと判断したキーに対してキー単位複数動作を遂行することによって、キー全体の復旧及びコピーを達成できる。
As described above, the virtual device management layer can select an appropriate reliability mechanism from a group of reliability mechanisms for storage of key-value data based on one or more attributes of the key-value data. . Accordingly, the embodiments described herein contribute to performance improvements in the field of memory storage because each of the described reliability mechanisms can perform a single key recovery procedure.
When the entire memory device fails, the virtual device management layer according to the embodiment of the present invention can recover all the keys existing in the failed memory device and copy them to the new memory device. The virtual device management layer performs a duplicate operation on the entire key existing in the memory device adjacent to the failed memory device in the reliability group, and the key determined that the reliability mechanism is present in the failed memory device By performing key unit multiple operations on the key recovery and copy of the entire key can be achieved.

基本信頼性メカニズム(例えば、基本(underlying)ストレージ装置のサイズ制約に従う)によって支援されるバリューサイズより大きいバリューサイズを有する非常に大きいKVペア(=KVバリュー)が信頼性管理者によって複数のKVペアに明示的に分割され、信頼性メカニズムが複数のスプリット及びスプリット数の情報をKVバリューに格納されたメタデータと共に格納するので、記載された実施形態はメモリストレージ分野における改善にさらに貢献する。   A very large KV pair (= KV value) with a value size larger than the value size supported by a basic reliability mechanism (eg, according to the size constraint of the underlying storage device) is set by the reliability manager to multiple KV pairs. The embodiment described further contributes to an improvement in the memory storage field, since it is explicitly split up and the reliability mechanism stores multiple splits and split number information together with the metadata stored in the KV value.

本文に記載された実施形態は、特定の用語を採用した場合でも、その用語は一般的、且つ記述的な意味にのみ使用され、且つ解釈されるべきであり、これに制限する意図はない。一部の実施形態で、本発明が属する技術分野における通常の技術者には明らかなように、特定の実施形態において明瞭に相異なって言及されない限り、特定実施形態と連関されて記述された特徴、属性、及び/又は要素は他の実施形態と連関されて記述された特徴、属性、及び/又は要素と組合わされて又は独立的に使用され得る。従って、当業者は形態又は詳細な記述の多様な変形が、今回の開示に含まれた機能的な均等物と合わせて以下の特許請求の範囲に表明された今回の開示の思想及び範囲から逸脱せずに、具現され得ることが理解されよう。   The embodiments described herein, even when specific terms are employed, are to be used and interpreted in a general and descriptive sense only and are not intended to be limiting. In some embodiments, features described in connection with a particular embodiment will be apparent to those skilled in the art to which the present invention pertains, unless explicitly stated otherwise in that particular embodiment. Attributes, and / or elements may be used in combination or independently with features, attributes, and / or elements described in connection with other embodiments. Accordingly, those skilled in the art will recognize that various modifications in form or detailed description may depart from the spirit and scope of the present disclosure as expressed in the following claims, along with the functional equivalents contained in the present disclosure. It will be understood that it can be embodied without.

110 単一仮想装置
120 仮想装置管理レイヤ
130 KVストレージ装置
140 信頼性グループ
170 キーバリューデータ、キーバリューデータ/KVペア
330、330−1、・・・、330−N KVストレージ装置
340 パリティグループ/消去コードグループ
350、350−i、350−j、350−y、350−b、350−k、350−c キー/キー客体
450 バリュー客体
460 パリティ客体
462 使用者バリュー長さ/バリューサイズ
464 “0”充填/仮想ゼロ/仮想ゼロパディング
470 最大サイズのバリュー客体
530 ストレージ装置
530a 主要KVストレージ装置
550 バリュー客体
560 パリティ客体
570 KVバリュー/キーバリューデータ/KVペア
580 キー
630 KVストレージ装置
630a 主要KVストレージ装置
650 スプリット(バリュー客体)
660 パリティ客体
670 KVバリュー客体
690 サブパケット
692 パリティサブパケット
110 single virtual device 120 virtual device management layer 130 KV storage device 140 reliability group 170 key value data, key value data / KV pair 330, 330-1, ..., 330-N KV storage device 340 parity group / erase Code group 350, 350-i, 350-j, 350-y, 350-b, 350-k, 350-c Key / key object 450 Value object 460 Parity object 462 User value length / value size 464 “0” Filling / virtual zero / virtual zero padding 470 Maximum size value object 530 Storage device 530a Main KV storage device 550 Value object 560 Parity object 570 KV value / key value data / KV pair 580 key 630 KV strike Over its own device 630a major KV storage device 650 split (value object)
660 parity object 670 KV value object 690 subpacket 692 parity subpacket

Claims (20)

単一の論理ユニットとして1つの信頼性グループにグループ化され、仮想装置管理レイヤによって管理されるN(但し、Nは整数)個のストレージ装置を含むキーバリュー信頼性システムのデータ格納方法において、
前記データが前記データを格納するための信頼性メカニズムに対応する閾値を満足するか否かを決定する段階と、
前記閾値を前記データが満足した場合、前記信頼性メカニズムを選択する段階と、
前記選択された信頼性メカニズムに応じて前記データを格納する段階と、を含むことを特徴とする方法。
In a data storage method of a key-value reliability system including N (where N is an integer) storage devices grouped into one reliability group as a single logical unit and managed by a virtual device management layer,
Determining whether the data meets a threshold corresponding to a reliability mechanism for storing the data;
Selecting the reliability mechanism if the data is satisfied with the threshold value;
Storing the data according to the selected reliability mechanism.
前記閾値は、前記データの客体サイズ、前記データの処理能力考慮(throughput consideration)、前記データの読出し/書込み温度(read/write temperature)(即ち、読出し/書込み頻度)、及び前記N個のストレージ装置の基本(underlying)消去コーディング能力の中で1つ又はそれ以上に基づく、ことを特徴とする請求項1に記載の方法。   The threshold may be an object size of the data, a throughput consideration of the data, a read / write temperature of the data (i.e., a read / write frequency), and the N storage devices. The method according to claim 1, characterized in that it is based on one or more of the underlying erasure coding capabilities of. 1つ又はそれ以上のブルームフィルタ又はキャッシュを使用して前記信頼性メカニズムに対する前記データをテストする段階をさらに含む、ことを特徴とする請求項1に記載の方法。   The method of claim 1, further comprising testing the data for the reliability mechanism using one or more bloom filters or caches. 前記選択された信頼性メカニズム、前記データを格納する前記N個のストレージ装置の各々に対する1つ又はそれ以上のチェックサム、前記データを格納する前記N個のストレージ装置の各々に格納された前記データのバリュー客体のサイズ、及び前記N個のストレージ装置の中でどこに前記データが格納されているのかを示す前記N個のストレージ装置のパリティグループメンバーの位置を記録するためのメタデータを前記データに対応するキーと共に挿入する段階をさらに含む、ことを特徴とする請求項1に記載の方法。   The selected reliability mechanism, one or more checksums for each of the N storage devices storing the data, and the data stored in each of the N storage devices storing the data. The metadata for recording the size of the value object and the position of the parity group member of the N storage devices indicating where the data is stored in the N storage devices. The method of claim 1, further comprising: inserting with a corresponding key. 前記選択された信頼性メカニズムは、客体複製を含み、
前記データを格納する段階は、
KVバリューを選択する段階と、
前記選択されたKVバリューに対応するキーをハッシングするためのハッシュを計算する段階と、
前記KVバリューに対応するキー客体のレプリカを格納するために前記N個のストレージ装置の中でストレージ装置の部分集合を決定する段階と、
同一の使用者キー名の下で、前記決定されたストレージ装置の部分集合内の各々に前記KVバリューに対応するアップデートされたバリューを書込む段階と、を含む、ことを特徴とする請求項1に記載の方法。
The selected reliability mechanism includes object replication;
The step of storing the data comprises
Selecting a KV value,
Calculating a hash for hashing a key corresponding to the selected KV value;
Determining a subset of storage devices among the N storage devices to store a replica of a key object corresponding to the KV value;
Writing an updated value corresponding to the KV value into each of the determined storage device subsets under the same user key name. The method described in.
前記選択された信頼性メカニズムは、パッキング(packing)を含み、
前記データを格納する段階は、
前記グループ化されてなる信頼性グループの前記N個のストレージ装置の中でk(但し、kは整数)個のストレージ装置に格納されたk個のキー客体を選択する段階と、
前記k個のキー客体に対応するk個のバリュー客体を回収する段階と、
前記k個のバリュー客体全部の仮想サイズが同一になるように、前記k個のバリュー客体の中で最大のバリューサイズを有しないバリュー客体の終端に仮想ゼロをパディングする段階と、
前記k個のキー客体からr(但し、rは整数)個のパリティ客体を生成する段階と、
前記k個のキー客体を前記k個のストレージ装置に書込む段階と、
前記r個のパリティ客体を前記N個のストレージ装置の中でr個のストレージ装置に書込む段階と、を含み、
前記r個のストレージ装置の各々は、前記k個のストレージ装置と峻別され(distinct)、但し、k+r=Nである、ことを特徴とする請求項1に記載の方法。
The selected reliability mechanism includes packing;
The step of storing the data comprises
Selecting k key objects stored in k (where k is an integer) storage devices among the N storage devices of the grouped reliability group;
Collecting k value objects corresponding to the k key objects;
Padding virtual zeros at the end of value objects that do not have the largest value size among the k value objects, so that the virtual values of all the k value objects are the same;
Generating r (where r is an integer) parity objects from the k key objects;
Writing the k key objects to the k storage devices;
Writing the r parity objects to r storage devices among the N storage devices;
The method of claim 1, wherein each of the r storage devices is distinguished from the k storage devices, where k + r = N.
前記選択された信頼性メカニズムは、伝統的な(traditional)消去コーディングを使用するパッキングを含み、
前記N個のストレージ装置は、伝統的な(k、r)MDS(maximum distance separable)消去コーディングで構成される、ことを特徴とする請求項6に記載の方法。
The selected reliability mechanism includes packing using traditional erasure coding
7. The method of claim 6, wherein the N storage devices are configured with a traditional (k, r) MDS (maximum distance separate) erasure coding.
前記選択された信頼性メカニズムは、再生成消去コーディングを使用するパッキングを含み、
前記N個のストレージ装置は(k、r、d)再生成消去コーディングで構成される、ことを特徴とする請求項6に記載の方法。
The selected reliability mechanism includes packing using regenerative erasure coding;
The method according to claim 6, wherein the N storage devices are configured with (k, r, d) regeneration and erasure coding.
前記選択された信頼性メカニズムは、スプリッティングを含み、
前記データを格納する段階は、
KVバリューを選択する段階と、
前記KVバリューをk(但し、kは整数)個の同一サイズのバリュー客体に分割する段階と、
前記k個の同一サイズのバリュー客体からr(但し、rは整数)個のパリティ客体を生成する段階と、
前記選択されたKVバリューに対応するキーをハッシングするためのハッシュを計算する段階と、
前記ハッシュに基づいて前記N個のストレージ装置の中で前記KVバリューが位置する主要ストレージ装置を決定する段階と、
前記主要ストレージ装置から始めて連続する順序に前記k個の同一サイズのバリュー客体及び前記r個のパリティ客体の各々を前記N個のストレージ装置に書込む段階と、を含み、但し、k+r=Nである、ことを特徴とする請求項1に記載の方法。
The selected reliability mechanism includes splitting;
The step of storing the data comprises
Selecting a KV value,
Dividing the KV value into k (where k is an integer) equal sized value objects;
Generating r (where r is an integer) parity objects from the k equal-sized value objects;
Calculating a hash for hashing a key corresponding to the selected KV value;
Determining a main storage device in which the KV value is located among the N storage devices based on the hash;
Writing each of the k value objects of the same size and the r parity objects to the N storage devices in a sequential order starting from the main storage device, where k + r = N A method according to claim 1, characterized in that.
前記選択された信頼性メカニズムは、伝統的な消去コーディングを使用するスプリッティングを含み、
前記N個のストレージ装置は伝統的な(k、r)MDS(maximum distance separable)消去コーディングで構成される、ことを特徴とする請求項9に記載の方法。
The selected reliability mechanism includes splitting using traditional erasure coding;
The method of claim 9, wherein the N storage devices are configured with a traditional (k, r) maximum distance separable (MDS) erasure coding.
前記選択された信頼性メカニズムは、再生成消去コーディングを使用するパッキングを含み、
前記N個のストレージ装置は、(k、r、d)再生成消去コーディングで構成され、
前記データを格納する段階は、
前記再生成消去コーディングを使用して前記k個の同一サイズのバリュー客体の各々をm(但し、mは整数)個のサブパケットに分割する段階と、
前記r個のパリティ客体の各々をm個のパリティサブパケットに分割する段階と、をさらに含む、ことを特徴とする請求項9に記載の方法。
The selected reliability mechanism includes packing using regenerative erasure coding,
The N storage devices are configured by (k, r, d) regeneration erasure coding,
The step of storing the data comprises
Dividing each of the k equal-sized value objects into m (where m is an integer) subpackets using the regenerative erasure coding;
The method of claim 9, further comprising: dividing each of the r parity objects into m parity subpackets.
選択された信頼性メカニズムに基づいてデータを格納するデータ信頼性システムにおいて、
ステートレスデータ保護を使用して仮想装置として構成されるN(但し、Nは整数)個のストレージ装置と、
前記選択された信頼性メカニズムに応じて、前記N個のストレージ装置を前記仮想装置として管理して前記N個のストレージ装置の中で選択されたストレージ装置にデータを格納するように構成された仮想装置管理レイヤと、を含み、
前記仮想装置管理レイヤは、
前記データが前記データを格納するための信頼性メカニズムに対応する閾値を満足するか否かを決定し、
前記閾値を前記データが満足した場合、前記信頼性メカニズムを選択し、
前記選択された信頼性メカニズムに応じて前記データを格納するように構成された、ことを特徴とするデータ信頼性システム。
In a data reliability system that stores data based on a selected reliability mechanism,
N (where N is an integer) storage devices configured as virtual devices using stateless data protection;
A virtual device configured to manage the N storage devices as the virtual device according to the selected reliability mechanism and store data in a storage device selected from the N storage devices. Device management layer, and
The virtual device management layer is
Determining whether the data satisfies a threshold corresponding to a reliability mechanism for storing the data;
If the data satisfies the threshold, select the reliability mechanism;
A data reliability system, characterized in that it is configured to store the data according to the selected reliability mechanism.
前記選択された信頼性メカニズムは、客体複製を含み、
前記仮想装置管理レイヤは、
KVバリューを選択し、
前記選択されたKVバリューに対応するキーをハッシングするためのハッシュを計算し、
前記KVバリューに対応するキー客体のレプリカを格納するために前記N個のストレージ装置の中でストレージ装置の部分集合を決定し、
同一の使用者キー名の下で前記決定されたストレージ装置の部分集合内の各々に前記KVバリューに対応するアップデートされたバリューを書込むことによって、前記データを格納するように構成された、ことを特徴とする請求項12に記載のデータ信頼性システム。
The selected reliability mechanism includes object replication;
The virtual device management layer is
Select KV Value,
Calculating a hash for hashing a key corresponding to the selected KV value;
Determining a subset of storage devices among the N storage devices to store a replica of the key object corresponding to the KV value;
Configured to store the data by writing an updated value corresponding to the KV value into each of the determined storage device subsets under the same user key name, The data reliability system according to claim 12, characterized in that:
前記選択された信頼性メカニズムは、パッキングを含み、
前記仮想装置管理レイヤは、
前記N個のストレージ装置の中でk(但し、kは整数)個のストレージ装置に格納されたk個のキー客体を選択し、
前記k個のキー客体に対応するk個のバリュー客体を回収し、
前記k個のバリュー客体の全ての仮想バリューサイズが同一になるように、前記k個のバリュー客体の中で最大のバリューサイズを有しないバリュー客体の終端に仮想ゼロをパディングし、
前記k個のキー客体からr(但し、rは整数)個のパリティ客体を生成し、
前記k個のキー客体を前記k個のストレージ装置に書込み、
前記r個のパリティ客体を前記N個のストレージ装置の中でr個のストレージ装置に書込むことによって、前記データを格納するように構成され、
前記r個のストレージ装置の各々は、前記k個のストレージ装置の各々と峻別され、但し、k+r=Nである、ことを特徴とする請求項12に記載のデータ信頼性システム。
The selected reliability mechanism includes packing
The virtual device management layer is
Select k key objects stored in k (where k is an integer) storage devices among the N storage devices,
Collect k value objects corresponding to the k key objects,
Padding virtual zeros at the end of value objects that do not have the largest value size among the k value objects, so that all virtual value sizes of the k value objects are the same,
R (where r is an integer) parity objects are generated from the k key objects,
Writing the k key objects to the k storage devices;
The r data is stored by writing the r parity objects to r storage devices among the N storage devices,
The data reliability system of claim 12, wherein each of the r storage devices is distinguished from each of the k storage devices, where k + r = N.
前記選択された信頼性メカニズムは、スプリッティングを含み、
前記仮想装置管理レイヤは、
KVバリューを選択し、
前記KVバリューをk(但し、kは整数)個の同一サイズのバリュー客体に分割し、
前記k個の同一サイズのバリュー客体からr(但し、rは整数)個のパリティ客体を生成し、
前記選択されたKVバリューに対応するキーをハッシングするためのハッシュを計算し、
前記ハッシュに基づいて前記N個のストレージ装置の中で前記KVバリューが位置する主要ストレージ装置を決定し、
前記主要ストレージ装置から始めて連続する順序に前記k個の同一サイズのバリュー客体及び前記r個のパリティ客体の各々を前記N個のストレージ装置に書込むことによって、前記データを格納するように構成され、
但し、k+r=Nである、ことを特徴とする請求項12に記載のデータ信頼性システム。
The selected reliability mechanism includes splitting;
The virtual device management layer is
Select KV Value,
Divide the KV value into k (where k is an integer) equal sized value objects,
Create r (where r is an integer) parity objects from the k equal-sized value objects,
Calculating a hash for hashing a key corresponding to the selected KV value;
Determine a main storage device in which the KV value is located among the N storage devices based on the hash;
The data is stored by writing each of the k value objects of the same size and the r parity objects to the N storage devices in a sequential order starting from the main storage device. ,
13. The data reliability system according to claim 12, wherein k + r = N.
前記選択された信頼性メカニズムは、再生成消去コーディングを使用するスプリッティングを含み、
前記N個のストレージ装置は、(k、r、d)再生成消去コーディングで構成され、
前記仮想装置管理レイヤは、前記再生成消去コーディングを使用して前記k個の同一サイズのバリュー客体をm(但し、mは整数)個のサブパケットに分割し、前記r個のパリティ客体の各々をm個のパリティサブパケットに分割することによって、前記データを格納するようにさらに構成される、ことを特徴とする請求項15に記載のデータ信頼性システム。
The selected reliability mechanism includes splitting using regenerative erasure coding;
The N storage devices are configured with (k, r, d) regeneration and erasure coding,
The virtual device management layer divides the k value objects of the same size into m (where m is an integer) subpackets using the regenerative erasure coding, and each of the r parity objects. 16. The data reliability system of claim 15, further configured to store the data by dividing the data into m parity subpackets.
プロセッサ上で実行される場合、単一の論理ユニットとして1つの信頼性グループにグループ化され、仮想装置管理レイヤによって管理されるN個のストレージ装置を含むキーバリュー信頼性システムにおいてデータを格納する方法を具現するコンピュータコードを含む非一時的なコンピュータ読出し可能な媒体において、
前記方法は、
前記データが前記データを格納するための信頼性メカニズムに対応する閾値を満足するか否かを決定する段階と、
前記閾値を前記データが満足した場合、前記信頼性メカニズムを選択する段階と、
前記選択された信頼性メカニズムに応じてデータを格納する段階と、を含む、ことを特徴とする非一時的なコンピュータ読出し可能な媒体。
Method of storing data in a key-value reliability system comprising N storage devices grouped into one reliability group as a single logical unit and managed by a virtual device management layer when executed on a processor In a non-transitory computer readable medium containing computer code embodying
The method
Determining whether the data meets a threshold corresponding to a reliability mechanism for storing the data;
Selecting the reliability mechanism if the data is satisfied with the threshold value;
Storing the data in accordance with the selected reliability mechanism.
前記選択された信頼性メカニズムは、客体複製を含み、
前記データを格納する段階は、
KVバリューを選択する段階と、
前記選択されたKVバリューに対応するキーをハッシングするためのハッシュを計算する段階と、
前記KVバリューに対応するキー客体のレプリカを格納するために前記N個のストレージ装置の中でストレージ装置の部分集合を決定する段階と、
同一の使用者キー名の下で、前記KVバリューに対応するアップデートされたバリューを前記決定されたストレージ装置の部分集合内の各々に書込む段階と、を含む、ことを特徴とする請求項17に記載の非一時的なコンピュータ読出し可能な媒体。
The selected reliability mechanism includes object replication;
The step of storing the data comprises
Selecting a KV value,
Calculating a hash for hashing a key corresponding to the selected KV value;
Determining a subset of storage devices among the N storage devices to store a replica of a key object corresponding to the KV value;
Writing the updated value corresponding to the KV value into each of the determined storage device subsets under the same user key name. Non-transitory computer readable medium according to claim 1.
前記選択された信頼性メカニズムは、パッキングを含み、
前記データを格納する段階は、
前記信頼性グループの前記N個のストレージ装置の中でk(但し、kは整数)個のストレージ装置に格納されたk個のキー客体を選択する段階と、
前記k個のキー客体に対応するk個のバリュー客体を回収する段階と、
前記k個のバリュー客体全ての仮想バリューサイズが同一になるように、前記k個のバリュー客体の中で最大のバリューサイズを有しないバリュー客体の終端に仮想ゼロをパディングする段階と、
前記k個のキー客体からr(但し、rは整数)個のパリティ客体を生成する段階と、
前記k個のキー客体を前記k個のストレージ装置に書込む段階と、
前記r個のパリティ客体を前記N個のストレージ装置の中でr個のストレージ装置に書込む段階と、を含み、
前記r個のストレージ装置の各々は、前記k個のストレージ装置と峻別され、k+r=Nである、ことを特徴とする請求項17に記載の非一時的なコンピュータ読出し可能な媒体。
The selected reliability mechanism includes packing
The step of storing the data comprises
Selecting k key objects stored in k (where k is an integer) storage devices among the N storage devices of the reliability group;
Collecting k value objects corresponding to the k key objects;
Padding virtual zeros at the end of the value objects not having the largest value size among the k value objects so that the virtual value sizes of all the k value objects are the same;
Generating r (where r is an integer) parity objects from the k key objects;
Writing the k key objects to the k storage devices;
Writing the r parity objects to r storage devices among the N storage devices;
The non-transitory computer-readable medium of claim 17, wherein each of the r storage devices is distinct from the k storage devices, and k + r = N.
前記選択された信頼性メカニズムは、スプリッティングを含み、
前記データを格納する段階は、
KVバリューを選択する段階と、
前記KVバリューをk(但し、kは整数)個の同一サイズのバリュー客体に分割する段階と、
前記k個の同一サイズのバリュー客体からr(但し、rは整数)個のパリティ客体を生成する段階と、
前記選択されたKVバリューに対応するキーをハッシングするためのハッシュを計算する段階と、
前記ハッシュに基づいて、前記N個のストレージ装置の中で前記KVバリューが位置する主要ストレージ装置を選択する段階と、
前記主要ストレージ装置から始めて連続した順序に、前記k個の同一サイズのバリュー客体及び前記r個のパリティ客体の各々を前記N個のストレージ装置に書込む段階と、を含み、
k+r=Nである、ことを特徴とする請求項17に記載の非一時的なコンピュータ読出し可能である媒体。
The selected reliability mechanism includes splitting;
The step of storing the data comprises
Selecting a KV value,
Dividing the KV value into k (where k is an integer) equal sized value objects;
Generating r (where r is an integer) parity objects from the k equal-sized value objects;
Calculating a hash for hashing a key corresponding to the selected KV value;
Selecting a main storage apparatus in which the KV value is located among the N storage apparatuses based on the hash;
Writing each of the k same size value objects and the r parity objects to the N storage devices in sequential order starting from the main storage device;
The non-transitory computer readable medium according to claim 17, characterized in that k + r = N.
JP2019006709A 2018-01-19 2019-01-18 Key-value data trust system, data storage method thereof, and non-transitory computer-readable medium containing computer code embodying the method Active JP7171452B2 (en)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US15/876028 2018-01-19
US15/876,028 US10795760B2 (en) 2017-03-20 2018-01-19 Key value SSD
US201862635311P 2018-02-26 2018-02-26
US62/635311 2018-02-26
US15/967,302 US10552062B2 (en) 2017-03-20 2018-04-30 System and method for storing very large key value objects
US15/967302 2018-04-30
US201862713479P 2018-08-01 2018-08-01
US62/713479 2018-08-01
US16/165,655 US11275762B2 (en) 2017-03-20 2018-10-19 System and method for hybrid data reliability for object storage devices
US16/165655 2018-10-19

Publications (3)

Publication Number Publication Date
JP2019128959A true JP2019128959A (en) 2019-08-01
JP2019128959A5 JP2019128959A5 (en) 2022-01-26
JP7171452B2 JP7171452B2 (en) 2022-11-15

Family

ID=67315591

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019006709A Active JP7171452B2 (en) 2018-01-19 2019-01-18 Key-value data trust system, data storage method thereof, and non-transitory computer-readable medium containing computer code embodying the method

Country Status (4)

Country Link
JP (1) JP7171452B2 (en)
KR (1) KR102663422B1 (en)
CN (1) CN110058806A (en)
DE (1) DE102018131523A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013050836A (en) * 2011-08-31 2013-03-14 Nec Corp Storage system, method for checking data integrity, and program
JP2015519674A (en) * 2012-06-13 2015-07-09 カリンゴ・インコーポレーテッドCaringo Incorporated Erasure code addition and replication in storage clusters
US20160006461A1 (en) * 2012-10-11 2016-01-07 Zte Corporation Method and device for implementation data redundancy

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020165942A1 (en) * 2001-01-29 2002-11-07 Ulrich Thomas R. Data path accelerator with variable parity, variable length, and variable extent parity groups
US7533330B2 (en) * 2005-06-27 2009-05-12 Seagate Technology Llc Redundancy for storage data structures
US8504535B1 (en) * 2010-12-20 2013-08-06 Amazon Technologies, Inc. Erasure coding and redundant replication
US8977804B1 (en) * 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Varying data redundancy in storage systems
US8949180B1 (en) * 2012-06-28 2015-02-03 Emc International Company Replicating key-value pairs in a continuous data protection system
US9135993B2 (en) * 2013-02-07 2015-09-15 Seagate Technology Llc Temperature based logic profile for variable resistance memory cells
US10761758B2 (en) * 2015-12-21 2020-09-01 Quantum Corporation Data aware deduplication object storage (DADOS)

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013050836A (en) * 2011-08-31 2013-03-14 Nec Corp Storage system, method for checking data integrity, and program
JP2015519674A (en) * 2012-06-13 2015-07-09 カリンゴ・インコーポレーテッドCaringo Incorporated Erasure code addition and replication in storage clusters
US20160006461A1 (en) * 2012-10-11 2016-01-07 Zte Corporation Method and device for implementation data redundancy

Also Published As

Publication number Publication date
JP7171452B2 (en) 2022-11-15
CN110058806A (en) 2019-07-26
KR20190088874A (en) 2019-07-29
KR102663422B1 (en) 2024-05-07
DE102018131523A1 (en) 2019-08-14

Similar Documents

Publication Publication Date Title
US10169383B2 (en) Method and system for scrubbing data within a data storage subsystem
CN110023896B (en) Block merging in a direct mapped flash memory storage system
KR101758544B1 (en) Synchronous mirroring in non-volatile memory systems
US11275762B2 (en) System and method for hybrid data reliability for object storage devices
US8904230B2 (en) Dynamically resizing a parity declustered group
CN110262922B (en) Erasure code updating method and system based on duplicate data log
CN110720088A (en) Accessible fast durable storage integrated into mass storage device
US20160217040A1 (en) Raid parity stripe reconstruction
CN109783016A (en) A kind of elastic various dimensions redundancy approach in distributed memory system
KR102460568B1 (en) System and method for storing large key value objects
WO2014056381A1 (en) Data redundancy implementation method and device
KR102368935B1 (en) Key value solid state drive
US10552062B2 (en) System and method for storing very large key value objects
US9543988B2 (en) Adaptively strengthening ECC for solid state cache
CN109445681B (en) Data storage method, device and storage system
US11609820B2 (en) Method and system for redundant distribution and reconstruction of storage metadata
US20230068214A1 (en) Storage system
US7685377B1 (en) Piecewise logical data management
Wang et al. Reducing storage overhead with small write bottleneck avoiding in cloud raid system
JP2019128959A (en) Key-value data reliability system, data storage method therefor, and non-transitory computer-readable medium including computer code implementing that method
Zhou et al. Darm: A deduplication-aware redundancy management approach for reliable-enhanced storage systems
Subedi Exploration of erasure-coded storage systems for high performance, reliability, and inter-operability
Schwarz et al. Reliability Stripe Coagulation in Two Failure Tolerant Storage Arrays
WO2023147469A1 (en) Restoring lost data
JP2004348281A (en) Redundancy storage system, method and program

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220118

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220118

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20220118

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220531

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220824

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221102

R150 Certificate of patent or registration of utility model

Ref document number: 7171452

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150