KR20220077208A - Storage device with data deduplication, operation method of storage device, and operation method of storage server - Google Patents
Storage device with data deduplication, operation method of storage device, and operation method of storage server Download PDFInfo
- Publication number
- KR20220077208A KR20220077208A KR1020200164583A KR20200164583A KR20220077208A KR 20220077208 A KR20220077208 A KR 20220077208A KR 1020200164583 A KR1020200164583 A KR 1020200164583A KR 20200164583 A KR20200164583 A KR 20200164583A KR 20220077208 A KR20220077208 A KR 20220077208A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- hash value
- hash
- storage
- storage node
- Prior art date
Links
Images
Classifications
-
- 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/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- 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
- 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/0766—Error or fault reporting or storing
- G06F11/0772—Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
-
- 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/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
- G06F12/1018—Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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]
Abstract
본 발명의 실시 예에 따른 스토리지 장치는 데이터 중복 제거를 지원할 수 있다. 스토리지 장치의 동작 방법은 외부 장치로부터 제1 객체 식별자 및 제1 데이터를 포함하는 제1 쓰기 요청을 수신하는 단계, 제1 데이터에 대한 해시 연산을 수행하여 제1 해시 값을 생성하는 단계, 제1 해시 값에 대응하는 제1 엔트리가 제1 테이블에 존재하는 경우, 제1 데이터에 대한 저장 동작 없이, 제1 엔트리에 포함된 제1 참조 카운트를 증가시키는 단계를 포함하고, 제1 테이블은 복수의 엔트리들을 포함하고, 복수의 엔트리들 각각은 데이터에 대한 해시 값, 데이터에 대응하는 물리 어드레스, 및 데이터에 대한 참조 카운트에 대한 정보를 포함한다.The storage device according to an embodiment of the present invention may support data deduplication. The method of operating a storage device includes receiving a first write request including a first object identifier and first data from an external device, performing a hash operation on the first data to generate a first hash value, a first incrementing a first reference count included in the first entry without a storage operation on the first data when a first entry corresponding to the hash value exists in the first table, wherein the first table includes a plurality of entries, wherein each of the plurality of entries includes information about a hash value for the data, a physical address corresponding to the data, and a reference count for the data.
Description
본 발명은 서버 시스템에 관한 것으로, 좀 더 상세하게는 데이터 중복 제거 기능을 갖는 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 서버의 동작 방법에 관한 것이다. The present invention relates to a server system, and more particularly, to a storage device having a data deduplication function, a method of operating the storage device, and a method of operating a storage server.
서버 시스템은 다양한 컴퓨팅 서버들이 네트워크를 통해 연결됨으로써, 다양한 서비스를 제공하는 시스템을 가리킨다. 서버 시스템은 방대한 데이터를 저장하고 관리하는 스토리지 서버를 포함한다. 최근 스토리지 서버에서는, 다양한 사용자들 또는 객체들이 특정 데이터를 참조하는 빈도가 증가하고 있으며, 이러한 데이터 참조 빈도의 증가는 데이터의 중복 저장 횟수를 증가시킨다. 이러한 데이터 중복 저장 횟수의 증가는 스토리지 서버에 포함된 스토리지 장치들의 저장 공간을 감소시키는 문제를 발생시킨다.The server system refers to a system that provides various services by connecting various computing servers through a network. The server system includes a storage server that stores and manages a large amount of data. In recent storage servers, the frequency of referencing specific data by various users or objects is increasing, and the increase in the frequency of data reference increases the number of redundant storage of data. This increase in the number of redundant data storage causes a problem of reducing the storage space of storage devices included in the storage server.
본 발명의 목적은 향상된 성능 및 감소된 비용을 갖는 데이터 중복 제거 기능을 갖는 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 서버의 동작 방법을 제공하는데 있다.SUMMARY OF THE INVENTION It is an object of the present invention to provide a storage device having a data deduplication function having improved performance and reduced cost, a method of operating the storage device, and a method of operating a storage server.
본 발명의 실시 예에 따르면, 스토리지 장치의 동작 방법은 외부 장치로부터 제1 객체 식별자 및 제1 데이터를 포함하는 제1 쓰기 요청을 수신하는 단계; 제1 데이터에 대한 해시 연산을 수행하여 제1 해시 값을 생성하는 단계; 상기 제1 해시 값에 대응하는 제1 엔트리가 제1 테이블에 존재하는 경우, 상기 제1 엔트리가 비어 있다면, 제1 물리 어드레스에 대응하는 영역에 상기 제1 데이터를 저장하고, 상기 제1 엔트리가 상기 제1 해시 값, 상기 제1 물리 어드레스, 및 상기 제1 참조 카운트를 포함하도록 상기 제1 테이블을 갱신하고, 상기 제1 엔트리가 비어있지 않다면, 상기 제1 데이터에 대한 저장 동작 없이, 상기 제1 엔트리에 포함된 제1 참조 카운트를 증가시키는 단계; 및 상기 제1 엔트리가 상기 제1 테이블에서 존재하지 않는 경우, 상기 외부 장치로 에러를 리턴하는 단계를 포함하고, 상기 제1 테이블은 복수의 엔트리들을 포함하고, 상기 복수의 엔트리들 각각은 데이터에 대한 해시 값, 상기 데이터에 대응하는 물리 어드레스, 및 상기 데이터에 대한 참조 카운트에 대한 정보를 포함한다.According to an embodiment of the present invention, a method of operating a storage device includes: receiving a first write request including a first object identifier and first data from an external device; generating a first hash value by performing a hash operation on the first data; When a first entry corresponding to the first hash value exists in the first table, if the first entry is empty, the first data is stored in an area corresponding to a first physical address, and the first entry is updating the first table to include the first hash value, the first physical address, and the first reference count, and if the first entry is not empty, without a storage operation for the first data incrementing a first reference count included in one entry; and returning an error to the external device when the first entry does not exist in the first table, wherein the first table includes a plurality of entries, each of the plurality of entries in data. a hash value for the data, a physical address corresponding to the data, and information on a reference count for the data.
본 발명의 실시 예에 따르면, 복수의 스토리지 장치들 및 상기 복수의 스토리지 장치들을 관리하도록 구성된 스토리지 노드를 포함하는 스토리지 서버의 동작 방법은 상기 스토리지 노드에 의해, 외부 클라이언트 서버로부터 제1 객체 식별자 및 제1 데이터를 포함하는 제1 쓰기 요청을 수신하는 단계; 상기 스토리지 노드에 의해, 상기 제1 데이터에 대한 해시 연산을 수행하여, 제1 해시 값을 생성하는 단계; 상기 스토리지 노드에 의해, 상기 복수의 스토리지 장치들 각각에 할당된 복수의 해시 범위들 중 상기 제1 해시 값이 포함된 제1 해시 범위를 판별하는 단계; 상기 스토리지 노드에 의해, 상기 복수의 스토리지 장치들 중 상기 제1 해시 범위에 대응하는 제1 스토리지 장치로 상기 제1 객체 식별자, 상기 제1 데이터, 및 상기 제1 해시 값을 포함하는 제2 쓰기 요청을 전송하는 단계; 상기 제1 스토리지 장치에 의해, 상기 제2 쓰기 요청에 포함된 상기 제1 데이터에 대한 해시 연산을 수행하여, 제2 해시 값을 생성하는 단계; 상기 제1 해시 값 및 상기 제2 해시 값이 동일한 경우, 상기 제1 스토리지 장치에 의해, 상기 제1 해시 값에 대응하는 제1 엔트리가 제1 테이블에 존재하는 것에 응답하여, 상기 제1 데이터에 대한 저장 동작 없이, 상기 제1 엔트리의 제1 참조 카운트를 증가시키는 단계; 상기 제1 스토리지 장치에 의해, 상기 스토리지 노드로 상기 제2 쓰기 요청에 대한 완료 응답을 전송하는 단계; 상기 스토리지 노드에 의해, 상기 제1 객체 식별자 및 상기 제1 해시 값을 기반으로 제2 테이블을 갱신하는 단계를 포함하고, 상기 제1 테이블은 복수의 엔트리들을 포함하고, 상기 복수의 엔트리들 각각은 데이터에 대한 해시 값, 상기 데이터에 대응하는 물리 어드레스, 및 상기 데이터에 대한 참조 카운트에 대한 정보를 포함하고, 상기 제2 테이블은 복수의 객체 식별자들 및 대응하는 해시 값에 대한 정보를 포함한다.According to an embodiment of the present invention, a method of operating a storage server including a plurality of storage devices and a storage node configured to manage the plurality of storage devices includes, by the storage node, a first object identifier and a first object identifier from an external client server. receiving a first write request including 1 data; generating, by the storage node, a first hash value by performing a hash operation on the first data; determining, by the storage node, a first hash range including the first hash value from among a plurality of hash ranges allocated to each of the plurality of storage devices; A second write request including the first object identifier, the first data, and the first hash value to a first storage device corresponding to the first hash range among the plurality of storage devices by the storage node sending a; generating, by the first storage device, a second hash value by performing a hash operation on the first data included in the second write request; When the first hash value and the second hash value are the same, in response to the first entry corresponding to the first hash value being present in the first table, the first data is stored by the first storage device. incrementing a first reference count of the first entry without a store operation for the first entry; transmitting, by the first storage device, a completion response to the second write request to the storage node; updating, by the storage node, a second table based on the first object identifier and the first hash value, the first table comprising a plurality of entries, each of the plurality of entries comprising: It includes information about a hash value for data, a physical address corresponding to the data, and a reference count for the data, and the second table includes information on a plurality of object identifiers and corresponding hash values.
본 발명의 실시 예에 따르면, 스토리지 장치는 불휘발성 메모리; 및 상기 불휘발성 메모리를 제어하도록 구성된 스토리지 컨트롤러를 포함하고, 상기 스토리지 컨트롤러는: 제1 테이블을 저장하도록 구성된 메모리; 외부 장치로부터 수신된 제1 데이터에 대한 해시 연산을 수행하여 제1 해시 값을 생성하도록 구성된 해시 모듈; 및 상기 제1 테이블에서 상기 제1 해시 값에 대응하는 제1 엔트리를 검색하고, 상기 검색 결과를 기반으로 상기 제1 데이터를 상기 불휘발성 메모리에 선택적으로 저장하도록 구성된 중복 제거 관리자를 포함하고, 상기 제1 엔트리가 상기 제1 테이블에 포함된 경우, 상기 중복 제거 관리자는 상기 제1 데이터를 상기 불휘발성 메모리에 저장하는 것 없이, 상기 제1 엔트리의 제1 참조 카운트를 증가시키고, 상기 제1 엔트리가 상기 제1 테이블에 포함되지 않은 경우, 상기 중복 제거 관리자는 상기 제1 데이터를 상기 불휘발성 메모리의 제1 물리 어드레스에 대응하는 영역에 저장하고, 상기 제1 해시 값, 상기 제1 물리 어드레스, 및 상기 제1 참조 카운트를 포함하는 상기 제1 엔트리를 상기 제1 테이블에 추가하도록 구성된다.According to an embodiment of the present invention, a storage device may include a nonvolatile memory; and a storage controller configured to control the nonvolatile memory, the storage controller comprising: a memory configured to store a first table; a hash module configured to generate a first hash value by performing a hash operation on first data received from an external device; and a deduplication manager configured to search the first table for a first entry corresponding to the first hash value and selectively store the first data in the nonvolatile memory based on the search result, wherein the When a first entry is included in the first table, the deduplication manager increments a first reference count of the first entry without storing the first data in the nonvolatile memory, and the first entry is not included in the first table, the deduplication manager stores the first data in an area corresponding to a first physical address of the nonvolatile memory, the first hash value, the first physical address, and add the first entry including the first reference count to the first table.
본 발명에 따르면, 향상된 성능 및 감소된 비용을 갖는 데이터 중복 제거 기능을 갖는 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 서버의 동작 방법이 제공된다.According to the present invention, a storage device having a data deduplication function having improved performance and reduced cost, a method of operating the storage device, and a method of operating a storage server are provided.
도 1은 본 발명의 실시 예에 따른 서버 시스템을 예시적으로 보여주는 블록도이다.
도 2는 도 1의 스토리지 노드를 예시적으로 보여주는 블록도이다.
도 3은 도 1의 복수의 스토리지 장치들 중 하나의 스토리지 장치를 예시적으로 보여주는 블록도이다.
도 4는 도 1의 스토리지 서버의 동작을 예시적으로 보여주는 순서도이다.
도 5는 도 1의 스토리지 장치에서 관리되는 해시-대-물리 테이블을 설명하기 위한 도면이다.
도 6은 도 1의 서버 시스템의 동작을 예시적으로 보여주는 순서도이다.
도 7 및 도 8은 도 6의 순서도에 따른 동작을 설명하기 위한 예시적인 도면들이다.
도 9는 도 1의 서버 시스템의 동작을 예시적으로 보여주는 순서도이다.
도 10은 도 9의 순서도에 따른 읽기 동작을 설명하기 위한 도면이다.
도 11은 도 1의 서버 시스템의 동작을 예시적으로 보여주는 순서도이다.
도 12는 도 11의 순서도에 따른 삭제 동작을 설명하기 위한 도면이다.
도 13은 도 1의 스토리지 장치의 동작을 예시적으로 보여주는 블록도이다.
도 14는 도 1의 서버 시스템의 동작을 예시적으로 보여주는 순서도이다.
도 15는 도 14의 순서도에 따른 동작을 설명하기 위한 도면이다.
도 16은 도 1의 서버 시스템의 동작을 예시적으로 보여주는 순서도이다.
도 17은 도 1의 서버 시스템의 동작을 예시적으로 보여주는 블록도이다.
도 18 및 도 19는 도 16 및 도 17을 참조하여 설명된 데이터 분할의 예시를 보여주는 도면들이다.
도 20은 본 발명의 실시 예에 따른 서버 시스템을 예시적으로 보여주는 도면이다.
도 21은 도 20의 서버 시스템의 각 스토리지 노드에서 관리되는 해시 범위를 설명하기 위한 도면이다.
도 22는 도 20의 서버 시스템의 동작을 예시적으로 보여주는 순서도이다.
도 23은 도 20의 서버 시스템의 동작을 예시적으로 보여주는 순서도이다.
도 24는 본 발명의 실시 예에 따른 스토리지 장치가 적용된 데이터 센터를 예시적으로 보여주는 블록도이다.1 is a block diagram exemplarily showing a server system according to an embodiment of the present invention.
FIG. 2 is a block diagram exemplarily illustrating the storage node of FIG. 1 .
FIG. 3 is a block diagram exemplarily illustrating one storage device among a plurality of storage devices of FIG. 1 .
4 is a flowchart exemplarily illustrating an operation of the storage server of FIG. 1 .
FIG. 5 is a diagram for explaining a hash-to-physical table managed in the storage device of FIG. 1 .
6 is a flowchart illustrating an operation of the server system of FIG. 1 .
7 and 8 are exemplary views for explaining an operation according to the flowchart of FIG. 6 .
9 is a flowchart illustrating an operation of the server system of FIG. 1 .
FIG. 10 is a diagram for explaining a read operation according to the flowchart of FIG. 9 .
11 is a flowchart exemplarily illustrating an operation of the server system of FIG. 1 .
12 is a diagram for explaining a deletion operation according to the flowchart of FIG. 11 .
13 is a block diagram exemplarily illustrating an operation of the storage device of FIG. 1 .
14 is a flowchart exemplarily illustrating an operation of the server system of FIG. 1 .
15 is a diagram for explaining an operation according to the flowchart of FIG. 14 .
16 is a flowchart illustrating an operation of the server system of FIG. 1 .
17 is a block diagram exemplarily illustrating an operation of the server system of FIG. 1 .
18 and 19 are diagrams illustrating examples of data division described with reference to FIGS. 16 and 17 .
20 is a diagram exemplarily showing a server system according to an embodiment of the present invention.
FIG. 21 is a diagram for explaining a hash range managed by each storage node of the server system of FIG. 20 .
22 is a flowchart illustrating an operation of the server system of FIG. 20 .
23 is a flowchart illustrating an operation of the server system of FIG. 20 .
24 is a block diagram exemplarily illustrating a data center to which a storage device according to an embodiment of the present invention is applied.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.Hereinafter, embodiments of the present invention will be described clearly and in detail to the extent that those skilled in the art can easily practice the present invention.
이하에서, 설명의 편의를 위해, 특정 실시 예들이 구분되어 설명되나, 본 발명의 범위가 이에 한정되는 것은 아니며, 다양한 실시 예들이 서로 결합되거나 또는 하나의 실시 예의 일부분이 다른 실시 예의 일 부분과 결합될 수 있음이 이해될 것이다.Hereinafter, for convenience of description, specific embodiments are separately described, but the scope of the present invention is not limited thereto, and various embodiments are combined with each other or a part of one embodiment is combined with a part of another embodiment. It will be understood that it can be
도 1은 본 발명의 실시 예에 따른 서버 시스템을 예시적으로 보여주는 블록도이다. 도 1을 참조하면, 서버 시스템(100)은 클라이언트 서버(101) 및 스토리지 서버(102)를 포함할 수 있다. 서버 시스템(100)은 다양한 데이터를 유지 관리하고, 다양한 데이터에 대한 다양한 서비스를 제공하는 데이터 센서 또는 데이터 스토리지 센터일 수 있다. 서버 시스템(100)은 검색 엔진 또는 데이터 베이스 운용을 위한 시스템일 수 있으며, 다양한 기관에서 사용되는 컴퓨팅 시스템일 수 있다. 서버 시스템(100)은 클라우드 서비스 또는 On-premise 서비스를 제공하는 스토리지 시스템일 수 있다.1 is a block diagram exemplarily showing a server system according to an embodiment of the present invention. Referring to FIG. 1 , a
클라이언트 서버(101)는 다양한 데이터에 대한 다양한 서비스를 사용하는 사용자 또는 사용자의 단말기 또는 사용자의 컴퓨팅 시스템을 가리킬 수 있다. 클라이언트 서버(101)는 스토리지 서버(102)에 데이터를 저장하거나 또는 스토리지 서버(102)에 저장된 데이터를 읽을 수 있다.The
스토리지 서버(102)는 클라이언트 서버(101)의 요청에 따라, 데이터를 저장하거나 또는 저장된 데이터를 클라이언트 서버(101)로 전송할 수 있다. 예시적인 실시 예에서, 클라이언트 서버(101) 및 스토리지 서버(102)는 네트워크(미도시)를 통해 통신할 수 있다.The
스토리지 서버(102)는 스토리지 노드(110) 및 복수의 스토리지 장치들(120, 130)을 포함할 수 있다. 스토리지 노드(110)는 스토리지 서버(102)에 포함된 스토리지 장치들(120, 130)를 관리하도록 구성될 수 있다. 복수의 스토리지 장치들(120, 130) 각각은 스토리지 노드(110)의 제어에 따라 데이터를 저장하거나 또는 저장된 데이터를 출력할 수 있다. 복수의 스토리지 장치들(120, 130) 각각은 SSD(solid state drive)와 같은 대용량 저장 매체일 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 스토리지 노드(110) 및 복수의 스토리지 장치들(120, 130) 각각은 객체-기반 인터페이스를 통해 서로 통신할 수 있다. 예를 들어, 객체-기반 인터페이스는 종래의 블록-기반 인터페이스와 달리, 객체에 대한 정보를 기반으로 데이터를 관리하는 인터페이스 타입을 가리킬 수 있다. 예시적인 실시 예에서, 스토리지 노드(110)는 스토리지 서버(102)에 포함된 서버 컨트롤러를 가리킬 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다. The
스토리지 서버(102)는 데이터에 대한 중복 제거(deduplication) 기능을 제공할 수 있다. 예를 들어, 클라이언트 서버(101) 상에서, 복수의 객체들(Objects)이 구동될 수 있다. 예시적인 실시 예에서, 객체는 스토리지 서버(102)에 저장된 데이터를 관리하기 위한 정보를 가리킬 수 있다. 예를 들어, 하나의 객체는 하나의 파일을 지칭할 수 있다. 예시적인 실시 예에서, 복수의 객체들 각각은 서로 다른 가상 머신 또는 서로 다른 애플리케이션 상에서 발생할 수 있으며, 복수의 객체들 각각은 서로 다른 파일에 대응될 수 있으나, 복수의 객체들 중 일부는 서로 동일한 파일에 대응될 수 있다.The
좀 더 상세한 예로서, 제1 객체 및 제2 객체가 제2 파일과 대응되는 경우, 스토리지 서버(102)는 제1 객체에 대응하는 제1 파일 및 제2 객체에 대응하는 제2 파일을 저장할 것이다. 이 때, 제1 파일 및 제2 파일이 서로 동일한 경우, 2개의 동일한 파일이 저장된다면, 스토리지 서버(102)의 저장 공간이 낭비될 것이다. 따라서, 본 발명의 실시 예에 따른 스토리지 서버(102)는 동일한 파일에 대응하는 복수의 객체들에 대하여, 동일한 파일을 1개만 저장함으로써, 저장 공간의 낭비를 방지할 수 있다. 이러한 기술적 구성은 중복 제거(deduplication) 기능이라 불린다.As a more detailed example, when the first object and the second object correspond to the second file, the
스토리지 노드(110)는 객체-대-해시 테이블(O2H Table)을 포함할 수 있다. 객체-대-해시 테이블(O2H)은 객체 식별자에 대한 정보 및 해시 값 사이의 매핑 정보를 가리킬 수 있다. 복수의 스토리지 장치들(120, 130) 각각은 해시-대-물리 어드레스 테이블(H2P Table)을 포함할 수 있다. 해시-대-물리 어드레스 테이블(H2P)은 해시 값에 할당된 물리 어드레스의 정보 및 대응하는 참조 카운트에 대한 정보를 포함할 수 있다. 스토리지 서버(102)는 상술된 객체-대-해시 테이블(O2H) 및 해시-대-물리 어드레스 테이블(H2P)을 기반으로, 상술된 중복 제거 기능을 제공할 수 있다. 본 발명의 실시 예에 따른 중복 제거 기능은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.The
도 2는 도 1의 스토리지 노드를 예시적으로 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 스토리지 노드(110)는 프로세서(111), 메모리(112), 해시 모듈(113), 에러 관리자(114), 네트워크 인터페이스 제어기(115), 호스트 인터페이스 회로(116), 및 객체-대-해시 테이블(O2H)을 포함할 수 있다.FIG. 2 is a block diagram exemplarily illustrating the storage node of FIG. 1 . 1 and 2 , the
프로세서(111)는 스토리지 노드(110)의 제반 동작을 제어할 수 있다. 메모리(112)는 스토리지 노드(110)의 버퍼 메모리, 캐시 메모리, 또는 동작 메모리로서 사용될 수 있다.The
해시 모듈(113)은 데이터에 대한 해시 연산을 수행하여, 데이터에 대응하는 해시 값을 출력하도록 구성될 수 있다. 예를 들어, 클라이언트 서버(101)로부터 제1 객체에 대응하는 제1 데이터에 대한 쓰기 요청에 수신된 경우, 해시 모듈(113)은 제1 데이터에 대한 해시 연산을 수행하여, 제1 해시 값을 출력할 수 있다. 또는 클라이언트 서버(101)로부터 제2 객체에 대응하는 제2 데이터에 대한 쓰기 요청에 수신된 경우, 해시 모듈(113)은 제2 데이터에 대한 해시 연산을 수행하여, 제2 해시 값을 출력할 수 있다. 본 발명의 실시 예에 따르면, 제1 해시 값 및 제2 해시 값이 서로 동일한 것은, 제1 데이터 및 제2 데이터가 서로 동일한 것을 의미할 수 있다. 다시 말해서, 동일한 데이터에 대하여 해시 값이 서로 동일해지도록 해시 모듈의 해시 연산의 파라미터들일 설정될 수 있다.The
에러 관리자(114)는 스토리지 노드(110)의 동작 중에 발생한 다양한 에러들을 관리하도록 구성될 수 있다. 에러 관리자(114)의 동작은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.The
네트워크 인터페이스 제어기(115)는 클라이언트 서버(101)와의 통신을 제공할 수 있다. 예시적인 실시 예에서, 클라이언트 서버(101) 및 스토리지 서버(102)가 이더넷 네트워크를 통해 통신하는 경우, 네트워크 인터페이스 제어기(115)는 TCP/IP 프로토콜에 기반된 통신 요청 또는 통신 패킷을 생성하거나 또는 처리하도록 구성될 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니며, 네트워크 인터페이스 제이거(115)는 다양한 통신 프로토콜을 기반으로 동작할 수 있다.The
호스트 인터페이스 회로(116)는 복수의 스토리지 장치들(120, 130)과의 통신을 제공할 수 있다. 예시적인 실시 예에서, 호스트 인터페이스 회로(116)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스, KV(key-value) 인터페이스 등과 같은 다양한 인터페이스들 중 적어도 하나를 기반으로 복수의 스토리지 장치들(120, 130)과 통신할 수 있다. The
객체-대-해시 테이블(O2H)은 객체 식별자 및 해시 값 사이의 매핑 정보를 포함할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 제1 객체에 대응하는 제1 데이터에 대한 해시 값이 제1 해시 값인 경우, 객체-대-해시 테이블(O2H)은 제1 객체 식별자 및 제1 해시 값 사이의 매핑 정보를 포함할 수 있다. 예시적인 실시 예에서, 객체-대-해시 테이블(O2H)에서 관리되는 정보는 스토리지 서버(102)에 대한 쓰기 동작 또는 소거 동작시 갱신될 수 있다. 객체-대-해시 테이블(O2H)은 버퍼 메모리(112) 또는 별도의 외부 메모리에 저장될 수 있다. The object-to-hash table (O2H) may include mapping information between object identifiers and hash values. For example, as described above, when the hash value for the first data corresponding to the first object is the first hash value, the object-to-hash table O2H is formed between the first object identifier and the first hash value. of mapping information. In an exemplary embodiment, information managed in the object-to-hash table O2H may be updated during a write operation or an erase operation on the
도 3은 도 1의 복수의 스토리지 장치들 중 하나의 스토리지 장치를 예시적으로 보여주는 블록도이다. 설명의 편의를 위해, 도 3을 참조하여 하나의 스토리지 장치(120)가 설명되나, 본 발명의 범위가 이에 한정되는 것은 아니며, 다른 스토리지 장치들 또한 유사한 구조를 가질 수 있다. FIG. 3 is a block diagram exemplarily illustrating one storage device among a plurality of storage devices of FIG. 1 . For convenience of description, one
도 1 및 도 3을 참조하면, 스토리지 장치(120)는 스토리지 컨트롤러(121), 불휘발성 메모리들(122), 및 버퍼 메모리(123)을 포함할 수 있다. 스토리지 컨트롤러(121)는 스토리지 노드(110)로부터 수신된 요청에 응답하여, 불휘발성 메모리들(122)에 데이터를 저장하거나 또는 저장된 데이터를 출력할 수 있다.1 and 3 , the
스토리지 컨트롤러(121)는 프로세서(121a), 메모리(121b), 해시 모듈(121c), 중복 제거 관리자(121d), 플래시 변환 계층(121e), AES 엔진(121f), ECC 엔진(121h), 호스트 인터페이스 회로(121i), 메모리 인터페이스 회로(121j), 및 해시-대-물리 어드레스 테이블(H2P)(이하에서, 설명의 편의를 위해, 해시-대-물리 테이블이라 칭함.)을 포함할 수 있다.The
프로세서(121a)는 스토리지 컨트롤러(121)의 제반 동작을 제어할 수 있다. 메모리(121b)는 스토리지 컨트롤러(121)의 버퍼 메모리, 캐시 메모리, 또는 동작 메모리로서 사용될 수 있다. 해시 모듈(121c)은 데이터에 대한 해시 값을 연산하도록 구성될 수 있다. 예시적인 실시 예에서, 도 3의 스토리지 컨트롤러(120)에 포함된 해시 모듈(121c)은 도 2의 스토리지 노드(110)에 포함된 해시 모듈(113)과 동일한 해시 함수를 사용할 수 있다. 즉, 동일한 데이터에 대한, 해시 모듈들(113, 121c)의 해시 값은 서로 동일할 수 있다. The
중복 제거 관리자(121d)는 스토리지 장치(120)에 저장된 데이터에 대한 중복 제거를 수행하도록 구성될 수 있다. 예를 들어, 중복 제거 관리자(121d)는 해시-대-물리 테이블(H2P)을 기반으로, 서로 다른 객체들에 의해 참조되나 서로 동일한 값을 갖는 데이터를 탐색할 수 있고, 탐색된 데이터에 대하여, 불휘발성 메모리들(122)에 1개의 데이터만 저장할 수 있다. 중복 제거 관리자(121d)의 동작은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.The
플래시 변환 계층(121e)은 불휘발성 메모리들(122)에 대한 다양한 유지 관리 동작을 수행할 수 있다. 예시적인 실시 예에서, 다양한 유지 관리 동작은 불휘발성 메모리들(122)에 대한 웨어 레벨링 동작, 가비지 콜렉션 동작, 배드 블록 관리 동작 등을 포함할 수 있다.The
예시적인 실시 예에서, 본 발명의 실시 예에 따른 플래시 변환 계층(121e)은 종래의 일반적인 논리 어드레스-대-물리 어드레스 사이의 매핑 동작을 수행하지 않을 수 있다.In an exemplary embodiment, the
예를 들어, 데이터가 저장되는 물리 어드레스는 해시-대-물리 테이블(H2P) 및 중복 제거 관리자(121d)에 의해 관리될 수 있다. 즉, 중복 제거 관리자(121d)는 데이터에 대한 논리 어드레스 대신에 데이터에 대한 해시 연산의 결과인 해시 값을 기반으로 데이터의 물리 어드레스를 관리할 수 있다. 이 경우, 플래시 변환 계층(121e)에 의한 별도의 논리 어드레스 및 물리 어드레스 사이의 매핑이 불필요할 수 있다.For example, a physical address where data is stored may be managed by a hash-to-physical table (H2P) and a
예시적인 실시 예에서, 본 발명의 실시 예에 따른 해시 값은 종래의 논리 어드레스와 다른 정보이다. 예를 들어, 논리 어드레스는 스토리지 노드(110)에서 스토리지 장치들(120, 130)의 저장 공간을 논리적으로 관리하기 위한 위치 정보를 가리킬 수 있다. 즉, 논리 어드레스는 데이터의 논리적인 저장 위치를 가리키는 정보이다. 반면에, 해시 값은 데이터 자체에 대한 해시 연산을 통해 획득되는 값이며, 데이터의 논리적인 저장 위치를 가리키는 값이 아니다. 좀 더 상세한 예로서, 동일한 값을 제1 데이터 및 제2 데이터가 서로 다른 논리적 저장 위치를 갖는다면, 제1 데이터 및 제2 데이터 각각에 대한 논리 어드레스는 서로 다를 것이다. 반면에, 동일한 값을 제1 데이터 및 제2 데이터가 서로 다른 논리적 저장 위치를 갖더라도, 제1 데이터 및 제2 데이터에 대한 해시 연산의 결과, 즉, 해시 값은 서로 동일할 것이다. 즉, 본 발명에서 사용되는 해시 값은 종래의 논리 어드레스와 다른 특성을 갖는 정보이다.In an exemplary embodiment, the hash value according to an embodiment of the present invention is information different from a conventional logical address. For example, the logical address may indicate location information for logically managing storage spaces of the
AES 엔진(121f)(advanced encryption standard)는 스토리지 컨트롤러(121)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 수행할 수 있다.The
ECC 엔진(121h)은 불휘발성 메모리들(122)로부터 독출되는 독출 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 예를 들어, ECC 엔진(121h)은 불휘발성 메모리들(122)에 저장될 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 생성된 패리티 비트들은 데이터와 함께 불휘발성 메모리들(122)에 저장될 수 있다. 불휘발성 메모리들(122)로부터의 데이터 독출 시, ECC 엔진(121h)은 독출 데이터와 함께 불휘발성 메모리들(122)로부터 독출되는 패리티 비트들을 이용하여 독출 데이터의 에러를 정정하고, 에러가 정정된 독출 데이터를 출력할 수 있다.The
호스트 인터페이스 회로(121i)는 스토리지 노드(110)와의 통신을 제공할 수 있다. 예시적인 실시 예에서, 호스트 인터페이스 회로(121i)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스, KV(key-value) 인터페이스 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 기반으로 구현될 수 있다.The
메모리 인터페이스 회로(121j)는 복수의 불휘발성 메모리들(122)과의 통신을 제공할 수 있다. 메모리 인터페이스 회로(121j)는 토글 인터페이스(toggle interface) 또는 오픈-낸드 플래시 인터페이스(ONFI; open nand flash interface) 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 기반으로 동작할 수 있다.The
버퍼 메모리(123)는 스토리지 장치(120)가 동작하는데 필요한 다양한 정보를 저장하도록 구성될 수 있다. 예를 들어, 버퍼 메모리(123)는 해시-대-물리 테이블(H2P)과 관련된 정보를 저장할 수 있다. 또는 버퍼 메모리(123)는 중복 제거 관리자(121d), 플래시 변환 계층(121e) 등과 같은 소프트웨어 구성들을 저장하도록 구성될 수 있다. 버퍼 메모리(123)에 저장된 소프트웨어 구성들은 메모리(121b)로 로드되어 프로세서(121a)에 의해 실행될 수 있다.The buffer memory 123 may be configured to store various types of information required for the
도 4는 도 1의 스토리지 서버의 동작을 예시적으로 보여주는 순서도이다. 도 1 및 도 4를 참조하면, S11 단계에서, 스토리지 노드(110)는 제1 스토리지 장치(120)로부터 제1 장치 크기에 대한 정보를 수신할 수 있다. 제1 장치 크기에 대한 정보는 제1 스토리지 장치(110)의 가용한 저장 공간에 대한 정보를 가리킬 수 있다. S12 단계에서, 스토리지 노드(110)는 제2 스토리지 장치(130)로부터 제2 장치 크기에 대한 정보를 수신할 수 있다. 제2 장치 크기에 대한 정보는 제2 스토리지 장치(130)의 가용한 저장 공간에 대한 정보를 가리킬 수 있다. 4 is a flowchart exemplarily illustrating an operation of the storage server of FIG. 1 . 1 and 4 , in step S11 , the
S13 단계에서, 스토리지 노드(110)는 제1 및 제2 스토리지 장치들(120, 130)로 해시 범위를 각각 할당할 수 있다. 예를 들어, 스토리지 노드(110)는 제1 장치 크기 정보에 대응하는 범위를 갖는 제1 해시 범위를 제1 스토리지 장치(120)로 할당하고, 제2 장치 크기 정보에 대응하는 범위를 갖는 제2 해시 범위를 제2 스토리지 장치(130)로 할당할 수 있다. In step S13 , the
S14 단계에서, 스토리지 노드(110)는 제1 해시 범위에 대한 정보를 제1 스토리지 장치(120)로 전송할 수 있다. S15 단계에서, 제1 스토리지 장치(120)는 수신된 제1 해시 정보를 기반으로 제1 해시-대-물리 테이블을 생성할 수 있다. In step S14 , the
S16 단계에서, 스토리지 노드(110)는 제2 해시 범위에 대한 정보를 제2 스토리지 장치(130)로 전송할 수 있다. S17 단계에서, 제2 스토리지 장치(130)는 수신된 제2 해시 정보를 기반으로 제2 해시-대-물리 테이블을 생성할 수 있다. In step S16 , the
예시적인 실시 예에서, 제1 해시 범위 및 제2 해시 범위는 서로 중첩되지 않을 수 있다. 즉, 스토리지 노드(110)는, 제1 해시 범위에 포함된 해시 값을 갖는 데이터는 제1 스토리지 장치(120)에 저장되고, 제2 해시 범위에 포함된 해시 값을 갖는 데이터는 제2 스토리지 장치(130)에 저장되도록, 데이터를 관리할 수 있다.In an exemplary embodiment, the first hash range and the second hash range may not overlap each other. That is, in the
예시적인 실시 예에서, 앞서 설명된 바와 같이, 본 발명에 따른 해시 값은 종래의 논리 어드레스와 다른 특성을 갖는 정보이며, 이는 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다. In an exemplary embodiment, as described above, the hash value according to the present invention is information having a characteristic different from that of a conventional logical address, and since this has been described above, a detailed description thereof will be omitted.
도 5는 도 1의 스토리지 장치에서 관리되는 해시-대-물리 테이블을 설명하기 위한 도면이다. 이하에서, 설명의 편의를 위해, 스토리지 노드(110) 및 제1 스토리지 장치(120) 사이의 통신을 기준으로 본 발명의 실시 예들이 설명된다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다. 도 1 및 도 5를 참조하면, 해시-대-물리 테이블(H2P)은 복수의 해시 값들(H1~Hn) 및 복수의 물리 어드레스들(PA1~PAn) 사이의 매핑 정보, 및 대응하는 참조 카운트들(RC1~RCn)에 대한 정보를 포함할 수 있다.FIG. 5 is a diagram for explaining a hash-to-physical table managed in the storage device of FIG. 1 . Hereinafter, for convenience of description, embodiments of the present invention will be described based on communication between the
예를 들어, 제1 데이터에 대한 해시 값인 제1 해시 값(H1)인 경우, 제1 데이터(H1)는 제1 물리 어드레스(PA1)에 대응하는 영역에 저장될 수 있다. 이 경우, 제1 참조 카운트(RC1)는 제1 해시 값(H1)에 대응하는 제1 데이터를 참조하는 객체들의 개수를 가리킬 수 있다. 즉, 제1 참조 카운트(RC1)가 "a"인 것은, 제1 해시 값(H1)에 대응하는 제1 데이터 또는 제1 물리 어드레스(PA1)의 영역에 저장된 제1 데이터를 참조하는 객체들의 개수가 "a"개인 것을 의미할 수 있다.For example, in the case of a first hash value H1 that is a hash value for the first data, the first data H1 may be stored in an area corresponding to the first physical address PA1 . In this case, the first reference count RC1 may indicate the number of objects referring to the first data corresponding to the first hash value H1 . That is, when the first reference count RC1 is “a”, the number of objects referencing the first data corresponding to the first hash value H1 or the first data stored in the area of the first physical address PA1 . may mean "a" is an individual.
예시적인 실시 예에서, 해시 값에 대응하는 데이터가 저장되지 않은 경우, 해시-대-물리 테이블(H2P)에서 대응하는 엔트리는 비어 있을 수 있다. 예를 들어, 제3 해시 값(H3)에 대응하는 데이터가 스토리지 장치(120)에 아직 저장되지 않은 경우, 제3 해시 값(H3)에 대응하는 엔트리는 비어 있을 수 있다.In an exemplary embodiment, when data corresponding to a hash value is not stored, a corresponding entry in the hash-to-physical table (H2P) may be empty. For example, when data corresponding to the third hash value H3 is not yet stored in the
예시적인 실시 예에서, 도 5에 도시된 해시-대-물리 테이블(H2P)이 제1 스토리지 장치(120)에 의해 관리되는 경우, 해시-대-물리 테이블(H2P)에 포함된 복수의 해시 값들(H1~Hn)은 스토리지 노드(110)에 의해 할당된 제1 해시 범위에 포함될 수 있다. In an exemplary embodiment, when the hash-to-physical table H2P shown in FIG. 5 is managed by the
도 6은 도 1의 서버 시스템의 동작을 예시적으로 보여주는 순서도이다. 본 발명의 기술적 사상을 용이하게 설명하기 위해, 이하에서, 서버 시스템(100)의 클라이언트 서버(101), 스토리지 노드(110), 및 제1 스토리지 장치(120)를 기준으로 본 발명의 실시 예들이 설명된다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다. 예시적인 실시 예에서, 도 6을 참조하여, 특정 개체로부터의 데이터가 스토리지 장치에 저장되는 동작(즉, 쓰기 동작)이 설명된다. 6 is a flowchart illustrating an operation of the server system of FIG. 1 . In order to easily explain the technical idea of the present invention, hereinafter, embodiments of the present invention are described based on the
도 1 및 도 6을 참조하면, S101 단계에서, 클라이언트 서버(101)는 스토리지 서버(110)로 쓰기 요청을 전송할 수 있다. 예시적인 실시 예에서, 쓰기 요청은 객체 식별자(ID), 데이터의 길이(len), 및 데이터(DT)를 포함하는 쓰기 요청(PUT)일 수 있다. 1 and 6 , in step S101 , the
S102 단계에서, 스토리지 노드(110)는 해시 값을 연산할 수 있다. 예를 들어, 스토리지 노드(110)는 클라이언트 서버(101)로부터 수신된 데이터(DT)에 대한 해시 연산을 수행하여 해시 값(H)을 연산할 수 있다. 예시적인 실시 예에서, 스토리지 노드(110)의 해시 연산은 도 2를 참조하여 설명된 해시 모듈(113)에 의해 수행될 수 있다. In step S102, the
S103 단계에서, 스토리지 노드(110)는 쓰기 요청을 제1 스토리지 장치(120)로 전달할 수 있다. 예시적인 실시 예에서, 제1 스토리지 장치(120)로 전달되는 쓰기 요청은 객체 식별자(ID), 데이터의 길이(len), 및 데이터(DT)를 포함하는 쓰기 요청(PUTa)일 수 있다.In step S103 , the
예시적인 실시 예에서, 비록 도면에 명확히 도시되지는 않았으나, 스토리지 노드(110)는 연산된 해시 값(H)을 기반으로 쓰기 요청이 전달될 스토리지 장치를 선택할 수 있다. 예를 들어, 도 4를 참조하여 설명된 바와 같이, 스토리지 노드(110)는 복수의 스토리지 장치들(120, 130) 각각에 대한 해시 범위를 할당할 수 있다. 스토리지 노드(110)는 연산된 해시 값이 포함된 해시 범위에 대응하는 스토리지 장치로 쓰기 요청을 전달할 수 있다. 예를 들어, 연산된 해시 값(H)이 제1 스토리지 장치(120)로 할당된 제1 해시 범위에 포함되는 경우, 쓰기 요청은 제1 스토리지 장치(120)로 전달되고, 연산된 해시 값(H)이 제2 스토리지 장치(120)로 할당된 제2 해시 범위에 포함되는 경우, 쓰기 요청은 제2 스토리지 장치(130)로 전달될 수 있다. In an exemplary embodiment, although not clearly shown in the drawing, the
S104 단계에서, 제1 스토리지 장치(120)는 수신된 데이터(DT)에 대한 해시 연산을 통해 해시 값(H)을 연산할 수 있다. 예시적인 실시 예에서, 제1 스토리지 장치(120)의 해시 연산은 도 3을 참조하여 설명된 해시 모듈(121c)에 의해 수행될 수 있다. In operation S104 , the
S105 단계에서, 제1 스토리지 장치(120)는 연산된 해시 값(H')과 수신된 해시 값(H)을 비교할 수 있다. 연산된 해시 값(H')과 수신된 해시 값(H)이 서로 다른 것은, 수신된 정보에 에러가 포함되어 있음을 의미할 수 있다. 이 경우, 즉, 연산된 해시 값(H')과 수신된 해시 값(H)이 서로 다른 경우, S106 단계에서, 제1 스토리지 장치(120)는 에러 정보를 스토리지 노드(110)로 리턴할 수 있다.In operation S105 , the
S107 단계에서, 스토리지 노드(110)는 에러 관리를 수행할 수 있다. 예시적인 실시 예에서, S107 단계에서의 에러 관리는 데이터(DT)에 대한 해시 연산을 재수행하는 동작, 제1 스토리지 장치(120)로 쓰기 요청(즉, PUTa[ID, len, DT, H])을 다시 전송하는 동작 등을 포함할 수 있다. 또는, 에러 관리는 클라이언트 서버(101)로 에러 정보를 리턴하는 동작을 포함할 수 있다. 상술된 에러 관리는 도 2를 참조하여 설명된 에러 관리자(114)에 의해 수행될 수 있으며, 상술된 에러 관리는 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다.In step S107 , the
연산된 해시 값(H')과 수신된 해시 값(H)이 서로 동일한 경우, S108 단계에서, 제1 스토리지 장치(120)는 해시-대-물리 테이블(H2P)에서, 수신된 해시 값(H)에 대응하는 엔트리가 비어 있는지 탐색할 수 있다.When the calculated hash value (H') and the received hash value (H) are equal to each other, in step S108 , the
해시-대-물리 테이블(H2P)에서, 수신된 해시 값(H)에 대응하는 엔트리가 비어 있다는 것은, 수신된 해시 값(H)에 대응하는 데이터(DT)가 저장되어 있지 않음을 의미할 수 있다. 이 경우, 즉, 해시-대-물리 테이블(H2P)에서, 수신된 해시 값(H)에 대응하는 엔트리가 비어 있는 경우, S109 단계에서, 제1 스토리지 장치(120)는 물리 어드레스(PA)를 할당할 수 있다. S110 단계에서, 제1 스토리지 장치(120)는 할당된 물리 어드레스(PA)에 대응하는 영역(즉, 불휘발성 메모리들(122)의 저장 영역)에 데이터(DT)를 기입할 수 있다. S111 단계에서, 제1 스토리지 장치(120)는 해시-대-물리 테이블(H2P)을 갱신할 수 있다. S112 단계에서, 제1 스토리지 장치(120)는 대응하는 참조 카운트(RC)를 증가시킬 수 있다.In the hash-to-physical table (H2P), when the entry corresponding to the received hash value H is empty, it may mean that the data DT corresponding to the received hash value H is not stored. have. In this case, that is, when an entry corresponding to the received hash value H in the hash-to-physical table H2P is empty, in step S109 , the
예를 들어, 상술된 바와 같이, 수신된 해시 값(H)에 대응하는 엔트리가 비어 있다는 것은, 대응하는 데이터(DT)가 저장되어 있지 않음을 의미하므로, 대응하는 데이터(DT)가 불휘발성 메모리들(122)에 저장되어야 할 것이다. 따라서, 제1 스토리지 장치(120)는 물리 어드레스(PA)를 할당하고, 할당된 물리 어드레스(PA)에 대응하는 영역에 데이터(DT)를 저장할 수 있다. 이후에, 제1 스토리지 장치(120)는 해시-대-물리 테이블(PA)에서, 수신된 해시 값(H)에 대한 물리 어드레스를 할당된 물리 어드레스로 갱신할 수 있다. 이후에, 해시 값(H)에 대응하는 데이터(DT)를 참조하는 객체가 "1"개이므로, 대응하는 참조 카운트(RC)를 "1"만큼 증가시킬 수 있다.For example, as described above, when the entry corresponding to the received hash value H is empty, it means that the corresponding data DT is not stored, so that the corresponding data DT is stored in the nonvolatile memory. It will have to be stored in the fields (122). Accordingly, the
해시-대-물리 테이블(H2P)에서, 수신된 해시 값(H)에 대응하는 엔트리가 비어 있지 않다는 것은, 수신된 해시 값(H)에 대응하는 데이터(DT)가 이미 저장되어 있음을 의미할 수 있다. 이 경우, 즉, 해시-대-물리 테이블(H2P)에서, 수신된 해시 값(H)에 대응하는 엔트리가 비어 있지 않은 경우, 제1 스토리지 장치(120)는 S109 단계 내지 S111 단계의 동작들을 생략할 수 있다. 즉, 수신된 해시 값(H)에 대응하는 데이터(DT)가 불휘발성 메모리들(122)에 이미 저장되어 있기 때문에, 제1 스토리지 장치(120)는 데이터(DT)에 대한 저장 동작을 생략할 수 있다. 즉, 데이터(DT)에 대한 중복 제거가 수행될 수 있다.In the hash-to-physical table (H2P), that the entry corresponding to the received hash value H is not empty means that the data DT corresponding to the received hash value H is already stored. can In this case, that is, when an entry corresponding to the received hash value H in the hash-to-physical table H2P is not empty, the
해시-대-물리 테이블(H2P)에서, 수신된 해시 값(H)에 대응하는 엔트리가 비어 있지 않은 경우, S112 단계의 동작이 수행될 수 있다. 예를 들어, 수신된 해시 값(H)에 대응하는 데이터(DT)가 이미 저장되어 있다는 것은, 추가적인 객체가 이미 저장된 데이터(DT)를 참조하는 것을 의미할 수 있다. 따라서, 제1 스토리지 장치(120)는 참조 카운트(RC)를 증가시킬 수 있다. In the hash-to-physical table (H2P), when an entry corresponding to the received hash value H is not empty, the operation of step S112 may be performed. For example, that the data DT corresponding to the received hash value H is already stored may mean that an additional object refers to the previously stored data DT. Accordingly, the
S113 단계에서, 제1 스토리지 장치(120)는 완료 정보(Completion)를 스토리지 노드(110)로 전송할 수 있다.In step S113 , the
S114 단계에서, 스토리지 노드(110)는 객체-대-해시 테이블(O2H)을 갱신할 수 있다. 예를 들어, 스토리지 노드(110)는 S101 단계를 통해 수신된 객체 식별자(ID) 및 연산된 해시(H)에 대한 매핑 정보를 기반으로 객체-대-해시 테이블(O2H)을 갱신할 수 있다. 예시적인 실시 예에서, 객체-대-해시 테이블(O2H)을 기반으로, 객체 식별자에 대하여 어떤 해시 값이 대응되는지가 판별될 수 있으며, 이는 읽기 동작시 사용될 수 있다. In step S114 , the
S115 단계에서, 스토리지 노드(110)는 클라이언트 서버(101)로 성공 정보(Success)를 전송할 수 있다. In step S115 , the
도 7 및 도 8은 도 6의 순서도에 따른 동작을 설명하기 위한 예시적인 도면들이다. 이하에서, 도면의 간결성 및 설명의 편의를 위해, 도 6의 순서도에 따른 쓰기 동작을 설명하는데 불필요한 구성 요소들은 생략된다. 예시적인 실시 예에서, 도면의 간결성 및 설명의 편의를 위해, 도 6의 S104 단계 및 S105 단계와 대응되는 동작들(즉, 수신 요청에 대한 에러 검출 방안)과 관련된 구성 요소들은 생략된다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다.7 and 8 are exemplary views for explaining an operation according to the flowchart of FIG. 6 . Hereinafter, for the sake of conciseness of the drawings and convenience of description, elements unnecessary to describe the writing operation according to the flowchart of FIG. 6 are omitted. In the exemplary embodiment, for the sake of brevity and convenience of description, components related to operations corresponding to steps S104 and S105 of FIG. 6 (ie, an error detection method for a reception request) are omitted. However, the scope of the present invention is not limited thereto.
먼저, 도 1, 도 6, 및 도 7을 참조하면, 클라이언트 서버(101)는 제1 쓰기 요청(PUT1)을 스토리지 노드(110)로 전송할 수 있다. 제1 쓰기 요청(PUT1)은 제1 객체 식별자(ID1)에 대응하는 객체가 참조하는 제1 데이터(DT1)에 대한 쓰기 요청일 수 있으며, 제1 객체 식별자(ID1) 및 제1 데이터(DT1)에 대한 정보를 포함할 수 있다.First, referring to FIGS. 1 , 6 , and 7 , the
스토리지 노드(110)의 해시 모듈(113)은 수신된 제1 데이터(DT1)에 대한 해시 연산을 수행하여, 제1 해시 값(H1)을 산출할 수 있다. 스토리지 노드(110)의 호스트 인터페이스 회로(116)는 제1 해시 값(H1)을 포함하는 제1 쓰기 요청(PUT1a)을 제1 스토리지 장치(120)로 전송할 수 있다. The
예시적인 실시 예에서, 앞서 설명된 바와 같이, 스토리지 노드(110)는 연산된 제1 해시 값(H1) 및 복수의 스토리지 장치들(120, 130) 각각에 할당된 해시 범위들을 기반으로 제1 해시 값(H1)이 포함된 해시 범위에 대응하는 스토리지 장치를 선택할 수 있다. 스토리지 노드(110)는 선택된 스토리지 장치로 제1 해시 값(H1)을 포함하는 제1 쓰기 요청(PUT1a)을 전송할 수 있다.In an exemplary embodiment, as described above, the
제1 스토리지 장치(120)의 호스트 인터페이스 회로(121i)는 제1 해시 값(H1)을 포함하는 제1 쓰기 요청(PUT1a)을 수신할 수 있다. 제1 스토리지 장치(120)의 중복 제거 관리자(121d)는 제1 해시 값(H1)을 해시-대-물리 테이블(H2P)로부터 탐색할 수 있다. 도 7의 실시 예에서, 해시-대-물리 테이블(H2P)에서, 제1 해시 값(H1)에 대응하는 엔트리는 비어 있을 수 있다. 이 경우, 중복 제거 관리자(121d)는 제1 물리 어드레스(PA1)를 할당할 수 있다. 예시적인 실시 예에서, 물리 어드레스를 할당하는 동작은 플래시 변환 계층(도 3의 FTL, 121e)에 의해 수행될 수 있다. The
제1 스토리지 장치(120)의 메모리 인터페이스 회로(121j)는 프로그램 커맨드(CMD_P), 제1 물리 어드레스(PA1), 및 제1 데이터(DT1)를 복수의 불휘발성 메모리 들(122) 중 적어도 하나로 전송할 수 있다. 복수의 불휘발성 메모리 들(122) 중 적어도 하나는 수신된 프로그램 커맨드(CMD_P)에 응답하여, 제1 물리 어드레스(PA1)에 대응하는 영역에 제1 데이터(DT1)를 저장할 수 있다. The
중복 제거 관리자(121d)는 제1 해시 값(H1) 및 제1 물리 어드레스(PA1)를 기반으로 해시-대-물리 테이블(H2P)을 갱신할 수 있다. 예를 들어, 도 7에 도시된 바와 같이, 중복 제거 관리자(121d)는 제1 해시 값(H1) 및 제1 물리 어드레스(PA1) 사이의 매핑 정보 및 제1 참조 카운트(RC1)를 포함하는 엔트리를 해시-대-물리 테이블(H2P)에 추가함으로써, 제1 해시-대-물리 테이블(H2P-1)로 갱신할 수 있다. The
예시적인 실시 예에서, 스토리지 노드(110)는 객체-대-해시 테이블(O2H)을 갱신할 수 있다. 예를 들어, 스토리지 노드(110)는 제1 객체 식별자(ID1) 및 제1 해시 값(H1)의 매핑 정보를 객체-대-해시 테이블(O2H)에 추가할 수 있다.In an exemplary embodiment, the
다음으로, 도 1, 도 6, 및 도 8을 참조하면, 클라이언트 서버(101)는 제2 쓰기 요청(PUT2)을 스토리지 노드(110)로 전송할 수 있다. 제2 쓰기 요청(PUT2)은 제2 객체 식별자(ID2)에 대응하는 객체가 참조하는 제1 데이터(DT1)에 대한 쓰기 요청일 수 있으며, 제2 객체 식별자(ID2) 및 제1 데이터(DT1)에 대한 정보를 포함할 수 있다. Next, referring to FIGS. 1 , 6 , and 8 , the
스토리지 노드(110)의 해시 모듈(113)은 수신된 제1 데이터(DT1)에 대한 해시 연산을 수행하여, 제1 해시 값(H1)을 산출할 수 있다. 예시적인 실시 예에서, 제2 객체 식별자(ID2)에 대응하는 제1 데이터(DT1)는 도 7을 참조하여 설명된 제1 객체 식별자(ID1)에 대응하는 제1 데이터(DT1)와 동일할 수 있다. 즉, 제1 및 제2 객체 식별자들(ID1, ID2)에 대응하는 객체들은 서로 동일한 제1 데이터(DT1)를 참조할 수 있다. 이 경우, 해시 모듈(113)에 의해 연산된 해시 값은 제1 해시 값(H1)으로 동일할 수 있다. 스토리지 노드(110)의 호스트 인터페이스 회로(116)는 제1 해시 값(H1)을 포함하는 제2 쓰기 요청(PUT2a)을 제1 스토리지 장치(120)로 전송할 수 있다. The
제1 스토리지 장치(120)의 호스트 인터페이스 회로(121i)는 제1 해시 값(H1)을 포함하는 제2 쓰기 요청(PUT2a)을 수신할 수 있다. 중복 제거 관리자(121d)는 수신된 제1 해시 값(H1)을 기반으로 제1 해시-대-물리 테이블(H2P-1)을 탐색할 수 있다. 예를 들어, 제1 해시-대 물리 테이블(H2P-1)은 도 7을 참조하여 설명된 바와 같이, 제1 해시 값(H1) 및 제1 물리 어드레스(PA1) 사이의 매핑 관계 및 제1 참조 카운트(RC1)에 대한 정보를 포함할 수 있다.The
이 경우, 중복 제거 관리자(121d)는 제1 해시 값(H1)에 대응하는 엔트리가 존재하는 것을 확인하고, 이에 응답하여, 제1 데이터(DT1)에 대한 저장 동작, 프로그램 동작, 또는 쓰기 동작 없이, 제1 해시-대-물리 테이블(H2P-1)을 갱신하여 제2 해시-대-물리 테이블(H2P-2)을 생성할 수 있다. 예를 들어, 중복 제거 관리자(121d)는, 제1 해시-대-물리 테이블(H2P-1)에서, 제1 해시 값(H1)에 대응하는 엔트리의 제1 참조 카운트(RC1)를 "1"만큼 증가시킴으로써, 제2 해시-대-물리 테이블(H2P-2)을 생성할 수 있다. 도 8의 실시 예에서, 제1 참조 카운트(RC1)는 "2"로 갱신될 수 있으며, 이는 제1 해시 값(H1)에 대한 제1 데이터(DT1)를 2개의 객체들(예를 들어, 제1 및 제2 객체 식별자들(ID1, ID2)에 대응하는 객체들)에 의해 참조됨을 의미한다.In this case, the
즉, 도 8을 참조하여 설명된 바와 같이, 제1 스토리지 장치(120)는 해시-대-물리 테이블(H2P)을 기반으로 수신된 데이터를 불휘발성 메모리들(122)에 저장하거나 또는 저장하는 동작을 생략할 수 있다. That is, as described with reference to FIG. 8 , the
예시적인 실시 예에서, 스토리지 노드(110)는 제2 객체 식별자(ID2) 및 제1 해시 값(H1) 사이의 매핑 정보를 기반으로 객체-대-해시 테이블(O2H)을 갱신할 수 있다. In an exemplary embodiment, the
상술된 바와 같이, 본 발명의 실시 예들에 따르면, 스토리지 서버(102)는 데이터(DT)에 대한 해시 값을 기반으로 데이터를 관리할 수 있다. 이 경우, 다수의 객체들이 동일한 제1 데이터를 참조하더라도, 스토리지 서버(102)에는 제1 데이터 1개만 불휘발성 메모리에 저장될 수 있다. 따라서, 불휘발성 메모리들 또는 스토리지 장치에서의 저장 공간의 활용도가 향상될 수 있다.As described above, according to embodiments of the present invention, the
도 9는 도 1의 서버 시스템의 동작을 예시적으로 보여주는 순서도이다. 예시적인 실시 예에서, 도 9를 참조하여, 특정 개체가 스토리지 장치로부터 특정 데이터를 읽는 동작(즉, 쓰기 동작)이 설명된다. 도 1 및 도 9를 참조하면, S201 단계에서, 클라이언트 서버(101)는 스토리지 노드(110)로 읽기 요청(GET)을 전송할 수 있다. 예시적인 실시 예에서, 읽기 요청(GET)은 객체 식별자(ID)에 대한 정보를 포함할 수 있다.9 is a flowchart illustrating an operation of the server system of FIG. 1 . In an exemplary embodiment, an operation (ie, a write operation) of a specific object reading specific data from a storage device will be described with reference to FIG. 9 . 1 and 9 , in step S201 , the
S202 단계에서, 스토리지 노드(110)는 객체-대-해시 테이블(O2H)에서, 수신된 객체 식별자(ID)에 대응하는 해시 값(H)을 탐색할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 스토리지 노드(110)의 객체-대-해시 테이블(O2H)은 객체 식별자(ID) 및 해시 값(H) 사이의 매핑 정보를 관리할 수 있다. 스토리지 노드(110)는 객체-대-해시 테이블(O2H)에서 수신된 객체 식별자(ID)에 대응하는 해시 값(H)을 탐색할 수 있다.In step S202 , the
S203 단계에서, 스토리지 노드(110)는 탐색된 해시 값(H)을 포함하는 읽기 요청(GETa)을 제1 스토리지 장치(110)로 전송할 수 있다. 예시적인 실시 예에서, 앞서 설명된 바와 유사하게, 스토리지 노드(110)는 탐색된 해시 값(H)을 기반으로 읽기 요청이 전달될 스토리지 장치를 선택할 수 있으며, 이는 도 6을 참조하여 설명된 바와 유사하므로, 이에 대한 상세한 설명은 생략된다.In step S203 , the
S204 단계에서, 제1 스토리지 장치(120)는 수신된 해시 값(H)에 대응하는 엔트리가 해시-대-물리 테이블(H2P)에 존재하는지 판별할 수 있다. 수신된 해시 값(H)에 대응하는 엔트리가 해시-대-물리 테이블(H2P)에 존재하지 않는 것은 해시 값(H)에 대응하는 데이터가 불휘발성 메모리들(122)에 저장되어 있지 않음을 의미할 수 있다. 이 경우, 즉, 수신된 해시 값(H)에 대응하는 엔트리가 해시-대-물리 테이블(H2P)에 존재하지 않는 경우, S205 단계에서, 제1 스토리지 장치(120)는 스토리지 노드(110)로 에러를 리턴하고, S206 단계에서, 스토리지 노드(110)는 에러 관리를 수행할 수 있다.In step S204 , the
수신된 해시 값(H)에 대응하는 엔트리가 해시-대-물리 테이블(H2P)에 존재하는 경우, S207 단계에서, 제1 스토리지 장치(120)는 불휘발성 메모리들(122)로부터 데이터(DT)를 읽을 수 있다. 예를 들어, 제1 스토리지 장치(120)는 해시-대-물리 테이블(H2P)로부터 해시 값(H)에 대응하는 물리 어드레스(PA)를 탐색할 수 있다. 제1 스토리지 장치(120)는 탐색된 물리 어드레스(PA)에 대응하는 영역으로부터 데이터(DT)를 읽을 수 있다.When an entry corresponding to the received hash value H exists in the hash-to-physical table H2P, in step S207 , the
S208 단계에서, 제1 스토리지 장치(120)는 읽은 데이터(DT)에 대한 해시 연산을 수행할 수 있다. S209 단계에서, 제1 스토리지 장치(120)는 연산된 해시 값 및 수신된 해시 값을 비교할 수 있다. 연산된 해시 값 및 수신된 해시 값이 동일하지 않은 것은 요청한 데이터 및 읽은 데이터가 서로 다름을 의미할 수 있다. 이 경우, 즉, 연산된 해시 값 및 수신된 해시 값이 동일하지 않은 경우, S210 단계에서, 제1 스토리지 장치(120)는 스토리지 노드(110)로 에러를 리턴하고, S211 단계에서, 스토리지 노드(110)는 에러 관리를 수행할 수 있다. 예시적인 실시 예에서, 비록 도면에 명시적으로 도시되지는 않았으나, 연산된 해시 값 및 수신된 해시 값이 서로 다른 경우, 제1 스토리지 장치(120)는 다양한 읽기 방식들을 기반으로 데이터에 대한 읽기를 다시 수행할 수 있다. In operation S208 , the
연산된 해시 값 및 수신된 해시 값이 동일한 경우, S212 단계에서, 제1 스토리지 장치(120)는 데이터(DT)를 스토리지 노드(110)로 전송하고, S213 단계에서, 스토리지 노드(110)는 데이터(DT)를 클라이언트 서버(101)로 전송할 수 있다.When the calculated hash value and the received hash value are the same, in step S212 , the
도 10은 도 9의 순서도에 따른 읽기 동작을 설명하기 위한 도면이다. 도면의 간결성 및 설명의 편의를 위해, 도 9의 순서도에 따른 쓰기 동작을 설명하는데 불필요한 구성 요소들은 생략된다. 예시적인 실시 예에서, 도면의 간결성 및 설명의 편의를 위해, 도 9의 S204 단계, S205 단계, S209 단계, 및 S210 단계와 대응되는 동작들(즉, 에러 검출 방안)과 관련된 구성 요소들은 생략된다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다.FIG. 10 is a diagram for explaining a read operation according to the flowchart of FIG. 9 . For the brevity of the drawing and convenience of explanation, unnecessary components are omitted in describing the write operation according to the flowchart of FIG. 9 . In the exemplary embodiment, elements related to operations (ie, error detection method) corresponding to steps S204, S205, S209, and S210 of FIG. 9 are omitted for the sake of brevity and convenience of description. . However, the scope of the present invention is not limited thereto.
도 1, 도 9, 및 도 10을 참조하면, 클라이언트 서버(101)는 제1 객체 식별자(ID1)를 포함하는 제1 읽기 요청(GET1)을 스토리지 노드(110)로 전송할 수 있다. 제1 읽기 요청(GET1)은 제1 객체 식별자(ID1)에 대응하는 객체에 의해 참조되는 제1 데이터(DT1)를 읽기 위한 요청일 수 있다.1, 9, and 10 , the
스토리지 노드(110)의 해시 모듈(113)은 수신된 제1 객체 식별자(ID1)에 대응하는 해시 값(H)을 객체-대-해시 테이블(O2H)로부터 탐색할 수 있다. 예를 들어, 객체-대-해시 테이블(O2H)은 제1 해시 값(H1)에 대하여 제1 및 제2 객체 식별자들(ID1, ID2)이 매핑된 정보를 포함할 수 있다. 이 경우, 해시 모듈(113)은, 객체-대-해시 테이블(O2H)을 기반으로, 수신된 제1 객체 식별자(ID1)에 대응하는 해시 값으로서, 제1 해시 값(H1)을 선택할 수 있다. 스토리지 노드(110)의 호스트 인터페이스 회로(116)는 제1 해시 값(H1)을 포함하는 제1 읽기 요청(GET1a)을 제1 스토리지 장치(120)로 전송할 수 있다.The
제1 스토리지 장치(120)의 호스트 인터페이스 회로(121i)는 제1 해시 값(H1)을 포함하는 제1 읽기 요청(GET1a)을 수신할 수 있다. 중복 제거 관리자(121d)는 제2 해시-대-물리 테이블(H2P-2)로부터 제1 해시 값(H1)에 대응하는 제1 물리 어드레스(PA1)를 탐색할 수 있다. 제1 물리 어드레스(PA1)에 대한 정보는 제1 스토리지 장치(120)의 메모리 인터페이스 회로(121j)로 전달될 수 있다.The
제1 스토리지 장치(120)의 메모리 인터페이스 회로(121j)는 읽기 커맨드(CMD_R) 및 제1 물리 어드레스(PA1)를 불휘발성 메모리들(122) 중 대응하는 적어도 하나의 불휘발성 메모리로 전송할 수 있다. 불휘발성 메모리들(122) 중 대응하는 적어도 하나의 불휘발성 메모리는 제1 물리 어드레스(PA1)의 영역에 저장된 제1 데이터(DT1)를 출력할 수 있다.The
제1 스토리지 장치(120)의 메모리 인터페이스 회로(121j)는 불휘발성 메모리들(122) 중 대응하는 적어도 하나의 불휘발성 메모리로부터 제1 데이터(DT1)를 수신할 수 있고, 수신된 제1 데이터(DT1)는 호스트 인터페이스들(121i, 116)을 통해 클라이언트 서버(101)로 제공될 수 있다. The
도 11은 도 1의 서버 시스템의 동작을 예시적으로 보여주는 순서도이다. 예시적인 실시 예에서, 도 11을 참조하여, 특정 개체의 데이터가 스토리지 장치에서 삭제되는 동작(즉, 삭제 동작)이 설명된다.11 is a flowchart exemplarily illustrating an operation of the server system of FIG. 1 . In an exemplary embodiment, an operation (ie, a deletion operation) of deleting data of a specific object from a storage device will be described with reference to FIG. 11 .
도 1 및 도 11을 참조하면, S301 단계에서, 클라이언트 서버(101)는 객체 식별자(ID)를 포함하는 삭제 요청(DEL)을 스토리지 노드(110)로 전송할 수 있다. 삭제 요청(DEL)은 객체 식별자(ID)에 대응하는 객체에 의해 참조되는 데이터를 삭제하기 위한 요청일 수 있다.1 and 11 , in step S301 , the
S302 단계에서, 스토리지 노드(110)는 객체-대-해시 테이블(O2H)에서, 수신된 객체 식별자(ID)와 대응되는 해시 값(H)을 탐색할 수 있다. S302 단계의 동작은 앞서 설명된 바와 유사하므로, 이에 대한 상세한 설명은 생략된다. S303 단계에서, 스토리지 노드(110)는 탐색된 해시 값(H)을 포함하는 삭제 요청(DELa)을 제1 스토리지 장치(110)로 전송할 수 있다.In step S302 , the
S304 단계에서, 제1 스토리지 장치(120)는 수신된 해시 값(H)에 대응하는 엔트리가 해시-대-물리 테이블(H2P)에 존재하는지 판별할 수 있다. 수신된 해시 값(H)에 대응하는 엔트리가 해시-대-물리 테이블(H2P)에 존재하지 않는 것은 해시 값(H)에 대응하는 데이터가 불휘발성 메모리들(122)에 저장되어 있지 않음을 의미할 수 있다. 예시적인 실시 예에서, 해시-대-물리 테이블(H2P)에서, 해시 값(H)에 대응하는 엔트리의 참조 카운트가 "0"인 것은 해시 값(H)에 대응하는 엔트리가 존재하지 않는 것과 동일한 의미를 가질 수 있다.In step S304 , the
이 경우, 즉, 수신된 해시 값(H)에 대응하는 엔트리가 해시-대-물리 테이블(H2P)에 존재하지 않는 경우, S305 단계에서, 제1 스토리지 장치(120)는 스토리지 노드(110)로 에러를 리턴하고, S306 단계에서, 스토리지 노드(110)는 에러 관리를 수행할 수 있다. In this case, that is, when the entry corresponding to the received hash value H does not exist in the hash-to-physical table (H2P), in step S305 , the
수신된 해시 값(H)에 대응하는 엔트리가 해시-대-물리 테이블(H2P)에 존재하는 경우, S307 단계에서, 제1 스토리지 장치(120)는 해시-대-물리 테이블(H2P)에서, 해시 값(H)과 대응하는 엔트리의 참조 카운트(RC)를 미리 정해진 값(예를 들어, "1")만큼 감소시킬 수 있다. If an entry corresponding to the received hash value H exists in the hash-to-physical table (H2P), in step S307, the
S308 단계에서, 제1 스토리지 장치(120)는 쓰기 요청(DELa)에 대한 완료(completion)를 스토리지 노드(110)로 전송하고, S309 단계에서, 스토리지 노드(110)는 쓰기 요청(DEL)에 대한 완료(completion)를 클라이언트 서버(101)로 전송할 수 있다.In step S308 , the
도 12는 도 11의 순서도에 따른 삭제 동작을 설명하기 위한 도면이다. 도면의 간결성 및 설명의 편의를 위해, 도 12의 순서도에 따른 쓰기 동작을 설명하는데 불필요한 구성 요소들은 생략된다. 예시적인 실시 예에서, 도 11의 S304 단계 및 S305 단계에 대응하는 동작들은 생략된다. 12 is a diagram for explaining a deletion operation according to the flowchart of FIG. 11 . For the sake of brevity and convenience of description, unnecessary components are omitted in describing the writing operation according to the flowchart of FIG. 12 . In the exemplary embodiment, operations corresponding to steps S304 and S305 of FIG. 11 are omitted.
도 1, 도 11, 및 도 12를 참조하면, 클라이언트 서버(101)는 제1 객체 식별자(ID1)를 포함하는 제1 삭제 요청(DEL1)을 스토리지 노드(110)로 전송할 수 있다. 제1 삭제 요청(GET1)은 제1 객체 식별자(ID1)에 대응하는 객체에 의해 참조되는 제1 데이터(DT1)를 삭제하기 위한 요청일 수 있다.1, 11, and 12 , the
스토리지 노드(110)의 해시 모듈(113)은 수신된 제1 객체 식별자(ID1)에 대응하는 제1 해시 값(H1)을 객체-대-해시 테이블(O2H)로부터 탐색할 수 있다. 이는 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다. 스토리지 노드(110)의 호스트 인터페이스 회로(116)는 제1 해시 값(H1)을 포함하는 제1 삭제 요청(DEL1a)을 제1 스토리지 장치(120)로 전송할 수 있다.The
제1 스토리지 장치(120)의 호스트 인터페이스 회로(121i)는 제1 해시 값(H1)을 포함하는 제1 삭제 요청(DEL1a)을 수신할 수 있다. 중복 제거 관리자(121d)는 제2 해시-대-물리 테이블(H2P-2)로부터 제1 해시 값(H1)에 대응하는 제1 참조 카운트(RC1)를 탐색할 수 있다. 중복 제거 관리자(121d)는 제1 삭제 요청(DEL1a)에 응답하여, 제1 해시 값(H1)에 대응하는 제1 참조 카운트(RC1)를 감소시킴으로써, 제2 해시-대-물리 테이블(H2P-2)을 제3 해시-대-물리 테이블(H2P-3)로 갱신할 수 있다.The
예시적인 실시 예에서, 해시-대-물리 테이블(H2P-2)에서, 제1 참조 카운트(RC1)가 "2"인 것은 제1 참조 카운트(RC1)에 대응하는 제1 해시 값(H1)과 연관된 제1 데이터(DT1)를 참조하는 객체들의 개수가 2개인 것을 의미한다. 이후에, 제1 객체 식별자(ID1)의 객체에 의해 참조되는 제1 데이터(DT1)가 삭제되었으므로, 제1 해시 값(H1)과 연관된 제1 데이터(DT1)를 참조하는 객체들의 개수가 1개로 변경되며, 이에 따라, 제1 참조 카운트(RC1)의 값이 "1"로 감소된다. In an exemplary embodiment, in the hash-to-physical table H2P-2, when the first reference count RC1 is “2”, the first hash value H1 corresponding to the first reference count RC1 and It means that the number of objects referencing the associated first data DT1 is two. Thereafter, since the first data DT1 referenced by the object of the first object identifier ID1 is deleted, the number of objects referring to the first data DT1 associated with the first hash value H1 is one. changed, and accordingly, the value of the first reference count RC1 is reduced to “1”.
예시적인 실시 예에서, 스토리지 노드(110)는 객체-대-해시 테이블(O2H)을 갱신할 수 있다. 예를 들어, 도 12에 도시된 바와 같이, 제1 해시 값(H1)에 대응하는 제1 및 제2 객체 식별자들(ID1, ID2) 중 삭제 요청된 제1 객체 식별자(ID1)의 매핑을 해제함으로써, 객체-대-해시 테이블(O2H)이 갱신될 수 있다.In an exemplary embodiment, the
도 13은 도 1의 스토리지 장치의 동작을 예시적으로 보여주는 블록도이다. 예시적인 실시 예에서, 도 13을 참조하여, 제1 스토리지 장치(120)의 가비지 콜렉션 동작이 설명된다. 예시적인 실시 예에서, 도 13의 가비지 콜렉션 동작은 도 3을 참조하여 설명된 플래시 변환 계층(FTL)에 의해 수행될 수 있다.13 is a block diagram exemplarily illustrating an operation of the storage device of FIG. 1 . In an exemplary embodiment, a garbage collection operation of the
도 1, 도 5, 및 도 13을 참조하면, S401 단계에서, 제1 스토리지 장치(120)는 소스 블록 및 목표 블록을 선택할 수 있다. 예를 들어, 불휘발성 메모리들(122) 각각은 복수의 메모리 블록들을 포함할 수 있다. 제1 스토리지 장치(120)의 스토리지 컨트롤러(121)는 복수의 메모리 블록들 중 소스 블록 및 목표 블록을 선택할 수 있다.1, 5, and 13 , in step S401 , the
S402 단계에서, 변수(k)가 1로 설정된다. 변수(k)는 본 발명의 실시 예에 따른 반복 동작을 설명하기 위한 것이며, 본 발명의 범위를 제한하지 않는다.In step S402, the variable k is set to 1. The variable k is for describing a repetitive operation according to an embodiment of the present invention, and does not limit the scope of the present invention.
S403 단계에서, 제1 스토리지 장치(120)는 제k 참조 카운트(RC_k)가 "0"인지 판별할 수 있다. 예를 들어, 제k 참조 카운트(RC_k)는 소스 블록의 k-번째 물리 페이지의 물리 어드레스에 대응하는 참조 카운트를 가리킬 수 있다. 제1 스토리지 장치(120)는 해시-대-물리 테이블(H2P)에서, 제k 참조 카운트(RC_k)가 "0"인지 판별할 수 있다.In operation S403 , the
제k 참조 카운트(RC_k)가 "0"인 것은 제k 참조 카운트(RC_k)와 관련된 물리 페이지(즉, 소스 블록의 k-번째 물리 페이지)에 저장된 데이터를 참조하는 객체가 없음을 의미할 수 있다. 이 경우, 즉, 제k 참조 카운트(RC_k)가 "0"인 경우, S404 단계에서, 제1 스토리지 장치(120)는 소스 블록의 k-번째 물리 페이지를 무효 페이지로 결정할 수 있다. When the k-th reference count RC_k is “0”, it may mean that there is no object referencing data stored in the physical page (ie, the k-th physical page of the source block) related to the k-th reference count RC_k. . In this case, that is, when the k-th reference count RC_k is “0”, in operation S404 , the
제k 참조 카운트(RC_k)가 "0"이 아닌 것은 제k 참조 카운트(RC_k)와 관련된 물리 페이지(즉, 소스 블록의 k-번째 물리 페이지)에 저장된 데이터를 참조하는 객체가 존재함을 의미할 수 있다. 이 경우, 제k 참조 카운트(RC_k)가 "0"이 아닌 경우, S405 단계에서, 제1 스토리지 장치(120)는 소스 블록의 k-번째 물리 페이지를 유효 페이지로 결정할 수 있다. When the k-th reference count (RC_k) is not “0”, it means that an object referencing data stored in the physical page (ie, the k-th physical page of the source block) related to the k-th reference count RC_k exists. can In this case, when the k-th reference count RC_k is not “0”, in operation S405 , the
S406 단계에서, 변수(k)가 최대인지 판별된다. 예를 들어, 소스 블록에 포함된 모든 페이지들에 대하여, 상술된 유효/무효 판별 동작이 완료되었는지 판별된다. 변수(k)가 최대가 아닌 경우, S407 단계에서, 변수(k)는 "1"만큼 증가하고, 제1 스토리지 장치(120)는 S403 단계를 수행한다.In step S406, it is determined whether the variable k is the maximum. For example, with respect to all pages included in the source block, it is determined whether the above-described validity/invalidation determination operation is completed. If the variable k is not the maximum, in step S407 , the variable k is increased by “1”, and the
변수(k)가 최대인 경우, S408 단계에서, 제1 스토리지 장치(120)는 유효 페이지로 설정된 물리 페이지들을 소스 블록으로부터 목표 블록으로 마이그레이션할 수 있다. S409 단계에서, 제1 스토리지 장치(120)는 소스 블록을 자유 블록으로서 사용할 수 있다. When the variable k is the maximum, in operation S408 , the
상술된 바와 같이, 본 발명의 실시 예에 따른 스토리지 장치는 참조 카운트를 기반으로 데이터를 참조하는 객체들의 개수를 확인할 수 있다. 따라서, 스토리지 장치에서의 데이터 중복 제거 기능이 제공될 수 있다. As described above, the storage device according to an embodiment of the present invention may identify the number of objects referencing data based on the reference count. Accordingly, a data deduplication function in the storage device may be provided.
도 14는 도 1의 서버 시스템의 동작을 예시적으로 보여주는 순서도이다. 설명의 편의를 위해 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다. 도 1 및 도 14를 참조하면, S501 단계에서, 클라이언트 서버(101)는 쓰기 요청(PUT)을 스토리지 노드(110)로 전송할 수 있다. 쓰기 요청(PUT)은 객체 식별자(ID), 데이터의 길이(len), 데이터(DT), 및 플래그(FG)를 포함할 수 있다. 예시적인 실시 예에서, 플래그(FG)는 스토리지 장치(120)에서의 중복 제거 기능을 활성화/비활성화시키는 정보일 수 있다. 14 is a flowchart exemplarily illustrating an operation of the server system of FIG. 1 . For convenience of description, detailed descriptions of the above-described components will be omitted. 1 and 14 , in step S501 , the
스토리지 노드(110) 및 제1 스토리지 장치(120)는 S502 단계, S503 단계, S504 단계, S505 단계, S506 단계, 및 S507 단계의 동작들을 수행할 수 있으며, 이는 플래그(FG)의 구성을 제외하면, 도 6의 S102 단계, S103 단계, S104 단계, S105 단계, S106 단계, 및 S107 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다.The
S505 단계의 결과가 매칭인 경우, S508 단계에서, 제1 스토리지 장치(120)는 수신된 해시 값(H)에 대응하는 엔트리가 해시-대-물리 테이블(H2P)에 존재하는지 판별할 수 있다. 수신된 해시 값(H)에 대응하는 엔트리가 해시-대-물리 테이블(H2P)에 존재하지 않는 경우, 제1 스토리지 장치(120)는 S510 단계, S511 단계, S512 단계, 및 S513 단계의 동작들을 수행할 수 있으며, 이는 도 6의 S109 단계, S110 단계, S111 단계, 및 S112 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다. If the result of step S505 is a match, in step S508 , the
수신된 해시 값(H)에 대응하는 엔트리가 해시-대-물리 테이블(H2P)에 존재하는 경우, S509 단계에서, 제1 스토리지 장치(120)는 플래그(FG)가 설정되었는지 판별할 수 있다. 예를 들어, 플래그(FG)는 특정 객체가 참조하는 데이터에 대한 중복 제거 기능을 비활성화시키는 정보일 수 있다. 즉, 특정 쓰기 요청에 대하여, 플래그(FG)가 설정된 경우, 대응하는 데이터의 저장 유무와 무관하게, 대응하는 데이터가 불휘발성 메모리들(122)에 저장(즉, 중복 저장)될 수 있다. 특정 쓰기 요청에 대하여, 플래그(FG)가 설정되지 않은 경우, 도 6을 참조하여 설명된 바와 유사하게, 동일한 데이터가 중복 저장되지 않을 수 있다.When an entry corresponding to the received hash value H exists in the hash-to-physical table H2P, in step S509 , the
즉, 플래그(FG)가 설정되지 않은 경우, 제1 스토리지 장치(120)는 데이터(DT)에 대한 저장 동작 없이, S513 단계를 수행할 수 있다. 반면에, 플래그(FG)가 설정된 경우, 제1 스토리지 장치(120)는 S510 단계 내지 S512 단계의 동작들을 통해 데이터(DT)에 대한 저장 동작을 수행할 수 있다. 이 경우, 데이터(DT)는 불휘발성 메모리들(122)에 중복 저장될 수 있다. 예시적인 실시 예에서, 플래그(FG)는 I/O 단위로 설정될 수 있다. 플래그(FG)는 특정 객체가 참조하는 데이터에 대하여, 데이터 신뢰성을 보장하기 위해 설정될 수 있다. That is, when the flag FG is not set, the
이후에, 제1 스토리지 장치(120), 스토리지 노드(110), 및 클라이언트 서버(101)는 S515 단계, S516 단계, 및 S517 단계의 동작들을 수행할 수 있으며, 이는 도 6을 참조하여 설명된 S113 단계, S114 단계, 및 S115 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다. Thereafter, the
도 15는 도 14의 순서도에 따른 동작을 설명하기 위한 도면이다. 도면의 간결성 및 설명의 편의를 위해, 도 14의 순서도에 따른 쓰기 동작을 설명하는데 불필요한 구성 요소들은 생략된다. 예시적인 실시 예에서, 도면의 간결성 및 설명의 편의를 위해, 도 14의 순서도에 따른 동작 중 데이터 중복 제거 기능이 비활성화된 구성이 설명된다.15 is a diagram for explaining an operation according to the flowchart of FIG. 14 . For the brevity of the drawing and convenience of explanation, unnecessary components are omitted in describing the write operation according to the flowchart of FIG. 14 . In an exemplary embodiment, a configuration in which the data deduplication function is deactivated during operation according to the flowchart of FIG. 14 is described for the sake of brevity and convenience of description.
도 1, 도 14, 및 도 15를 참조하면, 클라이언트 서버(101)는 제2 쓰기 요청(PUT2)을 스토리지 노드(110)로 전송할 수 있다. 제2 쓰기 요청(PUT2)은 제2 객체 식별자(ID2), 제1 데이터(DT1), 및 플래그(FG)를 포함할 수 있다.1, 14, and 15 , the
스토리지 노드(110)의 해시 모듈(113)은 제1 데이터(DT1)에 대한 해시 연산을 통해, 제1 해시 값(H1)을 산출할 수 있다. 스토리지 노드(110)의 호스트 인터페이스 회로(116)는 제1 해시 값(H1)을 포함하는 제2 쓰기 요청(PUTa)을 제1 스토리지 장치(120)로 전송할 수 있다.The
제1 스토리지 장치(120)의 호스트 인터페이스 회로(121i)는 제1 해시 값(H1)을 포함하는 제2 쓰기 요청(PUTa)을 수신할 수 있다. 제1 스토리지 장치(120)의 중복 제거 관리자(121d)는 제1 해시 값(H1)에 대응하는 엔트리가 해시-대-물리 테이블(H2P)에 존재하는지 판별할 수 있다. 도 15의 실시 예에서, 제1 해시 값(H1)에 대응하는 엔트리가 해시-대-물리 테이블(H2P)에 존재할 수 있다. 이 경우, 중복 제거 관리자(121d)는 플래그(FG)가 설정된 것에 응답하여, 제2 물리 어드레스(PA2)를 할당할 수 있다. 예를 들어, 도 8의 실시 예에서, 데이터 중복 제거를 위해, 특정 해시 값에 대응하는 엔트리가 해시-대-물리 테이블(H2P)에 존재하는 경우, 데이터에 대한 쓰기 동작이 생략된다. 반면에, 도 15의 실시 예에서, 플래그(FG) 설정을 통해 데이터 중복 기능이 비활성화되었으므로, 특정 해시 값에 대응하는 엔트리가 해시-대-물리 테이블(H2P)에 존재하더라도, 중복 제거 관리자(121d)는 데이터에 대한 쓰기 동작을 수행할 수 있다.The
제1 스토리지 장치(120)의 메모리 인터페이스 회로(121j)는 프로그램 커맨드(CMD_P), 제2 물리 어드레스(PA2), 및 제1 데이터(DT1)를 불휘발성 메모리들(122) 중 적어도 하나의 불휘발성 메모리로 전송할 수 있다. 불휘발성 메모리들(122) 중 적어도 하나의 불휘발성 메모리는 제2 물리 어드레스(PA2)에 대응하는 영역에 제1 데이터(DT1)를 저장할 수 있다. 이 경우, 동일한 제1 데이터(DT1)가 서로 다른 영역에 중복 저장될 수 있다.The
중복 제거 관리자(121d)는 제1 해시 값(H1)에 대응하는 엔트리를 해시-대-물리 테이블(H2P-3)에 추가함으로써, 제4 해시-대-물리 테이블(H2P-4)를 생성할 수 있다. 예시적인 실시 예에서, 추가된 엔트리의 참조 카운트는 객체 식별자에 대한 정보를 대체될 수 있다.The
예시적인 실시 예에서, 스토리지 노드(110)는 객체-대-해시 테이블(O2H)을 갱신할 수 있으며, 이는 앞서 설명된 바와 유사하므로, 이에 대한 상세한 설명은 생략된다.In an exemplary embodiment, the
상술된 바와 같이, 본 발명의 실시 예들에 따르면, 특정 객체들이 참조하는 데이터에 대하여, 데이터 중복 기능을 비활성화시킴으로써, 데이터 신뢰성을 위한 데이터 중복 저장 기능을 제공할 수 있다.As described above, according to embodiments of the present invention, it is possible to provide a data redundancy storage function for data reliability by disabling the data redundancy function for data referenced by specific objects.
도 16은 도 1의 서버 시스템의 동작을 예시적으로 보여주는 순서도이다. 설명의 편의를 위해, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다. 도 1 및 도 16을 참조하면, S601 단계에서, 클라이언트 서버(101)는 객체 식별자(ID), 데이터 길이(len), 및 데이터(DT)를 포함하는 쓰기 요청(PUT)을 스토리지 노드(110)로 전송할 수 있다. 16 is a flowchart illustrating an operation of the server system of FIG. 1 . For convenience of description, detailed descriptions of the above-described components are omitted. 1 and 16 , in step S601 , the
예시적인 실시 예에서, 클라이언트 서버(101)로부터 수신된, 하나의 객체가 참조하는, 데이터의 길이는 다양하게 가변될 수 있다. 이 경우, 다양한 길이의 데이터에 대하여 적절한 해시 값을 연산하기 위해서는, 연산량이 큰 해시 모듈이 필요하다. 이는 해시 모듈로 인한 성능 저하 또는 면적 증가를 유발시킬 수 있다. 따라서, 클라이언트 서버(101)로부터 수신된 데이터는 미리 정해진 기준 값(REF)의 크기로 분할되어 처리될 수 있다. In an exemplary embodiment, the length of data received from the
예를 들어, S602 단계에서, 스토리지 노드(110)는 수신된 데이터 길이(len)가 기준 크기(REF)보다 큰지 판별할 수 있다. 수신된 데이터 길이(len)가 기준 크기(REF)보다 크지 않은 경우, S603 단계에서, 스토리지 노드(110) 및 제1 스토리지 장치(120)는 데이터(DT)에 대한 쓰기 동작을 수행할 수 있다. 예시적인 실시 예에서, S603 단계의 쓰기 동작은 도 1 내지 도 15를 참조하여 설명된 스토리지 노드(110) 및 제1 스토리지 장치(120) 사이의 쓰기 동작과 유사할 수 있다.For example, in step S602 , the
수신된 데이터 길이(len)가 기준 크기(REF)보다 큰 경우, S604 단계에서, 스토리지 노드(110)는 데이터(DT)를 기준 크기(REF)로 분할할 수 있다. 이후에, S605a 내지 S605n 단계들 각각에서, 스토리지 노드(110) 및 제1 스토리지 장치(120)는 분할된 데이터 각각에 대한 쓰기 동작들을 수행할 수 있다. S605a 내지 S605n 단계들 각각에서의 쓰기 동작은 도 1 내지 도 15를 참조하여 설명된 스토리지 노드(110) 및 제1 스토리지 장치(120) 사이의 쓰기 동작과 유사할 수 있다. 예시적인 실시 예에서, 동일한 데이터로부터 분할된 데이터라도, 연산된 해시 값에 따라 서로 다른 스토리지 장치에 저장될 수 있다. 예를 들어, 제1 데이터로부터 분할된 제1 분할 데이터는 연산된 해시 값에 따라 제1 스토리지 장치(120) 또는 제2 스토리지 장치(130)에 저장될 수 있다.When the received data length len is greater than the reference size REF, in step S604 , the
이후에, S607 단계에서, 스토리지 노드(110)는 객체-대-해시 테이블(O2H)을 갱신할 수 있다. 예를 들어, 스토리지 노드(110)는 분할된 객체들 각각에 대한 객체 식별자를 재설정하고, 분할된 데이터 각각에 대한 해시 값을 연산하고, 재설정된 객체 식별자 및 연산된 해시 값 사이의 매핑 관계를 기반으로 객체-대-해시 테이블(O2H)을 갱신할 수 있다. S608 단계에서, 스토리지 노드(110)는 완료 정보를 클라이언트 서버(101)로 전송할 수 있다. Thereafter, in step S607 , the
상술된 바와 같이, 클라이언트 서버(101)로부터 수신된 데이터의 크기가 기준 크기(REF)보다 큰 경우, 스토리지 노드(110)는 데이터를 기준 크기(REF) 단위로 분할시킬 수 있다. 이 경우, 해시 값 산출을 위한 해시 모듈의 크기 및 연산량이 감소될 수 있기 때문에, 향상된 성능을 갖는 서버 시스템이 제공된다.As described above, when the size of data received from the
도 17은 도 1의 서버 시스템의 동작을 예시적으로 보여주는 블록도이다. 설명의 편의를 위해, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다. 도 1 및 도 17을 참조하면, S701 단계에서, 클라이언트 서버(101)는 객체 식별자(ID)를 포함하는 읽기 요청(GET)을 스토리지 노드(110)로 전송할 수 있다.17 is a block diagram exemplarily illustrating an operation of the server system of FIG. 1 . For convenience of description, detailed descriptions of the above-described components are omitted. 1 and 17 , in step S701 , the
S702 단계에서, 스토리지 노드(110)는 수신된 객체 식별자(ID)에 대응하는 데이터가 분할되었는지 판별할 수 있다. 예를 들어, 스토리지 노드(110)는 도 16을 참조하여 설명된 쓰기 방법을 기반으로 특정 데이터를 분할하고, 분할된 데이터를 스토리지 장치들에 저장할 수 있다. In step S702, the
수신된 객체 식별자(ID)에 대응하는 데이터가 분할되지 않은 경우, S703 단계에서, 스토리지 노드(110) 및 제1 스토리지 장치(120)는 읽기 동작을 수행할 수 있다. 읽기 동작은 도 1 내지 도 15를 참조하여 설명된 읽기 동작과 유사할 수 있으며, 이에 대한 상세한 설명은 생략된다.When the data corresponding to the received object identifier (ID) is not divided, in step S703 , the
수신된 객체 식별자(ID)에 대응하는 데이터가 분할된 경우, S704 단계에서, 스토리지 노드(110)는 객체 식별자(ID)에 대하여 재설정된 객체 식별자를 기반으로 해시 값들을 검색할 수 있다. S705a 내지 S705n 단계에서, 스토리지 노드(110) 및 제1 스토리지 장치(120)는 검색된 해시 값들(H1~Hn) 각각에 대한 읽기 동작을 수행할 수 있다. S705a 내지 S705n 단계의 동작들 각각은 도 1 내지 도 15를 참조하여 설명된 읽기 동작과 유사할 수 있으며, 이에 대한 상세한 설명은 생략된다.When the data corresponding to the received object identifier (ID) is divided, in step S704 , the
S706 단계에서, 스토리지 노드(110)는 읽기 동작을 통해 수신된 복수의 데이터를 병합할 수 있다. S707 단계에서, 스토리지 노드(110)는 병합된 데이터를 객체 식별자(ID)에 대응하는 데이터(DT)로서 클라이언트 서버(101)로 전송할 수 있다. In step S706 , the
도 18 및 도 19는 도 16 및 도 17을 참조하여 설명된 데이터 분할의 예시를 보여주는 도면들이다. 도 18 및 도 19를 참조하면, 제1 객체 식별자(ID1)에 대응하는 데이터는 10KB의 크기를 가질 수 있다. 이 때, 기준 크기(REF)가 4KB인 경우, 제1 객체 식별자(ID1)에 대응하는 데이터는 4KB 단위로 분할될 수 있으며, 각 분할된 데이터 각각에 대해, ID1a, ID1b, 및 ID1c의 객체 식별자들이 부여될 수 있다. 18 and 19 are diagrams illustrating examples of data division described with reference to FIGS. 16 and 17 . 18 and 19 , data corresponding to the first object identifier ID1 may have a size of 10 KB. In this case, when the reference size REF is 4 KB, data corresponding to the first object identifier ID1 may be divided into 4 KB units, and for each divided data, object identifiers of ID1a, ID1b, and ID1c can be given
이 때, 데이터 분할 방식은 분할된 데이터가 기준 크기보다 작도록 분할하는 방식일 수 있다. 예를 들어, 도 18에 도시된 바와 같이, ID1a에 대응하는 분할 데이터는 4KB의 크기를 갖고, ID1b에 대응하는 분할 데이터의 크기는 4KB의 크기를 갖고, ID1c에 대응하는 분할 데이터의 크기는 2KB를 가질 수 있다.In this case, the data partitioning method may be a method of partitioning the divided data to be smaller than the reference size. For example, as shown in FIG. 18 , the divided data corresponding to ID1a has a size of 4 KB, the size of divided data corresponding to ID1b has a size of 4 KB, and the size of divided data corresponding to ID1c is 2 KB. can have
반면에, 데이터 분할 방식은 분할된 데이터가 기준 크기와 같도록 분할하는 방식일 수 있다. 예를 들어, 도 19에 도시된 바와 같이, ID1a, ID1b, 및 ID1c에 대응하는 분할 데이터 각각은 4KB를 가질 수 있다. 이 경우, ID1c에 대응하는 분할 데이터 중 2KB는 실제 데이터일 수 있고, 나머지 2KB는 더미 데이터 또는 패딩 데이터일 수 있다.On the other hand, the data division method may be a method in which divided data is divided to have the same size as a reference size. For example, as shown in FIG. 19 , each of the divided data corresponding to ID1a, ID1b, and ID1c may have 4 KB. In this case, 2KB of the divided data corresponding to ID1c may be actual data, and the remaining 2KB may be dummy data or padding data.
상술된 바와 같이, 데이터의 크기가 가변되는 통신 환경에서, 해시 연산에 대한 부담을 경감시키기 위해, 본 발명에 따른 스토리지 노드는 기준 크기(REF)를 기반으로 데이터를 분할하여 관리할 수 있다.As described above, in a communication environment in which the size of data is variable, the storage node according to the present invention may divide and manage data based on the reference size REF in order to reduce the burden on the hash operation.
도 20은 본 발명의 실시 예에 따른 서버 시스템을 예시적으로 보여주는 도면이다. 도 21은 도 20의 서버 시스템의 각 스토리지 노드에서 관리되는 해시 범위를 설명하기 위한 도면이다. 도 20을 참조하면, 서버 시스템(200)은 클라이언트 서버(101) 및 복수의 스토리지 서버들(202, 203, 204)을 포함할 수 있다. 클라이언트 서버(101) 및 복수의 스토리지 서버들(202, 203, 204)은 네트워크(NT)를 통해 서로 통신할 수 있다.20 is a diagram exemplarily showing a server system according to an embodiment of the present invention. FIG. 21 is a diagram for explaining a hash range managed by each storage node of the server system of FIG. 20 . Referring to FIG. 20 , the
복수의 스토리지 서버들(202, 203, 204) 각각은 복수의 스토리지 노드들(211, 212, 213), 및 복수의 스토리지 장치들(221, 222, 223, 224, 225, 226)을 포함할 수 있다. 복수의 스토리지 서버들(202, 203, 204) 각각의 구성 요소들(예를 들어, 복수의 스토리지 노드들(211, 212, 213), 및 복수의 스토리지 장치들(221, 222, 223, 224, 225, 226))은 앞서 설명된 바와 유사하므로, 이에 대한 상세한 설명은 생략된다.Each of the plurality of storage servers 202 , 203 , 204 may include a plurality of
예시적인 실시 예에서, 도면에 도시된 클라이언트 서버(201)의 개수, 스토리지 서버들(202, 203, 204)의 개수, 스토리지 노드들(211, 212, 213)의 개수, 및 스토리지 장치들(221~226)의 개수는 예시적인 것이며, 각 구성 요소들의 개수는 다양하게 증가/감소될 수 있다.In an exemplary embodiment, the number of
각 스토리지 노드들(211, 212, 213)은 서로 다른 객체 식별자에 대응하는 데이터를 관리하도록 구성될 수 있다. 예를 들어, 클라이언트 서버(201)는 제1 객체 식별자에 대응하는 데이터를 제1 스토리지 노드(211)를 통해 액세스하고, 제2 객체 식별자에 대응하는 데이터를 제2 스토리지 노드(212)를 통해 액세스하고, 제3 객체 식별자에 대응하는 데이터를 제3 스토리지 노드(213)를 통해 액세스할 수 있다. Each of the
제1 스토리지 서버(202)에 포함된 제1 스토리지 노드(211)는 스토리지 장치들(221, 222)을 관리하도록 구성될 수 있다. 제2 스토리지 서버(203)에 포함된 제2 스토리지 노드(212)는 스토리지 장치들(223, 224)을 관리하도록 구성될 수 있다. 제3 스토리지 서버(204)에 포함된 제3 스토리지 노드(213)는 스토리지 장치들(225, 226)을 관리하도록 구성될 수 있다. The
예시적인 실시 예에서, 제1 스토리지 노드(211)는 다른 스토리지 노드들(212, 213)에 관리되는 스토리지 장치들(223, 224, 225, 226)을 액세스하도록 구성될 수 있다. 예를 들어, 제1 스토리지 노드(211)는, 네트워크(NT)를 통해 또는 다른 별도의 통신 인터페이스를 통해, 다른 스토리지 노드들(212, 213)에 관리되는 스토리지 장치들(223, 224, 225, 226)을 액세스할 수 있다. 마찬가지로, 제2 스토리지 노드(212)는, 네트워크(NT)를 통해 또는 다른 별도의 통신 인터페이스를 통해, 다른 스토리지 노드들(211, 213)에 관리되는 스토리지 장치들(221, 222, 225, 226)을 액세스할 수 있다. 마찬가지로, 제3 스토리지 노드(213)는, 네트워크(NT)를 통해 또는 다른 별도의 통신 인터페이스를 통해, 다른 스토리지 노드들(211, 212)에 관리되는 스토리지 장치들(221, 222, 223, 224)을 액세스할 수 있다.In an exemplary embodiment, the
제1 내지 제3 스토리지 노드들(211, 212, 213) 각각은 대응하는 스토리지 장치들(221~226)에 대한 해시 범위를 관리하도록 구성될 수 있다. 예를 들어, 도 21에 도시된 바와 같이, 제1 스토리지 노드(211)는 스토리지 장치들(221, 222) 각각에 대한 해시 범위(HR_11, HR_12)를 관리할 수 있고, 제2 스토리지 노드(212)는 스토리지 장치들(223, 224) 각각에 대한 해시 범위(HR_21, HR_22)를 관리할 수 있고, 제3 스토리지 노드(213)는 스토리지 장치들(225, 226) 각각에 대한 해시 범위(HR_31, HR_32)를 관리할 수 있다. 예시적인 실시 예에서, 스토리지 장치들(221~226) 각각에 대한 해시 범위(HR_11, HR_12, HR_21, HR_22, HR_31, HR_32)는 서로 다를 수 있다.Each of the first to
본 발명의 실시 예에 따르면, 서버 시스템(200)은 동일한 데이터를 참조하는 복수의 객체들에 대하여, 데이터 중복 제거 기능을 제공할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 클라이언트 서버(201)는 제1 스토리지 노드(211)를 통해 제1 객체 식별자에 대한 데이터를 액세스하고, 제2 스토리지 노드(212)를 통해 제2 객체 식별자에 대한 데이터를 액세스하고, 제3 스토리지 노드(213)를 통해 제3 객체 식별자에 대한 데이터를 액세스하는 것으로 가정한다.According to an embodiment of the present invention, the
예시적인 실시 예에서, 쓰기 동작시, 클라이언트 서버(201)는 제1 객체 식별자(ID1) 및 제1 데이터(DT1)에 대한 쓰기 요청을 제1 스토리지 노드(211)로 전송할 수 있다. 제1 스토리지 노드(211)는 제1 데이터(DT1)에 대한 해시 연산을 통해 제1 해시 값(H1)을 연산할 수 있다. 제1 스토리지 노드(211)는 제1 해시 값(H1)이 어떤 해시 범위에 포함되는지 판별할 수 있다. 제1 스토리지 노드(211)는 제1 해시 값(H1)이 포함된 해시 범위를 갖는 스토리지 장치로 제1 데이터(DT1) 및 제1 해시(H1)를 포함하는 쓰기 요청을 전송할 수 있다. 예를 들어, 제1 해시 값(H1)이 제2 스토리지 노드(212)에 의해 관리되는 스토리지 장치(223)의 해시 범위(HR_21)에 포함되는 경우, 제1 스토리지 노드(211)는 제1 데이터(DT1) 및 제1 해시(H1)를 포함하는 쓰기 요청을 스토리지 장치(223)로 전송할 수 있다. 제1 스토리지 노드(211)는 제1 객체(ID1) 및 제1 해시 값(H1)을 기반으로 객체-대-해시 테이블(O2H)을 갱신할 수 있다.In an exemplary embodiment, during a write operation, the
예시적인 실시 예에서, 읽기 동작시, 클라이언트 서버(201)는 제1 객체 식별자(ID1)를 포함하는 읽기 요청을 제1 스토리지 노드(211)로 전송할 수 있다. 제1 스토리지 노드(211)는 객체-대-해시 테이블(O2H)을 기반으로 제1 객체 식별자(ID1)에 대응하는 제1 해시 값(H1)을 검색할 수 있다. 제1 스토리지 노드(211)는 쓰기 동작을 참조하여 설명된 바와 유사하게, 제1 해시 값(H1)이 포함된 해시 범위를 판별하고, 판별된 해시 범위와 대응하는 스토리지 장치로 제1 해시 값(H1)이 포함된 읽기 요청을 전송할 수 있다.In an exemplary embodiment, during a read operation, the
즉, 클라이언트 서버(201)는 객체 식별자를 기반으로 복수의 스토리지 노드들(211~213)을 분할하여 관리할 수 있고, 복수의 스토리지 노드들(211~213)은 데이터에 대한 해시 값을 기반으로 데이터가 저장된 스토리지 장치를 관리할 수 있다. 스토리지 장치는 앞서 설명된 바와 같이, 해시 값 및 참조 카운터를 기반으로 데이터 중복 제거 기능을 제공할 수 있다. That is, the
도 22는 도 20의 서버 시스템의 동작을 예시적으로 보여주는 순서도이다. 설명의 편의를 위해, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다. 도 20 및 도 22를 참조하면, S801 단계에서, 클라이언트 서버(201)는 제1 객체 식별자(ID1), 데이터 길이(len), 및 제1 데이터(DT1)를 포함하는 쓰기 요청(PUT)을 제1 스토리지 노드(211)로 전송할 수 있다. 예를 들어, 클라이언트 서버(201)는 객체 식별자를 기반으로 액세스할 스토리지 서버 또는 스토리지 노드를 선택할 수 있다. 22 is a flowchart illustrating an operation of the server system of FIG. 20 . For convenience of description, detailed descriptions of the above-described components are omitted. 20 and 22 , in step S801 , the
S802 단계에서, 제1 스토리지 노드(211)는 제1 데이터(DT1)에 대한 해시 연산을 수행하여, 제1 해시 값(H1)을 산출할 수 있다. S803 단계에서, 제1 스토리지 노드(211)는 제1 해시 값(H1)이 자신에 의해 관리되는 해시 범위에 포함되는지 판별할 수 있다. 예를 들어, 도 21을 참조하여 설명된 바와 같이, 제1 스토리지 노드(211)에 의해 관리되는 해시 범위는 HR_11 및 HR_12일 수 있다. 제1 스토리지 노드(211)는 제1 해시 값(H1)이 HR_11 및 HR_12의 해시 범위들에 포함되는지 판별할 수 있다.In operation S802 , the
제1 해시 값(H1)이 제1 스토리지 노드(211)에 의해 관리되는 해시 범위에 포함된 경우, S804 단계에서, 제1 스토리지 노드(211) 및 제1 스토리지 장치(221 또는 222)는 쓰기 동작을 수행할 수 있다. When the first hash value H1 is included in the hash range managed by the
제1 해시 값(H1)이 제1 스토리지 노드(211)에 의해 관리되는 해시 범위에 포함되지 않는 경우, S805 단계에서, 제1 스토리지 노드(211)는 제1 해시 값(H1)이 어떤 해시 범위에 포함되는지 판별할 수 있다. 예를 들어, 제1 해시 값(H1)이 HR_21 또는 HR_22의 해시 범위에 포함되는 경우, 제1 스토리지 노드(211)는 제1 해시 값(H1)이 제2 스토리지 노드(212)에 대응하는 것으로 결정할 수 있다. 제1 해시 값(H1)이 HR_31 또는 HR_32의 해시 범위에 포함되는 경우, 제1 스토리지 노드(211)는 제1 해시 값(H1)이 제3 스토리지 노드(312)에 대응하는 것으로 결정할 수 있다.If the first hash value H1 is not included in the hash range managed by the
제1 해시 값(H1)이 제2 스토리지 노드(212)의 해시 범위(HR21, HR22)에 포함되는 것으로 결정된 경우, S806 단계에서, 제1 스토리지 노드(211)는 제2 스토리지 노드(212)로 쓰기 요청(PUT)을 전송할 수 있다. S807 단계에서, 제2 스토리지 노드(212)는 제1 해시 값(H1)을 연산할 수 있다. S808 단계에서, 제2 스토리지 노드(212) 및 제2 스토리지 장치(223 또는 224)는 쓰기 동작을 수행할 수 있다. When it is determined that the first hash value H1 is included in the hash ranges HR21 and HR22 of the
제1 해시 값(H1)이 제3 스토리지 노드(213)의 해시 범위(HR31, HR32)에 포함되는 것으로 결정된 경우, S809 단계에서, 제1 스토리지 노드(211)는 제3 스토리지 노드(213)로 쓰기 요청(PUT)을 전송할 수 있다. S810 단계에서, 제3 스토리지 노드(213)는 제1 해시 값(H1)을 연산할 수 있다. S811 단계에서, 제3 스토리지 노드(213) 및 제3 스토리지 장치(225 또는 226)는 쓰기 동작을 수행할 수 있다. When it is determined that the first hash value H1 is included in the hash ranges HR31 and HR32 of the
예시적인 실시 예에서, S804 단계의 쓰기 동작, S808 단계의 쓰기 동작, 및 S811 단계의 쓰기 동작은 도 1 내지 도 15를 참조하여 설명된 쓰기 동작(해시 값, 참조 카운트를 사용한 중복 제거 기능을 제공하는 쓰기 동작)과 유사하므로, 이에 대한 상세한 설명은 생략된다.In an exemplary embodiment, the write operation of step S804, the write operation of step S808, and the write operation of step S811 provide the write operation (hash value, deduplication function using reference count) described with reference to FIGS. 1 to 15 writing operation), a detailed description thereof will be omitted.
S808 단계의 쓰기 동작이 완료된 이후에, S812 단계에서, 제2 스토리지 노드(212)는 완료 정보(completion)를 제1 스토리지 노드(211)로 전송할 수 있다. S811 단계의 쓰기 동작이 완료된 이후에, S813 단계에서, 제3 스토리지 노드(213)는 완료 정보(completion)를 제1 스토리지 노드(211)로 전송할 수 있다. After the write operation in step S808 is completed, in step S812 , the
S804 단계의 쓰기 동작이 완료되거나, 또는 S812 단계 또는 S813 단계를 통해 완료 정보가 수신된 경우, S814 단계에서, 제1 스토리지 노드(211)는 완료 정보(completion)를 클라이언트 서버(201)로 전송할 수 있다.When the write operation of step S804 is completed, or when completion information is received through step S812 or S813, in step S814, the
S815 단계에서, 제1 스토리지 서버(211)는 객체-대-해시 테이블(O2H)을 갱신할 수 있다. 예를 들어, 제1 스토리지 서버(211)는 제1 객체 식별자(ID1) 및 제1 해시 값(H1)에 대한 매핑 정보를 기반으로 객체-대-해시 테이블(O2H)을 갱신할 수 있다. 예시적인 실시 예에서, 이후에, 제1 스토리지 노드(211)가 제1 객체 식별자(ID1)에 대한 읽기 요청을 수신한 경우, 제1 스토리지 노드(211)는 갱신된 객체-대-해시 테이블(O2H)을 기반으로 제1 해시 값(H1)을 검색하고, 검색된 제1 해시 값(H1)을 기반으로 읽기 동작을 수행할 수 있다.In step S815 , the
도 23은 도 20의 서버 시스템의 동작을 예시적으로 보여주는 순서도이다. 설명의 편의를 위해, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다. 도 20 및 도 23을 참조하면, S901 단계에서, 클라이언트 서버(201)는 제1 객체 식별자(ID1)를 포함하는 읽기 요청(GET)을 제1 스토리지 노드(211)로 전송할 수 있다.23 is a flowchart illustrating an operation of the server system of FIG. 20 . For convenience of description, detailed descriptions of the above-described components are omitted. 20 and 23 , in step S901 , the
S902 단계에서, 제1 스토리지 노드(211)는 객체-대-해시 테이블(O2H)을 기반으로 제1 객체 식별자(ID1)에 대응하는 제1 해시 값(H1)을 검색할 수 있다.In step S902 , the
S903 단계에서, 제1 스토리지 노드(211)는 제1 해시 값(H1)이 자신에 의해 관리되는 해시 범위에 포함되는지 판별할 수 있다. S903 단계의 동작은 도 22의 S803 단계의 동작과 유사하므로, 이에 대한 상세한 설명은 생략된다.In step S903 , the
제1 해시 값(H1)이 제1 스토리지 노드(211)에 의해 관리되는 해시 범위에 포함된 경우, S904 단계에서, 제1 스토리지 노드(211) 및 제1 스토리지 장치(221 또는 222)는 읽기 동작을 수행할 수 있다. When the first hash value H1 is included in the hash range managed by the
제1 해시 값(H1)이 제1 스토리지 노드(211)에 의해 관리되는 해시 범위에 포함되지 않는 경우, S905 단계에서, 제1 스토리지 노드(211)는 제1 해시 값(H1)이 어떤 해시 범위에 포함되는지 판별할 수 있다. S905 단계의 동작은 도 22의 S805 단계의 동작과 유사하므로, 이에 대한 상세한 설명은 생략된다.If the first hash value H1 is not included in the hash range managed by the
제1 해시 값(H1)이 제2 스토리지 노드(212)의 해시 범위(HR21, HR22)에 포함되는 것으로 결정된 경우, S906 단계에서, 제1 스토리지 노드(211)는 제2 스토리지 노드(212)로 제1 해시 값(H1)을 포함하는 읽기 요청(GETa)을 전송할 수 있다. S907 단계에서, 제2 스토리지 노드(212) 및 제2 스토리지 장치(223 또는 224)는 읽기 동작을 수행할 수 있다. When it is determined that the first hash value H1 is included in the hash ranges HR21 and HR22 of the
제1 해시 값(H1)이 제3 스토리지 노드(213)의 해시 범위(HR31, HR32)에 포함되는 것으로 결정된 경우, S908 단계에서, 제1 스토리지 노드(211)는 제3 스토리지 노드(213)로 제1 해시 값(H1)을 포함하는 읽기 요청(GETa)을 전송할 수 있다. S909 단계에서, 제3 스토리지 노드(213) 및 제3 스토리지 장치(225 또는 226)는 읽기 동작을 수행할 수 있다. When it is determined that the first hash value H1 is included in the hash ranges HR31 and HR32 of the
예시적인 실시 예에서, S904 단계의 읽기 동작, S907 단계의 읽기 동작, 및 S909 단계의 읽기 동작은 도 1 내지 도 15를 참조하여 설명된 읽기 동작(해시 값을 읽기 동작)과 유사하므로, 이에 대한 상세한 설명은 생략된다.In an exemplary embodiment, the read operation in step S904, the read operation in step S907, and the read operation in step S909 are similar to the read operation (a hash value read operation) described with reference to FIGS. A detailed description is omitted.
S907 단계의 읽기 동작이 완료된 이후에, S910 단계에서, 제2 스토리지 노드(212)는 읽은 제1 데이터(DT1)를 제1 스토리지 노드(211)로 전송할 수 있다. S909 단계의 읽기 동작이 완료된 이후에, S911 단계에서, 제3 스토리지 노드(213)는 읽은 제1 데이터(DT1)를 제1 스토리지 노드(211)로 전송할 수 있다. After the read operation in step S907 is completed, in step S910 , the
S904 단계의 읽기 동작이 완료되거나, 또는 S910 단계 또는 S911 단계를 통해 제1 데이터(DT1)가 수신된 경우, S912 단계에서, 제1 스토리지 노드(211)는 제1 데이터(DT1)를 클라이언트 서버(201)로 전송할 수 있다.When the read operation of step S904 is completed or the first data DT1 is received through step S910 or S911, in step S912, the
예시적인 실시 예에서, 클라이언트 서버(201)가 제1 스토리지 노드(211)를 통해 제1 객체 식별자(ID1)에 대한 액세스(예를 들어, 쓰기/읽기)를 수행하는 실시 예가 설명되었으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 클라이언트 서버(201)가 제2 객체 식별자(ID2)에 대하여 제2 스토리지 노드(212)를 통해 액세스하는 경우, 클라이언트 서버(201)는 제2 객체 식별자(ID2)에 대응하는 요청을 제2 스토리지 서버(212)로 전송할 수 있다. 제2 스토리지 서버(212)는 제2 해시 값(즉, 쓰기 동작의 경우, 제2 데이터에 대한 해시 값 또는 읽기 동작의 경우, 제2 객체 식별자에 대한 해시 값)을 기반으로 액세스될 스토리지 노드 또는 스토리지 장치를 선택할 수 있다.In an exemplary embodiment, an embodiment in which the
도 20 및 도 22를 참조하여, 특정 스토리지 노드가 다른 스토리지 노드를 경유하여 다른 스토리지 장치를 액세스하는 실시 예가 설명되었으나, 본 발명이 이에 한정되는 것은 아니다. 예를 들어, 특정 스토리지 노드는 다른 스토리지 노드와 연결된 다른 스토리지 장치를 다른 스토리지 노드를 경유하지 않고 액세스할 수 있다. 또는, 특정 스토리지 노드는 다른 스토리지 노드와 연결된 다른 스토리지 장치를 다른 스토리지 노드의 일부 구성(예를 들어, 스위치)만 경유하여 액세스할 수 있다.An embodiment in which a specific storage node accesses another storage device via another storage node has been described with reference to FIGS. 20 and 22 , but the present invention is not limited thereto. For example, a particular storage node may access other storage devices associated with another storage node without going through another storage node. Alternatively, a specific storage node may access another storage device connected to the other storage node via only some configuration (eg, a switch) of the other storage node.
상술된 바와 같이, 본 발명의 실시 예들에 따르면, 데이터에 대한 해시 값을 기반으로 데이터에 대한 중복 제거 기능을 구현하는 스토리지 장치 및 스토리지 서버가 제공된다. 이 경우, 스토리지 노드에서 관리되는 정보가 감소될 수 있으며, 향상된 성능이 제공될 수 있다.As described above, according to embodiments of the present invention, a storage device and a storage server for implementing a deduplication function for data based on a hash value for data are provided. In this case, information managed by the storage node may be reduced, and improved performance may be provided.
도 24는 본 발명의 실시 예에 따른 스토리지 장치가 적용된 데이터 센터를 예시적으로 보여주는 블록도이다. 데이터 센터(2000)는 다양한 데이터를 유지 관리하고, 다양한 데이터에 대한 다양한 서비스를 제공하는 시설로서, 데이터 스토리지 센터로 불릴 수 있다. 데이터 센터(200)는 검색 엔진 또는 데이터 베이스 운용을 위한 시스템일 수 있으며, 다양한 기관에서 사용된 컴퓨팅 시스템일 수 있다. 데이터 센터(2000)는 복수의 애플리케이션 서버들(2100_1~2100_n) 및 복수의 스토리지 서버들(2200_1~2200_m)을 포함할 수 있다. 복수의 애플리케이션 서버들(2100_1~2100_n)의 개수 및 복수의 스토리지 서버들(2200_1~2200_m)의 개수는 다양하게 변형될 수 있다.24 is a block diagram exemplarily illustrating a data center to which a storage device according to an embodiment of the present invention is applied. The
이하에서, 설명의 편의를 위해, 제1 스토리지 서버(2200_1)의 예시가 설명된다. 나머지 스토리지 서버들(2200_2~2200_m) 및 복수의 애플리케이션 서버들(2100_1~2100_n) 각각은 제1 스토리지 서버(2200_1)와 유사한 구조를 가질 수 있다. Hereinafter, for convenience of description, an example of the first storage server 2200_1 will be described. Each of the remaining storage servers 2200_2 to 2200_m and the plurality of application servers 2100_1 to 2100_n may have a structure similar to that of the first storage server 2200_1 .
제1 스토리지 서버(2200_1)는 프로세서(2210_1), 메모리(2220_1), 스위치(2230_1), 네트워크 인터페이스 커넥터(NIC; network interface connector)(2240_1), 및 스토리지 장치(2250_1)를 포함할 수 있다. 프로세서(2210_1)는 제1 스토리지 서버(2200_1)의 전반적인 동작을 제어할 수 있다. 메모리(2220_1)는 프로세서(2210_1)의 제어에 따라 다양한 명령어 또는 데이터를 저장할 수 있다. 프로세서(2210_1)는 메모리(2220_1)를 액세스하여 다양한 명령어를 실행하거나 또는 데이터를 처리하도록 구성될 수 있다. 예시적인 실시 예에서, 메모리(2220_1)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 또는 NVDIMM(Non-Volatile DIMM)과 같은 다양한 종류의 메모리 장치들 중 적어도 하나를 포함할 수 있다. The first storage server 2200_1 may include a processor 2210_1 , a memory 2220_1 , a switch 2230_1 , a network interface connector (NIC) 2240_1 , and a storage device 2250_1 . The processor 2210_1 may control the overall operation of the first storage server 2200_1 . The memory 2220_1 may store various commands or data under the control of the processor 2210_1 . The processor 2210_1 may be configured to access the memory 2220_1 to execute various instructions or process data. In an exemplary embodiment, the memory 2220_1 is a DDR SDRAM (Double Data Rate Synchronous DRAM), HBM (High Bandwidth Memory), HMC (Hybrid Memory Cube), DIMM (Dual In-line Memory Module), Optane DIMM or NVDIMM ( It may include at least one of various types of memory devices such as non-volatile DIMMs.
예시적인 실시 예에서, 제1 스토리지 서버(2200_1)에 포함된 프로세서(2210_1)의 개수 및 메모리(2220_1)의 개수는 다양하게 변형될 수 있다. 예시적인 실시 예에서, 제1 스토리지 서버(2200_1)에 포함된 프로세서(2210_1) 및 메모리(2220_1)는 프로세서-메모리 페어를 구성할 수 있으며, 제1 스토리지 서버(2200_1)에 포함된 프로세서-메모리 페어의 개수는 다양하게 변형될 수 있다. 예시적인 실시 예에서, 제1 스토리지 서버(2200_1)에 포함된 프로세서(2210_1)의 개수 및 메모리(2220_1)의 개수는 서로 다를 수 있다. 프로세서(2210_1)는 싱글 코어 프로세서 또는 멀티 코어 프로세서를 포함할 수 있다. In an exemplary embodiment, the number of processors 2210_1 and the number of memories 2220_1 included in the first storage server 2200_1 may be variously modified. In an exemplary embodiment, the processor 2210_1 and the memory 2220_1 included in the first storage server 2200_1 may constitute a processor-memory pair, and the processor-memory pair included in the first storage server 2200_1 . The number of may be variously modified. In an exemplary embodiment, the number of processors 2210_1 and the number of memories 2220_1 included in the first storage server 2200_1 may be different from each other. The processor 2210_1 may include a single-core processor or a multi-core processor.
스위치(2230_1)는 프로세서(2210_1)의 제어에 따라 프로세서(2210_1) 및 스스토리지 장치(2250_1) 사이를 선택적으로 연결시키거나 또는 NIC(2240_1) 및 스토리지 장치(2250_1) 사이를 선택적으로 연결시킬 수 있다.The switch 2230_1 may selectively connect between the processor 2210_1 and the storage device 2250_1 or between the NIC 2240_1 and the storage device 2250_1 under the control of the processor 2210_1. .
NIC(2240_1)는 제1 스토리지 서버(2200_1)를 네트워크(NT)와 연결시키도록 구성될 수 있다. NIC(2240_1)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(2240_1)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(NT)에 연결될 수 있다. NIC(2240_1)는 내부 메모리, DSP, 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(2210_1) 또는 스위치(2230_1) 등과 연결될 수 있다. 호스트 버스 인터페이스는, ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스들 중 적어도 하나를 포함할 수 있다. 예시적인 실시 예에서, NIC(2240_1)는 프로세서(2210_1), 스위치(2230_1), 및 스토리지 장치(2250_1) 중 적어도 하나와 통합될 수도 있다.The NIC 2240_1 may be configured to connect the first storage server 2200_1 to the network NT. The NIC 2240_1 may include a network interface card, a network adapter, and the like. The NIC 2240_1 may be connected to the network NT by a wired interface, a wireless interface, a Bluetooth interface, an optical interface, or the like. The NIC 2240_1 may include an internal memory, a DSP, a host bus interface, and the like, and may be connected to the processor 2210_1 or the switch 2230_1 through the host bus interface. Host bus interfaces are: ATA (Advanced Technology Attachment), SATA (Serial ATA), e-SATA (external SATA), SCSI (Small Computer Small Interface), SAS (Serial Attached SCSI), PCI (Peripheral Component Interconnection), PCIe ( PCI express), NVMe (NVM express), IEEE 1394, USB (universal serial bus), SD (secure digital) card, MMC (multi-media card), eMMC (embedded multi-media card), UFS (Universal Flash Storage) , eUFS (embedded universal flash storage), CF (compact flash) may include at least one of various interfaces such as a card interface. In an exemplary embodiment, the NIC 2240_1 may be integrated with at least one of the processor 2210_1 , the switch 2230_1 , and the storage device 2250_1 .
스토리지 장치(2250_1)는 프로세서(2210_1)의 제어에 따라 데이터를 저장하거나 또는 저장된 데이터를 출력할 수 있다. 스토리지 장치(2250_1)는 컨트롤러(2251_1), 불휘발성 메모리(2252_1), DRAM(2253_1), 및 인터페이스(2254_1)를 포함할 수 있다. 예시적인 실시 예에서, 스토리지 장치(2250_1)는 보안 또는 프라이버시를 위해 SE(Secure Element)를 더 포함할 수 있다.The storage device 2250_1 may store data or output stored data under the control of the processor 2210_1 . The storage device 2250_1 may include a controller 2251_1 , a nonvolatile memory 2252_1 , a DRAM 2253_1 , and an interface 2254_1 . In an exemplary embodiment, the storage device 2250_1 may further include a Secure Element (SE) for security or privacy.
컨트롤러(2251_1)는 스토리지 장치(2250_1)의 제반 동작을 제어할 수 있다. 예시적인 실시 예에서, 컨트롤러(2250_1)는 SRAM을 포함할 수 있다. 컨트롤러(2251_1)는 인터페이스(2254_1)를 통해 수신된 신호들에 응답하여 불휘발성 메모리(2252_1)에 데이터를 저장하거나 또는 불휘발성 메모리(2252_1)에 저장된 데이터를 출력할 수 있다. 예시적인 실시 예에서, 컨트롤러(2251_1)는 토글 인터페이스 또는 ONFI 인터페이스를 기반으로 불휘발성 메모리(2252_1)를 제어하도록 구성될 수 있다.The controller 2251_1 may control general operations of the storage device 2250_1 . In an exemplary embodiment, the controller 2250_1 may include an SRAM. The controller 2251_1 may store data in the nonvolatile memory 2252_1 or output data stored in the nonvolatile memory 2252_1 in response to signals received through the interface 2254_1 . In an exemplary embodiment, the controller 2251_1 may be configured to control the nonvolatile memory 2252_1 based on a toggle interface or an ONFI interface.
DRAM(2253_1)은 불휘발성 메모리(2252_1)에 저장될 데이터 또는 불휘발성 메모리(2252_1)로부터 읽어진 데이터를 임시 저장하도록 구성될 수 있다. DRAM(2253_1)은 컨트롤러(2251_1)가 동작하는데 필요한 다양한 데이터(예를 들어, 메타 데이터, 매핑 데이터 등)를 저장하도록 구성될 수 있다. 인터페이스(2254_1)는 프로세서(2210_1), 스위치(2230_1), 또는 NIC(2240_1)와 컨트롤러(2251_1) 사이의 물리적 연결을 제공할 수 있다. 예시적인 실시 예에서, 인터페이스(2254_1)는 스토리지 장치(2250_1)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 예시적인 실시 예에서, 인터페이스(2254_1)는 앞서 호스트 인터페이스 버스를 통해 설명된 다양한 인터페이스들 중 적어도 하나를 기반으로 구성될 수 있다. The DRAM 2253_1 may be configured to temporarily store data to be stored in the nonvolatile memory 2252_1 or data read from the nonvolatile memory 2252_1 . The DRAM 2253_1 may be configured to store various data (eg, metadata, mapping data, etc.) required for the controller 2251_1 to operate. The interface 2254_1 may provide a physical connection between the processor 2210_1 , the switch 2230_1 , or the NIC 2240_1 and the controller 2251_1 . In an exemplary embodiment, the interface 2254_1 may be implemented in a DAS (Direct Attached Storage) method for directly connecting the storage device 2250_1 with a dedicated cable. In an exemplary embodiment, the interface 2254_1 may be configured based on at least one of the various interfaces described above through the host interface bus.
상술된 제1 스토리지 서버(2200_1)의 구성들은 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다. 상술된 제1 스토리지 서버(2200_1)의 구성들은 다른 스토리지 서버들 또는 복수의 애플리케이션 서버들 각각에 적용될 수 있다. 예시적인 실시 예에서, 복수의 애플리케이션 서버들(2100_1~2100_n) 각각에서, 스토리지 장치(2150_1)는 선택적으로 생략될 수 있다.The above-described configurations of the first storage server 2200_1 are exemplary, and the scope of the present invention is not limited thereto. The above-described configurations of the first storage server 2200_1 may be applied to other storage servers or each of a plurality of application servers. In an exemplary embodiment, in each of the plurality of application servers 2100_1 to 2100_n, the storage device 2150_1 may be selectively omitted.
복수의 애플리케이션 서버들(2100_1~2100_n) 및 복수의 스토리지 서버들(2200_1~2200_m)은 네트워크(NT)를 통해 서로 통신할 수 있다. 네트워크(NT)는 FC(Fibre Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(NT)의 액세스 방식에 따라 스토리지 서버들(2200_1~2200_m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.The plurality of application servers 2100_1 to 2100_n and the plurality of storage servers 2200_1 to 2200_m may communicate with each other through the network NT. The network NT may be implemented using Fiber Channel (FC) or Ethernet. In this case, FC is a medium used for relatively high-speed data transmission, and an optical switch providing high performance/high availability may be used. Depending on the access method of the network NT, the storage servers 2200_1 to 2200_m may be provided as file storage, block storage, or object storage.
예시적인 실시 예에서, 네트워크(NT)는 SAN(Storage Area Network)와 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 또는, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 예시적인 실시 예에서, 네트워크(NT)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(NT)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.In an exemplary embodiment, the network NT may be a storage-only network such as a storage area network (SAN). For example, the SAN may be an FC-SAN that uses an FC network and is implemented according to FC Protocol (FCP). Alternatively, the SAN may be an IP-SAN that uses a TCP/IP network and is implemented according to an iSCSI (SCSI over TCP/IP or Internet SCSI) protocol. In an exemplary embodiment, the network NT may be a general network such as a TCP/IP network. For example, the network NT may be implemented according to protocols such as FC over Ethernet (FCoE), Network Attached Storage (NAS), and NVMe over Fabrics (NVMe-oF).
예시적인 실시 예에서, 복수의 애플리케이션 서버들(2100_1~2100_n) 중 적어도 하나는 네트워크(NT)를 통해 복수의 애플리케이션 서버들(2100_1~2100_n) 중 적어도 다른 하나 또는 복수의 스토리지 서버들(2200_1~2200_m) 중 적어도 하나를 액세스하도록 구성될 수 있다. In an exemplary embodiment, at least one of the plurality of application servers 2100_1 to 2100_n is at least another one of the plurality of application servers 2100_1 to 2100_n or a plurality of storage servers 2200_1 to 2200_m through the network NT ) can be configured to access at least one of.
예를 들어, 제1 애플리케이션 서버(2100_1)는 사용자 또는 클라이언트가 요청한 데이터를 네트워크(NT)를 통해 복수의 스토리지 서버들(2200_1~2200_m) 중 적어도 하나에 저장할 수 있다. 또는 제1 애플리케이션 서버(2100_1)는 사용자 또는 클라이언트가 요청한 데이터를 네트워크(NT)를 통해 복수의 스토리지 서버들(2200_1~2200_m) 중 적어도 하나로부터 획득할 수 있다. 이 경우, 제1 애플리케이션 서버(2100_1)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.For example, the first application server 2100_1 may store data requested by a user or a client in at least one of the plurality of storage servers 2200_1 to 2200_m through the network NT. Alternatively, the first application server 2100_1 may obtain data requested by a user or a client from at least one of the plurality of storage servers 2200_1 to 2200_m through the network NT. In this case, the first application server 2100_1 may be implemented as a web server or DBMS (Database Management System).
즉, 제1 애플리케이션 서버(2100_1)의 프로세서(2110_1)는 네트워크(NT)를 통해, 다른 애플리케이션 서버(예를 들어, 2100_n)의 메모리(2120_n) 또는 스토리지 장치(2150_n)을 액세스할 수 있다. 또는 제1 애플리케이션 서버(2100_1)의 프로세서(2110_1)는 네트워크(NT)를 통해, 제1 스토리지 서버(2200_1)의 메모리(2220_1) 또는 스토리지 장치(2250_1)를 액세스할 수 있다. 이를 통해, 제1 애플리케이션 서버(2100_1)는 다른 애플리케이션 서버들(2100_2~2100_n) 또는 복수의 스토리지 서버들(2200_1~2200_m)에 저장된 데이터에 대한 다양한 동작들을 수행할 수 있다. 예를 들어, 제1 애플리케이션 서버(2100_1)는 다른 애플리케이션 서버들(2100_2~2100_n) 또는 복수의 스토리지 서버들(2200_1~2200_m) 사이에서 데이터를 이동 또는 카피(copy)하기 위한 명령어를 실행하거나 또는 발행할 수 있다. 이 경우, 이동 또는 카피되는 데이터는 스토리지 서버들(2200_1~2200_m)의 스토리지 장치들(2250_1~2250_m)로부터 스토리지 서버들(2200_1~2200_m)의 메모리들(2220_1~2220_m)를 거치거나 또는 직접 애플리케이션 서버들(2100_1~2100_n)의 메모리들(2120_1~2120_n)로 이동될 수 있다. 네트워크(NT)를 통해 전달되는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.That is, the processor 2110_1 of the first application server 2100_1 may access the memory 2120_n or the storage device 2150_n of another application server (eg, 2100_n) through the network NT. Alternatively, the processor 2110_1 of the first application server 2100_1 may access the memory 2220_1 or the storage device 2250_1 of the first storage server 2200_1 through the network NT. Through this, the first application server 2100_1 may perform various operations on data stored in the other application servers 2100_2 to 2100_n or the plurality of storage servers 2200_1 to 2200_m. For example, the first application server 2100_1 executes or issues a command to move or copy data between other application servers 2100_2 to 2100_n or a plurality of storage servers 2200_1 to 2200_m can do. In this case, the moved or copied data is transferred from the storage devices 2250_1 to 2250_m of the storage servers 2200_1 to 2200_m through the memories 2220_1 to 2220_m of the storage servers 2200_1 to 2200_m or directly to the application server. It may be moved to the memories 2120_1 to 2120_n of the ones 2100_1 to 2100_n. Data transmitted over the network NT may be encrypted data for security or privacy.
예시적인 실시 예에서, 스토리지 서버들(2200_1~2200_m)은 도 1 내지 도 23을 참조하여 설명된 스토리지 노드들일 수 있고, 스토리지 서버들(2200_1~2200_m)에 포함된 스토리지 장치들(2250_1~2250_m)은 도 1 내지 도 23을 참조하여 설명된 스토리지 장치들일 수 있다. 즉, 도 24에 도시된 데이터 센터(2000) 스토리지 서버들(2200_1~2200_m), 또는 스토리지 장치들(2250_1~2250_m)은 도 1 내지 도 23을 참조하여 설명된 쓰기 동작, 읽기 동작, 및 소거 동작을 지원하도록 구성될 수 있다. In an exemplary embodiment, the storage servers 2200_1 to 2200_m may be the storage nodes described with reference to FIGS. 1 to 23 , and storage devices 2250_1 to 2250_m included in the storage servers 2200_1 to 2200_m. may be the storage devices described with reference to FIGS. 1 to 23 . That is, the
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.The above are specific embodiments for carrying out the present invention. The present invention will include not only the above-described embodiments, but also simple design changes or easily changeable embodiments. In addition, the present invention will include techniques that can be easily modified and implemented using the embodiments. Accordingly, the scope of the present invention should not be limited to the above-described embodiments and should be defined by the claims and equivalents of the claims of the present invention as well as the claims to be described later.
Claims (20)
외부 장치로부터 제1 객체 식별자 및 제1 데이터를 포함하는 제1 쓰기 요청을 수신하는 단계;
제1 데이터에 대한 해시 연산을 수행하여 제1 해시 값을 생성하는 단계;
상기 제1 해시 값에 대응하는 제1 엔트리가 제1 테이블에 존재하는 경우:
상기 제1 엔트리가 비어 있다면, 제1 물리 어드레스에 대응하는 영역에 상기 제1 데이터를 저장하고, 상기 제1 엔트리가 상기 제1 해시 값, 상기 제1 물리 어드레스, 및 상기 제1 참조 카운트를 포함하도록 상기 제1 테이블을 갱신하고;
상기 제1 엔트리가 비어있지 않다면, 상기 제1 데이터에 대한 저장 동작 없이, 상기 제1 엔트리에 포함된 제1 참조 카운트를 증가시키는 단계; 및
상기 제1 엔트리가 상기 제1 테이블에서 존재하지 않는 경우, 상기 외부 장치로 에러를 리턴하는 단계를 포함하고,
상기 제1 테이블은 복수의 엔트리들을 포함하고,
상기 복수의 엔트리들 각각은 데이터에 대한 해시 값, 상기 데이터에 대응하는 물리 어드레스, 및 상기 데이터에 대한 참조 카운트에 대한 정보를 포함하는 동작 방법.A method of operating a storage device, comprising:
receiving a first write request including a first object identifier and first data from an external device;
generating a first hash value by performing a hash operation on the first data;
When a first entry corresponding to the first hash value exists in the first table:
If the first entry is empty, the first data is stored in an area corresponding to a first physical address, and the first entry includes the first hash value, the first physical address, and the first reference count. update the first table to
if the first entry is not empty, incrementing a first reference count included in the first entry without storing the first data; and
returning an error to the external device when the first entry does not exist in the first table;
The first table includes a plurality of entries,
Each of the plurality of entries includes a hash value for data, a physical address corresponding to the data, and information about a reference count for the data.
상기 제1 쓰기 요청은 상기 제1 데이터에 대한 제2 해시 값을 더 포함하고,
상기 외부 장치로부터 수신된 상기 제2 해시 값 및 상기 해시 연산을 통해 연산된 상기 제1 해시 값이 서로 동일하지 않은 경우, 상기 외부 장치로 에러를 리턴하는 단계를 더 포함하는 동작 방법.
The method of claim 1,
The first write request further includes a second hash value for the first data,
and returning an error to the external device when the second hash value received from the external device and the first hash value calculated through the hash operation are not identical to each other.
상기 외부 장치로부터 상기 제1 객체 식별자 및 상기 제1 해시 값을 포함하는 제1 읽기 요청을 수신하는 단계;
상기 제1 해시 값에 대응하는 상기 제1 엔트리의 상기 제1 물리 어드레스를 기반으로 상기 제1 데이터를 읽는 단계;
상기 제1 데이터에 대한 해시 연산을 통해 제3 해시 값을 생성하는 단계; 및
상기 제1 해시 값 및 상기 제3 해시 값이 동일한 경우, 상기 제1 데이터를 상기 외부 장치로 전송하는 단계를 더 포함하는 동작 방법.The method of claim 1,
receiving a first read request including the first object identifier and the first hash value from the external device;
reading the first data based on the first physical address of the first entry corresponding to the first hash value;
generating a third hash value through a hash operation on the first data; and
If the first hash value and the third hash value are the same, transmitting the first data to the external device.
상기 제1 읽기 요청을 수신한 이후에, 상기 제1 해시 값에 대응하는 상기 제1 엔트리가 상기 제1 테이블이 포함되지 않는 경우, 상기 외부 장치로 에러를 리턴하는 단계를 더 포함하는 동작 방법.4. The method of claim 3,
and returning an error to the external device when the first table is not included in the first entry corresponding to the first hash value after receiving the first read request.
상기 외부 장치로부터 상기 제1 객체 식별자 및 상기 제1 해시 값을 포함하는 제1 삭제 요청을 수신하는 단계; 및
상기 제1 해시 값에 대응하는 상기 제1 엔트리의 상기 제1 참조 카운트를 미리 정해진 값만큼 감소시키는 단계를 더 포함하는 동작 방법.The method of claim 1,
receiving a first deletion request including the first object identifier and the first hash value from the external device; and
decrementing the first reference count of the first entry corresponding to the first hash value by a predetermined value.
상기 제1 엔트리의 상기 제1 참조 카운트가 0(zero)으로 감소된 경우, 상기 제1 엔트리의 상기 제1 물리 어드레스에 대응하는 영역에 저장된 상기 제1 데이터는 가비지 콜렉션 동작시, 무효 데이터로 선택되는 동작 방법.6. The method of claim 5,
When the first reference count of the first entry is decremented to zero, the first data stored in an area corresponding to the first physical address of the first entry is selected as invalid data during a garbage collection operation. how it works.
상기 제1 참조 카운트는 상기 제1 데이터를 참조하는 객체들의 개수를 가리키는 동작 방법.The method of claim 1,
The first reference count indicates the number of objects referencing the first data.
외부 장치로부터 제1 객체 식별자, 제1 데이터, 및 플래그를 포함하는 제2 쓰기 요청을 수신하는 단계;
상기 제1 데이터에 대한 상기 해시 연산을 수행하여 상기 제1 해시 값을 생성하는 단계; 및
상기 플래그를 기반으로, 상기 제1 해시 값에 대응하는 상기 제1 엔트리가 상기 제1 테이블에 포함되는지와 무관하게, 상기 제1 데이터를 제2 물리 어드레스에 대응하는 영역에 저장하고, 상기 상기 제1 해시 값 및 상기 제2 물리 어드레스를 포함하는 제2 엔트리를 상기 제2 테이블에 추가하는 단계를 포함하는 동작 방법.The method of claim 1,
receiving a second write request including a first object identifier, first data, and a flag from an external device;
generating the first hash value by performing the hash operation on the first data; and
Based on the flag, regardless of whether the first entry corresponding to the first hash value is included in the first table, the first data is stored in an area corresponding to a second physical address; and adding a second entry comprising one hash value and the second physical address to the second table.
상기 스토리지 노드에 의해, 외부 클라이언트 서버로부터 제1 객체 식별자 및 제1 데이터를 포함하는 제1 쓰기 요청을 수신하는 단계;
상기 스토리지 노드에 의해, 상기 제1 데이터에 대한 해시 연산을 수행하여, 제1 해시 값을 생성하는 단계;
상기 스토리지 노드에 의해, 상기 복수의 스토리지 장치들 각각에 할당된 복수의 해시 범위들 중 상기 제1 해시 값이 포함된 제1 해시 범위를 판별하는 단계;
상기 스토리지 노드에 의해, 상기 복수의 스토리지 장치들 중 상기 제1 해시 범위에 대응하는 제1 스토리지 장치로 상기 제1 객체 식별자, 상기 제1 데이터, 및 상기 제1 해시 값을 포함하는 제2 쓰기 요청을 전송하는 단계;
상기 제1 스토리지 장치에 의해, 상기 제2 쓰기 요청에 포함된 상기 제1 데이터에 대한 해시 연산을 수행하여, 제2 해시 값을 생성하는 단계;
상기 제1 해시 값 및 상기 제2 해시 값이 동일한 경우, 상기 제1 스토리지 장치에 의해, 상기 제1 해시 값에 대응하는 제1 엔트리가 제1 테이블에 존재하는 것에 응답하여, 상기 제1 데이터에 대한 저장 동작 없이, 상기 제1 엔트리의 제1 참조 카운트를 증가시키는 단계;
상기 제1 스토리지 장치에 의해, 상기 스토리지 노드로 상기 제2 쓰기 요청에 대한 완료 응답을 전송하는 단계;
상기 스토리지 노드에 의해, 상기 제1 객체 식별자 및 상기 제1 해시 값을 기반으로 제2 테이블을 갱신하는 단계를 포함하고,
상기 제1 테이블은 복수의 엔트리들을 포함하고,
상기 복수의 엔트리들 각각은 데이터에 대한 해시 값, 상기 데이터에 대응하는 물리 어드레스, 및 상기 데이터에 대한 참조 카운트에 대한 정보를 포함하고,
상기 제2 테이블은 복수의 객체 식별자들 및 대응하는 해시 값에 대한 정보를 포함하는 동작 방법. A method of operating a storage server comprising a plurality of storage devices and a storage node configured to manage the plurality of storage devices, the method comprising:
receiving, by the storage node, a first write request including a first object identifier and first data from an external client server;
generating, by the storage node, a first hash value by performing a hash operation on the first data;
determining, by the storage node, a first hash range including the first hash value from among a plurality of hash ranges allocated to each of the plurality of storage devices;
A second write request including the first object identifier, the first data, and the first hash value to a first storage device corresponding to the first hash range among the plurality of storage devices by the storage node sending a;
generating, by the first storage device, a second hash value by performing a hash operation on the first data included in the second write request;
When the first hash value and the second hash value are the same, in response to, by the first storage device, a first entry corresponding to the first hash value exists in the first table, to the first data incrementing a first reference count of the first entry without a store operation for the first entry;
transmitting, by the first storage device, a completion response to the second write request to the storage node;
updating, by the storage node, a second table based on the first object identifier and the first hash value;
The first table includes a plurality of entries,
Each of the plurality of entries includes information about a hash value for data, a physical address corresponding to the data, and a reference count for the data,
The second table includes information on a plurality of object identifiers and corresponding hash values.
상기 스토리지 노드에 의한 해시 연산 및 상기 제1 스토리지 장치에 의한 해시 연산은 서로 동일한 연산인 동작 방법.10. The method of claim 9,
The hash operation by the storage node and the hash operation by the first storage device are the same operation as each other.
상기 제1 해시 값 및 상기 제2 해시 값이 동일하지 않은 경우, 상기 제1 스토리지 장치에 의해, 상기 스토리지 노드로 에러 정보를 리턴하는 단계; 및
상기 스토리지 노드에 의해, 상기 에러 정보에 응답하여 에러 관리를 수행하는 단계를 더 포함하는 동작 방법.10. The method of claim 9,
returning, by the first storage device, error information to the storage node when the first hash value and the second hash value are not the same; and
and performing, by the storage node, error management in response to the error information.
상기 에러 관리는 상기 제1 데이터에 대한 해시 연산을 재수행하여 상기 제1 해시 값을 재생성하는 동작 및 상기 제2 쓰기 요청을 상기 제1 스토리지 장치로 재전송하는 동작을 포함하는 동작 방법.12. The method of claim 11,
The error management may include re-performing a hash operation on the first data to regenerate the first hash value and retransmitting the second write request to the first storage device.
상기 스토리지 노드에 의해, 상기 복수의 스토리지 장치들 각각으로부터 장치 크기 정보를 수신하는 단계; 및
상기 스토리지 노드에 의해, 상기 복수의 스토리지 장치들 각각으로부터의 상기 장치 크기 정보를 기반으로 상기 복수의 스토리지 장치들로 상기 복수의 해시 범위들을 각각 할당하는 단계를 더 포함하고,
상기 복수의 해시 범위들 각각은 서로 중첩되지 않는 동작 방법.10. The method of claim 9,
receiving, by the storage node, device size information from each of the plurality of storage devices; and
allocating, by the storage node, each of the plurality of hash ranges to the plurality of storage devices based on the device size information from each of the plurality of storage devices;
Each of the plurality of hash ranges do not overlap each other.
상기 스토리지 노드에 의해, 상기 제1 해시 값이 상기 복수의 해시 범위들에 포함되지 않는 것에 응답하여, 상기 외부 장치로 에러를 리턴하는 단계를 더 포함하는 동작 방법.14. The method of claim 13,
returning, by the storage node, an error to the external device in response to the first hash value not being included in the plurality of hash ranges.
상기 스토리지 노드에 의해, 상기 외부 클라이언트 서버로부터 상기 제1 객체 식별자를 포함하는 제1 읽기 요청을 수신하는 단계;
상기 스토리지 노드에 의해, 상기 제2 테이블을 기반으로 상기 제1 객체 식별자에 대응하는 상기 제1 해시 값을 검출하는 단계;
상기 스토리지 노드에 의해, 상기 제1 객체 식별자 및 상기 제1 해시 값을 포함하는 제2 읽기 요청을 상기 제1 스토리지 장치로 전송하는 단계;
상기 제1 스토리지 장치에 의해, 상기 제1 해시 값에 대응하는 상기 제1 엔트리의 제1 물리 어드레스를 기반으로 상기 제1 데이터를 읽는 단계;
상기 제1 스토리지 장치에 의해 상기 제1 데이터를 상기 스토리지 노드로 전송하는 단계; 및
상기 스토리지 노드에 의해, 상기 제1 데이터를 상기 외부 클라이언트 서버로 전송하는 단계를 포함하는 동작 방법.15. The method of claim 14,
receiving, by the storage node, a first read request including the first object identifier from the external client server;
detecting, by the storage node, the first hash value corresponding to the first object identifier based on the second table;
transmitting, by the storage node, a second read request including the first object identifier and the first hash value to the first storage device;
reading, by the first storage device, the first data based on a first physical address of the first entry corresponding to the first hash value;
transmitting the first data to the storage node by the first storage device; and
and sending, by the storage node, the first data to the external client server.
상기 외부 장치로부터 수신된 상기 제1 데이터의 크기가 기준 크기보다 큰 경우, 상기 스토리지 노드에 의해, 상기 제1 데이터를 상기 기준 크기 단위로 분할하는 단계; 및
상기 분할된 데이터 각각에 대한 객체 식별자를 재설정하는 단계를 더 포함하는 동작 방법.10. The method of claim 9,
dividing, by the storage node, the first data into units of the reference size when the size of the first data received from the external device is larger than the reference size; and
The method further comprising the step of resetting an object identifier for each of the divided data.
불휘발성 메모리; 및
상기 불휘발성 메모리를 제어하도록 구성된 스토리지 컨트롤러를 포함하고,
상기 스토리지 컨트롤러는:
제1 테이블을 저장하도록 구성된 메모리;
외부 장치로부터 수신된 제1 데이터에 대한 해시 연산을 수행하여 제1 해시 값을 생성하도록 구성된 해시 모듈; 및
상기 제1 테이블에서 상기 제1 해시 값에 대응하는 제1 엔트리를 검색하고, 상기 검색 결과를 기반으로 상기 제1 데이터를 상기 불휘발성 메모리에 선택적으로 저장하도록 구성된 중복 제거 관리자를 포함하고,
상기 제1 엔트리가 상기 제1 테이블에 포함된 경우, 상기 중복 제거 관리자는 상기 제1 데이터를 상기 불휘발성 메모리에 저장하는 것 없이, 상기 제1 엔트리의 제1 참조 카운트를 증가시키고,
상기 제1 엔트리가 상기 제1 테이블에 포함되지 않은 경우, 상기 중복 제거 관리자는 상기 제1 데이터를 상기 불휘발성 메모리의 제1 물리 어드레스에 대응하는 영역에 저장하고, 상기 제1 해시 값, 상기 제1 물리 어드레스, 및 상기 제1 참조 카운트를 포함하는 상기 제1 엔트리를 상기 제1 테이블에 추가하도록 구성된 스토리지 장치.A storage device comprising:
non-volatile memory; and
a storage controller configured to control the nonvolatile memory;
The storage controller is:
a memory configured to store the first table;
a hash module configured to generate a first hash value by performing a hash operation on first data received from an external device; and
a deduplication manager configured to search the first table for a first entry corresponding to the first hash value and selectively store the first data in the nonvolatile memory based on the search result;
when the first entry is included in the first table, the deduplication manager increments a first reference count of the first entry without storing the first data in the nonvolatile memory;
When the first entry is not included in the first table, the deduplication manager stores the first data in an area corresponding to a first physical address of the nonvolatile memory, the first hash value, the first and add the first entry comprising one physical address and the first reference count to the first table.
상기 스토리지 컨트롤러는 상기 불휘발성 메모리와 통신하도록 구성된 메모리 인터페이스 회로를 더 포함하고,
상기 제1 엔트리가 상기 제1 테이블에 포함된 경우, 상기 제1 데이터는 상기 메모리 인터페이스 회로를 통해 상기 불휘발성 메모리로 전송되지 않는 스토리지 장치.18. The method of claim 17,
the storage controller further comprises a memory interface circuit configured to communicate with the nonvolatile memory;
When the first entry is included in the first table, the first data is not transferred to the nonvolatile memory through the memory interface circuit.
상기 스토리지 컨트롤러는 상기 불휘발성 메모리에 대한 가비지 콜렉션을 수행하도록 구성된 플래시 변환 계층을 더 포함하고,
상기 가비지 콜렉션 중, 상기 플래시 변환 계층은 상기 제1 테이블에 포함된 복수의 참조 카운트들 중 0(zero)의 값을 갖는 참조 카운트와 대응되는 물리 어드레스에 저장된 데이터를 무효 데이터로 결정하는 스토리지 장치.18. The method of claim 17,
the storage controller further comprises a flash translation layer configured to perform garbage collection on the nonvolatile memory;
During the garbage collection, the flash translation layer determines, as invalid data, data stored in a physical address corresponding to a reference count having a value of 0 among a plurality of reference counts included in the first table.
상기 스토리지 컨트롤러는 상기 외부 장치와 통신하도록 구성된 호스트 인터페이스 회로를 더 포함하고,
상기 호스트 인터페이스 회로는 객체-기반 인터페이스를 기반으로 동작하는 스토리지 장치.18. The method of claim 17,
the storage controller further comprises a host interface circuit configured to communicate with the external device;
The host interface circuit is a storage device that operates based on an object-based interface.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200164583A KR20220077208A (en) | 2020-11-30 | 2020-11-30 | Storage device with data deduplication, operation method of storage device, and operation method of storage server |
DE102021131101.2A DE102021131101A1 (en) | 2020-11-30 | 2021-11-26 | Storage facility with data deduplication, operation method of the storage facility and operation method of a storage server |
US17/456,821 US11947419B2 (en) | 2020-11-30 | 2021-11-29 | Storage device with data deduplication, operation method of storage device, and operation method of storage server |
CN202111439968.0A CN114579045A (en) | 2020-11-30 | 2021-11-30 | Storage device, operation method of storage device, and operation method of storage server |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200164583A KR20220077208A (en) | 2020-11-30 | 2020-11-30 | Storage device with data deduplication, operation method of storage device, and operation method of storage server |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220077208A true KR20220077208A (en) | 2022-06-09 |
Family
ID=81586227
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200164583A KR20220077208A (en) | 2020-11-30 | 2020-11-30 | Storage device with data deduplication, operation method of storage device, and operation method of storage server |
Country Status (4)
Country | Link |
---|---|
US (1) | US11947419B2 (en) |
KR (1) | KR20220077208A (en) |
CN (1) | CN114579045A (en) |
DE (1) | DE102021131101A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102599116B1 (en) * | 2023-02-20 | 2023-11-07 | 서강대학교산학협력단 | Data input and output method using storage node based key-value srotre |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3823089B2 (en) * | 2003-01-27 | 2006-09-20 | インターナショナル・ビジネス・マシーンズ・コーポレーション | Fixed-length data search device, fixed-length data search method, computer program, and computer-readable recording medium |
US7930559B1 (en) | 2006-06-30 | 2011-04-19 | Emc Corporation | Decoupled data stream and access structures |
US8819452B2 (en) * | 2009-11-25 | 2014-08-26 | Cleversafe, Inc. | Efficient storage of encrypted data in a dispersed storage network |
US8738860B1 (en) * | 2010-10-25 | 2014-05-27 | Tilera Corporation | Computing in parallel processing environments |
US10162553B2 (en) | 2010-11-24 | 2018-12-25 | Western Digital Technologies, Inc. | Methods and systems for object level de-duplication for solid state devices |
US20120159098A1 (en) * | 2010-12-17 | 2012-06-21 | Microsoft Corporation | Garbage collection and hotspots relief for a data deduplication chunk store |
US9141554B1 (en) * | 2013-01-18 | 2015-09-22 | Cisco Technology, Inc. | Methods and apparatus for data processing using data compression, linked lists and de-duplication techniques |
KR20140114515A (en) | 2013-03-15 | 2014-09-29 | 삼성전자주식회사 | Nonvolatile memory device and deduplication method thereof |
US9323610B2 (en) * | 2014-01-30 | 2016-04-26 | Sandisk Technologies Inc. | Non-blocking commands |
US8850108B1 (en) * | 2014-06-04 | 2014-09-30 | Pure Storage, Inc. | Storage cluster |
US10437784B2 (en) | 2015-01-30 | 2019-10-08 | SK Hynix Inc. | Method and system for endurance enhancing, deferred deduplication with hardware-hash-enabled storage device |
JP5976980B1 (en) * | 2015-08-25 | 2016-08-24 | 株式会社東芝 | Hierarchical storage system, computer using hierarchical storage device, and method for correcting count of access to file |
US10761758B2 (en) | 2015-12-21 | 2020-09-01 | Quantum Corporation | Data aware deduplication object storage (DADOS) |
JP2018041248A (en) | 2016-09-07 | 2018-03-15 | 富士通株式会社 | Storage control device, storage system, storage control method, and storage control program |
JP6805816B2 (en) | 2016-12-27 | 2020-12-23 | 富士通株式会社 | Information processing equipment, information processing system, information processing method and program |
US10409518B1 (en) | 2017-04-20 | 2019-09-10 | Seagate Technology Llc | Reordered local data deduplication in storage devices |
US10691340B2 (en) | 2017-06-20 | 2020-06-23 | Samsung Electronics Co., Ltd. | Deduplication of objects by fundamental data identification |
US11307804B2 (en) * | 2019-12-16 | 2022-04-19 | Samsung Electronics Co., Ltd. | Enhanced SSD reliability |
US11288212B2 (en) * | 2019-12-18 | 2022-03-29 | Samsung Electronics Co., Ltd. | System, apparatus, and method for secure deduplication |
JP2021128699A (en) * | 2020-02-17 | 2021-09-02 | 株式会社日立製作所 | Distribution storage apparatus and data management method of distribution storage apparatus |
-
2020
- 2020-11-30 KR KR1020200164583A patent/KR20220077208A/en unknown
-
2021
- 2021-11-26 DE DE102021131101.2A patent/DE102021131101A1/en active Pending
- 2021-11-29 US US17/456,821 patent/US11947419B2/en active Active
- 2021-11-30 CN CN202111439968.0A patent/CN114579045A/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102599116B1 (en) * | 2023-02-20 | 2023-11-07 | 서강대학교산학협력단 | Data input and output method using storage node based key-value srotre |
Also Published As
Publication number | Publication date |
---|---|
DE102021131101A1 (en) | 2022-06-02 |
US11947419B2 (en) | 2024-04-02 |
US20220171676A1 (en) | 2022-06-02 |
CN114579045A (en) | 2022-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200019516A1 (en) | Primary Data Storage System with Staged Deduplication | |
US10248623B1 (en) | Data deduplication techniques | |
CN107111452B (en) | Data migration method and device applied to computer system and computer system | |
JP2014525073A (en) | Deduplication in extent-based architecture | |
US10860481B2 (en) | Data recovery method, data recovery system, and computer program product | |
US11573928B2 (en) | Techniques for data deduplication | |
US11409454B1 (en) | Container ownership protocol for independent node flushing | |
US10241934B2 (en) | Shared memory controller, shared memory module, and memory sharing system | |
US9558232B1 (en) | Data movement bulk copy operation | |
US11340829B1 (en) | Techniques for log space management involving storing a plurality of page descriptor (PDESC) page block (PB) pairs in the log | |
US10963177B2 (en) | Deduplication using fingerprint tries | |
US11068299B1 (en) | Managing file system metadata using persistent cache | |
US11281390B2 (en) | Techniques for data migration | |
KR20220077208A (en) | Storage device with data deduplication, operation method of storage device, and operation method of storage server | |
CN113918088A (en) | RAID storage device, host and RAID system | |
CN117112219A (en) | Method and device for accessing memory data of host | |
US11115490B2 (en) | Host based read cache for san supporting NVMEF with E2E validation | |
KR20230078577A (en) | Synchronous write method and device, storage system and electronic device | |
US11868256B2 (en) | Techniques for metadata updating and retrieval | |
US11662949B2 (en) | Storage server, a method of operating the same storage server and a data center including the same storage server | |
US20210311654A1 (en) | Distributed Storage System and Computer Program Product | |
US11327895B1 (en) | Protocol for processing requests that assigns each request received by a node a sequence identifier, stores data written by the request in a cache page block, stores a descriptor for the request in a cache page descriptor, and returns a completion acknowledgement of the request | |
US11615063B2 (en) | Similarity deduplication | |
US9501290B1 (en) | Techniques for generating unique identifiers | |
US11416462B2 (en) | Techniques for efficient data deduplication |