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 PDF

Info

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
Application number
KR1020200164583A
Other languages
Korean (ko)
Inventor
황주영
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020200164583A priority Critical patent/KR20220077208A/en
Priority to DE102021131101.2A priority patent/DE102021131101A1/en
Priority to US17/456,821 priority patent/US11947419B2/en
Priority to CN202111439968.0A priority patent/CN114579045A/en
Publication of KR20220077208A publication Critical patent/KR20220077208A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

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

데이터 중복 제거 기능을 갖는 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 서버의 동작 방법{STORAGE DEVICE WITH DATA DEDUPLICATION, OPERATION METHOD OF STORAGE DEVICE, AND OPERATION METHOD OF STORAGE SERVER}STORAGE DEVICE WITH DATA DEDUPLICATION, OPERATION METHOD OF STORAGE DEVICE, AND OPERATION METHOD OF STORAGE SERVER

본 발명은 서버 시스템에 관한 것으로, 좀 더 상세하게는 데이터 중복 제거 기능을 갖는 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 서버의 동작 방법에 관한 것이다. 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 server system 100 may include a client server 101 and a storage server 102 . The server system 100 may be a data sensor or a data storage center that maintains various data and provides various services for various data. The server system 100 may be a system for operating a search engine or a database, and may be a computing system used in various institutions. The server system 100 may be a storage system that provides a cloud service or an on-premise service.

클라이언트 서버(101)는 다양한 데이터에 대한 다양한 서비스를 사용하는 사용자 또는 사용자의 단말기 또는 사용자의 컴퓨팅 시스템을 가리킬 수 있다. 클라이언트 서버(101)는 스토리지 서버(102)에 데이터를 저장하거나 또는 스토리지 서버(102)에 저장된 데이터를 읽을 수 있다.The client server 101 may indicate a user or a user's terminal or a user's computing system using various services for various data. The client server 101 may store data in the storage server 102 or read data stored in the storage server 102 .

스토리지 서버(102)는 클라이언트 서버(101)의 요청에 따라, 데이터를 저장하거나 또는 저장된 데이터를 클라이언트 서버(101)로 전송할 수 있다. 예시적인 실시 예에서, 클라이언트 서버(101) 및 스토리지 서버(102)는 네트워크(미도시)를 통해 통신할 수 있다.The storage server 102 may store data or transmit the stored data to the client server 101 according to a request of the client server 101 . In an exemplary embodiment, the client server 101 and the storage server 102 may communicate via a network (not shown).

스토리지 서버(102)는 스토리지 노드(110) 및 복수의 스토리지 장치들(120, 130)을 포함할 수 있다. 스토리지 노드(110)는 스토리지 서버(102)에 포함된 스토리지 장치들(120, 130)를 관리하도록 구성될 수 있다. 복수의 스토리지 장치들(120, 130) 각각은 스토리지 노드(110)의 제어에 따라 데이터를 저장하거나 또는 저장된 데이터를 출력할 수 있다. 복수의 스토리지 장치들(120, 130) 각각은 SSD(solid state drive)와 같은 대용량 저장 매체일 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 스토리지 노드(110) 및 복수의 스토리지 장치들(120, 130) 각각은 객체-기반 인터페이스를 통해 서로 통신할 수 있다. 예를 들어, 객체-기반 인터페이스는 종래의 블록-기반 인터페이스와 달리, 객체에 대한 정보를 기반으로 데이터를 관리하는 인터페이스 타입을 가리킬 수 있다. 예시적인 실시 예에서, 스토리지 노드(110)는 스토리지 서버(102)에 포함된 서버 컨트롤러를 가리킬 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다. The storage server 102 may include a storage node 110 and a plurality of storage devices 120 and 130 . The storage node 110 may be configured to manage the storage devices 120 and 130 included in the storage server 102 . Each of the plurality of storage devices 120 and 130 may store data or output stored data under the control of the storage node 110 . Each of the plurality of storage devices 120 and 130 may be a mass storage medium such as a solid state drive (SSD), but the scope of the present invention is not limited thereto. Each of the storage node 110 and the plurality of storage devices 120 and 130 may communicate with each other through an object-based interface. For example, the object-based interface may refer to an interface type that manages data based on information about an object, unlike a conventional block-based interface. In an exemplary embodiment, the storage node 110 may refer to a server controller included in the storage server 102 , but the scope of the present invention is not limited thereto.

스토리지 서버(102)는 데이터에 대한 중복 제거(deduplication) 기능을 제공할 수 있다. 예를 들어, 클라이언트 서버(101) 상에서, 복수의 객체들(Objects)이 구동될 수 있다. 예시적인 실시 예에서, 객체는 스토리지 서버(102)에 저장된 데이터를 관리하기 위한 정보를 가리킬 수 있다. 예를 들어, 하나의 객체는 하나의 파일을 지칭할 수 있다. 예시적인 실시 예에서, 복수의 객체들 각각은 서로 다른 가상 머신 또는 서로 다른 애플리케이션 상에서 발생할 수 있으며, 복수의 객체들 각각은 서로 다른 파일에 대응될 수 있으나, 복수의 객체들 중 일부는 서로 동일한 파일에 대응될 수 있다.The storage server 102 may provide a deduplication function for data. For example, a plurality of objects may be driven on the client server 101 . In an exemplary embodiment, the object may point to information for managing data stored in the storage server 102 . For example, one object may refer to one file. In an exemplary embodiment, each of the plurality of objects may occur on different virtual machines or different applications, and each of the plurality of objects may correspond to a different file, but some of the plurality of objects may be the same file. can correspond to

좀 더 상세한 예로서, 제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 storage server 102 will store the first file corresponding to the first object and the second file corresponding to the second object. . At this time, when the first file and the second file are identical to each other, if two identical files are stored, the storage space of the storage server 102 will be wasted. Accordingly, the storage server 102 according to an embodiment of the present invention may prevent wastage of storage space by storing only one same file for a plurality of objects corresponding to the same file. This technical construct is called a deduplication function.

스토리지 노드(110)는 객체-대-해시 테이블(O2H Table)을 포함할 수 있다. 객체-대-해시 테이블(O2H)은 객체 식별자에 대한 정보 및 해시 값 사이의 매핑 정보를 가리킬 수 있다. 복수의 스토리지 장치들(120, 130) 각각은 해시-대-물리 어드레스 테이블(H2P Table)을 포함할 수 있다. 해시-대-물리 어드레스 테이블(H2P)은 해시 값에 할당된 물리 어드레스의 정보 및 대응하는 참조 카운트에 대한 정보를 포함할 수 있다. 스토리지 서버(102)는 상술된 객체-대-해시 테이블(O2H) 및 해시-대-물리 어드레스 테이블(H2P)을 기반으로, 상술된 중복 제거 기능을 제공할 수 있다. 본 발명의 실시 예에 따른 중복 제거 기능은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.The storage node 110 may include an object-to-hash table (O2H Table). The object-to-hash table (O2H) may indicate mapping information between information about an object identifier and a hash value. Each of the plurality of storage devices 120 and 130 may include a hash-to-physical address table (H2P Table). The hash-to-physical address table (H2P) may include information on a physical address assigned to a hash value and information on a corresponding reference count. The storage server 102 may provide the above-described deduplication function based on the above-described object-to-hash table (O2H) and hash-to-physical address table (H2P). The deduplication function according to an embodiment of the present invention will be described in more detail with reference to the following drawings.

도 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 storage node 110 includes a processor 111 , a memory 112 , a hash module 113 , an error manager 114 , a network interface controller 115 , and a host interface circuit 116 . , and an object-to-hash table (O2H).

프로세서(111)는 스토리지 노드(110)의 제반 동작을 제어할 수 있다. 메모리(112)는 스토리지 노드(110)의 버퍼 메모리, 캐시 메모리, 또는 동작 메모리로서 사용될 수 있다.The processor 111 may control overall operations of the storage node 110 . Memory 112 may be used as buffer memory, cache memory, or working memory of storage node 110 .

해시 모듈(113)은 데이터에 대한 해시 연산을 수행하여, 데이터에 대응하는 해시 값을 출력하도록 구성될 수 있다. 예를 들어, 클라이언트 서버(101)로부터 제1 객체에 대응하는 제1 데이터에 대한 쓰기 요청에 수신된 경우, 해시 모듈(113)은 제1 데이터에 대한 해시 연산을 수행하여, 제1 해시 값을 출력할 수 있다. 또는 클라이언트 서버(101)로부터 제2 객체에 대응하는 제2 데이터에 대한 쓰기 요청에 수신된 경우, 해시 모듈(113)은 제2 데이터에 대한 해시 연산을 수행하여, 제2 해시 값을 출력할 수 있다. 본 발명의 실시 예에 따르면, 제1 해시 값 및 제2 해시 값이 서로 동일한 것은, 제1 데이터 및 제2 데이터가 서로 동일한 것을 의미할 수 있다. 다시 말해서, 동일한 데이터에 대하여 해시 값이 서로 동일해지도록 해시 모듈의 해시 연산의 파라미터들일 설정될 수 있다.The hash module 113 may be configured to output a hash value corresponding to the data by performing a hash operation on the data. For example, when a write request for the first data corresponding to the first object is received from the client server 101, the hash module 113 performs a hash operation on the first data to obtain the first hash value. can be printed out. Alternatively, when a write request for the second data corresponding to the second object is received from the client server 101, the hash module 113 may perform a hash operation on the second data to output a second hash value. have. According to an embodiment of the present invention, the fact that the first hash value and the second hash value are identical to each other may mean that the first data and the second data are identical to each other. In other words, parameters of the hash operation of the hash module may be set so that hash values for the same data become identical to each other.

에러 관리자(114)는 스토리지 노드(110)의 동작 중에 발생한 다양한 에러들을 관리하도록 구성될 수 있다. 에러 관리자(114)의 동작은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.The error manager 114 may be configured to manage various errors that occur during the operation of the storage node 110 . The operation of the error manager 114 is described in more detail with reference to the following figures.

네트워크 인터페이스 제어기(115)는 클라이언트 서버(101)와의 통신을 제공할 수 있다. 예시적인 실시 예에서, 클라이언트 서버(101) 및 스토리지 서버(102)가 이더넷 네트워크를 통해 통신하는 경우, 네트워크 인터페이스 제어기(115)는 TCP/IP 프로토콜에 기반된 통신 요청 또는 통신 패킷을 생성하거나 또는 처리하도록 구성될 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니며, 네트워크 인터페이스 제이거(115)는 다양한 통신 프로토콜을 기반으로 동작할 수 있다.The network interface controller 115 may provide communication with the client server 101 . In an exemplary embodiment, when the client server 101 and the storage server 102 communicate via an Ethernet network, the network interface controller 115 generates or processes a communication request or communication packet based on the TCP/IP protocol. However, the scope of the present invention is not limited thereto, and the network interface Jaeger 115 may operate based on various communication protocols.

