KR20220003786A - 스토리지 장치의 동작 방법 - Google Patents
스토리지 장치의 동작 방법 Download PDFInfo
- Publication number
- KR20220003786A KR20220003786A KR1020200081432A KR20200081432A KR20220003786A KR 20220003786 A KR20220003786 A KR 20220003786A KR 1020200081432 A KR1020200081432 A KR 1020200081432A KR 20200081432 A KR20200081432 A KR 20200081432A KR 20220003786 A KR20220003786 A KR 20220003786A
- Authority
- KR
- South Korea
- Prior art keywords
- namespace
- storage device
- nonvolatile memory
- space
- data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
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)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명의 실시 예에 따른 스토리지 장치의 동작 방법에 있어서, 외부 호스트 장치에 의해 논리적으로 구분되어 인식되는 복수의 명칭 공간들 중 제1 명칭 공간에 대한 쓰기 요청을 수신한 경우, 제1 명칭 공간의 가용 공간이 부족한지 판단하는 단계, 제1 명칭 공간의 가용 공간이 부족한 경우, 복수의 명칭 공간들 중 제1 명칭 공간과 다른 제2 명칭 공간의 가용 공간 중 일부를 제1 명칭 공간에 대한 임시 공간으로 할당하는 단계, 외부 호스트 장치로 제1 명칭 공간의 가용 공간의 부족에 대한 정보 및 제2 명칭 공간의 임시 공간 할당에 대한 정보를 전달하는 단계, 및 제1 명칭 공간에 대한 쓰기 요청에 대응하는 데이터를 제2 명칭 공간의 임시 공간에 저장하는 단계를 포함한다.
Description
본 발명은 반도체 메모리에 관한 것으로, 좀 더 상세하게는 스토리지 장치의 동작 방법에 관한 것이다.
반도체 메모리는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등과 같이 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치 및 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리 장치, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 불휘발성 메모리 장치로 구분된다.
불휘발성 메모리 장치를 사용하는 스토리지 시스템이 적용된 데이터 센터에서, 사용자 어플리케이션은 미래의 수신되는 페이로드의(payload) 양이 얼마일지 미리 예측할 수 없다. 수신되는 데이터의 양이 명칭 공간(Namespace)의 용량을 넘긴다면, 사용자 어플리케이션은 이러한 문제를 해결할 수 있는 방법이 없다. 데이터 스토리지 용량의 오버-프로비져닝으로 이러한 문제를 예방한다면, 데이터 센터를 운영하는 TCO(total cost of ownership)가 증가한다.
본 발명의 목적은 상술된 기술적 과제를 해결하기 위한 것으로, 런-타임 시나리오에서 데이터의 연속성 및 신뢰성을 보존하는 스토리지 장치의 동작 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 스토리지 장치의 동작 방법에 있어서, 외부 호스트 장치에 의해 논리적으로 구분되어 인식되는 복수의 명칭 공간들 중 제1 명칭 공간에 대한 쓰기 요청을 수신한 경우, 제1 명칭 공간의 가용 공간이 부족한지 판단하는 단계, 제1 명칭 공간의 가용 공간이 부족한 경우, 복수의 명칭 공간들 중 제1 명칭 공간과 다른 제2 명칭 공간의 가용 공간 중 일부를 제1 명칭 공간에 대한 임시 공간으로 할당하는 단계, 외부 호스트 장치로 제1 명칭 공간의 가용 공간의 부족에 대한 정보 및 제2 명칭 공간의 임시 공간 할당에 대한 정보를 전달하는 단계, 및 제1 명칭 공간에 대한 쓰기 요청에 대응하는 데이터를 제2 명칭 공간의 임시 공간에 저장하는 단계를 포함한다.
본 발명의 실시 예에 따른 스토리지 장치의 동작 방법에 있어서, 외부 호스트 장치에 의해 물리적으로 구분되어 인식되는 복수의 불휘발성 메모리 세트들 중 제1 불휘발성 메모리 세트에 대한 쓰기 요청을 수신한 경우, 제1 불휘발성 메모리 세트의 가용 공간이 부족한지 판단하는 단계, 제1 불휘발성 메모리 세트의 가용 공간이 부족한 경우, 복수의 불휘발성 메모리 세트들 중 제1 불휘발성 메모리 세트와 다른 제2 불휘발성 메모리 세트의 가용 공간 중 일부를 제1 불휘발성 메모리 세트에 대한 임시 공간으로 할당하는 단계, 외부 호스트 장치로 제1 불휘발성 메모리 세트의 가용 공간 부족에 대한 정보 및 제2 불휘발성 메모리 세트의 임시 공간 할당에 대한 정보를 전달하는 단계, 및 제1 불휘발성 메모리 세트에 대한 쓰기 요청에 대응하는 데이터를 제2 불휘발성 메모리 세트의 임시 공간에 저장하는 단계를 포함한다.
본 발명의 실시 예에 따른 스토리지 장치의 동작 방법에 있어서, 외부 호스트 장치에 의해 논리적으로 구분되어 인식되는 복수의 명칭 공간들 중 제1 명칭 공간에 대한 쓰기 요청을 수신한 경우, 제1 명칭 공간의 가용 공간이 부족한지 판단하는 단계, 제1 명칭 공간의 가용 공간이 부족한 경우, 복수의 명칭 공간들 중 제1 명칭 공간과 다른 제2 명칭 공간의 가용 공간 중 일부를 제1 명칭 공간에 대한 임시 공간으로 할당하는 단계, 제1 명칭 공간에 대한 쓰기 요청에 대응하는 데이터를 제2 명칭 공간의 임시 공간에 저장하는 단계를 포함하고, 제1 명칭 공간에 저장된 데이터 및 제2 명칭 공간의 임시 공간에 저장된 데이터는, 외부 호스트 장치의 제어에 따라, 외부 스토리지 장치의 제3 명칭 공간으로 플러쉬된다.
본 발명의 실시 예에 따르면, 런-타임에서 사용자 어플리케이션이 할당된 명칭 공간 용량을 초과하는 데이터를 수신하더라도, 데이터 손실이 발생하지 않을 수 있다. 데이터의 연속성과 신뢰성을 보장하는 스토리지 장치의 동작 방법이 제공된다.
도 1은 발명의 실시 예에 따른 스토리지 시스템을 예시적으로 보여주는 블록도이다.
도 2는 도 1의 스토리지 컨트롤러를 예시적으로 보여주는 블록도이다.
도 3은 도 1의 복수의 불휘발성 메모리 장치들 중 하나를 예시적으로 보여주는 블록도이다.
도 4a 내지 도 4e는 본 발명에 따른 스토리지 시스템의 다양한 토폴로지들을 예시적으로 보여주는 블록도들이다.
도 5은 도 1의 스토리지 장치의 동작 방법을 보여주는 순서도이다.
도 6a 내지 도 6c는 도 1의 스토리지 장치의 동작 방법을 보여주는 도면이다.
도 7a 내지 도 7c는 도 1의 스토리지 장치의 동작 방법을 보여주는 도면이다.
도 8은 도 5 순서도의 S140 단계의 동작을 좀 더 상세하게 보여주는 순서도이다.
도 9는 본 발명의 실시 예에 따른 스토리지 시스템이 적용된 SSD 시스템을 보여주는 블록도이다.
도 10은 본 발명의 실시 예에 따른 스토리지 시스템이 적용된 데이터 센터를 예시적으로 보여주는 블록도이다.
도 2는 도 1의 스토리지 컨트롤러를 예시적으로 보여주는 블록도이다.
도 3은 도 1의 복수의 불휘발성 메모리 장치들 중 하나를 예시적으로 보여주는 블록도이다.
도 4a 내지 도 4e는 본 발명에 따른 스토리지 시스템의 다양한 토폴로지들을 예시적으로 보여주는 블록도들이다.
도 5은 도 1의 스토리지 장치의 동작 방법을 보여주는 순서도이다.
도 6a 내지 도 6c는 도 1의 스토리지 장치의 동작 방법을 보여주는 도면이다.
도 7a 내지 도 7c는 도 1의 스토리지 장치의 동작 방법을 보여주는 도면이다.
도 8은 도 5 순서도의 S140 단계의 동작을 좀 더 상세하게 보여주는 순서도이다.
도 9는 본 발명의 실시 예에 따른 스토리지 시스템이 적용된 SSD 시스템을 보여주는 블록도이다.
도 10은 본 발명의 실시 예에 따른 스토리지 시스템이 적용된 데이터 센터를 예시적으로 보여주는 블록도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 발명의 실시 예에 따른 스토리지 시스템을 예시적으로 보여주는 블록도이다. 도 1을 참조하면, 스토리지 시스템(100)은 호스트(110) 및 스토리지 장치(120)를 포함할 수 있다.
호스트(110)는 미리 정해진 인터페이스를 통해 스토리지 장치(120)와 통신할 수 있다. 예를 들어, 호스트(110)는 미리 정해진 인터페이스를 통해 스토리지 장치(120)에 데이터를 저장하거나 또는 스토리지 장치(120)에 저장된 데이터를 읽을 수 있다. 예시적인 실시 예로서, 미리 정해진 인터페이스는 PCI-express(Peripheral Component Interconnect express) 인터페이스일 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다.
스토리지 장치(120)는 스토리지 컨트롤러(130) 및 복수의 불휘발성 메모리 장치(NVM)들을 포함할 수 있다. 스토리지 컨트롤러(130)는 복수의 채널들을 통해 복수의 불휘발성 메모리 장치(NVM)들 각각과 통신할 수 있다.
스토리지 컨트롤러(130)는 호스트(110)로부터의 다양한 요청들을 처리하도록 구성될 수 있다. 예를 들어, 스토리지 컨트롤러(130)는 호스트(110)의 요청에 따라 복수의 불휘발성 메모리 장치(NVM)들 중 적어도 하나에 데이터를 저장하거나 또는 저장된 데이터를 읽을 수 있다. 예시적으로, 스토리지 컨트롤러(130)는 NVMe(Nonvolatile Memory express) 인터페이스에 기반된 NVMe 컨트롤러일 수 있다.
복수의 불휘발성 메모리 장치(NVM)들 각각은 스토리지 컨트롤러(130)의 제어에 따라 데이터를 저장하거나 또는 저장된 데이터를 출력할 수 있다. 예시적으로, 복수의 불휘발성 메모리 장치(NVM)들 각각은 NAND 플래시 메모리일 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 복수의 불휘발성 메모리 장치(NVM)들 각각은 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM), ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리 장치, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 다양한 메모리 장치들 중 적어도 하나를 포함할 수 있다.
예시적인 실시 예에서, 호스트(110)는 스토리지 장치(120)의 저장 영역을 논리적인 영역으로 관리할 수 있다. 예를 들어, 호스트(110)는 스토리지 장치(120)의 저장 공간을 논리적으로 구분된 명칭 공간(Namespace)으로 인식할 수 있다. 명칭 공간은 논리적 블록의 집합일 수 있다. 명칭 공간 ID(NSID)는 호스트(110)가 명칭 공간에 접근하기 위하여 스토리지 장치(120)에서 사용되는 식별자이다.
예시적인 실시 예에서, 호스트(110)는 스토리지 장치(120)의 저장 영역을 물리적 영역으로 관리할 수 있다. 예를 들어, 호스트(110)는 스토리지 장치(120)의 저장 공간을 논리적 및 가능한 물리적으로 구분된 불휘발성 메모리 세트들(NVM set; nonvolatile memory set)로서 인식할 수 있다. 제1 불휘발성 메모리 세트들은 제2 불휘발성 메모리 세트에 포함된 불휘발성 메모리 장치 또는 명칭 공간들과 논리적 및/또는 물리적으로 분리된 불휘발성 메모리 장치들 또는 명칭 공간들의 집합일 수 있다. 불휘발성 메모리 세트 각각은 서로 다른 불휘발성 메모리 장치를 포함할 수 있다. 불휘발성 메모리 세트는 한 개 이상의 명칭 공간 및 할당되지 않은 저장 영역을 포함할 수 있다. 하나의 명칭 공간은 하나의 불휘발성 메모리 세트에 완전히 포함될 수 있다. 예를 들어, 하나의 명칭 공간은 둘 이상의 불휘발성 메모리 세트들로 분산되지 않을 수 있다.
예시적으로, 런-타임에서 종래의 스토리지 시스템은 명칭 공간 용량을 초과하는 데이터를 수신할 경우, 수신된 데이터에 대해서 실패로 처리한다. 반면에 본 발명의 실시 예에 따른 복수의 명칭 공간을 포함하는 스토리지 장치(120)는 A 명칭 공간의 가용 공간(또는 가용 용량, available space or available storage capacity) 부족에 대하여, 여유 있는 B 명칭 공간의 임시 공간을 할당할 수 있다. 이에 따라 스토리지 장치(120)는 A 명칭 공간의 가용 공간을 초과하는 데이터를 수신한 경우, 데이터를 B 명칭 공간의 임시 공간에 저장함으로써, 쓰기 요청에 대응하는 데이터의 신뢰성과 연속성을 보장할 수 있다. 본 발명의 실시예에 따른 구성 및 효과는 이하의 도면들을 참조하여 더욱 상게하게 설명된다.
도 2는 도 1의 스토리지 컨트롤러(130)를 예시적으로 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 스토리지 컨트롤러(130)는 프로세서(131), RAM(132), 호스트 인터페이스(133), 및 NVM 인터페이스(134)를 포함할 수 있다.
프로세서(131)는 스토리지 컨트롤러(130)의 제반 동작을 제어할 수 있다. RAM(132)은 스토리지 컨트롤러(130)가 동작하는데 필요한 다양한 정보를 저장할 수 있다. RAM(132)은 스토리지 컨트롤러(130)의 버퍼 메모리, 캐시 메모리, 또는 동작 메모리일 수 있다.
스토리지 컨트롤러(130)는 호스트 인터페이스(133)를 통해 호스트(110)와 통신할 수 있다. 앞서 설명된 바와 같이, 호스트 인터페이스(133)는 PCIe 인터페이스일 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 호스트 인터페이스(133)는 USB (Universal Serial Bus), MMC (multimedia card), eMMC(embedded MMC), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer small interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage) 등과 같은 다양한 인터페이스들 중 적어도 하나를 포함할 수 있다.
스토리지 컨트롤러(130)는 NVM 인터페이스(134)를 통해 복수의 불휘발성 메모리 장치(NVM)들과 통신할 수 있다. 예시적으로, NVM 인터페이스(134)는 물리적으로 구분된 복수의 채널들을 제공할 수 있다.
도 3은 도 1의 복수의 불휘발성 메모리 장치들 중 하나를 예시적으로 보여주는 블록도이다. 도 1 및 도 3을 참조하면, 불휘발성 메모리 장치(NVM)는 메모리 셀 어레이(11), 어드레스 디코더(12), 제어 로직 회로(13), 페이지 버퍼 회로(14), 및 입출력 회로(15)를 포함할 수 있다.
메모리 셀 어레이(11)는 복수의 메모리 블록들을 포함할 수 있다. 복수의 메모리 블록들 각각은 비트라인들(BL)과 연결된 복수의 셀 스트링들을 포함할 수 있고, 복수의 셀 스트링들 각각은 워드라인들(WL)과 연결된 메모리 셀들을 포함할 수 있다.
어드레스 디코더(12)는 스트링 선택 라인들(SSL), 워드라인들(WL), 및 접지 선택 라인들(GSL)을 통해 메모리 셀 어레이(11)와 연결될 수 있다. 어드레스 디코더(12)는 스토리지 컨트롤러(121)로부터 어드레스(ADDR)를 수신하고, 수신된 어드레스(ADDR)를 디코딩하고, 디코딩된 어드레스를 기반으로 워드라인들(WL)의 전압을 제어할 수 있다.
제어 로직 회로(13)는 스토리지 컨트롤러(130)로부터 커맨드(CMD) 및 제어 신호(CTRL)를 수신하고, 수신된 신호들을 기반으로 어드레스 디코더(12), 페이지 버퍼 회로(14), 및 입출력 회로(15)를 제어할 수 있다.
페이지 버퍼 회로(14)는 비트라인들(BL)을 통해 메모리 셀 어레이(11)와 연결된다. 페이지 버퍼 회로(14)는 메모리 셀 어레이(11)로부터 읽은 데이터 또는 메모리 셀 어레이(11)에 저장될 데이터를 임시 저장할 수 있다.
입출력 회로(14)는 스토리지 컨트롤러(130)로부터 수신된 데이터(DATA)를 페이지 버퍼 회로(14)로 전달하거나 또는 페이지 버퍼 회로(14)로부터 수신된 데이터(DATA)를 스토리지 컨트롤러(130)로 전송할 수 있다.
예시적으로, 도 3을 참조하여 하나의 불휘발성 메모리 장치(NVM)가 설명되었으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예시적으로, 스토리지 컨트롤러(130)와 복수의 불휘발성 메모리 장치(NVM)들 사이의 다양한 신호들(예를 들어, 어드레스(ADDR), 커맨드(CMD), 제어 신호(CTRL), 및 데이터(DATA))는 복수의 채널들 중 대응하는 채널을 통해 송수신될 수 있다.
도 4a 내지 도 4e는 본 발명에 따른 스토리지 시스템의 다양한 토폴로지들을 예시적으로 보여주는 블록도들이다. 예시적으로, 도 4a 내지 도 4e를 참조하여 호스트(110)가 복수의 명칭 공간들을 인식할 수 있는 다양한 토폴로지들이 설명된다. 도면의 간결성 및 설명의 편의를 위하여, 도 4a 내지 도 4e에서, 유사한 구성 요소들은 유사한 참조번호를 사용하여 표시된다. 또한, 본 발명의 기술적 사상을 명확하게 설명하기 위하여, 호스트(110) 및 스토리지 컨트롤러(130)는 PCIe 포트를 통해 연결되고, NVMe 인터페이스를 기반으로 서로 통신하는 것으로 가정한다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다.
도 4a를 참조하면, 스토리지 시스템(200)은 호스트(210) 및 제1 및 제2 스토리지 장치들(220, 240)을 포함할 수 있다. 호스트(210)는 제1 및 제2 포트들(PT1, PT2)을 통해 각각 제1 및 제2 스토리지 장치들(220, 240) 각각의 제1 및 제2 스토리지 컨트롤러들(230, 250)과 통신할 수 있다. 이 경우, 제1 및 제2 스토리지 장치들(220, 240)은 서로 다른 저장 장치로 구현될 수 있다.
호스트(210)는 앞서 설명된 바와 같이, 제1 및 제2 스토리지 장치들(220, 240) 각각의 저장 영역을 복수의 명칭 공간(NS)들을 논리적으로 구분하여 인식할 수 있다. 호스트(210)는 논리적으로 구분된 복수의 명칭 공간(NS) 각각을 서로 독립적으로 제어할 수 있다.
도 4b를 참조하면, 스토리지 시스템(300)은 호스트(310) 및 스토리지 장치(320)를 포함할 수 있다. 호스트(310)는 제1 포트(PT1)를 통해 스토리지 장치(320)와 통신할 수 있다. 이 때, 스토리지 장치(320)는 물리적으로 구분된 제1 및 제2 스토리지 컨트롤러들(330, 340)를 포함할 수 있다. 제1 및 제2 스토리지 컨트롤러들(330, 340) 각각은 스토리지 장치(320)에 포함된 물리적으로 구분된 컨트롤러이며, 제1 포트(PT1)를 통해 호스트(310)와 통신할 수 있다. 예시적으로, 제1 및 제2 스토리지 컨트롤러들(330, 340) 각각은 NVMe 컨트롤러일 수 있다.
호스트(310)는 앞서 설명된 바와 같이, 스토리지 장치(320) 각각의 저장 영역을 복수의 명칭 공간(NS)들로 논리적으로 구분하여 인식할 수 있다. 호스트(310)는 논리적으로 구분된 복수의 명칭 공간(NS)들 각각을 서로 독립적으로 제어할 수 있다.
도 4c를 참조하면, 스토리지 시스템(400)은 제1 및 제2 호스트들(411, 412) 및 스토리지 장치(420)를 포함할 수 있다. 제1 및 제2 호스트들(411, 412)은 제1 포트(PT1)를 통해 스토리지 장치(420)의 스토리지 컨트롤러(430)와 통신할 수 있다.
제1 및 제2 호스트들(411, 412)은 스토리지 장치(420)의 저장 공간을 복수의 명칭 공간(NS)들로서 인식할 수 있다. 이 때, 제1 호스트(411)에 의해 인식되는 명칭 공간(NS)들 및 제2 호스트(412)에 의해 인식되는 명칭 공간(NS)들은 서로 다를 수 있다. 예시적으로, 제1 및 제2 호스트들(411, 412) 각각은 서로 다른 코어(core)거나 또는 서로 다른 프로세서일 수 있다.
도 4d를 참조하면, 스토리지 시스템(500)은 호스트(510) 및 스토리지 장치(520)를 포함할 수 있다. 호스트(510)는 제1 포트(PT1)를 통해 스토리지 장치(520)의 스토리지 컨트롤러(530)와 통신할 수 있다. 스토리지 장치(520)의 스토리지 컨트롤러(530)는 복수의 가상 기능들(VF; Virtual Functions)을 포함할 수 있다. 복수의 가상 기능들은 호스트(510)로부터의 커맨드 또는 I/O를 독립적으로 처리할 수 있는 기능을 제공할 수 있다. 호스트(510)는 복수의 가상 기능들(VF)을 통해 복수의 명칭 공간(NS)들을 인식할 수 있다. 예시적으로, 복수의 가상 기능들(VF)은 NVMe 인터페이스의 SR-IOV를 통해 구현될 수 있다.
도 4e를 참조하면, 스토리지 시스템(600)은 호스트(610) 및 스토리지 장치(620)를 포함할 수 있다. 호스트(610)는 제1 포트(PT1)를 통해 스토리지 장치(620)와 통신할 수 있다. 이 때, 스토리지 장치(620)는 물리적으로 구분된 제1 및 제2 스토리지 컨트롤러들(630, 640)를 포함할 수 있다. 제1 및 제2 스토리지 컨트롤러들(630, 640) 각각은 스토리지 장치(620)에 포함된 물리적으로 구분된 컨트롤러이며, 제1 포트(PT1)를 통해 호스트(610)와 통신할 수 있다. 예시적으로, 제1 및 제2 스토리지 컨트롤러들(630, 640) 각각은 NVMe 컨트롤러일 수 있다.
호스트(610)는 앞서 설명된 바와 같이, 스토리지 장치(620) 각각의 저장 영역을 복수의 명칭 공간(NS)들로 논리적으로 구분하여 인식할 수 있다. 호스트(610)는 논리적으로 구분된 복수의 명칭 공간(NS1~NS3)들 각각을 서로 독립적으로 제어할 수 있다. 제1 스토리지 컨트롤러(630)는 제1 및 제3 명칭 공간들(NS1, NS3)을 제어할 수 있고, 제2 스토리지 컨트롤러(640)는 제2 및 제3 명칭 공간들(NS2, NS3)을 제어할 수 있다. 즉, 제3 명칭 공간(NS 3)은 복수의 스토리지 컨트롤러들(630, 640)에 의해 공유되는 명칭 공간일 수 있다.
상술된 바와 같이, 적어도 하나의 호스트는 적어도 하나의 스토리지 장치의 저장 영역을 복수의 명칭 공간(NS)들로서 인식하고, 복수의 명칭 공간(NS)들 각각을 독립적으로 제어하도록 구성될 수 있다. 예시적으로, 도 4a 내지 도 4e를 참조하여 명칭 공간들을 식별할 수 있는 스토리지 시스템의 다양한 토폴로지들이 설명되었으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 도 4a 내지 도 4e의 실시 예들은 서로 조합되어 구성될 수 있다. 도 4a 내지 도 4e의 실시 예들에 도시되어 있지는 않으나, 명칭 공간(NS)들을 식별할 수 있는 스토리지 시스템은 본 발명의 기술적 사상으로부터의 벗어남 없이 다양하게 구현될 수 있다.
예시적으로, 도 4a 내지 도 4e를 참조하면 명칭 공간들을 식별할 수 있는 스토리지 시스템의 다양한 토폴로지들이 설명되었으나, 명칭 공간들 대신에 불휘발성 메모리 세트로 치환하여 스토리지 시스템의 다양한 토폴로지들을 설명할 수 있다.
이하에서, 설명의 편의를 위하여, 도 1에 도시된 스토리지 시스템(100)을 참조하여 본 발명의 실시 예들이 설명된다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 도 4a 내지 도 4e를 참조하여 설명된 스토리지 시스템들(200~600) 또는 그와 유사한 스토리지 시스템을 통해 본 발명의 실시 예들이 구현될 수 있다.
도 5은 도 1의 스토리지 장치의 동작 방법을 보여주는 순서도이다. 도 5를 참조하여, 런-타임에서 호스트(110)가 A 명칭 공간(NS A)의 가용 공간보다 큰 데이터를 수신하는 경우에, 데이터의 손실 없이 스토리지 장치(120)의 처리 방법이 설명된다.
도 1 및 도 5를 참조하면, S110 단계에서, 스토리지 장치(120)는 A 명칭 공간(NS A)의 가용 공간이 부족 한지 판단할 수 있다. 예를 들어, 스토리지 장치(120)는 A 명칭 공간(NS A)에 대한 쓰기 요청을 수신한 경우, 스토리지 장치(120)는 A 명칭 공간(NS A)에 추가적인 데이터를 저장할 수 있는 공간 즉, 가용 공간이 부족한지 여부를 판단할 수 있다. 스토리지 장치(120)는 쓰기 요청에 대응하는 데이터의 크기가 A 명칭 공간(NS A)의 가용 공간을 초과하는지 여부로 판단할 수 있다. 또는 스토리지 장치(120)는 A 명칭 공간(NS A)의 가용 공간이 정해진 기준 크기 이하인지 여부로 판단할 수 있다.
예시적으로, 스토리지 컨트롤러(130)가 NVMe 인터페이에 기반한 NVMe 제어기인 경우, 쓰기 요청은 커멘드 ID, OP코드, 명칭공간 ID(NSID), 데이터 포인터, 논리 어드레스 시작 주소, 논리 블록의 개수 등을 포함할 수 있다. OP코드는 호스트(110)가 요청 한 커맨드의 종류를 가리키는 정보일 수 있다. 명칭 공간 ID(NSID)는 호스트(110)가 명칭 공간에 접근하기 위하여 스토리지 장치(120)에서 사용되는 식별자이다. 데이터 포인터는 쓰기 요청에 대응하는 데이터가 저장된 호스트 메모리 주소를 가리키는 정보일 수 있다. 또는 데이터 포인터는 쓰기 요청에 대응하는 데이터가 저장된 호스트 메모리 주소들을 포함하는 리스트(PRP 또는 SGL)가 저장된 호스트 메모리 주소를 가리키는 정보일 수 있다. 논리 블록의 개수는 쓰기 요청에 대응하는 데이터의 크기를 가리키는 정보일 수 있다.
스토리지 장치(120)의 A 명칭 공간(NS A)의 가용 공간이 부족하지 않은 경우, 별도의 임시 공간 할당을 수행하지 않을 수 있다. 스토리지 장치(120)의 A 명칭 공간(NS A)의 가용 공간이 부족한 경우, S120 단계에서 스토리지 장치(120)는 여유 있는(free) B 명칭 공간(NS B)을 식별할 수 있다. 예를 들어, A 명칭 공간(NS A)에서 쓰기 요청에 대응하는 데이터를 저장할 수 있는 공간이 부족한 경우, A 명칭 공간(NS A)에 저장될 데이터를 임시 저장하기 위한 별도의 저장 공간 또는 임시 공간이 필요할 수 있다. 이를 위해, 스토리지 장치(120)는 여유 있는(free) B 명칭 공간(NS B)을 식별할 수 있다.
예를 들어, 여유 있는(free) B 명칭 공간(NS B)은 복수의 명칭 공간들 중 가장 적은 사용률을 갖는 명칭 공간일 수 있다. 또는, 여유 있는(free) B 명칭 공간(NS B)은 복수의 명칭 공간들 중에서 데이터 통신량(traffic)이 가장 적은 명칭 공간일 수 있다. 본 발명의 범위가 이에 한정되는 것은 아니다.
S130 단계에서, 스토리지 장치(120)는 B 명칭 공간(NS B)에서 임시 공간을 할당할 수 있다. 예를 들어, A 명칭 공간(NS A)에 대한 데이터를 저장하기 위하여, 스토리지 장치(120)는 B 명칭 공간(NS B)에서 가용 공간 중에서 일부를 임시 공간으로 제공할 수 있다. 즉 스토리지 장치(120)는 B 명칭 공간(NS B)의 데이터가 저장되어 있지 않은 공간 중에서 일부를 임시 공간으로 제공할 수 있다.
예시적인 실시 예에서, 스토리지 장치(120)가 B 명칭 공간(NS B)의 임시 공간으로 제공한 이후에, 스토리지 장치(120)는 B 명칭 공간(NS B)에 대한 쓰기 요청에 대응하는 데이터는 B 명칭 공간(NS B)의 임시 공간에 저장할 수 없을 수 있다. 호스트(110)는 후술되는 S140 단계를 통해서 B 명칭 공간(NS B)의 임시 공간에 A 명칭 공간(NS A)의 데이터가 저장될 것을 예상할 수 있으므로, 호스트(110)는 B 명칭 공간(NS B)의 임시 공간에 데이터 쓰기 요청을 수행하지 않을 수 있다.
예시적인 실시 예에서, 스토리지 장치(120)는 B 명칭 공간(NS B)의 임시 공간으로 할당되지 않은 영역에 쓰기 요청을 수신한 경우, B 명칭 공간(NS B)의 임시 공간으로 할당되지 않은 영역에 데이터를 저장할 수 있다.
새로운 스토리지 장치가 추가되고 후술되는 S160 단계의 데이터 플러쉬(flush)가 완료된 후에, 스토리지 장치(120)는 할당된 B 명칭 공간(NS B)의 임시 공간 할당 해제하고 다시 B 명칭 공간(NS B)에 대한 쓰기 요청에 대응하는 데이터를 저장할 수 있다.
S140 단계에서, 스토리지 장치(120)는 호스트(110)에게 알릴(notify) 수 있다. 예를 들어, 스토리지 장치(120)는 비동기 이벤트 요청(asynchronous event request)을 통해서 정보를 호스트(110)에게 알릴 수 있다. 호스트(110)에게 알리는 정보는 A 명칭 공간(NS A)의 가용 공간 부족에 대한 정보 및 B 명칭 공간(NS B)의 임시 공간 할당에 대한 정보를 포함할 수 있다. A 명칭 공간(NS A)의 가용 공간 부족에 대한 정보는 A 명칭 공간(NS A)의 가용 공간이 부족한 것을 가리키는 정보 일수 있다. B 명칭 공간(NS B)의 임시 공간 할당에 대한 정보는 여유 있는 명칭 공간이 B 명칭 공간(NS B)이고, 추후의 A 명칭 공간(NS A)으로 수신하는 데이터는 B 명칭 공간(NS B)의 임시 공간에 저장될 수 있음을 가리키는 정보일 수 있다. 전달방법에 관한 보다 상세한 설명은 도 8에서 설명된다.
S150 단계에서, 스토리지 장치(120)는 A 명칭 공간(NS A)에 대하여 수신된 데이터를 B 명칭 공간(NS B)의 임시 공간에 저장할 수 있다. 예를 들어, 스토리지 장치(120)는 호스트(110)로부터 A 명칭 공간(NS A)에 추가적인 데이터 쓰기 요청을 받으면, 스토리지 장치(120)는 A 명칭 공간이(NS A)이 아닌 B 명칭 공간(NS B)의 임시 공간에 쓰기 요청에 대응하는 데이터를 저장할 수 있다.
임시 공간이 할당되지 않았으며 A 명칭 공간(NS A)의 가용 공간이 부족하지 않은 경우, 스토리지 장치(120)는 A 명칭 공간(NS A)의 명칭 공간 ID가 포함된 쓰기 요청을 호스트(110)로부터 수신할 수 있다. A 명칭 공간(NS A)의 명칭 공간 ID가 포함된 쓰기 요청에 응답 하여, 스토리지 장치(120)는 쓰기 요청에 대응하는 데이터를 A 명칭 공간(NS A)에 저장 할 수 있다.
임시 공간이 할당되지 않았으며 A 명칭 공간(NS A)의 가용 공간이 부족한 경우, 스토리지 장치(120)는 A 명칭 공간(NS A)의 명칭 공간 ID가 포함된 쓰기 요청을 호스트(110)로부터 수신할 수 있다. A 명칭 공간(NS A)의 명칭 공간 ID가 포함된 쓰기 요청에 응답 하여, 스토리지 장치(120)는 쓰기 요청에 대응하는 데이터를 A 명칭 공간(NS A)에 저장할 수 없다. 대신에, 상태 코드가 LBA 범위를 벗어남(LBA Out of Range) 또는 용량 초과(Capacity Exceeded)를 가리키는 상태 코드(Status Code)가 포함된 쓰기 완료(completion)를 호스트(110)에게 전송할 수 있다.
임시 공간이 할당되었으며 A 명칭 공간(NS A)의 가용 공간이 부족한 경우, 스토리지 장치(120)는 쓰기 요청에 대응하는 데이터를 B 명칭 공간(NS B)의 임시 공간에 저장할 수 있다. 일 실시 예에서, 호스트(110)가 B 명칭 공간(NS B)의 명칭 공간 ID 를 포함하는 쓰기 요청을 스토리지 장치(120)에게 전송할 수 있다. 쓰기 요청은 실제는 A 명칭 공간(NS A)에 대한 요청이라는 정보를 더 포함할 수 있다. 스토리지 장치(120)는 B 명칭 공간(NS B)의 명칭 공간 ID 를 포함하는 쓰기 요청에 응답하여, 스토리지 장치(120)는 쓰기 요청에 대응하는 데이터를 B 명칭 공간(NS B)의 임시 공간에 저장할 수 있다.
다른 실시 예에서, 호스트(110)는 A 명칭 공간(NS A)의 명칭 공간 ID 를 포함하는 쓰기 요청을 스토리지 장치(120)에게 전송할 수 있다. A 명칭 공간(NS A)의 명칭 공간 ID 를 포함하는 쓰기 요청에 응답하여, 스토리지 장치(120)는 쓰기 요청에 대응하는 데이터를 자체적으로 B 명칭 공간(NS B)의 임시 공간에 저장할 수 있다.
임시 공간 할당 해제 전까지, (1) B 명칭 공간(NS B)의 임시 공간에 A 명칭 공간(NS A)에 대한 데이터가 저장될 수 있다. (2) B 명칭 공간(NS B)의 임시 공간에 B 명칭 공간(NS B)에 대한 데이터가 저장될 수 없다. (3) B 명칭 공간(NS B)에 대한 데이터가 저장될 수 있는 가용 공간이 일시적으로 축소될 수 있다. 호스트(110)는 상술한 (1), (2), (3)을 S140 단계를 통해 예상할 수 있다.
S160 단계에서, 호스트(110)의 제어에 따라 C 명칭 공간(NS C)으로 데이터는 플러쉬(flush)될 수 있다. 예를 들어, 스토리지 시스템(100)에 다른 스토리지 장치가 추가되고 C 명칭 공간(NS C)이 생성될 수 있다. 호스트(110)의 제어에 따라, 스토리지 장치(120)는 A 명칭 공간(NS A) 및 B 명칭 공간(NS B)에 저장된 데이터 모두를 읽고, C 명칭 공간(NS C)에 그 데이터를 저장할 수 있다.
A 명칭 공간(NS A)의 데이터가 모두 C 명칭 공간(NS C)으로 플러쉬되면, A 명칭 공간(NS A)은 C 명칭 공간(NS C)으로 대체 될 수 있다. 예를 들어, A 명칭 공간(NS A)으로 쓰기 요청이 들어오면, C 명칭 공간(NS C)에 쓰기 요청에 대응하는 데이터는 저장될 수 있다.
플러쉬 동작이 완료되면, 스토리지 장치(120)는 B 명칭 공간(NS B)의 임시 공간 할당을 해제할 수 있다. 예를 들어, 스토리지 장치(120)는 B 명칭 공간(NS B)의 임시 공간에 저장 되어 있던 데이터를 삭제하고, B 명칭 공간(NS B)의 임시 공간에 새로운 데이터를 저장할 수 있는 상태로 만들 수 있다. 즉 추가적으로 B 명칭 공간(NS B)에 쓰기 요청을 수신하면, 다시 B 명칭 공간(NS B)의 임시 공간에 쓰기 요청에 대응하는 데이터를 저장할 수 있다.
스토리지 장치(120)는 B 명칭 공간(NS B)의 임시 공간 할당 해제가 완료되었음을 호스트에게 알릴 수 있다. 즉 스토리지 장치(120)는 임시 공간 할당 해제에 대한 정보를 호스트에게 전송할 수 있다. 일 실시 예에서, 호스트(110)가 스토리지 장치(120)에게 미리 비동기 이벤트 요청 커맨드를 전송한 경우, 스토리지 장치는 임시 공간 할당 해제에 대한 정보가 포함된 비동기 이벤트 요청 완료(completion)를 호스트(110)에게 전송할 수 있다.
다른 실시 예에서, 스토리지 장치(120)는 임시 공간 할당 해제에 대한 정보를 로그에 업데이트 할 수 있다. 스토리지 장치(120)는 비동기 이벤트 요청 완료(completion)를 호스트에게 전송할 수 있다. 호스트(110)는 로그 페이지 얻기(Get Log Page) 커맨드를 스토리지 장치(120)에게 전송할 수 있다. 스토리지 장치(120)는 임시 공간 할당 해제 정보가 포함된 로그 데이터 및 로그 페이지 얻기 완료를 호스트(110)에게 전송할 수 있다.
호스트(110)인 사용자 어플리케이션은 미래의 수신하는 데이터 통신량이 얼마일지 미리 예측할 수 없다. 사용자 어플리케이션은 이미 할당된 A 명칭 공간(NS A)의 가용 공간을 초과하는 데이터를 수신한 경우, 데이터 손실이 발생할 수밖에 없다. 본 발명의 실시예에 따르면, 런-타임에서 스토리지 장치(120)는 여유 있는 B 명칭 공간(NS B)의 임시 공간에 데이터를 저장함으로써, 수신된 데이터의 연속성 및 신뢰성을 보장할 수 있다.
도 6a 내지 도 6c는 도 1의 스토리지 장치(120)의 동작 방법을 보여주는 도면이다. 도면의 간결성을 위하여, 스토리지 장치(120)의 동작을 설명하는데 불필요한 구성 요소들은 생략된다. 도 5 및 도 6a를 참조하면, 스토리지 시스템(100a)은 호스트(110a) 및 제1 스토리지 장치(120a)를 포함할 수 있다. 호스트(110a)는 제1 포트(PT1)를 통해 제 1 스토리지 장치(120a)와 통신할 수 있다. 제1 스토리지 장치(120a)는 스토리지 컨트롤러(130a)를 포함할 수 있다. 예시적으로 스토리지 컨트롤러(130a)는 NVMe 제어기일 수 있다.
호스트(110a)는 제1 스토리지 장치(120a)의 저장 영역을 제1 내지 제4 명칭 공간(NS1~NS4)들로 논리적으로 구분하여 인식할 수 있다. 호스트(110a)는 논리적으로 구분된 복수의 명칭 공간들(NS1~NS4) 각각을 서로 독립적으로 제어할 수 있다. 본 발명의 범위가 이에 한정되는 것은 아니며, 명칭 공간의 크기 및 개수는 호스트(110a) 또는 제1 스토리지 장치(120a)의 구현 방식에 따라 다양하게 설정될 수 있다.
복수의 명칭 공간들(NS1~NS4)은 각각 제1 내지 제10 블록(BLK1~BLK10)을 포함할 수 있다. 블록은 논리적인 블록을 의미할 수 있다. 발명의 범위는 이에 한정되는 것은 아니며, 명칭 공간은 다양한 개수의 블록을 포함할 수 있으며, 명칭 공간마다 블록의 개수는 상이할 수 있다.
제1 명칭 공간(NS 1)의 제1 내지 제10 블록(BLK1~BLK10)에 데이터가 저장되어 있을 수 있다. 제2 명칭 공간(NS 2)의 제1 내지 제7 블록(BLK1~BLK7)에 데이터가 저장되어 있을 수 있다. 제3 명칭 공간(NS 3)의 제1 내지 제4 블록(BLK1~BLK4)에 데이터가 저장되어 있을 수 있다. 제4 명칭 공간(NS 4)의 제1 내지 제6 블록(BLK1~BLK6)에 데이터가 저장되어 있을 수 있다.
제1 스토리지 장치(120a)는 제1 명칭 공간(NS 1)에 대한 쓰기 요청을 수신한 경우, 제1 명칭 공간(NS 1)의 가용 공간이 부족한지 여부를 판단할 수 있다. 제1 내지 제10 블록들(BLK1~BLK10)에 데이터는 저장되어 있으므로, 제1 스토리지 장치(120a)는 제1 명칭 공간(NS 1)의 가용 공간은 정해진 기준 크기 이하일 수 있다. 또는 제1 명칭 공간(NS 1)에 대한 쓰기 요청에 대응하는 데이터의 크기가 제1 명칭 공간(NS 1)의 가용 공간을 초과할 수 있다. 그 결과, 제1 스토리지 장치(120a)는 제1 명칭 공간(NS 1)에 대한 가용 공간이 부족하다고 판단할 수 있다.
제1 스토리지 장치(120a)는 제1 명칭 공간(NS 1)에 대하여 추가적으로 수신하는 데이터를 저장하기 위해서, 여유 있는 명칭 공간을 식별할 수 있다. 예를 들어, 제1 스토리지 장치(120a)는 복수의 명칭 공간들(NS 2~NS 3) 중에서 가장 사용률이 적은 명칭 공간을 선택할 수 있다. 제2 명칭 공간(NS 2)의 제1 내지 제7 블록들(BLK1~BLK7)에 데이터가 저장되어 있으므로, 제2 명칭 공간(NS 2)의 사용률은 70%이다. 제3 명칭 공간(NS 3)의 제1 내지 제4 블록들(BLK1~BLK4)에 데이터가 저장되어 있으므로, 제3 명칭 공간(NS 3)의 사용률은 40%이다. 제4 명칭 공간(NS 4)의 제1 내지 제6 블록들(BLK1~BLK6)에 데이터가 저장되어 있으므로, 제4 명칭 공간(NS 4)의 사용률은 60%이다. 이 경우, 제1 스토리지 장치(120a)는 사용률이 가장 적은 제3 명칭 공간(NS 3)을 여유 있는 명칭 공간으로 식별할 수 있다.
제1 스토리지 장치(120a)는 제3 명칭 공간(NS 3)의 일부인 제9 및 제10 블록들(BLK 9, BLK 10)을 제1 명칭 공간(NS 1)에 대한 임시 공간으로 할당할 수 있다. 예를 들어, 제1 스토리지 장치(120a)는 제1 명칭 공간(NS 1)에 대한 데이터를 추가적으로 수신할 것을 가정하여, 제1 스토리지 장치(120a)는 그 데이터를 저장할 수 있는 임시 공간을 마련할 수 있다. 제1 명칭 공간(NS 1)을 위하여, 제1 스토리지 장치(120a)는 여유 있는 명칭 공간인 제3 명칭 공간(NS 3)의 가용 공간 중 일부를 임시 공간으로 제공할 수 있다. 제1 스토리지 장치(120a)는 제3 명칭 공간(NS 3)에 대한 쓰기 요청에 대응하는 데이터는 제3 명칭 공간(NS 3)의 임시 공간인 제9 및 제 10 블록들(BLK 9, BLK 10)에 저장할 수 없을 수 있다. 하지만, 제1 스토리지 장치(120a)는 제3 명칭 공간(NS 3)에서 임시 공간으로 할당되지 않은 영역에 제3 명칭 공간(NS 3)에 대한 쓰기 요청에 대응하는 데이터를 저장할 수 있다.
제1 스토리지 장치(120a)는 상술한 바와 같이, 제1 스토리지 장치(120a) 내에서 처리한 내용들을 호스트(110a)에게 알릴 수 있다. 제1 스토리지 장치(120a)는 호스트(110a)에게 비동기 이벤트 요청을 통해서 정보들을 제공할 수 있다. 정보는 제1 명칭 공간(NS 1)의 가용 공간 부족에 대한 정보, 및 제3 명칭 공간(NS 3)의 임시 공간 할당에 대한 정보를 포함할 수 있다. 제1 명칭 공간(NS 1)의 가용 공간 부족에 대한 정보는 제1 명칭 공간(NS 1)의 가용 공간이 부족한 것을 가리키는 정보일 수 있다. 제3 명칭 공간(NS 3)의 임시 공간 할당에 대한 정보는 여유 있는 명칭 공간이 제3 명칭 공간(NS 3)이고, 추후의 제1 명칭 공간(NS 1)으로 수신하는 데이터는 제3 명칭 공간(NS 3)의 임시 공간인 제9 및 제10 블록들(BLK 9, BLK 10)에 저장될 수 있음을 가리키는 정보일 수 있다. 전달 방법에 관한 상세한 설명은 도 8에서 설명된다.
호스트(110a)는 상술한 정보를 수신하여 임시 공간 할당 해제 전까지 다음과 같은 것들을 인지할 수 있다. 임시 공간인 제3 명칭 공간(NS 3)의 제9 및 제 10 블록들(BLK 9, BLK 10)에 제1 명칭 공간(NS 1)에 대한 쓰기 요청에 대응하는 데이터가 저장될 수 있다. 임시 공간인 제3 명칭 공간(NS 3)의 제9 및 제 10 블록들(BLK 9, BLK 10)에 제3 명칭 공간(NS 3)에 대한 데이터는 저장될 수 없다. 즉, 호스트(110a)는 임시 공간인 제3 명칭 공간(NS 3)의 제9 및 제 10 블록들(BLK 9, BLK 10)에 제3 명칭 공간(NS 3)에 대한 데이터 쓰기 요청을 수행하지 않을 수 있다. 제3 명칭 공간(NS 3)의 가용 공간이 축소될 수 있다.
도 6b는 제1 스토리지 장치(120a)가 호스트(110a)로부터 제1 명칭 공간(NS 1)에 대한 추가적인 데이터 쓰기 요청을 수신 후의 모습을 보여준다. 제1 스토리지 장치(120a)는 제1 명칭 공간(NS 1)에 대한 쓰기 요청을 수신하였지만, 더 이상 제1 명칭 공간(NS 1)의 가용 공간이 부족할 수 있다. 예를 들어, 제1 명칭 공간(NS 1)의 제1 내지 제10 블록(BLK 1 ~ BLK 10)에 모두 데이터가 저장되어 있을 수 있다. 제1 스토리지 장치(120a)는 제1 명칭 공간(NS 1)의 가용 공간이 부족한 문제를 해결하기 위해서, 여유 있는 명칭 공간인 제3 명칭 공간(NS 3)의 임시 공간에 쓰기 요청에 대응하는 데이터를 저장할 수 있다.
일 실시 예에서, 호스트(110a)는 제1 명칭 공간(NS 1)에 대한 쓰기 요청에 대하여, 제 3 명칭 공간(NS 3)의 명칭 공간 ID를 포함하는 쓰기 요청을 제1 스토리지 장치(120a)에게 전송할 수 있다. 쓰기 요청은 제1 명칭 공간(NS 1)에 대한 요청이라는 정보(즉, 제1 명칭 공간(NS 1)의 명칭 공간 ID)를 더 포함할 수 있다. 제1 스토리지 장치(120a)는 제 3 명칭 공간(NS 3)의 명칭 공간 ID를 포함하는 쓰기 요청에 응답하여, 제1 스토리지 장치(120a)는 쓰기 요청에 대응하는 데이터를 임시 공간인 제 3 명칭 공간(NS 3)의 제9 및 제10 블록들(BLK 9, BLK 10)에 저장할 수 있다.
다른 실시 예에서, 호스트(110a)는 제1 명칭 공간(NS 1)의 명칭 공간 ID를 포함하는 쓰기 요청을 제1 스토리지 장치(120a)에게 전송할 수 있다. 제1 스토리지 장치(120a)는 제1 명칭 공간(NS 1)의 명칭 공간 ID가 포함하는 쓰기 요청에 응답하여, 제1 스토리지 장치(120a)는 자체적으로 수신한 데이터를 제3 명칭 공간(NS 3)의 임시 공간으로 리다이렉트할 수 있다. 즉 제1 스토리지 장치(120a)는 제1 명칭 공간(NS 1)에 대한 데이터를 제3 명칭 공간(NS 3)의 임시 공간인 제 9 및 10 블록들(BLK 9, BLK10)에 저장할 수 있다.
런-타임에서 종래의 스토리지 시스템은 제1 명칭 공간(NS 1)의 가용 공간을 초과하는 데이터를 수신할 경우, 수신된 데이터에 대해서 실패로 처리한다. 반면에 본 발명의 실시 예에 따른 제1 스토리지 장치(120a)는 제1 명칭 공간(NS 1)의 가용 공간 부족에 대하여, 여유 있는 제3 명칭 공간(NS 3)의 임시 공간을 할당할 수 있다. 이에 따라 제1 명칭 공간(NS 1)에 대한 데이터를 수신한 경우, 데이터를 제3 명칭 공간(NS 3)의 임시 공간에 저장함으로써, 쓰기 요청에 대응하는 데이터의 신뢰성과 연속성을 보장할 수 있다.
도 6c를 참조하면, 제2 스토리지 장치(140a)를 추가하여 변경된 스토리지 시스템(100a)을 보여준다. 런-타임에서 제1 명칭 공간(NS 1)의 가용 공간을 초과하는 쓰기 요청에 대응하는 데이터는 제3 명칭 공간(NS B3)의 임시 공간에 저장된 이후에, 제2 스토리지 장치(140a)가 추가될 수 있다. 호스트(110a)는 제2 포트(PT2)를 통해 제2 스토리지 장치(140a)와 통신할 수 있다. 제2 스토리지 장치(140a)는 스토리지 컨트롤러(150a)를 포함할 수 있다. 예시적으로 스토리지 컨트롤러(150a)는 NVMe 제어기 일 수 있다. 제2 스토리지 장치(140a)는 제5 명칭 공간(NS 5)을 포함할 수 있다. 제5 명칭 공간(NS 5)은 제1 내지 제20 블록(BLK1~BLK20)을 포함할 수 있다. 발명의 범위는 이에 한정되는 것은 아니다.
제1 명칭 공간(NS 1)의 가용 공간이 부족했으므로, 호스트(110a)의 제어에 따라 제1 명칭 공간(NS 1)에 저장된 데이터는 제5 명칭 공간(NS 5)으로 플러쉬될 수 있다. 호스트(110a)의 요청에 따라, 제1 스토리지 장치(120a)는 제1 명칭 공간(NS 1)의 제1 내지 제10 블록(BLK 1~BLK 10)에 저장된 데이터와 제3 명칭 공간(NS 3)의 임시 공간인 제9 및 제 10 블록들(BLK 9, BLK 10)에 저장된 데이터를 읽고, 그 데이터를 모두 제5 명칭 공간(NS 5)의 제1 내지 제 12 블록(BLK 1 ~ BLK 12)에 쓸 수 있다.
이 플러쉬 동작이 완료되면, 제1 스토리지 장치(120a)는 제1 명칭 공간(NS 1)을 위하여 할당한 제3 명칭 공간(NS 3)의 임시 공간 할당을 해제할 수 있다. 예를 들어, 제1 스토리지 장치(120a)는 제3 명칭 공간(NS 3)의 임시 공간에 저장 되어 있던 데이터를 삭제하고, 제3 명칭 공간(NS 3)의 임시 공간에 새로운 데이터를 저장할 수 있는 상태로 만들 수 있다. 제1 스토리지 장치(120a)는 제3 명칭 공간(NS 3)의 임시 공간 할당 해제가 완료되었음을 호스트에게(110a) 알릴 수 있다. 그 후에 호스트(110a)가 제3 명칭 공간(NS 3)에 쓰기 요청을 전송하는 경우, 제1 스토리지 장치(120a)는 다시 제3 명칭 공간(NS 3)의 임시 공간에 쓰기 요청에 대응하는 데이터를 저장할 수 있다.
제1 명칭 공간(NS 1)의 데이터가 모두 제5 명칭 공간(NS 5)으로 플러쉬되면, 제1 명칭 공간(NS 1)은 제5 명칭 공간(NS 5)으로 대체 될 수 있다. 예를 들어, 제1 명칭 공간(NS 1)에 대한 쓰기 요청이 들어오면, 제5 명칭 공간(NS 5)에 쓰기 요청에 대응하는 데이터는 저장될 수 있다.
더 이상 제1 명칭 공간(NS 1)은 호스트(110a)에게 필요 없을 수 있다. 호스트(110a)는 제1 명칭 공간(NS 1)을 제1 스토리지 장치(120a)의 제1 스토리지 컨트롤러(130a)와 분리하고 삭제할 수 있다. 예를 들어, 호스트는 명칭 공간 부착 커맨드(Namespace Attachment command)를 통해서 제1 스토리지 장치(120a)에게 제1 명칭 공간(NS 1) 분리(detach)를 요청 할 수 있다. 제1 스토리지 장치(120a)의 스토리지 컨트롤러(130a)는 호스트(110a)의 요청에 따라서 제1 명칭 공간(NS 1)을 분리할 수 있다. 호스트(110a)는 명칭 공간 관리 커맨드(Namespace Management command)를 통해서 제1 명칭 공간(NS 1) 제거(delete)를 요청할 수 있다. 제1 스토리지 장치(120a)의 스토리지 컨트롤러(130a)는 호스트(110a)의 요청에 따라서 제1 명칭 공간(NS 1)을 제거할 수 있다.
따라서, 런-타임에서 스토리지 시스템이 할당된 명칭 공간의 가용 공간보다 더 큰 데이터를 수신한다고 하더라도, 스토리지 시스템은 임시적으로 여유 있는 명칭 공간에 데이터를 저장한 후 다시 이를 플러쉬하여 데이터의 신뢰성과 연속성을 보장할 수 있다.
도 7a 내지 도 7c는 도 1의 스토리지 장치(120)의 동작 방법을 보여주는 도면이다. 도 6a 내지 도 6c와 달리 명칭 공간의 가용 공간이 부족한 것이 아니라, 불휘발성 메모리 세트의 가용 공간이 부족한 경우 제1 스토리지 장치(120b)의 처리 방법을 보여준다.
도면의 간결성을 위하여, 제1 스토리지 장치(120b)의 동작을 설명하는데 불필요한 구성 요소들은 생략된다. 도 7a를 참조하면, 스토리지 시스템(100b)은 호스트(110b) 및 제1 스토리지 장치(120b)를 포함할 수 있다. 호스트(110b)는 제1 포트(PT1)를 통해 제1 스토리지 장치(120b)와 통신할 수 있다. 제1 스토리지 장치(120b)는 스토리지 컨트롤러(130b)를 포함할 수 있다. 예시적으로 스토리지 컨트롤러(130b)는 NVMe 제어기 일 수 있다.
호스트(110b)는 제1 스토리지 장치(120b)의 저장 영역을 A 내지 C 불휘발성 메모리 세트들(NVM Set A ~ NVM Set C)로 구분하여 인식할 수 있다. 호스트(110b)는 구분된 복수의 불휘발성 메모리 세트들(NVM Set A ~ NVM Set C) 각각을 서로 독립적으로 제어할 수 있다. 본 발명의 범위가 이에 한정되는 것은 아니며, 불휘발성 메모리 세트의 크기 및 개수는 호스트(110b) 또는 제1 스토리지 장치(120b)의 구현 방식에 따라 다양하게 설정될 수 있다.
불휘발성 메모리 세트는 1개 이상의 명칭 공간들을 포함할 수 있다. A 불휘발성 메모리 세트(NVM Set A)는 A1 내지 A4 명칭 공간들(NS A1~NS A4)을 포함할 수 있다. B 불휘발성 메모리 세트(NVM Set B)는 B1 내지 B3 명칭 공간들(NS B1~NS B3)을 포함할 수 있다. C 불휘발성 메모리 세트(NVM Set C)는 C1, 및 C2 명칭 공간들(NS C1, NS C2)을 포함할 수 있다. 본 발명의 범위가 이에 한정되는 것은 아니며, 불휘발성 메모리 세트 내의 명칭 공간들의 크기 및 개수는 구현 방식에 따라 다양하게 설정될 수 있다.
A 불휘발성 메모리 세트(NVM Set A)의 A1 내지 A4 명칭 공간들(NS A1 ~ NS A4)에 데이터가 저장되어 있을 수 있다. B 불휘발성 메모리 세트(NVM Set B)의 B1, 및 B2 명칭 공간들(NS B1, NS B2)에 데이터가 저장되어 있을 수 있다. C 불휘발성 메모리 세트(NVM Set C)의 C1 명칭 공간(NS C1)에 데이터가 저장되어 있을 수 있다.
A 불휘발성 메모리 세트(NVM Set A)에 대한 쓰기 요청을 수신한 경우, 제1 스토리지 장치(120b)는 A 불휘발성 메모리 세트(NVM Set A)의 가용 공간이 부족한지 여부를 판단할 수 있다. 제1 스토리지 장치(120b)는 A 불휘발성 메모리 세트(NVM Set A)의 가용 공간이 정해진 기준 이하인 경우, A 불휘발성 메모리 세트(NVM Set A)의 가용 공간이 부족하다고 판단할 수 있다. 또는 제1 스토리지 장치(120b)는 A 불휘발성 메모리 세트(NVM Set A)에 대한 쓰기 요청에 대응하는 데이트의 크기가 A 불휘발성 메모리 세트(NVM Set A)의 가용 공간을 초과하는 경우, 제1 스토리지 장치(120b)는 A 불휘발성 메모리 세트(NVM Set A)의 가용 공간이 부족하다고 판단할 수 있다.
제1 스토리지 장치(120b)는 A 불휘발성 메모리 세트(NVM Set A)에 추가적으로 수신한 데이터를 저장하기 위해서, 여유 있는 불휘발성 메모리 세트를 식별할 수 있다. 예를 들어, 제1 스토리지 장치(120b)는 복수의 불휘발성 메모리 세트들(NVM Set B, NVM Set C) 중에서 가장 사용률이 적은 불휘발성 메모리 세트를 선택할 수 있다. 예를 들어, 제1 스토리지 장치(120b)는 B 불휘발성 메모리 세트(NVM Set B)의 사용률이 가장 적으므로, 제1 스토리지 장치(120b)는 B 불휘발성 메모리 세트(NVM Set B)를 여유 있는 불휘발성 메모리 세트로 선택할 수 있다.
제1 스토리지 장치(120b)는 B 불휘발성 메모리 세트(NVM Set B)의 B3 명칭 공간(NS B3)의 가용 공간 중 일부(Temp space)를 임시 공간으로 할당할 수 있다. 예를 들어, 제1 스토리지 장치(120b)는 A 불휘발성 메모리 세트(NVM Set A)로 데이터를 추가적으로 수신할 것을 예상하여, 제1 스토리지 장치(120b)는 그 데이터를 저장할 수 있는 임시 공간을 마련할 수 있다. 제1 스토리지 장치(120b)는 여유 있는 불휘발성 메모리 세트인 B 불휘발성 메모리 세트(NVM Set B)의 데이터가 저장되어 있지 않은 공간의 일부(Temp space)를 A 불휘발성 메모리 세트(NVM Set A)에 대한 임시 공간으로 제공할 수 있다. A 불휘발성 메모리 세트(NVM Set A)를 위해서, 제1 스토리지 장치(120b)는 B 불휘발성 메모리 세트(NVM Set B)에 대한 쓰기 요청에 대응하는 데이터를 임시 공간인 B 불휘발성 메모리 세트(NVM Set B)의 가용 공간 중 일부(Temp space)에 저장할 수 없을 수 있다. 하지만 제1 스토리지 장치(120b)는 B 불휘발성 메모리 세트(NVM Set B)에 대한 쓰기 요청에 대응하는 데이터를 B 불휘발성 메모리 세트(NVM Set B)의 임시 공간으로 할당되지 않은 영역에 저장할 수 있다.
제1 스토리지 장치(120b)는 상술한 바와 같이, 제1 스토리지 장치(120b) 내에서 처리한 내용들을 호스트(110b)에게 알릴 수 있다. 제1 스토리지 장치(120b)는 호스트(110b)에게 비동기 이벤트 요청을 통해서 정보들을 제공할 수 있다. 정보는 A 불휘발성 메모리 세트(NVM Set A)의 가용 공간 부족에 대한 정보, 및 B 불휘발성 메모리 세트(NVM Set B)의 임시 공간 할당에 대한 정보를 포함할 수 있다. A 불휘발성 메모리 세트(NVM Set A)의 가용 공간 부족에 대한 정보는 A 불휘발성 메모리 세트(NVM Set A)의 가용 공간이 부족하다는 것을 가리키는 정보일 수 있다. B 불휘발성 메모리 세트(NVM Set B)의 임시 공간 할당에 대한 정보는 여유 있는 명칭 공간이 B 불휘발성 메모리 세트(NVM Set B)이고, 추후의 A 불휘발성 메모리 세트(NVM Set A)로 수신하는 데이터는 임시 공간인 B 불휘발성 메모리 세트(NVM Set B)의 일부(Temp space)에 저장될 수 있음을 가리키는 정보일 수 있다. 전달 방법에 관한 상세한 설명은 도 8에서 설명된다.
호스트(110b)는 상술한 정보들을 통해 임시 공간 할당 해제 전까지 다음의 것들을 인지 할 수 있다. 임시 공간인 B 불휘발성 메모리 세트(NVM Set B)의 일부(Temp space)에 A 불휘발성 메모리 세트(NVM Set A)에 대한 쓰기 요청에 대응하는 데이터가 저장 될 수 있다. 임시 공간인 B 불휘발성 메모리 세트(NVM Set B)의 일부(Temp space)에 B 불휘발성 메모리 세트(NVM Set B)에 대한 쓰기 요청에 대응하는 데이터가 저장 될 수 없다. 즉, 호스트(110b)는 임시 공간인 B 불휘발성 메모리 세트(NVM Set B)의 일부(Temp space)에 B 불휘발성 메모리 세트(NVM Set B)에 대한 데이터 쓰기 요청을 수행하지 않을 수 있다. B 불휘발성 메모리 세트(NVM Set B)의 가용 공간이 축소될 수 있다.
도 7b는 제1 스토리지 장치(120b)가 호스트(110b)로부터 A 불휘발성 메모리 세트(NVM Set A)에 대한 추가적인 쓰기 요청을 수신 후의 모습을 보여준다. 제1 스토리지 장치(120b)는 A 불휘발성 메모리 세트(NVM Set A)의 A1 명칭 공간(NS A1)에 쓰기 요청을 받았지만, 더 이상 A 불휘발성 메모리 세트(NVM Set A)의 가용 공간이 부족할 수 있다. 제1 스토리지 장치(120b)는 A 불휘발성 메모리 세트(NVM Set A)의 가용 공간이 부족한 문제를 해결하기 위해서, 여유 있는 불휘발성 메모리 세트인 B 불휘발성 메모리 세트(NVM Set B)의 임시 공간에 쓰기 요청에 대응하는 데이터를 저장할 수 있다.
일 실시 예에서, 호스트(110b)는 A 불휘발성 메모리 세트(NVM Set A)의 A1 명칭 공간(NS A1)에 대한 쓰기 요청에 대하여, B 불휘발성 메모리 세트(NVM Set B)의 B3 명칭 공간(NS B3)의 명칭 공간 ID를 포함하는 쓰기 요청을 제1 스토리지 장치(120b)에게 전송할 수 있다. 쓰기 요청은 A 불휘발성 메모리 세트(NVM Set A)의 A1 명칭 공간(NS A1)에 대한 요청이라는 정보(즉, A 불휘발성 메모리 세트(NVM Set A)의 A1 명칭 공간(NS A1)의 명칭 공간 ID)를 더 포함할 수 있다. 제1 스토리지 장치(120b)는 B 불휘발성 메모리 세트(NVM Set B)의 B3 명칭 공간(NS B3)의 명칭 공간 ID를 포함하는 쓰기 요청에 응답하여, 제1 스토리지 장치(120b)는 쓰기 요청에 대응하는 데이터를 임시 공간인 B 불휘발성 메모리 세트(NVM Set B)의 B3 명칭 공간(NS B3)의 일부(Temp space)에 저장할 수 있다.
다른 실시 예에서, 호스트(110b)는 A 불휘발성 메모리 세트(NVM Set A)의 A1 명칭 공간(NS A1)의 명칭 공간 ID를 포함하는 쓰기 요청을 제1 스토리지 장치(120b)에게 전송할 수 있다. 제1 스토리지 장치(120b)는 A 불휘발성 메모리 세트(NVM Set A)의 A1 명칭 공간(NS A1)의 명칭 공간 ID가 포함된 쓰기 요청에 응답하여, 제1 스토리지 장치(120b)는 자체적으로 수신한 데이터를 임시 공간인 B 불휘발성 메모리 세트(NVM Set B)의 임시 공간으로 리다이렉트할 수 있다. 즉 제1 스토리지 장치(120b)는 A 불휘발성 메모리 세트(NVM Set A)에 대한 데이터를 B 불휘발성 메모리 세트(NVM Set B)의 B3 명칭 공간(NS B3)의 일부(Temp space)에 저장할 수 있다.
도 7c를 참조하면, 제2 스토리지 장치(140b)를 추가하여 변경된 스토리지 시스템(100b)을 보여준다. 런-타임에서 A 불휘발성 메모리 세트(NVM Set A)의 가용 공간을 초과하는 쓰기 요청에 대응하는 데이터는 B 불휘발성 메모리 세트(NVM Set B)의 임시 공간에 저장된 이후에, 제2 스토리지 장치(140b)가 추가될 수 있다. 호스트(110b)는 제2 포트(PT2)를 통해 제2 스토리지 장치(140b)와 통신할 수 있다. 제2 스토리지 장치(140b)는 스토리지 컨트롤러(150b)를 포함할 수 있다. 예시적으로 스토리지 컨트롤러(150b)는 NVMe 제어기 일 수 있다. 제2 스토리지 장치(140b)는 D 불휘발성 메모리 세트(NVM Set D)를 포함할 수 있다. D 불휘발성 메모리 세트(NVM Set D)는 D1 명칭 공간(NS D1)을 포함할 수 있다. 발명의 범위는 이에 한정되는 것은 아니다.
제1 불휘발성 메모리 세트(NVM Set A)의 가용 공간이 부족했으므로, 호스트(110b)의 제어에 따라 A 불휘발성 메모리 세트(NVM Set A)에 저장된 데이터는 D 불휘발성 메모리 세트(NVM Set D)로 플러쉬될 수 있다. 호스트(110b)의 요청에 따라, 제1 스토리지 장치(120b)는 A 불휘발성 메모리 세트(NVM Set A)에 저장된 데이터 및 임시 공간인 B 불휘발성 메모리 세트(NVM Set B)의 일부(Temp space)에 저장된 데이터를 읽고, 그 데이터를 모두 D 불휘발성 메모리 세트(NVM Set D)에 쓸 수 있다.
이 플러쉬 동작이 완료되면, 제1 스토리지 장치(120b)는 A 불휘발성 메모리 세트(NVM Set A)를 위하여 할당한 B 불휘발성 메모리 세트(NVM Set B)의 임시 공간을 해제할 수 있다. 예를 들어, A 불휘발성 메모리 세트(NVM Set A)는 B 불휘발성 메모리 세트(NVM Set B)의 임시 공간에 저장 되어 있던 데이터를 삭제하고, B 불휘발성 메모리 세트(NVM Set B)의 임시 공간에 새로운 데이터를 저장할 수 있는 상태로 만들 수 있다. 제1 스토리지 장치(120b)는 호스트(110b)에게 B 명칭 공간(NS B)의 임시 공간 할당 해제가 완료되었음을 알릴 수 있다. 그 후에 호스트(110b)가 B 불휘발성 메모리 세트(NVM Set B)에 쓰기 요청을 전송하는 경우, 제1 스토리지 장치(120b)는 다시 B 불휘발성 메모리 세트(NVM Set B)의 임시 공간에 쓰기 요청에 대응하는 데이터를 저장할 수 있다.
A 불휘발성 메모리 세트(NVM Set A)의 데이터가 모두 D 불휘발성 메모리 세트(NVM Set D)로 플러쉬되면, A 불휘발성 메모리 세트(NVM Set A)는 D 불휘발성 메모리 세트(NVM Set D)로 대체될 수 있다. 예를 들어, A 불휘발성 메모리 세트(NVM Set A)로 쓰기 요청이 들어오면, D 불휘발성 메모리 세트(NVM Set D)에 쓰기 요청에 대응하는 데이터는 저장될 수 있다.
더 이상 A 불휘발성 메모리 세트(NVM Set A)의 명칭 공간들(NS A1~NS A4)은 호스트(110b)에게 필요 없을 수 있다. 호스트(110b)는 A 불휘발성 메모리 세트(NVM Set A)의 명칭 공간들(NS A1~NS A4)을 제1 스토리지 장치(120b)의 제1 스토리지 컨트롤러(130b)와 분리하고 삭제할 수 있다. 예를 들어, 호스트는 명칭 공간 부착 커맨드(Namespace Attachment command)를 통해서 제1 스토리지 장치(120b)에게 A 불휘발성 메모리 세트(NVM Set A)의 명칭 공간들(NS A1~NS A4) 분리(detach)를 요청 할 수 있다. 제1 스토리지 장치(120b)의 스토리지 컨트롤러(130b)는 호스트(110b)의 요청에 따라서 A 불휘발성 메모리 세트(NVM Set A)의 명칭 공간들(NS A1~NS A4)을 분리할 수 있다. 호스트(110b)는 명칭 공간 관리 커맨드(Namespace Management command)를 통해서 A 불휘발성 메모리 세트(NVM Set A)의 명칭 공간들(NS A1~NS A4) 제거(delete)를 요청할 수 있다. 제1 스토리지 장치(120b)의 스토리지 컨트롤러(130b)는 호스트(110b)의 요청에 따라서 A 불휘발성 메모리 세트(NVM Set A)의 명칭 공간들(NS A1~NS A4)을 제거할 수 있다.
본 발명의 실시 예에 따른 제1 스토리지 장치(120b)는 A 불휘발성 메모리 세트(NVM Set A)의 가용 공간 부족에 대하여, 여유 있는 B 불휘발성 메모리 세트(NVM Set B)의 임시적인 공간을 할당할 수 있다. 이에 따라 A 불휘발성 메모리 세트(NVM Set A)에 대한 데이터를 수신한 경우, 데이터를 B 불휘발성 메모리 세트(NVM Set B)의 임시적인 공간에 저장함으로써, 쓰기 요청에 대응하는 데이터의 신뢰성과 연속성을 보장할 수 있다.
도 8은 도 5 순서도의 S140 단계의 동작을 좀 더 상세하게 보여주는 순서도이다. 도 8는 S140 단계를 예시적으로 보여주는 것이며, 발명의 범위는 이에 한정되는 것은 아니다. 도 1, 도 5, 및 도 8을 참조하면, S141 단계에서 호스트(110)는 스토리지 장치(120)에게 비동기 이벤트 요청 커맨드(Asynchronous Event Request)를 전송할 수 있다. 비동기 이벤트 요청 커맨드는 타임아웃이 없는 커맨드 일 수 있다. 스토리지 장치(120)는 비동기 이벤트 요청 커맨드를 수신하면, 바로 완료(Completion)를 전송하는 것이 아니라 이벤트가 발생하면 완료를 전송할 수 있다.
스토리지 장치(120)는 A 명칭 공간(NS A)의 저장공간이 부족하다고 판단하고, 여유 있는 명칭 공간(NS B)을 식별하고, 여유 있는 B 명칭 공간(NS B)의 임시 공간을 할당할 수 있다. 스토리지 장치(120)는 이와 관련된 정보를 로그에 업데이트 할 수 있다. 즉 A 명칭 공간(NS A)의 가용 공간 부족에 대한 정보 및 B 명칭 공간(NS B)의 임시 공간 할당에 대한 정보를 로그에 업데이트 할 수 있다. 도 2를 참조하면, 로그는 스토리지 컨트롤러(130)의 RAM(132) 및/또는 불휘발성 메모리 장치(NVM)에 저장될 수 있다.
S142 단계에서, 스토리지 장치(120)는 호스트(110)에게 이벤트가 발생했음을 알려주기 위해서 비동기 이벤트 요청 완료를 전송할 수 있다. 예를 들어, 비동기 이벤트 요청 완료는 로그 식별자와 이벤트 타입정보를 포함할 수 있다. 스토리지 장치(120)는 비동기 이벤트 요청 완료를 통해서 호스트(110)가 업데이트한 로그를 읽게 할 수 있다. 또는 스토리지 장치(120)는 A 명칭 공간(NS A)의 가용 공간 부족에 대한 정보, 및 B 명칭 공간(NS B)의 임시 공간 할당에 대한 정보를 포함하는 비동기 이벤트 요청 완료를 호스트(110)에게 전송할 수 있다. 이 경우, 후술하는 로그 페이지 얻기 과정을 수행하지 않을 수 있다.
S143 단계에서, 호스트(110)는 스토리지 장치(120)에게 로그 페이지 얻기 커맨드(Get Log Page CMD)를 전송할 수 있다. 로그 페이지 얻기 커맨드는 로그 식별자, 로그 데이터 사이즈, 및 스토리지 장치(120)로부터 읽은 로그 데이터가 저장될 호스트 메모리 주소 등이 포함될 수 있다. 발명의 범위는 이에 한정되는 것은 아니다.
S144 단계에서, 스토리지 장치(120)는 로그 페이지 얻기 완료를 전송할 수 있다. 로그 데이터의 크기가 작다면, 로그 페이지 얻기 완료에 그 데이터가 포함될 수 있다. 즉 로그 페이지 얻기 완료는 A 명칭 공간(NS A)의 가용 공간 부족에 대한 정보, 및 B 명칭 공간(NS B)의 임시 공간 할당에 대한 정보를 포함할 수 있다. 이 경우 스토리지 장치(120)는 별도의 로그 데이터를 호스트(110)에게 전송하지 않을 수 있다. 로그 데이터의 크기가 크다면, 로그 페이지 얻기 커맨드에 포함된 호스트 메모리 주소에 로그 데이터를 쓴 후에 로그 페이지 얻기 완료를 전달할 수 있다.
도 9는 본 발명의 실시 예에 따른 스토리지 시스템이 적용된 SSD 시스템을 보여주는 블록도이다. 도 9를 참조하면, SSD 시스템(1000)은 호스트(1100) 및 SSD(1200)를 포함한다.
SSD(1200)는 신호 커넥터(1201)를 통해 호스트(1100)와 신호(SIG)를 주고받고, 전원 커넥터(1202)를 통해 전원(PWR)을 입력 받는다. 예시적으로, 신호 커넥터(1201)는 PCIe 포트일 수 있고, 신호(SIG)는 NVMe 규약에 정의된 신호일 수 있으며, SSD(1200)는 NVMe 기반의 스토리지 장치일 수 있다. SSD(1200)는 SSD 컨트롤러(1210), 복수의 플래시 메모리들(1221~122n), 보조 전원 장치(1230), 및 버퍼 메모리(1240)를 포함한다. 예시적으로, 복수의 플래시 메모리들(1221~122n) 각각은 별도의 칩, 또는 별도의 패키지로 구현될 수 있다.
SSD 컨트롤러(1210)는 호스트(1100)로부터 수신된 신호(SIG)에 응답하여 복수의 플래시 메모리들(1221~122n)을 제어할 수 있다. 예시적으로, SSD 컨트롤러(1210)는 도 1 내지 도 8를 참조하여 설명된 동작 방법을 기반으로 동작할 수 있다.
복수의 플래시 메모리들(1221~122n)은 SSD 컨트롤러(1210)의 제어에 따라 동작할 수 있다. 보조 전원 장치(1230)는 전원 커넥터(1002)를 통해 호스트(1100)와 연결된다. 보조 전원 장치(1230)는 호스트(1100)로부터 전원(PWR)을 입력 받고, 충전할 수 있다. 보조 전원 장치(1230)는 호스트(1100)로부터의 전원 공급이 원활하지 않을 경우, SSD(1200)의 전원을 제공할 수 있다.
도 10은 본 발명의 실시 예에 따른 스토리지 시스템이 적용된 데이터 센터를 예시적으로 보여주는 블록도이다. 도 10을 참조하면, 데이터 센터(2000)는 복수의 컴퓨팅 노드들(2100~2400)(또는 서버들)을 포함할 수 있다. 복수의 컴퓨팅 노드들(2100~2400)은 네트워크(NT)를 통해 서로 통신할 수 있다. 예시적인 실시 예에서, 네트워크(NT)는 SAN(storage area network)와 같은 스토리지 전용 네트워크이거나 또는 TCP/IP와 같은 인터넷 네트워크일 수 있다. 예시적인 실시 예에서, 네트워크(NT)는 파이버 채널(Fibre Channel), iSCSI 프로토콜, FCoE, NAS, NVMe-oF 등과 같은 다양한 통신 프로토콜들 중 적어도 하나를 포함할 수 있다.
복수의 컴퓨팅 노드들(2100~2400) 각각은 프로세서들(2110, 2210, 2310, 2410), 메모리들(2120, 2220, 2320, 2420), 스토리지 장치들(2130, 2230, 2330, 2430), 및 인터페이스 회로들(2140, 2240, 2340, 2440)을 각각 포함할 수 있다.
예를 들어, 제1 컴퓨팅 노드(2100)는 제1 프로세서(2110), 제1 메모리(2120), 제1 스토리지 장치(2130), 및 제1 인터페이스 회로(2140)를 포함할 수 있다. 예시적인 실시 예에서, 제1 프로세서(2110)는 싱글 코어 또는 멀티 코어로 구현될 수 있다. 제1 메모리(2120)는 DRAM, SDRAM, SRAM, 3D XPoint 메모리, MRAM, PRAM, FeRAM, ReRAM, 3D X-Point 등과 같은 메모리를 포함할 수 있다. 제1 메모리(2120)는 제1 컴퓨팅 노드(2100)의 시스템 메모리, 동작 메모리, 또는 버퍼 메모리로서 사용될 수 있다. 제1 스토리지 장치(2130)는 하드 디스크 드라이브(HDD), 솔리드 스테이트 드라이브(SSD) 등과 같은 대용량 저장 매체일 수 있다. 제1 인터페이스 회로(2140)는 네트워크(NT)를 통한 통신 지원하도록 구성된 네트워크 인터페이스 컨트롤러(NIC; network interface controller)일 수 있다.
예시적인 실시 예에서, 제1 컴퓨팅 노드(2100)의 제1 프로세서(2110)는 미리 정해진 메모리 인터페이스를 기반으로 제1 메모리(2120)를 액세스하도록 구성될 수 있다. 또는, 공유 메모리 구조(shared memory architecture)의 실시 예에서, 제1 컴퓨팅 노드(2100)의 제1 프로세서(2110)는 네트워크(NT)를 통해 다른 컴퓨팅 노드들(2200, 2300, 2400)의 메모리들(2220, 2320, 2420)을 액세스하도록 구성될 수 있다. 인터페이스 회로(2140)는 상술된 제1 프로세서(2110)의 공유 메모리(즉, 다른 컴퓨팅 노드들의 메모리들)로의 접근을 제어 또는 지원하도록 구성된 네트워크 스위치(미도시)를 포함할 수 있다.
예시적인 실시 예에서, 제1 컴퓨팅 노드(2100)의 제1 프로세서(2110)는 미리 정해진 스토리지 인터페이스를 기반으로 제1 스토리지 장치(2130)를 액세스하도록 구성될 수 있다. 또는 제1 컴퓨팅 노드(2100)의 제1 프로세서(2110)는 네트워크(NT)를 통해 다른 컴퓨팅 노드들(2200, 2300, 2400)의 스토리지 장치들(2230, 2330, 2430)을 액세스하도록 구성될 수 있다. 인터페이스 회로(2140)는 상술된 제1 프로세서(2110)의 다른 스토리지 장치들로의 접근을 제어 또는 지원하도록 구성된 네트워크 스위치(미도시)를 포함할 수 있다. 예시적인 실시 예에서, 복수의 컴퓨팅 노드들(2100~2140) 각각에 포함된 스토리지 장치들(2130~2430)은 하나의 RAID 볼륨을 구성할 수 있다.
제2 내지 제4 컴퓨팅 노드들(2200~2400)은 상술된 제1 컴퓨팅 노드(2100)와 유사한 동작을 수행할 수 있으며, 이에 대한 상세한 설명은 생략된다.
예시적인 실시 예에서, 데이터 센터(2000)에서, 다양한 애플리케이션들이 실행될 수 있다. 다양한 애플리케이션들은 컴퓨팅 노드들(2100~2400) 사이의 데이터 이동 또는 복사를 위한 명령어를 실행하도록 구성되거나, 또는 컴퓨팅 노드들(2100~2400) 상에 존재하는 다양한 정보들을 조합, 가공, 재생산하기 위한 명령어들을 실행하도록 구성될 수 있다. 예시적인 실시 예에서, 다양한 애플리케이션들은 데이터 센터(2000)에 포함된 복수의 컴퓨팅 노드들(2100~2400) 중 어느 하나에 의해 수행되거나 또는, 다양한 애플리케이션들은 복수의 컴퓨팅 노드들(2100~2400) 사이에서 분산되어 실행될 수 있다.
예시적인 실시 예에서, 데이터 센터(2000)는 고성능 컴퓨팅(HPC; high-performance computing)(예를 들어, 금융, 석유, 재료과학, 기상 예측 등), 기업형 애플리케이션(예를 들어, 스케일 아웃 데이터베이스), 빅 데이터 애플리케이션(예를 들어, NoSQL 데이터베이스, 인-메모리 복제 등)을 위해 사용될 수 있다.
예시적인 실시 예에서, 복수의 컴퓨팅 노드들(2100~2400) 중 적어도 하나는 애플리케이션 서버일 수 있다. 애플리케이션 서버는 데이터 센터(2000)에서 다양한 동작을 수행하도록 구성된 애플리케이션을 실행하도록 구성될 수 있다. 복수의 컴퓨팅 노드들(2100~2400) 중 적어도 하나는 스토리지 서버일 수 있다. 스토리지 서버는 데이터 센터(2000)에서 생성되거나 또는 관리되는 데이터를 저장하도록 구성될 수 있다.
예시적인 실시 예에서, 데이터 센터(2000)에 포함된 복수의 컴퓨팅 노드들(2100~2400) 각각 또는 그것들의 부분들은 동일한 위치에 존재하거나 또는 물리적으로 이격된 위치에 존재할 수 있으며, 무선 통신 또는 유선 통신에 기반된 네트워크(NT)를 통해 서로 통신할 수 있다. 예시적인 실시 예에서, 데이터 센터(2000)에 포함된 복수의 컴퓨팅 노드들(2100~2400)은 서로 동일한 메모리 기술을 기반으로 구현되거나 또는 서로 다른 메모리 기술들을 기반으로 구현될 수 있다.
비록 도면에 도시되지는 않았으나, 데이터 센터(2000)의 복수의 컴퓨팅 노드들(2100~2400) 중 적어도 일부는 네트워크(NT) 또는 다른 통신 인터페이스(미도시)를 통해 외부 클라이언트 노드(미도시)와 통신할 수 있다. 복수의 컴퓨팅 노드들(2100~2400) 중 적어도 일부는 외부 클라이언트 노드의 요청에 따라 자체적으로 요청(예를 들어, 데이터 저장, 데이터 전송 등)을 처리하거나 또는 다른 컴퓨팅 노드에서 요청을 처리할 수 있다.
예시적인 실시 예에서, 데이터 센터(2000)에 포함된 복수의 컴퓨팅 노드들(2100~2400)의 개수, 각 컴퓨팅 노드에 포함된 프로세서의 개수, 메모리 개수, 스토리지 장치의 개수는 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다.
예시적인 실시 예에서, 복수의 컴퓨팅 노드들(2100~2400) 각각은 도 1 내지 도 9를 참조하여 설명된 호스트일 수 있고, 복수의 컴퓨팅 노드들(2100~2400) 각각에 포함된 스토리지 장치들(2130~2140) 각각은 도 1 내지 도 9를 참조하여 설명된 스토리지 장치일 수 있다. 복수의 컴퓨팅 노드들(2100~2400)은 도 1 내지 도 9를 참조하여, 런-타임에서 복수의 컴퓨팅 노드들(2100~2400)은 할당된 명칭 공간 용량을 초과하는 데이터를 수신하더라도, 스토리지 장치들(3130~3430)은 각각은 도 1 내지 도 9를 참조하여 설명한 바와 같이, 데이터 손실이 발생하지 않도록 여유 있는 명칭 공간의 임시 공간에 데이터를 저장할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100: 스토리지 시스템
110: 호스트
120: 스토리지 장치
130: 스토리지 컨트롤러
110: 호스트
120: 스토리지 장치
130: 스토리지 컨트롤러
Claims (10)
- 스토리지 장치의 동작 방법에 있어서,
외부 호스트 장치에 의해 논리적으로 구분되어 인식되는 복수의 명칭 공간들 중 제1 명칭 공간에 대한 쓰기 요청을 수신한 경우, 상기 제1 명칭 공간의 가용 공간이 부족한지 판단하는 단계;
상기 제1 명칭 공간의 가용 공간이 부족한 경우, 상기 복수의 명칭 공간들 중 상기 제1 명칭 공간과 다른 제2 명칭 공간의 가용 공간 중 일부를 상기 제1 명칭 공간에 대한 임시 공간으로 할당하는 단계;
상기 외부 호스트 장치로 상기 제1 명칭 공간의 가용 공간의 부족에 대한 정보 및 상기 제2 명칭 공간의 상기 임시 공간 할당에 대한 정보를 전달하는 단계; 및
상기 제1 명칭 공간에 대한 상기 쓰기 요청에 대응하는 데이터를 상기 제2 명칭 공간의 상기 임시 공간에 저장하는 단계를 포함하는 동작 방법. - 제 1 항에 있어서,
상기 제1 명칭 공간에 저장된 데이터 및 상기 제2 명칭 공간의 상기 임시 공간에 저장된 데이터는, 상기 외부 호스트 장치의 제어에 따라, 외부 스토리지 장치의 제3 명칭 공간으로 플러쉬되는 동작 방법. - 제 2 항에 있어서,
상기 플러쉬가 완료되는 경우, 상기 제2 명칭 공간의 상기 임시 공간 할당을 해제하는 단계를 더 포함하는 동작 방법. - 제 3 항에 있어서,
상기 임시 공간 할당 해제된 경우, 상기 외부 호스트에게 상기 임시 공간 할당 해제에 대한 정보를 전달하는 단계를 더 포함하는 동작 방법. - 제 1 항에 있어서,
상기 제1 명칭 공간의 가용 공간이 부족한 경우는
상기 제1 명칭 공간의 상기 가용 공간이 미리 정해진 기준 이하인 경우, 및 상기 제1 명칭 공간의 상기 가용 공간이 상기 쓰기 요청에 대응하는 데이터보다 작은 경우 중 적어도 하나를 포함하는 동작 방법. - 제 1 항에 있어서,
상기 제2 명칭 공간은 상기 복수의 명칭 공간들 중 사용률이 가장 작은 명칭 공간인 동작 방법. - 제 1 항에 있어서,
상기 제1 명칭 공간의 가용 공간 부족에 대한 정보 및 상기 제2 명칭 공간의 상기 임시 공간 할당에 대한 정보는 비동기 이벤트 요청 완료를 통해 상기 외부 호스트로 전송되는 동작 방법. - 제 1 항에 있어서,
상기 제1 명칭 공간의 가용 공간 부족에 대한 정보 및 상기 제2 명칭 공간의 상기 임시 공간 할당에 대한 정보를 전달하는 단계는:
상기 외부 호스트로 비동기 이벤트 요청 완료를 전송하는 단계;
상기 외부 호스트로부터 로그 페이지 얻기(Get Log Page) 커맨드를 수신하는 단계; 및
상기 제1 명칭 공간의 가용 공간 부족에 대한 정보 및 상기 제2 명칭 공간의 상기 임시 공간 할당에 대한 정보를 포함하는 로그 데이터 및 로그 페이지 얻기완료를 전송하는 단계를 포함하는 동작 방법. - 스토리지 장치의 동작 방법에 있어서,
외부 호스트 장치에 의해 물리적으로 구분되어 인식되는 복수의 불휘발성 메모리 세트들 중 제1 불휘발성 메모리 세트에 대한 쓰기 요청을 수신한 경우, 상기 제1 불휘발성 메모리 세트의 가용 공간이 부족한지 판단하는 단계;
상기 제1 불휘발성 메모리 세트의 가용 공간이 부족한 경우, 상기 복수의 불휘발성 메모리 세트들 중 상기 제1 불휘발성 메모리 세트와 다른 제2 불휘발성 메모리 세트의 가용 공간 중 일부를 상기 제1 불휘발성 메모리 세트에 대한 임시 공간으로 할당하는 단계;
상기 외부 호스트 장치로 상기 제1 불휘발성 메모리 세트의 가용 공간 부족에 대한 정보 및 상기 제2 불휘발성 메모리 세트의 상기 임시 공간 할당에 대한 정보를 전달하는 단계; 및
상기 제1 불휘발성 메모리 세트에 대한 상기 쓰기 요청에 대응하는 데이터를 상기 제2 불휘발성 메모리 세트의 상기 임시 공간에 저장하는 단계를 포함하는 동작 방법. - 제 9 항에 있어서,
상기 제1 불휘발성 메모리 세트에 저장된 데이터 및 상기 제2 불휘발성 메모리 세트의 상기 임시 공간에 저장된 데이터는, 상기 외부 호스트 장치의 제어에 따라, 외부 스토리지 장치의 제3 불휘발성 메모리 세트로 플러쉬되는 동작 방법.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200081432A KR20220003786A (ko) | 2020-07-02 | 2020-07-02 | 스토리지 장치의 동작 방법 |
US17/179,652 US11656786B2 (en) | 2020-07-02 | 2021-02-19 | Operation method of storage device |
EP21165037.9A EP3933602B1 (en) | 2020-07-02 | 2021-03-25 | Operation method of storage device |
CN202110425462.8A CN113885784A (zh) | 2020-07-02 | 2021-04-20 | 存储设备的操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200081432A KR20220003786A (ko) | 2020-07-02 | 2020-07-02 | 스토리지 장치의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220003786A true KR20220003786A (ko) | 2022-01-11 |
Family
ID=79010022
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200081432A KR20220003786A (ko) | 2020-07-02 | 2020-07-02 | 스토리지 장치의 동작 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11656786B2 (ko) |
KR (1) | KR20220003786A (ko) |
CN (1) | CN113885784A (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2023004324A (ja) * | 2021-06-25 | 2023-01-17 | キヤノン株式会社 | 画像形成装置、画像形成装置の制御方法、及びプログラム |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8738621B2 (en) | 2009-01-27 | 2014-05-27 | EchoStar Technologies, L.L.C. | Systems and methods for managing files on a storage device |
US9122579B2 (en) | 2010-01-06 | 2015-09-01 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for a storage layer |
US20150143070A1 (en) | 2013-11-19 | 2015-05-21 | Samsung Electronics Co., Ltd. | Nonvolatile storage and operating methods of computing devices including the nonvolatile storage |
JP6403162B2 (ja) | 2015-07-23 | 2018-10-10 | 東芝メモリ株式会社 | メモリシステム |
JP6448571B2 (ja) | 2016-03-08 | 2019-01-09 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
US20180246916A1 (en) | 2017-02-26 | 2018-08-30 | Microsoft Technology Licensing, Llc | Scalable object service data and metadata overflow |
US10642488B2 (en) | 2017-10-23 | 2020-05-05 | Micron Technology, Inc. | Namespace size adjustment in non-volatile memory devices |
US10768820B2 (en) * | 2017-11-16 | 2020-09-08 | Samsung Electronics Co., Ltd. | On-demand storage provisioning using distributed and virtual namespace management |
US11288180B2 (en) | 2018-01-19 | 2022-03-29 | Micron Technology, Inc. | Management of storage resources allocated from non-volatile memory devices to users |
CN110633048B (zh) | 2018-06-22 | 2022-11-08 | 慧荣科技股份有限公司 | 闪存存储装置的命名空间操作方法 |
-
2020
- 2020-07-02 KR KR1020200081432A patent/KR20220003786A/ko active Search and Examination
-
2021
- 2021-02-19 US US17/179,652 patent/US11656786B2/en active Active
- 2021-04-20 CN CN202110425462.8A patent/CN113885784A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220004333A1 (en) | 2022-01-06 |
US11656786B2 (en) | 2023-05-23 |
CN113885784A (zh) | 2022-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI709857B (zh) | 記憶體系統及控制方法 | |
KR100439675B1 (ko) | 대용량 공유 저장장치를 위한 효율적인 스냅샷 수행방법 | |
KR101769883B1 (ko) | 저장부 할당 장치, 시스템, 및 방법 | |
US8924659B2 (en) | Performance improvement in flash memory accesses | |
TWI692722B (zh) | 資訊處理裝置、藉由資訊處理裝置執行之方法及程式 | |
KR20210111527A (ko) | 메모리 시스템에서 가비지 컬렉션을 수행하는 장치 및 방법 | |
JP2018073040A (ja) | メモリシステム | |
JP2013242908A (ja) | ソリッドステートメモリ、それを含むコンピュータシステム及びその動作方法 | |
US20190205053A1 (en) | Storage apparatus and distributed storage system | |
KR20210016184A (ko) | 스토리지 장치, 그것을 포함하는 메모리 시스템 및 그것의 동작 방법 | |
KR20210112548A (ko) | 메모리 시스템 내 맵 정보를 제어하는 장치 및 방법 | |
KR20220152936A (ko) | 커스터마이징 가능한 메타데이터를 위한 스토리지 장치, 스토리지 시스템 및 그것의 동작 방법 | |
CN115458013A (zh) | 存储装置及其操作方法 | |
US11288197B2 (en) | Method and apparatus for performing pipeline-based accessing management in a storage server | |
KR20220003786A (ko) | 스토리지 장치의 동작 방법 | |
EP3933602B1 (en) | Operation method of storage device | |
KR20230072886A (ko) | 저장 장치의 데이터 입출력 성능을 개선하는 장치 및 방법 | |
KR20230035811A (ko) | 데이터 처리 시스템 내 공유된 메모리 공간을 제어하기 위한 장치 및 방법 | |
CN114637462A (zh) | 用于存储装置的数据复制卸载的***和方法 | |
JP5768118B2 (ja) | 複数のフラッシュパッケージを有するストレージシステム | |
KR20210142863A (ko) | 데이터 처리 시스템의 동작 효율성을 높이기 위한 장치 및 방법 | |
JP7400053B2 (ja) | メモリシステムおよび制御方法 | |
EP4220414A1 (en) | Storage controller managing different types of blocks, operating method thereof, and operating method of storage device including the same | |
KR20230115197A (ko) | 다른 타입의 블록들을 관리하는 스토리지 컨트롤러, 이의 동작 방법, 및 이를 포함하는 스토리지 장치의 동작하는 방법 | |
JP6138318B2 (ja) | 複数のフラッシュパッケージを有するストレージシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |