KR102589609B1 - 분할된 저장장치에서의 스냅샷 관리 - Google Patents

분할된 저장장치에서의 스냅샷 관리 Download PDF

Info

Publication number
KR102589609B1
KR102589609B1 KR1020220103540A KR20220103540A KR102589609B1 KR 102589609 B1 KR102589609 B1 KR 102589609B1 KR 1020220103540 A KR1020220103540 A KR 1020220103540A KR 20220103540 A KR20220103540 A KR 20220103540A KR 102589609 B1 KR102589609 B1 KR 102589609B1
Authority
KR
South Korea
Prior art keywords
snapshot
data
specific
controller
storage device
Prior art date
Application number
KR1020220103540A
Other languages
English (en)
Other versions
KR20220119348A (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 웨스턴 디지털 테크놀로지스, 인코포레이티드
Publication of KR20220119348A publication Critical patent/KR20220119348A/ko
Application granted granted Critical
Publication of KR102589609B1 publication Critical patent/KR102589609B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • 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
    • 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
    • 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
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • 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/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • 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/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/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/0629Configuration or reconfiguration 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
    • G06F3/064Management of blocks
    • 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
    • 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/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/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • 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)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 개시내용은 일반적으로 저장 스냅샷 관리 시스템에 관한 것이다. 업데이트된 데이터가 메모리 디바이스에 기록될 때, 모든 데이터가 다시 기록되는 것이 아니라, 업데이트된 데이터만이 신규 명칭공간에 기록된다. 신규 명칭공간의 스냅샷은 신규 명칭공간 내에서 어떤 LBA들이 데이터를 포함하는지 나타낸다. 신규 명칭공간들은 데이터가 업데이트될 때마다 추가된다. 업데이트된 데이터가 판독될 때, 데이터 저장 디바이스는 신규 명칭공간으로부터 업데이트된 LBA를 판독하고, 또한 이전 명칭공간으로부터 업데이트되지 않은 데이터를 수집한다. 결국, 데이터에 대한 명칭공간들의 수는 임계치에 도달하게 되고, 따라서 일부 명칭공간들은 축출되어야 한다. 명칭공간을 축출하기 위하여, 명칭공간 내의 업데이트된 데이터는 상이한 명칭공간으로 이동되거나, 또는 업데이트되지 않은 데이터는 업데이트된 데이터를 포함하는 명칭공간으로 이동된다. 어느 경우든, 현재 사용되지 않는 명칭공간들은 축출된다.

Description

분할된 저장장치에서의 스냅샷 관리{SNAPSHOT MANAGEMENT IN PARTITIONED STORAGE}
본 개시내용의 실시예들은 일반적으로 데이터 저장 디바이스 내의 스냅샷 테이블을 관리하는 것에 관한 것이다.
저장 스냅샷들은 임의의 저장 시스템이 지원할 필요가 있는 핵심 특징부이다. 용어 "스냅샷"은 데이터 저장 디바이스 내에 저장된 콘텐츠의 이전 버전의 사본을 일시적으로 저장하는 것을 지칭한다. 저장 스냅샷들은 매우 다양한 사용 사례들 및 데이터 센터들에서, 주로 분석, 백업 및 복원, 및 테스트를 위하여 광범위하게 사용된다. 모든 플래시 메모리 어레이에 대하여 스냅샷을 구축하면, 유의해야할 요소가 4가지 있다: 비용, 성능, 사용 용이성, 및 플래시 내구성.
비용에 관련하여, 스냅샷은 변경된 블록들만 제공하고, 전체 데이터 세트의 비효율적인 복제를 수행하지 않도록 최적화되어야 한다. 저장 디바이스에 기록되는 데이터의 입도는 실제 기록된 데이터와 유사해야 하고 스냅샷 데이터를 보존하기 위하여 더 큰 공간을 필요로 하는 큰 블록 크기들을 이용하여 관리되어서는 안된다. 변경을 추적하는 데 사용되는 메타데이터는 또한 작고 스냅샷에 대하여 이루어진 변경들의 양에 크기 상 선형적이어야 한다. 테스트 및 개발 또는 분석 환경에서 실행할 때, 상이한 시점들로부터의 동일한 데이터 세트의 다수의 사본들이 동시에 사용되는 것이 일반적이다.
성능과 관련하여, 높은 성능 요건을 갖춘 생산 환경은 열화를 허용하지 않아야 하는데, 그 이유는 스냅샷들이 사용되고 있기 때문이다. 생산 환경의 성능 요건에 더하여, 다른 사업 프로세스들이 생산 환경의 스냅샷들에 기초한다. 전형적인 사용 사례들은 실시간 분석, 중요 보고, 및 기타 데이터-마이닝 프로세스들을 포함한다.
NVMe 명칭공간은 논리 블록들로 포맷될 수 있는 비휘발성 메모리(NVM)의 양이다. 명칭공간들은 저장 가상 머신이 NVMe 표준으로 구성될 때 사용된다. 명칭공간 ID(NSID)는 명칭공간에 대한 액세스를 제공하기 위하여 제어기에 의해 사용되는 식별자이다. 호스트 또는 호스트 그룹에 대하여 NSID를 설정할 때, 명칭공간의 접근성은 또한 호스트에 의한 볼륨에 대하여 구성된다. 논리 블록은 한 번에 하나의 호스트 그룹으로 맵핑될 수 있고, 주어진 호스트 그룹은 어떠한 복제 NSID도 갖지 않는다.
저장 스냅샷들을 관리하는 것은 전술한 엄격한 요건들로 인해 저장 관리 시스템에 있어서 중요한 과제이다. 스냅샷 해결책들 중 일부는 디바이스 인라인 중복제거 기능들에 기초한다. 이러한 해결책들에서, 스냅샷이 생성되면, 메타데이터는 복제되지만, 데이터는 복제되지 않는다. 이러한 해결책이 빠른 스냅샷 개발 사이클에 대한 좋은 지름길이지만, 이 해결책은 현대의 데이터 센터 니즈를 충족시키지 못하는 제한된 스냅샷 해결책을 초래하며, 또한 2개의 스냅샷 특성들을 낳게 된다.
다른 해결책들은 효율적으로 이격되고, 모든 시스템 리소스들에 걸쳐 분산되고, 변경된 블록들에 대해서만 할당되는 데이터 및 메타데이터로 고유 스냅샷 해결책을 생성하였다. 그러나, 이러한 해결책은 스냅샷 관리의 효과를 활용하기 위한 저장장치 파티션 특징부를 사용하지 않는다.
따라서, 저장 파티션 특징부의 효과를 활용하는 저장 스냅샷 관리 시스템에 대한 필요성이 당업계에 존재한다.
본 개시내용은 일반적으로 저장 스냅샷 관리 시스템에 관한 것이다. 업데이트된 데이터가 메모리 디바이스에 기록될 때, 모든 데이터가 다시 기록되는 것이 아니라, 업데이트된 데이터만이 신규 명칭공간에 기록된다. 신규 명칭공간의 스냅샷은 신규 명칭공간 내에서 어떤 LBA들이 데이터를 포함하는지 나타낸다. 신규 명칭공간들은 데이터가 업데이트될 때마다 추가된다. 업데이트된 데이터가 판독될 때, 데이터 저장 디바이스는 신규 명칭공간으로부터 업데이트된 LBA를 판독하고, 또한 이전 명칭공간으로부터 업데이트되지 않은 데이터를 수집한다. 결국, 데이터에 대한 명칭공간들의 수는 임계치에 도달하게 되고, 따라서 일부 명칭공간들은 축출되어야 한다. 명칭공간을 축출하기 위하여, 명칭공간 내의 업데이트된 데이터는 상이한 명칭공간으로 이동되거나, 또는 업데이트되지 않은 데이터는 업데이트된 데이터를 포함하는 명칭공간으로 이동된다. 어느 경우든, 현재 사용되지 않는 명칭공간들은 축출된다.
일 실시예에서, 데이터 저장 디바이스는: 메모리 디바이스; 및 메모리 디바이스에 결합된 제어기를 포함하고, 제어기는: 특정 명칭공간에 대한 기록 커맨드를 수신하고; 특정 명칭공간이 기본 버전의 업데이트임을 결정하고; 메모리 디바이스의 메모리 블록을 할당하고; 스냅샷 관리 테이블을 업데이트하고; 할당된 블록에 데이터를 기록하도록 구성된다.
다른 실시예에서, 데이터 저장 디바이스는: 메모리 디바이스; 및 메모리 디바이스에 결합된 제어기를 포함하고, 제어기는: 특정 명칭공간 ID(NSID)에 대한 판독 커맨드를 수신하고; 특정 NSID가 기본 버전이 아님을 결정하고; 특정 NSID의 스냅샷 관리 테이블을 판독하고; 메모리 디바이스로부터 데이터를 판독하거나; 특정 NSID를 하나씩 감소시키도록 구성된다.
다른 실시예에서, 데이터 저장 디바이스는: 메모리 디바이스; 및 메모리 디바이스에 결합된 제어기를 포함하고, 제어기는: 필수 스냅샷 수(RSN)의 설정을 수신하고; 스냅샷 업데이트 델타(SUD)를 수신하고; 카운터를 0으로 설정하고; 데이터에 대한 버전 업데이트를 수신하고; 카운터를 1씩 증가시키고; 카운터가 RSN + SUD를 초과하는지 결정하도록 구성된다.
상기에 언급된 본 개시의 특징들이 상세히 이해될 수 있는 방식으로, 상기에 간략하게 요약된 본 개시의 보다 구체적인 설명이 실시예들을 참조하여 이루어질 수 있으며, 이들 실시예 중 일부가 첨부 도면에 예시되어 있다. 그러나, 첨부 도면은 단지 본 개시의 단지 전형적인 실시예들을 도시하는 것이므로 본 개시의 범위를 제한하는 것으로 간주되지 않아야 한다는 것이 주목되어야 하는데, 이는 본 개시가 다른 균등하게 유효한 실시예들을 허용할 수 있기 때문이다.
도 1은 본 개시내용의 하나 이상의 기술들에 따른, 저장 디바이스가 호스트 디바이스를 위한 저장 디바이스로서 기능할 수 있는 저장 시스템을 도시하는 개략적 블록도이다.
도 2는 일 실시예에 따른 스냅샷 관리의 개략적 예시이다.
도 3은 일 실시예에 따른 데이터 저장 디바이스에 데이터를 기록하는 방법을 도시하는 흐름도이다.
도 4는 일 실시예에 따른 데이터 저장 디바이스로부터 데이터를 판독하는 방법을 도시하는 흐름도이다.
도 5는 일 실시예에 따른, 명칭공간을 축출하는 방법을 도시하는 흐름도이다.
이해를 촉진하기 위해, 도면들에 공통인 동일한 요소들을 지시하기 위해, 가능한 경우, 동일한 도면 부호들이 사용되었다. 일 실시예에 개시된 요소들이 구체적인 언급 없이도 다른 실시예들에서 유익하게 이용될 수 있다는 것이 고려된다.
하기에서, 본 개시의 실시예들을 참조한다. 그러나, 본 개시는 설명된 특정 실시예들로 제한되지 않는다는 것이 이해되어야 한다. 대신에, 하기의 특징들 및 요소들의 임의의 조합이, 상이한 실시예들과 관련되든지 또는 그렇지 않든지 간에, 본 개시를 구현하고 실시하기 위해 고려된다. 게다가, 본 개시의 실시예가 다른 가능한 해법들에 비해 그리고/또는 종래 기술에 비해 이점을 달성할 수 있지만, 특정 이점이 주어진 실시예에 의해 달성되는지 여부는 본 개시의 제한이 아니다. 따라서, 하기의 태양들, 특징들, 실시예들, 및 이점들은 단지 예시적인 것이며, 청구항(들)에 명시적으로 언급된 경우를 제외하고는 첨부된 청구항들의 요소 또는 제한으로 간주되지 않는다. 마찬가지로, "본 개시"에 대한 언급은 본 명세서에 개시되는 임의의 발명의 주제의 일반화로서 해석되어서는 안되며, 청구항(들)에 명시적으로 언급된 경우를 제외하고는 첨부된 청구항들의 요소 또는 제한인 것으로 간주되어서는 안된다.
본 개시내용은 일반적으로 저장 스냅샷 관리 시스템에 관한 것이다. 업데이트된 데이터가 메모리 디바이스에 기록될 때, 모든 데이터가 다시 기록되는 것이 아니라, 업데이트된 데이터만이 신규 명칭공간에 기록된다. 신규 명칭공간의 스냅샷은 신규 명칭공간 내에서 어떤 LBA들이 데이터를 포함하는지 나타낸다. 신규 명칭공간들은 데이터가 업데이트될 때마다 추가된다. 업데이트된 데이터가 판독될 때, 데이터 저장 디바이스는 신규 명칭공간으로부터 업데이트된 LBA를 판독하고, 또한 이전 명칭공간으로부터 업데이트되지 않은 데이터를 수집한다. 결국, 데이터에 대한 명칭공간들의 수는 임계치에 도달하게 되고, 따라서 일부 명칭공간들은 축출되어야 한다. 명칭공간을 축출하기 위하여, 명칭공간 내의 업데이트된 데이터는 상이한 명칭공간으로 이동되거나, 또는 업데이트되지 않은 데이터는 업데이트된 데이터를 포함하는 명칭공간으로 이동된다. 어느 경우든, 현재 사용되지 않는 명칭공간들은 축출된다.
도 1은 본 개시의 하나 이상의 기술들에 따른, 데이터 저장 디바이스(106)가 호스트 디바이스(104)를 위한 저장 디바이스로서 기능할 수 있는 저장 시스템(100)을 예시하는 개략 블록도이다. 예를 들어, 호스트 디바이스(104)는 데이터 저장 디바이스(106)에 포함된 비휘발성 메모리(110)를 이용하여 데이터를 저장 및 검색할 수 있다. 호스트 디바이스(104)는 호스트 DRAM(138)을 포함한다. 일부 예들에서, 저장 시스템(100)은 저장 어레이로서 동작할 수 있는, 데이터 저장 디바이스(106)와 같은, 복수의 저장 디바이스들을 포함할 수 있다. 예를 들어, 저장 시스템(100)은 호스트 디바이스(104)를 위한 대용량 저장 디바이스로서 집합적으로 기능하는 저가/독립 디스크들(RAID)의 중복 어레이로서 구성된 복수의 데이터 저장 디바이스들(106)을 포함할 수 있다.
저장 시스템(100)은 데이터 저장 디바이스(106)와 같은 하나 이상의 저장 디바이스에 그리고/또는 그로부터 데이터를 저장 및/또는 검색할 수 있는 호스트 디바이스(104)를 포함한다. 도 1에 예시된 바와 같이, 호스트 디바이스(104)는 인터페이스(114)를 통해 데이터 저장 디바이스(106)와 통신할 수 있다. 호스트 디바이스(104)는 컴퓨터 서버, NAS(network attached storage) 유닛, 데스크톱 컴퓨터, 노트북(즉, 랩톱) 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 전화 핸드셋, 예컨대 소위 "스마트" 폰, 소위 "스마트" 패드, 텔레비전, 카메라, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 게임 콘솔, 비디오 스트리밍 디바이스 등을 포함한, 광범위한 디바이스들 중 임의의 것을 포함할 수 있다.
데이터 저장 디바이스(106)는 컨트롤러(108), 비휘발성 메모리(110)(NVM(110)), 전력 공급부(111), 휘발성 메모리(112), 및 인터페이스(114)를 포함한다. 제어기(108)는 내부 메모리 또는 버퍼(미도시)를 포함한다. 일부 예들에서, 데이터 저장 디바이스(106)는 명료함을 위해 도 1에 도시되지 않은 추가적인 컴포넌트들을 포함할 수 있다. 예를 들어, 데이터 저장 디바이스(106)는, 데이터 저장 디바이스(106)의 컴포넌트들이 그에 기계적으로 부착되고, 데이터 저장 디바이스(106)의 컴포넌트들 등을 전기적으로 상호접속하는 전기 전도성 트레이스들을 포함하는 인쇄 기판(PB)을 포함할 수 있다. 일부 예들에서, 데이터 저장 디바이스(106)의 물리적 치수들 및 커넥터 구성들은 하나 이상의 표준 폼 팩터를 따를 수 있다. 일부 예시적인 표준 폼 팩터들은 3.5" 데이터 저장 디바이스(예컨대, HDD 또는 SSD), 2.5" 데이터 저장 디바이스, 1.8" 데이터 저장 디바이스, PCI(peripheral component interconnect), PCI-X(PCI-extended), PCIe(PCI Express)(예컨대, PCIe x1, x4, x8, x16, PCIe Mini Card, MiniPCI 등)를 포함하지만, 이로 제한되지 않는다. 일부 예들에서, 데이터 저장 디바이스(106)는 호스트 디바이스(104)의 마더보드에 직접 결합(예컨대, 직접 솔더링)될 수 있다.
데이터 저장 디바이스(106)의 인터페이스(114)는 호스트 디바이스(104)와 데이터를 교환하기 위한 데이터 버스 및 호스트 디바이스(104)와 커맨드들을 교환하기 위한 제어 버스 중 하나 또는 둘 모두를 포함할 수 있다. 인터페이스(114)는 임의의 적합한 프로토콜에 따라 동작할 수 있다. 예를 들어, 인터페이스(114)는 다음의 프로토콜들 중 하나 이상에 따라 동작할 수 있다: ATA(advanced technology attachment)(예컨대, SATA(serial-ATA) 및 PATA(parallel-ATA)), FCP(Fibre Channel Protocol), SCSI(small computer system interface), SAS(serially attached SCSI), PCI, 및 PCIe, NVMe(non-volatile memory express), OpenCAPI, GenZ, CCIX(Cache Coherent Interface Accelerator), OCSSD(Open Channel SSD) 등. 인터페이스(114)의 전기 접속(예컨대, 데이터 버스, 제어 버스, 또는 둘 모두)은 컨트롤러(108)에 전기적으로 접속되어, 호스트 디바이스(104)와 컨트롤러(108) 사이의 전기 접속을 제공하여서, 데이터가 호스트 디바이스(104)와 컨트롤러(108) 사이에서 교환될 수 있게 한다. 일부 예들에서, 인터페이스(114)의 전기 접속은 또한 데이터 저장 디바이스(106)가 호스트 디바이스(104)로부터 전력을 수신할 수 있게 할 수 있다. 예를 들어, 도 1에 예시된 바와 같이, 전력 공급부(111)는 인터페이스(114)를 통해 호스트 디바이스(104)로부터 전력을 수신할 수 있다.
데이터 저장 디바이스(106)는 복수의 메모리 디바이스들 또는 메모리 유닛들을 포함할 수 있는 NVM(110)을 포함한다. NVM(110)은 데이터를 저장 및/또는 검색하도록 구성될 수 있다. 예를 들어, NVM(110)의 메모리 유닛은 데이터, 및 데이터를 저장하라고 메모리 유닛에게 지시하는 컨트롤러(108)로부터의 메시지를 수신할 수 있다. 유사하게, NVM(110)의 메모리 유닛은 데이터를 검색하라고 메모리 유닛에게 지시하는 컨트롤러(108)로부터의 메시지를 수신할 수 있다. 일부 예들에서, 메모리 유닛들 각각은 다이로 지칭될 수 있다. 일부 예들에서, 단일 물리 칩이 복수의 다이들(즉, 복수의 메모리 유닛들)을 포함할 수 있다. 일부 예들에서, 각각의 메모리 유닛은 비교적 많은 양의 데이터(예를 들어, 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB 등)를 저장하도록 구성될 수 있다.
일부 예들에서, NVM(110)의 각각의 메모리 유닛은 플래시 메모리 디바이스들, PCM(phase-change memory) 디바이스들, ReRAM(resistive random-access memory) 디바이스들, MRAM(magnetoresistive random-access memory) 디바이스들, F-RAM(ferroelectric random-access memory), 홀로그래픽 메모리 디바이스들, 및 임의의 다른 유형의 비휘발성 메모리 디바이스들과 같은 임의의 유형의 비휘발성 메모리 디바이스들을 포함할 수 있다.
NVM(110)은 복수의 플래시 메모리 디바이스 또는 메모리 유닛을 포함할 수 있다. 플래시 메모리 디바이스들은 NAND 또는 NOR 기반 플래시 메모리 디바이스들을 포함할 수 있고, 각각의 플래시 메모리 셀에 대한 트랜지스터의 플로팅 게이트에 포함된 전하에 기초하여 데이터를 저장할 수 있다. NAND 플래시 메모리 디바이스들에서, 플래시 메모리 디바이스는 복수의 블록들로 분할될 수 있으며, 이들은 복수의 페이지들로 분할될 수 있다. 특정 메모리 디바이스 내의 복수의 블록들 중의 각각의 블록은 복수의 NAND 셀들을 포함할 수 있다. NAND 셀들의 행들은 워드 라인을 이용하여 전기적으로 접속되어 복수의 페이지들 중 소정 페이지를 정의할 수 있다. 복수의 페이지들 각각 내의 각자의 셀들은 각자의 비트 라인들에 전기적으로 접속될 수 있다. 또한, NAND 플래시 메모리 디바이스들은 2D 또는 3D 디바이스들일 수 있고, 싱글 레벨 셀(SLC), 멀티-레벨 셀(MLC), 트리플 레벨 셀(TLC), 또는 쿼드 레벨 셀(QLC)일 수 있다. 컨트롤러(108)는 페이지 레벨에서 NAND 플래시 메모리 디바이스들에 데이터를 기입하고 그로부터 데이터를 판독하고 블록 레벨에서 NAND 플래시 메모리 디바이스들로부터 데이터를 소거할 수 있다.
마찬가지로, NVMe 명칭공간은 논리 블록들로 포맷될 수 있는 NVM(110)의 양이다. 명칭공간들은 저장 가상 머신이 NVMe 프로토콜로 구성될 때 사용된다. 명칭공간 ID(NSID)는 NVMe 명칭공간에 대한 액세스를 제공하기 위하여 제어기(108)에 의해 사용되는 식별자이다. NVMe 명칭공간 논리 블록은 한 번에 단일 NVM 위치에만 맵핑될 수 있다. 또한, 각각의 NVM 위치는 동일하거나 또는 중복되는 NSID를 갖지 않는다.
데이터 저장 디바이스(106)는 데이터 저장 디바이스(106)의 하나 이상의 컴포넌트에 전력을 제공할 수 있는 전력 공급부(111)를 포함한다. 표준 모드에서 동작할 때, 전력 공급부(111)는 호스트 디바이스(104)와 같은 외부 디바이스에 의해 제공되는 전력을 이용하여 하나 이상의 컴포넌트에 전력을 제공할 수 있다. 예를 들어, 전력 공급부(111)는 인터페이스(114)를 통해 호스트 디바이스(104)로부터 수신된 전력을 이용하여 하나 이상의 컴포넌트에 전력을 제공할 수 있다. 일부 예들에서, 전력 공급부(111)는 셧다운 모드에서 동작할 때, 예컨대 외부 디바이스로부터의 전력 수신이 중단되는 경우 하나 이상의 컴포넌트에 전력을 제공하도록 구성된 하나 이상의 전력 저장 컴포넌트를 포함할 수 있다. 이러한 방식으로, 전력 공급부(111)는 온보드 백업 전원으로서 기능할 수 있다. 하나 이상의 전력 저장 컴포넌트의 일부 예들은 커패시터들, 수퍼 커패시터들, 배터리들 등을 포함하지만 이로 제한되지 않는다. 일부 예들에서, 하나 이상의 전력 저장 컴포넌트에 의해 저장될 수 있는 전력의 양은 하나 이상의 전력 저장 컴포넌트의 비용 및/또는 크기(예를 들어, 면적/부피)의 함수일 수 있다. 다시 말해서, 하나 이상의 전력 저장 컴포넌트에 의해 저장되는 전력의 양이 증가함에 따라, 하나 이상의 전력 저장 컴포넌트의 비용 및/또는 크기가 또한 증가한다.
데이터 저장 디바이스(106)는 또한 휘발성 메모리(112)를 포함하며, 이는 컨트롤러(108)에 의해 정보를 저장하는 데 사용될 수 있다. 휘발성 메모리(112)는 하나 이상의 휘발성 메모리 디바이스들로 구성될 수 있다. 일부 예들에서, 컨트롤러(108)는 휘발성 메모리(112)를 캐시로서 사용할 수 있다. 예를 들어, 컨트롤러(108)는 캐싱된 정보가 비휘발성 메모리(110)에 기입될 때까지 캐싱된 정보를 휘발성 메모리(112)에 저장할 수 있다. 도 1에 예시된 바와 같이, 휘발성 메모리(112)는 전력 공급부(111)로부터 수신된 전력을 소비할 수 있다. 휘발성 메모리(112)의 예들은 RAM(random-access memory), DRAM(dynamic random access memory), SRAM(static RAM), 및 SDRAM(synchronous dynamic RAM)(예컨대, DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4, LPDDR4 등)을 포함하지만, 이로 제한되지 않는다.
데이터 저장 디바이스(106)는 컨트롤러(108)를 포함하며, 이는 데이터 저장 디바이스(106)의 하나 이상의 동작을 관리할 수 있다. 예를 들어, 컨트롤러(108)는 NVM(110)으로부터의 데이터의 판독 및/또는 그에의 데이터의 기입을 관리할 수 있다. 일부 실시예들에서, 데이터 저장 디바이스(106)가 호스트 디바이스(104)로부터 기입 커맨드를 수신할 때, 컨트롤러(108)는 NVM(110)에 데이터를 저장하는 데이터 저장 커맨드를 개시하고 데이터 저장 커맨드의 진행을 모니터링할 수 있다. 컨트롤러(108)는 저장 시스템(100)의 적어도 하나의 동작 특성을 결정하고 적어도 하나의 동작 특성을 NVM(110)에 저장할 수 있다. 일부 실시예들에서, 데이터 저장 디바이스(106)가 호스트 디바이스(104)로부터 기입 커맨드를 수신할 때, 컨트롤러(108)는 NVM(110)에 데이터를 전송하기 전에 기입 커맨드와 관련된 데이터를 내부 메모리에 임시로 저장한다.
제어기(108)는 저장 스냅샷을 취급하도록 설계된 하드웨어 및/또는 펌웨어인 스냅샷 관리 디바이스(120)와 결합된다. 저장 스냅샷은 임의의 저장 시스템이 지원할 필요가 있는 핵심-특징부이다. 저장 스냅샷은 저장장치에 저장된 콘텐츠의 이전 버전들의 사본을 일시적으로 저장하는 것을 지칭한다. 저장 스냅샷은 데이터의 물리적 위치의 주소를 저장하는 논리 테이블이다. 저장 스냅샷 테이블은 논리 블록 주소(LBA) 테이블일 수 있다.
도 2는 일 실시예에 따른 스냅샷 관리의 개략적 예시이다. 명칭공간 ID(NSID)는 NVMe 명칭공간에 대한 액세스를 제공하기 위하여 도 1의 스냅샷 관리 디바이스(120)와 결합된 제어기(108)와 같은 제어기에 의해 사용되는 식별자이다. 데이터가 도 1의 NVM(110)과 같은 NVM 내의 물리적 위치에 기록될 때, 데이터의 위치는 스냅샷 관리 디바이스(120) 내의 테이블 내의 논리 위치에 저장된다. 스냅샷 관리 디바이스(120) 내의 테이블은 LBA 테이블 또는 스냅샷 관리 테이블일 수 있다. 스냅샷 관리 테이블은 LBAn이 테이블 내의 마지막 LBA와 대응하도록 "n"개의 LBA들을 포함할 수 있다. 변수 "n"은 명시되지 않은 수의 LBA들이 단일 NSID 위치 또는 단일 스냅샷 관리 테이블에 존재할 수 있음을 나타낸다. 스냅샷 관리 테이블 내의 각각의 입력은 파티션-ID와 매칭되는 데이터의 물리적 위치와 연관된, 스냅샷-ID와 같은 ID를 갖는다. 업데이트들이 NVM(110)에 기록되는 동안, 파티션-ID 및 스냅샷-ID는 관련 정보로 업데이트된다. 스냅샷 관리 테이블 내의 비-업데이트 섹션들은 NVM 내의 단일 물리적 위치에 저장된다. 또한, 비-업데이트 섹션들은 임의의 명칭공간을 통해 액세스될 수 있다.
NSx는 명칭공간-ID "x"이며, 여기서 "NSx"는 파일의 기본 버전을 나타낸다. NSx 내의 각각의 LBA는 도 1의 데이터 저장 디바이스(106)와 같은 데이터 저장 디바이스에 의해 개시되고, "기본" 버전으로 구성된다. "기본" 버전은 초기 스냅샷0 관리 테이블에 위치한 데이터이다. 스냅샷 관리 테이블은 신규 스냅샷 관리 테이블에 대하여 업데이트가 이루어지는 스냅샷의 각각의 버전에 대하여 구성된다. 예를 들어, 초기 스냅샷 관리 테이블은 NSx이지만, NSx에 대한 제1 업데이트는 NSx+1 위치에서 일어난다. NSx+1 위치는 파일의 제1 업데이트 또는 "스냅샷"에 대한 NSID이다. "+1"은 제1 업데이트를 나타내고, "+2"는 제2 업데이트를 나타내고, 나머지도 마찬가지이다. 스냅샷# 관리 테이블은 업데이트된 테이블에 대응하여 스냅샷1 관리 테이블이 NSx+1 위치와 대응되도록 한다.
업데이트된 데이터가 NSx+1 위치에 기록될 때, 물리적 위치 또는 물리적 블록 주소(PBA)는 NVM(110)의 스냅샷1 관리 테이블에 저장된다. 그러나, 수정된 LBA들만이 업데이트된 위치에 관련된 스냅샷 관리 테이블에 저장된다. 예를 들어, LBA4 및 LBA8은 NSx+1 위치에서 업데이트된다. 스냅샷1 관리 테이블은 업데이트된 LBA들(LBA4 및 LBA8)의 물리적 주소를 기록한다. 마찬가지로, LBA1 및 LBA8이 NSx+2 위치에서 업데이트될 때, 스냅샷2 관리 테이블은 업데이트된 LBA들(LBA1, LBA8)의 물리적 주소를 기록한다.
또한, NSx+2 위치에서 LBA 데이터에 액세스할 때, 이전 NSID 위치들이 액세스될 수 있다. 이전 NSID 위치들과 연관된 스냅샷# 관리 테이블들이 이용될 것이다. 예를 들어, NSx+2 위치의 LBA1 내지 LBA4를 판독하기 위하여, 이전 NSID 위치들이 액세스되는데, 그 이유는 NSx+2가 LBA2, LBA3, 또는 LBA4에 대한 LBA 데이터를 포함하고 있지 않기 때문이다. 이전 스냅샷 관리 테이블들은 LBA 데이터의 물리적 주소를 위치파악하는 데 이용될 것이다. 도 1의 스냅샷 관리 디바이스(120)와 같은 스냅샷 관리 디바이스는 현재 LBA 데이터에 액세스하기 위하여 논리 제어부를 이용한다. NAND 내의 NSx+1, NSx+2 등의 위치는 수정된 LBA들을 포함하는 반면, NSx 위치는 "기본" 데이터를 포함한다. 특정 LBA에 대한 NSID 위치를 참조하고, 데이터가 그 위치에 위치파악되지 않는 경우, 참조된 LBA가 이전 NSID 위치들 또는 "기본" NSID 위치, NSx 중 하나에서 위치파악될 때까지 LBA에 대하여 이전 NSID 위치들이 검색된다.
또한, NSx+2가 LBA1에 대한 데이터를 포함하지만, LBA2, LBA3, 또는 LBA4에 대한 데이터를 포함하지 않기 때문에, 이전 NSID 위치들은 되돌아가서 순차적으로 액세스된다. 예를 들어, NSx+1은 데이터에 대한 이전 위치이다. LBA4는 NSx+1에 위치하고, LBA 데이터는 그 위치로부터 판독된다. 판독될 나머지 LBA들은 LBA2 및 LBA3이다. 그 다음 이전 NSID 위치는 NSx이고, 이는 NSID 위치의 "기본" 버전이다. "기본" 위치는 NSID 어레이의 제1 데이터를 포함한다. 용어 "제1 데이터"는 NSx 또는 "기본" 위치의 데이터를 지칭하고, 반드시 원래 데이터를 지칭하는 것은 아니다. 이전 NSID 위치는 NSx이기 때문에, LBA2 및 LBA3에 대한 기본 데이터가 판독된다. 현재 스냅샷에서 관련 LBA가 수정되지 않았음(즉, LBA가 현재 NSID 위치에 존재하지 않음)을 스냅샷 관리 디바이스(120)가 검출하면, 이전 스냅샷이 확인된다.
도 3은 일 실시예에 따른 데이터 저장 디바이스에 데이터를 기록하는 방법(300)을 도시하는 흐름도이다. 도 1의 제어기(108)와 같은 제어기는 블록(302)에서 특정 NSID에 대하여, 도 1의 호스트 디바이스(104)와 같은 호스트로부터 기록 커맨드를 수신한다. 제어기(108)는 블록(304)에서 도 1의 스냅샷 관리 디바이스(120)와 같은 스냅샷 관리 디바이스를 이용하여, 기록 커맨드와 연관된 NSID가 기본 NSID인지 결정한다. 기록 커맨드와 연관된 NSID가 기본 NSID인 경우, 도 2의 NSx와 같은 NSID의 기본 버전은 블록(306)에서 커맨드로부터의 기록 데이터를 이용하여 초기화된다.
그러나, 블록(306)에서 기록 커맨드와 연관된 NSID가 기본 NSID 버전과 같지 않은 경우, 스냅샷 관리 디바이스(120)는 블록(308)에서 기록 커맨드에 대하여 이용가능한 NAND 블록을 할당한다. 기록 커맨드와 연관된 NSID가 기본 NSID 버전과 매칭되지 않으면, 제어기(108)는 데이터가 업데이트이고, 기본 NSID 버전, NSx는 초기화되지 않아야 한다고 등록한다. 도 2의 스냅샷1 관리 테이블과 같은 관련 스냅샷 관리 테이블은 블록(310)에서 오버라이드된 LBA들의 위치로 업데이트되고 블록(312)에서 수정된 LBA들은 책정된 NAND 블록에 기록된다.
예를 들어, 블록(302)에서 하나 이상의 기록 커맨드들이 제어기(108)에 의해 수신된다. 하나 이상의 기록 커맨드들은 제3 NSID 위치, NSx+2와 연관된다. 블록(304)에서 제어기는 NSx+2 위치와 연관된 하나 이상의 기록 커맨드들이 NSx "기본" 위치와 동일하지 않다고 결정한다. NSID 위치들은 동일하지 않기 때문에, 블록(308)에서 제어기는 NSx+2 위치에 대하여 메모리 디바이스 블록을 할당한다. 블록(310)에서 스냅샷 관리 디바이스(120)는 하나 이상의 기록 커맨드들과 연관된 NSx+2 LBA들의 현재 위치로 스냅샷 관리 테이블을 업데이트한다. 블록(312)에서 제3 NSID 위치 NSx+2와 연관된 하나 이상의 기록 커맨드들은 할당된 메모리 디바이스 블록에 기록된다.
다른 예에서, 블록(302)에서 하나 이상의 기록 커맨드들이 제어기(108)에 의해 수신된다. 하나 이상의 기록 커맨드들은 제1 NSID 위치, NSx와 연관된다. 블록(304)에서 제어기는 NSx 위치와 연관된 하나 이상의 기록 커맨드들이 기본 NSID 위치와 동일하다고 결정한다. NSID 위치들이 동일하기 때문에, 블록(306)에서 기본 버전 명칭공간은 초기화된다.
도 4는 일 실시예에 따른 데이터 저장 디바이스로부터 데이터를 판독하는 방법(400)을 도시하는 흐름도이다. 블록(402)에서, 도 1의 제어기(108)와 같은 제어기는 특정 NSID 위치에 있는 하나 이상의 LBA들에 대한 하나 이상의 판독 커맨드들을 수신한다. 블록(404)에서, 제어기(108) 로직은 특정 NSID 위치를 변수 "I"로 설정한다. 제어기(108)는 도 1의 스냅샷 관리 디바이스(120)와 같은 스냅샷 관리 디바이스를 이용하여 각각의 NSID 위치 내의 LBA들의 위치를 결정할 수 있다. 블록(406)에서, "I"가 "X"인 경우, 여기서 "X"는 기본 NSID 위치, NSx와 동일할 때, 블록(408)에서 기본 버전, NSx가 판독된다.
블록(406)에서 "I"가 "x"가 아닌 경우, 블록(410)에서 NSID 위치 "I"와 연관된 스냅샷 관리 디바이스(120)의 스냅샷 관리 테이블은 관련 LBA에 대하여 판독된다. LBA가 현재 NSID 위치 "I"에 존재하는 경우, 블록(414)에서 데이터는 메모리 디바이스로부터 현재 NSID 위치 "I"로부터 판독된다. 그러나, LBA가 현재 NSID 위치 "I"에 존재하지 않는 경우, 제어기(108) 로직은 "I"(신규)는 "I"(이전)-1이라고 설정하여 NSID의 이전 스냅샷 관리 테이블이 블록(416)에서 판독되도록 한다.
"I"(신규)는 "I"(이전)-1이라고 설정한 후, 블록(406)에서 제어기(108)는 "I"(신규)가 "X"와 동일한지 결정하는데, 여기서 "X"는 기본 NSID 위치, NSx이다. 블록(408)에서 기본 버전을 판독하고, 블록(414)에서 메모리 디바이스로부터 데이터를 판독하거나, 또는 "I"(신규) = "I"(이전)-1로 설정하는 것을 포함하는 프로세스는 기본 버전이 판독되거나 또는 LBA가 현재 "I" 위치에 존재하고 메모리 디바이스 내의 현재 "I" 위치로부터 판독될 때까지 일어난다.
예를 들어, 블록(402)에서 제1 NSID 위치, NSx와 연관된 하나 이상의 LBA들에 대한 하나 이상의 판독 커맨드들은 제어기(108)에 의해 수신된다. 블록(406)에서, 제어기(108) 로직은 관련 NSID 위치를 "I"로 설정한다. 블록(406)에서, "I"는 "X"이기 때문에 (여기서 "X"는 기본 NSID 버전, NSx와 동일함), 블록(408)에서 기본 버전, NSx가 판독된다.
다른 예에서, 블록(402)에서 제3 NSID 위치, NSx+2와 연관된 하나 이상의 LBA들에 대한 하나 이상의 판독 커맨드들은 제어기(108)에 의해 수신된다. 블록(406)에서, 제어기(108) 로직은 관련 NSID 위치를 "I"로 설정한다. 제어기(108) 로직은 또한 기본 NSID 버전, NSx를 "X"로 설정한다. 블록(406)에서 "I"가 "X"가 아니기 때문에, 블록(410)에서 NSID 위치 "I"와 연관된 스냅샷 관리 디바이스(120)의 스냅샷 관리 테이블이 판독된다. NSx+2 위치에 존재하는 LBA들은 LBA3 및 LBA6이다. 하나 이상의 판독 커맨드들은 제3 NSID 위치, NSx+2의 LBA1, LBA4, 및 LBA6에 대한 것이다. 블록(412)에서 LBA6이 현재 NSID 위치에 존재하기 때문에, 414에서 데이터는 메모리 디바이스로부터 판독된다.
그러나, 블록(412)에서 LBA4가 현재 NSID 위치에 존재하지 않기 때문에, 블록(416)에서 제어기(108)는 "I"(신규) = "I"(이전)-1로 설정한다. 신규 "I"는 제2 NSID 위치, NSx+1이다. 블록(406)에서 "I"는 "X"가 아니기 때문에, 블록(410)에서 NSID 위치 "I"와 연관된 스냅샷 관리 디바이스(120)의 스냅샷 관리 테이블이 판독된다. NSx+1 위치에 존재하는 LBA들은 LBA2, LBA4 및 LBA6이다. 하나 이상의 잔여 판독 커맨드들은 제3 NSID 위치, NSx+2의 LBA1 및 LBA4에 대한 것이다. 블록(412)에서 LBA4가 현재 NSID 위치, NSx+1에 존재하기 때문에, 블록(414)에서 데이터는 메모리 디바이스로부터 판독된다. LBA6이 현재 NSID 위치에 존재함에도 불구하고, 현재 업데이트된 LBA6은 이미 NSx+2 위치로부터 판독되었다.
그러나, 블록(412)에서 LBA1이 현재 NSID 위치에 존재하지 않기 때문에, 블록(416)에서 제어기(108)는 "I"(신규) = "I"(이전)-1로 설정한다. 신규 "I"는 제1 NSID 위치, NSx이다. 블록(406)에서 "I"는 X"이기 때문에, 블록(408)에서 스냅샷 관리 디바이스(120)의 스냅샷 관리 테이블의 기본 버전 NSx가 판독된다. 기본 NSID 버전은 스냅샷 관리 테이블의 모든 기본 LBA들을 포함한다(즉, LBA0 내지 LBAn을 포함함). 하나 이상의 잔여 판독 커맨드들은 제3 NSID 위치, NSx+2의 LBA1에 대한 것이다. LBA6은 제3 NSID 위치, NSx+2로부터 판독되고, LBA4는 제2 NSID 위치, NSx+1로부터 판독되고, LBA1은 제1 NSID 위치, NSx로부터 판독된다.
도 5는 일 실시예에 따른, 명칭공간을 축출하는 방법(500)을 도시하는 흐름도이다. 도 1의 제어기(108)와 같은 제어기는 도 1의 스냅샷 관리 디바이스(120)일 수 있는 스냅샷 관리 디바이스와 같은 펌웨어 및/또는 하드웨어를 이용하여, 상이한 스냅샷 관리 테이블들을 관리할 수 있다. 스냅샷 관리 디바이스(120) 내의 이전 스냅샷들의 지원되는 버전들 또는 명칭공간들의 최대 개수는 약 15일 수 있다. 이전 스냅샷들 또는 열거된 명칭공간들의 지원되는 버전들의 최대 개수는 제한하도록 의도되지 않으며, 가능한 실시예의 예를 제공한다. 다른 실시예에서, 이전 스냅샷 관리 테이블들의 지원되는 버전들의 최대 개수는 유동적이고 다양한 응용예들 및 다양한 사용자들에 대하여 이전 버전들의 사용의 이력 통계에 기초하여 적응적으로 설정될 수 있다.
예를 들어, 스냅샷 관리 디바이스 내의 스냅샷들 또는 명칭공간들, NSx 내지 NSx+14의 합은 15이다. 16번째 NSID 위치, NSx+15와 연관된 신규 기록 커맨드가 수신되면, 스냅샷 관리 디바이스는 스냅샷 관리 디바이스로부터 스냅샷 또는 명칭공간을 축출한다. 축출된 스냅샷은 어레이 내의 제1 스냅샷 또는 어레이 내의 제1 명칭공간 또는 어레이 내의 마지막 스냅샷일 수 있다. 어레이 내의 NSx 기본 버전과 연관된 제1 스냅샷 또는 제1 명칭공간이 축출되는 경우, 관련 데이터는 어레이 내의 제2 스냅샷에 기록된다. 그러나, 수정된 LBA가 제2 스냅샷 또는 제2 명칭공간에 존재하는 경우, 제1 스냅샷 또는 제1 명칭공간으로부터의 LBA는 제2 스냅샷 또는 제2 명칭공간에 기록되지 않는다. 예를 들어, 각각의 스냅샷 또는 명칭공간 테이블은 가능한 8개의 LBA 위치들, LBA0 내지 LBA7로 구성되며, 제2 스냅샷 또는 제2 명칭공간은 수정된 LBA들, LBA0 및 LBA7로 구성된다. 제1 스냅샷 또는 제1 스냅샷이 축출될 때, LBA1 내지 LBA 6만이 제2 스냅샷 또는 제2 명칭공간에 기록된다. 제2 스냅샷 또는 제2 명칭공간은 제1 스냅샷 또는 제1 명칭공간으로 재명명되고 NSx 기본 버전과 연관된다. 16번째 NSID 위치, NSx+15와 연관된 신규 기록 커맨드는 NSx+14 위치에 대응하는 할당된 블록에 기록된다. 다른 실시예에서, 관련 데이터는 제2 스냅샷에 기록되지 않고; 대신에, 관리 테이블들 내의 포인터들이 원래 데이터에 대한 포인트로 업데이트된다(즉, 포인터들이 업데이트되는 경우 관련 데이터를 복사할 필요가 없음).
어레이 내의 NSx+14 위치와 연관된 마지막 스냅샷 또는 마지막 명칭공간이 축출되는 경우, 관련 데이터는 어레이 내의 이전 스냅샷 또는 이전 명칭공간, NSx+13에 기록된다. NSx+14 위치 내의 수정된 LBA들은 NSx+13 위치 내의 대응하는 위치에 기록된다. 예를 들어, 각각의 스냅샷 테이블은 가능한 8개의 LBA 위치들, LBA0 내지 LBA7로 구성되고, 마지막 스냅샷 또는 마지막 명칭공간, NSx+14는 수정된 LBA들, LBA0 및 LBA7로 구성되고, 이전 스냅샷 또는 이전 명칭공간, NSx+13은 수정된 LBA, LBA0으로 구성된다. 마지막 스냅샷 또는 마지막 명칭공간이 축출될 때, 마지막 스냅샷 또는 마지막 명칭공간, NSx+14와 연관된 수정된 LBA들, LBA0 및 LBA7은 이전 스냅샷 또는 이전 명칭공간, NSx+13에 기록된다. 이전에 NSx+13에 존재했던 수정된 LBA, LBA0은 마지막 스냅샷 또는 마지막 명칭공간, NSx+14의 더 현재의 수정된 LBA, LBA0에 의해 중복기록된다. 16번째 NSID 위치, NSx+15와 연관된 신규 기록 커맨드는 NSx+14 위치에 대응하는 할당된 블록에 기록된다.
스냅샷 관리 디바이스(120)는 축출 프로세스와 연관된 스냅샷들 또는 명칭공간들의 지원된 이전 버전들의 최소 및 최대 개수를 설정하기 위한 로직으로 구성될 수 있다. 또한, 하나 이상의 스냅샷들 또는 하나 이상의 명칭공간들은 동시에 축출될 수 있다. 동시에 축출할 사전결정된 수는 5개의 스냅샷들 또는 5개의 명칭공간들일 수 있다. 열거된 동시에 축출된 스냅샷들 또는 명칭공간들의 수는 제한하도록 의도되지 않으며, 가능한 실시예의 예를 제공한다. 스냅샷들 또는 명칭공간들의 지원된 이전 버전들의 최소 수는 "RSN"으로 표시된다. 스냅샷 또는 명칭공간 업데이트 델타는 "SUD"로 표시되고, 이는 동시에 축출될 스냅샷들 또는 명칭공간들의 사전결정된 수이다. "RSN"과 "SUD"를 합산함으로써, 스냅샷들 또는 명칭공간들의 지원된 이전 버전들의 최대 개수가 계산될 수 있다. 예를 들어, "RSN"이 10이고 "SUD"가 5이면, 스냅샷들 또는 명칭공간들의 지원된 이전 버전들의 최대 개수는 15이다.
방법(500)은 이전에 설명된 스냅샷 또는 명칭공간 축출 프로세스를 설명한다. 블록(502)에서 제어기(108)는 스냅샷 관리 디바이스(120)가 필수 스냅샷 수(RSN) 및 스냅샷 업데이트 델타(SUD)를 갖도록 구성한다. 블록(504)에서 스냅샷 관리 디바이스(120)는 초기 스냅샷 또는 초기 명칭공간을 수신하고, 관련 메모리 디바이스 블록에 기록된다. 초기 스냅샷 또는 초기 명칭공간은 기본 NSID 버전 또는 NSx이다. 스냅샷 관리 디바이스(120)는 스냅샷 관리 디바이스(120)와 연관된 스냅샷들 또는 명칭공간들의 총 개수를 결정하기 위한 카운터로 구성될 수 있다. 블록(506)에서 스냅샷 관리 디바이스(120)는 카운터를 0으로 설정한다.
블록(508)에서, 스냅샷 관리 디바이스(120)는 하나 이상의 LBA들과 연관된 버전 업데이트를 수신하고, 관련 메모리 디바이스 블록을 책정한다. 블록(508)에서 버전 업데이트가 수신될 때마다 블록(510)에서 카운터가 1씩 증가한다. 블록(512)에서 스냅샷 관리 디바이스(120)는 카운터가 "RSN"과 "SUD"의 합보다 큰지 결정한다. 블록(512)에서 카운터가 "RSN"과 "SUD"의 합보다 작으면, 스냅샷 관리 디바이스들은 블록(508)에서 버전 업데이트가 수신될 때까지 대기한다. 블록(512)에서 카운터가 "RSN"과 "SUD"의 합보다 크면, 블록(514)에서 이전에 설명된 축출 프로세스가 진행될 것이다. 축출은 스냅샷들 또는 명칭공간들의 사전결정된 수에 영향을 줄 수 있다. 블록(516)에서 축출되는 스냅샷들 또는 명칭공간들의 수는 카운터로부터 차감되고 블록(508)에서 버전 업데이트가 수신될 때까지 스냅샷 관리 디바이스(120)는 대기한다.
일 예에서, "RSN"은 10이고 "SUD"는 5여서, "RSN"과 "SUD"의 합은 15이다. 블록(502)에서 스냅샷 관리 디바이스(120)는 "RSN" 및 "SUD"와 연관된 필수 개수로 구성된다. 블록(504)에서, 스냅샷 관리 디바이스(120)는 기본 NSID 버전, NSx와 연관된 초기 버전을 수신한다. 블록(506)에서 스냅샷 관리 디바이스(120) 카운터는 0으로 설정된다. 블록(508)에서 수정된 LBA들과 연관된 업데이트 버전이 스냅샷 관리 디바이스(120)에 의해 수신된다. 현재 업데이트 버전과 연관된 수정된 LBA들은 책정된 NSID 위치, NSx+1에 기록된다. 블록(510)에서 스냅샷 관리 디바이스(120)와 연관된 카운터는 1씩 증가한다. 블록(512)에서 카운터는 1이고, 15인 "RSN"과 "SUD"의 합보다 작기 때문에, 블록(508)에서 다른 버전 업데이트가 수신될 때까지 스냅샷 관리 디바이스(120)는 대기한다.
블록(512)에서 카운터가 16이고, 15인 "RSN"과 "SUD"의 합보다 크면, 블록(514)에서 축출 프로세스가 진행된다. "SUD"가 5이기 때문에, 5개의 명칭공간들 또는 5개의 스냅샷들은 스냅샷 관리 테이블로부터 축출된다. 5개의 명칭공간들 또는 5개의 스냅샷들은 스냅샷 어레이의 시작 또는 스냅샷 어레이의 끝에서부터일 수 있다. 관련 스냅샷 또는 명칭공간 위치들은 축출된 명칭공간 또는 스냅샷 위치들로부터의 관련 LBA 위치들로 업데이트된다. 블록(516)에서 "SUD"가 카운터로부터 차감된다. 카운터는 이제 11이다. 블록(508)에서 스냅샷 관리 디바이스(120)는 버전 업데이트를 수신하기 위하여 대기한다. 스냅샷 또는 명칭공간 위치들이 축출되면, 어레이는 축출된 스냅샷 또는 명칭공간들 위치들의 개수에 의해 조정되어, NSx+1은 이전에 NSx+6일 수 있고, NSx는 이전에 NSx+5 등일 수 있다.
스냅샷 관리 시스템을 본 명세서에 기재된 바와 같이 구현함으로써, 데이터 저장 디바이스 성능 및 내구성은 카피-온(copy-on) 기록 스냅샷들에 비교하여 기록 스냅샷 구현 상의 재지향으로 인해 현저하게 증가된다. 또한, 스냅샷들은 매우 빠르게 생성되어 성능을 개선한다. 추가적으로, 효율적인 스케일-아웃 구현예가 가능한데, 그 이유는 스케일 아웃이 모든 노드들 및 메모리 디바이스들에 걸쳐 데이터 및 스냅샷 메타데이터 둘 모두에 확장되고 균형을 맞추기 때문이다. 마지막으로, 해결책은 NVMe 표준의 잘 정의된 명칭공간 특징부에 기초하며, 이는 강건하고 신뢰성있는 해결책으로 이어진다.
일 실시예에서, 데이터 저장 디바이스는: 메모리 디바이스; 및 메모리 디바이스에 결합된 제어기를 포함하고, 제어기는: 특정 명칭공간에 대한 기록 커맨드를 수신하고; 특정 명칭공간이 기본 버전의 업데이트임을 결정하고; 메모리 디바이스의 메모리 블록을 할당하고; 스냅샷 관리 테이블을 업데이트하고; 할당된 블록에 데이터를 기록하도록 구성된다. 제어기는 스냅샷 관리 디바이스를 포함한다. 스냅샷 관리 디바이스는 메모리 블록을 할당하고, 스냅샷 관리 테이블을 업데이트하고, 할당된 블록에 상기 데이터를 기록한다. 할당된 블록에 기록된 데이터는 수정된 LBA들이다. 변경되지 않은 기본 데이터는 상이한 명칭공간에 유지된다. 제어기는, 특정 명칭공간이 기본 버전의 업데이트라고 결정 시, 기본 버전을 초기화하지 않도록 추가로 구성된다. 제어기는 업데이트되지 않은 데이터를 명칭공간 축출 프로세스 동안 상이한 명칭공간에 기록하도록 추가로 구성된다. 제어기는 스냅샷 관리 테이블 내의 포인터들을 기본 버전에 대한 포인트로 업데이트하도록 추가로 구성된다.
다른 실시예에서, 데이터 저장 디바이스는: 메모리 디바이스; 및 메모리 디바이스에 결합된 제어기를 포함하고, 제어기는: 특정 명칭공간 ID(NSID)에 대한 판독 커맨드를 수신하고; 특정 NSID가 기본 버전이 아님을 결정하고; 특정 NSID의 스냅샷 관리 테이블을 판독하고; 메모리 디바이스로부터 데이터를 판독하거나; 특정 NSID를 하나씩 감소시키도록 구성된다. 제어기는: 특정 NSID를 하나씩 감소시키고; 특정 NSID가 기본 버전이 아님을 결정하고; 특정 NSID의 스냅샷 관리 테이블을 판독하고; 메모리 디바이스로부터 데이터를 판독하거나; 특정 NSID를 하나씩 감소시키도록 추가로 구성된다. 제어기는 메모리 디바이스로부터 데이터를 판독하도록 추가로 구성되고, 판독은 제1 명칭공간 및 제2 명칭공간으로부터 업데이트된 데이터를 판독하는 것을 포함한다. 제어기는: 특정 명칭공간이 기본 버전의 업데이트임을 결정하고; 메모리 디바이스의 메모리 블록을 할당하고; 스냅샷 관리 테이블을 업데이트하고; 할당된 블록에 데이터를 기록하도록 추가로 구성된다. 제어기는 명칭공간들의 개수가 임계치를 초과하면 하나 이상의 명칭공간들을 축출하도록 추가로 구성된다. 축출은 상이한 명칭공간으로 데이터를 이동시키고, 축출된 명칭공간을 해제하는 것을 포함한다. 스냅샷 관리 테이블은 특정 명칭공간에 대한 특정 업데이트된 LBA들에 관한 정보를 포함한다.
다른 실시예에서, 데이터 저장 디바이스는: 메모리 디바이스; 및 메모리 디바이스에 결합된 제어기를 포함하고, 제어기는: 필수 스냅샷 수(RSN)의 설정을 수신하고; 스냅샷 업데이트 델타(SUD)를 수신하고; 카운터를 0으로 설정하고; 데이터에 대한 버전 업데이트를 수신하고; 카운터를 1씩 증가시키고; 카운터가 RSN + SUD를 초과하는지 결정하도록 구성된다. 카운터가 RSN + SUD를 초과하는 경우 제어기는 하나 이상의 스냅샷들을 축출하도록 추가로 구성된다. 제어기는, 하나 이상의 스냅샷들을 축출한 후에, 데이터에 대한 버전 업데이트를 수신하는 것, 카운터를 1씩 증가시키는 것, 카운터가 RSN + SUD를 초과하는지 결정하는 것을 반복하도록 추가로 구성된다. 제어기는 스냅샷을 축출한 후에 카운터를 1씩 감소시키도록 추가로 구성된다. 제어기는, 카운터가 RSN + SUD를 초과한다고 결정한 후에, 데이터에 대한 버전 업데이트를 수신하는 것, 카운터를 1씩 증가시키는 것, 카운터가 RSN + SUD를 초과하는지 결정하는 것을 반복하도록 추가로 구성된다. 제어기는 SUD에 대하여 신규 기본 버전을 설정하도록 구성된다.
전술한 것은 본 개시의 실시예들에 관한 것이지만, 본 개시의 다른 및 추가 실시예들이 본 개시의 기본 범위로부터 벗어남이 없이 고안될 수 있으며, 본 개시의 그 범위는 후속하는 청구범위에 의해 결정된다.

Claims (20)

  1. 데이터 저장 디바이스로서,
    메모리 디바이스; 및
    상기 메모리 디바이스에 결합된 제어기를 포함하고, 상기 제어기는:
    특정 명칭공간 ID(NSID)에 대해 데이터를 프로그램하는 기록 커맨드를 수신하고;
    상기 기록 커맨드가 기본 스냅샷 버전에 대한 업데이트와 관련되어 있음을 결정하고 - 상기 기본 스냅샷 버전의 논리 블록 주소(logical block address, LBA)들은 스냅샷 관리 테이블의 제1 스냅샷에 저장됨 -;
    상기 메모리 디바이스의 메모리 블록을 할당하고;
    상기 스냅샷 관리 테이블의 제2 스냅샷을 업데이트하고 - 상기 제2 스냅샷은 상기 업데이트에 대응하는 업데이트된 LBA들로 구성됨 -;
    상기 기록 커맨드와 관련된 상기 데이터를 상기 할당된 블록에 기록하고;
    상기 특정 NSID와 관련된 스냅샷의 총 개수가 스냅샷의 임계 개수를 초과하는지 여부를 결정하고;
    상기 특정 NSID와 관련된 스냅샷의 상기 총 개수가 스냅샷의 상기 임계 개수를 초과하는 경우에 스냅샷 축출 프로세스에서 사전결정된 개수의 스냅샷을 축출하도록 구성된, 데이터 저장 디바이스.
  2. 제1항에 있어서, 상기 제어기는 스냅샷 관리 디바이스를 포함하는, 데이터 저장 디바이스.
  3. 제2항에 있어서, 상기 스냅샷 관리 디바이스는 상기 메모리 블록을 할당하고, 상기 스냅샷 관리 테이블을 업데이트하고, 상기 할당된 블록에 상기 기록 커맨드와 관련된 상기 데이터를 기록하는, 데이터 저장 디바이스.
  4. 제1항에 있어서, 상기 할당된 블록에 기록되는 상기 데이터는 상기 제2 스냅샷의 상기 업데이트된 LBA들과 관련된 것인, 데이터 저장 디바이스.
  5. 제4항에 있어서, 변경되지 않은 기본 데이터는 이전 스냅샷 버전으로 유지되는, 데이터 저장 디바이스.
  6. 제1항에 있어서, 상기 제어기는, 상기 기록 커맨드가 상기 기본 스냅샷 버전에 대한 상기 업데이트와 관련되어 있다고 결정 시, 상기 기본 스냅샷 버전을 초기화하지 않도록 추가로 구성된, 데이터 저장 디바이스.
  7. 제1항에 있어서, 상기 제어기는
    축출된 스냅샷과 관련된 하나 이상의 LBA를, 상기 스냅샷 축출 프로세스 동안, 인접한 스냅샷에 기록하도록 추가로 구성되고, 상기 인접한 스냅샷은 상기 축출된 스냅샷에 순차적이고, 상기 인접한 스냅샷은 축출되지 않는 것인, 데이터 저장 디바이스.
  8. 제1항에 있어서, 상기 제어기는 상기 스냅샷 관리 테이블 내의 포인터들을 상기 기본 스냅샷 버전에 대한 포인트로 업데이트하도록 추가로 구성된, 데이터 저장 디바이스.
  9. 제1항에 있어서,
    상기 제어기는:
    상기 메모리 디바이스로부터 상기 특정 NSID의 특정 스냅샷으로부터 데이터를 판독하기 위한, 논리 블록 어드레스(LBA)와 관련된 판독 커맨드를 수신하고;
    상기 특정 스냅샷이 상기 기본 스냅샷 버전이 아님을 결정하고;
    상기 특정 스냅샷에 대한 상기 특정 NSID의 상기 스냅샷 관리 테이블을 판독하고;
    상기 판독 커맨드와 관련된 상기 LBA가 상기 스냅샷 관리 테이블에 따라 상기 특정 스냅샷 내에 존재하는 경우 상기 메모리 디바이스로부터 데이터를 판독하거나;
    또는
    상기 특정 NSID의 상기 스냅샷 관리 테이블의 다음 판독 동작에서 감소된 특정 스냅샷과 관련된 하나 이상의 업데이트된 LBA들로 구성된 감소된 특정 스냅샷을 판독하기 위하여, 상기 판독 커맨드와 관련된 LBA가 상기 스냅샷 관리 테이블에 따른 상기 특정 스냅샷 내에 존재하지 않는 경우 상기 특정 스냅샷을 감소시키도록 - 상기 감소는 상기 판독 커맨드와 관련된 상기 LBA가 상기 감소된 특정 스냅샷 내에 존재할 때까지 발생하고, 상기 판독 커맨드와 관련된 상기 LBA가 상기 감소된 특정 스냅샷 내에 존재하는 경우 상기 LBA가 상기 감소된 특정 스냅샷으로부터 판독됨 -
    추가로 구성된, 데이터 저장 디바이스.
  10. 제9항에 있어서, 상기 제어기는, 상기 특정 스냅샷을 하나씩 감소시키는 경우,
    상기 감소된 특정 스냅샷이 상기 기본 스냅샷 버전이 아님을 결정하고;
    상기 감소된 특정 스냅샷에 대한 상기 스냅샷 관리 테이블을 판독하고;
    상기 판독 커맨드와 관련된 상기 LBA가 상기 스냅샷 관리 테이블에 따른 상기 감소된 특정 스냅샷 내에 존재하는 경우 상기 메모리 디바이스로부터 데이터를 판독하거나;
    또는,
    상기 판독 커맨드와 관련된 상기 LBA가 상기 스냅샷 관리 테이블에 따른 상기 감소된 특정 스냅샷 내에 존재하지 않는 경우 상기 감소된 특정 스냅샷을 하나씩 감소시키도록 추가로 구성된, 데이터 저장 디바이스.
  11. 제9항에 있어서, 상기 판독 커맨드와 관련된 상기 LBA가 상기 스냅샷 관리 테이블에 따른 상기 특정 스냅샷 내에 존재하는 경우 상기 메모리 디바이스로부터 데이터를 판독하는 것은, 상기 특정 NSID로부터 업데이트된 데이터를 판독하는 것을 포함하는, 데이터 저장 디바이스.
  12. 삭제
  13. 삭제
  14. 삭제
  15. 제1항에 있어서, 상기 스냅샷 관리 테이블의 각각의 스냅샷은 상기 특정 NSID의 각각의 버전에 대한 하나 이상의 업데이트된 LBA들에 관한 정보를 포함하는, 데이터 저장 디바이스.
  16. 데이터 저장 디바이스로서,
    메모리 디바이스; 및
    상기 메모리 디바이스에 결합된 제어기를 포함하고, 상기 제어기는:
    필수 스냅샷 수(RSN)의 설정을 수신하고;
    스냅샷 업데이트 델타(SUD)를 수신하고 - 상기 SUD는 동시에 축출될 스냅샷들 또는 명칭공간들의 사전결정된 수임 - ;
    카운터를 0으로 설정하고;
    데이터에 대한 버전 업데이트가 수신되면, 상기 카운터를 1씩 증가시키고;
    상기 카운터가 RSN + SUD를 초과하는지 여부를 결정하도록 구성된, 데이터 저장 디바이스.
  17. 제16항에 있어서, 상기 카운터가 RSN + SUD를 초과하는 경우 상기 제어기는 하나 이상의 스냅샷들을 축출하도록 추가로 구성된, 데이터 저장 디바이스.
  18. 제17항에 있어서, 상기 제어기는, 하나 이상의 스냅샷들을 축출한 후에, 데이터에 대한 버전 업데이트를 수신하는 것, 상기 카운터를 1씩 증가시키는 것, 상기 카운터가 RSN + SUD를 초과하는지 여부를 결정하는 것을 반복하도록 추가로 구성된, 데이터 저장 디바이스.
  19. 제16항에 있어서, 상기 제어기는, 상기 카운터가 RSN + SUD를 초과한다고 결정한 후에, 데이터에 대한 버전 업데이트를 수신하는 것, 상기 카운터를 1씩 증가시키는 것, 상기 카운터가 RSN + SUD를 초과하는지 여부를 결정하는 것을 반복하도록 추가로 구성된, 데이터 저장 디바이스.
  20. 제16항에 있어서, 상기 제어기는 SUD에 대하여 신규 기본 버전을 설정하도록 구성된, 데이터 저장 디바이스.
KR1020220103540A 2020-03-12 2022-08-18 분할된 저장장치에서의 스냅샷 관리 KR102589609B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/817,264 2020-03-12
US16/817,264 US11640371B2 (en) 2020-03-12 2020-03-12 Snapshot management in partitioned storage
KR1020200072878A KR20210116158A (ko) 2020-03-12 2020-06-16 분할된 저장장치에서의 스냅샷 관리

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020200072878A Division KR20210116158A (ko) 2020-03-12 2020-06-16 분할된 저장장치에서의 스냅샷 관리

Publications (2)

Publication Number Publication Date
KR20220119348A KR20220119348A (ko) 2022-08-29
KR102589609B1 true KR102589609B1 (ko) 2023-10-13

Family

ID=77457315

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020200072878A KR20210116158A (ko) 2020-03-12 2020-06-16 분할된 저장장치에서의 스냅샷 관리
KR1020220103540A KR102589609B1 (ko) 2020-03-12 2022-08-18 분할된 저장장치에서의 스냅샷 관리

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020200072878A KR20210116158A (ko) 2020-03-12 2020-06-16 분할된 저장장치에서의 스냅샷 관리

Country Status (4)

Country Link
US (1) US11640371B2 (ko)
KR (2) KR20210116158A (ko)
CN (1) CN113391760B (ko)
DE (1) DE102020115946B4 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230418741A1 (en) * 2022-06-27 2023-12-28 Western Digital Technologies, Inc. Data storage device management system

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007094472A (ja) 2005-09-27 2007-04-12 Hitachi Ltd スナップショット管理装置及び方法並びにストレージシステム
US20080320258A1 (en) 2007-06-25 2008-12-25 Dot Hill Systems Corp. Snapshot reset method and apparatus
US20120143822A1 (en) 2005-12-09 2012-06-07 Tomoya Anzai Storage system, nas server and snapshot acquisition method
US20130227236A1 (en) 2011-03-18 2013-08-29 Fusion-Io, Inc. Systems and methods for storage allocation
US20150039577A1 (en) 2013-08-01 2015-02-05 Fusion-Io, Inc. Systems and methods for atomic storage operations
US20160048431A1 (en) 2012-03-28 2016-02-18 Netapp Inc. Methods and systems for replicating an expandable storage volume
US20160274980A1 (en) 2015-03-20 2016-09-22 Electronics And Telecommunications Research Institute Distributed file system
US9824095B1 (en) 2010-05-03 2017-11-21 Panzura, Inc. Using overlay metadata in a cloud controller to generate incremental snapshots for a distributed filesystem
US20170344430A1 (en) * 2016-05-24 2017-11-30 Intel Corporation Method and apparatus for data checkpointing and restoration in a storage device
US20180101477A1 (en) 2016-10-10 2018-04-12 Dell Products, Lp System and method for adaptive optimization for performance in solid state drives based on read/write intensity
US20190311047A1 (en) * 2018-04-06 2019-10-10 Vmware, Inc. Optimal snapshot deletion
US20190332500A1 (en) 2017-01-13 2019-10-31 Huawei Technologies Co., Ltd. Method and system for global snapshots of distributed storage
US11157173B2 (en) 2017-10-23 2021-10-26 Micron Technology, Inc. Namespace management in non-volatile memory devices

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4562372B2 (ja) * 2003-10-16 2010-10-13 株式会社ブロードリーフ 更新データ配信サーバ及び更新データ配信システム
JP4456909B2 (ja) * 2004-03-29 2010-04-28 株式会社日立製作所 バックアップ方法、ストレージシステム及びそのプログラム
US7752381B2 (en) * 2005-05-24 2010-07-06 Micron Technology, Inc. Version based non-volatile memory translation layer
TWI316188B (en) * 2006-05-17 2009-10-21 Ind Tech Res Inst Mechanism and method to snapshot data
US8046547B1 (en) * 2007-01-30 2011-10-25 American Megatrends, Inc. Storage system snapshots for continuous file protection
JP4675984B2 (ja) * 2008-02-29 2011-04-27 株式会社東芝 メモリシステム
US20170123931A1 (en) * 2011-08-12 2017-05-04 Nexenta Systems, Inc. Object Storage System with a Distributed Namespace and Snapshot and Cloning Features
US8538924B2 (en) * 2011-08-31 2013-09-17 Hitachi, Ltd. Computer system and data access control method for recalling the stubbed file on snapshot
EP2839376A4 (en) 2012-04-20 2015-11-25 Violin Memory Inc MEMORY EXTRAS IN A FLASH MEMORY STORAGE SYSTEM
US9678863B2 (en) 2012-06-12 2017-06-13 Sandisk Technologies, Llc Hybrid checkpointed memory
US9311014B2 (en) * 2012-11-29 2016-04-12 Infinidat Ltd. Storage system and methods of mapping addresses of snapshot families
US9514137B2 (en) * 2013-06-12 2016-12-06 Exablox Corporation Hybrid garbage collection
US10248682B2 (en) * 2015-02-20 2019-04-02 Scality, S.A. Object storage system capable of performing snapshots, branches and locking
US9880755B2 (en) 2015-02-25 2018-01-30 Western Digital Technologies, Inc. System and method for copy on write on an SSD
JP6464038B2 (ja) * 2015-06-09 2019-02-06 日立オートモティブシステムズ株式会社 リプログラミングシステム
JP6403162B2 (ja) * 2015-07-23 2018-10-10 東芝メモリ株式会社 メモリシステム
US10326836B2 (en) 2015-12-08 2019-06-18 Pure Storage, Inc. Partially replicating a snapshot between storage systems
CN107145302B (zh) * 2016-03-01 2020-06-19 阿里巴巴集团控股有限公司 一种用于在分布式存储系统中执行文件写入的方法与设备
US10860427B1 (en) * 2016-12-23 2020-12-08 EMC IP Holding Company LLC Data protection in a large-scale cluster environment
US10866963B2 (en) 2017-12-28 2020-12-15 Dropbox, Inc. File system authentication
CN110399333B (zh) * 2018-04-20 2023-07-18 伊姆西Ip控股有限责任公司 删除快照的方法、设备和计算机程序产品
US10949341B2 (en) * 2018-08-27 2021-03-16 Samsung Electronics Co., Ltd. Implementing snapshot and other functionality in KVSSD through garbage collection and FTL
US11055179B2 (en) * 2019-08-07 2021-07-06 Rubrik, Inc. Tree-based snapshots
US11645241B2 (en) * 2019-09-13 2023-05-09 Oracle International Corporation Persistent memory file store for directly mapped persistent memory database
US11269737B2 (en) * 2019-09-16 2022-03-08 Microsoft Technology Licensing, Llc Incrementally updating recovery map data for a memory system

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007094472A (ja) 2005-09-27 2007-04-12 Hitachi Ltd スナップショット管理装置及び方法並びにストレージシステム
US20120143822A1 (en) 2005-12-09 2012-06-07 Tomoya Anzai Storage system, nas server and snapshot acquisition method
US20080320258A1 (en) 2007-06-25 2008-12-25 Dot Hill Systems Corp. Snapshot reset method and apparatus
US9824095B1 (en) 2010-05-03 2017-11-21 Panzura, Inc. Using overlay metadata in a cloud controller to generate incremental snapshots for a distributed filesystem
US20130227236A1 (en) 2011-03-18 2013-08-29 Fusion-Io, Inc. Systems and methods for storage allocation
US20160048431A1 (en) 2012-03-28 2016-02-18 Netapp Inc. Methods and systems for replicating an expandable storage volume
US20150039577A1 (en) 2013-08-01 2015-02-05 Fusion-Io, Inc. Systems and methods for atomic storage operations
US20160274980A1 (en) 2015-03-20 2016-09-22 Electronics And Telecommunications Research Institute Distributed file system
US20170344430A1 (en) * 2016-05-24 2017-11-30 Intel Corporation Method and apparatus for data checkpointing and restoration in a storage device
US20180101477A1 (en) 2016-10-10 2018-04-12 Dell Products, Lp System and method for adaptive optimization for performance in solid state drives based on read/write intensity
US20190332500A1 (en) 2017-01-13 2019-10-31 Huawei Technologies Co., Ltd. Method and system for global snapshots of distributed storage
US11157173B2 (en) 2017-10-23 2021-10-26 Micron Technology, Inc. Namespace management in non-volatile memory devices
US20190311047A1 (en) * 2018-04-06 2019-10-10 Vmware, Inc. Optimal snapshot deletion

Also Published As

Publication number Publication date
DE102020115946A1 (de) 2021-09-16
DE102020115946B4 (de) 2024-07-04
KR20210116158A (ko) 2021-09-27
US20210286762A1 (en) 2021-09-16
KR20220119348A (ko) 2022-08-29
CN113391760A (zh) 2021-09-14
US11640371B2 (en) 2023-05-02
CN113391760B (zh) 2024-06-04

Similar Documents

Publication Publication Date Title
US9842059B2 (en) Wear leveling in storage devices
US20180173419A1 (en) Hybrid ssd with delta encoding
US10235069B2 (en) Load balancing by dynamically transferring memory range assignments
US20170206170A1 (en) Reducing a size of a logical to physical data address translation table
KR102656959B1 (ko) 존 구획 네임스페이스를 갖는 호스트 관리 하드웨어 압축
US11061598B2 (en) Optimized handling of multiple copies in storage management
KR102589609B1 (ko) 분할된 저장장치에서의 스냅샷 관리
US11847337B2 (en) Data parking for ZNS devices
US20210333996A1 (en) Data Parking for SSDs with Streams
US11966630B2 (en) Key-to-physical table optimization for key value data storage devices
US11630592B2 (en) Data storage device database management architecture
US20240111443A1 (en) Finding and releasing trapped memory in ulayer
US20240078032A1 (en) Metadata Management In Key Value Data Storage Device
US11989431B2 (en) Write updates sorting during BKOPS idle
US11853563B1 (en) Key value data storage device with tiers
US12019878B2 (en) Pre-validation of blocks for garbage collection
US11894046B2 (en) Alignment optimization of key value pair data storage
US11640253B2 (en) Method to use flat relink table in HMB
US20240168644A1 (en) QoS Optimization By Using Data Tracking Module
US20240078184A1 (en) Transparent Host Memory Buffer
US20240143512A1 (en) Write buffer linking for easy cache reads
US20210373769A1 (en) Data Integrity Protection Of SSDs Utilizing Streams

Legal Events

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