호스트 인터페이스 회로(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 host interface circuit 116 may provide communication with the plurality of storage devices 120 and 130 . In an exemplary embodiment, the host interface circuit 116 is an Advanced Technology Attachment (ATA), Serial ATA (SATA), external SATA (e-SATA), Small Computer Small Interface (SCSI), Serial Attached SCSI (SAS), 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) card interface, a plurality of storage devices based on at least one of various interfaces such as a KV (key-value) interface (120) , 130).

객체-대-해시 테이블(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 storage server 102 . The object-to-hash table O2H may be stored in the buffer memory 112 or a separate external memory.

도 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 storage device 120 is described with reference to FIG. 3 , but the scope of the present invention is not limited thereto, and other storage devices may also have similar structures.

도 1 및 도 3을 참조하면, 스토리지 장치(120)는 스토리지 컨트롤러(121), 불휘발성 메모리들(122), 및 버퍼 메모리(123)을 포함할 수 있다. 스토리지 컨트롤러(121)는 스토리지 노드(110)로부터 수신된 요청에 응답하여, 불휘발성 메모리들(122)에 데이터를 저장하거나 또는 저장된 데이터를 출력할 수 있다.1 and 3 , the storage device 120 may include a storage controller 121 , nonvolatile memories 122 , and a buffer memory 123 . The storage controller 121 may store data in the nonvolatile memories 122 or output the stored data in response to a request received from the storage node 110 .

스토리지 컨트롤러(121)는 프로세서(121a), 메모리(121b), 해시 모듈(121c), 중복 제거 관리자(121d), 플래시 변환 계층(121e), AES 엔진(121f), ECC 엔진(121h), 호스트 인터페이스 회로(121i), 메모리 인터페이스 회로(121j), 및 해시-대-물리 어드레스 테이블(H2P)(이하에서, 설명의 편의를 위해, 해시-대-물리 테이블이라 칭함.)을 포함할 수 있다.The storage controller 121 includes a processor 121a, a memory 121b, a hash module 121c, a deduplication manager 121d, a flash translation layer 121e, an AES engine 121f, an ECC engine 121h, and a host interface. It may include a circuit 121i, a memory interface circuit 121j, and a hash-to-physical address table (H2P) (hereinafter, for convenience of description, referred to as a hash-to-physical table).

프로세서(121a)는 스토리지 컨트롤러(121)의 제반 동작을 제어할 수 있다. 메모리(121b)는 스토리지 컨트롤러(121)의 버퍼 메모리, 캐시 메모리, 또는 동작 메모리로서 사용될 수 있다. 해시 모듈(121c)은 데이터에 대한 해시 값을 연산하도록 구성될 수 있다. 예시적인 실시 예에서, 도 3의 스토리지 컨트롤러(120)에 포함된 해시 모듈(121c)은 도 2의 스토리지 노드(110)에 포함된 해시 모듈(113)과 동일한 해시 함수를 사용할 수 있다. 즉, 동일한 데이터에 대한, 해시 모듈들(113, 121c)의 해시 값은 서로 동일할 수 있다. The processor 121a may control overall operations of the storage controller 121 . The memory 121b may be used as a buffer memory, a cache memory, or an operation memory of the storage controller 121 . The hash module 121c may be configured to calculate a hash value for data. In an exemplary embodiment, the hash module 121c included in the storage controller 120 of FIG. 3 may use the same hash function as the hash module 113 included in the storage node 110 of FIG. 2 . That is, hash values of the hash modules 113 and 121c for the same data may be identical to each other.

중복 제거 관리자(121d)는 스토리지 장치(120)에 저장된 데이터에 대한 중복 제거를 수행하도록 구성될 수 있다. 예를 들어, 중복 제거 관리자(121d)는 해시-대-물리 테이블(H2P)을 기반으로, 서로 다른 객체들에 의해 참조되나 서로 동일한 값을 갖는 데이터를 탐색할 수 있고, 탐색된 데이터에 대하여, 불휘발성 메모리들(122)에 1개의 데이터만 저장할 수 있다. 중복 제거 관리자(121d)의 동작은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.The deduplication manager 121d may be configured to perform deduplication on data stored in the storage device 120 . For example, the deduplication manager 121d may search for data that are referenced by different objects but have the same value, based on a hash-to-physical table (H2P), and for the searched data, Only one piece of data may be stored in the nonvolatile memories 122 . The operation of the deduplication manager 121d will be described in more detail with reference to the following drawings.

플래시 변환 계층(121e)은 불휘발성 메모리들(122)에 대한 다양한 유지 관리 동작을 수행할 수 있다. 예시적인 실시 예에서, 다양한 유지 관리 동작은 불휘발성 메모리들(122)에 대한 웨어 레벨링 동작, 가비지 콜렉션 동작, 배드 블록 관리 동작 등을 포함할 수 있다.The flash conversion layer 121e may perform various maintenance operations on the nonvolatile memories 122 . In an example embodiment, various maintenance operations may include a wear leveling operation for the nonvolatile memories 122 , a garbage collection operation, a bad block management operation, and the like.

예시적인 실시 예에서, 본 발명의 실시 예에 따른 플래시 변환 계층(121e)은 종래의 일반적인 논리 어드레스-대-물리 어드레스 사이의 매핑 동작을 수행하지 않을 수 있다.In an exemplary embodiment, the flash translation layer 121e according to an embodiment of the present invention may not perform a conventional general logical address-to-physical address mapping operation.

예를 들어, 데이터가 저장되는 물리 어드레스는 해시-대-물리 테이블(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 deduplication manager 121d. That is, the deduplication manager 121d may manage a physical address of data based on a hash value that is a result of a hash operation on data instead of a logical address of the data. In this case, mapping between separate logical addresses and physical addresses by the flash translation layer 121e may be unnecessary.

예시적인 실시 예에서, 본 발명의 실시 예에 따른 해시 값은 종래의 논리 어드레스와 다른 정보이다. 예를 들어, 논리 어드레스는 스토리지 노드(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 storage devices 120 and 130 in the storage node 110 . That is, the logical address is information indicating a logical storage location of data. On the other hand, a hash value is a value obtained through a hash operation on the data itself, and does not indicate a logical storage location of the data. As a more detailed example, if the first data and the second data of the same value have different logical storage locations, the logical addresses of the first data and the second data will be different from each other. On the other hand, even if the first data and the second data have different logical storage locations for the same value, the result of the hash operation on the first data and the second data, that is, the hash value will be the same. That is, the hash value used in the present invention is information having a characteristic different from that of a conventional logical address.

AES 엔진(121f)(advanced encryption standard)는 스토리지 컨트롤러(121)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 수행할 수 있다.The AES engine 121f (advanced encryption standard) performs at least one of an encryption operation and a decryption operation for data input to the storage controller 121 using a symmetric-key algorithm. can be done

ECC 엔진(121h)은 불휘발성 메모리들(122)로부터 독출되는 독출 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 예를 들어, ECC 엔진(121h)은 불휘발성 메모리들(122)에 저장될 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 생성된 패리티 비트들은 데이터와 함께 불휘발성 메모리들(122)에 저장될 수 있다. 불휘발성 메모리들(122)로부터의 데이터 독출 시, ECC 엔진(121h)은 독출 데이터와 함께 불휘발성 메모리들(122)로부터 독출되는 패리티 비트들을 이용하여 독출 데이터의 에러를 정정하고, 에러가 정정된 독출 데이터를 출력할 수 있다.The ECC engine 121h may perform an error detection and correction function for read data read from the nonvolatile memories 122 . For example, the ECC engine 121h may generate parity bits for data to be stored in the nonvolatile memories 122 , and the generated parity bits are used together with the data in the nonvolatile memories 122 . can be stored in When reading data from the nonvolatile memories 122 , the ECC engine 121h corrects an error of the read data using parity bits read from the nonvolatile memories 122 together with the read data, and the error is corrected. Read data can be output.

호스트 인터페이스 회로(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 host interface circuit 121i may provide communication with the storage node 110 . In an exemplary embodiment, the host interface circuit 121i is an Advanced Technology Attachment (ATA), Serial ATA (SATA), external SATA (e-SATA), Small Computer Small Interface (SCSI), Serial Attached SCSI (SAS), 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) card interface, KV (key-value) interface, etc. may be implemented based on at least one of various interface protocols.

메모리 인터페이스 회로(121j)는 복수의 불휘발성 메모리들(122)과의 통신을 제공할 수 있다. 메모리 인터페이스 회로(121j)는 토글 인터페이스(toggle interface) 또는 오픈-낸드 플래시 인터페이스(ONFI; open nand flash interface) 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 기반으로 동작할 수 있다.The memory interface circuit 121j may provide communication with the plurality of nonvolatile memories 122 . The memory interface circuit 121j may operate based on at least one of various interface protocols such as a toggle interface or an open NAND flash interface (ONFI).

버퍼 메모리(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 storage device 120 to operate. For example, the buffer memory 123 may store information related to a hash-to-physical table (H2P). Alternatively, the buffer memory 123 may be configured to store software configurations such as the deduplication manager 121d, the flash translation layer 121e, and the like. Software components stored in the buffer memory 123 may be loaded into the memory 121b and executed by the processor 121a.

도 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 storage node 110 may receive information on the size of the first device from the first storage device 120 . The information on the size of the first device may indicate information on the available storage space of the first storage device 110 . In step S12 , the storage node 110 may receive information on the size of the second device from the second storage device 130 . The information on the size of the second device may indicate information on the available storage space of the second storage device 130 .

S13 단계에서, 스토리지 노드(110)는 제1 및 제2 스토리지 장치들(120, 130)로 해시 범위를 각각 할당할 수 있다. 예를 들어, 스토리지 노드(110)는 제1 장치 크기 정보에 대응하는 범위를 갖는 제1 해시 범위를 제1 스토리지 장치(120)로 할당하고, 제2 장치 크기 정보에 대응하는 범위를 갖는 제2 해시 범위를 제2 스토리지 장치(130)로 할당할 수 있다. In step S13 , the storage node 110 may allocate a hash range to the first and second storage devices 120 and 130 , respectively. For example, the storage node 110 allocates a first hash range having a range corresponding to the first device size information to the first storage device 120 , and a second hash range having a range corresponding to the second device size information. A hash range may be allocated to the second storage device 130 .

S14 단계에서, 스토리지 노드(110)는 제1 해시 범위에 대한 정보를 제1 스토리지 장치(120)로 전송할 수 있다. S15 단계에서, 제1 스토리지 장치(120)는 수신된 제1 해시 정보를 기반으로 제1 해시-대-물리 테이블을 생성할 수 있다. In step S14 , the storage node 110 may transmit information on the first hash range to the first storage device 120 . In step S15 , the first storage device 120 may generate a first hash-to-physical table based on the received first hash information.

S16 단계에서, 스토리지 노드(110)는 제2 해시 범위에 대한 정보를 제2 스토리지 장치(130)로 전송할 수 있다. S17 단계에서, 제2 스토리지 장치(130)는 수신된 제2 해시 정보를 기반으로 제2 해시-대-물리 테이블을 생성할 수 있다. In step S16 , the storage node 110 may transmit information on the second hash range to the second storage device 130 . In step S17 , the second storage device 130 may generate a second hash-to-physical table based on the received second hash information.

예시적인 실시 예에서, 제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 storage node 110 , data having a hash value included in the first hash range is stored in the first storage device 120 , and data having a hash value included in the second hash range is stored in the second storage device Data can be managed to be stored in 130 .

예시적인 실시 예에서, 앞서 설명된 바와 같이, 본 발명에 따른 해시 값은 종래의 논리 어드레스와 다른 특성을 갖는 정보이며, 이는 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다. 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 storage node 110 and the first storage device 120 . However, the scope of the present invention is not limited thereto. 1 and 5 , the hash-to-physical table H2P includes mapping information between a plurality of hash values H1 to Hn and a plurality of physical addresses PA1 to PAn, and corresponding reference counts. It may include information about (RC1 to RCn).

예를 들어, 제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 storage device 120 , an entry corresponding to the third hash value H3 may be empty.

예시적인 실시 예에서, 도 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 first storage device 120, a plurality of hash values included in the hash-to-physical table H2P (H1 to Hn) may be included in the first hash range allocated by the storage node 110 .

도 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 client server 101 , the storage node 110 , and the first storage device 120 of the server system 100 . explained. However, the scope of the present invention is not limited thereto. In an exemplary embodiment, an operation (ie, a write operation) in which data from a specific object is stored in a storage device will be described with reference to FIG. 6 .

도 1 및 도 6을 참조하면, S101 단계에서, 클라이언트 서버(101)는 스토리지 서버(110)로 쓰기 요청을 전송할 수 있다. 예시적인 실시 예에서, 쓰기 요청은 객체 식별자(ID), 데이터의 길이(len), 및 데이터(DT)를 포함하는 쓰기 요청(PUT)일 수 있다. 1 and 6 , in step S101 , the client server 101 may transmit a write request to the storage server 110 . In an exemplary embodiment, the write request may be a write request (PUT) including an object identifier (ID), a length of data (len), and data (DT).

S102 단계에서, 스토리지 노드(110)는 해시 값을 연산할 수 있다. 예를 들어, 스토리지 노드(110)는 클라이언트 서버(101)로부터 수신된 데이터(DT)에 대한 해시 연산을 수행하여 해시 값(H)을 연산할 수 있다. 예시적인 실시 예에서, 스토리지 노드(110)의 해시 연산은 도 2를 참조하여 설명된 해시 모듈(113)에 의해 수행될 수 있다. In step S102, the storage node 110 may calculate a hash value. For example, the storage node 110 may calculate the hash value H by performing a hash operation on the data DT received from the client server 101 . In an exemplary embodiment, the hash operation of the storage node 110 may be performed by the hash module 113 described with reference to FIG. 2 .

S103 단계에서, 스토리지 노드(110)는 쓰기 요청을 제1 스토리지 장치(120)로 전달할 수 있다. 예시적인 실시 예에서, 제1 스토리지 장치(120)로 전달되는 쓰기 요청은 객체 식별자(ID), 데이터의 길이(len), 및 데이터(DT)를 포함하는 쓰기 요청(PUTa)일 수 있다.In step S103 , the storage node 110 may transmit a write request to the first storage device 120 . In an exemplary embodiment, the write request transmitted to the first storage device 120 may be a write request PUTa including an object identifier ID, a data length len, and data DT.

예시적인 실시 예에서, 비록 도면에 명확히 도시되지는 않았으나, 스토리지 노드(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 storage node 110 may select a storage device to which a write request is transmitted based on the calculated hash value H. For example, as described with reference to FIG. 4 , the storage node 110 may allocate a hash range to each of the plurality of storage devices 120 and 130 . The storage node 110 may transmit a write request to a storage device corresponding to a hash range including the calculated hash value. For example, when the calculated hash value H is included in the first hash range allocated to the first storage device 120 , the write request is transmitted to the first storage device 120 , and the calculated hash value ( When H) is included in the second hash range allocated to the second storage device 120 , the write request may be transmitted to the second storage device 130 .

S104 단계에서, 제1 스토리지 장치(120)는 수신된 데이터(DT)에 대한 해시 연산을 통해 해시 값(H)을 연산할 수 있다. 예시적인 실시 예에서, 제1 스토리지 장치(120)의 해시 연산은 도 3을 참조하여 설명된 해시 모듈(121c)에 의해 수행될 수 있다. In operation S104 , the first storage device 120 may calculate a hash value H through a hash operation on the received data DT. In an exemplary embodiment, the hash operation of the first storage device 120 may be performed by the hash module 121c described with reference to FIG. 3 .

S105 단계에서, 제1 스토리지 장치(120)는 연산된 해시 값(H')과 수신된 해시 값(H)을 비교할 수 있다. 연산된 해시 값(H')과 수신된 해시 값(H)이 서로 다른 것은, 수신된 정보에 에러가 포함되어 있음을 의미할 수 있다. 이 경우, 즉, 연산된 해시 값(H')과 수신된 해시 값(H)이 서로 다른 경우, S106 단계에서, 제1 스토리지 장치(120)는 에러 정보를 스토리지 노드(110)로 리턴할 수 있다.In operation S105 , the first storage device 120 may compare the calculated hash value H' with the received hash value H. When the calculated hash value H' and the received hash value H are different from each other, it may mean that an error is included in the received information. In this case, that is, when the calculated hash value (H') and the received hash value (H) are different from each other, in step S106 , the first storage device 120 may return error information to the storage node 110 . have.

S107 단계에서, 스토리지 노드(110)는 에러 관리를 수행할 수 있다. 예시적인 실시 예에서, S107 단계에서의 에러 관리는 데이터(DT)에 대한 해시 연산을 재수행하는 동작, 제1 스토리지 장치(120)로 쓰기 요청(즉, PUTa[ID, len, DT, H])을 다시 전송하는 동작 등을 포함할 수 있다. 또는, 에러 관리는 클라이언트 서버(101)로 에러 정보를 리턴하는 동작을 포함할 수 있다. 상술된 에러 관리는 도 2를 참조하여 설명된 에러 관리자(114)에 의해 수행될 수 있으며, 상술된 에러 관리는 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다.In step S107 , the storage node 110 may perform error management. In an exemplary embodiment, the error management in step S107 is an operation of re-performing a hash operation on the data DT, and a write request to the first storage device 120 (ie, PUTa[ID, len, DT, H]) may include an operation of retransmitting Alternatively, error management may include an operation of returning error information to the client server 101 . The above-described error management may be performed by the error manager 114 described with reference to FIG. 2 , and the above-described error management is exemplary, and the scope of the present invention is not limited thereto.

연산된 해시 값(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 first storage device 120 performs the hash-to-physical table (H2P), the received hash value (H) ) can be searched for whether the corresponding entry is empty.

해시-대-물리 테이블(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 first storage device 120 retrieves the physical address PA. can be assigned In operation S110 , the first storage device 120 writes the data DT in the area corresponding to the allocated physical address PA (ie, the storage area of the nonvolatile memories 122 ). In step S111 , the first storage device 120 may update the hash-to-physical table (H2P). In operation S112 , the first storage device 120 may increment the corresponding reference count RC.

예를 들어, 상술된 바와 같이, 수신된 해시 값(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 first storage device 120 may allocate a physical address PA and store the data DT in an area corresponding to the allocated physical address PA. Thereafter, the first storage device 120 may update the physical address for the received hash value H to the allocated physical address in the hash-to-physical table PA. Thereafter, since the number of objects referencing the data DT corresponding to the hash value H is “1”, the corresponding reference count RC may be increased by “1”.

해시-대-물리 테이블(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 first storage device 120 omits the operations of steps S109 to S111. can do. That is, since the data DT corresponding to the received hash value H is already stored in the nonvolatile memories 122 , the first storage device 120 may omit the storage operation for the data DT. can That is, deduplication may be performed on the data DT.

해시-대-물리 테이블(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 first storage device 120 may increase the reference count RC.

S113 단계에서, 제1 스토리지 장치(120)는 완료 정보(Completion)를 스토리지 노드(110)로 전송할 수 있다.In step S113 , the first storage device 120 may transmit completion information (Completion) to the storage node 110 .

S114 단계에서, 스토리지 노드(110)는 객체-대-해시 테이블(O2H)을 갱신할 수 있다. 예를 들어, 스토리지 노드(110)는 S101 단계를 통해 수신된 객체 식별자(ID) 및 연산된 해시(H)에 대한 매핑 정보를 기반으로 객체-대-해시 테이블(O2H)을 갱신할 수 있다. 예시적인 실시 예에서, 객체-대-해시 테이블(O2H)을 기반으로, 객체 식별자에 대하여 어떤 해시 값이 대응되는지가 판별될 수 있으며, 이는 읽기 동작시 사용될 수 있다. In step S114 , the storage node 110 may update the object-to-hash table O2H. For example, the storage node 110 may update the object-to-hash table O2H based on mapping information for the object identifier (ID) and the calculated hash (H) received through step S101. In an exemplary embodiment, based on the object-to-hash table (O2H), it may be determined which hash value corresponds to the object identifier, which may be used during a read operation.

S115 단계에서, 스토리지 노드(110)는 클라이언트 서버(101)로 성공 정보(Success)를 전송할 수 있다. In step S115 , the storage node 110 may transmit success information to the client server 101 .

도 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 client server 101 may transmit a first write request PUT1 to the storage node 110 . The first write request PUT1 may be a write request for the first data DT1 referenced by the object corresponding to the first object identifier ID1, and the first object identifier ID1 and the first data DT1 may include information about

스토리지 노드(110)의 해시 모듈(113)은 수신된 제1 데이터(DT1)에 대한 해시 연산을 수행하여, 제1 해시 값(H1)을 산출할 수 있다. 스토리지 노드(110)의 호스트 인터페이스 회로(116)는 제1 해시 값(H1)을 포함하는 제1 쓰기 요청(PUT1a)을 제1 스토리지 장치(120)로 전송할 수 있다. The hash module 113 of the storage node 110 may calculate a first hash value H1 by performing a hash operation on the received first data DT1 . The host interface circuit 116 of the storage node 110 may transmit the first write request PUT1a including the first hash value H1 to the first storage device 120 .

예시적인 실시 예에서, 앞서 설명된 바와 같이, 스토리지 노드(110)는 연산된 제1 해시 값(H1) 및 복수의 스토리지 장치들(120, 130) 각각에 할당된 해시 범위들을 기반으로 제1 해시 값(H1)이 포함된 해시 범위에 대응하는 스토리지 장치를 선택할 수 있다. 스토리지 노드(110)는 선택된 스토리지 장치로 제1 해시 값(H1)을 포함하는 제1 쓰기 요청(PUT1a)을 전송할 수 있다.In an exemplary embodiment, as described above, the storage node 110 performs a first hash value based on the calculated first hash value H1 and hash ranges allocated to each of the plurality of storage devices 120 and 130 . A storage device corresponding to the hash range including the value H1 may be selected. The storage node 110 may transmit the first write request PUT1a including the first hash value H1 to the selected storage device.

제1 스토리지 장치(120)의 호스트 인터페이스 회로(121i)는 제1 해시 값(H1)을 포함하는 제1 쓰기 요청(PUT1a)을 수신할 수 있다. 제1 스토리지 장치(120)의 중복 제거 관리자(121d)는 제1 해시 값(H1)을 해시-대-물리 테이블(H2P)로부터 탐색할 수 있다. 도 7의 실시 예에서, 해시-대-물리 테이블(H2P)에서, 제1 해시 값(H1)에 대응하는 엔트리는 비어 있을 수 있다. 이 경우, 중복 제거 관리자(121d)는 제1 물리 어드레스(PA1)를 할당할 수 있다. 예시적인 실시 예에서, 물리 어드레스를 할당하는 동작은 플래시 변환 계층(도 3의 FTL, 121e)에 의해 수행될 수 있다. The host interface circuit 121i of the first storage device 120 may receive the first write request PUT1a including the first hash value H1. The deduplication manager 121d of the first storage device 120 may search for the first hash value H1 from the hash-to-physical table H2P. In the embodiment of FIG. 7 , in the hash-to-physical table H2P, an entry corresponding to the first hash value H1 may be empty. In this case, the deduplication manager 121d may allocate the first physical address PA1. In an exemplary embodiment, the operation of allocating a physical address may be performed by a flash translation layer (FTL, 121e of FIG. 3 ).

제1 스토리지 장치(120)의 메모리 인터페이스 회로(121j)는 프로그램 커맨드(CMD_P), 제1 물리 어드레스(PA1), 및 제1 데이터(DT1)를 복수의 불휘발성 메모리 들(122) 중 적어도 하나로 전송할 수 있다. 복수의 불휘발성 메모리 들(122) 중 적어도 하나는 수신된 프로그램 커맨드(CMD_P)에 응답하여, 제1 물리 어드레스(PA1)에 대응하는 영역에 제1 데이터(DT1)를 저장할 수 있다. The memory interface circuit 121j of the first storage device 120 transmits the program command CMD_P, the first physical address PA1 , and the first data DT1 to at least one of the plurality of nonvolatile memories 122 . can At least one of the plurality of nonvolatile memories 122 may store the first data DT1 in an area corresponding to the first physical address PA1 in response to the received program command CMD_P.

중복 제거 관리자(121d)는 제1 해시 값(H1) 및 제1 물리 어드레스(PA1)를 기반으로 해시-대-물리 테이블(H2P)을 갱신할 수 있다. 예를 들어, 도 7에 도시된 바와 같이, 중복 제거 관리자(121d)는 제1 해시 값(H1) 및 제1 물리 어드레스(PA1) 사이의 매핑 정보 및 제1 참조 카운트(RC1)를 포함하는 엔트리를 해시-대-물리 테이블(H2P)에 추가함으로써, 제1 해시-대-물리 테이블(H2P-1)로 갱신할 수 있다. The deduplication manager 121d may update the hash-to-physical table H2P based on the first hash value H1 and the first physical address PA1. For example, as shown in FIG. 7 , the deduplication manager 121d provides mapping information between a first hash value H1 and a first physical address PA1 and an entry including a first reference count RC1. by adding to the hash-to-physical table (H2P), it can be updated to the first hash-to-physical table (H2P-1).

예시적인 실시 예에서, 스토리지 노드(110)는 객체-대-해시 테이블(O2H)을 갱신할 수 있다. 예를 들어, 스토리지 노드(110)는 제1 객체 식별자(ID1) 및 제1 해시 값(H1)의 매핑 정보를 객체-대-해시 테이블(O2H)에 추가할 수 있다.In an exemplary embodiment, the storage node 110 may update the object-to-hash table O2H. For example, the storage node 110 may add mapping information of the first object identifier ID1 and the first hash value H1 to the object-to-hash table O2H.

다음으로, 도 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 client server 101 may transmit a second write request PUT2 to the storage node 110 . The second write request PUT2 may be a write request for the first data DT1 referenced by the object corresponding to the second object identifier ID2, and the second object identifier ID2 and the first data DT1 may include information about

스토리지 노드(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 hash module 113 of the storage node 110 may calculate a first hash value H1 by performing a hash operation on the received first data DT1 . In an exemplary embodiment, the first data DT1 corresponding to the second object identifier ID2 may be the same as the first data DT1 corresponding to the first object identifier ID1 described with reference to FIG. 7 . have. That is, objects corresponding to the first and second object identifiers ID1 and ID2 may refer to the same first data DT1 . In this case, the hash value calculated by the hash module 113 may be the same as the first hash value H1. The host interface circuit 116 of the storage node 110 may transmit the second write request PUT2a including the first hash value H1 to the first storage device 120 .

제1 스토리지 장치(120)의 호스트 인터페이스 회로(121i)는 제1 해시 값(H1)을 포함하는 제2 쓰기 요청(PUT2a)을 수신할 수 있다. 중복 제거 관리자(121d)는 수신된 제1 해시 값(H1)을 기반으로 제1 해시-대-물리 테이블(H2P-1)을 탐색할 수 있다. 예를 들어, 제1 해시-대 물리 테이블(H2P-1)은 도 7을 참조하여 설명된 바와 같이, 제1 해시 값(H1) 및 제1 물리 어드레스(PA1) 사이의 매핑 관계 및 제1 참조 카운트(RC1)에 대한 정보를 포함할 수 있다.The host interface circuit 121i of the first storage device 120 may receive the second write request PUT2a including the first hash value H1 . The deduplication manager 121d may search the first hash-to-physical table H2P-1 based on the received first hash value H1. For example, the first hash-to-physical table H2P-1 has a mapping relationship between the first hash value H1 and the first physical address PA1 and the first reference, as described with reference to FIG. 7 . It may include information about the count RC1.

이 경우, 중복 제거 관리자(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 deduplication manager 121d confirms that an entry corresponding to the first hash value H1 exists, and in response thereto, without a storage operation, a program operation, or a write operation on the first data DT1 . , the first hash-to-physical table H2P-1 may be updated to generate the second hash-to-physical table H2P-2. For example, the deduplication manager 121d sets the first reference count RC1 of the entry corresponding to the first hash value H1 in the first hash-to-physical table H2P-1 to “1”. By increasing by , the second hash-to-physical table (H2P-2) can be created. In the embodiment of FIG. 8 , the first reference count RC1 may be updated to “2”, which is the first data DT1 for the first hash value H1 into two objects (eg, It means that it is referenced by the first and second object identifiers (objects corresponding to ID1 and ID2).

즉, 도 8을 참조하여 설명된 바와 같이, 제1 스토리지 장치(120)는 해시-대-물리 테이블(H2P)을 기반으로 수신된 데이터를 불휘발성 메모리들(122)에 저장하거나 또는 저장하는 동작을 생략할 수 있다. That is, as described with reference to FIG. 8 , the first storage device 120 stores or stores the received data in the nonvolatile memories 122 based on the hash-to-physical table (H2P). can be omitted.

예시적인 실시 예에서, 스토리지 노드(110)는 제2 객체 식별자(ID2) 및 제1 해시 값(H1) 사이의 매핑 정보를 기반으로 객체-대-해시 테이블(O2H)을 갱신할 수 있다. In an exemplary embodiment, the storage node 110 may update the object-to-hash table O2H based on mapping information between the second object identifier ID2 and the first hash value H1.

상술된 바와 같이, 본 발명의 실시 예들에 따르면, 스토리지 서버(102)는 데이터(DT)에 대한 해시 값을 기반으로 데이터를 관리할 수 있다. 이 경우, 다수의 객체들이 동일한 제1 데이터를 참조하더라도, 스토리지 서버(102)에는 제1 데이터 1개만 불휘발성 메모리에 저장될 수 있다. 따라서, 불휘발성 메모리들 또는 스토리지 장치에서의 저장 공간의 활용도가 향상될 수 있다.As described above, according to embodiments of the present invention, the storage server 102 may manage data based on a hash value of the data DT. In this case, even if a plurality of objects refer to the same first data, only one piece of first data may be stored in the nonvolatile memory in the storage server 102 . Accordingly, the utilization of the storage space in the nonvolatile memories or the storage device may be improved.

도 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 client server 101 may transmit a read request (GET) to the storage node 110 . In an exemplary embodiment, the read request (GET) may include information about the object identifier (ID).

S202 단계에서, 스토리지 노드(110)는 객체-대-해시 테이블(O2H)에서, 수신된 객체 식별자(ID)에 대응하는 해시 값(H)을 탐색할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 스토리지 노드(110)의 객체-대-해시 테이블(O2H)은 객체 식별자(ID) 및 해시 값(H) 사이의 매핑 정보를 관리할 수 있다. 스토리지 노드(110)는 객체-대-해시 테이블(O2H)에서 수신된 객체 식별자(ID)에 대응하는 해시 값(H)을 탐색할 수 있다.In step S202 , the storage node 110 may search for a hash value H corresponding to the received object identifier ID from the object-to-hash table O2H. For example, as described above, the object-to-hash table O2H of the storage node 110 may manage mapping information between an object identifier (ID) and a hash value (H). The storage node 110 may search for a hash value H corresponding to the received object identifier ID from the object-to-hash table O2H.

S203 단계에서, 스토리지 노드(110)는 탐색된 해시 값(H)을 포함하는 읽기 요청(GETa)을 제1 스토리지 장치(110)로 전송할 수 있다. 예시적인 실시 예에서, 앞서 설명된 바와 유사하게, 스토리지 노드(110)는 탐색된 해시 값(H)을 기반으로 읽기 요청이 전달될 스토리지 장치를 선택할 수 있으며, 이는 도 6을 참조하여 설명된 바와 유사하므로, 이에 대한 상세한 설명은 생략된다.In step S203 , the storage node 110 may transmit a read request GETa including the found hash value H to the first storage device 110 . In an exemplary embodiment, similar to that described above, the storage node 110 may select a storage device to which a read request is transmitted based on the found hash value H, which is as described with reference to FIG. 6 . Since they are similar, a detailed description thereof will be omitted.

S204 단계에서, 제1 스토리지 장치(120)는 수신된 해시 값(H)에 대응하는 엔트리가 해시-대-물리 테이블(H2P)에 존재하는지 판별할 수 있다. 수신된 해시 값(H)에 대응하는 엔트리가 해시-대-물리 테이블(H2P)에 존재하지 않는 것은 해시 값(H)에 대응하는 데이터가 불휘발성 메모리들(122)에 저장되어 있지 않음을 의미할 수 있다. 이 경우, 즉, 수신된 해시 값(H)에 대응하는 엔트리가 해시-대-물리 테이블(H2P)에 존재하지 않는 경우, S205 단계에서, 제1 스토리지 장치(120)는 스토리지 노드(110)로 에러를 리턴하고, S206 단계에서, 스토리지 노드(110)는 에러 관리를 수행할 수 있다.In step S204 , the first storage device 120 may determine whether an entry corresponding to the received hash value H exists in the hash-to-physical table H2P. The fact that an entry corresponding to the received hash value H does not exist in the hash-to-physical table H2P means that data corresponding to the hash value H is not stored in the nonvolatile memories 122 can do. 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 S205 , the first storage device 120 is transmitted to the storage node 110 . An error is returned, and in step S206 , the storage node 110 may perform error management.

수신된 해시 값(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 first storage device 120 stores data DT from the nonvolatile memories 122 . can read For example, the first storage device 120 may search for a physical address PA corresponding to the hash value H from the hash-to-physical table H2P. The first storage device 120 may read the data DT from the area corresponding to the found physical address PA.

S208 단계에서, 제1 스토리지 장치(120)는 읽은 데이터(DT)에 대한 해시 연산을 수행할 수 있다. S209 단계에서, 제1 스토리지 장치(120)는 연산된 해시 값 및 수신된 해시 값을 비교할 수 있다. 연산된 해시 값 및 수신된 해시 값이 동일하지 않은 것은 요청한 데이터 및 읽은 데이터가 서로 다름을 의미할 수 있다. 이 경우, 즉, 연산된 해시 값 및 수신된 해시 값이 동일하지 않은 경우, S210 단계에서, 제1 스토리지 장치(120)는 스토리지 노드(110)로 에러를 리턴하고, S211 단계에서, 스토리지 노드(110)는 에러 관리를 수행할 수 있다. 예시적인 실시 예에서, 비록 도면에 명시적으로 도시되지는 않았으나, 연산된 해시 값 및 수신된 해시 값이 서로 다른 경우, 제1 스토리지 장치(120)는 다양한 읽기 방식들을 기반으로 데이터에 대한 읽기를 다시 수행할 수 있다. In operation S208 , the first storage device 120 may perform a hash operation on the read data DT. In operation S209 , the first storage device 120 may compare the calculated hash value and the received hash value. If the calculated hash value and the received hash value are not the same, it may mean that requested data and read data are different from each other. In this case, that is, when the calculated hash value and the received hash value are not the same, in step S210 , the first storage device 120 returns an error to the storage node 110 , and in step S211 , the storage node ( 110) may perform error management. In an exemplary embodiment, although not explicitly shown in the drawing, when the calculated hash value and the received hash value are different from each other, the first storage device 120 reads data based on various read methods. can be done again.

연산된 해시 값 및 수신된 해시 값이 동일한 경우, 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 first storage device 120 transmits the data DT to the storage node 110 , and in step S213 , the storage node 110 transmits the data (DT) may be transmitted to the client server 101 .

도 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 client server 101 may transmit a first read request GET1 including the first object identifier ID1 to the storage node 110 . The first read request GET1 may be a request for reading the first data DT1 referenced by the object corresponding to the first object identifier ID1 .

스토리지 노드(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 hash module 113 of the storage node 110 may search for a hash value H corresponding to the received first object identifier ID1 from the object-to-hash table O2H. For example, the object-to-hash table O2H may include information in which the first and second object identifiers ID1 and ID2 are mapped to the first hash value H1. In this case, the hash module 113 may select the first hash value H1 as a hash value corresponding to the received first object identifier ID1 based on the object-to-hash table O2H. . The host interface circuit 116 of the storage node 110 may transmit the first read request GET1a including the first hash value H1 to the first storage device 120 .

제1 스토리지 장치(120)의 호스트 인터페이스 회로(121i)는 제1 해시 값(H1)을 포함하는 제1 읽기 요청(GET1a)을 수신할 수 있다. 중복 제거 관리자(121d)는 제2 해시-대-물리 테이블(H2P-2)로부터 제1 해시 값(H1)에 대응하는 제1 물리 어드레스(PA1)를 탐색할 수 있다. 제1 물리 어드레스(PA1)에 대한 정보는 제1 스토리지 장치(120)의 메모리 인터페이스 회로(121j)로 전달될 수 있다.The host interface circuit 121i of the first storage device 120 may receive the first read request GET1a including the first hash value H1. The deduplication manager 121d may search for the first physical address PA1 corresponding to the first hash value H1 from the second hash-to-physical table H2P-2. Information on the first physical address PA1 may be transmitted to the memory interface circuit 121j of the first storage device 120 .

제1 스토리지 장치(120)의 메모리 인터페이스 회로(121j)는 읽기 커맨드(CMD_R) 및 제1 물리 어드레스(PA1)를 불휘발성 메모리들(122) 중 대응하는 적어도 하나의 불휘발성 메모리로 전송할 수 있다. 불휘발성 메모리들(122) 중 대응하는 적어도 하나의 불휘발성 메모리는 제1 물리 어드레스(PA1)의 영역에 저장된 제1 데이터(DT1)를 출력할 수 있다.The memory interface circuit 121j of the first storage device 120 may transmit the read command CMD_R and the first physical address PA1 to at least one corresponding nonvolatile memory among the nonvolatile memories 122 . At least one corresponding nonvolatile memory among the nonvolatile memories 122 may output the first data DT1 stored in the area of the first physical address PA1 .

제1 스토리지 장치(120)의 메모리 인터페이스 회로(121j)는 불휘발성 메모리들(122) 중 대응하는 적어도 하나의 불휘발성 메모리로부터 제1 데이터(DT1)를 수신할 수 있고, 수신된 제1 데이터(DT1)는 호스트 인터페이스들(121i, 116)을 통해 클라이언트 서버(101)로 제공될 수 있다. The memory interface circuit 121j of the first storage device 120 may receive the first data DT1 from the corresponding at least one nonvolatile memory among the nonvolatile memories 122 , and the received first data ( DT1) may be provided to the client server 101 through the host interfaces 121i and 116 .

도 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 client server 101 may transmit a deletion request DEL including an object identifier ID to the storage node 110 . The deletion request DEL may be a request to delete data referenced by an object corresponding to the object identifier ID.

S302 단계에서, 스토리지 노드(110)는 객체-대-해시 테이블(O2H)에서, 수신된 객체 식별자(ID)와 대응되는 해시 값(H)을 탐색할 수 있다. S302 단계의 동작은 앞서 설명된 바와 유사하므로, 이에 대한 상세한 설명은 생략된다. S303 단계에서, 스토리지 노드(110)는 탐색된 해시 값(H)을 포함하는 삭제 요청(DELa)을 제1 스토리지 장치(110)로 전송할 수 있다.In step S302 , the storage node 110 may search for a hash value (H) corresponding to the received object identifier (ID) from the object-to-hash table (O2H). Since the operation of step S302 is similar to that described above, a detailed description thereof will be omitted. In step S303 , the storage node 110 may transmit a deletion request DELa including the found hash value H to the first storage device 110 .

S304 단계에서, 제1 스토리지 장치(120)는 수신된 해시 값(H)에 대응하는 엔트리가 해시-대-물리 테이블(H2P)에 존재하는지 판별할 수 있다. 수신된 해시 값(H)에 대응하는 엔트리가 해시-대-물리 테이블(H2P)에 존재하지 않는 것은 해시 값(H)에 대응하는 데이터가 불휘발성 메모리들(122)에 저장되어 있지 않음을 의미할 수 있다. 예시적인 실시 예에서, 해시-대-물리 테이블(H2P)에서, 해시 값(H)에 대응하는 엔트리의 참조 카운트가 "0"인 것은 해시 값(H)에 대응하는 엔트리가 존재하지 않는 것과 동일한 의미를 가질 수 있다.In step S304 , the first storage device 120 may determine whether an entry corresponding to the received hash value H exists in the hash-to-physical table (H2P). The fact that an entry corresponding to the received hash value H does not exist in the hash-to-physical table H2P means that data corresponding to the hash value H is not stored in the nonvolatile memories 122 can do. In an exemplary embodiment, in the hash-to-physical table (H2P), a reference count of “0” of an entry corresponding to a hash value H is the same as that an entry corresponding to the hash value H does not exist. can have meaning.

이 경우, 즉, 수신된 해시 값(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 first storage device 120 is the storage node 110 . An error is returned, and in step S306 , the storage node 110 may perform error management.

수신된 해시 값(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 first storage device 120 performs the hash-to-physical table (H2P), hash The value H and the reference count RC of the corresponding entry may be decremented by a predetermined value (eg, “1”).

S308 단계에서, 제1 스토리지 장치(120)는 쓰기 요청(DELa)에 대한 완료(completion)를 스토리지 노드(110)로 전송하고, S309 단계에서, 스토리지 노드(110)는 쓰기 요청(DEL)에 대한 완료(completion)를 클라이언트 서버(101)로 전송할 수 있다.In step S308 , the first storage device 120 transmits completion of the write request DELa to the storage node 110 , and in step S309 , the storage node 110 responds to the write request DEL. A completion may be sent to the client server 101 .

도 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 client server 101 may transmit a first deletion request DEL1 including a first object identifier ID1 to the storage node 110 . The first deletion request GET1 may be a request for deleting the first data DT1 referenced by the object corresponding to the first object identifier ID1 .

스토리지 노드(110)의 해시 모듈(113)은 수신된 제1 객체 식별자(ID1)에 대응하는 제1 해시 값(H1)을 객체-대-해시 테이블(O2H)로부터 탐색할 수 있다. 이는 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다. 스토리지 노드(110)의 호스트 인터페이스 회로(116)는 제1 해시 값(H1)을 포함하는 제1 삭제 요청(DEL1a)을 제1 스토리지 장치(120)로 전송할 수 있다.The hash module 113 of the storage node 110 may search for a first hash value H1 corresponding to the received first object identifier ID1 from the object-to-hash table O2H. Since this has been described above, a detailed description thereof will be omitted. The host interface circuit 116 of the storage node 110 may transmit the first deletion request DEL1a including the first hash value H1 to the first storage device 120 .

제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 host interface circuit 121i of the first storage device 120 may receive the first delete request DEL1a including the first hash value H1. The deduplication manager 121d may search for the first reference count RC1 corresponding to the first hash value H1 from the second hash-to-physical table H2P-2. The deduplication manager 121d decrements the first reference count RC1 corresponding to the first hash value H1 in response to the first deletion request DEL1a, thereby decrementing the second hash-to-physical table H2P- 2) may be updated with the third hash-to-physical table (H2P-3).

예시적인 실시 예에서, 해시-대-물리 테이블(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 storage node 110 may update the object-to-hash table O2H. For example, as shown in FIG. 12 , the mapping of the deletion-requested first object identifier ID1 among the first and second object identifiers ID1 and ID2 corresponding to the first hash value H1 is released. By doing so, the object-to-hash table (O2H) can be updated.

도 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 first storage device 120 will be described with reference to FIG. 13 . In an exemplary embodiment, the garbage collection operation of FIG. 13 may be performed by the flash translation layer (FTL) described with reference to FIG. 3 .

도 1, 도 5, 및 도 13을 참조하면, S401 단계에서, 제1 스토리지 장치(120)는 소스 블록 및 목표 블록을 선택할 수 있다. 예를 들어, 불휘발성 메모리들(122) 각각은 복수의 메모리 블록들을 포함할 수 있다. 제1 스토리지 장치(120)의 스토리지 컨트롤러(121)는 복수의 메모리 블록들 중 소스 블록 및 목표 블록을 선택할 수 있다.1, 5, and 13 , in step S401 , the first storage device 120 may select a source block and a target block. For example, each of the nonvolatile memories 122 may include a plurality of memory blocks. The storage controller 121 of the first storage device 120 may select a source block and a target block from among a plurality of memory blocks.

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 first storage device 120 may determine whether the k-th reference count RC_k is “0”. For example, the k-th reference count RC_k may indicate a reference count corresponding to the physical address of the k-th physical page of the source block. The first storage device 120 may determine whether the k-th reference count RC_k is “0” in the hash-to-physical table H2P.

제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 first storage device 120 may determine the k-th physical page of the source block as an invalid page.

제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 first storage device 120 may determine the k-th physical page of the source block as a valid page.

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 first storage device 120 performs step S403.

변수(k)가 최대인 경우, S408 단계에서, 제1 스토리지 장치(120)는 유효 페이지로 설정된 물리 페이지들을 소스 블록으로부터 목표 블록으로 마이그레이션할 수 있다. S409 단계에서, 제1 스토리지 장치(120)는 소스 블록을 자유 블록으로서 사용할 수 있다. When the variable k is the maximum, in operation S408 , the first storage device 120 may migrate physical pages set as valid pages from the source block to the target block. In operation S409 , the first storage device 120 may use the source block as a free block.

상술된 바와 같이, 본 발명의 실시 예에 따른 스토리지 장치는 참조 카운트를 기반으로 데이터를 참조하는 객체들의 개수를 확인할 수 있다. 따라서, 스토리지 장치에서의 데이터 중복 제거 기능이 제공될 수 있다. 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 client server 101 may transmit a write request (PUT) to the storage node 110 . The write request PUT may include an object identifier (ID), a length of data (len), data (DT), and a flag (FG). In an exemplary embodiment, the flag FG may be information for activating/deactivating the deduplication function in the storage device 120 .

스토리지 노드(110) 및 제1 스토리지 장치(120)는 S502 단계, S503 단계, S504 단계, S505 단계, S506 단계, 및 S507 단계의 동작들을 수행할 수 있으며, 이는 플래그(FG)의 구성을 제외하면, 도 6의 S102 단계, S103 단계, S104 단계, S105 단계, S106 단계, 및 S107 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다.The storage node 110 and the first storage device 120 may perform the operations of steps S502, S503, S504, S505, S506, and S507, except for the configuration of the flag FG. , since the operations of steps S102, S103, S104, S105, S106, and S107 of FIG. 6 are similar, a detailed description thereof will be omitted.

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 first storage device 120 may determine whether an entry corresponding to the received hash value H exists in the hash-to-physical table (H2P). When the entry corresponding to the received hash value H does not exist in the hash-to-physical table (H2P), the first storage device 120 performs the operations of steps S510, S511, S512, and S513. This may be performed, and since it is similar to the operations of steps S109, S110, S111, and S112 of FIG. 6, a detailed description thereof will be omitted.

수신된 해시 값(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 first storage device 120 may determine whether the flag FG is set. For example, the flag FG may be information for disabling a deduplication function for data referenced by a specific object. That is, when the flag FG is set for a specific write request, the corresponding data may be stored (ie, redundantly stored) in the nonvolatile memories 122 , regardless of whether the corresponding data is stored. When the flag FG is not set with respect to a specific write request, the same data may not be redundantly stored, similarly to that described with reference to FIG. 6 .

즉, 플래그(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 first storage device 120 may perform step S513 without a storage operation on the data DT. On the other hand, when the flag FG is set, the first storage device 120 may perform a storage operation on the data DT through operations S510 to S512 . In this case, the data DT may be redundantly stored in the nonvolatile memories 122 . In an exemplary embodiment, the flag FG may be set in units of I/O. The flag FG may be set to ensure data reliability with respect to data referenced by a specific object.

이후에, 제1 스토리지 장치(120), 스토리지 노드(110), 및 클라이언트 서버(101)는 S515 단계, S516 단계, 및 S517 단계의 동작들을 수행할 수 있으며, 이는 도 6을 참조하여 설명된 S113 단계, S114 단계, 및 S115 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다. Thereafter, the first storage device 120 , the storage node 110 , and the client server 101 may perform the operations of steps S515 , S516 , and S517 , which are described in S113 with reference to FIG. 6 . Since the operations of step S114, and step S115 are similar, a detailed description thereof will be omitted.

도 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 client server 101 may transmit a second write request PUT2 to the storage node 110 . The second write request PUT2 may include the second object identifier ID2 , the first data DT1 , and the flag FG.

스토리지 노드(110)의 해시 모듈(113)은 제1 데이터(DT1)에 대한 해시 연산을 통해, 제1 해시 값(H1)을 산출할 수 있다. 스토리지 노드(110)의 호스트 인터페이스 회로(116)는 제1 해시 값(H1)을 포함하는 제2 쓰기 요청(PUTa)을 제1 스토리지 장치(120)로 전송할 수 있다.The hash module 113 of the storage node 110 may calculate the first hash value H1 through a hash operation on the first data DT1 . The host interface circuit 116 of the storage node 110 may transmit the second write request PUTa including the first hash value H1 to the first storage device 120 .

제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 host interface circuit 121i of the first storage device 120 may receive the second write request PUTa including the first hash value H1. The deduplication manager 121d of the first storage device 120 may determine whether an entry corresponding to the first hash value H1 exists in the hash-to-physical table H2P. 15 , an entry corresponding to the first hash value H1 may exist in the hash-to-physical table H2P. In this case, the deduplication manager 121d may allocate the second physical address PA2 in response to the flag FG being set. For example, in the embodiment of FIG. 8 , when an entry corresponding to a specific hash value exists in the hash-to-physical table (H2P) for data deduplication, a write operation on data is omitted. On the other hand, in the embodiment of FIG. 15 , since the data redundancy function is disabled through setting the flag FG, even if an entry corresponding to a specific hash value exists in the hash-to-physical table (H2P), the deduplication manager 121d ) can perform a write operation on data.

제1 스토리지 장치(120)의 메모리 인터페이스 회로(121j)는 프로그램 커맨드(CMD_P), 제2 물리 어드레스(PA2), 및 제1 데이터(DT1)를 불휘발성 메모리들(122) 중 적어도 하나의 불휘발성 메모리로 전송할 수 있다. 불휘발성 메모리들(122) 중 적어도 하나의 불휘발성 메모리는 제2 물리 어드레스(PA2)에 대응하는 영역에 제1 데이터(DT1)를 저장할 수 있다. 이 경우, 동일한 제1 데이터(DT1)가 서로 다른 영역에 중복 저장될 수 있다.The memory interface circuit 121j of the first storage device 120 transmits the program command CMD_P, the second physical address PA2 , and the first data DT1 to at least one of the nonvolatile memories 122 . can be transferred to memory. At least one of the nonvolatile memories 122 may store the first data DT1 in an area corresponding to the second physical address PA2 . In this case, the same first data DT1 may be repeatedly stored in different regions.

중복 제거 관리자(121d)는 제1 해시 값(H1)에 대응하는 엔트리를 해시-대-물리 테이블(H2P-3)에 추가함으로써, 제4 해시-대-물리 테이블(H2P-4)를 생성할 수 있다. 예시적인 실시 예에서, 추가된 엔트리의 참조 카운트는 객체 식별자에 대한 정보를 대체될 수 있다.The deduplication manager 121d adds an entry corresponding to the first hash value H1 to the hash-to-physical table H2P-3, thereby generating the fourth hash-to-physical table H2P-4. can In an exemplary embodiment, the reference count of the added entry may be replaced with information about the object identifier.

예시적인 실시 예에서, 스토리지 노드(110)는 객체-대-해시 테이블(O2H)을 갱신할 수 있으며, 이는 앞서 설명된 바와 유사하므로, 이에 대한 상세한 설명은 생략된다.In an exemplary embodiment, the storage node 110 may update the object-to-hash table O2H, which is similar to that described above, and thus a detailed description thereof will be omitted.

상술된 바와 같이, 본 발명의 실시 예들에 따르면, 특정 객체들이 참조하는 데이터에 대하여, 데이터 중복 기능을 비활성화시킴으로써, 데이터 신뢰성을 위한 데이터 중복 저장 기능을 제공할 수 있다.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 client server 101 sends a write request (PUT) including an object identifier (ID), data length (len), and data (DT) to the storage node 110 . can be sent to

예시적인 실시 예에서, 클라이언트 서버(101)로부터 수신된, 하나의 객체가 참조하는, 데이터의 길이는 다양하게 가변될 수 있다. 이 경우, 다양한 길이의 데이터에 대하여 적절한 해시 값을 연산하기 위해서는, 연산량이 큰 해시 모듈이 필요하다. 이는 해시 모듈로 인한 성능 저하 또는 면적 증가를 유발시킬 수 있다. 따라서, 클라이언트 서버(101)로부터 수신된 데이터는 미리 정해진 기준 값(REF)의 크기로 분할되어 처리될 수 있다. In an exemplary embodiment, the length of data received from the client server 101 and referenced by one object may be variously changed. In this case, in order to calculate an appropriate hash value for data of various lengths, a hash module with a large amount of computation is required. This may cause performance degradation or area increase due to the hash module. Accordingly, the data received from the client server 101 may be divided and processed by the size of the predetermined reference value REF.

예를 들어, S602 단계에서, 스토리지 노드(110)는 수신된 데이터 길이(len)가 기준 크기(REF)보다 큰지 판별할 수 있다. 수신된 데이터 길이(len)가 기준 크기(REF)보다 크지 않은 경우, S603 단계에서, 스토리지 노드(110) 및 제1 스토리지 장치(120)는 데이터(DT)에 대한 쓰기 동작을 수행할 수 있다. 예시적인 실시 예에서, S603 단계의 쓰기 동작은 도 1 내지 도 15를 참조하여 설명된 스토리지 노드(110) 및 제1 스토리지 장치(120) 사이의 쓰기 동작과 유사할 수 있다.For example, in step S602 , the storage node 110 may determine whether the received data length len is greater than the reference size REF. When the received data length len is not greater than the reference size REF, in step S603 , the storage node 110 and the first storage device 120 may perform a write operation on the data DT. In an exemplary embodiment, the write operation in step S603 may be similar to the write operation between the storage node 110 and the first storage device 120 described with reference to FIGS. 1 to 15 .

수신된 데이터 길이(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 storage node 110 may divide the data DT into the reference size REF. Thereafter, in each of steps S605a to S605n, the storage node 110 and the first storage device 120 may perform write operations on each of the divided data. A write operation in each of steps S605a to S605n may be similar to a write operation between the storage node 110 and the first storage device 120 described with reference to FIGS. 1 to 15 . In an exemplary embodiment, even data divided from the same data may be stored in different storage devices according to the calculated hash value. For example, the first divided data divided from the first data may be stored in the first storage device 120 or the second storage device 130 according to the calculated hash value.

이후에, S607 단계에서, 스토리지 노드(110)는 객체-대-해시 테이블(O2H)을 갱신할 수 있다. 예를 들어, 스토리지 노드(110)는 분할된 객체들 각각에 대한 객체 식별자를 재설정하고, 분할된 데이터 각각에 대한 해시 값을 연산하고, 재설정된 객체 식별자 및 연산된 해시 값 사이의 매핑 관계를 기반으로 객체-대-해시 테이블(O2H)을 갱신할 수 있다. S608 단계에서, 스토리지 노드(110)는 완료 정보를 클라이언트 서버(101)로 전송할 수 있다. Thereafter, in step S607 , the storage node 110 may update the object-to-hash table O2H. For example, the storage node 110 resets an object identifier for each of the divided objects, calculates a hash value for each of the divided data, and based on a mapping relationship between the reset object identifier and the calculated hash value to update the object-to-hash table (O2H). In step S608 , the storage node 110 may transmit completion information to the client server 101 .

상술된 바와 같이, 클라이언트 서버(101)로부터 수신된 데이터의 크기가 기준 크기(REF)보다 큰 경우, 스토리지 노드(110)는 데이터를 기준 크기(REF) 단위로 분할시킬 수 있다. 이 경우, 해시 값 산출을 위한 해시 모듈의 크기 및 연산량이 감소될 수 있기 때문에, 향상된 성능을 갖는 서버 시스템이 제공된다.As described above, when the size of data received from the client server 101 is greater than the reference size REF, the storage node 110 may divide the data into units of the reference size REF. In this case, since the size and amount of calculation of a hash module for calculating a hash value can be reduced, a server system having improved performance is provided.

도 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 client server 101 may transmit a read request (GET) including an object identifier (ID) to the storage node 110 .

S702 단계에서, 스토리지 노드(110)는 수신된 객체 식별자(ID)에 대응하는 데이터가 분할되었는지 판별할 수 있다. 예를 들어, 스토리지 노드(110)는 도 16을 참조하여 설명된 쓰기 방법을 기반으로 특정 데이터를 분할하고, 분할된 데이터를 스토리지 장치들에 저장할 수 있다. In step S702, the storage node 110 may determine whether the data corresponding to the received object identifier (ID) is divided. For example, the storage node 110 may divide specific data based on the write method described with reference to FIG. 16 , and store the divided data in storage devices.

수신된 객체 식별자(ID)에 대응하는 데이터가 분할되지 않은 경우, S703 단계에서, 스토리지 노드(110) 및 제1 스토리지 장치(120)는 읽기 동작을 수행할 수 있다. 읽기 동작은 도 1 내지 도 15를 참조하여 설명된 읽기 동작과 유사할 수 있으며, 이에 대한 상세한 설명은 생략된다.When the data corresponding to the received object identifier (ID) is not divided, in step S703 , the storage node 110 and the first storage device 120 may perform a read operation. The read operation may be similar to the read operation described with reference to FIGS. 1 to 15 , and a detailed description thereof will be omitted.

수신된 객체 식별자(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 storage node 110 may search for hash values based on the object identifier reset with respect to the object identifier (ID). In steps S705a to S705n, the storage node 110 and the first storage device 120 may perform a read operation on each of the found hash values H1 to Hn. Each of the operations S705a to S705n may be similar to the read operation described with reference to FIGS. 1 to 15 , and a detailed description thereof will be omitted.

S706 단계에서, 스토리지 노드(110)는 읽기 동작을 통해 수신된 복수의 데이터를 병합할 수 있다. S707 단계에서, 스토리지 노드(110)는 병합된 데이터를 객체 식별자(ID)에 대응하는 데이터(DT)로서 클라이언트 서버(101)로 전송할 수 있다. In step S706 , the storage node 110 may merge a plurality of data received through a read operation. In step S707 , the storage node 110 may transmit the merged data to the client server 101 as data DT corresponding to the object identifier (ID).

도 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 server system 200 may include a client server 101 and a plurality of storage servers 202 , 203 , and 204 . The client server 101 and the plurality of storage servers 202 , 203 , 204 may communicate with each other through a network NT.

복수의 스토리지 서버들(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 storage nodes 211 , 212 , 213 , and a plurality of storage devices 221 , 222 , 223 , 224 , 225 , 226 . have. Components of each of the plurality of storage servers 202, 203, and 204 (eg, a plurality of storage nodes 211, 212, 213), and a plurality of storage devices 221, 222, 223, 224, 225 and 226)) are similar to those described above, and thus a detailed description thereof will be omitted.

예시적인 실시 예에서, 도면에 도시된 클라이언트 서버(201)의 개수, 스토리지 서버들(202, 203, 204)의 개수, 스토리지 노드들(211, 212, 213)의 개수, 및 스토리지 장치들(221~226)의 개수는 예시적인 것이며, 각 구성 요소들의 개수는 다양하게 증가/감소될 수 있다.In an exemplary embodiment, the number of client servers 201 shown in the figure, the number of storage servers 202 , 203 , 204 , the number of storage nodes 211 , 212 , 213 , and the storage devices 221 The number of ~226) is exemplary, and the number of each component may be variously increased/decreased.

각 스토리지 노드들(211, 212, 213)은 서로 다른 객체 식별자에 대응하는 데이터를 관리하도록 구성될 수 있다. 예를 들어, 클라이언트 서버(201)는 제1 객체 식별자에 대응하는 데이터를 제1 스토리지 노드(211)를 통해 액세스하고, 제2 객체 식별자에 대응하는 데이터를 제2 스토리지 노드(212)를 통해 액세스하고, 제3 객체 식별자에 대응하는 데이터를 제3 스토리지 노드(213)를 통해 액세스할 수 있다. Each of the storage nodes 211 , 212 , and 213 may be configured to manage data corresponding to different object identifiers. For example, the client server 201 accesses data corresponding to the first object identifier through the first storage node 211 , and accesses data corresponding to the second object identifier through the second storage node 212 . and data corresponding to the third object identifier may be accessed through the third storage node 213 .

제1 스토리지 서버(202)에 포함된 제1 스토리지 노드(211)는 스토리지 장치들(221, 222)을 관리하도록 구성될 수 있다. 제2 스토리지 서버(203)에 포함된 제2 스토리지 노드(212)는 스토리지 장치들(223, 224)을 관리하도록 구성될 수 있다. 제3 스토리지 서버(204)에 포함된 제3 스토리지 노드(213)는 스토리지 장치들(225, 226)을 관리하도록 구성될 수 있다. The first storage node 211 included in the first storage server 202 may be configured to manage the storage devices 221 and 222 . The second storage node 212 included in the second storage server 203 may be configured to manage the storage devices 223 and 224 . The third storage node 213 included in the third storage server 204 may be configured to manage the storage devices 225 and 226 .

예시적인 실시 예에서, 제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 first storage node 211 may be configured to access the storage devices 223 , 224 , 225 , 226 managed by other storage nodes 212 , 213 . For example, the first storage node 211 may include the storage devices 223 , 224 , 225 , managed by the other storage nodes 212 , 213 through the network NT or through another separate communication interface. 226) can be accessed. Similarly, the second storage node 212 is configured to provide storage devices 221 , 222 , 225 , 226 managed by other storage nodes 211 , 213 through the network NT or through another separate communication interface. can access Similarly, the third storage node 213 is the storage devices 221 , 222 , 223 , 224 managed by the other storage nodes 211 and 212 through the network NT or through another separate communication interface. can access

제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 third storage nodes 211 , 212 , and 213 may be configured to manage a hash range for the corresponding storage devices 221 to 226 . For example, as shown in FIG. 21 , the first storage node 211 may manage hash ranges HR_11 and HR_12 for each of the storage devices 221 and 222 , and the second storage node 212 . ) may manage hash ranges HR_21 and HR_22 for each of the storage devices 223 and 224 , and the third storage node 213 may manage the hash ranges HR_31 and HR_31 for each of the storage devices 225 and 226 . HR_32) can be managed. In an exemplary embodiment, the hash ranges HR_11 , HR_12 , HR_21 , HR_22 , HR_31 , and HR_32 for each of the storage devices 221 to 226 may be different from each other.

본 발명의 실시 예에 따르면, 서버 시스템(200)은 동일한 데이터를 참조하는 복수의 객체들에 대하여, 데이터 중복 제거 기능을 제공할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 클라이언트 서버(201)는 제1 스토리지 노드(211)를 통해 제1 객체 식별자에 대한 데이터를 액세스하고, 제2 스토리지 노드(212)를 통해 제2 객체 식별자에 대한 데이터를 액세스하고, 제3 스토리지 노드(213)를 통해 제3 객체 식별자에 대한 데이터를 액세스하는 것으로 가정한다.According to an embodiment of the present invention, the server system 200 may provide a data deduplication function for a plurality of objects that refer to the same data. For example, as described above, the client server 201 accesses data for the first object identifier through the first storage node 211 , and accesses the data for the second object identifier through the second storage node 212 . It is assumed that data for a third object identifier is accessed and data for a third object identifier is accessed through the third storage node 213 .

예시적인 실시 예에서, 쓰기 동작시, 클라이언트 서버(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 client server 201 may transmit a write request for the first object identifier ID1 and the first data DT1 to the first storage node 211 . The first storage node 211 may calculate the first hash value H1 through a hash operation on the first data DT1 . The first storage node 211 may determine in which hash range the first hash value H1 is included. The first storage node 211 may transmit a write request including the first data DT1 and the first hash H1 to a storage device having a hash range including the first hash value H1. For example, when the first hash value H1 is included in the hash range HR_21 of the storage device 223 managed by the second storage node 212 , the first storage node 211 stores the first data A write request including (DT1) and the first hash (H1) may be transmitted to the storage device 223 . The first storage node 211 may update the object-to-hash table O2H based on the first object ID1 and the first hash value H1 .

예시적인 실시 예에서, 읽기 동작시, 클라이언트 서버(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 client server 201 may transmit a read request including the first object identifier ID1 to the first storage node 211 . The first storage node 211 may search for a first hash value H1 corresponding to the first object identifier ID1 based on the object-to-hash table O2H. Similar to as described with reference to the write operation, the first storage node 211 determines a hash range including the first hash value H1, and sends the first hash value ( A read request including H1) may be transmitted.

즉, 클라이언트 서버(201)는 객체 식별자를 기반으로 복수의 스토리지 노드들(211~213)을 분할하여 관리할 수 있고, 복수의 스토리지 노드들(211~213)은 데이터에 대한 해시 값을 기반으로 데이터가 저장된 스토리지 장치를 관리할 수 있다. 스토리지 장치는 앞서 설명된 바와 같이, 해시 값 및 참조 카운터를 기반으로 데이터 중복 제거 기능을 제공할 수 있다. That is, the client server 201 may divide and manage the plurality of storage nodes 211 to 213 based on the object identifier, and the plurality of storage nodes 211 to 213 based on the hash value of the data. You can manage storage devices in which data is stored. The storage device may provide a data deduplication function based on a hash value and a reference counter, as described above.

도 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 client server 201 issues a write request (PUT) including a first object identifier ID1, a data length len, and first data DT1. 1 can be transmitted to the storage node 211 . For example, the client server 201 may select a storage server or storage node to access based on the object identifier.

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 first storage node 211 may calculate a first hash value H1 by performing a hash operation on the first data DT1 . In step S803 , the first storage node 211 may determine whether the first hash value H1 is included in a hash range managed by itself. For example, as described with reference to FIG. 21 , the hash ranges managed by the first storage node 211 may be HR_11 and HR_12. The first storage node 211 may determine whether the first hash value H1 is included in the hash ranges of HR_11 and HR_12.

제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 first storage node 211 , in step S804 , the first storage node 211 and the first storage device 221 or 222 perform a write operation can be performed.

제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 first storage node 211, in step S805, the first storage node 211 determines what hash range the first hash value H1 is. It can be determined whether or not For example, when the first hash value H1 is included in the hash range of HR_21 or HR_22, the first storage node 211 determines that the first hash value H1 corresponds to the second storage node 212 . can decide When the first hash value H1 is included in the hash range of HR_31 or HR_32 , the first storage node 211 may determine that the first hash value H1 corresponds to the third storage node 312 .

제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 second storage node 212 , in step S806 , the first storage node 211 is transferred to the second storage node 212 . A write request (PUT) can be sent. In step S807 , the second storage node 212 may calculate the first hash value H1 . In operation S808 , the second storage node 212 and the second storage device 223 or 224 may perform a write operation.

제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 third storage node 213 , in step S809 , the first storage node 211 is transferred to the third storage node 213 . A write request (PUT) can be sent. In operation S810 , the third storage node 213 may calculate the first hash value H1 . In operation S811 , the third storage node 213 and the third storage device 225 or 226 may perform a write operation.

예시적인 실시 예에서, 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 second storage node 212 may transmit completion information to the first storage node 211 . After the write operation in step S811 is completed, in step S813 , the third storage node 213 may transmit completion information to the first storage node 211 .

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 first storage node 211 may transmit completion information (completion) to the client server 201 . have.

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 first storage server 211 may update the object-to-hash table O2H. For example, the first storage server 211 may update the object-to-hash table O2H based on mapping information for the first object identifier ID1 and the first hash value H1 . In an exemplary embodiment, thereafter, when the first storage node 211 receives a read request for the first object identifier ID1, the first storage node 211 performs an updated object-to-hash table ( O2H), a first hash value H1 may be retrieved, and a read operation may be performed based on the retrieved first hash value H1.

도 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 client server 201 may transmit a read request GET including the first object identifier ID1 to the first storage node 211 .

S902 단계에서, 제1 스토리지 노드(211)는 객체-대-해시 테이블(O2H)을 기반으로 제1 객체 식별자(ID1)에 대응하는 제1 해시 값(H1)을 검색할 수 있다.In step S902 , the first storage node 211 may search for a first hash value H1 corresponding to the first object identifier ID1 based on the object-to-hash table O2H.

S903 단계에서, 제1 스토리지 노드(211)는 제1 해시 값(H1)이 자신에 의해 관리되는 해시 범위에 포함되는지 판별할 수 있다. S903 단계의 동작은 도 22의 S803 단계의 동작과 유사하므로, 이에 대한 상세한 설명은 생략된다.In step S903 , the first storage node 211 may determine whether the first hash value H1 is included in a hash range managed by itself. Since the operation of step S903 is similar to the operation of step S803 of FIG. 22 , a detailed description thereof will be omitted.

제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 first storage node 211 , in step S904 , the first storage node 211 and the first storage device 221 or 222 perform a read operation can be performed.

제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 first storage node 211, in step S905, the first storage node 211 determines what hash range the first hash value H1 is. It can be determined whether or not Since the operation of step S905 is similar to the operation of step S805 of FIG. 22 , a detailed description thereof will be omitted.

제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 second storage node 212 , in step S906 , the first storage node 211 is transferred to the second storage node 212 . A read request GETa including the first hash value H1 may be transmitted. In operation S907 , the second storage node 212 and the second storage device 223 or 224 may perform a read operation.

제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 third storage node 213 , in step S908 , the first storage node 211 is transferred to the third storage node 213 . A read request GETa including the first hash value H1 may be transmitted. In operation S909 , the third storage node 213 and the third storage device 225 or 226 may perform a read operation.

예시적인 실시 예에서, 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 second storage node 212 may transmit the read first data DT1 to the first storage node 211 . After the read operation in step S909 is completed, in step S911 , the third storage node 213 may transmit the read first data DT1 to the first storage node 211 .

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 first storage node 211 transmits the first data DT1 to the client server ( 201) can be transmitted.

예시적인 실시 예에서, 클라이언트 서버(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 client server 201 accesses (eg, writes/reads) the first object identifier ID1 through the first storage node 211 has been described, but the present invention The scope is not limited thereto. For example, when the client server 201 accesses the second object identifier ID2 through the second storage node 212, the client server 201 sends a request corresponding to the second object identifier ID2. may be transmitted to the second storage server 212 . The second storage server 212 is a storage node to be accessed based on the second hash value (ie, in the case of a write operation, a hash value of the second data or in the case of a read operation, a hash value of the second object identifier); You can select a storage device.

도 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 data center 2000 is a facility that maintains various data and provides various services for various data, and may be referred to as a data storage center. The data center 200 may be a system for operating a search engine or a database, and may be a computing system used in various institutions. The data center 2000 may include a plurality of application servers 2100_1 to 2100_n and a plurality of storage servers 2200_1 to 2200_m. The number of the plurality of application servers 2100_1 to 2100_n and the number of the plurality of storage servers 2200_1 to 2200_m may be variously modified.

이하에서, 설명의 편의를 위해, 제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 data center 2000 storage servers 2200_1 to 2200_m or the storage devices 2250_1 to 2250_m shown in FIG. 24 have the write operation, read operation, and erase operation described with reference to FIGS. 1 to 23 . can be configured to support

상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.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 쓰기 요청은 상기 제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 데이터를 읽는 단계;
상기 제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.
제 3 항에 있어서,
상기 제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 엔트리의 상기 제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.
제 5 항에 있어서,
상기 제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 참조 카운트는 상기 제1 데이터를 참조하는 객체들의 개수를 가리키는 동작 방법.
The method of claim 1,
The first reference count indicates the number of objects referencing the first data.
제 1 항에 있어서,
외부 장치로부터 제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.
제 9 항에 있어서,
상기 스토리지 노드에 의한 해시 연산 및 상기 제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.
제 9 항에 있어서,
상기 제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.
제 11 항에 있어서,
상기 에러 관리는 상기 제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.
제 9 항에 있어서,
상기 스토리지 노드에 의해, 상기 복수의 스토리지 장치들 각각으로부터 장치 크기 정보를 수신하는 단계; 및
상기 스토리지 노드에 의해, 상기 복수의 스토리지 장치들 각각으로부터의 상기 장치 크기 정보를 기반으로 상기 복수의 스토리지 장치들로 상기 복수의 해시 범위들을 각각 할당하는 단계를 더 포함하고,
상기 복수의 해시 범위들 각각은 서로 중첩되지 않는 동작 방법.
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.
제 13 항에 있어서,
상기 스토리지 노드에 의해, 상기 제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.
제 14 항에 있어서,
상기 스토리지 노드에 의해, 상기 외부 클라이언트 서버로부터 상기 제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.
제 9 항에 있어서,
상기 외부 장치로부터 수신된 상기 제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.
제 17 항에 있어서,
상기 스토리지 컨트롤러는 상기 불휘발성 메모리와 통신하도록 구성된 메모리 인터페이스 회로를 더 포함하고,
상기 제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.
제 17 항에 있어서,
상기 스토리지 컨트롤러는 상기 불휘발성 메모리에 대한 가비지 콜렉션을 수행하도록 구성된 플래시 변환 계층을 더 포함하고,
상기 가비지 콜렉션 중, 상기 플래시 변환 계층은 상기 제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.
제 17 항에 있어서,
상기 스토리지 컨트롤러는 상기 외부 장치와 통신하도록 구성된 호스트 인터페이스 회로를 더 포함하고,
상기 호스트 인터페이스 회로는 객체-기반 인터페이스를 기반으로 동작하는 스토리지 장치.
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.
KR1020200164583A 2020-11-30 2020-11-30 Storage device with data deduplication, operation method of storage device, and operation method of storage server KR20220077208A (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (1)

* Cited by examiner, † Cited by third party
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