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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 230000007246 mechanism Effects 0.000 claims abstract description 158
- 238000007726 management method Methods 0.000 claims abstract description 81
- 238000013500 data storage Methods 0.000 claims abstract description 13
- 238000012856 packing Methods 0.000 claims description 42
- 230000001172 regenerating effect Effects 0.000 claims description 32
- 230000010076 replication Effects 0.000 claims description 29
- 238000012360 testing method Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 15
- 238000011084 recovery Methods 0.000 description 12
- 230000008929 regeneration Effects 0.000 description 10
- 238000011069 regeneration method Methods 0.000 description 10
- 239000007943 implant Substances 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000006872 improvement Effects 0.000 description 4
- 238000005259 measurement Methods 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 230000009897 systematic effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000013403 standard screening design Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0727—Error 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk 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.
Description
본 발명의 실시 예들의 하나 또는 그 이상의 사상들은 일반적으로 데이터 스토리지 시스템들과 관련되고, 더욱 상세하게는, 복수의 키-밸류 스토리지 장치들을 포함하는 키-밸류 신뢰성 시스템에 키-밸류 데이터를 신뢰할 수 있게 저장하는 신뢰성 메커니즘을 선택하는 방법에 관한 것이다. 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-
현재 실시 예에서, 가상 장치 관리 레이어(120)는 키-밸류 신뢰성 시스템에 키-밸류 데이터/KV 쌍(170)을 신뢰성 있게 저장하는 방법을 가능하게 할 수 있다. 키-밸류 신뢰성 시스템은 하나의 논리적 유닛(logical unit)으로 그롭화된 복수의 KV 스토리지 장치들(130)을 포함할 수 있다. 논리적 유닛은 신뢰성 그룹(140)으로 지칭될 수 있다. In a current embodiment, virtual
신뢰성 그룹(140)의 KV 스토리지 장치들(130)은 키-밸류 데이터(170)와 대응할 수 있는, 소거 코딩된 데이터 및/또는 복제된 데이터의 각각의 청크들을 저장할 수 있다. 신뢰성 그룹(140)의 KV 스토리지 장치들(130)은 키-밸류 동작들이 가상 장치 관리 레이어(120)를 통해 지정(be directed to)되는 단일 가상 장치(110)로 나타난다.
가상 장치(110)는 가상 장치 관리 레이어(120)로서 스테이트리스 하이브리드 신뢰성 관리자(stateless hybrid reliability manager)를 포함할 수 있다. 즉, 가상 장치 관리 레이어(120)는 스테이트리스 방식(즉, 키-밸류와 장치 사이의 맵핑을 유지하는 것을 필요로 하지 않음)으로 동작할 수 있다.The
따라서 가상 장치(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
다른 실시 예들에서, 키-밸류 신뢰성 시스템은 키-밸류 데이터(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-
다른 실시 예들에서, 키-밸류 신뢰성 시스템은 이하에서 설명되는 신뢰성 메커니즘들과 대응하는 블룸 필터들(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 스토리지 장치들(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-
신뢰성 메커니즘들은 가상 장치(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
본 발명의 실시 예들의 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
도 2는 본 발명의 실시 예에 따른, KV 쌍의 데이터의 크기에 대응하는 크기 임계치에 기반된 키-밸류 신뢰성 시스템에 의해 사용되는 신뢰성 메커니즘의 선택을 보여주는 순서도(200)이다. Figure 2 is a
도 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
예를 들어, S210에서, 가상 장치 관리 레이어(120)는 "n"(n은 정수)개의 크기 임계치 기반의 지원되는 신뢰성 메커니즘들을 수신할 수 있다. S220에서, 가상 장치 관리 레이어(120)는 1부터 n의 순서로 한번에 하나씩, 신뢰성 메커니즘들 각각을 단순히 검토할 수 있다. S230에서, 지원되는 신뢰성 메커니즘들 각각의 검토에서, 가상 장치 관리 레이어(120)는 데이터의 밸류 크기가 각각의 신뢰성 메커니즘과 대응하는 임계치(ti)보다 작은지 판별할 수 있다.For example, at S210, virtual
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
현재 실시 예에서, "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
본 발명의 실시 예들에서, 사용을 위한 신뢰성 메커니즘의 선택은 객체의 객체 크기, 객체 대한 처리량 요구 조건들, 대응하는 키-밸류 쌍의 읽기/쓰기 온도(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
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
객체 복제(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-
가상 장치 관리 레이어(120) 또는 사용자는 키-밸류 데이터(170)의 사본을 얼마나 많이 생성할지 결정할 수 있다. 예를 들어, 가상 장치 관리 레이어(120)를 사용하는 분산된 시스템은 3-웨이 복제(3-way replication)를 선택할 수 있고, 기본적으로 3-웨이 복제를 생성할 수 있다. 그러나 시스템의 사용자는 객체의 복제본의 개수를 선택된 기본값보다 많게 혹은 적게 구성할 수 있다. The virtual
따라서, 예를 들어, 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-
따라서 특정 KV 스토리지 장치(130)가 고장인 경우(예를 들어, KV 스토리지 장치(130-3)이 고장인 경우), 고장난 KV 스토리지 장치(130)의 바로 전후의 KV 스토리지 장치들(130)(예를 들어, KV 스토리지 장치(130-3)의 바로 전후의 KV 스토리지 장치들(130-2, 130-4))에서 키 명칭들에 대하여 복구 메커니즘(recovery mechanism)을 사용하여 밸류를 복구함으로써, 복제된 키가 복구되는 것을 보장한다. Accordingly, when a specific
객체 복제(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
도 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
전형적인 소거 코딩을 사용하는 패킹(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
예를 들어, 가상 장치 관리 레이어(120)는 각 KV 스토리지 장치(330)(예를 들어, 도 1의 신뢰성 그룹(140)의 각 KV 스토리지 장치(130))에 대한 최근에 기입된 키 객체들(350)의 버퍼를 유지하여, 가상 장치 관리 레이어(120)가 k개의 다른 KV 스토리지 장치들로부터 k개의 키 객체들(350)을 선택하여 소거 코딩될 수 있게 하고, 이에 따라 KV 쌍들에 대응하는 k개의 키 객체들(350)을 패킹한다. For example, virtual
현재 실시 예에서, 가상 장치 관리 레이어(120)는 4개의 다른 KV 스토리지 장치들(330-1, 330-3, 330-4, 330-N)로부터 각각 4개의 키 객체들(350x, 350y, 350b, 350c)를 선택한다. (현재 실시 예에서, k=4)In the current embodiment, virtual
도 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
저장된 각각의 밸류 객체들(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/
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
가상 장치 관리 레이어(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
비록 읽기들 및 쓰기들이 전형적인 소거 코딩을 사용하는 패킹(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
예를 들어, 메타데이터 객체 밸류는 신뢰성 그룹(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
데이터는 사용자 키를 사용하여 저장될 수 있다. 메타데이터는 사용자 키 및 "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
KV 스토리지 장치들(330) 중 하나가 고장이면, 데이터 및 메타데이터 모두가 동일한 KV 스토리지 장치(330)에 저장될 수 있기 때문에, 데이터 및 메타 데이터가 잠재적으로 소실될 수 있고, 그로 인하여, 복구가 불가능할 수 있다. 그러나 이러한 상황을 방지하기 위해, 메타데이터 객체 밸류는 메타 데이터 객체 밸류에 대한 이전에 언급된 객체 복제(Object Replication)의 신뢰성 메커니즘을 구현할 수 있는 가상 장치 관리 레이어(120)의 "객체 복제 엔진(Object Replication Engine)"을 사용하여 복제될 수 있다.If one of the
추가적으로, 메타데이터 객체 밸류가 신뢰성 그룹(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
현재 실시 예에 따른 전형적인 소거 코딩을 사용하는 패킹(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
도 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
KV 밸류(570)를 분할한 이후에, 실시 예에 따르면, 가상 장치 관리 레이어(120)는 k개의 객체들(550) 각각에 대하여 체크섬을 연산할 수 있다. 그 이후에, 가상 장치 관리 레이어(120)는 k개의 객체들(550) 각각의 전에 메타데이터를 삽입할 수 있다.After dividing the
전형적인 소거 코딩을 사용하는 스플릿팅은 KV 밸류(570)를 복수의 더 작은 객체들(550)로 분할하는 것, 그 이후에 KV 밸류(570)의 복수의 더 작은 객체들(550)을 k개의 연속한 스토리지 장치들(530) 상으로 분산하는 것을 포함할 수 있다. 따라서 k개의 동일 크기의 객체들(550)의 크기는 기본(underlying) KV 스토리지 장치들(530) 각각에 의해 지원될 수 있다. Splitting using typical erasure coding divides the
전형적인 소거 코딩을 사용하는 스플릿팅을 사용할 경우, 가상 장치 관리 레이어(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
따라서 가상 장치 관리 레이어(120)는 상대적으로 큰 KV 밸류(570)를 k개의 객체들(550)로 분할할 수 있고, r개의 패리티 객체들(560)을 연산하고 추가할 수 있고, k개의 객체들(550) 및 r개의 패리티 객체들(560)을 k+r개의 KV 스토리지 장치들(530)에 저장할 수 있다.Accordingly, the virtual
전형적인 소거 코딩을 사용하는 스플릿팅의 신뢰성 메커니즘을 사용하는 경우, 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
전형적인 소거 코딩을 사용하는 스플릿팅의 신뢰성 메커니즘을 정리하면, 가상 장치 관리 레이어(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
도 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
따라서 재생성 코드들이 적합하나, 그러나 객체들을 분할하는 것이 적합하지 않고, 객체들을 보존하는 것이 더욱 적합한 경우에, 재생성 소거 코딩을 사용하는 패킹이 사용될 수 있다. 재생성 소거 코딩을 사용하는 패킹은 이전에 언급된 객체 복제, 및 전형적인 소거 코딩을 사용하는 스플릿팅 및 패킹의 신뢰성 메커니즘들을 위하여 사용되는 밸류 크기보다 더 큰 밸류 크기들에 대하여 적합할 수 있다. 재생성 소거 코딩을 사용하는 패킹은 객체의 복수의 서브패킷들을 읽는 것이 전체 객체를 읽는 것보다 낮은 성능을 유발하지 않을 경우에 사용될 수 있다. 재생성 소거 코딩을 사용하는 패킹은, 기본 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.,
도 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
객체(670)가 이전에 기재된 신뢰성 메커니즘들과 대응하는 객체들보다 더 큰 밸류 크기를 갖고, 객체(670)의 k개의 스플릿들(680)의 복수의 서브패킷들(690)을 읽는 것이 전체 스플릿들(680)을 읽는 것(예를 들어, 전형적인 소거 코딩을 사용하는 스플리티의 신뢰성 메카니즘으로 수행됨.)보다 낮은 성능을 유발하지 않는 경우에 재생성 소거 코딩을 사용하는 스플릿팅이 적합할 수 있다. If
재생성 소거 코딩을 사용하는 스플릿팅의 신뢰성 메커니즘은 객체들이 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
전형적인 소거 코딩을 사용하는 스플릿팅과 유사하게, 도 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
재생성 소거 코딩을 사용하는 스플릿팅의 신뢰성 메커니즘을 정리하면, 가상 장치 레이어(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
상술된 바에 따르면, 가상 장치 관리 레이어는 데이터의 하나 또는 그 이상의 속성들을 기반으로 데이터의 저장에 대하여 신뢰성 메커니즘들의 그룹으로부터 적절한 신뢰성 메커니즘을 선택할 수 있다. 따라서 본문에 기재된 실시 예들은 기재된 신뢰성 메커니즘들이 각각 단일 키 복구 절차를 수행할 수 있기 때문에 메모리 스토리지의 분야에서 향상을 제공한다. 전체 메모리 장치들이 고장인 경우, 본 발명의 실시 예의 가상 장치 관리 레이어는 고장난 메모리 장치에 존재하는 키들 전부를 복구하고 새로운 메모리 장치로 복사할 수 있다. 가상 장치 관리 레이어는 신뢰성 그룹의 고장난 메모리 장치와 인접한 메모리 장치들에 존재하는 키들 전체에 대한 반복 동작을 수행하고, 신뢰성 메커니즘이 고장난 메모리 장치에 존재하는 것으로 판단한 키들에 대하여 키 단위 복구 동작을 수행함으로써, 키들 전체의 복구 및 복사를 달성할 수 있다. 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)
상기 데이터가 상기 데이터를 저장하기 위한 신뢰성 메커니즘에 대응하는 임계치를 만족하는지 판별하는 단계;
상기 임계치가 만족된 경우, 상기 신뢰성 메커니즘을 선택하는 단계; 및
상기 선택된 신뢰성 메커니즘에 따라 상기 데이터를 저장하는 단계를 포함하고,
상기 선택된 신뢰성 메커니즘은 객체 복제를 포함하고,
상기 데이터를 저장하는 단계는:
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.
상기 임계치는 상기 데이터의 객체 크기, 상기 데이터의 처리량 고려(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.
하나 또는 그 이상의 블룸 필터들 또는 캐시들을 사용하여 상기 신뢰성 메커니즘에 대한 상기 데이터를 테스트하는 단계를 더 포함하는 키-밸류 신뢰성 시스템의 데이터 저장 방법.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.
상기 선택된 신뢰성 메커니즘, 상기 데이터를 저장하는 상기 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.
.
상기 선택된 신뢰성 메커니즘은 패킹(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.
상기 선택된 신뢰성 메커니즘은 전형적인 소거 코딩을 사용하는 패킹을 포함하고,
상기 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.
상기 선택된 신뢰성 메커니즘은 재생성 소거 코딩을 사용하는 패킹을 포함하고,
상기 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.
상기 선택된 신뢰성 메커니즘은 스플릿팅을 포함하고,
상기 데이터를 저장하는 단계는:
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.
상기 선택된 신뢰성 메커니즘은 전형적인 소거 코딩을 사용하는 스플릿팅을 포함하고,
상기 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.
상기 선택된 신뢰성 메커니즘은 재생성 소거 코딩을 사용하는 패킹을 포함하고,
상기 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.
상기 선택된 신뢰성 메커니즘은 패킹을 포함하고,
상기 가상 장치 관리 레이어는:
상기 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.
상기 선택된 신뢰성 메커니즘은 스플릿팅을 포함하고,
상기 가상 장치 관리 레이어는:
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.
상기 선택된 신뢰성 메커니즘은 재생성 소거 코딩을 사용하는 스플릿팅을 포함하고,
상기 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.
상기 방법은:
상기 데이터가 상기 데이터를 저장하기 위한 신뢰성 메커니즘에 대응하는 임계치를 만족하는지 판별하는 단계;
상기 임계치가 만족된 경우, 상기 신뢰성 메커니즘을 선택하는 단계; 및
상기 선택된 신뢰성 메커니즘에 따라 데이터를 저장하는 단계를 포함하고,
상기 선택된 신뢰성 메커니즘은 객체 복제를 포함하고,
상기 데이터를 저장하는 단계는:
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.
상기 선택된 신뢰성 메커니즘은 패킹을 포함하고,
상기 데이터를 저장하는 단계는:
상기 신뢰성 그룹의 상기 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.
상기 선택된 신뢰성 메커니즘은 스플릿팅을 포함하고,
상기 데이터를 저장하는 단계는:
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.
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)
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)
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 |
-
2018
- 2018-11-22 KR KR1020180145797A patent/KR102663422B1/en active IP Right Grant
- 2018-12-10 DE DE102018131523.6A patent/DE102018131523A1/en active Pending
-
2019
- 2019-01-04 CN CN201910007109.0A patent/CN110058806A/en active Pending
- 2019-01-18 JP JP2019006709A patent/JP7171452B2/en active Active
Patent Citations (3)
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 |