KR20190056295A - On-demand storage provisioning using distributed and virtual namespace management - Google Patents

On-demand storage provisioning using distributed and virtual namespace management Download PDF

Info

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

Links

Images

Classifications

    • 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/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]
    • H04L67/16
    • 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
    • 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

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

The present invention relates to an on-demand storage provisioning using dispersed virtual name space management. According to an embodiment of the present invention, a storage node comprises: one or more local storage apparatuses; and a storage node controller. The storage node controller includes: a host interface formed to be connected to an application driving on a host computer; a storage manager formed to manage one or more virtual name spaces; and a storage apparatus controller formed to manage each of the name spaces relevant to one or more storage apparatuses. The storage manager is additionally formed to, when the storage node includes a sufficient storage space, extend the storage space relevant to the virtual name space in accordance with a demand on one or more local storage apparatuses of the storage node in a request of the application driving on the host computer. When the storage node includes an insufficient storage space, the storage manager is formed to communicate with a peer storage manager of a second storage node on the network and to extend a storage space relevant to the virtual name space in accordance with a demand on the local storage apparatus of the second storage node from a request of the application driving on the host computer.

Description

분산된 가상 명칭 공간 관리를 사용한 온-디맨드 스토리지 프로비져닝{ON-DEMAND STORAGE PROVISIONING USING DISTRIBUTED AND VIRTUAL NAMESPACE MANAGEMENT}[0001] ON-DEMAND STORAGE PROVISIONING USING DISTRIBUTED AND VIRTUAL NAMESPACE MANAGEMENT USING DISTRIBUTED VIRTUAL NOMENACE SPACE MANAGEMENT [0002]

본 발명은 데이터 스토리지 시스템들에 관한 것으로, 더욱 상세하게는 데이터 스토리지 장치들, 특히, NVMe-SSD들 및 그것들 변형물에 대하여 분산된 가상 명칭 공간 관리를 사용하는 온-디맨드 스토리지 프로비져닝을 제공하는 시스템 및 방법에 관한 것이다. The present invention relates to data storage systems, and more particularly to data storage devices, particularly systems that provide on-demand storage provisioning using distributed virtual namespace management for NVMe-SSDs and their variants. And methods.

컴퓨터 시스템에서 구동하는 애플리케이션들은 SSD(solid-state drive)와 같은 불휘발성 데이터 스토리지 장치들에 저장된 데이터를 액세스할 수 있다. 특히, NVMe(nonvolatile memory express)-기반의 SSD는 PCIe(Peripheral Component Interconnect express) 버스를 통해 호스트 컴퓨터 시스템과 연결된다. 일반적으로, NVMe SSD의 스토리지 용량이 NVMe SSD의 가용한 물리적 플래시 용량으로 제한되기 때문에, 애플리케이션은 NVMe SSD로부터의 온디맨드식의 스토리지 용량을 늘릴 수 없다.Applications running on computer systems can access data stored on non-volatile data storage devices such as solid-state drives (SSDs). In particular, a nonvolatile memory express (NVMe) -based SSD is connected to a host computer system via a Peripheral Component Interconnect express (PCIe) bus. In general, applications can not increase on-demand storage capacity from NVMe SSDs because the storage capacity of NVMe SSDs is limited to the available physical flash capacity of NVMe SSDs.

물리적 NVMe-SSD 장치로의 물리적 연결들의 개수에 대한 제한은 장치 연결 관리를 제한하고, 클러스터에서의 다수의 플래시 장치들의 연결 다중화 및 관리의 이용을 방지한다. 장치들의 그룹으로의 복수의 NVMe 연결들의 다중화(각 물리 장치는 하나 이상의 연결을 관리할 수 있다.)는 백엔드(backend)에서의 장치들의 계층(tier)을 통해 향상된 스케일링 및 성능을 도울 수 있다. 추가적으로 다중화는 미리 예측될 수 없는 애플리케이션 런-타임 요청들에 따라 런-타임 중의 페일오버, 페일백, 더 나은 명칭 공간 또는 용량 프로비져닝의 이슈들을 해결하는 것을 도울 수 있다. NVMe SSD에서 스토리지 용량의 할당은 매우 고정적이고, 그것의 물리적 스토리지 공간은 런-타임 중에 요구에 따라서 동적으로 증가될 수 없다. NVMe SSD의 확장 불가능한 스토리지 용량은 네트워크의 하나의 노드에서 구동하는 애플리케이션이 동일한 네트워크의 다른 피어 NVMe SSD들에서 사용되지 않는 스토리지 공간을 활용하지 못하게 한다. 이로 인해 로컬 노드 또는 물리적 호스트에서 데이터의 오버-프로비져닝이 발생되고, 시간이 흐름에 따라 데이터 센터에서 데이터 스토리지 계층 레벨을 통한 데이터 스토리지 용량의 오버-프로비져닝이 과도하게 되고, 데이터 센터를 운영하는 총 비용(TCO; total cost of ownership)이 증가한다.The limitation on the number of physical connections to physical NVMe-SSD devices limits device connection management and prevents the use of connection multiplexing and management of multiple flash devices in the cluster. Multiplexing of multiple NVMe connections into a group of devices (each physical device can manage more than one connection) can help improve scaling and performance through the tiers of devices at the backend. Additionally, multiplexing can help address issues of failover, failback, better namespace, or capacity provisioning during run-time in response to unpredictable application run-time requests. The allocation of storage capacity in an NVMe SSD is very static, and its physical storage space can not be increased dynamically on demand during run-time. The non-scalable storage capacity of the NVMe SSD prevents applications running on one node of the network from taking advantage of unused storage space on other peer NVMe SSDs in the same network. This results in over-provisioning of data on the local node or on the physical host, over-provisioning of data storage capacity over the data storage layer level in the data center over time, and the total cost of operating the data center The total cost of ownership (TCO) increases.

본 발명의 일 실시 예에 따르면, 스토리지 노드들에서의 스토리지 노드는: 하나 또는 그 이상의 로컬 스토리지 장치들; 및 스토리지 노드 컨트롤러를 포함한다. 상기 스토리지 노드 컨트롤러는: 호스트 컴퓨터 상에서 구동하는 애플리케이션과 연결되도록 구성된 호스트 인터페이스; 하나 또는 그 이상의 가상 명칭 공간들을 관리하도록 구성된 스토리지 관리자; 및 상기 하나 또는 그 이상의 스토리지 장치들과 연관된 각각의 명칭 공간을 관리하도록 구성된 스토리지 장치 컨트롤러를 포함한다. 상기 스토리지 관리자는 상기 스토리지 노드가 충분한 스토리지 공간을 포함하는 경우, 상기 호스트 컴퓨터 상에서 구동하는 상기 애플리케이션의 요청에서 상기 스토리지 노드의 상기 하나 또는 그 이상의 로컬 스토리지 장치들 상의 요구에 따라서 가상 명칭 공간과 연관된 스토리지 공간을 확장하도록 더 구성된다. 상기 스토리지 노드가 불충분한 스토리지 공간을 포함하는 경우, 상기 스토리지 관리자는 네트워크 상에서 제2 스토리지 노드의 피어 스토리지 관리자와 통신하도록 구성되고, 상기 호스트 컴퓨터 상에서 구동하는 상기 애플리케이션의 상기 요청에서 상기 제2 스토리지 노드의 로컬 스토리지 장치 상의 요구에 따라서 상기 가상 명칭 공간과 연관된 상기 스토리지 공간을 확장하도록 더 구성된다. According to one embodiment of the invention, a storage node at a storage node comprises: one or more local storage devices; And a storage node controller. The storage node controller comprising: a host interface configured to connect with an application running on the host computer; A storage manager configured to manage one or more virtual namespaces; And a storage device controller configured to manage respective namespaces associated with the one or more storage devices. Wherein the storage manager is further adapted to, in response to a request from the application running on the host computer if the storage node includes sufficient storage space, to provide storage associated with the virtual namespace in response to a request on the one or more local storage devices of the storage node Is further configured to expand the space. Wherein the storage manager is configured to communicate with a peer storage manager of a second storage node on a network if the storage node includes insufficient storage space, wherein in the request of the application running on the host computer, Is further configured to expand the storage space associated with the virtual namespace according to a request on the local storage device.

본 발명의 다른 실시 예에 따르면, 스토리지 시스템은: 복수의 호스트 컴퓨터들; 및 네트워크를 통해 상기 복수의 호스트 컴퓨터들과 연결된 복수의 스토리지 노드들을 포함한다. 상기 복수의 스토리지 노드들은 스토리지 노드 컨트롤러를 포함하는 스토리지 노드를 포함한다. 상기 스토리지 노드 컨트롤러는: 호스트 컴퓨터 상에서 구동하는 애플리케이션과 연결되도록 구성된 호스트 인터페이스; 하나 또는 그 이상의 가상 명칭 공간들을 관리하도록 구성된 스토리지 관리자; 및 상기 하나 또는 그 이상의 스토리지 장치들과 연관된 각각의 명칭 공간을 관리하도록 구성된 스토리지 장치 컨트롤러를 포함한다. 상기 스토리지 관리자는 상기 스토리지 노드가 충분한 스토리지 공간을 포함하는 경우, 상기 호스트 컴퓨터 상에서 구동하는 상기 애플리케이션의 요청에서 상기 스토리지 노드의 상기 하나 또는 그 이상의 로컬 스토리지 장치들 상의 요구에 따라서 가상 명칭 공간과 연관된 스토리지 공간을 확장하도록 더 구성된다. 상기 스토리지 노드가 불충분한 스토리지 공간을 포함하는 경우, 상기 스토리지 관리자는 네트워크 상에서 제2 스토리지 노드의 피어 스토리지 관리자와 통신하도록 구성되고, 상기 호스트 컴퓨터 상에서 구동하는 상기 애플리케이션의 상기 요청에서 상기 제2 스토리지 노드의 로컬 스토리지 장치 상의 요구에 따라서 상기 가상 명칭 공간과 연관된 상기 스토리지 공간을 확장하도록 더 구성된다. According to another embodiment of the present invention, a storage system comprises: a plurality of host computers; And a plurality of storage nodes coupled to the plurality of host computers via a network. The plurality of storage nodes include a storage node including a storage node controller. The storage node controller comprising: a host interface configured to connect with an application running on the host computer; A storage manager configured to manage one or more virtual namespaces; And a storage device controller configured to manage respective namespaces associated with the one or more storage devices. Wherein the storage manager is further adapted to, in response to a request from the application running on the host computer if the storage node includes sufficient storage space, to provide storage associated with the virtual namespace in response to a request on the one or more local storage devices of the storage node Is further configured to expand the space. Wherein the storage manager is configured to communicate with a peer storage manager of a second storage node on a network if the storage node includes insufficient storage space, wherein in the request of the application running on the host computer, Is further configured to expand the storage space associated with the virtual namespace according to a request on the local storage device.

