KR102306672B1 - Storage System Performing Data Deduplication and Operating Method of Storage System and Data Processing System - Google Patents
Storage System Performing Data Deduplication and Operating Method of Storage System and Data Processing System Download PDFInfo
- Publication number
- KR102306672B1 KR102306672B1 KR1020170031808A KR20170031808A KR102306672B1 KR 102306672 B1 KR102306672 B1 KR 102306672B1 KR 1020170031808 A KR1020170031808 A KR 1020170031808A KR 20170031808 A KR20170031808 A KR 20170031808A KR 102306672 B1 KR102306672 B1 KR 102306672B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- index
- host
- storage system
- reference count
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
데이터 중복 제거를 수행하는 스토리지 시스템, 스토리지 시스템 및 데이터 처리 시스템의 동작방법이 개시된다. 본 개시의 기술적 사상의 일측면에 따른 스토리지 시스템은, 데이터를 저장하는 스토리지 장치 및 호스트로부터 데이터와 함께 상기 데이터로부터 생성된 인덱스를 수신하고, 인덱스와 물리적 어드레스와의 맵핑 정보 및 상기 인덱스에 대응하는 참조 카운트를 저장하는 메모리를 포함하는 컨트롤러를 구비하고, 상기 컨트롤러는, 상기 호스트로부터 수신된 인덱스에 따라 상기 메모리로부터 독출된 맵핑 정보 또는 참조 카운트를 판단함으로써 상기 호스트로부터 수신된 데이터가 중복 데이터에 해당하는 지를 판단하고, 상기 수신된 데이터가 중복 데이터에 해당할 때 상기 참조 카운트를 업데이트함으로써 중복 제거 처리를 수행하는 것을 특징으로 한다.Disclosed are a storage system that performs data deduplication, a storage system, and a method of operating a data processing system. A storage system according to an aspect of the inventive concept receives an index generated from the data together with data from a storage device and a host for storing data, mapping information between the index and a physical address, and corresponding to the index a controller including a memory for storing a reference count, wherein the controller determines the mapping information read from the memory or the reference count according to the index received from the host so that the data received from the host corresponds to duplicate data Deduplication processing is performed by determining whether to do so, and updating the reference count when the received data corresponds to duplicate data.
Description
본 개시의 기술적 사상은 스토리지 시스템에 관한 것으로서, 상세하게는 데이터 중복 제거를 수행하는 스토리지 시스템, 스토리지 시스템 및 데이터 처리 시스템의 동작방법에 관한 것이다.The technical idea of the present disclosure relates to a storage system, and more particularly, to a storage system for performing data deduplication, a storage system, and an operating method of the data processing system.
데이터 중복 제거(deduplication) 기술은, 스토리지 시스템에 저장될 데이터가 기존에 스토리지 시스템에 저장되어 있는지를 판단하고, 중복 저장이라고 판단되는 경우에는 중복된 데이터를 시스템에 저장하지 않고 이미 저장되어 있는 데이터로의 링크만을 관리함으로써 스토리지 공간을 효율적으로 사용할 수 있도록 하는 기술이다. 이와 같은 중복 제거 기술은 스토리지 시스템의 사용 효율을 향상할 수 있으므로 대용량 데이터를 위한 스토리지 시스템에 필요하다.Data deduplication technology determines whether data to be stored in the storage system is previously stored in the storage system, and when it is determined that the data is stored as redundant, the duplicate data is not stored in the system but is converted to already stored data. It is a technology that enables efficient use of storage space by managing only the links of Since such deduplication technology can improve the use efficiency of the storage system, it is required for a storage system for large-capacity data.
그러나, 중복 제거 기술을 이용하기 위해서는 데이터(또는, 해시 인덱스)와 이에 대응하는 데이터의 저장 위치(예컨대, 논리적/물리적 어드레스) 등 다양한 정보가 관리되어야 하며, 상기 중복 제거를 위한 정보의 관리에 필요한 자원이 증대되는 문제가 발생한다.However, in order to use the deduplication technology, various information such as data (or hash index) and a storage location (eg, logical/physical address) of data corresponding thereto must be managed, and it is necessary to manage the information for deduplication. The problem of increasing resources arises.
본 발명의 기술적 사상이 해결하려는 과제는, 중복 제거에 관련된 정보의 관리 부담을 감소할 수 있는 스토리지 시스템, 스토리지 시스템 및 데이터 처리 시스템의 동작방법을 제공하는 데 있다.SUMMARY OF THE INVENTION An object of the present invention is to provide a storage system, a storage system, and an operating method of a data processing system capable of reducing a management burden of information related to deduplication.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 스토리지 시스템은, 데이터를 저장하는 스토리지 장치 및 호스트로부터 데이터와 함께 상기 데이터로부터 생성된 인덱스를 수신하고, 인덱스와 물리적 어드레스와의 맵핑 정보 및 상기 인덱스에 대응하는 참조 카운트를 저장하는 메모리를 포함하는 컨트롤러를 구비하고, 상기 컨트롤러는, 상기 호스트로부터 수신된 인덱스에 따라 상기 메모리로부터 독출된 맵핑 정보 또는 참조 카운트를 판단함으로써 상기 호스트로부터 수신된 데이터가 중복 데이터에 해당하는 지를 판단하고, 상기 수신된 데이터가 중복 데이터에 해당할 때 상기 참조 카운트를 업데이트함으로써 중복 제거 처리를 수행하는 것을 특징으로 한다.In order to achieve the above object, a storage system according to an aspect of the technical idea of the present disclosure receives an index generated from the data together with data from a storage device and a host for storing data, and includes an index and a physical address a controller comprising a memory for storing mapping information of and a reference count corresponding to the index, wherein the controller determines the mapping information or the reference count read from the memory according to the index received from the host, whereby the host It is characterized in that by determining whether the received data corresponds to duplicate data, and by updating the reference count when the received data corresponds to duplicate data, deduplication processing is performed.
한편, 본 개시의 기술적 사상의 일측면에 따른 스토리지 시스템의 동작방법은, 호스트로부터 제1 데이터 및 상기 제1 데이터로부터 생성된 제1 인덱스를 수신하는 단계와, 상기 수신된 제1 인덱스가 상기 스토리지 시스템에 기존에 저장된 데이터에 대응하는 인덱스와 동일한지를 판단하는 단계와, 상기 제1 인덱스와 동일한 인덱스가 존재할 때, 데이터 중복 제거에 따라 상기 제1 데이터를 기록함이 없이 상기 스토리지 시스템 내부에 기 저장된 참조 카운트를 업데이트하는 단계 및 상기 호스트로 상기 업데이트된 참조 카운트를 제공하는 단계를 구비하는 것을 특징으로 한다.Meanwhile, in an operating method of a storage system according to an aspect of the technical concept of the present disclosure, receiving first data and a first index generated from the first data from a host; Determining whether the index is the same as the index corresponding to the data previously stored in the system, and when the same index as the first index exists, the reference stored in the storage system in advance without writing the first data according to data deduplication updating a count and providing the updated reference count to the host.
한편, 본 개시의 기술적 사상의 일측면에 따른 데이터 처리 시스템의 동작방법에 있어서, 상기 데이터 처리 시스템은 스토리지 시스템을 포함하고, 외부 시스템으로부터의 데이터를 이용하여 생성된 인덱스와 상기 데이터의 저장 위치를 나타내는 물리적 어드레스의 맵핑 정보를 상기 스토리지 시스템 내에 저장하는 단계와, 데이터 및 상기 데이터에 대응하는 인덱스를 포함하는 기록 요청을 상기 스토리지 시스템에서 수신하는 단계와, 상기 스토리지 시스템 내에서, 상기 기록 요청이 중복 데이터에 대한 기록 요청인지를 판단하는 단계 및 상기 기록 요청이 중복 데이터에 대한 기록 요청인 것으로 판단될 때, 상기 스토리지 시스템 내에 저장된 참조 카운트를 업데이트함으로써 중복 제거 처리를 수행하는 단계를 구비하는 것을 특징으로 한다.On the other hand, in the operating method of the data processing system according to an aspect of the technical idea of the present disclosure, the data processing system includes a storage system, an index generated using data from an external system and a storage location of the data Storing mapping information of the indicated physical address in the storage system; receiving a write request including data and an index corresponding to the data in the storage system; in the storage system, the write request is duplicated determining whether the write request for data is a write request; and when it is determined that the write request is a write request for redundant data, performing deduplication processing by updating a reference count stored in the storage system. do.
본 발명의 기술적 사상의 스토리지 시스템, 스토리지 시스템 및 데이터 처리 시스템의 동작방법에 따르면, 데이터 중복 제거와 관련하여 관리되는 정보의 양을 감소함으로써, 정보의 저장을 위한 메모리를 감소할 수 있으며, 또한 정보 처리 속도를 향상할 수 있는 효과가 있다.According to the operating method of the storage system, the storage system, and the data processing system of the technical idea of the present invention, by reducing the amount of information managed in relation to data deduplication, it is possible to reduce the memory for storing information, and also It has the effect of improving the processing speed.
또한, 본 발명의 기술적 사상의 스토리지 시스템, 스토리지 시스템 및 데이터 처리 시스템의 동작방법에 따르면, 중복 제거 판단 및 데이터 충돌 판단의 주체를 다양하게 설정할 수 있으므로, 시스템 운용 방식을 다양화할 수 있는 효과가 있다. In addition, according to the operating method of the storage system, the storage system, and the data processing system of the technical idea of the present invention, since the subject of the determination of deduplication and the determination of data collision can be set in various ways, there is an effect that the method of operating the system can be diversified. .
도 1은 본 발명의 예시적인 실시예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
도 2 및 도 3은 데이터 처리 시스템의 구체적인 구현 예들을 나타내는 블록도이다.
도 4는 본 발명의 데이터 처리 시스템의 호스트에서 수행되는 기능들의 일 예를 나타내는 블록도이다.
도 5는 본 발명의 일 실시예에 따른 스토리지 시스템의 구현 예를 나타내는 블록도이다.
도 6은 도 5의 동작 메모리에 저장되는 각종 모듈들의 일 예를 나타내는 블록도이다.
도 7a,b는 본 발명의 실시예들에 따라 호스트 및 스토리지 시스템에서 관리되는 정보의 예를 나타내는 도면이다.
도 8은 본 발명의 실시예에 따른 데이터 처리 시스템의 데이터 기록 및 독출 동작의 예를 나타내는 블록도이다.
도 9는 본 발명의 예시적인 실시예에 따른 호스트의 동작 방법을 나타내는 플로우차트이다.
도 10은 본 발명의 예시적인 실시예에 따른 스토리지 시스템의 동작 방법을 나타내는 플로우차트이다.
도 11 내지 도 18은 본 발명의 데이터 처리 시스템에서 호스트와 스토리지 시스템 사이의 통신 예들을 나타내는 도면이다.
도 19는 본 발명의 실시 예에 따른 서버 시스템을 포함하는 네트워크 시스템을 나타내는 블록도이다.1 is a block diagram illustrating a data processing system according to an exemplary embodiment of the present invention.
2 and 3 are block diagrams illustrating specific implementation examples of a data processing system.
4 is a block diagram illustrating an example of functions performed by a host of the data processing system of the present invention.
5 is a block diagram illustrating an implementation example of a storage system according to an embodiment of the present invention.
6 is a block diagram illustrating an example of various modules stored in the operation memory of FIG. 5 .
7A and 7B are diagrams illustrating examples of information managed by a host and a storage system according to embodiments of the present invention.
8 is a block diagram illustrating an example of data write and read operations of the data processing system according to an embodiment of the present invention.
9 is a flowchart illustrating a method of operating a host according to an exemplary embodiment of the present invention.
10 is a flowchart illustrating a method of operating a storage system according to an exemplary embodiment of the present invention.
11 to 18 are diagrams illustrating examples of communication between a host and a storage system in the data processing system of the present invention.
19 is a block diagram illustrating a network system including a server system according to an embodiment of the present invention.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.
도 1은 본 발명의 예시적인 실시예에 따른 데이터 처리 시스템을 나타내는 블록도이다.1 is a block diagram illustrating a data processing system according to an exemplary embodiment of the present invention.
도 1을 참조하면, 데이터 처리 시스템(10)은 호스트(100) 및 스토리지 시스템(200)을 포함할 수 있다. 또한, 스토리지 시스템(200)은 컨트롤러(210) 및 스토리지 장치(220)를 포함할 수 있다. 또한, 본 발명의 예시적인 실시예에 따라, 호스트(100)는 인덱스 생성기(110)를 포함할 수 있으며, 스토리지 시스템(200)의 컨트롤러(210)는 인덱스 테이블(211)을 포함할 수 있다. 도 1의 예에서는 인덱스 테이블(211)이 컨트롤러(210) 내에 구비되는 것으로 도시되었으나, 본 발명의 실시예는 이에 국한될 필요가 없다. 일 예로, 인덱스 테이블(211)은 스토리지 시스템(200) 내에서 컨트롤러(210)의 외부에 배치되는 메모리에 저장되어도 무방하다.Referring to FIG. 1 , a
데이터 처리 시스템(10)은 외부의 시스템(예컨대, 컴퓨팅 노드)으로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 시스템(200)은 하나 이상의 솔리드 스테이트 드라이브(Solid State Drive, SSD)를 포함할 수 있다. 스토리지 시스템(200)이 솔리드 스테이트 드라이브를 포함하는 경우, 스토리지 시스템(200)은 데이터를 불휘발성하게 저장하는 다수 개의 플래시 메모리 칩들(예컨대, NAND 메모리 칩들)을 포함할 수 있다. 또는, 스토리지 시스템(200)은 하나의 플래시 메모리 장치에 해당할 수 있다. 또는, 스토리지 시스템(200)은 하나 이상의 플래시 메모리 칩들을 포함하는 메모리 카드에 해당할 수 있다.The
스토리지 시스템(200)이 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 상기 3D 메모리 어레이는 실리콘 기판 위에 배치되는 활성 영역을 가지는 메모리 셀들의 어레이들, 또는 상기 메모리 셀들의 동작과 관련된 회로로서 상기 기판상에 또는 상기 기판 내에 형성된 회로의 적어도 하나의 물리적 레벨에 모놀리식으로 형성된다. 상기 용어 "모놀리식”은 상기 어레이를 구성하는 각 레벨의 층들이 상기 어레이 중 각 하부 레벨의 층들의 바로 위에 적층되어 있음을 의미한다.When the
본 발명의 기술적 사상에 의한 일 실시예에서, 상기 3D 메모리 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직 방향으로 배치된 Vertical NAND 스트링들을 포함한다. 상기 적어도 하나의 메모리 셀은 전하 트랩층을 포함할 수 있다. In an embodiment of the inventive concept, the 3D memory array includes vertical NAND strings arranged in a vertical direction such that at least one memory cell is positioned on top of another memory cell. The at least one memory cell may include a charge trap layer.
미국 특허공개공보 제7,679,133호, 동 제8,553,466호, 동 제8,654,587호, 동 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 3D 메모리 어레이가 복수 레벨로 구성되고 워드 라인들 및/또는 비트 라인들이 레벨들간에 공유되어 있는 3D 메모리 어레이에 대한 적절한 구성들을 상술하는 것들로서, 본 명세서에 인용 형식으로 결합된다.US Patent Application Publication Nos. 7,679,133, 8,553,466, 8,654,587, 8,559,235, and US 2011/0233648 disclose that a 3D memory array is constructed in multiple levels and contains word lines and/or Those detailing suitable configurations for a 3D memory array in which bit lines are shared between levels are incorporated herein by reference.
다른 예로서, 스토리지 시스템(200)은 다른 다양한 종류의 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 시스템(200)은 불휘발성 메모리를 포함할 수 있으며, 불휘발성 메모리는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM), 나노튜브 RAM(Nanottube RAM), 폴리머 RAM(Polymer RAM: PoRAM), 나노 부유 게이트 메모리(Nano Floating Gate Memory: NFGM), 홀로그래픽 메모리(holographic memory), 분자 전자 메모리 소자(Molecular Electronics Memory) 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory) 등 다양한 종류의 메모리가 적용될 수 있다.As another example, the
호스트(100)는 데이터 처리 시스템(10) 내에서 데이터의 관리 동작을 수행할 수 있다. 일 예로서, 호스트(100)는 스토리지 시스템(200)으로 데이터의 기록 또는 독출 요청을 제공할 수 있다. 또한, 호스트(100)로부터의 데이터 소거 요청에 따라, 스토리지 시스템(200)은 호스트(100)로부터 지시되는 영역의 데이터에 대한 소거 동작을 수행할 수 있다. The
호스트(100)는 다양한 인터페이스를 통하여 스토리지 시스템(200)과 통신할 수 있다. 호스트(100)는 스토리지 시스템(200)에 대한 데이터 억세스를 수행할 수 있는 다양한 종류의 장치를 포함할 수 있다. 예컨대, 호스트(100)는 플래시 메모리 기반의 스토리지 시스템(200)과 통신하는 어플리케이션 프로세서(Application Processor, AP)일 수 있다. 일 실시예에 따라, 호스트(100)는 USB(Universal Serial Bus), MMC(MultiMediaCard), PCI-E(PCIExpress), ATA(AT Attachment), SATA(Serial AT Attachment), PATA(Parallel AT Attachment), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스를 통해 스토리지 시스템(200)과 통신할 수 있다. The
일 실시예에 따라, 데이터 처리 시스템(10)은 데이터 중복 제거(deduplication) 기술을 채용할 수 있다. 중복 제거 기술이 적용되는 경우, 기록 요청된 데이터가 스토리지 시스템(200)에 기존에 저장된 데이터와 중복될 때(또는, 동일할 때), 기록 요청된 데이터를 중복하여 저장하지 않는 대신에 기존에 저장된 데이터의 링크만을 관리함으로써 기록 요청에 대한 처리가 완료될 수 있다. 이에 따라 스토리지 시스템(200)의 저장 공간이 효율적으로 이용될 수 있다. According to one embodiment,
기록 요청된 데이터가 중복 데이터인지를 판단하기 위해, 스토리지 시스템(200) 내에서 인덱스 테이블이 관리될 수 있다. 일 실시예에 따라, 호스트(100)의 인덱스 생성기(110)는 기록 요청된 데이터에 대응하는 인덱스(Index)를 생성하고 이를 스토리지 시스템(200)으로 제공할 수 있다. 인덱스(Index)는 데이터(Data)를 식별할 수 있는 정보를 가질 수 있으며, 일 예로서 데이터(Data) 별로 고유한 값을 갖는 인덱스(Index)가 생성되어 스토리지 시스템(200)으로 제공될 수 있다.In order to determine whether the write-requested data is duplicate data, an index table may be managed in the
인덱스 생성기(110)는 다양하게 구현될 수 있다. 예컨대, 인덱스 생성기(110)는 하드웨어적으로 구현되는 연산 회로를 포함할 수 있다. 또는, 인덱스 생성기(110)는 연산 기능을 수행하는 소프트웨어로 구현될 수도 있다. 일 실시예에 따라, 인덱스 생성기(110)는 데이터(Data)에 대한 해시 함수를 이용한 연산을 통해 해시 값(hash value)을 인덱스(Index)로서 산출하는 해시 엔진에 해당할 수 있다. 인덱스 생성기(110)가 해시 엔진에 해당하는 경우, 인덱스 생성기(110)는 GOST, HAVAL, MD2, MD4, MD5, PANAMA, RadioGatun, RIPEMD, RIPEMD-128/256, RIPEMD-160, RIPEMD-320, SHA-0, SHA-1, SHA-256/224, SHA-512/384, SHA-3, WHIRLPOOL 등 다양한 해시 알고리즘을 이용하여 해시 값을 산출할 수 있다.The
기록 요청시, 스토리지 시스템(200)은 데이터(Data)를 수신할 수 있으며, 또한 데이터(Data)를 식별하기 위한 정보로서 데이터(Data)로부터 생성된 인덱스(Index)를 함께 수신할 수 있다. 데이터 기록 동작시, 스토리지 시스템(200)의 컨트롤러(210)는 인덱스(Index)와 물리적 어드레스(예컨대, 물리적 블록 어드레스(PBA))를 맵핑시키고, 맵핑된 물리적 어드레스(PBA)에 해당하는 위치에 데이터(Data)를 저장할 수 있다. 또한, 인덱스(Index)와 물리적 어드레스(PBA)의 맵핑 정보는 인덱스 테이블(211)에 저장되어 관리될 수 있다.When a write request is made, the
일 실시예에 따라, 호스트(100)는 파일 단위의 데이터 관리나 스토리지 시스템(200)에 대한 논리적 어드레스의 생성을 위한 파일 시스템을 실행할 필요가 없이, 호스트(100)는 데이터(Data) 및 이에 대응하는 인덱스(Index)를 데이터 기록을 위한 정보로서 스토리지 시스템(200)으로 제공할 수 있다. 또한, 스토리지 시스템(200)이 플래시 메모리를 포함할 때, 컨트롤러(210)는 호스트(100)와 스토리지 장치(200) 사이의 인터페이스를 제공하기 위해 FTL(Flash Translation Layer)을 포함할 수 있으며, FTL를 통한 어드레스 맵핑 동작은 인덱스(Index)와 물리적 어드레스(PBA) 사이의 맵핑을 수행할 수 있다.According to an embodiment, the
본 발명의 일 실시예에 따른 데이터 중복 제거에 관련된 동작 예를 설명하면 다음과 같다. An example of an operation related to data deduplication according to an embodiment of the present invention will be described as follows.
외부 시스템으로부터 데이터 기록이 요청됨에 따라, 호스트(100)는 외부 시스템으로부터 데이터(Data) 및 이에 대응하는 논리적 어드레스(미도시)를 수신할 수 있다. 또한, 인덱스 생성기(110)에 의해 생성된 인덱스(Index)가 호스트(100) 내에 저장될 수 있다. 일 예로서, 호스트(100)는 메모리(미도시)를 포함하고, 인덱스(Index)는 수신된 논리적 어드레스에 정렬되어 메모리에 트리 구조로서 저장될 수 있다.As data recording is requested from the external system, the
스토리지 시스템(200)은 호스트(100)로부터 데이터(Data) 및 인덱스(Index)를 수신하고, 인덱스(Index)를 이용하여 데이터의 중복 여부를 판단하며, 판단 결과에 따라 중복 제거(Deduplication) 처리를 수행할 수 있다. 일 예로서, 스토리지 시스템(200)은 호스트(100)로부터 수신된 인덱스(Index)가 스토리지 시스템(200) 내에 기존에 저장된 데이터에 대응하는 인덱스와 동일한지 여부를 비교하고, 이에 따라 데이터의 중복 여부를 판단할 수 있다.The
인덱스(Index)를 이용한 중복 데이터 여부를 판단함에 있어서, 인덱스 테이블(211)에 기존에 수신된 인덱스(Index)가 저장된 경우, 수신된 인덱스(Index)와 인덱스 테이블(211)에 저장된 인덱스와의 비교 동작을 통해 데이터 중복 여부가 판단될 수 있다. 동일한 인덱스(Index)가 인덱스 테이블(211)에 존재하지 않는 경우, 스토리지 시스템(200)은 수신된 인덱스(Index)에 새로이 맵핑된 물리적 어드레스(PBA)가 지시하는 위치에 데이터(Data)를 저장할 수 있다. 반면에, 수신된 인덱스(Index)와 동일한 인덱스(Index)가 인덱스 테이블(211)에 존재하는 경우, 스토리지 시스템(200)은 수신된 데이터(Data)가 중복 데이터인 것으로 판단하고, 데이터(Data)를 스토리지 장치(220)에 저장하지 않음으로써 중복 제거 처리를 수행할 수 있다. In determining whether data is duplicated using the index, when the previously received index is stored in the index table 211 , the received index is compared with the index stored in the index table 211 . Data duplication may be determined through the operation. When the same index (Index) does not exist in the index table 211, the
중복 제거에 기반한 데이터 기록이 수행됨에 따라, 스토리지 시스템(200)에 기 저장된 데이터(Data)는 외부 시스템으로부터의 다수의 논리적 어드레스들에 의해 참조(또는, 억세스)될 수 있다. 일 실시예에 따라, 스토리지 시스템(200)은 기 저장된 데이터(Data)의 참조된 횟수를 관리하기 위해 카운트 정보(예컨대, 참조 카운트)를 더 저장할 수 있으며, 일 예로서 참조 카운트는 인덱스 테이블(211)에 저장되어 관리될 수 있다. 일 실시예에 따라, 호스트(100)로부터 기록 요청된 데이터(Data)가 중복 데이터에 해당하는 경우, 스토리지 시스템(200)은 참조 카운트에 대한 업데이트 동작을 수행하고, 중복 제거 처리가 수행되었음을 나타내는 정보와 함께 업데이트된 참조 카운트를 호스트(100)로 제공할 수 있다.As data recording based on deduplication is performed, data previously stored in the
변형 가능한 실시예로서, 물리적 어드레스(PBA) 및 참조 카운트는 인덱스 테이블(211) 내에서 인덱스(Index)에 정렬되어 저장될 수 있으며, 실시예에 따라 인덱스(Index)의 실제 정보는 인덱스 테이블(211)에 저장되지 않을 수 있다. 전술한 중복 데이터의 판단은 다양한 방식에 의해 수행될 수 있으며, 일 예로서 수신된 인덱스(Index)에 정렬되어 저장된 정보(예컨대, 물리적 어드레스 및/또는 참조 카운트)를 확인함으로써 중복 데이터 여부가 판단될 수도 있을 것이다. As a deformable embodiment, the physical address (PBA) and the reference count may be sorted and stored in an index (Index) in the index table 211, and according to an embodiment, actual information of the index (Index) may be stored in the index table 211 ) may not be saved. Determination of the above-described duplicate data may be performed by various methods, and as an example, whether duplicate data is determined by checking information (eg, physical address and/or reference count) stored in alignment with a received index. it might be
상기와 같은 실시예에 따르면, 호스트(100)는 데이터(Data)를 연산 처리함으로써 생성된 인덱스(Index)를 데이터(Data)의 기록/독출을 위한 정보로서 직접 스토리지 시스템(200)으로 제공할 수 있으므로, 데이터 중복 제거를 위해 관리되는 정보의 양이 감소될 수 있으며, 또한 호스트(100) 내에서 정보를 저장하기 위한 메모리 공간이 감소될 수 있다. 예컨대, 일반적인 경우에서 호스트(100)는 파일 시스템 등의 운용을 통해 인덱스(Index)와 파일 ID(또는, 스토리지 시스템(200)에 대한 논리적 블록 어드레스)와의 맵핑 정보를 별도로 관리할 필요가 있으나, 본 발명의 실시예에 따르면 호스트(100)는 파일 시스템의 실행이나 실행 결과에 따른 정보를 저장 및 관리함이 없이 데이터 중복 제거가 처리될 수 있다.According to the above embodiment, the
도 2 및 도 3은 데이터 처리 시스템의 구체적인 구현 예들을 나타내는 블록도이다. 이하의 실시예들에서는, 전술한 인덱스 생성기는 해시 값을 생성하는 해시 엔진에 해당하고, 인덱스는 해시 인덱스(Hash Index)인 것으로 가정된다. 또한, 데이터 처리 시스템은 외부로부터의 데이터를 압축하여 저장하는 것으로 가정될 것이나, 본 발명의 실시예들은 이에 국한될 필요는 없을 것이다.2 and 3 are block diagrams illustrating specific implementation examples of a data processing system. In the following embodiments, it is assumed that the above-described index generator corresponds to a hash engine that generates a hash value, and that the index is a hash index. In addition, it will be assumed that the data processing system compresses and stores data from the outside, but embodiments of the present invention need not be limited thereto.
도 2를 참조하면, 데이터 처리 시스템(300A)은 호스트(310A)와 스토리지 시스템(320A)을 포함할 수 있으며, 외부의 시스템(예컨대, 외부 컴퓨팅 노드)으로부터 데이터(Data) 및 대응하는 논리적 어드레스(LBA)를 수신할 수 있다. 외부의 시스템으로부터 제1 내지 제3 논리적 어드레스(LBA 1 ~ LBA 3)와 이에 대응하는 데이터(Data)가 기존에 제공된 것으로 가정할 때, 제1 내지 제3 논리적 어드레스(LBA 1 ~ LBA 3)와 제1 내지 제3 해시 인덱스(Hash Index 1 ~ Hash Index 3)의 맵핑 정보가 호스트(310A)에 저장되고, 제1 내지 제3 해시 인덱스(Hash Index 1 ~ Hash Index 3)와 제1 내지 제3 물리적 어드레스(PBA 1 ~ PBA 3)의 맵핑 정보가 스토리지 시스템(320A)에 저장될 수 있다. 이후, 외부의 시스템으로부터 제4 논리적 어드레스(LBA 4) 및 이에 대응하는 데이터(Data)가 제공되고, 데이터(Data)로부터 제4 해시 인덱스(Hash Index 4)가 생성되는 것으로 가정한다.Referring to FIG. 2 , the
호스트(310A)는 인덱스 생성기로서 해시 엔진(311A)을 포함할 수 있으며, 또한 생성된 해시 인덱스들을 저장하는 메모리(312A)를 포함할 수 있다. 해시 엔진(311A)는 소정 사이즈의 데이터(Data)에 대응하여 다수의 비트들을 갖는 해시 인덱스를 생성할 수 있다. 상기 데이터(Data) 및 해시 인덱스의 사이즈는 다양하게 정의될 수 있으며, 일 예로서 4 kB의 데이터(Data)로부터 128 비트(bit)의 해시 인덱스가 생성될 수 있다.The
일 실시예에 따라, 제1 내지 제3 해시 인덱스(Hash Index 1 ~ Hash Index 3)는 제1 내지 제3 논리적 어드레스(LBA 1 ~ LBA 3)에 정렬되어 메모리(312A)에 저장될 수 있다. 외부 시스템으로부터 데이터 기록 또는 독출을 위한 논리적 어드레스(LBA)가 수신되는 경우, 논리적 어드레스(LBA)에 대응하여 기 저장된 해시 인덱스(Hash Index)가 메모리(312A)로부터 독출될 수 있다.According to an embodiment, the first to third hash indexes (
또한, 스토리지 시스템(320A)은 메모리(321A)와 데이터(Data)를 압축하는 압축기(322A)를 포함할 수 있다. 일 예로서, 스토리지 시스템(320A)은 수신된 해시 인덱스에 대응하는 물리적 어드레스(PBA)를 생성할 수 있으며, 메모리(321A)는 해시 인덱스와 물리적 어드레스(PBA)의 맵핑 정보를 테이블 형태로 저장할 수 있다. 일 예로서, 제1 내지 제3 해시 인덱스(Hash Index 1 ~ Hash Index 3)와 제1 내지 제3 물리적 어드레스(PBA 1 ~ PBA 3)가 함께 메모리(321A)에 저장될 수 있다. 또는, 제1 내지 제3 물리적 어드레스(PBA 1 ~ PBA 3)는 제1 내지 제3 해시 인덱스(Hash Index 1 ~ Hash Index 3)에 정렬되어 메모리(321A)에 저장될 수 있으며, 이 때, 제1 내지 제3 해시 인덱스(Hash Index 1 ~ Hash Index 3)는 메모리(321A)에 실제 저장되지 않을 수 있다.Also, the
일 실시예에 따라, 메모리(321A)는 해시 인덱스에 대응하는 참조 카운트(Ref CNT)를 더 저장할 수 있다. 예컨대, 메모리(321A)는 제1 내지 제3 해시 인덱스(Hash Index 1 ~ Hash Index 3)에 대응하여 참조 카운트(Ref CNT 1 ~ Ref CNT 3)를 더 저장할 수 있다. 즉, 본 발명의 실시예에서는, 참조 카운트(Ref CNT)가 스토리지 시스템(320A) 내에서 관리될 수 있다. According to an embodiment, the
데이터 중복 제거 동작의 일 예를 설명하면 다음과 같다.An example of the data deduplication operation will be described as follows.
호스트(310A)는 제4 논리적 어드레스(LBA 4) 및 이에 대응하는 데이터(Data)를 수신하고, 상기 해시 엔진(311A)은 데이터(Data)로부터 제4 해시 인덱스(Hash Index 4)를 생성할 수 있다. 생성된 제4 해시 인덱스(Hash Index 4)와 제4 논리적 어드레스(LBA 4)의 맵핑 정보가 메모리(312A)에 저장될 수 있다. 또한, 호스트(310A)는 데이터 기록 요청을 스토리지 시스템(320A)으로 제공함에 있어서, 제4 해시 인덱스(Hash Index 4) 및 대응하는 데이터(Data)를 스토리지 시스템(320A)으로 제공할 수 있다.The
스토리지 시스템(320A)은 제4 해시 인덱스(Hash Index 4)를 이용하여 중복 데이터 여부를 판단할 수 있다. 예컨대, 기존에 저장된 데이터들에 대응하는 제1 내지 제3 해시 인덱스(Hash Index 1 ~ Hash Index 3) 중 어느 하나가 제4 해시 인덱스(Hash Index 4)와 동일한 지 판단될 수 있다. 제4 해시 인덱스(Hash Index 4)와 동일한 해시 인덱스가 메모리(321A)에 존재하지 않는 경우, 스토리지 시스템(320A)은 제4 해시 인덱스(Hash Index 4)를 제4 물리적 어드레스(PBA 4)에 맵핑하고, 제4 물리적 어드레스(PBA 4)가 지시하는 위치에 데이터(User Data)를 저장할 수 있다. 또한, 제4 해시 인덱스(Hash Index 4)와 제4 물리적 어드레스(PBA 4)의 맵핑 정보는 메모리(321A)에 저장될 수 있다.The
반면에, 제4 해시 인덱스(Hash Index 4)가 어느 하나의 해시 인덱스(예컨대, 제1 해시 인덱스(Hash Index 1))와 동일한 것으로 판단될 때, 중복 제거 처리를 통해 데이터(Data)의 중복 저장이 스킵되고, 제1 해시 인덱스(Hash Index 1)에 대응하는 데이터(Data)가 제4 논리적 어드레스(LBA 4)에 의해 참조될 수 있다. 일 실시예에 따라, 중복 제거 처리가 수행되는 경우, 제1 해시 인덱스(Hash Index 1)에 대응하는 제1 참조 카운트(Ref CNT 1) 값이 업데이트될 수 있으며, 일 예로서 제1 참조 카운트(Ref CNT 1) 값이 1 만큼 증가될 수 있다. 또한, 일 실시예에 따라, 중복 제거 처리가 수행되었음을 나타내는 정보와 함께 업데이트된 제1 참조 카운트(Ref CNT 1)가 스토리지 시스템(320A)으로부터 호스트(310A)로 제공될 수 있다.On the other hand, when it is determined that the fourth hash index (Hash Index 4) is the same as any one hash index (eg, the first hash index (Hash Index 1)), redundant storage of data through deduplication processing This is skipped, and the data Data corresponding to the
한편, 도 3은 데이터(Data)를 압축하기 위한 압축기가 호스트에 구비되는 경우를 예시하며, 도 3에 도시된 바와 같이 데이터 처리 시스템(300B)은 호스트(310B)와 스토리지 시스템(320B)을 포함하며, 호스트(310B)는 해시 엔진(311B), 메모리(312B) 및 압축기(313B)를 포함할 수 있다. 또한, 스토리지 시스템(320B)은 해시 인덱스와 물리적 어드레스 사이의 맵핑 정보를 저장하는 메모리(321B)를 포함할 수 있다. 도 3에 도시된 데이터 처리 시스템(300B) 또한 전술한 실시예에서와 동일하게 데이터 중복 제거를 수행할 수 있으며, 일 예로서 스토리지 시스템(320B)은 호스트(310B)로부터 제공된 해시 인덱스를 이용하여 중복 데이터 여부를 판단하고, 판단 결과에 따라 데이터 중복 제거를 수행할 수 있다. Meanwhile, FIG. 3 illustrates a case in which a compressor for compressing data is provided in the host, and as shown in FIG. 3 , the
한편, 전술한 실시예들에 따라 각종 맵핑 정보를 저장하기 위한 메모리는 다양한 종류의 메모리로 구현될 수 있으며, 일 예로서 DRAM(dynamic random access memory), SRAM (static random access memory), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM) 등의 휘발성 메모리로 구현될 수 있다.Meanwhile, according to the above-described embodiments, a memory for storing various types of mapping information may be implemented as various types of memory, and as an example, dynamic random access memory (DRAM), static random access memory (SRAM), and T-RAM. (thyristor RAM), Z-RAM (zero capacitor RAM), or TTRAM (Twin Transistor RAM) may be implemented as a volatile memory.
도 4는 본 발명의 데이터 처리 시스템의 호스트에서 수행되는 기능들의 일 예를 나타내는 블록도이다.4 is a block diagram illustrating an example of functions performed by a host of the data processing system of the present invention.
도 4를 참조하면, 데이터 처리 시스템(400)은 호스트(410) 및 스토리지 시스템(420)을 포함하고, 호스트(410)는 하드웨어적 및/또는 소프트웨어적으로 구현되는 다양한 모듈들을 포함할 수 있다. 예컨대, 호스트(410)는 RPC(Remote Procedure Calls) 모듈(411), 블록 서비스 모듈(412), 중복 제거 관리 모듈(413) 및 압축 모듈(414)을 포함할 수 있다. Referring to FIG. 4 , the
RPC 모듈(411)은 타 시스템(또는, 타 서버)와의 통신을 수행할 수 있으며, 일 예로 데이터 송수신을 위해 타 서버를 호출하는 기능을 수행할 수 있다. 또한, 블록 서비스 모듈(412)은 데이터의 관리를 블록 기반으로 처리하기 위한 기능을 수행할 수 있다. 또한, 중복 제거 관리 모듈(413)은 데이터 중복 제거를 위한 기능의 일부를 호스트(410) 단에서 수행하기 위해 구비될 수 있으며, 일 예로서 중복 제거 관리 모듈(413)은 데이터를 이용하여 해시 인덱스를 생성하는 해시 엔진을 포함할 수 있다. 또한, 중복 제거 관리 모듈(413)은 외부 시스템으로부터의 논리적 어드레스와 해시 인덱스와의 맵핑 정보를 저장하기 위한 메모리를 포함할 수 있다. 또한, 압축 모듈(414)은 데이터를 압축하여 스토리지 시스템(420)으로 제공할 수 있다. The
본 발명의 실시예들에 따라, 데이터의 저장 및 독출에 관련된 정보로서 해시 인덱스가 직접 스토리지 시스템(420)으로 제공될 수 있다. 이에 따라, 데이터를 파일 기준으로 관리하기 위한 파일 시스템이나, 압축을 통해 사이즈가 변동되는 데이터를 논리 블록에 해당하는 사이즈에 따라 관리하기 위한 블록 레이어가 호스트(410)에서 실행될 필요가 없다. 즉, 데이터 중복 제거와 관련하여 필요로 되는 호스트(410)의 메모리 자원이 감소될 수 있으며, 또한 파일 시스템 및/또는 블록 레이어의 기능 중 적어도 일부를 실행하지 않을 수 있으므로 시스템 성능이 향상될 수 있다. According to embodiments of the present invention, a hash index may be directly provided to the
도 5는 본 발명의 일 실시예에 따른 스토리지 시스템의 구현 예를 나타내는 블록도이다. 스토리지 시스템은 컨트롤러와 스토리지 장치를 포함할 수 있으며, 도 5에 도시된 구성은 상기 컨트롤러의 일 구현 예에 해당한다.5 is a block diagram illustrating an implementation example of a storage system according to an embodiment of the present invention. The storage system may include a controller and a storage device, and the configuration shown in FIG. 5 corresponds to an implementation example of the controller.
도 5를 참조하면, 스토리지 시스템(500)은 프로세서로서 중앙 프로세싱 유닛(central processing unit, 510), 호스트 인터페이스(520), 메모리 인터페이스(530) 및 동작 메모리(working memory, 540)를 포함할 수 있다. 일 실시예에 따라, 스토리지 시스템(500)은 해시 엔진(550)을 더 포함할 수 있다. 또한, 동작 메모리(540)에는 인덱스 테이블(541)이 저장될 수 있으며, 변형 가능한 실시예로서 인덱스 테이블(541)은 스토리지 시스템(500) 내의 다른 메모리에 저장되어도 무방할 것이다.Referring to FIG. 5 , a
중앙 프로세싱 유닛(510)은 동작 메모리(540)에 저장된 각종 프로그램들을 실행함으로써 스토리지 시스템(500)의 전반적인 동작을 제어할 수 있다. 동작 메모리(540)에는 스토리지 시스템(500)의 기능과 함께 데이터 중복 제거에 관련된 각종 프로그램들을 포함하는 소프트웨어들이 로딩될 수 있다. 동작 메모리(540)는 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), EEPROM(Electronically Erasable Programmable Read Only Memory), 플래시 메모리 또는 다른 메모리 기술 등으로 구현될 수 있다. The
전술한 실시예에 따라, 호스트는 외부 시스템으로부터의 데이터에 대한 해시 인덱스를 생성하고 이를 스토리지 시스템(500)으로 제공할 수 있다. 스토리지 시스템(500)은 해시 엔진(550)를 추가로 구비할 수 있으며, 일 실시예에 따라 해시 엔진(550)은 호스트로부터 제공된 해시 인덱스나 데이터에 대한 해시 연산을 추가로 수행할 수 있다. 즉, 스토리지 시스템(500)에 해시 엔진(550)이 더 구비됨에 따라, 스토리지 시스템(500)에 저장되는 정보의 양이 더 감소될 수 있다. According to the above-described embodiment, the host may generate a hash index for data from an external system and provide it to the
본 발명의 보다 구체적인 구성 및 동작을 도 5 및 도 6을 참조하여 설명하면 다음과 같다. 도 6은 도 5의 동작 메모리에 저장되는 각종 모듈들의 일 예를 나타내는 블록도이다. 스토리지 시스템(500)이 플래시 메모리를 포함하는 경우, 도 6에 도시된 각종 모듈들은 FTL에 포함되는 구성인 것으로 정의될 수 있다.A more specific configuration and operation of the present invention will be described with reference to FIGS. 5 and 6 as follows. 6 is a block diagram illustrating an example of various modules stored in the operation memory of FIG. 5 . When the
동작 메모리(540)에는 전술한 인덱스 테이블(541)이 저장됨과 함께, 중앙 프로세싱 유닛(510)의 실행에 의해 각종 기능들을 수행하는 모듈들이 저장될 수 있다. 일 예로서, 어드레스 변환 모듈(542), 중복 제거 제어 모듈(543) 및 데이터 관리 모듈(544)이 동작 메모리(540)에 더 저장될 수 있다. In the
어드레스 변환 모듈(542)은 호스트로부터 제공된 해시 인덱스를 물리적 어드레스로 변환한다. 일 예로서, 해시 인덱스와 물리적 어드레스 사이의 맵핑 정보가 인덱스 테이블(541)에 저장될 수 있다. 전술한 예에서와 같이, 인덱스 테이블(541)은 해시 인덱스에 따라 정렬되는 형태로 물리적 어드레스를 저장할 수 있으며, 호스트로부터 제공되는 해시 인덱스에 대응하는 물리적 어드레스가 인덱스 테이블(541)로부터 독출될 수 있다.The
중복 제거 제어 모듈(543)은 데이터가 중복하여 저장되는 것을 방지하기 위한 다양한 기능들을 수행할 수 있다. 일 예로서, 중복 제거 제어 모듈(543)은 호스트로부터 제공되는 해시 인덱스와 인덱스 테이블(541)에 저장된 정보들을 확인하여 기록 요청된 데이터가 중복 데이터에 해당하는 지를 판단할 수 있다. 또한, 중복 제거 제어 모듈(543)은 참조 카운트 정보를 인덱스 테이블(541)에 저장 및 관리하기 위한 동작을 수행할 수 있으며, 일 예로서 호스트로부터의 해시 인덱스와 동일한 해시 인덱스가 존재할 때, 동일한 해시 인덱스에 대응하는 참조 카운트 값을 업데이트할 수 있다. The
한편, 데이터 관리 모듈(544)은 다양한 데이터 관리 동작을 수행할 수 있으며, 일 예로서 플래시 메모리에서의 데이터 관리 동작을 수행할 수 있다. 일 실시예에 따라, 데이터 관리 모듈(544)은 데이터 중복 제거에 관련된 정보를 이용하여 데이터의 관리 동작을 수행할 수 있다. 예컨대, 인덱스 테이블(541)에 저장된 참조 카운트의 값에 따라 데이터의 관리 동작이 조절될 수 있으며, 일 예로 데이터의 이동, 백업, 가비지 컬렉션 등의 다양한 관리 동작이 참조 카운트의 값에 기반하여 수행될 수 있을 것이다.Meanwhile, the
전술한 도 5 및 도 6의 실시예에서는 본 발명의 실시예들에 따른 중복 제거 처리가 소프트웨어적으로 수행되는 예가 도시되었으나, 본 발명의 실시예는 이에 국한될 필요가 없다. 일 예로서, 중복 제거 처리를 위한 기능들 중 적어도 일부는 하드웨어적 또는 하드웨어와 소프트웨어의 조합에 의해 구현되어도 무방할 것이다.In the above-described embodiments of FIGS. 5 and 6, an example in which the deduplication processing according to embodiments of the present invention is performed by software is illustrated, but the embodiment of the present invention is not limited thereto. As an example, at least some of the functions for deduplication processing may be implemented by hardware or a combination of hardware and software.
도 7a,b는 본 발명의 실시예들에 따라 호스트 및 스토리지 시스템에서 관리되는 정보의 예를 나타내는 도면이다. 도 7a는 호스트 측에서 데이터 중복을 판단하는 일반적인 경우가 예시되며, 도 7b는 본 발명의 실시예에 따라 스토리지 시스템 측에서 데이터 중복을 판단하는 예가 도시된다.7A and 7B are diagrams illustrating examples of information managed by a host and a storage system according to embodiments of the present invention. 7A illustrates a general case of determining data redundancy at the host side, and FIG. 7B illustrates an example of determining data redundancy at the storage system side according to an embodiment of the present invention.
도 7a를 참조하면, 호스트는 외부 시스템으로부터 논리적 어드레스(LBA 1 ~ LBA 3) 및 이에 대응하는 데이터들을 수신하고, 데이터들에 대한 인덱스(예컨대 해시 인덱스, Hash Index 1 ~ Hash Index 3)를 생성할 수 있다. 또한, 논리적 어드레스(LBA 1 ~ LBA 3)와 해시 인덱스(Hash Index 1 ~ Hash Index 3)의 맵핑 정보가 메모리에 저장되어 관리될 수 있다. Referring to FIG. 7A , the host receives logical addresses (
또한, 호스트는 스토리지 시스템에 대한 억세스를 위해 파일 시스템을 운용할 수 있으며, 중복 제거를 수행한 후 해시 인덱스(Hash Index 1 ~ Hash Index 3)와 이에 대응하는 파일 정보(예컨대 파일 아이디, File ID 1 ~ File ID 3)를 메모리에 저장할 수 있다. 또한, 해시 인덱스(Hash Index 1 ~ Hash Index 3) 및 파일 정보(File ID 1 ~ File ID 3)에 대응하여 참조 카운트(Ref CNT 1 ~ Ref CNT 3)가 더 저장될 수 있다. 또한, 호스트는 파일 시스템을 통해 스토리지 시스템에 대한 논리적 어드레스(LBA S1 ~ LBA S3)를 스토리지 시스템으로 제공하고, 스토리지 시스템은 논리적 어드레스(LBA S1 ~ LBA S3)와 물리적 어드레스(PBA 1 ~ PBA 3)의 맵핑 정보를 저장할 수 있다. 즉, 호스트에서는 이중 테이블 관리를 수행함으로써 데이터 중복 제거를 수행할 수 있으며, 이에 따라 메모리 이용 량이 증가하게 되며 또한 정보의 검색 시간이 증가될 수 있다. In addition, the host may operate a file system to access the storage system, and after deduplication is performed, hash indexes (
반면에, 도 7b에 도시된 바와 같이, 본 발명의 실시예에 따르면 호스트는 외부 시스템으로부터의 논리적 어드레스(LBA 1 ~ LBA 3) 및 이에 대응하는 해시 인덱스(Hash Index 1 ~ Hash Index 3)의 맵핑 정보만을 관리할 수 있다. 이에 따라, 호스트는 이중으로 테이블을 관리할 필요가 없으며 호스트 단에서의 정보 처리 부담이 감소될 수 있다. On the other hand, as shown in FIG. 7B , according to an embodiment of the present invention, the host maps logical addresses (
호스트는 해시 인덱스(Hash Index 1 ~ Hash Index 3)를 스토리지 시스템으로 제공하고, 스토리지 시스템은 해시 인덱스(Hash Index 1 ~ Hash Index 3)와 물리적 어드레스(PBA 1 ~ PBA 3) 사이의 맵핑 정보를 저장 및 관리할 수 있다. 또한, 스토리지 시스템은 해시 인덱스(Hash Index 1 ~ Hash Index 3) 및 물리적 어드레스(PBA 1 ~ PBA 3)에 대응하는 참조 카운트(Ref CNT 1 ~ Ref CNT 3)를 더 저장할 수 있다. The host provides the hash index (
도 8은 본 발명의 실시예에 따른 데이터 처리 시스템의 데이터 기록 및 독출 동작의 예를 나타내는 블록도이다. 도 8에 도시된 실시예에서, 스토리지 시스템(620)은 NAND 메모리를 포함하는 SSD로서 키-밸류(Key Value) SSD가 예시된다. 8 is a block diagram illustrating an example of data write and read operations of the data processing system according to an embodiment of the present invention. In the embodiment shown in FIG. 8 , the
일 실시예에 따른 데이터 처리 시스템은 다수 개의 스토리지 시스템들을 포함할 수 있으며, 하나 이상의 스토리지 시스템을 키-밸류(Key Value) 스토리지로 구성하고, 실제 데이터는 다른 스토리지 시스템에 저장하는 방식으로 데이터 처리 시스템이 운용될 수 있다. 일 예로서, 컴퓨팅 파워가 낮은 저사양 노드와 SSD로 키-밸류(Key Value) 스토리지를 구성하고, 외부의 클라이언트들은 키-밸류(Key Value) 스토리지에 접근하여 데이터의 저장 및 독출을 요청할 수 있다. 이 때, 스토리지 시스템(620)은 전술한 실시예에서의 인덱스로서 키(Key)를 수신할 수 있으며, 또한 데이터로서 밸류(Value)를 수신할 수 있다. 또한, 전술한 실시예에서와 유사하게, 키(Key)는 외부의 시스템으로부터 제공된 데이터에 대한 해시 연산을 통해 생성될 수 있다. A data processing system according to an embodiment may include a plurality of storage systems, one or more storage systems are configured as key-value storage, and actual data is stored in another storage system. This can be operated. As an example, a key-value storage is configured with a low-spec node and an SSD having low computing power, and external clients may access the key-value storage and request storage and reading of data. At this time, the
도 8을 참조하면, 데이터 처리 시스템(600)은 호스트(610) 및 스토리지 시스템(620)을 포함하고, 전술한 실시예들에 따라 스토리지 시스템(620)은 인덱스로서 키(Key)를 저장 및 관리하고, 저장된 키(Key)를 이용하여 데이터 중복 제거를 수행할 수 있다.Referring to FIG. 8 , the
호스트(610)는 데이터 기록 및 독출 요청을 수신할 수 있다. 기록 동작을 예로 들면, 데이터(User Data)에 대한 해시 연산을 통해 키(Key)가 생성될 수 있으며, 데이터(User Data)에 대한 압축 처리를 통해 압축 데이터에 해당하는 밸류(Value)가 생성될 수 있다. 또한, 키(Key) 및 밸류(Value) 인터페이스 커맨드 처리를 통해 기록 요청(Put(Key, Value)) 및 독출 요청(Get(Key))이 생성될 수 있으며, 상기 요청들(Put(Key, Value), Get(Key))이 SSD 장치 드라이버를 통해 스토리지 시스템(620)으로 제공될 수 있다. The
스토리지 시스템(620)은 수신된 키(Key) 및 밸류(Value)를 이용하여 중복 제거에 기반한 기록/독출 동작을 수행할 수 있다. 일 예로, 스토리지 시스템(620)은 수신된 키(Key)와 인덱스 테이블에 저장된 정보를 참조하여 데이터의 중복 여부를 판단할 수 있다. 예컨대, 수신된 키(Key)와 기 저장된 키(Key)들과의 동일성 여부가 판단되는 것으로 가정하면, 동일한 키(Key)가 존재하지 않는 경우 스토리지 시스템(620)은 수신된 키(Key) 및 이에 대응하는 물리적 어드레스(PBA)의 맵핑 정보를 인덱스 테이블에 추가로 저장할 수 있으며, NAND 메모리에서 물리적 어드레스(PBA)가 지시하는 위치에 밸류(Value)가 저장될 수 있다. 일 저장 예로서, 수신된 키(Key), 밸류(Value) 및 이에 대응하는 메타 데이터(Meta data)가 NAND 메모리의 페이지(NAND Page)에 함께 저장될 수 있다.The
일 실시예에 따라, 인덱스 테이블에는 참조 카운트가 더 저장될 수 있으며, 동일한 키(Key)가 존재하는 경우에는 키(Key) 및 밸류(Value)를 NAND 메모리에 중복하여 저장함이 없이, 상기 동일한 키(Key)에 대응하는 참조 카운트를 업데이트함으로써 데이터 기록 동작이 완료될 수 있다. 또한, 일 실시예에 따라, 키(Key) 및 밸류(Value)에 대해 스토리지 시스템(620) 내에서 해시 연산 처리가 더 수행될 수 있으며, 이 때 스토리지 시스템(620)에 저장되는 키(Key) 및 밸류(Value)의 사이즈가 더 감소될 수 있다.According to an embodiment, a reference count may be further stored in the index table, and when the same key exists, the same key and the same key are not repeatedly stored in the NAND memory. The data write operation can be completed by updating the reference count corresponding to (Key). In addition, according to an embodiment, a hash operation processing may be further performed in the
한편, 독출 동작을 예로 들면, 호스트(610)는 해시 엔진을 통해 데이터(User Data)에 대응하는 키(Key)를 생성하고, 생성된 키(Key)를 데이터 독출을 위한 정보로서 스토리지 시스템(620)으로 제공할 수 있다. 일 예로, 키(Key)와 함께 독출 요청(Get(Key))이 SSD 장치 드라이버를 통해 스토리지 시스템(620)으로 제공될 수 있다. On the other hand, taking the read operation as an example, the
스토리지 시스템(620)은 키(Key)에 대응하는 데이터(User Data)의 독출 요청(Get(Key))을 수신하고, 인덱스 테이블을 통해 키(Key)에 맵핑된 물리적 어드레스(PBA)를 판단할 수 있으며, 물리적 어드레스(PBA)가 지시하는 위치의 데이터를 독출할 수 있다. 일 실시예에 따라 NAND 메모리에 저장된 정보들 중 데이터에 해당하는 밸류(Value)가 독출되어 호스트(610)로 제공될 수 있으며, 호스트(610)는 밸류(Value)에 대한 압축 해제를 통해 데이터(User Data)를 복원할 수 있다.The
도 9는 본 발명의 예시적인 실시예에 따른 호스트의 동작 방법을 나타내는 플로우차트이다.9 is a flowchart illustrating a method of operating a host according to an exemplary embodiment of the present invention.
도 9를 참조하면, 호스트는 외부 시스템 측에서의 어드레스로서 논리적 어드레스(LBA) 및 이에 대응하는 데이터(Data)를 수신한다(S11). 호스트는 데이터에 대한 연산 처리를 통해 인덱스(Index)를 생성하며, 생성된 인덱스(Index)를 호스트 내에 저장할 수 있다(S12). 일 예로서, 호스트는 해시 함수를 이용하여 해시 인덱스를 생성할 수 있으며, 생성된 해시 인덱스를 상기 논리적 어드레스에 정렬하여 메모리에 저장할 수 있다.Referring to FIG. 9 , the host receives a logical address LBA and data corresponding thereto as an address on the external system side ( S11 ). The host may create an index through arithmetic processing on data, and store the created index in the host (S12). As an example, the host may generate a hash index using a hash function, and align the generated hash index to the logical address and store it in a memory.
호스트는 데이터(Data) 및 이에 대응하는 인덱스(Index)를 스토리지 시스템(예컨대, SSD)으로 제공한다(S13). 스토리지 시스템은 호스트로부터의 기록 요청에 따라 데이터 중복 제거가 적용된 기록 동작을 수행할 수 있으며, 일 실시예에 따라 데이터 중복 제거가 수행된 경우, 호스트는 스토리지 시스템으로부터 참조 카운트 정보를 수신할 수 있다(S14). 수신된 참조 카운트 정보는 차후 데이터 관리 동작에 이용될 수 있다.The host provides data and a corresponding index to the storage system (eg, SSD) (S13). The storage system may perform a write operation to which data deduplication is applied according to a write request from the host, and according to an embodiment, when data deduplication is performed, the host may receive reference count information from the storage system ( S14). The received reference count information may be used for subsequent data management operations.
도 10은 본 발명의 예시적인 실시예에 따른 스토리지 시스템의 동작 방법을 나타내는 플로우차트이다.10 is a flowchart illustrating a method of operating a storage system according to an exemplary embodiment of the present invention.
스토리지 시스템은 호스트로부터 데이터(Data) 및 이에 대응하는 인덱스(Index)를 수신하고(S21), 데이터 중복 제거를 위해 인덱스 테이블에 기 저장된 정보들을 검색할 수 있다(S22). 또한, 검색 결과에 따라, 상기 수신된 인덱스(Index)에 정렬하여 저장된 정보가 판단되거나 수신된 인덱스(Index)와 동일한 인덱스의 존재 여부가 판단될 수 있으며, 상기 판단 결과에 따라 호스트로부터 수신된 데이터의 중복 여부가 판단될 수 있다(S23).The storage system may receive data and a corresponding index from the host (S21), and search information previously stored in the index table for data deduplication (S22). In addition, according to the search result, it may be determined whether information stored in alignment with the received index or whether the same index as the received index exists may be determined, and the data received from the host according to the determination result It can be determined whether the overlap of (S23).
중복 데이터가 아닌 것으로 판단된 경우, 스토리지 시스템은 수신된 인덱스(Index)에 대응하는 물리적 어드레스(PBA)를 생성하고, 인덱스(Index)와 물리적 어드레스(PBA)의 맵핑 정보를 저장할 수 있다(S24). 또한, 동일한 인덱스가 존재하지 않으므로, 호스트로부터 제공된 데이터(Data)는 스토리지 시스템에 처음 저장되는 것으로 판단되고, 이에 따라 물리적 어드레스(PBA)에 대응하는 위치에 데이터(Data)가 저장될 수 있다(S25).When it is determined that the data is not duplicate, the storage system may generate a physical address PBA corresponding to the received index Index and store mapping information between the index Index and the physical address PBA ( S24 ). . Also, since the same index does not exist, it is determined that the data provided from the host is initially stored in the storage system, and accordingly, the data may be stored at a location corresponding to the physical address PBA (S25). ).
반면에, 중복 데이터인 것으로 판단된 경우, 호스트로부터 제공된 데이터(Data)와 동일한 데이터가 존재하는 것으로 판단되고, 이에 따라 호스트로부터 제공된 데이터(Data)를 중복하여 저장함이 없이 기록 요청에 대한 처리를 완료할 수 있다. 일 예로서, 호스트로부터 제공된 인덱스(Index)와 동일한 인덱스에 대응하는 참조 카운트가 업데이트되고(S26), 업데이트된 참조 카운트 정보가 호스트로 제공될 수 있다(S27). 참조 카운트의 업데이트는, 참조 카운트의 값을 증가 또는 감소시킴에 의해 수행될 수 있으며, 일 예로서 동일한 인덱스에 대한 기록 요청이 수신될 때마다 참조 카운트가 1 씩 증가될 수 있다.On the other hand, if it is determined that the data is duplicate, it is determined that the same data as the data provided from the host exists, and accordingly, the processing of the write request is completed without redundantly storing the data provided from the host. can do. As an example, the reference count corresponding to the same index as the index provided from the host may be updated (S26), and the updated reference count information may be provided to the host (S27). The update of the reference count may be performed by increasing or decreasing the value of the reference count, and as an example, the reference count may be incremented by 1 whenever a write request for the same index is received.
이하에서는, 데이터 중복 제거와 관련하여, 본 발명의 실시예에 적용 가능한 다양한 동작 예들이 설명된다. 도 11 내지 도 18은 본 발명의 데이터 처리 시스템에서 호스트와 스토리지 시스템 사이의 통신 예들을 나타내는 도면이다. 또한, 이하의 실시예들에서, 스토리지 시스템은 Key-Value SSD(KV SSD)인 것으로 가정되며, 밸류(Value)는 데이터로 지칭될 수 있다.Hereinafter, in relation to data deduplication, various operation examples applicable to an embodiment of the present invention will be described. 11 to 18 are diagrams illustrating examples of communication between a host and a storage system in the data processing system of the present invention. In addition, in the following embodiments, it is assumed that the storage system is a Key-Value SSD (KV SSD), and Value may be referred to as data.
도 11의 예에서는, 데이터 충돌(Collision)을 고려하지 않은 데이터 중복 제거 동작이 설명된다. 일 예로서, 해시 함수 등을 이용하여 생성되는 키(Key)는 데이터(Value)에 비해 작은 사이즈를 가지며, 이에 따라 데이터(Value)가 상이함에도 불구하고 동일한 키(Key)가 생성되는 데이터 충돌이 발생될 가능성이 존재한다.In the example of FIG. 11 , a data deduplication operation without considering data collision is described. As an example, a key generated using a hash function or the like has a smaller size compared to the data value, and accordingly, data collision in which the same key is generated even though the data values are different There is a possibility that it will occur.
도 11을 참조하면, 호스트는 데이터 기록 요청을 수신함에 따라 데이터(Value)로부터 키(Key)를 생성하고, 기록 요청(PUT(Key, Value))을 스토리지 시스템으로 제공한다. 스토리지 시스템은 키(Key)를 이용한 데이터 중복 확인 동작을 수행하고, 중복 데이터에 해당하는 경우 데이터(Value)를 중복하여 저장함이 없이 참조 카운트(Ref CNT) 만을 업데이트할 수 있다. 스토리지 시스템은 해당 기록 요청(PUT(Key, Value))에 대해 중복 제거 처리가 수행되었음을 나타내는 정보(Info_DD)를 호스트로 제공할 수 있으며, 또한 업데이트된 참조 카운트(Ref CNT)를 호스트로 제공할 수 있다. 호스트는 상기 정보(Info_DD)에 기반하여 데이터 중복 제거가 수행되었음을 판단할 수 있다.Referring to FIG. 11 , upon receiving a data write request, a host generates a key from data Value and provides a write request (PUT (Key, Value)) to the storage system. The storage system may perform a data redundancy check operation using a key, and in case of duplicate data, only update the reference count (Ref CNT) without redundantly storing the data (Value). The storage system may provide information (Info_DD) to the host indicating that deduplication processing has been performed for the corresponding write request (PUT (Key, Value)), and may also provide an updated reference count (Ref CNT) to the host. have. The host may determine that data deduplication has been performed based on the information Info_DD.
한편, 도 12 및 도 13은 데이터 충돌(Collision)을 고려한 데이터 중복 제거 동작의 일 예를 나타낸다. 도 12에서는 호스트 측에서 데이터 충돌(Collision) 판단을 수행하고, 도 13에서는 스토리지 시스템 측에서 데이터 충돌 판단을 수행하는 예를 나타낸다.Meanwhile, FIGS. 12 and 13 show an example of a data deduplication operation in consideration of data collision. 12 illustrates an example in which data collision determination is performed on the host side, and data collision determination is performed on the storage system side in FIG. 13 .
도 12를 참조하면, 도 11의 실시예에서와 같이 호스트는 데이터(Value)로부터 키(key)를 생성하고, 기록 요청(PUT(Key, Value))을 스토리지 시스템으로 제공한다. 또한, 스토리지 시스템은 키(Key)를 이용한 중복 확인 동작을 수행하고, 중복 데이터에 해당하는 경우에는 데이터 중복이 발생하였음을 나타내는 정보(Info_D)와 함께, 수신된 키(Key)에 대응하는 데이터(Value)를 독출하여 호스트로 제공할 수 있다.Referring to FIG. 12 , as in the embodiment of FIG. 11 , the host generates a key from data Value and provides a write request (PUT (Key, Value)) to the storage system. In addition, the storage system performs a duplicate check operation using a key, and in the case of duplicate data, data corresponding to the received key (Key) together with information (Info_D) indicating that data duplicate has occurred Value) can be read and provided to the host.
호스트는, 외부 시스템으로부터 기록 요청된 데이터(Value)와 스토리지 시스템으로부터 제공된 데이터(Value)에 대한 비교 동작을 통해 데이터 충돌 여부를 확인할 수 있다. 일 예로서, 호스트는 기록 요청된 데이터(Value)와 스토리지 시스템으로부터 제공된 데이터(Value)에 대한 비트 또는 바이트 단위의 비교 동작을 통해 데이터(Value)의 동일성 여부를 판단하고, 그 판단 결과(Res_C)를 스토리지 시스템으로 제공할 수 있다. The host may check whether there is a data conflict through a comparison operation between the data (Value) requested to be written from the external system and the data (Value) provided from the storage system. As an example, the host determines whether the data (Value) is the same through a bit or byte comparison operation between the write-requested data (Value) and the data (Value) provided from the storage system, and the determination result (Res_C) can be provided as a storage system.
기록 요청된 데이터(Value)와 스토리지 시스템으로부터 제공된 데이터(Value)가 동일함을 나타내는 판단 결과(Res_C)에 따라, 스토리지 시스템은 데이터(Value)를 중복하여 저장함이 없이 참조 카운트(Ref CNT) 만을 업데이트하고, 중복 제거가 수행되었음을 나타내는 정보(Info_DD)를 호스트로 제공할 수 있다. 또한, 업데이트된 참조 카운트(Ref CNT)가 호스트로 더 제공될 수 있다. According to the determination result Res_C indicating that the write-requested data (Value) and the data (Value) provided from the storage system are the same, the storage system updates only the reference count (Ref CNT) without redundantly storing the data (Value) and information (Info_DD) indicating that duplication has been performed may be provided to the host. In addition, an updated reference count (Ref CNT) may be further provided to the host.
한편, 기록 요청된 데이터(Value)와 스토리지 시스템으로부터 제공된 데이터(Value)가 상이함에 따라 데이터 충돌이 발생한 것으로 판단되고, 호스트는 데이터 충돌 제거를 위한 관리 동작을 수행할 수 있다. 상기 데이터 충돌 제거는 다양한 방식에 따라 수행될 수 있으며, 일 예로서 호스트는 충돌이 발생된 데이터(Value)에 대한 다른 해시 값을 갖는 키(Key')를 생성할 수 있다. 일 실시예에 따라, 데이터 충돌 시 호스트는 새로운 기록 요청(PUT(Key', Value))을 스토리지 시스템으로 제공할 수 있으며, 스토리지 시스템은 기록 요청(PUT(Key', Value))에 응답하여 데이터(Value)를 저장함으로써 데이터 충돌이 방지될 수 있다.On the other hand, it is determined that a data conflict has occurred because the data (Value) requested to be written is different from the data (Value) provided from the storage system, and the host may perform a management operation for removing the data conflict. The data collision removal may be performed according to various methods, and as an example, the host may generate a key (Key') having a different hash value for the data (Value) in which the collision occurs. According to an exemplary embodiment, in case of data collision, the host may provide a new write request (PUT(Key', Value)) to the storage system, and the storage system responds to the write request (PUT(Key', Value)) for data By storing (Value), data collisions can be avoided.
한편, 도 13을 참조하면, 전술한 도 11 및 도 12의 실시예에서와 같이 호스트는 해시 함수를 통해 키(Key)를 생성하고, 기록 요청(PUT(Key, Value))을 스토리지 시스템으로 제공한다. 또한, 스토리지 시스템은 키(Key)를 이용한 중복 확인 동작을 수행할 수 있다.Meanwhile, referring to FIG. 13 , as in the above-described embodiments of FIGS. 11 and 12 , the host generates a key through a hash function and provides a write request (PUT (Key, Value)) to the storage system. do. Also, the storage system may perform a duplicate check operation using a key.
키(Key)를 이용한 중복 확인 동작에 따라 중복 데이터로 판단된 경우, 스토리지 시스템 측에서 데이터 충돌의 발생 여부를 판단할 수 있다. 일 예로서, 스토리지 시스템은 키(Key)에 대응하는 데이터(Value)를 독출하고, 독출된 데이터(Value)와 호스트로부터 제공된 데이터(Value)와의 동일성 여부를 판단할 수 있다. 만약, 독출된 데이터(Value)와 호스트로부터 제공된 데이터(Value)가 동일한 경우에는 데이터 충돌이 발생되지 않은 것으로 판단되고, 이에 따라 스토리지 시스템은 데이터(Value)를 중복하여 저장함이 없이 참조 카운트(Ref CNT) 만을 업데이트할 수 있다. 또한, 중복 제거가 수행되었음을 나타내는 정보(Info_DD) 및 업데이트된 참조 카운트(Ref CNT)를 호스트로 제공할 수 있다. When it is determined that duplicate data is duplicated according to a duplicate check operation using a key, the storage system may determine whether data collision occurs. As an example, the storage system may read data (Value) corresponding to a key (Key) and determine whether the read data (Value) is identical to data (Value) provided from the host. If the read data (Value) and the data (Value) provided from the host are the same, it is determined that no data collision has occurred, and accordingly, the storage system does not duplicate the data (Value) and does not store the reference count (Ref CNT). ) can only be updated. In addition, information indicating that deduplication has been performed (Info_DD) and an updated reference count (Ref CNT) may be provided to the host.
반면에, 데이터 충돌이 발생된 것으로 판단된 경우, 스토리지 시스템은 데이터 충돌이 발생되었음을 나타내는 정보(Info_C)를 호스트로 제공할 수 있다. 전술한 실시예에서와 동일 또는 유사하게 호스트는 데이터 충돌 제거를 위한 관리 동작을 수행할 수 있으며, 일 예로서 호스트는 충돌이 발생된 데이터(Value)에 대한 다른 해시 값을 갖는 키(Key')를 생성하고 새로운 기록 요청(PUT(Key', Value))을 스토리지 시스템으로 제공할 수 있다. On the other hand, when it is determined that a data collision has occurred, the storage system may provide information Info_C indicating that a data collision has occurred to the host. In the same or similar manner as in the above embodiment, the host may perform a management operation for data collision removal, and as an example, the host may have a key (Key') having a different hash value for the data (Value) in which the collision has occurred. can be created and provide a new write request (PUT(Key', Value)) to the storage system.
전술한 실시예들에서는 데이터 충돌 제거를 위해 새로운 해쉬 연산이 수행되는 예가 설명되었으나 본 발명의 실시예는 이에 국한될 필요가 없다. 예컨대, 충돌이 발생된 데이터를 스토리지 시스템에 기록하고 테이블 정보를 연관 리스트(Linked-list) 형태로 관리함으로써 데이터 충돌이 제거되어도 무방하며, 충돌 회수를 카운팅하여 이에 기반한 데이터 충돌 관리가 수행되거나 기타 다른 다양한 관리 방식이 적용되어도 무방할 것이다.In the above-described embodiments, an example in which a new hash operation is performed for data collision removal has been described, but the embodiment of the present invention is not limited thereto. For example, data conflicts can be eliminated by recording data in which conflicts occur in the storage system and managing table information in the form of a linked-list, counting the number of conflicts and performing data conflict management or other It will be safe even if various management methods are applied.
이하의 실시예들을 나타내는 도면들에서는, 데이터(Value)가 "ABCD"에 해당하고, 데이터(Value)로부터 "123"에 해당하는 키(Key)가 생성되는 것으로 가정한다. 도 14는 참조 카운트의 관리와 관련된 데이터 처리 시스템의 일 동작 예를 나타낸다. In the drawings showing the following embodiments, it is assumed that data (Value) corresponds to “ABCD” and a key corresponding to “123” is generated from data Value. 14 shows an example of an operation of a data processing system related to management of a reference count.
도 14를 참조하면, 호스트는 데이터(Value)로부터 "123"에 해당하는 키(Key)를 생성하고, 데이터(Value)에 대한 기록 요청(PUT(123, ABCD))을 스토리지 시스템으로 제공한다. 스토리지 시스템은 수신된 데이터(Value)가 중복 데이터에 해당하지 않음을 판단하고, 기록 요청(PUT(123, ABCD))에 따라 데이터(Value)를 정상적으로 기록함과 함께, 기록 완료를 나타내는 신호를 호스트로 제공할 수 있다. Referring to FIG. 14 , a host generates a key corresponding to “123” from data Value and provides a write request (PUT 123, ABCD) for data Value to the storage system. The storage system determines that the received data (Value) does not correspond to duplicate data, records the data (Value) normally according to the write request (PUT (123, ABCD)), and sends a signal indicating the completion of writing to the host. can provide
이후, 호스트는 중복 데이터 "ABCD"에 대한 기록 요청을 스토리지 시스템으로 제공할 수 있다. 스토리지 시스템은 키(Key)를 이용한 확인을 통해 상기 수신된 기록 요청이 중복 데이터에 대한 기록 요청에 해당하는 것으로 판단하고, 데이터 중복이 발생하였음을 나타내는 정보(Info_D)를 호스트로 제공할 수 있다. 호스트는 상기 정보(Info_D)에 대응하여 "123"에 해당하는 키(Key)를 포함하는 독출 요청(GET(123))을 스토리지 시스템으로 제공할 수 있으며, 스토리지 시스템은 독출 요청(GET(123))에 따라 데이터(Value)를 독출하여 호스트로 제공할 수 있다.The host may then provide a write request for the redundant data “ABCD” to the storage system. The storage system may determine that the received write request corresponds to a write request for duplicate data through verification using a key, and may provide information Info_D indicating that data duplication has occurred to the host. The host may provide a read request (GET 123) including a key corresponding to "123" to the storage system in response to the information Info_D, and the storage system may provide the read request (GET 123) ), the data (Value) can be read and provided to the host.
호스트는, 전술한 실시예에서와 동일하게 스토리지 시스템으로부터 독출된 데이터(Value)를 이용하여 데이터의 충돌 여부를 판단할 수 있다. 판단 결과, 스토리지 시스템으로부터 수신된 데이터(Value)와 기록 요청된 데이터(Value)가 동일한 경우, 데이터 충돌이 발생되지 않음에 따라 호스트는 "123"에 해당하는 키(Key)에 대한 참조 카운트를 증가시킬 것을 스토리지 시스템으로 요청할 수 있다. 스토리지 시스템은 호스트로부터의 요청에 응답하여 "123"에 해당하는 키(Key)에 대한 참조 카운트를 증가(또는, 업데이트)함으로써 기록 동작을 완료할 수 있다.The host may determine whether data collides using the data (Value) read from the storage system in the same manner as in the above-described embodiment. As a result of the determination, if the data (Value) received from the storage system and the data requested to be written (Value) are the same, the host increments the reference count for the key corresponding to “123” as there is no data conflict. It can be requested by the storage system. The storage system may complete the write operation by incrementing (or updating) a reference count for a key corresponding to “123” in response to a request from the host.
상기와 같은 실시예에 따르면, 키(Key)들에 대한 참조 카운트가 스토리지 시스템 내에서 관리되는 반면에, 키(Key)들에 대한 참조 카운트를 조절하는 동작은 호스트에 의해 수행될 수 있다. 즉, 중복 데이터에 대한 기록 요청시, 데이터의 충돌 여부가 호스트에 의해 판단되고, 판단 결과에 기반하여 스토리지 시스템 내의 참조 카운트가 호스트에 의해 관리될 수 있다.According to the above embodiment, while reference counts for keys are managed in the storage system, an operation for adjusting reference counts for keys may be performed by the host. That is, when a write request for redundant data is requested, whether data collides is determined by the host, and a reference count in the storage system may be managed by the host based on the determination result.
도 15는 스토리지 시스템 내에서 참조 카운트 정보를 이용하는 동작의 일 예를 나타낸다. 15 illustrates an example of an operation using reference count information in a storage system.
도 15를 참조하면, 전술한 실시예에서와 같이 호스트는 "ABCD"를 갖는 데이터(Value)로부터 "123"에 해당하는 키(Key)를 생성하고, 데이터(Value)에 대한 기록 요청(PUT(123, ABCD))을 스토리지 시스템으로 제공한다. 스토리지 시스템은 데이터(Value)의 중복 여부를 판단하고, 판단 결과에 따라 데이터(Value)를 기록하거나, 또는 데이터(Value)를 기록함이 없이 참조 카운트만을 업데이트할 수 있다. 또한, 중복 제거가 수행되었음을 나타내는 정보(Info_DD)가 호스트로 제공될 수 있다.Referring to FIG. 15 , as in the above-described embodiment, the host generates a key corresponding to “123” from data (Value) having “ABCD”, and requests a write (PUT (PUT) 123, ABCD)) as a storage system. The storage system may determine whether data (Value) is duplicated, record data (Value) according to the determination result, or update only the reference count without recording data (Value). Also, information (Info_DD) indicating that duplication has been performed may be provided to the host.
호스트는 외부 시스템으로부터의 요청에 따라 기존의 데이터(Value)에 대한 오버라이트나 부분 업데이트 동작을 수행할 수 있다. 일 예로서, 호스트는 "123"에 해당하는 키(Key)에 대응하는 데이터(Value)를 다른 값으로 오버라이트하기 위한 요청(PUT_OVERWRITE)을 제공하거나, 또는 키(Key)에 대응하는 데이터(Value)중 일부의 값을 업데이트하기 위한 요청(PUT_PARTIAL_UPDATE)을 제공할 수 있다.The host may perform an overwrite or partial update operation on existing data (Value) according to a request from an external system. As an example, the host provides a request (PUT_OVERWRITE) to overwrite data (Value) corresponding to a key (Key) corresponding to “123” with another value, or data corresponding to a key (Value) ) may provide a request (PUT_PARTIAL_UPDATE) to update the value of some of them.
스토리지 시스템은 호스트로부터의 오버라이트 요청 또는 부분 업데이트 요청의 수행 여부를 판단할 수 있으며, 일 예로서 스토리지 시스템은 "123"에 해당하는 키(Key)에 대응하는 참조 카운트를 확인함으로써 수행 여부를 판단할 수 있다. 만약, 참조 카운트를 확인한 결과 "123"에 해당하는 키(Key)에 대응하는 데이터가 외부 시스템 측에서의 다수의 논리적 어드레스들에 의해 참조되는 데이터인 경우에는, 스토리지 시스템은 상기 데이터를 변경할 수 없음을 나타내는 정보(Failed)를 호스트로 제공할 수 있다. 호스트는 스토리지 시스템으로부터의 정보(Failed)에 기반하여 데이터의 변경 여부를 재차 판단할 수 있다.The storage system may determine whether to perform an overwrite request or a partial update request from the host. As an example, the storage system determines whether to perform by checking a reference count corresponding to a key corresponding to “123”. can do. If, as a result of checking the reference count, data corresponding to a key corresponding to “123” is data referenced by a plurality of logical addresses on the external system side, it indicates that the storage system cannot change the data. Information (Failed) can be provided to the host. The host may determine again whether data is changed based on the information (Failed) from the storage system.
도 16은 데이터 중복 제거 여부가 호스트에 의해 결정되는 일 예를 나타낸다. 16 illustrates an example in which data deduplication is determined by a host.
도 16을 참조하면, 전술한 실시예에서와 같이 호스트는 데이터(Value) "ABCD"로부터 "123"에 해당하는 키(Key)를 생성하고, 데이터(Value)에 대한 기록 요청(PUT(123, ABCD))을 스토리지 시스템으로 제공한다. 스토리지 시스템은 키(Key)를 이용한 중복 확인 동작을 수행하고, 판단 결과를 호스트로 제공할 수 있다. 상기 데이터(Value)가 중복 데이터가 아닌 경우에는 기록 요청된 데이터(Value)가 정상적으로 기록되고, 상기 데이터(Value)가 중복 데이터인 경우에는 데이터 중복이 발생하였음을 나타내는 정보(Info_D)가 호스트로 제공될 수 있다.Referring to FIG. 16 , as in the above-described embodiment, the host generates a key corresponding to “123” from the data “ABCD”, and requests a record for the data (Value) (
호스트는 데이터 중복 제거 기능을 선택적으로 수행할 수 있다. 예컨대, 호스트는 데이터 중복 제거 모드에 따라 동작할 수 있으며, 중복 제거 모드가 적용되는 경우 호스트는 데이터 중복 제거 요청(Req_Dedup)을 스토리지 시스템으로 제공할 수 있다. 스토리지 시스템은 상기 데이터 중복 제거 요청(Req_Dedup)에 응답하여 키(Key)에 대응하는 참조 카운트를 업데이트하고, 중복 제거가 수행되었음을 나타내는 정보(Info_DD)를 호스트로 제공할 수 있다. 반면에, 중복 제거 모드가 적용되지 않은 경우에는, 호스트는 데이터 중복 요청(Req_Dup)을 스토리지 시스템으로 제공할 수 있으며, 스토리지 시스템은 데이터(Value)를 중복하여 저장하고 데이터(Value)가 정상적으로 저장되었음을 나타내는 정보를 호스트로 제공할 수 있다.The host can optionally perform data deduplication. For example, the host may operate according to the data deduplication mode, and when the deduplication mode is applied, the host may provide a data deduplication request (Req_Dedup) to the storage system. The storage system may update a reference count corresponding to a key in response to the data deduplication request Req_Dedup and provide information Info_DD indicating that deduplication has been performed to the host. On the other hand, if the deduplication mode is not applied, the host may provide a data duplication request (Req_Dup) to the storage system, and the storage system duplicates the data (Value) and indicates that the data (Value) is normally stored. The indicated information may be provided to the host.
상기와 같은 중복 제거의 적용은 다양한 기준에 의해 수행될 수 있다. 일 예로서, 호스트는 데이터(Value)에 따라 그 중요도를 판단할 수 있으며, 상대적으로 중요한 데이터(또는, 저장 안정성이 요구되는 데이터)에 대해서는 데이터(Value)를 중복 저장할 것을 요청할 수 있다. 반면에, 상대적으로 중요하지 않은 데이터(Value)에 대해서는 데이터 중복 제거를 적용할 수 있다.The application of deduplication as described above may be performed according to various criteria. As an example, the host may determine its importance according to the data (Value), and may request to redundantly store the data (Value) for relatively important data (or data requiring storage stability). On the other hand, data deduplication may be applied to relatively insignificant data (Value).
일 실시예에 따라, 스토리지 시스템은 그 내부에 저장된 참조 카운트를 호스트로 제공할 수 있으며, 호스트는 데이터 중복 제거를 적용함에 있어서 참조 카운트의 값을 판단할 수 있다. 일 예로서, 특정 키(Key)에 대응하는 참조 카운트의 값이 상대적으로 큰 경우, 이는 상기 특정 키(Key)에 대응하는 데이터(Value)가 많이 참조되고 있음을 나타낼 수 있다. 이 때, 호스트는 특정 키(Key)에 대응하는 참조 카운트의 값이 임계값을 초과하는 지를 판단하고, 상기 특정 키(Key)에 대응하는 데이터의 기록 동작시, 참조 카운트의 값과 임계값과의 비교 결과에 따라 데이터 중복 제거를 적용하거나 적용하지 않을 수 있다.According to an embodiment, the storage system may provide the reference count stored therein to the host, and the host may determine the value of the reference count in applying data deduplication. As an example, when the value of the reference count corresponding to the specific key is relatively large, this may indicate that a lot of data (Value) corresponding to the specific key are being referenced. At this time, the host determines whether the value of the reference count corresponding to the specific key exceeds the threshold, and when writing data corresponding to the specific key, the value of the reference count and the threshold Data deduplication may or may not be applied depending on the comparison result of
도 17은 데이터 처리 시스템에서 참조 카운트를 이용한 일 동작 예를 나타낸다. 도 17에 도시된 특징들 중 앞선 실시예에서 설명된 특징과 동일한 것에 대해서는 구체적인 설명이 생략된다.17 shows an example of an operation using a reference count in a data processing system. Among the features shown in FIG. 17 , detailed descriptions of features that are the same as those described in the previous embodiment will be omitted.
도 17을 참조하면, 본 발명의 실시예에 따른 데이터 처리 시스템은 호스트와 스토리지 시스템을 포함하고, 키(Key)에 대응하는 참조 카운트는 스토리지 시스템 내에 저장될 수 있다. 또한, 스토리지 시스템은 참조 카운트를 호스트로 제공할 수 있다. 참조 카운트는 다양한 방식에 따라 스토리지 시스템으로부터 호스트로 제공될 수 있다. 일 예로서, 데이터 중복 제거가 적용될 때마다 해당 키(Key)에 대응하는 참조 카운트가 호스트로 제공될 수 있다. 또는, 데이터 중복 제거와는 무관하게, 주기적 또는 비주기적으로 스토리지 시스템 내의 메모리에 저장된 참조 카운트가 호스트로 제공될 수도 있다.Referring to FIG. 17 , a data processing system according to an embodiment of the present invention includes a host and a storage system, and a reference count corresponding to a key may be stored in the storage system. The storage system may also provide a reference count to the host. The reference count may be provided from the storage system to the host in various ways. As an example, whenever data deduplication is applied, a reference count corresponding to a corresponding key may be provided to the host. Alternatively, irrespective of data deduplication, a reference count stored in a memory in the storage system may be provided to the host periodically or aperiodically.
호스트는 스토리지 시스템으로부터 제공된 참조 카운트를 저장할 수 있으며, 데이터 관리 동작을 위해 참조 카운트를 판단할 수 있다. 예컨대, 참조 카운트가 상대적으로 많은(또는, 임계값을 초과하는) 키(Key)에 대해서는, 해당 키(Key)에 대응하는 데이터의 중요도가 높은 것으로 판단하고 이에 따른 관리 동작을 수행할 수 있다. 일 실시예로서, 호스트는 해당 키(Key)에 대응하는 데이터의 백업 요청을 스토리지 시스템으로 제공할 수 있다. 또는 호스트는 해당 키(Key)에 대응하는 데이터를 신뢰도가 높은 저장 영역(예컨대, NAND 메모리에서 싱글 레벨 셀(SLC) 영역 등)으로 이동시킬 것을 스토리지 시스템에 요청할 수 있다. 스토리지 시스템은 호스트로부터의 관리 요청에 따른 동작을 수행할 것이다.The host may store the reference count provided from the storage system, and may determine the reference count for data management operations. For example, for a key having a relatively large reference count (or exceeding a threshold value), it is determined that the importance of data corresponding to the key is high, and a management operation may be performed accordingly. As an embodiment, the host may provide a data backup request corresponding to the corresponding key to the storage system. Alternatively, the host may request the storage system to move data corresponding to the corresponding key to a high-reliability storage area (eg, a single-level cell (SLC) area in a NAND memory). The storage system may perform an operation according to a management request from the host.
도 18은 데이터 처리 시스템에서 참조 카운트를 이용한 일 동작 예를 나타낸다. 도 18에 도시된 특징들 중 앞선 실시예에서 설명된 특징과 동일한 것에 대해서는 구체적인 설명이 생략된다.18 shows an example of an operation using a reference count in a data processing system. Among the features shown in FIG. 18 , detailed descriptions of features that are the same as those described in the previous embodiment will be omitted.
도 18에서는 참조 카운트가 스토리지 시스템에 저장되는 반면에, 참조 카운트의 값이 호스트로부터 스토리지 시스템으로 제공되는 예가 도시된다. 또한, 데이터 중복 여부의 판단이나 데이터 충돌 판단을 위한 동작이 호스트에서 수행되는 예가 도시되나, 본 발명의 실시예는 이에 국한될 필요가 없을 것이다. 예컨대, 데이터 충돌 관리가 수행되지 않거나, 또는 데이터 충돌 관리가 스토리지 시스템 측에서 수행되는 경우에도 본 실시예가 적용될 수 있을 것이다.18 shows an example in which the reference count is stored in the storage system, while the value of the reference count is provided from the host to the storage system. In addition, although an example in which an operation for determining whether data is duplicated or determining a data collision is performed in the host is illustrated, the embodiment of the present invention need not be limited thereto. For example, the present embodiment may be applied even when data conflict management is not performed or data conflict management is performed at the storage system side.
도 18을 참조하면, 호스트는 "ABCD"를 갖는 데이터(Value)로부터 "123"에 해당하는 키(Key)를 생성하고, 데이터(Value)에 대한 기록 요청(PUT(123, ABCD))이 스토리지 시스템으로 제공됨에 따라 스토리지 시스템은 데이터(Value)를 저장할 것이다. 이후, 동일한 키(예컨대, "123")가 생성됨에 따라 호스트는 데이터 중복이 발생하였음을 판단할 수 있으며, 호스트는 "123"에 해당하는 키(Key)에 대응하는 데이터(Value)의 독출 요청을 스토리지 시스템으로 제공할 수 있다. 스토리지 시스템은 키(Key)에 대응하는 데이터(Value)와 함께, 키(Key)에 대응하는 참조 카운트(예컨대, 1)를 호스트로 제공할 수 있다. Referring to FIG. 18 , the host generates a key corresponding to “123” from data (Value) having “ABCD”, and a write request (PUT(123, ABCD)) for the data (Value) is stored in the storage As provided to the system, the storage system will store data (Value). Thereafter, as the same key (eg, “123”) is generated, the host may determine that data duplication has occurred, and the host requests to read data value corresponding to the key corresponding to “123”. can be provided as a storage system. The storage system may provide a reference count (eg, 1) corresponding to the key (eg, 1) to the host together with data (Value) corresponding to the key (Key).
호스트는 스토리지 시스템으로부터 수신된 데이터(Value)를 이용하여 데이터 충돌 여부를 판단한다. 만약, 데이터 충돌이 발생한 것으로 판단된 경우에는, 호스트는 전술한 실시예들에 따른 데이터 충돌 관리 동작을 수행할 수 있다. 반면에, 데이터 충돌이 발생하지 않은 것으로 판단된 경우에는 데이터 기록 요청을 재차 스토리지 시스템으로 제공함과 함께 해당 키(Key)에 대응하는 참조 카운트를 2의 값으로 변경하여 스토리지 시스템으로 제공할 수 있다. 스토리지 시스템은 데이터 중복 제거에 기반하여 기록 동작을 수행하며, 일 예로서 중복된 데이터(Value)를 기록함이 없이 호스트로부터 제공된 정보에 따라 해당 키(Key)에 대응하는 참조 카운트를 1 에서 2 로 업데이트할 수 있다.The host determines whether there is a data collision by using the data (Value) received from the storage system. If it is determined that a data collision has occurred, the host may perform the data collision management operation according to the above-described embodiments. On the other hand, if it is determined that no data collision has occurred, the data write request may be provided to the storage system again, and the reference count corresponding to the corresponding key may be changed to a value of 2 and provided to the storage system. The storage system performs a write operation based on data deduplication, and as an example, updates the reference count corresponding to the corresponding key from 1 to 2 according to the information provided from the host without recording the duplicate data (Value). can do.
도 19는 본 발명의 실시 예에 따른 서버 시스템을 포함하는 네트워크 시스템을 나타내는 블록도이다. 도 19에서는 서버 시스템과 함께 다수의 터미널들(예컨대, 컴퓨팅 노드)이 함께 도시되며, 서버 시스템은 전술한 실시예들에 따른 데이터 처리 시스템을 이용하여 구현될 수 있다.19 is a block diagram illustrating a network system including a server system according to an embodiment of the present invention. 19 illustrates a plurality of terminals (eg, a computing node) together with a server system, and the server system may be implemented using the data processing system according to the above-described embodiments.
도 19를 참조하면, 네트워크 시스템(700)은 서버 시스템(710)과 함께, 네트워크(720)를 통해 통신하는 다수의 터미널들(731_1 ~ 731_n)을 포함할 수 있다. 서버 시스템(710)은 서버(711)와 스토리지 시스템으로서 SSD(712)를 포함할 수 있다. 서버(711)는 전술한 실시예들에서의 호스트의 기능을 수행할 수 있다.Referring to FIG. 19 , the
서버(711)는 네트워크(720)에 연결된 다수의 터미널들(731_1 ~ 731_n)로부터 전송된 요청들(requests)을 처리할 수 있다. 일 예로서, 서버(711)는 다수의 터미널들(731_1 ~ 731_n)로부터 제공되는 데이터를 SSD(712)에 저장할 수 있다. 또한, 전술한 실시예들에 따라, 데이터 중복 제거 기능을 적용함으로써 동일한 데이터가 중복하여 저장되는 것을 감소 또는 방지함으로써 SSD(712)의 저장 공간이 효율적으로 이용될 수 있다. The
SSD(712)는 전술한 실시예들에 따라 해시 인덱스 및 참조 카운트를 관리할 수 있다. 일 실시예에 따라, SSD(712)는 호스트로부터 데이터 및 이에 대응하는 해시 인덱스를 수신하고, 해시 인덱스를 하여 데이터의 중복 여부를 판단할 수 있으며, 판단 결과에 따라 데이터 저장 및 참조 카운트의 업데이트 동작을 수행할 수 있다. 또한, 특정 키(Key)에 대응하는 참조 카운트의 값이 큰 경우, 해당 데이터는 다수의 터미널들(731_1 ~ 731_n) 중 하나 이상의 터미널들에서 이용되는 데이터에 해당할 수 있으며, 전술한 실시예들에 따라 참조 카운트를 이용한 데이터 관리 동작이 수행될 수 있을 것이다.The
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다. Exemplary embodiments have been disclosed in the drawings and specification as described above. Although the embodiments have been described using specific terms in the present specification, these are used only for the purpose of explaining the technical spirit of the present disclosure and are not used to limit the meaning or the scope of the present disclosure described in the claims. . Therefore, it will be understood by those skilled in the art that various modifications and equivalent other embodiments are possible therefrom. Accordingly, the true technical protection scope of the present disclosure should be defined by the technical spirit of the appended claims.
Claims (20)
데이터와 함께, 호스트 내의 해시 엔진에 의해 상기 데이터로부터 생성된 인덱스를 상기 호스트로부터 직접 수신하고, 상기 인덱스와 물리적 어드레스와의 맵핑 정보 및 상기 인덱스에 대응하는 참조 카운트를 저장하는 메모리를 포함하는 컨트롤러를 구비하고,
상기 컨트롤러는, 상기 호스트로부터 수신된 인덱스에 따라 상기 메모리로부터 독출된 맵핑 정보 또는 참조 카운트를 판단함으로써 상기 호스트로부터 상기 인덱스에 대응하여 수신된 데이터가 중복 데이터에 해당하는 지를 판단하고, 상기 수신된 데이터가 중복 데이터에 해당할 때 상기 참조 카운트를 업데이트함으로써 중복 제거 처리를 수행하고,
상기 스토리지 장치는 상기 호스트로부터 수신된 데이터를 밸류로서 저장하고, 상기 호스트로부터 수신된 인덱스를 상기 밸류에 관련된 키로서 저장하는 키-밸류 스토리지 장치인 것을 특징으로 하는 스토리지 시스템.a storage device for storing data; and
A controller including a memory for directly receiving an index generated from the data by a hash engine in the host together with the data from the host, and storing mapping information between the index and a physical address and a reference count corresponding to the index provided,
The controller determines whether data received from the host corresponding to the index corresponds to duplicate data by determining the mapping information or the reference count read from the memory according to the index received from the host, and the received data performing deduplication processing by updating the reference count when
The storage device is a key-value storage device that stores the data received from the host as a value, and stores the index received from the host as a key related to the value.
상기 인덱스는, 상기 데이터에 대해 해시 함수를 이용한 연산을 통해 생성된 해시 값인 것을 특징으로 하는 스토리지 시스템.According to claim 1,
The index is a hash value generated through an operation using a hash function on the data.
상기 호스트로부터 수신된 인덱스와 동일한 값을 갖는 인덱스가 상기 메모리에 존재할 때, 상기 인덱스와 함께 수신된 데이터가 중복 데이터에 해당하는 것으로 판단하는 것을 특징으로 하는 스토리지 시스템.According to claim 1, wherein the controller,
When an index having the same value as the index received from the host exists in the memory, it is determined that data received with the index corresponds to duplicate data.
상기 메모리는 제1 내지 제N 인덱스들에 대응하여 제1 내지 제N 참조 카운트들을 저장하고(단, N은 2 이상의 정수),
상기 컨트롤러는, 상기 호스트로부터 수신된 인덱스가 상기 제1 인덱스와 동일한 것으로 판단될 때, 상기 제1 인덱스에 대응하는 제1 참조 카운트의 값을 증가시킴으로써 중복 제거를 수행하는 것을 특징으로 하는 스토리지 시스템.5. The method of claim 4,
The memory stores first to N-th reference counts corresponding to the first to N-th indexes (where N is an integer of 2 or more);
and the controller, when it is determined that the index received from the host is the same as the first index, performs deduplication by increasing a value of a first reference count corresponding to the first index.
상기 업데이트된 참조 카운트를 상기 호스트로 제공하는 것을 특징으로 하는 스토리지 시스템.According to claim 1, wherein the controller,
and providing the updated reference count to the host.
상기 호스트로부터 수신된 데이터가 중복 데이터임을 나타내는 제1 정보를 상기 호스트로 제공하고,
상기 호스트로부터 참조 카운트 업데이트 요청을 수신하고, 이에 응답하여 상기 참조 카운트에 대한 업데이트를 수행하는 것을 특징으로 하는 스토리지 시스템.According to claim 1, wherein the controller,
providing first information indicating that the data received from the host is redundant data to the host;
and receiving a reference count update request from the host and performing an update on the reference count in response thereto.
상기 호스트로부터 수신된 데이터를 압축하여 상기 스토리지 장치로 제공하는 압축기를 포함하는 것을 특징으로 하는 스토리지 시스템.According to claim 1, wherein the controller,
and a compressor for compressing the data received from the host and providing the compressed data to the storage device.
상기 호스트로부터 수신된 데이터 및 인덱스 중 적어도 하나에 대한 해시 연산을 수행하는 해시 엔진을 포함하는 것을 특징으로 하는 스토리지 시스템.According to claim 1, wherein the controller,
and a hash engine that performs a hash operation on at least one of the index and the data received from the host.
프로세서; 및
상기 프로세서에 의해 실행 가능한 프로그램으로서, 상기 데이터 중복 여부를 판단하고 상기 참조 카운트에 대한 업데이트 동작을 제어하는 중복 제거 제어 모듈을 저장하는 동작 메모리를 포함하는 것을 특징으로 하는 스토리지 시스템.According to claim 1, wherein the controller,
processor; and
and an operation memory for storing a deduplication control module that determines whether the data is duplicated and controls an update operation on the reference count as a program executable by the processor.
호스트로부터 제1 데이터와 함께, 상기 호스트 내의 해시 엔진에 의해 상기 제1 데이터로부터 생성된 제1 인덱스를 상기 호스트로부터 직접 수신하는 단계;
인덱스와 물리적 어드레스와의 맵핑 정보 및 상기 인덱스에 대응하는 참조 카운트를 저장하는 메모리에 대한 독출 동작에 기초하여, 상기 수신된 제1 인덱스가 상기 메모리에 기존에 저장된 데이터에 대응하는 인덱스와 동일한지를 판단하는 단계;
상기 제1 인덱스와 동일한 인덱스가 존재할 때, 데이터 중복 제거에 따라 상기 제1 데이터를 기록함이 없이 상기 메모리에 기 저장된 참조 카운트를 업데이트하는 단계; 및
상기 호스트로 상기 업데이트된 참조 카운트를 제공하는 단계를 구비하고,
상기 스토리지 시스템은 상기 호스트로부터 수신된 데이터를 밸류로서 저장하고, 상기 호스트로부터 수신된 인덱스를 상기 밸류에 관련된 키로서 저장하는 키-밸류 스토리지 시스템인 것을 특징으로 하는 스토리지 시스템의 동작방법.A method of operating a storage system, comprising:
directly receiving from the host a first index generated from the first data by a hash engine in the host together with the first data from the host;
It is determined whether the received first index is the same as an index corresponding to data previously stored in the memory, based on mapping information between an index and a physical address and a read operation for a memory storing a reference count corresponding to the index to do;
updating the reference count pre-stored in the memory without writing the first data according to data deduplication when the same index as the first index exists; and
providing the updated reference count to the host;
The storage system is a key-value storage system that stores the data received from the host as a value, and stores the index received from the host as a key related to the value.
상기 스토리지 시스템은 제2 내지 제N 인덱스들 및 이에 대응하는 제2 내지 제N 참조 카운트들을 저장하고(단, N은 3 이상의 정수),
상기 판단 결과에 따라 상기 제1 인덱스가 상기 제2 인덱스와 동일할 때, 상기 제2 인덱스에 대응하는 제2 참조 카운트의 값이 증가되는 것을 특징으로 하는 스토리지 시스템의 동작방법.12. The method of claim 11,
The storage system stores second to N-th indexes and corresponding second to N-th reference counts (where N is an integer greater than or equal to 3);
When the first index is the same as the second index according to the determination result, a value of a second reference count corresponding to the second index is increased.
상기 업데이트된 참조 카운트를 제공하는 단계는, 상기 값이 증가된 제2 참조 카운트를 상기 호스트로 제공하는 것을 특징으로 하는 스토리지 시스템의 동작방법.13. The method of claim 12,
The providing of the updated reference count comprises providing a second reference count, the value of which is increased, to the host.
상기 제1 인덱스와 동일한 인덱스가 존재하지 않을 때,
상기 제1 인덱스를 제1 물리적 어드레스에 새로이 맵핑하는 단계;
상기 제1 데이터를 상기 제1 물리적 어드레스가 지시하는 위치에 기록하는 단계; 및
상기 제1 인덱스에 대응하는 상기 제1 물리적 어드레스 및 제1 참조 카운트를 상기 메모리에 저장하는 단계를 더 구비하는 것을 특징으로 하는 스토리지 시스템의 동작방법.12. The method of claim 11,
When the same index as the first index does not exist,
mapping the first index to a first physical address;
writing the first data to a location indicated by the first physical address; and
and storing the first physical address corresponding to the first index and a first reference count in the memory.
상기 제1 인덱스와 동일한 인덱스가 존재할 때,
상기 제1 데이터가 중복 데이터임을 나타내는 정보를 상기 호스트로 제공하는 단계; 및
상기 호스트로부터 중복 제거 요청 또는 중복 저장 요청을 수신하는 단계를 더 구비하고,
상기 호스트로부터의 상기 중복 제거 요청에 응답하여 상기 데이터 중복 제거가 수행되고, 상기 호스트로부터의 중복 저장 요청에 응답하여 상기 제1 데이터가 중복하여 저장되는 것을 특징으로 하는 스토리지 시스템의 동작방법.12. The method of claim 11,
When the same index as the first index exists,
providing information indicating that the first data is redundant data to the host; and
Further comprising the step of receiving a deduplication request or a duplicate storage request from the host,
The data deduplication is performed in response to the deduplication request from the host, and the first data is stored in duplicate in response to the duplicate storage request from the host.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/815,040 US11644992B2 (en) | 2016-11-23 | 2017-11-16 | Storage system performing data deduplication, method of operating storage system, and method of operating data processing system |
CN201711180803.XA CN108089817B (en) | 2016-11-23 | 2017-11-23 | Storage system, method of operating the same, and method of operating a data processing system |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662425686P | 2016-11-23 | 2016-11-23 | |
US62/425,686 | 2016-11-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180058169A KR20180058169A (en) | 2018-05-31 |
KR102306672B1 true KR102306672B1 (en) | 2021-09-29 |
Family
ID=62454533
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170031808A Active KR102306672B1 (en) | 2016-11-23 | 2017-03-14 | Storage System Performing Data Deduplication and Operating Method of Storage System and Data Processing System |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102306672B1 (en) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102291365B1 (en) * | 2019-09-19 | 2021-08-18 | 한전케이디엔주식회사 | Apparatus and method for collecting history data of solar power system |
CN114764511B (en) * | 2021-01-15 | 2024-11-01 | 瑞昱半导体股份有限公司 | Memory access device with address scrambling mechanism and memory access method thereof |
US12174806B2 (en) * | 2021-02-02 | 2024-12-24 | Maxlinear, Inc. | Hashing for deduplication through skipping selected data |
KR20230069657A (en) | 2021-11-12 | 2023-05-19 | 에스케이하이닉스 주식회사 | Memory system, operating method thereof and data processing system |
KR102467372B1 (en) | 2022-01-06 | 2022-11-14 | 삼성전자주식회사 | Storage device and method of operating the same |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110276781A1 (en) * | 2010-05-05 | 2011-11-10 | Microsoft Corporation | Fast and Low-RAM-Footprint Indexing for Data Deduplication |
US20170249327A1 (en) | 2016-02-29 | 2017-08-31 | Red Hat, Inc. | Detecting stale storage layouts without using client locks |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8682873B2 (en) * | 2010-12-01 | 2014-03-25 | International Business Machines Corporation | Efficient construction of synthetic backups within deduplication storage system |
US8751763B1 (en) | 2013-03-13 | 2014-06-10 | Nimbus Data Systems, Inc. | Low-overhead deduplication within a block-based data storage |
KR20150002297A (en) * | 2013-06-28 | 2015-01-07 | 삼성전자주식회사 | Storage system and Operating method thereof |
KR102187127B1 (en) * | 2013-12-03 | 2020-12-04 | 삼성전자주식회사 | Deduplication method using data association and system thereof |
EP3059679B1 (en) * | 2014-12-05 | 2018-08-22 | Huawei Technologies Co. Ltd. | Controller, flash memory device, method for identifying data block stability and method for storing data on flash memory device |
-
2017
- 2017-03-14 KR KR1020170031808A patent/KR102306672B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110276781A1 (en) * | 2010-05-05 | 2011-11-10 | Microsoft Corporation | Fast and Low-RAM-Footprint Indexing for Data Deduplication |
US20170249327A1 (en) | 2016-02-29 | 2017-08-31 | Red Hat, Inc. | Detecting stale storage layouts without using client locks |
Also Published As
Publication number | Publication date |
---|---|
KR20180058169A (en) | 2018-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108089817B (en) | Storage system, method of operating the same, and method of operating a data processing system | |
KR102306672B1 (en) | Storage System Performing Data Deduplication and Operating Method of Storage System and Data Processing System | |
JP5405513B2 (en) | MEMORY SYSTEM, NONVOLATILE MEMORY DEVICE, NONVOLATILE MEMORY DEVICE CONTROL METHOD, AND PROGRAM | |
US8910017B2 (en) | Flash memory with random partition | |
US10402096B2 (en) | Unaligned IO cache for inline compression optimization | |
US10990310B2 (en) | Sub-block data deduplication | |
CN115114059B (en) | Using zones to manage capacity reduction due to storage device failure | |
US20130250686A1 (en) | Semiconductor memory device, information processing system and control method | |
US9430639B2 (en) | Data de-duplication in a non-volatile storage device responsive to commands based on keys transmitted to a host | |
WO2020061398A1 (en) | Efficient memory footprint in deduplicated system storing with content based addressing | |
US9164704B2 (en) | Semiconductor storage device for handling write to nonvolatile memories with data smaller than a threshold | |
TW201426305A (en) | Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of TEMP files to ramdisks for enhanced flash endurance | |
US9152350B2 (en) | Semiconductor memory device controlling write or read process | |
CN108027764B (en) | Memory mapping of convertible leaves | |
CN115114057A (en) | Managing capacity reduction in moving down multi-level memory cells | |
TW202234234A (en) | Computing system and host device | |
US20140219041A1 (en) | Storage device and data processing method thereof | |
CN115114055A (en) | Managing capacity reduction and restoration due to storage device failure | |
US20190310788A1 (en) | Similarity-based data deduplication on solid-state storage devices with embedded nonvolatile memory | |
CN115114058A (en) | Managing storage space reduction and reuse in the presence of storage device failures | |
JP2015053075A (en) | Memory system, information processing device, and storage device | |
US20190227740A1 (en) | Atomic write method for multi-transaction | |
CN110147332A (en) | The management method and memory device of catalogue data | |
JP5649709B2 (en) | MEMORY SYSTEM, NONVOLATILE MEMORY DEVICE, NONVOLATILE MEMORY DEVICE CONTROL METHOD AND PROGRAM | |
KR101430552B1 (en) | A Data De-duplication and Recycling Method in SSD-based Storage System for Increasing De-duplication Rate and I/O Performance |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20170314 |
|
PG1501 | Laying open of application | ||
A201 | Request for examination | ||
PA0201 | Request for examination |
Patent event code: PA02012R01D Patent event date: 20190926 Comment text: Request for Examination of Application Patent event code: PA02011R01I Patent event date: 20170314 Comment text: Patent Application |
|
E902 | Notification of reason for refusal | ||
PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20201130 Patent event code: PE09021S01D |
|
E701 | Decision to grant or registration of patent right | ||
PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20210624 |
|
GRNT | Written decision to grant | ||
PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20210923 Patent event code: PR07011E01D |
|
PR1002 | Payment of registration fee |
Payment date: 20210924 End annual number: 3 Start annual number: 1 |
|
PG1601 | Publication of registration | ||
PR1001 | Payment of annual fee |
Payment date: 20240823 Start annual number: 4 End annual number: 4 |