KR20170056418A - 분산 다중 모드 저장 관리 - Google Patents

분산 다중 모드 저장 관리 Download PDF

Info

Publication number
KR20170056418A
KR20170056418A KR1020160109259A KR20160109259A KR20170056418A KR 20170056418 A KR20170056418 A KR 20170056418A KR 1020160109259 A KR1020160109259 A KR 1020160109259A KR 20160109259 A KR20160109259 A KR 20160109259A KR 20170056418 A KR20170056418 A KR 20170056418A
Authority
KR
South Korea
Prior art keywords
storage
sue
devices
manager
block
Prior art date
Application number
KR1020160109259A
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
Priority claimed from US14/941,525 external-priority patent/US9940028B2/en
Priority claimed from US14/941,512 external-priority patent/US9990304B2/en
Priority claimed from US14/941,517 external-priority patent/US9996473B2/en
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20170056418A publication Critical patent/KR20170056418A/ko

Links

Images

Classifications

    • G06F17/30283
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2069Management of state, configuration or failover
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F17/30194
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • 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
    • G06F2212/1024Latency reduction
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency 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/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • 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/7202Allocation control and policies

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 복수의 기기, 분산(Distributed) 다중 모드(Multimode) 저장 관리 조정기, 및 통신 메커니즘(Mechanism)을 포함하는 분산 저장 시스템을 제공한다. 복수의 기기 중 적어도 하나는 복수의 저장 장치를 포함하며, 분산 다중 모드 저장 관리 조정기는 복수의 저장 장치로의 정보의 전송을 지시하는 복수의 다중 모드 저장 관리 시스템을 포함한다. 통신 메커니즘은 복수의 다중 모드 저장 관리 시스템 사이에서, 분산 다중 모드 저장 관리 메시지들을 통신한다. 복수의 저장 장치 각각은 제 1 저장 파티션(Partition) 및 제 2 저장 파티션을 포함한다. 제 1 저장 파티션은 기본 유형의 인터페이스, 및 제 1 유형의 정보를 저장하는 제 1 정보 저장 영역을 포함한다. 제 2 저장 파티션은 선별 잠재 노출(Selective Underlying Exposure) 인터페이스, 및 제 2 유형의 정보를 저장하는 제 2 정보 저장 영역을 포함한다. 선별 잠재 노출 인터페이스는 제 2 정보 저장 영역의 양상(Aspect)을 노출한다. 복수의 다중 모드 저장 관리 시스템은 선별 잠재 노출 인터페이스를 통해 제 2 저장 파티션의 파일 활동들을 지시하는 다중 모드 선별 잠재 노출 관리 시스템들을 포함한다.

Description

분산 다중 모드 저장 관리 {DISTRIBUTED MULTIMODE STORAGE MANAGEMENT}
본 발명은 정보 저장(Information Storage)에 관한 것이다.
사업, 과학, 교육, 및 엔터테인먼트의 대부분의 분야에서, 많은 전자 기술(예컨대, 디지털 컴퓨터들, 계산기들, 오디오 장치들, 비디오 장비들, 전화기 시스템들 등)은 생산성을 증가시키고 비용을 감소시켜 왔다. 이 전자 시스템들은 정보 저장 시스템들을 수반하는 동작들을 수행한다. 정보 저장 동작들이 진행되는 속도 및 편의성은 정보 저장 시스템들의 전반적인 성능에 큰 영향을 줄 수 있다. 그러나, 정보 저장에 관한 기존의 시도들은 속도와 관리 가능한 복잡도 사이의 역관계(Inverse Relationship)를 수반한다.
정보 저장 시스템들은 두 개의 카테고리들 중 하나에 속할 수 있는 동작들을 수반한다. 하나의 카테고리는 사용자에 의해 개시되는 활동(Activity)들과 관련되는 저장 동작들을 포함한다. 다른 카테고리는 시스템에 의해 개시되는 관리 및 유지보수 활동들을 포함한다. 이 동작들이 진행되는 속도 및 편의성은 정보를 저장하기 위해 활용되는 어드레스 공간(Address Space)의 유형과 관련된다.
물리 어드레스(Physical Address) 기반의 공간을 활용하는 것에 관한 기존의 시도들은 이론적으로는 매우 빠른 속도로 동작하는 것으로 여겨졌으나, 기존의 물리 어드레스 기반의 공간에서의 실제 관리 및 유지보수 동작들에 관한 시도들은 매우 복잡하고 사실상 거의 구현되지 않았다. 기존의 논리 어드레스(Logical Address) 공간의 관리 및 유지보수는 물리 어드레스 공간에 비해 낮은 복잡도를 갖는 것으로 여겨졌다. 그러나, 기존의 논리 어드레스 공간은 물리 어드레스 공간만큼 빠르게 동작하지는 않는다.
기존의 저장 시스템들은 이전에는 수용할 만한 것으로 여겨지는 수준으로 동작할 수 있었던 반면, 이 저장 시스템들이 개선된 어플리케이션(Application)들 및 플랫폼(Platform)들을 위한 요구 사항들, 및 오랫동안 기다려 온 필요성을 충족시키기에는 점점 불충분해지고 있다. 개선된 시스템 개발을 가능하게 하기 위하여 증가한 속도 및 관리 가능한 복잡도 모두를 달성하는 것에 관한 기존의 시도들은 성공적이지 못했다.
본 발명의 실시 예들은 효율적이고 효과적인 다중 모드(Multimode) 저장 접근법들을 제공할 수 있다. 다중 모드 저장 방법들은 여러 상이한 유형의 어드레스 공간들을 함께 채용할 수 있다. 이러한 다중 모드 저장 접근법은 분산 컴퓨팅 시스템(Distributed Computing System)에서 채용될 수 있다.
본 발명의 실시 예에 따른 분산 저장 시스템은 복수의 기기, 분산 다중 모드 저장 관리 조정기, 및 통신 메커니즘(Mechanism)을 포함할 수 있다. 복수의 기기 중 적어도 하나는 복수의 저장 장치를 포함할 수 있다. 분산 다중 모드 저장 관리 조정기는 복수의 저장 장치로의 정보의 전송을 지시하도록 구성되는 복수의 다중 모드 저장 관리 시스템을 포함할 수 있다. 통신 메커니즘은 복수의 다중 모드 저장 관리 시스템 사이에서, 분산 다중 모드 저장 관리 메시지(Message)들을 포함하는 메시지들을 통신하기 위해 제공될 수 있다. 복수의 저장 장치 각각은 제 1 저장 파티션(Partition) 및 제 2 저장 파티션을 포함할 수 있다. 제 1 저장 파티션은 기본 유형의 인터페이스, 및 제 1 유형의 정보를 저장하도록 구성되는 제 1 정보 저장 영역을 포함할 수 있다. 제 2 저장 파티션은 선별 잠재 노출(Selective Underlying Exposure) 인터페이스, 및 제 2 유형의 정보를 저장하도록 구성되는 제 2 정보 저장 영역을 포함할 수 있다. 선별 잠재 노출 인터페이스는 제 2 정보 저장 영역의 양상(Aspect)을 노출할 수 있다. 복수의 다중 모드 저장 관리 시스템은 선별 잠재 노출 인터페이스를 통해 제 2 저장 파티션의 파일 활동(Activity)들을 지시하도록 구성되는 다중 모드 선별 잠재 노출 관리 시스템들을 포함할 수 있다.
본 발명의 실시 예에서, 분산 다중 모드 저장 관리 메시지들은 선별된 잠재적인 양상들이 복수의 기기에 걸쳐 노출되도록 유지시킬 수 있다.
본 발명의 실시 예에서, 메타데이터의 저장 공간 및 사용자 데이터의 저장 공간은 복수의 기기에 걸쳐 고르게 퍼질 수 있다.
본 발명의 실시 예에서, 선별 잠재 노출 어드레스 공간 맵핑이 복수의 기기에 걸쳐 유지될 수 있고, 선별 잠재 노출 어드레스 공간 맵핑의 대표 기하 구조(Representative Geometry) 구성은 잠재적인 물리 어드레스 공간의 대표 기하 구조 구성과 매칭될 수 있다.
본 발명의 실시 예에서, 중복 수준(Redundancy)이 복수의 다중 모드 저장 관리 시스템의 레벨에서 제어될수 있다.
본 발명의 실시 예에서, 복수의 기기는 구성 요소들이 여러 시스템에 걸쳐 선형적으로 확장 가능한(Linearly Scalable) 아키텍처(Architecture)로 배열될 수 있다.
본 발명의 실시 예에서, 분산 다중 모드 저장 관리 조정기는 복수의 저장 장치에 걸친 선별 잠재 노출 수준에 기초하여 동작할 수 있다.
본 발명의 실시 예에서, 하나의 노드는 하나보다 많은 저장 장치를 포함할 수 있고, 단일 유닛(Unit)의 장애(Failure)는 분산 저장 시스템을 망가뜨리지 않을 수 있다.
본 발명의 실시 예에서, 남는 공간(Free Space)에 관한 기록(Accounting)은 선별된 잠재적인 양상의 블록 수준에서 발생할 수 있다.
본 발명의 실시 예에 따른 분산 저장 방법은, 적어도 하나가 복수의 저장 장치를 포함하는 복수의 기기를 RAID(Redundant Array of Independent Disks) 구성으로 설정하는 단계, 및 복수의 저장 장치에의 정보 저장을 관리하는 단계를 포함할 수 있다. 정보 저장을 관리하는 단계는 기본 유형의 어드레스 공간을 선별 잠재 노출 어드레스 공간으로 맵핑하는 단계를 포함할 수 있다. 선별 잠재 노출 어드레스 공간은 복수의 저장 장치 중 적어도 하나의 잠재적인 양상에 대응할 수 있다.
본 발명의 실시 예에서, 맵핑 데이터는 복수의 저장 장치에 걸쳐 중복하여 논리적으로 분산될 수 있다.
본 발명의 실시 예에서, 정보 저장을 관리하는 단계는 RAID 구성에 걸쳐 복수의 저장 장치에의 정보 저장의 관리를 조정(Coordinate)하는 단계를 포함할 수 있다.
본 발명의 실시 예에서, 조정하는 단계는 복수의 기기 중 제 1 기기와 제 2 기기 사이에서 메시지들을 통신하는 단계를 포함할 수 있다.
본 발명의 실시 예에서, 남는 공간에 관한 기록은 다중 모드 저장 관리 시스템 수준에서 발생할 수 있다.
본 발명의 실시 예에서, 분산 블록 선택(Distributed Block Picking)을 트리거(Trigger)하는 주요 블록 소유자(Primary Block Owner)에 의해 반환(Reclamation)이 관리될 수 있고, 선택된 블록은 다른 블록으로 분산될 수 있다.
본 발명의 실시 예에서, 비 주요(Non-primary) 블록 소유자는 물리적인 검사(Physical Scan) 및 유효 판별 룩-업(Valid Determination Lookup)을 수행할 수 있다.
본 발명의 실시 예에 따른 분산 시설은 복수의 기기, 분산 다중 모드 저장 관리 조정기, 및 통신 메커니즘을 포함할 수 있다. 복수의 기기는 스트라이프(Stripe) 단위로 정보를 저장할 수 있고, 복수의 기기 중 적어도 하나는 복수의 솔리드 스테이트(Solid State) 저장 장치를 포함할 수 있다. 분산 다중 모드 저장 관리 조정기는 복수의 솔리드 스테이트 저장 장치로의 정보의 전송을 지시하도록 구성되는 복수의 다중 모드 저장 관리 시스템을 포함할 수 있다. 통신 메커니즘은 복수의 다중 모드 저장 관리 시스템과 복수의 기기 사이에서 메시지들을 통신하기 위해 제공될 수 있다. 복수의 솔리드 스테이트 저장 장치 각각은 제 1 저장 파티션 및 제 2 저장 파티션을 포함할 수 있다. 제 1 저장 파티션은 기본 유형의 인터페이스, 및 제 1 유형의 정보를 저장하도록 구성되는 제 1 정보 저장 영역을 포함할 수 있다. 제 2 저장 파티션은 선별 잠재 노출 인터페이스, 및 제 2 유형의 정보를 저장하도록 구성되는 제 2 정보 저장 영역을 포함할 수 있다. 선별 잠재 노출 인터페이스는 제 2 정보 저장 영역의 양상을 노출할 수 있다. 분산 다중 모드 저장 관리 조정기는 선별 잠재 노출 인터페이스를 통한 제 2 저장 파티션의 파일 활동들 및 제 2 저장 파티션의 선별된 잠재적인 양상들을 지시하도록 구성되는 다중 모드 선별 잠재 노출 관리 시스템을 포함할 수 있다.
본 발명의 실시 예에 따른 분산 시설은 여러 시스템에 걸쳐 물리적으로 스트라이핑(Striping)되는 메타데이터 및 사용자 데이터를 더 포함할 수 있다.
본 발명의 실시 예에서, 저장 장치보다 상위 계층 레벨(Higher Hierarchical Level)인 분산 다중 모드 저장 관리 조정기의 레벨에서 중복 수준이 제어될 수 있다.
본 발명의 실시 예에서, 장애가 있는 유닛은 저장 노드(Node)일 수 있다. 단일 노드의 장애는 분산 시설을 망가뜨리지 않을 수 있고, 저장 노드는 복수의 기기 중 하나를 포함할 수 있다.
본 발명의 실시 예들에 따른 다중 모드 저장 접근법들은 복잡도를 관리 가능한 범위로 제한하면서도, 저장 시스템의 성능을 개선할 수 있다.
이 명세서의 일부분으로서 포함되는 첨부된 도면들은 본 발명의 원리에 관한 예시들을 설명하기 위한 것이고, 설명된 특정 구현들로 본 발명을 한정하기 위한 것은 아니다.
도 1은 본 발명의 실시 예에 따른 선별 잠재 노출(Selective Underlying Exposure, 이하 SUE) 저장 파티션(Partition)을 포함하는 예시적인 저장 장치를 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 예시적인 다중 모드 저장 장치(Multimode Storage Device)를 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 다른 예시적인 다중 모드 저장 장치를 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 예시적인 다중 모드 솔리드 스테이트 드라이브(Multimode Solid State Drive)를 보여주는 블록도이다.
도 5는 본 발명의 실시 예에 따라 어드레스 공간 정보를 논리 어드레스 공간 정보로 변환하는 예시적인 과정을 보여주는 개념도이다.
도 6은 본 발명의 실시 예에 따른 시스템을 보여주는 블록도이다.
도 7은 본 발명의 실시 예에 따른 시스템을 보여주는 블록도이다.
도 8은 본 발명의 실시 예에 따라 다중 모드 선별 잠재 노출을 구동하는 방법을 설명하는 흐름도이다.
도 9는 본 발명의 실시 예에 따른 다중 모드 솔리드 스테이트 드라이브를 예시적으로 보여주는 블록도이다.
도 10은 본 발명의 실시 예에 따른 다중 모드 저장 장치의 사용자 영역에의 저장을 위한 예시적인 SUE 블록 및 대응하는 SUE 페이지를 보여주는 블록도이다.
도 11은 본 발명의 실시 예에 따른 다중 모드 저장 장치의 사용자 영역에의 저장을 위한 사용자 저장 공간의 예시적인 SUE 블록 및 대응하는 SUE 페이지들을 보여주는 블록도이다.
도 12는 본 발명의 실시 예에 따른 다중 모드 저장 장치의 사용자 영역에의 저장을 위한 예시적인 SUE 메타 페이지 및 대응하는 SUE 페이지들을 보여주는 블록도이다.
도 13은 본 발명의 실시 예에 따른 다중 모드 저장 장치의 사용자 영역에의 저장을 위한 예시적인 SUE 메타 블록 및 대응하는 SUE 메타 페이지들을 보여주는 블록도이다.
도 14는 본 발명의 실시 예에 따른 다중 모드 저장 장치의 사용자 영역에의 저장을 위한 다른 예시적인 SUE 메타 블록 및 대응하는 SUE 블록들을 보여주는 블록도이다.
도 15는 본 발명의 실시 예에 따라 논리 어드레스로부터 SUE 어드레스로의 어드레스 맵핑을 제공하기 위해 다중 모드 저장 시스템에 의해 구현될 수 있는 예시적인 SUE 맵핑 스킴을 보여주는 개념도이다.
도 16은 도 15의 SUE 맵핑 스킴을 구현할 수 있는 예시적인 저장 시스템을 보여주는 블록도이다.
도 17은 본 발명의 실시 예에 따라 논리 어드레스 공간을 SUE 어드레스 공간으로 맵핑하는 예시적인 방법을 설명하는 흐름도이다.
도 18은 저장 시스템이 본 발명의 실시 예에 따라 저장 장치에서 논리 및 SUE 저장 공간들을 다룰 수 있게 하기 위해 SUE 어드레스 스킴을 채용한 예시적인 다중 모드 저장 관리 시스템을 보여주는 블록도이다.
도 19는 저장 시스템이 본 발명의 실시 예에 따라 저장 장치에서 논리 및 SUE 저장 공간들을 다룰 수 있게 하기 위해 SUE 어드레스 스킴을 채용한 다른 예시적인 다중 모드 저장 관리 시스템을 보여주는 블록도이다.
도 20은 저장 시스템이 본 발명의 실시 예에 따라 저장 장치에서 논리 및 SUE 저장 공간들을 다룰 수 있게 하기 위해 SUE 어드레스 스킴을 채용한 또 다른 예시적인 다중 모드 저장 관리 시스템을 보여주는 블록도이다.
도 21은 본 발명의 실시 예에 따른 다중 모드 저장 관리 시스템에 의해 구현될 수 있는 사용자 영역 액세스 관리기를 보여주는 블록도이다.
도 22는 본 발명의 실시 예에 따른 다중 모드 저장 관리 시스템에 의해 구현될 수 있는 사용자 영역 맵핑 엔진을 보여주는 블록도이다.
도 23은 본 발명의 실시 예에 따른 다중 모드 저장 관리 시스템에 의해 구현될 수 있는 메타 블록 관리기를 보여주는 블록도이다.
도 24는 본 발명의 실시 예에 따른 다중 모드 저장 관리 시스템에 의해 구현될 수 있는 저장 장치 제어 관리기를 보여주는 블록도이다.
도 25는 본 발명의 실시 예에 따른 다중 모드 저장 관리 시스템에 의해 구현될 수 있는 저장 장치 액세스 관리기를 보여주는 블록도이다.
도 26은 본 발명의 실시 예에 따른 다중 모드 저장 관리 시스템에 의해 구현될 수 있는 전역 상태 관리기를 보여주는 블록도이다.
도 27은 본 발명의 실시 예에 따라 네트워크에 연결되는 예시적인 기기를 보여주는 블록도이다.
도 28은 본 발명의 실시 예에 따른 분산 시스템을 보여주는 블록도이다.
도 29는 본 발명의 실시 예에 따른 분산 시스템을 보여주는 블록도이다.
도 30은 본 발명의 실시 예에 따른 블록 라이프사이클의 흐름도이다.
도 31은 본 발명의 실시 예에 따른 분산 시스템 메타 블록을 보여주는 블록도이다.
도 32는 본 발명의 실시 예에 따라 노드들을 추가하고 제거하는 데에 활용되는 일치하는 해시를 설명하기 위한 개념도이다.
도 33은 본 발명의 실시 예에 따른 예시적인 쓰기 과정을 설명하는 흐름도이다.
도 34는 본 발명의 실시 예에 따른 예시적인 쓰기 할당 처리를 설명하는 흐름도이다.
도 35는 본 발명의 실시 예에 따른 쓰기 할당 처리 동작들을 구현한 분산 시스템의 예시적인 구현을 보여주는 블록도이다.
도 36은 본 발명의 실시 예에 따른 예시적인 쓰기 데이터 전송 처리를 설명하는 흐름도이다.
도 37은 본 발명의 실시 예에 따른 쓰기 데이터 전송 처리 동작들을 구현한 분산 시스템의 예시적인 구현을 보여주는 블록도이다.
도 38은 본 발명의 실시 예에 따른 예시적인 쓰기 맵핑 갱신 처리를 설명하는 흐름도이다.
도 39는 본 발명의 실시 예에 따른 쓰기 맵핑 갱신 처리 동작들의 예시적인 시스템 구현을 보여주는 블록도이다.
도 40은 본 발명의 실시 예에 따른 예시적인 쓰기 남는 공간의 기록 처리를 설명하는 흐름도이다.
도 41은 본 발명의 실시 예에 따른 쓰기 남는 공간의 기록 처리 동작들을 구현한 예시적인 시스템을 보여주는 블록도이다.
도 42는 본 발명의 실시 예에 따른 예시적인 쓰기 완료 처리를 설명하는 흐름도이다.
도 43은 본 발명의 실시 예에 따른 쓰기 완료 처리 동작들을 구현한 예시적인 시스템을 보여주는 블록도이다.
도 44는 본 발명의 실시 예에 따른 예시적인 반환 초기화 처리를 설명하는 흐름도이다.
도 45는 본 발명의 실시 예에 따른 예시적인 반환 처리를 설명하는 흐름도이다.
도 46 내지 도 51은 본 발명의 실시 예에 따른 예시적인 반환의 구현을 보여주는 블록도들이다.
상술한 특성들 및 이하 상세한 설명들은 모두 본 발명의 설명 및 이해를 돕기 위한 예시적인 사항들이다. 즉, 본 발명은 이와 같은 실시 예들에 한정되지 않고 다른 형태로 구체화될 수 있다. 다음 실시 형태들은 단지 본 발명을 완전히 개시하기 위한 예시이며, 본 발명이 속하는 기술 분야의 통상의 기술자들에게 본 발명을 전달하기 위한 설명이다. 따라서, 본 발명의 구성 요소들을 구현하기 위한 방법이 여럿 있는 경우에는, 이 방법들 중 특정한 것 또는 이와 동일성 있는 것 가운데 어떠한 것으로든 본 발명의 구현이 가능함을 분명히 할 필요가 있다.
본 명세서에서 어떤 구성이 특정 요소들을 포함한다는 언급이 있는 경우, 또는 어떤 과정이 특정 단계들을 포함한다는 언급이 있는 경우는, 그 외 다른 요소 또는 다른 단계들이 더 포함될 수 있음을 의미한다. 즉, 본 명세서에서 사용되는 용어들은 특정 실시 형태를 설명하기 위한 것일 뿐이고, 본 발명의 개념을 한정하기 위한 것이 아니다. 나아가, 발명의 이해를 돕기 위해 설명한 예시들은 그것의 상보적인 실시 예도 포함한다. 몇몇 예에서, 본 발명의 기술 사상을 불필요하게 모호하게 만들지 않기 위해, 잘 알려진 방법들, 과정들, 구성 요소들, 및 회로들은 자세히 설명되지 않을 수 있다.
본 명세서에서 사용되는 용어들은 본 발명이 속하는 기술 분야의 통상의 기술자들이 일반적으로 이해하는 의미를 갖는다. 보편적으로 사용되는 용어들은 본 명세서의 맥락에 따라 일관적인 의미로 해석되어야 한다. 또한, 본 명세서에서 사용되는 용어들은, 그 의미가 명확히 정의된 경우가 아니라면, 지나치게 이상적이거나 형식적인 의미로 해석되지 않아야 한다.
효율적이고 효과적인 다중 모드(Multimode) 저장 접근법들이 설명될 것이다. 다중 모드 저장 방법들은 여러 상이한 유형의 어드레스 공간(Address Space)들 및 어드레스 공간 활동(Activity)들을 채용할 수 있다. 몇몇 실시 예에서, 다중 모드 선별 잠재 노출(Selective Underlying Exposure, 이하 SUE) 저장 장치는 저장 장치의 몇몇 잠재적인 양상(Aspect)들의 선별적인 노출을 가능하게 하는 반면, 다른 잠재적인 양상들을 노출하지 않을 수 있다. 다중 모드 저장 및 SUE 접근법은 복잡도를 관리 가능한 범위로 제한하면서도, 성능을 개선할 수 있다.
몇몇 예시적인 구현에서, 물리 어드레스 공간(Physical Address Space)의 잠재적인 양상이 선별적으로 노출될 수 있다. 전반적인 저장 계층(Hierarchical) 접근법이 구현될 수 있고, 한 계층의 잠재적인 양상들은 다른 계층 레벨에 선별적으로 노출될 수 있다. 선별적인 노출은 어드레스 공간 구성들, 및 어드레스 공간들 사이의 맵핑(Mapping)을 통해 발생할 수 있다. 선별적으로 노출된 잠재적인 양상은 그 노출된 잠재적인 양상을 갖는 계층 레벨과 상이한 다른 계층 레벨에서 수행되는 다양한 활동들을 더 효율적이고 효과적으로 구현할 수 있다. 이 다양한 활동들은 저장 관리 동작들을 포함할 수 있다. 다중 모드 저장 및 SUE 접근법들은 다양한 구성들 및 구현들을 포함할 수 있음이 이해될 것이다.
이하 첨부된 도면들을 통하여 본 발명의 실시 예들이 설명될 것이다.
I. 다중 모드 저장 장치
도 1은 본 발명의 실시 예에 따른 선별 잠재 노출(SUE) 저장 파티션(Partition)(101)을 포함하는 예시적인 저장 장치(100)를 보여주는 블록도이다. SUE 저장 파티션(101)은 선별 잠재 노출(SUE) 인터페이스(102) 및 잠재 저장 영역(Underlying Storage Region, 103)을 포함할 수 있다.
잠재 저장 영역(103)은 정보를 저장할 수 있고, SUE 인터페이스(102)는 잠재 저장 영역(103) 자체(예컨대, 차원(Dimension)들과 관련되는 물리적인 양상들, 대표 기하 구조(Representative Geometry), 관리 기능들, 쓰기 동작들, 소거 동작들 등)의 양상(예컨대, 특성(Characteristic), 특징(Feature), 기능 등)을 외부 구성 요소 또는 저장 시스템 계층 레벨(미도시)에게 선별적으로 노출할 수 있다. 이 노출은 잠재 저장 영역(103)에 저장된 정보(사용자 데이터 및 메타데이터)의 양상들과 관련될 수 있다. SUE 저장 파티션(101)은 잠재적인 양상들(예컨대, 특성들, 특징들, 기능들 등)의 일부를 노출할 수 있다.
잠재적인 양상들의 일부를 노출하는 예시적인 구현에서, 노출된 양상들과 관련되는 활동(예컨대, 남는 공간(Free Space)의 관리, 남는 공간의 사용을 위한 반환(Reclamation) 및 환경 설정, 오버 프로비저닝(Over-provisioning), 트림(Trim) 동작들, 파워 사이클링(Power Cycling) 등)은 잠재적인 양상의 일부를 선별적으로 노출하지 않는 시스템에 비해 더 효율적으로(예컨대, 더 빠르고, 더 적은 대역폭에서, 적은 전력을 소모하여) 수행될 수 있다. 이 활동은 잠재적인 양상들을 더 많이 또는 모두 노출하는 접근법에 비해, 낮은 복잡도로 수행될 수 있다.
잠재적인 양상들 중 어느 부분을 노출시킬 것인지를 선택하는 것은 속도와 복잡도를 비교하거나 속도와 복잡도 사이의 균형을 고려하여 결정될 수 있다. SUE 저장 파티션(101)이 단일 파티션을 이용하여 단일 모드 저장 장치에 포함될 수도 있고, 또는 SUE 저장 파티션(101)이 복수의 파티션을 이용하여 다중 모드 저장 장치에 포함될 수도 있음이 이해될 것이다.
도 2는 본 발명의 실시 예에 따른 예시적인 다중 모드 저장 장치(220)를 보여주는 블록도이다. 저장 장치(220)는 제 1 파티션(230) 및 제 2 파티션(240)을 포함할 수 있다.
여러 모드 및 이에 대응하는 파티션들은 다양한 요소와 관련되거나 다양한 요소에 기반할 수 있음이 이해될 것이다. 이 다양한 요소는 잠재 저장 영역들의 상이한 노출들, 상이한 어드레스 공간들(예컨대, 논리적인 것, 가상(Virtual)인 것, 또는 물리적인 것), 상이한 저장 관리 모드들(예컨대, 내부 관리 및 외부 관리), 상이한 잠재 저장 정보(예컨대, 메타데이터 및 사용자 데이터) 등을 포함할 수 있다. 내부 관리 및 외부 관리는 저장 장치 관리 시스템의 구성 요소들 및 동작들(예컨대, 플래시 관리 시스템(Flash Management System, FMS), 솔리드 스테이트(Solid State) 장치 관리 시스템 등)을 포함할 수 있다. 파티션들 및 이에 대응하는 구성 요소들은 상이한 유형들일 수도 있다.
다중 모드 저장 장치(220)의 파티션들 및 이에 대응하는 인터페이스들은 상이한 유형들의 어드레스 공간들(예컨대, 논리 어드레스 공간 및 선별 잠재 노출(SUE) 어드레스 공간)과 관련될 수 있다. 다중 모드 저장 장치(220)의 하나보다 많은 파티션 및 이에 대응하는 인터페이스는 동일한 유형의 어드레스 공간과 관련될 수도 있다(예로서, 다중 모드 저장 장치(220)의 하나보다 많은 파티션 및 이에 대응하는 인터페이스는 SUE 어드레스 공간들과 관련될 수 있다).
제 1 파티션(230)은 제 1 유형의 인터페이스(231) 및 잠재 저장 영역(233)을 포함할 수 있다. 제 2 파티션(240)은 제 2 유형의 인터페이스(241) 및 잠재 저장 영역(243)을 포함할 수 있다. 몇몇 실시 예에서, 제 1 파티션(230)은 제 1 유형의 어드레스 공간 파티션(예컨대, 논리 어드레스 공간 파티션)일 수 있고, 제 2 파티션(240)은 제 2 유형의 어드레스 공간 파티션(예컨대, SUE 어드레스 공간 및 가상 어드레스 공간 파티션)일 수 있다. 파티션은 SUE 저장 파티션일 수 있음이 이해될 것이다.
도 3은 본 발명의 실시 예에 따른 다른 예시적인 다중 모드 저장 장치(350)를 보여주는 블록도이다. 저장 장치(350)는 제 1 파티션(370) 및 제 2 파티션(380)을 포함할 수 있다.
몇몇 실시 예에서, 제 1 파티션(370)은 제 1 유형의 어드레스 공간 파티션일 수 있고, 제 2 파티션(380)은 SUE 어드레스 공간 파티션일 수 있다. 제 1 파티션(370)은 제 1 유형의 인터페이스(371) 및 잠재 저장 영역(373)을 포함할 수 있다. 제 2 파티션(380)은 SUE 인터페이스(381) 및 잠재 저장 영역(383)을 포함할 수 있다. 제 1 파티션 관련 활동들(372)(예컨대, FMS)과 같은 몇몇 활동이 하나의 파티션을 위하여 내부적으로(예컨대, 저장 장치(350)에서) 수행될 수 있고, 다른 파티션을 위하여 외부적으로(미도시) 수행될 수 있다.
상이한 파티션들에는 상이한 유형들의 정보가 저장될 수 있다. 몇몇 실시 예에서, 두 가지 유형의 정보(예컨대, 메타데이터 및 사용자 데이터)가 있을 수 있다. 사용자 데이터는 주로 사용자 어플리케이션(Application)들에 의해 생성될 수 있고, 메타데이터는 주로 사용자 데이터와 관련되는 보조 정보(예컨대, 저장 시스템 계층에서의 파일의 위치, 파일의 내용의 크기, 액세스(Access) 시각, 수정 시각, 사용자 ID 등)일 수 있다. 제 1 플래시 관리 시스템은 메타데이터를 관리하는 데에 초점을 둘 수 있다. 메타데이터는 결국 사용자 데이터의 저장을 관리하기 위해 이용될 수 있다.
관리 또는 유지보수 활동들과 관련되는 시스템 동작들과는 상이하게, 사용자에 의해 개시되는(User-initiated) 활동들과 관련되는 동작들을 저장 시스템이 지시하거나 구현할 수 있음이 이해될 것이다. 예로서, 사용자에 의해 개시되는 읽기 또는 쓰기는 사용자 관점으로부터 제공되는 특정 어드레스 또는 위치로 향할 수 있는 반면, 시스템 동작들은 시스템 관점으로부터 제공되는 물리 블록(Block)들 및 페이지(Page)들로 향할 수 있다.
저장 장치(350)가 다양한 구성들 및 구현들을 포함할 수 있음이 이해될 것이다. 몇몇 실시 예에서, 저장 장치(350)는 솔리드 스테이트 장치일 수 있다. 저장 장치(350)는 플래시 구성 요소들(예컨대, NAND 플래시 구성 요소들, NOR 플래시 구성 요소들 등)을 포함할 수 있다.
도 4는 본 발명의 실시 예에 따른 예시적인 다중 모드 솔리드 스테이트 드라이브(Multimode Solid State Drive, 400)를 보여주는 블록도이다. 다중 모드 솔리드 스테이트 드라이브(400)는 다중 모드 저장 장치의 예시적인 구현의 하나일 수 있다. 다중 모드 솔리드 스테이트 드라이브(400)는 논리 어드레스 공간 파티션(410), 플래시 변환 로직(Flash Translation Logic, FTL, 413)을 포함할 수 있는 논리 인터페이스(411), 잠재 물리 어드레스 공간(412), SUE 어드레스 공간 파티션(420), SUE 인터페이스(421), 및 잠재 물리 어드레스 공간(423)을 포함할 수 있다.
논리 어드레스 공간 파티션(410)은 논리 어드레스 기반으로 시스템 데이터(예컨대, 메타데이터)를 수신하고 저장할 수 있고, SUE 어드레스 공간 파티션(420)은 잠재 노출 어드레스 공간에 따른 어드레스 기반으로 사용자 데이터(예컨대, 어플리케이션 데이터)를 수신할 수 있다. 사용자 데이터는 잠재 물리 어드레스 공간(423)에 저장될 수 있는데, 잠재 물리 어드레스 공간(423)은 플래시 저장 구성 요소들(예컨대, 상이한 유형들의 플로팅 게이트 트랜지스터(Floating Gate Transistor)들)을 포함할 수 있다. 플래시 저장 구성 요소들은 다양한 구성들 및 그래뉼래러티(Granularity)들로 배열될 수 있다. 예로서, 플래시 저장 구성 요소들은 복수의 다이(Die)로서 배열될 수 있고, 복수의 다이 중 다이(470)는 블록들(473, 479) 및 블록들 내의 페이지들을 포함할 수 있다.
몇몇 실시 예에서, SUE 인터페이스(421)는 잠재 물리 어드레스 공간(423)의 양상을 노출할 수 있다. 잠재 물리 어드레스 공간(423)의 선별적인 양상들은 다중 모드 솔리드 스테이트 드라이브(400)의 잠재적인 동작들을 다루는(Addressing) 사용자 데이터의 조정(Coordination)에 의해 노출될 수 있다. 이 조정은 잠재 물리 어드레스 공간(423)의 관리 동작들의 노출과 관련될 수 있다. 잠재적인 물리 저장 관리의 양상은 함께 관리되는 복수의 잠재 물리 어드레스 블록(예컨대, 471, 472, 473, 474)을 분류(Grouping)하는 것을 포함할 수 있다. 예로서, 함께 관리되는 복수의 잠재 물리 어드레스 블록(예컨대, 471, 472, 473, 474)은 단일 관리 단위로서 단일 동작에서 함께 관리되거나, 블록 집합이나 대역(Band)에서 함께 관리되거나, 단일 관리 커맨드(Command)에 응답하여 함께 관리될 수 있다.
도 5는 본 발명의 실시 예에 따라 어드레스 공간 정보를 논리 어드레스 공간 정보로 변환하는 예시적인 과정을 보여주는 개념도이다. SUE 어드레스 블록(503)은 다양한 관리 및 유지보수 동작들과 관련되는 정보(예컨대, 505, 507, 508)를 포함할 수 있다. 물리 어드레스 공간(502)은 복수의 다이(511, 512, 513, 514, 521, 522, 523, 524, 531, 532, 533, 534, 541, 542, 543, 544)를 포함할 수 있다. 각 다이는 복수의 물리 어드레스 기반의 블록(예컨대, 515, 519)을 포함할 수 있고, 각 물리 어드레스 기반의 블록은 복수의 물리 어드레스 페이지를 포함할 수 있다.
물리 어드레스 공간(502)은 물리 블록 및 물리 페이지 기반의 어드레스 저장 위치들에 액세스할 수 있다. SUE 인터페이스(501)는 SUE 어드레스 블록(503)의 정보를 수신할 수 있고, 수신된 정보를 물리 어드레스 공간(502)과 호환 가능한 구성들로 변환하거나 재구성할 수 있다. SUE 어드레스 블록(503)의 정보는 물리적인 관리 동작에 관여하는 정보에 대응할 수 있다.
몇몇 실시 예에서, 관리 및 유지보수 동작들은 물리 어드레스 공간(502) 내의 물리 블록들(예컨대, 515, 519, 539)로 제공될 수 있다. 관리 동작은 물리 어드레스 공간 또는 물리 레벨 관리 유닛으로 제공될 수 있다. 물리 레벨 관리 유닛은 실질적으로 동일한 시점에(예컨대, 관리 동작 또는 커맨드에 응답하여) 관리되는 복수의 어드레스, 페이지, 블록 등을 관리하는 것을 포함할 수 있다. 예로서, 소거 동작은 (블록(515)과 유사하게 검은색으로 나타낸) 물리 블록으로 제공될 수 있다.
SUE 어드레스 블록(503)이 물리 블록에 매칭(Matching)되도록 구성됨에 따라, 각 물리 블록에 대응하는 각 정보(예컨대, 505, 507, 508)는 SUE 어드레스 블록(503)에 포함될 수 있다. 몇몇 예에서, SUE 인터페이스(501)는 SUE 어드레스 블록(503)의 정보를 수신할 수 있고, 정보(505, 507, 508)가 각각 물리 블록들(515, 517, 528)에 대응하는 것으로 식별할 수 있고, 따라서 대응하는 관리 및 유지보수 동작들을 수행할 수 있다. 몇몇 실시 예에서, 소거 관리 동작들은 복수의 물리 블록의 정보에 대해 수행될 수 있고, 쓰기 동작들은 페이지의 정보에 대해 수행될 수 있다.
두 어드레스 공간들의 기하 구조들 역시 상이할 수 있다. 몇몇 실시 예에서, 논리 어드레스 공간은 단일 차원일 수 있고(예컨대, 논리 블록 어드레스(Logical Block Address, LBA)의 오프셋(Offset)이 어떻게 조정되는지와 관련), 물리 어드레스 공간은 다양한 양상(예컨대, ECC(Error Correction Code), 물리 페이지, 물리 블록, 물리 다이 등 또는 그것들의 일부 또는 부분 집합)을 포함하여 다차원일 수 있다. SUE 어드레스 공간은 일차원이거나, 제한된 또는 감소한 개수의 차원들일 수 있다. SUE 어드레스 공간에 관한 몇몇 예에서, 잠재 물리 어드레스 공간의 차원들은 단일의 또는 감소한 개수의 차원들로 추출(Abstract)될 수 있다. 잠재 물리 어드레스 공간의 관리 활동(예컨대, 반환/가비지 콜렉션(Garbage Collection), 파워 사이클링 등)과 관련되는 선택된 차원들(예컨대, 블록 및 페이지)은 SUE 어드레스 공간으로 추출될 수 있는 한편, 잠재 물리 어드레스 공간의 다른 양상들 또는 활동들(예컨대, ECC)은 SUE 어드레스 공간으로 추출되지 않을 수 있다.
잠재적인 양상의 선별적인 노출은 전반적인 시스템에서 다중 모드 솔리드 스테이트 드라이브(400)가 아닌 다른 구성 요소들(미도시)에 의해 사용자 데이터를 다중 모드 솔리드 스테이트 드라이브(400)로 전송하기 이전의 조정을 포함할 수 있음이 이해될 것이다. 몇몇 실시 예에서, 다중 모드 솔리드 스테이트 드라이브(400)는 전반적인 시스템 계층의 상이한 레벨에서 동작하는 관리 구성 요소에 연결될 수 있다.
도 6은 본 발명의 실시 예에 따른 시스템(600)을 보여주는 블록도이다. 시스템(600)은 다중 모드 저장 관리 시스템(610)과 통신하도록 연결되는 복수의 다중 모드 솔리드 스테이트 드라이브(예컨대, 620, 630, 640, 650)를 포함할 수 있다.
몇몇 활동(예컨대, 몇몇 저장 관리 동작들 및 플래시 관리 시스템 동작들)은 다중 모드 저장 관리 시스템(610)에 의해 제어될 수 있고, 다른 활동들(예컨대, 다른 저장 관리 동작들 및 플래시 관리 시스템 동작들)은 다중 모드 솔리드 스테이트 드라이브들(620, 630, 640, 650)에 의해 제어될 수 있음이 이해될 것이다. 몇몇 실시 예에서, 다중 모드 솔리드 스테이트 드라이브들(620, 630, 640, 650)은 각각 컨트롤러들(621, 631, 641, 651)을 포함할 수 있다. 컨트롤러들(621, 631, 641, 651)은 다중 모드 솔리드 스테이트 드라이브들(620, 630, 640, 650)에 대한 몇몇 활동을 제어하거나 지시할 수 있다. 다중 모드 저장 관리 시스템(610)은 컨트롤러(611)를 포함할 수 있다. 컨트롤러(611)는 다중 모드 솔리드 스테이트 드라이브들(620, 630, 640, 650)에 대한 몇몇 활동을 제어하거나 지시할 수 있다.
몇몇 예시적인 구현에서, 컨트롤러들(621, 631, 641, 651)은 각각 다중 모드 솔리드 스테이트 드라이브들(620, 630, 640, 650)의 제 1 파티션들의 활동들을 제어하거나 지시할 수 있고, 컨트롤러(611)는 다중 모드 솔리드 스테이트 드라이브들(620, 630, 640, 650)의 제 2 파티션들의 활동들을 제어하거나 지시할 수 있다. 컨트롤러(611)는 선별 잠재 노출(SUE) 인터페이스들을 통해 다중 모드 솔리드 스테이트 드라이브들(620, 630, 640, 650)의 활동들을 제어할 수 있다.
몇몇 실시 예에서, 시스템(600)은 여러 볼륨(Volume, 예컨대, 671, 672, 673)을 포함할 수 있다. 몇몇 예시적인 구현에서, 시스템(600)은 사용자 공간을 포함할 수 있다. 사용자 공간은 여러 볼륨으로 맵핑될 수 있고, 저장 공간은 여러 볼륨으로서 사용자에게 표현될 수 있다. 볼륨들이 상이한 크기들을 가질 수 있음이 이해될 것이다. 또한, 상이한 크기의 SUE 어드레스 기반 단위들이 여러 볼륨과 관련될 수 있음이 이해될 것이다.
도 7은 본 발명의 실시 예에 따른 시스템(700)을 보여주는 블록도이다. 시스템(700)은 기기(710)에 포함되는 다중 모드 저장 관리 시스템(720)과 통신하도록 연결되는 다중 모드 솔리드 스테이트 드라이브(750)를 포함할 수 있다. 기기(710)는 다양한 컴퓨터/전자 기기(장치) 중 어떤 것이든 될 수 있다. 다른 다중 모드 솔리드 스테이트 드라이브들이 다중 모드 저장 관리 시스템(720)에 연결될 수 있음이 이해될 것이다. 시스템(700)은 메타데이터(730) 및 사용자 데이터(740)의 저장을 관리할 수 있다.
다중 모드 저장 관리 시스템(720)은 컨트롤러(745)를 포함할 수 있다. 컨트롤러(745)는 (사용자 데이터를 위한) 플래시 관리 시스템(741), 및 SUE 맵퍼(742)를 포함할 수 있다.
다중 모드 솔리드 스테이트 드라이브(750)는 논리 어드레스 공간 파티션(770) 및 SUE 어드레스 공간 파티션(780)을 포함할 수 있다. 논리 어드레스 공간 파티션(770)은 물리 어드레스 공간(777) 및 컨트롤러(775)를 포함할 수 있고, 컨트롤러(775)는 (메타데이터를 위한) 플래시 관리 시스템(771)을 포함할 수 있다. 플래시 관리 시스템(771)은 논리 인터페이스(772)를 포함할 수 있고, 논리 인터페이스(772)는 FTL(773)을 포함할 수 있다. 물리 어드레스 공간(777)은 NAND 플래시를 포함할 수 있다. SUE 어드레스 공간 파티션(780)은 SUE 인터페이스(782) 및 물리 어드레스 공간(787)을 포함할 수 있고, 물리 어드레스 공간(787)은 NAND 플래시를 포함할 수 있다.
메타데이터(730)의 정보는 논리 어드레스 블록들(791)에서 수신될 수 있다. 메타데이터(730)의 정보는 논리 어드레스 블록들(792)로 전달되어, 다중 모드 관리 시스템(720)으로부터 논리 어드레스 공간 파티션(770)으로 제공될 수 있다. 논리 어드레스 블록들(791, 792)은 동일할 수 있음(예컨대, 논리 어드레스 블록들(791)이 변경되지 않고 단순히 논리 어드레스 공간 파티션(770)으로 전달될 수 있음)이 이해될 것이다.
논리 인터페이스(772)는 메타데이터와 관련되는 논리 블록 어드레스(LBA)를, 물리 어드레스 공간(777)과 관련되는 물리 어드레스 블록(793)으로 변환할 수 있다. 플래시 관리 시스템(771)은 물리 어드레스 공간(777)과 관련되는 저장 관리 및 유지보수 동작들을 지시할 수 있다. 메타데이터는 물리 어드레스 공간(777)의 NAND 플래시에 저장될 수 있다.
논리 어드레스 블록들(797)의 사용자 데이터는 플래시 관리 시스템(741)으로 전달될 수 있다. 물리 어드레스 공간(787)의 잠재적인 특징들 및 특성들이 SUE 인터페이스(782)를 통해 노출됨에 따라, 플래시 관리 시스템(741)은 물리 어드레스 공간(787)의 잠재적인 특징들 및 특성들과 관련되는 플래시 관리 및 유지보수 동작들을 지시할 수 있다. SUE 맵퍼(742)는 논리 어드레스 블록들(797)을 SUE 어드레스 블록(798)으로 맵핑할 수 있다.
이에 따라, SUE 어드레스 블록(798)은 SUE 인터페이스(782)에 의해, (도 5의 물리 블록들(517, 519)과 유사한) 물리 어드레스 블록(799)으로 변환될 수 있다. 물리 어드레스 블록(799)은 물리 어드레스 공간(787)에 포함되는 NAND 플래시 구성 요소들과 관련될 수 있다. 논리 어드레스 블록은 SUE 어드레스 블록의 것과 상이한 크기를 가질 수 있고 이에 따라 물리 어드레스 블록의 것과 상이한 크기를 가질 수 있음이 이해될 것이다.
계층 레벨의 상위에서 다양한 활동들을 수행하는 것은 기존의 접근법들에 비해 더 효율적이고 편리한 관리를 가능하게 한다. 종래의 접근법들의 경우, 여러 계층에 영향을 주는 활동들을 다루는 것의 유연성이 제한적이었다. 종래의 몇몇 접근법들은 전반적인 성능에 기하급수적으로 부정적인 영향들을 야기하는 활동(예컨대, 로그-온-로그(Log-on-Log), 구동 레벨의 플래시 관리 시스템, 및 시스템 레벨의 플래시 관리 시스템)을 여러 계층에 대해 수행해야 했다.
예로서, RAID(Redundant Array of Independent Disks) 저장 시스템에는, 상위 저장 계층 레벨(예컨대, RAID 시스템 관리 레벨) 및 하위 저장 계층 레벨(예컨대, 저장 구동 레벨) 모두에 영향을 주어 함께 관리될 필요가 있는 요소들이 많이 있다(예컨대, 데이터 저장 및 대응하는 패리티(Parity)의 저장). 정보의 라이프사이클(Lifecycle)이 각 계층마다 상이할 수 있고(예컨대, 사용자는 정보를 덮어쓰기(Overwrite)하고자 하는데, RAID 시스템은 패리티를 다시 계산할 필요가 있음), 이 경우 구동 레벨은 사용자를 위해 "새로운" 데이터를 쓰려고 하지만, 시스템 레벨은 RAID 시스템을 위해 "기존의" 정보를 유지하려고 할 수 있다. 이는 트림 동작을 수행하기 위한 능력이 없는 쓰기 증폭 지수(Write Amplification Factor)를 가능하게 한다.
도 8은 본 발명의 실시 예에 따라 다중 모드 선별 잠재 노출을 구동하는 방법을 설명하는 흐름도이다.
7%의 오버 프로비저닝(예컨대, 솔리드 스테이트 드라이브)으로 구동하는 것은 오버 프로비저닝을 구동하는 것 없이 직접 덮어쓰기를 수행하는 시스템(예컨대, 하드 디스크 드라이브)에 비해 15배 어려운 작업을 요구하고, 시스템 오버 프로비저닝을 채용하지 않은 시스템에 비해 15배 더 어려운 작업을 요구하여, 전체적으로 225(=15×15)배 어렵다. 플래시 관리 시스템이 상위 저장 계층 레벨로 이동되게 하는 다중 모드 저장 장치는 작업의 감소를 가능하게 하고(예컨대, 7%의 오버 프로비저닝은 오버 프로비저닝이 없는 것에 비해 단지 15배 어려워지고, 28%의 오버 프로비저닝은 오버 프로비저닝이 없는 것에 비해 단지 3배 어려워짐), 이는 쓰기 증폭 지수의 감소를 가능하게 한다. 몇몇 예시적인 구현에서, 상위 저장 계층 레벨로부터의 관리 동작들을 지시하기 위해 이용되는 선별된 잠재 어드레스 블록 및 페이지들은 잠재 물리 레벨과 조화되거나 매칭될 수 있다. 이는 사용자 수준에서의 정보 라이프사이클이 시스템 수준에서의 정보 라이프사이클과 달라지게 할 수 있다. 그러나, 관리 관점에서, 두 라이프사이클들은 동일하게 조정될 수 있다(예컨대, 사용자 수준에서의 라이프사이클의 길이 및 시스템 수준에서의 라이프사이클의 길이는 사용자 공간의 이용 및 소거에 대응할 수 있다).
S810 동작에서, 장치의 제 1 부분이 제 1 유형의 정보를 저장하기 위한 제 1 영역으로서 구성되거나 지정될 수 있다. 몇몇 실시 예에서, 제 1 영역은 메타데이터 영역일 수 있고, 제 1 유형의 정보는 메타데이터일 수 있다. ECC의 크기는 가변(Vary)할 수 있다.
S820 동작에서, 제 1 어드레스 공간 정보에 기초하여 제 1 유형 인터페이스 동작들이 수행될 수 있다. 몇몇 예시적인 구현에서, 제 1 영역은 메타데이터 영역일 수 있고, 제 1 유형의 정보는 메타데이터일 수 있다. 몇몇 실시 예에서, 제 1 유형 인터페이스는 논리 어드레스 공간 인터페이스일 수 있고, 논리 어드레스 기반의 정보에 기초하여 동작들이 수행될 수 있다. 논리 인터페이스 동작들은 FTL을 포함할 수 있다. FTL은 메타데이터 및 논리 어드레스들을 수신할 수 있고, 시스템 레벨 구성에서 보이는 어드레스 블록들을 물리 레벨 구성의 어드레스 블록들로 변환할 수 있다.
S830 동작에서, 장치의 제 2 부분이 제 2 유형의 정보를 저장하기 위한 제 2 영역으로서 구성되거나 지정될 수 있다. 몇몇 실시 예에서, 제 2 영역은 사용자 데이터 영역일 수 있고, 제 2 유형의 정보는 사용자 데이터일 수 있다. SUE 어드레스 공간은 물리 어드레스 공간과 관련되는 복잡도를 추상화하거나 제거할 수 있으면서도, 잠재 물리 어드레스 공간 구성과의 관계 또는 대응을 여전히 노출할 수 있다. 몇몇 실시 예에서, 물리 공간 차원들은 SUE 어드레스 페이지 차원 및 SUE 어드레스 블록 차원으로 추출될 수 있다. 물리 어드레스 공간은 SUE 어드레스에 의해 추상화될 수 있다.
S840 동작에서, 제 2 어드레스 공간 정보에 기초하여 제 2 유형 인터페이스 동작들이 수행될 수 있다. 제 2 유형 인터페이스는 잠재적인 양상을 노출할 수 있다. 제 2 어드레스 공간 정보는 SUE 어드레스 공간 정보일 수 있다. SUE 어드레스 공간 정보는 잠재적인 양상에 대응할 수 있다. 잠재적인 양상은 물리 어드레스 공간 기하 구조의 대표 기하 구조 또는 차원을 포함할 수 있다. SUE 인터페이스는 잠재적인 시스템 관리 동작들(예컨대, 남는 공간의 관리, 남는 공간의 사용을 위한 정비 및 환경 설정 등)과 관련되는 차원들을 노출할 수 있다. 메타데이터 영역에서의 오버 프로비저닝의 비율은 사용자 데이터 영역에서의 오버 프로비저닝의 비율과 상이할 수 있다.
도 9는 본 발명의 실시 예에 따른 다중 모드 솔리드 스테이트 드라이브(920)를 예시적으로 보여주는 블록도이다. 도 9에서, 다중 모드 솔리드 스테이트 드라이브(920)는 논리 어드레스 기반의 솔리드 스테이트 드라이브(910) 및 물리 어드레스 기반의 솔리드 스테이트 드라이브(930)에 관한 기존의 시도들과 비교된다.
논리 어드레스 기반의 솔리드 스테이트 드라이브(910)는 논리 인터페이스(911), FTL(912), 및 논리 어드레스 공간(913)을 포함할 수 있다. 물리 어드레스 기반의 솔리드 스테이트 드라이브(930)는 물리 인터페이스(931) 및 물리 어드레스 공간(932)을 포함할 수 있다. 다중 모드 솔리드 스테이트 드라이브(920)는 논리 인터페이스(921), FTL(922), 논리 어드레스 공간(923), SUE 인터페이스(924), 및 물리 어드레스 공간(925)을 포함할 수 있다.
다중 모드 솔리드 스테이트 드라이브(920)는 드라이브의 잠재적인 양상들의 편리하고 선별적인 노출을 가능하게 한다. 충분히 노출을 하지 않거나 지나친 복잡도를 갖는 기존의 접근법들과 달리, 다중 모드 솔리드 스테이트 드라이브(920)는 과도한 복잡함 없이 적절한 양의 노출을 가능하게 한다.
실제 기존의 솔리드 스테이트 드라이브들은 좋은 선형 어드레스 공간을 갖기보다는, 많은 플래시 칩들과 함께 컨트롤러를 포함한다. 이 플래시 칩들 및 컨트롤러는 다이들 상에서 트랜지스터들의 그룹들 또는 스트링(String)들에 저장될 데이터를 갖는 페이지들로 이루어지는 블록들에서 동작하도록 구성된다. 물리 어드레스 기반의 솔리드 스테이트 드라이브(930)는 저장 매체의 모든 잠재적인 물리 어드레스 양상을 노출하려고 하는데, 이는 (논리 어드레스 기반의 솔리드 스테이트 드라이브(910)에 비해) 매우 빠른 동작들을 가능하게 하지만 매우 복잡한 접근법을 야기한다. 논리 어드레스 기반의 솔리드 스테이트 드라이브(910)는 저장 매체의 잠재적인 세부 양상들을 모두 또는 거의 감추는 스킴(Scheme)을 이용하여 단일의 선형 플랫 맵핑 공간(Linear Flat Mapping Space)을 갖지만, 잠재적인 세부 양상들의 대부분을 감추면서 근본적으로는 데이터를 물리 영역에 저장하려는 것은 (물리 어드레스 기반의 솔리드 스테이트 드라이브(930)에 비해) 시스템을 느려지게 한다.
다중 모드 솔리드 스테이트 드라이브(920)는 플래시 관리 시스템의 동작들을 편리하고 유연하게 구성하고 구현할 수 있게 한다. 다중 모드 솔리드 스테이트 드라이브(920)는 논리 어드레스 공간(923)에 대한 플래시 관리 시스템의 동작들을 주로 다중 모드 솔리드 스테이트 드라이브(920)의 내부 컨트롤러(예컨대, 도 7의 컨트롤러(775))에서 수행할 수 있다. 한편, SUE 어드레스 공간(925)에 대한 플래시 관리 시스템의 동작들은 주로 다중 모드 솔리드 스테이트 드라이브(920)의 외부 컨트롤러(예컨대, 도 7의 컨트롤러(745))에서 시스템 레벨로 수행될 수 있다.
다중 모드 솔리드 스테이트 드라이브(920)의 플래시 관리 시스템의 동작들을 분리 또는 분할하는 능력은 이러한 분리 또는 분할을 허용하지 않는 물리 어드레스 기반의 솔리드 스테이트 드라이브(910) 및 논리 어드레스 기반의 솔리드 스테이트 드라이브(930)에서 이용되는 플래시 관리 시스템의 동작들과는 상이하다. 논리 어드레스 기반의 솔리드 스테이트 드라이브(910)를 위한 플래시 관리 시스템의 동작들은 주로 논리 어드레스 기반의 솔리드 스테이트 드라이브(910)의 내부 컨트롤러에서 수행되고, 물리 어드레스 기반의 솔리드 스테이트 드라이브(930)를 위한 플래시 관리 시스템의 동작들은 주로 물리 어드레스 기반의 솔리드 스테이트 드라이브(930)의 외부 컨트롤러에서 시스템 레벨로 수행된다.
몇몇 실시 예에서, 다중 모드 솔리드 스테이트 드라이브(920)는 잠재 어드레스 공간의 몇몇 특징을 선별적으로 노출할 수 있고, 논리 어드레스 기반의 솔리드 스테이트 드라이브(910) 및 물리 어드레스 기반의 솔리드 스테이트 드라이브(930)는 잠재 어드레스 공간의 몇몇 특징 및 그 외 다른 것들의 선별적인 노출을 가능하게 하지는 않는다. 몇몇 실시 예에서, 잠재적인 양상을 외부 플래시 관리 시스템(예컨대, 도 7의 다중 모드 저장 관리 시스템(720))으로 노출하는 것은 그 잠재적인 양상의 선택된 노출을 맵핑하는 것을 수반할 수 있다.
II. 선별 잠재 노출(SUE) 맵핑
본 발명의 다른 실시 예는 선별 잠재 노출(SUE) 맵핑 스킴을 구현하여, 저장 시스템에서 사용자 데이터를 위해 논리 어드레스 공간으로부터 SUE 어드레스 공간으로의 맵핑을 생성한다. 개별적인 저장 장치 레벨보다는 여러 저장 장치에 걸쳐 시스템 레벨에서 수행될 특정한 저장 매체 관리 기능들을 허용하기 위해, SUE 맵핑 스킴은 잠재 물리 저장 매체의 중요한 특징들을 선별적으로 노출할 수 있다.
예로서, 몇몇 실시 예는 저장 기기에서 여러 NAND 플래시 불휘발성 메모리 장치들에 걸친 사용자 어드레스 공간의 양상들의 선별적인 노출을 가능하게 할 수 있다. SUE 맵핑 스킴의 SUE 페이지들 및 블록들은 물리적인 NAND 플래시 불휘발성 메모리 장치들 각각에서 하나의 단위로서 함께 관리되는 대응하는 물리 페이지들 및 블록들과 정렬될 수 있다. 물리적인 NAND 플래시 불휘발성 메모리 장치들의 개별적인 다이들은 SUE 맵핑 스킴에서는 구별되지 않더라도, SUE 블록 크기에 간접적으로 반영된다.
저장 장치들의 물리 페이지들 및 블록들과 SUE 맵핑 스킴의 SUE 페이지들 및 블록들 사이의 상관관계는 저장 시스템에서 모든 NAND 플래시 불휘발성 메모리 장치들에 걸쳐 시스템 레벨로 조직되고 구현될 특정한 NAND 플래시 관리 기능들(예컨대, 소거, 프로그램, 및 남는 공간의 반환(가비지 콜렉션) 및 관리)을 허용한다. 특정한 저장 매체 관리 기능들의 시스템 레벨의 구현은 저장 자원의 제공(Provision)에 관한 유익한 효율성을 제공할 수 있다.
도 3을 다시 참조하면, NAND 플래시 불휘발성 메모리 장치와 같은 다중 모드 저장 장치(예컨대, 350, 400, 620)는 이 명세서에서 설명되는 SUE 맵핑 스킴을 이용하여 구현될 수 있다. 예로서, 몇몇 실시 예에서, 다중 모드 저장 장치는 NAND 플래시 기반의 솔리드 스테이트 드라이브일 수 있다. 몇몇 실시 예에서, 다중 모드 저장 장치는 표준 디스크 드라이브 폼 팩터(Standard Disk Drive Form Factor)나 표준 메모리 카드 폼 팩터(Standard Memory Card Form Factor)와 같은 표준화된 물리적인 폼 팩터를 따를 수 있다.
도 5를 다시 참조하면, 위에서 설명된 것과 같이, 다중 모드 저장 장치는 많은 NAND 플래시 메모리 셀을 갖는 여러 다이(511, 512, 513, 514, 521, 522, 523, 524, 531, 532, 533, 534, 541, 542, 543, 544) 또는 메모리 칩들을 포함할 수 있다. 각 다이 상의 NAND 플래시 메모리 셀들은, 물리 블록들(515, 517, 519, 528, 539)과 같이, 여러 개별적인 물리 블록으로 더 구분될 수 있다.
소거 및 남는 공간의 관리는 다중 모드 저장 장치의 다이들의 하나 이상의 개별 그룹들 상의 메모리 셀들의 블록들에 대해 수행될 수 있다. 예로서, 다중 모드 저장 장치는 128개의 다이들을 포함할 수 있고, 하나의 그룹 또는 단위로서, 128개의 다이들 중의 하나의 블록에 대해 소거 및 남는 공간의 관리를 수행할 수 있다. 대안적으로, 다중 모드 저장 장치는 128개의 다이들을 포함할 수 있고, 하나의 그룹으로서, 다이들의 부분 집합(예컨대, 32개의 다이들의 그룹) 중의 하나의 블록에 대해 소거 및 남는 공간의 관리를 수행할 수 있다.
도 10은 본 발명의 실시 예에 따른 다중 모드 저장 장치의 사용자 영역에의 저장을 위한 예시적인 SUE 블록 및 대응하는 SUE 페이지를 보여주는 블록도이다.
도 10을 참조하면, SUE 블록(1010)을 형성하는 물리 블록들(1012, 1014, 1016, 1018)의 배열이 나타나 있다. 메모리 셀들의 물리 블록들(1012, 1014, 1016, 1018) 각각은 메모리 셀들의 여러 개별 물리 페이지(예컨대, 1021, 1022, 1023, 1024)로 더 구분된다. SUE 페이지(1030)는 대응하는 SUE 블록(1010)의 물리 블록들(1012, 1014, 1016, 1018)에 대응하는 물리 페이지들(1032, 1034, 1036, 1038)을 포함한다.
몇몇 실시 예에서, 메모리 셀들의 SUE 구성이 다중 모드 저장 장치(예컨대, 350, 400, 620)에서 생성될 수 있다. SUE 페이지들 및 SUE 블록들은 프로그램 및 소거의 단위로서 함께 관리되는, 저장 장치 상의 다이들의 각 그룹에 대해 준비될 수 있다. SUE 블록들은 다중 모드 저장 장치의 다이들의 부분 집합에 포함되는 다이들로부터 각각 하나씩 선택되는 물리 블록들의 메모리 셀들을 포함하도록 정의될 수 있고, 이 물리 블록들은 하나의 단위로서 함께 소거되고 관리될 수 있다. SUE 페이지들은 하나의 SUE 블록의 개별 섹션(Section)들 또는 세그먼트(Segment)들을 포함하도록 정의될 수 있고, 이 개별 섹션들 또는 세그먼트들은 함께 프로그램될 수 있다.
예로서, 몇몇 실시 예에서, 다중 모드 저장 장치는 128개의 다이들을 포함할 수 있고, 각 다이에 포함되는 해당 물리 블록 상의 남는 공간을 함께 소거하고 관리할 수 있다. 대응하는 SUE 블록(1010)은 다중 모드 저장 장치의 128개의 다이들로부터 각각 하나씩 선택되는 128개의 물리 블록들의 메모리 셀들을 포함하도록 정의될 수 있다. 대응하는 SUE 페이지(1030)는 128개의 물리 블록들에 각각 대응하는 128개의 섹션들 또는 세그먼트들을 포함하도록 정의될 수 있다.
예로서, 다른 실시 예에서, 다중 모드 저장 장치는 128개의 다이들을 포함할 수 있고, 한 번에 32개의 다이들의 해당 물리 블록 상의 남는 공간을 함께 소거하고 관리할 수 있다. 대응하는 SUE 블록(1010)은 다중 모드 저장 장치의 32개의 다이들로부터 각각 하나씩 선택되는 32개의 물리 블록들의 메모리 셀들을 포함하도록 정의될 수 있다. 이 경우, 대응하는 SUE 페이지(1030)는 32개의 물리 블록들에 각각 대응하는 32개의 섹션들 또는 세그먼트들을 포함하도록 정의될 수 있다.
또 다른 실시 예에서, 다중 모드 저장 장치는 각각이 4개의 플레인(Plane)들로 나뉘는 128개의 다이들을 포함할 수 있고, 각 다이에 포함되는 각각의 플레인들의 블록들 상의 남는 공간을 관리할 수 있다. 대응하는 SUE 블록(1010)은 메모리 장치에 포함되는 각각의 플레인들의 128개의 블록들의 메모리 셀들을 포함하도록 정의될 수 있다. 이 경우, 대응하는 SUE 페이지(1030)는 각각의 플레인들의 블록들에 대응하는 128개의 섹션들 또는 세그먼트들을 포함하도록 정의될 수 있다.
도 11은 본 발명의 실시 예에 따른 다중 모드 저장 장치의 사용자 영역에의 저장을 위한 사용자 저장 공간의 예시적인 SUE 블록 및 대응하는 SUE 페이지들을 보여주는 블록도이다.
도 11을 참조하면, 사용자 저장 공간의 예시적인 SUE 블록(1110)이 나타나 있다. 몇몇 실시 예에서, SUE 블록(1110)은 가상 블록(Virtual Block)과 유사하게 여겨질 수 있다. SUE 블록(1110)은 개별 저장 장치 레벨에서 메모리 매체를 관리하기 위한 동작의 기본 단위일 수 있다. SUE 블록은 여러 SUE 페이지로 구성될 수 있다. 몇몇 예시적인 구현에서, SUE 페이지들은 가상 페이지들과 유사하게 여겨질 수 있다. 예로서, 도 11에 나타낸 SUE 블록(1110)은 4개의 SUE 페이지들(1121, 1122, 1123, 1124)을 포함할 수 있다.
도 5에 나타낸 것과 같이, SUE 블록의 SUE 페이지로 할당되는 물리적인 메모리 셀들은 하나의 다중 모드 저장 장치(예컨대, 350, 400, 620)에 포함되는 여러 다이에 걸쳐 분포하는 대응하는 물리 페이지들 및 물리 블록들에 위치할 수 있다. 대안적인 실시 예는 다중 모드 저장 장치의 물리적인 소거 블록 크기와 프로그램 가능한 물리 페이지 크기 사이의 관계에 기초하여 어떤 개수의 페이지들로 분할되는 블록들을 포함할 수 있다.
도 12는 본 발명의 실시 예에 따른 다중 모드 저장 장치의 사용자 영역에의 저장을 위한 예시적인 SUE 메타 페이지 및 대응하는 SUE 페이지들을 보여주는 블록도이다.
도 12를 참조하면, 예시적인 메타 페이지(Metapage)(1210)가 나타나 있다. 메타 페이지(1210)는 저장 시스템에서 여러 저장 장치에 걸쳐 여러 SUE 페이지로 구성될 수 있다. 예로서, 도 12에 나타낸 메타 페이지(1210)는 5개의 SUE 페이지들(1211, 1212, 1213, 1214, 1215)을 포함할 수 있다. 대안적인 실시 예는 저장 시스템의 개별적인 다중 모드 저장 장치들의 개수 및 다중 모드 저장 장치들 각각에서 하나의 단위로서 함께 관리되는 다이들의 개수에 기초하여 어떤 개수의 SUE 페이지들로 분할되는 메타 페이지들을 포함할 수 있다.
각 SUE 페이지로 할당되는 물리적인 메모리 셀들은 개별적인 다중 모드 저장 장치(예컨대, 350, 400, 620)에 위치할 수 있다. 메타 페이지(1210)를 형성하는 여러 SUE 페이지(1211, 1212, 1213, 1214, 1215)로 할당되는 메모리 셀들은 저장 시스템(예컨대, 저장 기기)과 관련되는 여러 저장 장치(예컨대, 620, 630, 640, 650)에 위치할 수 있다.
따라서, SUE 페이지들(1121, 1122, 1123, 1124)의 크기 또는 폭(Width)은 각 다중 모드 저장 장치에서 하나의 단위로서 함께 관리되는 다이들의 개수에 대응할 수 있는 반면, 메타 페이지(1210)의 크기 또는 폭은 저장 시스템에 포함되는 다중 모드 저장 장치들의 개수에 대응할 수 있다.
도 13은 본 발명의 실시 예에 따른 다중 모드 저장 장치의 사용자 영역에의 저장을 위한 예시적인 SUE 메타 블록 및 대응하는 SUE 메타 페이지들을 보여주는 블록도이다.
도 13을 참조하면, 예시적인 메타 블록(Metablock)(1310)이 나타나 있다. 메타 블록(1310)은 여러 메타 페이지(1311, 1312, 1313, 1314)로 구성될 수 있다. 메타 페이지(1210)와 함께 참조하면, 메타 블록(1310)으로 할당되는 물리적인 메모리 셀들은 저장 시스템과 관련되는 여러 저장 장치에 위치할 수 있다. 즉, 메타 블록(1310)은 저장 시스템에 포함되는 다중 모드 저장 장치들(예컨대, 620, 630, 640, 650) 각각에서, 하나의 단위로서 함께 관리되는 다이들의 대응하는 부분 집합들에 포함되는 각 다이로부터 선택되는 해당 블록을 포함할 수 있다. 따라서, 메타 블록(1310)의 크기는 각 다중 모드 저장 장치(예컨대, 350, 400, 620)에서 함께 관리되는 다이들의 개수, 및 저장 시스템에 포함되는 다중 모드 저장 장치들(620, 630, 640, 650)의 개수에 대응할 수 있다.
도 14는 본 발명의 실시 예에 따른 다중 모드 저장 장치의 사용자 영역에의 저장을 위한 다른 예시적인 SUE 메타 블록 및 대응하는 SUE 블록들을 보여주는 블록도이다.
도 14를 참조하면, 예시적인 메타 블록(1410)이 여러 SUE 블록(예컨대, 1110)으로 구성되는 것으로 나타나 있다. 메타 블록(1410)은 저장 시스템에 포함되는 다중 모드 저장 장치들(예컨대, 620, 630, 640, 650) 각각에서 함께 관리되는 다이들의 각 부분 집합으로부터 선택되는 각각의 SUE 블록들(1411, 1412, 1413, 1414, 1415)의 결합일 수 있다. 유사하게, 메타 페이지(1210)는 메타 블록(1410)에서 대응하는 SUE 블록들(1411, 1412, 1413, 1414, 1415) 각각으로부터 선택되는 대응하는 SUE 페이지들(예컨대, 1211, 1212, 1213, 1214, 1215)의 결합일 수 있다.
몇몇 실시 예에서, 특정 메모리 매체 관리 기능들(예컨대, 소거, 프로그램, 남는 공간의 반환(가비지 콜렉션) 및 관리 등)은 메타 블록 레벨에서 수행될 수 있다. 즉, 이 메모리 매체 관리 기능들은 개별적인 저장 장치 레벨 대신, 저장 시스템 레벨에서 제공될 수 있다.
원하는 시스템 레벨의 메모리 관리를 가능하게 하기 위해, 사용자 데이터에 할애되고 어플리케이션들 및 버추얼 머신 운영 체제(Virtual Machine Operating System)들에 의해 다루어지는 논리 어드레스 공간이 SUE 어드레스 공간으로 맵핑될 수 있다. 따라서, 저장 시스템에 포함되는 다중 모드 저장 장치들의 사용자 영역은 잠재 노출 인터페이스를 통해 다루어질 수 있다. 시스템 레벨의 메모리 맵핑 및 관리는 쓰기 증폭 인자를 낮출 수 있고, 이는 저장 영역의 제공을 줄여 비용 감소를 가능하게 한다.
도 15는 본 발명의 실시 예에 따라 논리 어드레스로부터 SUE 어드레스로의 어드레스 맵핑을 제공하기 위해 다중 모드 저장 시스템에 의해 구현될 수 있는 예시적인 SUE 맵핑 스킴을 보여주는 개념도이다.
도 15를 참조하면, SUE 맵핑 스킴(1500)이 나타나 있다. SUE 맵핑 스킴(1500)은 도 6의 다중 모드 저장 관리 시스템(610)과 같은 저장 시스템에 의해 구현되어, 본 발명의 실시 예에 따라 논리 어드레스로부터 SUE 어드레스로의 어드레스 맵핑을 제공할 수 있다. SUE 맵핑 스킴(1500)은 논리 어드레스 공간을 SUE 어드레스 공간과 관련시킬 수 있다. SUE 어드레스 공간은 잠재 물리 저장 매체의 중요한 특징들을 드러낼 수 있다. SUE 어드레스 공간은 저장 시스템에 포함되는 여러 저장 장치의 결합된 물리적인 저장 공간을 다루기 위해 이용될 수 있다.
사용자 데이터(1502)는, 예로서, 호스트 어플리케이션들 및 버추얼 머신 운영 체제들로부터 입력으로서 수신될 수 있다. 호스트 사용자 데이터는 원래의 호스트 파일 시스템, 인터페이스 표준 등과 관련되는 논리 블록 크기(예컨대, 512킬로바이트 크기의 정보)에 대응하는 저장 단위들(예컨대, 논리 어드레스 기반의 블록들 또는 논리 블록들)로 조직될 수 있다. 수신된 사용자 데이터의 각 논리 블록은 논리 블록 어드레스(LBA)에 의해 다루어질 수 있다. 예로서, 몇몇 실시 예에서, 입력된 논리 블록의 어드레싱 동작은 ANSI(American National Standards Institute)에 의해 배포된 SCSI(Small Computer System Interface) 표준과 관련되어 다루어질 수 있다.
사용자 데이터(1502)의 논리 어드레스 기반의 블록들은 SUE 어드레스를 갖는(SUE Addressable) 단위들(또는, 하이브리드 맵핑 시스템(Hybrid Mapping System)의 맵핑 블록들)로 결합될 수 있다. 몇몇 실시 예에서, 어떤 개수(Integral Number)의 논리 블록들이 SUE 어드레스를 갖는 하나의 단위를 형성하기 위해 모일 수 있다. 예로서, 도 15에서, 8개의 논리 블록들이 SUE 어드레스를 갖는 단위를 형성하기 위해 결합될 수 있다. 대안적인 실시 예에서, SUE 어드레스를 갖는 하나의 단위를 형성하기 위해 정수 개(Whole Number) 또는 실수 개(Fractional Number)의 논리 블록들이 결합될 수 있다.
몇몇 실시 예에서, SUE 어드레스를 갖는 단위는 저장 시스템을 위한 맵핑의 최소 그래뉼래러티를 가질 수 있다. 다양한 실시 예에서, SUE 어드레스를 갖는 단위는 4킬로바이트, 8킬로바이트, 또는 그 외 다른 적당한 크기를 가질 수 있다.
몇몇 실시 예에서, 저장 시스템은 일련의 볼륨(Volume)들을 포함할 수 있다. 각 볼륨은 SUE 어드레스를 갖는 일련의 단위들을 포함할 수 있고, SUE 어드레스를 갖는 각 단위는 일련의 논리 단위들을 포함할 수 있다. 상이한 볼륨들은 각각 상이한 SUE 어드레스를 갖는 단위의 크기들을 가질 수 있다. 볼륨은 많은 특성을 가질 수 있음이 이해될 것이다. 볼륨은 어플리케이션, 단일의 사용자 레벨 파일 시스템, 논리적인 드라이브, 네임스페이스(Namespace, 예컨대, 주어진 네임스페이스와 관련되는 인접하는 논리 어드레스들의 집합), LUN(Logical Unit Number) 등에 대응할 수 있다.
도시된 예시적인 구현에서, 논리 블록 어드레스들(1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528)에 의해 다루어지는 논리 어드레스 기반의 블록들(1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538)은 SUE 어드레스를 갖는 단위(1503)로 결합될 수 있고, 논리 블록 어드레스들(1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548)에 의해 다루어지는 논리 어드레스 기반의 블록들(1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558)은 SUE 어드레스를 갖는 단위(1504)로 결합될 수 있고, 논리 블록 어드레스들(1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578)에 의해 다루어지는 논리 어드레스 기반의 블록들(1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588)은 SUE 어드레스를 갖는 단위(1505)로 결합될 수 있다. 논리 블록은 어드레스를 갖는 단위로 이어질 수 있다. 어드레스를 갖는 단위마다 여러 블록들이 포함될 수 있다.
옵션(Option)으로서, SUE 어드레스를 갖는 단위들(예컨대, 1503, 1504, 1505)의 사용자 데이터(1502)에 대해 데이터 압축 알고리즘이 수행될 수 있고, 이에 따라 SUE 어드레스를 갖는 압축된 단위들(예컨대, 1507, 1508, 1509)이 생성될 수 있다. SUE 어드레스를 갖는 압축된 단위들(예컨대, 1507, 1508, 1509)에 각각 대응하여 헤더(Header) 섹션들(예컨대, 1511, 1512, 1513)이 생성될 수 있다. 헤더 섹션은, 예로서, 반환 및 데이터 복구 활동들에 이용되는 정보를 포함할 수 있다.
SUE 어드레스를 갖는 압축된 단위들 및 헤더 섹션들은 저장 장치 전송 블록들(또는, 솔리드 스테이트 드라이브 전송 블록들(1515, 1517))에 위치할 수 있다. 도시된 예시에서, 헤더 섹션들(1511, 1512, 1513) 및 이에 대응하는 SUE 어드레스를 갖는 압축된 단위들(1507, 1508, 1509)이 솔리드 스테이트 드라이브 전송 블록들(1515, 1517)에 포함될 수 있다. 몇몇 실시 예에서, SUE 어드레스를 갖는 압축된 단위들은 물론, 사용자 데이터(1502)에 포함되는 논리 블록들 역시, 둘 이상의 저장 장치 전송 블록들에 걸쳐 위치할 수 있다.
몇몇 개수(Integral Number)의 저장 장치 전송 블록들이 다중 모드 저장 장치로의 전송을 위해 SUE 페이지들(1591, 1592, 1593, 1594)에 맞추어 정렬될 수 있다. 몇몇 실시 예에서, SUE 어드레스를 갖는 압축된 단위들은 물론, 사용자 데이터(1502)에 포함되는 논리 블록들 역시, 둘 이상의 SUE 페이지들(1591, 1592, 1593, 1594)에 걸쳐 위치할 수 있다.
몇몇 실시 예에서, ECC 등을 이용하여 사용자 데이터(1502)에 대해 수행되는 오류 정정이 시스템 레벨에서는 구현되지 않을 수 있다. 다만, 오류 정정은 개별적인 다중 모드 저장 장치들에 의해 구현될 수 있다.
사용자 데이터와 관련되는 메타데이터는 다중 모드 저장 장치(예컨대, 350, 400, 620)의 논리 어드레스 기반의 시스템 영역에 저장될 수 있다. 예로서, 몇몇 실시 예에서, 논리 블록의 어드레싱 동작을 이용하여 관리되는 다중 모드 저장 장치의 메모리 셀들의 일부분은 맵 테이블(Map Table)을 저장할 수 있다. 맵 테이블은 SUE 어드레스를 갖는 단위들을 SUE 어드레스 공간으로 맵핑할 수 있다. 예로서, 맵 테이블은 포인터(Pointer)들을 저장할 수 있고, 포인터들 각각은 SUE 어드레스를 갖는 개별적인 단위를 가리킬 수 있다. 따라서, SUE 어드레스 공간에서, 사용자 데이터의 논리 블록들의 대응하는 저장 위치들은 SUE 어드레스를 갖는 단위들의 맵핑, 및 논리 블록들 및 SUE 어드레스를 갖는 단위들의 대응하는 오프셋(Offset)들을 이용하여 판별될 수 있다.
몇몇 실시 예에서, 볼륨(예컨대, 671, 672, 673)에 정보가 저장될 수 있다. 여러 볼륨들 또는 네임스페이스들이 있을 수 있고, 상이한 볼륨들 또는 네임스페이스들은 상이한 크기의 SUE 어드레스를 갖는 단위들과 관련될 수 있다. 상이한 크기의 볼륨들 또는 네임스페이스들이 동일한 크기의 SUE 어드레스를 갖는 단위들과 관련될 수도 있음이 이해될 것이다.
도 16은 도 15의 SUE 맵핑 스킴을 구현할 수 있는 예시적인 저장 시스템을 보여주는 블록도이다. 도 16을 참조하면, 예시적인 저장 시스템(1602)은 프로세서(1604), 메모리(1606), 네트워크 인터페이스(1608), 입출력 장치(1610), 표시 장치(1612), 버스(1614), 및 여러 불휘발성 메모리 장치(1616)를 포함할 수 있다. 저장 장치(1602)의 다양한 구성 요소들은 로컬 데이터 링크(Local Data Link)들(1618)에 의해 연결될 수 있다. 로컬 데이터 링크들(1618)은, 예로서, 어드레스 버스, 데이터 버스, 직렬 버스, 병렬 버스, 또는 이것들의 어떤 조합을 포함할 수 있다.
프로세서(1604)는 저장 시스템(1602)을 제어하는 데에 적합한 범용 프로세서 또는 어플리케이션 특정 디지털 프로세서(Application Specific Digital Processor)를 포함할 수 있다. 메모리(1606)는 프로세서(1604)에 의해 액세스될 수 있는 데이터 및 명령어(Instruction)들을 저장하는 데에 적합한 디지털 메모리 장치를 포함할 수 있다.
네트워크 인터페이스(1608)는 저장 시스템(1602)을 통신 네트워크(예컨대, LAN(Local Area Network), IP(Internet Protocol) 네트워크 등)로 통신 연결하는 데에 적합한 네트워크 인터페이스를 포함할 수 있다. 네트워크 인터페이스(1608)는 저장 네트워크 표준(예컨대, iSCSI(Internet Small Computer System Interface) 프로토콜)을 구현할 수 있다.
입출력 장치(1610)는 저장 시스템(1602)에서 디지털 정보를 송수신하는 데에 적합한 장치를 포함할 수 있다. 표시 장치(1612)는 문자 또는 GUI(Graphical User Interface)를 표시하는 데에 적합한 장치를 포함할 수 있다.
버스(1614)는, 예로서, PCIe(Peripheral Component Interconnect Express) 버스나 저장 시스템의 통신을 위해 이용될 수 있는 그 외 어떠한 고속 직렬 확장 버스라도 포함할 수 있다. 버스(1614)는 저장 시스템(1602)의 저장 장치들(예컨대, 불휘발성 메모리 장치들(1616))로의 액세스를 위해, NVMe(Nonvolatile Memory Express) 또는 NVMHCI(Nonvolatile Memory Host-Controller Interface)의 표준을 활용할 수 있다. 불휘발성 메모리 장치들(1616)은, 예로서, NAND 플래시 기반의 솔리드 스테이트 드라이브들이나 그 외 어떠한 적합한 불휘발성 메모리 장치를 포함할 수 있다.
대안적인 실시 예에서, 범용 컴퓨팅 장치가 도 15의 SUE 맵핑 스킴(1500)의 기능들을 구현할 수 있다. 예로서, 범용 컴퓨팅 장치는 서버, 워크스테이션, 개인용 컴퓨터 등을 포함할 수 있다.
불휘발성 메모리 장치들(1616)과 같이 컴퓨터로 읽을 수 있는 매체에 저장되는 프로그램 코드(예컨대, 소스 코드(Source Code), 오브젝트 코드(Object Code), 실행 가능한 코드(Executable Code) 등)는 워킹 메모리 또는 연산 메모리(예컨대, 메모리(1606))로 로드(Load)되어, 도 15의 SUE 맵핑 스킴(1500)의 기능들을 수행하기 위해 프로세서(1604)에 의해 실행될 수 있다. 대안적인 실시 예에서, 실행 가능한 명령어들이 펌웨어 형태로 저장되거나, 위 기능들이 특수 목적 하드웨어에 의해 수행될 수 있다.
도 17은 본 발명의 실시 예에 따라 논리 어드레스 공간을 SUE 어드레스 공간으로 맵핑하는 예시적인 방법을 설명하는 흐름도이다. 예로서, 도 17의 예시적인 방법은 저장 시스템에 포함되는 여러 저장 장치들의 결합 물리 저장 공간을 다루기 위해 논리 어드레스 공간을 SUE 어드레스 공간으로 맵핑하는 SUE 맵핑 스킴을 구현할 수 있는 도 16의 저장 시스템(1602)에 의해 수행될 수 있다.
S1702 동작에서, 예로서, 호스트 어플리케이션 또는 버추얼 머신 운영 체제로부터 사용자 데이터가 수신되면서 도 17의 방법이 시작될 수 있다. 수신된 사용자 데이터는 논리 블록들로 구성되어 논리 블록 어드레스들로 다루어질 수 있다. 논리 블록들은 원래의 호스트 파일 시스템, 데이터베이스 등과 관련되어, 어드레스를 갖는 메모리 단위의 최소 크기에 대응할 수 있다.
S1704 동작에서, 위에서 설명된 것과 같이, 논리 블록들이 SUE 어드레스를 갖는 단위들로 결합될 수 있다. 예로서, 몇몇 개수(Integral Number)의 논리 블록들이 SUE 어드레스를 갖는 각 단위를 형성하기 위해 모일 수 있다. S1706 동작에서, 위에서 설명된 것과 같이, 옵션으로서, SUE 어드레스를 갖는 단위들의 사용자 데이터에 대해 데이터 압축 알고리즘이 수행될 수 있다. (도 17에서 점선으로 표시된 동작은 옵션이다.)
S1708 동작에서, 헤더 섹션이 생성되어 SUE 어드레스를 갖는 각 단위에 덧붙여질 수 있다. 위에서 설명된 것과 같이, 예로서, 헤더 섹션은 반환 및 데이터 복구 활동들에 이용하기 위한 정보를 포함할 수 있다. S1710 동작에서, 위에서 설명된 것과 같이, SUE 어드레스를 갖는 압축된 단위들 및 헤더 섹션들이 저장 장치 전송 블록들에 배치될 수 있다.
위에서 설명된 것과 같이, S1712 동작에서, 몇몇 개수(Integral Number)의 저장 장치 전송 블록들이 결합되어 SUE 페이지에 맞게 정렬될 수 있다. S1714 동작에서, SUE 페이지에 대응하는 저장 장치 전송 블록들이 다중 모드 저장 장치로 전송되어, 사용자 영역에 저장될 수 있다. S1716 동작에서, SUE 페이지의 사용자 데이터에 관한 메타데이터가 다중 모드 저장 장치로 전송되어, 위에서 설명된 것과 같이, 시스템 영역에 저장될 수 있다.
III. 다중 모드 저장 관리 시스템
도 18은 저장 시스템(예컨대, 도 16의 저장 시스템(1602))이 본 발명의 실시 예에 따라 저장 장치에서 논리 및 SUE 저장 공간들을 다룰 수 있게 하기 위해 SUE 어드레스 스킴을 채용한 예시적인 다중 모드 저장 관리 시스템을 보여주는 블록도이다. 다중 모드 저장 관리 시스템(1802)은 SUE 저장 관리기(1804), 논리 저장 관리기(1806), 반환 관리기(1808), 및 저장 어레이(Array) 관리기(1810)를 포함할 수 있다.
SUE 저장 관리기(1804)는 사용자 데이터 저장 맵핑, 읽기 및 쓰기 기능들을 제공할 수 있다. SUE 저장 관리기(1804)는 SUE 어드레스 맵핑 스킴을 이용하여, 사용자 데이터를 저장 시스템의 사용자 영역으로 맵핑할 수 있다. SUE 저장 관리기(1804)는 저장 시스템의 저장 장치들로의 SUE 인터페이스를 통하여, 사용자 영역에 저장된 사용자 데이터로 액세스할 수 있다.
SUE 맵핑 스킴은 저장 시스템과 저장 장치들 사이에서, 논리 블록 어드레스로부터 물리 어드레스로의 맵핑 기능을 분배할 수 있다. 즉, SUE 맵핑 스킴은 논리 블록 어드레스들로부터 SUE 어드레스들로의 저장 시스템 레벨의 맵핑 또는 가상화(Virtualization)와, SUE 어드레스들로부터 물리 어드레스들로의 저장 장치 수준의 맵핑 또는 변환을 결합할 수 있다.
SUE 맵핑 스킴은 저장 장치들의 특정한 물리적인 특징들 또는 대표 기하 구조를 저장 시스템으로 노출할 수 있고, 사용자 데이터에 관한 특정한 불휘발성 메모리 관리 기능들이 개별적인 저장 장치 레벨보다는 여러 저장 장치에 걸쳐 저장 시스템 레벨에서 수행되게 할 수 있다. 이와 같이, 개별적인 저장 장치 레벨로부터 저장 시스템 레벨로 사용자 데이터 관리 작업들을 재분배하는 것은 쓰기 증폭 인자의 감소를 포함하여 시스템 효율성을 향상시켜, 자원 제공을 줄이고 비용 감소를 가능하게 한다.
논리 저장 관리기(1806)는 시스템 데이터 저장 맵핑, 읽기 및 쓰기 기능들을 제공할 수 있다. 논리 저장 관리기(1806)는 논리 블록 어드레스(LBA)와 같은 논리 어드레스 맵핑 스킴을 이용하여, 시스템 데이터를 저장 장치의 시스템 영역으로 맵핑할 수 있다. 논리 저장 관리기(1806)는 저장 장치로의 논리 인터페이스를 통하여, 시스템 영역에 저장된 시스템 데이터로 액세스할 수 있다.
따라서, 몇몇 실시 예에서, 관련된 저장 장치 또는 관련된 여러 저장 장치 각각의 메모리 영역은, 논리 어드레스 기반의 시스템 영역 및 SUE 어드레스 기반의 사용자 영역을 포함하여, 별개의 저장 영역들 또는 어드레스 영역들로 더 나뉘거나 분할될 수 있다. 저장 장치들은 두 개의 호스트 인터페이스들을 포함할 수 있다. 하나는 논리 어드레스 기반의 시스템 영역으로의 액세스를 제공할 수 있는 논리 호스트 인터페이스이고, 다른 하나는 SUE 어드레스 기반의 사용자 영역으로의 액세스를 제공할 수 있는 SUE 호스트 인터페이스이다. 시스템 데이터에 관한 불휘발성 메모리 관리 기능들은 개별적인 저장 장치 컨트롤러들에 의해 수행될 수 있다.
반환 관리기(1808)는 사용자 데이터에 관하여 저장 시스템 레벨에서 제공되는 불휘발성 메모리 관리 기능들을 제공할 수 있는데, 이 불휘발성 메모리 관리 기능들은 남는 공간의 관리 및 반환, 또는 가비지 콜렉션을 포함할 수 있다. 따라서, 저장 시스템에 포함되는 개별적인 저장 장치들은 사용자 데이터를 위한 로컬 반환(가비지 콜렉션)을 수행하지 않을 수 있다. 반환 관리기(1808)는 다양한 남는 공간의 관리 및 반환 방법들을 구현할 수 있다. 몇몇 실시 예에서, 반환 관리기(1808)는 이 명세서에서 설명되는 새로운 남는 공간의 관리 및 반환 방법들을 수행할 수도 있다.
저장 어레이 관리기(1810), 또는 RAID(Redundant Array of Independent Disks) 관리기는 저장 시스템에 포함되는 여러 저장 장치들의 어레이를 위한 저장 관리를 제공할 수 있는데, 이 저장 관리는 사용자 데이터에 관한 데이터 복구 기능들을 포함할 수 있다. 따라서, 저장 시스템에 포함되는 개별적인 저장 장치들은 사용자 데이터를 위한 다이 레벨의 RAID 기능들을 수행하지 않을 수 있다. 저장 어레이 관리기(1810)는 다양한 저장 관리 및 데이터 복구 방법들을 구현할 수 있다. 몇몇 실시 예에서, 저장 어레이 관리기(1810)는 이 명세서에서 설명되는 새로운 저장 관리 및 데이터 복구 방법들을 수행할 수 있다.
도 19는 저장 시스템(예컨대, 도 16의 저장 시스템(1602))이 본 발명의 실시 예에 따라 저장 장치에서 논리 및 SUE 저장 공간들을 다룰 수 있게 하기 위해 SUE 어드레스 스킴을 채용한 다른 예시적인 다중 모드 저장 관리 시스템을 보여주는 블록도이다. 다중 모드 저장 관리 시스템(1902)은 데이터 정렬기(1904), SUE 저장 액세스 관리기(1906), 데이터 압축 관리기(1908), 볼륨 맵핑 엔진(1910), 버퍼 관리기(1912), 메타 블록 관리기(1914), 반환 관리기(1916), 저장 어레이 관리기(1918), 및 논리 저장 액세스 관리기(1920)를 포함할 수 있다.
데이터 정렬기(1904)는 논리 어드레스 기반의 매체 액세스 커맨드들(예컨대, 읽기 커맨드, 쓰기 커맨드, 맵핑 해제(Unmapping) 커맨드 등)을 SCSI 타겟으로부터 수신할 수 있다. 이 커맨드들은 논리 블록 어드레스(LBA) 방식을 채용할 수 있고, SCSI의 메모리 위치 추출 기준은 메모리 블록들이 정수 지표(Integer Index)에 의해 지시되는 선형 어드레스 스킴에 기초를 둘 수 있다. 논리 블록 어드레스 방식에서, 단일 정수 기반의 어드레스가 데이터의 각 논리 블록의 시작을 식별하기 위해 이용되고, 각 선형 기반 어드레스는 단일 논리 블록과 고유하게 관련된다. 따라서, 논리 블록 어드레스 방식은 저장 장치의 세부적인 사항들 또는 특징들을 운영 체제, 파일 시스템, 장치 드라이버들 및 호스트 어플리케이션들로부터 숨기거나 감출 수 있다.
쓰기 동작들 동안, 데이터 정렬기(1904)는 SCSI 타겟(Target)으로부터 수신되는 데이터의 논리 블록들을 SUE 맵핑 블록들로 결합할 수 있다. 예로서, 몇몇 실시 예에서, 몇몇 개(Integral Number)의 논리 블록들이 하나의 SUE 맵핑 블록을 형성하기 위해 모일 수 있다. 옵션으로서, 데이터 압축 관리기(1908)는 SUE 맵핑 블록들의 사용자 데이터에 대해 데이터 압축 알고리즘을 수행할 수 있다.
읽기 동작들 동안, 데이터 정렬기(1904)는 읽기 커맨드를 SCSI 타겟으로부터 수신하고, 읽기 요청을 SUE 저장 액세스 관리기(1906)로 전달할 수 있다. 데이터 정렬기(1904)는 요청된 사용자 데이터를 SUE 저장 액세스 관리기(1906)로부터 수신하고, 요청된 사용자 데이터를 SCSI 타겟으로 전달할 수 있다.
SUE 저장 액세스 관리기(1906)는 사용자 데이터 읽기 및 쓰기 기능들을 제공할 수 있다. 쓰기 동작들 동안, SUE 저장 액세스 관리기(1906)는 각 SUE 맵핑 블록에 대해 헤더 섹션을 생성할 수 있다. 헤더 섹션은, 예로서, 반환 및 데이터 복구 활동들에 이용될 수 있는 정보를 포함할 수 있다. SUE 저장 액세스 관리기(1906)는 압축된 SUE 맵핑 블록들과 이에 대응하는 헤더 섹션들을 함께 저장 장치 전송 블록들에 위치시킬 수 있다. 몇몇 실시 예에서, 압축된 SUE 맵핑 블록들은 물론, 사용자 데이터에 포함되는 논리 블록들 역시, 둘 이상의 저장 장치 전송 블록들에 걸쳐 위치할 수 있다.
SUE 저장 액세스 관리기(1906)는 몇몇 개(Integral Number)의 저장 장치 전송 블록들을, 저장 장치로의 전송을 위한 SUE 페이지로 정렬할 수 있다. SUE 저장 액세스 관리기(1906)는 SUE 페이지에 대응하는 저장 장치 전송 블록들을 쓰기 버퍼로 전송할 수 있다.
몇몇 실시 예에서, 압축된 SUE 맵핑 블록들은 물론, 사용자 데이터에 포함되는 논리 블록들 역시, 둘 이상의 SUE 페이지들에 걸쳐 위치할 수 있다. 각 SUE 페이지는 저장 시스템의 개별적인 저장 장치에 대응할 수 있다. SUE 페이지는 SUE 맵핑 스킴에서 프로그램 또는 쓰기 동작들의 기본 단위일 수 있다.
읽기 동작들 동안, SUE 저장 액세스 관리기(1906)는 요청된 사용자 데이터의 위치를 판별할 수 있고, 요청된 사용자 데이터가 관련 저장 장치(들)로부터 읽히도록 읽기 버퍼에 요청할 수 있다. SUE 저장 액세스 관리기(1906)는 사용자 데이터를 읽기 버퍼로부터 데이터 정렬기(1904)로 전송할 수 있다.
데이터 압축 관리기(1908)는 SUE 어드레스 스킴의 하위 기능으로서 또는 SUE 어드레스 스킴에 상호보완적인 기능으로서, 사용자 데이터에 대해 압축 알고리즘을 수행할 수 있다. 데이터 압축 관리기(1908)에 의해 수행되는 데이터 압축 기능은 오프셋이 내재하는 시스템에서 쓰기 증폭을 야기하는 요인들을 해소하는 데에 도움이 될 수 있다.
볼륨 맵핑 엔진(1910)은 SUE 어드레스 맵핑 기능들을 조정할 수 있다. 볼륨 맵핑 엔진(1910)은 사용자 데이터의 현재 위치를 기록하는 사용자 영역 맵 테이블을 유지할 수 있다. 사용자 영역 맵 테이블은 논리 블록 어드레스들을 저장된 사용자 데이터의 SUE 어드레스들과 연관시키는 맵핑 정보를 포함할 수 있다. 사용자 영역 맵 테이블은 관련 저장 장치(들)의 논리 어드레스 기반의 시스템 영역에 저장될 수 있다.
쓰기 동작들 동안, 볼륨 맵핑 엔진(1910)은 기록된 사용자 데이터에 대하여 SUE 저장 액세스 관리기(1906)로부터 수신된 새로운 또는 변경된 SUE 어드레스 위치(들)에 기초하여, 사용자 영역 맵 테이블을 갱신할 수 있다.
읽기 동작들 동안, 볼륨 맵핑 엔진(1910)은 요청된 논리 블록 어드레스(들)에 기초하여, 요청된 사용자 데이터의 SUE 어드레스 위치(들)를 사용자 영역 맵 테이블에서 검색할 수 있다. 볼륨 맵핑 엔진(1910)은 SUE 어드레스 위치(들)를 SUE 저장 액세스 관리기(1906)로 제공할 수 있다.
볼륨 맵핑 엔진(1910)은 사용자 데이터를 SUE 페이지들, SUE 블록들, 메타 페이지들 및 메타 블록들로 구성할 수 있다. SUE 블록은 여러 물리 블록들을 개별적인 저장 장치로 맵핑할 수 있다. 몇몇 실시 예에서, 동일한 SUE 블록으로 맵핑되는 물리 블록들은 저장 장치의 별개의 다이들 상에 각각 위치할 수 있다. 동일한 SUE 블록으로 맵핑되는 모든 물리 블록들은 저장 장치 레벨에서 하나의 단위로서 소거되고 관리될 수 있다. 따라서, SUE 블록은 남는 공간의 반환 및 관리에 대하여 각각의 다이들 상에서 함께 관리되는 물리 블록들의 그룹에 대응할 수 있다. 동일하게, 하나의 SUE 블록에 대응하는 다이들 상의 각각의 물리 블록들의 그룹은 저장 매체의 하나의 단위로서 관리될 수 있다.
각 SUE 블록은 여러 SUE 페이지를 포함할 수 있고, 이 SUE 페이지들 각각은 SUE 블록으로 맵핑되는 해당 물리 블록의 물리 페이지로 정렬될 수 있다. 저장 시스템에 포함되는 모든 저장 장치에 걸쳐 위치하는 각각의 SUE 블록들의 대응하는 SUE 페이지들은 메타 페이지로 맵핑될 수 있다. 유사하게, 저장 시스템에 포함되는 모든 저장 장치에 걸쳐 위치하는 대응하는 SUE 블록들은 메타 블록으로 맵핑될 수 있다.
다중 모드 저장 관리 시스템(1902)의 레벨에서의 저장 매체 관리 기능들(예컨대, 남는 공간의 반환 및 관리)은 사용자 데이터의 메타 블록들에 대해 수행될 수 있다. 따라서, 다중 모드 저장 관리 시스템(1902)의 레벨에서의 저장 매체 관리 기능들은 저장 시스템에 포함되는 각 저장 장치에서 함께 관리되는 해당 물리 블록들의 그룹들에 대해 수행될 수 있다.
프로그램 동작들 및 읽기 동작들은 사용자 데이터의 메타 페이지들에 대해 수행될 수 있다. 따라서, 프로그램 동작들 및 읽기 동작들은 저장 시스템에 포함되는 각 불휘발성 메모리 장치에서 함께 관리되는 해당 물리 페이지들의 그룹들에 대해 수행될 수 있다.
따라서, 저장 시스템에 포함되는 저장 장치들은 물리적인 저장 영역의 중요한 구성 또는 대표 기하 구조를 다중 모드 저장 관리 시스템(1902)에게 노출하는 방식으로 가상화될 수 있다. 단일의 저장 장치에 포함되는 각각의 다이들 상에서 함께 관리되는 물리 블록들의 그룹들은 다중 모드 저장 관리 시스템(1902)으로 SUE 블록들로서 제공될 수 있고, 그리고 저장 시스템에 포함되는 모든 저장 장치에 걸쳐 위치하는 각각의 다이들 상에서 함께 관리되는 물리 블록들의 해당 그룹들은 다중 모드 저장 관리 시스템(1902)으로 메타 블록들로서 제공될 수 있다.
유사하게, 단일의 저장 장치에 포함되는 각각의 다이들 상에서 함께 프로그램되는 물리 페이지들의 그룹들은 다중 모드 저장 관리 시스템(1902)으로 SUE 페이지들로서 제공될 수 있고, 그리고 저장 시스템에 포함되는 모든 저장 장치에 걸쳐 위치하는 각각의 다이들 상에서 함께 프로그램되는 물리 페이지들의 그룹들은 다중 모드 저장 관리 시스템(1902)으로 메타 페이지들로서 제공될 수 있다.
버퍼 관리기(1912)는 읽기 및 쓰기 버퍼들의 풀(Pool)을 관리할 수 있다. 쓰기 동작들 동안, 사용자 데이터가 저장 어레이 관리기(1918)를 거쳐 개별적인 저장 장치들로 SUE 페이지들로서 따로따로 보내지기 전에 사용자 데이터의 완전한 메타 페이지가 거의 누적될 때까지, 버퍼 관리기(1912)는 SUE 저장 액세스 관리기(1906)로부터 수신된 저장 장치 전송 블록들을 쓰기 버퍼들에 누적시킬 수 있다.
읽기 동작들 동안, 버퍼 관리기(1912)는 읽기 캐시(Cache) 기능을 지원하기 위해 읽기 버퍼들을 제공할 수 있다. 저장 어레이 관리기(1918)로부터 저장 장치 전송 블록들로서 수신되는 사용자 데이터의 SUE 페이지들은 SUE 저장 액세스 관리기(1906)로 전달될 때까지 읽기 버퍼들에 저장될 수 있다.
메타 블록 관리기(1914)는 저장 장치들의 사용자 영역에서 정의되는 개별적인 메타 블록들의 현재 상태(예컨대, 소거됨, 활성화됨(Actice), 닫힘(Closed), 반환, 또는 소거 중)를 계속 파악하고 관리할 수 있다. 현재 상태들은 메타 블록 정보 테이블에 저장될 수 있는데, 메타 블록 정보 테이블은 메모리에 저장될 수 있고 저장 장치들의 시스템 영역에 백업될 수 있다. 또한, 메타 블록 관리기(1914)는 현재 특정한 상태들에 있는 메타 블록들의 해당 리스트들(예컨대, 소거된 리스트, 반환 리스트, 소거 중인 리스트 등)을 유지할 수 있다. 메타 블록 관리기(1914)는 반환 활동들을 위해 SUE 저장 액세스 관리기(1906)로 전송하고자 하는 특정 메타 블록들을 선택할 수 있다.
반환 관리기(1916)는 지정된 메타 블록들의 유효한(Valid) 사용자 데이터를 복구하고 그 유효한 사용자 데이터를 다른 메타 블록들로 이동시키기 위해, 메타 블록 관리기(1914)로부터의 반환 요청들을 처리해줄 수 있다. 반환 관리기(1916)는 저장 장치들의 사용자 영역에 남는 공간을 제공하기 위해, 지정된 메타 블록들에 대응하는 물리적인 메모리 셀들이 소거되고 반환되도록 요청할 수 있다.
저장 어레이 관리기(1918)는 저장 장치들의 사용자 영역을 SUE 인터페이스로 제공할 수 있다. 뿐만 아니라, 저장 어레이 관리기(1918)는 저장 장치들의 시스템 영역을 논리 인터페이스로 제공할 수 있다. 저장 어레이 관리기(1918)는 RAID 스트라이프(Stripe) 방식 및 패리티 검사와 같은 데이터 보호 기능들을 제공할 수 있다. 예로서, 몇몇 실시 예에서, 저장 장치 전송 블록들은 RAID 요소들로서 이용될 수 있고, RAID 스트라이프는 한 메타 페이지의 모든 SUE 페이지에 걸쳐 위치하는 저장 장치 전송 블록들을 포함할 수 있다. 따라서, 저장 시스템에서 어떤 저장 장치가 고장나면, 저장 어레이 관리기(1918)는 역 패리티(Reverse Parity) 연산을 이용하여, 고장난 저장 장치로부터 데이터를 복구할 수 있다.
논리 저장 액세스 관리기(1920)는 논리 어드레스 방식들을 이용하여, 시스템 데이터의 읽기 및 쓰기 기능들을 제공할 수 있다. 논리 저장 액세스 관리기(1920)는 사용자 데이터에 관한 메타데이터를 저장하고 읽을 수 있는데, 이 메타데이터는 사용자 영역 맵 테이블, 메타 블록 정보 테이블, 및 볼륨 테이블은 물론, 저장 시스템 파일들, 로그(Log) 파일들 등을 포함할 수 있다.
사용자 영역에 저장되는 사용자 데이터와 관련하여, 개별적인 불휘발성 메모리 장치들은 특정 메모리 매체의 관리 기능들(예컨대, 읽기 재시도(Retry), 손상된 물리 블록의 맵핑, ECC, 개선된 ISPP(Incremental Step Pulse Programming) 등)을 책임질 수 있다. 시스템 영역에 저장되는 시스템 데이터와 관련하여, 개별적인 불휘발성 메모리 장치들은 모든 메모리 매체의 관리 기능들(예컨대, 반환, 웨어레벨링(Wear-leveling), 읽기 및 쓰기 캐싱(Caching), 읽기 재시도, 손상된 물리 블록의 맵핑, ECC, 개선된 ISPP 등)을 책임질 수 있다
도 20은 저장 시스템이 본 발명의 실시 예에 따라 저장 장치에서 논리 및 SUE 저장 공간들을 다룰 수 있게 하기 위해 SUE 어드레스 스킴을 채용한 또 다른 예시적인 다중 모드 저장 관리 시스템(또는, 하이브리브 맵핑 시스템)을 보여주는 블록도이다.
다중 모드 저장 관리 시스템(2002)은 저장 시스템에 포함되는 여러 저장 장치에 걸쳐 분포하는 사용자 영역에 관한 불휘발성 메모리 매체 관리를 책임지는 전역 플래시 변환 계층(Global Flash Translation Layer)으로서 동작할 수 있다. 다중 모드 저장 관리 시스템(2002)은 불휘발성 메모리 매체의 액세스 기능들, 호스트 어플리케이션의 논리 어드레스 공간의 요소들을 물리적인 불휘발성 메모리 위치들로 정렬된 SUE 어드레스 공간의 데이터 구조들로 맵핑하기 위한 어드레스 맵핑 기능들, 반환 및 웨어레벨링 기능들을 수행할 수 있다.
다중 모드 저장 관리 시스템(2002)은 데이터 정렬기(2004), 사용자 영역 액세스 관리기(2006), 사용자 영역 맵핑 엔진(2008), 버퍼 관리기(2010), 시스템 영역 액세스 관리기(2012), 메타 블록 관리기(2014), 메타 블록 정보 관리기(2016), 저장 장치 제어 관리기(2018), 저장 장치 액세스 관리기(2020), 전역 상태(Global State) 관리기(2022), 및 전역 오류(Global Error) 관리기(2024)를 포함할 수 있다. 다중 모드 저장 관리 시스템(2002)은 시스템 상태 관리기(2026), 시스템 로그 및 통계 관리기(2028), 타겟 장치(2030), 및 여러 불휘발성 메모리 장치(2032)와 통신하도록 연결될 수 있다.
전역 오류 관리기(2024)는 다중 모드 저장 관리 시스템(2002)을 포함하는 저장 시스템에서 발생하는 전역 오류를 관리할 수 있다. 시스템 상태 관리기(2026)는 다중 모드 저장 관리 시스템(2002)의 상태(예컨대, 동작 환경)를 관리할 수 있다. 시스템 로그 및 통계 관리기(2028)는 다중 모드 저장 관리 시스템(2002)을 포함하는 저장 시스템의 동작들에 기초하여, 시스템 로그들/통계들을 제공할 수 있다. 불휘발성 메모리 장치들(2032)은 널리 이용되는 어떠한 종류(들)의 불휘발성 메모리들이든 포함할 수 있다. 타겟 장치(2030)는 읽기/쓰기 동작들의 대상인 다른 메모리 장치일 수 있다.
데이터 정렬기(2004)는 타겟 장치(2030)로부터 논리 어드레스 기반의 매체 액세스 커맨드들(예컨대, 읽기 커맨드, 쓰기 커맨드, 맵핑 해제 커맨드 등)을 수신할 수 있다. 데이터 정렬기(2004)는 논리 블록 어드레스(LBA)의 버퍼 리스트를 입력으로서 수신할 수 있다. 쓰기 동작들 동안, 데이터 정렬기(2004)는 타겟 장치(2030)로부터 수신되는 데이터의 논리 블록들을 SUE 맵핑 블록들(또는, 하이브리드 맵핑 블록(Hybrid Mapping Block)들)로 결합할 수 있다. 예로서, 몇몇 실시 예에서, 몇몇 개수(Integral Number)의 논리 블록들이 하나의 SUE 맵핑 블록을 형성하기 위해 모일 수 있다.
데이터 정렬기(2004)는 타겟 장치(2030)로부터 수신되는 정렬된 사용자 데이터의 트래픽(Traffic) 및 정렬되지 않은 사용자 데이터의 트래픽 모두를 통합할 수 있다. 이때, 데이터 정렬기(2004)는 논리 어드레스로부터 물리 어드레스로의 맵핑을 위한 단위들(SUE 맵핑 블록들)로 데이터를 정렬하기 위해, 정렬되지 않은 쓰기 트래픽을 위한 읽기/수정/쓰기(Read/Modify/Write) 동작들을 수행할 수 있다. 데이터 정렬기(2004)는 사용자 데이터를, SUE 맵핑 블록으로 정렬된 버퍼 리스트에 위치시킬 수 있다. 다양한 실시 예에서, SUE 맵핑 블록들은 4킬로바이트, 8킬로바이트, 16킬로바이트 등과 같이, 고정된 데이터 양을 가질 수 있다.
읽기 동작들 동안, 데이터 정렬기(2004)는 타겟 장치(2030)로부터 읽기 커맨드를 수신하여, 읽기 요청을 사용자 영역 액세스 관리기(2006)로 전달할 수 있다. 데이터 정렬기(2004)는 요청된 사용자 데이터를 사용자 영역 액세스 관리기(2006)로부터 수신하여, 그 요청된 사용자 데이터를 타겟 장치(2030)로 전달할 수 있다.
도 21은 본 발명의 실시 예에 따른 다중 모드 저장 관리 시스템에 의해 구현될 수 있는 사용자 영역 액세스 관리기를 보여주는 블록도이다. 도 21을 참조하면, 사용자 영역 액세스 관리기(2006)는 읽기 관리기(2102), 쓰기 관리기(2104), 데이터 압축 관리기(2106), 데이터 압축 해제(Decompression) 관리기(2108), 반환 관리기(2110), 남는 공간 기록 관리기(2112), 흐름 제어 관리기(2114), 및 서비스 품질 관리기(2116)를 포함할 수 있다.
읽기 관리기(2102)는 데이터 정렬기(2004)로부터 읽기 요청들을 수신할 수 있고, 그 읽기 요청들을 처리하여 줄 수 있다. 읽기 관리기(2102)는 사용자 영역 맵핑 엔진(2008)에게 관련된 맵핑 정보를 요청할 수 있다. 읽기 관리기(2102)는 읽기 요청들을 저장 장치 액세스 관리기(2020)로 보낼 수 있다. 읽기 동작들 동안, 읽기 관리기(2102)는 버퍼 관리기(2010)에게 읽기 버퍼들의 사용자 데이터를 내보낼 것을 요청할 수 있다. 읽기 관리기(2102)는 읽기 요청된 사용자 데이터에 관한 압축 해제 요청들을 데이터 압축 해제 관리기(2108)로 보낼 수 있다.
쓰기 관리기(2104)는 데이터 정렬기(2004)로부터 쓰기 요청들을 수신할 수 있다. 쓰기 동작들 동안, 쓰기 관리기(2104)는 SUE 맵핑 블록 스트림에 대한 메타데이터 헤더들을 생성할 수 있고, 사용자 데이터의 SUE 어드레스에 관하여 사용자 영역 맵핑 엔진(2008)을 위해 맵핑 정보를 생성할 수 있다. 쓰기 관리기(2104)는 사용자 데이터 압축 커맨드들을 스케줄링(Scheduling)하기 위해 압축 요청들을 데이터 압축 관리기(2106)로 보낼 수 있고, 저장 장치 액세스 관리기(2020)로 쓰기 요청들을 보낼 수 있다. 쓰기 관리기(2104)는 버퍼 관리기(2010)에게 쓰기 버퍼들의 사용자 데이터를 내보낼 것을 요청할 수 있다. 쓰기 데이터의 현재 메타 블록이 꽉 차 있을 경우, 쓰기 관리기(2104)는 메타 블록 관리기(2014)에게 새로운 활성화된 메타 블록을 열어 줄 것을 요청할 수 있다.
데이터 압축 관리기(2106)는 쓰기 관리기(2104)로부터 압축 요청들을 수신할 수 있고, 그 압축 요청들을 처리하여 줄 수 있다. 몇몇 실시 예에서, 데이터 압축 관리기(2106)는 SUE 맵핑 블록들의 사용자 데이터에 대해 데이터 압축 알고리즘을 구현할 수 있다. 몇몇 다른 실시 예에서, 데이터 압축 관리기(2106)는 외부 압축 유닛(미도시)에 대해 데이터 압축 작업들을 스케줄링할 수 있다.
데이터 압축 해제 관리기(2108)는 읽기 관리기(2102)로부터 압축 해제 요청들을 수신할 수 있고, 그 압축 해제 요청들을 처리하여 줄 수 있다. 몇몇 실시 예에서, 데이터 압축 해제 관리기(2108)는 SUE 맵핑 블록들의 사용자 데이터에 대해 데이터 압축 해제 알고리즘을 구현할 수 있다. 몇몇 다른 실시 예에서, 데이터 압축 해제 관리기(2108)는 외부 압축 해제 유닛(미도시)에 대해 데이터 압축 해제 작업들을 스케줄링할 수 있다.
반환 관리기(2110)는 메타 블록 관리기(2014)로부터 반환 요청들을 수신할 수 있고, 남는 공간을 반환하기 위해 지정된 메타 블록들로부터 유효 데이터를 복구하기 위해 그 반환 요청들을 처리하여 줄 수 있다. 반환 관리기(2110)는 사용자 영역 맵핑 엔진(2008)에게 관련된 맵핑 정보를 요청할 수 있고, 지정된 메타 블록들에 관하여 읽기 요청들을 읽기 관리기(2102)로 보낼 수 있다. 반환 관리기(2110)는 저장 장치로부터의 읽기 데이터 스트림의 SUE 맵핑 블록들에 수반하는 메타데이터 헤더들을 분석할 수 있고, 지정된 메타 블록들에 남아 있는 모든 유효 데이터에 관하여 쓰기 관리기(2104)에게 쓰기 요청들을 보낼 수 있다. 또한, 반환 관리기(2110)는 부분적인 메타 블록 데이터를 반환하기 위해 저장 장치 제어 관리기(2018)로부터의 요청들을 처리하여 줄 수 있다.
남는 공간 기록 관리기(2112)는 쓰기 동작들 동안 쓰기 관리기(2104)로부터 맵핑 정보를 수신할 수 있고, 메타 블록들에 저장된 오래된 사용자 데이터에 관하여 남는 공간의 정보를 생성할 수 있다. 남는 공간 기록 관리기(2112)는 남는 공간의 정보를 메타 블록 정보 관리기(2016)로 보내어, 해당 메타 블록 정보 테이블의 개체들을 갱신할 수 있다.
흐름 제어 관리기(2114)는 읽기/쓰기 버퍼들, 압축 버퍼들, 저장 버스 및 그 외 다른 큐 깊이(Queue Depth) 등과 같은 시스템 자원들을 모니터링할 수 있다. 시스템 레벨의 자원 제공이 기준 한계 아래로 떨어질 경우, 흐름 제어 관리기(2114)는 서비스 품질 관리기(2116)의 조절 수준(Throttling-down Level)들을 리셋할 수 있다. 몇몇 실시 예에서, 자원 제공의 요구 수준은 시스템 관리자 커맨드들을 이용하여 설정될 수 있다. 흐름 제어 관리기(2114)는 시스템 관리자에게 통계치들을 제공할 수 있는데, 이 통계치들은 인터페이스 레벨의 조절(Throttling)을 위해 이용될 수 있다.
서비스 품질 관리기(2116)는 시스템 자원 제공 수준들 및 레이턴시(Latency) 측정치들에 기초하여, 서비스 품질의 정책들을 정의할 수 있다. 서비스 품질 관리기(2116)는 상이한 서비스 품질 정책 풀들을 지원하기 위해 여러 큐들을 구현할 수 있다. 레이턴시 기반의 정책들에 관하여, 서비스 품질 관리기(2116)는 큐 개체들에 대해 타임 스탬프(Timestamp)들을 구현할 수 있다. 서비스 품질 관리기(2116)는 다양한 큐 파라미터(Parameter)들을 모니터링할 수 있고, 정책들이 위반되지 않음을 보장하기 위한 요청들을 선택할 수 있다. 흐름 제어 관리기(2114)의 요청에 따라, 서비스 품질 관리기(2116)는 자원 제공 기반의 정책 큐들에 대해 트래픽을 조절할 수 있다.
도 22는 본 발명의 실시 예에 따른 다중 모드 저장 관리 시스템에 의해 구현될 수 있는 사용자 영역 맵핑 엔진을 보여주는 블록도이다. 도 22를 참조하면, 사용자 영역 맵핑 엔진(2008)은 볼륨 관리기(2202), 맵 페이지 읽기 관리기(2204), 맵 페이지 쓰기 관리기(2206), 및 맵 페이지 캐시 관리기(2208)를 포함할 수 있다.
볼륨 관리기(2202)는 볼륨들을 생성하고 제거하고 관리하기 위한 서비스들을 제공할 수 있고, 여러 제공 정책들을 다룰 수 있다. 볼륨 관리기(2202)는 관련된 정보를 볼륨 테이블에서 유지시킬 수 있는데, 이 볼륨 테이블은 메모리에 저장될 수 있고 시스템 영역에 백업될 수 있다. 볼륨 관리기(2202)는 볼륨 테이블의 개체들로의 액세스를 위한 서비스들을 제공할 수 있다. 볼륨 관리기(2202)는 시스템 영역 액세스 관리기(2012)를 이용하여 볼륨 테이블을 백업하고 복원할 수 있다.
어떤 맵 페이지가 없음(Miss)이 맵 페이지 캐시 관리기(2208)에 의해 검출된 경우, 맵 페이지 읽기 관리기(2204)는 결여된 맵핑 페이지들에 관하여 맵 페이지 캐시 관리기(2208)로부터 제공되는 요청들을 수신하고 처리하여 줄 수 있다. 맵 페이지 쓰기 관리기(2206)는 맵핑 페이지를 되돌려주기 위한 맵 페이지 캐시 관리기(2208)로부터의 요청들을 수신하고 처리하여 줄 수 있다.
맵 페이지 캐시 관리기(2208)는 읽기 관리기(2102) 및 반환 관리기(2110)로부터 제공되는 맵핑 개체 정보 요청들을 처리하여 줄 수 있다. 또한, 맵 페이지 캐시 관리기(2208)는 쓰기 관리기(2104)에 의해 제공되는 맵핑 개체 갱신들을 처리하여 줄 수 있다. 어떤 맵 페이지가 없음이 검출된 경우, 맵 페이지 캐시 관리기(2208)는 맵 페이지 읽기 관리기(2204)에게 결여된 맵핑 페이지를 요청할 수 있다. 맵 페이지 캐시 관리기(2208)는 맵 페이지 쓰기 관리기(2206)에게 맵핑 페이지를 되돌려줄 것을 요청할 수 있다.
버퍼 관리기(2010)는 읽기 및 쓰기 버퍼들의 풀을 관리할 수 있다. 쓰기 동작들 동안, 버퍼 관리기(2010)는 저장 장치 전송 블록들을 할당 및 방출(Release)하여, 쓰기 관리기(2104)로부터 수신된 사용자 데이터를 쓰기 버퍼들에 누적시킬 수 있다. 사용자 데이터의 완전한 메타 페이지가 거의 누적되었을 때, 버퍼 관리기(2010)는 쓰기 버퍼들의 사용자 데이터의 방출을 위한 요청들을 쓰기 관리기(2014)로부터 수신할 수 있다. 그리고, 버퍼 관리기(2010)는 사용자 데이터를 저장 장치 액세스 관리기(2020)로 전달할 수 있다.
읽기 동작들 동안, 버퍼 관리기(2010)는 저장 장치 전송 블록들을 읽기 버퍼들에 할당 및 방출하여, 읽기 캐시 기능을 지원할 수 있다. 저장 장치 액세스 관리기(2020)로부터 저장 장치 전송 블록들로서 수신된 사용자 데이터의 SUE 페이지들은 처음에는 읽기 버퍼들에 저장될 수 있다. 버퍼 관리기(2010)는 읽기 버퍼들의 사용자 데이터의 방출을 위한 요청을 읽기 관리기(2102)로부터 수신할 수 있다. 버퍼 관리기(2010)는 저장 장치 전송 블록들을 읽기 관리기(2102)로 전달할 수 있다.
시스템 영역 액세스 관리기(2012)는 저장 시스템에 포함되는 저장 장치들의 시스템 영역에 저장된 시스템 데이터로의 액세스에 관한 요청들을 처리하여 줄 수 있다. 시스템 영역 액세스 관리기(2012)는 볼륨 테이블 및 메타 블록 정보 테이블을 백업하고 복원하기 위해, 볼륨 관리기(2202) 및 메타 블록 정보 관리기(2016)로부터의 요청들을 각각 수신하고 처리하여 줄 수 있다. 시스템 영역 액세스 관리기(202)는 사용자 영역 맵 테이블로 액세스하기 위해, 맵 페이지 쓰기 관리기(2206), 맵 페이지 읽기 관리기(2204), 및 맵 페이지 캐시 관리기(2208)로부터의 요청들을 수신하고 처리하여 줄 수 있다.
도 23은 본 발명의 실시 예에 따른 다중 모드 저장 관리 시스템에 의해 구현될 수 있는 메타 블록 관리기를 보여주는 블록도이다. 도 23을 참조하면, 메타 블록 관리기(2014)는 반환 메타 블록 선택기(2302) 및 메타 블록 상태 관리기(2304)를 포함할 수 있다.
반환 메타 블록 선택기(2302)는 소거 횟수, 오래된 데이터의 수준, 보존 시간 등과 같은 사용자 영역 메타 블록들에 관한 파라미터들을 모니터링할 수 있다. 모니터링된 파라미터들에 기초하여, 반환 메타 블록 선택기(2302)는 반환 또는 가비지 콜렉션을 위한 메타 블록들을 선택할 수 있다. 반환 메타 블록 선택기(2302)는 다양한 웨어레벨링 정책들을 구현할 수 있다. 예로서, 반환 메타 블록 선택기(2302)는 메타 블록 소거 횟수들이 적당한 값 범위 내에서 유지되게 할 수 있고, 상대적으로 동적인 데이터(핫(Hot) 데이터)와 상대적으로 정적인 데이터(콜드(Cold) 데이터)가 서로 별개의 메타 블록들에 분리되게 할 수 있다.
메타 블록 상태 관리기(2304)는 사용자 영역 메타 블록들의 현재 상태(예컨대, 활성화됨, 닫힘, 소거 중, 소거됨, 반환 또는 가비지 콜렉션)를 추적할 수 있다. 메타 블록 상태 관리기(2304)는 메타 블록 정보 테이블을 갱신하여, 메타 블록들을 다양한 상태들로 전이(Transition)시킬 수 있다. 또한, 메타 블록 상태 관리기(2304)는 특정한 상태들에 있는 메타 블록들의 다양한 리스트들(예컨대, 소거된 메타 블록 리스트, 반환 메타 블록 리스트, 및 소거 중인 메타 블록 리스트)을 유지할 수 있다. 메타 블록 상태 관리기(2304)는 반환(가비지 콜렉션)이 준비된 개별적인 메타 블록들을 판별하기 위해, 소거된 메타 블록 리스트를 모니터링할 수 있다.
메타 블록 정보 관리기(2016)는 메타 블록 정보 테이블을 유지할 수 있다. 메타 블록 정보 관리기(2016)는 다른 모듈들을 위해, 메타 블록 정보 테이블에 있는 개체들로의 액세스 서비스들을 제공할 수 있다. 메타 블록 정보 관리기(2016)는 메타 블록 정보 테이블을 백업하고 복원하기 위해, 시스템 영역 액세스 관리기(2012)로 요청들을 전송할 수 있다.
도 24는 본 발명의 실시 예에 따른 다중 모드 저장 관리 시스템에 의해 구현될 수 있는 저장 장치 제어 관리기를 보여주는 블록도이다. 도 24를 참조하면, 저장 장치 제어 관리기(2018), 또는 솔리드 스테이트 장치 제어 관리기는, 저장 장치 로그 및 통계 관리기(2402), SUE 블록 소거 엔진(2404), 및 저장 장치 오류 관리기(2406)를 포함할 수 있다.
저장 장치 로그 및 통계 관리기(2402)는 저장 장치의 액세스 이력(History)의 로그를 유지할 수 있다.
SUE 블록 소거 엔진(2404)은 메타 블록 관리기(2014)를 통해 반환 관리기(2110)로부터 소거 요청들을 수신할 수 있고, 소거 처리를 관리할 수 있다. SUE 블록 소거 엔진(2404)은 SUE 블록의 소거 요청들을 저장 장치 액세스 관리기(2020)로 전송할 수 있다.
저장 장치 오류 관리기(2406)는 부분적인 메타 블록 데이터를 되찾기 위해 반환 관리기(2110)로 요청들을 전송할 수 있다.
도 25는 본 발명의 실시 예에 따른 다중 모드 저장 관리 시스템에 의해 구현될 수 있는 저장 장치 액세스 관리기를 보여주는 블록도이다. 도 25를 참조하면, 저장 장치 액세스 관리기(2020)는 논리 액세스 관리기(2502), RAID 관리기(2504), 읽기 룩-업(Lookup) 엔진(2506), 및 저장 초기화 관리기(2508)를 포함할 수 있다.
읽기 룩-업 엔진(2506)은 읽기 동작의 룩-업을 제공하고 관리할 수 있다. 저장 초기화 관리기(2508)는 저장 시스템의 초기화 동작을 관리할 수 있다.
논리 액세스 관리기(2502), 또는 솔리드 스테이트 드라이브 논리 액세스 관리기는, 저장 장치들의 시스템 영역의 시스템 데이터에 대한 액세스 서비스들을 제공할 수 있다. 논리 액세스 관리기(2502)는 저장 장치들의 시스템 영역에서 시스템 데이터를 다루기 위해 다양한 논리 블록 어드레스 방식을 이용할 수 있다. 논리 액세스 관리기(2502)는 NVMe 또는 NVMHCI의 표준을 활용할 수 있다. 논리 액세스 관리기(2502)는 저장 시스템에 포함되는 저장 장치들 또는 솔리드 스테이트 드라이브들로 액세스하기 위한 커맨드를 다룰 수 있다.
RAID 관리기(2504)는 사용자 데이터에 관하여, 저장 시스템에 포함되는 여러 저장 장치의 어레이를 위한 저장 관리(데이터 복구 기능들을 포함)를 제공할 수 있다. 따라서, 저장 시스템에 포함되는 개별적인 저장 장치들은 사용자 데이터를 위한 다이 레벨의 RAID 기능들을 수행하지 않을 수 있다. RAID 관리기(2504)는 다양한 저장 관리 및 데이터 복구 방법들을 구현할 수 있다. 몇몇 실시 예에서, RAID 관리기(2504)는 이 명세서에서 설명되는 새로운 저장 관리 및 데이터 복구 방법들을 수행할 수 있다.
RAID 관리기(2504)는 저장 장치들의 사용자 영역을 SUE 인터페이스로 제공할 수 있다. 뿐만 아니라, RAID 관리기(2504)는 저장 장치들의 시스템 영역을 논리 인터페이스로 제공할 수 있다. RAID 관리기(2504)는 RAID 스트라이프 방식 및 패리티 검사와 같은 데이터 보호 기능들을 제공할 수 있다. 예로서, 몇몇 실시 예에서, 저장 장치 전송 블록들은 RAID 요소들로서 이용될 수 있고, RAID 스트라이프는 한 메타 페이지의 모든 SUE 페이지에 걸쳐 위치하는 저장 장치 전송 블록들을 포함할 수 있다. 따라서, 저장 시스템에서 어떤 저장 장치가 고장나면, RAID 관리기(2504)는 역 패리티 연산을 이용하여, 고장난 저장 장치로부터 데이터를 복구할 수 있다.
도 26은 본 발명의 실시 예에 따른 다중 모드 저장 관리 시스템에 의해 구현될 수 있는 전역 상태 관리기를 보여주는 블록도이다. 도 26을 참조하면, 전역 상태 관리기(2022)는 전력 중단 관리기(2602), 및 오류 및 충돌(Crash) 관리기(2604)를 포함할 수 있다.
전력 중단 관리기(2602)는 다중 모드 저장 관리 시스템(2002)의 전력 중단에 관한 이슈들을 관리할 수 있다. 오류 및 충돌 관리기(2604)는 다중 모드 저장 관리 시스템(2002)에서 발생하는 오류/충돌 이슈들을 관리할 수 있다.
도 18, 도 19, 및 도 20의 다중 모드 저장 관리 시스템들(1802, 1902, 2002)의 기능들은 도 16의 저장 시스템(1602)에 의해 구현될 수 있다. 대안적인 실시 예들에서, 다중 모드 저장 관리 시스템들(1802, 1902, 2002)의 기능들은 보통의 컴퓨팅 장치 또는 특수 목적 하드웨어에 의해 구현될 수 있다.
설명된 다중 모드 접근법들은 정보의 효과적이고 효율적인 저장을 가능하게 하는 다양한 특징들 및 특성들을 포함한다. 이 특징들 및 특성들은 성능에 관한 여러 다른 양상들을 향상시킬 수 있다. 몇몇 실시 예에서, 설명된 파티션 설정 접근법들의 유연성은 비교적 빠른 속도 및 관리 가능한 복잡도의 실현을 가능하게 한다. 상대적으로 많은 양의 사용자 데이터가 SUE 어드레스 공간에 저장될 수 있고, 이는 사용자 데이터를 위한 매우 빠른 저장 및 관리 동작들을 가능하게 한다. 반면, 상대적으로 적은 양의 메타데이터가 논리 어드레스 기반의 영역에 저장될 수 있고, 이는 저장 시스템이 복잡도 감소를 위해 활용되는 메타데이터의 추상화 특성을 향상시킬 수 있게 한다.
나아가, 상대적으로 더 적은 메타데이터 영역의 오버 프로비저닝을 증가시키는 것의 유연성은 오버 프로비저닝 영향의 비율을 훨씬 더 크게 할 수 있고, 이는 메타데이터 저장 동작들의 속도를 높이고, 복잡도의 증가에 기인하여 달리 발생할 수 있는 속도 감소를 보상하는 데에 도움이 된다. 이는, 다른 저장 시스템들에 비해, 오버 프로비저닝 자원들의 더 나은 전반적인 할당 및 더 나은 영향을 가능하게 한다. 또한, 이 유연성은 상이한 저장 영역들의 블록들이 두 개의 파티션들 사이에서 재배정되거나 재할당되게 함으로써, 향상된 라이프사이클 보호를 가능하게 한다. 어떤 영역에 저장된 데이터의 특성(예컨대, 유형)은 그 영역에서 한 유형의 데이터가 다른 유형의 데이터보다 덜 기록되고 소거되었음을 나타낼 수 있고(예컨대, 대부분의 메타데이터는 사용자 데이터에 비해 많이 변경되지 않는다) 한 파티션의 물리 블록은 다른 파티션에 재할당되어 특정 영역의 마모 및 손상을 안정시킬 수 있다. 또한, 이 유연성은 파워 사이클링의 책임을 시스템 레벨까지 이동시킴으로써, 파워 사이클링의 향상을 가능하게 할 수 있다.
위 상세한 설명들 중 몇몇 부분은 컴퓨터 메모리 내의 데이터 비트들에 대한 연산들의 절차들, 논리 블록들, 처리, 및 그 외 다른 상징적인 묘사들에 관한 용어들을 이용하여 제공되었다. 이 설명들 및 묘사들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자들에게 지식의 요지를 효과적으로 전달하기 위해, 데이터 처리 분야에서 통상의 지식을 가진 자들에 의해 일반적으로 사용되는 수단들이다. 이 명세서에서의 절차, 논리 블록, 또는 처리는, 원하는 결과를 가져오는 단계들 또는 명령어들의 일관성 있는 시퀀스(Sequence)인 것으로 여겨진다. 이 단계들은 물리적인 양(Quantity)들을 물리적으로 조작하는 과정들을 포함한다. 보통, 필수적인 것은 아니지만, 이 물리적인 양들은 컴퓨터 시스템에서 저장되거나, 전송되거나, 결합되거나, 비교되거나, 그 외 다른 방식으로 다루어지는 전기적 신호, 자기적 신호, 광학적 신호, 또는 양자 신호의 형태를 취한다. 주로 공통의 사용을 위한 이유들 때문에, 이 신호들은 때때로 비트들, 값들, 요소들, 심볼들, 문자들, 용어들, 숫자들 등으로 언급되는 것이 간편한 것으로 보인다.
그러나, 이 용어들 및 유사한 용어들 모두는 적절한 물리적인 양들과 관련되고 단지 이 물리적인 양들에 적용되는 간편한 표식들일 뿐임이 이해되어야 한다. 아래 논의들에서 알 수 있는 바와 같이, 달리 특정하게 언급되지 않은 한, 이 명세서 전반에 걸쳐 "처리", "컴퓨팅", "계산", "판별", "표시" 등과 같은 용어들을 활용한 설명들은 물리적인(예컨대, 전자적인) 양들로서 표현되는 데이터를 조작하고 변환하는 컴퓨터 시스템 또는 유사한 처리 장치(예컨대, 전기적 컴퓨팅 장치, 광학적 컴퓨팅 장치, 또는 양자 컴퓨팅 장치)의 동작 및 처리들을 의미한다는 것이 이해될 것이다. 이 용어들은 컴퓨터 시스템의 구성 요소(예컨대, 레지스터들, 메모리들, 그 외 다른 유사한 정보 저장 장치들, 전송 또는 표시 장치들 등) 내에서의 물리적인 양들을 다른 구성 요소들 내에서의 물리적인 양들로서 유사하게 표현되는 다른 데이터로 조작 또는 변환하는 처리 장치들의 동작 및 처리들을 의미한다.
IV. 분산
본 발명의 다중 모드 접근법은 분산 아키텍처(Distributed Architecture)로 구현될 수 있음이 이해될 것이다. 분산 아키텍처는 다양한 속성(Attribute)을 포함할 수 있다. 분산 아키텍처는 단일 스레드(Thread)를 실행하거나 단일 병목(Bottleneck)을 갖는 것으로 한정됨이 없이, 기기들 또는 시스템들의 개수에 따라 선형적으로 확장 가능(Linearly Scalable)할 수 있다. 다중 모드 저장 관리 시스템이 여러 저장 노드(Storage Node)에 걸쳐 SUE 어드레스 블록 레벨에서 동작하는 것을 계속할 수 있기 때문에, 분산 아키텍처는 비 분산(Non-distributed) 아키텍처에 비해 저하(Degradation)가 거의 없이 또는 저하가 전혀 없이 구현될 수 있다.
도 27은 본 발명의 실시 예에 따라 네트워크(2705)에 연결되는 예시적인 기기(2701)를 보여주는 블록도이다. 네트워크(2705)가 다른 장치들 또는 기기들(미도시)에 연결될 수 있음이 이해될 것이다.
예시적인 구현에서, 기기(2701)는 시스템(600)과 유사할 수 있다. 기기 또는 시스템(2701)은 다중 모드 저장 관리 시스템(2710) 및 저장 장치들(2720, 2730, 2740, 2750)을 포함할 수 있다.
다중 모드 저장 관리 시스템(2710)은 프로세서(2713), 메모리들(2714, 2715, 2717, 2718), 버스(2719), 및 포트들(2711, 2712)을 포함할 수 있다. 버스(2719)는 PCI 버스일 수 있고, 포트들(2711, 2712)은 듀얼 25G 이더넷(Dual 25G Ethernet) 포트들일 수 있다. 프로세서(2713)는 4 또는 6 코어 인텔 제온일 수 있고, 메모리들(2714, 2715, 2717, 2718)은 64GB의 램일 수 있다. 일 실시 예에서, PCIe 브릿지 칩(Bridge Chip)이 필요하지 않을 수 있다(이는 PCIe 브릿지 칩을 이용하는 접근법들에 비해 감소된 비용 및 전력 소모를 가능하게 할 수 있다).
저장 장치들(2720, 2730, 2740, 2750)은 다중 모드 솔리드 스테이트 드라이브들일 수 있다. 분산 시스템의 다양한 특성이 있을 수 있음이 이해될 것이다(예컨대, 4개의 장치들 또는 다중 모드 솔리드 스테이트 드라이브들은 200W의 전력 인벨롭(Power Envelop)으로 동작할 수 있고, 비용에 대해 오버 프로비저닝의 레버리징(Leveraging)이 있을 수 있고, 단일 PCIe 어댑터 상에 고유의 하드웨어가 있을 수 있다). 예시적인 구현에서, PCIe 브릿지 칩이 제거되어 비용 및 전력 소모를 줄일 수 있다.
도 28은 본 발명의 실시 예에 따른 분산 시스템(2800)을 보여주는 블록도이다. 분산 시스템(2800)은 네트워크(2890) 및 기기들(2810, 2820, 2830, 2840, 2850, 2860, 2870, 2880)을 포함할 수 있다. 기기들(2810, 2820, 2830, 2840, 2850, 2860, 2870, 2880) 각각은 다중 모드 저장 관리 시스템 및 여러 저장 장치(예컨대, 2891, 2892, 2893, 2894)을 포함할 수 있다. 예시적인 구현에서, 기기들(2810, 2820, 2830, 2840, 2850, 2860, 2870, 2880) 각각은 기기(2701)와 유사할 수 있다.
도 29는 본 발명의 실시 예에 따른 분산 시스템(2900)을 보여주는 블록도이다. 분산 시스템(2900)은 전역 네임스페이스(2920)를 포함하는 여러 저장 노드(Storage Node)(2911, 2912, 2913, 2914)를 포함할 수 있다. 여러 저장 노드(2911, 2912, 2913, 2914)는 외부 연결 메커니즘(External Connectivity Mechanism)(2930)에 연결될 수 있고, 이는 결과적으로 FTP(File Transfer Protocol) 클라이언트(2941), ISCI(Internet Small Computer System Interface) 구성 요소(2942), NFS(Network File System) 구성 요소(2943), CIFS(Common Internet File System) 구성 요소(2944), 및 웹(Web) 구성 요소(2945)를 포함하는 복수의 외부 구성 요소에 연결될 수 있다. 여러 저장 노드(2911, 2912, 2913, 2914)는 노드에서 노드로의(Node-to-node) 연결 메커니즘(2950)에도 연결될 수 있다. 여러 저장 노드(2911, 2912, 2913, 2914)는 FTP 클라이언트(2941), ISCI 구성 요소(2942), NFS 구성 요소(2943), CIFS 구성 요소(2944), 및 웹 구성 요소(2945)를 포함하는 복수의 외부 구성 요소와 관련되는 정보를 저장할 수 있다.
단일 기기 또는 시스템에 대하여 위에서 설명된 SUE 접근법이 여러 분산 기기 또는 시스템을 이용하는 활용에 대해 확장될 수 있음이 이해될 것이다. 논리 어드레스 기반의 블록들은 SUE 어드레스를 갖는 블록들 또는 단위들과 관련될 수 있다. SUE 어드레스를 갖는 단위들은 압축되고 헤더와 관련될 수 있고, 그 뒤 저장 장치 전송 블록들로 정렬될 수 있다. 이러한 관련들은 도 15에 나타낸 것들과 유사할 수 있다.
다만, 분산 접근법에서, 분산 SUE 메타 블록은 복수의 물리 블록과 관련되는 정보를 포함할 수 있다. 여기서, 복수의 물리 블록 중에서 하나보다 많지 않은 물리 블록이 단일 저장 장치에 위치할 수 있고, 복수의 물리 블록 중 제 1 물리 블록이 제 1 기기 또는 노드와 관련되는 저장 장치에 위치할 수 있고, 복수의 물리 블록 중 제 2 물리 블록이 제 2 기기 또는 노드와 관련되는 저장 장치에 위치할 수 있다. 예시적인 구현에서, 분산 SUE 메타 블록은 솔리드 스테이트 드라이브 당 하나의 물리 플래시 블록에 저장되는 정보를 포함할 수 있고, 이 정보의 저장은 모든 드라이브 및 모든 노드에 걸쳐 이루어질 수 있다.
일반 동작 동안, 주요 블록 소유자(Primary Block Owner)가 있을 수 있고, 중복 블록 소유자(Redundant Block Owner)들이 필요한 만큼 많이 있을 수 있다. 주요 블록 소유자 및 중복 블록 소유자의 개념은 여러 설계 원리에서 이용될 수 있다. 주요 블록 소유자는 주어진 SUE 메타 블록의 라이프사이클 및 남는 공간의 관리에 책임을 지는(Responsible) 노드일 수 있다. 중복 블록 소유자는 주어진 SUE 메타 블록에 대한 남는 공간 관리 정보의 중복 사본에 책임을 지는 노드일 수 있다. 중복 블록 소유자는 이전의 주요 블록 소유자의 노드 장애(Node Failure)시 새로운 주요 블록 소유자로 승급되거나 변경될 수 있다. 주요 맵 소유자(Primary Map Owner)는 주어진 논리 어드레스에 대한 맵핑 정보의 소유자일 수 있다. 이차 맵 소유자(Secondary Map Owner)는 중복 맵핑 정보의 소유자일 수 있다.
도 30은 본 발명의 실시 예에 따른 블록 라이프사이클의 흐름도이다.
블록(3010)은 입력되는 호스트 데이터가 기록되는 복수의 블록 중 하나인 핫(Hot) 블록이다. 블록(3020)은 호스트 데이터가 속하는 시스템에서 비활성화된 복수의 일반(Normal) 블록 중 하나이다. 예시적인 구현에서, 대부분의 호스트 데이터는 일반 블록들에 속할 수 있고, 일반 블록들은 시스템에서의 대부분의 블록을 구성할 수 있다.
블록(3030)은 (예컨대, 가비지 콜렉션의 일부분으로서) 반환될, 블록 선택 메커니즘에 의해 선택된 복수의 정렬된 리스트의 블록 중 하나이다. 이 블록들은 가장 많은 양의 남는 공간을 가지는 점에 기초하여 선택될 수 있다. 블록(3040)은 유효 데이터를 선택된 블록으로부터 콜드(Cold) 블록으로 이동시키는 과정에 관련되는 반환 블록이다. 콜드 블록(3080)은 반환 블록으로부터의 유효 데이터가 기록되는 복수의 블록 중 하나이다. 소거된 블록(3050)은 유효 데이터가 콜드 블록(3080)으로 전송된 후에 소거될 복수의 블록의 정렬된 리스트에 있는 블록이다.
일 실시 예에서, 주어진 개방(Open) 블록을 위한 공간 할당이 단일 기기 또는 시스템 상의 단일 스레드에 의해 이루어질 수 있다. 예시적인 구현에서, 단일 블록에 대하여, 노드 당 핫 블록으로 지정되는 하나의 블록 및 노드 당 콜드 블록으로 지정되는 하나의 블록이 있을 수 있다. 주요 블록 소유자는 할당을 블록 사용자에게 맡길 수 있고, 주어진 블록에 대한 할당자는 블록 사용자일 수 있다. 할당 그 자체는 단일 스레드로 다루어질 수 있고, 메시지들을 다루는 것은 병렬화될 수 있다. 주요 블록 소유자에게 장애가 있는 경우, 블록은 폐쇄(Close)된 것으로 취급되고, 반환(예컨대, 가비지 콜렉션)이 수행될 때까지 그 블록에 대한 쓰기는 더 이상 발생하지 않을 수 있다.
일 실시 예에서, 주요 블록 소유자(블록 라이프사이클 및 남는 공간 정보를 관리하는 블록)의 개념은 공간 할당자와 별개일 수 있다. 따라서, 메타 블록들이 더 작고 더 많이 만들어질 수 있다. 메타 블록들은 여전히 여러 드라이브 및 기기 또는 노드에 걸쳐 존재할 수 있고, 그것들은 더 작은 청크(Chunk)들로 쪼개어질 수 있다. 예시적인 구현에서, 2K 개의 블록들 대신, (2K×N') 개의 블록들이 있을 수 있다(여기서, N'은 2의 거듭제곱에 가장 가깝도록 N을 올림(Round-up)한 것 또는 1<<log2(N-1)+1). 노드는 그것의 "고유"의 핫 블록 및 콜드 블록으로부터의 할당을 수행할 수 있다. 데이터 자체는 여전히 여러 노드에 걸쳐 분산될 수 있다. 패리티 데이터는 노드 자체에 기록될 수 있다. 중복 수준이 1보다 클 경우, 별개의 노드들에 관하여 추가의 중복 연산들이 수행될 수 있다.
도 31은 본 발명의 실시 예에 따른 분산 시스템 메타 블록을 보여주는 블록도이다. 분산 SUE 메타 블록은 4개 노드의 시스템으로 구현될 수 있고, 원래의 SUE 메타 블록의 정의는 분산 SUE 메타 블록을 형성하는 4개의 새로운 블록들로 더 나뉘어질 수 있다.
예로서, 4개의 노드들(3110, 3120, 3130, 3140)이 있을 수 있다. 노드(3110)는 솔리드 스테이트 드라이브들(3111, 3112, 3113, 3114)을 포함할 수 있다. 노드(3120)는 솔리드 스테이트 드라이브들(3121, 3122, 3123, 3124)을 포함할 수 있다. 노드(3130)는 솔리드 스테이트 드라이브들(3131, 3132, 3133, 3134)을 포함할 수 있다. 노드(3140)는 솔리드 스테이트 드라이브들(3141, 3142, 3143, 3144)을 포함할 수 있다. 원래의 SUE 메타 블록(3151)은 분산 SUE 메타 블록을 형성하는 4개의 새로운 블록들(3152, 3153, 3154, 3155)로 더 나뉘어질 수 있다. 노드들이 추가되거나 제거되어 2의 거듭제곱 개수가 흐트러지는 경우, 새로 생성되는 블록들은 새로운 크기를 채용할 것이다. 블록 선택은 백분율에 기반할 것이다.
맵핑 데이터는 여러 기기 또는 시스템에 걸쳐 중복하여 논리적으로 분산될 수 있다. 각 기기 또는 시스템은 맵핑 데이터의 몇몇 일부분을 중복하여 관리할 수 있다. 기기 또는 시스템은 맵핑 데이터의 주요 소유자 및 중복 소유자를 산출할 수 있다. 맵핑 데이터의 주요 소유자 및 중복 소유자를 산출하기 위해 해시(Hash)가 이용될 수 있다. 읽기를 위해, 이 기기들 또는 시스템들은 맵핑 정보를 요청받을 수 있다. 쓰기를 위해, 이 기기들 또는 시스템들은 맵핑의 갱신들을 저널링(Journaling)할 수 있고 결과적으로 맵핑 데이터를 기록할 수 있다.
다중 모드 접근법들은 다양한 RAID 버전으로 구현될 수 있다. RAID 연산들은 데이터의 보호를 위해 RS 소거 코딩(Reed-Solomon Erasure Coding)을 이용할 수 있다. RS 인코딩 연산은 블록 소유자에 의해 수행될 수 있다. 예시적인 구현에서, 장애의 대비책이 활용될 수 있다(주요 기기 또는 시스템의 손실이 데이터 손실을 야기하지 않도록). 하나보다 많은 심볼이 교정될 경우, 중복 연산이 이용될 수 있다(예컨대, RAID 6).
일 실시 예에서, 장애가 있는 유닛은 단일 저장 노드인 것으로 여겨질 수 있고, 그 단일 저장 노드의 장애는 기기 또는 시스템을 망가뜨리지 않을 수 있다. 또한, 분산 아키텍처는 폭발 반경(Blast Radius) 이슈들을 다룰 수 있다. 폭발 반경은 (예컨대, 데이터 센터, 시설, 네트워크 등에서) 얼마나 많은 기기 또는 시스템이 단일 요소의 장애에 의해 영향을 받는지의 이슈와 관련된다. 데이터 센터들에서의 폭발 반경은 산업 고 가용성(Enterprise High Availability) 문제와 유사하게 여겨질 수 있다. 복제(Replication) 및 그 외 다른 기법들을 통해 장애들을 다루는 것이 가능하기는 하지만, 요소들 사이에서의 영향(Impact)의 개념은 가용성 이슈들에 대해 여전히 중요하다. 분산 기기 또는 시스템의 접근법들에서, 작업 부하(Workload)는 N 개의 기기들 또는 시스템들에 걸쳐 공유될 수 있고, 이는 M 개의 장애들에 대해 (N-M) 개의 수용력(Capacity)을 부여할 수 있다. 덜 개별화(Customize)된 하드웨어 상에서는 통상적으로, 중복은 하위 레벨 대신 상위 계층 또는 구조 레벨에서 고려된다.
분산 기기 또는 시스템 접근법들에서, 남는 공간의 관리는 비 분산 접근법들에서보다 더 복잡할 수 있다. 일 실시 예에서, 남는 공간에 관한 기록(Accounting)은 SUE 어드레스 블록 수준에서 발생할 수 있다. 물리 블록들은 기기들 또는 시스템들 사이에서 할당될 수 있다. 각 기기 또는 시스템은 F 개의 블록들에 대한 남는 공간을 추적할 수 있다. 일 실시 예에서, 남는 공간의 추적 또는 기록은 관계(Relationship)에 의해 표현될 수 있다: 기기 또는 시스템 당 F 개의 남는 공간 블록들은 N 개의 물리 블록들과 M 개의 중복 블록들을 곱한 것을 P 개의 기기들 또는 시스템들로 나눈 것과 같다. 특정한 구성에 있어서, 주어진 블록에 대한 남는 공간을 추적하는 기기 또는 시스템의 더 정확한 개수가, 스토리지 어레이에 있는 어떠한 기기 또는 시스템에 의해 산출될 수 있다.
또한, 분산 기기 또는 시스템 접근법은 다양한 반환 활동(예컨대, 가비지 콜렉션)을 지원할 수 있다. 반환은 주요 블록 소유자에 의해 개시될 수 있으나, 블록 사용자에 의해 관리될 수 있다. 반환은 주어진 블록 사용자를 위해 블록이 콜드 대역(Cold Band)으로 할당된 후에 시작될 수 있다.
블록 사용자는 분산 블록 선택을 트리거(Trigger)할 수 있다. 블록들은 다양한 기준(Criteria)(예컨대, 유효 공간, 무효 공간 등)에 기초하여 블록 선택 점수(Block Picking Score)를 할당받을 수 있다. 각 기기 또는 시스템은 그것의 범위 내에 있는 블록들(즉, 그것이 남는 공간을 추적하고 있는 블록들)에 대한 블록 선택 점수들을 산출할 수 있다. 블록들은 블록 선택 점수들에 기초하여 선택될 수 있고, 선택된 블록들의 표시(Indication)가 주요 블록 소유자에게 반환(Return)되어, 주요 블록 소유자가 반환을 위한 다른 전반적인 블록을 선택할 수 있다. 일 예시에서, 가장 좋은 블록 선택 점수들을 갖는 블록들이 주요 블록 소유자에게 반환될 수 있고, 반환 또는 가비지 콜렉션을 위해 전반적인 가장 좋은 블록이 선택될 수 있다. 선택된 블록의 표시는 기기들 또는 시스템들로 통신되어, 기기들 또는 시스템들이 그것들의 수퍼 블록(Superblock)의 물리 조각들에 대해 반환을 시작할 수 있다(비 분산 다중 모드 저장 관리 시스템과 유사할 수 있음). 각 기기 또는 시스템은 물리적인 검사(Physical Scan) 및 유효 여부를 판별하기 위한 룩-업(Lookup)을 수행할 수 있고, 주요 블록 소유자에게 할당 요청을 보낼 수 있고, 적절한 노드에게 데이터를 보낼 수 있고, 적절한 노드에게 맵핑 갱신을 보낼 수 있다. 각 기기 또는 시스템은 호스트와 반환 데이터 사이에서 스스로를 조절(Throttle)할 수 있다.
일 실시 예에서, 두 개의 선택된 블록들이 있을 수 있다. 하나의 블록은 반환 과정 중에 있을 수 있고, 하나의 블록은 반환 과정을 위한 준비를 할 수 있다. 각 노드는 반환을 위한 선택된 블록을 순차화(Sequentialize)할 것이지만, 그것 고유의 콜드 블록들에 공간을 할당할 것이다. 요청 및 응답 모두에서 데이터를 순차적으로 유지시키기 위해 이용할 수 있는 최적화가 있을 수 있다. 데이터 노화(Aging), 볼륨/논리 분류(Grouping), 스냅샷(Snapshot) 분류 등과 같이, 가능한 다른 필터들이 있을 수 있다.
쓰기 과정에서, 쓰기 커맨드가 어떤 기기 또는 시스템에 도달할 수 있다. 그 기기 또는 시스템은 쓰기 과정의 전체 흐름을 통해 그 커맨드에 대한 조정자(Orchestrator)로 될 수 있다. 일치하는 해싱(Consistent Hashing)을 이용하여, 주어진 데이터를 위한 올바른 노드가 식별될 수 있다. 예시적인 구현에서, 해싱의 해(Solution)는 개체(Object)의 추가 또는 제거를 위해 단지 (1/n) 개의 키(Key)들만이 이동하는 향상된 속성을 갖는다(n은 해시 테이블의 슬롯들의 개수).
도 32는 본 발명의 실시 예에 따라 노드들을 추가하고 제거하는 데에 활용되는 일치하는 해시를 설명하기 위한 개념도이다. 물리적인 남는 공간에 관한 기록은 일치하는 해싱을 통해 임의의 다른 시스템들 상의 중복 사본과 함께 여러 기기 또는 시스템에 걸쳐 고르게 분산될 수 있다. 논리 어드레스 공간의 맵핑은 일치하는 해싱을 통해 임의의 다른 시스템들 상의 중복 사본과 함께 여러 기기 또는 시스템에 걸쳐 고르게 분산될 수 있다.
도 33은 본 발명의 실시 예에 따른 예시적인 쓰기 과정을 설명하는 흐름도이다. S3310 동작에서, 쓰기 지시가 수신될 수 있다. 쓰기 지시는 호스트로부터 올 수 있고, 기기는 데이터를 압축할 수 있다. S3320 동작에서, 쓰기 할당 처리가 수행될 수 있다. S3330 동작에서, 쓰기 데이터 전송 처리가 수행될 수 있다. S3340 동작에서, 쓰기 맵핑 갱신 처리가 수행될 수 있다. S3350 동작에서, 쓰기 남는 공간의 기록 처리가 수행될 수 있다. S3370 동작에서, 쓰기 완료 처리가 수행될 수 있다.
도 34는 본 발명의 실시 예에 따른 예시적인 쓰기 할당 처리를 설명하는 흐름도이다. S3410 동작에서, 제 1 기기가 개방 핫 블록에의 할당을 요청할 수 있다. S3420 동작에서, 제 2 기기가 할당 처리를 수행할 수 있다. S3430 동작에서, 제 1 기기는 제 2 기기로부터 할당 정보를 수신할 수 있다.
도 35는 본 발명의 실시 예에 따른 쓰기 할당 처리 동작들을 구현한 분산 시스템의 예시적인 구현을 보여주는 블록도이다.
분산 시스템(3500)은 네트워크(3590) 및 분산 어레이(Distributed Array)(3599)를 포함할 수 있다. 분산 어레이(3599)는 기기들(3510, 3520, 3530, 3540, 3550, 3560, 3570, 3580)을 포함할 수 있다. 기기들(3510, 3520, 3530, 3540, 3550, 3560, 3570, 3580) 각각은 다중 모드 저장 관리 시스템 및 여러 저장 장치(예컨대, 3591, 3592, 3593, 3594)를 포함할 수 있다. 예시적인 구현에서, 기기들(3510, 3520, 3530, 3540, 3550, 3560, 3570, 3580) 각각은 기기(2701)와 유사할 수 있다.
1번 동작에서, 호스트는 100KB의 데이터를 기기(3510)에 기록할 수 있다. 2번 동작에서, 기기(3510)는 그 데이터를 압축할 수 있다. 3번 동작에서, 기기(3510)는 핫 블록에의 할당을 요청할 수 있다. 4번 동작에서, 기기(3530)는 할당을 수행할 수 있다. 5번 동작에서, 기기(3530)는 기기(3510)로 할당 응답을 보내줄 수 있다. 6번 동작에서, 기기(3510)는 할당 응답을 수신할 수 있다.
도 36은 본 발명의 실시 예에 따른 예시적인 쓰기 데이터 전송 처리를 설명하는 흐름도이다. S3610 동작에서, 할당된 기기들로 데이터가 전송될 수 있다. S3620 동작에서, 할당된 기기들은 그 데이터를 기록할 수 있다. S3630 동작에서, 그 데이터는 패리티 산출을 위해 전송될 수 있다.
도 37은 본 발명의 실시 예에 따른 쓰기 데이터 전송 처리 동작들을 구현한 분산 시스템의 예시적인 구현을 보여주는 블록도이다. 7번 동작에서, 기기(3510)는 할당된 기기들로 데이터를 전송할 수 있다. 8번 동작에서, 기기들(3520, 3530, 3540)이 그 데이터를 기록할 수 있다. 9번 동작에서, 기기(3510)는 패리티 산출을 위해 그 데이터를 기기(3570)로 전송할 수 있다. 10번 동작에서, 기기(3570)는 패리티 정보를 기록할 수 있다.
도 38은 본 발명의 실시 예에 따른 예시적인 쓰기 맵핑 갱신 처리를 설명하는 흐름도이다. S3810 동작에서, 맵핑 갱신들이 주요 소유자 및 중복 소유자에게 보내질 수 있다. S3820 동작에서, 주요 소유자 및 중복 소유자는 맵핑 갱신을 저널링할 수 있고, 그 맵핑을 나중에 기록할 수 있다. S3830 동작에서, 주요 소유자 및 중복 소유자는 응답들을 전송할 수 있다. S3840 동작에서, 응답들이 누적될 수 있다.
도 39는 본 발명의 실시 예에 따른 쓰기 맵핑 갱신 처리 동작들의 예시적인 시스템 구현을 보여주는 블록도이다. 도 39의 11번 동작에서, 기기(3510)가 주요 소유자 및 중복 소유자에게 맵핑 갱신들을 보낼 수 있다. 12번 동작에서, 기기들(3540, 3560, 3570)이 맵핑 갱신들을 기록할 수 있다. 13번 동작에서, 기기들(3540, 3560, 3570)이 응답들을 전송할 수 있다. 14번 동작에서, 기기(3510)가 응답들을 누적할 수 있다.
도 40은 본 발명의 실시 예에 따른 예시적인 쓰기 남는 공간의 기록 처리를 설명하는 흐름도이다. S4010 동작에서, 남는 공간 갱신들이 보내질 수 있다. S4020 동작에서, 기기들이 남는 공간을 갱신할 수 있다. S4030 동작에서, 기기들이 응답들을 전송할 수 있다. S4040 동작에서, 응답들이 누적될 수 있다.
도 41은 본 발명의 실시 예에 따른 쓰기 남는 공간의 기록 처리 동작들을 구현한 예시적인 시스템을 보여주는 블록도이다. 15번 동작에서, 기기(3510)가 남는 공간 갱신들을 보낼 수 있다. 16번 동작에서, 기기들(3520, 3560, 3570)이 남는 공간을 갱신할 수 있다. 17번 동작에서, 기기들(3520, 3560, 3570)이 응답들을 전송할 수 있다. 18번 동작에서, 기기(3510)가 응답들을 누적할 수 있다.
도 42는 본 발명의 실시 예에 따른 예시적인 쓰기 완료 처리를 설명하는 흐름도이다. S4210 동작에서, 데이터를 기록했던 기기들이 데이터가 안전하게 기록되었음을 나타내는 지시를 전송할 수 있다. S4220 동작에서, 응답들이 누적될 수 있다. S4230 동작에서, 기기들이 패리티가 안전하게 기록되었음을 나타내는 지시를 전송할 수 있다. S4240 동작에서, 커맨드 완료 지시가 전달될 수 있다.
도 43은 본 발명의 실시 예에 따른 쓰기 완료 처리 동작들을 구현한 예시적인 시스템을 보여주는 블록도이다. 19번 동작에서, 데이터를 기록했던 기기들(3520, 3530, 3540)이 쓰기 데이터가 안전하게 저장되었다는 지시를 전달할 수 있다. 20번 동작에서, 기기(3510)가 응답들을 누적할 수 있다. 21번 동작에서, 기기(3510)는 패리티를 저장했던 기기(3570)로부터 패리티가 안전하게 저장되었다는 지시를 수신할 수 있다. 22번 동작에서, 커맨드 완료 지시가 네트워크(3590)를 통해 다른 저장 노드, 다른 기기, 또는 어떤 외부 시스템으로 전달될 수 있다.
도 44는 본 발명의 실시 예에 따른 예시적인 반환 초기화 처리를 설명하는 흐름도이다. 블록들이 반환을 위한 준비가 됨에 따라, 그 블록들은 남는 블록 리스트로 보내질 수 있다. 얼마나 많은 핫 블록들 및 콜드 블록들이 현재 활성화되어 있는지 및 남는 블록 리스트들에 있는 블록들의 개수에 의존하여, 소거 큐(Erase Queue)의 앞 부분의 주요 블록 소유자는 스스로를 핫 블록 또는 콜드 블록으로 변경할 수 있다. 블록이 콜드 블록으로 되면, 그 블록은 반환 처리를 수행할 수 있다.
도 45는 본 발명의 실시 예에 따른 예시적인 반환 처리를 설명하는 흐름도이다. S4510 동작에서, 블록이 콜드 블록으로 변경될 수 있고, 필요한 경우 블록 선택이 요청될 수 있다. S4520 동작에서, 반환을 위한 잠재적인 블록들의 블록 선택이 수행될 수 있고, 그 결과들이 전달될 수 있다. S4530 동작에서, 블록 선택이 수행될 수 있다. S4540 동작에서, 선택된 블록이 전달될 수 있다. S4550 동작에서, 반환이 시작될 수 있고, 맵핑 룩-업이 발행될 수 있다. S4560 동작에서, 맵핑 응답이 처리될 수 있다. S4570 동작에서, 반환 쓰기 처리가 수행될 수 있다.
도 46 내지 도 51은 본 발명의 실시 예에 따른 예시적인 반환의 구현을 보여주는 블록도들이다. 물리적인 남는 공간에 관한 기록은 해싱을 통해 임의의 다른 시스템들 상의 중복 사본과 함께 시스템들에 걸쳐 고르게 분산될 수 있다. 맵핑에 관하여, 논리 어드레스 공간은 해싱을 통해 임의의 다른 시스템들 상의 중복 사본과 함께 시스템들에 걸쳐 고르게 분산될 수 있다. 일 예에서, 블록(3520)이 남는 블록 리스트의 다음에 있을 수 있고, 콜드 블록으로 될 것을 결정할 수 있다.
도 46은 51번 동작에서 블록이 콜드 블록으로 되고 필요한 경우 블록 선택을 요청하는 기기(3520)로부터의 전달을 보여주는 블록도이다. 반환이 이미 처리 중에 있을 것으로 보이는 경우, 선택된 블록이 이미 큐에 있을 것이기에, 콜드 블록으로의 변경에 기인하는 할당 요청들이 매우 빠르게 시작될 수 있다.
도 47은 52번 동작에서 블록 선택을 수행하고 그 결과들을 기기(3520)로 돌려 보내는 다른 기기들을 보여주는 블록도이다. 반환이 실행되지 않고 있고 블록 선택이 필요한 경우, (요청한 시스템 또는 기기를 포함하는) 시스템들 또는 기기들은 블록 선택을 수행할 수 있다. 53번 동작에서, 기기(3520)는 블록을 선택할 수 있다.
도 48은 54번 동작에서, 선택된 블록을 전달하는 예시를 보여주는 블록도이다.
도 49는 데이터가 유효한지 여부를 판별하기 위해, 헤더에 기초하여, 55번 동작에서 기기(3510)로 맵핑 룩-업을 발행하는 기기(3540)를 보여주는 블록도이다. 여러 기기가 반환을 수행할 수 있고 기기(3540)가 단순화되어 도시되었음이 이해될 것이다. 기기(3540)는 (첫 번째 헤더를 판별하기 위해, 숨겨진 헤더(예컨대, 도 15의 헤더(1511))를 이용하여) 선택된 블록의 시작 부분에서 맵핑 룩-업의 발행을 시작할 수 있다.
도 50은 기기(3540)가 기기(3510)로부터의 맵핑 응답을 처리하는 57번 동작을 보여주는 블록도이다. 데이터가 유효하지 않은 경우, 처리는 유효한 것으로 추정되는 다음 헤더로 넘어갈 수 있다. 데이터가 기기(3550)로 넘어가는 것이 가능할 수 있다. 데이터가 유효한 경우, 데이터의 두 번째 부분이 기기(3550)로부터 페치(Fetch)될 수 있다(미도시).
도 51은 반환 쓰기 처리를 보여주는 블록도이다. 반환 쓰기 처리를 위한 동작들은 호스트 쓰기 동작들과 유사할 수 있다. 다만, 반환 쓰기 처리에서, 원래의 위치 정보는 오래된 갱신들이 폐기될 수 있게 하는 맵핑 갱신의 일부분으로서 전송된다는 차이가 있다. 71번 동작에서, 기기(3520)가 할당을 수행할 수 있다. 72번 동작에서, 기기(3540)가 콜드 블록에의 할당을 요청할 수 있다. 73번 동작에서, 기기(3520)가 할당 응답을 전송할 수 있다. 74번 동작에서, 기기(3540)가 할당 정보를 수신할 수 있다.
설명된 다중 모드 접근법들은 정보의 효과적이고 효율적인 저장을 가능하게 하는 다양한 특징 및 특성을 포함한다. 이 특징들 및 특성들은 성능에 관한 여러 다른 양상들을 향상시킬 수 있다. 일 실시 예에서, 설명된 파티션 설정 접근법들의 유연성은 비교적 빠른 속도 및 관리 가능한 복잡도의 실현을 가능하게 한다. 상대적으로 많은 양의 사용자 데이터가 SUE 어드레스 공간에 저장될 수 있고, 이는 사용자 데이터를 위한 매우 빠른 저장 및 관리 동작들을 가능하게 한다. 반면, 상대적으로 적은 양의 메타데이터가 논리 어드레스 기반의 영역에 저장될 수 있고, 이는 시스템이 복잡도 감소를 위해 활용되는 메타데이터의 추상화 특성을 향상시킬 수 있게 한다.
나아가, 상대적으로 더 적은 메타데이터 영역의 오버 프로비저닝을 증가시키는 것의 유연성은 오버 프로비저닝 영향의 비율을 훨씬 더 크게 할 수 있고, 이는 메타데이터 저장 동작들의 속도를 높이고, 복잡도의 증가에 기인하여 달리 발생할 수 있는 속도 감소를 보상하는 데에 도움이 된다. 이는, 다른 저장 시스템들에 비해, 오버 프로비저닝 자원들의 더 나은 전반적인 할당 및 더 나은 영향을 가능하게 한다. 또한, 이 유연성은 상이한 저장 영역들의 블록들이 두 개의 파티션들 사이에서 재배정되거나 재할당되게 함으로써, 향상된 라이프사이클 보호를 가능하게 한다. 어떤 영역에 저장된 데이터의 특성은 그 영역에서 한 유형의 데이터가 다른 유형의 데이터보다 덜 기록되고 소거되었음을 나타낼 수 있고(예컨대, 대부분의 메타데이터는 사용자 데이터에 비해 많이 변경되지 않는다) 한 파티션의 물리 블록은 다른 파티션에 재할당되어 특정 영역의 마모 및 손상을 안정시킬 수 있다. 또한, 이 유연성은 파워 사이클링의 책임을 시스템 레벨까지 이동시킴으로써, 파워 사이클링의 향상을 가능하게 할 수 있다.
일 실시 예에서, 다중 모드 SUE 저장 장치 또는 접근법은 복수의 NAS(Network Attached Storage) 장치(예컨대, 스토리지들(100, 300, 400, 600, 700))를 포함하는 분산 또는 공유 저장 시스템(예컨대, NAS 시스템 또는 클러스터(Cluster))에 포함될 수 있다. 다중 모드 SUE NAS 장치들은 네트워크에서 다른 장치들(예컨대, 클라이언트들, 서버들 등)을 위해 데이터 저장 서비스들을 제공할 수 있다. 저장 서비스들은 보통 "빅 데이터(Big Data)"로 불리는 매우 커다란 데이터 집합들을 위한 저장, 관리, 및 유지보수를 포함할 수 있다. 예시적인 구현에서, 다중 모드 SUE NAS 장치들은 보통 트랜잭션(Transaction) 데이터의 데이터베이스를 저장하고 유지하는 OLTP(Online Transaction Processing) 시스템에 포함되거나 OLTP 시스템의 일부분일 수 있다. DBMS(Database Management System) 또는 분산 DBMS는 OLTP에서 컴퓨터 시스템들 또는 저장 장치들의 클러스터에 걸쳐 데이터베이스를 분할할 수 있다.
상이한 유형들의 데이터 및/또는 저장 관리 동작들을 시스템(예컨대, 인터넷, 네트워크 상의 "클라우드(Cloud)", 데이터 센터, 네트워크 등)의 상이한 부분들로 융통성 있게 재배열하거나 이동시킬 수 있다는 점은 다양하고 더 나은 능력들을 가능하게 한다. 다중 모드 SUE 저장 접근법들은 상이한 유형들의 데이터 및 어드레스 접근을 분리하는 데에 관여하는 응용법들의 활용을 가능하게 한다. 일 실시 예에서, "사용자 데이터"처럼 큰 것으로 여겨지는 유형의 정보는 시스템(예컨대, 클라우드, 데이터 센터, 네트워크 등)의 한 부분에 저장될 수 있는 반면, "메타데이터"처럼 작은 것으로 여겨지는 다른 유형의 데이터는 시스템(예컨대, 클라우드, 데이터 센터, 네트워크 등)의 다른 부분에서 처리될 수 있다. 예로서, 이전에는, 사용자 데이터 및 메타데이터가 분리되지 않거나 상이하게 접근되지 않았었다.
다중 모드 SUE 시스템을 이용하면, 자주 접근되는 "빅 데이터"는 이러한 유형의 정보를 저장하기에 더 적합한(예컨대, 물리 어드레스 기반의) 또는 이러한 정보를 처리하기에 더 나은 처리 능력을 갖춘(따라서, 레이턴시, 및 네트워크 통신 상의 영향을 줄일 수 있는) 저장 영역에 의해 처리될 수 있다. "스몰 데이터" 또는 메타데이터는 감소된 복잡도에 따라 논리적으로 접근되는 더 작은 저장 영역에 저장될 수 있다.
위 상세한 설명들 중 몇몇 부분은 컴퓨터 메모리 내의 데이터 비트들에 대한 연산들의 절차들, 논리 블록들, 처리, 및 그 외 다른 상징적인 묘사들에 관한 용어들을 이용하여 제공되었다. 이 설명들 및 묘사들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자들에게 지식의 요지를 효과적으로 전달하기 위해, 데이터 처리 분야에서 통상의 지식을 가진 자들에 의해 일반적으로 사용되는 수단들이다. 이 명세서에서의 절차, 논리 블록, 또는 처리는, 원하는 결과를 가져오는 단계들 또는 명령어들의 일관성 있는 시퀀스인 것으로 여겨진다. 이 단계들은 물리적인 양들을 물리적으로 조작하는 과정들을 포함한다. 보통, 필수적인 것은 아니지만, 이 물리적인 양들은 컴퓨터 시스템에서 저장되거나, 전송되거나, 결합되거나, 비교되거나, 그 외 다른 방식으로 다루어지는 전기적 신호, 자기적 신호, 광학적 신호, 또는 양자 신호의 형태를 취한다. 주로 공통의 사용을 위한 이유들 때문에, 이 신호들은 때때로 비트들, 값들, 요소들, 심볼들, 문자들, 용어들, 숫자들 등으로 언급되는 것이 간편한 것으로 보인다.
그러나, 이 용어들 및 유사한 용어들 모두는 적절한 물리적인 양들과 관련되고 단지 이 물리적인 양들에 적용되는 간편한 표식들일 뿐임이 이해되어야 한다. 아래 논의들에서 알 수 있는 바와 같이, 달리 특정하게 언급되지 않은 한, 이 명세서 전반에 걸쳐 "처리", "컴퓨팅", "계산", "판별", "표시" 등과 같은 용어들을 활용한 설명들은 물리적인(예컨대, 전자적인) 양들로서 표현되는 데이터를 조작하고 변환하는 컴퓨터 시스템 또는 유사한 처리 장치(예컨대, 전기적 컴퓨팅 장치, 광학적 컴퓨팅 장치, 또는 양자 컴퓨팅 장치)의 동작 및 처리들을 의미한다는 것이 이해될 것이다. 이 용어들은 컴퓨터 시스템의 구성 요소(예컨대, 레지스터들, 메모리들, 그 외 다른 유사한 정보 저장 장치들, 전송 또는 표시 장치들 등) 내에서의 물리적인 양들을 다른 구성 요소들 내에서의 물리적인 양들로서 유사하게 표현되는 다른 데이터로 조작 또는 변환하는 처리 장치들의 동작 및 처리들을 의미한다.
각각의 개념도에 나타낸 구성은 단지 개념적인 관점에서 이해되어야 한다. 본 발명의 이해를 돕기 위해, 개념도에 나타낸 구성 요소 각각의 형태, 구조, 크기 등은 과장 또는 축소되어 표현되었다. 실제로 구현되는 구성은 각각의 개념도에 나타낸 것과 다른 물리적 형상을 가질 수 있다. 각각의 개념도는 구성 요소의 물리적 형상을 제한하기 위한 것이 아니다.
각각의 블록도에 나타낸 장치 구성은 발명의 이해를 돕기 위한 것이다. 각각의 블록은 기능에 따라 더 작은 단위의 블록들로 형성될 수 있다. 또는, 복수의 블록은 기능에 따라 더 큰 단위의 블록을 형성할 수 있다. 즉, 본 발명의 기술 사상은 블록도에 도시된 구성에 의해 한정되지 않는다.
이상에서, 본 발명에 관한 실시 예들을 중심으로 본 발명이 설명되었다. 다만, 본 발명이 속하는 기술 분야의 특성상, 본 발명이 이루고자 하는 목적은 본 발명의 요지를 포함하면서도 위 실시 예들과 다른 형태로 달성될 수 있다. 따라서, 위 실시 예들은 한정적인 것이 아니라 설명적인 측면에서 이해되어야 한다. 즉, 본 발명의 요지를 포함하면서 본 발명과 같은 목적을 달성할 수 있는 기술 사상은 본 발명의 기술 사상에 포함되는 것으로 해석되어야 한다.
따라서, 본 발명의 본질적인 특성을 벗어나지 않는 범위 내에서 수정 또는 변형된 기술 사상은 본 발명이 청구하는 보호 범위에 포함되는 것이다. 또한, 본 발명의 보호 범위는 위 실시 예들로 한정되는 것이 아니고, 청구항으로부터 읽히는 기술 사상을 커버하는 것으로 이해되어야 한다.
100 : 저장 장치 101 : 선별 잠재 노출 저장 파티션
102 : 선별 잠재 노출 인터페이스 103 : 잠재 저장 영역
220 : 다중 모드 저장 장치
230 : 제 1 파티션 231 : 제 1 유형의 인터페이스
233 : 잠재 저장 영역 240 : 제 2 파티션
241 : 제 2 유형의 인터페이스 243 : 잠재 저장 영역
350 : 다중 모드 저장 장치
371 : 제 1 파티션 372 : 제 1 파티션 관련 활동
373 : 잠재 저장 영역 380 : 제 2 파티션
381 : 선별 잠재 노출 인터페이스 383 : 잠재 저장 영역
400 : 다중 모드 솔리드 스테이트 드라이브
410 : 논리 어드레스 공간 파티션 411 : 논리 인터페이스
412 : 잠재 물리 어드레스 공간 413 : 플래시 변환 로직
420 : 선별 잠재 노출 어드레스 공간 파티션
421 : 선별 잠재 노출 인터페이스 423 : 잠재 물리 어드레스 공간
470 : 다이
471, 472, 473, 474, 479 : 잠재 물리 어드레스 블록
501 : 선별 잠재 노출 인터페이스 502 : 물리 어드레스 공간
503 : 선별 잠재 노출 어드레스 블록
505, 507, 508 : 정보
511, 512, 513, 514, 521, 522, 523, 524, 531, 532, 533, 534, 541, 542, 543, 544 : 다이
515, 517, 519, 528, 539 : 물리 어드레스 기반의 블록
600 : 시스템
610 : 다중 모드 저장 관리 시스템 611 : 컨트롤러
620, 630, 640, 650 : 다중 모드 솔리드 스테이트 드라이브
621, 631, 641, 651 : 컨트롤러 671, 672, 673 : 볼륨
700 : 시스템 710 : 기기
720 : 다중 모드 저장 관리 시스템
730 : 메타데이터 740 : 사용자 데이터
741 : 사용자 데이터를 위한 플래시 관리 시스템
742 : 선별 잠재 노출 맵퍼 745 : 컨트롤러
750 : 다중 모드 솔리드 스테이트 드라이브
770 : 논리 어드레스 공간 파티션
771 : 메타데이터를 위한 플래시 관리 시스템
772 : 논리 인터페이스 773 : 플래시 변환 로직
775 : 컨트롤러 777 : 물리 어드레스 공간
780 : 선별 잠재 노출 어드레스 공간 파티션
782 : 선별 잠재 노출 인터페이스
787 : 물리 어드레스 공간 791, 792, 797 : 논리 어드레스 블록
793, 799 : 물리 어드레스 블록 798 : 선별 잠재 노출 어드레스 블록
910 : 논리 어드레스 기반의 솔리드 스테이트 드라이브
911 : 논리 인터페이스 912 : 플래시 변환 로직
913 : 논리 어드레스 공간
920 : 다중 모드 솔리드 스테이트 드라이브
921 : 논리 인터페이스(921) 922 : 플래시 변환 로직
923 : 논리 어드레스 공간 924 : 선별 잠재 노출 인터페이스
925 : 물리 어드레스 공간
930 : 물리 어드레스 기반의 솔리드 스테이트 드라이브
931 : 물리 인터페이스 932 : 물리 어드레스 공간
1010 : SUE 블록 1012, 1014, 1016, 1018 : 물리 블록
1021, 1022, 1023, 1024 : 물리 페이지
1030 : SUE 페이지
1032, 1034, 1036, 1038 : 물리 페이지
1110 : SUE 블록 1121, 1122, 1123, 1124 : SUE 페이지
1210 : 메타 페이지
1211, 1212, 1213, 1214, 1215 : SUE 페이지
1310 : 메타 블록
1311, 1312, 1313, 1314 : 메타 페이지
1410 : 메타 블록
1411, 1412, 1413, 1414, 1415 : SUE 블록
1500 : 선별 잠재 노출 맵핑 스킴 1502 : 사용자 데이터
1503, 1504, 1505 : SUE 어드레스를 갖는 단위
1507, 1508, 1509 : SUE 어드레스를 갖는 압축된 단위
1511, 1512, 1513 : 헤더 섹션
1515, 1517 : 솔리드 스테이트 드라이브 전송 블록
1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578 : 논리 블록 어드레스
1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588 : 논리 어드레스 기반의 블록
1591, 1592, 1593, 1594 : SUE 페이지
1602 : 저장 시스템 1604 : 프로세서
1606 : 메모리 1608 : 네트워크 인터페이스
1610 : 입출력 장치 1612 : 표시 장치
1614 : 버스 1616 : 불휘발성 메모리 장치
1618 : 로컬 데이터 링크
1802 : 다중 모드 저장 관리 시스템 1804 : 선별 잠재 노출 저장 관리기
1806 : 논리 저장 관리기 1808 : 반환 관리기
1810 : 저장 어레이 관리기
1902 : 다중 모드 저장 관리 시스템 1904 : 데이터 정렬기
1906 : SUE 저장 액세스 관리기 1908 : 데이터 압축 관리기
1910 : 볼륨 맵핑 엔진 1912 : 버퍼 관리기
1914 : 메타 블록 관리기 1916 : 반환 관리기
1918 : 저장 어레이 관리기 1920 : 논리 저장 액세스 관리기
2002 : 다중 모드 저장 관리 시스템 2004 : 데이터 정렬기
2006 : 사용자 영역 액세스 관리기 2008 : 사용자 영역 맵핑 엔진
2010 : 버퍼 관리기 2012 : 시스템 영역 액세스 관리기
2014 : 메타 블록 관리기 2016 : 메타 블록 정보 관리기
2018 : 저장 장치 제어 관리기 2020 : 저장 장치 액세스 관리기
2022 : 전역 상태 관리기 2024 : 전역 오류 관리기
2026 : 시스템 상태 관리기 2028 : 시스템 로그 및 통계 관리기
2030 : 타겟 장치 2032 : 불휘발성 메모리 장치
2102 : 읽기 관리기 2104 : 쓰기 관리기(2104)
2106 : 데이터 압축 관리기 2108 : 데이터 압축 해제 관리기
2110 : 반환 관리기 2112 : 남는 공간 기록 관리기
2114 : 흐름 제어 관리기 2116 : 서비스 품질 관리기
2202 : 볼륨 관리기 2204 : 맵 페이지 읽기 관리기
2206 : 맵 페이지 쓰기 관리기 2208 : 맵 페이지 캐시 관리기
2302 : 반환 메타 블록 선택기 2304 : 메타 블록 상태 관리기
2402 : 저장 장치 로그 및 통계 관리기
2404 : 선별 잠재 노출 블록 소거 엔진
2406 : 저장 장치 오류 관리기
2502 : 논리 액세스 관리기 2504 : RAID 관리기
2506 : 읽기 룩-업 엔진 2508 : 저장 초기화 관리기
2602 : 전력 중단 관리기 2604 : 오류 및 충돌 관리기
2701 : 기기 또는 시스템 2705 : 네트워크
2710 : 다중 모드 저장 관리 시스템
2711, 2712 : 포트 2713 : 프로세서
2714, 2715, 2717, 2718 : 메모리
2719 : 버스
2720, 2730, 2740, 2750 : 저장 장치
2800 : 분산 시스템
2810, 2820, 2830, 2840, 2850, 2860, 2870, 2880 : 기기
2890 : 네트워크 2891, 2892, 2893, 2894 : 저장 장치
2900 : 분산 시스템 2911, 2912, 2913, 2914 : 저장 노드
2920 : 전역 네임스페이스 2930 : 외부 연결 메커니즘
2941 : FTP 클라이언트 2942 : ISCI 구성 요소
2943 : NFS 구성 요소 2944 : CIFS 구성 요소
2945 : 웹 구성 요소
2950 : 노드에서 노드로의 연결 메커니즘
3110, 3120, 3130, 3140 : 노드
3111, 3112, 3113, 3114, 3121, 3122, 3123, 3124, 3131, 3132, 3133, 3134, 3141, 3142, 3143, 3144 : 솔리드 스테이트 드라이브
3151 : SUE 메타 블록
3152, 3153, 3154, 3155 : 새로운 블록
3500 : 분산 시스템
3510, 3520, 3530, 3540, 3550, 3560, 3570, 3580 : 기기
3590 : 네트워크 3591, 3592, 3593, 3594 : 저장 장치
3599 : 분산 어레이

Claims (20)

  1. 적어도 하나가 복수의 저장 장치를 포함하는 복수의 기기;
    상기 복수의 저장 장치로의 정보의 전송을 지시하도록 구성되는 복수의 다중 모드(Multimode) 저장 관리 시스템을 포함하는 분산(Distributed) 다중 모드 저장 관리 조정기; 및
    상기 복수의 다중 모드 저장 관리 시스템 사이에서, 분산 다중 모드 저장 관리 메시지(Message)들을 포함하는 메시지들을 통신하기 위한 통신 메커니즘(Mechanism)을 포함하되,
    상기 복수의 저장 장치 각각은:
    기본 유형의 인터페이스, 및 제 1 유형의 정보를 저장하도록 구성되는 제 1 정보 저장 영역을 포함하는 제 1 저장 파티션(Partition); 및
    선별 잠재 노출(Selective Underlying Exposure) 인터페이스, 및 제 2 유형의 정보를 저장하도록 구성되는 제 2 정보 저장 영역을 포함하는 제 2 저장 파티션을 포함하고,
    상기 선별 잠재 노출 인터페이스는 상기 제 2 정보 저장 영역의 양상(Aspect)을 노출하고,
    상기 복수의 다중 모드 저장 관리 시스템은 상기 선별 잠재 노출 인터페이스를 통해 상기 제 2 저장 파티션의 파일 활동(Activity)들을 지시하도록 구성되는 다중 모드 선별 잠재 노출 관리 시스템들을 포함하는 분산 저장 시스템.
  2. 제 1 항에 있어서,
    상기 분산 다중 모드 저장 관리 메시지들은 선별된 잠재적인 양상들이 상기 복수의 기기에 걸쳐 노출되도록 유지시키는 분산 저장 시스템.
  3. 제 1 항에 있어서,
    메타데이터의 저장 공간 및 사용자 데이터의 저장 공간이 상기 복수의 기기에 걸쳐 고르게 퍼지는 분산 저장 시스템.
  4. 제 1 항에 있어서,
    선별 잠재 노출 어드레스 공간 맵핑이 상기 복수의 기기에 걸쳐 유지되고,
    상기 선별 잠재 노출 어드레스 공간 맵핑의 대표 기하 구조(Representative Geometry) 구성은 잠재적인 물리 어드레스 공간의 대표 기하 구조 구성과 매칭되는 분산 저장 시스템.
  5. 제 1 항에 있어서,
    중복 수준(Redundancy)이 상기 복수의 다중 모드 저장 관리 시스템의 레벨에서 제어되는 분산 저장 시스템.
  6. 제 1 항에 있어서,
    상기 복수의 기기는 구성 요소들이 여러 시스템에 걸쳐 선형적으로 확장 가능한(Linearly Scalable) 아키텍처(Architecture)로 배열되는 분산 저장 시스템.
  7. 제 1 항에 있어서,
    상기 분산 다중 모드 저장 관리 조정기는 상기 복수의 저장 장치에 걸친 선별 잠재 노출 수준에 기초하여 동작하는 분산 저장 시스템.
  8. 제 1 항에 있어서,
    하나의 노드가 하나보다 많은 저장 장치를 포함하고, 단일 유닛(Unit)의 장애(Failure)가 상기 분산 저장 시스템을 망가뜨리지 않는 분산 저장 시스템.
  9. 제 1 항에 있어서,
    남는 공간(Free Space)에 관한 기록(Accounting)은 선별된 잠재적인 양상의 블록 수준에서 발생하는 분산 저장 시스템.
  10. 적어도 하나가 복수의 저장 장치를 포함하는 복수의 기기를, RAID(Redundant Array of Independent Disks) 구성으로 설정하는 단계; 및
    상기 복수의 저장 장치에의 정보 저장을 관리하는 단계를 포함하되,
    상기 정보 저장을 관리하는 단계는 기본 유형의 어드레스 공간을 선별 잠재 노출(Selective Underlying Exposure) 어드레스 공간으로 맵핑하는 단계를 포함하고,
    상기 선별 잠재 노출 어드레스 공간은 상기 복수의 저장 장치 중 적어도 하나의 잠재적인 양상(Aspect)에 대응하는 분산 저장 방법.
  11. 제 10 항에 있어서,
    맵핑 데이터는 상기 복수의 저장 장치에 걸쳐 중복하여 논리적으로 분산되는 분산 저장 방법.
  12. 제 10 항에 있어서,
    상기 정보 저장을 관리하는 단계는 상기 RAID 구성에 걸쳐 상기 복수의 저장 장치에의 상기 정보 저장의 관리를 조정(Coordinate)하는 단계를 포함하는 분산 저장 방법.
  13. 제 12 항에 있어서,
    상기 조정하는 단계는 상기 복수의 기기 중 제 1 기기와 상기 복수의 기기 중 제 2 기기 사이에서 메시지들을 통신하는 단계를 포함하는 분산 저장 방법.
  14. 제 12 항에 있어서,
    남는 공간(Free Space)에 관한 기록(Accounting)은 다중 모드(Multimode) 저장 관리 시스템 수준에서 발생하는 분산 저장 방법.
  15. 제 12 항에 있어서,
    분산 블록 선택(Distributed Block Picking)을 트리거(Trigger)하는 주요 블록 소유자(Primary Block Owner)에 의해 반환(Reclamation)이 관리되고, 선택된 블록이 다른 블록으로 분산되는 분산 저장 방법.
  16. 제 12 항에 있어서,
    비 주요(Non-primary) 블록 소유자는 물리적인 검사(Physical Scan) 및 유효 판별 룩-업(Valid Determination Lookup)을 수행하는 분산 저장 방법.
  17. 스트라이프(Stripe) 단위로 정보를 저장하도록 구성되고, 적어도 하나가 복수의 솔리드 스테이트(Solid State) 저장 장치를 포함하는 복수의 기기;
    상기 복수의 솔리드 스테이트 저장 장치로의 정보의 전송을 지시하도록 구성되는 복수의 다중 모드(Multimode) 저장 관리 시스템을 포함하는 분산(Distributed) 다중 모드 저장 관리 조정기; 및
    상기 복수의 다중 모드 저장 관리 시스템과 상기 복수의 기기 사이에서 메시지들을 통신하기 위한 통신 메커니즘(Mechanism)을 포함하되,
    상기 복수의 솔리드 스테이트 저장 장치 각각은:
    기본 유형의 인터페이스, 및 제 1 유형의 정보를 저장하도록 구성되는 제 1 정보 저장 영역을 포함하는 제 1 저장 파티션(Partition); 및
    선별 잠재 노출(Selective Underlying Exposure) 인터페이스, 및 제 2 유형의 정보를 저장하도록 구성되는 제 2 정보 저장 영역을 포함하는 제 2 저장 파티션을 포함하고,
    상기 선별 잠재 노출 인터페이스는 상기 제 2 정보 저장 영역의 양상(Aspect)을 노출하고,
    상기 분산 다중 모드 저장 관리 조정기는 상기 선별 잠재 노출 인터페이스를 통한 상기 제 2 저장 파티션의 파일 활동(Activity)들 및 상기 제 2 저장 파티션의 선별된 잠재적인 양상들을 지시하도록 구성되는 다중 모드 선별 잠재 노출 관리 시스템을 포함하는 분산 시설.
  18. 제 17 항에 있어서,
    여러 시스템에 걸쳐 물리적으로 스트라이핑(Striping)되는 메타데이터 및 사용자 데이터를 더 포함하는 분산 시설.
  19. 제 17 항에 있어서,
    저장 장치보다 상위 계층 레벨(Higher Hierarchical Level)인 상기 분산 다중 모드 저장 관리 조정기의 레벨에서 중복 수준(Redundancy)이 제어되는 분산 시설.
  20. 제 17 항에 있어서,
    장애가 있는 유닛(Unit)은 저장 노드(Node)이고,
    단일 노드의 장애(Failure)는 상기 분산 시설을 망가뜨리지 않고,
    상기 저장 노드는 상기 복수의 기기 중 하나를 포함하는 분산 시설.