피어 스토리지 관리자로의 상기 통신은 그것의 NVMe 명칭 공간들의 상기 상태, 가용한 스토리지 용량, 사용된 공간 등을 가리키는 공유된(클러터된 또는 분산된) 정보(예를 들어, 모든 노드들의 스토리지 관리자 프로세스로부터 공유된 메타데이터 테이블)에 기반된다. 상기 스토리지 관리자 프로세스들 사이의 상기 피어 통신은 이러한 메타데이터 정보를 최신 상태로 동기하여 유지하는 것을 관리한다. The communication to the peer storage manager may be shared (cluttered or distributed) information indicating the status of the NVMe namespaces, available storage capacity, used space, etc. (e.g., Quot;). ≪ / RTI > The peer communication between the storage manager processes manages keeping the metadata information up-to-date synchronously.

본 발명의 또 다른 실시 예에 따르면, 방법은: 가상 명칭 공간을 사용하여 제1 스토리지 노드의 제1 스토리지 장치에 스토리지 공간을 할당하는 단계; 호스트 컴퓨터 상에서 구동하는 애플리케이션으로부터 상기 스토리지 공간에 데이터를 저장하는 쓰기 요청을 수신하는 단계; 상기 할당된 스토리지 공간이 상기 쓰기 요청과 연관된 상기 데이터를 저장하는데 불충분한 스토리지 공간을 포함하는지 판별하는 단계; 상기 제1 스토리지 노드가 상기 데이터를 저장하는데 충분한 스토리지 공간을 포함하는 경우, 상기 제1 스토리지 노드에 추가적인 스토리지 공간을 포함시킴으로써 상기 스토리지 공간을 확장하는 단계; 상기 제1 스토리지 노드가 상기 데이터를 저장하는데 불충분한 스토리지 공간을 포함하는 경우 추가적인 스토리지 공간을 포함하는 제2 스토리지 노드를 식별하는 단계; 상기 제2 스토리지 노드와 협상하여 상기 추가적인 스토리지 공간을 할당하는 단계; 상기 제2 스토리지 노드에 상기 추가적으로 할당된 스토리지 공간을 포함시킴으로써 상기 스토리지 공간을 확장하는 단계; 상기 네트워크를 통한 상기 제1 스토리지 노드 및 상기 제2 스토리지 노드 사이의 피어-투-피어 통신에 의해 상기 제2 스토리지 노드에 상기 추가적으로 할당된 스토리지 공간으로 상기 데이터를 기입하는 단계; 및 글로벌 맵핑 테이블을 업데이트하여 상기 가상 명칭 공간의 맵핑 정보를 업데이트하는 단계를 포함한다.According to another embodiment of the present invention, a method includes: allocating storage space to a first storage device of a first storage node using a virtual namespace; Receiving a write request for storing data in the storage space from an application running on a host computer; Determining if the allocated storage space includes insufficient storage space to store the data associated with the write request; Expanding the storage space by including additional storage space in the first storage node if the first storage node includes sufficient storage space to store the data; Identifying a second storage node that includes additional storage space if the first storage node includes insufficient storage space to store the data; Negotiating with the second storage node to allocate the additional storage space; Expanding the storage space by including the additional allocated storage space in the second storage node; Writing the data to the additional storage space at the second storage node by peer-to-peer communication between the first storage node and the second storage node over the network; And updating the global mapping table to update the mapping information of the virtual namespace.

구현의 다양한 새로운 설명들 및 이벤트들의 조합을 포함하는 상술되고 다른 적절한 특징들은 첨부된 도면들을 참조하여 더욱 상세하게 설명되고 특허청구범위에서 지칭될 것이다. 본문에서 기재된 특정한 시스템들 및 방법들은 단지 예시로 도시되고, 이에 제한되지 않음이 이해될 것이다. 당업자가 이해할 수 있는 바와 같이, 본문에 기재된 이론들 및 특징들은 본 발명의 사상으로부터의 벗어남 없이 다양하고 수많은 실시 예들에서 사용될 수 있다.BRIEF DESCRIPTION OF THE DRAWINGS The above and other appropriate features, which include combinations of various novel descriptions and events of the implementation, will be more fully described with reference to the accompanying drawings and will be referred to in the claims. It is to be understood that the specific systems and methods described herein are shown by way of example only, and not limitation. As will be appreciated by those skilled in the art, the theories and features described in the text may be used in numerous and numerous embodiments without departing from the spirit of the invention.

상세한 설명의 일부로서 포함된 첨부된 도면들은 본 발명의 적절한 실시 예들을 도시하고, 상술된 일반적인 설명과 함께 이하의 적절한 실시 예들의 상세한 설명은 본문에 기재된 이론들을 교시하고 설명하는 역할을 한다.
도 1은 일 실시 예에 따른, 온-디맨드(on-demand) 스토리지 프로비져닝을 제공할 수 있는 예시적인 프레임워크의 구성도이다.
도 2는 일 실시 예에 따른, 예시적인 프레임워크의 블록도이다.
도 3은 일 실시 예에 따른, 예시적인 스토리지 시스템의 블록도이다.
도 4는 일 실시 예에 따른, 스토리지 노드들의 클러스터에서 스토리지 공간을 동적으로 할당하는 순서도이다.
도면들은 필수적으로 계측되어 도시되지 않으며, 유사한 구조들 또는 기능들의 요소들은 도면 전체에 걸쳐 설명의 목적을 위하여 일반적으로 유사한 참조 번호로 표기된다. 도면들은 본문에 기재된 다양한 실시 예들의 설명을 용이하게 하도록 의도된다. 도면들은 본문에 기재된 교시들의 모든 사상을 설명하지 않으며, 특허청구범위를 제한하지 않는다.
BRIEF DESCRIPTION OF THE DRAWINGS The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate preferred embodiments of the invention and, together with the general description given above, the detailed description of the preferred embodiments given below serves to teach and explain the theory described in the text.
1 is a block diagram of an exemplary framework capable of providing on-demand storage provisioning, in accordance with one embodiment.
2 is a block diagram of an exemplary framework, in accordance with one embodiment.
3 is a block diagram of an exemplary storage system, in accordance with one embodiment.
4 is a flowchart of dynamically allocating storage space in a cluster of storage nodes, according to one embodiment.
The drawings are not necessarily drawn to scale, and similar elements or elements of the functions are generally designated with like reference numerals throughout the drawings for purposes of illustration. The drawings are intended to facilitate describing the various embodiments described herein. The drawings are not intended to illustrate all of the teachings of the teachings herein and are not intended to limit the scope of the claims.

본문에 기재된 특징들 및 교시들 각각은 다른 특징들 및 교시들과 관련되거나 또는 개별적으로 활용되어 온-디맨드 스토리지 프로비져닝 및 가상 명칭 공간 관리가 가능한 프레임워크를 제공할 수 있다. 다양한 추가적인 특징들 및 교시들을 활용하는 대표적인 실시 예들은, 개별적이거나 또는 조합되어, 첨부된 도면들을 참조하여 더욱 상세하게 설명된다. 이러한 상세한 설명은 단순히 당업자에게 본 발명의 양상들을 실시하기 위한 더욱 상세한 설명을 제시하도록 의도되며, 특허청구범위를 제한하지 않는다. 그러므로, 상세한 설명에서 상술된 특징들의 조합들은 가장 넓은 개념의 교시들을 실행하는데 필수적이지 않을 수 있으며, 본 발명의 교시들의 대표적인 실시 예들을 설명하는 것으로만 의도된다. Each of the features and teachings described herein may provide a framework capable of on-demand storage provisioning and virtual namespace management in connection with or related to other features and teachings. Representative embodiments utilizing various additional features and teachings, either individually or in combination, are described in further detail with reference to the accompanying drawings. This description is merely intended to provide those of ordinary skill in the art with a more detailed description of how to implement the aspects of the invention, and is not intended to limit the scope of the claims. Therefore, combinations of the features described above in the detailed description may not be necessary to practice the widest conceptual teachings, and are intended only to describe exemplary embodiments of the teachings of the present invention.

이하의 설명에서, 단순히 설명의 목적을 위하여, 특정 명명법(specific nomenclarure)은 상세한 설명의 전체적인 이해를 제공한다. 그러나 상세한 설명들이 본 발명의 교시들을 실행하는데 요구되지 않음이 당업자에게 이해될 것이다.In the following description, for purposes of explanation only, specific nomenclatures provide a thorough understanding of the detailed description. However, it will be understood by those skilled in the art that the detailed description is not required to practice the teachings of the present invention.

본문에서의 상세한 설명의 일부 부분들은 컴퓨터 메모리 내의 데이터 비트들에 대한 동작들의 기호적 표현 및 알고리즘들의 용어로 표현된다. 이러한 알고리즘적 설명들 및 기호들은 당업자에 의해 데이터 처리 분야에서, 다른 당업자에게 그들의 연구 내용의 효과적으로 전달하는데 사용된다. 알고리즘은 의도된 결과를 이끄는 단계들의 자가 지속 시퀀스인 것으로 이해된다. 단계들은 물리적인 양들의 물리적으로 조작하는 단계이다 . 일반적으로, 필수적이지는 않으나, 이러한 양들은 저장되고, 전송되고, 조합되고, 비교되고, 다르게 조잘될 수 있는 전기적 또는 자기적 신호들의 형태를 취할 수 있다. 주로 공통적인 사용의 이유로 이러한 신호를을 비트, 값, 요소, 기호, 문자, 용어, 숫자 등으로 참조하는 것이 편리하다고 입증되었다.Some portions of the detailed description in the text are expressed in terms of algorithms and symbolic representations of operations on data bits in computer memory. These algorithmic explanations and symbols are used by those skilled in the art in data processing applications to effectively convey the content of their work to other persons skilled in the art. The algorithm is understood to be a self-sustaining sequence of steps leading to the intended result. Steps are physical manipulation of physical quantities . Generally, though not necessarily, these quantities can take the form of electrical or magnetic signals that can be stored, transmitted, combined, compared, and otherwise manipulated. It has proven convenient to refer to these signals as bits, values, elements, symbols, letters, terms, numbers, etc., primarily for common usage reasons.

