KR20230097755A - 중복제거 관리자를 포함하는 스토리지 장치, 이의 동작하는 방법, 및 이를 포함하는 스토리지 시스템의 동작하는 방법 - Google Patents

중복제거 관리자를 포함하는 스토리지 장치, 이의 동작하는 방법, 및 이를 포함하는 스토리지 시스템의 동작하는 방법 Download PDF

Info

Publication number
KR20230097755A
KR20230097755A KR1020210187568A KR20210187568A KR20230097755A KR 20230097755 A KR20230097755 A KR 20230097755A KR 1020210187568 A KR1020210187568 A KR 1020210187568A KR 20210187568 A KR20210187568 A KR 20210187568A KR 20230097755 A KR20230097755 A KR 20230097755A
Authority
KR
South Korea
Prior art keywords
data
storage device
response
fingerprint
value
Prior art date
Application number
KR1020210187568A
Other languages
English (en)
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 KR1020210187568A priority Critical patent/KR20230097755A/ko
Priority to US17/878,395 priority patent/US20230205443A1/en
Priority to EP22193824.4A priority patent/EP4213007A3/en
Priority to CN202211294244.6A priority patent/CN116339613A/zh
Publication of KR20230097755A publication Critical patent/KR20230097755A/ko

Links

Images

Classifications

    • 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/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
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/061Improving I/O performance
    • 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]
    • 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/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 개시의 실시 예에 따른 스토리지 장치는 제1 외부 스토리지 장치와 통신하고 그리고 중복제거 관리자를 포함한다. 스토리지 장치의 동작하는 방법은, 중복제거 관리자에 의해, 제1 데이터의 제1 핑거프린트를 브로드캐스트하는 단계, 제1 외부 스토리지 장치로부터, 제1 핑거프린트에 대응하는 제1 응답을 수신하는 단계, 중복제거 관리자에 의해, 제1 응답의 참조 플래그가 제1 값 또는 제2 값을 갖는지 여부를 결정하는 단계, 중복제거 관리자에 의해, 제1 응답의 참조 플래그가 제1 값을 갖는 것으로 결정되면, 제1 응답에 기초하여, 매핑 테이블 내의 제1 데이터에 대응하는 제1 매핑 정보를 업데이트하는 단계, 및 중복제거 관리자에 의해, 제1 응답의 참조 플래그가 제1 값을 갖는 것으로 결정되면, 제1 응답에 기초하여, 제1 데이터의 중복제거를 수행하는 단계를 포함한다.

Description

중복제거 관리자를 포함하는 스토리지 장치, 이의 동작하는 방법, 및 이를 포함하는 스토리지 시스템의 동작하는 방법{STORAGE DEVICE HAVING A DEDUPLICATION MANAGER, METHOD OF OPERATING THE SAME, AND METHOD OF OPERATING STORAGE SYSTEM HAVING THE SAME}
본 개시는 스토리지 장치에 관한 것으로, 좀 더 상세하게는, 중복제거 관리자를 포함하는 스토리지 장치, 이의 동작하는 방법, 및 이를 포함하는 스토리지 시스템의 동작하는 방법에 관한 것이다.
메모리 장치는 쓰기 요청에 따라 데이터를 저장하고, 읽기 요청에 따라 저장된 데이터를 출력한다. 예를 들어, 메모리 장치는 DRAM(Dynamic Random Access Memory), SRAM(Static RAM), 등과 같이 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치, 및 플래시 메모리 장치, PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 비-휘발성 메모리 장치로 구분된다.
비-휘발성 메모리 장치는 대용량 스토리지 장치로 사용될 수 있다. 애플리케이션 및 파일의 특성, 사용자의 특성, 백업 데이터의 확보 등 다양한 요인들에 따라, 스토리지 장치는 중복 데이터(duplicate data)를 포함할 수 있다. 동일한 내용을 나타내는 복수의 데이터를 중복하여 여러 번 저장하는 것은 스토리지 용량의 불필요한 낭비를 야기할 수 있다. 이를 방지하기 위해, 중복제거(deduplication)가 사용될 수 있다. 중복제거는 동일한 복수의 데이터를 모두 저장하는 대신에, 하나의 원본 데이터만을 저장하고 다른 중복 데이터는 원본 데이터를 참조하도록 관리하는 동작일 수 있다. 중복제거는 스토리지 용량의 낭비를 억제할 수 있지만, 관련 연산들이 추가적으로 요구될 수 있다. 이에 따라, 중복제거를 효율적으로 수행하는 방안이 요구된다.
본 개시의 일 실시 예에 따르면, 중복제거 관리자를 포함하는 스토리지 장치, 이의 동작하는 방법, 및 이를 포함하는 스토리지 시스템의 동작하는 방법이 제공된다.
본 개시의 일 실시 예에 따르면, 스토리지 장치는 제1 외부 스토리지 장치와 통신하고 그리고 중복제거 관리자를 포함한다. 상기 스토리지 장치의 동작하는 방법은, 상기 중복제거 관리자에 의해, 제1 데이터의 제1 핑거프린트를 브로드캐스트하는 단계, 상기 제1 외부 스토리지 장치로부터, 상기 제1 핑거프린트에 대응하는 제1 응답을 수신하는 단계, 상기 중복제거 관리자에 의해, 상기 제1 응답의 참조 플래그가 제1 값 또는 제2 값을 갖는지 여부를 결정하는 단계, 상기 중복제거 관리자에 의해, 상기 제1 응답의 상기 참조 플래그가 상기 제1 값을 갖는 것으로 결정되면, 상기 제1 응답에 기초하여, 매핑 테이블 내의 상기 제1 데이터에 대응하는 제1 매핑 정보를 업데이트하는 단계, 및 상기 중복제거 관리자에 의해, 상기 제1 응답의 상기 참조 플래그가 상기 제1 값을 갖는 것으로 결정되면, 상기 제1 응답에 기초하여, 상기 제1 데이터의 중복제거를 수행하는 단계를 포함한다.
본 개시의 일 실시 예에 따르면, 스토리지 시스템은 제1 중복제거 관리자를 포함하는 제1 스토리지 장치 및 제2 중복제거 관리자를 포함하는 제2 스토리지 장치를 포함한다. 상기 스토리지 시스템의 동작하는 방법은, 상기 제1 중복제거 관리자에 의해, 타겟 데이터의 핑거프린트를 브로드캐스트하는 단계, 상기 제2 중복제거 관리자에 의해, 상기 브로드캐스트된 핑거프린트에 대응하는 제1 응답을 상기 제1 스토리지 장치에 제공하는 단계, 상기 제1 중복제거 관리자에 의해, 상기 제1 응답의 참조 플래그가 제1 값 또는 제2 값을 갖는지 여부를 결정하는 단계, 상기 제1 중복제거 관리자에 의해, 상기 제1 응답의 상기 참조 플래그가 상기 제1 값을 갖는 것으로 결정되면, 상기 제1 응답에 기초하여, 상기 제1 스토리지 장치의 매핑 테이블 내의 상기 타겟 데이터에 대응하는 매핑 정보를 업데이트하는 단계, 및 상기 제1 중복제거 관리자에 의해, 상기 제1 응답의 상기 참조 플래그가 상기 제1 값을 갖는 것으로 결정되면, 상기 제1 응답에 기초하여, 상기 제1 스토리지 장치 내에서 상기 타겟 데이터의 중복제거를 수행하는 단계를 포함한다.
본 개시의 일 실시 예에 따르면, 스토리지 장치는, 복수의 데이터를 저장하도록 구성된 메모리 장치, 상기 복수의 데이터에 각각 대응하는 복수의 매핑 정보를 관리하는 매핑 테이블, 및 외부 스토리지 장치와 통신하는 중복제거 관리자를 포함한다. 상기 중복제거 관리자는, 상기 복수의 데이터 중 제1 데이터의 제1 핑거프린트를 브로드캐스트하고, 상기 외부 스토리지 장치로부터 상기 제1 핑거프린트에 대응하는 제1 응답을 수신하고, 상기 제1 응답의 참조 플래그가 제1 값 또는 제2 값을 갖는지 여부를 결정하고, 상기 제1 응답의 상기 참조 플래그가 상기 제1 값을 갖는 것으로 결정되면, 상기 제1 응답에 기초하여 상기 매핑 테이블의 상기 복수의 매핑 정보 중 상기 제1 데이터에 대응하는 제1 매핑 정보를 업데이트하고, 상기 메모리 장치 내의 상기 복수의 데이터 중 상기 제1 데이터의 중복제거를 수행하고, 그리고 상기 제1 응답의 상기 참조 플래그가 상기 제2 값을 갖는 것으로 결정되면, 상기 매핑 테이블의 상기 복수의 매핑 정보 중 상기 제1 매핑 정보를 업데이트하고, 상기 메모리 장치에 저장된 상기 복수의 데이터 중 상기 제1 데이터를 유지하도록 구성된다.
본 개시의 실시 예들에 따르면, 중복제거 관리자를 포함하는 스토리지 장치, 이의 동작하는 방법, 및 이를 포함하는 스토리지 시스템의 동작하는 방법이 제공된다.
또한, 피어-투-피어(P2P; peer-to-peer) 방식으로 외부 스토리지 장치와 통신하여 중복제거를 수행함으로써, 스토리지 장치 및 호스트 장치 사이의 I/O(Input/output) 로드가 감소하고, 호스트 장치의 연산 로드가 감소하고, 데이터 처리 속도가 향상되고, 그리고 스토리지 용량의 효율성이 향상된 스토리지 장치, 이의 동작하는 방법, 및 이를 포함하는 스토리지 시스템의 동작하는 방법이 제공된다.
도 1은 본 개시의 실시 예에 따른 스토리지 시스템의 블록도이다.
도 2는 본 개시의 일부 실시 예들에 따라 도 1의 스토리지 컨트롤러를 구체화한 블록도이다.
도 3은 본 개시의 일부 실시 예들에 따라 도 1의 비-휘발성 메모리 장치를 구체화한 블록도이다.
도 4는 일반적인 스토리지 시스템의 중복제거 동작을 설명하는 도면이다.
도 5는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 중복제거 동작을 설명하는 도면이다.
도 6은 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 동작하는 방법을 설명하는 도면이다.
도 7은 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 동작하는 방법을 설명하는 도면이다.
도 8은 본 개시의 일부 실시 예들에 따른 복수의 스토리지 장치들을 포함하는 스토리지 시스템을 설명하는 도면이다.
도 9는 본 개시의 일부 실시 예들에 따른 중복제거 관리자를 설명하는 도면이다.
도 10은 본 개시의 일부 실시 예들에 따른 핑거프린트 생성기를 설명하는 도면이다.
도 11a는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 읽기 동작을 설명하는 도면이다.
도 11b는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 읽기 동작을 설명하는 도면이다.
도 12는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 소거 동작을 설명하는 도면이다.
도 13은 본 개시의 일부 실시 예들에 따른 스토리지 장치의 동작하는 방법을 설명하는 순서도이다.
도 14는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 동작하는 방법을 설명하는 순서도이다.
이하에서, 본 개시의 기술 분야에서 통상의 지식을 가진 자가 본 개시의 실시 예들을 용이하게 실시할 수 있을 정도로, 본 개시의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 개시의 실시 예에 따른 스토리지 시스템의 블록도이다. 도 1을 참조하면, 스토리지 시스템(10)이 도시된다. 일부 실시 예들에서, 스토리지 시스템(10)은 데이터 센터, 서버, 개인용 컴퓨터, 노트북, 랩탑, 서버, 워크스테이션, 태블릿 PC(Personal Computer), 스마트폰, 디지털 카메라, 블랙박스 등과 같이 다양한 정보를 처리하도록 구성된 컴퓨팅 시스템일 수 있다.
스토리지 시스템(10)은 호스트 장치(11), PCIe(Peripheral Component Interconnect Express) 버스(12), 및 복수의 스토리지 장치들(100~N00)을 포함할 수 있다. 예를 들어, 복수의 스토리지 장치들(100~N00)은 제1 내지 제N 스토리지 장치들(100~N00)로도 지칭될 수 있다. N은 임의의 자연수이다.
호스트 장치(11)는 스토리지 시스템(10)의 제반 동작을 제어할 수 있다. 예를 들어, 호스트 장치(11)는 PCIe 버스(12)를 통해 복수의 스토리지 장치들(100~N00)과 통신할 수 있다. 호스트 장치(11)는 복수의 스토리지 장치들(100~N00)에 데이터를 저장하거나, 또는 복수의 스토리지 장치들(100~N00)에 저장된 데이터를 읽을 수 있다.
PCIe 버스(12)는 호스트 장치(11) 및 복수의 스토리지 장치들(100~N00) 사이의 통신을 위한 인터페이스를 제공할 수 있다. 예를 들어, 호스트 장치(11)는 PCIe 버스(12)를 통해 복수의 스토리지 장치들(100~N00)에 저장된 데이터를 읽거나 또는 복수의 스토리지 장치들(100~N00)에 데이터를 쓸 수 있다. 복수의 스토리지 장치들(100~N00) 각각은 PCIe 버스(12)를 통해 피어-투-피어(P2P; peer-to-peer) 방식으로 서로 통신할 수 있다.
복수의 스토리지 장치들(100~N00) 각각은 호스트 장치(11)로부터 수신된 데이터를 저장하거나 또는 저장된 데이터를 호스트 장치(11)에 제공할 수 있다. 복수의 스토리지 장치들(100~N00) 각각은 서로 통신할 수 있다.
제1 스토리지 장치(100)는 스토리지 컨트롤러(110) 및 비-휘발성 메모리 장치(120)를 포함할 수 있다.
비-휘발성 메모리 장치(120)는 데이터를 저장할 수 있다. 스토리지 컨트롤러(110)는 비-휘발성 메모리 장치(120)에 데이터를 저장하거나 또는 비-휘발성 메모리 장치(120)에 저장된 데이터를 읽을 수 있다. 비-휘발성 메모리 장치(120)는 스토리지 컨트롤러(110)의 제어에 따라 동작할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 동작을 가리키는 커맨드(CMD), 및 데이터의 위치를 가리키는 어드레스(ADD)에 기초하여 비-휘발성 메모리 장치(120)에 데이터를 저장하거나, 또는 비-휘발성 메모리 장치(120)에 저장된 데이터를 읽을 수 있다.
일부 실시 예들에서, 비-휘발성 메모리 장치(120)는 낸드 플래시 메모리일 수 있으나, 본 개시의 범위가 이에 제한되는 것은 아니며, 비-휘발성 메모리 장치(120)는 PRAM(Phase-change Random Access Memory), MRAM(Magnetic Random Access Memory), RRAM(Resistive Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지할 수 있는 다양한 저장 장치들 중 하나일 수 있다.
스토리지 컨트롤러(110)는 중복제거 관리자(111)를 포함할 수 있다. 중복제거 관리자(111)는 중복 데이터를 관리하는 장치 또는 모듈일 수 있다. 애플리케이션 및 파일의 특성, 사용자의 특성, 백업 데이터의 확보 등 다양한 요인들에 따라, 스토리지 시스템(10)은 원본 데이터(original data)와 내용이 동일한 중복 데이터(duplicate data)를 포함할 수 있다. 동일한 내용을 나타내는 복수의 데이터를 중복하여 여러 번 저장하는 것은 스토리지 용량의 불필요한 낭비를 야기할 수 있다.
중복제거 관리자(111)는 다른 원본 데이터와 내용이 동일한 중복 데이터의 중복제거를 수행할 수 있다. 중복제거는 동일한 복수의 데이터를 모두 저장하는 대신에, 하나의 원본 데이터만을 저장하고 다른 중복 데이터는 원본 데이터를 참조하도록 관리하는 동작일 수 있다. 예를 들어, 중복 데이터의 중복제거를 수행하면, 비-휘발성 메모리 장치에 저장된 중복 데이터가 삭제되거나, 또는 휘발성 메모리(예를 들어, 쓰기 버퍼 메모리)에 일시적으로 저장된 중복 데이터가 폐기될 수 있다. 중복제거를 수행함으로써, 중복 데이터의 크기만큼 스토리지 용량이 더 확보되므로, 스토리지 용량의 효율성이 향상된 스토리지 시스템(10)이 제공될 수 있다.
중복제거 관리자(111)는 P2P 방식으로 다른 스토리지 장치의 중복제거 관리자와 통신할 수 있다. 예를 들어, 제1 스토리지 장치(100)의 중복제거 관리자(111) 및 제2 스토리지 장치의 중복제거 관리자(211)는 NVMe(Non-volatile Memory express)의 CMP(Controller Memory Buffer) 및 PMR(Persistent Memory Region)이나, CXL(Compute Express Link)이나, 또는 CCIX(Cache Coherent Interconnect for Accelerators) 등과 같은 다양한 표준을 통해서 P2P 방식으로 통신할 수 있다.
중복제거 관리자(111)는 P2P 방식으로 다른 스토리지 장치의 중복제거 관리자와 통신함으로써, 다른 스토리지 장치에 저장된 원본 데이터와 동일한 중복 데이터를 제거하거나, 또는 다른 스토리지 장치에 저장된 중복 데이터를 위한 참조를 제공할 수 있다.
예를 들어, 제1 스토리지 장치(100)의 비-휘발성 메모리 장치(120)가 원본 데이터를 저장하고, 제2 스토리지 장치(200)의 비-휘발성 메모리 장치(220)가 중복 데이터를 저장하는 경우, 제2 스토리지 장치(200)의 중복제거 관리자(211)는 중복 데이터의 고유한 특성을 나타내는 핑거프린트(fingerprint)를 PCIe 버스(12)로 브로드캐스트할 수 있다. 제1 스토리지 장치(100)의 중복제거 관리자(111)는 브로드캐스트된 핑거프린트와 동일한 핑거프린트를 갖는 원본 데이터가 존재함을 가리키는 응답을 제2 스토리지 장치(200)의 중복제거 관리자(211)에게 응답할 수 있다. 제2 스토리지 장치(200)의 중복제거 관리자(211)는 중복 데이터의 중복제거를 수행하고, 중복 데이터가 제1 스토리지 장치(100)를 참조하도록 관리할 수 있다.
복수의 스토리지 장치들(100~N00)은 서로 유사한 구조를 가질 수 있다. 예를 들어, 제2 스토리지 장치(200)는 스토리지 컨트롤러(210) 및 비-휘발성 메모리 장치(220)를 포함할 수 있다. 스토리지 컨트롤러(210)는 중복제거 관리자(211)를 포함할 수 있다. 제N 스토리지 장치(N00)는 스토리지 컨트롤러(N10) 및 비-휘발성 메모리 장치(N20)를 포함할 수 있다. 스토리지 컨트롤러(N10)는 중복제거 관리자(N11)를 포함할 수 있다. 제2 내지 제N 스토리지 장치들(200~N00) 각각의 기능 및 구조는 제1 스토리지 장치(100)의 기능 및 구조와 유사할 수 있다.
상술된 바와 같이, 본 개시의 실시 예에 따르면, P2P 방식으로 통신하여 중복제거를 수행하는 스토리지 장치가 제공될 수 있다. 일반적으로, 중복제거는 호스트 장치에 의해 수행될 수 있다. 예를 들어, 호스트 장치는 복수의 데이터 각각에 대해 핑거프린트를 추출하고, 별도의 테이블을 통해 데이터의 핑거프린트, 어드레스, 중복제거 여부 등을 관리할 수 있다. 이와 같은 연산은 호스트 장치의 연산량 증가, 호스트 장치 내의 메모리에서 병목 현상 등에 의해, 스토리지 시스템의 성능 저하를 야기할 수 있다.
반면에, 본 개시의 실시 예에 따르면, 복수의 스토리지 장치들(100~N00) 각각이 중복제거 관리자(111~N11)를 통해 자체적으로(예를 들어, 호스트 장치(11)의 개입 없이) 중복제거를 수행함으로써, 복수의 스토리지 장치들(100~N00) 및 호스트 장치(11) 사이의 I/O(Input/output) 로드가 감소하고, 호스트 장치(11)의 연산 로드가 감소하고, 데이터 처리 속도가 향상되고, 그리고 스토리지 용량의 효율성이 향상된 스토리지 시스템(10)이 제공될 수 있다. 스토리지 장치가 자체적으로 중복제거를 수행하는 스토리지 시스템에 대한 보다 상세한 설명은 도 4 및 도 5를 참조하여 후술될 것이다.
도 2는 본 개시의 일부 실시 예들에 따라 도 1의 스토리지 컨트롤러를 구체화한 블록도이다. 도 1 및 도 2를 참조하면, 제1 스토리지 장치(100)는 스토리지 컨트롤러(110) 및 비-휘발성 메모리 장치(120)를 포함할 수 있다. 스토리지 컨트롤러(110)는 PCIe 버스(12)를 통해 호스트 장치 및 다른 스토리지 장치들과 통신할 수 있다. 스토리지 컨트롤러(110)는 비-휘발성 메모리 장치(120)와 통신할 수 있다.
스토리지 컨트롤러(110)는 중복제거 관리자(111), 매핑 테이블(112), 프로세서(113), 휘발성 메모리 장치(114), ROM(Read Only Memory)(115), ECC(Error Correction Code) 엔진(116), 호스트 인터페이스 회로(117), 및 비-휘발성 메모리 인터페이스 회로(118)를 포함할 수 있다. 중복제거 관리자(111)는 도 1의 중복제거 관리자(111)와 유사하므로, 이에 대한 상세한 설명은 생략된다.
매핑 테이블(112)은 중복제거 관리자(111)와 통신할 수 있다. 매핑 테이블(112)은 데이터의 매핑 정보를 관리할 수 있다. 예를 들어, 매핑 테이블(112)은 비-휘발성 메모리 장치(120)에 저장된 데이터의 매핑 정보, 또는 호스트 장치(11)로부터 수신되고 휘발성 메모리 장치(114)에 일시적으로 저장된 데이터의 매핑 정보를 관리할 수 있다. 매핑 정보는 데이터의 어드레스, 핑거프린트, 중복제거 여부 등을 나타낼 수 있다. 매핑 테이블(112)에 대한 보다 상세한 설명은 도 6 및 도 7과 함께 후술될 것이다.
일부 실시 예들에서, 중복제거 관리자(111) 및 매핑 테이블(112)은 하드웨어, 소프트웨어, 또는 하드웨어 및 소프트웨어의 조합에 의해 구현될 수 있다. 예를 들어, 중복제거 관리자(111) 및 매핑 테이블(112) 중 적어도 일부는 별도의 회로, 장치, 또는 칩의 형태로서 스토리지 컨트롤러(110)에 포함될 수 있다. 또는, 중복제거 관리자(111) 및 매핑 테이블(112) 중 적어도 일부는 명령어의 형태로 비-휘발성 메모리 장치(120)에 저장되고, 프로세서(113)에 의해 휘발성 메모리 장치(114)로 로드되는 소프트웨어 모듈로도 구현될 수 있다.
프로세서(113)는 스토리지 컨트롤러(110)의 제반 동작을 제어할 수 있다. 휘발성 메모리 장치(114)는 스토리지 컨트롤러(110)의 쓰기 버퍼 메모리, 읽기 버퍼 메모리, 캐시 메모리, 및 동작 메모리 등으로 사용될 수 있다. 예를 들어, 휘발성 메모리 장치(114)는 SRAM(Static Random Access Memory), DRAM(Dynamic Random Access Memory) 등으로 구현될 수 있다. 일부 실시 예들에서, 휘발성 메모리 장치(114)에 로드된 중복제거 관리자(111)는 타겟 데이터의 중복제거를 수행할 수 있다. ROM(115)은 스토리지 컨트롤러(110)의 동작에 필요한 정보를 저장하는 읽기 전용 메모리로 사용될 수 있다. 예를 들어, ROM(115)는 펌웨어 메모리의 일부로서 사용될 수 있다.
ECC 엔진(116)은 비-휘발성 메모리 장치(120)로부터 읽어진 데이터의 에러를 검출하고 정정할 수 있다. 예를 들어, ECC 엔진(116)은 일정 수준의 에러 정정 능력을 가질 수 있다. ECC 엔진(116)은 에러 정정 능력을 초과하지 않는 데이터의 에러를 정정할 수 있고, 그리고 에러 정정 능력을 초과하는 에러 레벨(예를 들어, 플립된 비트들의 개수)을 갖는 데이터를 정정 불가능한 데이터로 처리할 수 있다.
스토리지 컨트롤러(110)는 호스트 인터페이스 회로(117)를 통해 호스트 장치(11)와 통신할 수 있다. 호스트 인터페이스 회로(117)는 호스트 인터페이스 레이어(HIL; Host Interface Layer)를 제공할 수 있다. 일부 실시 예들에서, 호스트 인터페이스 회로(117)는 SATA(Serial ATA), PCIe(Peripheral Component Interconnect Express), SAS(Serial Attached SCSI) 인터페이스, NVMe(Nonvolatile Memory express), UFS(Universal Flash Storage) 등과 같은 다양한 인터페이스들 중 적어도 하나를 기반으로 구현될 수 있다.
스토리지 컨트롤러(110)는 비-휘발성 메모리 인터페이스 회로(118)를 통해 비-휘발성 메모리 장치(120)와 통신할 수 있다. 일부 실시 예들에서, 비-휘발성 메모리 인터페이스 회로(118)는 낸드 인터페이스를 기반으로 구현될 수 있다.
상술된 바와 같이, 도 2를 참조하여 제1 스토리지 장치(100)의 스토리지 컨트롤러(110)가 설명되었다. 그러나, 본 개시의 범위는 이에 제한되지 않으며, 제2 내지 제N 스토리지 장치(200~N00)의 스토리지 컨트롤러들(210~N10) 각각은 제1 스토리지 장치(100)의 스토리지 컨트롤러(110)와 유사한 구조를 가질 수 있다.
도 3은 본 개시의 일부 실시 예들에 따라 도 1의 비-휘발성 메모리 장치를 구체화한 블록도이다. 도 1 및 도 3을 참조하면, 비-휘발성 메모리 장치(120)는 스토리지 컨트롤러(110)와 통신할 수 있다. 예를 들어, 비-휘발성 메모리 장치(120)는 스토리지 컨트롤러(110)로부터 어드레스(ADD) 및 커맨드(CMD)를 수신할 수 있다. 비-휘발성 메모리 장치(120)는 스토리지 컨트롤러(110)와 데이터를 통신할 수 있다.
비-휘발성 메모리 장치(120)는 제어 로직(121), 전압 생성기(122), 행 디코더(123), 메모리 셀 어레이(124), 페이지 버퍼 유닛(125), 열 디코더(126), 및 I/O 회로(127)를 포함할 수 있다. 도 1에서 설명된 데이터(예를 들어, 원본 데이터, 중복 데이터)는 메모리 셀 어레이(124)에 저장될 수 있다.
제어 로직(121)은 스토리지 컨트롤러(110)로부터 커맨드(CMD) 및 어드레스(ADD)를 수신할 수 있다. 커맨드(CMD)는 읽기, 쓰기, 및 소거 등과 같은 비-휘발성 메모리 장치(120)에서 수행될 동작을 지시하는 신호일 수 있다. 어드레스(ADD)는 행 어드레스(ADDR) 및 열 어드레스(ADDC)를 포함할 수 있다. 제어 로직(121)은 어드레스(ADD)에 기초하여 행 어드레스(ADDR) 및 열 어드레스(ADDC)를 생성할 수 있다.
전압 생성기(122)는 제어 로직(121)의 제어에 따라, 행 디코더(123)를 통해 메모리 셀 어레이(124)에 인가되는 전압들을 제어할 수 있다.
행 디코더(123)는 제어 로직(121)으로부터 행 어드레스(ADDR)를 수신할 수 있다. 행 디코더(123)는 스트링 선택 라인(SSL)들, 워드 라인(WL)들, 및 접지 선택 라인(GSL)들을 통해 메모리 셀 어레이(124)와 연결될 수 있다. 행 디코더(123)는 행 어드레스(ADDR)를 디코딩하고, 디코딩 결과 및 전압 생성기(122)로부터 수신된 전압에 기초하여 스트링 선택 라인(SSL)들, 워드 라인(WL)들, 및 접지 선택 라인(GSL)들에 인가되는 전압들을 제어할 수 있다.
메모리 셀 어레이(124)는 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀들 각각은 데이터의 적어도 일부에 대응하는 문턱 전압 레벨을 가질 수 있다. 메모리 셀들은 행 방향 및 열 방향으로 배열될 수 있다. 메모리 셀들 중 일부는 도 1의 데이터(예를 들어, 원본 데이터, 중복 데이터)에 대응할 수 있다.
일부 실시 예들에서, 메모리 셀 어레이(124)는 복수의 데이터 블록들을 포함할 수 있다. 데이터 블록은 비-휘발성 메모리 장치(120)의 물리적 소거 단위일 수 있으나, 본 개시가 이에 제한되는 것은 아니며, 물리적 소거 단위는 페이지 단위, 워드 라인 단위, 서브 블록 단위 등으로 변경될 수 있다.
페이지 버퍼 유닛(125)은 복수의 페이지 버퍼(PB)들을 포함할 수 있다. 페이지 버퍼 유닛(125)은 비트 라인(BL)들을 통해 메모리 셀 어레이(124)와 연결될 수 있다. 페이지 버퍼 유닛(125)은 비트 라인(BL)들의 전압을 감지함으로써, 메모리 셀 어레이(124)로부터 페이지 단위로 데이터를 읽을 수 있다.
열 디코더(126)는 제어 로직(121)으로부터 열 어드레스(ADDC)를 수신할 수 있다. 열 디코더(126)는 열 어드레스(ADDC)를 디코딩하고, 디코딩 결과에 기초하여 페이지 버퍼 유닛(125)에 의해 읽어진 데이터를 I/O 회로(127)로 제공할 수 있다.
열 디코더(126)는 데이터 라인(DL)들을 통해 I/O 회로(127)로부터 데이터를 수신할 수 있다. 열 디코더(126)는 제어 로직(121)으로부터 열 어드레스(ADDC)를 수신할 수 있다. 열 디코더(126)는 열 어드레스(ADDC)를 디코딩하고, 디코딩 결과에 기초하여 I/O 회로(127)로부터 수신된 데이터를 페이지 버퍼 유닛(125)에 제공할 수 있다. 페이지 버퍼 유닛(125)은 비트 라인(BL)들을 통해 I/O 회로(127)로부터 제공된 데이터를 페이지 단위로 메모리 셀 어레이(124)에 저장할 수 있다.
I/O 회로(127)는 데이터 라인(DL)들을 통해 열 디코더(126)와 연결될 수 있다. I/O 회로(127)는 스토리지 컨트롤러(110)로부터 수신된 데이터를 데이터 라인(DL)들을 통해 열 디코더(126)로 전달할 수 있다. I/O 회로(127)는 데이터 라인(DL)들을 통해 수신된 데이터를 스토리지 컨트롤러(110)로 출력할 수 있다.
상술된 바와 같이, 도 3을 참조하여 제1 스토리지 장치(100)의 비-휘발성 메모리 장치(120)가 설명되었다. 그러나, 본 개시의 범위는 이에 제한되지 않으며, 제2 내지 제N 스토리지 장치(200~N00)의 비-휘발성 메모리 장치들(220~N20) 각각은 제1 스토리지 장치(100)의 비-휘발성 메모리 장치(120)와 유사한 구조를 가질 수 있다.
도 4는 일반적인 스토리지 시스템의 중복제거 동작을 설명하는 도면이다. 도 4를 참조하면, 중복제거를 수행하는 일반적인 스토리지 시스템이 설명된다. 일반적인 스토리지 시스템은 호스트 레이어 및 스토리지 레이어를 포함할 수 있다.
호스트 레이어는 애플리케이션, 파일 시스템, 및 중복제거 엔진을 포함할 수 있다.
애플리케이션은 특정 기능을 수행하도록 설계된 소프트웨어 프로그램일 수 있다. 예를 들어, 애플리케이션은 워드프로세서, 데이터베이스 프로그램, 웹 브라우저, 이미지 편집 프로그램 등을 포함할 수 있다. 애플리케이션은 터치스크린, 모니터, 마우스, 키보드, 마이크, 스피커 등과 같은 사용자 인터페이스 장치를 통해 스토리지 시스템의 사용자와 통신할 수 있다.
파일 시스템은 파일을 관리할 수 있다. 파일 시스템은 운영 체제의 동작 또는 운영 체제에 의해 실행된 애플리케이션으로부터의 요청에 따라, 파일을 생성하고, 파일에 액세스하고, 파일을 열고, 파일을 변경하고, 파일을 제거하는 등의 동작들을 체계적으로 관리할 수 있다. 파일은 일련의 데이터일 수 있다. 파일에 대응하는 일련의 데이터는 스토리지 레이어에 저장될 수 있다.
중복제거 엔진은 파일 시스템의 제어에 따라, 스토리지 레이어에 저장된 복수의 데이터에 대한 중복제거 동작을 관리할 수 있다.
스토리지 레이어는 제1 스토리지 장치 및 제2 스토리지 장치를 포함할 수 있다. 제1 스토리지 장치에 저장된 데이터는 원본 데이터일 수 있다. 제2 스토리지 장치에 저장된 데이터는 중복 데이터일 수 있다. 원본 데이터의 핑거프린트는 중복 데이터의 핑거프린트와 일치할 수 있다. 중복 데이터가 저장된 시점은 원본 데이터가 저장된 시점보다 늦을 수 있다.
중복제거 엔진은 스토리지 레이어와 통신하여 중복 데이터를 관리할 수 있다. 예를 들어, 중복제거 엔진은 스토리지 레이어의 제1 스토리지 장치 및 제2 스토리지 장치와 통신할 수 있다. 중복제거 엔진은 원본 데이터로부터 핑거프린트를 생성하고, 중복 데이터로부터 핑거프린트를 생성하고, 핑거프린트가 일치하는 중복 데이터의 중복제거를 수행하고, 중복제거된 중복 데이터가 원본 데이터를 참조하도록 관리할 수 있다.
일반적인 스토리지 시스템에 따르면, 호스트 레이어의 중복제거 엔진은 스토리지 레이어로부터 원본 데이터 및 중복 데이터를 페치할 수 있다. 중복제거 엔진은 페치된 원본 데이터의 핑거프린트 및 페치된 중복 데이터의 핑거프린트가 일치하면, 스토리지 레이어에 중복 데이터의 소거를 요청할 수 있다.
이 경우, 중복제거를 수행하기 위해, 스토리지 레이어 및 호스트 레이어 사이의 I/O 동작들이 수반되고, 호스트 레이어 내에서 연산 로드가 증가하고, 호스트 레이어 내의 호스트 메모리에서 원본 데이터 및 중복 데이터를 처리하기 위한 병목 현상이 발생함에 따라, 스토리지 시스템의 성능 저하가 발생할 수 있다. 이를 방지하기 위해, 호스트 레이어의 로드가 감소된 중복제거 기법이 요구된다.
도 5는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 중복제거 동작을 설명하는 도면이다. 도 5를 참조하면, 본 개시의 일부 실시 예들에 따른 중복제거를 수행하는 스토리지 시스템(10)이 설명된다. 스토리지 시스템(10)은 도 1의 스토리지 시스템(10)에 대응할 수 있다.
스토리지 시스템(10)은 호스트 레이어 및 스토리지 레이어를 포함할 수 있다. 호스트 레이어는 호스트 장치(11)를 포함할 수 있다. 호스트 장치(11)는 애플리케이션 및 파일 시스템을 포함할 수 있다. 애플리케이션 및 파일 시스템은 도 4의 애플리케이션 및 파일 시스템에 대응할 수 있다.
본 개시의 일부 실시 예들에 따르면, 파일 시스템은 스토리지 레이어와 통신할 수 있다. 예를 들어, 파일 시스템은 PCIe 버스(12)를 통해 제1 스토리지 장치(100) 및 제2 스토리지 장치(200)와 통신할 수 있다. 파일 시스템은 제1 및 제2 스토리지 장치들(100, 200)에 데이터를 저장하거나, 또는 제1 및 제2 스토리지 장치들(100, 200)에 저장된 데이터를 읽을 수 있다.
스토리지 레이어는 제1 스토리지 장치(100) 및 제2 스토리지 장치(200)를 포함할 수 있다. 제1 스토리지 장치(100)는 중복제거 관리자(111)를 포함할 수 있다. 중복제거 관리자(111)는 제1 스토리지 장치(100)에 저장된 데이터의 중복제거를 관리할 수 있다. 제2 스토리지 장치(200)는 중복제거 관리자(211)를 포함할 수 있다. 중복제거 관리자(211)는 제2 스토리지 장치(200)에 저장된 데이터의 중복제거를 관리할 수 있다.
본 개시의 일부 실시 예들에 따르면, 제1 및 제2 스토리지 장치들(100, 200)은 중복제거를 수행할 수 있다. 제1 스토리지 장치(100)의 중복제거 관리자(111) 및 제2 스토리지 장치(200)의 중복제거 관리자(211)는 PCIe 버스(12)를 통해 통신할 수 있다. 즉, PCIe 버스(12)는 스토리지 레이어 내에서 제1 및 제2 스토리지 장치들(100, 200) 사이의 인터페이스를 제공할 수 있다. 중복제거 관리자들(111, 211) 각각은 P2P 방식으로 다른 스토리지 장치와 통신함으로써 다른 스토리지 장치에 원본 데이터가 존재하는지 여부를 결정하고, 중복 데이터의 중복제거를 수행할 수 있다.
예를 들어, 제1 스토리지 장치(100)는 원본 데이터를 저장할 수 있다. 제2 스토리지 장치(200)는 중복 데이터를 저장할 수 있다. 제2 스토리지 장치(200)의 중복제거 관리자(211)는 중복 데이터의 핑거프린트를 획득하고, PCIe 버스(12)를 통해 핑거프린트를 제1 스토리지 장치(100)에 브로드캐스트할 수 있다. 제1 스토리지 장치(100)의 중복제거 관리자(111)는 제2 스토리지 장치(200)로부터 브로드캐스트된 핑거프린트가 원본 데이터의 핑거프린트와 일치한다고 결정하고, 원본 데이터가 존재함을 알리는 응답을 PCIe 버스(12)를 통해 제2 스토리지 장치(200)에 제공할 수 있다. 제2 스토리지 장치(200)의 중복제거 관리자(211)는 제1 스토리지 장치(100)로부터 수신된 응답에 기초하여, 중복 데이터의 중복제거를 수행하고, 중복 데이터가 제1 스토리지 장치(100)의 원본 데이터를 참조하도록 관리할 수 있다.
상술된 바와 같이, 본 개시의 실시 예에 따르면, 스토리지 시스템(10)은 호스트 장치(11)의 개입 없이 스토리지 레이어에서 자체적으로 중복제거를 수행할 수 있다. 이에 따라, 호스트 레이어 및 스토리지 레이어 사이의 I/O 동작들이 생략되고, 중복제거 연산을 위한 호스트 레이어의 연산 로드가 감소하고, 호스트 레이어 내의 호스트 메모리에서 원본 데이터 및 중복 데이터를 처리하기 위한 병목 현상이 제거됨에 따라, 스토리지 시스템(10)의 성능이 향상될 수 있다.
도 6은 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 동작하는 방법을 설명하는 도면이다. 도 6을 참조하면, 본 개시의 일부 실시 예들에 따른 스토리지 시스템(10)이 설명된다. 스토리지 시스템(10)은 도 1 및 도 5의 스토리지 시스템(10)에 대응할 수 있다.
스토리지 시스템(10)은 호스트 장치(11), PCIe 버스(12), 제1 스토리지 장치(100), 및 제2 스토리지 장치(200)를 포함할 수 있다.
호스트 장치(11)는 PCIe 버스(12)를 통해 제1 및 제2 스토리지 장치들(100, 200)에 데이터를 저장하거나, 제1 및 제2 스토리지 장치들(100, 200)에 저장된 데이터를 읽거나, 또는 제1 및 제2 스토리지 장치들(100, 200)에 저장된 데이터를 소거할 수 있다.
PCIe 버스(12)는 호스트 장치(11), 제1 스토리지 장치(100), 및 제2 스토리지 장치(200) 사이의 인터페이스를 제공할 수 있다.
제1 스토리지 장치(100)는 중복제거 관리자(111), 매핑 테이블(112), 비-휘발성 메모리 장치(120)를 포함할 수 있다. 중복제거 관리자(111)는 제2 스토리지 장치(200)의 중복제거 관리자(211)와 통신할 수 있다. 중복제거 관리자(111)는 매핑 테이블(112)을 참조하여, 비-휘발성 메모리 장치(120)에 저장된 데이터의 중복제거 동작을 관리할 수 있다. 중복제거 관리자(111)는 핑거프린트 모듈을 포함할 수 있다. 핑거프린트 모듈은 데이터에 대응하는 핑거프린트를 관리할 수 있다. 매핑 테이블(112)은 비-휘발성 메모리 장치(120)에 저장된 복수의 데이터 각각의 매핑 정보를 관리할 수 있다. 비-휘발성 메모리 장치(120)는 복수의 데이터를 저장할 수 있다.
제2 스토리지 장치(200)는 중복제거 관리자(211), 매핑 테이블(212), 비-휘발성 메모리 장치(220)를 포함할 수 있다. 중복제거 관리자(211)는 제1 스토리지 장치(100)의 중복제거 관리자(111)와 통신할 수 있다. 중복제거 관리자(211)는 매핑 테이블(212)을 참조하여, 비-휘발성 메모리 장치(220)에 저장된 데이터의 중복제거 동작을 관리할 수 있다. 중복제거 관리자(211)는 핑거프린트 모듈을 포함할 수 있다. 매핑 테이블(212)은 비-휘발성 메모리 장치(220)에 저장된 복수의 데이터 각각의 매핑 정보를 관리할 수 있다. 비-휘발성 메모리 장치(220)는 복수의 데이터를 저장할 수 있다.
이하에서, 본 개시의 실시 예에 따른 스토리지 시스템(10)의 중복제거를 수행하는 방법이 설명된다.
제1 동작(①)에서, 제1 스토리지 장치(100)의 중복제거 관리자(111)는 타겟 데이터의 핑거프린트(FP)를 브로드캐스트할 수 있다. 타겟 데이터는 비-휘발성 메모리 장치(120)에 저장된 복수의 데이터 중 하나일 수 있거나, 또는 호스트 장치(11)로부터 수신되고 스토리지 장치(100)의 휘발성 메모리 장치(예를 들어, 쓰기 버퍼 메모리)에 일시적으로 저장된 데이터일 수 있다.
중복제거 관리자(111)는 핑거프린트 모듈을 통해 타겟 데이터의 핑거프린트(FP)를 획득할 수 있다. 예를 들어, 타겟 데이터의 핑거프린트(FP)는 '13579'일 수 있다. 핑거프린트(FP)는 대응하는 데이터의 고유한 특성을 나타낼 수 있다. 서로 다른 2개의 데이터의 핑거프린트들이 일치하면, 데이터의 내용이 서로 동일할 수 있다. 서로 다른 2개의 데이터의 핑거프린트들이 일치하지 않으면, 데이터의 내용이 서로 다를 수 있다.
중복제거 관리자(111)는 PCIe 버스(12)를 통해 타겟 데이터의 핑거프린트(FP)를 브로드캐스트할 수 있다. 도면의 복잡함을 피하기 위해, 타겟 데이터의 핑거프린트(FP)는 제2 스토리지 장치(200)로만 전달되는 것으로 도시되었으나, 스토리지 시스템(10)이 다른 스토리지 장치(예를 들어, 제3 스토리지 장치)를 더 포함하는 경우, 핑거프린트(FP)는 스토리지 시스템(10) 내의 다른 스토리지 장치로도 브로드캐스트될 수 있다.
중복제거 관리자(111)의 중복제거 동작은 스토리지 장치(100)에 의해 자체적으로 트리거될 수 있거나, 또는 호스트 장치(11)로부터의 중복제거 요청에 의해 트리거될 수 있다. 중복제거 동작의 시작에 대한 보다 상세한 설명은 도 9와 함께 후술될 것이다.
제2 동작(②)에서, 제2 스토리지 장치(200)의 중복제거 관리자(211)는 제1 동작(①)의 핑거프린트(FP)에 대응하는 응답(RP)을 제1 스토리지 장치(100)에 제공할 수 있다.
보다 상세하게는, 제2 스토리지 장치(200)의 중복제거 관리자(211)는 제1 스토리지 장치(100)로부터 PCIe 버스(12)를 통해 브로드캐스트된 핑거프린트(FP)를 수신할 수 있다. 브로드캐스팅된 핑거프린트(FP)는 '13579'일 수 있다.
제2 스토리지 장치(200)의 비-휘발성 메모리 장치(220)는 '13579'의 핑거프린트(FP)를 갖는 원본 데이터를 저장할 수 있다. 원본 데이터의 핑거프린트는 매핑 테이블(212)에 의해 관리될 수 있다. 매핑 테이블(212)은 비-휘발성 메모리 장치(220)에 저장된 복수의 데이터 각각의 매핑 정보를 관리할 수 있다.
매핑 정보는 논리적 어드레스(LA), 물리적 어드레스(PA), 핑거프린트(FP), 중복 플래그(DF), 참조 인덱스(RI), 및 참조 카운트(RC)를 포함할 수 있다. 논리적 어드레스(LA)는 데이터의 위치를 나타내는 어드레스로서, 호스트 장치(11) 및 제1 스토리지 장치(100) 등과 같은 외부 장치에서 식별 가능한 어드레스일 수 있다. 물리적 어드레스(PA)는 논리적 어드레스(LA)와 로지컬-투-피지컬 매핑 관계를 갖는 어드레스로서, 제2 스토리지 장치(200)에서 내부적으로 사용되는 어드레스일 수 있다. 핑거프린트(FP)는 데이터의 고유한 특성을 나타낼 수 있다.
중복 플래그(DF)는 데이터가 원본 데이터인지 또는 중복 데이터인지 여부를 나타낼 수 있다. 예를 들어, 중복 플래그(DF)의 값이 제1 값(Y)이면, 대응하는 데이터는 중복 데이터일 수 있다. 중복 플래그(DF)의 값이 제2 값(N)이면, 대응하는 데이터는 원본 데이터일 수 있다.
참조 인덱스(RI)는 참조하는 원본 데이터가 저장된 스토리지 장치의 식별 정보를 나타낼 수 있다. 보다 상세하게는, 참조 인덱스(RI)는 중복 플래그(DF)의 값이 제1 값(Y)이면, 중복제거된 중복 데이터가 참조하는 원본 데이터가 저장된 스토리지 장치의 식별 정보를 표시할 수 있다. 참조 인덱스(RI)는 중복 플래그(DF)의 값이 제2 값(N)이면, 비워질 수 있다.
참조 카운트(RC)는 데이터가 참조되는 횟수를 나타낼 수 있다. 보다 상세하게는, 참조 카운트(RC)는 중복 플래그(DF)의 값이 제1 값(Y)이면, 비워질 수 있다. 참조 카운트(RC)는 중복 플래그(DF)의 값이 제2 값(N)이면, 원본 데이터인 대응하는 데이터가 참조되는 횟수를 나타낼 수 있다. 참조되는 횟수는 자기 자신에 의해 참조되는 횟수를 포함할 수 있다. 예를 들어, 참조 카운트(RC)가 '1'이면, 원본 데이터만 존재할 수 있다. 참조 카운트(RC)가 '2'이면, 원본 데이터 및 1개의 중복 데이터가 존재할 수 있다.
중복제거 관리자(211)는 매핑 테이블(212)을 참조하여, PCIe 버스(12)를 통해 브로드캐스트된 핑거프린트(FP)에 대응하는 매핑 정보가 존재한다고 결정할 수 있다. 중복제거 관리자(211)는 매핑 정보가 존재한다고 결정한 것에 기초하여, 타겟 데이터의 핑거프린트를 갖는 매핑 정보가 존재함을 가리키는 응답(RP)을 PCIe 버스(12)를 통해 제1 스토리지 장치(100)에 제공할 수 있다.
응답(RP)은 참조 인덱스(RI)를 표시하는 제1 필드, 핑거프린트(FP)를 표시하는 제2 필드, 핑거프린트(FP)에 대응하는 매핑 정보가 존재하는지 여부를 나타내는 참조 플래그(RF)를 표시하는 제3 필드, 원본 데이터의 논리적 어드레스(LA)를 표시하는 제4 필드, 및 원본 데이터의 물리적 어드레스(PA)를 표시하는 제5 필드를 포함할 수 있다.
제1 필드의 참조 인덱스(RI)는 응답(RP)을 제공하는 스토리지 장치의 식별 정보를 나타낼 수 있다. 예를 들어, 중복제거 관리자(211)가 제공하는 응답(RP)의 식별 정보는 'SD2'일 수 있다. 'SD2'의 식별 정보는 제2 스토리지 장치(200)에 대응할 수 있다. 도 6에서 도시된 것과 달리, 제1 스토리지 장치(100)의 중복제거 관리자(111)가 응답을 제공하면, 식별 정보는 'SD1'일 수 있다.
제2 필드의 핑거프린트(FP)는 응답(RP)에 대응하는 타겟 데이터의 고유한 특성을 나타낼 수 있다. 예를 들어, 응답(RP)은 브로드캐스트된 핑거프린트(FP)와 대응관계를 가질 수 있다. 제1 동작(①)에서 브로드캐스트된 핑거프린트(FP)가 '13579'이면, 제2 동작(②)에서 제공되는 응답(RP)에 포함된 핑거프린트(FP)는 '13579'일 수 있다.
제3 필드의 참조 플래그(RF)는 브로드캐스트된 핑거프린트를 갖는 원본 데이터가 존재하는지 여부를 나타낼 수 있다. 예를 들어, 제2 스토리지 장치(200)에 '13579'의 핑거프린트(FP)를 갖는 원본 데이터가 존재하면, 참조 플래그(RF)는 제1 값(Y)을 가질 수 있다. 제2 스토리지 장치(200)에 '13579'의 핑거프린트(FP)를 갖는 원본 데이터가 존재하지 않으면, 참조 플래그(RF)는 제2 값(N)을 가질 수 있다.
제4 필드의 논리적 어드레스(LA)는 원본 데이터의 논리적 어드레스를 나타낼 수 있다. 제5 필드의 물리적 어드레스(PA)는 원본 데이터의 물리적 어드레스를 나타낼 수 있다.
예를 들어, 제3 필드의 참조 플래그(RF)가 제1 값(Y)을 가지면, 응답(RP)의 제4 필드는 원본 데이터의 논리적 어드레스(LA)의 값인 '0x02'을 포함할 수 있다. 응답(RP)의 제5 필드는 원본 데이터의 물리적 어드레스(PA)의 값인 '0x22'을 포함할 수 있다. 또 다른 예로서, 제3 필드의 참조 플래그(RF)가 제2 값(N)을 가지면, 응답(RP)의 제4 필드 및 제5 필드는 비워질 수 있다.
제3 동작(③)에서, 중복제거 관리자(211)는 매핑 테이블(212)에서 원본 데이터의 매핑 정보를 업데이트할 수 있다. 예를 들어, 매핑 테이블(212)에서, '13579'의 핑거프린트(FP)를 갖는 원본 데이터의 참조 카운트(RC)는 '1'일 수 있다. 참조 카운트(RC)가 '1'인 것은, 자기 자신에 의해 참조되는 것을 의미할 수 있다. 중복제거 관리자(211)는 제2 동작(②)에서 브로드캐스트된 핑거프린트를 갖는 원본 데이터가 존재한다고 결정할 수 있다. 중복제거 관리자(211)는, 매핑 테이블(212)에서 '13579'의 핑거프린트(FP)를 갖는 원본 데이터는 제1 스토리지 장치(100)에 의해 더 참조되므로, 참조 카운트(RC)를 '1'에서 '2'로 업데이트할 수 있다.
본 개시의 이해를 돕기 위해, 제2 동작(②) 및 제3 동작(③)은 별개의 동작들로 지칭되지만, 본 개시는 제2 동작(②) 및 제3 동작(③) 사이의 시간적인 선후 관계를 한정하는 것으로 의도되지 않는다. 제3 동작(③)은 제2 동작(②)이 완료된 후에 수행될 수도 있지만, 이와 달리, 제3 동작(③)은 제2 동작(②) 내에서 매핑 테이블(212)을 참조하는 동작과 함께 수행될 수 있다.
제4 동작(④)에서, 중복제거 관리자(111)는 제2 동작(②)을 통해 수신된 응답(RP)에 기초하여 타겟 데이터의 매핑 정보를 업데이트할 수 있다. 예를 들어, 응답(RP)의 참조 플래그(RF)는 제1 값(Y)을 가질 수 있고, 참조 인덱스(RI)는 제2 스토리지 장치(200)의 식별 정보인 'SD2'를 나타낼 수 있다.
중복제거 관리자(111)는 제2 동작(②)을 통해 수신된 응답(RP)에 기초하여 타겟 데이터를 중복 데이터로 결정할 수 있다. 중복제거 관리자(111)는 '13579'의 핑거프린트(FP)를 갖는 타겟 데이터의 매핑 정보에서 논리적 어드레스(LA)의 값을 '0x10'으로 설정하고, 물리적 어드레스(PA)의 값을 비우고, 핑거프린트(FP)의 값을 '13579'로 설정하고, 중복 플래그(DF)의 값을 제1 값(Y)으로 설정하고, 그리고 참조 인덱스(RI)를 제2 스토리지 장치(200)에 대응하는 'SD2'로 설정함으로써, 매핑 테이블(112) 내의 타겟 데이터의 매핑 정보를 업데이트할 수 있다.
일부 실시 예들에서, 중복제거 관리자(111)는 중복 데이터로 결정된 타겟 데이터의 매핑 정보에서 물리적 어드레스(PA)의 값으로서 원본 데이터의 논리적 어드레스(LA)의 값을 저장할 수 있다. 예를 들어, 중복제거 관리자(111)는, 물리적 어드레스(PA)의 값을 비워두는 대신에, 제2 동작(②)을 통해 수신된 응답(RP)에 기초하여, 물리적 어드레스(PA)의 값에 원본 데이터의 논리적 어드레스(LA)의 값인 '0x02'를 저장할 수 있다.
제5 동작(⑤)에서, 중복제거 관리자(111)는 제2 동작(②)을 통해 수신된 응답(RP)에 기초하여 타겟 데이터의 중복제거를 수행할 수 있다. 예를 들어, 응답(RP)의 참조 플래그(RF)는 제1 값(Y)을 가질 수 있다. 중복제거 관리자(111)는 제1 값(Y)의 참조 플래그(RF)를 포함하는 응답(RP)에 기초하여, 비-휘발성 메모리 장치(120)에 저장된 '13579'의 핑거프린트(FP)를 갖는 타겟 데이터를 소거할 수 있다.
또는, 도 6에서 도시된 것과 달리, 타겟 데이터는 제1 스토리지 장치(100)의 휘발성 메모리 장치에 일시적으로 저장된 데이터일 수 있다. 중복제거 관리자(111)는 제1 값(Y)의 참조 플래그(RF)를 포함하는 응답(RP)에 기초하여, 휘발성 메모리 장치에 일시적으로 저장된 타겟 데이터를 중복 데이터로 결정하고, 중복 데이터를 폐기할 수 있다.
도 7은 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 동작하는 방법을 설명하는 도면이다. 도 7을 참조하면, 본 개시의 일부 실시 예들에 따른 스토리지 시스템(10)이 설명된다. 스토리지 시스템(10)은 도 1, 도 5, 및 도 6의 스토리지 시스템(10)에 대응할 수 있다.
스토리지 시스템(10)은 호스트 장치(11), PCIe 버스(12), 제1 스토리지 장치(100), 및 제2 스토리지 장치(200)를 포함할 수 있다. 제1 스토리지 장치(100)는 중복제거 관리자(111), 매핑 테이블(112), 비-휘발성 메모리 장치(120)를 포함할 수 있다. 제2 스토리지 장치(200)는 중복제거 관리자(211), 매핑 테이블(212), 비-휘발성 메모리 장치(220)를 포함할 수 있다.
호스트 장치(11), PCIe 버스(12), 제1 스토리지 장치(100), 및 제2 스토리지 장치(200)의 특징들은 도 6의 호스트 장치(11), PCIe 버스(12), 제1 스토리지 장치(100), 및 제2 스토리지 장치(200)의 특징들과 유사하므로, 이에 대한 상세한 설명은 생략된다.
이하에서, 본 개시의 실시 예에 따른 스토리지 시스템(10)의 중복제거를 수행하는 방법이 설명된다.
제1 동작(①)에서, 제1 스토리지 장치(100)의 중복제거 관리자(111)는 타겟 데이터의 핑거프린트(FP)를 브로드캐스트할 수 있다. 예를 들어, 타겟 데이터의 핑거프린트(FP)는 '13579'일 수 있다.
제2 동작(②)에서, 제2 스토리지 장치(200)의 중복제거 관리자(211)는 제1 동작(①)의 핑거프린트(FP)에 대응하는 응답(RP)을 제1 스토리지 장치(100)에 제공할 수 있다.
예를 들어, 제2 스토리지 장치(200)의 중복제거 관리자(211)는 제1 스토리지 장치(100)로부터 PCIe 버스(12)를 통해 브로드캐스트된 핑거프린트(FP)를 수신할 수 있다. 브로드캐스팅된 핑거프린트(FP)는 '13579'일 수 있다. 제2 스토리지 장치(200)의 비-휘발성 메모리 장치(220)는 '13579'의 핑거프린트(FP)를 갖는 원본 데이터를 저장하지 않을 수 있다. 원본 데이터의 존재 여부는 매핑 테이블(212)에 의해 관리될 수 있다.
중복제거 관리자(211)는 매핑 테이블(212)을 참조하여, PCIe 버스(12)를 통해 브로드캐스트된 핑거프린트(FP)에 대응하는 매핑 정보가 존재하지 않는다고 결정할 수 있다. 중복제거 관리자(211)는 매핑 정보가 존재하지 않는다고 결정한 것에 기초하여, 타겟 데이터의 핑거프린트를 갖는 매핑 정보가 존재하지 않음을 가리키는 응답(RP)을 PCIe 버스(12)를 통해 제1 스토리지 장치(100)에 제공할 수 있다.
응답(RP)은 참조 인덱스(RI)를 표시하는 제1 필드, 핑거프린트(FP)를 표시하는 제2 필드, 핑거프린트(FP)에 대응하는 매핑 정보가 존재하는지 여부를 나타내는 참조 플래그(RF)를 표시하는 제3 필드, 원본 데이터의 논리적 어드레스(LA)를 표시하는 제4 필드, 및 원본 데이터의 물리적 어드레스(PA)를 표시하는 제5 필드를 포함할 수 있다. 제2 스토리지 장치(200)에 '13579'의 핑거프린트(FP)를 갖는 원본 데이터가 존재하지 않으므로, 참조 플래그(RF)는 제2 값(N)을 가질 수 있다.
제3 동작(③)에서, 중복제거 관리자(111)는 제2 동작(②)을 통해 수신된 응답(RP)에 기초하여 타겟 데이터의 매핑 정보를 업데이트할 수 있다. 예를 들어, 응답(RP)의 참조 플래그(RF)는 제2 값(N)을 가질 수 있다.
중복제거 관리자(111)는 제2 동작(②)을 통해 수신된 응답(RP)에 기초하여 타겟 데이터를 원본 데이터로 결정할 수 있다. 중복제거 관리자(111)는 '13579'의 핑거프린트(FP)를 갖는 타겟 데이터의 매핑 정보에서 중복 플래그(DF)의 값을 제2 값(N)으로 설정함으로써, 매핑 테이블(112) 내의 타겟 데이터의 매핑 정보를 업데이트할 수 있다. 또는, 중복제거 관리자(111)는 매핑 테이블(112) 내에 원본 데이터의 매핑 정보를 최초로 등록할 수 있다.
제4 동작(④)에서, 중복제거 관리자(111)는 제2 동작(②)을 통해 수신된 응답(RP)에 기초하여 타겟 데이터를 유지할 수 있다. 예를 들어, 응답(RP)의 참조 플래그(RF)는 제2 값(N)을 가질 수 있다. 또한, 중복제거 관리자(111)는 다른 스토리지 장치로부터 제1 값(Y)의 참조 플래그를 갖는 다른 응답을 수신하지 않을 수 있다.
중복제거 관리자(111)는 브로드캐스트된 핑거 프린트에 대응하고 그리고 제1 값(Y)의 참조 플래그(RF)를 포함하는 응답(RP)이 미리-결정된 시간 동안 수신되지 않은 것에 기초하여, 비-휘발성 메모리 장치(120)에 저장된 '13579'의 핑거프린트(FP)를 갖는 타겟 데이터를 유지할 수 있다.
또는, 도 7에서 도시된 것과 달리, 타겟 데이터는 제1 스토리지 장치(100)의 휘발성 메모리 장치에 일시적으로 저장된 데이터일 수 있다. 중복제거 관리자(111)는 브로드캐스트된 핑거 프린트에 대응하고 그리고 제1 값(Y)의 참조 플래그(RF)를 포함하는 응답(RP)이 미리-결정된 시간 동안 수신되지 않은 것에 기초하여, 휘발성 메모리 장치에 일시적으로 저장된 타겟 데이터를 비-휘발성 메모리 장치(120)에 저장할 수 있다.
도 8은 본 개시의 일부 실시 예들에 따른 복수의 스토리지 장치들을 포함하는 스토리지 시스템을 설명하는 도면이다. 도 8을 참조하면, 스토리지 시스템(10)은 제1 내지 제4 스토리지 장치들(100~400)을 포함할 수 있다.
스토리지 시스템(10)은 호스트 장치(11), PCIe 버스(12), 및 제1 내지 제4 스토리지 장치들(100~400)을 포함할 수 있다. 제1 스토리지 장치(100)는 중복제거 관리자(111) 및 매핑 테이블(112)을 포함할 수 있다. 제1 스토리지 장치(100)는 데이터를 저장할 수 있다. 이와 유사하게, 제2, 제3, 및 제4 스토리지 장치들(200, 300, 400) 각각은 중복제거 관리자들(211, 311, 411)을 포함하고, 매핑 테이블들(212, 312, 412)을 포함하고, 그리고 데이터를 저장할 수 있다.
제1 스토리지 장치(100)는 '13579'의 핑거프린트(FP)를 갖는 타겟 데이터의 중복제거를 시작할 수 있다. 제1 스토리지 장치(100)는 '13579'의 핑거프린트(FP)를 PCIe 버스(12)로 브로드캐스트할 수 있다. PCIe 버스(12)로 브로드캐스트된 핑거프린트(FP)는 PCIe 버스(12)와 연결된 다른 스토리지 장치들로 전달될 수 있다.
제2 스토리지 장치(200)는 브로드캐스트된 핑거프린트(FP)를 수신할 수 있다. 제2 스토리지 장치(200)는 '13579'의 핑거프린트(FP)를 갖는 원본 데이터를 포함할 수 있다. 중복제거 관리자(211)는 매핑 테이블(212)을 참조하여, '13579'의 핑거프린트(FP)를 갖는 원본 데이터가 존재하는 것으로 결정할 수 있다. 중복제거 관리자(211)는 제1 값(Y)을 갖는 참조 플래그(RF)를 포함하는 제1 응답(RP1)을 PCIe 버스(12)를 통해 제1 스토리지 장치(100)에 제공할 수 있다.
중복제거 관리자(211)는 매핑 테이블(212)에서 원본 데이터의 매핑 정보의 참조 카운트(RC)를 '2'에서 '3'으로 증가시킬 수 있다. 참조 카운트(RC)가 '3'인 것은 동일한 핑거프린트를 갖는 원본 데이터 및 2개의 중복 데이터가 존재하는 것을 나타낼 수 있다.
제3 스토리지 장치(300)는 브로드캐스트된 핑거프린트(FP)를 수신할 수 있다. 제3 스토리지 장치(300)는 '13579'의 핑거프린트(FP)를 갖는 원본 데이터를 포함하지 않을 수 있다. 중복제거 관리자(311)는 매핑 테이블(312)을 참조하여, '13579'의 핑거프린트(FP)를 갖는 원본 데이터가 존재하지 않는 것으로 결정할 수 있다. 중복제거 관리자(311)는 제2 값(N)을 갖는 참조 플래그(RF)를 포함하는 제2 응답(RP2)을 PCIe 버스(12)를 통해 제1 스토리지 장치(100)에 제공할 수 있다.
제4 스토리지 장치(400)는 브로드캐스트된 핑거프린트(FP)를 수신할 수 있다. 제4 스토리지 장치(400)는 '13579'의 핑거프린트(FP)를 갖는 원본 데이터를 포함하지 않을 수 있다. 예를 들어, 제4 스토리지 장치(400)에 저장된 '13579'의 핑거프린트(FP)를 갖는 데이터는 중복제거된 중복 데이터이므로, 원본 데이터가 아닐 수 있다. 중복제거 관리자(411)는 매핑 테이블(412)을 참조하여, '13579'의 핑거프린트(FP)를 갖는 원본 데이터가 존재하지 않는 것으로 결정할 수 있다. 중복제거 관리자(411)는 제2 값(N)을 갖는 참조 플래그(RF)를 포함하는 제3 응답(RP3)을 PCIe 버스(12)를 통해 제1 스토리지 장치(100)에 제공할 수 있다.
제1 스토리지 장치(100)는 PCIe 버스(12)를 통해 연결된 다른 스토리지 장치들로부터 적어도 하나의 응답을 수신할 수 있다. 예를 들어, 제1 스토리지 장치(100)는 제1 내지 제3 응답들(RP1~RP3)을 수신할 수 있다. 제1 응답(RP1)의 참조 플래그(RF)는 제1 값(Y)을 가질 수 있다. 제2 응답(RP2) 및 제3 응답(RP3) 각각의 참조 플래그(RF)는 제2 값(N)을 가질 수 있다.
제1 스토리지 장치(100)는 다른 스토리지 장치들로부터 수신된 응답들 중에서 제1 값(Y)을 갖는 참조 플래그(RF)를 포함하는 응답이 존재하면, 타겟 데이터의 중복제거를 수행할 수 있다. 예를 들어, 제1 스토리지 장치(100)는 제1 내지 제3 응답들(RP1~RP3) 중 제1 값(Y)을 갖는 참조 플래그(RF)를 포함하는 제1 응답(RP1)이 존재하므로, 타겟 데이터의 중복제거를 수행할 수 있다.
또 다른 예로서, 도 8에서 도시된 것과 달리, 제1 스토리지 장치(100)는 다른 스토리지 장치들로부터 수신된 응답들 중에서 제1 값(Y)을 갖는 참조 플래그(RF)를 포함하는 응답이 하나도 존재하지 않으면, 타겟 데이터를 유지할 수 있다. 보다 상세하게는, 제1 스토리지 장치(100)는 미리-결정된 시간 동안 제1 값(Y)을 갖는 참조 플래그(RF)를 포함하는 응답이 수신되지 않은 것에 기초하여, 타겟 데이터를 원본 데이터로 결정하고, 타겟 데이터를 유지할 수 있다.
즉, 제1 스토리지 장치(100)는 브로드캐스트된 핑거프린트에 대응하는 응답들 중에서, 제1 값(Y)을 갖는 참조 플래그(RF)를 포함하는 응답이 하나라도 존재하면, 타겟 데이터를 중복 데이터로 결정할 수 있다. 반면에, 제1 스토리지 장치(100)는 브로드캐스트된 핑거프린트에 대응하는 응답들 모두에 대해, 참조 플래그(RF)의 값이 제2 값(N)을 가지면 타겟 데이터를 원본 데이터로 결정할 수 있다.
일부 실시 예들에서, 스토리지 시스템(10)에 포함된 스토리지 장치들의 개수가 증가할수록 중복제거 히트 비율이 증가할 수 있다. 중복제거 히트 비율은 핑거프린트가 원본 데이터와 일치함에 따라 타겟 데이터가 중복제거되는 정도를 나타낼 수 있다. 중복제거 히트 비율이 증가하는 것은 스토리지 용량의 효율성이 향상된 것을 의미할 수 있다.
스토리지 시스템(10) 내의 스토리지 장치들의 개수가 증가할수록 관리하는 데이터가 증가함에 따라, 동일한 데이터가 중복될 확률이 증가할 수 있다. 스토리지 장치는 핑거프린트를 브로드캐스트함으로써, 스토리지 장치들의 개수가 증가하더라도, 다른 스토리지 장치들에서의 타겟 데이터의 중복 여부를 쉽게 확인할 수 있다. 즉, 스토리지 시스템(10)은 스토리지 장치들의 개수가 증가할수록 스토리지 용량의 효율성이 향상될 수 있다.
도 9는 본 개시의 일부 실시 예들에 따른 중복제거 관리자를 설명하는 도면이다. 도 9를 참조하면, 스토리지 시스템(10)이 중복제거를 시작하는 동작이 설명된다. 스토리지 시스템(10)은 호스트 레이어 및 스토리지 레이어를 포함할 수 있다.
호스트 레이어는 호스트 장치(11)를 포함할 수 있다. 스토리지 레이어는 중복제거 관리자(111), 매핑 테이블(112), 휘발성 메모리 장치(114), 및 비-휘발성 메모리 장치(120)를 포함할 수 있다. 중복제거 관리자(111)는 중복제거 이니시에이터 및 핑거프린트 모듈을 포함할 수 있다. 중복제거 이니시에이터는 중복제거 관리자(111)가 타겟 데이터의 중복제거 동작을 시작하도록, 중복제거 동작을 트리거할 수 있다.
일부 실시 예들에서, 중복제거 이니시에이터는 온-더-플라이(on-the-fly) 방식으로 중복제거 동작을 트리거할 수 있다. 예를 들어, 중복제거 이니시에이터는 호스트 장치(11)로부터 중복제거 요청을 수신할 수 있다. 중복제거 이니시에이터는 중복제거 요청에 응답하여, 타겟 데이터의 중복제거 동작을 즉시 트리거할 수 있다. 중복제거 관리자(111)는 중복제거 이니시에이터의 트리거에 응답하여, 타겟 데이터의 핑거프린트를 다른 스토리지 장치들로 브로드캐스트할 수 있다.
일부 실시 예들에서, 중복제거 이니시에이터는 백그라운드 방식으로 중복제거 동작을 트리거할 수 있다. 예를 들어, 중복제거 이니시에이터는 휘발성 메모리 장치(114)와 통신할 수 있다. 휘발성 메모리 장치(114)는 쓰기 버퍼 메모리를 포함할 수 있다. 쓰기 버퍼 메모리는 호스트 장치(11)로부터 수신된 쓰기 데이터를 일시적으로 저장하는 메모리일 수 있다. 쓰기 버퍼 메모리는 일정한 크기의 저장 용량을 가질 수 있다.
중복제거 이니시에이터는 스토리지 레이어가 유휴(idle) 상태에서 동작하는 동안, 쓰기 버퍼 메모리에 저장된 쓰기 데이터의 크기가 쓰기 임계 값을 초과하는지 여부를 결정할 수 있다. 쓰기 임계 값은 중복제거 동작의 기준이 되는 크기일 수 있다. 중복제거 이니시에이터는 쓰기 버퍼 메모리에 저장된 쓰기 데이터의 크기가 쓰기 임계 값을 초과하는 것으로 결정되면, 타겟 데이터의 중복제거 동작을 트리거할 수 있다. 중복제거 관리자(111)는 중복제거 이니시에이터의 트리거에 응답하여, 타겟 데이터의 핑거프린트를 다른 스토리지 장치들로 브로드캐스트할 수 있다.
도 10은 본 개시의 일부 실시 예들에 따른 핑거프린트 생성기를 설명하는 도면이다. 도 10을 참조하면, 스토리지 시스템이 타겟 데이터의 핑거프린트(FP)를 생성하는 방법이 설명된다.
스토리지 시스템은 핑거프린트 생성기 및 중복제거 관리자(111)를 포함할 수 있다. 중복제거 관리자(111)는 핑거프린트 모듈을 포함할 수 있다. 핑거프린트 모듈은 핑거프린트 생성기로부터 핑거프린트(FP)를 수신할 수 있다. 핑거프린트 모듈은 핑거프린트(FP)를 다른 스토리지 장치들로 브로드캐스트할 수 있다.
핑거프린트 생성기는 데이터를 수신할 수 있다. 데이터는 중복제거가 수행될 타겟 데이터일 수 있다. 타겟 데이터는 일련의 복수의 비트들을 포함할 수 있다. 핑거프린트 생성기는 타겟 데이터에 대응하는 일련의 복수의 비트들 중 일부 비트들을 샘플링할 수 있다. 핑거프린트 생성기는 샘플링된 일부 비트들을 해싱 함수에 적용함으로써, 타겟 데이터의 핑거프린트(FP)를 생성할 수 있다. 해싱 함수는 해싱 알고리즘에 기초하여 키-값에 대응하는 인덱스를 생성하는 함수일 수 있다. 예를 들어, 해싱 함수에 의해 획득된 핑거프린트(FP)의 값은 '13579'일 수 있다. 핑거프린트 생성기는 핑거프린트(FP)를 중복제거 관리자(111)에게 제공할 수 있다.
일부 실시 예들에서, 핑거프린트 생성기는 호스트 장치에 포함될 수 있다. 예를 들어, 호스트 장치는 중복제거가 수행될 타겟 데이터를 캐시 메모리에 저장할 수 있다. 호스트 장치의 핑거프린트 생성기는 캐시 메모리와의 통신에 기초하여 타겟 데이터에 대응하는 핑거프린트(FP)를 생성할 수 있다. 호스트 장치는 핑거프린트(FP)를 스토리지 장치의 중복제거 관리자(111)에 제공할 수 있다. 중복제거 관리자(111)는 핑거프린트(FP)를 다른 스토리지 장치들로 브로드캐스트할 수 있다.
일부 실시 예들에서, 핑거프린트 생성기는 스토리지 장치에 포함될 수 있다. 예를 들어, 스토리지 장치는 타겟 데이터가 저장된 휘발성 메모리 장치 또는 타겟 데이터가 저장된 비-휘발성 메모리 장치를 포함할 수 있다. 스토리지 장치의 핑거프린트 생성기는 휘발성 메모리 장치 또는 비-휘발성 메모리 장치와의 통신에 기초하여 타겟 데이터에 대응하는 핑거프린트(FP)를 생성할 수 있다. 핑거프린트 생성기는 핑거프린트(FP)를 중복제거 관리자(111)에 제공할 수 있다. 중복제거 관리자(111)는 핑거프린트(FP)를 다른 스토리지 장치들로 브로드캐스트할 수 있다.
도 11a는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 읽기 동작을 설명하는 도면이다. 도 11a를 참조하면, 본 개시의 일부 실시 예들에 따른 리디렉션 방식의 읽기 동작이 설명된다. 스토리지 시스템(10)은 호스트 장치(11), PCIe 버스(12), 제1 스토리지 장치(100), 및 제2 스토리지 장치(200)를 포함할 수 있다. 제1 스토리지 장치(100)는 중복제거 관리자(111), 매핑 테이블(112), 비-휘발성 메모리 장치(120)를 포함할 수 있다. 제2 스토리지 장치(200)는 중복제거 관리자(211), 매핑 테이블(212), 비-휘발성 메모리 장치(220)를 포함할 수 있다.
이하에서, 본 개시의 실시 예에 따른 스토리지 시스템(10)의 리디렉션 방식의 읽기 동작이 설명된다.
제1 동작(①)에서, 호스트 장치(11)는 PCIe 버스(12)를 통해 제1 스토리지 장치(100)로 타겟 데이터의 읽기 요청을 제공할 수 있다. 타겟 데이터는 이미 중복제거가 수행된 중복 데이터일 수 있다. 즉, 제1 스토리지 장치(100)는 타겟 데이터의 매핑 정보를 저장할 뿐, 타겟 데이터 자체를 저장하지 않을 수 있다.
제2 동작(②)에서, 중복제거 관리자(111)는 제1 동작(①)에 따른 읽기 요청을 제2 스토리지 장치(200)로 리디렉션할 수 있다. 예를 들어, 중복제거 관리자(111)는 매핑 테이블(112) 내에서 타겟 데이터의 매핑 정보를 참조하여, 타겟 데이터는 제2 스토리지 장치의 원본 데이터를 참조하는 중복 데이터임을 확인할 수 있다. 중복제거 관리자(111)는 확인된 매핑 정보에 기초하여, 읽기 요청을 제2 스토리지 장치(200)로 리디렉션할 수 있다.
제3 동작(③)에서, 중복제거 관리자(211)는 제2 동작(②)을 통해 리디렉션된 읽기 요청에 기초하여, PCIe 버스(12)를 통해 호스트 장치(11)로 타겟 데이터 대신에 원본 데이터를 제공할 수 있다. 원본 데이터는 타겟 데이터에 의해 참조되고, 타겟 데이터와 동일한 내용을 갖는 데이터일 수 있다.
도 11b는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 읽기 동작을 설명하는 도면이다. 도 11b를 참조하면, 본 개시의 일부 실시 예들에 따른 릴레이 방식의 읽기 동작이 설명된다. 스토리지 시스템(10)은 호스트 장치(11), PCIe 버스(12), 제1 스토리지 장치(100), 및 제2 스토리지 장치(200)를 포함할 수 있다. 제1 스토리지 장치(100)는 중복제거 관리자(111), 매핑 테이블(112), 비-휘발성 메모리 장치(120)를 포함할 수 있다. 제2 스토리지 장치(200)는 중복제거 관리자(211), 매핑 테이블(212), 비-휘발성 메모리 장치(220)를 포함할 수 있다.
이하에서, 본 개시의 실시 예에 따른 스토리지 시스템(10)의 릴레이 방식의 읽기 동작이 설명된다.
제1 동작(①)에서, 호스트 장치(11)는 PCIe 버스(12)를 통해 제1 스토리지 장치(100)로 타겟 데이터의 읽기 요청을 제공할 수 있다. 타겟 데이터는 이미 중복제거가 수행된 중복 데이터일 수 있다. 즉, 제1 스토리지 장치(100)는 타겟 데이터의 매핑 정보를 저장할 뿐, 타겟 데이터 자체를 저장하지 않을 수 있다.
제2 동작(②)에서, 중복제거 관리자(111)는 제1 동작(①)에 따른 읽기 요청을 제2 스토리지 장치(200)로 리디렉션할 수 있다. 예를 들어, 중복제거 관리자(111)는 매핑 테이블(112) 내에서 타겟 데이터의 매핑 정보를 참조하여, 타겟 데이터는 제2 스토리지 장치의 원본 데이터를 참조하는 중복 데이터임을 확인할 수 있다. 중복제거 관리자(111)는 확인된 매핑 정보에 기초하여, 읽기 요청을 제2 스토리지 장치(200)로 리디렉션할 수 있다.
제3 동작(③)에서, 중복제거 관리자(211)는 제2 동작(②)을 통해 리디렉션된 읽기 요청에 기초하여, PCIe 버스(12)를 통해 중복제거 관리자(111)로 원본 데이터를 제공할 수 있다. 원본 데이터는 타겟 데이터에 의해 참조되고, 타겟 데이터와 동일한 내용을 갖는 데이터일 수 있다.
제4 동작(④)에서, 중복제거 관리자(111)는 제3 동작(③)을 통해 수신된 원본 데이터를 PCIe 버스(12)를 통해 호스트 장치(11)로 제공할 수 있다. 즉, 중복제거 관리자(111)는 중복제거 관리자(211)로부터 수신된 원본 데이터를 전달받고, 원본 데이터를 호스트 장치(11)로 재전송할 수 있다.
도 12는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 소거 동작을 설명하는 도면이다. 도 12를 참조하면, 본 개시의 일부 실시 예들에 따른 소거 동작이 설명된다. 스토리지 시스템(10)은 호스트 장치(11), PCIe 버스(12), 제1 스토리지 장치(100), 및 제2 스토리지 장치(200)를 포함할 수 있다. 제1 스토리지 장치(100)는 중복제거 관리자(111), 매핑 테이블(112), 비-휘발성 메모리 장치(120)를 포함할 수 있다. 제2 스토리지 장치(200)는 중복제거 관리자(211), 매핑 테이블(212), 비-휘발성 메모리 장치(220)를 포함할 수 있다.
이하에서, 본 개시의 실시 예에 따른 스토리지 시스템(10)의 소거 동작이 설명된다.
제1 동작(①)에서, 호스트 장치(11)는 PCIe 버스(12)를 통해 제1 스토리지 장치(100)로 타겟 데이터의 소거 요청을 제공할 수 있다. 타겟 데이터는 이미 중복제거가 수행된 중복 데이터일 수 있다. 즉, 제1 스토리지 장치(100)는 타겟 데이터의 매핑 정보를 저장할 뿐, 타겟 데이터 자체를 저장하지 않을 수 있다.
제2 동작(②)에서, 중복제거 관리자(111)는 제1 동작(①)에 따른 소거 요청을 제2 스토리지 장치(200)로 리디렉션할 수 있다. 예를 들어, 중복제거 관리자(111)는 매핑 테이블(112) 내에서 타겟 데이터의 매핑 정보를 참조하여, 타겟 데이터는 제2 스토리지 장치의 원본 데이터를 참조하는 중복 데이터임을 확인할 수 있다. 중복제거 관리자(111)는 확인된 매핑 정보에 기초하여, 소거 요청을 제2 스토리지 장치(200)로 리디렉션할 수 있다.
제3 동작(③)에서, 중복제거 관리자(111)는 제1 동작(①)에 따른 소거 요청에 기초하여, 매핑 테이블(112) 내에서 타겟 데이터의 매핑 정보를 삭제할 수 있다.
제4 동작(④)에서, 중복제거 관리자(211)는 제2 동작(②)을 통해 리디렉션된 소거 요청에 기초하여, 매핑 테이블(212) 내에서 원본 데이터의 참조 카운트를 업데이트할 수 있다. 예를 들어, 중복제거 관리자(211)는 리디렉션된 소거 요청에 기초하여, 매핑 테이블(212) 내에서 원본 데이터의 참조 카운트를 '2'에서 '1'로 감소시킬 수 있다. 이 때, 업데이트된 참조 카운트는 '0'이 아니므로, 비-휘발성 메모리 장치(220)에 저장된 원본 데이터는 유지될 수 있다.
도 13은 본 개시의 일부 실시 예들에 따른 스토리지 장치의 동작하는 방법을 설명하는 순서도이다. 도 13을 참조하면, 스토리지 장치의 동작하는 방법이 설명된다. 스토리지 장치는 외부 스토리지 장치와 통신할 수 있다. 스토리지 장치는 중복제거 관리자를 포함할 수 있다.
S110 단계에서, 스토리지 장치의 중복제거 관리자는 타겟 데이터의 핑거프린트를 브로드캐스트할 수 있다. 일부 실시 예들에서, 스토리지 장치는 PCIe 버스를 통해 외부 스토리지 장치로 핑거프린트를 브로드캐스트할 수 있다.
S120 단계에서, 스토리지 장치의 중복제거 관리자는 핑거프린트에 대응하는 응답을 수신할 수 있다. 일부 실시 예들에서, 스토리지 장치는 복수의 외부 스토리지 장치들과 통신할 수 있다. 이 경우, S120 단계에서, 스토리지 장치는 복수의 외부 스토리지 장치들로부터 핑거프린트에 대응하는 복수의 응답들을 수신할 수 있다.
S130 단계에서, 스토리지 장치의 중복제거 관리자는 S120 단계에서 수신된 응답의 참조 플래그가 제1 값을 갖는지 여부를 결정할 수 있다. 참조 플래그는 핑거프린트에 대응하는 원본 데이터가 존재하는지 여부를 나타낼 수 있다. 참조 플래그가 제1 값을 가지면, 외부 스토리지 장치에 원본 데이터가 존재할 수 있다. 참조 플래그가 제2 값을 가지면, 외부 스토리지 장치에 원본 데이터가 존재하지 않을 수 있다. 응답의 참조 플래그가 제1 값을 가지면, 스토리지 장치는 S140 단계를 수행할 수 있다. 응답의 참조 플래그가 제1 값을 가지지 않으면, 스토리지 장치는 S150 단계를 수행할 수 있다.
일부 실시 예들에서, 스토리지 장치는 복수의 외부 스토리지 장치들과 통신할 수 있다. 이 경우, S130 단계에서, 스토리지 장치는 복수의 외부 스토리지 장치들로부터 수신된 복수의 응답들 중에서, 제1 값을 갖는 참조 플래그를 포함하는 응답이 존재하는지 여부를 결정할 수 있다. 복수의 응답들 중에서, 제1 값을 갖는 참조 플래그를 포함하는 응답이 존재하면, 스토리지 장치는 S140 단계를 수행할 수 있다. 복수의 응답들 중에서, 제1 값을 갖는 참조 플래그를 포함하는 응답이 하나도 존재하지 않으면, 스토리지 장치는 S150 단계를 수행할 수 있다.
S140 단계에서, 스토리지 장치는 S120 단계에서 수신된 응답에 기초하여, 타겟 데이터의 매핑 정보를 업데이트할 수 있다. 예를 들어, 타겟 데이터의 매핑 정보의 중복 플래그의 값을 제1 값으로 설정할 수 있다. 타겟 데이터의 매핑 정보의 참조 인덱스의 값을 외부 스토리지 장치에 대응하는 식별 정보로 설정할 수 있다. 즉, 스토리지 장치는 타겟 데이터를 중복 데이터로 관리할 수 있다.
S141 단계에서, 스토리지 장치는 S120 단계에서 수신된 응답에 기초하여, 타겟 데이터의 중복제거를 수행할 수 있다.
S150 단계에서, 스토리지 장치는 타겟 데이터의 매핑 정보를 업데이트할 수 있다. 예를 들어, 타겟 데이터의 매핑 정보의 중복 플래그의 값을 제2 값으로 설정할 수 있다. 즉, 스토리지 장치는 타겟 데이터를 원본 데이터로 관리할 수 있다.
S151 단계에서, 스토리지 장치는 타겟 데이터를 유지할 수 있다. 즉, 타겟 데이터가 원본 데이터로 결정됨에 따라, 스토리지 장치는 타겟 데이터의 중복제거를 수행하지 않을 수 있다.
도 14는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 동작하는 방법을 설명하는 순서도이다. 도 14를 참조하면, 스토리지 시스템의 동작하는 방법이 설명된다. 스토리지 시스템은 제1 스토리지 장치(100), 제2 스토리지 장치(200), 및 제3 스토리지 장치(300)를 포함할 수 있다.
S210 단계에서, 제1 스토리지 장치(100)는 타겟 데이터의 핑거프린트(FP)를 브로드캐스트할 수 있다. 예를 들어, 제1 내지 제3 스토리지 장치들(100~300)은 PCIe 버스를 통해 서로 연결될 수 있다. 제1 스토리지 장치(100)는 PCIe 버스를 통해 제2 및 제3 스토리지 장치들(200, 300)로 타겟 데이터의 핑거프린트(FP)를 브로드캐스트할 수 있다.
S220 단계에서, 제2 스토리지 장치(200)는 제2 값(N)을 갖는 참조 플래그(RF)를 포함하는 제1 응답(RP1)을 제1 스토리지 장치(100)에 제공할 수 있다.
S221 단계에서, 제1 스토리지 장치(100)는 S220 단계에서 수신된 제1 응답(RP1)에 기초하여, 제2 스토리지 장치(200)는 원본 데이터를 갖지 않는 것으로 결정할 수 있다.
S230 단계에서, 제3 스토리지 장치(300)는 제1 값(Y)을 갖는 참조 플래그(RF)를 포함하는 제2 응답(RP2)을 제2 스토리지 장치(200)에 제공할 수 있다.
S231 단계에서, 제1 스토리지 장치(100)는 S230 단계에서 수신된 제2 응답(RP2)에 기초하여, 제3 스토리지 장치(300)는 원본 데이터를 갖는 것으로 결정할 수 있다.
S240 단계에서, 제1 스토리지 장치(100)는 S230 단계에서 수신된 제2 응답(RP2)에 기초하여, 타겟 데이터에 대응하는 매핑 정보를 업데이트할 수 있다. 예를 들어, 타겟 데이터의 매핑 정보의 중복 플래그의 값을 제1 값(Y)으로 설정할 수 있다. 타겟 데이터의 매핑 정보의 참조 인덱스의 값을 제2 스토리지 장치(200)에 대응하는 식별 정보로 설정할 수 있다. 즉, 제1 스토리지 장치(100)는 타겟 데이터를 중복 데이터로 관리할 수 있다.
S241 단계에서, 제1 스토리지 장치(100)는 타겟 데이터의 중복제거를 수행할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.

Claims (20)

  1. 제1 외부 스토리지 장치와 통신하고 그리고 중복제거 관리자를 포함하는 스토리지 장치의 동작하는 방법에 있어서:
    상기 중복제거 관리자에 의해, 제1 데이터의 제1 핑거프린트를 브로드캐스트하는 단계;
    상기 제1 외부 스토리지 장치로부터, 상기 제1 핑거프린트에 대응하는 제1 응답을 수신하는 단계;
    상기 중복제거 관리자에 의해, 상기 제1 응답의 참조 플래그가 제1 값 또는 제2 값을 갖는지 여부를 결정하는 단계;
    상기 중복제거 관리자에 의해, 상기 제1 응답의 상기 참조 플래그가 상기 제1 값을 갖는 것으로 결정되면, 상기 제1 응답에 기초하여, 매핑 테이블 내의 상기 제1 데이터에 대응하는 제1 매핑 정보를 업데이트하는 단계; 및
    상기 중복제거 관리자에 의해, 상기 제1 응답의 상기 참조 플래그가 상기 제1 값을 갖는 것으로 결정되면, 상기 제1 응답에 기초하여, 상기 제1 데이터의 중복제거를 수행하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 스토리지 장치는 PCIe(Peripheral Component Interconnect Express) 버스를 통해 상기 제1 외부 스토리지 장치와 통신하고, 그리고
    상기 제1 외부 스토리지 장치로부터, 상기 제1 핑거프린트에 대응하는 상기 제1 응답을 수신하는 단계는:
    호스트 장치의 개입 없이, 상기 제1 외부 스토리지 장치로부터 상기 PCIe 버스를 통해, 상기 제1 응답을 수신하는 단계를 포함하는 방법.
  3. 제 1 항에 있어서,
    상기 중복제거 관리자에 의해, 상기 제1 응답의 상기 참조 플래그가 상기 제2 값을 갖는 것으로 결정되면, 상기 매핑 테이블 내의 상기 제1 데이터에 대응하는 상기 제1 매핑 정보를 업데이트하는 단계; 및
    상기 중복제거 관리자에 의해, 상기 제1 응답의 상기 참조 플래그가 상기 제2 값을 갖는 것으로 결정되면, 상기 제1 데이터를 유지하는 단계를 더 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 제1 응답은:
    상기 제1 외부 스토리지 장치의 식별 정보를 표시하는 제1 필드;
    상기 스토리지 장치에 의해 브로드캐스트된 상기 제1 핑거프린트를 표시하는 제2 필드;
    상기 제1 핑거프린트를 갖는 제1 원본 데이터(original data)가 상기 제1 외부 스토리지 장치에 존재하면 상기 제1 값을 갖고 그리고 상기 제1 핑거프린트를 갖는 상기 제1 원본 데이터가 상기 제1 외부 스토리지 장치에 존재하지 않으면 상기 제2 값을 갖는 참조 플래그를 표시하는 제3 필드;
    상기 참조 플래그가 상기 제1 값을 가지면 상기 제1 원본 데이터의 논리적 어드레스를 표시하는 제4 필드; 및
    상기 참조 플래그가 상기 제1 값을 가지면 상기 제1 원본 데이터의 물리적 어드레스를 표시하는 제5 필드를 포함하는 방법.
  5. 제 1 항에 있어서,
    상기 스토리지 장치는 상기 제1 데이터를 포함하는 복수의 데이터를 저장하고,
    상기 매핑 테이블은 상기 복수의 데이터에 각각 대응하는 복수의 매핑 정보를 관리하고, 상기 복수의 매핑 정보는 상기 제1 매핑 정보를 포함하고, 그리고
    상기 제1 매핑 정보는:
    상기 제1 데이터의 논리적 어드레스;
    상기 제1 데이터의 물리적 어드레스;
    상기 제1 데이터의 상기 제1 핑거프린트;
    상기 제1 데이터가 중복제거되면 제3 값을 갖고 상기 제1 데이터가 중복제거되지 않으면 제4 값을 갖는 중복 플래그;
    상기 중복 플래그가 상기 제3 값을 가지면, 상기 제1 데이터가 참조하는 제1 원본 데이터가 저장된 스토리지 장치의 식별 정보를 표시하는 참조 인덱스; 및
    상기 중복 플래그가 상기 제4 값을 가지면, 상기 제1 데이터가 참조되는 횟수를 나타내는 참조 카운트를 포함하는 방법.
  6. 제 1 항에 있어서,
    상기 스토리지 장치는 호스트 장치와 더 통신하고, 그리고
    상기 중복제거 관리자에 의해, 상기 제1 데이터의 상기 제1 핑거프린트를 브로드캐스트하는 단계는:
    상기 호스트 장치로부터 상기 제1 데이터의 중복제거 요청을 수신하는 단계; 및
    상기 중복제거 관리자에 의해, 상기 중복제거 요청에 기초하여, 상기 제1 데이터의 상기 제1 핑거프린트를 브로드캐스트하는 단계를 포함하는 방법.
  7. 제 1 항에 있어서,
    상기 중복제거 관리자에 의해, 상기 제1 데이터의 상기 제1 핑거프린트를 브로드캐스트하는 단계는:
    상기 중복제거 관리자에 의해, 유휴(idle) 상태 동안, 쓰기 버퍼 메모리에 저장된 쓰기 데이터의 크기가 쓰기 임계 값을 초과하는지 여부를 결정하는 단계; 및
    상기 중복제거 관리자에 의해, 상기 쓰기 버퍼 메모리에 저장된 쓰기 데이터의 크기가 상기 쓰기 임계 값을 초과하는 것으로 결정되면, 상기 제1 데이터의 상기 제1 핑거프린트를 브로드캐스트하는 단계를 포함하는 방법.
  8. 제 1 항에 있어서,
    상기 스토리지 장치는 호스트 장치와 더 통신하고, 그리고
    상기 중복제거 관리자에 의해, 상기 제1 데이터의 상기 제1 핑거프린트를 브로드캐스트하는 단계는:
    상기 호스트 장치로부터 상기 제1 데이터의 상기 제1 핑거프린트를 수신하는 단계; 및
    상기 중복제거 관리자에 의해, 상기 수신된 제1 핑거프린트에 기초하여, 상기 제1 데이터의 상기 제1 핑거프린트를 브로드캐스트하는 단계를 포함하는 방법.
  9. 제 1 항에 있어서,
    상기 스토리지 장치는 핑거프린트 생성기를 더 포함하고, 그리고
    상기 중복제거 관리자에 의해, 상기 제1 데이터의 상기 제1 핑거프린트를 브로드캐스트하는 단계는:
    상기 핑거프린트 생성기에 의해, 상기 제1 데이터에 대응하는 일련의 복수의 비트들 중 일부 비트들을 샘플링하는 단계;
    상기 핑거프린트 생성기에 의해, 상기 샘플링된 일부 비트들을 해싱 함수에 적용함으로써, 상기 제1 데이터의 상기 제1 핑거프린트를 생성하는 단계; 및
    상기 중복제거 관리자에 의해, 상기 생성된 제1 핑거프린트에 기초하여, 상기 제1 데이터의 상기 제1 핑거프린트를 브로드캐스트하는 단계를 포함하는 방법.
  10. 제 1 항에 있어서,
    상기 스토리지 장치는 호스트 장치와 더 통신하고,
    상기 제1 응답의 상기 참조 플래그는 상기 제1 값을 갖고, 그리고
    상기 방법은:
    상기 제1 매핑 정보의 업데이트 및 상기 제1 데이터의 중복제거를 수행한 후, 상기 호스트 장치로부터 상기 제1 데이터의 읽기 요청을 수신하는 단계; 및
    상기 중복제거 관리자에 의해, 상기 매핑 테이블의 상기 업데이트된 제1 매핑 정보에 기초하여, 상기 읽기 요청을 상기 제1 외부 스토리지 장치로 리디렉션하는 단계를 더 포함하는 방법.
  11. 제 1 항에 있어서,
    상기 스토리지 장치는 호스트 장치와 더 통신하고,
    상기 제1 응답의 상기 참조 플래그는 상기 제1 값을 갖고, 그리고
    상기 방법은:
    상기 제1 매핑 정보의 업데이트 및 상기 제1 데이터의 중복제거를 수행한 후, 상기 호스트 장치로부터 상기 제1 데이터의 소거(erase) 요청을 수신하는 단계;
    상기 중복제거 관리자에 의해, 상기 매핑 테이블의 상기 업데이트된 제1 매핑 정보에 기초하여, 상기 소거 요청을 상기 제1 외부 스토리지 장치로 리디렉션하는 단계; 및
    상기 중복제거 관리자에 의해, 상기 매핑 테이블 내의 상기 업데이트된 제1 매핑 정보를 삭제하는 단계를 더 포함하는 방법.
  12. 제 1 항에 있어서,
    상기 제1 외부 스토리지 장치로부터 브로드캐스트된 제2 데이터의 제2 핑거프린트를 수신하는 단계; 및
    상기 중복제거 관리자에 의해, 상기 매핑 테이블을 참조하여, 상기 제2 핑거프린트에 대응하는 제2 응답을 상기 제1 외부 스토리지 장치에 제공하는 단계를 더 포함하는 방법.
  13. 제 12 항에 있어서,
    상기 중복제거 관리자에 의해, 상기 매핑 테이블을 참조하여, 상기 제2 핑거프린트에 대응하는 상기 제2 응답을 상기 제1 외부 스토리지 장치에 제공하는 단계는:
    상기 중복제거 관리자에 의해, 상기 매핑 테이블 내에 상기 제2 핑거프린트를 포함하는 제2 매핑 정보가 존재하는지 여부를 결정하는 단계;
    상기 중복제거 관리자에 의해, 상기 매핑 테이블 내에 상기 제2 핑거프린트를 포함하는 상기 제2 매핑 정보가 존재하는 것으로 결정되면, 상기 제1 값을 갖는 참조 플래그를 포함하는 상기 제2 응답을 상기 제1 외부 스토리지 장치에 제공하는 단계; 및
    상기 중복제거 관리자에 의해, 상기 매핑 테이블 내에 상기 제2 핑거프린트를 포함하는 상기 제2 매핑 정보가 존재하지 않는 것으로 결정되면, 상기 제2 값을 갖는 참조 플래그를 포함하는 상기 제2 응답을 상기 제1 외부 스토리지 장치에 제공하는 단계를 포함하는 방법.
  14. 제 13 항에 있어서,
    상기 중복제거 관리자에 의해, 상기 매핑 테이블 내에 상기 제2 핑거프린트를 포함하는 상기 제2 매핑 정보가 존재하는 것으로 결정되면, 상기 제1 값을 갖는 상기 참조 플래그를 포함하는 상기 제2 응답을 상기 제1 외부 스토리지 장치에 제공하는 단계는:
    상기 중복제거 관리자에 의해, 상기 매핑 테이블 내의 상기 제2 매핑 정보의 참조 카운트를 증가시키는 단계를 포함하는 방법.
  15. 제 1 항에 있어서,
    상기 스토리지 장치는 제2 외부 스토리지 장치와 더 통신하고, 그리고
    상기 방법은:
    상기 제2 외부 스토리지 장치로부터, 상기 제1 핑거프린트에 대응하는 제3 응답을 수신하는 단계;
    상기 중복제거 관리자에 의해, 상기 제3 응답의 참조 플래그가 상기 제1 값 또는 상기 제2 값을 갖는지 여부를 결정하는 단계;
    상기 중복제거 관리자에 의해, 상기 제3 응답의 상기 참조 플래그가 상기 제1 값을 갖는 것으로 결정되면, 상기 제3 응답에 기초하여, 상기 매핑 테이블 내의 상기 제1 데이터에 대응하는 상기 제1 매핑 정보를 업데이트하는 단계;
    상기 중복제거 관리자에 의해, 상기 제3 응답의 상기 참조 플래그가 상기 제1 값을 갖는 것으로 결정되면, 상기 제3 응답에 기초하여, 상기 제1 데이터의 중복제거를 수행하는 단계;
    상기 중복제거 관리자에 의해, 상기 제1 응답의 상기 참조 플래그 및 상기 제3 응답의 상기 참조 플래그 모두가 상기 제2 값을 갖는 것으로 결정되면, 상기 매핑 테이블 내의 상기 제1 데이터에 대응하는 상기 제1 매핑 정보를 업데이트하는 단계; 및
    상기 중복제거 관리자에 의해, 상기 제1 응답의 상기 참조 플래그 및 상기 제3 응답의 상기 참조 플래그 모두가 상기 제2 값을 갖는 것으로 결정되면, 상기 제1 데이터를 유지하는 단계를 더 포함하는 방법.
  16. 제1 중복제거 관리자를 포함하는 제1 스토리지 장치 및 제2 중복제거 관리자를 포함하는 제2 스토리지 장치를 포함하는 스토리지 시스템의 동작하는 방법에 있어서:
    상기 제1 중복제거 관리자에 의해, 타겟 데이터의 핑거프린트를 브로드캐스트하는 단계;
    상기 제2 중복제거 관리자에 의해, 상기 브로드캐스트된 핑거프린트에 대응하는 제1 응답을 상기 제1 스토리지 장치에 제공하는 단계;
    상기 제1 중복제거 관리자에 의해, 상기 제1 응답의 참조 플래그가 제1 값 또는 제2 값을 갖는지 여부를 결정하는 단계;
    상기 제1 중복제거 관리자에 의해, 상기 제1 응답의 상기 참조 플래그가 상기 제1 값을 갖는 것으로 결정되면, 상기 제1 응답에 기초하여, 상기 제1 스토리지 장치의 매핑 테이블 내의 상기 타겟 데이터에 대응하는 매핑 정보를 업데이트하는 단계; 및
    상기 제1 중복제거 관리자에 의해, 상기 제1 응답의 상기 참조 플래그가 상기 제1 값을 갖는 것으로 결정되면, 상기 제1 응답에 기초하여, 상기 제1 스토리지 장치 내에서 상기 타겟 데이터의 중복제거를 수행하는 단계를 포함하는 방법.
  17. 제 16 항에 있어서,
    상기 스토리지 시스템은 제3 중복제거 관리자를 포함하는 제3 스토리지 장치를 더 포함하고, 그리고
    상기 방법은:
    상기 제3 중복제거 관리자에 의해, 상기 브로드캐스트된 핑거프린트에 대응하는 제2 응답을 상기 제1 스토리지 장치에 제공하는 단계;
    상기 제1 중복제거 관리자에 의해, 상기 제2 응답의 참조 플래그가 상기 제1 값 또는 상기 제2 값을 갖는지 여부를 결정하는 단계;
    상기 제1 중복제거 관리자에 의해, 상기 제2 응답의 상기 참조 플래그가 상기 제1 값을 갖는 것으로 결정되면, 상기 제2 응답에 기초하여, 상기 제1 스토리지 장치의 상기 매핑 테이블 내의 상기 타겟 데이터에 대응하는 상기 매핑 정보를 업데이트하는 단계;
    상기 제1 중복제거 관리자에 의해, 상기 제2 응답의 상기 참조 플래그가 상기 제1 값을 갖는 것으로 결정되면, 상기 제2 응답에 기초하여, 상기 제1 스토리지 장치 내에서 상기 타겟 데이터의 중복제거를 수행하는 단계;
    상기 제1 중복제거 관리자에 의해, 상기 제1 응답의 상기 참조 플래그 및 상기 제2 응답의 상기 참조 플래그 모두가 상기 제2 값을 갖는 것으로 결정되면, 상기 제1 스토리지 장치의 상기 매핑 테이블 내의 상기 타겟 데이터에 대응하는 상기 매핑 정보를 업데이트하는 단계; 및
    상기 제1 중복제거 관리자에 의해, 상기 제1 응답의 상기 참조 플래그 및 상기 제2 응답의 상기 참조 플래그 모두가 상기 제2 값을 갖는 것으로 결정되면, 상기 제1 스토리지 장치 내에서 상기 타겟 데이터를 유지하는 단계를 더 포함하는 방법.
  18. 복수의 데이터를 저장하도록 구성된 메모리 장치;
    상기 복수의 데이터에 각각 대응하는 복수의 매핑 정보를 관리하는 매핑 테이블; 및
    외부 스토리지 장치와 통신하는 중복제거 관리자를 포함하되,
    상기 중복제거 관리자는:
    상기 복수의 데이터 중 제1 데이터의 제1 핑거프린트를 브로드캐스트하고;
    상기 외부 스토리지 장치로부터 상기 제1 핑거프린트에 대응하는 제1 응답을 수신하고;
    상기 제1 응답의 참조 플래그가 제1 값 또는 제2 값을 갖는지 여부를 결정하고;
    상기 제1 응답의 상기 참조 플래그가 상기 제1 값을 갖는 것으로 결정되면, 상기 제1 응답에 기초하여 상기 매핑 테이블의 상기 복수의 매핑 정보 중 상기 제1 데이터에 대응하는 제1 매핑 정보를 업데이트하고, 상기 메모리 장치 내의 상기 복수의 데이터 중 상기 제1 데이터의 중복제거를 수행하고; 그리고
    상기 제1 응답의 상기 참조 플래그가 상기 제2 값을 갖는 것으로 결정되면, 상기 매핑 테이블의 상기 복수의 매핑 정보 중 상기 제1 매핑 정보를 업데이트하고, 상기 메모리 장치에 저장된 상기 복수의 데이터 중 상기 제1 데이터를 유지하도록 구성된 스토리지 장치.
  19. 제 18 항에 있어서,
    상기 외부 스토리지 장치는 제2 핑거프린트를 갖는 제2 데이터를 포함하고, 그리고
    상기 중복제거 관리자는:
    상기 외부 스토리지 장치로부터 브로드캐스트된 상기 제2 핑거프린트를 수신하고;
    상기 매핑 테이블 내에 상기 복수의 매핑 정보 중 상기 제2 핑거프린트를 포함하는 제2 매핑 정보가 존재하는지 여부를 결정하고;
    상기 매핑 테이블 내에 상기 제2 핑거프린트를 포함하는 상기 제2 매핑 정보가 존재하는 것으로 결정되면, 상기 제1 값을 갖는 참조 플래그를 포함하는 제2 응답을 상기 외부 스토리지 장치에 제공하고, 상기 매핑 테이블 내의 상기 제2 매핑 정보의 참조 카운트를 증가시키고; 그리고
    상기 매핑 테이블 내에 상기 제2 핑거프린트를 포함하는 상기 제2 매핑 정보가 존재하지 않는 것으로 결정되면, 상기 제2 값을 갖는 참조 플래그를 포함하는 상기 제2 응답을 상기 외부 스트로지 장치에 제공하도록 더 구성된 스토리지 장치.
  20. 제 18 항에 있어서,
    상기 제1 데이터에 대응하는 일련의 복수의 비트들 중 일부 비트들을 샘플링하고, 상기 샘플링된 일부 비트들을 해싱 함수에 적용함으로써 상기 제1 핑거프린트를 생성하고, 그리고 상기 제1 핑거프린트를 상기 중복제거 관리자에 제공하도록 구성된 핑거프린트 생성기를 더 포함하는 스토리지 장치.
KR1020210187568A 2021-12-24 2021-12-24 중복제거 관리자를 포함하는 스토리지 장치, 이의 동작하는 방법, 및 이를 포함하는 스토리지 시스템의 동작하는 방법 KR20230097755A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020210187568A KR20230097755A (ko) 2021-12-24 2021-12-24 중복제거 관리자를 포함하는 스토리지 장치, 이의 동작하는 방법, 및 이를 포함하는 스토리지 시스템의 동작하는 방법
US17/878,395 US20230205443A1 (en) 2021-12-24 2022-08-01 Storage device having deduplication manager, method of operating the same, and method of operating storage system including the same
EP22193824.4A EP4213007A3 (en) 2021-12-24 2022-09-05 Storage device having deduplication manager, method of operating the same, and method of operating storage system including the same
CN202211294244.6A CN116339613A (zh) 2021-12-24 2022-10-21 存储装置、操作其的方法及操作包括其的存储系统的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210187568A KR20230097755A (ko) 2021-12-24 2021-12-24 중복제거 관리자를 포함하는 스토리지 장치, 이의 동작하는 방법, 및 이를 포함하는 스토리지 시스템의 동작하는 방법

Publications (1)

Publication Number Publication Date
KR20230097755A true KR20230097755A (ko) 2023-07-03

Family

ID=86875272

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210187568A KR20230097755A (ko) 2021-12-24 2021-12-24 중복제거 관리자를 포함하는 스토리지 장치, 이의 동작하는 방법, 및 이를 포함하는 스토리지 시스템의 동작하는 방법

Country Status (3)

Country Link
US (1) US20230205443A1 (ko)
KR (1) KR20230097755A (ko)
CN (1) CN116339613A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020078470A1 (zh) * 2018-10-18 2020-04-23 上海寒武纪信息科技有限公司 片上网络数据处理方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9141633B1 (en) * 2012-06-27 2015-09-22 Emc Corporation Special markers to optimize access control list (ACL) data for deduplication
US9805048B2 (en) * 2012-10-18 2017-10-31 Oracle International Corporation System and method for managing a deduplication table
US10073878B1 (en) * 2015-01-05 2018-09-11 SK Hynix Inc. Distributed deduplication storage system with messaging

Also Published As

Publication number Publication date
CN116339613A (zh) 2023-06-27
US20230205443A1 (en) 2023-06-29

Similar Documents

Publication Publication Date Title
TWI584125B (zh) 輸入/輸出裝置及計算主機相互運作
CN105843551B (zh) 高性能和大容量储存重复删除中的数据完整性和损耗电阻
US11474899B2 (en) Operation method of open-channel storage device
US10468077B2 (en) Adaptive object buffering and meta-data indexing using persistent memory to improve flash memory durability in tiered storage
US9703816B2 (en) Method and system for forward reference logging in a persistent datastore
US20150331624A1 (en) Host-controlled flash translation layer snapshot
US10891074B2 (en) Key-value storage device supporting snapshot function and operating method thereof
US9152350B2 (en) Semiconductor memory device controlling write or read process
KR20220001222A (ko) 베드 블록을 처리하는 메모리 시스템 및 동작 방법
KR20200113992A (ko) 메모리 시스템의 복구 동작 중 비휘발성 메모리 오픈 블록의 셀 디스터브를 줄이는 방법 및 장치
CN114730300A (zh) 对区命名空间存储器的增强型文件系统支持
US20140219041A1 (en) Storage device and data processing method thereof
US11042316B1 (en) Reordered data deduplication in storage devices
WO2017058302A1 (en) Reduction of write-amplification in object store
CN113590503B (zh) 一种非挥发性记忆体存储器的垃圾回收方法与垃圾回收系统
US20220043713A1 (en) Meta Data Protection against Unexpected Power Loss in a Memory System
CN113590502B (zh) 一种非挥发性记忆体存储设备的垃圾回收方法与垃圾回收系统
US11481132B2 (en) Removing stale hints from a deduplication data store of a storage system
US10437784B2 (en) Method and system for endurance enhancing, deferred deduplication with hardware-hash-enabled storage device
KR20230097755A (ko) 중복제거 관리자를 포함하는 스토리지 장치, 이의 동작하는 방법, 및 이를 포함하는 스토리지 시스템의 동작하는 방법
US20140245093A1 (en) Master boot record protection in a solid state drive
KR20200058867A (ko) 메모리 시스템의 복구 동작 중 비휘발성 메모리 블록의 반복 접근을 줄이는 방법 및 장치
TWI782847B (zh) 用來在儲存伺服器中進行基於管線的存取管理的方法及設備
EP4213007A2 (en) Storage device having deduplication manager, method of operating the same, and method of operating storage system including the same
CN111752475A (zh) 在存储服务器中进行数据存取管理的方法与装置