KR1020160109259A 2015-11-13 2016-08-26 분산 다중 모드 저장 관리 KR20170056418A (ko)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US14/941,525 US9940028B2 (en) 2015-11-13 2015-11-13 Multimode storage device
US14/941,512 US9990304B2 (en) 2015-11-13 2015-11-13 Multimode storage management system
US14/941,512 2015-11-13
US14/941,517 2015-11-13
US14/941,525 2015-11-13
US14/941,517 US9996473B2 (en) 2015-11-13 2015-11-13 Selective underlying exposure storage mapping
US14/947,931 US9946642B2 (en) 2015-11-13 2015-11-20 Distributed multimode storage management
US14/947,931 2015-11-20

Publications (1)

Publication Number Publication Date
KR20170056418A true KR20170056418A (ko) 2017-05-23

Family

ID=56990228

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160109259A KR20170056418A (ko) 2015-11-13 2016-08-26 분산 다중 모드 저장 관리

Country Status (6)

Country Link
US (1) US9946642B2 (ko)
EP (1) EP3168737A3 (ko)
JP (1) JP2017091548A (ko)
KR (1) KR20170056418A (ko)
CN (1) CN106708425B (ko)
TW (1) TWI709073B (ko)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180150256A1 (en) * 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
EP3646206B1 (en) 2017-06-30 2024-08-28 Microsoft Technology Licensing, LLC Staging anchor trees for improved concurrency and performance in page range index management
WO2019000386A1 (en) * 2017-06-30 2019-01-03 Microsoft Technology Licensing, Llc CHANGING THE ONLINE DIAGRAM OF AN INDEX PARTITIONED BY INTERVALS IN A DISTRIBUTED STORAGE SYSTEM
US11042512B1 (en) * 2017-08-02 2021-06-22 EMC IP Holding Company LLC Enabling granular snapshots and provisioning in NAS (network attached storage) clusters
US10067719B1 (en) * 2017-08-30 2018-09-04 Xanadu Big Data, Llc Methods and systems for storing and accessing data in a distributed data storage system
KR102457564B1 (ko) 2017-09-20 2022-10-21 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
JP6785205B2 (ja) 2017-09-21 2020-11-18 キオクシア株式会社 メモリシステムおよび制御方法
US10970226B2 (en) * 2017-10-06 2021-04-06 Silicon Motion, Inc. Method for performing access management in a memory device, associated memory device and controller thereof, and associated electronic device
JP7032908B2 (ja) * 2017-10-24 2022-03-09 株式会社Nobori 医療情報転送システム及び医療情報転送方法
JP2019079464A (ja) 2017-10-27 2019-05-23 東芝メモリ株式会社 メモリシステムおよび制御方法
JP6982468B2 (ja) 2017-10-27 2021-12-17 キオクシア株式会社 メモリシステムおよび制御方法
CN107967124B (zh) * 2017-12-14 2021-02-05 南京云创大数据科技股份有限公司 一种分布式持久性内存存储系统及方法
US11210166B1 (en) * 2017-12-22 2021-12-28 Pliops Ltd. Efficient redundancy management in key-value NAND flash storage
KR102603245B1 (ko) * 2018-01-11 2023-11-16 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
CN108595731B (zh) * 2018-01-23 2022-02-08 苏州盛科通信股份有限公司 一种以太网芯片中动态表项的设计方法及装置
WO2019152792A1 (en) 2018-02-02 2019-08-08 Dover Microsystems, Inc. Systems and methods for policy linking and/or loading for secure initialization
CN110275757A (zh) * 2018-03-16 2019-09-24 北京忆恒创源科技有限公司 利用系统抽象层提供多协议存储设备
US11151037B2 (en) 2018-04-12 2021-10-19 International Business Machines Corporation Using track locks and stride group locks to manage cache operations
US10831597B2 (en) 2018-04-27 2020-11-10 International Business Machines Corporation Receiving, at a secondary storage controller, information on modified data from a primary storage controller to use to calculate parity data
US10884849B2 (en) 2018-04-27 2021-01-05 International Business Machines Corporation Mirroring information on modified data from a primary storage controller to a secondary storage controller for the secondary storage controller to use to calculate parity data
WO2019213061A1 (en) 2018-04-30 2019-11-07 Dover Microsystems, Inc. Systems and methods for checking safety properties
CN109144413A (zh) * 2018-07-27 2019-01-04 郑州云海信息技术有限公司 一种元数据管理方法及装置
US10884662B2 (en) * 2018-08-06 2021-01-05 Silicon Motion, Inc. Method for performing storage control in a storage server, associated memory device and memory controller thereof, and associated storage server
US12050552B2 (en) 2018-10-03 2024-07-30 Google Llc Maintaining block level snapshots using free storage space
KR20200044460A (ko) * 2018-10-19 2020-04-29 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
TW202022679A (zh) 2018-11-06 2020-06-16 美商多佛微系統公司 用於停滯主處理器的系統和方法
US11841956B2 (en) 2018-12-18 2023-12-12 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
US10884642B2 (en) 2019-03-27 2021-01-05 Silicon Motion, Inc. Method and apparatus for performing data-accessing management in a storage server
US11074124B2 (en) * 2019-07-23 2021-07-27 Alibaba Group Holding Limited Method and system for enhancing throughput of big data analysis in a NAND-based read source storage
US11311800B2 (en) * 2019-08-09 2022-04-26 Sony Interactive Entertainment LLC Systems implementing high-speed data communication fabric for cloud gaming data storage and retrieval
US12079197B2 (en) 2019-10-18 2024-09-03 Dover Microsystems, Inc. Systems and methods for updating metadata
US11005936B1 (en) * 2020-03-10 2021-05-11 Mediatek Inc. Security mechanism for multi-client access to a single storage device through a single controller
US11481273B2 (en) 2020-08-17 2022-10-25 Micron Technology, Inc. Partitioned memory having error detection capability
CN112394884A (zh) * 2020-11-18 2021-02-23 珠海全志科技股份有限公司 减少ubi子系统管理开销的方法、ubi子系统及介质
CN112817730B (zh) * 2021-02-24 2022-08-16 上海交通大学 深度神经网络服务批处理调度方法、系统及gpu
JP2022147909A (ja) * 2021-03-24 2022-10-06 キオクシア株式会社 メモリシステム
US11662922B2 (en) 2021-10-18 2023-05-30 Hewlett Packard Enterprise Development Lp Shared storage allocation among data services
US12019899B2 (en) * 2022-03-03 2024-06-25 Western Digital Technologies, Inc. Data relocation with protection for open relocation destination blocks
JP2023137910A (ja) 2022-03-18 2023-09-29 キオクシア株式会社 メモリシステムおよび制御方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658528B2 (en) 2001-07-30 2003-12-02 International Business Machines Corporation System and method for improving file system transfer through the use of an intelligent geometry engine
US6775751B2 (en) 2002-08-06 2004-08-10 International Business Machines Corporation System and method for using a compressed main memory based on degree of compressibility
WO2005124530A2 (en) 2004-06-21 2005-12-29 Kabushiki Kaisha Toshiba Method for controlling memory card and method for controlling nonvolatile semiconductor memory
US7631245B2 (en) 2005-09-26 2009-12-08 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
KR100809320B1 (ko) 2006-09-27 2008-03-05 삼성전자주식회사 이종 셀 타입을 지원하는 비휘발성 메모리를 위한 맵핑정보 관리 장치 및 방법
JPWO2009153982A1 (ja) 2008-06-20 2011-11-24 パナソニック株式会社 複数区分型不揮発性記憶装置およびシステム
US8094500B2 (en) 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
US9134918B2 (en) 2009-12-31 2015-09-15 Sandisk Technologies Inc. Physical compression of data with flat or systematic pattern
WO2012051600A2 (en) 2010-10-15 2012-04-19 Kyquang Son File system-aware solid-state storage management system
US8849825B1 (en) * 2010-12-23 2014-09-30 Amazon Technologies, Inc. System and method for clustering distributed hash table entries
US9176864B2 (en) 2011-05-17 2015-11-03 SanDisk Technologies, Inc. Non-volatile memory and method having block management with hot/cold data sorting
US8886910B2 (en) * 2011-09-12 2014-11-11 Microsoft Corporation Storage device drivers and cluster participation
US8639669B1 (en) 2011-12-22 2014-01-28 Emc Corporation Method and apparatus for determining optimal chunk sizes of a deduplicated storage system
KR20130096881A (ko) 2012-02-23 2013-09-02 삼성전자주식회사 플래시 메모리 장치
US9727268B2 (en) * 2013-01-08 2017-08-08 Lyve Minds, Inc. Management of storage in a storage network
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9804960B2 (en) 2013-03-14 2017-10-31 Western Digital Technologies, Inc. Overprovision capacity in a data storage device
US9141626B2 (en) * 2013-03-14 2015-09-22 Microsoft Technology Licensing, Llc Volume having tiers of different storage traits
US9727456B2 (en) 2014-11-03 2017-08-08 Pavilion Data Systems, Inc. Scheduled garbage collection for solid state storage devices
US9626312B2 (en) 2015-07-17 2017-04-18 Sandisk Technologies Llc Storage region mapping for a data storage device