그러나 이러한 모든 것들 및 유사한 용어들은 적절한 물리량들과 연관되어야 하며, 단지 이러한 양들에 적용되는 라벨이라는 것을 염두해 두어야 한다. 이하의 설명으로부터 나타나는 바와 같이 특별하게 다르게 언급되지 않는 한, "처리(processing)", "연산(computing)", "계산(calculating)", "판별(determing)", "표시(displaying)" 등과 같은 용어들을 활용하는 설명들은 전체적으로 컴퓨터 시스템의 레지스터들 및 메모리들에서 물리(전자)량들로 표현되는 데이터를 컴퓨터 시스템 메모리들, 또는 레지스터들, 또는 다른 정보 저장, 전송 또는 표시 장치들 내에 물리량으로서 유사하게 표현되는 다른 데이터로 변환하고 변조하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 장치의 동작 및 프로세스들을 참조한다. It should be borne in mind, however, that all of these and similar terms should be associated with appropriate physical quantities, and are merely labels applied to these quantities. Quot; computing ", " calculating ", " determing ", " displaying ", and the like, unless the context clearly dictates otherwise. The descriptions utilizing such terms generally refer to data expressed in physical (electronic) quantities in registers and memories of a computer system as data in computer system memories, registers, or other information storage, transmission, or display devices, Refers to the operations and processes of a computer system or similar electronic computing device that converts and modulates other data represented as < RTI ID = 0.0 > < / RTI >

더욱이, 대표 실시 예들의 다양한 도면들 및 첨부된 특허청구범위는 본 발명의 추가적인 유용한 실시 예들을 제공하기 위하여 구체적이거나 또는 명시적으로 언급되지 않은 방식으로 조합될 수 있다. 또한 기업 집단의 모든 가치 범위들 또는 지시들은 최초 공개의 목적뿐만 아니라, 특허청구범위를 제한하는 목적을 위하여 모든 가능한 중가 가치 또는 중간 실체를 제공한다는 점을 명시한다. 또한 도면에 도시된 구성들의 형상들 및 치수들은 본 발명이 구현되는 방법의 이해를 돕기 위해 설계된 것으로서, 실시 예들에 도시된 형상들 및 치수들을 제한하지 않는다. Moreover, the various figures and the appended claims of the exemplary embodiments may be combined in a manner not specifically mentioned or expressly set forth in order to provide additional useful embodiments of the invention. It also specifies that all value ranges or indications of an enterprise group provide all possible value-added or intermediate entities for the purpose of limiting the claims as well as the purpose of initial disclosure. Also, the shapes and dimensions of the structures shown in the figures are designed to facilitate understanding of how the present invention is implemented, and do not limit the shapes and dimensions shown in the embodiments.

호스트 컴퓨터에서 구동하는 애플리케이션은 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) 저장소들에 대하여 최적화될 수 있다. An application running on the host computer may require device management and data storage provisioning at run time for NVMe-based SSDs. Limitations on on-demand device management and provisioning imposed by requests for physical connections between the host computer and NVMe-based SSDs can be solved by virtualizing the management of NVMe-SSD devices / namespaces. The present invention provides a framework for extracting physical data storage devices (e.g., NVMe-SSD devices) from virtual disk entities (called namespaces) consumed by an application . In particular, device management and data provisioning can be used to create objects or key-values (KVs) that use virtual disks and virtual namespaces in a distributed storage cluster forming the foundations of a SaaS (as-a- -value) repositories.

본 발명의 프레임워크는 애플리케이션 온-디맨드에 의해 사용되는 스토리지 NVMe 명칭 공간들을 생성하고 확장할 수 있고, 저장 공간의 동적이고 연속적인 프로비져닝을 제공할 수 있다. 본 발명의 프레임워크는 탄력적이고 온-디맨드 프로비져닝된 방식으로 분산된 스토리지 클러스터에서 객체들/KV의 저장소를 관리할 수 하고, 가상 디스크들 및 가상 명칭 공간들을 관리함으로써 디스크 사용을 최적화할 수 있다. 본 발명의 프레임워크는 클라우드 환경 또는 데이터 센터에서 SaaS(SSD-as-a-Service) 모델로서 내보내질 수 있다. The framework of the present invention can create and extend storage NVMe namespaces used by application on-demand and can provide dynamic and continuous provisioning of storage space. The framework of the present invention can optimize disk usage by managing the storage of objects / KV in a distributed storage cluster in a resilient, on-demand provisioned manner and by managing virtual disks and virtual namespaces. The framework of the present invention can be exported as a SaaS (SSD-as-a-Service) model in a cloud environment or data center.

본 발명의 프레임워크는 네트워크(예를 들어, 이더넷(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)하는데 사용될 수 있다. The framework of the present invention synthesizes NVMe SSDs over clusters of storage nodes on a network (e.g., a fabric network such as Ethernet, Fiber Channel, and Infiniband) The application provides virtual disks as on-demand. These virtual disks can be mapped to physical disks through virtual namespace mapping. Thus, a virtual disk can be mapped to a physical disk or a virtual namespace that can be mapped into the namespace itself. The mapping may be 1: 1: 1 or 1: M: N. The framework of the present invention intelligently manages and virtualizes distributed disks and their namespaces across a plurality of storage nodes to dynamically (or elastically) and automatically expand the virtual disk capacity do. In one embodiment, the framework of the present invention manages the namespaces of distributed NVMe-SSD devices and distributed NVMe-SSD devices in an application in an application-unaware way, storing and retrieving object / KV data . Because the framework of the present invention can manage both data and management planes, it can be extended to manage or include other services, such as HA (High Availability), replication, and other storage services. Accordingly, the framework of the present invention can be used to export SSD-as-a-Service (SaaS) in the cloud and data center.

현재 가용한 NVMe 디스크들은 각 명칭 공간으로 하나의 NVMe-oF 연결만을 허용한다. 본 발명의 프레임워크는 물리적 NVMe 디스크들 및 명칭 공간들을 가상화하거나 또는 추출함으로써 이러한 제한들을 제거한다. 복수의 NVMe-oF 장치들을 통한 복수의 연결들은 데이터 센터 애플리케이션들이 HA(High Availability), 페일오버(Failover), 및 장애 복구(Disaster Recovery) 등과 같은 서비스 또는 분산된 스토리지 특징들을 제공하는데 유용할 수 있다.Currently available NVMe disks allow only one NVMe-oF connection to each namespace. The framework of the present invention removes these limitations by virtualizing or extracting physical NVMe disks and namespaces. Multiple connections through multiple NVMe-oF devices may be useful for data center applications to provide services such as High Availability (HA), Failover, and Disaster Recovery, or distributed storage features .

일 실시 예에 따르면, 본 발명의 프레임워크는 백엔드 NVMe SSD로의 연결들을 수용하거나 또는 인터셉트하도록 지정된 노드 또는 각 스토리지 노드 상에 스토리지 노드 컨트롤러를 제공한다. 복수의 백엔드 NVMe SSD에 대해 지정된 노드 또는 스토리지 노드의 스토리지 노드 컨트롤러는 스토리지 노드들의 동일한 클러스터 또는 스토리지 풀에서 다른 노드들 상의 다른 피어 스토리지 노드 컨트롤러와 통신할 수 있다. 스토리지 노드 컨트롤러는 요청 애플리케이션과 기본 NVMe SSD들과 동일한 클러스터의 다른 스토리지 노드 컨트롤러들의 연결을 가능하게 할 수 있는 장치/노드-레벨의, 가벼운, 씬 소프트웨어 스택(또는 모듈)로서 구현될 수 있다. 스토리지 노드 컨트롤러들 사이의 피어-투-피어(peer-to-peer) 통신은 이더넷(Ethernet), 파이버 채널(Fibre Channel), 및 인피니밴드(Infiniband)와 같은 패브릭 네트워크 상에서 수행될 수 있다. According to one embodiment, the framework of the present invention provides storage node controllers on each storage node or node designated to accept or intercept connections to the backend NVMe SSD. A storage node controller of a designated node or storage node for multiple back-end NVMe SSDs can communicate with other peer storage node controllers on other nodes in the same cluster or storage pool of storage nodes. The storage node controller can be implemented as a device / node-level, lightweight, thin software stack (or module) that can enable connection of requesting applications and other storage node controllers in the same cluster as the underlying NVMe SSDs. Peer-to-peer communication between storage node controllers may be performed over a fabric network such as Ethernet, Fiber Channel, and 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 버스를 통해 가능하다. According to one embodiment, the framework of the present invention is to uncept the NVMe / NVMe-oF request issued by one or more target NVMe SSDs or namespaces in the backend by an application running on the host computer, It responds to the application as a virtual namespace encapsulation. Here, an NVMe-oF request is an example of a data path request issued by an application to target NVMe SSDs or namespaces, and may include NVMe commands over a physical connection (i.e., a PCIe connection). The data path request may include both I / O commands and admin commands. Because the framework of the present invention eliminates the overhead of applications and establishes and manages connections to NVMe SSDs, the framework of the present invention can support logical connections as well as physical connections, via virtual namespace encapsulation. Moreover, the framework of the present invention can support any number of connections (virtual connections) to backend NVMe SSDs without being limited by the available number of physical connections. In the case of NVMe requests, only one physical connection to each NVMe SSD is possible via the PCIe bus.

본 발명의 프레임워크는 요구에 따라 하나 또는 그 이상의 백엔드 NVMe SSD들과의 연결들을 효율적으로 수립하고 관리할 수 있다. 본 발명의 프레임워크는 스토리지 노드들의 클러스터를 통한 피어 스토리지 노드 컨트롤러들 사이의 통신 프로토콜들을 제공하고, 클러스터를 통해 분산될 수 있는 백엔드 NVMe SSD로의 연결을 수립할 수 있다. 추가적으로, 본 발명의 프레임워크는 각 백엔드 NVMe SSD에 대하여 별도로 입력 및 출력을 위해 지정된 I/O 큐들에서 동작하고, 애플리케이션의 사용자 공간에서 스케쥴링될 수 있는 개별적이고, 가볍고, 빠르고, 동시적인 쓰레드들 또는 작업들을 통해 비동기적으로 입력/출력(I/O; input/output) 경로들을 관리할 수 있다. 실제 I/O 데이터 경로는 실제 구현 및 동작 환경에 따라 다른 최적화들을 포함할 수 있다. 예를 들어, 본 발명의 프레임워크의 I/O 데이터 경로는 사용자-모드 디스크 I/O 스케쥴링 및 커널 혹은 커널 모드 드라이버들의 개입 없이 사용자 공간으로부터의 직접 장치 액세스를 위해 최적화될 수 있다. The framework of the present invention can efficiently establish and manage connections with one or more backend NVMe SSDs on demand. The framework of the present invention can provide communication protocols between peer storage node controllers through clusters of storage nodes and establish connections to backend NVMe SSDs that can be distributed through clusters. In addition, the framework of the present invention can be implemented as separate, lightweight, fast, concurrent threads that can be scheduled in the user's space of the application, or run in separate I / O queues for input and output separately for each backend NVMe SSD You can manage input / output (I / O) paths asynchronously through operations. The actual I / O data path may include other optimizations depending on the actual implementation and operating environment. For example, the I / O data path of the framework of the present invention may be optimized for direct device access from user space without user-mode disk I / O scheduling and kernel or kernel mode drivers intervention.

도 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) 상에서 수립될 수 있거나 또는 최소 네트워크 레이턴시들을 보장하는 독립적인 백-채널일 수 있는 내부-노드 통신 경로를 통해 서로 통신할 수 있다.1 is a block diagram of an exemplary framework capable of providing on-demand storage provisioning, in accordance with one embodiment. The plurality of client applications 110a-110d run on one or more host computers (not shown). In one embodiment, each client application 110 is connected to a node 130 based on its physical connection. For example, client 110a is connected to node 130a, and clients 110b and 110d are connected to node 130b. In another embodiment, the connection between the client 110 and the node 130 may be on the fabric network 150, such as Ethernet, Fiber Channel, and InfiniBand. Each node 130 includes a storage controller 120 that is capable of establishing and managing connections to the local storage 160. The local storage device 160 may be connected to the node 130 via the PCIe bus. In addition, the storage controller 120 can further establish and manage connections to one or more backend storage devices 140 via a network connection. The connection between the node 130 and the backend storage devices 140 may be through the same fabric network as the fabric network 150 connecting the clients 110 to the nodes 130. The storage controllers 120 of the nodes 130 may communicate with one another via an internal-node communication path that may be established on the fabric network 150 or may be an independent back-channel that guarantees minimum network latencies .

도 2는 일 실시 예에 따른 예시적인 프레임워크의 블록도를 보여준다. 프레임워크(200)는 호스트(210a) 및 호스트(210b)를 포함하는 복수의 호스트들(210), 및 노드(230a) 및 노드(230b)를 포함하는 복수의 스토리지 노드들(230)을 포함한다. 호스트들 각각은 PCIe 버스를 통해 국부적으로 또는 네트워크(250)를 통해 원격으로 적어도 하나의 스토리지 노드(230)와 연결될 수 있다. 호스트(210) 및 스토리지 노드(230)가 PCIe 버스를 통해 연결된 경우, 호스트(210) 및 연결된 스토리지 노드(230)는 데이터센터의 동일한 랙에 위치할 수 있다. Figure 2 shows a block diagram of an exemplary framework in accordance with one embodiment. The framework 200 includes a plurality of hosts 210 including a host 210a and a host 210b and a plurality of storage nodes 230 including a node 230a and a node 230b . Each of the hosts may be connected to the at least one storage node 230 either locally via the PCIe bus or remotely via the network 250. When the host 210 and the storage node 230 are connected via the PCIe bus, the host 210 and the connected storage node 230 may be located in the same rack of the data center.

스토리지 노드(230)는 스토리지 노드 컨트롤러(220) 및 하나 또는 그 이상의 로컬 스토리지 장치들(260)을 포함한다. 스토리지 노드들의 클러스터 내의 복수의 노드들(230) 중에, 각 스토리지 노드(230)는 각 스토리지 노드(230)는 스토리지 노드 컨트롤러(220)를 포함할 수 있다. 일부 실시 예에서, 스토리지 노드(230)는 연결된 물리 디스크들(260)(예를 들어, 백엔드 NVMe SSD들) 및 그것들의 연관된 명칭 공간들을 관리하는 서비스를 제공하도록 지정될 수 있다.The storage node 230 includes a storage node controller 220 and one or more local storage devices 260. Of the plurality of nodes 230 in a cluster of storage nodes, each storage node 230 may include a storage node controller 220. In some embodiments, the storage node 230 may be designated to provide services to manage the associated physical disks 260 (e.g., backend NVMe SSDs) and their associated namespaces.

각 스토리지 노드 컨트롤러(220)는 호스트 연결 관리자(221), 명칭 공간(NS; namespace)/디스크 관리자(222), 및 NVMe 컨트롤러(223)를 포함한다. 호스트 연결 관리자(221)는 호스트(210)상에서 구동하는 애플리케이션들 및 노드(230)사이의 국부적인 또는 네트워크(250)상의 연결을 관리한다.Each storage node controller 220 includes a host connection manager 221, a namespace / disk manager 222, and an NVMe controller 223. Host connection manager 221 manages connections either locally or on network 250 between applications running on host 210 and node 230.

호스트 연결 관리자(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)을 통해 수행될 수 있다. The host connection manager 221 processes the request received from the client application and provides it to the NS / disk manager 222. Here, NS / disk manager 222 may be referred to as a storage device manager or a virtual namespace manager, as it manages the connection from a remote node to a network-connected storage device using a virtual namespace. For example, the host connection manager 221 intercepts NVMe-oF requests from the client application and provides NVMe-oF requests to the NS / disk manager 222 for further processing. The NS / disk manager 222 is coupled to one or more back-end NVMe SSDs 260, which may connect to one or more back-end NVMe SSDs 260 and locally or remotely through the fabric network in the same cluster Manages mapping to namespaces. The mapping of the remote backend SSD 260 to the virtual namespaces may be performed through a peer-to-peer connection between the two NS / disk managers 222.

NVMe 컨트롤러(223)는 부착된 백엔드 NVMe SSD들(260)로의 I/O 데이터 경로 및 연결을 수립하고, 제어하고, 관리할 수 있고, 명칭 공간 식별자(nsid; namespace identifier)를 할당할 수 있다. 연결이 수립된 이후에, NVMe 컨트롤러(223)는 명칭 공간 식별자를 사용하여 명칭 공간으로 및 명칭 공간으로부터 I/O 데이터를 라우팅할 수 있다.The NVMe controller 223 can establish, control, manage, and assign a namespace identifier (nsid) to the I / O data paths and connections to the attached backend NVMe SSDs 260. After the connection is established, the NVMe controller 223 can route the I / O data to the namespace and from the namespace using the namespace identifier.

여기에서, 명칭 공간(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)에 의해 어드레싱 가능하다. Here, the namespace NS refers to a list of logical block addresses (LBAs) addressable to each NVMe SSD 260. In an embodiment of the invention, node 230a includes one or more NVMe SSDs 260a, 260b. One or more NVMe SSDs 260a and 260b may be designated by their namespace (NS A, NS B) using their unique identifiers (nsid1, nsid2). Similarly, node 230b may include one or more NVMe SSDs 260c and 260d. One or more NVMe SSDs 260c and 260d are addressable by their namespace (ns c, ns d) using their identifiers (nsid3, nsid4).

일 실시 예에 따르면, 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)로부터 독립적으로 가상 명칭 공간들을 관리한다.According to one embodiment, the NS / disk manager 222 uses one or more storage devices 260 and their namespace, which may be associated with them, using the framework 200 of the present invention to another node You can map it virtually. The virtually mapped namespaces are named in the text as virtual namespaces (VNS). In order to support associations between namespaces NS of NVMe SSDs and virtual namespaces NVS, the NS / disk manager 222 may include a particular node 220, which may be local or remote to the node 220, Control, and manage virtual namespaces that can be associated with the NVMe SSDs 260 of the device. In comparison, the NVMe controller 223 can establish, control, and manage namespaces (NS) associated with physically connected local NVMe SSDs 260. The virtual namespace may be mapped to one or more namespaces that may be distributed through the cluster, but the NS / disk manager 222 may be operatively coupled to the namespace NS managed by the NVMe controller 223, Manages virtual namespaces.

NS/디스크 관리자(222)는 호스트(210)의 운영 체제의 구성 및 가상화 스킴에 따라, NVMe SSD(260)의 명칭 공간(NS)을 하나 또는 그 이상의 가상 명칭 공간들로 연관시킬 수 있다. NS/디스크 관리자(222)의 가상 명칭 공간 맵핑 능력을 사용하여, 본 발명의 프레임워크(200)는 애플리케이션으로부터의 요청에서 요구에 따라, 스토리지 공간을 탄력적으로 확장하거나 또는 축소할 수 있다.The NS / disk manager 222 may associate the namespace NS of the NVMe SSD 260 with one or more virtual namespaces, according to the configuration and virtualization scheme of the operating system of the host 210. Using the virtual namespace mapping capability of the NS / disk manager 222, the framework 200 of the present invention can flexibly expand or shrink the storage space as required by requests from applications.

