KR102444832B1 - 분산된 가상 명칭 공간 관리를 사용한 온-디맨드 스토리지 프로비져닝 - Google Patents

분산된 가상 명칭 공간 관리를 사용한 온-디맨드 스토리지 프로비져닝 Download PDF

Info

Publication number
KR102444832B1
KR102444832B1 KR1020180126347A KR20180126347A KR102444832B1 KR 102444832 B1 KR102444832 B1 KR 102444832B1 KR 1020180126347 A KR1020180126347 A KR 1020180126347A KR 20180126347 A KR20180126347 A KR 20180126347A KR 102444832 B1 KR102444832 B1 KR 102444832B1
Authority
KR
South Korea
Prior art keywords
storage
storage node
node
storage space
virtual
Prior art date
Application number
KR1020180126347A
Other languages
English (en)
Other versions
KR20190056295A (ko
Inventor
아난드 수브라마니안
치나크리슈난 발라푸람
오스카 프렘 핀토
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20190056295A publication Critical patent/KR20190056295A/ko
Application granted granted Critical
Publication of KR102444832B1 publication Critical patent/KR102444832B1/ko

Links

Images

Classifications

    • 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
    • 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
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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
    • 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
    • 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/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 실시 예에 따른 스토리지 노드는 하나 또는 그 이상의 로컬 스토리지 장치들 및 스토리지 노드 컨트롤러를 포함한다. 스토리지 노드 컨트롤러는 호스트 컴퓨터 상에서 구동하는 애플리케이션과 연결되도록 구성된 호스트 인터페이스, 하나 또는 그 이상의 가상 명칭 공간들을 관리하도록 구성된 스토리지 관리자, 및 하나 또는 그 이상의 스토리지 장치들과 연관된 각각의 명칭 공간을 관리하도록 구성된 스토리지 장치 컨트롤러를 포함한다. 스토리지 관리자는 스토리지 노드가 충분한 스토리지 공간을 포함하는 경우, 호스트 컴퓨터 상에서 구동하는 애플리케이션의 요청에서 스토리지 노드의 하나 또는 그 이상의 로컬 스토리지 장치들 상의 요구에 따라서 가상 명칭 공간과 연관된 스토리지 공간을 확장하도록 더 구성된다. 스토리지 노드가 불충분한 스토리지 공간을 포함하는 경우, 스토리지 관리자는 네트워크 상에서 제2 스토리지 노드의 피어 스토리지 관리자와 통신하도록 구성되고, 호스트 컴퓨터 상에서 구동하는 애플리케이션의 요청에서 제2 스토리지 노드의 로컬 스토리지 장치 상의 요구에 따라서 가상 명칭 공간과 연관된 스토리지 공간을 확장하도록 구성된다.

Description

분산된 가상 명칭 공간 관리를 사용한 온-디맨드 스토리지 프로비져닝{ON-DEMAND STORAGE PROVISIONING USING DISTRIBUTED AND VIRTUAL NAMESPACE MANAGEMENT}
본 발명은 데이터 스토리지 시스템들에 관한 것으로, 더욱 상세하게는 데이터 스토리지 장치들, 특히, NVMe-SSD들 및 그것들 변형물에 대하여 분산된 가상 명칭 공간 관리를 사용하는 온-디맨드 스토리지 프로비져닝을 제공하는 시스템 및 방법에 관한 것이다.
컴퓨터 시스템에서 구동하는 애플리케이션들은 SSD(solid-state drive)와 같은 불휘발성 데이터 스토리지 장치들에 저장된 데이터를 액세스할 수 있다. 특히, NVMe(nonvolatile memory express)-기반의 SSD는 PCIe(Peripheral Component Interconnect express) 버스를 통해 호스트 컴퓨터 시스템과 연결된다. 일반적으로, NVMe SSD의 스토리지 용량이 NVMe SSD의 가용한 물리적 플래시 용량으로 제한되기 때문에, 애플리케이션은 NVMe SSD로부터의 온디맨드식의 스토리지 용량을 늘릴 수 없다.
물리적 NVMe-SSD 장치로의 물리적 연결들의 개수에 대한 제한은 장치 연결 관리를 제한하고, 클러스터에서의 다수의 플래시 장치들의 연결 다중화 및 관리의 이용을 방지한다. 장치들의 그룹으로의 복수의 NVMe 연결들의 다중화(각 물리 장치는 하나 이상의 연결을 관리할 수 있다.)는 백엔드(backend)에서의 장치들의 계층(tier)을 통해 향상된 스케일링 및 성능을 도울 수 있다. 추가적으로 다중화는 미리 예측될 수 없는 애플리케이션 런-타임 요청들에 따라 런-타임 중의 페일오버, 페일백, 더 나은 명칭 공간 또는 용량 프로비져닝의 이슈들을 해결하는 것을 도울 수 있다. NVMe SSD에서 스토리지 용량의 할당은 매우 고정적이고, 그것의 물리적 스토리지 공간은 런-타임 중에 요구에 따라서 동적으로 증가될 수 없다. NVMe SSD의 확장 불가능한 스토리지 용량은 네트워크의 하나의 노드에서 구동하는 애플리케이션이 동일한 네트워크의 다른 피어 NVMe SSD들에서 사용되지 않는 스토리지 공간을 활용하지 못하게 한다. 이로 인해 로컬 노드 또는 물리적 호스트에서 데이터의 오버-프로비져닝이 발생되고, 시간이 흐름에 따라 데이터 센터에서 데이터 스토리지 계층 레벨을 통한 데이터 스토리지 용량의 오버-프로비져닝이 과도하게 되고, 데이터 센터를 운영하는 총 비용(TCO; total cost of ownership)이 증가한다.
본 발명의 일 실시 예에 따르면, 스토리지 노드들에서의 스토리지 노드는: 하나 또는 그 이상의 로컬 스토리지 장치들; 및 스토리지 노드 컨트롤러를 포함한다. 상기 스토리지 노드 컨트롤러는: 호스트 컴퓨터 상에서 구동하는 애플리케이션과 연결되도록 구성된 호스트 인터페이스; 하나 또는 그 이상의 가상 명칭 공간들을 관리하도록 구성된 스토리지 관리자; 및 상기 하나 또는 그 이상의 스토리지 장치들과 연관된 각각의 명칭 공간을 관리하도록 구성된 스토리지 장치 컨트롤러를 포함한다. 상기 스토리지 관리자는 상기 스토리지 노드가 충분한 스토리지 공간을 포함하는 경우, 상기 호스트 컴퓨터 상에서 구동하는 상기 애플리케이션의 요청에서 상기 스토리지 노드의 상기 하나 또는 그 이상의 로컬 스토리지 장치들 상의 요구에 따라서 가상 명칭 공간과 연관된 스토리지 공간을 확장하도록 더 구성된다. 상기 스토리지 노드가 불충분한 스토리지 공간을 포함하는 경우, 상기 스토리지 관리자는 네트워크 상에서 제2 스토리지 노드의 피어 스토리지 관리자와 통신하도록 구성되고, 상기 호스트 컴퓨터 상에서 구동하는 상기 애플리케이션의 상기 요청에서 상기 제2 스토리지 노드의 로컬 스토리지 장치 상의 요구에 따라서 상기 가상 명칭 공간과 연관된 상기 스토리지 공간을 확장하도록 더 구성된다.
본 발명의 다른 실시 예에 따르면, 스토리지 시스템은: 복수의 호스트 컴퓨터들; 및 네트워크를 통해 상기 복수의 호스트 컴퓨터들과 연결된 복수의 스토리지 노드들을 포함한다. 상기 복수의 스토리지 노드들은 스토리지 노드 컨트롤러를 포함하는 스토리지 노드를 포함한다. 상기 스토리지 노드 컨트롤러는: 호스트 컴퓨터 상에서 구동하는 애플리케이션과 연결되도록 구성된 호스트 인터페이스; 하나 또는 그 이상의 가상 명칭 공간들을 관리하도록 구성된 스토리지 관리자; 및 상기 하나 또는 그 이상의 스토리지 장치들과 연관된 각각의 명칭 공간을 관리하도록 구성된 스토리지 장치 컨트롤러를 포함한다. 상기 스토리지 관리자는 상기 스토리지 노드가 충분한 스토리지 공간을 포함하는 경우, 상기 호스트 컴퓨터 상에서 구동하는 상기 애플리케이션의 요청에서 상기 스토리지 노드의 상기 하나 또는 그 이상의 로컬 스토리지 장치들 상의 요구에 따라서 가상 명칭 공간과 연관된 스토리지 공간을 확장하도록 더 구성된다. 상기 스토리지 노드가 불충분한 스토리지 공간을 포함하는 경우, 상기 스토리지 관리자는 네트워크 상에서 제2 스토리지 노드의 피어 스토리지 관리자와 통신하도록 구성되고, 상기 호스트 컴퓨터 상에서 구동하는 상기 애플리케이션의 상기 요청에서 상기 제2 스토리지 노드의 로컬 스토리지 장치 상의 요구에 따라서 상기 가상 명칭 공간과 연관된 상기 스토리지 공간을 확장하도록 더 구성된다.
피어 스토리지 관리자로의 상기 통신은 그것의 NVMe 명칭 공간들의 상기 상태, 가용한 스토리지 용량, 사용된 공간 등을 가리키는 공유된(클러터된 또는 분산된) 정보(예를 들어, 모든 노드들의 스토리지 관리자 프로세스로부터 공유된 메타데이터 테이블)에 기반된다. 상기 스토리지 관리자 프로세스들 사이의 상기 피어 통신은 이러한 메타데이터 정보를 최신 상태로 동기하여 유지하는 것을 관리한다.
본 발명의 또 다른 실시 예에 따르면, 방법은: 가상 명칭 공간을 사용하여 제1 스토리지 노드의 제1 스토리지 장치에 스토리지 공간을 할당하는 단계; 호스트 컴퓨터 상에서 구동하는 애플리케이션으로부터 상기 스토리지 공간에 데이터를 저장하는 쓰기 요청을 수신하는 단계; 상기 할당된 스토리지 공간이 상기 쓰기 요청과 연관된 상기 데이터를 저장하는데 불충분한 스토리지 공간을 포함하는지 판별하는 단계; 상기 제1 스토리지 노드가 상기 데이터를 저장하는데 충분한 스토리지 공간을 포함하는 경우, 상기 제1 스토리지 노드에 추가적인 스토리지 공간을 포함시킴으로써 상기 스토리지 공간을 확장하는 단계; 상기 제1 스토리지 노드가 상기 데이터를 저장하는데 불충분한 스토리지 공간을 포함하는 경우 추가적인 스토리지 공간을 포함하는 제2 스토리지 노드를 식별하는 단계; 상기 제2 스토리지 노드와 협상하여 상기 추가적인 스토리지 공간을 할당하는 단계; 상기 제2 스토리지 노드에 상기 추가적으로 할당된 스토리지 공간을 포함시킴으로써 상기 스토리지 공간을 확장하는 단계; 상기 네트워크를 통한 상기 제1 스토리지 노드 및 상기 제2 스토리지 노드 사이의 피어-투-피어 통신에 의해 상기 제2 스토리지 노드에 상기 추가적으로 할당된 스토리지 공간으로 상기 데이터를 기입하는 단계; 및 글로벌 맵핑 테이블을 업데이트하여 상기 가상 명칭 공간의 맵핑 정보를 업데이트하는 단계를 포함한다.
구현의 다양한 새로운 설명들 및 이벤트들의 조합을 포함하는 상술되고 다른 적절한 특징들은 첨부된 도면들을 참조하여 더욱 상세하게 설명되고 특허청구범위에서 지칭될 것이다. 본문에서 기재된 특정한 시스템들 및 방법들은 단지 예시로 도시되고, 이에 제한되지 않음이 이해될 것이다. 당업자가 이해할 수 있는 바와 같이, 본문에 기재된 이론들 및 특징들은 본 발명의 사상으로부터의 벗어남 없이 다양하고 수많은 실시 예들에서 사용될 수 있다.
상세한 설명의 일부로서 포함된 첨부된 도면들은 본 발명의 적절한 실시 예들을 도시하고, 상술된 일반적인 설명과 함께 이하의 적절한 실시 예들의 상세한 설명은 본문에 기재된 이론들을 교시하고 설명하는 역할을 한다.
도 1은 일 실시 예에 따른, 온-디맨드(on-demand) 스토리지 프로비져닝을 제공할 수 있는 예시적인 프레임워크의 구성도이다.
도 2는 일 실시 예에 따른, 예시적인 프레임워크의 블록도이다.
도 3은 일 실시 예에 따른, 예시적인 스토리지 시스템의 블록도이다.
도 4는 일 실시 예에 따른, 스토리지 노드들의 클러스터에서 스토리지 공간을 동적으로 할당하는 순서도이다.
도면들은 필수적으로 계측되어 도시되지 않으며, 유사한 구조들 또는 기능들의 요소들은 도면 전체에 걸쳐 설명의 목적을 위하여 일반적으로 유사한 참조 번호로 표기된다. 도면들은 본문에 기재된 다양한 실시 예들의 설명을 용이하게 하도록 의도된다. 도면들은 본문에 기재된 교시들의 모든 사상을 설명하지 않으며, 특허청구범위를 제한하지 않는다.
본문에 기재된 특징들 및 교시들 각각은 다른 특징들 및 교시들과 관련되거나 또는 개별적으로 활용되어 온-디맨드 스토리지 프로비져닝 및 가상 명칭 공간 관리가 가능한 프레임워크를 제공할 수 있다. 다양한 추가적인 특징들 및 교시들을 활용하는 대표적인 실시 예들은, 개별적이거나 또는 조합되어, 첨부된 도면들을 참조하여 더욱 상세하게 설명된다. 이러한 상세한 설명은 단순히 당업자에게 본 발명의 양상들을 실시하기 위한 더욱 상세한 설명을 제시하도록 의도되며, 특허청구범위를 제한하지 않는다. 그러므로, 상세한 설명에서 상술된 특징들의 조합들은 가장 넓은 개념의 교시들을 실행하는데 필수적이지 않을 수 있으며, 본 발명의 교시들의 대표적인 실시 예들을 설명하는 것으로만 의도된다.
이하의 설명에서, 단순히 설명의 목적을 위하여, 특정 명명법(specific nomenclarure)은 상세한 설명의 전체적인 이해를 제공한다. 그러나 상세한 설명들이 본 발명의 교시들을 실행하는데 요구되지 않음이 당업자에게 이해될 것이다.
본문에서의 상세한 설명의 일부 부분들은 컴퓨터 메모리 내의 데이터 비트들에 대한 동작들의 기호적 표현 및 알고리즘들의 용어로 표현된다. 이러한 알고리즘적 설명들 및 기호들은 당업자에 의해 데이터 처리 분야에서, 다른 당업자에게 그들의 연구 내용의 효과적으로 전달하는데 사용된다. 알고리즘은 의도된 결과를 이끄는 단계들의 자가 지속 시퀀스인 것으로 이해된다. 단계들은 물리적인 양들의 물리적으로 조작하는 단계이다 . 일반적으로, 필수적이지는 않으나, 이러한 양들은 저장되고, 전송되고, 조합되고, 비교되고, 다르게 조잘될 수 있는 전기적 또는 자기적 신호들의 형태를 취할 수 있다. 주로 공통적인 사용의 이유로 이러한 신호를을 비트, 값, 요소, 기호, 문자, 용어, 숫자 등으로 참조하는 것이 편리하다고 입증되었다.
그러나 이러한 모든 것들 및 유사한 용어들은 적절한 물리량들과 연관되어야 하며, 단지 이러한 양들에 적용되는 라벨이라는 것을 염두해 두어야 한다. 이하의 설명으로부터 나타나는 바와 같이 특별하게 다르게 언급되지 않는 한, "처리(processing)", "연산(computing)", "계산(calculating)", "판별(determing)", "표시(displaying)" 등과 같은 용어들을 활용하는 설명들은 전체적으로 컴퓨터 시스템의 레지스터들 및 메모리들에서 물리(전자)량들로 표현되는 데이터를 컴퓨터 시스템 메모리들, 또는 레지스터들, 또는 다른 정보 저장, 전송 또는 표시 장치들 내에 물리량으로서 유사하게 표현되는 다른 데이터로 변환하고 변조하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 장치의 동작 및 프로세스들을 참조한다.
더욱이, 대표 실시 예들의 다양한 도면들 및 첨부된 특허청구범위는 본 발명의 추가적인 유용한 실시 예들을 제공하기 위하여 구체적이거나 또는 명시적으로 언급되지 않은 방식으로 조합될 수 있다. 또한 기업 집단의 모든 가치 범위들 또는 지시들은 최초 공개의 목적뿐만 아니라, 특허청구범위를 제한하는 목적을 위하여 모든 가능한 중가 가치 또는 중간 실체를 제공한다는 점을 명시한다. 또한 도면에 도시된 구성들의 형상들 및 치수들은 본 발명이 구현되는 방법의 이해를 돕기 위해 설계된 것으로서, 실시 예들에 도시된 형상들 및 치수들을 제한하지 않는다.
호스트 컴퓨터에서 구동하는 애플리케이션은 NVMe-기반의 SSD들에 대하여 장치 관리(device management) 및 데이터 스토리지 프로비져닝(storage provisioning)을 구동 중에(at run time) 요구할 수 있다. 호스트 컴퓨터 및 NVMe-기반의 SSD들 사이의 물리적 연결에 대한 요구들에 의해 부과된 온-디맨드 장치 관리 및 프로비져닝에 대한 제한들은 NVMe-SSD 장치들/명칭 공간들의 관리를 가상화함으로써 해결될 수 있다. 본 발명은 애플리케이션에 의해 소비되는 가상 디스크 객체들(virtual disk entities)(명칭 공간(namespaces)이라 불림)로부터 물리적 데이터 스토리지 장치들(예를 들어, NVMe-SSD 장치들)을 추출할 수 있는 프레임워크를 설명한다. 특히, 장치 관리 및 데이터 프로비져닝은 SaaS(SSD-as-a-Service)의 파운데이션들을 형성하는 분산된 스토리지 클러스터에서 가상 디스크들 및 가상 명칭 공간들을 사용하는 객체(object) 또는 키-밸류(KV; key-value) 저장소들에 대하여 최적화될 수 있다.
본 발명의 프레임워크는 애플리케이션 온-디맨드에 의해 사용되는 스토리지 NVMe 명칭 공간들을 생성하고 확장할 수 있고, 저장 공간의 동적이고 연속적인 프로비져닝을 제공할 수 있다. 본 발명의 프레임워크는 탄력적이고 온-디맨드 프로비져닝된 방식으로 분산된 스토리지 클러스터에서 객체들/KV의 저장소를 관리할 수 하고, 가상 디스크들 및 가상 명칭 공간들을 관리함으로써 디스크 사용을 최적화할 수 있다. 본 발명의 프레임워크는 클라우드 환경 또는 데이터 센터에서 SaaS(SSD-as-a-Service) 모델로서 내보내질 수 있다.
본 발명의 프레임워크는 네트워크(예를 들어, 이더넷(Ethernet), 파이버 채널(Fibre Channel), 및 인피니밴드(Infiniband)와 같은 패브릭 네트워크) 상의 스토리지 노드들의 클러스터를 통해 NVMe SSD들을 종합하고, 요구시 애플리케이션 온-디맨드로로 가상 디스크들을 제공한다. 이러한 가상 디스크들은 가상 명칭 공간 맵핑(virtual namespace mapping)을 통해 물리적 디스크들로 맵핑될 수 있다. 따라서, 가상 디스크는 물리적 디스크 또는 명칭 공간 자체로 맵핑될 수 있는 가상 명칭 공간으로 맵핑할 수 있다. 맵핑은 1:1:1 또는 1:M:N일 수 있다. 본 발명의 프레임워크는 복수의 스토리지 노드들을 통해 분산된 디스크들 및 그것들의 명칭 공간들을 지능적으로 관리하고 가상화함으로써, 동적으로(dinamically)(또는 탄력적으로(elastically)) 그리고 자동으로 가상 디스크 용량을 확장한다. 일 실시 예에서, 본 발명의 프레임워크는 애플리케이션을 인식하지 못하는 방식으로, 애플리케이션에서 분산된 NVMe-SSD 장치들의 명칭 공간들 및 분산된 NVMe-SSD 장치들을 관리하여 객체/KV 데이터를 저장하고 회수한다. 본 발명의 프레임워크는 데이터 및 관리 플레인들을 모두 관리할 수 있기 때문에, HA(High Availability)와 같은 다른 서비스들, 레플리케이션, 및 다른 스토리지 서비스들을 관리하거나 또는 포함하도록 확장될 수 있다. 이에 따라, 본 발명의 프레임워크는 클라우드 및 데이터 센터에서 SaaS(SSD-as-a-Service)를 이출(export)하는데 사용될 수 있다.
현재 가용한 NVMe 디스크들은 각 명칭 공간으로 하나의 NVMe-oF 연결만을 허용한다. 본 발명의 프레임워크는 물리적 NVMe 디스크들 및 명칭 공간들을 가상화하거나 또는 추출함으로써 이러한 제한들을 제거한다. 복수의 NVMe-oF 장치들을 통한 복수의 연결들은 데이터 센터 애플리케이션들이 HA(High Availability), 페일오버(Failover), 및 장애 복구(Disaster Recovery) 등과 같은 서비스 또는 분산된 스토리지 특징들을 제공하는데 유용할 수 있다.
일 실시 예에 따르면, 본 발명의 프레임워크는 백엔드 NVMe SSD로의 연결들을 수용하거나 또는 인터셉트하도록 지정된 노드 또는 각 스토리지 노드 상에 스토리지 노드 컨트롤러를 제공한다. 복수의 백엔드 NVMe SSD에 대해 지정된 노드 또는 스토리지 노드의 스토리지 노드 컨트롤러는 스토리지 노드들의 동일한 클러스터 또는 스토리지 풀에서 다른 노드들 상의 다른 피어 스토리지 노드 컨트롤러와 통신할 수 있다. 스토리지 노드 컨트롤러는 요청 애플리케이션과 기본 NVMe SSD들과 동일한 클러스터의 다른 스토리지 노드 컨트롤러들의 연결을 가능하게 할 수 있는 장치/노드-레벨의, 가벼운, 씬 소프트웨어 스택(또는 모듈)로서 구현될 수 있다. 스토리지 노드 컨트롤러들 사이의 피어-투-피어(peer-to-peer) 통신은 이더넷(Ethernet), 파이버 채널(Fibre Channel), 및 인피니밴드(Infiniband)와 같은 패브릭 네트워크 상에서 수행될 수 있다.
일 실시 예에 따르면, 본 발명의 프레임워크는 호스트 컴퓨터 상에서 구동하는 애플리케이션에 의해 백엔드에서 하나 또는 그 이상의 타겟 NVMe SSD들 또는 명칭 공간들로 발행된 NVMe/NVMe-oF 요청을 언터셉트하고, 자신의 가상 명칭 공간 캡슐화(encapsulation)로서 애플리케이션에 응답한다. 여기에서, NVMe-oF 요청은 애플리케이션에 의해 타겟 NVMe SSD들 또는 명칭 공간들로 발행된 데이터 경로 요청의 예이며, 물리적 연결(즉, PCIe 연결)을 통해 NVMe 커맨드들을 포함할 수 있다. 데이터 경로 요청은 I/O 커맨드들 및 어드민 커맨드들(admin commands) 모두를 포함할 수 있다. 본 발명의 프레임워크가 애플리케이션에 대한 오버헤드를 제거하여 NVMe SSD들로의 연결들을 수립하고 관리하기 때문에, 본 발명의 프레임워크는 물리적 연결뿐만 아니라, 가상 명칭 공간 캡슐화를 통한 논리적 연결을 지원할 수 있다. 더욱이 본 발명의 프레임워크는 물리적 연결들의 가용 개수로 제한되는 것 없이, 백엔드 NVMe SSD들로의 임의의 수의 연결들(가상 연결들)을 지원할 수 있다. NVMe 요청들의 경우에서, 각 NVMe SSD들 각각으로의 오직 하나의 물리적 연결만 PCIe 버스를 통해 가능하다.
본 발명의 프레임워크는 요구에 따라 하나 또는 그 이상의 백엔드 NVMe SSD들과의 연결들을 효율적으로 수립하고 관리할 수 있다. 본 발명의 프레임워크는 스토리지 노드들의 클러스터를 통한 피어 스토리지 노드 컨트롤러들 사이의 통신 프로토콜들을 제공하고, 클러스터를 통해 분산될 수 있는 백엔드 NVMe SSD로의 연결을 수립할 수 있다. 추가적으로, 본 발명의 프레임워크는 각 백엔드 NVMe SSD에 대하여 별도로 입력 및 출력을 위해 지정된 I/O 큐들에서 동작하고, 애플리케이션의 사용자 공간에서 스케쥴링될 수 있는 개별적이고, 가볍고, 빠르고, 동시적인 쓰레드들 또는 작업들을 통해 비동기적으로 입력/출력(I/O; input/output) 경로들을 관리할 수 있다. 실제 I/O 데이터 경로는 실제 구현 및 동작 환경에 따라 다른 최적화들을 포함할 수 있다. 예를 들어, 본 발명의 프레임워크의 I/O 데이터 경로는 사용자-모드 디스크 I/O 스케쥴링 및 커널 혹은 커널 모드 드라이버들의 개입 없이 사용자 공간으로부터의 직접 장치 액세스를 위해 최적화될 수 있다.
도 1은 일 실시 예에 따라, 온디맨드(on-demand) 스토리지 프로비져닝을 제공할 수 있는 예시적인 프레임워크의 구성도이다. 복수의 클라이언트 애플리케이션들(110a~110d)은 하나 또는 그 이상의 호스트 컴퓨터들(미도시) 상에서 구동한다. 일 실시 예에서, 각 클라이언트 애플리케이션(110)은 그것의 물리적 연결을 기반으로 노드(130)로 연결된다. 예를 들어, 클라이언트(110a)는 노드(130a)로 연결되고, 클라이언트(110b, 110d)는 노드(130b)로 연결된다. 다른 실시 예에서, 클라이언트(110) 및 노드(130) 사이의 연결은 이더넷, 파이버 채널, 및 인피니밴드와 같은 패브릭 네트워크(150) 상에 있을 수 있다. 각 노드(130)는 로컬 스토리지 장치(160)로의 연결들을 수립하고 관리할 수 있는 스토리지 컨트롤러(120)를 포함한다. 로컬 스토리지 장치(160)는 PCIe 버스를 통해 노드(130)로 연결될 수 있다. 추가적으로, 스토리지 컨트롤러(120)는 네트워크 연결을 통해 하나 또는 그 이상의 백엔드 스토리지 장치들(140)로의 연결들을 더 수립하고 관리할 수 있다. 노드(130) 및 백엔드 스토리지 장치들(140) 사이의 연결은 클라이언트들(110)을 노드들(130)로 연결하는 패브릭 네트워크(150)와 동일한 패브릭 네트워크를 통할 수 있다. 노드들(130)의 스토리지 컨트롤러들(120)은 패브릭 네트워크(150) 상에서 수립될 수 있거나 또는 최소 네트워크 레이턴시들을 보장하는 독립적인 백-채널일 수 있는 내부-노드 통신 경로를 통해 서로 통신할 수 있다.
도 2는 일 실시 예에 따른 예시적인 프레임워크의 블록도를 보여준다. 프레임워크(200)는 호스트(210a) 및 호스트(210b)를 포함하는 복수의 호스트들(210), 및 노드(230a) 및 노드(230b)를 포함하는 복수의 스토리지 노드들(230)을 포함한다. 호스트들 각각은 PCIe 버스를 통해 국부적으로 또는 네트워크(250)를 통해 원격으로 적어도 하나의 스토리지 노드(230)와 연결될 수 있다. 호스트(210) 및 스토리지 노드(230)가 PCIe 버스를 통해 연결된 경우, 호스트(210) 및 연결된 스토리지 노드(230)는 데이터센터의 동일한 랙에 위치할 수 있다.
스토리지 노드(230)는 스토리지 노드 컨트롤러(220) 및 하나 또는 그 이상의 로컬 스토리지 장치들(260)을 포함한다. 스토리지 노드들의 클러스터 내의 복수의 노드들(230) 중에, 각 스토리지 노드(230)는 각 스토리지 노드(230)는 스토리지 노드 컨트롤러(220)를 포함할 수 있다. 일부 실시 예에서, 스토리지 노드(230)는 연결된 물리 디스크들(260)(예를 들어, 백엔드 NVMe SSD들) 및 그것들의 연관된 명칭 공간들을 관리하는 서비스를 제공하도록 지정될 수 있다.
각 스토리지 노드 컨트롤러(220)는 호스트 연결 관리자(221), 명칭 공간(NS; namespace)/디스크 관리자(222), 및 NVMe 컨트롤러(223)를 포함한다. 호스트 연결 관리자(221)는 호스트(210)상에서 구동하는 애플리케이션들 및 노드(230)사이의 국부적인 또는 네트워크(250)상의 연결을 관리한다.
호스트 연결 관리자(221)는 클라이언트 애플리케이션으로부터 수신된 요청을 처리하고 NS/디스크 관리자(222)로 제공한다. 여기에서, NS/디스크 관리자(222)는, 그것이 가상 명칭 공간을 사용하여 원격 노드에서 네트워크-연결된 스토리지 장치로의 연결을 관리하기 때문에, 스토리지 장치 관리자 또는 가상 명칭 공간 관리자로 지칭될 수 있다. 예를 들어, 호스트 연결 관리자(221)는 클라이언트 애플리케이션으로부터의 NVMe-oF 요청들을 인터셉트하고, 추가 처리를 위하여, NVMe-oF 요청들을 NS/디스크 관리자(222)로 제공한다. NS/디스크 관리자(222)는 하나 또는 그 이상의 백엔드 NVMe SSD들(260)로의 연결들 및 국부적으로 또는 원격으로 동일한 클러스터 내의 패브릭 네트워트를 통할 수 있는 백엔드 NVMe SSD들(260)의 하나 또는 그 이상의 가상 명칭 공간들로의 맵핑을 관리한다. 원격 백엔드 SSD(260)의 가상 명칭 공간들로의 맵핑은 2개의 NS/디스크 관리자들(222) 사이의 피어-투-피어 연결(peer-to-peer connection)을 통해 수행될 수 있다.
NVMe 컨트롤러(223)는 부착된 백엔드 NVMe SSD들(260)로의 I/O 데이터 경로 및 연결을 수립하고, 제어하고, 관리할 수 있고, 명칭 공간 식별자(nsid; namespace identifier)를 할당할 수 있다. 연결이 수립된 이후에, NVMe 컨트롤러(223)는 명칭 공간 식별자를 사용하여 명칭 공간으로 및 명칭 공간으로부터 I/O 데이터를 라우팅할 수 있다.
여기에서, 명칭 공간(NS)은 각각의 NVMe SSD(260)에 어드레싱 가능한 논리 블록 어드레스들(LBA; logical block addresses)의 리스트를 참조한다. 본 발명의 실시 예에서, 노드(230a)는 하나 또는 그 이상의 NVMe SSD들(260a, 260b)을 포함한다. 하나 또는 그 이상의 NVMe SSD들(260a, 260b)은 그것의 유일한 식별자들(nsid1, nsid2)을 사용하는 그것들의 명칭 공간들(NS A, NS B)에 의해 지정될 수 있다. 유사하게, 노드(230b)는 하나 또는 그 이상의 NVMe SSD들(260c, 260d)을 포함할 수 있다. 하나 또는 그 이상의 NVMe SSD들(260c, 260d)은 그것의 식별자들(nsid3, nsid4)을 사용하여 그것들의 명칭 공간들(ns c, ns d)에 의해 어드레싱 가능하다.
일 실시 예에 따르면, NS/디스크 관리자(222)는 하나 또는 그 이상의 스토리지 장치들(260) 및 그것들과 연관될 수 있는 그것의 명칭 공간들을 본 발명의 프레임워크(200)를 사용하여 다른 노드로 가상으로 맵핑할 수 있다. 가상으로 맵핑된 명칭 공간들은 가상 명칭 공간들(VNS; virtual namespaces)로 본문에서 명명된다. NVMe SSD들의 명칭 공간들(NS)과 가상 명칭 공간들(NVS) 사이의 연관을 지원하기 위하여, NS/디스크 관리자(222)는 노드(220)에 대해 로컬 또는 원격일 수 있는 특정 노드(220)의 NVMe SSD들(260)과 연관될 수 있는 가상 명칭 공간들을 수립하고, 제어하고, 관리할 수 있다. 이와 비교하여, NVMe 컨트롤러(223)는 물리적으로 연결된 로컬 NVMe SSD들(260)과 연관된 명칭 공간들(NS)을 수립하고, 제어하고, 관리할 수 있다. 가상 명칭 공간은 클러스터를 통해 분산될 수 있는 하나 또는 그 이상의 명칭 공간들로 맵핑될 수 있으나, NS/디스크 관리자(222)는 NVMe 컨트롤러(223)에 의해 관리되는 명칭 공간들(NS)로부터 독립적으로 가상 명칭 공간들을 관리한다.
NS/디스크 관리자(222)는 호스트(210)의 운영 체제의 구성 및 가상화 스킴에 따라, NVMe SSD(260)의 명칭 공간(NS)을 하나 또는 그 이상의 가상 명칭 공간들로 연관시킬 수 있다. NS/디스크 관리자(222)의 가상 명칭 공간 맵핑 능력을 사용하여, 본 발명의 프레임워크(200)는 애플리케이션으로부터의 요청에서 요구에 따라, 스토리지 공간을 탄력적으로 확장하거나 또는 축소할 수 있다.
본 발명의 실시 예에서, NS/디크스 관리자(222a)는 가상 명칭 공간(vnsid200)을 2개의 분산된 명칭 공간들(NS B 및 NS C)로 맵핑한다. 명칭 공간(NS B)은 노드(220a)의 NVMe 컨트롤러(223a)에 물리적으로 부착되고, 명칭 공간(NS C)은 노드(220b)의 NVMe 컨트롤러(223b)에 물리적으로 부착된다. 스토리지 노드 컨트롤러(220a)는 패브릭 네트워크(250) 상의 분산된 메타데이터를 사용함으로써, 맵핑(가상 맵핑을 포함함)을 내부적으로 관리할 수 있다. 가상 맵핑 및 분산된 스토리지 설정 및 연결들이 피어 NS/디스크 관리자들(222)을 통해 수행되기 때문에, 본 발명의 프레임워크(200)에 의한 가상 명칭 공간들로의 맵핑은 호스트(210)(또는 호스트(210) 상에서 구동하는 클라이언트 애플리케이션) 또는 백엔드 NVMe SSD들(260)에게 식별되지 않는다.
분산된 메타데이터는 NS/디스크 관리자(222)에 의해 액세스될 수 있는 메타데이터 테이블에 저장될 수 있다. 글로벌 메타데이터 테이블은 호스트에서 모든 디스크들/명칭 공간들에 대하여, 단위-호스트 레벨에서 사용/프리/가용 공간(use/free/available space)의 정보를 저장한다. 메타데이터 테이블은 클러스터 레벨에서 글로벌 또는 공유된 정보로서 유지될 수 있다. 공간 요청들이 빈번하지 않기 때문에, 메타데이터 테이블의 업데이트들은 자주 일어나지 않을 수 있다. 본 발명의 실시 예에서, NS/디스크 관리자(222a)는 메타데이터 테이블을 검색하여 클러스터에서 필요한 디스크 공간의 가용량을 확인하고, NS/디스크 관리자(222b)로 요청을 전송하여 명칭 공간(NS C)를 맵핑한다.
본 발명의 프레임워크(200)는 분산된 네트워크(250)의 NVMe SSD들(260)을 스토리지의 단일 풀로서 통합하고, 요청된 스토리지 용량에 따라 가상 명칭 공간들을 탄력적으로 확장하거나 또는 축소하고, 가상 디스크 또는 가상 명칭 공간을 클라이언트 애플리케이션에 제공한다. 본 발명의 프레임워크(200)는 요구에 따라 원격 스토리지 장치들 및 그것들의 가상 명칭 공간들로의 복수의 연결들을 수립할 수 있고, NS/디스크 관리자들(222)의 네트워크를 사용하여 연결들을 내부적으로 관리할 수 있다. 각 NS/디스크 관리자(222)는 부착된 NVMe SSD들(260)로의 물리적 연결을 관리하는 노드들에 배치되는 장치/노드-레벨, 가볍고, 얇은 소프트웨어 스택(또는 모듈)일 수 있다.
비록 본 발명의 실시 예는 2개의 호스트들(210) 및 2개의 노드들(230)을 보여주고 있으나, 임의의 수의 호스트들 및 노드들이 스토리지 노드들의 클러스터에 존재할 수 있음이 이해될 것이다. 추가적으로, 본 발명의 실시 예들은 각 노드(230)가 NVMe SSD들(260)을 포함하고, 각 NVMe SSD(260)가 그것의 유일한 명칭 공간 식별자에 의해 관리될 수 있을 보여준다. 다른 다수의 그리고 임의의 수 및 임의 형태의 스토리지 장치들이 각 노드(230)에 존재할 수 있음이 이해될 것이다. 예를 들어, 스토리지 장치(260)는 NVMe SSD 또는 NVMe-oF SSD일 수 있다.
도 3은 일 실시 예에 따른, 예시적인 스토리지 시스템의 블록도를 보여준다. 스토리지 시스템(300)은 본 발명의 프레임워크를 사용하여 호스트 컴퓨터(미도시) 상에서 구동하는 클라이언트 애플리케이션(301)과 복수의 스토리지 노드들(330) 또는 스토리지 장치들(370) 사이의 스토리지 공간의 프로비져닝을 가능하게 한다. 스토리지 노드(330)는 스토리지 노드(330)의 하나 또는 그 이상의 스토리지 장치들(370)을 제어할 수 있는 스토리지 노드 컨트롤러(예를 들어, 도 2의 스토리지 노드 컨트롤러들(220a, 220b))를 포함한다. 각 스토리지 노드 컨트롤러는 패브릭 네트워크(350)를 통해 다른 스토리지 노드 컨트롤러들로 연결될 수 있다. 패브릭 네트워크(350)는 백-채널 또는 내부 통신 네트워크 또는 관리 채널로서 지칭될 수 있다. 각 스토리지 노드 컨트롤러는 클라이언트 애플리케이션들(301)에 대한 마운트 포인트들을 이출(export)하여, 분산된 스토리지 장치들(370) 상에 정규 블록 읽기/쓰기 및 객체/KV 저장소들을 마운트하고 개시할 수 있다. 이출된 마운트 포인트는 스토리지 노드 컨트롤러 자체에 직접 부착되는 백엔드에서 또는 패브릭 네트워크(350)를 통한 다른 피어 스토리지 노드(330)에서 물리적 스토리지 장치로 부착된 실제 물리적 명칭 공간으로의 가상 명칭 공간들의 맵핑에 의해 식별된다. 각 가상 명칭 공간은 유일한 가상 명칭 공간 식별자(vnsid)를 포함한다. 가상 명칭 공간 식별자들의 할당은 스토리지 시스템(300)의 피어 스토리지 컨트롤러들과의 합의(consensus)에 의해 수행될 수 있다. 가상 명칭 공간 식별자들의 할당 및 분산은 연결 요청이 도달한 경우 동적으로 관리될 수 있거나 또는 연역적(a priori)으로 연산될 수 있다. 합의 알고리즘(consensus algorithm)은 본 발명의 기술 분야에서 잘 알려진 제너릭 분산된 합의 알고리즘(generic distributed consensus algorithm)일 수 있거나, 또는 가상 명칭 공간 테이블에 위치하고, 공유 스토리지를 통해 모든 스토리지 컨트롤러들에 의해 접근되거나 또는 스토리지 시스템(300)의 일부인 단일 스토리지 노드 컨트롤러에 의해 아토믹하게 갱신될 때 모든 스토리지 노드로 단순히 분산되고 복사된 단순한 식별자일 수 있다.
예를 들어, 마운트 포인트/mnt/NVMe0n1은 vnsids의 세트를 포함하는 가상 명칭 공간 테이블을 포함한다.
{ vnsid1=(IP addr1, nsid-xyz),
vnsid2=(IP addr2, nsid-xyz),
vnsid2=(IP addr3, nsid-xyz)
}.
vnid들은 컨트롤러ID-NSID를 활용하여 생성될 수 있고, IP 어드레스와 연관되어 컨트롤러 마이그레이션을 도울 수 있다. 또 다른 실시 예에서, vnsid는 NVMe 컨트롤러들 및 그것들의 명칭 공간들을 포함하는 서브시스템ID를 활용하여 생성될 수 있다. vnsid들은 추론(inference)에 의해 생성될 수 있다.
클라이언트 애플리케이션에 영향을 주지 않고, 새로운 NVMe-oF SSD들이 마운트 포인트로 추가되거나 또는 제거되어 더큰 스토리지 공간을 쉽게 생성할 수 있기 때문에, 맵핑 테이블은 요구에 따라 확장될 수 있다. 클라이언트 애플리케이션은 초기 용량의 명칭 공간을 요청할 수 있고, 클라이언트 애플리케이션이 초기에 할당된 용량을 소모할 수 있기 때문에, 요구에 따라 초기 스토리지 용량을 증가 또는 축소시킬 수 있다. 인터페이스/API(application programming interface) 옵션은 연결 셋업 시간에 및/또는 확장된 NVMe 커맨드 세트의 일부로서 프레임워크로 전달될 수 있다. 본 발명의 프레임워크는 구동 중에 명칭 공간을 확장함으로써 쓰기 요청을 관리하거나 또는 초기에 협상된 용량 이상의 쓰기를 시도하는 클라이언트 애플리케이션(요청한 애플리케이션을 감지하지 못함)에서 실패할 수 있다.
일 실시 예에 따르면, 본 발명의 프레임워크는 피어 스토리지 컨트롤러들 사이의 통신들을 조직화하여 할당된 가상 명칭 공간 식별자들이 유일하도록 보장할 수 있다. 추가적으로, 프레임워크는 데이터 스토리지 공간(또는 객체 또는 키-밸류)이 특정 명칭 공간으로 할당되거나 또는 기입될 때 발생할 수 있는 복합성(complexities)을 관리할 수 있고, 글로벌 메타데이터 및 매핑 테이블 메커니즘들을 통해 데이터 스토리지 공간이 하나 또는 그 이상의 물리 명칭 공간들의 가상 추가에 의해 다른 물리적 스토리지 노드들로 확장될 수 있다.
일 실시 예에 따르면, 본 발명의 프레임워크는 가상 명칭 공간들을 통해 객체 요청들(읽기/쓰기)를 관리할 수 있다. 예를 들어, 애플리케이션은 제1 스토리지 노드(SN1)와 연결되고, 스토리지 노드(SN1)의 스토리지 노드 컨트롤러는 vnsid100으로표시된 가상 명칭 공간을 애플리케이션으로 할당한다. 가상 명칭 공간(vnsid100)이 할당되는 동안, 스토리지 노드 컨트롤러는 초기에 할당된 스토리지 공간을 채우는 가상 명칭 공간(vnsid100)에 걸쳐 있을 수 있는 대형 객체(VLOB_100)을 생성할 수 있다. 가상 명칭 공간의 할당은 API 커맨드, 예를 들어, "PUT key-vlob100"을 호출함으로써, 애플리케이션에 의해 수행될 수 있다. 객체(VLOB_100)는 로컬 DAS(direct attached storage) 또는 부분적으로 원격 스토리지 노드의 다른 물리적 스토리지 장치중 어느 하나의 스토리지 노드(SN1)에 전적으로 위치할 수 있다. 스토리지 노드 컨트롤러는 하나 또는 그 이상의 구성 드라이브 명칭 공간들로의 요구에 따른 객체(VLOB_100)의 할당 및 가상 명칭 공간의 관리 및 생성을 관리한다. 객체(VLOB_100)를 할당한 이후에, 스토리지 노드 컨트롤러는 객체(VLOB_100)가 성공적으로 할당되었음을 알리기 위해 애플리케이션과 통신하고, 애플리케이션은 애플리케이션 측에서 객체(VLOB_100)를 갱신하고, 할당된 스토리지 공간을 사용하기 시작한다.
초기에 할당된 공간을 사용하는 동안, 애플리케이션은 초기에 할당된 스토리지 공간을 전체적으로 소모할 수 있다. 이 경우에, 기본 스토리지 장치에서 COW(copy-to-write) 커맨드로 변환하는 애플리케이션에 의한 객체 풋 커맨드(object put command)는 에러(예를 들어, ENOSPACE)를 반환할 수 있다. 스토리지 노드 컨트롤러는 추가적인 스토리지 공간을 할당함으로써, 에러를 인터셉트하고, 관리할 수 있다.
스토리지 노드 컨트롤러는 다른 명칭 공간을 할당하고, 그것을 현재 명칭 공간에 첨부함(기입함)으로써, 명칭 공간을 확장할 수 있다. 예를 들어, IP 어드레스(IPaddr2)와 함께 스토리지 노드(SN2)에 추가적인 스토리지 공간을 할당함으로써, 이전 vnsid = (IPaddr1, nsid-nvme0)가 vnsid100 = {(IPaddr1, nsid-nvme0), (IPaddr2, nsid-nvme9)}로서 업데이트될 수 있다. 스토리지 노드(SN2)와 협상 이후에, 객체(VLOB_100)는 스토리지 노드(SN2)에 속하는 물리적 스토리지 장치를 통해 확장될 수 있고, VLOB_100의 초과된 컨텐츠는 스토리지 노드(SN2)에서 가용한 물리적 스토리지 장치로 기입될 수 있다. 물리적 명칭 공간(nsid-nvme9)은 로컬 스토리지 노드(SN2)의 nvme9로 표시된 물리적 스토리지 장치로 맵핑된다.
객체 또는 KV 데이터의 READ들 또는 GET들과 같은 다른 커맨드들은 실질적으로 유사한 절차로 진행될 수 있다. 글로벌 맵핑 테이블은 업데이트된 가상 명칭 공간 식별자들을 저장한다. 글로벌 맵핑 테이블에서의 vnsid 색인은 특정 객체에 대한 맵핑 정보를 가리킨다. 병렬 읽기들은 가상 명칭 공간을 형성하는 스토리지 노드들의 명칭 공간들 또는 스토리지 노드들을 통해 객체의 모든 청크들을 읽기 위해 수행될 수 있다. 글로벌 메타데이터는 본 발명의 프레임워크에 의해 분산된 방식으로 유지될 수 있다.
동일한 애플리케이션 또는 다른 애플리케이션들이 객체(VLOB_100)와 연관된 데이터를 요청하는 경우, 본 발명의 프레임워크는 VLOB_100의 최신 사본을 클러스터로부터 요청 애플리케이션으로 반환하는 기능을 포함한다. 프레임워크는 타임스탬프와 함께 버전-스탬프를 사용하여 각 객체를 버저닝함으로써, 상술된 것을 수행할 수 있다. 예를 들어, (IPaddr1, nsid-NVMe0) 상의 VLOB_100의 제1 사본(현재 오래됨)은 삭제(deletion)를 위해 마킹되고, 스토리지 노드(sn1)는 가비지 콜렉션(애플리케이션이 명시적인 DELETE 객체 요청을 통해 TRIM 커맨드를 전송하지 않으면)에서 VLOB_100의 로컬 사본을 삭제하도록 시도한다. 스토리지 노드(sn1)가 가비지 콜렉션(GC; garbage collection)을 완료한 경우, 스토리지 노드(sn1)는 VLOB_100의 제1 사본을 완전히 소거하고, 프레임워크는 VLOB_100의 클러스터 내부 위치를 (IPaddr2, nsid-nvme9)로 업데이트한다.
도 4는 일 실시 예에 따른, 스토리지 노드의 클러스터에서 스토리지 공간을 동적으로 할당하는 순서도이다. 클라이언트 애플리케이션은 초기 스토리지 용량의 명칭 공간을 제1 스토리지 노드로 요청한다. 이에 응답하여, 제1 스토리지 노드의 스토리지 관리자는 제1 스토리지 노드의 제1 스토리지 장치에 스토리지 공간을 할당하고, 할당된 스토리지 공간으로 가상 명칭 공간을 부여한다(401). 스토리지 관리자는 클라이언트 애플리케이션으로부터 스토리지 공간에 데이터를 저장하기 위한 쓰기 요청을 수신한다(402). 제1 스토리지 장치에 초기에 할당된 스토리지 공간은 데이터를 저장하는데 불충분(insufficient)할 수 있다. 이 경우, 스토리지 관리자는 현재 할당된 스토리지 공간이 쓰기 요청과 연관된 데이터를 저장하는데 충분한 스토리지 공간을 포함하는지 체크한다(403). 할당된 스토리지 공간이 충분한 경우, 스토리지 관리자는 할당된 스토리지 공간으로 데이터를 기입하고(413), 이에 따라 글로벌 맵핑 테이블을 업데이트한다(409). 그렇지 않은 경우, 스토리지 관리자는 연관된 스토리지 노드(제1 스토리지 노드)가 데이터를 기입하기 위한 로컬 디스크 공간을 포함하는지 체크한다(404). 추가적인 로컬 디스크 공간이 가용한 경우, 스토리지 관리자는 로컬 디스크 공간에서 스토리지 공간을 확장하고(414), 로컬 디스크 공간에서 추가적으로 할당된 스토리지 공간에 데이터를 기입하고(408), 이에 따라 글로벌 맵핑 테이블을 업데이트한다(409). 로컬 디스크 공간이 가용하지 않은 경우, 스토리지 관리자는 글로벌 맵핑 테이블을 검색함으로써, 추가적인 스토리지 공간을 포함하는 제2 스토리지 노드를 식별한다(405). 스토리지 시스템의 스토리지 관리자들이 수립된 네트워크를 통해 서로 통신할 수 있기 때문에, 스토리지 관리자는 동일한 클러스터의 다른 스토리지 노드들에서의 추가적인 스토리지 공간의 가용성에 관한 정보를 포함할 수 있다. 제1 스토리지 노드의 스토리지 관리자는 추가적인 스토리지 공간을 할당하기 위해 제2 스토리지 노드의 스토리지 관리자와 협상한다(406). 협상이 성공된 경우(407), 제1 스토리지 노드의 스토리지 관리자는 초기에 할당된 스토리지 공간을 확장하여 제2 노드의 제2 스토리지 장치에 추가적으로 할당된 스토리지 공간을 포함시킨다(417). 협상이 실패한 경우, 제1 스토리지 노드의 스토리지 관리자는 다른 스토리지 노드들과 통신하여 스토리지 공간을 확장한다. 제1 스토리지 노드의 스토리지 관리자는 네트워크를 통한 제1 스토리지 노드 및 제2 스토리지 노드 사이의 피어-투-피어 통신에 의해 제2 스토리지 노드에서 추가적으로 할당된 스토리지 공간에 데이터를 기입하고(408), 글로벌 맵핑 테이블을 업데이트하여 가상 명칭 공간의 맵핑 정보를 업데이트 한다(409).
본 발명의 프레임 워크는 각 객체가 클러스터의 하나의 스토리지 노드(SN)에 의해서만 관리되는 것을 보장하는 범위로 해싱하는 것으로 가정한다. 이러한 일관된 해시 알고리즘은 클러스터의 모든 스토리지 노드들로 알려져 있으므로, VLOB_100에 대한 요청은 상술된 예에서 SN1로 보내지고, 이에 따라 객체 데이터에 읽기들에 대한 엄격한 일관성이 보장된다. 본 발명의 프레임 워크는 패브릭 네트워크 상의 클러스터의 복수의 스토리지 노드들을 통해 객체들을 확장하고 복제할 수 있고, 복제본에서 객체들을 추가로 캐싱할 수 있고, 지정된 복제본들에서 객체들을 무효화시킴으로써 성능 및 능력을 향상시킬 수 있다.
일 실시 예에 따르면, 스토리지 노드들의 클러스터의 스토리지 노드는: 하나 또는 그 이상의 로컬 스토리지 장치들; 및 스토리지 노드 컨트롤러를 포함한다. 스토리지 노드 컨트롤러는: 호스트 컴퓨터 상에서 구동하는 애플리케이션과 연결되도록 구성된 호스트 인터페이스; 하나 또는 그 이상의 가상 명칭 공간들을 관리하도록 구성된 스토리지 관리자; 및 하나 또는 그 이상의 스토리지 장치들과 연관된 각각의 명칭 공간을 관리하도록 구성된 스토리지 장치 컨트롤러를 포함한다. 스토리지 노드가 충분한 스토리지 공간을 포함하는 경우, 스토리지 관리자는 호스트 컴퓨터 상에서 구동하는 애플리케이션의 요청에서 스토리지 노드의 하나 또는 그 이상의 로컬 스토리지 장치들에서 요구에 따라 가상 명칭 공간과 연관된 스토리지 공간을 확장하도록 더 구성된다. 스토리지 노드가 불충분한 공간을 포함하는 경우, 스토리지 관리자는 네트워크 상의 제2 스토리지 노드의 피어 스토리지 관리자와 통신하도록 구성되고, 호스트 컴퓨터 상에서 구동하는 애플리케이션의 요청에서 제2 스토리지 노드의 로컬 스토리지 장치에서 요구에 따라 가상 명칭 공간과 연관된 스토리지 공간을 확장하도록 구성된다.
하나 또는 그 이상의 스토리지 장치들은 PCIe 버스를 통해 스토리지 노드 컨트롤러와 연결될 수 있다.
하나 또는 그 이상의 로컬 스토리지 장치들은 NVMe(nonvolatile memory express) 장치들일 수 있다.
네트워크는 패브릭 네트워크일 수 있다.
패브릭 네트워크는 이더넷(Ethernet), 파이버 채널(Fibre Channel), 및 인피니밴드(Infiniband) 중 하나일 수 있다.
스토리지 공간이 제2 스토리지 노드로 확장된 이후에, 스토리지 관리자는 글로벌 맵핑 테이블을 업데이트하여 가상 명칭 공간을 업데이트할 수 있다.
가상 명칭 공간은 제2 스토리지 노드의 적어도 하나의 스토리지 장치로 전체적으로 또는 부분적으로 맵핑될 수 있고, 제2 스토리지 노드의 적어도 하나의 스토리지 장치에 저장된 데이터를 액세스하는 요청은 스토리지 노드의 스토리지 관리자 및 제2 노드의 피어 스토리지 공간 관리자 사이의 피어-투-피어 통신(peer-to-peer communication)에 의해 처리될 수 있다.
스토리지 공간에 저장된 데이터는 객체(object) 또는 키-밸류(KV; key-value) 데이터일 수 있다.
다른 실시 예에 따르면, 스토리지 시스템은: 복수의 호스트 컴퓨터들; 및 네트워크를 통해 복수의 호스트 컴퓨터들과 연결된 복수의 스토리지 노드들을 포함한다. 복수의 스토리지 노드들은 스토리지 노드 컨트롤러를 포함하는 스토리지 노드를 포함한다. 스토리지 노드 컨트롤러는 호스트 컴퓨터 상에서 구동하는 애플리케이션과 연결되도록 구성된 호스트 인터페이스; 하나 또는 그 이상의 가상 명칭 공간들을 관리하도록 구성된 스토리지 관리자; 및 하나 또는 그 이상의 스토리지 장치들과 연관된 각각의 명칭 공간을 관리하도록 구성된 스토리지 장치 컨트롤러를 포함한다. 스토리지 노드가 충분한 스토리지 공간을 포함하는 경우, 스토리지 관리자는 호스트 컴퓨터 상에서 구동하는 애플리케이션의 요청에서 스토리지 노드의 하나 또는 그 이상의 로컬 스토리지 장치들 상에서 요구에 따라 가상 명칭 공간과 연관된 스토리지 공간을 확장하도록 더 구성된다. 스토리지 노드가 불충분한 공간을 포함하는 경우, 스토리지 관리자는 네트워크 상의 제2 스토리지 노드의 피어 스토리지 관리자와 통신하도록 구성되고, 호스트 컴퓨터 상에서 구동하는 애플리케이션의 요청에서 제2 스토리지 노드의 로컬 스토리지 장치 상에서 요구에 따라 가상 명칭 공간과 연관된 스토리지 공간을 확장하도록 구성된다.
스토리지 시스템은 스토리지 공간이 제2 스토리지 노드로 확장된 이후에, 가상 명칭 공간을 업데이트하는 글로벌 맵핑 테이블을 더 포함할 수 있다.
제2 스토리지 노드의 로컬 스토리지 장치는 PCIe 버스를 통해 제2 스토리지 노드 컨트롤러와 연결될 수 있다.
제2 스토리지 노드의 로컬 스토리지 장치는 NVMe(nonvolatile memory express) 장치일 수 있다.
네트워크는 패브릭 네트워크일 수 있다.
패브릭 네트워크는 이더넷(Ethernet), 파이버 채널(Fibre Channel), 및 인피니밴드(Infiniband) 중 하나일 수 있다.
스토리지 공간에 저장된 데이터는 객체(object) 또는 키-밸류(KV; key-value) 데이터일 수 있다.
또 다른 실시 예에 따르면, 방법은: 가상 명칭 공간을 사용하여 제1 스토리지 노드의 제1 스토리지 장치에 스토리지 공간을 할당하는 단계; 호스트 컴퓨터 상에서 구동하는 애플리케이션으로부터 스토리지 공간에 데이터를 저장하기 위한 쓰기 요청을 수신하는 단계; 할당된 스토리지 공간이 쓰기 요청과 연관된 데이터를 저장하는데 불충분한 스토리지 공간을 포함하는것으로 판별하는 단계; 제1 스토리지 노드가 데이터를 저장하는데 충분한 스토리지 공간을 포함하는 경우 제1 스토리지 노드로 추가 스토리지 공간을 포함시킴으로써 스토리지 공간을 확장하는 단계; 제1 스토리지 노드의 추가 스토리지 공간에 데이터를 기입하는 단계; 제1 스토리지 노드가 데이터를 저장하는데 불충분한 스토리지 공간을 포함하는 경우, 추가 스토리지 공간을 포함하는 제2 스토리지 노드를 식별하는 단계; 제2 스토리지 노드와 협상하여 추가 스토리지 공간을 할당하는 단계; 제2 스토리지 노드에 추가적으로 할당된 스토리지 공간을 포함함으로써 스토리지 공간을 확장하는 단계; 네트워크를 통한 제1 스토리지 노드 및 제2 스토리지 노드 사이의 피어-투-피어 통신(peer-to-peer communication)에 의해 제2 스토리지 노드에 추가적으로 할당된 스토리지 공간에 데이터를 기입하는 단계; 및 글로벌 맵핑 테이블을 업데이트하여 가상 명칭 공간의 맵핑 정보를 업데이트하는 단계를 포함한다.
방법은: 제1 스토리지 노드의 스토리지 장치 컨트롤러로부터 에러를 인터셉트하는 단계; 및 제2 스토리지 노드가 추가 스토리지 공간을 포함하는 것을 식별하는 단계를 더 포함할 수 있다.
방법은: 제1 스토리지 노드의 제1 스토리지 장치 및 제2 스토리지 노드의 제2 스토리지 장치를 병렬로 액세스하는 단계를 더 포함할 수 있다.
방법은: 제1 스토리지 장치에 저장된 데이터를 무효화하는 단계; 제1 스토리지 장치에 저장된 데이터의 로컬 사본을 삭제하는 단계; 및 가상 명칭 공간을 업데이트하여 제2 스토리지 노드의 제2 스토리지 장치로 맵핑하는 단계를 더 포함할 수 있다.
스토리지 공간에 포함된 데이터는 객체(object) 또는 키-밸류(KV; key-value) 데이터일 수 있다.
상술된 예시적인 실시 예들은 분산된 방식으로 물리적 스토리지 노드들을 통한 확장 및 가상 명칭 공간 관리와 함께 프레임워크에 의한 객체 읽기 및 쓰기 동작들을 관리하는 것 및 가상 명칭 공간 관리을 사용하는 온-디맨드 스토리지 프로비져닝을 제공하는 시스템 및 방법을 구현하는 다양한 실시 예들을 보여주기 위해 설명되었다. 기재된 예시적인 실시 예들로부터의 다양한 변형들은 당업자의해 수행될 수 있다. 본 발명의 범위 내에 있는 구성은 이하의 특허청구범위에서 설명된다.

Claims (10)

  1. 스토리지 노드에 있어서,
    하나 또는 그 이상의 로컬 스토리지 장치들; 및
    스토리지 노드 컨트롤러를 포함하고,
    상기 스토리지 노드 컨트롤러는:
    호스트 컴퓨터 상에서 구동하는 클라이언트 애플리케이션과 연결되도록 구성된 호스트 인터페이스;
    하나 또는 그 이상의 가상 명칭 공간들을 관리하도록 구성된 스토리지 관리자; 및
    상기 하나 또는 그 이상의 로컬 스토리지 장치들을 액세스하고, 상기 하나 또는 그 이상의 스토리지 장치들과 연관된 각각의 명칭 공간을 관리하도록 구성된 스토리지 장치 컨트롤러를 포함하고,
    상기 스토리지 관리자는 상기 하나 또는 그 이상의 스토리지 장치들과 연관된 상기 각각의 명칭 공간으로의 상기 하나 또는 그 이상의 가상 명칭 공간들의 맵핑을 제공하도록 더 구성되고,
    상기 스토리지 관리자는 상기 클라이언트 애플리케이션에 의해 사용되는 가상 명칭 공간과 관련된 현재 스토리지 공간이 상기 클라이언트 애플리케이션에 의한 요청에 응답하여 데이터를 저장하기 불충분한지 판별하고, 상기 클라이언트 애플리케이션에 의한 상기 현재 스토리지 공간의 소비를 기반으로 상기 스토리지 노드의 상기 하나 또는 그 이상의 로컬 스토리지 장치들 상의 상기 가상 명칭 공간과 연관된 상기 스토리지 공간을 확장하도록 더 구성되고,
    상기 스토리지 관리자는 상기 스토리지 노드가 불충분한 스토리지 공간을 갖는지 판별하고, 네트워크를 통해 제2 스토리지 노드의 피어 스토리지 관리자와 통신하고, 상기 스토리지 노드에 할당된 상기 현재 스토리지 공간에 추가적으로 상기 제2 스토리지 노드의 로컬 스토리지 장치 상에서 상기 클라이언트 애플리케이션에 의해 사용되는 상기 가상 명칭 공간과 연관된 상기 스토리지 공간을 확장하도록 더 구성된 스토리지 노드.
  2. 제 1 항에 있어서,
    상기 하나 또는 그 이상의 로컬 스토리지 장치들은 PCIe 버스를 통해 상기 스토리지 노드 컨트롤러와 연결되는 스토리지 노드.
  3. 제 2 항에 있어서,
    상기 하나 또는 그 이상의 로컬 스토리지 장치들은 NVMe(non-volatile memory express) 장치들을 포함하는 스토리지 노드.
  4. 제 3 항에 있어서,
    상기 네트워크는 패브릭 네트워크(fabric network)를 포함하는 스토리지 노드.
  5. 제 4 항에 있어서,
    상기 패브릭 네트워크는 이더넷 네트워크, 파이버 채널 네트워크, 또는 인피니밴드 네트워크 중 적어도 하나를 포함하는 스토리지 노드.
  6. 제 1 항에 있어서,
    상기 스토리지 관리자는 상기 제2 스토리지 노드로 확장된 상기 스토리지 공간을 기반으로 글로벌 맵핑 테이블을 갱신하여 상기 가상 명칭 공간을 갱신하는 스토리지 노드.
  7. 제 1 항에 있어서,
    상기 가상 명칭 공간은 상기 제2 스토리지 노드의 적어도 하나의 스토리지 장치로 적어도 부분적으로 매핑되고,
    상기 제2 스토리지 노드의 상기 적어도 하나의 스토리지 장치에 저장된 데이터를 액세스하는 요청은 상기 제2 스토리지 노드의 상기 피어 스토리지 관리자와 통신적으로 연결된 피어-투-피어 통신에 의해 처리되는 스토리지 노드.
  8. 제 1 항에 있어서,
    상기 스토리지 장치에 저장된 상기 데이터는 객체 또는 KV(key-value) 데이터를 포함하는 스토리지 노드.
  9. 스토리지 시스템에 있어서,
    호스트 컴퓨터; 및
    네트워크를 통해 상기 호스트 컴퓨터와 연결된 복수의 스토리지 노드들을 포함하고,
    상기 복수의 스토리지 노드들은 하나 또는 그 이상의 로컬 스토리지 장치들 및 스토리지 노드 컨트롤러를 포함하는 스토리지 노드를 포함하고,
    상기 스토리지 노드 컨트롤러는:
    상기 호스트 컴퓨터 상에서 구동하는 클라이언트 애플리케이션과 연결되도록 구성된 호스트 인터페이스;
    하나 또는 그 이상의 가상 명칭 공간들을 관리하도록 구성된 스토리지 관리자; 및
    상기 하나 또는 그 이상의 로컬 스토리지 장치들을 액세스하고, 상기 하나 또는 그 이상의 스토리지 장치들과 연관된 각각의 명칭 공간을 관리하도록 구성된 스토리지 장치 컨트롤러를 포함하고,
    상기 스토리지 관리자는 상기 하나 또는 그 이상의 스토리지 장치들과 연관된 상기 각각의 명칭 공간으로의 상기 하나 또는 그 이상의 가상 명칭 공간들의 맵핑을 제공하도록 더 구성되고,
    상기 스토리지 관리자는 상기 클라이언트 애플리케이션에 의해 사용되는 가상 명칭 공간과 관련된 현재 스토리지 공간이 상기 클라이언트 애플리케이션에 의한 요청에 응답하여 데이터를 저장하기 불충분한지 판별하고, 상기 클라이언트 애플리케이션에 의한 상기 현재 스토리지 공간의 소비를 기반으로 상기 스토리지 노드의 상기 하나 또는 그 이상의 로컬 스토리지 장치들 상의 상기 가상 명칭 공간과 연관된 상기 스토리지 공간을 확장하도록 더 구성되고,
    상기 스토리지 관리자는 상기 스토리지 노드가 불충분한 스토리지 공간을 갖는지 판별하고, 네트워크를 통해 제2 스토리지 노드의 피어 스토리지 관리자와 통신하고, 상기 스토리지 노드에 할당된 상기 현재 스토리지 공간에 추가적으로 상기 제2 스토리지 노드의 로컬 스토리지 장치 상에서 상기 클라이언트 애플리케이션에 의해 사용되는 상기 가상 명칭 공간과 연관된 상기 스토리지 공간을 확장하도록 더 구성된 스토리지 시스템.
  10. 방법에 있어서,
    제1 스토리지 노드의 제1 스토리지 장치에 가상 명칭 공간과 연관된 스토리지 공간을 할당하는 단계;
    호스트 컴퓨터 상에서 구동하는 클라이언트 애플리케이션으로부터 상기 스토리지 공간에 데이터를 저장하는 쓰기 요청을 수신하는 단계;
    상기 제1 스토리지 장치에 할당된 상기 스토리지 공간이 상기 쓰기 요청과 연관된 상기 데이터를 저장하기에 충분한 스토리지 공간을 갖는지 판별하는 단계;
    상기 쓰기 요청에 응답하여, 상기 제1 스토리지 노드에 상기 데이터를 저장하기 위한 추가 스토리지 공간을 할당함으로써, 상기 클라이언트 애플리케이션에 의해 사용되는 상기 제1 스토리지 장치의 상기 스토리지 공간의 현재 소비를 기반으로 상기 제1 스토리지 장치에서 상기 가상 명칭 공간과 연관된 상기 스토리지 공간을 확장하는 단계;
    상기 제1 스토리지 노드의 상기 추가 스토리지 공간에 상기 데이터를 기입하는 단계;
    상기 제1 스토리지 장치가 불충분한 스토리지 공간을 갖는지 판별함으로써, 상기 데이터를 저장하기 위한 추가 스토리지 공간을 갖는 제2 스토리지 노드를 식별하는 단계;
    상기 제2 스토리지 노드와 협상하여 상기 추가 스토리지 공간을 할당하는 단계;
    상기 제2 스토리지 노드에 상기 추가 스토리지 공간을 할당함으로써, 상기 가상 명칭 공간과 연관된 상기 스토리지 공간을 확장하는 단계;
    네트워크를 통한 상기 제1 스토리지 노드 및 상기 제2 스토리지 노드 사이의 피어-투-피어 통신에 의해 상기 제2 스토리지 노드의 상기 추가 스토리지 공간에 상기 데이터를 기입하는 단계; 및
    글로벌 맵핑 테이블을 갱신하여 상기 가상 명칭 공간의 맵핑 정보를 갱신하는 단계를 포함하는 방법.



KR1020180126347A 2017-11-16 2018-10-22 분산된 가상 명칭 공간 관리를 사용한 온-디맨드 스토리지 프로비져닝 KR102444832B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762587330P 2017-11-16 2017-11-16
US62/587,330 2017-11-16
US15/914,820 US10768820B2 (en) 2017-11-16 2018-03-07 On-demand storage provisioning using distributed and virtual namespace management
US15/914,820 2018-03-07

Publications (2)

Publication Number Publication Date
KR20190056295A KR20190056295A (ko) 2019-05-24
KR102444832B1 true KR102444832B1 (ko) 2022-09-21

Family

ID=66433311

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180126347A KR102444832B1 (ko) 2017-11-16 2018-10-22 분산된 가상 명칭 공간 관리를 사용한 온-디맨드 스토리지 프로비져닝

Country Status (3)

Country Link
US (1) US10768820B2 (ko)
KR (1) KR102444832B1 (ko)
CN (1) CN109799951B (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11941279B2 (en) * 2017-03-10 2024-03-26 Pure Storage, Inc. Data path virtualization
US11442669B1 (en) * 2018-03-15 2022-09-13 Pure Storage, Inc. Orchestrating a virtual storage system
US11288180B2 (en) * 2018-01-19 2022-03-29 Micron Technology, Inc. Management of storage resources allocated from non-volatile memory devices to users
US10871922B2 (en) * 2018-05-22 2020-12-22 Pure Storage, Inc. Integrated storage management between storage systems and container orchestrators
US10671286B2 (en) * 2018-09-04 2020-06-02 Toshiba Memory Corporation System and method for managing GUI of virtual NVMe entities in NVMe over fabric appliance
US11113001B2 (en) * 2019-08-30 2021-09-07 Hewlett Packard Enterprise Development Lp Fabric driven non-volatile memory express subsystem zoning
US11256448B2 (en) * 2019-12-16 2022-02-22 Samsung Electronics Co., Ltd. Network storage gateway
US11941458B2 (en) * 2020-03-10 2024-03-26 Sk Hynix Nand Product Solutions Corp. Maintaining storage namespace identifiers for live virtualized execution environment migration
US11704284B2 (en) * 2020-04-13 2023-07-18 Vmware, Inc. Supporting storage using a multi-writer log-structured file system
CN111629031B (zh) * 2020-04-27 2023-04-07 浙江大华技术股份有限公司 集群存储的方法、系统、计算机设备及存储介质
EP3933602B1 (en) * 2020-07-02 2023-12-13 Samsung Electronics Co., Ltd. Operation method of storage device
KR20220003786A (ko) * 2020-07-02 2022-01-11 삼성전자주식회사 스토리지 장치의 동작 방법
US11079939B1 (en) * 2020-07-30 2021-08-03 Hewlett Packard Enterprise Development Lp Distributing I/O Q-connections of subsytems among hosts
CN112333283B (zh) * 2020-11-20 2022-12-13 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 自主高端存储阵列系统架构
US11467994B2 (en) * 2020-12-11 2022-10-11 Hewlett Packard Enterprise Development Lp Identifiers for connections between hosts and storage devices
US20220200867A1 (en) * 2020-12-18 2022-06-23 Western Digital Technologies, Inc. Management of non-volatile memory express nodes
US20230110067A1 (en) * 2021-10-07 2023-04-13 Samsung Electronics Co., Ltd. Systems, methods, and devices for near storage elasticity
KR102471966B1 (ko) * 2021-11-25 2022-11-30 (주)글루시스 스토리지 노드 기반의 키-값 스토어를 이용하는 데이터 입출력 방법
CN114089926B (zh) * 2022-01-20 2022-07-05 阿里云计算有限公司 分布式存储空间的管理方法、计算设备及存储介质
US11829602B2 (en) * 2022-03-16 2023-11-28 Dell Products L.P. Intelligent path selection in a distributed storage system
CN114691037A (zh) * 2022-03-18 2022-07-01 阿里巴巴(中国)有限公司 卸载卡命名空间管理、输入输出请求处理系统和方法
CN115617264A (zh) * 2022-09-21 2023-01-17 浙江大华技术股份有限公司 分布式存储方法及装置
CN116319967B (zh) * 2023-05-18 2023-07-25 深圳锐爱电子有限公司 基于物联网的数据存储拓展方法、装置、设备及存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070022129A1 (en) 2005-07-25 2007-01-25 Parascale, Inc. Rule driven automation of file placement, replication, and migration
US20080155214A1 (en) 2006-12-21 2008-06-26 Hidehisa Shitomi Method and apparatus for file system virtualization
KR101560724B1 (ko) * 2008-12-02 2015-10-15 네이버 주식회사 파일 스토리지 액세스 시스템 및 방법
EP2396717A1 (en) * 2009-02-11 2011-12-21 Infinidat Ltd Virtualized storage system and method of operating it
JP5360978B2 (ja) 2009-05-22 2013-12-04 株式会社日立製作所 ファイルサーバ、及びファイルサーバにおけるファイル操作通知方法
US20100318964A1 (en) * 2009-06-12 2010-12-16 Microsoft Corporation Software extension analysis
US20130346532A1 (en) * 2012-06-21 2013-12-26 Microsoft Corporation Virtual shared storage in a cluster
CN103077245A (zh) * 2013-01-18 2013-05-01 浪潮电子信息产业股份有限公司 一种利用集群计算节点空闲硬盘空间扩展并行文件系统的方法
CN103209219A (zh) * 2013-04-23 2013-07-17 深圳市京华科讯科技有限公司 一种分布式集群文件系统
US9684571B2 (en) * 2013-05-01 2017-06-20 Netapp, Inc. Namespace mirroring in an expandable storage volume
US9430412B2 (en) * 2013-06-26 2016-08-30 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over Ethernet-type networks
US10180948B2 (en) 2013-11-07 2019-01-15 Datrium, Inc. Data storage with a distributed virtual array
RU2643642C2 (ru) 2013-12-11 2018-02-02 Интел Корпорейшн Использование кэш-памяти и памяти другого типа в распределённой запоминающей системе
US10635316B2 (en) * 2014-03-08 2020-04-28 Diamanti, Inc. Methods and systems for data storage using solid state drives
US9495478B2 (en) 2014-03-31 2016-11-15 Amazon Technologies, Inc. Namespace management in distributed storage systems
US20170102874A1 (en) * 2014-06-20 2017-04-13 Hitachi, Ltd. Computer system
US10127266B2 (en) * 2015-11-03 2018-11-13 International Business Machines Corporation Scalable virtual namespace and semantic policy management for object storage

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Brendan Cully et al., "Strata: High-Performance Scalable Storage on Virtualized Non-volatile Memory", FAST'14(2014.02.20)

Also Published As

Publication number Publication date
KR20190056295A (ko) 2019-05-24
US10768820B2 (en) 2020-09-08
CN109799951A (zh) 2019-05-24
US20190146675A1 (en) 2019-05-16
CN109799951B (zh) 2024-03-01

Similar Documents

Publication Publication Date Title
KR102444832B1 (ko) 분산된 가상 명칭 공간 관리를 사용한 온-디맨드 스토리지 프로비져닝
KR102457611B1 (ko) 터넌트-어웨어 스토리지 쉐어링 플랫폼을 위한 방법 및 장치
US10628043B1 (en) Systems and methods for implementing a horizontally federated heterogeneous cluster
JP7437117B2 (ja) ソリッドステートドライブ(ssd)及び分散データストレージシステム並びにその方法
US9459806B2 (en) Combining virtual mapping metadata and physical space mapping metadata
EP3502877B1 (en) Data loading method and apparatus for virtual machines
US8271559B2 (en) Storage system and method of controlling same
US9122415B2 (en) Storage system using real data storage area dynamic allocation method
US20090077327A1 (en) Method and apparatus for enabling a NAS system to utilize thin provisioning
US9329792B2 (en) Storage thin provisioning and space reclamation
WO2015176636A1 (zh) 分布式数据库服务管理系统
US8954706B2 (en) Storage apparatus, computer system, and control method for storage apparatus
KR20140111589A (ko) 가상 기계들을 지원하는 플래시―기반 캐싱 해결책에서의 동적인 캐시 공유를 위한 시스템, 방법 및 컴퓨터―판독가능한 매체
US10331476B1 (en) Storage device sharing among virtual machines
US9411819B1 (en) Federated namespace management
US11409454B1 (en) Container ownership protocol for independent node flushing
US20230221897A1 (en) Implementing coherency and page cache support for a storage system spread across multiple data centers
US8838768B2 (en) Computer system and disk sharing method used thereby
CN107832097B (zh) 数据加载方法及装置
US10152234B1 (en) Virtual volume virtual desktop infrastructure implementation using a primary storage array lacking data deduplication capability
US20210103400A1 (en) Storage system and data migration method
CN104426965A (zh) 自管理存储方法和系统
US20220318042A1 (en) Distributed memory block device storage
US11550488B2 (en) Computer system and load distribution method
US20230409218A1 (en) Container flush ownership assignment

Legal Events

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