JP7171452B2 - Key-value data trust system, data storage method thereof, and non-transitory computer-readable medium containing computer code embodying the method - Google Patents

Key-value data trust system, data storage method thereof, and non-transitory computer-readable medium containing computer code embodying the method Download PDF

Info

Publication number
JP7171452B2
JP7171452B2 JP2019006709A JP2019006709A JP7171452B2 JP 7171452 B2 JP7171452 B2 JP 7171452B2 JP 2019006709 A JP2019006709 A JP 2019006709A JP 2019006709 A JP2019006709 A JP 2019006709A JP 7171452 B2 JP7171452 B2 JP 7171452B2
Authority
JP
Japan
Prior art keywords
storage devices
value
objects
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.)
Active
Application number
JP2019006709A
Other languages
Japanese (ja)
Other versions
JP2019128959A (en
JP2019128959A5 (en
Inventor
ピチュマニ,レクハ
亮 ソク 奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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

Description

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

消去コーディング(erasure coding)のようなデータ信頼性メカニズム(data reliability mechanisms)は、複数のストレージ装置を含む多様な設備でストレージ装置の故障及び‘データ汚染’(data corruptions)によるデータ損失を解決するのに使用できる。 Data reliability mechanisms such as erasure coding are used to resolve data loss due to storage device failures and 'data corruptions' in a variety of installations containing 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 employ erasure coding or replication through a RAID (redundant array of independent disks) method. can be used to provide data reliability.
As object formats become diverse in size and unstructured, efficient data conversion is required at the interface between object and block levels. 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 have been extensively investigated for conventional block storage devices. However, newer key-value storage devices have different interfaces and different storage semantics than traditional block devices. Therefore, for a wide variety of new key-value storage devices, there is the potential for key-value data and new data reliability techniques bespoke or specially adapted for key-value storage devices. have a nature.

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

本発明の目的は単一の論理ユニットとして1つの信頼性グループにグループ化され、仮想装置管理レイヤによって管理されるN(但し、Nは整数)個のストレージ装置を含むキーバリュー信頼性システムのデータ格納方法を提供することにある。 The object of the present invention is to provide data for a key-value reliability system containing 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. To provide a storage method.

本発明に係る実施形態は、その信頼性メカニズムが、仮想装置管理レイヤが故障したメモリ装置に存在する全てのキーを復旧し、新しいメモリ装置にコピーできるようにする単一キー復旧手続を各々遂行できるので、本文で記載された実施形態はメモリストレージ分野における改善に貢献できる。 Embodiments of the present invention each perform a single key recovery procedure whose trust mechanism allows the virtual device management layer to recover all keys residing on the failed memory device and copy them to a new memory device. As such, 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 contains 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 for a key-value trust system is provided.
the method comprising determining whether the data satisfies a threshold corresponding to a reliability mechanism for storing the data; selecting the reliability mechanism if the data satisfies the threshold; and storing the data according 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 is the object size of the data, throughput consideration of the data, read/write temperature (i.e., read/write frequency) of the data, and the N Based on one or more of the underlying erasure coding capabilities of the storage device.
(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, a checksum stored on each of the N storage devices storing the data; metadata for recording the size of the value object of the data, and the location of the parity group members of the N storage devices indicating where the data is stored among the N storage devices; The step of inserting with a key corresponding to the data is further included.
(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 for storing a replica of the key object corresponding to the KV value; and under the same user key name, determining the determined writing an updated value corresponding to the KV value to each in a subset of storage devices.

(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 includes k among the N storage devices of the grouped reliability group, where k is selecting k key objects stored in (integer) storage devices; retrieving k value objects corresponding to the k key objects; padding with virtual zeros the ends of value objects that do not have the largest value size among the k value objects so that they are identical, r (where r is an integer) 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 said r storage devices is distinct from said k storage devices, where 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 traditional erasure coding, and the N storage devices are traditional (k, r) MDS (maximum distance separable) erasure coding; Configured.
(8) The selected reliability mechanism includes packing using regenerative erasure coding, and the N storage devices are configured with (k, r, d) regenerative 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 the storing of the data includes selecting a KV value, dividing the KV value into k (where k is an integer) objects of the same size; generating r (where r is an integer) parity objects from the k same-sized objects; calculating a hash for hashing a key corresponding to the selected KV value; determining a primary storage device in which the KV value is located among the N storage devices based on a hash; 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) MDS (maximum distance separable) erasure coding. .
(11) the selected reliability mechanism includes packing using regenerative erasure coding, wherein the N storage devices are configured with (k, r, d) regenerative erasure coding to store the data; divides the k same-sized value objects into m (where m is an integer) subpackets using the regeneration erasure coding; and dividing each of the r parity objects into m Further comprising 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 that stores data based on a selected reliability mechanism. N storages, where N is an integer, configured as virtual devices using stateless data protection in the data reliability system, wherein the data reliability system stores 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 devices and data is stored in a storage device selected from the N storage devices. wherein the virtual device management layer determines whether the data satisfies a threshold corresponding to a reliability mechanism for storing the data, and the threshold is met by the data. If so, it is configured to select the reliability mechanism and store the data according to the selected reliability mechanism.

(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, the virtual device management layer selects a KV value, calculates a hash for hashing a key corresponding to the selected KV value, determining a subset of storage devices among the N storage devices for storing key object replicas corresponding to values, and storing data in the determined subset of storage devices under the same user key name; is configured to store the data by writing an updated value corresponding to the KV value to each of the .
(14) The selected reliability mechanism includes packing, and the virtual device management layer stores k keys stored on k (where k is an integer) storage devices among the N storage devices. select an object, retrieve k value objects corresponding to the k key objects, and perform a calculation among the k value objects such that all the k value objects have the same virtual value size. pad the end of value objects that do not have the largest value size with virtual zeros, generate r (where r is an integer) parity objects from the k key objects, convert the k key objects to the k storage devices, and writing the r parity objects to r storage devices among the N storage devices, wherein the data is stored in 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, wherein the virtual device management layer selects a KV value and divides the KV value into k (where k is an integer) value objects of equal size; generating r parity objects from the k same-sized value objects, where r is an integer, calculating a hash for hashing a key corresponding to the selected KV value, and based on the hash determining a main storage device in which the KV value is located among the N storage devices, and each of the k same-sized value objects and the r parity objects in consecutive order starting from the main storage device; to the N storage devices, where k+r=N.
(16) the selected reliability mechanism includes splitting using regeneration erasure coding, the N storage devices are configured with (k, r, d) regeneration erasure coding, and the virtual device management layer comprises: dividing the k same-sized objects into m (where m is an integer) subpackets using the regeneration-erasure coding, and dividing each of the r parity objects into m parity subpackets; By partitioning, it is further configured to store said data.

(17) 本発明のその他の実施形態によれば、プロセッサ上で実行される場合、単一の論理ユニットとして1つの信頼性グループにグループ化され、仮想装置管理レイヤによって管理されるN個のストレージ装置を含むキーバリュー信頼性システムにおいてデータを格納する方法を具現するコンピュータコードを含む非一時的なコンピュータ読出し可能である媒体が提供される。前記方法は前記データが前記データを格納するための信頼性メカニズムに対応する閾値を満足するか否かを決定する段階、前記閾値を前記データが満足した場合、前記信頼性メカニズムを選択する段階、及び前記選択された信頼性メカニズムに応じてデータを格納する段階を含む。 (17) According to another embodiment of the present invention, when executed on a processor, N storages grouped into one reliability group as a single logical unit and managed by the virtual device management layer. A non-transitory computer-readable medium is provided that includes computer code embodying a method for storing data in a key-value trust system that includes an apparatus. the method comprising determining whether the data satisfies a threshold corresponding to a reliability mechanism for storing the data; selecting the reliability mechanism if the data satisfies the threshold; and storing 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 a replica of the key object corresponding to the KV value; and storing the KV value under the same user key name. writing corresponding updated values to each in the determined subset of storage devices.
(19) the selected reliability mechanism includes packing, and storing the data in k (where k is an integer) storage devices among the N storage devices of the reliability group; selecting the k key objects obtained; collecting k value objects corresponding to the k key objects; padding with virtual zeros the ends of value objects that do not have 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; are distinguished from the k storage devices, k+r=N.
(20) the selected reliability mechanism includes splitting, wherein storing the data comprises selecting a KV value, dividing the KV value into k (where k is an integer) value objects of equal size; generating r (where r is an integer) parity objects from the k same-sized value objects; and calculating a hash for hashing a key corresponding to the selected KV value. , selecting, based on the hash, a primary storage device among the N storage devices in which the KV value is located; and starting with the primary storage device and in consecutive order, the k same-sized values. writing an object and each of the r parity objects to the N storage devices, where k+r=N.

本発明の実施形態に係る信頼性メカニズムによれば、仮想装置管理レイヤが故障したメモリ装置に存在する全てのキーを復旧し、新しいメモリ装置にコピーできるようにする単一キー復旧手続を各々遂行できるので、メモリストレージの信頼性を向上させることができる。 According to the reliability mechanism according to embodiments of the present invention, the virtual device management layer recovers all keys present in the failed memory device and each performs a single key recovery procedure that allows them to be copied to a new memory device. Therefore, the reliability of 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 ideas discussed above and/or other ideas will be further clarified and appreciated from the detailed description of the embodiments below in conjunction with the accompanying drawings.
1 is a block diagram illustrating a key-value trust system that stores key-value data based on selected trust mechanisms, in accordance with embodiments of the present invention; FIG. FIG. 4 is a flow diagram illustrating selection of a trust mechanism used by a key-value trust system based on a size threshold corresponding to the size of key-value pair data, according to an embodiment of the present invention; configured to store key-value data according to the reliability mechanism of K-object (k,r) erasure coding using traditional erasure coding, ie, multi-object “packing”, according to an embodiment of the present invention; 2 is a block diagram showing a group of KV storage devices arranged together; FIG. 4 is a block diagram illustrating storage of value objects and parity objects according to the reliability mechanism of K-object (k,r) erasure coding using traditional erasure coding, ie, multi-object “packing”, according to an embodiment of the present invention; FIG. is. Key-value data according to the trust 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 illustrating a group of KV storage devices configured to store the . According to an embodiment of the present invention, key-values according to the reliability mechanism of “Single_Object (k, r, d) erasure coding” or “Splitting” using regenerative erasure coding. 1 is a block diagram illustrating a group of KV storage devices configured to store data; FIG.

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

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

以下の詳細な記述で、説明の便宜及び多様な実施形態の理解を助けるために、多数の特定記述が提供される。しかし、多様な実施形態が詳細な記述無しで又は1つ又はそれ以上の均等な代替物と共に具現されることができる。他の例で、広く公知された構造及び装置は多様な実施形態を不必要に曖昧にしないようにブロック図の形態に図示される。 In the following detailed description, a number of specific statements are provided for convenience of explanation and to aid in understanding the various embodiments. However, various embodiments can be implemented without detailed description or with one or more equivalent alternatives. In other instances, well-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 text to describe various elements, structures, regions, hierarchies, and/or areas. Although used, it should be understood that such elements, configurations, regions, hierarchies, and/or areas are not limited to such terms. Such terms are only used to distinguish one element, structure, region, hierarchy or section from another element, structure, region, hierarchy or section. Thus, a first element, configuration, region, hierarchy or section described below could be termed a second element, configuration, region, hierarchy or section 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部分の上部面又は下部面に整列されたことを示す。 Spatially relative terms such as "beneath, below, lower, under", "above, upper", etc. are defined in terms of other terms illustrated in the drawings. May be used in text to readily describe the relationship of one element or feature to another. It will be appreciated that spatially relative terms are intended to include other orientations of the device in operation or use in addition to those illustrated in the drawings. For example, if the device is turned over in a drawing, an element described as "below or beneath or under" another element or feature would be "above" the other element or feature. . That is, the exemplary terms "below, under" can include both directions above and below. The device may be oriented in other directions (eg, rotated 90° or in other directions) and the spatially relative statements used in the text should be interpreted accordingly. Similarly, when we say that a first portion is aligned "on" a second portion, this means that the first portion is positioned on top of the second portion, with no limitation to its top surface based on the direction of gravity. Indicates aligned to the face or bottom face.

要素、階層、領域、又は構成が他の要素、階層、領域、又は構成と“連結された(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 structure is referred to as being “on, connected to, or coupled to” another element, hierarchy, region, or structure, it refers to the other element, hierarchy, region, or structure. Or, there may be one or more intermediate elements, hierarchies, regions, or configurations that are directly linked to the configuration. However, the term "directly connected" refers to one component being directly connected to another component with no intermediate structure. On the other hand, other expressions describing relationships between constructs such as "between, immediately between" or "adjacent to or directly adjacent to" can be similarly interpreted. , when an element or hierarchy is referred to as being between two elements or hierarchies, there may be only one element or hierarchy between the elements or structures, or there may be one or more intermediate elements or hierarchies. It can be appreciated that there can be more hierarchies.

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

本文で使用されるように、“実質的な(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 terms of approximation and terms of degree. Rather, it is intended to describe deviations inherent in the measured or calculated values that can be recognized by one of ordinary skill in the art. The term "about, approximately" as used herein includes the value referred to and takes into account the error associated with the measurement of the specified quantity and the measurement in question (e.g., limitations of the measurement system). It means within an acceptable deviation from the specified value as determined by one skilled in the art. For example, "about" can mean within one or more standard deviations, or within ±30%, 20%, 10%, 5% of the stated value. can. As used herein, the terms "use, using, and used" can be considered synonymous with "utilizing, utilizing, and utilized." Also, the term "exemplary" is intended to refer to an "example or illustration."

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

本文に記載された本発明の実施形態に係る電気又は電子装置及び/又は他の連関された装置又は構成は適切なハードウェア、ファームウェア(例えば、アプリケーション-特定集積回路(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つ又はそれ以上の他のコンピューティング装置に分散されることを理解することができる。 Electrical or electronic devices and/or other associated devices or configurations according to embodiments of the invention described herein may be implemented using suitable hardware, firmware (eg, application-specific integrated circuits (ASICs)). ), software, or a combination of software, firmware, and hardware, for example, various configurations of such devices may be implemented in one integrated circuit (IC) chip or in another In addition, various configurations of such devices can be formed on a flexible printed circuit film, a tape carrier package (TCP), a printed circuit board (PCB). circuit board, or formed on a single substrate.In addition, various configurations of such devices can be used in other systems to perform various functions described herein. One or more processor-driven processes or threads in one or more computing devices that communicate with a configuration and execute computer program instructions, which are stored in random access memory (RAM). The computer program instructions are stored in a memory that can be embodied in a computing device using standard memory devices such as CD-ROMs, flash drives, etc. It will be apparent to those skilled in the art that the functionality of various computing devices may be incorporated into a single computing device without departing from the spirit and aspects of the exemplary embodiments of the present invention. It can be understood that the functionality of a particular computing device can be combined or integrated, or that the functionality of a particular computing device is distributed among one or more other computing devices.

異なりに定義されない限り、本文で使用される技術的/科学的用語を含む全ての用語は本発明が属する技術分野での当業者によって共通的に理解されることと同一の意味を有する。共用辞書に定義されたことのような用語は連関された技術の脈絡及び/又は本発明の詳細な記述でそれらの意味と一貫された意味を有することと解釈されるべきであり、本文に明示的に定義されない限り、理想的であるか,又はあまりにも形式的な意味に解釈されてはならない。 Unless defined otherwise, 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 common dictionaries are to be construed to have a meaning consistent with their meaning in the context of the art to which they relate and/or in this detailed description of the invention and are not explicitly defined in the text. Unless explicitly defined, it should not be interpreted in an ideal or too formal sense.

以下で記述するように、本開示発明の実施形態は単一の論理ユニットにグループ化された複数のキーバリュー(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 present disclosure provide a key-value trust system (KV) consisting of multiple key-value (KV) storage devices grouped into a single logical unit. It provides a way to reliably store key-value data in a reliability system. Additionally, 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 implements Object Replication; K-Object (k, r) erasure coding-Packing; Single Object (k, r) Single Object (k, r) erasure coding-Splitting; K-Object (k, r, d) regeneration coding-Packing; Relies on multiple pluggable reliability mechanisms/techniques/implementations including Single Object (k,r,d) regeneration coding-splitting .

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

図1は本発明の実施形態に係る、選択された信頼性メカニズムに基づいてキーバリューデータを格納するキーバリュー信頼性システムを示すブロック図である。 FIG. 1 is a block diagram illustrating a key-value trust system that stores key-value data based on a selected trust mechanism, according to an embodiment of the 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, for a variety of new key-value (KV) "storage devices" {aka "memory devices", "drives", "KV-SSDs"} (130), key-value data and There is an implicit possibility that new data reliability mechanisms that are tailored or specially adapted for the KV storage device 130 will come in handy. Accordingly, such a hybrid key-value reliability system for the KV storage device 130 uses the hybrid reliability mechanism in response to one or more pluggable reliability mechanisms. , and controls the storage of KV pairs in them.
Although solid-state drives (SSDs) are commonly used to refer to KV storage devices described herein, other storage devices may be used in accordance with embodiments of the present invention. The design and operation of the virtual device management layer 120 according to embodiments of the present invention are described below.

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

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

仮想装置110は仮想装置管理レイヤ120としてステートレスハイブリッド信頼性管理者(stateless hybrid reliability manager)を含む。即ち、仮想装置管理レイヤ120はステートレス方式(即ち、キーバリューと装置との間のマッピングを維持することを必要としない)により動作する。 Virtual device 110 includes a stateless hybrid reliability manager as virtual device management layer 120 . That is, the virtual device management layer 120 operates in a stateless manner (ie, does not require maintaining a 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ペアを格納することを制御する。 Therefore, the virtual device 110 stores key-value data through N KV storage devices 130 (where N is an integer) (eg, KV-SSDs 130-1, 130-2, 130-3, 130-4, . . . , 130-N). It stores data 170 and stores key-value data 170 in the KV storage device 130 through the virtual device management layer 120 . That is, the virtual device management layer 120 manages the KV storage device 130 and controls the storage of KV pairs therein.

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

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

本文で記述する信頼性メカニズムの各々は、KVストレージ装置130の中で対応する1つの数字のキーモジュロ(key modulo)に対する同一のハッシュ関数を使用してキーバリューデータ170に対応するKVペアの第1のコピー又はチャンクを先ず格納できる。即ち、プラグ可能な信頼性メカニズムの各々に対して、信頼性メカニズムは使用者キーと同一のキーを使用して少なくとも第1のコピー/チャンクを格納できる。 Each of the trust mechanisms described herein uses the same hash function on the corresponding single-digit key modulo in the KV storage device 130 to hash the first of the KV pair corresponding to the key-value data 170 . 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 described above, embodiments of the present invention provide multiple pluggable reliability mechanisms that ensure reliable storage of key-value data 170 on multiple KV storage devices 130 . Therefore, the virtual device management layer 120 needs a reliability mechanism and can decide which of the reliability mechanisms to use.

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

本発明の実施形態の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)と称され得る。 How the reliability mechanisms are operated by the virtual device management layer 120 and when the reliability mechanisms are appropriately used and selected for the five reliability mechanisms of embodiments of the present invention are described below. describe. The five reliability mechanisms are Object Replication, K-Object (k, r) erasure coding-packing, and 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 It can be referred to as Single Object (k, r, d) regeneration coding-splitting.

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

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

例えば、S210で、仮想装置管理レイヤ120はサイズ閾値基盤の支援されている“n”(nは整数)個の信頼性メカニズムを受信する。S220で、仮想装置管理レイヤ120は1からnの順に1回に1つずつ、信頼性メカニズムの各々を単純に検討する。S230で、支援されるべき信頼性メカニズムの各々の検討で、仮想装置管理レイヤ120はデータのバリューサイズが各々の信頼性メカニズムに対応する閾値tより小さいか否かを決定する。 For example, at S210, the virtual device management layer 120 receives "n" (where 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 order from 1 to n. At S230, upon consideration of each reliability mechanism to be supported, the virtual device management layer 120 determines whether the value size of the data is less than the threshold ti corresponding to each reliability mechanism.

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

現在の実施形態で、“n”は本文に記載された実施形態の5つの異なる信頼性メカニズムに応じて5に等しい。比較的に非常に小さいキーバリュー(即ち、バリューサイズが比較的小さい場合)に対して、仮想装置管理レイヤ120は客体複製(Object Replication)の信頼性メカニズムの使用を選択する。若干大きいキーバリューに対して、仮想装置管理レイヤ120はパッキング、そしてその次に、スプリッティング(Splitting)(例えば、順に)の信頼性メカニズムを選択する一方、各々に対して伝統的な消去コーディングを使用する。しかし、さらに大きいキーバリューに対して、仮想装置管理レイヤ120はパッキング、その次にスプリッティング(Splitting)を選択する一方、伝統的な消去コーディングの代わりに再生成消去コーディング(regeneration erasure coding)を使用する。 In the current embodiment, "n" equals 5 depending on the five different reliability mechanisms of the embodiments described herein. For relatively very small key-values (ie, when the value size is relatively small), 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 selects the reliability mechanism of packing and then Splitting (e.g., in order) while using traditional erasure coding for each. do. However, for larger key-values, the virtual device management layer 120 chooses 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 embodiments of the present invention, the selection of the reliability mechanism for use depends on the object size of the object, the processing power requirements for the object, the read/write temperature of the corresponding key-value pairs, i.e. read/write temperature. It may be based on one or more of write frequency, basic 8underlying coding capabilities of KV storage devices, and/or detection of whether a key is hot or cold. For example, "hot" keys use the reliability mechanism of Object Replication regardless of their value size, while "cold" keys depend on their value size. It is applied to one of the reliability mechanisms of the erasure coding scheme. As another embodiment, the decision whether to use the Object Replication reliability mechanism may be based on both size and read/write temperature. Accordingly, a threshold corresponding to object read/write temperature, ie object read/write frequency, can be used to determine the reliability mechanism instead of the threshold corresponding to size in flowchart 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 a KV pair is relatively small, the “Object Replication” reliability mechanism is the appropriate choice by the virtual device management layer 120. be. Object Replication is applied per object (eg, per key-value data/KV pair 170). The Object Replication reliability mechanism has high storage overhead, but low read and restore costs, making it suitable for very small value sizes.

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

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

仮想装置管理レイヤ120又は使用者はキーバリューデータ170のコピーをどのぐらい多く生成するかを決定する。例えば、仮想装置管理レイヤ120を使用する分散されたシステムは3ウェイ複製(3-way replication)を選択し、3ウェイ複製を既定方式に(default)設定できる。しかし、システムの使用者は客体のレプリカの数を選択された規定値(default)より多く或いは少なく構成することができる。 Virtual device management layer 120 or the user decides how many copies of key-value data 170 to create. For example, a distributed system using the virtual device management layer 120 may select 3-way replication and set 3-way replication as the default. However, the user of the system can configure the number of object replicas to be more or less than the 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 three-way replication is used and the primary KV storage device 130-2 contains the primary copy of data (eg, key-value data 170), the virtual device management layer 120 will replicate the primary copy of the data. are stored in subsequent replicated KV storage devices 130-3, 130-4, and all copies of the data are identical. That is, a copy of the data may be transferred to two (or more) directly following KV storage devices 130-3, 130-4 (eg, in a circular fashion) following the KV storage device 130-2 containing 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, 130-4 under the same keyname/same user key as the primary KV storage device 130-2. All copies of data contain an identifier and 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, if a specific KV storage device 130 is faulty (for example, the KV storage device 130-3 is faulty), the KV storage devices 130 directly before and after the faulty KV storage device 130-3 ( For example, by recovering the value using a recovery mechanism for the key name to the KV storage devices 130-2, 130-4 directly before and after the KV storage device 130-3, the duplicated key is restored.

客体複製(Object Replication)の信頼性メカニズムを要約すれば、仮想装置管理レイヤ120はキーバリューデータ170を受信し、キー客体をハッシングしてキー客体のレプリカを格納するのに使用されるKVストレージ装置130を決定する。仮想装置管理レイヤ120は、以後に、同一の使用者キー名(例えば、適切なMetaIDフィールド)の下で、アップデートされたバリューを選択されたKVストレージ装置130(例えば、選択されたKVストレージ装置130-2、130-3、130-4)に書込む。 To summarize the reliability mechanism of Object Replication, the virtual device management layer 120 receives the key-value data 170, hashes the key object, and stores the replica of the key object. 130 is determined. The virtual device management layer 120 will subsequently pass the updated value to the selected KV storage device 130 (eg, the selected KV storage device 130) under the same user key name (eg, the 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 illustrates K-Object (k, r) erasure coding using traditional erasure coding (K-Object (k, r) erasure coding) or multiple objects according to an embodiment of the present invention. 1 is a block diagram illustrating a group of KV storage devices configured to store key-value data according to a multiple object “Packing” reliability mechanism; FIG.

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

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

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

例えば、仮想装置管理レイヤ120は各KVストレージ装置330(例えば、図1の信頼性グループ140の各KVストレージ装置130)に対して最近に書込まれたキー客体350のバッファを維持して、仮想装置管理レイヤ120がk個の相異なるKVストレージ装置からk個のキー客体350を選択して消去コーディングの実行を可能にし、これによってKVペアに対応するk個のキー客体350をパッキングする。 For example, virtual device management layer 120 maintains a buffer of recently written key objects 350 for each KV storage device 330 (eg, each KV storage device 130 in trust group 140 of FIG. The device management layer 120 selects k key objects 350 from k different KV storage devices to enable 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 respectively from four different KV storage devices 330-1, 330-3, 330-4, 330-N ( In the current embodiment, k=4).

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

図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)に位置される。 3 and 4, the key object 350 is located in the 'hash of key modulo n' th KV storage device 330 . That is, each hash of 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 on KV-SSD1 (330-1) and the j-th key (Key j ) 350-j is hashed and located on KV-SSD2 ( 330-2), the kth 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が計算される。
The 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 enable 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. is considered to have
That is, since the user value size 462 of each different value object 450 can vary (i.e., the value object 450 has a variable length or is a variable length key-value), the virtual zero By implementing the padding 464 method (i.e., padding the value object 450 with the zeros of the virtual zero padding 464 for coding purposes, while actually rewriting the data representing the value object 450 including the padded zeros). ), the parity object 460 has the same size as the largest size value object 470 in the parity group 340 .
Therefore, in the current embodiment, 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, thereby maximizing the size of value object 470. It is assumed to have the same size as "Val c". Therefore, a parity object 460 is computed.

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 computes r parity objects 460 from the k value/k value objects 450 corresponding to the k key objects 350 . Then r is an integer and k+r=N, where N is the number of KV storage devices 330 in parity group 340 (eg, N KV storage devices 130 in reliability group 140 of 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 assigns the r parity objects 460 to the remaining r different KV storage devices 330 in the parity group 340 (that is, k key objects 350 are selected and erasure-coded k KV storages). r KV storage devices are partitioned from the queue containing device 330). Therefore, each of the k key objects 350 and the r parity objects 460 is stored in a different one of the N storage devices 330, and the corresponding data is stored in the N KV storage devices 330 of the parity group 340. are evenly distributed in 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 that use traditional erasure coding, reading and writing are relatively straightforward, but recalculating and recovering parity is less straightforward. For parity restoration and recomputation (e.g., for updates), to know which key objects 350 are grouped together in the same parity group 340, thereby enabling parity computation: Information about the group of key objects 350 is stored in the KV storage device 330 (eg, KV storage device 130 of FIG. 1) along with the actual value size 462 of each value object 450 (i.e., the value size 462 minus the virtual zero padding 464). can be stored as a metadata object in each of the . Therefore, in the current embodiment, additional metadata is provided for each of the key objects 350 (eg, the key objects 350 located in the trust group 140 of FIG. 1) and the value objects 450 corresponding to the key objects 350. The length and coding order of the key object 350 can be used to store the KV storage device 130 .

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

データは使用者キーを使用して格納される。メタデータは使用者キー及び“Metadata”と称するMetaIDインジケータ(表示部、indicator)を使用して形成された内部キーに格納される。さらに、バリュー客体450がどこで終了されたか、仮想ゼロパディング464のゼロがどこで開始するかを決定することによって、バリュー客体450が再生成される場合に正確な再構成のためにバリューサイズ462はメタデータに格納されて仮想ゼロパディング464の位置(即ち、ゼロが何処に追加されたか)の認識を可能にする。 Data is stored using a user key. Metadata is stored in an internal key formed using the user key and a MetaID indicator called "Metadata". Additionally, by determining where the value object 450 ends and where the zeros of the virtual zero padding 464 begin, the value size 462 is metabolized for accurate reconstruction when the value object 450 is regenerated. It is stored in the data to allow recognition of the location of the virtual zero padding 464 (ie, where the zeros were 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 potential loss of data and metadata. Yes, which may make recovery impossible. However, in order to prevent such a situation, the metadata object value is defined as a "virtual device management layer 120" that can implement the previously mentioned Object Replication reliability mechanism 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)され得る。 Additionally, since the metadata object value is the same for all objects in the reliability group 140, the same metadata object value is the same if the KV storage device 330 supports object linking. It can be linked to multiple keynames commonly located in the KV storage device 330 . Furthermore, if batch writing is supported, object values can be batched together for better throughput.

現在の実施形態に係る伝統的な消去コーディングを使用するパッキングの信頼性メカニズムを要約すれば、仮想装置管理レイヤ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 stores the k most recently stored data from k different KV storage devices 330 via buffers. A key object 350 can be selected.
The virtual device management layer 120 then collects the value objects 450 corresponding to each key object 350 (excluding the maximum size value object 470 of the parity group 440), and pads them with virtual zero padding 350 to obtain the value objects. 450 can be generated to have the same size (eg, the size of the largest value object 470).
The virtual device management layer 120 can then generate r parity objects from the k key objects 350 using the MDS code process.
The virtual device management layer 120 then divides the r parity objects 460 into r KV storage devices different from the k KV storage devices 330 in which the key object 350 is selected among the N KV storage devices 330 . 330 can be written. At this time, k+r is the same as N.
The virtual device management layer 120 can then generate a metadata object indicating the above information.
Finally, the virtual device management layer 120 can write the key object 350 and parity object 460 along with the key formed from the user key and metadata identifier to the N KV storage devices 330 (eg, analogous to replication engine). .

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

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

KVバリュー570を分割した後に、実施形態によれば、仮想装置管理レイヤ120はk個のバリュー客体550の各々に対してチェックサムを計算する。その後に、仮想装置管理レイヤ120はk個のバリュー客体550の各々の前にメタデータを挿入する。 After partitioning the KV value 570, the virtual device management layer 120 computes a checksum for each of the k value objects 550, according to an embodiment. Virtual device management layer 120 then inserts metadata in front of 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 multiple smaller value objects 550, and then divides the multiple smaller value objects 550 obtained by splitting the KV value 570 into k consecutive distributed across multiple KV storage devices 530; Accordingly, the size of k same-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 using splitting with traditional erasure coding, the virtual device management layer 120 uses a systematic MDS code (e.g., the virtual device layer 120 uses a (4, 2) Reed-Solomon code, etc. as the base (de_fault) code). r parity values/objects 560 generated using (k, r) MDS erasure coding) can also be added. Thereafter, in a manner similar to the reliability mechanism of packing using traditional erasure coding described above, virtual device management layer 120 stores k value objects 550 and r parity objects 560 in N KV storages. Device 530 can be written (k+r=N).

従って、仮想装置管理レイヤ120は比較的大きいKVバリュー570をk個のバリュー客体550に分割でき、r個のパリティ客体560を計算し、追加でき、k個のバリュー客体550及びr個のパリティ客体560を(k+r)個のKVストレージ装置530に格納できる。 Therefore, 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 calculate 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 that uses traditional erasure coding, after hashing the key 580 corresponding to the value of the KV value 570, the virtual device management layer 120 stores the corresponding value object (e.g., k To store the first value object among the value objects 550, D1 in the embodiment of FIG. KV-SSD2) can be determined. The k+r Value Objects 550, 560 can be written to each of the primary KV storage device 530a and the (N-1) consecutive KV storage devices 530 under the same user key name.
That is, in the embodiment shown in FIG. 5, the first value object among the k value objects 550 is written to the main KV storage device 530a “KV-SSD2”, and the k value objects 550 are , the rest are written to the KV storage devices 530 "KV-SSD3" to "KV-SSDN" and "KV-SSD1" along with the r parity objects 560 in circular order (for example, the object replication reliability described above). in a manner 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 reliability mechanism of splitting using traditional erasure coding, the virtual device management layer 120 can split a relatively large KV value 570 into k equal-sized value objects 550 . The virtual device management layer 120 can then generate r parity objects 560 for the k value objects 550 using the MDS code process. The virtual device management layer 120 can then hash the key corresponding to the value of the KV value 570 to determine the primary KV storage device 530a where the first value object should be located. The virtual device management layer 120 then populates the appropriate MetaID fields corresponding to the primary KV storage device 530a and the (N−1) consecutive KV storage devices 530 generated by the virtual device management layer 120 in circular order. (k+r) value objects 550 and parity objects 560 can be written under the same user key name.

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

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

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

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

KVバリュー客体670が以前に記載された信頼性メカニズムと対応するKVバリュー客体よりさらに大きいバリューサイズを有し、KVバリュー客体670のk個のスプリット(バリュー客体)650の複数のサブパケット690の読出しが、スプリット(バリュー客体)650全体の読出し(例えば、伝統的な消去コーディングを使用するスプリッティングの信頼性メカニズムで遂行される)よりも低い性能に帰着しない場合に、再生成消去コーディングを使用するスプリッティングが適切であり得る。 The KV-value object 670 has a larger value size than the KV-value object corresponding to the previously described reliability mechanism, and the reading of multiple subpackets 690 of k splits (value objects) 650 of the KV-value object 670. does not result in lower performance than reading the entire split (value object) 650 (e.g., accomplished with the reliability mechanism of splitting 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 reliability mechanism for splitting using regeneration-erasure coding is that a KV value object 670 is split into k equal-sized value objects (splits) 650, each of which splits 650 into multiple subpackets 690 (e.g., In the current embodiment, the split 650 is virtually further split into four subpackets 690 each, and the reading of multiple subpackets 690 from the KV Value Object 670 is performed by the KV Value Object. A per-KV-value-object (KV-pair) mechanism that can accommodate KV-value objects with a value size that is so large that it can have reasonable throughput if it has better processing power than the entire 670 read. . Valuesize 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 illustrated in FIG. Additionally, k splits (value objects) 650 and r parity objects 660 can be written to N KV storage devices 630 (where (k+r)=N). However, each of the r parity objects 660 may be split into a plurality of parity subpackets 692 (the number of which corresponds, for example, to the number of subpackets 690 per split (value object) 650). Unlike splitting using traditional erasure coding, in the current 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 splitting reliability mechanism using regenerate-erasure coding, the virtual device layer 120 can split a large KV value object 670 into k equal-sized splits (value objects) 650 . The virtual device management layer 120 can then divide each of the k objects 650 into m equal-sized subpackets 690 (where k and m are integers). The virtual device management layer 120 then generates r parity objects 660 for the k objects 650 using a regeneration coding process, each of the r parity objects 660 having m identical size of parity subpackets 692 .
The virtual device management layer 120 can then hash the key corresponding to the KV value object 670 to determine the primary KV storage device 630a (KV-SSD_2 in this case) where the first split (value object) D1 is located. The virtual device management layer 120 is subsequently created by the virtual device management layer 120 and consists of the primary KV storage device 630a (in this case KV-SSD_2) and the (N-1) consecutive KV storage devices 630 (in this case, KV-SSD_2) in a circular fashion. In this case, k splits each containing m subpackets 690 ( value objects) 650 (D1 through Dk), and r parity objects 660 (Dk+1 through Dk+r) each containing m parity subpackets 692 may be written.

上述されたことによれば、仮想装置管理レイヤは、キーバリューデータの1つ又はそれ以上の属性に基づいてキーバリューデータの格納に対して信頼性メカニズムのグループから適切な信頼性メカニズムを選択できる。従って、本文に記載された実施形態は、記載された信頼性メカニズムが各々何れも単一キー復旧手続を遂行できるので、メモリストレージの分野における性能改善に貢献する。
メモリ装置の全体が故障した場合、本発明の実施形態の仮想装置管理レイヤは故障したメモリ装置に存在するキーの全てを復旧し、新しいメモリ装置にコピーできる。仮想装置管理レイヤは、信頼性グループ内の故障したメモリ装置に隣接するメモリ装置に存在するキーの全体に対する反複動作を遂行し、信頼性メカニズムが故障であるメモリ装置に存在することと判断したキーに対してキー単位複数動作を遂行することによって、キー全体の復旧及びコピーを達成できる。
According to what has been described above, the virtual device management layer can select an appropriate reliability mechanism from a group of reliability mechanisms for storing 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, as each of the described trust mechanisms can perform single-key recovery procedures.
In the event of an entire memory device failure, the virtual device management layer of embodiments of the present invention can recover all of the keys residing on the failed memory device and copy them to the new memory device. The virtual device management layer performs an iterative operation over all of the keys present in memory devices adjacent to the failed memory device in the trust group, and the keys that the trust mechanism determines to be present in the failing memory device. Recovery and copying of the entire key can be achieved by performing per-key multiple operations on the .

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

本文に記載された実施形態は、特定の用語を採用した場合でも、その用語は一般的、且つ記述的な意味にのみ使用され、且つ解釈されるべきであり、これに制限する意図はない。一部の実施形態で、本発明が属する技術分野における通常の技術者には明らかなように、特定の実施形態において明瞭に相異なって言及されない限り、特定実施形態と連関されて記述された特徴、属性、及び/又は要素は他の実施形態と連関されて記述された特徴、属性、及び/又は要素と組合わされて又は独立的に使用され得る。従って、当業者は形態又は詳細な記述の多様な変形が、今回の開示に含まれた機能的な均等物と合わせて以下の特許請求の範囲に表明された今回の開示の思想及び範囲から逸脱せずに、具現され得ることが理解されよう。 Although the embodiments described herein employ specific terminology, such terminology is to be used and construed in a generic and descriptive sense only and is not intended to be limiting. In some embodiments, as will be apparent to one of ordinary skill in the art to which this invention pertains, features described in connection with a particular embodiment unless explicitly stated to the contrary in that particular embodiment. , attributes and/or elements may be used in combination or independently with the features, attributes and/or elements described in connection with other embodiments. Thus, it will be appreciated by those skilled in the art that various changes in form or detailed description, along with functional equivalents contained in this disclosure, may depart from the spirit and scope of the present disclosure as expressed in the following claims. It will be appreciated that it may 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 Groups 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 Primary KV Storage Device 550 Value Object 560 Parity Object 570 KV Value/Key Value Data/KV Pair 580 Key 630 KV Storage Device 630a Primary KV Storage Device 650 Split (value object)
660 parity object 670 KV value object 690 subpacket 692 parity subpacket

Claims (17)

単一の論理ユニットとして1つの信頼性グループにグループ化されて仮想装置管理レイヤによって管理される1つ以上のストレージ装置を含むキーバリュー信頼性システムにおけるデータ格納方法であって、
前記仮想装置管理レイヤにより、前記データが前記データを格納するために客体複製を含む信頼性メカニズムに対応する閾値を満足することを決定する段階と、
前記仮想装置管理レイヤにより、メタデータに含まれて前記信頼性メカニズムを識別する信頼性メカニズム識別子によって識別される前記信頼性メカニズムを使用する段階と、
前記仮想装置管理レイヤにより、前記信頼性メカニズムに応じて前記データを格納する段階と、を有し、
前記仮想装置管理レイヤにより、前記データを格納する段階は、
KVバリューを選択する段階と、
前記KVバリューに対応するキーをハッシングするためのハッシュを計算する段階と、
前記KVバリューに対応するキー客体のレプリカを格納するために前記1つ以上のストレージ装置の中のストレージ装置の部分集合を決定する段階と、
同一の使用者キー名の下で前記ストレージ装置の部分集合に前記KVバリューに対応するアップデートされたバリューを書込む段階と、を含むことを特徴とする方法。
A data storage method in a key-value reliability system comprising one or more storage devices grouped into a reliability group as a single logical unit and managed by a virtual device management layer, comprising:
determining, by the virtual device management layer, that the data satisfies a threshold corresponding to a reliability mechanism including object replication for storing the data;
using, by the virtual device management layer, the reliability mechanism identified by a reliability mechanism identifier contained in metadata that identifies the reliability mechanism;
storing , by the virtual device management layer, the data according to the reliability mechanism;
Storing the data by the virtual device management layer includes:
selecting a KV value;
calculating a hash for hashing a key corresponding to the KV value;
determining a subset of storage devices among the one or more storage devices for storing key object replicas corresponding to the KV value;
and writing an updated value corresponding to the KV value to a subset of the storage devices under the same user key name.
前記閾値は、前記データの客体サイズ、前記データの処理能力考慮(throughput consideration)、前記データの読出し/書込み温度(read/write temperature)、及び前記1つ以上のストレージ装置の基本(underlying)消去コーディング能力の中の1つ以上に基づくことを特徴とする請求項1に記載の方法。 The threshold includes object size of the data, throughput consideration of the data, read/write temperature of the data, and underlying erase coding of the one or more storage devices. 2. The method of claim 1, based on one or more of capabilities. 前記仮想装置管理レイヤにより、ブルームフィルタ又はキャッシュを使用して前記信頼性メカニズムに対する前記データをテストする段階を更に含むことを特徴とする請求項1に記載の方法。 2. The method of claim 1, further comprising testing , by the virtual device management layer, the data against the reliability mechanism using a bloom filter or cache. 前記仮想装置管理レイヤにより、前記信頼性メカニズム、前記データを格納する前記1つ以上のストレージ装置に対するチェックサムを含む前記メタデータ、前記データを格納する前記1つ以上のストレージ装置に格納された前記データのバリュー客体のサイズ、及び前記1つ以上のストレージ装置の中のどこに前記データが格納されているのかを示す前記1つ以上のストレージ装置のパリティグループのメンバーの位置を記録するための前記メタデータを前記データに対応するキーと共に挿入する段階を更に含むことを特徴とする請求項1に記載の方法。 The virtual device management layer controls the reliability mechanism, the metadata including checksums for the one or more storage devices storing the data, and the metadata stored on the one or more storage devices storing the data. said meta for recording the size of a value object of data and the location of parity group members of said one or more storage devices indicating where in said one or more storage devices said data is stored; 2. The method of claim 1, further comprising inserting data with a key corresponding to said data. 前記信頼性メカニズムは、パッキング(packing)を含み、
前記仮想装置管理レイヤにより、前記データを格納する段階は、
前記信頼性グループの前記1つ以上のストレージ装置の中の同一数の第1のそれぞれの1つ以上のストレージ装置にそれぞれ格納された1つ以上のキー客体を選択する段階と、
前記1つ以上のキー客体に対応する1つ以上のバリュー客体を取り出す段階と、
前記1つ以上のバリュー客体の仮想バリューサイズが同一になるように前記1つ以上のバリュー客体の中の最大のバリューサイズを有しないバリュー客体の終端に仮想ゼロをパディングする段階と、
前記1つ以上のキー客体から1つ以上のパリティ客体を生成する段階と、
前記1つ以上のキー客体を前記第1のそれぞれの1つ以上のストレージ装置に書込む段階と、
前記1つ以上のパリティ客体を前記1つ以上のストレージ装置の中の同一数の第2のそれぞれの1つ以上のストレージ装置に書込む段階と、を含み、
前記第2のそれぞれの1つ以上のストレージ装置は、前記第1のそれぞれの1つ以上のストレージ装置から峻別(distinct)され、
前記1つ以上のキー客体の数と前記1つ以上のパリティ客体の数との和は、前記1つ以上のストレージ装置の数と同一であることを特徴とする請求項1に記載の方法。
the reliability mechanism includes packing;
Storing the data by the virtual device management layer includes:
selecting one or more key objects respectively stored in the same number of first respective one or more storage devices among the one or more storage devices of the reliability group;
retrieving one or more value objects corresponding to the one or more key objects;
padding the end of value objects that do not have the largest value size among the one or more value objects with virtual zeros so that the virtual value sizes of the one or more value objects are the same;
generating one or more parity objects from the one or more key objects;
writing the one or more key objects to the first respective one or more storage devices;
writing the one or more parity objects to the same number of second respective one or more storage devices among the one or more storage devices;
said second respective one or more storage devices are distinct from said first respective one or more storage devices;
The method of claim 1, wherein the sum of the number of the one or more key objects and the number of the one or more parity objects is the same as the number of the one or more storage devices.
前記信頼性メカニズムは、消去コーディングを使用するパッキングを含み、
前記1つ以上のストレージ装置は、MDS(maximum distance separable)消去コーディングで構成されることを特徴とする請求項5に記載の方法。
the reliability mechanism includes packing using erasure coding;
6. The method of claim 5, wherein the one or more storage devices are configured with maximum distance separable (MDS) erasure coding.
前記信頼性メカニズムは、再生成消去コーディングを使用するパッキングを含み、
前記1つ以上のストレージ装置は、再生成消去コーディングで構成されることを特徴とする請求項5に記載の方法。
the reliability mechanism includes packing using regenerative erasure coding;
6. The method of claim 5, wherein the one or more storage devices are configured with regeneration erasure coding.
前記信頼性メカニズムは、スプリッティングを含み、
前記仮想装置管理レイヤにより、前記データを格納する段階は、
前記KVバリューを1つ以上の同一サイズの客体に分割する段階と、
前記1つ以上の同一サイズの客体から1つ以上のパリティ客体を生成する段階と、
前記ハッシュに基づいて前記1つ以上のストレージ装置の中の前記KVバリューが位置する主要ストレージ装置を決定する段階と、
前記主要ストレージ装置から始めて連続する順序で、1つ以上のバリュー客体を前記1つ以上のストレージ装置の中の同一数の第1のそれぞれの1つ以上のストレージ装置に書み、1つ以上のパリティ客体を前記1つ以上のストレージ装置の中の同一数の第2のそれぞれの1つ以上のストレージ装置に書込む段階と、を含み、
前記第2のそれぞれの1つ以上のストレージ装置は、前記第1のそれぞれの1つ以上のストレージ装置から峻別(distinct)され、
前記1つ以上のバリュー客体の数と前記1つ以上のパリティ客体の数との和は、前記1つ以上のストレージ装置の数と同一であることを特徴とする請求項1に記載の方法。
the reliability mechanism includes splitting;
Storing the data by the virtual device management layer includes:
dividing the KV value into one or more equal-sized objects;
generating one or more parity objects from the one or more same-sized objects;
determining a primary storage device where the KV value is located among the one or more storage devices based on the hash;
writing one or more Value Objects to the same number of first respective one or more storage devices among said one or more storage devices in consecutive order starting from said primary storage device; to a second respective one or more storage devices of the same number among the one or more storage devices;
said second respective one or more storage devices are distinct from said first respective one or more storage devices;
The method of claim 1, wherein the sum of the number of the one or more value objects and the number of the one or more parity objects is the same as the number of the one or more storage devices.
前記信頼性メカニズムは、消去コーディングを使用するスプリッティングを含み、
前記1つ以上のストレージ装置は、MDS(maximum distance separable)消去コーディングで構成されることを特徴とする請求項8に記載の方法。
the reliability mechanism includes splitting using erasure coding;
9. The method of claim 8, wherein the one or more storage devices are configured with maximum distance separable (MDS) erasure coding.
前記信頼性メカニズムは、再生成消去コーディングを使用するスプリッティングを含み、
前記1つ以上のストレージ装置は、再生成消去コーディングで構成され、
前記仮想装置管理レイヤにより、前記データを格納する段階は、
前記再生成消去コーディングを使用して前記1つ以上の同一サイズの客体を1つ以上のサブパケットに分割する段階と、
前記1つ以上のパリティ客体を1つ以上のパリティサブパケットに分割する段階と、を更に含むことを特徴とする請求項8に記載の方法。
the reliability mechanism includes splitting using regeneration erasure coding;
wherein the one or more storage devices are configured with regeneration erasure coding;
Storing the data by the virtual device management layer includes:
dividing the one or more same-sized objects into one or more subpackets using the regeneration erasure coding;
9. The method of claim 8, further comprising dividing the one or more parity objects into one or more parity subpackets.
信頼性メカニズムに基づいてデータを格納するためのデータ信頼性システムであって、
ステートレスデータ保護を使用して仮想装置として構成される1つ以上のストレージ装置と、
客体複製を含む前記信頼性メカニズムに応じて前記1つ以上のストレージ装置を前記仮想装置として管理して前記1つ以上のストレージ装置にデータを格納するように構成された仮想装置管理レイヤと、を備え、
前記仮想装置管理レイヤは、前記データが前記データを格納するための前記信頼性メカニズムに対応する閾値を満足することを決定しメタデータに含まれて前記信頼性メカニズムを識別する信頼性メカニズム識別子によって識別される前記信頼性メカニズムを使用し前記信頼性メカニズムに応じて前記データを格納するように構成され、
前記仮想装置管理レイヤはKVバリューを選択し前記KVバリューに対応するキーをハッシングするためのハッシュを計算し前記KVバリューに対応するキー客体のレプリカを格納するために前記1つ以上のストレージ装置の中のストレージ装置の部分集合を決定し同一の使用者キー名の下で前記ストレージ装置の部分集合に前記KVバリューに対応するアップデートされたバリューを書込むことによって、前記データを格納するように構成されることを特徴とするデータ信頼性システム。
A data reliability system for storing data based on a reliability mechanism, comprising:
one or more storage devices configured as virtual devices using stateless data protection;
a virtual device management layer configured to manage the one or more storage devices as the virtual devices and store data in the one or more storage devices according to the reliability mechanism including object replication; prepared,
The virtual device management layer determines that the data satisfies a threshold corresponding to the reliability mechanism for storing the data, and includes a reliability mechanism identifier included in metadata to identify the reliability mechanism. configured to use the reliability mechanism identified by and store the data in response to the reliability mechanism;
The virtual device management layer selects a KV value, calculates a hash for hashing a key corresponding to the KV value, and stores a replica of the key object corresponding to the KV value. storing the data by determining a subset of storage devices among storage devices and writing an updated value corresponding to the KV value to the subset of storage devices under the same user key name; A data reliability system configured to:
前記信頼性メカニズムは、パッキングを含み、
前記仮想装置管理レイヤは前記1つ以上のストレージ装置の中の同一数の第1のそれぞれの1つ以上のストレージ装置に格納された1つ以上のキー客体を選択し前記1つ以上のキー客体に対応する1つ以上のバリュー客体を取り出し前記1つ以上のバリュー客体の仮想バリューサイズが同一になるように前記1つ以上のバリュー客体の中の最大のバリューサイズを有しないバリュー客体の終端に仮想ゼロをパディングし前記1つ以上のキー客体から1つ以上のパリティ客体を生成し前記1つ以上のキー客体を前記第1のそれぞれの1つ以上のストレージ装置に書込み前記1つ以上のパリティ客体を前記1つ以上のストレージ装置の中の同一数の第2のそれぞれの1つ以上のストレージ装置に書込むことによって、前記データを格納するように構成され、
前記第2のそれぞれの1つ以上のストレージ装置は、前記第1のそれぞれの1つ以上のストレージ装置から峻別され、
前記1つ以上のキー客体の数と前記1つ以上のパリティ客体の数との和は、前記1つ以上のストレージ装置の数と同一であることを特徴とする請求項11に記載のデータ信頼性システム。
the reliability mechanism includes packing;
The virtual device management layer selects one or more key objects stored in the same number of first respective one or more storage devices among the one or more storage devices, and extracting one or more value objects corresponding to a key object , and a value object that does not have the largest value size among the one or more value objects so that the virtual value sizes of the one or more value objects are the same; to generate one or more parity objects from the one or more key objects , write the one or more key objects to the first respective one or more storage devices; configured to store the data by writing the one or more parity objects to the same number of second respective one or more storage devices among the one or more storage devices;
said second respective one or more storage devices are distinct from said first respective one or more storage devices;
12. The data reliability of claim 11, wherein the sum of the number of the one or more key objects and the number of the one or more parity objects is the same as the number of the one or more storage devices. sex system.
前記信頼性メカニズムは、スプリッティングを含み、
前記仮想装置管理レイヤは前記KVバリューを1つ以上の同一サイズの客体に分割し前記1つ以上の同一サイズの客体から1つ以上のパリティ客体を生成し前記ハッシュに基づいて前記1つ以上のストレージ装置の中の前記KVバリューが位置する主要ストレージ装置を決定し前記主要ストレージ装置から始めて連続する順序で、1つ以上のバリュー客体を前記1つ以上のストレージ装置の中の同一数の第1のそれぞれの1つ以上のストレージ装置に書み、1つ以上のパリティ客体を前記1つ以上のストレージ装置の中の同一数の第2のそれぞれの1つ以上のストレージ装置に書込むことによって、前記データを格納するように構成され、
前記第2のそれぞれの1つ以上のストレージ装置は、前記第1のそれぞれの1つ以上のストレージ装置から峻別(distinct)され、
前記1つ以上のバリュー客体の数と前記1つ以上のパリティ客体の数との和は、前記1つ以上のストレージ装置の数と同一であることを特徴とする請求項11に記載のデータ信頼性システム。
the reliability mechanism includes splitting;
The virtual device management layer divides the KV value into one or more same-sized objects, generates one or more parity objects from the one or more same-sized objects, and generates the one or more parity objects based on the hash. determining a primary storage device in which said KV value is located among one or more storage devices, and placing one or more Value Objects into the same one among said one or more storage devices in sequential order starting with said primary storage device; write to a first respective one or more storage devices of the same number, and write one or more parity objects to a second respective one or more storage devices of the same number among the one or more storage devices configured to store the data by writing
said second respective one or more storage devices are distinct from said first respective one or more storage devices;
12. The data reliability of claim 11, wherein the sum of the number of the one or more value objects and the number of the one or more parity objects is the same as the number of the one or more storage devices. sex system.
前記信頼性メカニズムは、再生成消去コーディングを使用するスプリッティングを含み、
前記1つ以上のストレージ装置は、再生成消去コーディングで構成され、
前記仮想装置管理レイヤは、前記再生成消去コーディングを使用して前記1つ以上の同一サイズの客体を1つ以上のサブパケットに分割し、前記1つ以上のパリティ客体を1つ以上のパリティサブパケットに分割することによって、前記データを格納するように更に構成されることを特徴とする請求項13に記載のデータ信頼性システム。
the reliability mechanism includes splitting using regeneration erasure coding;
wherein the one or more storage devices are configured with regeneration erasure coding;
The virtual device management layer divides the one or more same-sized objects into one or more subpackets using the regeneration erasure coding, and divides the one or more parity objects into one or more parity subpackets. 14. The data reliability system of claim 13, further configured to store the data by dividing it into packets.
プロセッサ上で実行される場合、単一の論理ユニットとして1つの信頼性グループにグループ化されて仮想装置管理レイヤによって管理される1つ以上のストレージ装置を含むキーバリュー信頼性システムにおけるデータ格納方法を具現するコンピュータコードを有する非一時的なコンピュータ読み取り可能な記録媒体であって、
前記方法は、
前記仮想装置管理レイヤにより、前記データが前記データを格納するために客体複製を含む信頼性メカニズムに対応する閾値を満足することを決定する段階と、
前記仮想装置管理レイヤにより、メタデータに含まれて前記信頼性メカニズムを識別する信頼性メカニズム識別子によって識別される前記信頼性メカニズムを使用する段階と、
前記仮想装置管理レイヤにより、前記信頼性メカニズムに応じて前記データを格納する段階と、を有し、
前記仮想装置管理レイヤにより、前記データを格納する段階は、
KVバリューを選択する段階と、
前記KVバリューに対応するキーをハッシングするためのハッシュを計算する段階と、
前記KVバリューに対応するキー客体のレプリカを格納するために前記1つ以上のストレージ装置の中のストレージ装置の部分集合を決定する段階と、
同一の使用者キー名の下で前記ストレージ装置の部分集合に前記KVバリューに対応するアップデートされたバリューを書込む段階と、を含むことを特徴とする非一時的なコンピュータ読み取り可能な記録媒体。
A method for storing data in a key-value reliability system comprising one or more storage devices grouped into a reliability group as a single logical unit and managed by a virtual device management layer when executed on a processor. A non-transitory computer-readable recording medium having computer code embodying:
The method includes:
determining, by the virtual device management layer, that the data satisfies a threshold corresponding to a reliability mechanism including object replication for storing the data;
using, by the virtual device management layer, the reliability mechanism identified by a reliability mechanism identifier contained in metadata that identifies the reliability mechanism;
storing , by the virtual device management layer, the data according to the reliability mechanism;
Storing the data by the virtual device management layer includes:
selecting a KV value;
calculating a hash for hashing a key corresponding to the KV value;
determining a subset of storage devices among the one or more storage devices for storing key object replicas corresponding to the KV value;
and writing an updated value corresponding to the KV value to a subset of the storage devices under the same user key name.
前記信頼性メカニズムは、パッキングを含み、
前記仮想装置管理レイヤにより、前記データを格納する段階は、
前記信頼性グループの前記1つ以上のストレージ装置の中の同一数の第1のそれぞれの1つ以上のストレージ装置に格納された1つ以上のキー客体を選択する段階と、
前記1つ以上のキー客体に対応する1つ以上のバリュー客体を取り出す段階と、
前記1つ以上のバリュー客体の仮想バリューサイズが同一になるように前記1つ以上のバリュー客体の中の最大のバリューサイズを有しないバリュー客体の終端に仮想ゼロをパディングする段階と、
前記1つ以上のキー客体から1つ以上のパリティ客体を生成する段階と、
前記1つ以上のキー客体を前記第1のそれぞれの1つ以上のストレージ装置に書込む段階と、
前記1つ以上のパリティ客体を前記1つ以上のストレージ装置の中の同一数の第2のそれぞれの1つ以上のストレージ装置に書込む段階と、を含み、
前記第2のそれぞれの1つ以上のストレージ装置は、前記第1のそれぞれの1つ以上のストレージ装置から峻別(distinct)され、
前記1つ以上のキー客体の数と前記1つ以上のパリティ客体の数との和は、前記1つ以上のストレージ装置の数と同一であることを特徴とする請求項15に記載の非一時的なコンピュータ読み取り可能な記録媒体。
the reliability mechanism includes packing;
Storing the data by the virtual device management layer includes:
selecting one or more key objects stored in the same number of first respective one or more storage devices among the one or more storage devices of the reliability group;
retrieving one or more value objects corresponding to the one or more key objects;
padding the end of value objects that do not have the largest value size among the one or more value objects with virtual zeros so that the virtual value sizes of the one or more value objects are the same;
generating one or more parity objects from the one or more key objects;
writing the one or more key objects to the first respective one or more storage devices;
writing the one or more parity objects to the same number of second respective one or more storage devices among the one or more storage devices;
said second respective one or more storage devices are distinct from said first respective one or more storage devices;
16. The non-temporary storage device of claim 15, wherein the sum of the number of the one or more key objects and the number of the one or more parity objects is the same as the number of the one or more storage devices. computer-readable recording medium.
前記信頼性メカニズムは、スプリッティングを含み、
前記仮想装置管理レイヤにより、前記データを格納する段階は、
前記KVバリューを1つ以上の同一サイズの客体に分割する段階と、
前記1つ以上の同一サイズの客体から1つ以上のパリティ客体を生成する段階と、
前記ハッシュに基づいて前記1つ以上のストレージ装置の中の前記KVバリューが位置する主要ストレージ装置を決定する段階と、
前記主要ストレージ装置から始めて連続した順序で、1つ以上のバリュー客体を前記1つ以上のストレージ装置の中の同一数の第1のそれぞれの1つ以上のストレージ装置に書み、1つ以上のパリティ客体を前記1つ以上のストレージ装置の中の同一数の第2のそれぞれの1つ以上のストレージ装置に書込む段階と、を含み、
前記第2のそれぞれの1つ以上のストレージ装置は、前記第1のそれぞれの1つ以上のストレージ装置から峻別(distinct)され、
前記1つ以上のバリュー客体の数と前記1つ以上のパリティ客体の数との和は、前記1つ以上のストレージ装置の数と同一であることを特徴とする請求項15に記載の非一時的なコンピュータ読み取り可能な記録媒体。
the reliability mechanism includes splitting;
Storing the data by the virtual device management layer includes:
dividing the KV value into one or more equal-sized objects;
generating one or more parity objects from the one or more same-sized objects;
determining a primary storage device where the KV value is located among the one or more storage devices based on the hash;
writing one or more Value Objects to the same number of first respective one or more storage devices among said one or more storage devices in sequential order starting from said primary storage device; to a second respective one or more storage devices of the same number among the one or more storage devices;
said second respective one or more storage devices are distinct from said first respective one or more storage devices;
16. The non-temporary storage device of claim 15, wherein the sum of the number of the one or more value objects and the number of the one or more parity objects is the same as the number of the one or more storage devices. computer-readable recording medium.
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/967302 2018-04-30
US15/967,302 US10552062B2 (en) 2017-03-20 2018-04-30 System and method for storing very large key value objects
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 JP2019128959A (en) 2019-08-01
JP2019128959A5 JP2019128959A5 (en) 2022-01-26
JP7171452B2 true 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) KR20190088874A (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

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
DE102018131523A1 (en) 2019-08-14
JP2019128959A (en) 2019-08-01
CN110058806A (en) 2019-07-26
KR20190088874A (en) 2019-07-29

Similar Documents

Publication Publication Date Title
CN110023896B (en) Block merging in a direct mapped flash memory storage system
US11093324B2 (en) Dynamic data verification and recovery in a storage system
EP3230870B1 (en) Elastic metadata and multiple tray allocation
KR101758544B1 (en) Synchronous mirroring in non-volatile memory systems
US11275762B2 (en) System and method for hybrid data reliability for object storage devices
US6393516B2 (en) System and method for storage media group parity protection
US8060772B2 (en) Storage redundant array of independent drives
US7958304B1 (en) Dynamically adapting the fault tolerance and performance characteristics of a raid-based storage system by merging and splitting raid groups
US20060136778A1 (en) Process for generating and reconstructing variable number of parity for byte streams independent of host block size
KR102368935B1 (en) Key value solid state drive
CN107851061B (en) Hardware assisted transaction commit in remote memory
US8082465B1 (en) Auto-adapting cache memory system and method
CN109783016A (en) A kind of elastic various dimensions redundancy approach in distributed memory system
JP2016534471A (en) Recovery of independent data integrity and redundancy driven by targets in shared nothing distributed storage systems
WO2001013236A1 (en) Object oriented fault tolerance
EP1535154A1 (en) Using file system information in raid data reconstruction and migration
JP2018508073A (en) Data removal, allocation and reconstruction
US20070276999A1 (en) Adaptive grouping in object raid
JP7140688B2 (en) Data storage system and method of accessing key-value pair objects
US20230068214A1 (en) Storage system
CN113552998B (en) Method, apparatus and program product for managing stripes in a storage system
JP7171452B2 (en) Key-value data trust system, data storage method thereof, and non-transitory computer-readable medium containing computer code embodying the method
Zhou et al. Darm: A deduplication-aware redundancy management approach for reliable-enhanced storage systems
KR100579133B1 (en) Method for data placement of the divided block disk array using distributed parity, and method for read/write controlling large and small block of the divided block distributed parity disk array

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