본 발명의 실시 예에서, 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)에게 식별되지 않는다. In an embodiment of the present invention, the NS / DX manager 222a maps the virtual namespace vnsid200 to two distributed namespaces NSB and NSC. The namespace NS B is physically attached to the NVMe controller 223a of the node 220a and the namespace NS C is physically attached to the NVMe controller 223b of the node 220b. The storage node controller 220a can internally manage mappings (including virtual mappings) by using distributed metadata on the fabric network 250. [ Mapping to the virtual namespaces by the framework 200 of the present invention is performed by the host 210 (or host 210), since the virtual mapping and distributed storage settings and connections are performed through the peer NS / disk managers 222. [ (Such as a client application running on the backend NVMe SSDs 210) or backend NVMe SSDs 260.

분산된 메타데이터는 NS/디스크 관리자(222)에 의해 액세스될 수 있는 메타데이터 테이블에 저장될 수 있다. 글로벌 메타데이터 테이블은 호스트에서 모든 디스크들/명칭 공간들에 대하여, 단위-호스트 레벨에서 사용/프리/가용 공간(use/free/available space)의 정보를 저장한다. 메타데이터 테이블은 클러스터 레벨에서 글로벌 또는 공유된 정보로서 유지될 수 있다. 공간 요청들이 빈번하지 않기 때문에, 메타데이터 테이블의 업데이트들은 자주 일어나지 않을 수 있다. 본 발명의 실시 예에서, NS/디스크 관리자(222a)는 메타데이터 테이블을 검색하여 클러스터에서 필요한 디스크 공간의 가용량을 확인하고, NS/디스크 관리자(222b)로 요청을 전송하여 명칭 공간(NS C)를 맵핑한다. The distributed metadata may be stored in a metadata table that can be accessed by the NS / disk manager 222. The global metadata table stores information on use / free / available space at the unit-host level for all disks / namespaces in the host. The metadata table may be maintained as global or shared information at the cluster level. Since space requests are not frequent, updates to the metadata table may not happen often. In an embodiment of the present invention, the NS / disk manager 222a searches the metadata table to determine the amount of disk space required in the cluster and sends a request to the NS / disk manager 222b to create a namespace NS C ).

본 발명의 프레임워크(200)는 분산된 네트워크(250)의 NVMe SSD들(260)을 스토리지의 단일 풀로서 통합하고, 요청된 스토리지 용량에 따라 가상 명칭 공간들을 탄력적으로 확장하거나 또는 축소하고, 가상 디스크 또는 가상 명칭 공간을 클라이언트 애플리케이션에 제공한다. 본 발명의 프레임워크(200)는 요구에 따라 원격 스토리지 장치들 및 그것들의 가상 명칭 공간들로의 복수의 연결들을 수립할 수 있고, NS/디스크 관리자들(222)의 네트워크를 사용하여 연결들을 내부적으로 관리할 수 있다. 각 NS/디스크 관리자(222)는 부착된 NVMe SSD들(260)로의 물리적 연결을 관리하는 노드들에 배치되는 장치/노드-레벨, 가볍고, 얇은 소프트웨어 스택(또는 모듈)일 수 있다. The framework 200 of the present invention integrates the NVMe SSDs 260 of the distributed network 250 as a single pool of storage, resiliently expanding or reducing the virtual namespace according to the requested storage capacity, Disk or virtual namespace to the client application. The framework 200 of the present invention can establish multiple connections to remote storage devices and their virtual namespaces on demand and use the network of NS / disk managers 222 to connect connections internally . Each NS / disk manager 222 may be a device / node-level, lightweight, thin software stack (or module) that is deployed in nodes that manage the physical connection to the attached NVMe SSDs 260.

비록 본 발명의 실시 예는 2개의 호스트들(210) 및 2개의 노드들(230)을 보여주고 있으나, 임의의 수의 호스트들 및 노드들이 스토리지 노드들의 클러스터에 존재할 수 있음이 이해될 것이다. 추가적으로, 본 발명의 실시 예들은 각 노드(230)가 NVMe SSD들(260)을 포함하고, 각 NVMe SSD(260)가 그것의 유일한 명칭 공간 식별자에 의해 관리될 수 있을 보여준다. 다른 다수의 그리고 임의의 수 및 임의 형태의 스토리지 장치들이 각 노드(230)에 존재할 수 있음이 이해될 것이다. 예를 들어, 스토리지 장치(260)는 NVMe SSD 또는 NVMe-oF SSD일 수 있다. Although an embodiment of the present invention shows two hosts 210 and two nodes 230, it will be appreciated that any number of hosts and nodes may reside in a cluster of storage nodes. Additionally, embodiments of the present invention show that each node 230 includes NVMe SSDs 260, and each NVMe SSD 260 can be managed by its unique name space identifier. It will be appreciated that a number of other and any number and any type of storage devices may be present at each node 230. For example, the storage device 260 may be an NVMe SSD or an 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)의 일부인 단일 스토리지 노드 컨트롤러에 의해 아토믹하게 갱신될 때 모든 스토리지 노드로 단순히 분산되고 복사된 단순한 식별자일 수 있다. 3 shows a block diagram of an exemplary storage system, in accordance with one embodiment. The storage system 300 can use the framework of the present invention to provision storage space between a plurality of storage nodes 330 or storage devices 370 and a client application 301 running on a host computer . The storage node 330 includes a storage node controller (e.g., storage node controllers 220a, 220b of FIG. 2) capable of controlling one or more storage devices 370 of the storage node 330 do. Each storage node controller may be connected to other storage node controllers via the fabric network 350. Fabric network 350 may be referred to as a back-channel or internal communication network or management channel. Each storage node controller may export mount points for client applications 301 to mount and initiate regular block read / write and object / KV stores on distributed storage devices 370. [ The exported mount point may be created by mapping virtual namespaces from the backend directly attached to the storage node controller itself or from the other peer storage node 330 through the fabric network 350 to the actual physical namespace attached to the physical storage device . Each virtual namespace contains a unique virtual namespace identifier (vnsid). Assignment of the virtual namespace identifiers may be performed by consensus with the peer storage controllers of the storage system 300. The assignment and distribution of the virtual namespace identifiers can be dynamically managed or computed a priori when the connection request arrives. The consensus algorithm may be a generic distributed consensus algorithm that is well known in the art or may be located in a virtual namespace table and accessed by all storage controllers via shared storage Or may simply be a simple identifier that is simply distributed and copied to all storage nodes when atomically updated by a single storage node controller that is part of the storage system 300. [

예를 들어, 마운트 포인트/mnt/NVMe0n1은 vnsids의 세트를 포함하는 가상 명칭 공간 테이블을 포함한다. For example, the mount point / mnt / NVMe0n1 contains a virtual namespace table that contains a set of vnsids.

{ vnsid1=(IP addr1, nsid-xyz), { vnsid1 = (IP addr1, nsid-xyz),

vnsid2=(IP addr2, nsid-xyz), vnsid2 = (IP addr2, nsid-xyz),

vnsid2=(IP addr3, nsid-xyz) vnsid2 = (IP addr3, nsid-xyz)

}.}.

vnid들은 컨트롤러ID-NSID를 활용하여 생성될 수 있고, IP 어드레스와 연관되어 컨트롤러 마이그레이션을 도울 수 있다. 또 다른 실시 예에서, vnsid는 NVMe 컨트롤러들 및 그것들의 명칭 공간들을 포함하는 서브시스템ID를 활용하여 생성될 수 있다. vnsid들은 추론(inference)에 의해 생성될 수 있다.The vnids can be created utilizing the controller ID-NSID, and can be associated with an IP address to aid in controller migration. In another embodiment, vnsid may be created utilizing the subsystem ID that includes NVMe controllers and their namespaces. vnsids can be generated by inference.

클라이언트 애플리케이션에 영향을 주지 않고, 새로운 NVMe-oF SSD들이 마운트 포인트로 추가되거나 또는 제거되어 더큰 스토리지 공간을 쉽게 생성할 수 있기 때문에, 맵핑 테이블은 요구에 따라 확장될 수 있다. 클라이언트 애플리케이션은 초기 용량의 명칭 공간을 요청할 수 있고, 클라이언트 애플리케이션이 초기에 할당된 용량을 소모할 수 있기 때문에, 요구에 따라 초기 스토리지 용량을 증가 또는 축소시킬 수 있다. 인터페이스/API(application programming interface) 옵션은 연결 셋업 시간에 및/또는 확장된 NVMe 커맨드 세트의 일부로서 프레임워크로 전달될 수 있다. 본 발명의 프레임워크는 구동 중에 명칭 공간을 확장함으로써 쓰기 요청을 관리하거나 또는 초기에 협상된 용량 이상의 쓰기를 시도하는 클라이언트 애플리케이션(요청한 애플리케이션을 감지하지 못함)에서 실패할 수 있다.Since the new NVMe-oF SSDs can be added or removed as mount points without affecting the client application, it is possible to easily create more storage space, the mapping table can be extended on demand. The client application can request an initial capacity name space and can increase or decrease the initial storage capacity as required because the client application can consume the initially allocated capacity. The interface / application programming interface (API) option may be passed to the framework at connection setup time and / or as part of the extended NVMe command set. The framework of the present invention may fail in managing a write request by extending the namespace during operation, or in a client application attempting to write over the initially negotiated capacity (failing to detect the requested application).

일 실시 예에 따르면, 본 발명의 프레임워크는 피어 스토리지 컨트롤러들 사이의 통신들을 조직화하여 할당된 가상 명칭 공간 식별자들이 유일하도록 보장할 수 있다. 추가적으로, 프레임워크는 데이터 스토리지 공간(또는 객체 또는 키-밸류)이 특정 명칭 공간으로 할당되거나 또는 기입될 때 발생할 수 있는 복합성(complexities)을 관리할 수 있고, 글로벌 메타데이터 및 매핑 테이블 메커니즘들을 통해 데이터 스토리지 공간이 하나 또는 그 이상의 물리 명칭 공간들의 가상 추가에 의해 다른 물리적 스토리지 노드들로 확장될 수 있다. According to one embodiment, the framework of the present invention can organize communications between peer storage controllers to ensure that the assigned virtual namespace identifiers are unique. Additionally, the framework can manage the complexities that may arise when the data storage space (or object or key-value) is assigned or written to a particular namespace, The storage space may be extended to other physical storage nodes by the virtual addition of one or more physical namespaces.

일 실시 예에 따르면, 본 발명의 프레임워크는 가상 명칭 공간들을 통해 객체 요청들(읽기/쓰기)를 관리할 수 있다. 예를 들어, 애플리케이션은 제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)를 갱신하고, 할당된 스토리지 공간을 사용하기 시작한다. According to one embodiment, the framework of the present invention can manage object requests (read / write) through virtual namespaces. For example, the application is connected to the first storage node SN1, and the storage node controller of the storage node SN1 allocates the virtual namespace indicated by vnsid100 to the application. While the virtual namespace vnsid 100 is being allocated, the storage node controller can create a large object (VLOB_ 100) that can span the virtual namespace (vnsid 100) filling the initially allocated storage space. Assignment of the virtual namespace can be performed by the application by calling an API command, for example " PUT key-vlob100 ". The object VLOB_100 may be located entirely at the storage node SN1 of either a local attached storage (DAS) or at least one of the other physical storage devices of the remote storage node. The storage node controller manages the allocation and allocation of the object (VLOB_100) and the management and creation of the virtual namespace according to a request to one or more configuration drive namespaces. After allocating the object (VLOB_100), the storage node controller communicates with the application to notify that the object (VLOB_100) has been successfully allocated. The application updates the object (VLOB_100) on the application side and uses the allocated storage space Start.

초기에 할당된 공간을 사용하는 동안, 애플리케이션은 초기에 할당된 스토리지 공간을 전체적으로 소모할 수 있다. 이 경우에, 기본 스토리지 장치에서 COW(copy-to-write) 커맨드로 변환하는 애플리케이션에 의한 객체 풋 커맨드(object put command)는 에러(예를 들어, ENOSPACE)를 반환할 수 있다. 스토리지 노드 컨트롤러는 추가적인 스토리지 공간을 할당함으로써, 에러를 인터셉트하고, 관리할 수 있다. While initially using the allocated space, the application may consume the initially allocated storage space as a whole. In this case, the object put command by the application converting from the primary storage device to a COW (copy-to-write) command may return an error (e.g., ENOSPACE). The storage node controller can intercept and manage errors by allocating additional storage space.

스토리지 노드 컨트롤러는 다른 명칭 공간을 할당하고, 그것을 현재 명칭 공간에 첨부함(기입함)으로써, 명칭 공간을 확장할 수 있다. 예를 들어, 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로 표시된 물리적 스토리지 장치로 맵핑된다. The storage node controller can extend the namespace by allocating another namespace and appending (writing) it to the current namespace. For example, by allocating additional storage space to the storage node SN2 together with the IP address IPaddr2, the former vnsid = (IPaddr1, nsid-nvme0) becomes vnsid100 = {(IPaddr1, nsid-nvme0), (IPaddr2, nsid -nvme9)}. After negotiation with the storage node SN2, the object VLOB_100 may be extended through the physical storage device belonging to the storage node SN2 and the excess content of the VLOB_100 may be transferred to the physical storage device available from the storage node SN2 Can be written. The physical namespace (nsid-nvme9) is mapped to the physical storage device labeled nvme9 of the local storage node SN2.

객체 또는 KV 데이터의 READ들 또는 GET들과 같은 다른 커맨드들은 실질적으로 유사한 절차로 진행될 수 있다. 글로벌 맵핑 테이블은 업데이트된 가상 명칭 공간 식별자들을 저장한다. 글로벌 맵핑 테이블에서의 vnsid 색인은 특정 객체에 대한 맵핑 정보를 가리킨다. 병렬 읽기들은 가상 명칭 공간을 형성하는 스토리지 노드들의 명칭 공간들 또는 스토리지 노드들을 통해 객체의 모든 청크들을 읽기 위해 수행될 수 있다. 글로벌 메타데이터는 본 발명의 프레임워크에 의해 분산된 방식으로 유지될 수 있다.Other commands, such as READs or GETs of objects or KV data, may proceed in a substantially similar manner. The global mapping table stores the updated virtual namespace identifiers. The vnsid index in the global mapping table indicates the mapping information for a particular object. Parallel reads can be performed to read all the chunks of an object through the storage spaces or namespaces of the storage nodes that form the virtual namespace. Global metadata may be maintained in a distributed manner by the framework of the present invention.

동일한 애플리케이션 또는 다른 애플리케이션들이 객체(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)로 업데이트한다. When the same application or other applications request data associated with an object (VLOB_100), the framework of the present invention includes the ability to return the latest copy of VLOB_100 from the cluster to the requesting application. The framework can perform what is described above, by versioning each object using a version-stamp with a timestamp. For example, a first copy (currently outdated ) of VLOB_100 on ( IPaddr1, nsid-NVMe0 ) is marked for deletion and storage node sn1 is marked for garbage collection (an application sends an explicit DELETE object request to TRIM 0.0 > VLOB-100 < / RTI > When the storage node sn1 completes the garbage collection (GC), the storage node sn1 completely erases the first copy of the VLOB_100, and the framework sets the cluster internal location of the VLOB_100 as ( 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).4 is a flowchart of dynamically allocating storage space in a cluster of storage nodes, according to one embodiment. The client application requests the namespace of the initial storage capacity to the first storage node. In response, the storage manager of the first storage node allocates storage space to the first storage device of the first storage node, and assigns a virtual namespace to the allocated storage space (401). The storage manager receives a write request to store data in the storage space from the client application (402). The storage space initially allocated to the first storage device may be insufficient to store the data. In this case, the storage manager checks whether the currently allocated storage space includes sufficient storage space to store data associated with the write request (403). If the allocated storage space is sufficient, the storage manager writes the data to the allocated storage space (413) and updates the global mapping table accordingly (409). Otherwise, the storage manager checks whether the associated storage node (the first storage node) includes local disk space for writing data (404). If additional local disk space is available, the storage manager scales 414 the storage space in the local disk space, writes 408 data to the additional allocated storage space in the local disk space, and updates the global mapping table accordingly (409). If local disk space is not available, the storage manager looks up the global mapping table to identify a second storage node containing additional storage space (405). Because the storage administrators of the storage system can communicate with each other through the established network, the storage administrator can include information about the availability of additional storage space at other storage nodes in the same cluster. The storage manager of the first storage node negotiates 406 with the storage manager of the second storage node to allocate additional storage space. If the negotiation is successful (407), the storage manager of the first storage node expands the initially allocated storage space to include additional storage space allocated to the second storage device of the second node (417). If the negotiation fails, the storage manager of the first storage node communicates with the other storage nodes to expand the storage space. The storage manager of the first storage node writes 408 data to the additional storage space allocated at the second storage node by peer-to-peer communication between the first storage node and the second storage node through the network, The mapping table is updated to update the mapping information of the virtual namespace (409).

본 발명의 프레임 워크는 각 객체가 클러스터의 하나의 스토리지 노드(SN)에 의해서만 관리되는 것을 보장하는 범위로 해싱하는 것으로 가정한다. 이러한 일관된 해시 알고리즘은 클러스터의 모든 스토리지 노드들로 알려져 있으므로, VLOB_100에 대한 요청은 상술된 예에서 SN1로 보내지고, 이에 따라 객체 데이터에 읽기들에 대한 엄격한 일관성이 보장된다. 본 발명의 프레임 워크는 패브릭 네트워크 상의 클러스터의 복수의 스토리지 노드들을 통해 객체들을 확장하고 복제할 수 있고, 복제본에서 객체들을 추가로 캐싱할 수 있고, 지정된 복제본들에서 객체들을 무효화시킴으로써 성능 및 능력을 향상시킬 수 있다. It is assumed that the framework of the present invention hashes to a range ensuring that each object is managed only by one storage node (SN) of the cluster. Since this consistent hash algorithm is known to all the storage nodes of the cluster, the request for VLOB_100 is sent to SN1 in the above example, thereby ensuring strict consistency of reads to the object data. The framework of the present invention can expand and replicate objects through multiple storage nodes of a cluster on a fabric network, further cache objects on replicas, and improve performance and capabilities by invalidating objects on designated replicas .

일 실시 예에 따르면, 스토리지 노드들의 클러스터의 스토리지 노드는: 하나 또는 그 이상의 로컬 스토리지 장치들; 및 스토리지 노드 컨트롤러를 포함한다. 스토리지 노드 컨트롤러는: 호스트 컴퓨터 상에서 구동하는 애플리케이션과 연결되도록 구성된 호스트 인터페이스; 하나 또는 그 이상의 가상 명칭 공간들을 관리하도록 구성된 스토리지 관리자; 및 하나 또는 그 이상의 스토리지 장치들과 연관된 각각의 명칭 공간을 관리하도록 구성된 스토리지 장치 컨트롤러를 포함한다. 스토리지 노드가 충분한 스토리지 공간을 포함하는 경우, 스토리지 관리자는 호스트 컴퓨터 상에서 구동하는 애플리케이션의 요청에서 스토리지 노드의 하나 또는 그 이상의 로컬 스토리지 장치들에서 요구에 따라 가상 명칭 공간과 연관된 스토리지 공간을 확장하도록 더 구성된다. 스토리지 노드가 불충분한 공간을 포함하는 경우, 스토리지 관리자는 네트워크 상의 제2 스토리지 노드의 피어 스토리지 관리자와 통신하도록 구성되고, 호스트 컴퓨터 상에서 구동하는 애플리케이션의 요청에서 제2 스토리지 노드의 로컬 스토리지 장치에서 요구에 따라 가상 명칭 공간과 연관된 스토리지 공간을 확장하도록 구성된다.According to one embodiment, a storage node of a cluster of storage nodes comprises: one or more local storage devices; And a storage node controller. The storage node controller comprises: a host interface configured to connect with an application running on the host computer; A storage manager configured to manage one or more virtual namespaces; And a storage device controller configured to manage respective namespaces associated with the one or more storage devices. If the storage node includes sufficient storage space, the storage manager may further configure to extend the storage space associated with the virtual namespace on demand at one or more local storage devices of the storage node at the request of an application running on the host computer do. If the storage node contains insufficient space, the storage manager is configured to communicate with the peer storage manager of the second storage node on the network, and in response to a request from an application running on the host computer, Thereby extending the storage space associated with the virtual namespace.

하나 또는 그 이상의 스토리지 장치들은 PCIe 버스를 통해 스토리지 노드 컨트롤러와 연결될 수 있다.One or more storage devices may be coupled to the storage node controller via the PCIe bus.

하나 또는 그 이상의 로컬 스토리지 장치들은 NVMe(nonvolatile memory express) 장치들일 수 있다.One or more local storage devices may be NVMe (nonvolatile memory express) devices.

네트워크는 패브릭 네트워크일 수 있다.The network may be a fabric network.

패브릭 네트워크는 이더넷(Ethernet), 파이버 채널(Fibre Channel), 및 인피니밴드(Infiniband) 중 하나일 수 있다. The fabric network may be one of Ethernet, Fiber Channel, and Infiniband.

스토리지 공간이 제2 스토리지 노드로 확장된 이후에, 스토리지 관리자는 글로벌 맵핑 테이블을 업데이트하여 가상 명칭 공간을 업데이트할 수 있다. After the storage space is extended to the second storage node, the storage manager can update the global mapping table to update the virtual namespace.

가상 명칭 공간은 제2 스토리지 노드의 적어도 하나의 스토리지 장치로 전체적으로 또는 부분적으로 맵핑될 수 있고, 제2 스토리지 노드의 적어도 하나의 스토리지 장치에 저장된 데이터를 액세스하는 요청은 스토리지 노드의 스토리지 관리자 및 제2 노드의 피어 스토리지 공간 관리자 사이의 피어-투-피어 통신(peer-to-peer communication)에 의해 처리될 수 있다. The virtual namespace may be mapped to the at least one storage device of the second storage node in whole or in part and the request to access the data stored in at least one storage device of the second storage node may be a storage manager of the storage node and a second May be handled by peer-to-peer communication between the node's peer storage space managers.

스토리지 공간에 저장된 데이터는 객체(object) 또는 키-밸류(KV; key-value) 데이터일 수 있다.The data stored in the storage space may be an object or key-value (KV) data.

다른 실시 예에 따르면, 스토리지 시스템은: 복수의 호스트 컴퓨터들; 및 네트워크를 통해 복수의 호스트 컴퓨터들과 연결된 복수의 스토리지 노드들을 포함한다. 복수의 스토리지 노드들은 스토리지 노드 컨트롤러를 포함하는 스토리지 노드를 포함한다. 스토리지 노드 컨트롤러는 호스트 컴퓨터 상에서 구동하는 애플리케이션과 연결되도록 구성된 호스트 인터페이스; 하나 또는 그 이상의 가상 명칭 공간들을 관리하도록 구성된 스토리지 관리자; 및 하나 또는 그 이상의 스토리지 장치들과 연관된 각각의 명칭 공간을 관리하도록 구성된 스토리지 장치 컨트롤러를 포함한다. 스토리지 노드가 충분한 스토리지 공간을 포함하는 경우, 스토리지 관리자는 호스트 컴퓨터 상에서 구동하는 애플리케이션의 요청에서 스토리지 노드의 하나 또는 그 이상의 로컬 스토리지 장치들 상에서 요구에 따라 가상 명칭 공간과 연관된 스토리지 공간을 확장하도록 더 구성된다. 스토리지 노드가 불충분한 공간을 포함하는 경우, 스토리지 관리자는 네트워크 상의 제2 스토리지 노드의 피어 스토리지 관리자와 통신하도록 구성되고, 호스트 컴퓨터 상에서 구동하는 애플리케이션의 요청에서 제2 스토리지 노드의 로컬 스토리지 장치 상에서 요구에 따라 가상 명칭 공간과 연관된 스토리지 공간을 확장하도록 구성된다.According to another embodiment, a storage system comprises: a plurality of host computers; And a plurality of storage nodes coupled to the plurality of host computers via the network. The plurality of storage nodes includes a storage node including a storage node controller. The storage node controller comprises: a host interface configured to connect with an application running on the host computer; A storage manager configured to manage one or more virtual namespaces; And a storage device controller configured to manage respective namespaces associated with the one or more storage devices. If the storage node includes sufficient storage space, the storage manager may further configure to extend the storage space associated with the virtual namespace on demand on one or more local storage devices of the storage node at the request of an application running on the host computer do. If the storage node contains insufficient space, the storage manager is configured to communicate with the peer storage manager of the second storage node on the network, and upon request of the application running on the host computer, to request on the local storage device of the second storage node Thereby extending the storage space associated with the virtual namespace.

스토리지 시스템은 스토리지 공간이 제2 스토리지 노드로 확장된 이후에, 가상 명칭 공간을 업데이트하는 글로벌 맵핑 테이블을 더 포함할 수 있다.The storage system may further include a global mapping table that updates the virtual namespace after the storage space has been extended to the second storage node.

제2 스토리지 노드의 로컬 스토리지 장치는 PCIe 버스를 통해 제2 스토리지 노드 컨트롤러와 연결될 수 있다.The local storage device of the second storage node may be coupled to the second storage node controller via the PCIe bus.

제2 스토리지 노드의 로컬 스토리지 장치는 NVMe(nonvolatile memory express) 장치일 수 있다.The local storage device of the second storage node may be a nonvolatile memory express (NVMe) device.

네트워크는 패브릭 네트워크일 수 있다.The network may be a fabric network.

패브릭 네트워크는 이더넷(Ethernet), 파이버 채널(Fibre Channel), 및 인피니밴드(Infiniband) 중 하나일 수 있다. The fabric network may be one of Ethernet, Fiber Channel, and Infiniband.

스토리지 공간에 저장된 데이터는 객체(object) 또는 키-밸류(KV; key-value) 데이터일 수 있다.The data stored in the storage space may be an object or key-value (KV) data.

또 다른 실시 예에 따르면, 방법은: 가상 명칭 공간을 사용하여 제1 스토리지 노드의 제1 스토리지 장치에 스토리지 공간을 할당하는 단계; 호스트 컴퓨터 상에서 구동하는 애플리케이션으로부터 스토리지 공간에 데이터를 저장하기 위한 쓰기 요청을 수신하는 단계; 할당된 스토리지 공간이 쓰기 요청과 연관된 데이터를 저장하는데 불충분한 스토리지 공간을 포함하는것으로 판별하는 단계; 제1 스토리지 노드가 데이터를 저장하는데 충분한 스토리지 공간을 포함하는 경우 제1 스토리지 노드로 추가 스토리지 공간을 포함시킴으로써 스토리지 공간을 확장하는 단계; 제1 스토리지 노드의 추가 스토리지 공간에 데이터를 기입하는 단계; 제1 스토리지 노드가 데이터를 저장하는데 불충분한 스토리지 공간을 포함하는 경우, 추가 스토리지 공간을 포함하는 제2 스토리지 노드를 식별하는 단계; 제2 스토리지 노드와 협상하여 추가 스토리지 공간을 할당하는 단계; 제2 스토리지 노드에 추가적으로 할당된 스토리지 공간을 포함함으로써 스토리지 공간을 확장하는 단계; 네트워크를 통한 제1 스토리지 노드 및 제2 스토리지 노드 사이의 피어-투-피어 통신(peer-to-peer communication)에 의해 제2 스토리지 노드에 추가적으로 할당된 스토리지 공간에 데이터를 기입하는 단계; 및 글로벌 맵핑 테이블을 업데이트하여 가상 명칭 공간의 맵핑 정보를 업데이트하는 단계를 포함한다.According to yet another embodiment, a method includes: allocating storage space to a first storage device of a first storage node using a virtual namespace; Receiving a write request for storing data in a storage space from an application running on a host computer; Determining that the allocated storage space includes insufficient storage space to store data associated with the write request; Expanding the storage space by including additional storage space in the first storage node when the first storage node includes sufficient storage space to store data; Writing data to an additional storage space of the first storage node; Identifying a second storage node that includes additional storage space if the first storage node includes insufficient storage space to store data; Negotiating with the second storage node to allocate additional storage space; Expanding the storage space by including storage space additionally allocated to the second storage node; Writing data to a storage space additionally allocated to a second storage node by peer-to-peer communication between the first storage node and the second storage node via the network; And updating the global mapping table to update the mapping information of the virtual namespace.

방법은: 제1 스토리지 노드의 스토리지 장치 컨트롤러로부터 에러를 인터셉트하는 단계; 및 제2 스토리지 노드가 추가 스토리지 공간을 포함하는 것을 식별하는 단계를 더 포함할 수 있다.The method includes: intercepting an error from a storage device controller of the first storage node; And identifying that the second storage node includes additional storage space.

방법은: 제1 스토리지 노드의 제1 스토리지 장치 및 제2 스토리지 노드의 제2 스토리지 장치를 병렬로 액세스하는 단계를 더 포함할 수 있다.The method may further comprise: accessing the first storage device of the first storage node and the second storage device of the second storage node in parallel.

방법은: 제1 스토리지 장치에 저장된 데이터를 무효화하는 단계; 제1 스토리지 장치에 저장된 데이터의 로컬 사본을 삭제하는 단계; 및 가상 명칭 공간을 업데이트하여 제2 스토리지 노드의 제2 스토리지 장치로 맵핑하는 단계를 더 포함할 수 있다.The method includes: invalidating data stored in the first storage device; Deleting a local copy of the data stored in the first storage device; And updating the virtual namespace to map to a second storage device of the second storage node.

스토리지 공간에 포함된 데이터는 객체(object) 또는 키-밸류(KV; key-value) 데이터일 수 있다.The data contained in the storage space may be an object or key-value (KV) data.

상술된 예시적인 실시 예들은 분산된 방식으로 물리적 스토리지 노드들을 통한 확장 및 가상 명칭 공간 관리와 함께 프레임워크에 의한 객체 읽기 및 쓰기 동작들을 관리하는 것 및 가상 명칭 공간 관리을 사용하는 온-디맨드 스토리지 프로비져닝을 제공하는 시스템 및 방법을 구현하는 다양한 실시 예들을 보여주기 위해 설명되었다. 기재된 예시적인 실시 예들로부터의 다양한 변형들은 당업자의해 수행될 수 있다. 본 발명의 범위 내에 있는 구성은 이하의 특허청구범위에서 설명된다. The above-described exemplary embodiments provide an approach for managing object read and write operations by the framework, along with extensions over physical storage nodes and virtual namespace management in a distributed manner, and on-demand storage provisioning using virtual namespace management. ≪ RTI ID = 0.0 > and / or < / RTI > Various modifications from the described exemplary embodiments can be made by those skilled in the art. Configurations within the scope of the invention are set forth in the following claims.

Claims (10)

스토리지 노드에 있어서,
하나 또는 그 이상의 로컬 스토리지 장치들; 및
스토리지 노드 컨트롤러를 포함하고,
상기 스토리지 노드 컨트롤러는:
호스트 컴퓨터 상에서 구동하는 애플리케이션과 연결되도록 구성된 호스트 인터페이스;
하나 또는 그 이상의 가상 명칭 공간들을 관리하도록 구성된 스토리지 관리자; 및
상기 하나 또는 그 이상의 스토리지 장치들과 연관된 각각의 명칭 공간을 관리하도록 구성된 스토리지 장치 컨트롤러를 포함하고,
상기 스토리지 관리자는 상기 스토리지 노드가 충분한 스토리지 공간을 포함하는 경우, 상기 호스트 컴퓨터 상에서 구동하는 상기 애플리케이션의 요청에서 상기 스토리지 노드의 상기 하나 또는 그 이상의 로컬 스토리지 장치들 상에서 요구에 따라서 가상 명칭 공간과 연관된 스토리지 공간을 확장하도록 더 구성되고,
상기 스토리지 노드가 불충분한 스토리지 공간을 포함하는 경우, 상기 스토리지 관리자는 네트워크 상에서 제2 스토리지 노드의 피어 스토리지 관리자와 통신하도록 구성되고, 상기 호스트 컴퓨터 상에서 구동하는 상기 애플리케이션의 상기 요청에서 상기 제2 스토리지 노드의 로컬 스토리지 장치 상에서 요구에 따라서 상기 가상 명칭 공간과 연관된 상기 스토리지 공간을 확장하도록 구성된 스토리지 노드.
In a storage node,
One or more local storage devices; And
A storage node controller,
The storage node controller comprising:
A host interface configured to connect with an application running on the host computer;
A storage manager configured to manage one or more virtual namespaces; And
And a storage device controller configured to manage respective namespaces associated with the one or more storage devices,
Wherein the storage manager is further adapted to, in response to a request from the application running on the host computer when the storage node includes sufficient storage space, to store, in response to a request on the one or more local storage devices of the storage node, Further configured to expand the space,
Wherein the storage manager is configured to communicate with a peer storage manager of a second storage node on a network if the storage node includes insufficient storage space, wherein in the request of the application running on the host computer, The storage node being configured to expand the storage space associated with the virtual namespace according to a request on a local storage device of the storage node.
제 1 항에 있어서,
상기 하나 또는 그 이상의 스토리지 장치들은 PCIe 버스를 통해 상기 스토리지 노드 컨트롤러와 연결되는 스토리지 노드.
The method according to claim 1,
Wherein the one or more storage devices are connected to the storage node controller via a PCIe bus.
제 2 항에 있어서,
상기 하나 또는 그 이상의 스토리지 장치들은 NVMe(nonvolatile memory express) 장치들인 스토리지 노드.
3. The method of claim 2,
Wherein the one or more storage devices are nonvolatile memory express (NVMe) devices.
제 3 항에 있어서,
상기 네트워크는 패브릭 네트워크인 스토리지 노드.
The method of claim 3,
Wherein the network is a fabric network.
제 4 항에 있어서,
상기 패브릭 네트워크는 이더넷, 파이버 채널, 및 인피니밴드 중 하나인 스토리지 노드.
5. The method of claim 4,
Wherein the fabric network is one of Ethernet, Fiber Channel, and InfiniBand.
제 1 항에 있어서,
상기 스토리지 공간이 상기 제2 스토리지 노드로 확장된 이후에, 상기 스토리지 관리자는 글로벌 맵핑 테이블을 업데이트하여, 상기 가상 명칭 공간을 업데이트하는 스토리지 노드.
The method according to claim 1,
After the storage space is extended to the second storage node, the storage manager updates the global mapping table to update the virtual namespace.
제 1 항에 있어서,
상기 가상 명칭 공간은 상기 제2 스토리지 노드의 적어도 하나의 스토리지 장치로 전체적으로 또는 부분적으로 맵핑되고, 상기 제2 스토리지 노드의 상기 적어도 하나의 스토리지 장치에 저장된 데이터를 액세스하기 위한 요청은 상기 스토리지 노드의 상기 스토리지 관리자 및 상기 제2 스토리지 노드의 상기 피어 스토리지 관리자 사이의 피어-투-피어 통신에 의해 처리되는 스토리지 노드.
The method according to claim 1,
Wherein the virtual namespace is mapped in whole or in part to at least one storage device of the second storage node and a request to access data stored in the at least one storage device of the second storage node is stored in the storage node A storage node being processed by peer-to-peer communication between the storage manager and the peer storage manager of the second storage node.
제 1 항에 있어서,
상기 스토리지 공간에 저장된 상기 데이터는 객체(object) 또는 키-밸류(KV; key-value) 데이터인 스토리지 노드.
The method according to claim 1,
Wherein the data stored in the storage space is an object or key-value (KV) data.
스토리지 시스템에 있어서,
복수의 호스트 컴퓨터들; 및
네트워크를 통해 상기 복수의 호스트 컴퓨터들과 연결된 복수의 스토리지 노드들을 포함하고,
상기 복수의 스토리지 노드들은 스토리지 노드 컨트롤러를 포함하는 스토리지 노드를 포함하고,
상기 스토리지 노드 컨트롤러는:
호스트 컴퓨터 상에서 구동하는 애플리케이션과 연결되도록 구성된 호스트 인터페이스;
하나 또는 그 이상의 가상 명칭 공간들을 관리하도록 구성된 스토리지 관리자; 및
상기 하나 또는 그 이상의 스토리지 장치들과 연관된 각각의 명칭 공간을 관리하도록 구성된 스토리지 장치 컨트롤러를 포함하고,
상기 스토리지 관리자는 상기 스토리지 노드가 충분한 스토리지 공간을 포함하는 경우, 상기 호스트 컴퓨터 상에서 구동하는 상기 애플리케이션의 요청에서 상기 스토리지 노드의 상기 하나 또는 그 이상의 로컬 스토리지 장치들 상에서 요구에 따라서 가상 명칭 공간과 연관된 스토리지 공간을 확장하도록 구성되고,
상기 스토리지 노드가 불충분한 스토리지 공간을 포함하는 경우, 상기 스토리지 관리자는 네트워크 상에서 제2 스토리지 노드의 피어 스토리지 관리자와 통신하도록 구성되고, 상기 호스트 컴퓨터 상에서 구동하는 상기 애플리케이션의 상기 요청에서 상기 제2 스토리지 노드의 로컬 스토리지 장치 상에서 요구에 따라서 상기 가상 명칭 공간과 연관된 상기 스토리지 공간을 확장하도록 구성된 스토리지 시스템.
In a storage system,
A plurality of host computers; And
A plurality of storage nodes coupled to the plurality of host computers via a network,
The plurality of storage nodes including a storage node including a storage node controller,
The storage node controller comprising:
A host interface configured to connect with an application running on the host computer;
A storage manager configured to manage one or more virtual namespaces; And
And a storage device controller configured to manage respective namespaces associated with the one or more storage devices,
Wherein the storage manager is further adapted to, in response to a request from the application running on the host computer when the storage node includes sufficient storage space, to store, in response to a request on the one or more local storage devices of the storage node, Configured to expand space,
Wherein the storage manager is configured to communicate with a peer storage manager of a second storage node on a network if the storage node includes insufficient storage space, wherein in the request of the application running on the host computer, And to extend the storage space associated with the virtual namespace upon request on a local storage device of the storage system.
방법에 있어서,
가상 명칭 공간을 사용하여 제1 스토리지 노드의 제1 스토리지 장치에 스토리지 공간을 할당하는 단계;
호스트 컴퓨터 상에서 구동하는 애플리케이션으로부터 상기 스토리지 공간에 데이터를 저장하는 쓰기 요청을 수신하는 단계;
상기 할당된 스토리지 공간이 상기 쓰기 요청과 연관된 상기 데이터를 저장하는데 불충분한 스토리지 공간을 포함하는것으로 판별하는 단계;
상기 제1 스토리지 노드가 상기 데이터를 저장하는데 충분한 스토리지 공간을 포함하는 경우, 상기 제1 스토리지 노드에 추가적인 스토리지 공간을 포함시킴으로써 상기 스토리지 공간을 확장하는 단계;
상기 제1 스토리지 노드의 추가적인 스토리지 공간에 데이터를 기입하는 단계;
상기 제1 스토리지 노드가 상기 데이터를 저장하는데 불충분한 스토리지 공간을 포함하는 경우 추가적인 스토리지 공간을 포함하는 제2 스토리지 노드를 식별하는 단계;
상기 제2 스토리지 노드와 협상하여 상기 추가적인 스토리지 공간을 할당하는 단계;
상기 제2 스토리지 노드에 상기 추가적으로 할당된 스토리지 공간을 포함시킴으로써 상기 스토리지 공간을 확장하는 단계;
상기 네트워크를 통한 상기 제1 스토리지 노드 및 상기 제2 스토리지 노드 사이의 피어-투-피어 통신에 의해 상기 제2 스토리지 노드에 상기 추가적으로 할당된 스토리지 공간으로 상기 데이터를 기입하는 단계; 및
글로벌 맵핑 테이블을 업데이트하여 상기 가상 명칭 공간의 맵핑 정보를 업데이트하는 단계를 포함하는 방법.


In the method,
Allocating storage space to a first storage device of a first storage node using a virtual namespace;
Receiving a write request for storing data in the storage space from an application running on a host computer;
Determining that the allocated storage space includes insufficient storage space for storing the data associated with the write request;
Expanding the storage space by including additional storage space in the first storage node if the first storage node includes sufficient storage space to store the data;
Writing data to an additional storage space of the first storage node;
Identifying a second storage node that includes additional storage space if the first storage node includes insufficient storage space to store the data;
Negotiating with the second storage node to allocate the additional storage space;
Expanding the storage space by including the additional allocated storage space in the second storage node;
Writing the data to the additional storage space at the second storage node by peer-to-peer communication between the first storage node and the second storage node over the network; And
Updating the global mapping table to update the mapping information of the virtual namespace.


KR1020180126347A 2017-11-16 2018-10-22 On-demand storage provisioning using distributed and virtual namespace management KR102444832B1 (en)

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 2018-03-07
US15/914,820 US10768820B2 (en) 2017-11-16 2018-03-07 On-demand storage provisioning using distributed and virtual namespace management

Publications (2)

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

Family

ID=66433311

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180126347A KR102444832B1 (en) 2017-11-16 2018-10-22 On-demand storage provisioning using distributed and virtual namespace management

Country Status (3)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102471966B1 (en) * 2021-11-25 2022-11-30 (주)글루시스 Data input and output method using storage node based key-value srotre

Families Citing this family (22)

* 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 (en) * 2020-04-27 2023-04-07 浙江大华技术股份有限公司 Cluster storage method, system, computer equipment and storage medium
EP3933602B1 (en) * 2020-07-02 2023-12-13 Samsung Electronics Co., Ltd. Operation method of storage device
KR20220003786A (en) * 2020-07-02 2022-01-11 삼성전자주식회사 Operation method of storage device
US11079939B1 (en) * 2020-07-30 2021-08-03 Hewlett Packard Enterprise Development Lp Distributing I/O Q-connections of subsytems among hosts
CN112333283B (en) * 2020-11-20 2022-12-13 华东计算技术研究所(中国电子科技集团公司第三十二研究所) Autonomous high-end storage array system architecture
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
CN114089926B (en) * 2022-01-20 2022-07-05 阿里云计算有限公司 Management method of distributed storage space, computing equipment and storage medium
US11829602B2 (en) * 2022-03-16 2023-11-28 Dell Products L.P. Intelligent path selection in a distributed storage system
CN114691037A (en) * 2022-03-18 2022-07-01 阿里巴巴(中国)有限公司 System and method for managing unloading card name space and processing input/output request
CN115617264A (en) * 2022-09-21 2023-01-17 浙江大华技术股份有限公司 Distributed storage method and device
CN116319967B (en) * 2023-05-18 2023-07-25 深圳锐爱电子有限公司 Data storage expansion method, device and equipment based on Internet of things and storage medium

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100062442A (en) * 2008-12-02 2010-06-10 엔에이치엔비즈니스플랫폼 주식회사 System and method for accessing to file storage

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7571168B2 (en) 2005-07-25 2009-08-04 Parascale, Inc. Asynchronous file replication and migration in a storage network
US20080155214A1 (en) 2006-12-21 2008-06-26 Hidehisa Shitomi Method and apparatus for file system virtualization
WO2010092576A1 (en) * 2009-02-11 2010-08-19 Xsignnet Ltd. Virtualized storage system and method of operating it
JP5360978B2 (en) 2009-05-22 2013-12-04 株式会社日立製作所 File server and file operation notification method in file server
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 (en) * 2013-01-18 2013-05-01 浪潮电子信息产业股份有限公司 Method for expanding parallel file system by free hard disk space of cluster computing node
CN103209219A (en) * 2013-04-23 2013-07-17 深圳市京华科讯科技有限公司 Distributed cluster file system
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
JP6256931B2 (en) 2013-12-11 2018-01-10 インテル・コーポレーション Using cache and non-cache in distributed storage systems
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100062442A (en) * 2008-12-02 2010-06-10 엔에이치엔비즈니스플랫폼 주식회사 System and method for accessing to file 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) *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102471966B1 (en) * 2021-11-25 2022-11-30 (주)글루시스 Data input and output method using storage node based key-value srotre
WO2023096118A1 (en) * 2021-11-25 2023-06-01 (주)글루시스 Data input and output method using storage node-based key-value store

Also Published As

Publication number Publication date
US10768820B2 (en) 2020-09-08
KR102444832B1 (en) 2022-09-21
CN109799951B (en) 2024-03-01
US20190146675A1 (en) 2019-05-16
CN109799951A (en) 2019-05-24

Similar Documents

Publication Publication Date Title
KR102444832B1 (en) On-demand storage provisioning using distributed and virtual namespace management
KR102457611B1 (en) Method and apparatus for tenant-aware storage sharing platform
JP7437117B2 (en) Solid state drive (SSD) and distributed data storage system and method thereof
EP3039575B1 (en) Scalable distributed storage architecture
US11847098B2 (en) Metadata control in a load-balanced distributed storage system
US9329792B2 (en) Storage thin provisioning and space reclamation
EP3502877B1 (en) Data loading method and apparatus for virtual machines
US8271559B2 (en) Storage system and method of controlling same
US20120096059A1 (en) Storage apparatus and file system management method
US8954706B2 (en) Storage apparatus, computer system, and control method for storage apparatus
WO2015176636A1 (en) Distributed database service management system
US8935499B2 (en) Interface for management of data movement in a thin provisioned storage system
JP2014175009A (en) System, method and computer-readable medium for dynamic cache sharing in flash-based caching solution supporting virtual machines
US10970106B1 (en) Storage device sharing among virtual machines
US20130124674A1 (en) Computer system and data migration method
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 (en) Data loading method and device
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 (en) Self-management storage method and system
US20220318042A1 (en) Distributed memory block device storage
US11481147B1 (en) Buffer allocation techniques
KR101099130B1 (en) A storage management system with virtual volumes

Legal Events

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