KR102663422B1 - A system and method for hybrid data reliability for object storage devices - Google Patents

A system and method for hybrid data reliability for object storage devices Download PDF

Info

Publication number
KR102663422B1
KR102663422B1 KR1020180145797A KR20180145797A KR102663422B1 KR 102663422 B1 KR102663422 B1 KR 102663422B1 KR 1020180145797 A KR1020180145797 A KR 1020180145797A KR 20180145797 A KR20180145797 A KR 20180145797A KR 102663422 B1 KR102663422 B1 KR 102663422B1
Authority
KR
South Korea
Prior art keywords
value
objects
storage devices
data
key
Prior art date
Application number
KR1020180145797A
Other languages
Korean (ko)
Other versions
KR20190088874A (en
Inventor
레카 피추마니
기양석
Original Assignee
삼성전자주식회사
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 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20190088874A publication Critical patent/KR20190088874A/en
Application granted granted Critical
Publication of KR102663422B1 publication Critical patent/KR102663422B1/en

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/0608Saving storage space on 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/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

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

Abstract

본 발명의 실시 예에 따르면, 단일 논리적 유닛으로서 신뢰성 그룹으로 그룹화되고, 가상 장치 관리 레이어에 의해 관리되는 N개의 스토리지 장치들(N은 정수)을 키-밸류 신뢰성 시스템의 데이터 저장 방법은 데이터가 데이터를 저장하는 신뢰성 메커니즘에 대응하는 임계치를 만족하는지 판별하는 단계, 임계치가 만족된 경우, 신뢰성 메커니즘을 선택하는 단계, 및 선택된 신뢰성 메커니즘에 따라 데이터를 저장하는 단계를 포함한다.According to an embodiment of the present invention, the data storage method of the key-value reliability system includes N storage devices (N is an integer) grouped into a reliability group as a single logical unit and managed by a virtual device management layer. It includes determining whether a threshold corresponding to the reliability mechanism for storing is satisfied, selecting a reliability mechanism if the threshold is satisfied, and storing data according to the selected reliability mechanism.

Figure R1020180145797
Figure R1020180145797

Description

객체 스토리지 장치들에 대한 하이브리드 데이터 신뢰성을 위한 시스템 및 방법{A SYSTEM AND METHOD FOR HYBRID DATA RELIABILITY FOR OBJECT STORAGE DEVICES}System and method for hybrid data reliability for object storage devices {A SYSTEM AND METHOD FOR HYBRID DATA RELIABILITY FOR OBJECT STORAGE DEVICES}

본 발명의 실시 예들의 하나 또는 그 이상의 사상들은 일반적으로 데이터 스토리지 시스템들과 관련되고, 더욱 상세하게는, 복수의 키-밸류 스토리지 장치들을 포함하는 키-밸류 신뢰성 시스템에 키-밸류 데이터를 신뢰할 수 있게 저장하는 신뢰성 메커니즘을 선택하는 방법에 관한 것이다. One or more aspects of the embodiments of the present invention relate generally to data storage systems, and more specifically, to key-value reliability systems that include a plurality of key-value storage devices. It is about how to select a reliable mechanism for storing data.

소거 코딩(erase coding)과 같은 데이터 신뢰성 메커니즘들(data reliability mechanisms)은 복수의 스토리지 장치들을 포함하는 다양한 설비들에서 스토리지 장치 고장들 및 데이터 변형(data corruptions)으로 인한 데이터 손실을 해결하는데 사용될 수 있다.Data reliability mechanisms, such as erase coding, can be used to address data loss due to storage device failures and data corruptions in a variety of facilities containing multiple storage devices. .

종래의 솔리드 스테이트 드라이브들(SSDs; solid state drives)은 일반적으로 블록 인터페이스(block interface)만 사용하고, RAID(redundant array of independent disks) 방식을 통해, 소거 코딩(erasure coding), 또는 복제(replication)를 통해 데이터 신뢰성을 제공할 수 있다. 객체 포맷들이 크기가 다양해지고, 조직화되지 않음에 따라, 객체 및 블록 레벨 인터페이스들 사이에서 효율적인 데이터 변환(data conversion)이 요구된다. 더욱이, 공간 효율성 및 고속 액세스 시간 특성들을 유지하면서 데이터 신뢰성을 보장하는 것이 필요하다. Conventional solid state drives (SSDs) generally use only a block interface and use RAID (redundant array of independent disks) to perform erasure coding or replication. Data reliability can be provided through . As object formats become more diverse and disorganized, efficient data conversion between object and block level interfaces is required. Moreover, it is necessary to ensure data reliability while maintaining space efficiency and high-speed access time characteristics.

RAID와 같은 기법들은 종래의 블록 스토리지 장치들에 대하여 잘 연구되어 있다. 그러나 상대적으로 새로운 키-밸류 스토리지 장치들은 종래의 블록 장치들과 다른 인터페이스들 및 다른 스토리지 시맨틱(storage semantics)을 가질 수 있다. 따라서 다양한 새로운 키-밸류 스토리지 장치들은 키-밸류 데이터 및 키-밸류 스토리지 장치들에 적합하거나 또는 그것에 맞추어진 새로운 데이터 신뢰성 기법들로부터 잠재적인 이점을 가질 수 있다. Techniques such as RAID are well studied for conventional block storage devices. However, relatively new key-value storage devices may have different interfaces and different storage semantics than traditional block devices. Accordingly, a variety of new key-value storage devices may potentially benefit from new data reliability techniques suitable for or tailored to key-value data and key-value storage devices.

실시 예들의 신뢰성 메커니즘들이 가상 장치 관리 레이어가 고장난 메모리 장치에 존재하는 모든 키들을 복구하고 새로운 메모리 장치로 복사할 수 있게 하는 단일 키 복구 절차를 각각 수행할 수 있기 때문에, 본문에서 기재된 실시 예들은 메모리 스토리지 분야에서 향상을 제공할 수 있다.Because the reliability mechanisms of the embodiments can each perform a single key recovery procedure that allows the virtual device management layer to recover all keys present in a failed memory device and copy them to a new memory device, the embodiments described herein It can provide improvements in the storage area.

본 발명의 실시 예에 따르면, 단일 논리적 유닛으로서 신뢰성 그룹으로 그룹화되고, 가상 장치 관리 레이어에 의해 관리되는 N(단, N은 정수)개의 스토리지 장치들을 포함하는 키-밸류 신뢰성 시스템의 데이터 저장 방법이 제공된다. 상기 방법은 상기 데이터가 상기 데이터를 저장하기 위한 신뢰성 메커니즘에 대응하는 임계치를 만족하는지 판별하는 단계, 상기 임계치가 만족된 경우, 상기 신뢰성 메커니즘을 선택하는 단계, 및 상기 선택된 신뢰성 메커니즘에 따라 상기 데이터를 저장하는 단계를 포함한다. According to an embodiment of the present invention, a data storage method of a key-value reliability system including N (where N is an integer) storage devices grouped into a reliability group as a single logical unit and managed by a virtual device management layer is provided. provided. The method includes determining whether the data satisfies a threshold corresponding to a reliability mechanism for storing the data, if the threshold is satisfied, selecting the reliability mechanism, and storing the data according to the selected reliability mechanism. Includes a saving step.

상기 임계치는 상기 데이터의 객체 크기, 상기 데이터의 처리량 고려(throughput consideration), 상기 데이터의 읽기/쓰기 온도(read/write temperature), 및 상기 N개의 스토리지 장치들의 기본 소거 코딩 능력 중 하나 또는 그 이상에 기반된다.The threshold depends on one or more of the object size of the data, throughput consideration of the data, read/write temperature of the data, and basic erase coding capabilities of the N storage devices. It is based on

상기 방법은 하나 또는 그 이상의 블룸 필터들 또는 캐시들을 사용하여 상기 신뢰성 메커니즘에 대한 상기 데이터를 테스트하는 단계를 더 포함한다.The method further includes testing the data for the reliability mechanism using one or more Bloom filters or caches.

상기 방법은 상기 선택된 신뢰성 메커니즘, 상기 데이터를 저장하는 상기 N개의 스토리지 장치들 각각에 대한 하나 또는 그 이상의 체크섬들, 상기 데이터를 저장하는 상기 N개의 스토리지 장치들 각각에 저장된 상기 데이터의 밸류들의 객체 크기들, 및 상기 N개의 스토리지 장치들 중 어떤 것에 상기 데이터가 저장되었는지를 가리키는 상기 N개의 스토리지 장치들의 패리티 그룹 멤버들의 위치를 기록하기 위한 메타데이터를 상기 데이터에 대응하는 키와 함께 삽입하는 단계를 더 포함한다.The method includes the selected reliability mechanism, one or more checksums for each of the N storage devices storing the data, and an object size of values of the data stored in each of the N storage devices storing the data. , and inserting metadata for recording the locations of parity group members of the N storage devices indicating which of the N storage devices the data is stored in, together with a key corresponding to the data. Includes.

상기 선택된 신뢰성 메커니즘은 객체 복제를 포함하고, 상기 데이터를 저장하는 단계는 KV 밸류를 선택하는 단계, 상기 선택된 KV 밸류에 대응하는 키를 해싱하기 위한 해시를 연산하는 단계, 상기 KV 밸류와 대응하는 키 객체들의 복제본들을 저장하기 위해 상기 N개의 스토리지 장치들 중 일부 스토리지 장치들을 판별하는 단계, 및 동일한 사용자 키명칭 하에서, 상기 판별된 일부 스토리지 장치들 각각에 상기 KV 밸류와 대응하는 업데이트된 밸류들을 기입하는 단계를 포함한다.The selected trust mechanism includes object replication, and storing the data includes selecting a KV value, computing a hash to hash a key corresponding to the selected KV value, and a key corresponding to the KV value. Identifying some storage devices among the N storage devices for storing replicas of objects, and writing updated values corresponding to the KV value to each of the determined partial storage devices under the same user key name. Includes steps.

상기 선택된 신뢰성 메커니즘은 패킹(packing)을 포함하고, 상기 데이터를 저장하는 단계는 상기 신뢰성 그룹의 상기 N개의 스토리지 장치들 중 k(단, k는 정수)개의 스토리지 장치들에 저장된 k개의 키 객체들을 선택하는 단계, 상기 k개의 키 객체들에 대응하는 k개의 밸류 객체들을 회수하는 단계, 상기 k개의 밸류 객체들 전부의 가상 크기가 동일해 지도록 상기 k개의 밸류 객체들 중 가장 큰 밸류 크기를 갖지 않는 밸류 객체들의 종단들에 가상 제로들을 패딩하는 단계, 상기 k개의 키 객체들로부터 r(단, r은 정수)개의 패리티 객체들을 생성하는 단계, 상기 k개의 키 객체들을 상기 k개의 스토리지 장치들로 기입하는 단계, 및 상기 r개의 패리티 객체들을 상기 N개의 스토리지 장치들 중 r개의 스토리지 장치들에 기입하는 단계를 포함하고, 상기 r개의 스토리지 장치들 각각은 상기 k개의 스토리지 장치들과 구분되고, 단, k+r=N이다. The selected reliability mechanism includes packing, and the step of storing the data includes k key objects stored in k (where k is an integer) storage devices among the N storage devices in the reliability group. selecting, retrieving k value objects corresponding to the k key objects, not having the largest value size among the k value objects so that the virtual sizes of all the k value objects are the same. Padding virtual zeros to the ends of 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, wherein each of the r storage devices is distinct from the k storage devices, provided that: k+r=N.

상기 선택된 신뢰성 메커니즘은 전형적인 소거 코딩을 사용하는 패킹을 포함하고, 상기 N개의 스토리지 장치들은 전형적인 (k,r) MDS(maximum distance separable) 소거 코딩으로 구성된다.The selected reliability mechanism includes packing using typical erasure coding, and the N storage devices are configured with typical (k,r) maximum distance separable (MDS) erasure coding.

상기 선택된 신뢰성 메커니즘은 재생성 소거 코딩을 사용하는 패킹을 포함하고, 상기 N개의 스토리지 장치들은 (k,r,d) 재생성 소거 코딩으로 구성된다.The selected reliability mechanism includes packing using regenerative erasure coding, and the N storage devices are configured with (k,r,d) regenerative erasure coding.

상기 선택된 신뢰성 메커니즘은 스플릿팅을 포함하고, 상기 데이터를 저장하는 단계는 KV 밸류를 선택하는 단계, 상기 KV 밸류를 k(단, k는 정수)개의 동일 크기의 객체들로 분할하는 단계, 상기 k개의 동일 크기의 객체들로부터 r(단 r은 정수)개의 패리티 객체들을 생성하는 단계, 상기 선택된 KV 밸류에 대응하는 키를 해싱하기 위한 해시를 연산하는 단계, 상기 해시를 기반으로 상기 N개의 스토리지 장치들 중 상기 KV 밸류가 위치할 주요 장치를 판별하는 단계, 및 상기 주요 장치로부터 시작하여 연속하는 순서로 상기 k개의 동일 크기의 객체들 및 상기 r개의 패리티 객체들 각각을 상기 N개의 스토리지 장치들에 기입하는 단계를 포함하고, 단, k+r=N이다.The selected reliability mechanism includes splitting, and storing the data includes selecting a KV value, splitting the KV value into k (where k is an integer) equal-sized objects, and k Creating r parity objects (where r is an integer) from objects of the same size, calculating a hash for hashing the key corresponding to the selected KV value, and storing the N storage devices based on the hash. determining a main device in which the KV value is to be located among the main devices, and each of the k objects of the same size and the r parity objects in successive order starting from the main device to the N storage devices. It includes a writing step, provided that k+r=N.

상기 선택된 신뢰성 메커니즘은 전형적인 소거 코딩을 사용하는 스플릿팅을 포함하고, 상기 N개의 스토리지 장치들은 전형적인 (k,r) MDS(maximum distance separable) 소거 코딩으로 구성된다.The selected reliability mechanism includes splitting using typical erasure coding, and the N storage devices are configured with typical (k,r) maximum distance separable (MDS) erasure coding.

상기 선택된 신뢰성 메커니즘은 재생성 소거 코딩을 사용하는 패킹을 포함하고, 상기 N개의 스토리지 장치들은 (k,r,d) 재생성 소거 코딩으로 구성되고, 상기 데이터를 저장하는 단계는 상기 재생성 소거 코딩을 사용하여 상기 k개의 동일 크기의 객체들을 m(단, m은 정수)개의 서브패킷들로 분할하는 단계, 및 상기 r개의 패리티 객체들 각각을 m개의 패리티 서브패킷들로 분할할하는 단계를 더 포함한다.The selected reliability mechanism includes packing using regenerative erasure coding, the N storage devices are configured with (k,r,d) regenerative erasure coding, and storing the data uses the regenerative erasure coding. It further includes dividing the k objects of the same size into m (where m is an integer) subpackets, and dividing each of the r parity objects into m parity subpackets.

본 발명의 다른 실시 예에 따르면, 선택된 신뢰성 메커니즘을 기반으로 데이터를 저장하는 데이터 신뢰성 시스템이 제공된다. 상기 데이터 신뢰성 시스템은 선택된 신뢰성 메커니즘을 기반으로 데이터를 저장하는 데이터 신뢰성 시스템에 있어서, 스테이트리스 데이터 보호를 사용하여 가상 장치로서 구성되는 N(단, N은 정수)개의 스토리지 장치들, 및 상기 선택된 신뢰성 메커니즘에 따라, 상기 N개의 스토리지 장치들을 상기 가상 장치로서 관리하여 상기 N개의 스토리지 장치들 중 선택된 스토리지 장치들에 데이터를 저장하도록 구성된 가상 장치 관리 레이어를 포함하고, 상기 가상 장치 관리 레이어는 상기 데이터가 상기 데이터를 저장하기 위한 신뢰성 메커니즘에 대응하는 임계치를 만족하는지 판별하고, 상기 임계치가 만족된 경우, 상기 신뢰성 메커니즘을 선택하고, 상기 선택된 신뢰성 메커니즘에 따라 상기 데이터를 저장하도록 구성된다.According to another embodiment of the present invention, a data reliability system is provided that stores data based on a selected reliability mechanism. The data reliability system stores data based on a selected reliability mechanism, comprising N (where N is an integer) storage devices configured as virtual devices using stateless data protection, and the selected reliability system. According to the mechanism, a virtual device management layer is configured to manage the N storage devices as the virtual devices to store data in selected storage devices among the N storage devices, wherein the virtual device management layer stores the data. and determine whether a threshold corresponding to a reliability mechanism for storing the data is satisfied, and if the threshold is satisfied, select the reliability mechanism, and store the data according to the selected reliability mechanism.

상기 선택된 신뢰성 메커니즘은 객체 복제를 포함하고, 상기 가상 장치 관리 레이어는 KV 밸류를 선택하고, 상기 선택된 KV 밸류에 대응하는 키를 해싱하기 위한 해시를 연산하고, 상기 KV 밸류에 대응하는 키 객체들의 복제본들을 저장하기 위해 상기 N개의 스토리지 장치들 중 일부 스토리지 장치들을 판별하고, 동일한 사용자 키명칭하에서 상기 판별된 일부 스토리지 장치들 각각에 상기 KV 밸류에 대응하는 업데이트된 밸류들을 기입함으로써, 상기 데이터를 저장하도록 구성된다.The selected trust mechanism includes object replication, wherein the virtual device management layer selects a KV value, computes a hash to hash the key corresponding to the selected KV value, and creates replicas of key objects corresponding to the KV value. To store the data by determining some storage devices among the N storage devices and writing updated values corresponding to the KV value to each of the determined storage devices under the same user key name. It is composed.

상기 선택된 신뢰성 메커니즘은 패킹을 포함하고, 상기 가상 장치 관리 레이어는 상기 N개의 스토리리 장치들 중 k(단, k는 정수)개의 스토리지 장치들에 저장된 k개의 키 객체들을 선택하고, 상기 k개의 키 객체들에 대응하는 k개의 밸류 객체들을 회수하고, 상기 k개의 밸류 객체들 모두의 가상 밸류 크기가 동일해 지도록, 상기 k개의 밸류 객체들 중 가장 큰 밸류 크기를 갖지 않는 밸류 객체들의 종단들에 가상 제로들을 패딩하고, 상기 k개의 키 객체들로부터 r(단, r은 정수)개의 패리티 객체들을 생성하고, 상기 k개의 키 객체들을 상기 k개의 스토리지 장치들로 기입하고, 상기 r개의 패리티 객체들을 상기 N개의 스토리지 장치들 중 r개의 스토리지 장치들에 기입함으로써, 상기 데이터를 저장하도록 구성되고, 상기 r개의 스토리지 장치들 각각은 상기 k개의 스토리지 장치들과 구분되고, k+r=N이다.The selected trust mechanism includes packing, and the virtual device management layer selects k key objects stored in k (where k is an integer) storage devices among the N storage devices, and selects the k keys. Retrieve the k value objects corresponding to the objects, and add virtual value to the ends of the value objects that do not have the largest value size among the k value objects so that the virtual value sizes of all the k value objects are the same. Padding zeros, creating r parity objects (where r is an integer) from the k key objects, writing the k key objects to the k storage devices, and storing the r parity objects in the k storage devices. It is configured to store the data by writing to r storage devices among the N storage devices, where each of the r storage devices is distinct from the k storage devices, and k+r=N.

상기 선택된 신뢰성 메커니즘은 스플릿팅을 포함하고, 상기 가상 장치 관리 레이어는 KV 밸류를 선택하고, 상기 KV 밸류를 k(단, k는 정수)개의 동일 크기의 객체들로 분할하고, 상기 k개의 동일 크기의 객체들로부터 r개의 패리티 객체들을 생성하고, 단, r은 정수, 상기 선택된 KV 밸류에 대응하는 키를 해싱하기 위한 해시를 연산하고, 상기 해시를 기반으로 상기 N개의 스토리지 장치들 중 상기 KV 밸류가 위치할 주요 장치를 판별하고, 상기 주요 장치로부터 시작하여 연속하는 순서로 상기 k개의 동일 크기의 객체들 및 상기 r개의 패리티 객체들 각각을 상기 N개의 스토리지 장치들에 기입함으로써, 상기 데이터를 저장하도록 구성되고, 단, k+r=N이다.The selected reliability mechanism includes splitting, wherein the virtual device management layer selects a KV value, splits the KV value into k (where k is an integer) equally sized objects, and Generate r parity objects from objects, where r is an integer, calculate a hash for hashing the key corresponding to the selected KV value, and calculate the KV value among the N storage devices based on the hash. Storing the data by determining the main device on which to locate the main device and writing each of the k objects of the same size and the r parity objects to the N storage devices in successive order starting from the main device. It is configured to do so, provided that k+r=N.

상기 선택된 신뢰성 메커니즘은 재생성 소거 코딩을 사용하는 스플릿팅을 포함하고, 상기 N개의 스토리지 장치들은 (k,r,d) 재생성 소거 코딩으로 구성되고, 상기 가상 장치 관리 레이어는 상기 재생성 소거 코딩을 사용하여 상기 k개의 동일 크기의 객체들을 m(단, m은 정수)개의 서브 패킷들로 분할하고, 상기 r개의 패리티 객체들 각각을 m개의 패리티 서브 패킷들로 분할함으로써, 상기 데이터를 저장하도록 더 구성된다.The selected reliability mechanism includes splitting using regenerative erasure coding, the N storage devices are configured with (k,r,d) regenerative erasure coding, and the virtual device management layer uses the regenerative erasure coding. It is further configured to store the data by dividing the k objects of the same size into m (where m is an integer) subpackets and dividing each of the r parity objects into m parity subpackets. .

본 발명의 또 다른 실시 예에 따르면, 프로세서에 의해 실행되는 경우, 단일 논리적 유닛으로서 신뢰성 그룹으로 그룹화되고 가상 장치 관리 레이어에 의해 관리되는 N개의 스토리지 장치들을 포함하는 키-밸류 신뢰성 시스템에 데이터를 저장하는 방법이 수행되는 컴퓨터 코드를 포함하는 비-일시적 컴퓨터 판독 가능한 매체가 제공된다. 상기 방법은 상기 데이터가 상기 데이터를 저장하기 위한 신뢰성 메커니즘에 대응하는 임계치를 만족하는지 판별하는 단계, 상기 임계치가 만족된 경우, 상기 신뢰성 메커니즘을 선택하는 단계, 및 상기 선택된 신뢰성 메커니즘에 따라 데이터를 저장하는 단계를 포함한다.According to another embodiment of the invention, when executed by a processor, storing data in a key-value reliability system comprising N storage devices grouped into reliability groups as a single logical unit and managed by a virtual device management layer. A non-transitory computer-readable medium containing computer code for performing a method is provided. The method includes determining whether the data satisfies a threshold corresponding to a reliability mechanism for storing the data, if the threshold is satisfied, selecting the reliability mechanism, and storing the data according to the selected reliability mechanism. It includes steps to:

상기 선택된 신뢰성 메커니즘은 객체 복제를 포함하고, 상기 데이터를 저장하는 단계는 KV 밸류를 선택하는 단계, 상기 선택된 KV 밸류에 대응하는 키를 해싱하기 위한 해시를 연산하는 단계, 상기 KV 밸류에 대응하는 키 객체들의 복제본을 저장하기 위해 상기 N개의 스토리지 장치들 중 일부 스토리지 장치들을 선택하는 단계, 및 동일한 사용자 키명칭 하에서, 상기 KV 밸류에 대응하는 업데이트된 밸류들을 상기 판별된 일부 스토리지 장치들 각각에 기입하는 단계를 포함한다. The selected trust mechanism includes object replication, and storing the data includes selecting a KV value, computing a hash to hash a key corresponding to the selected KV value, and a key corresponding to the KV value. selecting some of the N storage devices to store replicas of objects, and writing updated values corresponding to the KV value to each of the identified storage devices under the same user key name. Includes steps.

상기 선택된 신뢰성 메커니즘은 패킹을 포함하고, 상기 데이터를 저장하는 단계는 상기 신뢰성 그룹의 상기 N개의 스토리지 장치들 중 k(단, k는 정수)개의 스토리지 장치들에 저장된 k개의 키 객체들을 선택하는 단계, 상기 k개의 키 객체들에 대응하는 k개의 밸류 객체들을 회수하는 단계, 상기 k개의 밸류 객체들 모두의 가상 밸류 크기가 동일해 지도록 상기 k개의 밸류 객체들 중 가장 큰 밸류 크기를 갖지 않는 밸류 객체들의 종단들에 가상 제로들을 패딩하는 단계, 상기 k개의 키 객체들로부터 r(단, r은 정수)개의 패리티 객체들을 생성하는 단계, 상기 k개의 키 객체들을 상기 k개의 스토리지 장치들에 기입하는 단계, 및 상기 r개의 패리티 객체들을 상기 N개의 스토리지 장치들 중 r개의 스토리지 장치들에 기입하는 단계를 포함하고, 상기 r개의 스토리지 장치들 각각은 상기 k개의 스토리지 장치들과 구분되고, k+r=N이다.The selected trust mechanism includes packing, and the step of storing the data includes selecting k key objects stored in k (where k is an integer) storage devices among the N storage devices in the trust group. , Retrieving k value objects corresponding to the k key objects, a value object that does not have the largest value size among the k value objects so that the virtual value sizes of all the k value objects are the same. padding virtual zeros at the ends of the k key 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, wherein each of the r storage devices is distinct from the k storage devices, and k+r= It's N.

상기 선택된 신뢰성 메커니즘은 스플릿팅을 포함하고, 상기 데이터를 저장하는 단계는 KV 밸류를 선택하는 단계, 상기 KV 밸류를 k(단, k는 정수)개의 동일 크기의 객체들로 분할하는 단계, 상기 k개의 동일 크기의 객체들로부터 r(단, r은 정수)개의 패리티 객체들을 생성하는 단계, 상기 선택된 KV 밸류에 대응하는 키를 해싱하기 위한 해시를 연산하는 단계, 상기 해시를 기반으로, 상기 N개의 스토리지 장치들 중 상기 KV 밸류가 위치할 주요 장치를 선택하는 단계, 및 상기 주요 장치로부터 시작하여 연속한 순서로, 상기 k개의 동일 크기의 객체들 및 상기 r개의 패리티 객체들 각각을 상기 N개의 스토리지 장치들에 기입하는 단계를 포함하고, k+r=N이다.The selected reliability mechanism includes splitting, and storing the data includes selecting a KV value, splitting the KV value into k (where k is an integer) equal-sized objects, and k Creating r (where r is an integer) parity objects from objects of the same size, calculating a hash for hashing the key corresponding to the selected KV value, and based on the hash, the N Selecting a main device among storage devices where the KV value is to be located, and starting from the main device, each of the k objects of the same size and the r parity objects are stored in the N storage devices. It includes the step of writing to the devices, and k+r=N.

상술된 및/또는 다른 사상들은 첨부된 도면들과 함께 이하의 실시 예들의 상세한 설명으로부터 좀 더 명확해질 것이다.
도 1은 본 발명의 실시 예에 따른, 선택된 신뢰성 메커니즘을 기반으로 키-밸류 데이터를 저장하는 키-밸류 신뢰성 시스템을 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른, 키-밸류 쌍의 데이터의 크기에 대응하는 크기 임계치를 기반으로 키-밸류 신뢰성 시스템에 의해 사용될 신뢰성 메커니즘의 선택을 보여주는 순서도이다.
도 3은 본 발명의 실시 예에 따른, 전형적인 소거 코딩을 사용하는 K-객체 (k,r) 소거 코딩, 또는 다중 객체 "패킹(Packing)"의 신뢰성 메커니즘에 따라 키-밸류 데이터를 저장하도록 구성된 KV 스토리지 장치들의 그룹을 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른, 전형적인 소거 코딩을 사용하는 K-객체 (k,r) 소거 코딩, 또는 다중 객체 "패킹(Packing)"의 신뢰성 메커니즘에 따른 밸류 객체들 및 패리티 객체들의 저장을 보여주는 블록도이다.
도 5는 본 발명의 실시 예에 따른, 전형적인 소거 코딩을 사용하는, 단일 객체 (k,r) 소거 코딩, 또는 "스플릿팅(Splitting)"의 신뢰성 메커니즘에 따라 키-밸류 데이터를 저장하도록 구성된 KV 스토리지 장치들의 그룹을 보여주는 블록도이다.
도 6은 본 발명의 실시 예에 따른, 재생성 소거 코딩을 사용하는 단일 객체(k,r,d) 소거 코딩, 또는 "스플릿팅(Splitting)"의 신뢰성 메커니즘에 따라 키-밸류 데이터를 저장하도록 구성된 KV 스토리지 장치들의 그룹을 보여주는 블록도이다.
The above-described and/or other ideas will become clearer from the detailed description of the embodiments below in conjunction with the accompanying drawings.
1 is a block diagram showing a key-value reliability system that stores key-value data based on a selected reliability mechanism, according to an embodiment of the present invention.
Figure 2 is a flowchart showing the selection of a reliability mechanism to be used by a key-value reliability system based on a size threshold corresponding to the size of the data of a key-value pair, according to an embodiment of the present invention.
3 shows a schematic diagram configured to store key-value data according to the reliability mechanism of K-object (k,r) erasure coding, or multi-object “Packing,” using typical erasure coding, according to an embodiment of the present invention. This is a block diagram showing a group of KV storage devices.
4 shows storage of value objects and parity objects according to the reliability mechanism of K-object (k,r) erasure coding, or multi-object “packing,” using typical erasure coding, according to an embodiment of the present invention. This is a block diagram showing.
5 shows a KV configured to store key-value data according to the reliability mechanism of single object (k,r) erasure coding, or “Splitting,” using typical erasure coding, according to an embodiment of the present invention. This is a block diagram showing a group of storage devices.
6 shows a schematic diagram configured to store key-value data according to the reliability mechanism of single object (k,r,d) erasure coding using regenerative erasure coding, or “Splitting,” according to an embodiment of the present invention. This is a block diagram showing a group of KV storage devices.

본 발명의 다양한 특징들 및 본 발명을 달성하는 방법들은 첨부된 도면들 및 실시 예들에 대한 이하의 상세한 설명을 참조하여 더욱 상세하게 이해될 수 있다. 이하에서, 실시 예들은 첨부된 도면들을 참조하여 더욱 상세하게 설명될 것이다. 유사한 참조 번호들은 전체에서 유사한 구성 요소들을 지칭한다. 그러나 본 발명이 다양한 다른 형태로 구형될 수 있으며, 설명된 실시 예들에 국한되는 것으로 이해되어서는 안될 것이다. 오히려, 이러한 실시 예들은 본 발명의 전반적인 이해를 돕기 위한 예시로서 제공되며, 당업자에게 본 발명의 기술적 특징 및 양상을 충분히 전달할 것이다. 따라서, 당업자가 본 발명의 특징 및 양상을 완전하게 이해하는데 불필요한 프로세스들, 요소들, 및 기법들은 설명되지 않을 수 있다. 다르게 언급되지 않는 한, 첨부된 도면들 및 기재된 상세한 설명 전반에 걸쳐, 유사한 참조 번호들은 유사한 요소들을 지칭하며, 그것들의 설명은 반복되지 않을 것이다. 도면들에서, 요소들, 계층들, 및 영역들의 상대적인 크기는 명확성을 위하여 과장될 수 있다.Various features of the present invention and methods of achieving the present invention can be understood in more detail with reference to the accompanying drawings and the following detailed description of the embodiments. Hereinafter, embodiments will be described in more detail with reference to the attached drawings. Like reference numerals refer to like elements throughout. However, the present invention may be implemented in various other forms, and should not be understood as being limited to the described embodiments. Rather, these embodiments are provided as examples to aid the overall understanding of the present invention, and will sufficiently convey the technical features and aspects of the present invention to those skilled in the art. Accordingly, processes, elements, and techniques that are unnecessary for a person skilled in the art to fully understand the features and aspects of the invention may not be described. Unless otherwise noted, throughout the accompanying drawings and the detailed description, like reference numerals refer to like elements and their descriptions will not be repeated. In the drawings, the relative sizes of elements, layers, and regions may be exaggerated for clarity.

다양한 실시 예들이 실시 예들 및/또는 중간 구조들의 개략도인 단면도를 참조하여 본문에서 설명된다. 이와 같이, 예를 들어, 제조 기술 및/또는 허용 오차의 결과로서 도시된 형태들로부터의 변형이 예상되어야 한다. 더욱이, 본문에서 기재된 특정한 구조적 또는 기능적 설명은 본 발명의 사상에 따른 실시 예들을 설명하기 위한 단순한 예시들이다. 즉, 본문에 기재된 실시 예들은 영역들의 특정하게 도시된 형태들에 제한되는 것으로 해석되어서는 안되며, 예를 들어, 제고의 결과인 형상의 편차를 포함하여야 한다. 예를 들어, 직사각으로 도시된 임플란트 영역은, 전형적으로, 임플란트로부터 비-임플란트 영역으로으로의 이진-변화라기보다는 그것들의 에지에서 둥글거나 또는 곡선의 특징들 및/또는 임플란트 농도의 기울기를 가질 것이다. 마찬가지로, 임플란트에 의해 형성된 매립 영역은 매립 영역과 임플란트가 방생하는 표면 사이의 영역에서 일부 임플란트를 야기할 수 있다. 즉, 도면들에 도시된 영역들은 본질적으로 개략적인 것이며, 그것들의 형상들이 장치의 영역의 실제 형상을 도시하는 것을 의도하지 않으며, 이를 제한하는 것이 아니다. 추가적으로, 당업자가 인식할 수 있는 바와 같이, 기재된 실시 예들은 본 발명의 사상 또는 범위로부터 벗어남 없이 다양한 다른 방식들로 변형될 수 있다. Various embodiments are described in the text with reference to cross-sectional views, which are schematic diagrams of the embodiments and/or intermediate structures. As such, variations from the depicted forms should be expected, for example as a result of manufacturing techniques and/or tolerances. Moreover, specific structural or functional descriptions described in the text are mere examples for explaining embodiments according to the spirit of the present invention. That is, the embodiments described in the text should not be construed as limited to the specifically illustrated shapes of the regions, but should include, for example, deviations in shape as a result of improvement. For example, implant areas depicted as rectangular will typically have rounded or curved features at their edges and/or a gradient of implant concentration, rather than a binary transition from implant to non-implant area. . Likewise, the buried area formed by the implant may give rise to some implants in the area between the buried area and the surface from which the implant arises. That is, the areas shown in the drawings are schematic in nature, and their shapes are not intended to depict or limit the actual shape of the area of the device. Additionally, as those skilled in the art will recognize, the described embodiments may be modified in various other ways without departing from the spirit or scope of the invention.

이하의 상세한 설명에서, 설명의 편의 및 다양한 실시 예들의 이해를 돕기 위하여, 다수의 특정 설명들이 제공된다. 그러나 다양한 실시 예들이 상세한 설명 없이 또는 하나 또는 그 이상의 균등한 대체물과 함께 구현될 수 있다. 다른 예에서, 잘 알려진 구조들 및 장치들은 다양한 실시 예들을 불필요하게 모호하게 하게 하지 않도록 블록도의 형태로 도시된다. In the following detailed description, numerous specific descriptions are provided for convenience of explanation and to aid understanding of various embodiments. However, various embodiments may be implemented without the detailed description or with one or more equivalent substitutes. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the various embodiments.

"제1(first)", "제2(second)", "제3(third)" 등과 같은 용어들은 다양한 요소들, 구성들, 영역들, 계층들, 및/또는 구역들을 설명하기 위하여 본문에서 사용되나, 이러한 요소들, 구성들, 영역들, 계층들, 및/또는 구역들은 이러한 용어들에 한정되지 않음이 잘 이해될 것이다. 이러한 용어들은 하나의 요소, 구성, 영역, 계층, 또는 구역을 다른 하나의 요소, 구성, 영역, 계층, 또는 구역으로부터 구분하기 위해서만 사용된다. 즉, 이하에서 기재되는 제1 요소, 구성, 영역, 계층, 또는 구역은 본 발명의 사상 및 범위로부터 벗어남 없이, 제2 요소, 구성, 영역, 계층, 또는 구역으로 불릴 수 있다. Terms such as “first,” “second,” “third,” etc. are used throughout the text to describe various elements, components, areas, layers, and/or zones. Although used, it will be understood that these elements, configurations, regions, layers, and/or zones are not limited to these terms. These terms are used only to distinguish one element, configuration, region, layer, or section from another element, configuration, region, layer, or section. That is, a first element, configuration, region, layer, or section described below may be called a second element, configuration, region, layer, or section without departing from the spirit and scope of the present invention.

"~의 아래(beneath, below, lower, under)", "~의 위(above, upper)" 등과 같은 공간적으로 상대적인 용어들(spatially relative terms)은 도면들에서 도시된 다른 하나의 요소(들) 또는 특징(들)과 하나의 요소 또는 특징들과의 관련성을 용이하게 설명하기 위하여 본문에서 사용될 수 있다. 공간적으로 상대적인 용어들은 도면에 도시된 지향성에 추가적으로 동작 또는 사용에서 장치의 다른 지향성(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. refer to one element(s) shown in the drawings. Alternatively, it can be used in the text to easily explain the relationship between feature(s) and one element or features. It will be understood that spatially relative terms are intended to include other orientations of the device in operation or use in addition to the orientation shown in the figures. For example, if the device in the drawings is turned over, elements described as “below or beneath or under” other elements or features will be oriented “above” the other elements or features. That is, example terms “below, under” may include both up and down directions. The device may be oriented in other directions (e.g., rotated 90 degrees or in other directions), and spatially relative descriptions used in the text should be interpreted accordingly. Similarly, when a first portion is described as being aligned “on” a second portion, this means that the first portion is aligned with the top surface of the second portion, or without limitation to its top surface, based on the direction of gravity. Indicates alignment on the lower surface.

요소, 계층, 영역, 또는 구성이 다른 요소, 계층, 영역, 또는 구성과 "연결된(on, connected to, 또는 coupled to)" 것으로 지칭되는 경우, 다른 요소, 계층, 영역, 또는 구성과 직접적으로(directly) 연결되거나 또는 하나 또는 그 이상의 중간 요소들, 계층들, 영역들, 또는 구성들이 존재할 수 있다. 그러나 "직접적으로 연결된"의 용어는 하나의 구성 요소가 중간 구성 없이 다른 구성 요소와 직접적으로 연결되는 것을 지칭한다. 한편, "사이(between, immediately between)" 또는 "인접(adjacent to 또는 directly adjacent to)과 같이 구성 사이의 관계를 설명하는 다른 표현들은 유사하게 해석될 수 있다. 추가적으로, 요소 또는 계층이 두 개의 요소들 또는 계층들 사이(between)인 것으로 지칭되는 경우, 요소들 또는 구성들 사이에 오직 요소 또는 계층만 존재하거나 또는 하나 또는 그 이상의 중간 요소들 또는 계층들이 더 존재할 수 있는 것으로 이해될 수 있다. When an element, layer, region, or configuration is referred to as “on, connected to, or coupled to” another element, layer, region, or configuration, it refers to the other element, layer, region, or configuration ( There may be one or more intermediate elements, layers, regions, or configurations that are directly connected (directly). However, the term "directly connected" refers to one component being directly connected to another component without any intermediate components. On the other hand, other expressions that describe relationships between constructs, such as "between, immediately between" or "adjacent to or directly adjacent to" can be interpreted similarly. Additionally, if an element or hierarchy consists of two elements When referred to as between elements or layers, it can be understood that there may be only an element or layer between elements or configurations, or one or more intermediate elements or layers may further exist.

본문에서 사용되는 용어들은 오직 특정한 실시 예들을 설명하기 위한 예시적인 것이며, 본 발명이 이에 한정되는 것은 아니다. 본문에서 사용되는 바와 같이, 맥락에서 명확히 다르게 지칭되지 않는 한, 단수 용어들은 복수의 형태들을 포함하는 것으로 의도된다. "포함하다"의 용어가 상세한 설명에서 사용되는 경우, 열겨된 특징들, 정수들, 단계들, 동작들, 요소들, 및/또는 구성들의 존재를 정의하나, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 구성들, 및/또는 그것들의 그룹들의 존재 또는 추가를 배제하지 않는다. 본문에서 사용되는 바와 같이, "및/또는"의 용어는 관련되어 열거된 목록들의 하나 또는 그 이상의 모든 조합 또는 일부를 포함한다.The terms used in the text are only illustrative to describe specific embodiments, and the present invention is not limited thereto. As used in the text, singular terms are intended to include plural forms unless the context clearly dictates otherwise. When the term "comprises" is used in the detailed description, it defines the presence of listed features, integers, steps, operations, elements, and/or configurations, but also one or more other features, integers, and/or elements. It does not exclude the presence or addition of elements, steps, operations, elements, elements, and/or groups thereof. As used in the text, the term “and/or” includes any combination or portion of one or more of the associated listed items.

본문에서 사용되는 바와 같이, "실질적인(substantiall)", "약(about, approximately)"의 용어들 및 유사한 용어들은 근사의 용어들로서 사용되며, 정도의 용어들(terms of degree)로서 사용되지 않으며, 당업자에 의해 인식될 수 있는 측정되거나 또는 연산된 값들에서 고유한 편차들을 설명하는 것으로 의도된다. 본문에서 사용되는 "약(about, approximately)"의 용어는 언급된 값을 포함하며, 특정한 양의 측정과 연관된 오차 및 의심스러운 측정치(예를 들어, 측정 시스템의 한계들)를 고려한, 당업자에 의해 결정된 특정한 값에 대한 허용 가능한 편차 내임을 의미한다. 예를 들어, "약(about)"은 하나 또는 그 이상의 표준 편차들 내임을 또는 언급된 값의 ± 30%, 20%, 10%, 5% 내임을 의미할 수 있다. 본문에서 사용되는 바와 같이, "사용(use, using, 및 used)"의 용어들은 "활용(utilize, utilizing, 및 utilized)"과 동의어로 간주될 수 있다. 또한 "예시적인(exemplary)"의 용어는 " 예(example) 또는 설명illustration)을 지칭하는 것으로 의도된다.As used in the text, the terms “substantially,” “about, approximately,” and similar terms are used as terms of approximation and not as terms of degree. It is intended to account for inherent deviations from measured or calculated values that may be recognized by those skilled in the art. As used herein, the term "about, approximately" includes the stated value and is determined by a person skilled in the art, taking into account the errors and doubtful measurements associated with the measurement of a particular quantity (e.g., limitations of the measurement system). It means that it is within the allowable deviation from a certain determined value. For example, “about” can mean within one or more standard deviations or within ±30%, 20%, 10%, 5% of a stated value. As used in the text, the terms “use, using, and used” may be considered synonymous with “utilize, utilizing, and utilized.” Additionally, the term “exemplary” is intended to refer to “an example or illustration.”

특정한 실시 예가 다르게 구현되는 경우, 특정한 프로세스 순서가 기재된 순서와 다르게 수행될 수 있다. 예를 들어, 2개의 연속하여 설명된 프로세스들은 실질적으로 동시에 수행되거나 또는 기재된 순서와 반대의 순서로 수행딜 수 있다.If a particular embodiment is implemented differently, a specific process sequence may be performed differently from the described sequence. For example, two sequentially described processes may be performed substantially simultaneously or in the reverse order from that described.

본문에 기재된 본 발명의 실시 예들에 따른 전기 또는 전자 장치들 및/또는 다른 연관된 장치들 또는 구성들은 적절한 하드웨어어, 펌웨어(예를 들어, 애플리케이션-특정 집적 회로(ASIC; application-specific integrated circuit), 소프트웨어, 또는 소프트웨어, 펌웨어, 및 하드웨어의 조합을 사용하여 구현될 수 있다. 예를 들어, 이러한 장치들의 다양한 구성들은 하나의 집적 회로(IC; integrated circuit) 칩 또는 별도의 IC 칩들에 형성될 수 있다. 더욱이, 이러한 장치들의 다양한 구성들은 연성 인쇄 회로 필름(flexible printed circuit film), 테이프 캐리어 패키지(TCP; tape carrier package), 인쇄 회로 기판(PCB; printed circuit board)에 구현될 수 있거나 또는 하나의 기판(substrate) 상에 형성될 수 있다. 더욱이, 이러한 장치들의 다양한 구성들은 본문에서 설명된 다양한 기능들을 수행하기 위하여 다른 시스템 구성들과 통신하고, 컴퓨터 프로그램 명령어들을 실행하는, 하나 또는 그 이상의 컴퓨팅 장치들에서의, 하나 또는 그 이상의 프로세서들에서 구동하는 프로세스 또는 쓰레드일 수 있다. 컴퓨터 프로그램 명령어들은 RAM(random access memory)와 같은 표준 메모리 장치를 사용하는 컴퓨팅 장치에 구현될 수 있는 메모리에 저장된다. 컴퓨터 프로그램 명령어들은, 예를 들어, CD-ROM, 플래시 드라이브, 등과 같은 다른 비-일시적인 컴퓨터 판독 가능한 매체에 저장될 수 있다. 또한 당업자는 본 발명의 예시적인 실시 예들의 사상 및 양상으로부터의 벗어남 없이, 다양한 컴퓨팅 장치들의 기능이 단일 컴퓨팅 장치로 조합 또는 집적될 수 있거나 또는 특정 컴퓨팅 장치의 기능이 하나 또는 그 이상의 다른 컴퓨팅 장치들로 분산될 수 있음을 이해할 수 있다. Electrical or electronic devices and/or other related devices or configurations according to embodiments of the present invention described in the text may include appropriate hardware, firmware (e.g., application-specific integrated circuit (ASIC), For example, various configurations of these devices may be formed on a single integrated circuit (IC) chip or on separate IC chips. Moreover, various configurations of these devices can be implemented on a flexible printed circuit film, a tape carrier package (TCP), a printed circuit board (PCB), or on a single substrate. Moreover, various configurations of such devices may be one or more computing devices that communicate with other system components and execute computer program instructions to perform various functions described herein. In the computer program, which may be a process or thread running on one or more processors, the instructions are stored in a computer memory that can be implemented in a computing device using a standard memory device such as random access memory (RAM). Program instructions may also be stored on other non-transitory computer-readable media, such as, for example, a CD-ROM, a flash drive, etc., without departing from the spirit and aspect of the exemplary embodiments of the invention. It is to be understood that the functionality of various computing devices may be combined or integrated into a single computing device, or the functionality of a particular computing device may be distributed to one or more other computing devices.

다르게 정의되지 않는 한, 본문에서 사용되는 기술적/과학적 용어들을 포함하는 모든 용어들은 본 발명이 속하는 기술 분야에서의 당업자에 의해 공통적으로 이해되는 것과 동일한 의미를 갖는다. 공용 사전에 정의된 것들과 같은 용어들은 연관된 기술의 맥락 및/또는 본 발명의 상세한 설명에서 그것들의 의미와 일관된 의미를 갖는 것으로 해석되어야 할 것이며, 본문에 명세적으로 정의되지 않는 한, 이상적이거나 또는 지나치게 형식적인 의미로 해석되어서는 안 된다. Unless otherwise defined, all terms, including technical/scientific terms used in the text, have the same meaning as commonly understood by those skilled in the art in the technical field to which the present invention pertains. Terms such as those defined in the public dictionary shall be construed to have a meaning consistent with their meaning in the context of the relevant art and/or the detailed description of the invention, and unless specifically defined in the text, are ideal or It should not be interpreted in an overly formal sense.

이하에서 설명되는 바와 같이, 본 발명의 실시 예들은 하나의 논리적 유닛으로 그룹화된 복수의 키-밸류(KV; key-value) 스토리지 장치들로 구성된 키-밸류 신뢰성 시스템(key-value reliability)에 키-밸류 데이터를 신뢰할 수 있게 저장하는 방법을 제공한다. 더욱이, 본 발명의 실시 예들은 드라이브들을 관리하고 키-밸류(KV; key-value) 쌍들의 저장을 제어하는 스테이트리스 하이브리스 신뢰성 관리자를 제공한다. 스테이트리스 하이브리스 신뢰성 관리자는 객체 복제(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)을 포함하는 복수의 플러그가능한 신뢰성 메커니즘들/기법들/구현들에 의존한다. As described below, embodiments of the present invention provide a key-value reliability system consisting of a plurality of key-value (KV) storage devices grouped into a single logical unit. -Provides a reliable way to store value data. Moreover, embodiments of the present invention provide a stateless hybrid reliability manager that manages drives and controls storage of key-value (KV) pairs. Stateless Hybris Reliability Manager supports Object Replication; K-Object (k,r) erasure coding - Packing; Single Object (k,r) erasure coding - Splitting; K-Object (k,r,d) regeneration coding - Packing; It relies on multiple pluggable reliability mechanisms/techniques/implementations including Single Object (k,r,d) regeneration coding - Splitting.

복수의 플러그가능한 신뢰성 메커니즘들에 의존한 스테이트리스 하이브리드 신뢰성 관리자가 장치들을 관리할 수 있고, KV 쌍들의 저장을 제어할 수 있고, 신뢰성 메커니즘의 선택에 대하여 기재된 방법들이 다른 크기들의 KV 쌍들의 효율적인 저장, 회수, 및 복구를 보장할 수 있기 때문에, 기재된 실시 예들은 메모리 스토리지(예를 들어, 키-밸류 스토리지 장치들 내에 키-밸류 데이터의 저장)를 향상시킬 수 있다. A stateless hybrid reliability manager relying on multiple pluggable reliability mechanisms can manage devices and control storage of KV pairs, and the methods described for selection of reliability mechanisms allow efficient storage of KV pairs of different sizes. The described embodiments may enhance memory storage (e.g., storage of key-value data within key-value storage devices) by ensuring recovery, retrieval, and recovery.

도 1은 본 발명의 실시 예에 따른, 선택된 신뢰성 메커니즘을 기반으로 키-밸류 데이터를 저장하는 키-밸류 신뢰성 시스템을 보여주는 블록도이다. 1 is a block diagram showing a key-value reliability system that stores key-value data based on a selected reliability mechanism, according to an embodiment of the present invention.

도 1을 참조하면, 상술된 바와 같이, 다양한 새로운 키-밸류(KV) 스토리지 장치들/메모리 장치들/드라이브들/KV-SSD들(130)은 키-밸류 데이터 및 KV 스토리지 장치들(130)에 채용되거나 또는 맞추어진 새로운 데이터 신뢰성 메커니즘으로부터 잠재적으로 이점을 얻을 수 있다. 따라서 이러한 KV 스토리지 장치들(130)을 위한 하이브리드 키-밸류 신뢰성 시스템은 하나 또는 그 이상의 플러그 가능 신뢰성 메커니즘들(pluggable reliability mechanisms)에 따라 하이브리드 신뢰성 메커니즘을 사용하여 KV 스토리지 장치들(130)을 관리하고, 그것들에 KV 쌍들의 저장을 제어하는 스테이트리스 하이브리드 신뢰성 관리자/가상 장치 관리자 레이어/가상 장치 관리 레이어(120)를 포함할 수 있다. 비록 본문에서 기재된 KV 스토리지 장치들을 지칭하는데 SSD들(solid-state drives)이 일반적으로 사용되나, 다른 스토리지 장치들이 본 발명의 실시 예에 따라 사용될 수 있다. 본 발명의 실시 예들에 따른 가상 장치 관리 레이어(120)의 디자인 및 동작들은 이하에서 설명될 것이다.1 , as described above, various new key-value (KV) storage devices/memory devices/drives/KV-SSDs 130 provide key-value data and KV storage devices 130. can potentially benefit from new data reliability mechanisms employed or tailored to . Accordingly, the hybrid key-value reliability system for these KV storage devices 130 manages the KV storage devices 130 using a hybrid reliability mechanism according to one or more pluggable reliability mechanisms. , they may include a stateless hybrid reliability manager/virtual device manager layer/virtual device management layer 120 that controls storage of KV pairs. Although solid-state drives (SSDs) are commonly used to refer to the KV storage devices described in the text, other storage devices may be used according to embodiments of the present invention. The design and operations of the virtual device management layer 120 according to embodiments of the present invention will be described below.

현재 실시 예에서, 가상 장치 관리 레이어(120)는 키-밸류 신뢰성 시스템에 키-밸류 데이터/KV 쌍(170)을 신뢰성 있게 저장하는 방법을 가능하게 할 수 있다. 키-밸류 신뢰성 시스템은 하나의 논리적 유닛(logical unit)으로 그롭화된 복수의 KV 스토리지 장치들(130)을 포함할 수 있다. 논리적 유닛은 신뢰성 그룹(140)으로 지칭될 수 있다. In a current embodiment, virtual device management layer 120 may enable a method of reliably storing key-value data/KV pairs 170 in a key-value reliability system. The key-value reliability system may include a plurality of KV storage devices 130 grouped into one logical unit. A logical unit may be referred to as a reliability group 140.

신뢰성 그룹(140)의 KV 스토리지 장치들(130)은 키-밸류 데이터(170)와 대응할 수 있는, 소거 코딩된 데이터 및/또는 복제된 데이터의 각각의 청크들을 저장할 수 있다. 신뢰성 그룹(140)의 KV 스토리지 장치들(130)은 키-밸류 동작들이 가상 장치 관리 레이어(120)를 통해 지정(be directed to)되는 단일 가상 장치(110)로 나타난다.KV storage devices 130 of reliability group 140 may store respective chunks of erasure coded data and/or replicated data that may correspond to key-value data 170 . The KV storage devices 130 of the reliability group 140 appear as a single virtual device 110 whose key-value operations are directed to via the virtual device management layer 120.

가상 장치(110)는 가상 장치 관리 레이어(120)로서 스테이트리스 하이브리드 신뢰성 관리자(stateless hybrid reliability manager)를 포함할 수 있다. 즉, 가상 장치 관리 레이어(120)는 스테이트리스 방식(즉, 키-밸류와 장치 사이의 맵핑을 유지하는 것을 필요로 하지 않음)으로 동작할 수 있다.The virtual device 110 may include a stateless hybrid reliability manager as the virtual device management layer 120. That is, the virtual device management layer 120 may operate in a stateless manner (i.e., does not require maintaining mapping between key-values and devices).

따라서 가상 장치(110)는 N개의 KV 스토리지 장치들(130)(단, N은 정수)(예를 들어, KV-SSD들(130-1, 130-2, 130-3, 130-4,… 130-N))을 통해 키-밸류 데이터(170)를 저장할 수 있고, 가상 장치 관리 레이어(120)를 통해 KV 스토리지 장치들(130)에 키-밸류 데이터(170)를 저장할 수 있다. 즉, 가상 장치 관리 레이어(120)는 KV 스토리지 장치들(130)을 관리할 수 있고, 그것들에 KV 쌍들을 저장하는 것을 제어할 수 있다.Accordingly, the virtual device 110 includes N KV storage devices 130 (where N is an integer) (e.g., KV-SSDs 130-1, 130-2, 130-3, 130-4, . . . The key-value data 170 can be stored through 130-N)), and the key-value data 170 can be stored in KV storage devices 130 through the virtual device management layer 120. That is, the virtual device management layer 120 can manage the KV storage devices 130 and control storing KV pairs therein.

다른 실시 예들에서, 키-밸류 신뢰성 시스템은 키-밸류 데이터(170)의 키들과 연관된 메타 데이터 및/또는 데이터를 선택적으로 저장하여 동작 속도를 향상시키는 캐시를 또한 포함할 수 있다. 신뢰성 메커니즘들은 KV 쌍들에 대응하는 메타데이터를 포함하도록 KV 쌍들의 밸류를 첨부할 수 있다. 즉, 키 및 밸류 모두는 메타데이터 식별자 "MetaID"와 대응하는 정보와 함께 첨부되어 KV 쌍에 특정한 추가적인 메타데이터를 저장할 수 있다. 메타데이터는 체크섬(checksum), 데이터를 저장하는데 사용되는 신뢰성 메커니즘들을 식별하기 위한 신뢰성 메커니즘 식별자, 소거 코드 식별자, 객체 크기들, 패리티 그룹 번호들의 위치 등을 포함할 수 있다.In other embodiments, the key-value reliability system may also include a cache to selectively store metadata and/or data associated with the keys of key-value data 170 to improve operation speed. Reliability mechanisms can attach values to KV pairs to include metadata corresponding to the KV pairs. That is, both the key and the value can be appended with a metadata identifier “MetaID” and corresponding information to store additional metadata specific to the KV pair. Metadata may include a checksum, a reliability mechanism identifier to identify the reliability mechanisms used to store the data, an erasure code identifier, object sizes, location of parity group numbers, etc.

다른 실시 예들에서, 키-밸류 신뢰성 시스템은 이하에서 설명되는 신뢰성 메커니즘들과 대응하는 블룸 필터들(bloom filters)을 더 포함할 수 있다. 블룸 필터들은 대응하는 신뢰성 메커니즘을 사용하여 저장된 키들을 저장할 수 있고, 그에 따라, 읽기 동작들에서 키-밸류 신뢰성 시스템을 도울 수 있다. 따라서 키-밸류 신뢰성 시스템의 하나 또는 그 이상의 블룸 필터들 또는 캐시들은 현존하는 신뢰성 메커니즘들에 대하여 키들을 빠르게 테스트하는 것을 가능하게 할 수 있다. In other embodiments, the key-value reliability system may further include bloom filters corresponding to the reliability mechanisms described below. Bloom filters may store stored keys using a corresponding reliability mechanism, thereby assisting the key-value reliability system in read operations. Accordingly, one or more Bloom filters or caches in a key-value reliability system may make it possible to quickly test keys against existing reliability mechanisms.

본문에서 설명되는 신뢰성 메커니즘들 각각은 KV 스토리지 장치들(130) 중 대응하는 하나의 숫자의 키 모듈로(key modulo)에 대한 동일한 해시 함수를 사용하여 키-밸류 데이터(170)와 대응하는 KV 쌍의 첫 번째 사본 또는 청크를 먼저 저장할 수 있다. 즉, 플러그 가능한 신뢰성 메커니즘들 각각에 대하여, 신뢰성 메커니즘은 사용자 키와 동일한 키를 사용하여 적어도 첫 번째 사본/청크를 저장할 수 있다. Each of the reliability mechanisms described in the text uses the same hash function for the key modulo of a corresponding number of KV storage devices 130 to store key-value data 170 and a corresponding KV pair. The first copy or chunk of can be stored first. That is, for each of the pluggable trust mechanisms, the trust mechanism may 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 to ensure reliable storage of key-value data 170 in multiple KV storage devices 130. do. Accordingly, virtual device management layer 120 may require reliability mechanisms and may determine which of the reliability mechanisms is used.

신뢰성 메커니즘들은 가상 장치(110)의 설치 동안 설정되는 밸류-크기 임계치들(value-size thresholds), 및/또는 객체 읽기/쓰기 주기(object read/write frequency)와 같은 정책들에 기반될 수 있다. 따라서 가상 장치 관리 레이어(120)는 시스템의 언급된 정책들을 기반으로 적절한 신뢰성 메커니즘을 선택할 수 있다. Reliability mechanisms may be based on policies such as value-size thresholds, and/or object read/write frequency, set during installation of virtual device 110. Accordingly, the virtual device management layer 120 can select an appropriate reliability mechanism based on the stated policies of the system.

본 발명의 실시 예들의 5개의 신뢰성 메커니즘들에 대하여, 가상 장치 관리 레이어(120)에 의해 신뢰성 메커니즘이 어떻게 동작하는지, 그리고 신뢰성 메커니즘이 언제 적절하게 사용되고 선택될 수 있는지 이하에서 설명된다. 이러한 신뢰성 메커니즘들은 객체 복제(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)으로 지칭될 수 있다.The five reliability mechanisms of embodiments of the present invention are described below, how the reliability mechanism operates by the virtual device management layer 120, and when the reliability mechanism can be appropriately used and selected. These reliability mechanisms include Object Replication, K-Object (k,r) erasure coding, Erasure Coding - Packing, and Single Object (k,r) Erasure Coding - Packing. 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 object It may be referred to as (k,r,d) regeneration coding - splitting (Single Object (k,r,d) regeneration coding - Splitting).

도 2는 본 발명의 실시 예에 따른, KV 쌍의 데이터의 크기에 대응하는 크기 임계치에 기반된 키-밸류 신뢰성 시스템에 의해 사용되는 신뢰성 메커니즘의 선택을 보여주는 순서도(200)이다. Figure 2 is a flowchart 200 showing the selection of a trust mechanism used by a key-value trust system based on a size threshold corresponding to the size of the data of a KV pair, according to an embodiment of the present invention.

도 2를 참조하면, 크기 임계치에 기반된 지원되는 신뢰성 메커니즘들의 전체(예를 들어, 5개의 상술된 신뢰성 메커니즘들)에 대하여, 가상 장치 관리 레이어(120)는 데이터(예를 들어, 키-밸류 데이터(170))의 밸류 크기를 판별할 수 있고, 밸류 크기가 각각의 신뢰성 메커니즘에 대응하는 주어진 임계치(ti)보다 작은지 판별할 수 있고, 밸류 크기 임계치 요구를 만족하는 제1 신뢰성 메커니즘을 선택할 수 있다.2, for all of the supported reliability mechanisms based on size thresholds (e.g., the five above-described trust mechanisms), virtual device management layer 120 stores data (e.g., key-value It is possible to determine the value size of data 170), and it is possible to determine whether the value size is smaller than a given threshold (t i ) corresponding to each reliability mechanism, and a first reliability mechanism that satisfies the value size threshold requirement. You can choose.

예를 들어, S210에서, 가상 장치 관리 레이어(120)는 "n"(n은 정수)개의 크기 임계치 기반의 지원되는 신뢰성 메커니즘들을 수신할 수 있다. S220에서, 가상 장치 관리 레이어(120)는 1부터 n의 순서로 한번에 하나씩, 신뢰성 메커니즘들 각각을 단순히 검토할 수 있다. S230에서, 지원되는 신뢰성 메커니즘들 각각의 검토에서, 가상 장치 관리 레이어(120)는 데이터의 밸류 크기가 각각의 신뢰성 메커니즘과 대응하는 임계치(ti)보다 작은지 판별할 수 있다.For example, at S210, virtual device management layer 120 may receive “n” (n is an integer) number of size threshold-based supported reliability mechanisms. At S220, virtual device management layer 120 may simply review each of the reliability mechanisms, one at a time, in order from 1 to n. At S230, in reviewing each of the supported reliability mechanisms, the virtual device management layer 120 may determine whether the value size of the data is smaller than the threshold (t i ) corresponding to each reliability mechanism.

S240에서, 데이터의 밸류 크기보다 크거나 같은 임계치(ti)를 갖는 신뢰성 메커니즘이 발견된 경우, 가상 장치 관리 레이어(120)는 사용을 위해 그 신뢰성 메커니즘을 선택할 수 있다. S250에서, S240에서 사용될 신뢰성 메커니즘이 판별되거나 또는 S220의 최종 반복에서 밸류 크기를 만족하는 적절한 임계치(ti)를 갖는 신뢰성 메커니즘이 n개의 신뢰성 메커니즘들 중에서 없는 것으로 판별된 경우, 가상 장치 관리 레이어(120)는 사용될 신뢰성 메커니즘을 판별하는 것을 종료할 수 있다.At S240, if a reliability mechanism is found with a threshold ti greater than or equal to the value size of the data, virtual device management layer 120 may select that reliability mechanism for use. In S250, if the reliability mechanism to be used in S240 is determined or, in the final iteration of S220, it is determined that there is no reliability mechanism with an appropriate threshold (t i ) satisfying the value size among the n reliability mechanisms, the virtual device management layer ( 120) may end up determining the reliability mechanism to be used.

현재 실시 예에서, "n"은 본문에 기재된 실시 예들의 5개의 다른 신뢰성 메커니즘에 따라 5와 같을 수 있다. 비교적 매우 작은 키-밸류들(즉, 밸류 크기가 상대적으로 작은 경우)에 대하여, 가상 장치 관리 레이어(120)는 사용을 위해 객체 복제(Object Replication)의 신뢰성 메커니즘을 선택할 수 있다. 약간 더 큰 키-밸류들에 대하여, 가상 장치 관리 레이어(120)는 패킹(Packing), 그리고 그 다음에 스플릿팅(Splitting)(예를 들어, 순서대로)의 신뢰성 메커니즘을 선택할 수 있는 한편, 각각에 대하여 전형적인 소거 코딩을 사용할 수 있다. 그러나 더 큰 키-밸류들에 대하여, 가상 장치 관리 레이어(120)는 패킹(Packing), 그 다음에 스플릿팅(Splitting)을 선택할 수 있는 한편, 전형적인 소거 코딩 대신에 재생성 소거 코딩(regeneration erasure coding)을 사용할 수 있다. In the current embodiment, “n” may be equal to 5 according to the five different reliability mechanisms of the embodiments described in the text. For relatively very small key-values (i.e., when the value size is relatively small), the virtual device management layer 120 may select the reliability mechanism of Object Replication for use. For slightly larger key-values, the virtual device management layer 120 may select the reliability mechanisms of Packing, and then Splitting (e.g., in that order), while For , typical erasure coding can be used. However, for larger key-values, virtual device management layer 120 may choose Packing, then Splitting, while regeneration erasure coding instead of typical erasure coding. can be used.

본 발명의 실시 예들에서, 사용을 위한 신뢰성 메커니즘의 선택은 객체의 객체 크기, 객체 대한 처리량 요구 조건들, 대응하는 키-밸류 쌍의 읽기/쓰기 온도(read/write temperature), 복수의 KV 스토리지 장치들의 기본 코딩 능력들, 및/또는 키가 핫인지 또는 콜드인지에 대한 검출 중 하나 또는 그 이상에 기반될 수 있다. 예를 들어, "핫(hot)" 키들은, 그것들의 밸류 크기와 무관하게, 객체 복제(Object Replication)의 신뢰성 메커니즘을 사용할 수 있는 반면에, "콜드(cold)" 키들은 그것들의 밸류 크기에 따라 소거 코딩 방식의 신뢰성 메커니즘들 중 하나로 적용될 수 있다. 다른 실시 예로서, 객체 복제(Object Replication)의 신뢰성 메커니즘을 사용할지에 대한 결정은 크기 및 쓰기 온도 모두에 기반될 수 있다. 따라서 객체 읽기/쓰기 주기에 대응하는 임계치가, 도 2의 순서도(200)에서 크기에 대응하는 임계치 대신에, 신뢰성 메커니즘을 판별하는데 사용될 수 있다.In embodiments of the invention, the selection of a reliability mechanism to use depends on the object size of the object, the throughput requirements for the object, the read/write temperature of the corresponding key-value pair, and the plurality of KV storage devices. It may be based on one or more of their basic coding capabilities, and/or detection of whether the key is hot or cold. For example, "hot" keys can use the reliability mechanism of Object Replication, regardless of their value size, whereas "cold" keys can use the reliability mechanism of Object Replication, regardless of their value size. Accordingly, it can be applied as one of the reliability mechanisms of the erasure coding method. As another example, the decision to use the reliability mechanism of Object Replication may be based on both size and write temperature. Accordingly, the threshold corresponding to the object read/write cycle can be used to determine the reliability mechanism, instead of the threshold corresponding to the size in the flowchart 200 of FIG. 2.

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 Figure 1, as previously mentioned, when the value size of a KV pair is relatively small, the reliability mechanism of “Object Replication” may be suitable for selection by virtual device management layer 120. You can. Object replication may be applied per object (eg, per KV pair/key-value data 170). Although the reliability mechanism of Object Replication has high storage overhead, it has low read and restore costs, so it can be suitable for very small value sizes.

객체 복제(Object Replication)의 신뢰성 메커니즘은 잦은 업데이트들을 갖는 키-밸류들(예를 들어, 키-밸류 데이터(170))에 또한 적합할 수 있고, 따라서 읽기 및 쓰기 주기를 기반으로 선택될 수 있다.The reliability mechanism of Object Replication may also be suitable for key-values with frequent updates (e.g., key-value data 170) and may therefore be selected based on read and write cycles. .

객체 복제(Object Replication) 동안, 쓰기가 발생할 때마다, 객체/키-밸류 데이터(170)는 하나 또는 그 이상의 추가적인 KV 스토리지 장치들(130)로 복제된다. 키-밸류 데이터(170)의 주요 사본(primary copy)은 키 모듈로(N)의 해시에 의해 지정된 KV 스토리지 장치들(130) 중 하나에 위치될 수 있다. 키-밸류 데이터(170)의 주요 사본의 복제본(replicas)은 순환 방식으로, 연속한 KV 스토리지 장치들(130), 또는 바로 옆에 인접한(immediately adjacent) KV 스토리지 장치들(130)에 위치될 수 있다.During object replication, each time a write occurs, the object/key-value data 170 is replicated to one or more additional KV storage devices 130. A primary copy of key-value data 170 may be located in one of the KV storage devices 130 specified by the hash of the key modulo (N). Replicas of the primary copy of key-value data 170 may be located in consecutive KV storage devices 130, or immediately adjacent KV storage devices 130, in a circular manner. there is.

가상 장치 관리 레이어(120) 또는 사용자는 키-밸류 데이터(170)의 사본을 얼마나 많이 생성할지 결정할 수 있다. 예를 들어, 가상 장치 관리 레이어(120)를 사용하는 분산된 시스템은 3-웨이 복제(3-way replication)를 선택할 수 있고, 기본적으로 3-웨이 복제를 생성할 수 있다. 그러나 시스템의 사용자는 객체의 복제본의 개수를 선택된 기본값보다 많게 혹은 적게 구성할 수 있다. The virtual device management layer 120 or the user can decide how many copies of key-value data 170 to create. For example, a distributed system using virtual device management layer 120 can select 3-way replication and create 3-way replication by default. However, the user of the system can configure the number of replicas of an object to be more or less than the selected default.

따라서, 예를 들어, 3-웨이 복제가 사용되고, 주요 KV 스토리지 장치(130-2)가 데이터(예를 들어, 키-밸류 데이터(170))의 주요 사본을 포함하는 경우, 가상 장치 관리 레이어(120)는 데이터의 주요 사본의 복제본을 후속 복제 KV 스토리지 장치들(130-3, 130-4)에 저장할 수 있고, 데이터의 모든 사본들은 동일하다. 즉, 데이터의 사본들은 데이터의 주요 사본을 포함하는 KV 스토리지 장치(130-2)에 후속하는 두 개의 (또는 그 이상의) 바로 옆에 후속한 KV 스토리지 장치들(130-3, 130-4)(예를 들어, 순환 방식)에 저장된다. Thus, for example, if three-way replication is used and primary KV storage device 130-2 contains a primary copy of data (e.g., key-value data 170), the virtual device management layer ( 120 may store a replica of the primary copy of the data in subsequent replica KV storage devices 130-3, 130-4, with all copies of the data being identical. That is, copies of the data are stored in two (or more) immediately subsequent KV storage devices 130-3 and 130-4 ( For example, it is stored in a circular manner).

데이터의 사본들은 복제 KV 스토리지 장치들(130-3, 130-4)에서와 같이, 주요 KV 스토리지 장치(130-2)와 동일한 키명칭(keyname)/동일한 사용자 키(user key)하에서 저장될 수 있다. 데이터의 모든 사본들은 복제된 키-밸류 데이터(170)를 식별하기 위한 식별자 및 체크섬을 포함할 수 있다. Copies of data may be stored under the same keyname/same user key as primary KV storage device 130-2, such as in replica KV storage devices 130-3, 130-4. there is. All copies of the data may include an identifier and checksum to identify the replicated key-value data 170.

따라서 특정 KV 스토리지 장치(130)가 고장인 경우(예를 들어, KV 스토리지 장치(130-3)이 고장인 경우), 고장난 KV 스토리지 장치(130)의 바로 전후의 KV 스토리지 장치들(130)(예를 들어, KV 스토리지 장치(130-3)의 바로 전후의 KV 스토리지 장치들(130-2, 130-4))에서 키 명칭들에 대하여 복구 메커니즘(recovery mechanism)을 사용하여 밸류를 복구함으로써, 복제된 키가 복구되는 것을 보장한다. Accordingly, when a specific KV storage device 130 fails (for example, when the KV storage device 130-3 fails), the KV storage devices 130 immediately before and after the failed KV storage device 130 ( For example, by recovering the value using a recovery mechanism for key names in the KV storage devices 130-2 and 130-4 immediately before and after the KV storage device 130-3, Ensures that duplicated keys are recovered.

객체 복제(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 can receive key-value data 170, and the KV storage device to be used to hash the key object and store replicas of the key object. (130) can be determined. The virtual device management layer 120 then stores the updated values, under the same user key name (e.g., an appropriate MetaID field), in the selected KV storage devices 130 (e.g., the selected KV storage devices (e.g., It can be written as 130-2, 130-3, 130-4).

도 3은 본 발명의 실시 예에 따른, 전형적인 소거 코딩(traditional erasure coding)을 사용하는 K-객체 (k,r) 소거 코딩(K-Object (k,r) erasure coding) 또는 다중 객체 "패킹(Packing)"(multiple object “”)의 신뢰성 메커니즘에 따라 키-밸류 데이터를 저장하도록 구성된 KV 스토리지 장치들의 그룹을 보여주는 블록도이다. 3 shows K-Object (k,r) erasure coding or multi-object “packing” using traditional erasure coding, according to an embodiment of the present invention. This is a block diagram showing a group of KV storage devices configured to store key-value data according to the reliability mechanism of “Packing” (multiple object “”).

도 3을 참조하면, 전형적인 소거 코딩을 사용하는 패킹(Packing)의 신뢰성 메커니즘은 청크들로 분할되는 것(예를 들어, 좀 더 나은 데이터 처리량을 위하여)이 적절하지 않은 작은 밸류 크기들을 갖는 데이터를 위하여 선택될 수 있다. 예를 들어, 전형적인 소거 코딩을 사용하는 패킹(Packing)의 신뢰성 메커니즘은 이전에 설명된 객체 복제(Object Replication)의 신뢰성 메커니즘의 선택의 결과인 밸류 크기들보다 더 큰 밸류 크기들(그러나 여전히 상대적으로 작음)을 갖는 데이터를 위하여 가상 장치 관리 레이어(120)에 의해 선택될 수 있다. Referring to Figure 3, the reliability mechanism of packing using typical erasure coding is to handle data with small value sizes where it is not appropriate to split into chunks (e.g., for better data throughput). can be selected for For example, the reliability mechanism of Packing using typical erasure coding results in value sizes that are larger (but still relatively may be selected by the virtual device management layer 120 for data with small).

전형적인 소거 코딩을 사용하는 패킹(Packing)은 전형적인 (k,r) MDS(maximum distance separable) 소거 코딩으로 구성될 수 있고, 체계적인 MDS 코드(systemic MDS code)와 함께 사용될 수 있다. 예로서, 소거 코드는 기본적으로 (4,2) 리드-솔로몬 코드(Reed-Solomon Code)일 수 있고, (4,2) 리드-솔로몬 코드는 상대적으로 잘 연구되어 있으며, 그에 대응하는 고속 구현 라이브러리가 쉽게 이용 가능하다. Packing using typical erasure coding can consist of typical (k,r) maximum distance separable (MDS) erasure coding and can be used with a systematic MDS code. As an example, the elimination code could be essentially a (4,2) Reed-Solomon Code, and the (4,2) Reed-Solomon Code is relatively well-studied and has a corresponding fast implementation library. is easily available.

전형적인 소거 코딩을 사용하는 패킹(Packing)의 신뢰성 메커니즘을 사용하는 것에서, 동일한 패리티 그룹/소거 코드 그룹(340)의 일부인 k개의 다른 KV 스토리지 장치들(330)의 큐들로부터의 k개의 키들/키 객체들(350)은 선택되고 소거 코딩되어 패킹된다. (k는 정수임.)Using the reliability mechanism of Packing using typical erasure coding, k keys/key objects from queues of k different KV storage devices 330 that are part of the same parity group/erase code group 340. Fields 350 are selected, erase coded, and packed. (k is an integer.)

예를 들어, 가상 장치 관리 레이어(120)는 각 KV 스토리지 장치(330)(예를 들어, 도 1의 신뢰성 그룹(140)의 각 KV 스토리지 장치(130))에 대한 최근에 기입된 키 객체들(350)의 버퍼를 유지하여, 가상 장치 관리 레이어(120)가 k개의 다른 KV 스토리지 장치들로부터 k개의 키 객체들(350)을 선택하여 소거 코딩될 수 있게 하고, 이에 따라 KV 쌍들에 대응하는 k개의 키 객체들(350)을 패킹한다. For example, virtual device management layer 120 may store recently written key objects for each KV storage device 330 (e.g., each KV storage device 130 of trust group 140 in FIG. 1). Maintains a buffer of 350 so that virtual device management layer 120 can select k key objects 350 from k different KV storage devices to be erasure coded, thereby Pack k key objects 350.

현재 실시 예에서, 가상 장치 관리 레이어(120)는 4개의 다른 KV 스토리지 장치들(330-1, 330-3, 330-4, 330-N)로부터 각각 4개의 키 객체들(350x, 350y, 350b, 350c)를 선택한다. (현재 실시 예에서, k=4)In the current embodiment, virtual device management layer 120 stores four key objects (350x, 350y, 350b) from four different KV storage devices (330-1, 330-3, 330-4, 330-N), respectively. , 350c) is selected. (In the current embodiment, k=4)

도 4는 본 발명의 실시 예에 따른, 전형적인 소거 코딩을 사용하는 K-객체 (k,r) 소거 코딩, 또는 다중 객체 "패킹(Packing)"의 신뢰성 메커니즘에 따른 밸류 객체들 및 패리티 객체들의 저장을 보여주는 블록도이다.4 shows storage of value objects and parity objects according to the reliability mechanism of K-object (k,r) erasure coding, or multi-object “packing,” using typical erasure coding, according to an embodiment of the present invention. This is a block diagram showing.

도 3 및 도 4를 참조하면, 키 객체들(350)은 (키 모듈로 n의 해시)th KV 스토리지 장치(330)에 위치된다. 즉, 각 키 객체(350)에 대하여, 특정 KV 스토리지 장치(330)의 큐로 전송될 수 있는 키 모듈로 n의 각각의 해시가 수행될 수 있다. 현재 실시 예에서, 제i 키(Keyi)(350-i)는 해시되고, KV-SSD1(330-1)에 위치되고, 제j 키(Keyj)(350-j)는 해시되고, KV-SSD2(330-2)에 위치되고, 제k 키(Keyk)(350-k)는 해시되고, KV-SSD4(330-4)에 위치된다. 3 and 4, key objects 350 (key modulo hash of n) are located in th KV storage device 330. That is, for each key object 350, each hash of the key modulo n that can be transmitted to the queue of the specific KV storage device 330 may be performed. In the current embodiment, the ith key (Key i ) 350-i is hashed and located in KV-SSD1 (330-1), and the jth key (Key j ) 350-j is hashed and located in KV-SSD1 (330-1). It is located in -SSD2 (330-2), and the k-th key (Key k ) (350-k) is hashed and located in KV-SSD4 (330-4).

저장된 각각의 밸류 객체들(450)의 사용자 밸류 길이/밸류 크기(462)는 기입된 것과 동일하다. 그러나 소거 코딩을 가능하게 하는 일관성을 위하여, 사용자 밸류들/밸류 객체들(450)은 그것들로 첨부된 "0" 필링들/가상 제로들/가상 제로 패딩(464)을 가짐으로써 모두 동일한 크기를 갖는 것으로 보여진다. 즉, 다른 밸류 객체들(450)의 각각의 사용자 밸류 크기들(462)이 바뀔 수 있기 때문에(즉, 밸류 객체들(450)은 가별하는 길이들을 가질 수 있거나 가별-길이 키 밸류들일 수 있다.), 가상 제로 패딩(464)의 방법을 구현함으로써(즉, 코딩을 위하여 가상 제로 패딩(464)의 제로들을 밸류 객체들(450)로 패딩하는 한편, 패딩된 제로들을 포함하는 밸류 객체들(450)을 나타내는 데이터를 실제 재기입하는 것을 피함으로써), 패리티 객체들(460)은 패리트 그룹(340)에서 가장 큰 객체(들)(470)과 동일한 크기를 가질 수 있다. 따라서, 현재 실시 예에서, 밸류 객체들(450) "Val x," "Val y," 및 "Val b"는 KV 스토리지 장치들(330)에 실제로 저장되지 않는 가상 제로들로 패딩되고, 그로 인하여 밸류 객체(470) "Val c"와 동일한 크기를 갖는 것으로 보여진다. 그러므로 패리티 객체들(460)이 연산될 수 있다. The user value length/value size 462 of each stored value object 450 is the same as written. However, for consistency to enable erasure coding, user values/value objects 450 have "0" fillings/virtual zeros/virtual zero padding 464 attached to them so that they all have the same size. It appears that That is, because the respective user value sizes 462 of different value objects 450 may vary (i.e., value objects 450 may have differential lengths or may be differential-length key values). ), by implementing a method of virtual zero padding 464 (i.e., padding the zeros of virtual zero padding 464 into value objects 450 for coding purposes, while value objects 450 containing padded zeros) ), the parity objects 460 may have the same size as the largest object(s) 470 in the parity group 340 . Accordingly, 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 KV storage devices 330, thereby It appears to have the same size as the value object 470 “Val c”. Therefore, parity objects 460 can be 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 generates r parity objects from the k values/k value objects 450 corresponding to the k key objects 350. 460 can be calculated. At this time, r is an integer, k+r=N, and N is the KV storage devices 330 of the parity group 340 (e.g., the N KV storage devices of the reliability group 140 in FIG. 1 (130)).

가상 장치 관리 레이어(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 divides the r parity objects 460 into the r remaining other KV storage devices 330 of the parity group 340 (i.e., the k key objects 350 are selected and erase coded). r KV storage devices are distinguished from the k KV storage devices 330 containing the queues. Accordingly, each of the k key objects 350 and r parity objects 460 may be stored in each of the N storage devices 330, and the data corresponding to them may be stored in the parity group 340. It is evenly distributed to each of the N KV storage devices 330.

비록 읽기들 및 쓰기들이 전형적인 소거 코딩을 사용하는 패킹(Packing)의 신뢰성 메커니즘에 대하여 상대적으로 간단하나, 패리티의 재연산 및 복구는 덜 단순할 수 있다. 패리티의 복구 및 연산에 대하여(예를 들어, 업데이트의 경우), 어떤 키 객체(350)가 동일한 패리티 그룹(340)에 함께 그룹화되어 그로 인해 패리티의 연산을 수행하는게 하는 것인지(예를 들어, 어느 키 객체(350)가 소거 코드 그룹(340)에 속하는지)를 인식하기 위하여, 키 객체들(350)의 그룹들에 대한 정보는, 각 밸류 객체(450)에 대한 실제 밸류 크기(462)(즉, 가상 제로 패딩(464)이 없는 밸류 크기(462))와 함께, KV 스토리지 장치들(330)(예를 들어, 도 1의 KV 스토리지 장치들(130))의 각각에 메타데이터 객체로서 저장될 수 있다. 따라서, 현재 실시 예에서, 추가적인 메타데이터가 키 객체들(350)(예를 들어, 도 1의 신뢰성 그룹(140)에 위치된 키 객체들(350)), 키 객체들(350)에 대응하는 밸류 객체들(450) 각각의 원래 길이, 및 키 객체들(350)의 코딩 순서로 KV 스토리지 장치들(130)을 저장하는데 사용될 수 있다. Although reads and writes are relatively simple with respect to the reliability mechanism of Packing using typical erasure coding, recalculation and recovery of parity can be less simple. For parity recovery and operations (e.g., in the case of updates), which key objects 350 are grouped together in the same parity group 340 and thereby perform parity operations (e.g., which In order to recognize whether the key object 350 belongs to the erase code group 340, information about the groups of key objects 350 includes the actual value size 462 ( That is, stored as a metadata object on each of the KV storage devices 330 (e.g., KV storage devices 130 of FIG. 1), with a value size 462 without virtual zero padding 464. It can be. Accordingly, in the current embodiment, additional metadata may be stored in key objects 350 (e.g., key objects 350 located in trust group 140 in Figure 1), corresponding to key objects 350. The original length of each of the value objects 450 and the coding order of the key objects 350 may be used to store the KV storage devices 130 .

예를 들어, 메타데이터 객체 밸류는 신뢰성 그룹(140)의 키 객체들(350) 전체를 가리키고, 또한 밸류 객체들(450)의 밸류 크기들(462)을 가리키는 필드를 포함할 수 있고, 패리티 객체들 키들(즉, 가상 제로 패딩(464)의 제로들을 포함하는 밸류 객체들(450)), 패리티 객체들(460)의 밸류 크기들(462), 및 r개의 패리티 객체들(460)이 저장된 대응하는 r개의 KV 스토리지 장치(330)의 식별을 위한 장치 ID들을 가리키는 다른 필드를 포함할 수 있다. For example, the metadata object value may indicate all of the key objects 350 of the trust group 140, and may also include a field indicating the value sizes 462 of the value objects 450, and the parity object. The corresponding stored keys (i.e., value objects 450 containing zeros of virtual zero padding 464), value sizes 462 of parity objects 460, and r parity objects 460 It may include another field indicating device IDs for identification of the r number of KV storage devices 330.

데이터는 사용자 키를 사용하여 저장될 수 있다. 메타데이터는 사용자 키 및 "Metadata"를 지칭하는 MetaID 지시자를 사용하여 형성된 내부 키에 저장될 수 있다. 더욱이, 밸류 객체들(450)이 어디에서 종료되는지 가상 제로 패딩(464)의 제로들이 어디에서 시작하는지 판별함으로써 밸류 객체들(450)이 재생성될 경우에 정확한 재구성을 위하여 밸류 크기들(462)은 메타데이터에 저장되어 가상 제로 패딩(464)의 위치(즉, 제로들이 어디에 추가되었는지)를 인식하게 할 수 있다. Data may be stored using user keys. Metadata may be stored in an internal key formed using the user key and a MetaID directive that refers to "Metadata". Moreover, for accurate reconstruction when value objects 450 are regenerated by determining where the value objects 450 end and where the zeros of the virtual zero padding 464 begin, the value sizes 462 are It may be stored in metadata to recognize the location of the virtual zero padding 464 (i.e., where the zeros were added).

KV 스토리지 장치들(330) 중 하나가 고장이면, 데이터 및 메타데이터 모두가 동일한 KV 스토리지 장치(330)에 저장될 수 있기 때문에, 데이터 및 메타 데이터가 잠재적으로 소실될 수 있고, 그로 인하여, 복구가 불가능할 수 있다. 그러나 이러한 상황을 방지하기 위해, 메타데이터 객체 밸류는 메타 데이터 객체 밸류에 대한 이전에 언급된 객체 복제(Object Replication)의 신뢰성 메커니즘을 구현할 수 있는 가상 장치 관리 레이어(120)의 "객체 복제 엔진(Object Replication Engine)"을 사용하여 복제될 수 있다.If one of the KV storage devices 330 fails, data and metadata may be potentially lost because both data and metadata may be stored in the same KV storage device 330, thereby making recovery difficult. It may be impossible. However, to prevent this situation, the metadata object value is an “object replication engine” of the virtual device management layer 120, which can implement the previously mentioned reliability mechanism of Object Replication for the metadata object value. It can be replicated using the “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 trust group 140, if the KV storage device 330 supports object linking, the same metadata object value is stored on the same KV storage device ( 330) may be connected to a plurality of key names that are commonly located in 330). Moreover, if batch writing is supported, object values can be batched together for better throughput.

현재 실시 예에 따른 전형적인 소거 코딩을 사용하는 패킹(Packing)의 신뢰성 메커니즘을 정리하면, 가상 장치 관리 레이어(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 reliability mechanism of packing using typical erasure coding according to the current embodiment, the virtual device management layer 120 receives k recently stored keys from k different KV storage devices 330 through a buffer. Objects 350 can be selected. The virtual device management layer 120 then retrieves the value object 450 (different from the largest value object(s) 470 of the parity group 440) corresponding to each key object 350. And, the value objects 450 can be made to have the same size (eg, the size of the largest value object(s) 470) by padding them with virtual zero padding 350. The virtual device management layer 120 may then generate r parity objects from the k key objects 350 using an MDS code process. The virtual device management layer 120 later divides the r parity objects 460 into the k KV storage devices 330 from which the key objects 350 were selected among the N KV storage devices 330. It can be written to other r KV storage devices 330. At this time, k+r is equal to N. The virtual device management layer 120 may then create a metadata object representing the above-described information. Finally, the virtual device management layer 120 stores key objects 350 and parity objects 460, along with keys formed from user keys and metadata identifiers, on N KV storage devices 330 (e.g., (similar to a replication engine).

도 5는 본 발명의 실시 예에 따른, 전형적인 소거 코딩을 사용하는 단일 객체 (k,r) 소거 코딩(Single Object (k,r) erasure coding), 또는 "스플릿팅(Splitting)"의 신뢰성 메커니즘에 따라 키-밸류 데이터를 저장하도록 구성된 KV 스토리지 장치들의 그룹을 보여주는 블록도이다.5 illustrates a reliability mechanism of Single Object (k,r) erasure coding, or “Splitting,” using typical erasure coding, according to an embodiment of the present invention. This is a block diagram showing a group of KV storage devices configured to store key-value data.

도 5를 참조하면, 이전에 언급된 객체 복제(Object Replication) 및 전형적인 소거 코딩을 사용하는 패킹(Packing)의 신뢰성 메커니즘들에 적합한 밸류들의 밸류 크기들보다 더 큰 밸류 크기들을 갖는 밸류들에 대하여, 가상 장치 관리 레이어(120)는 전형적인 소거 코딩을 사용하는 단일 객체 (k,r) 소거 코딩, 또는 "스플릿팅(splitting)"의 신뢰성 메커니즘을 선택할 수 있다. 전형적인 소거 코딩을 사용하는 스플릿팅의 신뢰성 메커니즘은 상대적으로 큰 밸류 크기를 갖고, KV 밸류(570)가 k개의 동일 크기의 스플릿들/청크들/밸류들/객체들(550)로 분할된 경우 좋은 처리량을 가질 수 있는 KV 밸류/객체(570)에 적합할 수 있는 객체/KV 쌍 단위의 신뢰성 메커니즘이다.Referring to Figure 5, for values having value sizes larger than those of values suitable for the previously mentioned reliability mechanisms of Object Replication and Packing using typical erasure coding, The virtual device management layer 120 may select a reliability mechanism of single object (k,r) erasure coding using traditional erasure coding, or “splitting.” The reliability mechanism of splitting using typical erasure coding is good if the value size is relatively large and the KV value (570) is divided into k equally sized splits/chunks/values/objects (550). It is a reliability mechanism in object/KV pair units that can be suitable for KV value/object 570 that can have throughput.

KV 밸류(570)를 분할한 이후에, 실시 예에 따르면, 가상 장치 관리 레이어(120)는 k개의 객체들(550) 각각에 대하여 체크섬을 연산할 수 있다. 그 이후에, 가상 장치 관리 레이어(120)는 k개의 객체들(550) 각각의 전에 메타데이터를 삽입할 수 있다.After dividing the KV value 570, according to an embodiment, the virtual device management layer 120 may calculate a checksum for each of the k objects 550. Afterwards, the virtual device management layer 120 may insert metadata before each of the k objects 550.

전형적인 소거 코딩을 사용하는 스플릿팅은 KV 밸류(570)를 복수의 더 작은 객체들(550)로 분할하는 것, 그 이후에 KV 밸류(570)의 복수의 더 작은 객체들(550)을 k개의 연속한 스토리지 장치들(530) 상으로 분산하는 것을 포함할 수 있다. 따라서 k개의 동일 크기의 객체들(550)의 크기는 기본(underlying) KV 스토리지 장치들(530) 각각에 의해 지원될 수 있다. Splitting using typical erasure coding divides the KV value 570 into a plurality of smaller objects 550, and then divides the plurality of smaller objects 550 of the KV value 570 into k It may include distributing onto successive storage devices 530 . Accordingly, the size of k objects 550 of the same size can be supported by each of the underlying KV storage devices 530.

전형적인 소거 코딩을 사용하는 스플릿팅을 사용할 경우, 가상 장치 관리 레이어(120)는 체계적인 MDS 코드(예를 들어, 가상 장치 레이어(120)가 기본 코드로서, (4,2) 리드-솔로몬 코드와 같은 전형적인 (k,r) MDS 소거 코딩으로 구성될 수 있다.)를 사용하여 생성된 r개의 패리티 밸류들/객체들(560)을 또한 추가할 수 있다. 이후에, 상술된 전형적인 소거 코딩을 사용하는 패킹(Packing)의 신뢰성 메커니즘과 유사한 방식으로, 가상 장치 관리 레이어(120)는 k개의 객체들(550) 및 r개의 패리티 객체들(560)을 N개의 KV 스토리지 장치들(530)로 기입할 수 있다. (k+r=N)When using splitting using typical erasure coding, the virtual device management layer 120 uses a systematic MDS code (e.g., virtual device layer 120 as the base code, such as a (4,2) Reed-Solomon code). We can also add r parity values/objects 560 generated using typical (k,r) MDS erasure coding. Thereafter, in a manner similar to the reliability mechanism of Packing using typical erasure coding described above, the virtual device management layer 120 divides the k objects 550 and the r parity objects 560 into N It can be written as KV storage devices 530. (k+r=N)

따라서 가상 장치 관리 레이어(120)는 상대적으로 큰 KV 밸류(570)를 k개의 객체들(550)로 분할할 수 있고, r개의 패리티 객체들(560)을 연산하고 추가할 수 있고, k개의 객체들(550) 및 r개의 패리티 객체들(560)을 k+r개의 KV 스토리지 장치들(530)에 저장할 수 있다.Accordingly, the virtual device management layer 120 can divide the relatively large KV value 570 into k objects 550, calculate and add r parity objects 560, and k objects 550 and r parity objects 560 may be stored in k+r KV storage devices 530 .

전형적인 소거 코딩을 사용하는 스플릿팅의 신뢰성 메커니즘을 사용하는 경우, KV 밸류(570)에 대응하는 키(580)를 해싱한 이후에, 가상 장치 관리 레이어(120)는 대응하는 객체를 저장(예를 들어, k개의 객체들(550) 중 첫 번째, 도 5의 실시 예에서 D1이 해쉬 마크 제로에 저장될 수 있음.)하기 위하여 주요 KV 스토리지 장치(530a)(예를 들어, 도 5에 도시된 실시 예에서, KV-SSD2)를 판별할 수 있다. k+r개의 객체들(550, 560)은 동일한 사용자 키명칭 하에서, 주요 KV 스토리지 장치(530a) 및 N-1개의 연속적인 KV 스토리지 장치들(530) 각각으로 기입될 수 있다. 즉, 도 5에 도시된 실시 예에서, k개의 객체들(550) 중 첫 번째는 주요 KV 스토리지 장치(530a) "KV-SSD2"에 기입될 수 있고, k개의 객체들(550) 중 나머지는 r개의 패리티 객체들(560)과 함께 KV 스토리지 장치들(530)"KV-SSD3" 내지 "KV-SSDN" 및 "KV-SSD1"에 순환 방식의 순서대로 기입된다. (예를 들어, 상술된 객체 복제의 신뢰성 메커니즘에 대하여 설명된 것과 유사한 방식임.)When using the reliability mechanism of splitting using typical erasure coding, after hashing the key 580 corresponding to the KV value 570, the virtual device management layer 120 stores the corresponding object (e.g. For example, the first of the k objects 550 (D1 in the embodiment of FIG. 5 may be stored in hash mark zero) may be stored in the main KV storage device 530a (e.g., shown in FIG. In an embodiment, KV-SSD2) can be determined. k+r objects 550, 560 may be written to each of the primary KV storage device 530a and N-1 consecutive KV storage devices 530 under the same user key name. That is, in the embodiment shown in FIG. 5, the first of the k objects 550 may be written to the main KV storage device 530a “KV-SSD2”, and the remaining of the k objects 550 may be written to Together with the r parity objects 560, they are written in the KV storage devices 530 “KV-SSD3” to “KV-SSDN” and “KV-SSD1” in a cyclical order. (For example, in a similar way to that described for the object replication reliability mechanism described above.)

전형적인 소거 코딩을 사용하는 스플릿팅의 신뢰성 메커니즘을 정리하면, 가상 장치 관리 레이어(120)는 상대적으로 큰 KV 객체(570)를 k개의 동일 크기의 객체들(550)로 분할할 수 있다. 가상 장치 관리 레이어(120)는, 이후에, MDC 코드 프로세스를 사용하여 k개의 객체들(550)에 대한 r개의 패리티 객체들(560)을 생성할 수 있다. 가상 장치 관리 레이어(120)는, 이후에, KV 밸류(570)에 대응하는 키를 해싱하여 객체가 위치할 주요 KV 스토리지 장치(530a)를 판별할 수 있다. 가상 장치 관리 레이어(120)는, 이후에, 가상 장치 관리 레이어(120)에 의해 생성되고 순환 방식으로 주요 KV 스토리지 장치(530a) 및 N-1개의 연속한 KV 스토리지 장치들(530)과 대응하는 적절한 MetaID 필드를 포함할 수 있는 동일한 사용자 키명칭 하에서 k+r 객체들(550, 560)을 기입할 수 있다.To summarize the reliability mechanism of splitting using typical erasure coding, the virtual device management layer 120 can split a relatively large KV object 570 into k objects 550 of the same size. The virtual device management layer 120 may then generate r parity objects 560 for the k objects 550 using an MDC code process. The virtual device management layer 120 may later hash the key corresponding to the KV value 570 to determine the primary KV storage device 530a in which the object will be located. The virtual device management layer 120 is subsequently created by the virtual device management layer 120 and corresponds to the main KV storage device 530a and N-1 consecutive KV storage devices 530 in a circular manner. k+r objects 550, 560 may be entered under the same user key name, which may include an appropriate MetaID field.

도 3 및 도 4를 다시 참조하면, 다른 실시 예에 따르면, 가상 장치 관리 레이어(120)는 재생성 소거 코딩을 사용하는, K-객체 (k,r,d) 소거 코딩 또는 다중 객체 "패킹(Packing)"의 신뢰성 메커니즘을 선택할 수 있다(예를 들어, 도 2의 순서도(200)에 따라). 현재의 신뢰성 메커니즘은 가상 장치 관리 레이어(120)가 k개의 객체들을 k개의 KV 스토리지 장치들로 패킹한다는 점에서, 이전에 설명된 전형적인 소거 코딩을 사용하는 패킹(Packing)의 신뢰성 메커니즘과 유사하다. 그러나 재생성 소거 코딩을 사용하는 패킹(Packing)은 전형적인 (k,r) 소거 코드들을 사용하는 대신에, (k,r,d) 재생성 코드들을 사용한다. 따라서 도 3 및 도 4는 현재 실시 예에 대하여 일반적으로 참조될 수 있다.Referring back to Figures 3 and 4, according to another embodiment, virtual device management layer 120 may use regenerative erasure coding, K-object (k,r,d) erasure coding, or multi-object "packing". )" reliability mechanism may be selected (e.g., according to flowchart 200 of FIG. 2). The current reliability mechanism is similar to the reliability mechanism of Packing using typical erasure coding described previously in that the virtual device management layer 120 packs the k objects into the k KV storage devices. However, packing using regenerative erasure coding uses (k,r,d) regenerative codes, instead of using typical (k,r) erasure codes. Accordingly, FIGS. 3 and 4 may be referenced generally with respect to the present embodiment.

따라서 재생성 코드들이 적합하나, 그러나 객체들을 분할하는 것이 적합하지 않고, 객체들을 보존하는 것이 더욱 적합한 경우에, 재생성 소거 코딩을 사용하는 패킹이 사용될 수 있다. 재생성 소거 코딩을 사용하는 패킹은 이전에 언급된 객체 복제, 및 전형적인 소거 코딩을 사용하는 스플릿팅 및 패킹의 신뢰성 메커니즘들을 위하여 사용되는 밸류 크기보다 더 큰 밸류 크기들에 대하여 적합할 수 있다. 재생성 소거 코딩을 사용하는 패킹은 객체의 복수의 서브패킷들을 읽는 것이 전체 객체를 읽는 것보다 낮은 성능을 유발하지 않을 경우에 사용될 수 있다. 재생성 소거 코딩을 사용하는 패킹은, 기본 KV 스토리지 장치들(예를 들어, 도 1의 KV 스토리지 장치들(130), 또는 도 3의 KV 스토리지 장치들(330))이 복구/재구성 동안 보조할 수 있는 재생성 코드를 인식하는 KV 스토리지 장치들인 경우에, 적합할 수 있다. Therefore, in cases where regenerative codes are suitable, but splitting objects is not suitable, and preserving objects is more suitable, packing using regenerative erasure coding can be used. Packing using regenerative erasure coding may be suitable for larger value sizes than those used for object replication, previously mentioned, and the reliability mechanisms of splitting and packing using traditional erasure coding. 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 primary KV storage devices (e.g., KV storage devices 130 in FIG. 1, or KV storage devices 330 in FIG. 3) to assist during recovery/reconstruction. This may be suitable for KV storage devices that recognize the regeneration code.

도 6은 본 발명의 실시 예에 따른, 재생성 소거 코딩을 사용하는 단일 객체 (k,r,d) 소거 코딩, 또는 "스플릿팅(Splitting)"의 신뢰성 메커니즘에 따라 키-밸류 데이터를 저장하도록 구성된 KV 스토리지 장치들의 그룹을 보여주는 블록도이다. 6 shows a schematic diagram configured to store key-value data according to a reliable mechanism of single object (k,r,d) erasure coding using regenerative erasure coding, or “Splitting,” according to an embodiment of the present invention. This is a block diagram showing a group of KV storage devices.

도 6을 참조하면, 현재의 신뢰성 메커니즘은, 전형적인 (k,r) MDS 소거 코딩 대신에 (k,r,d) 재생성 코드들을 사용한다는 점만 제외하면, 가상 장치 관리 레이어가 도 4에 도시된 바와 같이, 전형적인 소거 코딩을 사용하는 스플릿팅과 유사한 방식으로 동작하도록 할 수 있다. 재생성 소거 코딩을 사용하는 패킹과 같이, 현재의 신뢰성 메커니즘은 기본 KV 스토리지 장치들(630)이 복구/재구성 동안 보조할 수 있는 재생성 코드를 인식하는 KV 스토리지 장치들인 경우에 적합할 수 있다.Referring to Figure 6, the current reliability mechanism is that the virtual device management layer is as shown in Figure 4, except that it uses (k,r,d) regeneration codes instead of the typical (k,r) MDS erasure coding. Likewise, it can be made to behave in a similar way to splitting using typical erasure coding. The current reliability mechanism, such as packing using regenerative erasure coding, may be suitable in cases where the underlying KV storage devices 630 are KV storage devices that recognize regenerative code that can assist during recovery/reconstruction.

객체(670)가 이전에 기재된 신뢰성 메커니즘들과 대응하는 객체들보다 더 큰 밸류 크기를 갖고, 객체(670)의 k개의 스플릿들(680)의 복수의 서브패킷들(690)을 읽는 것이 전체 스플릿들(680)을 읽는 것(예를 들어, 전형적인 소거 코딩을 사용하는 스플리티의 신뢰성 메카니즘으로 수행됨.)보다 낮은 성능을 유발하지 않는 경우에 재생성 소거 코딩을 사용하는 스플릿팅이 적합할 수 있다. If object 670 has a larger value size than the corresponding objects with previously described reliability mechanisms, then reading a plurality of subpackets 690 of k splits 680 of object 670 may result in an overall split. Splitting using regenerative erasure coding may be suitable if it does not result in lower performance than reading fields 680 (e.g., performed with Split's reliability mechanism using traditional erasure coding).

재생성 소거 코딩을 사용하는 스플릿팅의 신뢰성 메커니즘은 객체들이 k개의 동일 크기의 객체들/스플릿들(650)로 분할되고 스플릿들(650)이 다수의 서브패킷들(690)(예를 들어, 현재 실시 예에서, 스플릿(650) 당 4개의 서브패킷들(690)로 분할됨.)로 가상으로 더 분할되고, 객체(670)로부터의 복수의 서브패킷들(690)을 읽는 것이 전체 객체(670)를 읽는 것보다 더 나은 처리량을 갖는 경우에 적합한 처리량을 가질 수 있는 매우 큰 밸류 크기들을 갖는 객체들/KV 밸류들에 적합할 수 있는 객체(KV 쌍) 단위의 메커니즘이다. 밸류 크기는 모든 기본 KV 스토리지 장치들(630)에 의해 지원된다. The reliability mechanism of splitting using regenerative erasure coding is that objects are partitioned into k equally sized objects/splits 650 and the splits 650 are divided into a number of subpackets 690 (e.g. In an embodiment, it is virtually further split into four subpackets 690 per split 650, and reading a plurality of subpackets 690 from an object 670 results in the entire object 670 ) is an object (KV pair)-level mechanism that can be suitable for objects/KV values with very large value sizes, which can have suitable throughput in cases where the throughput is better than reading ). Value size is supported by all basic KV storage devices 630.

전형적인 소거 코딩을 사용하는 스플릿팅과 유사하게, 도 4에 도시된 바와 같이, 현재 신뢰성 메커니즘의 가상 장치 관리 레이어(120)는 체계적인 재생성 코드를 사용하여 r개의 패리티 객체들(660)을 추가할 수 있고, k개의 스플릿들(650) 및 r개의 패리티 객체들(660)을 N개의 KV 스토리지 장치들(630)로 기입할 수 있다. (k+r=N) 그러나 r개의 패리티 객체들(660) 각각은 다수의 패리티 서브패킷들(692)(예를 들어, 스플릿/k 개의 객체(605) 당 서브패킷들(690)의 개수와 대응하는 숫자)로 분할될 수 있다. 전형적인 소거 코딩을 사용하는 스플릿팅과 달리, 현재 실시 예에서 기본 코드는 (4,2,5) 지그재그 코드(zigzag code)일 수 있다.Similar to splitting using typical erasure coding, as shown in Figure 4, the virtual device management layer 120 of the current reliability mechanism can add r parity objects 660 using a systematic regeneration code. And, k splits 650 and r parity objects 660 can be written to N KV storage devices 630. (k+r=N) However, each of the r parity objects 660 may contain a number of parity subpackets 692 (e.g., split/number of subpackets 690 per k object 605 and can be divided into corresponding numbers). Unlike splitting using typical erasure coding, in the current embodiment the base code may be a (4,2,5) zigzag code.

재생성 소거 코딩을 사용하는 스플릿팅의 신뢰성 메커니즘을 정리하면, 가상 장치 레이어(120)는 큰 KV 밸류(670)를 k개의 동일 크기의 객체들(650)로 분할 수 있다. 가상 장치 관리 레이어(120)는, 이후에, k개의 객체들(650) 각각을 m개의 동일 크기의 서브패킷들(690)로 분할 수 있다. m은 정수임. 가상 장치 관리 레이어(120)는, 이후에, 재생성 코딩 프로세스를 사용하여 k개의 객체들(650)에 대한 r개의 패리티 객체들(660)을 생성할 수 있고, r개의 패리티 객체들(660) 각각은 m개의 동일 크기의 패리티 서브패킷들(692)로 분할될 수 있다. 가상 장치 관리 레이어(120)는, 이후에, KV 밸류(670)에 대응하는 키를 해싱하여 객체가 위치할 주요 KV 스토리지 장치(630a)를 판별할 수 있다. 가상 장치 관리 레이어(120)는, 이후에, 가상 장치 관리 레이어(120)에 의해 생성되고 순환 방식으로 주요 KV 스토리지 장치(530a) 및 N-1개의 연속한 KV 스토리지 장치들(530)과 대응하는 적절한 MetaID 필드를 포함할 수 있는 동일한 사용자 키명칭 하에서 각각에 대하여 m개의 서브패킷들(690, 692)을 포함하는 k+r개의 객체들(650, 660)을 기입할 수 있다. To summarize the reliability mechanism of splitting using regenerative erasure coding, the virtual device layer 120 can split a large KV value 670 into k objects 650 of the same size. The virtual device management layer 120 may then divide each of the k objects 650 into m subpackets 690 of the same size. m is an integer. The virtual device management layer 120 may then use a regenerative coding process to generate r parity objects 660 for the k objects 650, each of the r parity objects 660 Can be divided into m parity subpackets 692 of the same size. The virtual device management layer 120 may later hash the key corresponding to the KV value 670 to determine the primary KV storage device 630a in which the object will be located. The virtual device management layer 120 is subsequently created by the virtual device management layer 120 and corresponds to the main KV storage device 530a and N-1 consecutive KV storage devices 530 in a circular manner. K+r objects 650, 660, each containing m subpackets 690, 692, may be entered under the same user key name, which may include an appropriate MetaID field.

상술된 바에 따르면, 가상 장치 관리 레이어는 데이터의 하나 또는 그 이상의 속성들을 기반으로 데이터의 저장에 대하여 신뢰성 메커니즘들의 그룹으로부터 적절한 신뢰성 메커니즘을 선택할 수 있다. 따라서 본문에 기재된 실시 예들은 기재된 신뢰성 메커니즘들이 각각 단일 키 복구 절차를 수행할 수 있기 때문에 메모리 스토리지의 분야에서 향상을 제공한다. 전체 메모리 장치들이 고장인 경우, 본 발명의 실시 예의 가상 장치 관리 레이어는 고장난 메모리 장치에 존재하는 키들 전부를 복구하고 새로운 메모리 장치로 복사할 수 있다. 가상 장치 관리 레이어는 신뢰성 그룹의 고장난 메모리 장치와 인접한 메모리 장치들에 존재하는 키들 전체에 대한 반복 동작을 수행하고, 신뢰성 메커니즘이 고장난 메모리 장치에 존재하는 것으로 판단한 키들에 대하여 키 단위 복구 동작을 수행함으로써, 키들 전체의 복구 및 복사를 달성할 수 있다. As discussed above, the virtual device management layer may select an appropriate trust mechanism from a group of trust mechanisms for storage of the data based on one or more attributes of the data. Accordingly, the embodiments described herein provide improvements in the field of memory storage because the described reliability mechanisms are each capable of performing a single key recovery procedure. When all memory devices fail, the virtual device management layer of an embodiment of the present invention can recover all keys existing in the failed memory device and copy them to a new memory device. The virtual device management layer performs a repetitive operation on all keys existing in the failed memory device and adjacent memory devices in the reliability group, and performs a key-by-key recovery operation on the keys that the reliability mechanism determines to exist in the failed memory device. , recovery and copying of all keys can be achieved.

기본 신뢰성 메커니즘들(예를 들어, 기본 스토리지 장치들 제약에 따른)에 의해 지원되는 것보다 큰 밸류 크기들을 갖는 매우 큰 KV 쌍들이 신뢰성 관리자에 의해 복수의 KV 쌍들로 명시적으로 분할되고, 신뢰성 메커니즘들이 복수의 스플릿들 및 스플릿 개수 정보를 밸류들에 저장된 메타데이터와 함께 저장하기 때문에, 기재된 실시 예들은 메모리 스토리지 분야에서 향상을 더 제공한다.Very large KV pairs with value sizes larger than those supported by the underlying reliability mechanisms (e.g., based on underlying storage device constraints) are explicitly split into multiple KV pairs by the reliability manager, and the reliability mechanism The described embodiments provide further improvements in the area of memory storage because they store multiple splits and split number information along with metadata stored in values.

본문에 기재된 실시 예들은, 비록 특정한 용어들을 사용하였으나, 그것들은 일반적이고 기술적인 의미에서 해석되어야 하며, 이에 국한되지 않는다. 일부 예들에서, 본 발명이 속하는 기술 분야에서의 통상의 기술자에 의해 나타나는 바와 같이, 지시된 실시 예에 대하여 다르게 언급되지 않는 한, 특정 실시 예와 연관되어 설명된 특징들, 속성들, 및/또는 요소들은 다른 실시 예와 연관되어 설명된 특징들, 속성들, 및/또는 요소들과 조합되어 또는 독립적으로 사용될 수 있다. 따라서 당업자는 형태 또는 상세한 설명의 다양한 변형들이 그것들에 포함된 그것들의 기능적인 균등물로 상세한 설명 및 이하의 특허청구범위의 사상 및 범위로부터의 벗어남 없이 행해질 수 있음이 이해될 것이다.Although the embodiments described in the text use specific terms, they should be interpreted in a general and technical sense, and are not limited thereto. In some instances, features, attributes, and/or features described in connection with a particular embodiment, as would appear by a person of ordinary skill in the art to which the present invention pertains, unless otherwise stated with respect to the indicated embodiment. Elements may be used independently or in combination with features, attributes, and/or elements described in connection with other embodiments. Accordingly, it will be understood by those skilled in the art that various changes in form or description, as well as functional equivalents thereof, may be made without departing from the spirit and scope of the description and the following claims.

Claims (20)

단일 논리적 유닛으로서 신뢰성 그룹으로 그룹화되고, 가상 장치 관리 레이어에 의해 관리되는 N(단, N은 정수)개의 스토리지 장치들을 포함하는 키-밸류 신뢰성 시스템의 데이터 저장 방법에 있어서,
상기 데이터가 상기 데이터를 저장하기 위한 신뢰성 메커니즘에 대응하는 임계치를 만족하는지 판별하는 단계;
상기 임계치가 만족된 경우, 상기 신뢰성 메커니즘을 선택하는 단계; 및
상기 선택된 신뢰성 메커니즘에 따라 상기 데이터를 저장하는 단계를 포함하고,
상기 선택된 신뢰성 메커니즘은 객체 복제를 포함하고,
상기 데이터를 저장하는 단계는:
KV 밸류를 선택하는 단계;
상기 선택된 KV 밸류에 대응하는 키를 해싱하기 위한 해시를 연산하는 단계;
상기 KV 밸류와 대응하는 키 객체들의 복제본들을 저장하기 위해 상기 N개의 스토리지 장치들 중 일부 스토리지 장치들을 판별하는 단계; 및
동일한 사용자 키명칭 하에서, 상기 판별된 일부 스토리지 장치들 각각에 상기 KV 밸류와 대응하는 업데이트된 밸류들을 기입하는 단계를 포함하는 키-밸류 신뢰성 시스템의 데이터 저장 방법.
A data storage method in a key-value reliability system comprising N (where N is an integer) storage devices grouped into reliability groups as a single logical unit and managed by a virtual device management layer, comprising:
determining whether the data satisfies a threshold corresponding to a reliability mechanism for storing the data;
if the threshold is met, selecting the reliability mechanism; and
storing the data according to the selected reliability mechanism,
The selected reliability mechanism includes object replication,
The steps for storing the data are:
Selecting KV Value;
calculating a hash for hashing the key corresponding to the selected KV value;
determining some of the N storage devices to store replicas of key objects corresponding to the KV value; and
A data storage method in a key-value reliability system comprising the step of writing updated values corresponding to the KV value into each of the determined storage devices under the same user key name.
제 1 항에 있어서,
상기 임계치는 상기 데이터의 객체 크기, 상기 데이터의 처리량 고려(throughput consideration), 상기 데이터의 읽기/쓰기 온도(read/write temperature), 및 상기 N개의 스토리지 장치들의 기본 소거 코딩 능력 중 하나 또는 그 이상에 기반된 키-밸류 신뢰성 시스템의 데이터 저장 방법.
According to claim 1,
The threshold depends on one or more of the object size of the data, throughput consideration of the data, read/write temperature of the data, and basic erase coding capabilities of the N storage devices. Data storage method of key-value reliability system based.
제 1 항에 있어서,
하나 또는 그 이상의 블룸 필터들 또는 캐시들을 사용하여 상기 신뢰성 메커니즘에 대한 상기 데이터를 테스트하는 단계를 더 포함하는 키-밸류 신뢰성 시스템의 데이터 저장 방법.
According to claim 1,
A method of data storage in a key-value reliability system further comprising testing the data against the reliability mechanism using one or more Bloom filters or caches.
제 1 항에 있어서,
상기 선택된 신뢰성 메커니즘, 상기 데이터를 저장하는 상기 N개의 스토리지 장치들 각각에 대한 하나 또는 그 이상의 체크섬들, 상기 데이터를 저장하는 상기 N개의 스토리지 장치들 각각에 저장된 상기 데이터의 밸류들의 객체 크기들, 및 상기 N개의 스토리지 장치들 중 어떤 것에 상기 데이터가 저장되었는지를 가리키는 상기 N개의 스토리지 장치들의 패리티 그룹 멤버들의 위치를 기록하기 위한 메타데이터를 상기 데이터에 대응하는 키와 함께 삽입하는 단계를 더 포함하는 키-밸류 신뢰성 시스템의 데이터 저장 방법.
.
According to claim 1,
the selected reliability mechanism, one or more checksums for each of the N storage devices storing the data, object sizes of values of the data stored on each of the N storage devices storing the data, and The key further comprising inserting metadata for recording the locations of parity group members of the N storage devices indicating which of the N storage devices the data is stored in, together with a key corresponding to the data. -Data storage method in value reliability system.
.
삭제delete 제 1 항에 있어서,
상기 선택된 신뢰성 메커니즘은 패킹(packing)을 포함하고,
상기 데이터를 저장하는 단계는:
상기 신뢰성 그룹의 상기 N개의 스토리지 장치들 중 k(단, k는 정수)개의 스토리지 장치들에 저장된 k개의 키 객체들을 선택하는 단계;
상기 k개의 키 객체들에 대응하는 k개의 밸류 객체들을 회수하는 단계;
상기 k개의 밸류 객체들 전부의 가상 밸류 크기가 동일해 지도록 상기 k개의 밸류 객체들 중 가장 큰 밸류 크기를 갖지 않는 밸류 객체들의 종단들에 가상 제로들을 패딩하는 단계;
상기 k개의 키 객체들로부터 r(단, r은 정수)개의 패리티 객체들을 생성하는 단계;
상기 k개의 키 객체들을 상기 k개의 스토리지 장치들로 기입하는 단계; 및
상기 r개의 패리티 객체들을 상기 N개의 스토리지 장치들 중 r개의 스토리지 장치들에 기입하는 단계를 포함하고,
상기 r개의 스토리지 장치들 각각은 상기 k개의 스토리지 장치들과 구분되고, 단, k+r=N인 키-밸류 신뢰성 시스템의 데이터 저장 방법.
According to claim 1,
The selected reliability mechanism includes packing,
The steps for storing the data are:
selecting k key objects stored in k (where k is an integer) storage devices among the N storage devices of the reliability group;
Retrieving k value objects corresponding to the k key objects;
padding virtual zeros at the ends of value objects that do not have the largest value size among the k value objects so that the virtual value sizes of all the k value objects are the same;
generating r parity objects (where r is an integer) from the k key objects;
writing the k key objects to the k storage devices; and
Comprising writing the r parity objects to r storage devices among the N storage devices,
Each of the r storage devices is distinct from the k storage devices, provided that k+r=N.
제 6 항에 있어서,
상기 선택된 신뢰성 메커니즘은 전형적인 소거 코딩을 사용하는 패킹을 포함하고,
상기 N개의 스토리지 장치들은 전형적인 (k,r) MDS(maximum distance separable) 소거 코딩으로 구성되는 키-밸류 신뢰성 시스템의 데이터 저장 방법.
According to claim 6,
The selected reliability mechanism includes packing using typical erasure coding,
The data storage method of the key-value reliability system in which the N storage devices are configured with typical (k,r) MDS (maximum distance separable) erasure coding.
제 6 항에 있어서,
상기 선택된 신뢰성 메커니즘은 재생성 소거 코딩을 사용하는 패킹을 포함하고,
상기 N개의 스토리지 장치들은 (k,r,d) 재생성 소거 코딩으로 구성되는 키-밸류 신뢰성 시스템의 데이터 저장 방법.
According to claim 6,
The selected reliability mechanism includes packing using regenerative erasure coding,
The data storage method of the key-value reliability system in which the N storage devices are configured with (k, r, d) regenerative erasure coding.
제 1 항에 있어서,
상기 선택된 신뢰성 메커니즘은 스플릿팅을 포함하고,
상기 데이터를 저장하는 단계는:
KV 밸류를 선택하는 단계;
상기 KV 밸류를 k(단, k는 정수)개의 동일 크기의 객체들로 분할하는 단계;
상기 k개의 동일 크기의 객체들로부터 r(단 r은 정수)개의 패리티 객체들을 생성하는 단계;
상기 선택된 KV 밸류에 대응하는 키를 해싱하기 위한 해시를 연산하는 단계;
상기 해시를 기반으로 상기 N개의 스토리지 장치들 중 상기 KV 밸류가 위치할 주요 장치를 판별하는 단계; 및
상기 주요 장치로부터 시작하여 연속하는 순서로 상기 k개의 동일 크기의 객체들 및 상기 r개의 패리티 객체들 각각을 상기 N개의 스토리지 장치들에 기입하는 단계를 포함하고, 단, k+r=N인 키-밸류 신뢰성 시스템의 데이터 저장 방법.
According to claim 1,
The selected reliability mechanism includes splitting,
The steps for storing the data are:
Selecting KV Value;
Dividing the KV value into k (where k is an integer) objects of the same size;
generating r parity objects (where r is an integer) from the k objects of the same size;
calculating a hash for hashing the key corresponding to the selected KV value;
determining a main device among the N storage devices where the KV value is located based on the hash; and
Starting from the main device, writing each of the k objects of the same size and the r parity objects to the N storage devices in successive order, provided that the key where k+r=N. -Data storage method in value reliability system.
제 9 항에 있어서,
상기 선택된 신뢰성 메커니즘은 전형적인 소거 코딩을 사용하는 스플릿팅을 포함하고,
상기 N개의 스토리지 장치들은 전형적인 (k,r) MDS(maximum distance separable) 소거 코딩으로 구성되는 키-밸류 신뢰성 시스템의 데이터 저장 방법.
According to clause 9,
The selected reliability mechanism includes splitting using typical erasure coding,
The data storage method of the key-value reliability system in which the N storage devices are configured with typical (k,r) MDS (maximum distance separable) erasure coding.
제 9 항에 있어서,
상기 선택된 신뢰성 메커니즘은 재생성 소거 코딩을 사용하는 패킹을 포함하고,
상기 N개의 스토리지 장치들은 (k,r,d) 재생성 소거 코딩으로 구성되고,
상기 데이터를 저장하는 단계는:
상기 재생성 소거 코딩을 사용하여 상기 k개의 동일 크기의 객체들 각각을 m(단, m은 정수)개의 서브패킷들로 분할하는 단계; 및
상기 r개의 패리티 객체들 각각을 m개의 패리티 서브패킷들로 분할하는 단계를 더 포함하는 키-밸류 신뢰성 시스템의 데이터 저장 방법.
According to clause 9,
The selected reliability mechanism includes packing using regenerative erasure coding,
The N storage devices are configured with (k, r, d) regenerative erasure coding,
The steps for storing the data are:
Splitting each of the k objects of the same size into m (where m is an integer) subpackets using the regenerative erasure coding; and
A data storage method in a key-value reliability system further comprising dividing each of the r parity objects into m parity subpackets.
선택된 신뢰성 메커니즘을 기반으로 데이터를 저장하는 데이터 신뢰성 시스템에 있어서,
스테이트리스 데이터 보호를 사용하여 가상 장치로서 구성되는 N(단, N은 정수)개의 스토리지 장치들; 및
상기 선택된 신뢰성 메커니즘에 따라, 상기 N개의 스토리지 장치들을 상기 가상 장치로서 관리하여 상기 N개의 스토리지 장치들 중 선택된 스토리지 장치들에 데이터를 저장하도록 구성된 가상 장치 관리 레이어를 포함하고,
상기 가상 장치 관리 레이어는:
상기 데이터가 상기 데이터를 저장하기 위한 신뢰성 메커니즘에 대응하는 임계치를 만족하는지 판별하고;
상기 임계치가 만족된 경우, 상기 신뢰성 메커니즘을 선택하고;
상기 선택된 신뢰성 메커니즘에 따라 상기 데이터를 저장하도록 구성되고
상기 선택된 신뢰성 메커니즘은 객체 복제를 포함하고,
상기 가상 장치 관리 레이어는:
KV 밸류를 선택하고;
상기 선택된 KV 밸류에 대응하는 키를 해싱하기 위한 해시를 연산하고;
상기 KV 밸류에 대응하는 키 객체들의 복제본들을 저장하기 위해 상기 N개의 스토리지 장치들 중 일부 스토리지 장치들을 판별하고;
동일한 사용자 키명칭하에서 상기 판별된 일부 스토리지 장치들 각각에 상기 KV 밸류에 대응하는 업데이트된 밸류들을 기입함으로써, 상기 데이터를 저장하도록 구성된 데이터 신뢰성 시스템.
In a data reliability system that stores data based on a selected reliability mechanism,
N (where N is an integer) storage devices configured as virtual devices using stateless data protection; and
a virtual device management layer configured to manage the N storage devices as the virtual devices and store data in selected storage devices among the N storage devices according to the selected reliability mechanism;
The virtual device management layer:
determine whether the data satisfies a threshold corresponding to a reliability mechanism for storing the data;
If the threshold is met, select the reliability mechanism;
configured to store the data according to the selected reliability mechanism;
The selected reliability mechanism includes object replication,
The virtual device management layer:
Select KV Value;
Compute a hash for hashing the key corresponding to the selected KV value;
determine some of the N storage devices to store replicas of key objects corresponding to the KV value;
A data reliability system configured to store the data by writing updated values corresponding to the KV value into each of the identified storage devices under the same user key name.
삭제delete 제 12 항에 있어서,
상기 선택된 신뢰성 메커니즘은 패킹을 포함하고,
상기 가상 장치 관리 레이어는:
상기 N개의 스토리리 장치들 중 k(단, k는 정수)개의 스토리지 장치들에 저장된 k개의 키 객체들을 선택하고;
상기 k개의 키 객체들에 대응하는 k개의 밸류 객체들을 회수하고;
상기 k개의 밸류 객체들 모두의 가상 밸류 크기가 동일해 지도록, 상기 k개의 밸류 객체들 중 가장 큰 밸류 크기를 갖지 않는 밸류 객체들의 종단들에 가상 제로들을 패딩하고;
상기 k개의 키 객체들로부터 r(단, r은 정수)개의 패리티 객체들을 생성하고;
상기 k개의 키 객체들을 상기 k개의 스토리지 장치들로 기입하고;
상기 r개의 패리티 객체들을 상기 N개의 스토리지 장치들 중 r개의 스토리지 장치들에 기입함으로써, 상기 데이터를 저장하도록 구성되고,
상기 r개의 스토리지 장치들 각각은 상기 k개의 스토리지 장치들과 구분되고, k+r=N인 데이터 신뢰성 시스템.
According to claim 12,
The selected reliability mechanism includes packing,
The virtual device management layer:
select k key objects stored in k (where k is an integer) storage devices among the N storage devices;
retrieve k value objects corresponding to the k key objects;
padding virtual zeros on the ends of value objects that do not have the largest value size among the k value objects so that the virtual value sizes of all of the k value objects are the same;
Generate r parity objects (where r is an integer) from the k key objects;
write the k key objects to the k storage devices;
configured to store the data by writing the r parity objects to r storage devices among the N storage devices,
A data reliability system where each of the r storage devices is distinct from the k storage devices, and k+r=N.
제 12 항에 있어서,
상기 선택된 신뢰성 메커니즘은 스플릿팅을 포함하고,
상기 가상 장치 관리 레이어는:
KV 밸류를 선택하고,
상기 KV 밸류를 k(단, k는 정수)개의 동일 크기의 객체들로 분할하고;
상기 k개의 동일 크기의 객체들로부터 r개의 패리티 객체들을 생성하고, 단, r은 정수;
상기 선택된 KV 밸류에 대응하는 키를 해싱하기 위한 해시를 연산하고;
상기 해시를 기반으로 상기 N개의 스토리지 장치들 중 상기 KV 밸류가 위치할 주요 장치를 판별하고;
상기 주요 장치로부터 시작하여 연속하는 순서로 상기 k개의 동일 크기의 객체들 및 상기 r개의 패리티 객체들 각각을 상기 N개의 스토리지 장치들에 기입함으로써, 상기 데이터를 저장하도록 구성되고,
단, k+r=N인 데이터 신뢰성 시스템.
According to claim 12,
The selected reliability mechanism includes splitting,
The virtual device management layer:
Select KV Value,
Split the KV value into k (where k is an integer) objects of equal size;
Generate r parity objects from the k objects of the same size, where r is an integer;
Compute a hash for hashing the key corresponding to the selected KV value;
Based on the hash, determine a main device among the N storage devices where the KV value is located;
configured to store the data by writing each of the k objects of the same size and the r parity objects to the N storage devices in successive order starting from the main device,
However, a data reliability system where k+r=N.
제 15 항에 있어서,
상기 선택된 신뢰성 메커니즘은 재생성 소거 코딩을 사용하는 스플릿팅을 포함하고,
상기 N개의 스토리지 장치들은 (k,r,d) 재생성 소거 코딩으로 구성되고,
상기 가상 장치 관리 레이어는 상기 재생성 소거 코딩을 사용하여 상기 k개의 동일 크기의 객체들을 m(단, m은 정수)개의 서브 패킷들로 분할하고, 상기 r개의 패리티 객체들 각각을 m개의 패리티 서브 패킷들로 분할함으로써, 상기 데이터를 저장하도록 더 구성되는 데이터 신뢰성 시스템.
According to claim 15,
The selected reliability mechanism includes splitting using regenerative erasure coding,
The N storage devices are configured with (k, r, d) regenerative erasure coding,
The virtual device management layer divides the k objects of the same size into m (where m is an integer) subpackets using the regenerative erasure coding, and divides each of the r parity objects into m parity subpackets. A data reliability system further configured to store the data by dividing into groups.
프로세서에 의해 실행되는 경우, 단일 논리적 유닛으로서 신뢰성 그룹으로 그룹화되고 가상 장치 관리 레이어에 의해 관리되는 N개의 스토리지 장치들을 포함하는 키-밸류 신뢰성 시스템에 데이터를 저장하는 방법이 수행되는 컴퓨터 코드를 포함하는 비-일시적 컴퓨터 판독 가능한 매체에 있어서,
상기 방법은:
상기 데이터가 상기 데이터를 저장하기 위한 신뢰성 메커니즘에 대응하는 임계치를 만족하는지 판별하는 단계;
상기 임계치가 만족된 경우, 상기 신뢰성 메커니즘을 선택하는 단계; 및
상기 선택된 신뢰성 메커니즘에 따라 데이터를 저장하는 단계를 포함하고,
상기 선택된 신뢰성 메커니즘은 객체 복제를 포함하고,
상기 데이터를 저장하는 단계는:
KV 밸류를 선택하는 단계;
상기 선택된 KV 밸류에 대응하는 키를 해싱하기 위한 해시를 연산하는 단계;
상기 KV 밸류에 대응하는 키 객체들의 복제본을 저장하기 위해 상기 N개의 스토리지 장치들 중 일부 스토리지 장치들을 선택하는 단계; 및
동일한 사용자 키명칭 하에서, 상기 KV 밸류에 대응하는 업데이트된 밸류들을 상기 판별된 일부 스토리지 장치들 각각에 기입하는 단계를 포함하는 비-일시적 컴퓨터 판독 가능한 매체.
Comprising computer code that, when executed by a processor, performs a method of storing data in a key-value reliability system comprising N storage devices grouped into a reliability group as a single logical unit and managed by a virtual device management layer. In a non-transitory computer-readable medium,
The above method is:
determining whether the data satisfies a threshold corresponding to a reliability mechanism for storing the data;
if the threshold is met, selecting the reliability mechanism; and
storing data according to the selected reliability mechanism,
The selected reliability mechanism includes object replication,
The steps for storing the data are:
Selecting KV Value;
calculating a hash for hashing the key corresponding to the selected KV value;
selecting some of the N storage devices to store copies of key objects corresponding to the KV value; and
and writing updated values corresponding to the KV value to each of the identified storage devices under the same user key name.
삭제delete 제 17 항에 있어서,
상기 선택된 신뢰성 메커니즘은 패킹을 포함하고,
상기 데이터를 저장하는 단계는:
상기 신뢰성 그룹의 상기 N개의 스토리지 장치들 중 k(단, k는 정수)개의 스토리지 장치들에 저장된 k개의 키 객체들을 선택하는 단계;
상기 k개의 키 객체들에 대응하는 k개의 밸류 객체들을 회수하는 단계;
상기 k개의 밸류 객체들 모두의 가상 밸류 크기가 동일해 지도록 상기 k개의 밸류 객체들 중 가장 큰 밸류 크기를 갖지 않는 밸류 객체들의 종단들에 가상 제로들을 패딩하는 단계;
상기 k개의 키 객체들로부터 r(단, r은 정수)개의 패리티 객체들을 생성하는 단계;
상기 k개의 키 객체들을 상기 k개의 스토리지 장치들에 기입하는 단계; 및
상기 r개의 패리티 객체들을 상기 N개의 스토리지 장치들 중 r개의 스토리지 장치들에 기입하는 단계를 포함하고,
상기 r개의 스토리지 장치들 각각은 상기 k개의 스토리지 장치들과 구분되고, k+r=N인 비-일시적 컴퓨터 판독 가능한 매체.
According to claim 17,
The selected reliability mechanism includes packing,
The steps for storing the data are:
selecting k key objects stored in k (where k is an integer) storage devices among the N storage devices of the reliability group;
Retrieving k value objects corresponding to the k key objects;
padding the ends of value objects that do not have the largest value size among the k value objects with virtual zeros so that the virtual value sizes of all of the k value objects are the same;
generating r parity objects (where r is an integer) from the k key objects;
writing the k key objects to the k storage devices; and
Comprising writing the r parity objects to r storage devices among the N storage devices,
Each of the r storage devices is distinct from the k storage devices, and k+r=N.
제 17 항에 있어서,
상기 선택된 신뢰성 메커니즘은 스플릿팅을 포함하고,
상기 데이터를 저장하는 단계는:
KV 밸류를 선택하는 단계;
상기 KV 밸류를 k(단, k는 정수)개의 동일 크기의 객체들로 분할하는 단계;
상기 k개의 동일 크기의 객체들로부터 r(단, r은 정수)개의 패리티 객체들을 생성하는 단계;
상기 선택된 KV 밸류에 대응하는 키를 해싱하기 위한 해시를 연산하는 단계;
상기 해시를 기반으로, 상기 N개의 스토리지 장치들 중 상기 KV 밸류가 위치할 주요 장치를 선택하는 단계; 및
상기 주요 장치로부터 시작하여 연속한 순서로, 상기 k개의 동일 크기의 객체들 및 상기 r개의 패리티 객체들 각각을 상기 N개의 스토리지 장치들에 기입하는 단계를 포함하고,
k+r=N인 비-일시적 컴퓨터 판독 가능한 매체.
According to claim 17,
The selected reliability mechanism includes splitting,
The steps for storing the data are:
Selecting KV Value;
Dividing the KV value into k (where k is an integer) objects of the same size;
generating r parity objects (where r is an integer) from the k objects of the same size;
calculating a hash for hashing the key corresponding to the selected KV value;
Based on the hash, selecting a main device among the N storage devices where the KV value will be located; and
Writing each of the k objects of the same size and the r parity objects to the N storage devices in sequential order starting from the main device,
Non-transitory computer readable medium where k+r=N.
KR1020180145797A 2018-01-19 2018-11-22 A system and method for hybrid data reliability for object storage devices KR102663422B1 (en)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US15/876,028 US10795760B2 (en) 2017-03-20 2018-01-19 Key value SSD
US15/876,028 2018-01-19
US201862635311P 2018-02-26 2018-02-26
US62/635,311 2018-02-26
US15/967,302 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/713,479 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/165,655 2018-10-19

Publications (2)

Publication Number Publication Date
KR20190088874A KR20190088874A (en) 2019-07-29
KR102663422B1 true KR102663422B1 (en) 2024-05-07

Family

ID=67315591

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180145797A KR102663422B1 (en) 2018-01-19 2018-11-22 A system and method for hybrid data reliability for object storage devices

Country Status (4)

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

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020165942A1 (en) * 2001-01-29 2002-11-07 Ulrich Thomas R. Data path accelerator with variable parity, variable length, and variable extent parity groups
US20140219003A1 (en) * 2013-02-07 2014-08-07 Seagate Technology Llc Temperature Based Logic Profile for Variable Resistance Memory Cells
US20170177266A1 (en) 2015-12-21 2017-06-22 Quantum Corporation Data aware deduplication object storage (dados)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7533330B2 (en) * 2005-06-27 2009-05-12 Seagate Technology Llc Redundancy for storage data structures
US8504535B1 (en) * 2010-12-20 2013-08-06 Amazon Technologies, Inc. Erasure coding and redundant replication
JP2013050836A (en) * 2011-08-31 2013-03-14 Nec Corp Storage system, method for checking data integrity, and program
US8977804B1 (en) * 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Varying data redundancy in storage systems
US8799746B2 (en) * 2012-06-13 2014-08-05 Caringo, Inc. Erasure coding and replication in storage clusters
US8949180B1 (en) * 2012-06-28 2015-02-03 Emc International Company Replicating key-value pairs in a continuous data protection system
CN102937967B (en) * 2012-10-11 2018-02-27 南京中兴新软件有限责任公司 Data redundancy realization method and device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020165942A1 (en) * 2001-01-29 2002-11-07 Ulrich Thomas R. Data path accelerator with variable parity, variable length, and variable extent parity groups
US20140219003A1 (en) * 2013-02-07 2014-08-07 Seagate Technology Llc Temperature Based Logic Profile for Variable Resistance Memory Cells
US20170177266A1 (en) 2015-12-21 2017-06-22 Quantum Corporation Data aware deduplication object storage (dados)

Also Published As

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

Similar Documents

Publication Publication Date Title
US11275762B2 (en) System and method for hybrid data reliability for object storage devices
KR101758544B1 (en) Synchronous mirroring in non-volatile memory systems
EP3230870B1 (en) Elastic metadata and multiple tray allocation
US9021296B1 (en) Independent data integrity and redundancy recovery in a storage system
US6393516B2 (en) System and method for storage media group parity protection
CN102937967B (en) Data redundancy realization method and device
US9280457B2 (en) System and method for volume block number to disk block number mapping
US7356731B2 (en) Uniform and symmetric double failure correcting technique for protecting against two disk failures in a disk array
CN107851061B (en) Hardware assisted transaction commit in remote memory
WO2001013236A1 (en) Object oriented fault tolerance
KR102368935B1 (en) Key value solid state drive
KR102460568B1 (en) System and method for storing large key value objects
WO2015057240A1 (en) Target-driven independent data integrity and redundancy recovery in a shared-nothing distributed storage system
US7500054B2 (en) Adaptive grouping in object RAID
TW201329714A (en) A method for metadata persistence
Venkatesan et al. Effect of latent errors on the reliability of data storage systems
US7685377B1 (en) Piecewise logical data management
KR102663422B1 (en) A system and method for hybrid data reliability for object storage devices
US10747610B2 (en) Leveraging distributed metadata to achieve file specific data scrubbing
Appuswamy et al. Block-level {RAID} Is Dead
Schwarz et al. Reliability Stripe Coagulation in Two Failure Tolerant Storage Arrays
Yang et al. S3R5: A Snapshot Storage System Based on ROW with Rapid Rollback, Recovery and Read-Write
CN117055807A (en) Data storage method, device, computer equipment and storage medium
CN113168288A (en) System and method for reporting and handling flash programming failures in host managed flash translation layers

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant