KR20230060065A - 스토리지 장치 및 전자 시스템 - Google Patents

스토리지 장치 및 전자 시스템 Download PDF

Info

Publication number
KR20230060065A
KR20230060065A KR1020210144308A KR20210144308A KR20230060065A KR 20230060065 A KR20230060065 A KR 20230060065A KR 1020210144308 A KR1020210144308 A KR 1020210144308A KR 20210144308 A KR20210144308 A KR 20210144308A KR 20230060065 A KR20230060065 A KR 20230060065A
Authority
KR
South Korea
Prior art keywords
data
snapshot
stream
virtual machine
storage device
Prior art date
Application number
KR1020210144308A
Other languages
English (en)
Inventor
지수영
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020210144308A priority Critical patent/KR20230060065A/ko
Priority to US17/811,336 priority patent/US20230126685A1/en
Priority to CN202211181104.8A priority patent/CN116027965A/zh
Publication of KR20230060065A publication Critical patent/KR20230060065A/ko

Links

Images

Classifications

    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

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)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

전자 시스템은, 복수의 가상 머신들을 구동하는 호스트; 및 복수의 메모리 영역들을 포함하고, 상기 호스트로부터의 데이터를 복수의 스트림들로 분류하고, 상기 복수의 스트림들을 상기 복수의 메모리 영역들에 구분하여 저장하는 멀티 스트림 기능을 제공하는 스토리지 장치를 포함하고, 상기 스토리지 장치는 상기 복수의 가상 머신들 중 제1 가상 머신의 체크인 스냅샷 커맨드에 응하여 상기 제1 가상 머신에 제1 스트림 ID(identifier)를 할당하고, 상기 제1 가상 머신으로부터의 데이터를 상기 제1 스트림 ID에 대응하는 제1 메모리 영역에 저장하며, 상기 제1 가상 머신은 상기 스토리지 장치로 체크아웃 스냅샷 커맨드를 제공하고, 상기 데이터의 논리 주소들을 가리키는 제1 스냅샷 정보를 생성하며, 상기 스토리지 장치는 상기 체크아웃 스냅샷 커맨드에 응하여 상기 데이터의 논리 주소들을 포함하는 스냅샷 관리 정보를 저장하고, 상기 제1 스트림 ID를 할당 해제한다.

Description

스토리지 장치 및 전자 시스템{STORAGE DEVICE AND ELECTRONIC SYSTEM}
본 발명은 스토리지 장치 및 전자 시스템에 관한 것이다.
메모리 장치를 이용한 스토리지 장치는 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며, 또한 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 스토리지 장치는, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등을 포함한다.
반도체 메모리 장치는 크게 휘발성 메모리 장치(Volatile Memory Device)와 비휘발성 메모리 장치(Nonvolatile Memory Device)로 구분된다. 휘발성 메모리 장치는 읽고 쓰는 속도가 빠르지만 외부 전원 공급이 끊기 면 저장된 내용이 사라져 버리는 단점이 있다. 반면에 비휘발성 메모리 장치는 외부 전원 공급이 중단되더라도 그 내용을 보존한다. 그러므로 비휘발성 메모리 장치는 전원이 공급되었는지의 여부에 관계없이 보존되어야 할 내용을 기억시키는 데 쓰인다.
다만, 비휘발성 메모리 장치는 하드 디스크 드라이브와 달리 덮어쓰기를 할 수 없다. 따라서, 비휘발성 메모리 장치는 갱신되는 데이터를 새로운 위치에 저장하고, FTL(Flash Translation Layer)를 통해 메모리 주소를 관리한다. 또한, 덮어쓰기를 할 수 없기 때문에, 비휘발성 메모리 장치는 소거 동작을 통해 프리 블록을 제공한다. 프리 블록을 생성하기 위해, 비휘발성 메모리 장치는 가비지 콜렉션(Garbage Collection) 동작을 주기적으로 수행한다.
가비지 콜렉션 동작이 지나치게 자주 수행되는 경우 스토리지 장치의 성능이 저하되고 비휘발성 메모리 장치가 마모(wear out)될 수 있다. 가비지 콜렉션 동작을 줄이고 쓰기 증폭(WAF; write amplification)을 줄이기 위해, 스토리지 장치는 데이터를 복수의 스트림들로 분류하고, 복수의 스트림들을 복수의 메모리 영역들에 구분하여 저장하는 멀티 스트림 기능을 제공할 수 있다.
본 발명은 멀티 스트림 기능을 제공하는 스토리지 장치와 관련되는 구성들 및 동작들을 제공하고자 한다.
본 발명은 멀티 스트림 스토리지를 이용하여 복수의 가상 머신들의 스냅샷(snapshot) 동작을 지원하고자 한다.
본 발명은 가상 머신들의 데이터를 비휘발성 메모리에 구분하여 저장함으로써 스토리지 장치의 쓰기 증폭을 방지하고자 한다.
본 발명은 가상 머신이 스냅샷 동작을 수행할 때의 호스트와 스토리지 장치 간의 데이터 이동량을 줄임으로써 신속하고 정확한 스냅샷 동작을 지원하고자 한다.
본 발명은 스토리지 장치의 제한된 수의 스트림 식별자(ID; identifier)들을 이용하여 다수의 가상 머신들의 스냅샷 동작을 지원하고자 한다.
본 발명의 실시 예에 따른 전자 시스템은, 복수의 가상 머신들을 구동하는 호스트; 및 복수의 메모리 영역들을 포함하고, 상기 호스트로부터의 데이터를 복수의 스트림들로 분류하고, 상기 복수의 스트림들을 상기 복수의 메모리 영역들에 구분하여 저장하는 멀티 스트림 기능을 제공하는 스토리지 장치를 포함하고, 상기 스토리지 장치는 상기 복수의 가상 머신들 중 제1 가상 머신의 체크인 스냅샷 커맨드에 응하여 상기 제1 가상 머신에 제1 스트림 ID(identifier)를 할당하고, 상기 제1 가상 머신으로부터의 데이터를 상기 제1 스트림 ID에 대응하는 제1 메모리 영역에 저장하며, 상기 제1 가상 머신은 상기 스토리지 장치로 체크아웃 스냅샷 커맨드를 제공하고, 상기 데이터의 논리 주소들을 가리키는 제1 스냅샷 정보를 생성하며, 상기 스토리지 장치는 상기 체크아웃 스냅샷 커맨드에 응하여 상기 데이터의 논리 주소들을 포함하는 스냅샷 관리 정보를 저장하고, 상기 제1 스트림 ID를 할당 해제한다.
본 발명의 실시 예에 따른 스토리지 장치는, 복수의 메모리 영역들을 포함하는 메모리 장치; 및 호스트로부터의 데이터를 복수의 스트림들로 분류하고, 상기 복수의 스트림들을 상기 복수의 메모리 영역들에 구분하여 저장하는 멀티 스트림 기능을 제공하는 컨트롤러를 포함하며, 상기 컨트롤러는 상기 호스트에서 구동되고 시간적으로 중첩된 스냅샷 동작을 수행하는 복수의 가상 머신들에 서로 다른 스트림 ID들을 할당하고, 상기 복수의 가상 머신들로부터의 데이터를 상기 스트림 ID들에 기초하여 상기 복수의 메모리 영역들에 구분하여 저장할 수 있다.
본 발명의 실시 예에 따른 스토리지 장치는, 복수의 메모리 영역들을 포함하는 메모리 장치; 및 호스트로부터의 데이터를 복수의 스트림들로 분류하고, 상기 복수의 스트림들을 상기 복수의 메모리 영역들에 구분하여 저장하는 멀티 스트림 기능을 제공하는 컨트롤러를 포함하며, 상기 컨트롤러는 상기 호스트에서 구동되는 가상 머신으로부터의 체크인 스냅샷 커맨드에 응하여 상기 가상 머신에 스트림 ID를 할당하고, 상기 가상 머신으로부터의 데이터를 상기 복수의 메모리 영역들 중 상기 스트림 ID에 대응하는 메모리 영역에 저장하며, 상기 가상 머신으로부터의 체크아웃 스냅샷 커맨드에 응하여 상기 데이터에 대응하는 논리 주소들을 스냅샷 관리 정보로서 저장하고, 상기 호스트로부터 상기 논리 주소들에 대한 라이트 커맨드가 수신되면 상기 라이트 커맨드에 대한 실패 응답을 출력함으로써 상기 체크아웃 스냅샷 커맨드가 제공된 시점의 데이터를 보존할 수 있다.
본 발명은 멀티 스트림 기능을 제공하는 스토리지 장치와 관련되는 구성들 및 동작들을 제공할 수 있다.
본 발명의 실시 예에 따르면, 스토리지 장치는 가상 머신들 각각의 요청에 응하여 가상 머신별로 서로 다른 스트림 ID를 할당하고, 가상 머신들의 데이터를 비휘발성 메모리에 구분하여 저장함으로써 스토리지 장치의 쓰기 증폭을 방지할 수 있다.
본 발명의 실시 예에 따르면, 스토리지 장치는 가상 머신들 각각의 요청에 응하여 가상 머신에 대응하는 데이터가 수정되거나 삭제되지 않도록 프로텍션(protection)함으로써 가상 머신들의 신속하고 정확한 스냅샷 동작을 지원할 수 있다.
본 발명의 실시 예에 따르면, 스토리지 장치는 가상 머신의 요청에 응하여 스트림 ID를 한시적으로 할당할 수 있으므로, 제한된 수의 스트림 ID들을 이용하여 다수의 가상 머신들의 스냅샷 동작을 지원할 수 있다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
도 1 및 도 2는 본 발명의 실시 예에 따른 호스트-스토리지 시스템을 도시하는 도면들이다.
도 3은 메모리 장치를 나타내는 예시적인 블록도이다.
도 4는 본 발명의 실시 예에 따른 메모리 장치에 적용될 수 있는 3D V-NAND 구조에 대해 설명하기 위한 도면이다.
도 5는 본 발명의 실시 에에 따른 스토리지 장치를 자세히 설명하기 위한 도면이다.
도 6 내지 도 8은 본 발명의 실시 예에 따른 멀티스트림 슬롯 테이블 및 스냅샷 관리 테이블을 설명하기 위한 도면이다.
도 9는 본 발명의 실시 예에 따른 스토리지 장치의 동작을 설명하기 위한 흐름도이다.
도 10 내지 도 11b는 본 발명의 실시 예에 따른 호스트-스토리지 시스템의 동작을 설명하기 위한 도면들이다.
도 12는 본 발명의 실시 예에 따른 호스트-스토리지 시스템의 상호작용을 나타내는 흐름도이다.
도 13a 및 도 13b는 본 발명의 실시 예에 따른 쓰기 증폭 감소 효과를 설명하기 위한 도면들이다.
도 14 및 도 15는 본 발명의 실시 예가 적용될 수 있는 시스템을 예시하는 도면들이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예를 설명하기로 한다.
도 1 및 도 2는 본 발명의 실시 예에 따른 호스트-스토리지 시스템을 도시한다.
먼저 도 1을 참조하면, 호스트-스토리지 시스템(10)은 호스트(100) 및 스토리지 장치(200)를 포함할 수 있다. 또한, 스토리지 장치(200)는 스토리지 컨트롤러(210) 및 비휘발성 메모리(NVM)(220)를 포함할 수 있다.
호스트-스토리지 시스템(10)은 서버 컴퓨터일 수 있다. 하지만 호스트-스토리지 시스템(10)은 반드시 서버 컴퓨터에 한정되는 것은 아니고, 모바일 시스템, 개인용 컴퓨터, 랩탑 컴퓨터, 미디어 재생기 또는 내비게이션과 같은 차량용 장비 등이 될 수도 있다.
호스트(100)는 호스트 운영 체제(Host OS; host operating system)를 구동할 수 있다. 예를 들어, 상기 호스트 운영 체제는 하이퍼바이저(hypervisor)일 수 있다. 하이퍼바이저는 가상화 시스템을 구축하기 위한 소프트웨어 계층으로, 각 가상 머신에게 논리적으로 분리된 하드웨어를 제공할 수 있다. 또한, 하이퍼바이저는 가상 머신 모니터(VMM; virtual machine monitor)로 명명될 수도 있으며, 가상 머신을 생성하고 실행하는 펌웨어 또는 소프트웨어를 지칭할 수 있다.
호스트 운영 체제 상에는 복수의 가상 머신들(VM1 - VMn)이 구동될 수 있다. 가상 머신들(VM1 - VMn) 각각은 게스트 운영 체제(Guest OS)를 구동할 수 있으며, 게스트 운영 체제 상에서 어플리케이션이 구동될 수 있다.
가상 머신들(VM1 - VMn) 각각의 게스트 운영 체제는 서로에 대하여 독립적일 수 있다. 호스트 운영 체제는 가상 머신들(VM1 - VMn)이 서로에 대해 독립적으로 동작할 수 있도록 하드웨어 계층의 자원을 가상 머신들(VM1 - VMn)에 분배할 수 있다.
스토리지 장치(200)는 호스트(100)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(200)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(200)가 SSD인 경우, 스토리지 장치(200)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 스토리지 장치(200)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(200)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트(100)와 스토리지 장치(200)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.
스토리지 장치(200)는 스토리지 컨트롤러(210) 및 비휘발성 메모리(220)를 포함할 수 있다.
비휘발성 메모리(220)는 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있다. 비휘발성 메모리(220)는 프로그램 동작을 통해 호스트(100)로부터 제공된 데이터를 저장할 수 있고, 리드 동작을 통해 비휘발성 메모리(220)에 저장된 데이터를 출력할 수 있다.
스토리지 장치(200)의 비휘발성 메모리(220)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(200)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(200)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리가 적용될 수 있다.
스토리지 컨트롤러(210)는 호스트(100)로부터의 요청에 응하여 비휘발성 메모리(220)를 제어할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 비휘발성 메모리(220)로부터 리드된 데이터를 호스트(100)로 제공하고, 호스트(100)로부터 제공된 데이터를 비휘발성 메모리(220)에 저장할 수 있다. 스토리지 컨트롤러(210)는 비휘발성 메모리(220)의 리드(read), 프로그램(program), 이레이즈(erase) 등의 동작을 제어할 수 있다.
스토리지 컨트롤러(210)는 스토리지 장치(200)의 멀티 스트림 기능을 제공할 수 있다. 멀티 스트림 기능은, 데이터를 복수의 스트림들로 분류하고, 복수의 스트림들을 복수의 메모리 영역들에 구분하여 저장하는 기능이다. 도 1을 참조하면, 비휘발성 메모리(220)는 4개의 메모리 영역들(MR1 - MR4)을 제공할 수 있다. 스토리지 컨트롤러(210)는 비휘발성 메모리(220)에 저장되는 데이터에 스트림 ID1 내지 ID4 중 어느 하나를 부여할 수 있다. 그리고, 데이터의 스트림 ID에 따라 데이터를 메모리 영역들(MR1 - MR4)에 구분하여 저장할 수 있다.
한편, 호스트(100)는 스냅샷(snapshot) 동작을 수행할 수 있다. 스냅샷 동작은 사용자의 실수 또는 시스템 오류 등에 의해 일부 데이터의 손실이 발생한 경우 손실된 데이터를 특정 시점의 데이터로 되돌리기 위해, 특정 시점의 데이터를 보존하는 동작이다. 스냅샷 동작은 가상 머신들(VM1 - VMn)별로 독립적으로 수행될 수 있다. 가상 머신들(VM1 - VMn)은 운영 체제의 최초 설치시, 애플리케이션 설치시, 또는 애플리케이션의 동작 중에 주기적으로 스냅샷 동작을 수행함으로써, 손실된 데이터를 다양한 시점의 데이터로 되돌릴 수 있는 백업 환경을 조성할 수 있다.
만약 호스트(100)가 스냅샷 동작을 수행하기 위해 스토리지 장치(200)로부터 특정 시점의 데이터를 리드하여 스냅샷 데이터를 생성한 후 상기 스냅샷 데이터를 스토리지 장치(200)에 다시 저장해야 한다면, 호스트-스토리지 시스템(10)의 성능 및 신뢰성이 저하될 수 있다. 구체적으로, 가상 머신들(VM1 - VMn)이 주기적으로 스냅샷 동작을 수행하는 경우, 스냅샷 동작을 위한 호스트(100)와 스토리지 장치(200) 간 데이터 입출력량이 증가하므로 호스트-스토리지 시스템(10)의 성능이 저하될 수 있다. 그리고, 호스트(100)가 스냅샷 동작을 위해 스토리지 장치(200)로부터 데이터를 리드하는 중에 스토리지 장치(200)의 데이터가 변경될 수 있으므로, 호스트(100)는 보존하고자 하는 특정 시점의 데이터를 획득하지 못할 수 있으며, 호스트(100)가 생성한 스냅샷 데이터의 정확성이 보장되기 어렵다.
본 발명의 실시 예에 따르면, 호스트(100)는 스토리지 장치(200)로부터 특정 시점에 저장된 데이터를 획득하여 스냅샷 데이터를 생성하는 대신, 스토리지 장치(200)로 커맨드를 제공함으로써 스토리지 장치(200)가 특정 시점에 내부에 저장된 데이터를 프로텍션(protection)하도록 제어할 수 있다. 그리고, 호스트(100)는 특정 시점에 스토리지 장치(200)에 저장된 데이터를 가리키는 포인터를 생성하여 저장할 수 있다. 본 발명의 실시 예에 따르면, 스냅샷 동작을 위한 호스트(100)와 스토리지 장치(200) 간 데이터 입출력량이 감소하고, 특정 시점의 스냅샷 데이터의 정확성이 보장될 수 있다.
또한, 스토리지 장치(200)는 가상 머신들의 요청에 응하여 가상 머신들 각각에 서로 다른 스냅샷 ID를 할당할 수 있다. 스토리지 장치(200)는 서로 다른 가상 머신들의 데이터에 서로 다른 스냅샷 ID를 부여하고, 서로 다른 가상 머신의 데이터가 서로 다른 메모리 영역에 구분하여 저장되도록 함으로써 비휘발성 메모리(220)의 쓰기 증폭을 방지할 수 있다.
도 2를 참조하면, 호스트-스토리지 시스템(10)은 호스트(100) 및 스토리지 장치(200)를 포함할 수 있다. 또한, 스토리지 장치(200)는 스토리지 컨트롤러(210) 및 비휘발성 메모리(NVM)(220)를 포함할 수 있다. 도 2의 호스트(100) 및 스토리지 장치(200)는 도 1을 참조하여 설명된 것들과 대응할 수 있다.
호스트(100)는 호스트 컨트롤러(110), 호스트 메모리(120) 및 CPU 코어(130)를 포함할 수 있다. 호스트 메모리(120)는 스토리지 장치(200)로 전송될 데이터, 혹은 스토리지 장치(200)로부터 전송된 데이터를 임시로 저장하기 위한 버퍼 메모리로서 기능할 수 있다.
일 실시예에 따라, 호스트 컨트롤러(110)와 호스트 메모리(120)는 별도의 반도체 칩으로 구현될 수 있다. 또는, 일부 실시예들에서, 호스트 컨트롤러(110)와 호스트 메모리(120)는 동일한 반도체 칩에 집적될 수 있다. 일 예로서, 호스트 컨트롤러(110)는 애플리케이션 프로세서(Application Processor)에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 상기 애플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 호스트 메모리(120)는 상기 애플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 상기 애플리케이션 프로세서의 외부에 배치되는 비휘발성 메모리 또는 메모리 모듈일 수 있다.
호스트 컨트롤러(110)는 호스트 메모리(120)의 버퍼 영역의 데이터(예를 들어, 기록 데이터)를 비휘발성 메모리(220)에 저장하거나, 비휘발성 메모리(220)의 데이터(예를 들어, 독출 데이터)를 버퍼 영역에 저장하는 동작을 관리할 수 있다.
CPU 코어(130)는 호스트(100)의 전반적인 동작을 제어할 수 있다. 예를 들어, CPU 코어(130)는 도 1을 참조하여 설명된 호스트 운영 체제 및 가상 머신들을 구동할 수 있으며, 호스트 컨트롤러(110)를 제어하기 위한 장치 드라이버를 더 구동할 수 있다.
스토리지 컨트롤러(210)는 호스트 인터페이스(211), 메모리 인터페이스(212) 및 CPU(central processing unit)(213), 버퍼 메모리(216)를 포함할 수 있다. 스토리지 컨트롤러(210)는 플래시 변환 계층(FTL; 214)이 로딩되는 워킹 메모리(미도시)를 더 포함할 수 있으며, CPU(213)가 플래시 변환 계층을 실행하는 것에 의해 비휘발성 메모리(220)에 대한 데이터 기록 및 독출 동작이 제어될 수 있다.
FTL(214)은 주소 매핑(address mapping), 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection)과 같은 여러 기능을 수행할 수 있다. 주소 매핑 동작은 호스트(100)로부터 수신한 논리 주소(logical address)를, 비휘발성 메모리(220) 내에 데이터를 실제로 저장하는 데 사용되는 물리 주소(physical address)로 바꾸는 동작이다. 웨어-레벨링은 비휘발성 메모리(220) 내의 블록(block)들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록(physical block)들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다. 가비지 콜렉션은, 블록의 유효 데이터를 새 블록에 복사한 후 기존 블록을 소거(erase)하는 방식을 통해 비휘발성 메모리(220) 내에서 사용 가능한 용량을 확보하기 위한 기술이다.
호스트 인터페이스(211)는 호스트(100)와 패킷(packet)을 송수신할 수 있다. 호스트(100)로부터 호스트 인터페이스(211)로 전송되는 패킷은 커맨드(command) 혹은 비휘발성 메모리(220)에 기록될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(211)로부터 호스트(100)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 비휘발성 메모리(220)로부터 독출된 데이터 등을 포함할 수 있다. 메모리 인터페이스(212)는 비휘발성 메모리(220)에 기록될 데이터를 비휘발성 메모리(220)로 송신하거나, 비휘발성 메모리(220)로부터 독출된 데이터를 수신할 수 있다. 이러한 메모리 인터페이스(212)는 토글(Toggle) 혹은 온파이(Open NAND Flash Interface; ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
버퍼 메모리(216)는 스토리지 장치(200)의 동작에 이용되는 다양한 데이터를 버퍼링할 수 있다. 예를 들어, 버퍼 메모리(216)는 호스트(100)로부터 제공되는 논리 주소와 비휘발성 메모리(220) 상의 물리 주소 간의 변환을 수행하기 위해 참조되는 맵핑 데이터, 비휘발성 메모리(220)로부터 출력되는 데이터의 오류를 검출하고 정정하기 위해 참조되는 ECC(Error Correction Code) 데이터, 비휘발성 메모리(220) 각각의 상태와 관련되는 상태 데이터 등을 버퍼링할 수 있다. 예를 들어, 버퍼 메모리(216)는 SRAM, DRAM, SDRAM 등과 같은 휘발성 메모리, 및/또는 PRAM, MRAM, ReRAM, FRAM 등과 같은 비휘발성 메모리를 포함할 수 있다.
비휘발성 메모리(220)는 복수의 메모리 블록들을 포함하는 하나 이상의 메모리 장치를 포함할 수 있다. 메모리 블록들 각각은 복수의 페이지들을 포함하며, 상기 페이지들 각각은 워드라인에 연결된 복수의 메모리 셀들을 포함할 수 있다.
도 3은 메모리 장치를 나타내는 예시적인 블록도이다.
도 3을 참조하면, 메모리 장치(300)는 제어 로직 회로(320), 메모리 셀 어레이(330), 페이지 버퍼(340), 전압 생성기(350), 및 로우 디코더(360)를 포함할 수 있다. 도 3에는 도시되지 않았으나, 메모리 장치(300)는 메모리 인터페이스 회로를 더 포함할 수 있고, 또한 컬럼 로직, 프리-디코더, 온도 센서, 커맨드 디코더, 어드레스 디코더 등을 더 포함할 수 있다. 도 3의 메모리 장치(300)는 도 1 및 2를 참조하여 설명된 비휘발성 메모리(220)에 대응할 수 있다.
제어 로직 회로(320)는 메모리 장치(300) 내의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(320)는 메모리 인터페이스 회로(310)로부터의 커맨드(CMD) 및/또는 어드레스(ADDR)에 응답하여 각종 제어 신호들을 출력할 수 있다. 예를 들어, 제어 로직 회로(320)는 전압 제어 신호(CTRL_vol), 로우 어드레스(X-ADDR), 및 컬럼 어드레스(Y-ADDR)를 출력할 수 있다.
메모리 셀 어레이(330)는 복수의 메모리 블록들(BLK1 내지 BLKz)을 포함할 수 있고(z는 양의 정수), 복수의 메모리 블록들(BLK1 내지 BLKz) 각각은 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀 어레이(330)는 비트 라인들(BL)을 통해 페이지 버퍼부(340)에 연결될 수 있고, 워드 라인들(WL), 스트링 선택 라인들(SSL), 및 그라운드 선택 라인들(GSL)을 통해 로우 디코더(360)에 연결될 수 있다.
예시적인 실시 예에서, 메모리 셀 어레이(330)는 3차원 메모리 셀 어레이를 포함할 수 있고, 3차원 메모리 셀 어레이는 복수의 낸드 스트링들을 포함할 수 있다. 각 낸드 스트링은 기판 위에 수직으로 적층된 워드 라인들에 각각 연결된 메모리 셀들을 포함할 수 있다.
페이지 버퍼(340)는 복수의 페이지 버퍼들(PB1 내지 PBn)을 포함할 수 있고(n은 3 이상의 정수), 복수의 페이지 버퍼들(PB1 내지 PBn)은 복수의 비트 라인들(BL)을 통해 메모리 셀들과 각각 연결될 수 있다. 페이지 버퍼(340)는 컬럼 어드레스(Y-ADDR)에 응답하여 비트 라인들(BL) 중 적어도 하나의 비트 라인을 선택할 수 있다. 페이지 버퍼(340)는 동작 모드에 따라 기입 드라이버 또는 감지 증폭기로서 동작할 수 있다. 예를 들어, 프로그램 동작 시, 페이지 버퍼(340)는 선택된 비트 라인으로 프로그램될 데이터에 대응하는 비트 라인 전압을 인가할 수 있다. 독출 동작 시, 페이지 버퍼(340)는 선택된 비트 라인의 전류 또는 전압을 감지하여 메모리 셀에 저장된 데이터를 감지할 수 있다.
전압 생성기(350)는 전압 제어 신호(CTRL_vol)를 기반으로 프로그램, 독출, 및 소거 동작들을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 예를 들어, 전압 생성기(350)는 워드 라인 전압(VWL)으로서 프로그램 전압, 독출 전압, 프로그램 검증 전압, 소거 전압 등을 생성할 수 있다.
로우 디코더(360)는 로우 어드레스(X-ADDR)에 응답하여 복수의 워드 라인들(WL) 중 하나를 선택할 수 있고, 복수의 스트링 선택 라인들(SSL) 중 하나를 선택할 수 있다. 예를 들어, 프로그램 동작 시, 로우 디코더(360)는 선택된 워드 라인으로 프로그램 전압 및 프로그램 검증 전압을 인가하고, 독출 동작 시, 선택된 워드 라인으로 독출 전압을 인가할 수 있다.
도 4는 본 발명의 일 실시 예에 따른 메모리 장치에 적용될 수 있는 3D V-NAND 구조에 대해 설명하기 위한 도면이다.
메모리 장치의 스토리지 모듈이 3D V-NAND 타입의 플래시 메모리로 구현될 경우, 스토리지 모듈을 구성하는 복수의 메모리 블록 각각은 도 4에 도시된 바와 같은 등가 회로로 표현될 수 있다.
도 4에 도시된 메모리 블록(BLKi)은 기판 상에 삼차원 구조로 형성되는 삼차원 메모리 블록을 나타낸다. 예를 들어, 메모리 블록(BLKi)에 포함되는 복수의 메모리 낸드 스트링들은 상기 기판과 수직한 방향으로 형성될 수 있다.
도 4를 참조하면, 메모리 블록(BLKi)은 비트 라인들(BL1, BL2, BL3)과 공통 소스 라인(CSL) 사이에 연결되는 복수의 메모리 낸드 스트링들(NS11~NS33)을 포함할 수 있다. 복수의 메모리 낸드 스트링들(NS11~NS33) 각각은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1, MC2, ..., MC8) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다. 도 4에는 복수의 메모리 낸드 스트링들(NS11~NS33) 각각이 8개의 메모리 셀들(MC1, MC2, ..., MC8)을 포함하는 것으로 도시되어 있으나, 반드시 이에 한정되는 것은 아니다.
스트링 선택 트랜지스터(SST)는 상응하는 스트링 선택 라인(SSL1, SSL2, SSL3)에 연결될 수 있다. 복수의 메모리 셀들(MC1, MC2, ..., MC8)은 각각 상응하는 게이트 라인(GTL1, GTL2, ..., GTL8)에 연결될 수 있다. 게이트 라인(GTL1, GTL2, ..., GTL8)은 워드 라인들에 해당할 수 있으며, 게이트 라인(GTL1, GTL2, ..., GTL8)의 일부는 더미 워드 라인에 해당할 수 있다. 접지 선택 트랜지스터(GST)는 상응하는 접지 선택 라인(GSL1, GSL2, GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 상응하는 비트 라인들(BL1, BL2, BL3)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다.
동일 높이의 워드 라인(예를 들면, WL1)은 공통으로 연결되고, 접지 선택 라인(GSL1, GSL2, GSL3) 및 스트링 선택 라인(SSL1, SSL2, SSL3)은 각각 분리될 수 있다. 도 4에는 메모리 블록(BLK)이 여덟 개의 게이트 라인(GTL1, GTL2, ..., GTL8) 및 세 개의 비트 라인들(BL1, BL2, BL3)에 연결되는 것으로 도시되어 있으나, 반드시 이에 한정되는 것은 아니다.
메모리 블록(BLK)의 메모리 셀들은 워드 라인들과 연결될 수 있다. 하나의 워드 라인에 연결된 메모리 셀들의 그룹은 페이지로 지칭될 수 있다. 메모리 셀들은 도 3을 참조하여 설명된 로우 디코더(360)에 의해 페이지 단위로 프로그램되거나, 리드될 수 있다. 한편, 메모리 셀들은 메모리 블록(BLK) 단위로 이레이즈될 수 있다.
비휘발성 메모리(220)는 덮어쓰기 연산을 지원하지 않을 수 있으며, 프로그램 동작과 이레이즈 동작의 단위가 상이할 수 있다. 비휘발성 메모리(220)에서 어떤 페이지에 저장된 기존 데이터를 업데이트하기 위해서는, 상기 기존 데이터를 무효화하고, 업데이트될 데이터를 다른 페이지에 프로그램할 수 있다. 무효화된 데이터가 메모리 블록에 남아 있는 경우 비휘발성 메모리(220)의 메모리 공간이 낭비될 수 있으므로, 스토리지 컨트롤러(210)는 주기적으로 가비지 콜렉션 동작을 통해 비휘발성 메모리의 무효화된 데이터를 제거하고, 여유 메모리 공간을 확보할 수 있다.
가비지 콜렉션 동작이 지나치게 자주 수행되면, 호스트(100)에서 스토리지 장치(200)에 라이트한 실제 데이터의 양에 비해 비휘발성 메모리(220)에 프로그램되는 데이터의 양이 증가하는 쓰기 증폭(WAF; write amplification)이 발생할 수 있다. 서로 다른 속성을 갖는 데이터가 서로 다른 메모리 블록들에 구분하여 저장될 수 있다면, 비휘발성 메모리(220)의 가비지 콜렉션 동작이 완화되고 비휘발성 메모리(220)의 쓰기 증폭이 감소될 수 있다. 스토리지 장치(200)는 비휘발성 메모리(220)의 쓰기 증폭을 감소시키기 위해, 호스트(100)로부터의 데이터를 복수의 스트림들로 분류하고, 복수의 스트림들을 서로 다른 메모리 블록들에 구분하여 저장하는 멀티 스트림 기능을 제공할 수 있다.
본 발명의 실시 예에 따르면, 스토리지 컨트롤러(210)는 복수의 가상 머신들 각각의 스냅샷 동작을 지원하기 위해 멀티 스트림 기능을 이용할 수 있다. 서로 다른 가상 머신들의 데이터가 서로 다른 메모리 영역들에 구분하여 저장될 수 있으므로, 비휘발성 메모리(220)의 쓰기 증폭을 감소시키면서 복수의 가상 머신들의 스냅샷 동작을 효율적으로 지원할 수 있다. 이하에서, 도 5 내지 도 13b를 참조하여 본 발명의 실시 예에 따른 호스트-스토리지 시스템(10)의 스냅샷 동작이 자세히 설명된다.
도 5는 본 발명의 실시 예에 따른 스토리지 장치를 자세히 설명하기 위한 도면이다.
도 5를 참조하면, 스토리지 장치(200)는 CPU(213), 버퍼 메모리(216) 및 비휘발성 메모리(220)를 포함할 수 있다. 도 5에 도시된 CPU(213), 버퍼 메모리(216) 및 비휘발성 메모리(220)는 도 2를 참조하여 설명된 것들에 대응할 수 있다.
CPU(213)는 FTL(214)을 구동할 수 있다. FTL(214)은 호스트(100)의 파일 시스템에서 사용되는 논리 주소와 비휘발성 메모리(220)의 물리 주소 간 주소 매핑을 수행할 수 있다.
FTL(214)은 멀티 스트림 기능을 제공할 수 있다. 구체적으로, FTL(214)은 호스트(100)로부터 수신된 데이터에 스트림 ID를 부여하고, 서로 다른 스트림 ID를 갖는 데이터가 비휘발성 메모리(220)의 서로 다른 메모리 영역에 저장될 수 있도록 주소 매핑을 수행할 수 있다.
비휘발성 메모리(220)는 복수의 메모리 영역들(MR1 - MR4)을 포함할 수 있다. 실시 예에 따라, 메모리 영역들(MR1 - MR4) 각각은 메모리 블록에 해당할 수 있다. 그리고, 메모리 영역들(MR1 - MR4) 각각은 서로 다른 스트림 ID에 대응할 수 있다. 도 5의 예에서, FTL(214)이 4개의 스트림 ID를 지원할 수 있으며, 4개의 스트림 ID는 메모리 영역들(MR1 - MR4)에 대응할 수 있다.
FTL(214)은 가상 머신들의 스냅샷 동작을 지원할 수 있다. 본 발명의 실시 예에 따르면, 가상 머신들은 체크인 스냅샷 커맨드, 라이트 커맨드 및 체크아웃 스냅샷 커맨드를 이용하여 스냅샷 동작을 수행할 수 있다. 한편, 체크인 스냅샷 커맨드 및 체크아웃 스냅샷 커맨드는 호스트(100)와 스토리지 장치(200)간에 사전에 약속된 관리자 커맨드(admin command)일 수 있다.
구체적으로, 가상 머신이 스냅샷 동작을 시작하기 위해 스토리지 장치(200)로 체크인 스냅샷 커맨드를 제공하면, FTL(214)은 상기 체크인 스냅샷 커맨드에 응하여 상기 가상 머신에 스냅샷 ID를 할당할 수 있다.
가상 머신이 가상 머신 내부에서 생성 또는 업데이트되는 호스트 데이터를 로깅하기 위해 스토리지 장치(200)로 라이트 커맨드를 제공하면, FTL(214)은 상기 호스트 데이터가 상기 스냅샷 ID에 대응하는 메모리 영역에 저장되도록 주소 매핑을 수행할 수 있다.
가상 머신이 특정 시점의 데이터를 보존하기 위해 스토리지 장치(200)로 체크아웃 스냅샷 커맨드를 제공하면, FTL(214)은 상기 체크아웃 스냅샷 커맨드에 응하여 특정 시점까지 상기 메모리 영역에 저장된 호스트 데이터가 변경 또는 삭제되지 않도록 상기 호스트 데이터에 대응하는 논리 영역을 프로텍션(protection)할 수 있다. 예를 들어, 호스트(100)로부터 프로텍션된 논리 영역에 대한 라이트 커맨드가 수신되면, FTL(214)은 상기 라이트 커맨드를 수행하지 않고 호스트 인터페이스(211)를 통해 실패 응답을 출력할 수 있다.
버퍼 메모리(216)는 멀티스트림 슬롯 테이블(231) 및 스냅샷 관리 테이블(232)을 저장할 수 있다. 멀티스트림 슬롯 테이블(231)은 FTL(214)이 지원하는 스트림 ID들 각각이 가상 머신에 할당되었는지 여부를 나타낼 수 있다. 그리고, 스냅샷 관리 테이블(232)은 어느 가상 머신의 스냅샷이 어느 스트림 ID에 대응하는지를 나타내고, 상기 스냅샷에 의해 프로텍션될 논리 영역의 정보를 더 포함할 수 있다.
FTL(214)은 버퍼 메모리(216)에 저장된 멀티스트림 슬롯 테이블(231) 및 스냅샷 관리 테이블(232)을 참조하여 가상 머신들의 스냅샷 동작을 지원할 수 있다. 예를 들어, FTL(214)은 멀티스트림 슬롯 테이블(231)을 참조하여 가상 머신에 다른 가상 머신과 중복되지 않는 스트림 ID를 할당할 수 있다. 그리고, FTL(214)은 스냅샷 관리 테이블(232)을 참조하여 논리 영역을 프로텍션할 수 있다.
도 6 내지 도 8을 참조하여, 멀티스트림 슬롯 테이블(231) 및 스냅샷 관리 테이블(232)을 이용하여 FTL(214)이 가상 머신들의 스냅샷 동작을 지원하는 방법이 자세히 설명된다.
도 6은 멀티스트림 슬롯 테이블(231)을 예시한다.
멀티스트림 슬롯 테이블(231)은 FTL(214)이 지원하는 스트림 ID들 각각에 대해, 가상 머신이 할당되었는지 여부를 나타내는 정보를 포함할 수 있다. 도 5의 예에서, 4개의 스트림 ID들 중 스트림 ID1에는 제1 가상 머신(VM1)이 할당되고, 스트림 ID2에는 제2 가상 머신(VM2)이 할당되었으며, 스트림 ID3 및 ID4에는 가상 머신이 할당되지 않았을 수 있다.
FTL(214)은 가상 머신에 스트림 ID를 할당할 때, 멀티스트림 슬롯 테이블(231)을 참조하여 다른 가상 머신에 할당되지 않은 스트림 ID를 할당할 수 있다. 예를 들어, 제3 가상 머신(VM3)으로부터 체크인 스냅샷 커맨드를 수신한 경우, 멀티스트림 슬롯 테이블(231)을 참조하여 제3 가상 머신(VM3)에 스트림 ID3 또는 ID4를 할당할 수 있다.
본 발명의 실시 예에 따르면, FTL(214)은 가상 머신으로부터의 체크인 스냅샷 커맨드에 응하여 스트림 ID를 할당하고, 상기 가상 머신으로부터의 체크아웃 스냅샷 커맨드에 응하여 상기 할당된 스트림 ID를 해제할 수 있다. 즉, 스트림 ID는 가상 머신이 스냅샷 동작을 수행하는 동안 상기 가상 머신에 한시적으로 할당될 수 있다.
도 7은 시간의 흐름에 따라 스트림 ID들에 할당될 수 있는 가상 머신들을 예시한다.
도 7을 참조하면, 시간의 흐름에 따라 스트림 ID1 내지 ID4가 6개의 가상 머신들(VM1 - VM6)에 할당되거나 해제되는 경우가 예시된다. 예를 들어, 제1 가상 머신(VM1)으로부터의 체크인 스냅샷 커맨드(Checkinsnap)에 응하여 제1 가상 머신(VM1)이 스트림 ID1에 할당될 수 있으며, 제1 가상 머신(VM1)으로부터의 체크아웃 스냅샷 커맨드(Checkoutsnap)에 응하여 스트림 ID1이 해제될 수 있다. 도 7의 예에서, 제1 가상 머신(VM1)에 스트림 ID1이 할당된 이후, 따라 제2 내지 제4 가상 머신(VM2 - VM4)이 스트림 ID2, ID3, ID4에 순차적으로 할당될 수 있으며, 제5 가상 머신(VM5)으로부터 체크인 스냅샷 커맨드가 수신될 수 있다.
FTL(214)은 멀티스트림 슬롯 테이블(231)을 참조하여 제5 가상 머신(VM5)으로부터 체크인 스냅샷 커맨드를 수신할 당시에 다른 가상 머신에 할당되지 않은 스트림 ID를 탐색할 수 있다. 도 7의 예에서, 스트림 ID1이 다른 가상 머신에 할당되지 않았을 수 있으며, FTL(214)은 제5 가상 머신(VM5)에 스트림 ID1을 할당할 수 있다. 즉, 스트림 ID1은 제1 가상 머신(VM1)에 한시적으로 할당된 후, 제5 가상 머신(VM5)에 다시 할당될 수 있다.
마찬가지로, FTL(214)은 제6 가상 머신(VM6)으로부터 체크인 스냅샷 커맨드를 수신한 후, 다른 가상 머신에 할당되지 않은 스트림 ID2를 제6 가상 머신(VM6)에 할당할 수 있다.
본 발명의 실시 예에 따르면, 스토리지 장치(200)는 스트림 ID를 가상 머신이 스냅샷 동작을 수행하는 동안에 한시적으로 할당할 수 있다. 본 발명의 실시 예에 따르면, 스토리지 장치(200)가 지원하는 스트림 ID의 개수보다 더 많은 수의 가상 머신들의 스냅샷 동작이 지원될 수 있다.
도 8은 스냅샷 관리 테이블(232)을 예시한다.
스냅샷 관리 테이블(232)은 가상 머신들(VM1 - VMn) 및 스트림 ID들에 해당하는 엔트리들을 포함할 수 있다. 스냅샷 관리 테이블(232)의 엔트리들에는 가상 머신들(VM1 - VMn)로부터 요청된 스냅샷들의 이력이 저장될 수 있으며, 각 스냅샷들에서 프로텍션된 논리 영역의 정보가 더 저장될 수 있다.
가상 머신들(VM1 - VMn)은 시스템을 다양한 시점으로 되돌릴 수 있도록 주기적인 스냅샷 동작을 수행할 수 있다. 스냅샷 동작에 의해 생성된 스냅샷은 각각 스냅샷 ID로 구별될 수 있다. 가상 머신들(VM1 - VMn)은 체크인 스냅샷 커맨드 및 체크아웃 스냅샷 커맨드를 제공할 때 스냅샷 ID를 함께 제공할 수 있다. 도 8의 예에서, 스냅샷 관리 테이블(232)의 엔트리들에 스냅샷 ID가 저장될 수 있다.
예를 들어, 제1 가상 머신(VM1)으로부터 수신된 스냅샷 ID SS1_1에 해당하는 스냅샷 동작을 지원하기 위해 제1 가상 머신(VM1)에 스트림 ID1이 할당된 경우, 스냅샷 관리 테이블(232)의 제1 가상 머신(VM1) 및 스트림 ID1에 해당하는 엔트리에 스냅샷 ID SS1_1이 저장될 수 있다.
그리고, 스냅샷 ID SS1_1에 해당하는 스냅샷 동작이 완료되면, 스냅샷 관리 테이블(232)에는 상기 스냅샷 ID SS1_1에 대응하는 논리 영역의 정보가 저장될 수 있다. 도 8의 예에서, 스냅샷 관리 테이블(232)은 스냅샷 ID SS1_1와 관련하여, 논리 주소들(LBA1, LBA2, LBA3)을 더 저장할 수 있다.
그리고, 제1 가상 머신(VM1)으로부터 수신된 스냅샷 ID SS1_2에 해당하는 스냅샷 동작을 지원하기 위해 제1 가상 머신(VM1)에 스트림 ID2가 할당된 경우, 스냅샷 관리 테이블(232)의 제1 가상 머신(VM1) 및 스트림 ID2에 해당하는 엔트리에 스냅샷 ID SS1_2 및 상기 스냅샷 ID SS1_2에 대응하는 논리 주소들(LBA4, LBA5)을 더 저장할 수 있다.
마찬가지로, 스냅샷 관리 테이블(232)은 제2 가상 머신(VM2)의 스냅샷 ID SS2_1 및 ID SS2_2에 대한 이력을 기록할 수 있으며, 도면에서는 생략되었으나 스냅샷 ID SS2_1 및 ID SS2_2에 해당하는 스냅샷 동작 중에 스토리지 장치에 저장된 데이터의 논리 주소들을 더 포함할 수 있다.
스냅샷 관리 테이블(232)에 저장된 논리 주소들에 해당하는 논리 영역은 프로텍션될 수 있다. 구체적으로, FTL(214)은 호스트(100)로부터 라이트 커맨드와 함께 수신된 논리 주소가 스냅샷 관리 테이블(232)에 포함되는 경우, 상기 논리 주소에 대응하는 데이터가 프로텍션될 수 있도록 상기 라이트 커맨드에 대한 실패 응답을 제공할 수 있다.
이하에서, 도 9 내지 도 13b를 참조하여 본 발명의 실시 예에 따른 호스트-스토리지 시스템(10)의 동작이 자세히 설명된다.
도 9는 본 발명의 실시 예에 따른 스토리지 장치의 동작을 설명하기 위한 흐름도이다.
단계 S101에서, 스토리지 장치(200)는 가상 머신으로부터 스냅샷 ID 및 체크인 스냅샷 커맨드를 수신할 수 있다.
구체적으로, 가상 머신은 스냅샷 동작을 시작하기 위해, 스토리지 장치(200)에 데이터를 기록하기 전에 스냅샷 ID를 할당하고, 상기 스냅샷 ID에 대한 체크인 스냅샷 커맨드를 스토리지 장치(200)로 제공할 수 있다.
단계 S102에서, 스토리지 장치(200)는 상기 가상 머신에 스트림 ID를 할당할 수 있다.
도 6 내지 도 7을 참조하여 설명된 것과 같이, 스토리지 장치(200)는 멀티스트림 슬롯 테이블(231)을 참조하여, 현재 다른 가상 머신에 할당되지 않은 스트림 ID를 상기 가상 머신에 할당할 수 있다.
단계 S103에서, 스토리지 장치(200)는 상기 가상 머신으로부터 수신되는 호스트 데이터를, 상기 스트림 ID를 위해 할당된 메모리 영역에 저장할 수 있다.
즉, 스토리지 장치(200)는 스냅샷 동작 중 상기 가상 머신으로부터 수신되는 데이터를 다른 가상 머신으로부터의 데이터와 섞이지 않도록 하나의 메모리 영역에 저장할 수 있다.
단계 S104에서, 스토리지 장치(200)는 특정 시점의 스냅샷을 생성하기 위해, 상기 가상 머신으로부터 스냅샷 ID 및 체크아웃 스냅샷 커맨드를 수신할 수 있다.
단계 S105에서, 스토리지 장치(200)는 상기 체크아웃 스냅샷 커맨드에 응하여 상기 특정 시점까지 데이터가 저장된 논리 영역을 프로텍션할 수 있다.
도 8을 참조하여 설명된 것과 같이, 스토리지 장치(200)는 스냅샷 관리 테이블(232)에서 상기 가상 머신의 식별자 및 스트림 ID에 해당하는 엔트리에 상기 스냅샷 ID 및 상기 호스트 데이터에 대응하는 논리 주소들을 업데이트하고, 스냅샷 관리 테이블(232)에 저장된 논리 주소들을 프로텍션할 수 있다.
이하에서, 도 10 내지 도 11b를 참조하여 본 발명의 실시 예에 따른 호스트-스토리지 시스템의 동작이 상세히 설명된다. 도 10 내지 도 11b에서는 호스트(100)에서 구동되는 제1 가상 머신(VM1), 및 제1 가상 머신(VM1)의 스냅샷 동작을 지원하는 스토리지 장치(200)의 동작을 예로 들어 본 발명이 설명된다.
도 10을 참조하면, 단계 S201에서, 제1 가상 머신(VM1)은 호스트 데이터를 스토리지 장치(200)에 저장하기 전에, 스냅샷 동작을 시작하기 위해 스냅샷 ID를 할당하고, 상기 스냅샷 ID에 대한 체크인 스냅샷 커맨드를 제공할 수 있다. 도 10의 예에서, 스냅샷 ID SS1_1이 할당될 수 있다.
스토리지 장치(200)는 체크인 스냅샷 커맨드에 응하여 제1 가상 머신(VM1)에 스트림 ID를 할당할 수 있다. 스토리지 장치(200)는 멀티스트림 슬롯 테이블(231)을 참조하여 다른 가상 머신에 할당되지 않은 스트림 ID1을 제1 가상 머신(VM1)에 할당하고, 멀티스트림 슬롯 테이블(231)을 업데이트할 수 있다.
제1 가상 머신(VM1)은 데이터 A1, B1, C1을 생성할 수 있다. 예를 들어, 데이터 A1, B1, C1은 제1 가상 머신(VM1)의 게스트 운영 체제에서 관리되는 파일 시스템에 포함된 파일을 구성할 수 있다. 파일 시스템은 데이터에 논리 주소, 예를 들어 논리 블록 주소(LBA: logical block address)를 부여할 수 있다. 데이터 A1, B1, C1 각각에 논리 주소 LBA1, LBA2, LBA3이 부여될 수 있다.
단계 S202 내지 단계 S204에서, 제1 가상 머신(VM1)은 라이트 커맨드들과 함께 상기 논리 주소들(LBA1, LBA2, LBA3) 및 호스트 데이터(Data_A1, Data_B1, Data_C1)를 스토리지 장치(200)로 제공할 수 있다.
스토리지 장치(200)는 스트림 ID1에 대응하는 메모리 영역인 제1 메모리 영역(MR1)에 호스트 데이터(Data_A1, Data_B1, Data_C1)를 저장할 수 있다.
제1 가상 머신(VM1)은 특정 시점의 파일에 데이터 A1, B1, C1이 포함된 상태를 보존하기 위해, 스냅샷 ID SS1_1에 해당하는 스냅샷을 생성할 수 있다. 제1 가상 머신(VM1)은 스냅샷을 생성하기 위해, 데이터 A1, B1, C1의 논리 주소들(LBA1, LBA2, LBA3)을 가리키는 포인터를 포함하는 스냅샷 정보(101)를 생성할 수 있다. 그리고, 제1 가상 머신(VM1)은 단계 S205에서 스토리지 장치(200)가 논리 주소들(LBA1, LBA2, LBA3)에 해당하는 논리 영역을 프로텍션하도록 스냅샷 ID SS1_1 및 체크아웃 스냅샷 커맨드를 스토리지 장치(200)로 제공할 수 있다.
스토리지 장치(200)는 스냅샷 관리 테이블(232)의 제1 가상 머신(VM1) 및 스트림 ID1에 해당하는 엔트리에 스냅샷 ID SS1_1을 저장할 수 있다. 그리고, 도면에는 생략되었으나 스토리지 장치(200)는 스냅샷 관리 테이블(232)에 스냅샷 ID SS1_1과 함께 논리 주소들(LBA1, LBA2, LBA3)을 더 저장할 수 있다.
한편, 제1 가상 머신(VM1)은 스냅샷 ID SS1_1에 해당하는 스냅샷 동작이 완료된 후에 데이터 A1, B1, C1이 포함된 파일을 업데이트할 수 있다. 예를 들어, 데이터 A1, B1, C1이 변경되거나, 다른 데이터가 추가될 수도 있다.
제1 가상 머신(VM1)은 데이터 A1, B1, C1을 업데이트하는 경우에도, 스냅샷 ID SS1_1에 해당하는 스냅샷 시점으로 시스템을 되돌릴 수 있도록 데이터 A1, B1, C1을 논리 주소들(LBA1, LBA2, LBA3)에 해당하는 논리 영역에 보존할 수 있다. 그리고, 제1 가상 머신(VM1)은 업데이트된 데이터를 다른 논리 영역에 기록할 수 있다. 그리고, 제1 가상 머신(VM1)은 데이터가 업데이트된 이후 시점의 상태 또한 보존하기 위해서, 추가적인 스냅샷 동작을 수행할 수 있다.
제1 가상 머신(VM1)이 스냅샷 시점의 데이터를 보존하면서 업데이트된 데이터를 기록하는 다양한 방법들이 있다. 이하에서, 도 11a 및 도 11b를 참조하여 제1 가상 머신(VM1)이 다양한 방법들을 사용하여 업데이트된 데이터를 기록할 때 스토리지 장치(200)가 가상 머신(VM1)의 추가적인 스냅샷 동작을 지원하는 방법이 설명된다.
도 11a는 제1 가상 머신(VM1)이 도 10을 참조하여 설명된 상태에서 데이터를 업데이트하고, 증분 스냅샷 방법으로 업데이트된 데이터를 기록하는 경우를 예로 들어 스토리지 장치(200)가 추가적인 스냅샷 동작을 지원하는 방법이 설명된다.
제1 가상 머신(VM1)이 증분 스냅샷 방법을 이용하는 경우, 기존 데이터를 유지한 채로 새로운 논리 주소를 할당하여 업데이트된 데이터를 기록할 수 있다.
데이터 A1, B1, C1을 포함하는 파일에서 데이터 A1이 데이터 A2로 업데이트되고, 데이터 D1이 추가될 수 있다. 즉, 현 시점에서 제1 가상 머신(VM1)은 데이터 A2, B1, C1, D1을 유효한 데이터로 포함할 수 있다.
제1 가상 머신(VM1)은 데이터 A1, B1, C1을 포함하는 기존 파일을 기존 논리 영역에 유지한 채로 새로운 논리 영역에 업데이트된 데이터 A2, D1을 기록할 수 있다. 예를 들어, 업데이트된 데이터 A2, D1를 기록하기 위해 새로운 논리 주소인 LBA4, LBA5를 할당할 수 있다.
단계 S211에서, 제1 가상 머신(VM1)은 업데이트된 데이터를 스토리지 장치(200)에 저장하기 전에 스냅샷 ID 및 체크인 스냅샷 커맨드를 스토리지 장치(200)로 제공할 수 있다. 도 11a의 예에서, 스냅샷 ID는 SS1_1과는 구별되는 ID인 SS1_2일 수 있다.
스토리지 장치(200)는 체크인 스냅샷 커맨드에 응하여 제1 가상 머신(VM1)에 스트림 ID를 할당할 수 있다. 도 10a의 예에서, 멀티스트림 스냅샷 테이블(231)에 따르면 스냅샷 ID SS1_2에 해당하는 체크인 스냅샷 커맨드가 제공된 시점에 스트림 ID1은 제2 가상 머신(VM2)에 할당된 상태일 수 있다. 스토리지 장치(200)는 다른 가상 머신에 할당되지 않은 스트림 ID2를 제1 가상 머신(VM1)에 할당할 수 있다.
단계 S212 및 단계 S213에서, 제1 가상 머신(VM1)은 라이트 커맨드들과 함께 데이터 A2, D1 및 논리 주소 LBA4, LBA5를 스토리지 장치(200)로 제공할 수 있다.
스토리지 장치(200)는 라이트 커맨드들에 응하여 데이터 A2, D1을 스트림 ID2에 대응하는 메모리 영역인 제2 메모리 영역(MR2)에 프로그램할 수 있다. 한편, 데이터 A1, B1, C1은 제1 메모리 영역(MR1)에 보존될 수 있다.
제1 가상 머신(VM1)은 데이터 A2, B1, C1, D1이 포함된 상태를 보존하기 위해 스냅샷 ID SS1_2에 해당하는 스냅샷을 생성할 수 있다. 예를 들어, 제1 가상 머신(VM1)은 데이터 A2, B1, C1, D1의 논리 주소들(LBA2, LBA3, LBA4, LBA5)을 가리키는 포인터를 포함하는 스냅샷 정보(102)를 생성할 수 있다. 그리고, 제1 가상 머신(VM1)은 단계 S214에서 스토리지 장치(200)가 데이터를 프로텍션하도록 스냅샷 ID SS1_2 및 체크아웃 스냅샷 커맨드를 제공할 수 있다.
스토리지 장치(200)는 스냅샷 관리 테이블(232)의 제1 가상 머신(VM1) 및 스트림 ID2에 해당하는 엔트리에 스냅샷 ID SS1_2를 저장할 수 있다. 그리고, 도면에는 생략되었으나 스토리지 장치(200)는 스냅샷 관리 테이블(232)에 스냅샷 ID SS1_2와 함께 스냅샷 동작 중에 저장된 데이터에 대응하는 논리 주소들(LBA4, LBA5)을 더 저장할 수 있다. 스토리지 장치(200)는 논리 주소들(LBA4, LBA5)에 대응하는 데이터가 변경 또는 삭제되지 않도록 논리 주소들(LBA4, LBA5)에 대응하는 논리 영역을 프로텍션할 수 있다.
도 11a의 예예서, 제1 가상 머신(VM1)은 스냅샷 정보(101, 102)를 이용하여 스냅샷 시점으로 파일 상태를 되돌릴 수 있다. 논리 주소들(LBA1 - LBA5)에 대응하는 데이터는 스토리지 장치(200)에 프로텍션될 수 있다. 따라서, 제1 가상 머신(VM1)은 제1 스냅샷 정보(101)가 가리키는 논리 주소들(LBA1, LBA2, LBA3)을 이용하여 스토리지 장치(200)로 액세스하면 데이터 A1, B1, C1을 복구할 수 있다. 그리고, 제1 가상 머신(VM1)은 제2 스냅샷 정보(102)가 가리키는 논리 주소들(LBA2, LBA3, LBA4, LBA5)를 이용하여 스토리지 장치(200)로 액세스하면 데이터 A2, B1, C1, D1을 복구할 수 있다.
도 11b는, 제1 가상 머신(VM1)이 도 10을 참조하여 설명된 상태에서 데이터를 업데이트하고, 도 11a와는 다르게 전체 스냅샷 방법으로 업데이트된 데이터를 기록하는 경우를 예로 들어 스토리지 장치(200)가 추가적인 스냅샷 동작을 지원하는 방법이 설명된다.
제1 가상 머신(VM1)이 전체 스냅샷 방법을 이용하는 경우, 기존 데이터를 복사하여 새로운 논리 영역에 저장하고, 상기 새로운 논리 영역에 저장된 데이터를 업데이트할 수 있다. 제1 가상 머신(VM1)은 기존 파일의 데이터 A1, B1, C1을 복사하여 논리 주소 LBA4, LBA5, LBA6에 기록할 수 있다. 데이터 A1, B1, C1이 논리 주소 LBA4, LBA5, LBA6에 기록될 수 있다. 그리고, 데이터 A1이 데이터 A2로 변경되면 논리 주소 LBA4에 데이터 A2를 덮어쓰기할 수 있다. 그리고, 데이터 D1이 추가되면 새로운 논리 주소 LBA7에 데이터 D1을 기록할 수 있다.
단계 S221에서, 제1 가상 머신(VM1)은 업데이트된 데이터를 스토리지 장치(200)에 저장하기 전에, 스냅샷 ID 및 체크인 스냅샷 커맨드를 스토리지 장치(200)로 제공할 수 있다. 스토리지 장치(200)는 체크인 스냅샷 커맨드에 응하여 제1 가상 머신(VM1)에 스트림 ID를 할당할 수 있다. 도 11a를 참조하여 설명된 것과 유사하게, 스토리지 장치(200)는 제1 가상 머신(VM1)에 스트림 ID2를 할당할 수 있다.
제1 가상 머신(VM1)은 기존 파일의 데이터 A1, B1, C1을 복사하여 논리 주소 LBA4, LBA5, LBA6에 기록하기 위해 단계 S222 내지 단계 S224에서 라이트 커맨드들과 함께 논리 주소들(LBA4, LBA5, LBA6) 및 호스트 데이터(A1, B1, C1)를 스토리지 장치(200)로 제공할 수 있다. 그 이후에, 제1 가상 머신(VM1)은 데이터를 업데이트하기 위해 단계 S225 및 단계 S226에서 라이트 커맨드들과 함께 논리 주소들(LBA4, LBA7) 및 호스트 데이터(A2, D1)를 스토리지 장치(200)로 제공할 수 있다.
데이터 A1, B1, C1, A2, D1은 스트림 ID2에 대응하는 제2 메모리 영역(MR2)에 순차적으로 프로그램될 수 있다. 제2 메모리 영역(MR2)에서, 논리 주소 LBA4에 대응하는 데이터 A1은 업데이트된 데이터 A2가 제2 메모리 영역(MR2)에 프로그램될 때 무효화될 수 있다.
제1 가상 머신(VM1)은 파일에 데이터 A2, B1, C1, D1이 포함된 상태를 보존하기 위해 스냅샷 ID SS1_2에 해당하는 스냅샷을 생성할 수 있다. 예를 들어, 제1 가상 머신(VM1)은 데이터 A2, B1, C1, D1의 논리 주소들(LBA4, LBA5, LBA6, LBA7)을 가리키는 포인터를 포함하는 스냅샷 정보(103)를 생성할 수 있다. 그리고, 제1 가상 머신(VM1)은 단계 S227에서 스토리지 장치(200)가 논리 주소들(LBA4, LBA5, LBA6, LBA7)에 대응하는 논리 영역을 프로텍션하도록 스냅샷 ID SS1_2 및 체크아웃 스냅샷 커맨드를 제공할 수 있다.
스토리지 장치는 스냅샷 관리 테이블(232)의 제1 가상 머신(VM1) 및 스트림 ID2에 해당하는 엔트리에 스냅샷 ID SS1_2를 저장하고, 논리 주소들(LBA4, LBA5, LBA6, LBA7)을 더 저장할 수 있다.
도 11a에서 설명된 것과 마찬가지로, 스토리지 장치(200)는 스냅샷 관리 테이블(232)에 포함된 논리 주소에 대응하는 논리 영역을 프로텍션할 수 있다. 그리고, 제1 가상 머신(VM1)이 스냅샷 정보(101, 103)를 이용하여 프로텍션된 데이터에 액세스함으로써 각각의 스냅샷 시점으로 파일의 상태를 되돌릴 수 있다.
본 발명의 실시 예에 따르면, 가상 머신은 스토리지 장치(200)로 체크아웃 스냅샷 커맨드를 제공함으로써, 상기 체크아웃 스냅샷 커맨드가 제공된 시점에 가상 머신에 저장된 데이터에 해당하는 논리 영역을 프로텍션하도록 스토리지 장치(200)를 제어할 수 있다.
가상 머신은 스토리지 장치(200)에 저장된 호스트 데이터를 호스트(100)로 로드하지 않고, 체크아웃 스냅샷 커맨드가 제공된 시점의 데이터에 대해 스냅샷 동작을 수행할 수 있다. 따라서, 스냅샷 동작을 수행하기 위한 호스트(100) 및 스토리지 장치(200)의 데이터 입출력량이 감소할 수 있으며, 스냅샷 커맨드가 제공된 시점의 정확한 데이터를 보존할 수 있다.
도 12 내지 도 13b를 참조하여 본 발명의 실시 예에 따른 복수의 가상 머신들 및 스토리지 장치 간의 상호작용이 설명된다. 구체적으로, 도 12 내지 도 13b는 제1 및 제2 가상 머신(VM1, VM2), 그리고 스토리지 장치(200) 간의 상호작용을 예로 들어 본 발명의 실시 예를 설명한다.
도 12는 본 발명의 실시 예에 따른 호스트-스토리지 시스템의 상호작용을 나타내는 흐름도이다.
단계 S301에서, 제2 가상 머신(VM2)은 스토리지 장치(200)로 스냅샷 ID SS2_1과 함께 체크인 스냅샷 커맨드를 제공할 수 있다.
단계 S302에서, 스토리지 장치(200)는 상기 체크인 스냅샷 커맨드에 응하여 다른 가상 머신들에 할당되지 않은 스트림 ID를 제2 가상 머신(VM2)에 할당할 수 있다. 도 12의 예에서, 제2 가상 머신(VM2)에 스트림 ID1이 할당될 수 있다.
단계 S303에서, 제1 가상 머신(VM1)은 스토리지 장치(200)로 스냅샷 ID SS1_2와 함께 체크인 스냅샷 커맨드를 제공할 수 있다.
단계 S304에서, 스토리지 장치(200)는 상기 체크인 스냅샷 커맨드에 응하여 제1 가상 머신(MV1)에 스트림 ID를 할당할 수 있다. 스토리지 장치(200)는 제2 가상 머신(VM2) 등에 할당되지 않은 스트림 ID2를 제1 가상 머신(VM1)에 할당할 수 있다.
요컨대, 단계 S301 내지 단계 S304에서 서로 다른 가상 머신에 서로 다른 스트림 ID가 할당될 수 있다. 서로 다른 가상 머신들의 스냅샷 동작이 시간적으로 중첩되는 경우에도, 서로 다른 가상 머신으로부터의 데이터는 서로 다른 스트림 ID에 대응하는 서로 다른 메모리 영역에 저장될 수 있다.
단계 S305에서, 제1 가상 머신(VM1)은 라이트 커맨드, 논리 주소 및 호스트 데이터를 스토리지 장치로 제공할 수 있다.
단계 S306에서, 스토리지 장치(200)는 제1 가상 머신(VM1)으로부터의 호스트 데이터를 스트림 ID2에 대응하는 제2 메모리 영역(MR2)에 저장할 수 있다.
단계 S307에서, 제2 가상 머신(VM2)은 라이트 커맨드, 논리 주소 및 호스트 데이터를 스토리지 장치로 제공할 수 있다.
단계 S308에서, 스토리지 장치(200)는 제2 가상 머신(VM2)으로부터의 호스트 데이터를 스트림 ID1에 대응하는 제1 메모리 영역(MR1)에 저장할 수 있다.
단계 S309에서, 제1 가상 머신(VM1)은 스냅샷 ID SS1_2와 함께 체크아웃 스냅샷 커맨드를 제공할 수 있다.
단계 S310에서, 스토리지 장치(200)는 스냅샷 관리 테이블을 업데이트함으로써 제1 가상 머신(VM1)으로부터 제공되어 제2 메모리 영역(MR2)에 저장된 데이터를 프로텍션할 수 있다. 예를 들어, 스토리지 장치는 스냅샷 관리 테이블의 제1 가상 머신(VM1) 및 스트림 ID2에 대한 엔트리에 스냅샷 ID SS1_2 및 상기 제2 메모리 영역(MR2)에 저장된 데이터의 논리 주소들을 저장할 수 있다.
단계 S311에서, 스토리지 장치는 스트림 ID2를 해제할 수 있다.
도 13a 및 도 13b는 본 발명의 실시 예에 따른 쓰기 증폭 감소 효과를 설명하기 위한 도면들이다.
도 13a는 본 발명의 실시 예와는 다른 비교예로서, 스토리지 장치가 복수의 가상 머신들로부터의 데이터를 구분하지 않고 비휘발성 메모리(220)에 포함된 메모리 블록들(BLK1 - BLK4)에 순차적으로 저장하는 경우를 예시한다.
도 12를 참조하여 설명된 것과 같이, 제1 가상 머신(VM1)과 제2 가상 머신(VM2)의 스냅샷 동작이 시간적으로 중첩될 수 있다. 스냅샷 동작들이 시간적으로 중첩되는 경우, 호스트로부터 제1 가상 머신(VM1)의 데이터와 제2 가상 머신(VM2)의 데이터가 번갈아가며 수신될 수 있다. 도 13a는 제1 가상 머신(VM1)의 데이터와 제2 가상 머신(VM2)의 데이터가 서로 구분되지 않고, 호스트로부터 수신된 순서대로 메모리 블록들에 프로그램되는 경우를 예시한다.
가상 머신들의 데이터가 서로 구분되지 않고 메모리 블록에 프로그램되는 경우, 스토리지 장치(200)의 쓰기 증폭이 증가할 수 있다. 예를 들어, 가상 머신들은 생성된지 오래된 스냅샷들을 제거할 수 있다. 가상 머신이 스냅샷을 제거하는 경우, 스토리지 장치(200)에 프로텍션된 데이터는 불필요한 데이터가 될 수 있으며, 메모리 블록들 내에서 무효화될 수 있다.
도 13a의 비교예에 따르면, 제1 가상 머신(VM1)의 데이터가 무효화되고, 제2 가상 머신(VM2)의 데이터가 보존되는 경우에 제1 및 제2 메모리 블록에는 무효화된 데이터와 유효 데이터가 섞일 수 있다. 메모리 블록에 무효화된 데이터가 섞여 있는 경우 메모리 블록들의 데이터 저장 효율이 떨어질 수 있으며, 유효 데이터들을 한곳에 모으기 위해 가비지 콜렉션 동작이 수행될 수 있으므로 스토리지 장치(200)의 쓰기 증폭이 증가할 수 있다.
도 13b는 본 발명의 실시 예에 따라, 스토리지 장치가 서로 다른 가상 머신의 데이터를 구분하여 메모리 영역들(MR1 - MR4)에 저장하는 경우를 예시한다.
도 13b를 참조하면, 제1 가상 머신(VM1)의 데이터는 제2 메모리 영역(MR2)에 저장되고, 제2 가상 머신(VM2)의 데이터는 제1 메모리 영역(MR1)에 저장될 수 있다. 제1 가상 머신(VM1)의 데이터가 무효화되고, 제2 가상 머신(VM2)의 데이터가 보존되는 경우, 제2 메모리 영역(MR2)의 데이터는 무효화될 수 있지만 제1 메모리 영역(MR1)의 데이터는 유효 데이터일 수 있다. 도 13b를 참조하면, 서로 다른 가상 머신들의 데이터가 서로 다른 메모리 영역에 구분하여 저장되는 경우, 가비지 콜렉션 동작을 수행하지 않더라도 유효 데이터가 한곳에 모일 수 있다. 따라서, 스토리지 장치의 쓰기 증폭이 감소될 수 있다.
도 14 및 도 15는 본 발명의 실시 예에 따른 스토리지 장치가 적용될 수 있는 시스템을 예시하는 도면들이다.
도 14는 본 발명의 일 실시예에 따른 스토리지(storage) 장치가 적용된 시스템(1000)을 도시한 도면이다. 도 14의 시스템(1000)은 기본적으로 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 도 14의 시스템(1000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.
도 14를 참조하면, 시스템(1000)은 메인 프로세서(main processor)(1100), 메모리(1200a, 1200b) 및 스토리지 장치(1300a, 1300b)를 포함할 수 있으며, 추가로 촬영 장치(image capturing device)(1410), 사용자 입력 장치(user input device)(1420), 센서(1430), 통신 장치(1440), 디스플레이(1450), 스피커(1460), 전력 공급 장치(power supplying device)(1470) 및 연결 인터페이스(connecting interface)(1480) 중 하나 이상을 포함할 수 있다.
메인 프로세서(1100)는 시스템(1000)의 전반적인 동작, 보다 구체적으로는 시스템(1000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다.
메인 프로세서(1100)는 하나 이상의 CPU 코어(1110)를 포함할 수 있으며, 메모리(1200a, 1200b) 및/또는 스토리지 장치(1300a, 1300b)를 제어하기 위한 컨트롤러(1120)를 더 포함할 수 있다. 실시예에 따라서는, 메인 프로세서(1100)는 AI(artificial intelligence) 데이터 연산 등 고속 데이터 연산을 위한 전용 회로인 가속기(accelerator)(1130)를 더 포함할 수 있다. 이와 같은 가속기(1130)는 GPU(Graphics Processing Unit), NPU(Neural Processing Unit) 및/또는 DPU(Data Processing Unit) 등을 포함할 수 있으며, 메인 프로세서(1100)의 다른 구성 요소와는 물리적으로 독립된 별개의 칩(chip)으로 구현될 수도 있다.
메인 프로세서(1100)는 호스트 운영 체제를 구동할 수 있으며, 호스트 운영 체제는 복수의 가상 머신들을 구동할 수 있다. 가상 머신들은 서로 독립적으로 동작할 수 있다.
메모리(1200a, 1200b)는 시스템(1000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메모리(1200a, 1200b)는 메인 프로세서(1100)와 동일한 패키지 내에 구현되는 것도 가능하다.
스토리지 장치(1300a, 1300b)는 전원 공급 여부와 관계 없이 데이터를 저장하는 비휘발성 저장 장치로서 기능할 수 있으며, 메모리(1200a, 1200b)에 비해 상대적으로 큰 저장 용량을 가질 수 있다. 스토리지 장치(1300a, 1300b)는 스토리지 컨트롤러(1310a, 1310b)와, 스토리지 컨트롤러(1310a, 1310b)의 제어 하에 데이터를 저장하는 비휘발성 메모리(non-volatile memory, NVM)(1320a, 1320b)를 포함할 수 있다. 비휘발성 메모리(1320a, 1320b)는 2D(2-dimensional) 구조 혹은 3D(3-dimensional) V-NAND(Vertical NAND) 구조의 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다.
스토리지 장치(1300a, 1300b)는 메인 프로세서(1100)와는 물리적으로 분리된 상태로 시스템(1000)에 포함될 수도 있고, 메인 프로세서(1100)와 동일한 패키지 내에 구현될 수도 있다. 또한, 스토리지 장치(1300a, 1300b)는 SSD(solid state device) 혹은 메모리 카드(memory card)와 같은 형태를 가짐으로써, 후술할 연결 인터페이스(1480)와 같은 인터페이스를 통해 시스템(1000)의 다른 구성 요소들과 탈부착 가능하도록 결합될 수도 있다. 이와 같은 스토리지 장치(1300a, 1300b)는 UFS(Universal Flash Storage), eMMC(embedded multi-media card) 혹은 NVMe(non-volatile memory express)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.
스토리지 장치(1300a, 1300b)는 비휘발성 메모리에 저장될 데이터를 복수의 스트림들로 분류하고, 복수의 스트림들을 복수의 메모리 영역들에 구분하여 저장하는 멀티 스트림 기능을 제공할 수 있다.
본 발명의 실시 예에 따르면, 스토리지 장치(1300a, 1300b)는 메인 프로세서(1100)에서 구동되는 복수의 가상 머신들의 스냅샷 동작을 지원할 수 있다. 스토리지 장치(1300a, 1300b)는 가상 머신들 각각의 체크인 스냅샷 요청에 응하여 가상 머신별로 서로 다른 스트림 ID를 할당하고, 서로 다른 스트림 ID를 갖는 데이터를 서로 다른 메모리 영역에 구분하여 저장할 수 있다.
스토리지 장치(1300a, 1300b)는 가상 머신들의 체크아웃 스냅샷 요청에 응하여 메모리 영역들에 저장된 데이터에 해당하는 논리 영역을 프로텍션할 수 있다. 그리고, 스토리지 장치(1300a, 1300b)는 가상 머신들의 체크아웃 스냅샷 요청에 응하여 할당된 스트림 ID를 해제할 수 있다.
본 발명의 실시 예에 따르면, 멀티 스트림 기능을 제공하는 스토리지 장치(1300a, 1300b)가 복수의 가상 머신들의 스냅샷 동작을 지원함으로써 복수의 가상 머신들이 신속하고 정확한 스냅샷을 생성하도록 할 수 있으며, 스토리지 장치(1300a, 1300b)의 쓰기 증폭을 방지할 수 있다. 그리고, 스토리지 장치(1300a, 1300b)는 스토리지 장치(1300a, 1300b)가 지원하는 스트림의 개수보다 많은 수의 가상 머신들의 스냅샷 동작을 지원할 수 있다.
촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다.
사용자 입력 장치(1420)는 시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keyboard), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다.
센서(1430)는 시스템(1000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 센서 등일 수 있다.
통신 장치(1440)는 다양한 통신 규약에 따라 시스템(1000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(1440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다.
디스플레이(1450) 및 스피커(1460)는 시스템(1000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다.
전력 공급 장치(1470)는 시스템(1000)에 내장된 배터리(도시 안함) 및/또는외부 전원으로부터 공급되는 전력을 적절히 변환하여 시스템(1000)의 각 구성 요소들에게 공급할 수 있다.
연결 인터페이스(1480)는 시스템(1000)과, 시스템(1000)에 연결되어 시스템(1000과 데이터를 주고받을 수 있는 외부 장치 사이의 연결을 제공할 수 있다. 연결 인터페이스(1480)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe, IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC, UFS, eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
도 15는 본 발명의 일 실시예에 따른 메모리 장치가 적용된 데이터 센터를 나타낸 도면이다.
도 15를 참조하면, 데이터 센터(3000)는 각종 데이터를 모아두고 서비스를 제공하는 시설로서, 데이터 스토리지 센터라고 지칭될 수도 있다. 데이터 센터(3000)는 검색 엔진 및 데이터 베이스 운용을 위한 시스템일 수 있으며, 은행 등의 기업 또는 정부기관에서 사용되는 컴퓨팅 시스템일 수 있다. 데이터 센터(3000)는 애플리케이션 서버들(3100 내지 3100n) 및 스토리지 서버들(3200 내지 3200m)을 포함할 수 있다. 애플리케이션 서버들(3100 내지 3100n)의 개수 및 스토리지 서버들(3200 내지 3200m)의 개수는 실시예에 따라 다양하게 선택될 수 있고, 애플리케이션 서버들(3100 내지 3100n)의 개수 및 스토리지 서버들(3200 내지 3200m)의 개수는 서로 다를 수 있다.
애플리케이션 서버(3100) 또는 스토리지 서버(3200)는 프로세서(3110, 3210) 및 메모리(3120, 3220) 중 적어도 하나를 포함할 수 있다. 스토리지 서버(3200)를 예시로 설명하면, 프로세서(3210)는 스토리지 서버(3200)의 전반적인 동작을 제어할 수 있고, 메모리(3220)에 액세스하여 메모리(3220)에 로딩된 명령어 및/또는 데이터를 실행할 수 있다. 메모리(3220)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 및/또는 NVMDIMM(Non-Volatile DIMM)일 수 있다. 실시예에 따라, 스토리지 서버(3200)에 포함되는 프로세서(3210)의 개수 및 메모리(3220)의 개수는 다양하게 선택될 수 있다. 일 실시예에서, 프로세서(3210)와 메모리(3220)는 프로세서-메모리 페어를 제공할 수 있다. 일 실시예에서, 프로세서(3210)와 메모리(3220)의 개수는 서로 다를 수도 있다. 프로세서(3210)는 단일 코어 프로세서 또는 다중 코어 프로세서를 포함할 수 있다. 스토리지 서버(3200)에 대한 상기 설명은, 애플리케이션 서버(3100)에도 유사하게 적용될 수 있다. 실시예에 따라, 애플리케이션 서버(3100)는 스토리지 장치(3150)를 포함하지 않을 수도 있다. 스토리지 서버(3200)는 적어도 하나 이상의 스토리지 장치(3250)를 포함할 수 있다. 스토리지 서버(3200)에 포함되는 스토리지 장치(3250)의 개수는 실시예에 따라 다양하게 선택될 수 있다.
애플리케이션 서버들(3100 내지 3100n) 및 스토리지 서버들(3200 내지 3200m)은 네트워크(3300)를 통해 서로 통신할 수 있다. 네트워크(3300)는 FC(Fibre Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(3300)의 액세스 방식에 따라 스토리지 서버들(3200 내지 3200m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.
일 실시예에서, 네트워크(3300)는 SAN(Storage Area Network)와 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 다른 예를 들어, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 다른 실시예에서, 네트워크(3300)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(3300)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.
이하에서는, 애플리케이션 서버(3100) 및 스토리지 서버(3200)를 중심으로 설명하기로 한다. 애플리케이션 서버(3100)에 대한 설명은 다른 애플리케이션 서버(3100n)에도 적용될 수 있고, 스토리지 서버(3200)에 대한 설명은 다른 스토리지 서버(3200m)에도 적용될 수 있다.
애플리케이션 서버(3100)는 사용자 또는 클라이언트가 저장 요청한 데이터를 네트워크(3300)를 통해 스토리지 서버들(3200 내지 3200m) 중 하나에 저장할 수 있다. 또한, 애플리케이션 서버(3100)는 사용자 또는 클라이언트가 독출 요청한 데이터를 스토리지 서버들(3200 내지 3200m) 중 하나로부터 네트워크(3300)를 통해 획득할 수 있다. 예를 들어, 애플리케이션 서버(3100)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.
애플리케이션 서버(3100)는 네트워크(3300)를 통해 다른 애플리케이션 서버(3100n)에 포함된 메모리(3120n) 또는 스토리지 장치(3150n)에 액세스할 수 있고, 또는 네트워크(3300)를 통해 스토리지 서버들(3200-3200m)에 포함된 메모리들(3220-3220m) 또는 스토리지 장치(3250-3250m)에 액세스할 수 있다. 이로써, 애플리케이션 서버(3100)는 애플리케이션 서버들(3100-3100n) 및/또는 스토리지 서버들(3200-3200m)에 저장된 데이터에 대해 다양한 동작들을 수행할 수 있다. 예를 들어, 애플리케이션 서버(3100)는 애플리케이션 서버들(3100-3100n) 및/또는 스토리지 서버들(3200-3200m) 사이에서 데이터를 이동 또는 카피(copy)하기 위한 명령어를 실행할 수 있다. 이 때 데이터는 스토리지 서버들(3200-3200m)의 스토리지 장치(3250-3250m)로부터 스토리지 서버들(3200-3200m)의 메모리들(3220-3220m)을 거쳐서, 또는 바로 애플리케이션 서버들(3100-3100n)의 메모리(3120-3120n)로 이동될 수 있다. 네트워크(3300)를 통해 이동하는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 서버(3200)를 예시로 설명하면, 인터페이스(3254)는 프로세서(3210)와 컨트롤러(3251)의 물리적 연결 및 NIC(Network InterConnect)(3240)와 컨트롤러(3251)의 물리적 연결을 제공할 수 있다. 예를 들어, 인터페이스(3254)는 스토리지 장치(3250)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 또한, 예를 들어, 인터페이스(3254)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), 및/또는 CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
스토리지 서버(3200)는 스위치(3230) 및 NIC(3240)을 더 포함할 수 있다. 스위치(3230)는 프로세서(3210)의 제어에 따라 프로세서(3210)와 스토리지 장치(3250)를 선택적으로 연결시키거나, NIC(3240)와 스토리지 장치(3250)를 선택적으로 연결시킬 수 있다.
일 실시예에서 NIC(3240)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(3240)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(3300)에 연결될 수 있다. NIC(3240)는 내부 메모리, DSP(Digital Signal Processor), 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(3210) 및/또는 스위치(3230) 등과 연결될 수 있다. 호스트 버스 인터페이스는, 앞서 설명한 인터페이스(3254)의 예시들 중 하나로 구현될 수도 있다. 일 실시예에서, NIC(3240)는 프로세서(3210), 스위치(3230), 스토리지 장치(3250) 중 적어도 하나와 통합될 수도 있다.
스토리지 서버들(3200-3200m) 또는 애플리케이션 서버들(3100-3100n)에서 프로세서는 스토리지 장치(3150-3150n, 3250-3250m) 또는 메모리(3120-3120n, 3220-3220m)로 커맨드를 전송하여 데이터를 프로그램하거나 리드할 수 있다. 이 때 데이터는 ECC(Error Correction Code) 엔진을 통해 에러 정정된 데이터일 수 있다. 데이터는 데이터 버스 변환(Data Bus Inversion: DBI) 또는 데이터 마스킹(Data Masking: DM) 처리된 데이터로서, CRC(Cyclic Redundancy Code) 정보를 포함할 수 있다. 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 장치(3150-3150n, 3250-3250m)는 프로세서로부터 수신된 리드 커맨드에 응답하여, 제어 신호 및 커맨드/어드레스 신호를 NAND 플래시 메모리 장치(3252-3252m)로 전송할 수 있다. 이에 따라 NAND 플래시 메모리 장치(3252-3252m)로부터 데이터를 독출하는 경우, RE(Read Enable) 신호는 데이터 출력 제어 신호로 입력되어, 데이터를 DQ 버스로 출력하는 역할을 할 수 있다. RE 신호를 이용하여 DQS(Data Strobe)가 생성될 수 있다. 커맨드와 어드레스 신호는 WE(Write Enable) 신호의 상승 엣지 또는 하강 엣지에 따라 페이지 버퍼에 래치될 수 있다.
컨트롤러(3251)는 스토리지 장치(3250)의 동작을 전반적으로 제어할 수 있다. 일 실시예에서, 컨트롤러(3251)는 SRAM(Static Random Access Memory)을 포함할 수 있다. 컨트롤러(3251)는 기입 커맨드에 응답하여 낸드 플래시(3252)에 데이터를 기입할 수 있고, 또는 독출 커맨드에 응답하여 낸드 플래시(3252)로부터 데이터를 독출할 수 있다. 예를 들어, 기입 커맨드 및/또는 독출 커맨드는 스토리지 서버(3200) 내의 프로세서(3210), 다른 스토리지 서버(3200m) 내의 프로세서(3210m) 또는 애플리케이션 서버(3100, 3100n) 내의 프로세서(3110, 3110n)로부터 제공될 수 있다. DRAM(3253)은 낸드 플래시(3252)에 기입될 데이터 또는 낸드 플래시(3252)로부터 독출된 데이터를 임시 저장(버퍼링)할 수 있다. 또한, DRAM(3253)은 메타 데이터를 저장할 수 있다. 여기서, 메타 데이터는 사용자 데이터 또는 낸드 플래시(3252)를 관리하기 위해 컨트롤러(3251)에서 생성된 데이터이다. 스토리지 장치(3250)는 보안 또는 프라이버시를 위해 SE(Secure Element)를 포함할 수 있다.
본 발명의 실시 예에 따르면, 애플리케이션 서버(3100)는 복수의 가상 머신들을 구동할 수 있고, 스토리지 서버(3200)는 멀티 스트림 기능을 제공할 수 있다. 스토리지 서버(3200)는 멀티 스트림 기능을 이용하여 상기 복수의 가상 머신들의 신속하고 정확한 스냅샷 동작을 지원할 수 있다.
본 발명은 상술한 실시형태 및 첨부된 도면에 의해 한정되는 것이 아니며 첨부된 청구범위에 의해 한정하고자 한다. 따라서, 청구범위에 기재된 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 당 기술분야의 통상의 지식을 가진 자에 의해 다양한 형태의 치환, 변형 및 변경이 가능할 것이며, 이 또한 본 발명의 범위에 속한다고 할 것이다.
10: 호스트-스토리지 시스템
100: 호스트
VM1 - VMn: 가상 머신
200: 스토리지 장치
210: 스토리지 컨트롤러
220: 비휘발성 메모리
MR1 - MR4: 메모리 영역

Claims (10)

  1. 복수의 가상 머신들을 구동하는 호스트; 및
    복수의 메모리 영역들을 포함하고, 상기 호스트로부터의 데이터를 복수의 스트림들로 분류하고, 상기 복수의 스트림들을 상기 복수의 메모리 영역들에 구분하여 저장하는 멀티 스트림 기능을 제공하는 스토리지 장치를 포함하고,
    상기 스토리지 장치는
    상기 복수의 가상 머신들 중 제1 가상 머신의 체크인 스냅샷 커맨드에 응하여 상기 제1 가상 머신에 제1 스트림 ID(identifier)를 할당하고, 상기 제1 가상 머신의 라이트 커맨드에 응하여 데이터를 상기 복수의 메모리 영역들 중 상기 제1 스트림 ID에 대응하는 제1 메모리 영역에 저장하며,
    상기 제1 가상 머신은
    상기 스토리지 장치로 체크아웃 스냅샷 커맨드를 제공하고, 상기 데이터의 논리 주소들을 가리키는 제1 스냅샷 정보를 생성하며,
    상기 스토리지 장치는
    상기 체크아웃 스냅샷 커맨드에 응하여 상기 데이터의 논리 주소들을 포함하는 스냅샷 관리 정보를 저장하고, 상기 제1 스트림 ID를 할당 해제하는
    전자 시스템.
  2. 제1항에 있어서,
    상기 스토리지 장치는
    정해진 수의 스트림 ID들 각각이 가상 머신에 할당되었는지 여부를 나타내는 멀티스트림 슬롯 테이블을 저장하고, 상기 멀티스트림 슬롯 테이블을 참조하여 어느 가상 머신에도 할당되지 않은 스트림 ID를 상기 제1 스트림 ID로서 할당하는
    전자 시스템.
  3. 제2항에 있어서,
    상기 호스트에서 구동되는 상기 복수의 가상 머신들의 수는 상기 스트림 ID들의 정해진 수보다 많은
    전자 시스템.
  4. 제1항에 있어서,
    상기 스토리지 장치는
    상기 스냅샷 관리 정보를 참조하여, 상기 체크아웃 스냅샷 커맨드가 제공된 시점에 상기 제1 메모리 영역에 저장된 데이터를 보존하는
    전자 시스템.
  5. 제4항에 있어서,
    상기 스토리지 장치는
    상기 호스트로부터 라이트 커맨드, 데이터 및 논리 주소를 수신하고, 상기 수신된 논리 주소가 상기 스냅샷 관리 정보에 포함되는 경우, 상기 호스트로 실패 응답을 제공함으로써 상기 제1 메모리 영역에 저장된 데이터를 보존하는
    전자 시스템.
  6. 제4항에 있어서,
    상기 제1 가상 머신은
    상기 제1 스냅샷 정보를 이용하여 상기 체크아웃 스냅샷 커맨드가 제공된 시점으로 상기 데이터를 되돌리고, 상기 제1 스냅샷 정보가 가리키는 논리 주소들을 사용하여 상기 제1 메모리 영역에 보존된 데이터에 액세스하는
    전자 시스템.
  7. 복수의 메모리 영역들을 포함하는 메모리 장치; 및
    호스트로부터의 데이터를 복수의 스트림들로 분류하고, 상기 복수의 스트림들을 상기 복수의 메모리 영역들에 구분하여 저장하는 멀티 스트림 기능을 제공하는 컨트롤러를 포함하며,
    상기 컨트롤러는
    상기 호스트에서 구동되고 시간적으로 중첩된 스냅샷 동작을 수행하는 복수의 가상 머신들에 서로 다른 스트림 ID들을 할당하고, 상기 스트림 ID들에 기초하여 상기 복수의 가상 머신들로부터의 데이터를 상기 복수의 메모리 영역들에 구분하여 저장하는
    스토리지 장치.
  8. 제7항에 있어서,
    상기 컨트롤러는
    정해진 수의 스트림 ID들 각각이 가상 머신에 할당되었는지 여부를 나타내는 멀티스트림 슬롯 테이블을 저장하고, 상기 멀티스트림 슬롯 테이블을 참조하여 상기 복수의 가상 머신들에 서로 다른 스트림 ID들을 할당하는
    스토리지 장치.
  9. 복수의 메모리 영역들을 포함하는 메모리 장치; 및
    호스트로부터의 데이터를 복수의 스트림들로 분류하고, 상기 복수의 스트림들을 상기 복수의 메모리 영역들에 구분하여 저장하는 멀티 스트림 기능을 제공하는 컨트롤러를 포함하며,
    상기 컨트롤러는
    상기 호스트에서 구동되는 가상 머신으로부터의 체크인 스냅샷 커맨드에 응하여 상기 가상 머신에 스트림 ID를 할당하고, 상기 가상 머신으로부터의 라이트 커맨드에 응하여 상기 복수의 메모리 영역들 중 상기 스트림 ID에 대응하는 메모리 영역에 상기 가상 머신의 데이터를 저장하며, 상기 가상 머신으로부터의 체크아웃 스냅샷 커맨드에 응하여 상기 데이터에 대응하는 논리 주소들을 스냅샷 관리 정보로서 저장하고, 상기 호스트로부터 상기 스냅샷 관리 정보에 포함된 논리 주소에 대한 라이트 커맨드가 수신되면 상기 라이트 커맨드에 대한 실패 응답을 출력함으로써 상기 체크아웃 스냅샷 커맨드가 제공된 시점의 데이터를 보존하는
    스토리지 장치.
  10. 제9항에 있어서,
    상기 컨트롤러는
    정해진 수의 스트림 ID들 중 어느 가상 머신에도 할당되지 않은 스트림 ID를 상기 가상 머신에 할당하는
    스토리지 장치.

KR1020210144308A 2021-10-27 2021-10-27 스토리지 장치 및 전자 시스템 KR20230060065A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020210144308A KR20230060065A (ko) 2021-10-27 2021-10-27 스토리지 장치 및 전자 시스템
US17/811,336 US20230126685A1 (en) 2021-10-27 2022-07-08 Storage device and electronic system
CN202211181104.8A CN116027965A (zh) 2021-10-27 2022-09-27 存储装置和电子系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210144308A KR20230060065A (ko) 2021-10-27 2021-10-27 스토리지 장치 및 전자 시스템

Publications (1)

Publication Number Publication Date
KR20230060065A true KR20230060065A (ko) 2023-05-04

Family

ID=86057654

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210144308A KR20230060065A (ko) 2021-10-27 2021-10-27 스토리지 장치 및 전자 시스템

Country Status (3)

Country Link
US (1) US20230126685A1 (ko)
KR (1) KR20230060065A (ko)
CN (1) CN116027965A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230289263A1 (en) * 2022-03-14 2023-09-14 Rubrik, Inc. Hybrid data transfer model for virtual machine backup and recovery

Also Published As

Publication number Publication date
US20230126685A1 (en) 2023-04-27
CN116027965A (zh) 2023-04-28

Similar Documents

Publication Publication Date Title
KR102233400B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102585883B1 (ko) 메모리 시스템의 동작 방법 및 메모리 시스템
US10235069B2 (en) Load balancing by dynamically transferring memory range assignments
KR20190090635A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20140044070A (ko) 버퍼 메모리 장치를 포함하는 데이터 저장 장치
US11762572B2 (en) Method of operating storage device and method of operating storage system using the same
KR20200076431A (ko) 메모리 컨트롤러 및 메모리 시스템의 동작 방법, 및 메모리 시스템
KR20200114212A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN114968949A (zh) 缓存数据的方法、主机设备和存储系统
US20230126685A1 (en) Storage device and electronic system
KR102425470B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
CN108804338B (zh) 数据存储装置及其操作方法
US20220283912A1 (en) Storage device, operating method of storage device, and electronic device including storage device
US20230146540A1 (en) Storage device and an operating method of a storage controller thereof
KR102435910B1 (ko) 스토리지 장치 및 그것의 동작 방법
KR20200015185A (ko) 데이터 저장 장치 및 그것의 동작 방법
EP4379524A1 (en) Storage device and storage system for direct storage
US11914879B2 (en) Storage controller and storage system comprising the same
EP4184332A1 (en) Storage controller and storage device including the same
KR102482116B1 (ko) 연산 스토리지 장치의 메모리 할당 및 보호 방법 및 이를 수행하는 연산 스토리지 장치
KR20240079650A (ko) 다이렉트 스토리지 기능을 지원하는 스토리지 장치 및 스토리지 시스템
KR20230067457A (ko) 스토리지 컨트롤러, 스토리지 시스템 및 그 동작방법
KR20230071005A (ko) 스토리지 장치
KR20230168390A (ko) 스토리지 장치 및 전자 시스템
KR20230072365A (ko) 스토리지 컨트롤러 및 이를 포함하는 스토리지 장치