KR20190032903A - 스냅샷 기능을 지원하는 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법 - Google Patents

스냅샷 기능을 지원하는 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법 Download PDF

Info

Publication number
KR20190032903A
KR20190032903A KR1020170121312A KR20170121312A KR20190032903A KR 20190032903 A KR20190032903 A KR 20190032903A KR 1020170121312 A KR1020170121312 A KR 1020170121312A KR 20170121312 A KR20170121312 A KR 20170121312A KR 20190032903 A KR20190032903 A KR 20190032903A
Authority
KR
South Korea
Prior art keywords
snapshot
key
storage device
value
command
Prior art date
Application number
KR1020170121312A
Other languages
English (en)
Other versions
KR102406666B1 (ko
Inventor
이용화
박영호
이병기
장형철
전제겸
조성국
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020170121312A priority Critical patent/KR102406666B1/ko
Priority to SG10201805093TA priority patent/SG10201805093TA/en
Priority to CN201810840685.9A priority patent/CN109521948B/zh
Priority to US16/055,203 priority patent/US10891074B2/en
Publication of KR20190032903A publication Critical patent/KR20190032903A/ko
Application granted granted Critical
Publication of KR102406666B1 publication Critical patent/KR102406666B1/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/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • 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
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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
    • 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
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

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)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)
  • Retry When Errors Occur (AREA)

Abstract

본 개시의 기술적 사상에 따른 키-밸류 스토리지 장치의 동작 방법은 호스트로부터 제1 키, 제1 밸류 및 제1 스냅샷 아이디(snapshot ID)를 포함하는 제1 커맨드를 수신하고, 수신한 제1 커맨드에 응답하여 키-밸류 스토리지 장치에서, 제1 스냅샷 아이디, 제1 키, 및 제1 밸류가 기입되는 제1 물리적 어드레스를 포함하는 제1 스냅샷 엔트리(entry)를 생성하며, 호스트로부터 제1 키, 제2 밸류 및 제2 스냅샷 아이디를 포함하는 제2 커맨드를 수신하고, 수신한 제2 커맨드에 응답하여 키-밸류 스토리지 장치에서, 제2 스냅샷 아이디, 제1 키, 및 제2 밸류가 기입되는 제2 물리적 어드레스를 포함하는 제2 스냅샷 엔트리를 생성한다.

Description

스냅샷 기능을 지원하는 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법{Key-value storage device supporting snapshot function and method of operating the key-value storage device}
본 개시의 기술적 사상은 스토리지 장치에 관한 것이며, 더욱 상세하게는, 스냅샷 기능을 지원하는 키-밸류(key-value) 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법에 관한 것이다.
스토리지는 데이터를 관리하는 단위에 따라 오브젝트 기반 스토리지 및 블록 기반 스토리지로 구분될 수 있다. 오브젝트 기반 스토리지는 데이터를 오브젝트 형식으로 저장하고 관리하는 스토리지 구조이다. 오브젝트는 임의의 사이즈를 가질 수 있는 데이터로, 예를 들어 동영상, 이미지 등의 멀티미디어 데이터, 파일 등을 의미하며, 오브젝트 스토리지는 오브젝트를 관리하기 위해 사용될 수 있다. 오브젝트 기반 스토리지의 일 예로서, 키-밸류 스토리지 장치가 있다.
본 개시의 기술적 사상은 스냅샷 기능을 지원하는 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법을 제공한다.
본 개시의 기술적 사상에 따른, 비휘발성 메모리를 포함하는 키-밸류 스토리지 장치의 동작 방법은, 호스트로부터 제1 키, 제1 밸류 및 제1 스냅샷 아이디(snapshot ID)를 포함하는 제1 커맨드를 수신하는 단계, 수신한 상기 제1 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 제1 스냅샷 아이디, 상기 제1 키, 및 상기 제1 밸류가 기입되는 제1 물리적 어드레스를 포함하는 제1 스냅샷 엔트리(entry)를 생성하는 단계, 상기 호스트로부터 상기 제1 키, 제2 밸류 및 제2 스냅샷 아이디를 포함하는 제2 커맨드를 수신하는 단계, 및 수신한 상기 제2 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 제2 스냅샷 아이디, 상기 제1 키, 및 상기 제2 밸류가 기입되는 제2 물리적 어드레스를 포함하는 제2 스냅샷 엔트리를 생성하는 단계를 포함한다.
또한, 본 개시의 기술적 사상에 따른, 비휘발성 메모리를 포함하는 키-밸류 스토리지 장치의 동작 방법은, 상기 키-밸류 스토리지 장치에서, 복수의 스냅샷 아이디들에 각각 대응하는, 제1 키에 대한 복수의 스냅샷 엔트리들을 맵핑 테이블에 저장하는 단계, 호스트로부터 상기 제1 키를 포함하는 제1 독출 커맨드를 수신하는 단계, 수신한 상기 제1 독출 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 복수의 스냅샷 엔트리들 중 최신 스냅샷 엔트리를 기초로 상기 비휘발성 메모리에 대해 독출 동작을 수행하는 단계, 상기 호스트로부터 제1 스냅샷 아이디 및 상기 제1 키를 포함하는 제2 독출 커맨드를 수신하는 단계, 및 수신한 상기 제2 독출 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 복수의 스냅샷 엔트리들 중 상기 제1 스냅샷 아이디에 대응하는 제1 스냅샷 엔트리를 기초로 상기 비휘발성 메모리에 대해 독출 동작을 수행하는 단계를 포함한다.
또한, 본 개시의 기술적 사상에 따른, 비휘발성 메모리를 포함하는 키-밸류 스토리지 장치의 동작 방법은, 상기 키-밸류 스토리지 장치에서, 각각 스냅샷 아이디, 키, 및 물리적 어드레스를 포함하는 복수의 스냅샷 엔트리들을 맵핑 테이블에 저장하는 단계, 호스트로부터 제1 스냅샷 아이디를 포함하는 제1 소거 커맨드를 수신하는 단계, 수신한 제1 소거 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 복수의 스냅샷 엔트리들 중 상기 제1 스냅샷 아이디에 대응하는 적어도 하나의 스냅샷 엔트리를 삭제하는 단계, 상기 호스트로부터 상기 제1 스냅샷 아이디 및 제1 키를 포함하는 제2 소거 커맨드를 수신하는 단계, 및 수신한 상기 제2 소거 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 복수의 스냅샷 엔트리들 중 상기 제1 스냅샷 아이디 및 상기 제1 키에 대응하는 제1 스냅샷 엔트리를 삭제하는 단계를 포함한다.
또한, 본 개시의 기술적 사상에 따른 키-밸류 스토리지 장치는, 키에 대응하는 밸류를 저장하는 비휘발성 메모리, 및 호스트로부터 스냅샷 아이디, 상기 키 및 상기 밸류를 포함하는 커맨드를 수신하고, 수신한 상기 커맨드를 기초로, 상기 스냅샷 아이디, 상기 키, 및 상기 밸류를 기입하는 물리적 어드레스를 포함하는 스냅샷 엔트리를 생성하는 컨트롤러를 포함한다.
본 개시의 기술적 사상에 따르면, 키-밸류 스토리지 장치는 스냅샷 아이디를 포함하는 커맨드를 수신하고, 스냅샷 아이디를 기반으로 키에 대한 맵핑 데이터를 관리할 수 있다. 이에 따라, 키-밸류 스토리지 장치가 자체적으로 스냅샷 기능을 지원할 수 있는바, 호스트는 스냅샷 엔트리를 관리하는 오버헤드를 줄일 수 있고, 결과적으로 스토리지 시스템의 성능을 향상시킬 수 있다.
도 1은 본 개시의 일 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 2는 본 개시의 일 실시예에 따른 복수의 키-밸류 페어들을 나타내는 테이블이다.
도 3은 본 개시의 일 실시예에 따른 K2P 맵핑 테이블을 나타낸다.
도 4a 및 도 4b는 본 개시의 일 실시예에 따른 독출 동작들을 나타낸다.
도 5는 본 개시의 일 실시예에 따라 도 1의 컨트롤러를 나타내는 블록도이다.
도 6은 본 개시의 일 실시예에 따라, 도 5의 맵핑 테이블의 일 예를 나타낸다.
도 7a는 본 개시의 일 실시예에 따른 도 6의 제1 키에 대한 맵핑 데이터를 나타내고, 도 7b는 본 개시의 일 실시예에 따른 도 6의 제2 키에 대한 맵핑 데이터를 나타낸다.
도 8은 본 개시의 일 실시예에 따라, 도 5의 맵핑 테이블의 다른 예를 나타낸다.
도 9는 본 개시의 일 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 10은 본 개시의 일 실시예에 따라 도 9의 컨트롤러를 나타내는 블록도이다.
도 11a는 본 개시의 일 실시예에 따라, 도 10의 제1 맵핑 테이블의 일 예를 나타내고, 도 11b는 본 개시의 일 실시예에 따라, 도 10의 제2 맵핑 테이블의 일 예를 나타낸다.
도 12는 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 13은 본 개시의 일 실시예에 따른 호스트와 스토리지 장치 사이의 동작을 나타내는 흐름도이다.
도 14는 본 개시의 일 실시예에 따른 호스트, 컨트롤러와 비휘발성 메모리 사이의 동작을 나타내는 흐름도이다.
도 15 및 도 16은 본 개시의 일 실시예에 따른 호스트와 스토리지 장치 사이의 동작을 각각 나타내는 흐름도들이다.
도 17은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 18은 본 개시의 일 실시예에 따른 호스트와 스토리지 장치 사이의 동작을 나타내는 흐름도이다.
도 19는 본 개시의 일 실시예에 따른 호스트, 컨트롤러와 비휘발성 메모리 사이의 동작을 나타내는 흐름도이다.
도 20은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 21은 본 개시의 일 실시예에 따른 호스트와 스토리지 장치 사이의 동작을 나타내는 흐름도이다.
도 22는 본 개시의 일 실시예에 따른 호스트, 컨트롤러와 비휘발성 메모리 사이의 동작을 나타내는 흐름도이다.
도 23는 본 개시의 일 실시예에 따른 스냅샷 엔트리 삭제 동작을 나타낸다.
도 24 및 도 25는 본 개시의 일 실시예에 따른 호스트와 스토리지 장치 사이의 동작을 각각 나타내는 흐름도들이다.
도 26 및 도 27은 본 개시의 일 실시예에 따른 네트워크 시스템들을 각각 나타낸다.
도 28은 본 개시의 일 실시예에 따른 전자 장치를 나타낸다.
도 1은 본 개시의 일 실시예에 따른 스토리지 시스템(10)을 나타내는 블록도이다. 도 1을 참조하면, 스토리지 시스템(10)은 스토리지 장치(100) 및 호스트(200)를 포함하고, 스토리지 장치(100)는 컨트롤러(110) 및 비휘발성 메모리(Non Volatile Memory, NVM)(120)를 포함할 수 있다. 호스트(200)는 다양한 인터페이스를 통하여 스토리지 장치(100)와 통신할 수 있다. 예를 들어, 호스트(200)는 AP(Application Processor) 또는 SoC(System-On-a-Chip, SoC)로 구현될 수 있다.
일 실시예에서, 스토리지 장치(100)는 키-밸류 스토리지 장치 또는 키-밸류 스토어(store)일 수 있고, 예를 들어, 키-밸류 SSD(Solid State Drive)일 수 있다. 키-밸류 스토리지 장치는 키-밸류 페어(pair)를 이용하여 데이터를 빠르고 간단하게 처리하는 장치이다. 여기서, "키-밸류 페어"는 유일성을 가지는 키와, 상기 키에 대응하는 데이터인 밸류의 쌍이며, "튜플(tuple)" 또는 "키-밸류 튜플"이라고 지칭할 수 있다. 키-밸류 페어에서, 키는 파일 네임(file name), URI(Uniform Resource Identifier) 또는 해시와 같은 임의의 스트링(string)으로 표시되고, 밸류는 이미지, 사용자 선호 파일 또는 문서와 같은 임의의 종류의 데이터일 수 있다. 이때, 키와 밸류의 사이즈는 가변적이며, 예를 들어, 밸류의 사이즈는 밸류에 포함되는 데이터에 따라 변경될 수 있다.
이하에서는, 스토리지 장치(100)가 키-밸류 스토리지 장치인 실시예를 중심으로 설명하기로 하며, 본 명세서에서, 스토리지 장치(100)는 키-밸류 스토리지 장치 또는 키-밸류 스토어와 실질적으로 동일한 의미로 사용될 수 있다. 그러나, 스토리지 장치(100)는 키-밸류 스토리지 장치에 한정되지 않으며, 데이터를 오브젝트 단위로 관리하는 임의의 오브젝트 캐시 시스템 또는 오브젝트 스토리지 시스템에 적용될 수 있다. 따라서, 스토리지 장치(100)는 키-밸류 페어가 아닌 임의의 방식으로 데이터를 오브젝트 단위로 관리할 수 있다.
호스트(200)는 스냅샷 아이디(snapshot ID)를 포함하는 커맨드(CMD)를, 예를 들어, 커맨드 패킷(packet)으로 스토리지 장치(100)에 전송할 수 있다. 스토리지 장치(100)는 커맨드(CMD)에 응답하여 스냅샷 기능을 지원할 수 있다. 구체적으로, 스토리지 장치(100)는 스냅샷 아이디에 따른 맵핑 데이터를 스냅샷 엔트리(entry)로서 생성할 수 있고, 스냅샷 엔트리는 스냅샷 아이디, 키 및 물리적 어드레스를 포함할 수 있다. 이때, 물리적 어드레스는, 키에 대응하는 밸류를 기입하기 위한 비휘발성 메모리(120)의 물리적 어드레스를 나타낸다. 따라서, 스토리지 장치(100)는 자체적으로 스냅샷 기능을 지원할 수 있는바, 호스트(200)는 스냅샷 엔트리를 트리 형태로 구성하여 내부적으로 유지하지 않아도 되고, 스냅샷 엔트리를 관리하는 오버헤드를 줄일 수 있다.
"스냅샷 기능"은 스토리지 장치(100)에 저장된 데이터, 즉, 밸류의 손실을 방지하기 위하여 특정 순간의 데이터 구조를 보존하는 기능이다. 구체적으로, 스냅샷 또는 스냅샷 복제(replication)는 데이터베이스 또는 파일시스템 등에서 시스템 복원 등을 목적으로 특정 순간의 데이터 구조를 사진을 찍는 것처럼 유지하는 것을 의미한다. 스냅샷 엔트리가 생성되면, 악성코드, 바이러스 또는 사용자의 실수 등으로 데이터가 삭제 또는 변경되더라도 스냅샷 엔트리의 생성 시점을 기준으로 데이터를 복원할 수 있다. 이때, 스냅샷은 실제로 사용자 데이터를 복사하는 방식이 아니고, 맵핑 데이터와 같은 메타 데이터만 복사하는 방식으로 구현될 수 있다. 따라서, 원본 파일의 용량이 크더라도 스냅샷 엔트리의 용량은 매우 작기 때문에 효율적인 백업이 가능하다.
일 실시예에서, 호스트(200)는 키-밸류 페어를 포함하는 커맨드(CMD), 예를 들어, 기입 요청을 스토리지 장치(100)에 전송할 수 있고, 스토리지 장치(100)는 상기 커맨드(CMD)에 응답하여, 비휘발성 메모리(120)에 밸류를 기입할 수 있다. 이때, 호스트(200)는 키-밸류 페어를 고정 사이즈를 갖는 LBA(Logical Block Address) 단위로 변환하지 않고, 가변 사이즈를 갖는 키-밸류 페어를 포함하는 커맨드(CMD)를 생성하고, 생성된 커맨드(CMD)를 스토리지 장치(100)에 전송할 수 있다.
일 실시예에서, 호스트(200)는 키를 포함하는 커맨드(CMD), 예를 들어, 독출 요청을 스토리지 장치(100)에 전송할 수 있고, 스토리지 장치(100)는 상기 커맨드(CMD)에 응답하여, 비휘발성 메모리(120)에 저장된 밸류를 독출할 수 있다. 이때, 호스트(200)는 키를 고정 사이즈를 갖는 LBA 단위로 변환하지 않고, 가변 사이즈를 갖는 키를 포함하는 커맨드(CMD)를 생성하고, 생성된 커맨드(CMD)를 스토리지 장치(100)에 전송할 수 있다.
컨트롤러(110)는 호스트(200)로부터의 독출 요청 또는 독출 커맨드에 응답하여 비휘발성 메모리(120)에 저장된 밸류를 독출하거나, 또는 호스트(200)로부터의 기입 요청 또는 기입 커맨드에 응답하여 비휘발성 메모리(120)에 밸류를 기입하도록 비휘발성 메모리(120)를 제어할 수 있다. 본 실시예에서, 컨트롤러(110)는 스냅샷 엔트리 매니저(Snapshot Entry Manager)(SM) 및 맵핑 테이블(Mapping Table)(MT)을 포함할 수 있다.
스냅샷 엔트리 매니저(SM)는 스냅샷 아이디를 포함하는 커맨드(CMD)에 응답하여, 스냅샷 엔트리를 관리할 수 있다. 이어서, 스냅샷 엔트리 매니저(SM)는 키-밸류 페어 및 스냅샷 아이디를 포함하는 커맨드(CMD)에 응답하여, 스냅샷 아이디에 대응하는 스냅샷 엔트리를 생성할 수 있다. 스냅샷 엔트리는 스냅샷 아이디, 키-밸류 페어에 포함된 키, 및 키-밸류 페어에 포함된 밸류를 기입하기 위한 물리적 어드레스를 포함할 수 있다.
맵핑 테이블(MT)은 복수의 스냅샷 엔트리들을 저장할 수 있다. 구체적으로, 맵핑 테이블(MT)은 키와 물리적 어드레스의 대응 관계를 나타내는 맵핑 데이터를 스냅샷 아이디 별로 저장할 수 있다. 예를 들어, 맵핑 데이터는 키와 물리적 페이지 넘버(Physical Page Number, PPN)의 대응 관계를 나타낼 수 있고, 이에 따라, 맵핑 테이블(MT)는 K2P(Key-to-PPN) 맵핑 테이블이라고 지칭할 수 있다.
비휘발성 메모리(120)는 메모리 셀 어레이(Memory Cell Array)(MCA)를 포함할 수 있고, 메모리 셀 어레이(MCA)는 메모리 블록(BLK)을 포함할 수 있다. 메모리 블록(BLK)은 복수의 페이지들(PG1 내지 PGm)을 포함할 수 있다. 여기서, m은 양의 정수일 수 있고, 실시예에 따라 다양하게 변경될 수 있다. 예를 들어, 메모리 블록(BLK)은 소거의 단위이고, 페이지는 기입 및 독출의 단위일 수 있다. 일부 실시예들에서, 메모리 셀 어레이(MCA)는 복수의 메모리 블록들, 복수의 플레인들(planes), 복수의 다이들(dies), 또는 복수의 칩들(chips)을 포함할 수 있다. 일 실시예에서, 비휘발성 메모리(120)는 플래쉬 메모리 장치를 포함할 수 있고, 예를 들어, 낸드(NAND) 플래쉬 메모리 장치를 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 비휘발성 메모리(120)는 ReRAM(resistive RAM), PRAM(phase change RAM), MRAM(magnetic RAM)과 같은 저항형 메모리 장치를 포함할 수 있다.
스토리지 시스템(10)은 예를 들어, PC(personal computer), 데이터 서버, 네트워크-결합 스토리지(network-attached storage, NAS), IoT(Internet of Things) 장치, 또는 휴대용 전자 기기로 구현될 수 있다. 휴대용 전자 기기는, 랩탑 컴퓨터, 이동 전화기, 스마트폰, 태블릿 PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라, 디지털 비디오 카메라, 오디오 장치, PMP(portable multimedia player), PND(personal navigation device), MP3 플레이어, 휴대용 게임 콘솔(handheld game console), e-북(e-book), 웨어러블 기기 등일 수 있다.
일부 실시예들에서, 스토리지 장치(100)는 전자 장치에 내장되는 내부 메모리일 수 있다. 예를 들어, 스토리지 장치(100)는 SSD, 임베디드 UFS(Universal Flash Storage) 메모리 장치 또는 eMMC(embedded Multi-Media Card)일 수 있다. 일부 실시예들에서, 스토리지 장치(100)는 전자 장치에 착탈 가능한 외장 메모리일 수 있다. 예를 들어, 스토리지 장치(100)는 UFS 메모리 카드, CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme Digital) 또는 메모리 스틱(Memory Stick)일 수 있다.
도 2는 본 개시의 일 실시예에 따른 복수의 키-밸류 페어들을 나타내는 테이블(20)이다. 도 1 및 도 2를 함께 참조하면, 스토리지 장치(100)는 스냅샷 기능을 지원하도록, 각 키에 대하여 복수의 튜플들을 관리할 수 있고, 복수의 튜플들은 복수의 스냅샷 아이디들에 각각 대응할 수 있다. 예를 들어, 제1 키(K1)에 대한 튜플들(TP1)은 제1 스냅샷 아이디(ID0)에 대응하는 제1 튜플(TP1a)과 제2 스냅샷 아이디(ID1)에 대응하는 제2 튜플(TP1b)을 포함할 수 있다. 예를 들어, 제2 키(K2)에 대한 튜플들(TP2)은 제1 스냅샷 아이디(ID0)에 대응하는 제1 튜플(TP2a), 제2 스냅샷 아이디(ID1)에 대응하는 제2 튜플(TP2b)과 제3 스냅샷 아이디(ID2)에 대응하는 제3 튜플(TP2c)을 포함할 수 있다.
예를 들어, 제1 스냅샷 아이디(ID0) 및 제1 키(K1)에 대응하는 밸류는 V1a이고, 제1 스냅샷 아이디(ID0) 및 제2 키(K2)에 대응하는 밸류는 V2a이며, 제1 스냅샷 아이디(ID0) 및 제n 키(Kn)에 대응하는 밸류는 Vn일 수 있다. 예를 들어, 제2 스냅샷 아이디(ID1) 및 제1 키(K1)에 대응하는 밸류는 V1b이고, 제2 스냅샷 아이디(ID1) 및 제2 키(K2)에 대응하는 밸류는 V2b일 수 있다. 예를 들어, 제3 스냅샷 아이디(ID2) 및 제2 키(K2)에 대응하는 밸류는 V2c일 수 있다. 스토리지 장치(100)는 복수의 스냅샷 아이디들(ID0 내지 ID2)에 각각 대응하는 복수의 스냅샷 엔트리들을 저장한 맵핑 테이블(MT)을 이용하여, 특정 스냅샷 아이디에 대응하는 특정 시점에서의 데이터 구조를 보존할 수 있다. 이하에서는 도 3을 참조하여 복수의 스냅샷 엔트리들을 저장한 맵핑 테이블(MT)에 대해 상술하기로 한다.
도 3은 본 개시의 일 실시예에 따른 K2P 맵핑 테이블(31)을 나타낸다. 예를 들어, K2P 맵핑 테이블(31)은 도 2의 복수의 키-밸류 페어들에 대응할 수 있다.
도 1 내지 도 3을 함께 참조하면, K2P 맵핑 테이블(31)은 도 1의 맵핑 테이블(MT)의 일 예에 대응할 수 있고, 복수의 스냅샷 엔트리들(311 내지 316)을 저장할 수 있다. 각 스냅샷 엔트리는 스냅샷 아이디에 대응하는 맵핑 데이터에 대응할 수 있고, 스냅샷 아이디, 키, 및 PPN를 포함할 수 있다. 일 실시예에서, 동일한 키에 대해 스냅샷 아이디들에 따른 복수의 맵핑 데이터가 생성될 수 있고, 복수의 맵핑 데이터는 복수의 스냅샷 엔트리들로 저장될 수 있다.
예를 들어, 제1 키(K1)에 대해서는 제1 및 제2 스냅샷 엔트리들(311, 312)이 생성될 수 있다. 제1 스냅샷 엔트리(311)는 제1 스냅샷 아이디(ID0)에 대응하는 시점에서의 제1 키(K1)에 대한 맵핑 데이터이며, 제1 스냅샷 아이디(ID0), 제1 키(K1) 및 PPN1를 포함할 수 있다. 제2 스냅샷 엔트리(312)는 제2 스냅샷 아이디(ID1)에 대응하는 시점에서의 제1 키(K1)에 대한 맵핑 데이터이며, 제2 스냅샷 아이디(ID1), 제1 키(K1) 및 PPN3을 포함할 수 있다.
비휘발성 메모리(32)는 도 1의 비휘발성 메모리(120)의 일 예에 대응할 수 있고, 복수의 PPN들(PPN1 내지 PPNm)에서 복수의 밸류들을 저장할 수 있다. 예를 들어, 복수의 PPN들(PPN1 내지 PPNm)은 도 1의 페이지들(PG1 내지 PGm)에 각각 대응할 수 있다. 예를 들어, 제1 스냅샷 아이디(ID0)에 대응하는 시점에서 제1 키(K1)에 대응하는 제1 밸류(V1a)는 PPN1에 저장될 수 있고, 제2 스냅샷 아이디(ID1)에 대응하는 시점에서 제1 키(K1)에 대응하는 제2 밸류(V1b)는 PPN3에 저장될 수 있다.
본 개시의 실시예들에 따르면, 스토리지 장치(100)는 K2P 맵핑 테이블(31)에 복수의 스냅샷 엔트리들(311 내지 316)을 저장함으로써, 자체적으로 스냅샷 기능을 지원할 수 있다. 구체적으로, 스토리지 장치(100)는 호스트(200)로부터 독출 요청이 수신되면 K2P 맵핑 테이블(31)을 이용하여 비휘발성 메모리(32)에 저장된 밸류를 독출할 수 있다. 스토리지 장치(100)의 독출 동작에 대해 이하에서 도 4a 및 도 4b를 참조하여 설명하기로 한다.
도 4a 및 도 4b는 본 개시의 일 실시예에 따른 독출 동작들을 나타낸다. 예를 들어, 도 4a 및 도 4b에 예시된 튜플들(TP1, TP2, TP3)은 도 2의 튜플들(TP1, TP2, TP3)에 대응할 수 있다.
도 1, 도 3 및 도 4a를 함께 참조하면, 호스트(200)로부터 스냅샷 아이디를 포함하지 않는 일반 독출 요청이 수신되면, 스토리지 장치(100)는 K2P 맵핑 테이블(31)에 저장된 복수의 스냅샷 엔트리들(311 내지 316) 중 최신 스냅샷 엔트리를 기초로 독출 동작을 수행할 수 있다. 예를 들어, 호스트(200)로부터 제2 키(K2)를 포함하는 독출 커맨드가 수신되면, 스토리지 장치(100)는 K2P 맵핑 테이블(31)로부터, 제2 키(K2)에 대한 제1 내지 제3 스냅샷 엔트리들(313 내지 315) 중 최신 스냅샷 엔트리에 해당하는 제3 스냅샷 엔트리(315)를 검색할 수 있다. 이어서, 스토리지 장치(100)는 제3 스냅샷 엔트리(315)에 포함된 물리적 어드레스, 즉, PP5를 이용하여 비휘발성 메모리(32)로부터 제3 밸류(V2c)를 독출할 수 있다.
도 1, 도 3 및 도 4b를 함께 참조하면, 호스트(200)로부터 스냅샷 아이디를 포함하는 스냅샷 독출 요청이 수신되면, 스토리지 장치(100)는 K2P 맵핑 테이블(31)에 저장된 복수의 스냅샷 엔트리들(311 내지 316) 중 상기 스냅샷 아이디에 대응하는 스냅샷 엔트리를 기초로 독출 동작을 수행할 수 있다. 예를 들어, 호스트(200)로부터 제2 키(K2) 및 제2 스냅샷 아이디(ID1)를 포함하는 독출 커맨드가 수신되면, 스토리지 장치(100)는 K2P 맵핑 테이블(31)로부터, 제2 키(K2)에 대한 제1 내지 제3 스냅샷 엔트리들(313 내지 315) 중 제2 스냅샷 아이디(ID1)에 해당하는 제2 스냅샷 엔트리(314)를 검색할 수 있다. 이어서, 스토리지 장치(100)는 제2 스냅샷 엔트리(314)에 포함된 물리적 어드레스, 즉, PPN4를 이용하여 비휘발성 메모리(32)로부터 제2 밸류(V2b)를 독출할 수 있다.
도 5는 본 개시의 일 실시예에 따라 도 1의 컨트롤러(110)를 나타내는 블록도이다. 도 5를 참조하면, 컨트롤러(110a)는 프로세서(111), 메모리(112), 호스트 인터페이스(113) 및 비휘발성 메모리 인터페이스(114)를 포함할 수 있고, 이들은 버스(115)를 통해 서로 통신할 수 있다. 프로세서(111)은 중앙 처리 장치나 마이크로 프로세서 등을 포함할 수 있으며, 컨트롤러(110)의 전반적인 동작을 제어할 수 있다. 메모리(112)는 프로세서(111)의 제어에 따라 동작하며, 동작 메모리, 버퍼 메모리, 캐시 메모리 등으로 사용될 수 있다. 예를 들어, 메모리(112)는 DRAM, SRAM과 같은 휘발성 메모리 또는 PRAM, 플래시 메모리와 같은 비휘발성 메모리로 구현될 수도 있다.
스냅샷 엔트리 매니저(SM)는 펌웨어 또는 소프트웨어로 구현될 수 있고, 메모리(112)에 로딩될 수 있다. 일 실시예에서, 스냅샷 엔트리 매니저(SM)는 FTL(Flash Translation Layer)에 구현될 수 있고, 메모리(112)에 로딩될 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 스냅샷 엔트리 매니저(SM)는 하드웨어로 구현될 수도 있다. 맵핑 테이블(MT)은 예를 들어, 도 3의 K2P 맵핑 테이블(31)을 저장할 수 있고, 메모리(112)에 로딩될 수 있다.
호스트 인터페이스(113)는 호스트(200)와 컨트롤러(110) 사이의 인터페이스를 제공할 수 있고, 예를 들어, USB(Universal Serial Bus), MMC, 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) 등에 따른 인터페이스를 제공할 수 있다. 비휘발성 메모리 인터페이스(114)는 컨트롤러(110)와 비휘발성 메모리(120) 사이의 인터페이스를 제공할 수 있다. 예를 들어, 맵핑 테이블(MT), 기입 데이터 및 독출 데이터가 비휘발성 메모리 인터페이스(114)를 통해 컨트롤러(110)와 비휘발성 메모리(120) 사이에서 송수신될 수 있다.
도 6은 본 개시의 일 실시예에 따라, 도 5의 맵핑 테이블의 일 예(MTa)를 나타낸다. 도 5 및 도 6을 참조하면, 맵핑 테이블(MTa)은 복수의 스냅샷 엔트리들(61 내지 66)을 포함할 수 있다. 구체적으로, 맵핑 테이블(MTa)은 제1 키(K1)에 대한 스냅샷 엔트리들(61, 62), 제2 키(K2)에 대한 스냅샷 엔트리들(63 내지 65), 및 제3 키(K3)에 대한 스냅샷 엔트리(66)를 포함할 수 있다. 일 실시예에서, 동일 키에 대한 스냅샷 엔트리들은 연결 리스트(linked list)로 구현될 수 있다. 일 실시예에서, 스냅샷 엔트리는 스냅샷 아이디, 키, PPN 및 링크 영역을 포함할 수 있다.
예를 들어, 제1 키(K1)에 대한 스냅샷 엔트리들(61, 62)은 연결 리스트로 구현될 수 있고, 스냅샷 엔트리(61)의 링크 영역은 메모리(112)에서 이전 스냅샷 엔트리(62)의 저장 주소(ADDR1)를 저장할 수 있고, 스냅샷 엔트리(62)의 링크 영역은 더 이상 연결된 노드(node)가 없음을 의미하는 널(NULL)을 저장할 수 있다. 이하에서는 도 7a 및 도 7b를 참조하여 연결 리스트로 구현된 스냅샷 엔트리들에 대해 더욱 자세하게 설명하기로 한다.
도 7a는 본 개시의 일 실시예에 따른 도 6의 제1 키(K1)에 대한 맵핑 데이터(71)를 나타낸다.
도 7a를 참조하면, 제1 키(K1)에 대한 맵핑 데이터(71)는 제1 및 제2 노드들(711, 712)을 포함하는 연결 리스트로 구현될 수 있다. 제1 노드(711)는 최신 스냅샷 엔트리인 스냅샷 엔트리(61)에 대응하고, 연결 리스트의 헤더(header) 부분에 대응할 수 있다. 제1 노드(711)는 데이터 영역(711a) 및 링크 영역(또는 '포인터 영역')(711b)을 포함할 수 있다. 데이터 영역(711a)은 제1 키(K1)에 대한 최신 스냅샷 아이디, 즉, 제2 스냅샷 아이디(ID1)에 대응하는 시점에서 제1 키(K1)에 대응하는 물리적 어드레스(PPN3)을 저장할 수 있다. 링크 영역(711b)은 이전 스냅샷 아이디, 즉, 제1 스냅샷 아이디(ID0)에 대응하는 스냅샷 엔트리(62)가 저장된 주소(ADDR1)를 저장할 수 있다.
제2 노드(712)는 이전 스냅샷 엔트리인 스냅샷 엔트리(62)에 대응하고, 제2 노드(712)는 데이터 영역(712a) 및 링크 영역(712b)을 포함할 수 있다. 데이터 영역(712a)은 제1 스냅샷 아이디(ID0)에 대응하는 시점에서 제1 키(K1)에 대응하는 물리적 어드레스(PPN1)을 저장할 수 있다. 링크 영역(712b)은 제1 스냅샷 아이디(ID0)보다 먼저 생성된 이전 스냅샷 아이디가 존재하지 않으므로, 더 이상 연결된 노드가 없음을 의미하는 널(NULL)을 저장할 수 있다.
도 7b는 본 개시의 일 실시예에 따른 도 6의 제2 키(K2)에 대한 맵핑 데이터(72)를 나타낸다.
도 7b를 참조하면, 제2 키(K2)에 대한 맵핑 데이터(72)는 제1 내지 제3 노드들(721 내지 723)을 포함하는 연결 리스트로 구현될 수 있다. 제1 노드(721)는 최신 스냅샷 엔트리인 스냅샷 엔트리(63)에 대응하고, 연결 리스트의 헤더 부분에 대응할 수 있다. 제1 노드(721)는 데이터 영역(721a) 및 링크 영역(721b)을 포함할 수 있다. 데이터 영역(721a)은 제2 키(K2)에 대한 최신 스냅샷 아이디, 즉, 제3 스냅샷 아이디(ID2)에 대응하는 시점에서 제2 키(K2)에 대응하는 물리적 어드레스(PPN5)을 저장할 수 있다. 링크 영역(721b)은 이전 스냅샷 아이디, 즉, 제2 스냅샷 아이디(ID1)에 대응하는 스냅샷 엔트리(64)가 저장된 주소(ADDR2)를 저장할 수 있다.
제2 노드(722)는 스냅샷 엔트리(64)에 대응하고, 데이터 영역(722a) 및 링크 영역(722b)을 포함할 수 있다. 데이터 영역(722a)은 제2 스냅샷 아이디(ID1)에 대응하는 시점에서 제2 키(K2)에 대응하는 물리적 어드레스(PPN4)를 저장할 수 있다. 링크 영역(722b)은 이전 스냅샷 아이디, 즉, 제1 스냅샷 아이디(ID0)에 대응하는 스냅샷 엔트리(65)가 저장된 주소(ADDR3)를 저장할 수 있다. 제3 노드(723)는 스냅샷 엔트리(65)에 대응하고, 데이터 영역(723a) 및 링크 영역(723b)을 포함할 수 있다. 데이터 영역(723a)은 제1 스냅샷 아이디(ID0)에 대응하는 시점에서 제2 키(K2)에 대응하는 물리적 어드레스(PPN2)를 저장할 수 있다. 링크 영역(723b)은 제1 스냅샷 아이디(ID0)보다 먼저 생성된 이전 스냅샷 아이디가 존재하지 않으므로, 더 이상 연결된 노드가 없음을 의미하는 널(NULL)을 저장할 수 있다.
도 8은 본 개시의 일 실시예에 따라, 도 5의 맵핑 테이블의 다른 예(MTb)를 나타낸다.
도 8을 참조하면, 맵핑 테이블(MTb)은 복수의 스냅샷 엔트리들(81 내지 86)을 포함할 수 있다. 구체적으로, 맵핑 테이블(MTb)은 제1 키(K1)에 대한 스냅샷 엔트리들(81, 82), 제2 키(K2)에 대한 스냅샷 엔트리들(83, 84, 85), 및 제3 키(K3)에 대한 스냅샷 엔트리(86)를 포함할 수 있다. 일 실시예에서, 각 스냅샷 엔트리는 스냅샷 아이디, 키, PPN 및 플래그를 포함할 수 있다. 여기서, 플래그는 해당 스냅샷 엔트리가 최신 스냅샷 엔트리에 해당하는지 여부를 나타낼 수 있다. 해당 스냅샷 엔트리가 최신 스냅샷 엔트리인 경우 플래그는 제1 값(예를 들어, 1)을 가질 수 있고, 해당 스냅샷 엔트리가 최신 스냅샷 엔트리가 아닌 경우 플래그는 제2 값(예를 들어, 0)을 가질 수 있다.
예를 들어, 스냅샷 엔트리(81)는 제1 키(K1)에 대한 최신 스냅샷 엔트리에 해당하므로, 스냅샷 엔트리(81)의 플래그는 제1 값을 가질 수 있다. 반면, 스냅샷 엔트리(82)는 제1 키(K1)에 대한 최신 스냅샷 엔트리에 해당하지 않으므로, 스냅샷 엔트리(82)의 플래그는 제2 값을 가질 수 있다. 호스트로부터 일반 독출 요청이 수신되면, 스토리지 장치는 맵핑 테이블(MTb)에 포함된 플래그를 확인하고, 확인된 플래그를 기초로 최신 스냅샷 엔트리를 검색할 수 있고, 최신 스냅샷 엔트리를 기초로 독출 동작을 수행할 수 있다.
도 9는 본 개시의 일 실시예에 따른 스토리지 시스템(10a)을 나타내는 블록도이다. 도 9를 참조하면, 스토리지 시스템(10a)은 스토리지 장치(100a) 및 호스트(200)를 포함하고, 스토리지 장치(100a)는 컨트롤러(110a), 비휘발성 메모리(120) 및 휘발성 메모리(130)를 포함할 수 있다. 본 실시예에 따른 스토리지 장치(100a)는 도 1의 스토리지 장치(100)의 변형 실시예이며, 중복된 설명은 생략하기로 한다. 컨트롤러(110a)는 스냅샷 엔트리 매니저(SM) 및 제1 맵핑 테이블(MT1)을 포함할 수 있다. 제2 맵핑 테이블(MT2)은 휘발성 메모리(130)에 구현될 수 있고, 휘발성 메모리(130)는 컨트롤러(110a)의 외부에 배치될 수 있다. 일 실시예에서, 스냅샷 엔트리 매니저(SM)는 복수의 스냅샷 엔트리들 중 최신 스냅샷 엔트리들을 제1 맵핑 테이블(MT1)에 저장하고, 나머지 스냅샷 엔트리들을 제2 맵핑 테이블(MT2)에 저장할 수 있다.
도 10은 본 개시의 일 실시예에 따라 도 9의 컨트롤러(110a)를 나타내는 블록도이다. 도 10을 참조하면, 컨트롤러(110a)는 프로세서(111), 메모리(112'), 호스트 인터페이스(113), 비휘발성 메모리 인터페이스(114), 및 휘발성 메모리 인터페이스(116)를 포함할 수 있고, 이들은 버스(115)를 통해 서로 통신할 수 있다. 일 실시예에서, 제1 맵핑 테이블(MT1)은 메모리(112')에 로딩되고, 제2 맵핑 테이블(MT2)은 휘발성 메모리(130)에 로딩될 수 있다. 예를 들어, 메모리(112')는 SRAM이고, 휘발성 메모리(130)는 DRAM일 수 있다. 이하에서는, 도 11을 참조하여 제1 및 제2 맵핑 테이블(MT1, MT2)에 대해 더욱 상세하게 설명하기로 한다.
도 11a는 본 개시의 일 실시예에 따라, 도 10의 제1 맵핑 테이블의 일 예(MT1a)를 나타낸다. 도 9 및 도 11a을 참조하면, 제1 맵핑 테이블(MT1a)은 복수의 키들(K1 내지 K3)에 대한 최신 스냅샷 엔트리들(111a 내지 111c)을 저장할 수 있다. 제1 맵핑 테이블(MT1a)은 컨트롤러(110a) 내에 포함된 메모리(112'), 예를 들어, SRAM에 로딩되므로, 일반 독출 요청에 응답하여 독출 동작을 빠르게 수행할 수 있다. 예를 들어, 호스트(200)로부터 제1 키(K1)를 포함하는 일반 독출 요청이 수신되면, 스토리지 장치(100a)는 제1 맵핑 테이블(MT1a)을 검색하여 제1 키(K1)에 대한 최신 스냅샷 엔트리(111a)를 찾고, 최신 스냅샷 엔트리(111a)에 포함된 물리적 어드레스(PPN3)를 기초로 비휘발성 메모리(120)에 대한 독출 동작을 수행할 수 있다.
도 11b는 본 개시의 일 실시예에 따라, 도 10의 제2 맵핑 테이블의 일 예(MT2a)를 나타낸다. 도 11b을 참조하면, 제2 맵핑 테이블(MT1b)은 복수의 키들(K1, K2)에 대한 스냅샷 엔트리들(111d 내지 111f)을 저장할 수 있다. 예를 들어, 호스트(200)로부터 제1 키(K1) 및 제1 스냅샷 아이디(ID0)를 포함하는 스냅샷 독출 요청이 수신되면, 스토리지 장치(100a)는 제2 맵핑 테이블(MT1b)을 검색하여 제1 키(K1) 및 제1 스냅샷 아이디(ID0)에 대한 스냅샷 엔트리(111d)를 찾고, 스냅샷 엔트리(111d)에 포함된 물리적 어드레스(PPN1)를 기초로 비휘발성 메모리(120)에 대한 독출 동작을 수행할 수 있다.
도 12는 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 도 12를 참조하면, 본 실시예에 따른 스토리지 장치의 동작 방법은 스토리지 장치에서 스냅샷 기능을 지원하도록 스냅샷 엔트리를 생성하는 방법에 대응한다. 예를 들어, 본 실시예에 따른 동작 방법은 도 1의 스토리지 장치(100) 또는 도 9의 스토리지 장치(100a)에서 시계열적으로 수행될 수 있다. 도 1 내지 도 11b를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다.
단계 S110에서, 호스트로부터 제1 키, 제1 밸류 및 제1 스냅샷 아이디를 포함하는 제1 커맨드를 수신한다. 단계 S130에서, 수신한 제1 커맨드에 응답하여 제1 스냅샷 엔트리를 생성한다. 일 실시예에서, 제1 스냅샷 엔트리는 제1 스냅샷 아이디, 제1 키, 및 제1 물리적 어드레스를 포함할 수 있고, 제1 물리적 어드레스는 비휘발성 메모리(120)에서 제1 밸류가 기입되는 PPN에 대응할 수 있다. 예를 들어, 스냅샷 엔트리 매니저(SM)는 제1 스냅샷 엔트리를 생성하고, 생성된 제1 스냅샷 엔트리를 맵핑 테이블(MT)에 저장할 수 있다.
단계 S150에서, 호스트로부터 제1 키, 제2 밸류 및 제2 스냅샷 아이디를 포함하는 제2 커맨드를 수신한다. 호스트는 단계 S150 이전에 제2 스냅샷 아이디를 생성할 수 있다. 단계 S170에서, 수신한 제2 커맨드에 응답하여 제2 스냅샷 엔트리를 생성한다. 일 실시예에서, 제2 스냅샷 엔트리는 제2 스냅샷 아이디, 제1 키, 및 제2 물리적 어드레스를 포함할 수 있고, 제2 물리적 어드레스는 비휘발성 메모리(120)에서 제2 밸류가 기입되는 PPN에 대응할 수 있다. 예를 들어, 스냅샷 엔트리 매니저(SM)는 제2 스냅샷 엔트리를 생성하고, 생성된 제2 스냅샷 엔트리를 맵핑 테이블(MT)에 저장할 수 있다.
도 13은 본 개시의 일 실시예에 따른 호스트(200)와 스토리지 장치(100) 사이의 동작을 나타내는 흐름도이다. 본 실시예에 따른 호스트(200)와 스토리지 장치(100) 사이의 동작은 도 12의 일 구현예에 대응할 수 있다.
도 13을 참조하면, 단계 S210에서, 호스트(200)는 제1 키(K1) 및 제1 밸류(V1a)를 포함하는 제1 튜플(131) 및 제1 스냅샷 아이디(ID0)을 포함하는 제1 커맨드(예를 들어, 풋(put) 커맨드)를 스토리지 장치(100)에 전송한다. 이때, 제1 튜플(131)에 제1 스냅샷 아이디(ID0)가 할당될 수 있다. 단계 S220에서, 스토리지 장치(100)는 제1 튜플(131)에 대한 기입 동작을 수행할 수 있다. 예를 들어, 제1 키(K1)는 '123'이고, 제1 밸류(V1a)는 'ABC'일 수 있다. 단계 S230에서, 스토리지 장치(100)는 제1 튜플(131)의 기입 동작이 완료되었음을 나타내는 응답 메시지를 호스트(200)에 전송한다. 일부 실시예에서, 단계 S210과 단계 S220 사이에, 호스트(200)는 제2 키를 포함하는 제2 튜플 및 제1 스냅샷 아이디를 포함하는 커맨드를 스토리지 장치(100)에 전송할 수 있다. 이때, 스토리지 장치(100)는 제1 및 제2 튜플들에 대한 기입 동작들을 순차적으로 수행할 수 있고, 이어서, 제1 및 제2 튜플들의 기입 동작이 완료되었음을 각각 나타내는 응답 메시지들을 순차적으로 호스트(200)에 전송할 수 있다.
단계 S240에서, 호스트(200)는 제2 스냅샷 아이디(ID1)를 생성한다. 단계 S250에서, 호스트(200)는 제1 키(K1) 및 제2 밸류(V1b)를 포함하는 제2 튜플(132) 및 제2 스냅샷 아이디(ID1)를 포함하는 제2 커맨드(예를 들어, 풋 커맨드)를 스토리지 장치(100)에 전송한다. 이때, 제2 튜플(132)에 제2 스냅샷 아이디(ID1)가 할당될 수 있다. 단계 S260에서, 스토리지 장치(100)는 제2 튜플(132)에 대한 기입 동작을 수행할 수 있다. 예를 들어, 제2 밸류(V1b)는 'GHI'일 수 있다. 단계 S270에서, 스토리지 장치(100)는 제2 튜플(132)의 기입 동작이 완료되었음을 나타내는 응답 메시지를 호스트(200)에 전송한다.
도 14는 본 개시의 일 실시예에 따른 호스트(200), 컨트롤러(110)와 비휘발성 메모리(120) 사이의 동작을 나타내는 흐름도이다. 본 실시예에 따른 호스트(200), 컨트롤러(110)와 비휘발성 메모리(120) 사이의 동작은 도 13의 일 구현예에 대응할 수 있다. 이하에서는 도 1 및 도 14를 함께 참조하여 본 실시예에 따른 동작을 설명하기로 한다.
단계 S300에서, 호스트(200)는 제1 키(K1), 제1 밸류(V1a) 및 제1 스냅샷 아이디(ID0)를 포함하는 제1 커맨드(예를 들어, 풋 커맨드)를 컨트롤러(110)에 전송한다. 단계 S310에서, 컨트롤러(110)는 맵핑 테이블(141)을 업데이트한다. 구체적으로, 컨트롤러(110)는 제1 스냅샷 아이디(ID0), 제1 키(K1)(예를 들어, '123'), 및 제1 물리적 어드레스(예를 들어, PPN1)를 포함하는 제1 스냅샷 엔트리를 생성하고, 생성된 제1 스냅샷 엔트리를 맵핑 테이블(141)에 저장한다.
단계 S315에서, 컨트롤러(110)는 제1 밸류(V1a) 및 제1 물리적 어드레스(PPN1)를 포함하는 기입 커맨드를 비휘발성 메모리(120)에 전송한다. 단계 S320에서, 비휘발성 메모리(120)는 제1 밸류(V1a)(예를 들어, 'ABC')를 제1 물리적 어드레스(PPN1)에 기입한다. 단계 S330에서, 비휘발성 메모리(120)는 제1 밸류(V1a)의 기입 동작이 완료되었음을 나타내는 응답 메시지를 컨트롤러(110)에 전송한다. 단계 S340에서, 컨트롤러(110)는 제1 키(K1)와 제1 밸류(V1a)에 대한 기입이 완료되었음을 나타내는 응답 메시지를 호스트(200)에 전송한다.
단계 S350에서, 호스트(200)는 제2 스냅샷 아이디(ID1)를 생성한다. 단계 S360에서, 호스트(200)는 제1 키(K1), 제2 밸류(V1b) 및 제2 스냅샷 아이디(ID1)를 포함하는 커맨드(예를 들어, 풋 커맨드)를 컨트롤러(110)에 전송한다. 단계 S370에서, 컨트롤러(110)는 맵핑 테이블(141)을 업데이트한다. 구체적으로, 컨트롤러(110)는 제2 스냅샷 아이디(ID1), 제1 키(K1), 및 제2 물리적 어드레스(예를 들어, PPN3)를 포함하는 제2 스냅샷 엔트리를 생성하고, 생성된 제2 스냅샷 엔트리를 맵핑 테이블(141)에 저장한다.
단계 S375에서, 컨트롤러(110)는 제2 밸류(V1b) 및 제2 물리적 어드레스(PPN3)를 포함하는 기입 커맨드를 비휘발성 메모리(120)에 전송한다. 단계 S380에서, 비휘발성 메모리(120)는 제2 밸류(V1b)(예를 들어, 'GHI')를 제2 물리적 어드레스(PPN3)에 기입한다. 단계 S390에서, 비휘발성 메모리(120)는 제2 밸류(V1b)의 기입 동작이 완료되었음을 나타내는 응답 메시지를 컨트롤러(110)에 전송한다. 단계 S395에서, 컨트롤러(110)는 제1 키(K1)와 제2 밸류(V1b)에 대한 기입 동작이 완료되었음을 나타내는 응답 메시지를 호스트(200)에 전송한다.
도 15는 본 개시의 일 실시예에 따른 호스트(200)와 스토리지 장치(100) 사이의 동작을 나타내는 흐름도이다. 본 실시예에 따른 호스트(200)와 스토리지 장치(100) 사이의 동작은 도 14의 단계 S395 이후에 수행될 수 있다. 일 실시예에서, 스토리지 장치(100)는 스냅샷 엔트리의 업데이트가 가능한 리드/라이트(read/write) 스냅샷 기능을 지원할 수 있다.
도 15를 참조하면, 단계 S410에서, 호스트(200)는 제1 키(K1), 제3 밸류(V1c) 및 제2 스냅샷 아이디(ID1)를 포함하는 커맨드(예를 들어, 업데이트 커맨드)를 스토리지 장치(100)에 전송한다. 단계 S420에서, 컨트롤러(110)는 맵핑 테이블(151)을 업데이트한다. 구체적으로, 스냅샷 엔트리 매니저(SM)는 도 14의 맵핑 테이블(141)에 포함된 제2 스냅샷 엔트리를 업데이트된 제2 스냅샷 엔트리로 수정함으로써, 도 14의 맵핑 테이블(141)을 맵핑 테이블(151)로 업데이트한다. 업데이트된 제2 스냅샷 엔트리는 제2 스냅샷 아이디(ID1), 제1 키(K1), 및 제3 물리적 어드레스(예를 들어, PPN7)를 포함한다.
단계 S430에서, 컨트롤러(110)는 제3 밸류(V1c) 및 제3 물리적 어드레스(PPN7)를 포함하는 기입 커맨드를 비휘발성 메모리(120)에 전송한다. 단계 S440에서, 비휘발성 메모리(120)는 제3 밸류(V1c)(예를 들어, 'JKL')를 제3 물리적 어드레스(PPN7)에 기입한다. 단계 S450에서, 비휘발성 메모리(120)는 제3 밸류(V1c)의 기입 동작이 완료되었음을 나타내는 응답 메시지를 컨트롤러(110)에 전송한다. 단계 S460에서, 컨트롤러(110)는 제1 키(K1)와 제3 밸류(V1c)에 대한 기입 동작이 완료되었음을 나타내는 응답 메시지를 호스트(200)에 전송한다.
도 16은 본 개시의 일 실시예에 따른 호스트(200)와 스토리지 장치(100) 사이의 동작을 나타내는 흐름도이다. 본 실시예에 따른 호스트(200)와 스토리지 장치(100) 사이의 동작은 도 14의 단계 S395 이후에 수행될 수 있다. 일 실시예에서, 스토리지 장치(100)는 스냅샷 엔트리의 업데이트가 불가능한 리드 온리(read-only) 스냅샷 기능을 지원할 수 있다.
도 16을 참조하면, 단계 S510에서, 호스트(200)는 제3 스냅샷 아이디(ID2)를 생성한다. 단계 S520에서, 호스트(200)는 제1 키(K1), 제3 밸류(V1c) 및 제3 스냅샷 아이디(ID2)를 포함하는 커맨드(예를 들어, 풋 커맨드)를 컨트롤러(110)에 전송한다. 단계 S530에서, 컨트롤러(110)는 맵핑 테이블(161)을 업데이트한다. 구체적으로, 스냅샷 엔트리 매니저(SM)는 제3 스냅샷 아이디(ID2), 제1 키(K1), 및 제3 물리적 어드레스(예를 들어, PPN7)를 포함하는 제3 스냅샷 엔트리를 생성하고, 생성된 제3 스냅샷 엔트리를 맵핑 테이블(161)에 저장한다.
단계 S540에서, 컨트롤러(110)는 제3 밸류(V1c) 및 제3 물리적 어드레스(PPN7)를 포함하는 기입 커맨드를 비휘발성 메모리(120)에 전송한다. 단계 S550에서, 비휘발성 메모리(120)는 제3 밸류(V1c)(예를 들어, 'JKL')를 제3 물리적 어드레스(PPN7)에 기입한다. 단계 S560에서, 비휘발성 메모리(120)는 제3 밸류(V1c)의 기입 동작이 완료되었음을 나타내는 응답 메시지를 컨트롤러(110)에 전송한다. 단계 S570에서, 컨트롤러(110)는 제1 키(K1)와 제3 밸류(V1c)에 대한 기입 동작이 완료되었음을 나타내는 응답 메시지를 호스트(200)에 전송한다.
도 17은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 도 17을 참조하면, 본 실시예에 따른 스토리지 장치의 동작 방법은 스냅샷 기능을 지원하는 스토리지 장치의 밸류 독출 방법에 대응한다. 예를 들어, 본 실시예에 따른 동작 방법은 도 1의 스토리지 장치(100) 또는 도 9의 스토리지 장치(100a)에서 시계열적으로 수행될 수 있다. 도 1 내지 도 11b를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다.
단계 S610에서, 제1 키에 대한 복수의 스냅샷 엔트리들을 맵핑 테이블에 저장한다. 단계 S620에서, 호스트로부터 제1 키를 포함하는 독출 커맨드를 수신한다. 단계 S630에서, 독출 커맨드가 스냅샷 아이디를 포함하는지 판단한다. 판단 결과, 독출 커맨드가 스냅샷 아이디를 포함하는 경우 단계 S640을 수행한다. 한편, 독출 커맨드가 스냅샷 아이디를 포함하지 않는 경우 단계 S650을 수행한다. 단계 S640에서, 스냅샷 아이디에 대응하는 스냅샷 엔트리를 기초로 독출 동작을 수행하며, 단계 S640은 "스냅샷 독출 동작"로 지칭할 수 있다. 단계 S650에서, 최신 스냅샷 엔트리를 기초로 독출 동작을 수행하며, 단계 S650은 "일반 독출 동작"로 지칭할 수 있다.
도 18은 본 개시의 일 실시예에 따른 호스트(200)와 스토리지 장치(100) 사이의 동작을 나타내는 흐름도이다. 본 실시예에 따른 호스트(200)와 스토리지 장치(100) 사이의 동작은 도 17의 일 구현예에 대응할 수 있다.
도 18을 참조하면, 단계 S710에서, 호스트(200)는 제1 키(K1)를 포함하는 제1 커맨드(예를 들어, 겟(get) 커맨드)를 스토리지 장치(100)에 전송한다. 제1 커맨드는 스냅샷 아이디를 포함하지 않으므로, 일반 독출 요청에 대응할 수 있다. 단계 S720에서, 스토리지 장치(100)는 제1 키(K1)에 대응하는 밸류에 대한 독출 동작을 수행할 수 있다. 구체적으로, 스토리지 장치(100)는 제1 키(K1)에 대한 제1 및 제2 튜플들(181, 182) 중 최신 스냅샷 아이디에 대응하는 제2 튜플(182)에 포함된 제2 밸류(V1b)(예를 들어, GHI)를 독출한다. 단계 S730에서, 스토리지 장치(100)는 제2 밸류(V1b)를 포함하는 응답 메시지를 호스트(200)에 전송한다.
단계 S740에서, 호스트(200)는 제1 키(K1) 및 제1 스냅샷 아이디(ID0)를 포함하는 제2 커맨드(예를 들어, 겟 커맨드)를 스토리지 장치(100)에 전송한다. 제2 커맨드는 스냅샷 아이디를 포함하므로, 스냅샷 독출 요청에 대응할 수 있다. 단계 S750에서, 스토리지 장치(100)는 제1 키(K1)에 대응하는 밸류에 대한 독출 동작을 수행할 수 있다. 구체적으로, 스토리지 장치(100)는 제1 키(K1)에 대한 제1 및 제2 튜플들(181, 182) 중 제1 스냅샷 아이디(ID0)에 대응하는 제1 튜플(181)에 포함된 제1 밸류(V1a)(예를 들어, ABC)를 독출한다. 단계 S760에서, 스토리지 장치(100)는 제1 밸류(V1a)를 포함하는 응답 메시지를 호스트(200)에 전송한다.
도 19는 본 개시의 일 실시예에 따른 호스트(200), 컨트롤러(110)와 비휘발성 메모리(120) 사이의 동작을 나타내는 흐름도이다. 본 실시예에 따른 호스트(200), 컨트롤러(110)와 비휘발성 메모리(120) 사이의 동작은 도 18의 일 구현예에 대응할 수 있다. 이하에서는 도 1 및 도 19를 함께 참조하여 본 실시예에 따른 동작을 설명하기로 한다.
단계 S800에서, 호스트(200)는 제1 키(K1)를 포함하는 제1 독출 커맨드(예를 들어, 겟 커맨드)를 컨트롤러(110)에 전송한다. 단계 S810에서, 컨트롤러(110)는 맵핑 테이블(191)를 검색한다. 구체적으로, 컨트롤러(110)는 제1 키(K1)에 대응하는 복수의 스냅샷 엔트리들 중 최신 스냅샷 아이디인 제2 스냅샷 아이디(ID1)에 대응하는 제2 스냅샷 엔트리를 찾을 수 있다. 컨트롤러(110)는 제2 스냅샷 엔트리를 기초로 독출 동작을 수행할 물리적 어드레스를 PPN3으로 판단할 수 있다.
단계 S820에서, 컨트롤러(110)는 PPN3을 포함하는 독출 커맨드를 비휘발성 메모리(120)에 전송한다. 단계 S830에서, 비휘발성 메모리(120)는 PPN3에 저장된 제2 밸류(V1b)(예를 들어, 'DEF')를 독출한다. 단계 S840에서, 비휘발성 메모리(120)는 제2 밸류(V1b)를 포함하는 응답 메시지를 컨트롤러(110)에 전송한다. 단계 S845에서, 컨트롤러(110)는 제2 밸류(V1b)를 포함하는 응답 메시지를 호스트(220)에 전송한다.
단계 S850에서, 호스트(200)는 제1 키(K1) 및 제1 스냅샷 아이디(ID0)를 포함하는 제2 독출 커맨드(예를 들어, 겟 커맨드)를 컨트롤러(110)에 전송한다. 단계 S860에서, 컨트롤러(110)는 맵핑 테이블(191)를 검색한다. 구체적으로, 컨트롤러(110)는 제1 키(K1)에 대응하는 복수의 스냅샷 엔트리들 중 제1 스냅샷 아이디(ID0)에 대응하는 제1 스냅샷 엔트리를 찾을 수 있다. 컨트롤러(110)는 제1 스냅샷 엔트리를 기초로 독출 동작을 수행할 물리적 어드레스를 PPN1으로 판단할 수 있다.
단계 S870에서, 컨트롤러(110)는 PPN1을 포함하는 독출 커맨드를 비휘발성 메모리(120)에 전송한다. 단계 S880에서, 비휘발성 메모리(120)는 PPN1에 저장된 제1 밸류(V1a)(예를 들어, 'ABC')를 독출한다. 단계 S890에서, 비휘발성 메모리(120)는 제1 밸류(V1a)를 포함하는 응답 메시지를 컨트롤러(110)에 전송한다. 단계 S895에서, 컨트롤러(110)는 제1 밸류(V1a)를 포함하는 응답 메시지를 호스트(220)에 전송한다.
도 20은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 도 20을 참조하면, 본 실시예에 따른 스토리지 장치의 동작 방법은 스냅샷 기능을 지원하는 스토리지 장치의 스냅샷 엔트리 소거 방법에 대응한다. 예를 들어, 본 실시예에 따른 동작 방법은 도 1의 스토리지 장치(100) 또는 도 9의 스토리지 장치(100a)에서 시계열적으로 수행될 수 있다. 도 1 내지 도 11b를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다.
단계 S910에서, 복수의 스냅샷 엔트리들을 맵핑 테이블에 저장한다. 단계 S920에서, 호스트로부터 스냅샷 아이디를 포함하는 소거 커맨드를 수신한다. 단계 S930에서, 소거 커맨드가 제1 키를 포함하는지 확인한다. 이때, 제1 키는 맵핑 테이블에 저장된 복수의 스냅샷 엔트리들 중 적어도 하나에 포함된 임의의 키에 대응할 수 있다. 판단 결과, 소거 커맨드가 제1 키를 포함하는 경우 단계 S940을 수행한다. 한편, 소거 커맨드가 제1 키를 포함하지 않는 경우 단계 S950을 수행한다. 단계 S940에서, 상기 스냅샷 아이디 및 제1 키에 대응하는 스냅샷 엔트리를 삭제한다. 단계 S950에서, 상기 스냅샷 아이디에 대응하는 적어도 하나의 스냅샷 엔트리를 삭제한다.
도 21은 본 개시의 일 실시예에 따른 호스트(200)와 스토리지 장치(100) 사이의 동작을 나타내는 흐름도이다. 본 실시예에 따른 호스트(200)와 스토리지 장치(100) 사이의 동작은 도 20의 일 구현예에 대응할 수 있다.
도 21을 참조하면, 단계 S1010에서, 호스트(200)는 제1 키(K1)와 제1 스냅샷 아이디(ID0)를 포함하는 소거 커맨드를 스토리지 장치(100)에 전송한다. 단계 S1020에서, 스토리지 장치(100)는 맵핑 테이블에 저장된 복수의 스냅샷 엔트리들 중 제1 키(K1)와 제1 스냅샷 아이디(ID0)에 대응하는 스냅샷 엔트리를 삭제한다. 구체적으로, 스토리지 장치(100)는 제1 키(K1)에 대응하는 제1 및 제2 튜플들(211, 212) 중 제1 스냅샷 아이디(ID0)에 대응하는 제1 튜플(211)을 삭제할 수 있다. 단계 S1030에서, 스토리지 장치(100)는 스냅샷 엔트리의 삭제가 완료되었음을 나타내는 응답 메시지를 호스트(200)에 전송한다.
단계 S1040에서, 호스트(200)는 제1 키(K1)를 포함하는 제1 독출 커맨드(예를 들어, 겟 커맨드)를 스토리지 장치(100)에 전송한다. 단계 S1040에서, 스토리지 장치(100)는 제1 키(K1)에 대응하는 밸류에 대한 독출 동작을 수행할 수 있다. 구체적으로, 스토리지 장치(100)는 제1 키(K1)에 대한 제2 튜플(212)에 포함된 제2 밸류(V1b)(예를 들어, GHI)를 독출한다. 단계 S1060에서, 스토리지 장치(100)는 제2 밸류(V1b)를 포함하는 응답 메시지를 호스트(200)에 전송한다.
단계 S1070에서, 호스트(200)는 제1 키(K1) 및 제1 스냅샷 아이디(ID0)를 포함하는 제2 독출 커맨드(예를 들어, 겟 커맨드)를 스토리지 장치(100)에 전송한다. 단계 S1080에서, 스토리지 장치(100)는 제1 키(K1) 및 제1 스냅샷 아이디(ID0)에 대응하는 밸류에 대한 독출 동작을 수행한다. 그러나, 단계 S1020에서, 제1 키(K1) 및 제1 스냅샷 아이디(ID0)에 대한 제1 튜플(211)이 삭제되었으므로, 스토리지 장치(100)는 독출 동작을 실패하게 된다. 단계 S1090에서, 스토리지 장치(100)는 독출 실패를 나타내는 응답 메시지를 호스트(200)에 전송한다.
도 22는 본 개시의 일 실시예에 따른 호스트(200), 컨트롤러(110)와 비휘발성 메모리(120) 사이의 동작을 나타내는 흐름도이다. 본 실시예에 따른 호스트(200), 컨트롤러(110)와 비휘발성 메모리(120) 사이의 동작은 도 21의 일 구현예에 대응할 수 있다. 이하에서는 도 1 및 도 22를 함께 참조하여 본 실시예에 따른 동작을 설명하기로 한다.
단계 S1100에서, 호스트(200)는 컨트롤러(110)에 제1 키(K1) 및 제1 스냅샷 아이디(ID0)를 포함하는 소거 커맨드를 전송한다. 단계 S1110에서, 컨트롤러(110)는 맵핑 테이블(221)에서 제1 키(K1) 및 제1 스냅샷 아이디(ID0)에 대응하는 스냅샷 엔트리를 소거한다. 단계 S1120에서, 컨트롤러(110)는 스냅샷 엔트리의 소거가 완료되었음을 나타내는 응답 메시지를 호스트(200)에 전송한다.
단계 S1130에서, 호스트(200)는 컨트롤러(110)에 제1 키(K1)를 포함하는 제1 독출 커맨드(예를 들어, 겟 커맨드)를 전송한다. 단계 S1140에서, 컨트롤러(110)는 맵핑 테이블(221)를 검색한다. 구체적으로, 컨트롤러(110)는 제1 키(K1)에 대응하는 스냅샷 엔트리를 찾을 수 있고, 스냅샷 엔트리를 기초로 독출 동작을 수행할 물리적 어드레스를 PPN3으로 판단할 수 있다.
단계 S1150에서, 컨트롤러(110)는 PPN3을 포함하는 독출 커맨드를 비휘발성 메모리(120)에 전송한다. 단계 S1160에서, 비휘발성 메모리(120)는 PPN3에 저장된 제2 밸류(V1b)(예를 들어, 'GHI')를 독출한다. 단계 S1170에서, 비휘발성 메모리(120)는 제2 밸류(V1b)를 포함하는 응답 메시지를 컨트롤러(110)에 전송한다. 단계 S1175에서, 컨트롤러(110)는 제2 밸류(V1b)를 포함하는 응답 메시지를 호스트(220)에 전송한다.
단계 S1180에서, 호스트(200)는 제1 키(K1) 및 제1 스냅샷 아이디(ID0)를 포함하는 제2 독출 커맨드(예를 들어, 겟 커맨드)를 컨트롤러(110)에 전송한다. 단계 S1190에서, 컨트롤러(110)는 맵핑 테이블(221)를 검색한다. 그러나, 단계 S1110에서 제1 키(K1) 및 제1 스냅샷 아이디(ID0)에 대응하는 스냅샷 엔트리는 삭제되었으므로, 컨트롤러(110)는 해당 스냅샷 엔트리를 찾을 수 없다. 단계 S1195에서, 컨트롤러(110)는 독출 실패를 나타내는 응답 메시지를 호스트(200)에 전송한다.
도 23는 본 개시의 일 실시예에 따른 스냅샷 엔트리 삭제 동작을 나타낸다. 예를 들어, 본 실시예에 따른 스냅샷 엔트리 삭제 동작은 도 22의 단계 S1110의 변형 예에 대응할 수 있다. 이하에서는 도 22 및 도 23을 함께 참조하여 설명하기로 한다.
K2P 맵핑 테이블(231)은 복수의 스냅샷 엔트리들을 포함하고, 동일 키에 대응하는 스냅샷 엔트리들은 연결 리스트로 구현될 수 있다. 예를 들어, 제2 키(K2)에 대응하는 제1 내지 제3 스냅샷 엔트리들(231a 내지 231c)은 연결 리스트로 구현될 수 있고, 제3 스냅샷 엔트리(231c)의 링크 영역에는 제2 스냅샷 엔트리(231b)의 저장 주소(ADDR2)가 저장되고, 제2 스냅샷 엔트리(231b)의 링크 영역에는 제1 스냅샷 엔트리(231a)의 저장 주소(ADDR3)가 저장될 수 있다.
스토리지 장치(100)는 제2 키(K2) 및 제2 스냅샷 아이디(ID1)를 포함하는 소거 커맨드에 응답하여, K2P 맵핑 테이블(231)에서 제2 키(K2) 및 제2 스냅샷 아이디(ID1)에 대응하는 제2 스냅샷 엔트리(231b)를 삭제함으로써, K2P 맵핑 테이블(231)을 업데이트된 K2P 맵핑 테이블(232)로 수정할 수 있다. 구체적으로, 스토리지 장치(100)는 제3 스냅샷 엔트리(231c)의 링크 영역에 저장되었던 저장 주소(ADDR2)를 제1 스냅샷 엔트리(231a)의 저장 주소(ADDR3)로 수정할 수 있고, 이에 따라, 제3 스냅샷 엔트리(231c)는 제1 스냅샷 엔트리(231a)와 연결될 수 있다. 이와 같이, 제2 스냅샷 엔트리(231b)가 삭제됨에 따라, 비휘발성 메모리(233)에서 물리적 어드레스(PPN4)에 저장된 밸류(예를 들어, 'JKL')는 무효 데이터가 될 수 있다.
도 24는 본 개시의 일 실시예에 따른 호스트(200)와 스토리지 장치(100) 사이의 동작을 나타내는 흐름도이다. 본 실시예에 따른 호스트(200)와 스토리지 장치(100) 사이의 동작은 도 20의 일 구현예에 대응할 수 있다.
도 24를 참조하면, 단계 S1210에서, 호스트(200)는 제1 스냅샷 아이디(ID0)를 포함하는 소거 커맨드를 스토리지 장치(100)에 전송한다. 단계 S1220에서, 스토리지 장치(100)는 맵핑 테이블에 저장된 복수의 스냅샷 엔트리들 중 제1 스냅샷 아이디(ID0)에 대응하는 적어도 하나의 스냅샷 엔트리를 삭제한다. 구체적으로, 스토리지 장치(100)는 제1 키(K1)에 대응하는 튜플(241)과 제2 키(K2)에 대응하는 튜플(242)을 삭제할 수 있다. 단계 S1230에서, 스토리지 장치(100)는 스냅샷 엔트리의 삭제가 완료되었음을 나타내는 응답 메시지를 호스트(200)에 전송한다.
단계 S1240에서, 호스트(200)는 제1 키(K1)를 포함하는 제1 독출 커맨드(예를 들어, 겟 커맨드)를 스토리지 장치(100)에 전송한다. 단계 S1250에서, 스토리지 장치(100)는 제1 키(K1)에 대응하는 밸류에 대한 독출 동작을 수행할 수 있다. 구체적으로, 스토리지 장치(100)는 제1 키(K1)에 대한 제2 튜플(242)에 포함된 제2 밸류(V1b)(예를 들어, GHI)를 독출한다. 단계 S1260에서, 스토리지 장치(100)는 제2 밸류(V1b)를 포함하는 응답 메시지를 호스트(200)에 전송한다.
단계 S1270에서, 호스트(200)는 제1 키(K1) 및 제1 스냅샷 아이디(ID0)를 포함하는 제2 독출 커맨드(예를 들어, 겟 커맨드)를 스토리지 장치(100)에 전송한다. 단계 S1280에서, 스토리지 장치(100)는 제1 키(K1) 및 제1 스냅샷 아이디(ID0)에 대응하는 밸류에 대한 독출 동작을 수행한다. 그러나, 단계 S1220에서, 제1 키(K1) 및 제1 스냅샷 아이디(ID0)에 대한 튜플(241)이 삭제되었으므로, 스토리지 장치(100)는 독출 동작을 실패하게 된다. 단계 S1290에서, 스토리지 장치(100)는 독출 실패를 나타내는 응답 메시지를 호스트(200)에 전송한다.
도 25는 본 개시의 일 실시예에 따른 호스트(200)와 스토리지 장치(100) 사이의 동작을 나타내는 흐름도이다.
도 25를 참조하면, 단계 S1310에서, 호스트(200)는 제1 키(K1) 및 제1 밸류(V1a)를 포함하는 제1 커맨드(예를 들어, 풋 커맨드)를 스토리지 장치(100)에 전송한다. 단계 S1320에서, 스토리지 장치(100)는 제1 키(K1) 및 제1 밸류(V1a)에 대한 기입 동작을 수행한다. 단계 S1325에서, 스토리지 장치(100)는 제1 밸류(V1a)의 기입이 완료되었음을 나타내는 응답 메시지를 호스트(200)에 전송한다.
단계 S1330에서, 스토리지 장치(100)는 제1 스냅샷 아이디(ID0)를 생성한다. 일 실시예에서, 스토리지 장치(100)는 자체적으로 스냅샷 아이디를 생성할 수 있다. 일 실시예에서, 스토리지 장치(100)은 미리 결정된 주기에 따라 스냅샷 아이디를 생성할 수 있다. 또한, 스토리지 장치(100)는 제1 스냅샷 아이디(ID0)에 대응하는 제1 스냅샷 엔트리(251a)를 생성하고, 생성된 제1 스냅샷 엔트리(251a)를 맵핑 테이블(251)에 저장한다. 이때, 제1 스냅샷 엔트리(251a)는 제1 스냅샷 아이디(ID0)의 생성 시점에 미리 저장된 제1 키(K1) 및 제1 밸류(V1a)와 관련된 맵핑 데이터에 대응할 수 있고, 제1 스냅샷 아이디(ID0), 제1 키(K1) 및 제1 물리적 어드레스(PPN1)를 포함할 수 있다. 단계 S1335에서, 스토리지 장치(100)는 제1 스냅샷 아이디(ID0)의 생성이 완료되었음을 나타내는 응답 메시지를 호스트(200)에 전송한다.
단계 S1340에서, 호스트(200)는 제1 키(K1) 및 제2 밸류(V1b)를 포함하는 제2 커맨드(예를 들어, 풋 커맨드)를 스토리지 장치(100)에 전송한다. 단계 S1350에서, 스토리지 장치(100)는 제1 키(K1) 및 제2 밸류(V1b)에 대한 기입 동작을 수행한다. 단계 S1355에서, 스토리지 장치(100)는 제2 밸류(V1b)의 기입이 완료되었음을 나타내는 응답 메시지를 호스트(200)에 전송한다.
단계 S1360에서, 스토리지 장치(100)는 제2 스냅샷 아이디(ID1)를 생성한다. 또한, 스토리지 장치(100)는 제2 스냅샷 아이디(ID1)에 대응하는 제2 스냅샷 엔트리(251b)를 생성하고, 생성된 제2 스냅샷 엔트리(251b)를 맵핑 테이블(251)에 저장한다. 이때, 제2 스냅샷 엔트리(251b)는 제2 스냅샷 아이디(ID1)의 생성 시점에 미리 저장된 제1 키(K1) 및 제2 밸류(V1b)와 관련된 맵핑 데이터에 대응할 수 있고, 제2 스냅샷 아이디(ID1), 제1 키(K1) 및 제2 물리적 어드레스(PPN3)를 포함할 수 있다. 단계 S1365에서, 스토리지 장치(100)는 제2 스냅샷 아이디(ID1)의 생성이 완료되었음을 나타내는 응답 메시지를 호스트(200)에 전송한다.
단계 S1370에서, 호스트(200)는 제1 키(K1) 및 제1 스냅샷 아이디(ID0)를 포함하는 독출 커맨드(예를 들어, 겟 커맨드)를 스토리지 장치(100)에 전송한다. 단계 S1380에서, 스토리지 장치(100)는 독출 커맨드에 응답하여 제1 스냅샷 아이디(ID0)의 생성 시점에서 제1 키(K1)에 대응하는 제1 밸류(V1a)를 독출한다. 단계 S1390에서, 스토리지 장치(100)는 제1 밸류(V1a)를 포함하는 응답 메시지를 호스트(200)에 전송한다.
도 26은 본 개시의 일 실시예에 따른 네트워크 시스템(1000)을 나타낸다.
도 26을 참조하면, 네트워크 시스템(1000)은 서버 시스템(1100), 및 네트워크(NET)를 통해 서버 시스템(1100)과 통신하는 복수의 터미널들(1210 내지 1230)(예를 들어, 컴퓨팅 노드들)을 포함할 수 있다. 서버 시스템(1100)은 서버(1110)와 SSD(1120)를 포함할 수 있다. 이때, 서버(1110)는 상술한 실시예들의 호스트에 대응할 수 있고, SSD(1120)는 상술한 실시예들의 스토리지 장치에 대응할 수 있다. 일 실시예에서, SSD(1120)는 스냅샷 기능을 지원하는 SSD로 구현될 수 있고, 도 1 내지 도 25를 참조하여 상술한 실시예들을 이용하여 구현될 수 있다.
서버(1110)는 네트워크(NET)에 연결된 복수의 터미널들(1210 내지 1230)로부터 전송된 요청들을 처리할 수 있다. 일 실시예에서, 서버(1110)는 스냅샷 아이디를 포함하는 커맨드를 SSD(1120)에 전송할 수 있다. 일 실시예에서, SSD(1120)는 동일한 키에 대해, 복수의 스냅샷 아이디들 각각에 대응하는 복수의 스냅샷 엔트리들을 생성할 수 있다. 일 실시예에서, SSD(1120)는 생성된 복수의 스냅샷 엔트리들을 이용하여 밸류의 기입 동작 및 독출 동작을 수행할 수 있다.
도 27은 본 개시의 일 실시예에 따른 네트워크 시스템(2000)을 나타낸다.
도 27을 참조하면, 네트워크 시스템(2000)은 클라이언트 그룹(2100)과 데이터 센터(2200)를 포함할 수 있다. 클라이언트 그룹(2100)은 제1 네트워크(NET1), 예를 들어, 인터넷을 통해 데이터 센터(2200)와 통신하는 클라이언트 장치들(C)을 포함할 수 있다. 데이터 센터(2200)는 각종 데이터를 모아두고 서비스를 제공하는 시설로서, 제2 네트워크(NET2), 예를 들어, LAN(Local Area Network) 또는 인트라넷을 통해 서로 통신하는 어플리케이션 서버 그룹(2210), 데이터베이스 서버 그룹(2220) 및 오브젝트 캐시 서버 그룹(2230)을 포함할 수 있다.
어플리케이션 서버 그룹(2210)은 어플리케이션 서버 장치들(AS)을 포함할 수 있고, 어플리케이션 서버 장치들(AS)은 클라이언트 그룹(2100)으로부터 수신한 요청을 처리하고, 클라이언트 그룹(2100)의 요청에 따라 데이터베이스 서버 그룹(2220) 또는 오브젝트 캐시 서버 그룹(2230)을 액세스할 수 있다. 데이터베이스 서버 그룹(2220)은 어플리케이션 서버 장치들(AS)에 의해 처리된 데이터를 저장하는 데이터베이스 서버 장치들(DS)을 포함할 수 있다. 오브젝트 캐시 서버 그룹(2230)은 데이터베이스 서버 장치들(DS)에 저장되는 데이터 또는 데이터베이스 서버 장치들(DS)로부터 독출된 데이터를 임시로 저장하는 오브젝트 캐시 서버 장치들(OCS)을 포함할 수 있고, 이에 따라, 어플리케이션 서버 장치들(AS)과 데이터베이스 서버 장치들(DS) 사이에서 캐시의 기능을 수행할 수 있다. 본 실시예에서, 오브젝트 캐시 서버 장치들(OCS)는 스냅샷 기능을 지원하는 키-밸류 스토리지 장치일 수 있고, 도 1 내지 도 25를 참조하여 상술된 실시예들을 이용하여 구현될 수 있다.
도 28은 본 개시의 일 실시예에 따른 전자 장치(3000)를 나타낸다.
도 28을 참조하면, 전자 장치(3000)는 프로세서(3100), 메모리 장치(3200), 스토리지 장치(3300), 모뎀(3400), 입출력 장치(3500) 및 파워 서플라이(3600)를 포함할 수 있다. 본 실시예에서, 스토리지 장치(3300)는 스냅샷 기능을 지원하는 키-밸류 스토리지 장치일 수 있고, 도 1 내지 도 25를 참조하여 상술된 실시예들을 이용하여 구현될 수 있다. 일 실시예에서, 스토리지 장치(3300)는 스냅샷 아이디를 포함하는 커맨드를 수신할 수 있다. 일 실시예에서, 스토리지 장치(3300)는 동일한 키에 대해, 복수의 스냅샷 아이디들 각각에 대응하는 복수의 스냅샷 엔트리들을 생성할 수 있다. 일 실시예에서, 스토리지 장치(3300)는 생성된 복수의 스냅샷 엔트리들을 이용하여 밸류의 기입 동작 및 독출 동작을 수행할 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 비휘발성 메모리를 포함하는 키-밸류(key-value) 스토리지 장치의 동작 방법으로서,
    호스트로부터 제1 키, 제1 밸류, 및 제1 스냅샷 아이디(snapshot ID)를 포함하는 제1 커맨드를 수신하는 단계;
    수신한 상기 제1 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 제1 스냅샷 아이디, 상기 제1 키, 및 상기 제1 밸류가 기입되는 제1 물리적 어드레스를 포함하는 제1 스냅샷 엔트리(entry)를 생성하는 단계;
    상기 호스트로부터 상기 제1 키, 제2 밸류, 및 제2 스냅샷 아이디를 포함하는 제2 커맨드를 수신하는 단계; 및
    수신한 상기 제2 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 제2 스냅샷 아이디, 상기 제1 키, 및 상기 제2 밸류가 기입되는 제2 물리적 어드레스를 포함하는 제2 스냅샷 엔트리를 생성하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 호스트로부터 상기 제1 키를 포함하는 독출 커맨드를 수신하는 단계; 및
    수신한 상기 독출 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 제2 스냅샷 엔트리를 기초로 상기 비휘발성 메모리로부터 상기 제2 밸류를 독출하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 호스트로부터 수신한, 상기 제1 스냅샷 아이디 및 상기 제1 키를 포함하는 제1 독출 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 제1 스냅샷 엔트리를 기초로 상기 비휘발성 메모리로부터 상기 제1 밸류를 독출하는 단계; 및
    상기 호스트로부터 수신한, 상기 제2 스냅샷 아이디 및 상기 제1 키를 포함하는 제2 독출 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 제2 스냅샷 엔트리를 기초로 상기 비휘발성 메모리로부터 상기 제2 밸류를 독출하는 단계 중 적어도 하나를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 키-밸류 스토리지 장치는, 상기 제1 및 제2 스냅샷 엔트리들을 포함하는 복수의 스냅샷 엔트리들을 저장하는 맵핑 테이블이 로딩된 메모리를 더 포함하고,
    상기 방법은,
    상기 호스트로부터 수신한, 상기 제1 스냅샷 아이디를 포함하는 제1 소거 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 복수의 스냅샷 엔트리들 중 상기 제1 스냅샷 아이디에 대응하는 적어도 하나의 스냅샷 엔트리를 삭제하는 단계; 및
    상기 호스트로부터 수신한, 상기 제1 스냅샷 아이디 및 상기 제1 키를 포함하는 제2 소거 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 복수의 스냅샷 엔트리들 중 상기 제1 스냅샷 엔트리를 삭제하는 단계 중 적어도 하나를 더 포함하는 방법.
  5. 제4항에 있어서,
    상기 호스트로부터 수신한, 상기 제1 키를 포함하는 제1 독출 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 제2 스냅샷 엔트리를 기초로 상기 비휘발성 메모리로부터 상기 제2 밸류를 독출하는 단계; 및
    상기 호스트로부터 수신한, 상기 제1 스냅샷 아이디 및 상기 제1 키를 포함하는 제2 독출 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서 상기 호스트로 페일(fail) 메시지를 제공하는 단계 중 적어도 하나를 더 포함하는 방법.
  6. 제1항에 있어서,
    상기 제1 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 비휘발성 메모리의 상기 제1 물리적 어드레스에 상기 제1 밸류를 기입하는 단계; 및
    상기 제2 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 비휘발성 메모리의 상기 제2 물리적 어드레스에 상기 제2 밸류를 기입하는 단계를 더 포함하는 방법.
  7. 제1항에 있어서,
    상기 호스트로부터 상기 제1 키, 제3 밸류 및 상기 제2 스냅샷 아이디를 포함하는 제3 커맨드를 수신하는 단계; 및
    수신한 상기 제3 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 제2 스냅샷 엔트리에서 상기 제2 물리적 어드레스를 상기 제3 밸류가 기입되는 제3 물리적 어드레스로 업데이트하는 단계를 더 포함하는 방법.
  8. 제1항에 있어서,
    상기 호스트로부터 상기 제1 키, 제3 밸류 및 제3 스냅샷 아이디를 포함하는 제4 커맨드를 수신하는 단계; 및
    상기 제4 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 제3 스냅샷 아이디, 상기 제1 키, 및 상기 제3 밸류가 기입되는 제3 물리적 어드레스를 포함하는 제3 스냅샷 엔트리를 생성하는 단계를 더 포함하는 방법.
  9. 제1항에 있어서,
    상기 제1 및 제2 스냅샷 엔트리들은, 상기 제2 스냅샷 엔트리에서 상기 제1 스냅샷 엔트리의 순서대로 연결 리스트로 구현되는 것을 특징으로 하는 방법.
  10. 제9항에 있어서,
    상기 키-밸류 스토리지 장치는, 상기 제1 및 제2 스냅샷 엔트리들을 저장하는 맵핑 테이블이 로딩된 메모리를 더 포함하고,
    상기 제2 스냅샷 엔트리는, 상기 메모리에서 상기 제1 스냅샷 엔트리가 저장되는 주소를 저장하는 링크 영역을 더 포함하는 것을 특징으로 하는 방법.
  11. 제9항에 있어서,
    상기 제1 스냅샷 엔트리는, 상기 제1 스냅샷 엔트리 이전에 생성된 스냅샷 엔트리가 존재하지 않음을 나타내는 상태 정보를 저장하는 링크 영역을 더 포함하는 것을 특징으로 하는 방법.
  12. 제1항에 있어서,
    상기 제1 및 제2 스냅샷 엔트리들 각각은, 플래그를 더 포함하고,
    상기 제2 스냅샷 엔트리의 플래그는 상기 제2 스냅샷 엔트리가 최신 스냅샷 엔트리임을 나타내는 제1 값을 갖고,
    상기 제1 스냅샷 엔트리의 플래그는 상기 제1 스냅샷 엔트리가 최신 스냅샷 엔트리가 아님을 나타내는 제2 값을 갖는 것을 특징으로 하는 방법.
  13. 제1항에 있어서,
    상기 키-밸류 스토리지 장치는 DRAM(Dynamic Random Access Memory) 및 SRAM(Static Random Access Memory)을 더 포함하고,
    상기 제1 스냅샷 엔트리는 상기 DRAM에 저장되고, 상기 제2 스냅샷 엔트리는 상기 SRAM에 저장되는 것을 특징으로 하는 방법.
  14. 제1항에 있어서,
    상기 키-밸류 스토리지 장치에서, 미리 정해진 주기에 따라 제3 스냅샷 아이디를 생성하는 단계; 및
    상기 제3 스냅샷 아이디를 포함하는 메시지를 상기 키-밸류 스토리지 장치에서 상기 호스트로 전송하는 단계를 더 포함하는 방법.
  15. 비휘발성 메모리를 포함하는 키-밸류 스토리지 장치의 동작 방법으로서,
    상기 키-밸류 스토리지 장치에서, 복수의 스냅샷 아이디들에 각각 대응하는, 제1 키에 대한 복수의 스냅샷 엔트리들을 맵핑 테이블에 저장하는 단계;
    호스트로부터 상기 제1 키를 포함하는 제1 독출 커맨드를 수신하는 단계;
    수신한 상기 제1 독출 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 복수의 스냅샷 엔트리들 중 최신 스냅샷 엔트리를 기초로 상기 비휘발성 메모리에 대해 독출 동작을 수행하는 단계;
    상기 호스트로부터 제1 스냅샷 아이디 및 상기 제1 키를 포함하는 제2 독출 커맨드를 수신하는 단계; 및
    수신한 상기 제2 독출 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 복수의 스냅샷 엔트리들 중 상기 제1 스냅샷 아이디에 대응하는 제1 스냅샷 엔트리를 기초로 상기 비휘발성 메모리에 대해 독출 동작을 수행하는 단계를 포함하는 방법.
  16. 제15항에 있어서,
    상기 복수의 스냅샷 아이디들은, 상기 제1 스냅샷 아이디 및 제2 스냅샷 아이디를 포함하고,
    상기 복수의 스냅샷 엔트리들을 상기 맵핑 테이블에 저장하는 단계는,
    상기 호스트로부터 상기 제1 키, 제1 밸류 및 상기 제1 스냅샷 아이디를 포함하는 제1 커맨드를 수신하는 단계;
    수신한 상기 제1 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 제1 스냅샷 아이디, 상기 제1 키, 및 상기 제1 밸류가 기입되는 제1 물리적 어드레스를 포함하는 상기 제1 스냅샷 엔트리를 생성하는 단계;
    상기 호스트로부터 상기 제1 키, 제2 밸류 및 상기 제2 스냅샷 아이디를 포함하는 제2 커맨드를 수신하는 단계; 및
    수신한 상기 제2 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 제2 스냅샷 아이디, 상기 제1 키, 및 상기 제2 밸류가 기입되는 제2 물리적 어드레스를 포함하는 상기 제2 스냅샷 엔트리를 생성하는 단계를 포함하는 방법.
  17. 비휘발성 메모리를 포함하는 키-밸류 스토리지 장치의 동작 방법으로서,
    상기 키-밸류 스토리지 장치에서, 각각 스냅샷 아이디, 키, 및 물리적 어드레스를 포함하는 복수의 스냅샷 엔트리들을 맵핑 테이블에 저장하는 단계;
    호스트로부터 제1 스냅샷 아이디를 포함하는 제1 소거 커맨드를 수신하는 단계;
    수신한 상기 제1 소거 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 복수의 스냅샷 엔트리들 중 상기 제1 스냅샷 아이디에 대응하는 적어도 하나의 스냅샷 엔트리를 삭제하는 단계;
    상기 호스트로부터 상기 제1 스냅샷 아이디 및 제1 키를 포함하는 제2 소거 커맨드를 수신하는 단계; 및
    수신한 상기 제2 소거 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 복수의 스냅샷 엔트리들 중 상기 제1 스냅샷 아이디 및 상기 제1 키에 대응하는 제1 스냅샷 엔트리를 삭제하는 단계를 포함하는 방법.
  18. 제17항에 있어서,
    상기 복수의 스냅샷 엔트리들을 상기 맵핑 테이블에 저장하는 단계는,
    상기 호스트로부터 상기 제1 키, 제1 밸류 및 상기 제1 스냅샷 아이디를 포함하는 제1 커맨드를 수신하는 단계;
    수신한 상기 제1 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 제1 스냅샷 아이디, 상기 제1 키, 및 상기 제1 밸류가 기입되는 제1 물리적 어드레스를 포함하는 상기 제1 스냅샷 엔트리를 생성하는 단계;
    상기 호스트로부터 상기 제1 키, 제2 밸류 및 제2 스냅샷 아이디를 포함하는 제2 커맨드를 수신하는 단계; 및
    수신한 상기 제2 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 제2 스냅샷 아이디, 상기 제1 키, 및 상기 제2 밸류가 기입되는 제2 물리적 어드레스를 포함하는 제2 스냅샷 엔트리를 생성하는 단계를 포함하는 방법.
  19. 제17항에 있어서,
    상기 호스트로부터 수신한, 상기 제1 키를 포함하는 제1 독출 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 복수의 스냅샷 엔트리들 중 최신 스냅샷 엔트리를 기초로 상기 비휘발성 메모리에 대해 독출 동작을 수행하는 단계;
    상기 호스트로부터 수신한, 상기 제1 스냅샷 아이디 및 상기 제1 키를 포함하는 제2 독출 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서 상기 호스트로 페일 메시지를 전송하는 단계; 및
    상기 호스트로부터 수신한, 제2 스냅샷 아이디 및 상기 제1 키를 포함하는 제3 독출 커맨드에 응답하여, 상기 키-밸류 스토리지 장치에서, 상기 복수의 스냅샷 엔트리들 중 상기 제2 스냅샷 아이디에 대응하는 제2 스냅샷 엔트리를 기초로 상기 비휘발성 메모리에 대해 독출 동작을 수행하는 단계 중 적어도 하나를 더 포함하는 방법.
  20. 호스트와 통신 가능한 키-밸류 스토리지 장치로서,
    키에 대응하는 밸류를 저장하는 비휘발성 메모리; 및
    상기 호스트로부터 스냅샷 아이디, 상기 키 및 상기 밸류를 포함하는 커맨드를 수신하고, 수신한 상기 커맨드를 기초로, 상기 스냅샷 아이디, 상기 키, 및 상기 밸류를 기입하는 물리적 어드레스를 포함하는 스냅샷 엔트리를 생성하는 컨트롤러를 포함하는 키-밸류 스토리지 장치.
KR1020170121312A 2017-09-20 2017-09-20 스냅샷 기능을 지원하는 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법 KR102406666B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020170121312A KR102406666B1 (ko) 2017-09-20 2017-09-20 스냅샷 기능을 지원하는 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법
SG10201805093TA SG10201805093TA (en) 2017-09-20 2018-06-14 Key-value storage device supporting snapshot function and operating method thereof
CN201810840685.9A CN109521948B (zh) 2017-09-20 2018-07-27 支持快照功能的键值存储设备及其操作方法
US16/055,203 US10891074B2 (en) 2017-09-20 2018-08-06 Key-value storage device supporting snapshot function and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170121312A KR102406666B1 (ko) 2017-09-20 2017-09-20 스냅샷 기능을 지원하는 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법

Publications (2)

Publication Number Publication Date
KR20190032903A true KR20190032903A (ko) 2019-03-28
KR102406666B1 KR102406666B1 (ko) 2022-06-08

Family

ID=65720213

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170121312A KR102406666B1 (ko) 2017-09-20 2017-09-20 스냅샷 기능을 지원하는 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법

Country Status (4)

Country Link
US (1) US10891074B2 (ko)
KR (1) KR102406666B1 (ko)
CN (1) CN109521948B (ko)
SG (1) SG10201805093TA (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10949341B2 (en) * 2018-08-27 2021-03-16 Samsung Electronics Co., Ltd. Implementing snapshot and other functionality in KVSSD through garbage collection and FTL
US11334284B2 (en) * 2018-09-24 2022-05-17 Samsung Electronics Co., Ltd. Database offloading engine
US11036887B2 (en) 2018-12-11 2021-06-15 Micron Technology, Inc. Memory data security
EP3851950A1 (en) 2020-01-15 2021-07-21 Samsung Electronics Co., Ltd. Storage device and operation method thereof
KR20210092361A (ko) 2020-01-15 2021-07-26 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
WO2022098676A1 (en) * 2020-11-03 2022-05-12 Carefusion 303, Inc. Efficient storage of drug library editor entries
US20230418741A1 (en) * 2022-06-27 2023-12-28 Western Digital Technologies, Inc. Data storage device management system
US20240078032A1 (en) * 2022-09-06 2024-03-07 Western Digital Technologies, Inc. Metadata Management In Key Value Data Storage Device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140344539A1 (en) * 2013-05-20 2014-11-20 Kaminario Technologies Ltd. Managing data in a storage system
US20160011791A1 (en) * 2014-07-08 2016-01-14 Fujitsu Limited Storage control apparatus, storage system, and program
WO2016050112A1 (zh) * 2014-09-30 2016-04-07 华为技术有限公司 一种数据存储方法、存储装置及存储系统

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010186341A (ja) * 2009-02-12 2010-08-26 Toshiba Corp メモリシステム
US9323775B2 (en) 2010-06-19 2016-04-26 Mapr Technologies, Inc. Map-reduce ready distributed file system
US9311327B1 (en) 2011-06-30 2016-04-12 Emc Corporation Updating key value databases for virtual backups
US8788788B2 (en) 2011-08-11 2014-07-22 Pure Storage, Inc. Logical sector mapping in a flash storage array
US8775773B2 (en) 2011-08-26 2014-07-08 Vmware, Inc. Object storage system
US9454312B2 (en) 2012-07-06 2016-09-27 Nec Corporation Method and system for storing and reading data in or from a key value storage
US8880488B1 (en) * 2012-09-28 2014-11-04 Emc Corporation Efficient extent-based B-tree insertion
US9311014B2 (en) * 2012-11-29 2016-04-12 Infinidat Ltd. Storage system and methods of mapping addresses of snapshot families
US9244993B1 (en) 2013-06-19 2016-01-26 Amazon Technologies, Inc. Management of application state data
JP6382819B2 (ja) 2013-08-21 2018-08-29 株式会社東芝 データベースシステム、ノード、管理装置、プログラムおよびデータ処理方法
US9152684B2 (en) 2013-11-12 2015-10-06 Netapp, Inc. Snapshots and clones of volumes in a storage system
KR20150081810A (ko) 2014-01-07 2015-07-15 한국전자통신연구원 데이터 저장장치에 대한 다중 스냅샷 관리 방법 및 장치
US10261960B2 (en) 2014-09-12 2019-04-16 Scality, S.A. Snapshots and forks of storage systems using distributed consistent databases implemented within an object store
US9569141B2 (en) 2014-03-28 2017-02-14 Intel Corporation Hash map support in a storage device
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
WO2016045096A1 (zh) 2014-09-26 2016-03-31 华为技术有限公司 一种文件迁移方法、装置和存储设备
US9438426B2 (en) 2014-10-03 2016-09-06 Seagate Technology Llc Key-value data storage device with hybrid architecture
US9519666B2 (en) 2014-11-27 2016-12-13 E8 Storage Systems Ltd. Snapshots and thin-provisioning in distributed storage over shared storage devices
US10846279B2 (en) * 2015-01-29 2020-11-24 Hewlett Packard Enterprise Development Lp Transactional key-value store
US20160275089A1 (en) 2015-03-17 2016-09-22 Netapp, Inc. Methods for implementing nosql database snapshots and devices thereof
US10296219B2 (en) 2015-05-28 2019-05-21 Vmware, Inc. Data deduplication in a block-based storage system
US10394660B2 (en) 2015-07-31 2019-08-27 Netapp, Inc. Snapshot restore workflow
US20170032005A1 (en) 2015-07-31 2017-02-02 Netapp, Inc. Snapshot and/or clone copy-on-write
US10565230B2 (en) 2015-07-31 2020-02-18 Netapp, Inc. Technique for preserving efficiency for replication between clusters of a network
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
US9904607B2 (en) * 2015-11-13 2018-02-27 International Business Machines Corporation Logical to physical table restoration from stored journal entries
KR20170060234A (ko) * 2015-11-23 2017-06-01 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US10235059B2 (en) 2015-12-01 2019-03-19 Netapp, Inc. Technique for maintaining consistent I/O processing throughput in a storage system
US10229009B2 (en) 2015-12-16 2019-03-12 Netapp, Inc. Optimized file system layout for distributed consensus protocol
EP3437269B1 (en) * 2016-03-28 2019-10-02 Telefonaktiebolaget LM Ericsson (PUBL) Efficient method to aggregate changes and to produce border gateway protocol link-state (bgp-ls) content from intermediate system to intermediate system (is-is) link-state database
CN106802939B (zh) 2016-12-30 2020-04-03 华为技术有限公司 一种解决数据冲突的方法和系统
US10552372B2 (en) * 2017-01-31 2020-02-04 Microsoft Technology Licensing, Llc Systems, methods, and computer-readable media for a fast snapshot of application data in storage

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140344539A1 (en) * 2013-05-20 2014-11-20 Kaminario Technologies Ltd. Managing data in a storage system
US20160011791A1 (en) * 2014-07-08 2016-01-14 Fujitsu Limited Storage control apparatus, storage system, and program
WO2016050112A1 (zh) * 2014-09-30 2016-04-07 华为技术有限公司 一种数据存储方法、存储装置及存储系统

Also Published As

Publication number Publication date
US20190087130A1 (en) 2019-03-21
CN109521948B (zh) 2023-08-15
CN109521948A (zh) 2019-03-26
KR102406666B1 (ko) 2022-06-08
SG10201805093TA (en) 2019-04-29
US10891074B2 (en) 2021-01-12

Similar Documents

Publication Publication Date Title
KR102406666B1 (ko) 스냅샷 기능을 지원하는 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법
US10503611B1 (en) Data protection management for distributed storage
US10303797B1 (en) Clustering files in deduplication systems
US9792306B1 (en) Data transfer between dissimilar deduplication systems
US9317519B2 (en) Storage system for eliminating duplicated data
US20180181324A1 (en) Data protection with erasure coding and xor
CN109753231B (zh) 键值存储设备及操作其的方法
JP5586718B2 (ja) 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
KR102545167B1 (ko) 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법
US8386717B1 (en) Method and apparatus to free up cache memory space with a pseudo least recently used scheme
US9274907B1 (en) Decommissioning of virtual backup appliances
US11625304B2 (en) Efficient method to find changed data between indexed data and new backup
US8682902B2 (en) Storage device having full-text search function
JP2014232543A (ja) 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
US20190272258A1 (en) Region-integrated data deduplication implementing a multi-lifetime duplicate finder
US11409456B2 (en) Methods to reduce storage capacity
CN107798063B (zh) 快照处理方法和快照处理装置
US11132137B2 (en) Methods and systems for providing read-optimized scalable offline de-duplication for blocks of data
US11989159B2 (en) Hybrid snapshot of a global namespace
US11847030B2 (en) Prioritizing virtual machines for backup protection at a virtual machine disk level
US10664442B1 (en) Method and system for data consistency verification in a storage system
US20200341853A1 (en) Efficient method to index scheduled backup of same target and the corresponding files
US20240160373A1 (en) Coordinated Persistent Memory Data Mirroring
US11347778B2 (en) Scale-out indexing for a distributed search engine
US11531644B2 (en) Fractional consistent global snapshots of a distributed namespace

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant