KR20190088874A - 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
- KR20190088874A KR20190088874A KR1020180145797A KR20180145797A KR20190088874A KR 20190088874 A KR20190088874 A KR 20190088874A KR 1020180145797 A KR1020180145797 A KR 1020180145797A KR 20180145797 A KR20180145797 A KR 20180145797A KR 20190088874 A KR20190088874 A KR 20190088874A
- Authority
- KR
- South Korea
- Prior art keywords
- storage devices
- objects
- value
- data
- key
- Prior art date
Links
- 238000003860 storage Methods 0.000 title claims abstract description 208
- 238000000034 method Methods 0.000 title claims abstract description 51
- 230000007246 mechanism Effects 0.000 claims abstract description 152
- 238000007726 management method Methods 0.000 claims description 79
- 238000012856 packing Methods 0.000 claims description 40
- 230000001172 regenerating effect Effects 0.000 claims description 28
- 230000010076 replication Effects 0.000 claims description 24
- 238000013500 data storage Methods 0.000 claims description 4
- 238000000638 solvent extraction Methods 0.000 claims description 3
- 238000012360 testing method Methods 0.000 claims description 3
- 230000001052 transient effect Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 16
- 230000008929 regeneration Effects 0.000 description 12
- 238000011069 regeneration method Methods 0.000 description 12
- 238000011084 recovery Methods 0.000 description 9
- 239000007943 implant Substances 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 230000009897 systematic effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 238000013403 standard screening design Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001419 dependent effect Effects 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
- 239000000284 extract Substances 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
- 238000005192 partition Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 238000003892 spreading Methods 0.000 description 1
- 238000010977 unit operation Methods 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/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
- 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
- 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
Description
본 발명의 실시 예들의 하나 또는 그 이상의 사상들은 일반적으로 데이터 스토리지 시스템들과 관련되고, 더욱 상세하게는, 복수의 키-밸류 스토리지 장치들을 포함하는 키-밸류 신뢰성 시스템에 키-밸류 데이터를 신뢰할 수 있게 저장하는 신뢰성 메커니즘을 선택하는 방법에 관한 것이다. One or more aspects of embodiments of the present invention generally relate to data storage systems, and more particularly, to a key-value reliability system that includes a plurality of key- And a method for selecting a reliability mechanism for storing the 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 including a plurality of 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, erasure coding, or replication through a redundant array of independent disks (RAID) Lt; RTI ID = 0.0 > reliability. ≪ / RTI > As object formats vary in size and are not organized, efficient data conversion is required between object and block level interfaces. Furthermore, there is a need to ensure data reliability while maintaining the communicative efficiency and fast access time characteristics.
RAID와 같은 기법들은 종래의 블록 스토리지 장치들에 대하여 잘 연구되어 있다. 그러나 상대적으로 새로운 키-밸류 스토리지 장치들은 종래의 블록 장치들과 다른 인터페이스들 및 다른 스토리지 시맨틱(storage semantics)을 가질 수 있다. 따라서 다양한 새로운 키-밸류 스토리지 장치들은 키-밸류 데이터 및 키-밸류 스토리지 장치들에 적합하거나 또는 그것에 맞추어진 새로운 데이터 신뢰성 기법들로부터 잠재적인 이점을 가질 수 있다. Techniques such as RAID are well studied for conventional block storage devices. However, the relatively new key-value storage devices may have conventional block devices and other interfaces and other storage semantics. Thus, a variety of new key-value storage devices may have potential benefits from new data reliability techniques that fit or are tailored to key-value data and key-value storage devices.
실시 예들의 신뢰성 메커니즘들이 가상 장치 관리 레이어가 고장난 메모리 장치에 존재하는 모든 키들을 복구하고 새로운 메모리 장치로 복사할 수 있게 하는 단일 키 복구 절차를 각각 수행할 수 있기 때문에, 본문에서 기재된 실시 예들은 메모리 스토리지 분야에서 향상을 제공할 수 있다.Since 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 the failed memory device and copy them to the new memory device, And can provide improvements in storage.
본 발명의 실시 예에 따르면, 단일 논리적 유닛으로서 신뢰성 그룹으로 그룹화되고, 가상 장치 관리 레이어에 의해 관리되는 N(단, N은 정수)개의 스토리지 장치들을 포함하는 키-밸류 신뢰성 시스템의 데이터 저장 방법이 제공된다. 상기 방법은 상기 데이터가 상기 데이터를 저장하기 위한 신뢰성 메커니즘에 대응하는 임계치를 만족하는지 판별하는 단계, 상기 임계치가 만족된 경우, 상기 신뢰성 메커니즘을 선택하는 단계, 및 상기 선택된 신뢰성 메커니즘에 따라 상기 데이터를 저장하는 단계를 포함한다. According to an embodiment of the present invention, there is provided 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 / RTI > The method comprising the steps of: determining if the data satisfies a threshold corresponding to a reliability mechanism for storing the data; if the threshold is satisfied, selecting the reliability mechanism; .
상기 임계치는 상기 데이터의 객체 크기, 상기 데이터의 처리량 고려(throughput consideration), 상기 데이터의 읽기/쓰기 온도(read/write temperature), 및 상기 N개의 스토리지 장치들의 기본 소거 코딩 능력 중 하나 또는 그 이상에 기반된다.Wherein the threshold is one or more of an object size of the data, a throughput consideration of the data, a read / write temperature of the data, and a basic erasure coding capability of the N storage devices .
상기 방법은 하나 또는 그 이상의 블룸 필터들 또는 캐시들을 사용하여 상기 신뢰성 메커니즘에 대한 상기 데이터를 테스트하는 단계를 더 포함한다.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 comprising: selecting the reliability mechanism, one or more checksums for each of the N storage devices storing the data, an object size of the data values stored in each of the N storage devices storing the data, And inserting metadata for recording the location of the parity group members of the N storage devices indicating which of the N storage devices have been stored with a key corresponding to the data .
상기 선택된 신뢰성 메커니즘은 객체 복제를 포함하고, 상기 데이터를 저장하는 단계는 KV 밸류를 선택하는 단계, 상기 선택된 KV 밸류에 대응하는 키를 해싱하기 위한 해시를 연산하는 단계, 상기 KV 밸류와 대응하는 키 객체들의 복제본들을 저장하기 위해 상기 N개의 스토리지 장치들 중 일부 스토리지 장치들을 판별하는 단계, 및 동일한 사용자 키명칭 하에서, 상기 판별된 일부 스토리지 장치들 각각에 상기 KV 밸류와 대응하는 업데이트된 밸류들을 기입하는 단계를 포함한다.Wherein the selected trust mechanism comprises an object copy, the step of storing the data comprises selecting a KV value, computing a hash for hashing the key corresponding to the selected KV value, Identifying some of the N storage devices to store replicas of objects, and writing the updated values corresponding to the KV value to each of the identified storage devices under the same user key name .
상기 선택된 신뢰성 메커니즘은 패킹(packing)을 포함하고, 상기 데이터를 저장하는 단계는 상기 신뢰성 그룹의 상기 N개의 스토리지 장치들 중 k(단, k는 정수)개의 스토리지 장치들에 저장된 k개의 키 객체들을 선택하는 단계, 상기 k개의 키 객체들에 대응하는 k개의 밸류 객체들을 회수하는 단계, 상기 k개의 밸류 객체들 전부의 가상 크기가 동일해 지도록 상기 k개의 밸류 객체들 중 가장 큰 밸류 크기를 갖지 않는 밸류 객체들의 종단들에 가상 제로들을 패딩하는 단계, 상기 k개의 키 객체들로부터 r(단, r은 정수)개의 패리티 객체들을 생성하는 단계, 상기 k개의 키 객체들을 상기 k개의 스토리지 장치들로 기입하는 단계, 및 상기 r개의 패리티 객체들을 상기 N개의 스토리지 장치들 중 r개의 스토리지 장치들에 기입하는 단계를 포함하고, 상기 r개의 스토리지 장치들 각각은 상기 k개의 스토리지 장치들과 구분되고, 단, k+r=N이다. Wherein the selected reliability mechanism comprises packing and wherein storing the data comprises storing k key objects stored in k (where k is an integer) storage devices of the N storage devices of the trust group The method comprising: retrieving k number of value objects corresponding to the k number of key objects, selecting one of the k number of value objects having the largest value size among the k number of value objects so that the virtual sizes of all k number of value objects become equal (K) key objects to the k storage devices, the method comprising the steps of: (a) padding virtual zeroes to endpoints of the value objects, generating r (where r is an integer) parity objects from the k key objects, And writing the r parity objects to r storage devices among the N storage devices, Each of the support device is separated from the k number of storage devices, a single, 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이다.Wherein the selected reliability mechanism includes splitting, wherein storing the data comprises: selecting a KV value; dividing the KV value into k (where k is an integer) equal sized objects; Generating a parity object of r (where r is an integer) number of objects of the same size, computing a hash for hashing the key corresponding to the selected KV value, Determining the major device in which the KV value will be located, and determining, for each of the K storage devices, the k identical-sized objects and the r parity objects in the consecutive order starting from the main device to the N storage devices , Where 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개의 패리티 서브패킷들로 분할할하는 단계를 더 포함한다.Wherein the selected reliability mechanism comprises packing using regenerative erasure coding, wherein the N storage devices are configured with (k, r, d) regenerative erasure coding, and wherein the step of storing the data comprises using the regenerative erasure coding Dividing the k equal sized objects 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 for storing data based on a selected reliability mechanism is provided. The data reliability system comprising: 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 device and store data in selected ones of the N storage devices according to a mechanism, Determining whether the threshold meets a threshold corresponding to a reliability mechanism for storing the data, selecting the reliability mechanism if the threshold is satisfied, and storing the data according to the selected reliability mechanism.
상기 선택된 신뢰성 메커니즘은 객체 복제를 포함하고, 상기 가상 장치 관리 레이어는 KV 밸류를 선택하고, 상기 선택된 KV 밸류에 대응하는 키를 해싱하기 위한 해시를 연산하고, 상기 KV 밸류에 대응하는 키 객체들의 복제본들을 저장하기 위해 상기 N개의 스토리지 장치들 중 일부 스토리지 장치들을 판별하고, 동일한 사용자 키명칭하에서 상기 판별된 일부 스토리지 장치들 각각에 상기 KV 밸류에 대응하는 업데이트된 밸류들을 기입함으로써, 상기 데이터를 저장하도록 구성된다.Wherein the selected trust mechanism comprises an object copy, the virtual device management layer selects a KV value, computes a hash for hashing the key corresponding to the selected KV value, and replicates a key object corresponding to the KV value And storing the data by writing updated values corresponding to the KV value to each of the identified storage devices under the same user key name to identify the storage devices of the N storage devices .
상기 선택된 신뢰성 메커니즘은 패킹을 포함하고, 상기 가상 장치 관리 레이어는 상기 N개의 스토리리 장치들 중 k(단, k는 정수)개의 스토리지 장치들에 저장된 k개의 키 객체들을 선택하고, 상기 k개의 키 객체들에 대응하는 k개의 밸류 객체들을 회수하고, 상기 k개의 밸류 객체들 모두의 가상 밸류 크기가 동일해 지도록, 상기 k개의 밸류 객체들 중 가장 큰 밸류 크기를 갖지 않는 밸류 객체들의 종단들에 가상 제로들을 패딩하고, 상기 k개의 키 객체들로부터 r(단, r은 정수)개의 패리티 객체들을 생성하고, 상기 k개의 키 객체들을 상기 k개의 스토리지 장치들로 기입하고, 상기 r개의 패리티 객체들을 상기 N개의 스토리지 장치들 중 r개의 스토리지 장치들에 기입함으로써, 상기 데이터를 저장하도록 구성되고, 상기 r개의 스토리지 장치들 각각은 상기 k개의 스토리지 장치들과 구분되고, k+r=N이다.Wherein the selected reliability mechanism comprises 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 the k keys Wherein the k value objects corresponding to the objects are collected and the virtual value magnitudes of all of the k value objects are equal, (R, integer) parity objects from the k key objects, writes the k key objects to the k storage devices, and maps the r parity objects to the k storage devices Wherein each of the r storage devices is configured to store the data by writing to r storage devices of the N storage devices, Of being distinguished from the storage device, and r + k = N.
상기 선택된 신뢰성 메커니즘은 스플릿팅을 포함하고, 상기 가상 장치 관리 레이어는 KV 밸류를 선택하고, 상기 KV 밸류를 k(단, k는 정수)개의 동일 크기의 객체들로 분할하고, 상기 k개의 동일 크기의 객체들로부터 r개의 패리티 객체들을 생성하고, 단, r은 정수, 상기 선택된 KV 밸류에 대응하는 키를 해싱하기 위한 해시를 연산하고, 상기 해시를 기반으로 상기 N개의 스토리지 장치들 중 상기 KV 밸류가 위치할 주요 장치를 판별하고, 상기 주요 장치로부터 시작하여 연속하는 순서로 상기 k개의 동일 크기의 객체들 및 상기 r개의 패리티 객체들 각각을 상기 N개의 스토리지 장치들에 기입함으로써, 상기 데이터를 저장하도록 구성되고, 단, k+r=N이다.Wherein the selected trust mechanism comprises splitting, the virtual device management layer chooses a KV value, divides the KV value into k (where k is an integer) equal sized objects, , Wherein r is an integer, calculates a hash for hashing the key corresponding to the selected KV value, and calculates the KV value of the N storage devices based on the hash, And writing each of the k identical-sized objects and the r parity objects to the N storage devices in a sequential order starting from the main device, thereby storing the data , Where k + r = N.
상기 선택된 신뢰성 메커니즘은 재생성 소거 코딩을 사용하는 스플릿팅을 포함하고, 상기 N개의 스토리지 장치들은 (k,r,d) 재생성 소거 코딩으로 구성되고, 상기 가상 장치 관리 레이어는 상기 재생성 소거 코딩을 사용하여 상기 k개의 동일 크기의 객체들을 m(단, m은 정수)개의 서브 패킷들로 분할하고, 상기 r개의 패리티 객체들 각각을 m개의 패리티 서브 패킷들로 분할함으로써, 상기 데이터를 저장하도록 더 구성된다.Wherein the selected reliability mechanism comprises 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 And is further configured to store the data by dividing the k pieces of the same sized objects 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 a reliability group as a single logical unit and managed by a virtual device management layer There is provided a non-transient computer readable medium comprising computer code in which a method is performed. The method comprising the steps of: determining if 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 .
상기 선택된 신뢰성 메커니즘은 객체 복제를 포함하고, 상기 데이터를 저장하는 단계는 KV 밸류를 선택하는 단계, 상기 선택된 KV 밸류에 대응하는 키를 해싱하기 위한 해시를 연산하는 단계, 상기 KV 밸류에 대응하는 키 객체들의 복제본을 저장하기 위해 상기 N개의 스토리지 장치들 중 일부 스토리지 장치들을 선택하는 단계, 및 동일한 사용자 키명칭 하에서, 상기 KV 밸류에 대응하는 업데이트된 밸류들을 상기 판별된 일부 스토리지 장치들 각각에 기입하는 단계를 포함한다. Wherein the selected trust mechanism comprises an object copy, the step of storing the data comprises selecting a KV value, computing a hash for hashing the key corresponding to the selected KV value, calculating a key corresponding to the KV value Selecting some of the N storage devices to store a copy of the objects, and, under the same user key name, writing updated values corresponding to the KV value to each of the determined some storage devices .
상기 선택된 신뢰성 메커니즘은 패킹을 포함하고, 상기 데이터를 저장하는 단계는 상기 신뢰성 그룹의 상기 N개의 스토리지 장치들 중 k(단, k는 정수)개의 스토리지 장치들에 저장된 k개의 키 객체들을 선택하는 단계, 상기 k개의 키 객체들에 대응하는 k개의 밸류 객체들을 회수하는 단계, 상기 k개의 밸류 객체들 모두의 가상 밸류 크기가 동일해 지도록 상기 k개의 밸류 객체들 중 가장 큰 밸류 크기를 갖지 않는 밸류 객체들의 종단들에 가상 제로들을 패딩하는 단계, 상기 k개의 키 객체들로부터 r(단, r은 정수)개의 패리티 객체들을 생성하는 단계, 상기 k개의 키 객체들을 상기 k개의 스토리지 장치들에 기입하는 단계, 및 상기 r개의 패리티 객체들을 상기 N개의 스토리지 장치들 중 r개의 스토리지 장치들에 기입하는 단계를 포함하고, 상기 r개의 스토리지 장치들 각각은 상기 k개의 스토리지 장치들과 구분되고, k+r=N이다.Wherein the selected reliability mechanism comprises packing and wherein the storing the data comprises selecting k key objects stored in k (where k is an integer) storage devices of the N storage devices of the reliability group , Retrieving k value objects corresponding to the k key objects, calculating a value object having the largest value size among the k value objects so that the virtual value magnitudes of all the k value objects become equal, 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 of the N storage devices, wherein the r stories Each of the storage devices is distinguished 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이다.Wherein the selected reliability mechanism includes splitting, wherein storing the data comprises: selecting a KV value; dividing the KV value into k (where k is an integer) equal sized objects; Generating r (where r is an integer) parity objects from the same sized objects, computing a hash for hashing the key corresponding to the selected KV value, Selecting one of the storage devices to which the KV value is to be placed; and selecting, from the main device, the k number of identical sized objects and each of the r parity objects in the N storage Lt; RTI ID = 0.0 > k + r = N. ≪ / RTI >
상술된 및/또는 다른 사상들은 첨부된 도면들과 함께 이하의 실시 예들의 상세한 설명으로부터 좀 더 명확해질 것이다.
도 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 foregoing and / or other aspects of the invention will become more apparent from the following detailed description of the present invention when taken in conjunction with the accompanying drawings.
1 is a block diagram illustrating a key-value reliability system for storing key-value data based on a selected trust mechanism, in accordance with an embodiment of the present invention.
Figure 2 is a flow diagram illustrating the selection of a reliability mechanism to be used by a key-value reliability system based on a size threshold corresponding to a size of data of a key-value pair, in accordance with an embodiment of the present invention.
Figure 3 is a block diagram of an embodiment of the present invention configured to store key-value data according to a trust mechanism of K-object (k, r) erasure coding, or multiple object "Packing" using typical erasure coding Lt; / RTI > is a block diagram showing a group of KV storage devices.
Figure 4 illustrates the storage of value objects and parity objects according to a reliability mechanism of K-object (k, r) erasure coding, or multi-object "packing" using typical erasure coding, FIG.
Figure 5 is a block diagram of an exemplary embodiment of a KV (k, r) erasure coded or "Splitting" trust mechanism configured to store key-value data, using typical erasure coding, ≪ / RTI > is a block diagram illustrating a group of storage devices.
Figure 6 is a block diagram of an embodiment of the present invention configured to store key-value data according to a reliability mechanism of single object (k, r, d) erasure coding, or "Splitting" using regenerative erasure coding Lt; / RTI > is a block diagram showing a group of KV storage devices.
본 발명의 다양한 특징들 및 본 발명을 달성하는 방법들은 첨부된 도면들 및 실시 예들에 대한 이하의 상세한 설명을 참조하여 더욱 상세하게 이해될 수 있다. 이하에서, 실시 예들은 첨부된 도면들을 참조하여 더욱 상세하게 설명될 것이다. 유사한 참조 번호들은 전체에서 유사한 구성 요소들을 지칭한다. 그러나 본 발명이 다양한 다른 형태로 구형될 수 있으며, 설명된 실시 예들에 국한되는 것으로 이해되어서는 안될 것이다. 오히려, 이러한 실시 예들은 본 발명의 전반적인 이해를 돕기 위한 예시로서 제공되며, 당업자에게 본 발명의 기술적 특징 및 양상을 충분히 전달할 것이다. 따라서, 당업자가 본 발명의 특징 및 양상을 완전하게 이해하는데 불필요한 프로세스들, 요소들, 및 기법들은 설명되지 않을 수 있다. 다르게 언급되지 않는 한, 첨부된 도면들 및 기재된 상세한 설명 전반에 걸쳐, 유사한 참조 번호들은 유사한 요소들을 지칭하며, 그것들의 설명은 반복되지 않을 것이다. 도면들에서, 요소들, 계층들, 및 영역들의 상대적인 크기는 명확성을 위하여 과장될 수 있다.The various features of the present invention and methods of achieving the present invention can be understood in more detail with reference to the following detailed description of the accompanying drawings and embodiments. In the following, embodiments will be described in more detail with reference to the accompanying drawings. Like numbers refer to like elements throughout. It should be understood, however, that the invention may be embodied in various other forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided as illustrations to assist in an overall understanding of the present invention, and will fully convey the technical features and aspects of the present invention to those skilled in the art. Accordingly, the processes, elements, and techniques that are not required for those of ordinary skill in the art to fully understand the features and aspects of the present invention may not be described. Unless otherwise stated, throughout the accompanying drawings and the detailed description that follows, like reference numerals refer to like elements, and their description will not be repeated. In the drawings, the relative sizes of elements, layers, and regions may be exaggerated for clarity.
다양한 실시 예들이 실시 예들 및/또는 중간 구조들의 개략도인 단면도를 참조하여 본문에서 설명된다. 이와 같이, 예를 들어, 제조 기술 및/또는 허용 오차의 결과로서 도시된 형태들로부터의 변형이 예상되어야 한다. 더욱이, 본문에서 기재된 특정한 구조적 또는 기능적 설명은 본 발명의 사상에 따른 실시 예들을 설명하기 위한 단순한 예시들이다. 즉, 본문에 기재된 실시 예들은 영역들의 특정하게 도시된 형태들에 제한되는 것으로 해석되어서는 안되며, 예를 들어, 제고의 결과인 형상의 편차를 포함하여야 한다. 예를 들어, 직사각으로 도시된 임플란트 영역은, 전형적으로, 임플란트로부터 비-임플란트 영역으로으로의 이진-변화라기보다는 그것들의 에지에서 둥글거나 또는 곡선의 특징들 및/또는 임플란트 농도의 기울기를 가질 것이다. 마찬가지로, 임플란트에 의해 형성된 매립 영역은 매립 영역과 임플란트가 방생하는 표면 사이의 영역에서 일부 임플란트를 야기할 수 있다. 즉, 도면들에 도시된 영역들은 본질적으로 개략적인 것이며, 그것들의 형상들이 장치의 영역의 실제 형상을 도시하는 것을 의되하지 않으며, 이를 제한하는 것이 아니다. 추가적으로, 당업자가 인식할 수 있는 바와 같이, 기재된 실시 예들은 본 발명의 사상 또는 범위로부터 벗어남 없이 다양한 다른 방식들로 변형될 수 있다. Various embodiments are described herein with reference to cross-sectional views that are schematic illustrations of embodiments and / or intermediate structures. As such, variations from the shapes shown, for example, as a result of manufacturing techniques and / or tolerances, should be expected. Moreover, the specific structural or functional description set forth in the text is merely illustrative of the embodiments in accordance with the teachings of the present invention. That is, the embodiments described herein should not be construed as limited to the specifically illustrated forms of the areas, but should include variations in shape, for example, as a result of enhancement. For example, implant regions shown in a rectangle will typically have round or curved features and / or slopes of implant concentration at their edges rather than binary-change from implant to non-implant region . Likewise, the buried region formed by the implant can cause some implants in the region between the buried region and the surface on which the implant dies. That is, the areas shown in the figures are schematic in nature, and their shapes are not intended to be limiting of, and not limiting, to the actual shape of the area of the device. In addition, as will be appreciated by those skilled in the art, 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 details are set forth in order to provide a thorough understanding of the conveniences and various embodiments of the present invention. However, various embodiments may be implemented without detailed description or with one or more equivalent alternatives. In other instances, well-known structures and devices are shown in block diagram form in order not to unnecessarily obscure the various embodiments.
"제1(first)", "제2(second)", "제3(third)" 등과 같은 용어들은 다양한 요소들, 구성들, 영역들, 계층들, 및/또는 구역들을 설명하기 위하여 본문에서 사용되나, 이러한 요소들, 구성들, 영역들, 계층들, 및/또는 구역들은 이러한 용어들에 한정되지 않음이 잘 이해될 것이다. 이러한 용어들은 하나의 요소, 구성, 영역, 계층, 또는 구역을 다른 하나의 요소, 구성, 영역, 계층, 또는 구역으로부터 구분하기 위해서만 사용된다. 즉, 이하에서 기재되는 제1 요소, 구성, 영역, 계층, 또는 구역은 본 발명의 사상 및 범위로부터 벗어남 없이, 제2 요소, 구성, 영역, 계층, 또는 구역으로 불릴 수 있다. The terms "first," "second," "third," and the like are used interchangeably throughout this document to describe various elements, structures, regions, layers, and / But it will be understood that such elements, structures, regions, layers, and / or regions are not limited to these terms. These terms are used only to distinguish one element, structure, region, layer, or region from another element, structure, region, layer, or region. That is, the first element, structure, region, layer, or section described below may be referred to as a second element, structure, 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", and the like, refer to the other element (s) Or may be used in the text to readily describe the relationship between the feature (s) and one element or feature (s). It will be appreciated that spatially relative terms are intended to encompass different orientations of the device in operation or use, in addition to the orientation shown in the figures. For example, in the drawings, when an apparatus is inverted, elements described as "below or beneath or under" other elements or features will point to "above" other elements or features. That is, exemplary terms of "below, under" may include both up and down directions. The device may be oriented in a different direction (e. G., Rotated 90 degrees or in the other direction) and the spatially relative descriptions used in the text should be interpreted accordingly. Similarly, if the first portion is described as being aligned with the second portion "on ", it is understood that without limitation to its upper surface based on gravity direction, And the lower surface is aligned.
요소, 계층, 영역, 또는 구성이 다른 요소, 계층, 영역, 또는 구성과 "연결된(on, connected to, 또는 coupled to)" 것으로 지칭되는 경우, 다른 요소, 계층, 영역, 또는 구성과 직접적으로(directly) 연결되거나 또는 하나 또는 그 이상의 중간 요소들, 계층들, 영역들, 또는 구성들이 존재할 수 있다. 그러나 "직접적으로 연결된"의 용어는 하나의 구성 요소가 중간 구성 없이 다른 구성 요소와 직접적으로 연결되는 것을 지칭한다. 한편, "사이(between, immediately between)" 또는 "인접(adjacent to 또는 directly adjacent to)과 같이 구성 사이의 관계를 설명하는 다른 표현들은 유사하게 해석될 수 있다. 추가적으로, 요소 또는 계층이 두 개의 요소들 또는 계층들 사이(between)인 것으로 지칭되는 경우, 요소들 또는 구성들 사이에 오직 요소 또는 계층만 존재하거나 또는 하나 또는 그 이상의 중간 요소들 또는 계층들이 더 존재할 수 있는 것으로 이해될 수 있다. Layer, region, or configuration is referred to as being "on", "connected to", or "coupled to" another element, layer, directly connected, or may have one or more intermediate elements, layers, regions, or configurations. However, the term "directly connected" refers to the direct connection of one component to another without intermediate configuration. On the other hand, other expressions describing the relationship between configurations such as " between immediately immediately "or" adjacent to or directly adjacent to " Or between layers, it is to be understood that there may be only one element or layer between elements or configurations, or one or more intermediate elements or layers may be present.
본문에서 사용되는 용어들은 오직 특정한 실시 예들을 설명하기 위한 예시적인 것이며, 본 발명이 이에 한정되는 것은 아니다. 본문에서 사용되는 바와 같이, 맥락에서 명확히 다르게 지칭되지 않는 한, 단수 용어들은 복수의 형태들을 포함하는 것으로 의도된다. "포함하다"의 용어가 상세한 설명에서 사용되는 경우, 열겨된 특징들, 정수들, 단계들, 동작들, 요소들, 및/또는 구성들의 존재를 정의하나, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 구성들, 및/또는 그것들의 그룹들의 존재 또는 추가를 배제하지 않는다. 본문에서 사용되는 바와 같이, "및/또는"의 용어는 관련되어 열거된 목록들의 하나 또는 그 이상의 모든 조합 또는 일부를 포함한다.The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting. As used in this text, singular terms are intended to include the plural forms, unless the context clearly dictates otherwise. Where the term "comprises" is used in the detailed description, the term " comprising " when used in the detailed description defines the presence of stated features, integers, steps, operations, elements, and / Steps, operations, elements, configurations, and / or groups thereof. As used herein, the terms "and / or" include any and all combinations or portions of one or more of the lists listed in the associated context.
본문에서 사용되는 바와 같이, "실질적인(substantiall)", "약(about, approximately)"의 용어들 및 유사한 용어들은 근사의 용어들로서 사용되며, 정도의 용어들(terms of degree)로서 사용되지 않으며, 당업자에 의해 인식될 수 있는 측정되거나 또는 연산된 값들에서 고유한 편차들을 설명하는 것으로 의도된다. 본문에서 사용되는 "약(about, approximately)"의 용어는 언급된 값을 포함하며, 특정한 양의 측정과 연관된 오차 및 의심스러운 측정치(예를 들어, 측정 시스템의 한계들)를 고려한, 당업자에 의해 결정된 특정한 값에 대한 허용 가능한 편차 내임을 의미한다. 예를 들어, "약(about)"은 하나 또는 그 이상의 표준 편차들 내임을 또는 언급된 값의 ± 30%, 20%, 10%, 5% 내임을 의미할 수 있다. 본문에서 사용되는 바와 같이, "사용(use, using, 및 used)"의 용어들은 "활용(utilize, utilizing, 및 utilized)"과 동의어로 간주될 수 있다. 또한 "예시적인(exemplary)"의 용어는 " 예(example) 또는 설명illustration)을 지칭하는 것으로 의도된다.As used herein, the terms "substantiall", "about" and similar terms are used as approximate terms and are not used as terms of degree, Is intended to describe deviations inherent in the measured or calculated values that can be recognized by those skilled in the art. As used herein, the term "about, approximately" includes values mentioned, and is used by those skilled in the art, taking into account errors associated with a particular amount of measurement and suspicious measurements (e.g., Quot; means within an allowable deviation for a particular value determined. For example, "about" may mean within one or more standard deviations or within ± 30%, 20%, 10%, 5% of the stated value. As used herein, the terms "use, using, and used" may be considered synonymous with "utilize, utilized, and utilized". Also, the word "exemplary" is intended to refer to an "exemplary " or explanatory illustration.
특정한 실시 예가 다르게 구현되는 경우, 특정한 프로세스 순서가 기재된 순서와 다르게 수행될 수 있다. 예를 들어, 2개의 연속하여 설명된 프로세스들은 실질적으로 동시에 수행되거나 또는 기재된 순서와 반대의 순서로 수행딜 수 있다.If a particular embodiment is implemented differently, then the particular process order may be performed differently from the order described. For example, two consecutively described processes may be performed substantially concurrently or in the reverse order 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, 플래시 드라이브, 등과 같은 다른 비-일시적인 컴퓨터 판독 가능한 매체에 저장될 수 있다. 또한 당업자는 본 발명의 예시적인 실시 예들의 사상 및 양상으로부터의 벗어남 없이, 다양한 컴퓨팅 장치들의 기능이 단일 컴퓨팅 장치로 조합 또는 집적될 수 있거나 또는 특정 컴퓨팅 장치의 기능이 하나 또는 그 이상의 다른 컴퓨팅 장치들로 분산될 수 있음을 이해할 수 있다. The electrical and / or electronic devices and / or other associated devices or configurations in accordance with embodiments of the invention described herein may be implemented within a computer-readable medium such as a computer-readable medium, such as, for example, Software, or a combination of software, firmware, and hardware. For example, various configurations of such devices may be formed in an integrated circuit (IC) chip or in separate IC chips The various configurations of these devices may be implemented in a flexible printed circuit film, a tape carrier package (TCP), a printed circuit board (PCB) various configurations of such devices may be used to perform various functions described in the text, And may be a process or thread running on one or more processors in one or more computing devices that communicate with other system configurations and execute computer program instructions. The computer program instructions may be stored in other non-volatile computer readable media, such as, for example, a CD-ROM, flash drive, or the like. It should be understood by those skilled in the art that the functions of the various computing devices may be combined or integrated into a single computing device without departing from the spirit and aspects of the exemplary embodiments of the present invention, It will be understood that it may be distributed to other computing devices There.
다르게 정의되지 않는 한, 본문에서 사용되는 기술적/과학적 용어들을 포함하는 모든 용어들은 본 발명이 속하는 기술 분야에서의 당업자에 의해 공통적으로 이해되는 것과 동일한 의미를 갖는다. 공용 사전에 정의된 것들과 같은 용어들은 연관된 기술의 맥락 및/또는 본 발명의 상세한 설명에서 그것들의 의미와 일관된 의미를 갖는 것으로 해석되어야 할 것이며, 본문에 명세적으로 정의되지 않는 한, 이상적이거나 또는 지나치게 형식적인 의미로 해석되어서는 안 된다. Unless defined otherwise, all terms including technical / scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in the common dictionary shall be construed as having a meaning consistent with their meaning in the context of the related art and / or in the detailed description of the present invention, and are, unless defined specifically in the text, 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 will be described below, embodiments of the present invention provide a key-value reliability system comprising a plurality of key-value (KV) storage devices grouped into one logical unit, - Provides a way to reliably store value data. Furthermore, embodiments of the present invention provide a stateless high reliability manager that manages drives and controls the storage of key-value (KV) pairs. Stateless Hibris Reliability Manager supports object replication; K-object (k, r) erasure coding-packing (K-Object (k, r) erasure coding-packing); Single Object (k, r) Erasure Coding - Splitting (Single Object (k, r) Erasure Coding - Splitting); K-object (k, r, d) regeneration coding-packing (K-Object (k, r, d)); , And a plurality of pluggable reliability mechanisms / techniques / implementations including a single object (k, r, d) regeneration coding-splitting (Single Object (k, r, d) regeneration coding-splitting).
복수의 플러그가능한 신뢰성 메커니즘들에 의존한 스테이트리스 하이브리드 신뢰성 관리자가 장치들을 관리할 수 있고, KV 쌍들의 저장을 제어할 수 있고, 신뢰성 메커니즘의 선택에 대하여 기재된 방법들이 다른 크기들의 KV 쌍들의 효율적인 저장, 회수, 및 복구를 보장할 수 있기 때문에, 기재된 실시 예들은 메모리 스토리지(예를 들어, 키-밸류 스토리지 장치들 내에 키-밸류 데이터의 저장)를 향상시킬 수 있다. A stateless hybrid reliability manager that is dependent on a plurality of pluggable reliability mechanisms can manage devices, control storage of KV pairs, and methods described for the selection of reliability mechanisms can efficiently store KV pairs of different sizes , Recovery, and recovery, the described embodiments may improve memory storage (e.g., storage of key-value data in key-value storage devices).
도 1은 본 발명의 실시 예에 따른, 선택된 신뢰성 메커니즘을 기반으로 키-밸류 데이터를 저장하는 키-밸류 신뢰성 시스템을 보여주는 블록도이다. 1 is a block diagram illustrating a key-value reliability system for storing key-value data based on a selected trust mechanism, in accordance with 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, a variety of new key-value (KV) storage devices / memory devices / drives / KV-
현재 실시 예에서, 가상 장치 관리 레이어(120)는 키-밸류 신뢰성 시스템에 키-밸류 데이터/KV 쌍(170)을 신뢰성 있게 저장하는 방법을 가능하게 할 수 있다. 키-밸류 신뢰성 시스템은 하나의 논리적 유닛(logical unit)으로 그롭화된 복수의 KV 스토리지 장치들(130)을 포함할 수 있다. 논리적 유닛은 신뢰성 그룹(140)으로 지칭될 수 있다. In the current embodiment, virtual
신뢰성 그룹(140)의 KV 스토리지 장치들(130)은 키-밸류 데이터(170)와 대응할 수 있는, 소거 코딩된 데이터 및/또는 복제된 데이터의 각각의 청크들을 저장할 수 있다. 신뢰성 그룹(140)의 KV 스토리지 장치들(130)은 키-밸류 동작들이 가상 장치 관리 레이어(120)를 통해 지정(be directed to)되는 단일 가상 장치(110)로 나타난다.The
가상 장치(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 쌍들을 저장하는 것을 제어할 수 있다.Thus, the
다른 실시 예들에서, 키-밸류 신뢰성 시스템은 키-밸류 데이터(170)의 키들과 연관된 메타 데이터 및/또는 데이터를 선택적으로 저장하여 동작 속도를 향상시키는 캐시를 또한 포함할 수 있다. 신뢰성 메커니즘들은 KV 쌍들에 대응하는 메타데이터를 포함하도록 KV 쌍들의 밸류를 첨부할 수 있다. 즉, 키 및 밸류 모두는 메타데이터 식별자 "MetaID"와 대응하는 정보와 함께 첨부되어 KV 쌍에 특정한 추가적인 메타데이터를 저장할 수 있다. 메타데이터는 체크섬(checksum), 데이터를 저장하는데 사용되는 신뢰성 메커니즘들을 식별하기 위한 신뢰성 메커니즘 식별자, 소거 코드 식별자, 객체 크기들, 패리티 그룹 번호들의 위치 등을 포함할 수 있다.In other embodiments, the key-value reliability system may also include a cache that selectively stores metadata and / or data associated with the keys of the 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 can store the stored keys using a corresponding reliability mechanism, and thus can help the key-value reliability system in read operations. Thus, one or more Bloom filters or caches in a key-value reliability system may be able to quickly test keys against existing reliability mechanisms.
본문에서 설명되는 신뢰성 메커니즘들 각각은 KV 스토리지 장치들(130) 중 대응하는 하나의 숫자의 키 모듈로(key modulo)에 대한 동일한 해시 함수를 사용하여 키-밸류 데이터(170)와 대응하는 KV 쌍의 첫 번째 사본 또는 청크를 먼저 저장할 수 있다. 즉, 플러그 가능한 신뢰성 메커니즘들 각각에 대하여, 신뢰성 메커니즘은 사용자 키와 동일한 키를 사용하여 적어도 첫 번째 사본/청크를 저장할 수 있다. Each of the reliability mechanisms described herein uses key-
상술된 바와 같이, 본 발명의 실시 예들은 복수의 KV 스토리지 장치들(130)에 키-밸류 데이터(170)의 신뢰성 있는 저장을 보장하는 복수의 플러그 가능한 신뢰성 메커니즘들(multiple pluggable reliability mechanisms)을 제공한다. 따라서 가상 장치 관리 레이어(120)는 신뢰성 메커니즘들을 필요로 할 수 있고, 신뢰성 메커니즘들 중 어느 것이 사용되는지 판별할 수 있다.As described above, embodiments of the present invention provide multiple pluggable reliability mechanisms to ensure reliable storage of key-
신뢰성 메커니즘들은 가상 장치(110)의 설치 동안 설정되는 밸류-크기 임계치들(value-size thresholds), 및/또는 객체 읽기/쓰기 주기(object read/write frequency)와 같은 정책들에 기반될 수 있다. 따라서 가상 장치 관리 레이어(120)는 시스템의 언급된 정책들을 기반으로 적절한 신뢰성 메커니즘을 선택할 수 있다. The trust mechanisms may be based on policies such as value-size thresholds 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)으로 지칭될 수 있다.For the five reliability mechanisms of the embodiments of the present invention, how the reliability mechanism operates by the virtual
도 2는 본 발명의 실시 예에 따른, KV 쌍의 데이터의 크기에 대응하는 크기 임계치에 기반된 키-밸류 신뢰성 시스템에 의해 사용되는 신뢰성 메커니즘의 선택을 보여주는 순서도(200)이다. FIG. 2 is a
도 2를 참조하면, 크기 임계치에 기반된 지원되는 신뢰성 메커니즘들의 전체(예를 들어, 5개의 상술된 신뢰성 메커니즘들)에 대하여, 가상 장치 관리 레이어(120)는 데이터(예를 들어, 키-밸류 데이터(170))의 밸류 크기를 판별할 수 있고, 밸류 크기가 각각의 신뢰성 메커니즘에 대응하는 주어진 임계치(ti)보다 작은지 판별할 수 있고, 밸류 크기 임계치 요구를 만족하는 제1 신뢰성 메커니즘을 선택할 수 있다.Referring to Figure 2, for the entire supported reliability mechanisms (e.g., five of the above-described reliability mechanisms) based on size thresholds, the virtual
예를 들어, S210에서, 가상 장치 관리 레이어(120)는 "n"(n은 정수)개의 크기 임계치 기반의 지원되는 신뢰성 메커니즘들을 수신할 수 있다. S220에서, 가상 장치 관리 레이어(120)는 1부터 n의 순서로 한번에 하나씩, 신뢰성 메커니즘들 각각을 단순히 검토할 수 있다. S230에서, 지원되는 신뢰성 메커니즘들 각각의 검토에서, 가상 장치 관리 레이어(120)는 데이터의 밸류 크기가 각각의 신뢰성 메커니즘과 대응하는 임계치(ti)보다 작은지 판별할 수 있다.For example, at S210, the virtual
S240에서, 데이터의 밸류 크기보다 크거나 같은 임계치(ti)를 갖는 신뢰성 메커니즘이 발견된 경우, 가상 장치 관리 레이어(120)는 사용을 위해 그 신뢰성 메커니즘을 선택할 수 있다. S250에서, S240에서 사용될 신뢰성 메커니즘이 판별되거나 또는 S220의 최종 반복에서 밸류 크기를 만족하는 적절한 임계치(ti)를 갖는 신뢰성 메커니즘이 n개의 신뢰성 메커니즘들 중에서 없는 것으로 판별된 경우, 가상 장치 관리 레이어(120)는 사용될 신뢰성 메커니즘을 판별하는 것을 종료할 수 있다.At S240, if a trust mechanism with a threshold (ti) greater than or equal to the value size of the data is found, the virtual
현재 실시 예에서, "n"은 본문에 기재된 실시 예들의 5개의 다른 신뢰성 메커니즘에 따라 5와 같을 수 있다. 비교적 매우 작은 키-밸류들(즉, 밸류 크기가 상대적으로 작은 경우)에 대하여, 가상 장치 관리 레이어(120)는 사용을 위해 객체 복제(Object Replication)의 신뢰성 메커니즘을 선택할 수 있다. 약간 더 큰 키-밸류들에 대하여, 가상 장치 관리 레이어(120)는 패킹(Packing), 그리고 그 다음에 스플릿팅(Splitting)(예를 들어, 순서대로)의 신뢰성 메커니즘을 선택할 수 있는 한편, 각각에 대하여 전형적인 소거 코딩을 사용할 수 있다. 그러나 더 큰 키-밸류들에 대하여, 가상 장치 관리 레이어(120)는 패킹(Packing), 그 다음에 스플릿팅(Splitting)을 선택할 수 있는 한편, 전형적인 소거 코딩 대신에 재생성 소거 코딩(regeneration erasure coding)을 사용할 수 있다. In the present embodiment, "n" may be equal to 5 according to five different reliability mechanisms of the embodiments described herein. For relatively 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 present invention, the choice of the trust mechanism for use may be based on the object size of the object, the throughput requirements for the object, the read / write temperature of the corresponding key-value pair, And / or detection of whether the key is hot or cold. ≪ RTI ID = 0.0 > For example, "hot" keys can use the reliability mechanism of Object Replication, regardless of their value size, while "cold" Can be applied as one of the reliability mechanisms of the erasure coding scheme. As another example, the determination of whether to use the reliability mechanism of Object Replication may be based on both size and write temperature. Thus, a threshold corresponding to the object read / write period may be used to determine the reliability mechanism, instead of a threshold corresponding to magnitude in the
5개의 신뢰성 메커니즘들의 각각의 동작들은 이하에서 설명된다.The respective operations of the five reliability mechanisms are described below.
도 1을 다시 참조하면, 이전에 언급된 바와 같이, KV 쌍의 밸류 크기가 상대적으로 작은 경우, "객체 복제(Object Replication)"의 신뢰성 메커니즘이 가상 장치 관리 레이어(120)에 의한 선택에 적합할 수 있다. 객체 복제(Object Replication)는 객체마다(예를 들어, KV 쌍/키-밸류 데이터(170) 마다) 적용될 수 있다. 비록 객체 복제(Object Replication)의 신뢰성 메커니즘이 높은 스토리지 오버헤드(storage overhead)를 가지나, 낮은 읽기 및 복구 비용을 갖기 때문에, 매우 작은 밸류 크기들에 적합할 수 있다.Referring back to Figure 1, as previously mentioned, if the value size of the KV pair is relatively small, then the reliability mechanism of "Object Replication" is suitable for selection by the virtual
객체 복제(Object Replication)의 신뢰성 메커니즘은 잦은 업데이트들을 갖는 키-밸류들(예를 들어, 키-밸류 데이터(170))에 또한 적합할 수 있고, 따라서 읽기 및 쓰기 주기를 기반으로 선택될 수 있다.The trust mechanism of object replication may also be suitable for key-values (e. G., Key-value data 170) with frequent updates, and thus may 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 the primary KV storage device 130-2 includes a major copy of the data (e.g., key-value data 170), then the virtual
데이터의 사본들은 복제 KV 스토리지 장치들(130-3, 130-4)에서, 주요 KV 스토리지 장치(130-2)와 동일한 키명칭(keyname)/동일한 사용자 키(user key)하에서 저장될 수 있다. 데이터의 모든 사본들은 복제된 키-밸류 데이터(170)를 식별하기 위한 식별자 및 체크섬을 포함할 수 있다. Copies of the data may be stored in duplicate KV storage devices 130-3 and 130-4 under the same key name / same user key as the primary KV storage device 130-2. All copies of the data may include an identifier and a 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)을 사용하여 밸류를 복구함으로써, 복제된 키가 복구되는 것을 보장한다. Thus, if a particular
객체 복제(Object Replication)의 신뢰성 메커니즘을 정리하면, 가상 장치 관리 레이어(120)는 키-밸류 데이터(170)를 수신할 수 있고, 키 객체를 해싱하여 키 객체의 복제본들을 저장하는데 사용될 KV 스토리지 장치(130)를 판별할 수 있다. 가상 장치 관리 레이어(120)는, 이후에, 동일한 사용자 키명칭(예를 들어, 적절한 MetaID 필드)하에서, 업데이트된 밸류들을 선택된 KV 스토리지 장치들(130)(예를 들어, 선택된 KV 스토리지 장치들(130-2, 130-3, 130-4)로 기입할 수 있다.In summary, the virtual
도 3은 본 발명의 실시 예에 따른, 전형적인 소거 코딩(traditional erasure coding)을 사용하는 K-객체 (k,r) 소거 코딩(K-Object (k,r) erasure coding) 또는 다중 객체 "패킹(Packing)"(multiple object “”)의 신뢰성 메커니즘에 따라 키-밸류 데이터를 저장하도록 구성된 KV 스토리지 장치들의 그룹을 보여주는 블록도이다. FIG. 3 is a block diagram of an embodiment of a K-object (k, r) erasure coding or a multi-object "packing (K, r) erasure coding using traditional erasure coding, ≪ / RTI > is a block diagram illustrating a group of KV storage devices configured to store key-value data in accordance with a reliability mechanism of a " Packing "
도 3을 참조하면, 전형적인 소거 코딩을 사용하는 패킹(Packing)의 신뢰성 메커니즘은 청크들로 분할되는 것(예를 들어, 좀 더 나은 데이터 처리량을 위하여)이 적절하지 않은 작은 밸류 크기들을 갖는 데이터를 위하여 선택될 수 있다. 예를 들어, 전형적인 소거 코딩을 사용하는 패킹(Packing)의 신뢰성 메커니즘은 이전에 설명된 객체 복제(Object Replication)의 신뢰성 메커니즘의 선택의 결과인 밸류 크기들보다 더 큰 밸류 크기들(그러나 여전히 상대적으로 작음)을 갖는 데이터를 위하여 가상 장치 관리 레이어(120)에 의해 선택될 수 있다. With reference to FIG. 3, the reliability mechanism of packing using typical erasure coding is that the data having small value sizes that are not suitable for partitioning into chunks (e.g., for better data throughput) Can be selected. For example, the reliability mechanism of Packing using typical erasure coding may be based on the larger value sizes (but still relatively large) than the value sizes that are the result of the selection of the reliability mechanism of the Object Replication described earlier 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 be composed of typical (k, r) maximum distance separable (MDS) erasure coding and can be used with systematic MDS codes. For example, the erase code may be essentially (4,2) Reed-Solomon code, (4,2) Reed-Solomon code is relatively well studied, and the corresponding fast implementation library Is readily available.
전형적인 소거 코딩을 사용하는 패킹(Packing)의 신뢰성 메커니즘을 사용하는 것에서, 동일한 패리티 그룹/소거 코드 그룹(340)의 일부인 k개의 다른 KV 스토리지 장치들(330)의 큐들로부터의 k개의 키들/키 객체들(350)은 선택되고 소거 코딩되어 패킹된다. (k는 정수임.)In 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, the virtual
도 4는 본 발명의 실시 예에 따른, 전형적인 소거 코딩을 사용하는 K-객체 (k,r) 소거 코딩, 또는 다중 객체 "패킹(Packing)"의 신뢰성 메커니즘에 따른 밸류 객체들 및 패리티 객체들의 저장을 보여주는 블록도이다.Figure 4 illustrates the storage of value objects and parity objects according to a reliability mechanism of K-object (k, r) erasure coding, or multi-object "packing" using typical erasure coding, FIG.
도 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,
저장된 각각의 밸류 객체들(450)의 사용자 밸류 길이/밸류 크기(462)는 기입된 것과 동일하다. 그러나 소거 코딩을 가능하게 하는 일관성을 위하여, 사용자 밸류들/밸류 객체들(450)은 그것들로 첨부된 "0" 필링들/가상 제로들/가상 제로 패딩(464)을 가짐으로써 모두 동일한 크기를 갖는 것으로 보여진다. 즉, 다른 밸류 객체들(450)의 각각의 사용자 밸류 크기들(462)이 바뀔 수 있기 때문에(즉, 밸류 객체들(450)은 가별하는 길이들을 가질 수 있거나 가별-길이 키 밸류들일 수 있다.), 가상 제로 패딩(464)의 방법을 구현함으로써(즉, 코딩을 위하여 가상 제로 패딩(464)의 제로들을 밸류 객체들(450)로 패딩하는 한편, 패딩된 제로들을 포함하는 밸류 객체들(450)을 나타내는 데이터를 실제 재기입하는 것을 피함으로써), 패리티 객체들(460)은 패리트 그룹(340)에서 가장 큰 객체(들)(470)과 동일한 크기를 가질 수 있다. 따라서, 현재 실시 예에서, 밸류 객체들(450) "Val x," "Val y," 및 "Val b"는 KV 스토리지 장치들에 실제로 저장되지 않는 가상 제로들로 패딩되고, 그로 인하여 밸류 객체(470) "Val c"와 동일한 크기를 갖는 것으로 보여진다. 그러므로 패리티 객체들(460)이 연산될 수 있다. The user value length /
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)의 그룹들에 대한 정보는, 각 밸류 객체(450)에 대한 실제 밸류 크기(462)(즉, 가상 제로 패딩(464)이 없는 밸류 크기(462))와 함께, KV 스토리지 장치들(330)(예를 들어, 도 1의 KV 스토리지 장치들(130))의 각각에 메타데이터 객체로서 저장될 수 있다. 따라서, 현재 실시 예에서, 추가적인 메타데이터가 키 객체들(350)(예를 들어, 도 1의 신뢰성 그룹(140)에 위치된 키 객체들(350)), 키 객체들(350)에 대응하는 밸류 객체들(450) 각각의 원래 길이, 및 키 객체들(350)의 코딩 순서로 KV 스토리지 장치들(130)을 저장하는데 사용될 수 있다. Although readings and writes are relatively simple relative to the reliability mechanism of packing using typical erasure coding, parity re-arithmetic and recovery may be less simple. In order to recognize which
예를 들어, 메타데이터 객체 밸류는 신뢰성 그룹(140)의 키 객체들(350) 전체를 가리키고, 또한 밸류 객체들(450)의 밸류 크기들(462)을 가리키는 필드를 포함할 수 있고, 패리티 객체들 키들(즉, 가상 제로 패딩(464)의 제로들을 포함하는 밸류 객체들(450)), 패리티 객체들(460)의 밸류 크기들(462), 및 r개의 패리티 객체들(460)이 저장된 대응하는 r개의 KV 스토리지 장치(330)의 식별을 위한 장치 ID들을 가리키는 다른 필드를 포함할 수 있다. For example, the metadata object value may refer to the entire
데이터는 사용자 키를 사용하여 저장될 수 있다. 메타데이터는 사용자 키 및 "Metadata"를 지칭하는 MetaID 지시자를 사용하여 형성된 내부 키에 저장될 수 있다. 더욱이, 밸류 객체들(450)이 어디에서 종료되는지 가상 제로 패딩(464)의 제로들이 어디에서 시작하는지 판별함으로써 밸류 객체들(450)이 재생성될 경우에 정확한 재구성을 위하여 밸류 크기들(462)은 메타데이터에 저장되어 가상 제로 패딩(464)의 위치(즉, 제로들이 어디에 추가되었는지)를 인식하게 할 수 있다. The data may be stored using a user key. The metadata may be stored in an internal key formed using a MetaID indicator denoting the user key and "Metadata ". Moreover, the
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)될 수 있다. In addition, if 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)(예를 들어, 복제 엔진과 유사함)로 기입할 수 있다.In summary, the virtual
도 5는 본 발명의 실시 예에 따른, 전형적인 소거 코딩을 사용하는 단일 객체 (k,r) 소거 코딩(Single Object (k,r) erasure coding), 또는 "스플릿팅(Splitting)"의 신뢰성 메커니즘에 따라 키-밸류 데이터를 저장하도록 구성된 KV 스토리지 장치들의 그룹을 보여주는 블록도이다.FIG. 5 is a block diagram of an embodiment of the present invention, in which a single object (k, r) erasure coding using typical erasure coding, or a reliability mechanism of "Splitting" Lt; / RTI > is a block diagram illustrating a group of KV storage devices configured to store key-value data in accordance with the present invention.
도 5를 참조하면, 이전에 언급된 객체 복제(Object Replication) 및 전형적인 소거 코딩을 사용하는 패킹(Packing)의 신뢰성 메커니즘들에 적합한 밸류들의 밸류 크기들보다 더 큰 밸류 크기들을 갖는 밸류들에 대하여, 가상 장치 관리 레이어(120)는 전형적인 소거 코딩을 사용하는 단일 객체 (k,r) 소거 코딩, 또는 "스플릿팅(splitting)"의 신뢰성 메커니즘을 선택할 수 있다. 전형적인 소거 코딩을 사용하는 스플릿팅의 신뢰성 메커니즘은 상대적으로 큰 밸류 크기를 갖고, KV 밸류(570)가 k개의 동일 크기의 스플릿들/청크들/밸류들/객체들(550)로 분할된 경우 좋은 처리량을 가질 수 있는 KV 밸류/객체(570)에 적합할 수 있는 객체/KV 쌍 단위의 신뢰성 메커니즘이다.5, for values having larger value sizes than the value sizes of the values suitable for the reliability mechanisms of Packing using the above-mentioned Object Replication and typical erasure coding, Virtual
KV 밸류(570)를 분할한 이후에, 실시 예에 따르면, 가상 장치 관리 레이어(120)는 k개의 객체들(550) 각각에 대하여 체크섬을 연산할 수 있다. 그 이후에, 가상 장치 관리 레이어(120)는 k개의 객체들(550) 각각의 전에 메타데이터를 삽입할 수 있다.After partitioning 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)에 저장할 수 있다.Therefore, 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"에 순환 방식의 순서대로 기입된다. (예를 들어, 상술된 객체 복제의 신뢰성 메커니즘에 대하여 설명된 것과 유사한 방식임.)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)을 기입할 수 있다.In summary, 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 again to Figures 3 and 4, in accordance with another embodiment, the virtual
따라서 재생성 코드들이 적합하나, 그러나 객체들을 분할하는 것이 적합하지 않고, 객체들을 보존하는 것이 더욱 적합한 경우에, 재생성 소거 코딩을 사용하는 패킹이 사용될 수 있다. 재생성 소거 코딩을 사용하는 패킹은 이전에 언급된 객체 복제, 및 전형적인 소거 코딩을 사용하는 스플릿팅 및 패킹의 신뢰성 메커니즘들을 위하여 사용되는 밸류 크기보다 더 큰 밸류 크기들에 대하여 적합할 수 있다. 재생성 소거 코딩을 사용하는 패킹은 객체의 복수의 서브패킷들을 읽는 것이 전체 객체를 읽는 것보다 낮은 성능을 유발하지 않을 경우에 사용될 수 있다. 재생성 소거 코딩을 사용하는 패킹은, 기본 KV 스토리지 장치들(예를 들어, 도 1의 KV 스토리지 장치들(130), 또는 도 3의 KV 스토리지 장치들(330))이 복구/재구성 동안 보조할 수 있는 재생성 코드를 인식하는 KV 스토리지 장치들인 경우에, 적합할 수 있다. Thus, if the regeneration codes are suitable, but it is not feasible to partition the objects and it is more appropriate to preserve the objects, a packing using regenerative erasure coding may be used. Packing using regenerative erasure coding may be suitable for value sizes larger than the value sizes used for the previously mentioned object duplication and reliability mechanisms of the splitting and packing using typical 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 may be used to prevent the underlying KV storage devices (e.g.,
도 6은 본 발명의 실시 예에 따른, 재생성 소거 코딩을 사용하는 단일 객체 (k,r,d) 소거 코딩, 또는 "스플릿팅(Splitting)"의 신뢰성 메커니즘에 따라 키-밸류 데이터를 저장하도록 구성된 KV 스토리지 장치들의 그룹을 보여주는 블록도이다. Figure 6 is a block diagram of an embodiment of the present invention configured to store key-value data according to a reliability mechanism of single object (k, r, d) erasure coding, or "Splitting" using regenerative erasure coding Lt; / RTI > is a block diagram showing a group of KV storage devices.
도 6을 참조하면, 현재의 신뢰성 메커니즘은, 전형적인 (k,r) MDS 소거 코딩 대신에 (k,r,d) 재생성 코드들을 사용한다는 점만 제외하면, 가상 장치 관리 레이어가 도 4에 도시된 바와 같이, 전형적인 소거 코딩을 사용하는 스플릿팅과 유사한 방식으로 동작하도록 할 수 있다. 재생성 소거 코딩을 사용하는 패킹과 같이, 현재의 신뢰성 메커니즘은 기본 KV 스토리지 장치들(630)이 복구/재구성 동안 보조할 수 있는 재생성 코드를 인식하는 KV 스토리지 장치들인 경우에 적합할 수 있다.6, the current reliability mechanism is similar to that shown in FIG. 4 except that the virtual device management layer uses (k, r, d) regeneration codes instead of the typical (k, r) MDS elimination coding Likewise, it can be made to operate in a manner similar to splitting using typical erasure coding. The current reliability mechanism, such as packing using regenerative erasure coding, may be suitable when
객체(670)가 이전에 기재된 신뢰성 메커니즘들과 대응하는 객체들보다 더 큰 밸류 크기를 갖고, 객체(670)의 k개의 스플릿들(680)의 복수의 서브패킷들(690)을 읽는 것이 전체 스플릿들(680)을 읽는 것(예를 들어, 전형적인 소거 코딩을 사용하는 스플리티의 신뢰성 메카니즘으로 수행됨.)보다 낮은 성능을 유발하지 않는 경우에 재생성 소거 코딩을 사용하는 스플릿팅이 적합할 수 있다. It may be desirable for
재생성 소거 코딩을 사용하는 스플릿팅의 신뢰성 메커니즘은 객체들이 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 the objects are divided into k equal sized objects / splits 650 and splits 650 are split into multiple subpackets 690 (e.g., (Which is divided into four
전형적인 소거 코딩을 사용하는 스플릿팅과 유사하게, 도 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, 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)을 기입할 수 있다. By summarizing the reliability mechanism of splitting using regenerative erasure coding, the
상술된 바에 따르면, 가상 장치 관리 레이어는 데이터의 하나 또는 그 이상의 속성들을 기반으로 데이터의 저장에 대하여 신뢰성 메커니즘들의 그룹으로부터 적절한 신뢰성 메커니즘을 선택할 수 있다. 따라서 본문에 기재된 실시 예들은 기재된 신뢰성 메커니즘들이 각각 단일 키 복구 절차를 수행할 수 있기 때문에 메모리 스토리지의 분야에서 향상을 제공한다. 전체 메모리 장치들이 고장인 경우, 본 발명의 실시 예의 가상 장치 관리 레이어는 고장난 메모리 장치에 존재하는 키들 전부를 복구하고 새로운 메모리 장치로 복사할 수 있다. 가상 장치 관리 레이어는 신뢰성 그룹의 고장난 메모리 장치와 인접한 메모리 장치들에 존재하는 키들 전체에 대한 반복 동작을 수행하고, 신뢰성 메커니즘이 고장난 메모리 장치에 존재하는 것으로 판단한 키들에 대하여 키 단위 복수 동작을 수행함으로써, 키들 전체의 복구 및 복사를 달성할 수 있다. As described above, the virtual device management layer may select an appropriate reliability mechanism from the group of reliability mechanisms for storage of data based on one or more attributes of the data. Thus, the embodiments described herein provide an improvement in the field of memory storage because the described reliability mechanisms can each perform a single key recovery procedure. If all memory devices are failing, the virtual device management layer of an embodiment of the present invention can recover all of the keys present in the failed memory device and copy them to the new memory device. The virtual device management layer performs an iterative operation on all the keys existing in the memory devices adjacent to the failed memory device of the reliability group and performs a plurality of key unit operations on the keys that the reliability mechanism judges that the failed mechanism exists in the failed memory device , Recovery and copying of the entire keys can be achieved.
기본 신뢰성 메커니즘들(예를 들어, 기본 스토리지 장치들 제약에 따른)에 의해 지원되는 것보다 큰 밸류 크기들을 갖는 매우 큰 KV 쌍들이 신뢰성 관리자에 의해 복수의 KV 쌍들로 명시적으로 분할되고, 신뢰성 메커니즘들이 복수의 스플릿들 및 스플릿 개수 정보를 밸류들에 저장된 메타데이터와 함께 저장하기 때문에, 기재된 실시 예들은 메모리 스토리지 분야에서 향상을 더 제공한다.Very large KV pairs having larger value sizes than those supported by the underlying reliability mechanisms (e.g., in accordance with the underlying storage devices constraints) are explicitly partitioned into a plurality of KV pairs by the reliability manager, The embodiments described further provide an improvement in the field of memory storage, as they store a plurality of splits and split count information together with the metadata stored in the values.
본문에 기재된 실시 예들은, 비록 특정한 용어들을 사용하였으나, 그것들은 일반적이고 기술적인 의미에서 해석되어야 하며, 이에 국한되지 않는다. 일부 예들에서, 본 발명이 속하는 기술 분야에서의 통상의 기술자에 의해 나타나는 바와 같이, 지시된 실시 예에 대하여 다르게 언급되지 않는 한, 특정 실시 예와 연관되어 설명된 특징들, 속성들, 및/또는 요소들은 다른 실시 예와 연관되어 설명된 특징들, 속성들, 및/또는 요소들과 조합되어 또는 독립적으로 사용될 수 있다. 따라서 당업자는 형태 또는 상세한 설명의 다양한 변형들이 그것들에 포함된 그것들의 기능적인 균등물로 상세한 설명 및 이하의 특허청구범위의 사상 및 범위로부터의 벗어남 없이 행해질 수 있음이 이해될 것이다.The embodiments described herein, although specific terms are employed, are to be interpreted in a general and technical sense, without being limited thereto. In some instances, unless otherwise stated with respect to the illustrated embodiment, as indicated by ordinary skill in the art to which this invention pertains, features, attributes, and / or features described in connection with the specific embodiment The elements may be used in combination or independently with the described features, attributes, and / or elements in connection with other embodiments. It will therefore be appreciated by those skilled in the art that various changes in form or details may be made therein without departing from the spirit and scope of the following claims and the detailed description thereof as a functional equivalent thereof.
Claims (20)
상기 데이터가 상기 데이터를 저장하기 위한 신뢰성 메커니즘에 대응하는 임계치를 만족하는지 판별하는 단계;
상기 임계치가 만족된 경우, 상기 신뢰성 메커니즘을 선택하는 단계; 및
상기 선택된 신뢰성 메커니즘에 따라 상기 데이터를 저장하는 단계를 포함하는 방법.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,
Determining whether the data satisfies a threshold corresponding to a reliability mechanism for storing the data;
Selecting the trust mechanism if the threshold is satisfied; And
And storing the data in accordance with the selected reliability mechanism.
상기 임계치는 상기 데이터의 객체 크기, 상기 데이터의 처리량 고려(throughput consideration), 상기 데이터의 읽기/쓰기 온도(read/write temperature), 및 상기 N개의 스토리지 장치들의 기본 소거 코딩 능력 중 하나 또는 그 이상에 기반된 방법.The method according to claim 1,
Wherein the threshold is one or more of an object size of the data, a throughput consideration of the data, a read / write temperature of the data, and a basic erasure coding capability of the N storage devices Based method.
하나 또는 그 이상의 블룸 필터들 또는 캐시들을 사용하여 상기 신뢰성 메커니즘에 대한 상기 데이터를 테스트하는 단계를 더 포함하는 방법.The method according to claim 1,
Further comprising testing the data for the trust mechanism using one or more Bloom filters or caches.
상기 선택된 신뢰성 메커니즘, 상기 데이터를 저장하는 상기 N개의 스토리지 장치들 각각에 대한 하나 또는 그 이상의 체크섬들, 상기 데이터를 저장하는 상기 N개의 스토리지 장치들 각각에 저장된 상기 데이터의 밸류들의 객체 크기들, 및 상기 N개의 스토리지 장치들 중 어떤 것에 상기 데이터가 저장되었는지를 가리키는 상기 N개의 스토리지 장치들의 패리티 그룹 멤버들의 위치를 기록하기 위한 메타데이터를 상기 데이터에 대응하는 키와 함께 삽입하는 단계를 더 포함하는 방법. The method 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 in each of the N storage devices storing the data, Further comprising inserting metadata for recording the location of parity group members of the N storage devices together with a key corresponding to the data indicating to which of the N storage devices the data is stored .
상기 선택된 신뢰성 메커니즘은 객체 복제를 포함하고,
상기 데이터를 저장하는 단계는:
KV 밸류를 선택하는 단계;
상기 선택된 KV 밸류에 대응하는 키를 해싱하기 위한 해시를 연산하는 단계;
상기 KV 밸류와 대응하는 키 객체들의 복제본들을 저장하기 위해 상기 N개의 스토리지 장치들 중 일부 스토리지 장치들을 판별하는 단계; 및
동일한 사용자 키명칭 하에서, 상기 판별된 일부 스토리지 장치들 각각에 상기 KV 밸류와 대응하는 업데이트된 밸류들을 기입하는 단계를 포함하는 방법.The method according to claim 1,
Wherein the selected trust mechanism comprises object replication,
Wherein the step of storing the data comprises:
Selecting a KV value;
Computing 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
And writing the updated values corresponding to the KV value to each of the determined partial storage devices under the same user key name.
상기 선택된 신뢰성 메커니즘은 패킹(packing)을 포함하고,
상기 데이터를 저장하는 단계는:
상기 신뢰성 그룹의 상기 N개의 스토리지 장치들 중 k(단, k는 정수)개의 스토리지 장치들에 저장된 k개의 키 객체들을 선택하는 단계;
상기 k개의 키 객체들에 대응하는 k개의 밸류 객체들을 회수하는 단계;
상기 k개의 밸류 객체들 전부의 가상 크기가 동일해 지도록 상기 k개의 밸류 객체들 중 가장 큰 밸류 크기를 갖지 않는 밸류 객체들의 종단들에 가상 제로들을 패딩하는 단계;
상기 k개의 키 객체들로부터 r(단, r은 정수)개의 패리티 객체들을 생성하는 단계;
상기 k개의 키 객체들을 상기 k개의 스토리지 장치들로 기입하는 단계; 및
상기 r개의 패리티 객체들을 상기 N개의 스토리지 장치들 중 r개의 스토리지 장치들에 기입하는 단계를 포함하고,
상기 r개의 스토리지 장치들 각각은 상기 k개의 스토리지 장치들과 구분되고, 단, k+r=N인 방법.The method according to claim 1,
Wherein the selected reliability mechanism comprises packing,
Wherein the step of storing the data comprises:
Selecting k key objects stored in k (where k is an integer) storage devices among the N storage devices of the reliability group;
Retrieving k value objects corresponding to the k key objects;
Padding virtual zeroes on the ends of the value objects having the largest value size among the k value objects so that the virtual sizes of all of the k value objects become equal;
Generating r (where r is an integer) parity objects from the k key objects;
Writing the k key objects into the k storage devices; And
And writing the r parity objects to r storage devices among the N storage devices,
Wherein each of the r storage devices is distinguished from the k storage devices, with the proviso that k + r = N.
상기 선택된 신뢰성 메커니즘은 전형적인 소거 코딩을 사용하는 패킹을 포함하고,
상기 N개의 스토리지 장치들은 전형적인 (k,r) MDS(maximum distance separable) 소거 코딩으로 구성되는 방법.The method according to claim 6,
The selected reliability mechanism includes packing using typical erasure coding,
Wherein the N storage devices are configured with typical (k, r) maximum distance separable (MDS) erasure coding.
상기 선택된 신뢰성 메커니즘은 재생성 소거 코딩을 사용하는 패킹을 포함하고,
상기 N개의 스토리지 장치들은 (k,r,d) 재생성 소거 코딩으로 구성되는 방법.The method according to claim 6,
Wherein the selected reliability mechanism comprises packing using regenerative erasure coding,
Wherein the N storage devices comprise (k, r, d) regenerative erasure coding.
상기 선택된 신뢰성 메커니즘은 스플릿팅을 포함하고,
상기 데이터를 저장하는 단계는:
KV 밸류를 선택하는 단계;
상기 KV 밸류를 k(단, k는 정수)개의 동일 크기의 객체들로 분할하는 단계;
상기 k개의 동일 크기의 객체들로부터 r(단 r은 정수)개의 패리티 객체들을 생성하는 단계;
상기 선택된 KV 밸류에 대응하는 키를 해싱하기 위한 해시를 연산하는 단계;
상기 해시를 기반으로 상기 N개의 스토리지 장치들 중 상기 KV 밸류가 위치할 주요 장치를 판별하는 단계; 및
상기 주요 장치로부터 시작하여 연속하는 순서로 상기 k개의 동일 크기의 객체들 및 상기 r개의 패리티 객체들 각각을 상기 N개의 스토리지 장치들에 기입하는 단계를 포함하고, 단, k+r=N인 방법.The method according to claim 1,
Wherein the selected reliability mechanism comprises a splitting,
Wherein the step of storing the data comprises:
Selecting a KV value;
Dividing the KV value into k (where k is an integer) objects of the same size;
Generating r (r, integer) parity objects from the k equal-sized objects;
Computing a hash for hashing the key corresponding to the selected KV value;
Determining a primary device on which the KV value is to be located among the N storage devices based on the hash; And
Writing the k number of identical sized objects and each of the r parity objects to the N storage devices in a sequential order starting from the main device, with the proviso that when k + r = N .
상기 선택된 신뢰성 메커니즘은 전형적인 소거 코딩을 사용하는 스플릿팅을 포함하고,
상기 N개의 스토리지 장치들은 전형적인 (k,r) MDS(maximum distance separable) 소거 코딩으로 구성되는 방법.10. The method of claim 9,
The selected reliability mechanism includes splitting using typical erasure coding,
Wherein 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개의 패리티 서브패킷들로 분할할하는 단계를 더 포함하는 방법.10. The method of claim 9,
Wherein the selected reliability mechanism comprises packing using regenerative erasure coding,
Wherein the N storage devices comprise (k, r, d) regenerative erasure coding,
Wherein the step of storing the data comprises:
Dividing the k equal sized objects into m (where m is an integer) subpackets using the regenerative erasure coding; And
Further comprising partitioning each of the r parity objects into m parity subpackets.
스테이트리스 데이터 보호를 사용하여 가상 장치로서 구성되는 N(단, N은 정수)개의 스토리지 장치들; 및
상기 선택된 신뢰성 메커니즘에 따라, 상기 N개의 스토리지 장치들을 상기 가상 장치로서 관리하여 상기 N개의 스토리지 장치들 중 선택된 스토리지 장치들에 데이터를 저장하도록 구성된 가상 장치 관리 레이어를 포함하고,
상기 가상 장치 관리 레이어는:
상기 데이터가 상기 데이터를 저장하기 위한 신뢰성 메커니즘에 대응하는 임계치를 만족하는지 판별하고;
상기 임계치가 만족된 경우, 상기 신뢰성 메커니즘을 선택하고;
상기 선택된 신뢰성 메커니즘에 따라 상기 데이터를 저장하도록 구성된 데이터 신뢰성 시스템.A data reliability system for storing data based on a selected reliability mechanism,
N (where N is an integer) storage devices configured as virtual devices using stateless data protection; And
And a virtual device management layer configured to manage the N storage devices as the virtual device and store data in selected ones of the N storage devices according to the selected reliability mechanism,
The virtual device management layer comprising:
Determining if the data satisfies a threshold corresponding to a reliability mechanism for storing the data;
Select the trust mechanism if the threshold is satisfied;
And store the data in accordance with the selected trust mechanism.
상기 선택된 신뢰성 메커니즘은 객체 복제를 포함하고,
상기 가상 장치 관리 레이어는:
KV 밸류를 선택하고;
상기 선택된 KV 밸류에 대응하는 키를 해싱하기 위한 해시를 연산하고;
상기 KV 밸류에 대응하는 키 객체들의 복제본들을 저장하기 위해 상기 N개의 스토리지 장치들 중 일부 스토리지 장치들을 판별하고;
동일한 사용자 키명칭하에서 상기 판별된 일부 스토리지 장치들 각각에 상기 KV 밸류에 대응하는 업데이트된 밸류들을 기입함으로써, 상기 데이터를 저장하도록 구성된 데이터 신뢰성 시스템.13. The method of claim 12,
Wherein the selected trust mechanism comprises object replication,
The virtual device management layer comprising:
KV value is selected;
Calculate a hash for hashing the key corresponding to the selected KV value;
Determining some storage devices of the N storage devices to store replicas of key objects corresponding to the KV value;
And to write the updated values corresponding to the KV value to each of the determined some 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인 데이터 신뢰성 시스템.13. The method of claim 12,
Wherein the selected reliability mechanism comprises a packing,
The virtual device management layer comprising:
Selecting k key objects stored in k (where k is an integer) storage devices among the N storage devices;
Retrieving k value objects corresponding to the k key objects;
Padding virtual zeroes at the ends of the value objects having the largest value size among the k value objects such that the virtual value sizes of all of the k value objects become equal;
Generating r (where r is an integer) parity objects from the k key objects;
Write the k key objects into the k storage devices;
And storing the data by writing the r parity objects to r storage devices of the N storage devices,
Wherein each of the r storage devices is distinct from the k storage devices, and k + r = N.
상기 선택된 신뢰성 메커니즘은 스플릿팅을 포함하고,
상기 가상 장치 관리 레이어는:
KV 밸류를 선택하고,
상기 KV 밸류를 k(단, k는 정수)개의 동일 크기의 객체들로 분할하고;
상기 k개의 동일 크기의 객체들로부터 r개의 패리티 객체들을 생성하고, 단, r은 정수;
상기 선택된 KV 밸류에 대응하는 키를 해싱하기 위한 해시를 연산하고;
상기 해시를 기반으로 상기 N개의 스토리지 장치들 중 상기 KV 밸류가 위치할 주요 장치를 판별하고;
상기 주요 장치로부터 시작하여 연속하는 순서로 상기 k개의 동일 크기의 객체들 및 상기 r개의 패리티 객체들 각각을 상기 N개의 스토리지 장치들에 기입함으로써, 상기 데이터를 저장하도록 구성되고,
단, k+r=N인 데이터 신뢰성 시스템.13. The method of claim 12,
Wherein the selected reliability mechanism comprises a splitting,
The virtual device management layer comprising:
KV value is selected,
Dividing the KV value into k (where k is an integer) objects of the same size;
Generating r parity objects from k equal sized objects, where r is an integer;
Calculate a hash for hashing the key corresponding to the selected KV value;
Determining a main device on which the KV value is to be located among the N storage devices based on the hash;
Write the k pieces of the same size objects and the r parity objects to the N storage devices in a sequential order starting from the main device,
Where k + r = N.
상기 선택된 신뢰성 메커니즘은 재생성 소거 코딩을 사용하는 스플릿팅을 포함하고,
상기 N개의 스토리지 장치들은 (k,r,d) 재생성 소거 코딩으로 구성되고,
상기 가상 장치 관리 레이어는 상기 재생성 소거 코딩을 사용하여 상기 k개의 동일 크기의 객체들을 m(단, m은 정수)개의 서브 패킷들로 분할하고, 상기 r개의 패리티 객체들 각각을 m개의 패리티 서브 패킷들로 분할함으로써, 상기 데이터를 저장하도록 더 구성되는 데이터 신뢰성 시스템.16. The method of claim 15,
Wherein the selected reliability mechanism comprises splitting using regenerative erasure coding,
Wherein the N storage devices comprise (k, r, d) regenerative erasure coding,
Wherein the virtual device management layer divides the k pieces of the same size objects into m (where m is an integer) subpackets using the regenerative erasure coding, and allocates each of the r parity objects to m parity subpackets The data storage system further configured to store the data.
상기 방법은:
상기 데이터가 상기 데이터를 저장하기 위한 신뢰성 메커니즘에 대응하는 임계치를 만족하는지 판별하는 단계;
상기 임계치가 만족된 경우, 상기 신뢰성 메커니즘을 선택하는 단계; 및
상기 선택된 신뢰성 메커니즘에 따라 데이터를 저장하는 단계를 포함하는 비-일시적 컴퓨터 판독 가능한 매체.And computer code in which a method of storing data in a key-value reliability system, which is implemented as a single logical unit, is grouped into a reliability group and includes N storage devices managed by a virtual device management layer, For non-transient computer readable media,
The method comprising:
Determining whether the data satisfies a threshold corresponding to a reliability mechanism for storing the data;
Selecting the trust mechanism if the threshold is satisfied; And
And storing the data in accordance with the selected reliability mechanism.
상기 선택된 신뢰성 메커니즘은 객체 복제를 포함하고,
상기 데이터를 저장하는 단계는:
KV 밸류를 선택하는 단계;
상기 선택된 KV 밸류에 대응하는 키를 해싱하기 위한 해시를 연산하는 단계;
상기 KV 밸류에 대응하는 키 객체들의 복제본을 저장하기 위해 상기 N개의 스토리지 장치들 중 일부 스토리지 장치들을 선택하는 단계; 및
동일한 사용자 키명칭 하에서, 상기 KV 밸류에 대응하는 업데이트된 밸류들을 상기 판별된 일부 스토리지 장치들 각각에 기입하는 단계를 포함하는 비-일시적 컴퓨터 판독 가능한 매체.18. The method of claim 17,
Wherein the selected trust mechanism comprises object replication,
Wherein the step of storing the data comprises:
Selecting a KV value;
Computing a hash for hashing the key corresponding to the selected KV value;
Selecting some of the N storage devices to store a replica of key objects corresponding to the KV value; And
Writing the updated values corresponding to the KV value to each of the determined some 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인 비-일시적 컴퓨터 판독 가능한 매체.18. The method of claim 17,
Wherein the selected reliability mechanism comprises a packing,
Wherein the step of storing the data comprises:
Selecting k key objects stored in k (where k is an integer) storage devices among the N storage devices of the reliability group;
Retrieving k value objects corresponding to the k key objects;
Padding virtual zeroes at the ends of the value objects having the largest value size among the k value objects such that the virtual value sizes of all of the k value objects become equal;
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
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 = N.
상기 선택된 신뢰성 메커니즘은 스플릿팅을 포함하고,
상기 데이터를 저장하는 단계는:
KV 밸류를 선택하는 단계;
상기 KV 밸류를 k(단, k는 정수)개의 동일 크기의 객체들로 분할하는 단계;
상기 k개의 동일 크기의 객체들로부터 r(단, r은 정수)개의 패리티 객체들을 생성하는 단계;
상기 선택된 KV 밸류에 대응하는 키를 해싱하기 위한 해시를 연산하는 단계;
상기 해시를 기반으로, 상기 N개의 스토리지 장치들 중 상기 KV 밸류가 위치할 주요 장치를 선택하는 단계; 및
상기 주요 장치로부터 시작하여 연속한 순서로, 상기 k개의 동일 크기의 객체들 및 상기 r개의 패리티 객체들 각각을 상기 N개의 스토리지 장치들에 기입하는 단계를 포함하고,
k+r=N인 비-일시적 컴퓨터 판독 가능한 매체.18. The method of claim 17,
Wherein the selected reliability mechanism comprises a splitting,
Wherein the step of storing the data comprises:
Selecting a KV value;
Dividing the KV value into k (where k is an integer) objects of the same size;
Generating r (where r is an integer) parity objects from the k equal-sized objects;
Computing a hash for hashing the key corresponding to the selected KV value;
Selecting a primary device on which the KV value is to be located among the N storage devices based on the hash; And
Writing the k number of identical sized objects and each of the r parity objects to the N storage devices in a sequential order starting from the main device,
k + r = N. < / RTI >
Applications Claiming Priority (10)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/876,028 | 2018-01-19 | ||
US15/876,028 US10795760B2 (en) | 2017-03-20 | 2018-01-19 | Key value SSD |
US201862635311P | 2018-02-26 | 2018-02-26 | |
US62/635,311 | 2018-02-26 | ||
US15/967,302 US10552062B2 (en) | 2017-03-20 | 2018-04-30 | System and method for storing very large key value objects |
US15/967,302 | 2018-04-30 | ||
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 true KR20190088874A (en) | 2019-07-29 |
KR102663422B1 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 (5)
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 |
US8504535B1 (en) * | 2010-12-20 | 2013-08-06 | Amazon Technologies, Inc. | Erasure coding and redundant replication |
US20140219003A1 (en) * | 2013-02-07 | 2014-08-07 | Seagate Technology Llc | Temperature Based Logic Profile for Variable Resistance Memory Cells |
US8949180B1 (en) * | 2012-06-28 | 2015-02-03 | Emc International Company | Replicating key-value pairs in a continuous data protection system |
US20170177266A1 (en) * | 2015-12-21 | 2017-06-22 | Quantum Corporation | Data aware deduplication object storage (dados) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7533330B2 (en) * | 2005-06-27 | 2009-05-12 | Seagate Technology Llc | Redundancy for storage data structures |
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 |
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 (5)
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 |
US8504535B1 (en) * | 2010-12-20 | 2013-08-06 | Amazon Technologies, Inc. | Erasure coding and redundant replication |
US8949180B1 (en) * | 2012-06-28 | 2015-02-03 | Emc International Company | Replicating key-value pairs in a continuous data protection system |
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 |
---|---|
JP7171452B2 (en) | 2022-11-15 |
JP2019128959A (en) | 2019-08-01 |
CN110058806A (en) | 2019-07-26 |
KR102663422B1 (en) | 2024-05-07 |
DE102018131523A1 (en) | 2019-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11947423B2 (en) | Data reconstruction in distributed storage systems | |
KR101758544B1 (en) | Synchronous mirroring in non-volatile memory systems | |
US11275762B2 (en) | System and method for hybrid data reliability for object storage devices | |
US20170075741A1 (en) | Prioritizing Data Reconstruction in Distributed Storage Systems | |
CN107851061B (en) | Hardware assisted transaction commit in remote memory | |
JP6947670B2 (en) | A method of storing and reading an object in a virtual device including a plurality of memory devices using a virtual device hierarchy, and a storage device using this method. | |
KR102460568B1 (en) | System and method for storing large key value objects | |
WO2001013236A1 (en) | Object oriented fault tolerance | |
WO2019001521A1 (en) | Data storage method, storage device, client and system | |
CN107357689B (en) | Fault processing method of storage node and distributed storage system | |
US20190114094A1 (en) | System and method for storing very large key value objects | |
US8195877B2 (en) | Changing the redundancy protection for data associated with a file | |
US11314594B2 (en) | Method, device and computer program product for recovering data | |
CN113552998B (en) | Method, apparatus and program product for managing stripes in a storage system | |
EP4170499A1 (en) | Data storage method, storage system, storage device, and storage medium | |
KR102663422B1 (en) | A system and method for hybrid data reliability for object storage devices | |
US11687272B2 (en) | Method and system for dynamic topology-aware space allocation in a distributed system | |
US10747610B2 (en) | Leveraging distributed metadata to achieve file specific data scrubbing | |
Zhou et al. | Darm: A deduplication-aware redundancy management approach for reliable-enhanced storage systems | |
US9612913B2 (en) | System, method and a non-transitory computer readable medium for protecting snapshots | |
Lu et al. | Fault isolation and quick recovery in isolation file systems | |
Schwarz et al. | Reliability Stripe Coagulation in Two Failure Tolerant Storage Arrays | |
WO2015161140A1 (en) | System and method for fault-tolerant block data storage | |
Raza et al. | Sext3: The Secure Ext3 | |
Koob | File memory for extended storage disk caches |
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 |