Also Published As

Publication number Publication date
EP3168737A3 (en) 2017-08-02
EP3168737A2 (en) 2017-05-17
TWI709073B (zh) 2020-11-01
US20170139823A1 (en) 2017-05-18
CN106708425B (zh) 2021-10-22
JP2017091548A (ja) 2017-05-25
CN106708425A (zh) 2017-05-24
TW201729068A (zh) 2017-08-16
US9946642B2 (en) 2018-04-17

Similar Documents

Publication Publication Date Title
KR20170056418A (ko) 분산 다중 모드 저장 관리
KR102541492B1 (ko) 다중 모드 동작들을 위해 다중 파티션을 포함하는 저장 장치, 및 그것의 동작 방법
JP7404442B2 (ja) 格納媒体を多重モードで動作させる管理システム、それを含む格納システム、及びそれを利用して格納媒体を管理する方法
US12067256B2 (en) Storage space optimization in a system with varying data redundancy schemes
CN106708424B (zh) 对用户数据执行选择性底层暴露映射的设备和方法
US9448924B2 (en) Flash optimized, log-structured layer of a file system
US10761750B2 (en) Selectively storing data into allocation areas using streams
KR20170008153A (ko) 비휘발성 장치에서 데이터 속성 기반 데이터 배치를 활용하기 위해 컴퓨터를 구동하는 경험적 인터페이스
CN106687910A (zh) 优化分段清除技术
US12045517B1 (en) Storage allocation techniques for large writes based on reserving one or more additional chunks of a block
WO2015161140A1 (en) System and method for fault-tolerant block data storage

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right