KR102044023B1 - 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법 - Google Patents

키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법 Download PDF

Info

Publication number
KR102044023B1
KR102044023B1 KR1020130027135A KR20130027135A KR102044023B1 KR 102044023 B1 KR102044023 B1 KR 102044023B1 KR 1020130027135 A KR1020130027135 A KR 1020130027135A KR 20130027135 A KR20130027135 A KR 20130027135A KR 102044023 B1 KR102044023 B1 KR 102044023B1
Authority
KR
South Korea
Prior art keywords
node
storage
service front
key
cache
Prior art date
Application number
KR1020130027135A
Other languages
English (en)
Other versions
KR20140112717A (ko
Inventor
정복득
이성민
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020130027135A priority Critical patent/KR102044023B1/ko
Priority to US14/775,801 priority patent/US10083118B2/en
Priority to PCT/KR2014/001868 priority patent/WO2014142473A1/ko
Publication of KR20140112717A publication Critical patent/KR20140112717A/ko
Application granted granted Critical
Publication of KR102044023B1 publication Critical patent/KR102044023B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • G11C15/046Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements using non-volatile storage elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 데이터 스토리지 시스템에 관한 것으로, 기판 모듈과, 중앙 처리부, 상기 기판 모듈에 배치된 메모리 및 캐쉬 저장을 위한 낸드 플래시 스토리지를 포함하는 컴퓨팅 노드들, 상기 컴퓨팅 노드들을 연결하는 통신 인터페이스부를 포함하며, 상기 컴퓨팅 노드들은 키 값(key/value) 기반 데이터 처리를 지원하는 것을 특징으로 하는 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법의 구성을 개시한다.

Description

키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법{Data Storage System based on a key-value and Operating Method thereof}
본 발명은 키 값 스토리지(key-value storage) 시스템에 관한 것으로, 보다 구체적으로 저전력 및 고성능 데이터 입출력을 지원할 수 있는 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법에 관한 것이다.
멤캐쉬드(Memcached)를 키 값 캐쉬(key-value cache) 서버로 사용하고 실제 데이터는 DBS(DataBase Sever)에 저장하는 방법은 분산 캐쉬 서버(distribution cache server)를 활용하고 클라이언트 라이브러리(client library)에서 컨시스턴트 해싱(consistent hasing)으로 캐쉬 노드를 선택하여 데이터 입출력을 처리한다. 여기서 클라이언트 프로그램은 캐쉬 관리(cache management)를 담당해야 하고 캐쉬 서버와 DBS를 따로 두어 데이터를 처리한다.
한편 CMU(Carnegie Mellon University)에서 제안한 FAWN(Fast Array of Wimpy Nodes)는 저사양 노드와 SSD(Solid State Disk)로 구성된 클러스터로 키 값 스토리지(키 값 스토리지(key-value storage))를 구성하고 클라이언트는 하나의 프런트 앤드(front-end) 노드에 접근해서 키 값 운용(key-value operation)을 요청한다. 프런트 앤드는 클라이언트로부터 받은 요청을 컨시스턴트 해싱으로 해당 키 값(key-value)을 저장할 백앤드 노드(Backend node)를 결정하고 해당 노드에 데이터 저장을 요청한다. 프런트 앤드는 요청의 결과를 자신의 메모리에 유지하여 추후 get operation 시 백앤드 노드를 거치지 않고 캐싱된 데이터를 클라이언트에게 제공한다.
상술한 종래 방식에서 멤캐쉬드 구조를 이용하는 방식은 고성능 서버기반 키 값 스토리지(키 값 스토리지(key-value storage))와 get operation의 성능 개선을 위해 사용되었다. 그러나 이러한 멤캐쉬드 방식은 에너지 소모가 크고 클라이언트가 직접 캐쉬 관리(cache management)를 담당해야 하며, cache miss가 발생하는 경우 서버와 2번의 통신(memcached에서 1회, storage server에서 1회)함으로써 통신 오버헤드(communication overhead)가 발생하는 문제가 있다.
또한 종래 FAWN(Fast Array of Wimpy Nodes) 방식의 경우, 클라이언트는 하나의 서비스 프런트 앤드 노드로만 접속하여 키 값 서비스를 제공 받기 때문에 특정 프런트 앤드 노드에 의한 병목 현상(bottleneck)이 발생하며, 캐쉬(Cache)는 서비스 프런트 앤드 노드의 메모리에만 유지하기 때문에 캐쉬 크기가 작은 단점이 있다.
따라서 본 발명의 목적은 전술된 바와 같은 종래 기술의 문제점을 해결하기 위한 것으로, 고성능 스토리지 예컨대 낸드 플래시 스토리지(NAND Flash storage)가 장착된 클러스터를 기반으로 키 값 스토리지 시스템(키 값 스토리지(key-value storage) system)을 구성하고 각 스토리지 노드(스토리지 노드(storage node))의 유휴 메모리(idle memory))를 캐쉬(cache)로 활용하여 저전력 고성능의 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법을 제공함에 있다.
상기 목적을 달성하기 위한 본 발명은 기판 모듈에 해당하는 보드와, 상기 기판 모듈에 배치된 중앙 처리부, 상기 기판 모듈에 배치된 메모리 및 캐쉬 저장을 위한 낸드 플래시 스토리지를 포함하는 컴퓨팅 노드들, 상기 컴퓨팅 노드들을 연결하는 통신 인터페이스부를 포함하며, 상기 컴퓨팅 노드들은 키 값(key/value) 기반 데이터 처리를 지원하는 것을 특징으로 하는 키 값 기반 데이터 스토리지 시스템의 구성을 개시한다.
상기 컴퓨팅 노드는 SD card/SSD가 장착된 ARM 보드 또는 낸드 플래시 스토리지가 SoC(System on chip)에 포함된 ARM 보드를 포함하는 클러스터를 구성하거나, 상기 ARM CPU, 메모리, 낸드 플래시 스토리지가 탑재된 다수의 SSD들을 연동하여 클러스터를 구성하거나, IO 가상화를 통해 SSD를 사용하는 ARM기반 마이크로서버로 클러스터를 구성한다.
상기 컴퓨팅 노드는 키 값(key-value) 데이터를 실제 저장하는 복수개의 스토리지 노드, 키 값 스토리지(key-value storage)를 구성하기 위해 상기 복수개의 스토리지 노드 각각의 키 범위(key range)를 할당하는 적어도 하나의 서비스 프런트 앤드 노드, 상기 적어도 하나의 서비스 프런트 앤드 노드들의 관리를 위해 상기 서비스 프런트 앤드 노드들 중 하나로 구성되는 스토리지 마스터 노드를 구성한다.
상기 서비스 프런트 앤드 노드는 상기 스토리지 노드의 유휴 메모리(idle memory)로 캐쉬 클러스터(cache cluster)를 구성하여 캐쉬(cache) 크기를 동적으로 확장 운용한다.
상기 컴퓨팅 노드는 상기 노드를 구성하는 소프트웨어 컴포넌트들이 마이크로 커널 기반의 사용자 레벨 프로세스로 동작하고 컴포넌트의 의존성에 따라 라이브러리 형태로 제공되어 복수개의 모듈이 하나의 사용자 레벨 프로세스로 동작한다.
상기 서비스 프런트 앤드 노드는 클라이언트 노드로부터 put operation 요청 수신 시 key value를 특정 스토리지 노드에 저장하고 저장 결과를 캐쉬(cache)로 유지한다.
상기 서비스 프런트 앤드 노드는 클라이언트 노드로부터 get operation 요청 수신 시 캐쉬(cache)를 먼저 룩업(lookup)하고 캐싱 미스(cache miss) 시 해당 스토리지 노드를 통해 value를 획득한다.
상기 서비스 프런트 앤드 노드, 상기 스토리지 마스터 노드 및 상기 스토리지 노드에 포함되는 소프트웨어 컴포넌트의 구동은 마이크로커널 또는 모놀리틱커널 상에서 수행된다.
본 발명은 또한, 클라이언트 노드가 키 값(key-value) 데이터 읽기 또는 쓰기를 위한 운용을 요청하는 단계, 상기 운용 요청에 따라 상기 키 값 데이터를 저장하는 복수개의 스토리지 노드를 관리하는 적어도 하나의 서비스 프런트 앤드 노드들의 리스트를 상기 클라이언트 노드에 제공하는 단계, 상기 클라이언트 노드가 상기 키 값 데이터를 읽거나 쓸 서비스 프런트 앤드 노드를 선택하는 단계, 상기 선택된 서비스 프런트 앤드 노드가 상기 클라이언트 노드 요청에 따라 상기 키 값 데이터를 특정 스토리지 노드에 쓰거나 특정 스토리지 노드로부터 읽어와서 상기 클라이언트 노드에 제공하는 제공 단계를 포함하는 것을 특징으로 하는 키 값 기반 데이터 스토리지 시스템 운용 방법의 구성을 개시한다.
여기서 상기 방법은 상기 서비스 프런트 앤드 노드들 중 어느 하나를 스토리지 마스터 노드로 선택하는 단계, 상기 스토리지 마스터 노드가 상기 서비스 프런트 앤드 노드들의 리스트를 생성 및 관리하는 단계를 더 포함한다.
또한 상기 방법은 상기 서비스 프런트 앤드 노드가 상기 키 범위를 상기 복수개의 스토리지 노드들에 할당하는 단계를 더 포함한다.
상기 방법은 상기 서비스 프런트 앤드 노드가 상기 스토리지 노드의 유휴 메모리(idle memory)로 캐쉬 클러스터(cache cluster)를 구성하여 캐쉬(cache) 크기를 동적으로 운용하는 단계를 더 포함한다.
상기 제공 단계는 상기 서비스 프런트 앤드 노드가 상기 클라이언트 노드로부터 put operation 요청을 수신하는 단계, key-value를 특정 스토리지 노드에 저장하는 단계, 상기 스토리지 노드가 상기 저장 결과를 캐쉬(cache)로 유지하는 단계를 포함한다.
상기 제공 단계는 상기 서비스 프런트 앤드 노드가 상기 클라이언트 노드로부터 get operation 요청을 수신하는 단계, 상기 서비스 프런트 앤드 노드가 캐쉬(cache)를 룩업(lookup)하는 단계, 상기 서비스 프런트 앤드 노드가 캐싱 미스(cache miss) 시 해당 스토리지 노드를 통해 value를 획득하는 단계를 포함한다.
상기 방법은 SD card/SSD가 장착된 ARM 보드 또는 낸드 플래시 스토리지가 SoC(System on chip)에 포함된 ARM 보드를 포함하는 상기 컴퓨팅 노드들이 상기 키 값 기반 데이터 스토리지 시스템을 위한 클러스터를 구성하는 단계를 포함한다.
상기 방법은 상기 ARM CPU, 메모리, 낸드 플래시 스토리지가 탑재된 다수의 SSD들을 연동한 상기 컴퓨팅 노드들이 상기 키 값 기반 데이터 스토리지 시스템을 위한 클러스터를 구성하는 단계를 포함한다.
상기 방법은 IO 가상화를 통해 SSD를 사용하는 ARM기반 마이크로서버로 구현된 상기 컴퓨팅 노드들이 상기 키 값 기반 데이터 스토리지 시스템을 위한 클러스터를 구성하는 단계를 포함한다.
이상에서 살펴본 바와 같이 본 발명의 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법에 따르면, 본 발명은 종래의 고성능 서버기반 키 값 스토리지(key-value storage)와 멤캐쉬드(memcached)를 사용하는 환경의 에너지 소모를 ARM 기반 클러스터링을 통해 분산 스토리지를 구성함으로써 에너지 사용을 줄일 수 있다.
또한 본 발명은 설계자 의도에 따라 적응적으로 클러스터의 추가 또는 제거를 수행함으로써 scalable storage를 구성할 수 있도록 지원한다.
또한 본 발명은 storage 클러스터의 유휴 메모리(idle memory)를 캐쉬로 사용함으로써 노드의 자원 효율성을 높이고 멤캐쉬드 방식 적용 과정에서와 같이 클라이언트가 직접 캐쉬 관리(cache management)를 담당함으로써 발생하는 통신 오버헤드 발생을 저감할 수 있도록 지원한다.
도 1은 본 발명의 실시 예에 따른 ARM 클러스터 구성에 의한 데이터 스토리지 시스템들을 나타낸 도면.
도 2는 키 값 기반 데이터 스토리지 시스템을 구성하는 ARM 클러스터의 노드 구성도.
도 3은 본 발명의 서비스 프런트 앤드 노드의 소프트웨어 구조도.
도 4는 본 발명의 스토리지 마스터 노드의 소프트웨어 구조도.
도 5는 본 발명의 스토리지 노드의 소프트웨어 구조도.
도 6은 본 발명의 put operation 수행을 설명하기 위한 도면.
도 7은 본 발명의 get operation 수행을 설명하기 위한 도면.
도 8은 본 발명의 스토리지 노드의 유휴 메모리(idle memory)를 활용한 key-value cache 구성도.
이하, 본 발명의 실시 예를 첨부된 도면에 의거하여 상세히 설명한다.
실시 예를 설명함에 있어서 본 발명이 속하는 기술분야에 익히 알려져 있고 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 또한, 실질적으로 동일한 구성과 기능을 가진 구성 요소들에 대해서는 상세한 설명을 생략하도록 한다.
마찬가지의 이유로 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 또는 개략적으로 도시되었으며, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 따라서 본 발명은 첨부한 도면에 그려진 상대적인 크기나 간격에 의해 제한되어지지 않는다.
이하 설명에서 키 값 스토리지(key-value storage)는 <key, value> pair로 이루어진 데이터를 저장하는 저장소 또는 저장 장치로 주로 1KB미만의 value를 저장하는 저장소를 의미한다. 또한 key-value get operation 또는 get operation은 key 값을 입력(input)으로 value값을 찾는 operation을 의미한다. 그리고 key-value put operation 또는 put operation은 <key, value> pair 저장을 요청하는 operation을 의미한다.
낸드 플래시 스토리지(NAND Flash storage)는 HDD(Hard Disk Drive)에 비해 byte 당 수요전력이 낮고 읽기 및 쓰기(read/write)에 대한 속도가 10~100배 정도 높다. 본 발명은 낸드 플래시 스토리지의 빠른 데이터 접근성(fast data access)과 저전력의 특성을 활용하며, 기존 서버에 비해 컴퓨팅 파워가 낮은 저사양 ARM 보드를 활용해 ARM 클러스터나 ARM기반 마이크로 서버를 IO 인텐시브(intensive)한 키 값 스토리지(key-value storage)로서 구성함으로써 저전력을 극대화 할 수 있도록 구성한다. 또한 낸드 플래시 스토리지(NAND Flash storage)의 쓰기 동작(write) 시 블록 삭제(block erase) 수행으로 수행 시간이 긴 점을 극복하기 위해 본 발명은 데이터 버퍼와 전용(append only type)의 로그 구조화된 데이터(log structured data) 저장 기법을 활용하여 key-value의 put operation 요청 시 낸드 플래시 스토리지에 순차 쓰기(sequential write)의 형태로 데이터를 저장함으로써 쓰기 동작(write)의 성능을 개선할 수 있다. Key-value에 대한 get operation은 분산 key-value 스토리지에 읽기 접근(read access)을 수행하게 되는데, 낸드 플래시 스토리지에서의 데이터 랜덤 읽기(data random read)가 순차적 쓰기 동작(sequential write)에 비해 속도가 느린 점을 극복하기 위해, 각 노드의 메모리를 클러스터화하여 key-value cache로 활용함으로써 put operation과 get operation의 성능을 동시에 개선하도록 지원할 수 있다.
도 1은 본 발명의 실시 예에 따른 ARM 기반 컴퓨팅 노드를 클러스터로 하는 키 값 기반의 데이터 스토리지 시스템(10)의 구성을 위한 ARM 기반 컴퓨팅 노드들의 형태를 개략적으로 나타낸 도면이다.
도 1을 참조하면, 본 발명의 데이터 스토리지 시스템(10)은 다수의 ARM 기반 컴퓨팅 노드들(101, 102, 103) 중 어느 하나의 타입으로 구성되며, 각 타입의 ARM 기반 컴퓨팅 노드들(101, 102, 103)은 기판 모듈 예컨대 ARM 보드(14), 중앙 처리부 예컨대 ARM CPU(11), 낸드 플래시 스토리지(12), 메모리(13) 및 버스를 포함하여 구성된다.
특히 본 발명의 데이터 스토리지 시스템(10)에서 제1 타입 시스템(10a)은 ARM CPU(11)와 낸드 플래시 스토리지(12), 메모리(13)가 ARM 보드(14)에 장착되어 하나의 제1 타입 노드(101)들을 구성하고, 제1 타입 노드(101)들이 제1 타입 버스(15a)를 통하여 연결되도록 구성된다. 제1 타입 시스템(10a)에 포함된 제1 타입 노드(101)들 중 일부는 서비스 프런트 앤드 노드로 동작할 수 있으며, 나머지 제1 타입 노드들은 스토리지 노드들로 동작할 수 있다. 제1 타입 버스(15a)는 제1 타입 노드(101)들 간의 연결을 지원하며 클라이언트 노드로부터의 클라이언트 요청(Client request)을 일정 노드에 전달하도록 지원하며, 특정 제1 타입 노드에 저장된 데이터를 클라이언트 요청을 제공한 클라이언트 노드에 제공하는 역할을 수행한다. 이와 같은 구성의 본 발명의 제1 타입 시스템(10a)은 낸드 플래시 스토리지(12)가 SoC(System on Chip)에 포함된 ARM 보드(14)로 클러스터를 구성하거나, SD card/SSD가 장착된 ARM 보드(14)에 장착되는 형태로 구성될 수도 있다.
데이터 스토리지 시스템(10)에서 제2 타입 시스템(10b)은 ARM CPU(11)와 메모리(13)가 ARM 보드(14)에 실장되어 제2 타입 노드(102)들을 구성하고 별도로 마련된 SSD 스토리지(16)들이 제2 타입 버스(15b)를 통하여 제2 타입 노드(102)들과 연결되어 구성된다. 이와 같은 구성은 SSD 스토리지(16)들이 제2 타입 노드(102)들과 별도로 마련되어 제공된다. 따라서 제2 타입 버스(15b)는 제2 타입 노드(102)들의 put operation 또는 get operation을 특정 SSD 스토리지(16)들을 기반으로 하는 ARM 기반 마이크로서버 형태로 동작할 수 있도록 클러스터를 구성한다. 여기서 ARM 기반 마이크로서버는 IO(Input/Output) 가상화를 통해 SSD를 사용하는 키 값 스토리지(key-value storage)로 구성된다.
데이터 스토리지 시스템(10)에서 제3 타입 시스템(10c)은 ARM CPU(11)와 메모리(13) 및 낸드 플래시 스토리지(12)를 패킷화하여 제3 타입 노드(103)들을 구성하고, 제3 타입 노드(103)들에 마련된 제3 타입 버스 포트(18)를 통하여 버스 연결을 수행함으로써 클러스터를 구성한다. 특히 제3 타입 시스템(10c)을 구성하는 제3 타입 노드(103)들은 ARM Processor에 해당하는 ARM CPU(11)가 탑재된 ARM 보드(14)는 물론, 낸드 플래시 스토리지(12) 내에 ARM CPU(11)와 메모리(13)가 집적되어 컴퓨팅이 가능한 연동 SSD 클러스터를 모두 포함한다.
한편 낸드 플래시 스토리지(12)는 SoC로 각 노드에 포함되거나 시스템 버스나 interconnection fabric을 통해 SD card 또는 SSD의 형태로 연결시킬 수 있다. 노드 간 통신은 network device 또는 클러스터 노드 간 고속 통신을 위한 시스템 버스나 Interconnection fabric 등을 활용하여 노드 간 milli second 이하의 짧은 통신 latency를 제공함으로써 고속의 데이터 처리가 가능하도록 지원한다.
도 2는 도 1에서 설명한 데이터 스토리지 시스템(10)을 분산 스토리지 시스템으로 구성하기 위한 기능별 노드 구성을 분류하여 나타낸 도면이다.
도 2를 참조하면, 데이터 스토리지 시스템(10)에 포함된 클러스터 상의 각 노드들은 기능에 따라 서비스 마스터 노드 또는 스토리지 마스터 노드(200)(Service master node or storage master node : 이하 Storage master node), 서비스 프런트 앤드 노드(100)(Service front-end node), 스토리지 노드(300)(storage node)로 분류된다. 이러한 데이터 스토리지 시스템(10)은 노드 관리를 담당하는 1개의 스토리지 마스터 노드(200)와 클라이언트 노드(1)에게 키 값 스토리지 서비스(key-value storage service)를 제공하는 1개 또는 복수 개의 서비스 프런트 앤드 노드(100) 및 실제 key-value data를 저장하고 관리하는 1개 이상의 스토리지 노드(300)들로 구성된다.
여기서, 스토리지 마스터 노드(200)는 노드의 참가 또는 이탈(node join/leave)에 따라 노드 멤버쉽(node membership)을 관리한다. 특히 스토리지 마스터 노드(200)는 서비스 프런트 앤드 노드(100)의 참가(join) 시 담당할 키 범위 할당(key range assign)을 수행하며, 서비스 프런트 앤드 노드(100)들 중 하나가 될 수 있다.
서비스 프런트 앤드 노드(100)가 복수 개일 경우, 각 서비스 프런트 앤드 노드(100)는 컨시스턴트 해싱(consistent hasing)으로 키 영역 분할(key-space partitioning)을 수행함으로써 서비스 프런트 앤드 노드(100)간 배타적인 키 범위(key range)를 가지고, 이를 기반으로 키 값 스토리지 서비스 제공을 담당할 수 있다. 그리고 서비스 프런트 앤드 노드(100)들 간 통신을 통해 각 키 범위(key range)를 담당하는 서비스 프런트 앤드 노드 리스트(front-end list)를 유지 및 갱신하여 클라이언트 노드(1) 접속 시 키 범위(key range)별 담당 서비스 프런트 앤드 노드 항목을 전달한다.
클라이언트 노드(1)는 스토리지 마스터 노드(200)로부터 서비스 프런트 앤드 노드들의 리스트를 얻어서, 각 key range별 담당 서비스 프런트 앤드 노드(100) 정보를 확인하고, 직접 각 서비스 프런트 앤드 노드(100)에 연결해 <key, value>에 대한 put operation 또는 get operation을 수행할 수도 있다.
스토리지 노드(300)는 하나의 서비스 프런트 앤드 노드(100)에 종속된다. 이러한 스토리지 노드(300)는 종속된 해당 서비스 프런트 앤드 노드(100)가 담당하는 키 범위(key range)의 하위 범위(sub-range)를 담당하며, 키 값 데이터(key-value data)를 저장 및 관리한다. 이때 각 스토리지 노드(300)가 담당할 키 범위(key range) 및 결합(bind)될 서비스 프런트 앤드 노드(100)는 스토리지 노드(300)가 스토리지 마스터 노드(200)에 참가 요청을 수신하면 스토리지 마스터 노드(200)에 의해 결정된다.
스토리지 노드(300)에 배치된 메모리(13)는 각 key-value가 저장되어 있는 스토리지 오프셋(storage offset) 정보를 포함하는 색인 테이블(index table)을 구성하거나 낸드 플래시 스토리지(12)에 저장되기 전 단계의 키 값 데이터(key-value data)를 위한 버퍼(buffer)로 활용된다. 이외의 유휴 메모리 공간(idle memory space)은 서비스 프런트 앤드 노드(100)에 캐쉬 공간(cache space)으로 제공된다.
즉, 스토리지 노드(300)는 서비스 프런트 앤드 노드(100)가 필요로 하는 캐쉬 클러스터(cache cluster)의 소속 노드(member node)역할도 수행하여 낸드 플래시 스토리지(12)로부터 데이터(data)를 읽어들일 때의 액세스(access) 시간이 긴 낸드 플래시 스토리지 기반의 키 값 스토리지의 랜덤 읽기(random read)에 대한 수행 시간을 단축시키도록 지원한다. 결과적으로 본 발명의 데이터 스토리지 시스템(10)은 읽기 접근(read access)에 대한 QPS(Queries Per Second)를 높임과 동시에 스토리지 노드(300)의 자원 활용도를 개선시킬 수 있다.
한편, 본 발명의 데이터 스토리지 시스템(10)은 시스템을 구성하는 각 노드의 소프트웨어 스택(software stack)을 모두 마이크로 커널(Micro kernel) 기반으로 구현한다. 이에 따라 본 발명의 데이터 스토리지 시스템(10)은 각 노드에 필요한 사용자 레벨(user-level) OS(Operating System) 서비스와 프로그램만으로 구성되어 최적의 시스템을 구성할 수 있도록 지원할 수 있다. 또는 본 발명의 데이터 스토리지 시스템(10)은 소프트웨어 모듈들의 구동은 마이크로 커널 외에 모놀리틱 커널을 기반으로 구현될 수도 있다.
도 3 내지 도 5는 본 발명의 데이터 스토리지 시스템(10)의 각 노드들에 구현되는 소프트웨어 스택을 나타낸 도면들이다. 특히, 도 3은 본 발명의 서비스 프런트 앤드 노드에 배치되는 서비스 프런트 앤드 모듈을 나타낸 도면이고, 도 4는 본 발명의 스토리지 마스터 노드에 배치되는 스토리지 마스터 모듈을 나타낸 도면이며, 도 5는 본 발명의 스토리지 노드에 배치되는 스토리지 모듈을 나타낸 도면이다. 도 3 내지 도 5에 나타낸 데이터 스토리지 시스템(10)의 각 노드 아키텍처에서 성능 개선을 위해 사용자 레벨(user-level)로 표시된 모듈들은 모듈 간 의존성에 따라 같은 어드레스 공간(address space)에서 하나의 프로세스로 동작 할 수 있다.
그리고 이하에서 설명하는 도 3의 서비스 프런트 앤드(Service front-end) 모듈, 도 4의 스토리지 마스터(storage master) 모듈, 도 5의 키 값 스토리지(key-value storage) 모듈에 각각 통신 인터페이스(communication interface) 모듈이 라이브러리 형태로 제공되어 같은 프로세스 상에 동작할 수 있다. 또 다른 실시예로서 이하에서 설명하는 데이터 스토리지 시스템(10)을 구성하는 각 노드들은 리눅스 기반으로 key-value 서비스를 제공하는 사용자 레벨(user level) 프로그램으로 구성될 수도 있다. 즉 본 발명의 소프트웨어 콤포넌트들은 마이크로 커널 기반의 사용자 레벨(user-level) 프로세스로 동작한다. 이에 따라 본 발명의 시스템은 콤포넌트들의 의존성에 따라 모듈이 라이브러리 형태로 제공되어 복수개의 모듈이 하나의 사용자 레벨 프로세스(user-level process)로 동작하여 성능 개선을 지원할 수 있다.
먼저 도 3을 참조하면, 본 발명의 서비스 프런트 앤드 노드(100)는 서비스 프런트 앤드부(110), 캐쉬 매니저(120), 제1 통신 인터페이스부(130), 제1 마이크로 커널(140)을 포함하여 구성된다. 여기서 서비스 프런트 앤드부(110), 캐쉬 매니저(120), 제1 통신 인터페이스부(130)는 각각 사용자 레벨 프로세스로 동작한다. 상술한 사용자 레벨 프로세스로 동작하는 구성들은 제1 마이크로 커널(140) 상에 구현되며, 제1 마이크로 커널(140) 기반으로 동작 제어될 수 있다.
서비스 프런트 앤드부(110)는 키 범위(Key range) 별 담당 스토리지 노드(300)들에 대한 정보를 메모리(13) 상에 색인 테이블(index table)로 유지하여 클라이언트 노드(1)로부터 키 값 운용(key-value operation) 수행을 요청받는 경우 색인 테이블 룩업(index table lookup)을 통해 해당 key를 담당하는 스토리지 노드(300)를 찾아 키 값 운용(key-value operation)을 요청한다. 여기서 put operation 기반의 Put key-value operation의 결과는 낸드 플래시 스토리지(12)에 해당하는 캐쉬(cache)에 저장된다.
제1 통신 인터페이스부(130)는 클라이언트 노드(1)로부터의 put operation 수행 요청 또는 get operation 수행 요청을 수신할 수 있도록 제1 마이크로 커널(140) 기반으로 클라이언트 노드(1)와 통신 채널을 형성할 수 있다. 제1 통신 인터페이스부(130)는 각 노드 간 통신을 담당하는 구성이다. 이러한 제1 통신 인터페이스부(130)는 노드의 통신 인터페이스가 네트워크 인터페이스로 구성될 경우 소켓 통신을 수행하게 되며, PCIe나 interconneciton fabric과 같은 고속 통신 버스일 경우 버스를 이용한 통신을 담당한다.
캐쉬 매니저(120)는 서비스 프런트 앤드부(110)의 요청에 따라 낸드 플래시 스토리지(12)에 저장된 데이터를 수집하는 get operation 동작을 수행 제어하거나, 낸드 플래시 스토리지(12)에 데이터를 저장하는 put operation 동작을 수행 제어를 위한 스토리지 노드(300)의 캐쉬 매니징을 수행한다. 즉 캐쉬 매니저(120)는 데이터의 읽기 및 쓰기를 위한 캐쉬 접근을 위해 스토리지 노드(300)들의 상태를 확인하고, 읽기 및 쓰기 동작에 따른 처리 결과를 서비스 프런트 앤드부(110)에 제공한다. 이 과정에서 캐쉬 매니저(120)는 클라이언트 노드(1)로부터의 get operation 수행 요청에 따라 서비스 프런트 앤드부(110)로부터 해당 업무 수행을 전달받으면 스토리지 노드(300)로 operation이 전달되기 전에 캐쉬(cache)에 해당 값의 유무를 먼저 검사한 뒤, 캐쉬(cache)에 해당 값이 존재하지 않을 경우 스토리지 노드(300)로 operation이 전달되어 수행되도록 지원한다.
이를 보다 상세히 설명하면, 서비스 프런트 앤드 노드(100)가 담당하는 키 범위(key range)에 대해서는 이에 소속되는 스토리지 노드(300)의 메모리(13) 공간을 활용하여 캐쉬(cache)를 구성하는데, 서비스 프런트 앤드 노드(100)의 캐쉬 매니저(120)는 캐싱(caching)되어야 할 key-value를 어느 스토리지 노드(300)의 메모리 공간에 저장할 지 결정하고 각 캐쉬(cache)된 데이터가 어느 스토리지 노드(300)에 존재하는지에 대한 정보를 해시 테이블(hash table)의 형태로 유지한다. 캐쉬 정보를 갖고 있는 해시 테이블(hash table)은 스토리지 노드(300)가 추가되거나 제거될 때마다 테이블 크기 조정(table resize)을 수행하고 캐쉬로 사용할 메모리 공간을 증가 또는 감소 시켜 하나의 논리적 버킷 어레이(bucket array)를 구성한다.
다음으로, 도 4를 참조하면, 본 발명의 스토리지 마스터 노드(200)는 스토리지 마스터부(210), 제2 통신 인터페이스부(230), 제2 마이크로 커널(240)을 포함하여 구성된다. 이와 같은 구성의 스토리지 마스터 노드(200)는 서비스 프런트 앤드 노드(100)와 스토리지 노드(300)의 관리 및 데이터 할당과 통신 제어를 수행한다.
스토리지 마스터부(210)는 서비스 프런트 앤드 노드(100)와 스토리지 노드(300)의 멤버십을 관리한다. 그리고 스토리지 마스터부(210)는 데이터 스토리지 시스템(10)의 각 노드가 담당할 키 범위(key range)를 할당하는 역할을 수행한다.
제2 통신 인터페이스부(230)는 다른 노드들과의 통신을 수행하도록 지원한다. 이러한 제2 통신 인터페이스부(230)는 앞서 설명한 제1 통신 인터페이스부(130)와 같이 버스 통신이나 소켓 통신 중 어느 하나를 수행할 수 있다. 특히 제2 통신 인터페이스부(230)는 서비스 프런트 앤드 노드(100)들 및 스토리지 노드(300)들과의 통신을 수행하여 스토리지 마스터부(210)가 전반적인 각 노드들의 멤버쉽 관리를 수행할 수 있도록 통신 채널 형성을 지원한다.
제2 마이크로 커널(240)은 스토리지 마스터 노드(200)의 각 구성들의 운용을 위한 신호 전달과 데이터 전달 및 처리를 지원하는 구성이다. 이러한 제2 마이크로 커널(240)은 스토리지 마스터부(210)의 명령을 제2 통신 인터페이스부(230)를 통하여 다른 노드들에게 전달하고, 다른 노드들이 제2 통신 인터페이스부(230)에 제공한 데이터를 스토리지 마스터부(210)에 전달한다. 그리고 스토리지 마스터부(210)는 스토리지 마스터부(210)의 키 범위 할당 등의 연산을 위한 기능 지원을 수행한다.
도 5를 참조하면, 본 발명의 스토리지 노드(300)는 키 값 스토리지부(310), 캐쉬 에이전트(320), 시스템 드라이버(350), 제3 통신 인터페이스부(330) 및 제3 마이크로 커널(340)을 포함한다. 이와 같은 구성의 스토리지 노드(300) 중 키 값 스토리지부(310)는 서비스 프런트 앤드 노드(100)로부터 요청받는 키 값 쌍(key-value pair)에 대해 저장매체에 저장 또는 읽기를 수행한다. 키 값 스토리지부(310)는 전용 타입(append-only type)인 로그-구조 데이터 스토어(log-structured data store)를 사용하여 순차 쓰기(sequential write)를 수행함으로써 낸드 플래시 스토리지(12)의 빠른 순차 쓰기 성능의 장점을 그대로 활용할 수 있도록 지원한다. 캐쉬 에이전트(320)는 스토리지 노드(300)의 유휴 메모리 공간(idle memory space)을 서비스 프런트 앤드 노드(100)에 있는 캐쉬 매니저(120)에 리포트(report)하여 캐싱을 위한 공간으로 사용할 수 있도록 한다.
시스템 드라이버(350)는 파일 시스템과 스토리지 드라이버로 구성되어 파일 저장과 드라이버 지원을 수행한다. 제3 통신 인터페이스부(330)는 스토리지 노드(300)와 연결될 다른 노드들과의 통신 채널 형성을 제3 마이크로 커널(340) 기반으로 수행하는 구성이다. 즉 제3 통신 인터페이스부(330)는 서비스 프런트 앤드 노드(100) 및 스토리지 마스터 노드(200)와의 통신 채널을 형성하고, 해당 노드들이 요구하는 데이터의 전달 및 해당 노드들이 제공한 데이터의 저장을 지원한다. 이러한 스토리지 노드(300)들은 서비스 프런트 앤드 노드(100)들에 소속되어 일정 키 범위의 서브 키 범위를 할당 받고 그에 대응하는 데이터의 읽기 및 쓰기 동작을 지원한다.
도 6은 본 발명의 실시 예에 따른 데이터 스토리지 시스템(10)의 풋 오퍼레이션(put operation) 수행 즉 쓰기 운용을 설명하기 위한 도면이다.
도 6을 참조하면, 본 발명의 put operation 수행을 위하여 클라이언트 노드(1)는 서비스 프런트 앤드 노드(100)에 put<key1, value>를 요청한다. 그러면 서비스 프런트 앤드 노드(100)는 전체 스토리지 노드(300)들 중 클라이언트 노드(1)가 제공한 데이터를 전달할 스토리지 노드(30a) 확인을 위하여 스토리지 노드의 룩업(lookup)을 수행한다. 클라이언트 노드(1)로부터 put operation 요청을 받는 노드는 스토리지 마스터 노드(200)가 될 수 있으며, 스토리지 마스터 노드(200)는 put operation 요청을 특정 서비스 프런트 앤드 노드(100)에 분배할 수 있다. 이를 위하여 스토리지 마스터 노드(200)는 각 서비스 프런트 앤드 노드(100)들이 담당할 키 범위를 할당하는 역할을 수행한다. 스토리지 마스터 노드(200)는 서비스 프런트 앤드 노드(100) 중 어느 하나의 노드로 구성될 수 있으며, 이러한 스토리지 마스터 노드(200) 선택은 서비스 프런트 앤드 노드(100)들 간의 협의에 의하거나, 시스템 설계자에 의하여 선택될 수 있다. 한편 서비스 프런트 앤드 노드(100)는 put operation 수행을 위한 키 범위 확인을 수행하며, 키 범위에 따른 스토리지 노드(30a) 선택과과 put 메시지 전달을 지원한다. 이를 위하여 서비스 프런트 앤드 노드(100) 중 스토리지 마스터 노드(200)는 키 범위 할당된 서비스 프런트 앤드 노드(100)들의 리스트 정보 관리 및 멤버쉽 관리를 수행할 수 있다.
한편 서비스 프런트 앤드 노드(100)는 put<key1, value>를 특정 스토리지 노드(30a)에 제공한다. 특정 스토리지 노드(30a)는 put<key1, value>를 수행하고, 그에 대한 응답인 put_response를 서비스 프런트 앤드 노드(100)에 제공한다. 이후 서비스 프런트 앤드 노드(100)는 put_response를 클라이언트 노드(1)에 제공함으로써 key1에 대한 put operation 동작을 수행하였음을 알릴 수 있다.
한편 서비스 프런트 앤드 노드(100)는 버킷 검색 및 관련 노드 확인 작업을 수행하고, 별도의 스토리지 노드(30b)에 cache<key1, value>를 제공한다. 여기서 별도의 스토리지 노드(30b)는 캐싱을 위한 구성으로서 서비스 프런트 앤드 노드(100)로부터 cache<key1, value>를 수신하면 이를 캐싱(cache<key, value>)한다. 그리고 별도의 스토리지 노드(30b)는 캐싱 결과에 해당하는 cache_response를 서비스 프런트 앤드 노드(100)에 제공한다. 서비스 프런트 앤드 노드(100)는 별도의 스토리지 노드(30b)로부터 캐싱 결과를 수신하면 해시 테이블을 갱신하여 key1에 대한 유효 캐쉬에 해당하는 엔트리 세팅을 수행한다.
도 7은 본 발명의 실시 예에 따른 데이터 스토리지 시스템(10)의 겟 오퍼레이션(get operation) 수행 즉 읽기 동작을 설명하기 위한 도면이다.
도 7을 참조하면, 본 발명의 get operation 수행을 위하여 클라이언트 노드(1)는 서비스 프런트 앤드 노드(100)에 get<key1>을 제공한다. 그러면 서비스 프런트 앤드 노드(100)는 수신된 get<key1>을 위한 룩업 캐쉬(Lookup cache)를 수행하여 해당 데이터가 어떠한 스토리지 노드(300)에 저장되어 있는지를 확인한다. 이 과정에서 스토리지 마스터 노드(200)는 키 범위를 확인하여 get 메시지를 전달한 서비스 프런트 앤드 노드(100)를 선택 제어할 수 있다. 그리고 서비스 프런트 앤드 노드(100)는 get 메시지의 key1을 확인하여 어떠한 스토리지 노드(300)에 포함되어 있는지 확인한다. 이를 위하여 서비스 프런트 앤드 노드(100)는 스토리지 노드(300)의 키 범위들에 대한 정보 관리를 수행할 수 있다.
스토리지 노드(300) 확인이 완료되면 서비스 프런트 앤드 노드(100)는 get<key1>를 해당 스토리지 노드(300)에 전달한다. 해당 스토리지 노드(300)는 수신된 get<key1>에서 key1 값을 추출하고, key1 값에 해당하는 key가 저장된 캐쉬를 검색하는 룩업 캐쉬 과정을 수행한다. 그리고 key에 대응하는 데이터 검색이 완료되면 스토리지 노드(300)는 캐쉬 응답 cache_response<key, value>를 서비스 프런트 앤드 노드(100)에 제공한다. 서비스 프런트 앤드 노드(100)는 스토리지 노드(300)로부터 수신된 데이터를 클라이언트 노드(1)의 get 요청에 대한 응답으로서 get_response<key, value>로서 제공한다. 즉 본 발명의 데이터 스토리지 시스템(10)은 클라이언트 노드(1)로부터 get operation 요청 수신 시 캐쉬(cache)를 먼저 룩업(lookup)하고 캐쉬 미스(cache miss) 존재 시 해당 스토리지 노드를 통해 value를 얻어 오도록 지원한다.
도 8은 본 발명의 데이터 스토리지 시스템(10)에서 스토리지 노드(storage node)에 있는 메모리가 key-value cache로 사용되는 cache space에 대한 논리적 구조를 나타낸 도면이다.
도 8을 참조하면, 서비스 프런트 앤드 노드(100)의 캐쉬 매니저(120)는 해시 테이블을 도시된 바와 같이 생성 및 유지한다. 즉 특정 key에 스토리지 노드의 ID와 오프셋 값을 배분한다. 여기서 하나의 서비스 프런트 앤드 노드(100)가 관리하는 해시 테이블의 버킷 사이즈 t는 전체 스토리지 노드(300)들의 캐쉬 공간 값에 해당하는 값이 될 수 있다. 이에 따라 모든 스토리지 노드(300)의 버킷들은 하나의 연속적인 버킷 어레이(bucket array)로 서비스 프런트 앤드 노드(100)의 캐쉬 매니저(120)에 의해 관리 된다. 이에 따라 본 발명의 서비스 프런트 앤드 노드(100)는 스토리지 노드(300)의 유휴 메모리(idle memory)로 캐쉬 클러스터(cache cluster)를 구성하여 cache 크기를 동적으로 확장 가능하도록 지원한다.
한편, 본 명세서와 도면을 통해 본 발명의 바람직한 실시 예들에 대하여 설명하였으며, 비록 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것일 뿐, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 자명한 것이다.
10, 10a, 10b, 10c : 데이터 스토리지 시스템
100 : 서비스 프런트 앤드 노드
200 : 스토리지 마스터 노드
300 : 스토리지 노드

Claims (17)

  1. 키 값 기반 데이터 스토리지 컴포넌트들을 포함하는 전자 장치에 있어서,
    기판 모듈과, 상기 기판 모듈에 배치된 중앙 처리부, 상기 기판 모듈에 배치된 메모리 및 캐쉬 저장을 위한 낸드 플래시 스토리지를 포함하는 컴퓨팅 노드들;
    상기 컴퓨팅 노드들을 연결하는 통신 인터페이스부;를 포함하며,
    상기 컴퓨팅 노드들은,
    상기 낸드 플래시 스토리지 내에 물리적으로 키 값 데이터를 저장하기 위한 복수의 스토리지 노드;
    키 값 기반의 스토리지를 구성하기 위하여 상기 복수개의 스토리지 노드 각각의 키 범위를 할당하는 적어도 하나의 서비스 프런트 엔드 노드; 및
    상기 적어도 하나의 서비스 프런트 엔드 노드를 관리하기 위하여 상기 적어도 하나의 서비스 프런트 엔드 노드 중 하나로 구성되는 스토리지 마스터 노드를 포함하고,
    상기 스토리지 마스터 노드는, 상기 적어도 하나의 서비스 프런트 엔드 노드 및 상기 복수의 스토리지 노드의 참가 또는 이탈에 따라 멤버쉽을 관리하고, 상기 적어도 하나의 서비스 프런트 엔드 노드가 참가할 때 상기 적어도 하나의 서비스 프런트 엔드 노드가 서로 배타적인 키 범위 갖도록 키 범위를 할당하며,
    상기 적어도 하나의 서비스 프런트 엔드 노드는, 상기 적어도 하나의 프런트 엔드 노드 각각에 할당된 상기 스토리지 노드의 상기 낸드 플래시 스토리지 내의 유휴 메모리로 캐쉬 클러스터를 구성하여 캐시 크기를 동적으로 확장하는, 전자 장치.
  2. 제1항에 있어서,
    상기 컴퓨팅 노드는
    에스디 카드/에스에스디(SD card/SSD)가 장착된 기판 모듈 또는 낸드 플래시 스토리지가 칩온시스템(SoC : System on chip)에 포함된 기판 모듈을 포함하는 클러스터를 구성하거나,
    상기 중앙 처리부, 메모리, 낸드 플래시 스토리지가 탑재된 다수의 에스에스디들을 연동하여 클러스터를 구성하거나,
    입출력(IO : Input-ouput) 가상화를 통해 에스에스디를 사용하는 마이크로서버로 클러스터를 구성하는 것을 특징으로 하는, 전자 장치.
  3. 삭제
  4. 삭제
  5. 제1항에 있어서,
    상기 컴퓨팅 노드는
    상기 노드를 구성하는 소프트웨어 컴포넌트들이 마이크로 커널 기반의 사용자 레벨 프로세스로 동작하고 컴포넌트의 의존성에 따라 라이브러리 형태로 제공되어 복수개의 모듈이 하나의 사용자 레벨 프로세스로 동작하는 것을 특징으로 하는, 전자 장치.
  6. 제1항에 있어서,
    상기 서비스 프런트 엔드 노드는
    클라이언트 노드로부터 풋 오퍼레이션(put operation) 요청 수신 시 키 값(key value)을 특정 스토리지 노드에 저장하고 저장 결과를 캐쉬(cache)로 유지하는 것을 특징으로 하는, 전자 장치.
  7. 제1항에 있어서,
    상기 서비스 프런트 엔드 노드는
    클라이언트 노드로부터 겟 오퍼레이션(get operation) 요청 수신 시 캐쉬(cache)를 먼저 룩업(lookup)하고 캐싱 미스(cache miss) 시 해당 스토리지 노드를 통해 값(value)을 획득하는 것을 특징으로 하는, 전자 장치.
  8. 제1항에 있어서,
    상기 서비스 프런트 앤드 노드, 상기 스토리지 마스터 노드 및 상기 스토리지 노드에 포함되는 소프트웨어 컴포넌트의 구동은
    마이크로커널 또는 모놀리틱커널 상에서 수행되는 것을 특징으로 하는, 전자 장치.
  9. 키 값 기반 데이터 스토리지 컴포넌트들을 포함하는 전자 장치의 운용 방법에 있어서,
    클라이언트 노드가 키 값(key-value) 데이터 읽기 또는 쓰기를 위한 운용을 요청하는 단계;
    상기 운용 요청에 따라 상기 키 값 데이터를 저장하는 복수개의 스토리지 노드를 관리하는 적어도 하나의 서비스 프런트 앤드 노드들의 리스트를 상기 클라이언트 노드에 제공하는 단계;
    상기 클라이언트 노드가 상기 키 값 데이터를 읽거나 쓸 서비스 프런트 앤드 노드를 선택하는 단계;
    상기 선택된 서비스 프런트 앤드 노드가 상기 클라이언트 노드 요청에 따라 상기 키 값 데이터를 특정 스토리지 노드에 쓰거나 특정 스토리지 노드로부터 읽어와서 상기 클라이언트 노드에 제공하는 제공 단계;를 포함하는 운용 방법.
  10. 제9항에 있어서,
    상기 서비스 프런트 앤드 노드들 중 어느 하나를 스토리지 마스터 노드로 선택하는 단계;
    상기 스토리지 마스터 노드가 상기 서비스 프런트 앤드 노드들의 리스트를 생성 및 관리하는 단계;를 더 포함하는, 운용 방법.
  11. 제9항에 있어서,
    상기 서비스 프런트 앤드 노드가 상기 키 범위를 상기 복수개의 스토리지 노드들에 할당하는 단계;를 더 포함하는, 운용 방법.
  12. 제9항에 있어서,
    상기 서비스 프런트 앤드 노드가 상기 스토리지 노드의 유휴 메모리(idle memory)로 캐쉬 클러스터(cache cluster)를 구성하여 캐쉬(cache) 크기를 동적으로 운용하는 단계;를 더 포함하는, 운용 방법.
  13. 제9항에 있어서,
    상기 제공 단계는
    상기 서비스 프런트 앤드 노드가 상기 클라이언트 노드로부터 풋 오퍼레이션(put operation) 요청을 수신하는 단계;
    키 값(key-value)을 특정 스토리지 노드에 저장하는 단계;
    상기 스토리지 노드가 상기 저장 결과를 캐쉬(cache)로 유지하는 단계;를 포함하는, 운용 방법.
  14. 제9항에 있어서,
    상기 제공 단계는
    상기 서비스 프런트 앤드 노드가 상기 클라이언트 노드로부터 겟 오퍼레이션(get operation) 요청을 수신하는 단계;
    상기 서비스 프런트 앤드 노드가 캐쉬(cache)를 룩업(lookup)하는 단계;
    상기 서비스 프런트 앤드 노드가 캐싱 미스(cache miss) 시 해당 스토리지 노드를 통해 값(value)을 획득하는 단계;를 포함하는, 운용 방법.
  15. 제10항에 있어서,
    상기 서비스 프런트 앤드 노드, 상기 스토리지 마스터 노드 및 상기 스토리지 노드에 포함되는 소프트웨어 컴포넌트의 구동은
    마이크로커널 또는 모놀리틱커널 상에서 수행되는 것을 특징으로 하는, 운용 방법.
  16. 제10항에 있어서,
    상기 서비스 프런트 앤드 노드, 상기 스토리지 마스터 노드 및 상기 스토리지 노드들은
    기판 모듈과, 상기 기판 모듈에 배치된 중앙 처리부, 상기 기판 모듈에 배치된 메모리 및 캐쉬 저장을 위한 낸드 플래시 스토리지를 포함하는 컴퓨팅 노드들 및 상기 컴퓨팅 노드들을 연결하는 통신 인터페이스부를 포함하여 구성되는 것을 특징으로 하는, 운용 방법.
  17. 제16항에 있어서,
    에스디 카드/에스에스디(SD card/SSD)가 장착된 기판 모듈 또는 낸드 플래시 스토리지가 칩온시스템(SoC:System on chip)에 포함된 기판 모듈을 포함하는 상기 컴퓨팅 노드들이 상기 키 값 기반 데이터 스토리지 시스템을 위한 클러스터를 구성하는 단계;
    상기 중앙 처리부, 메모리, 낸드 플래시 스토리지가 탑재된 다수의 에스에스디들을 연동한 상기 컴퓨팅 노드들이 상기 키 값 기반 데이터 스토리지 시스템을 위한 클러스터를 구성하는 단계;
    입출력(IO:Input-ouput) 가상화를 통해 에스에스디를 사용하는 암기반 마이크로서버로 구현된 상기 컴퓨팅 노드들이 상기 키 값 기반 데이터 스토리지 시스템을 위한 클러스터를 구성하는 단계; 중 어느 하나의 단계를 더 포함하는, 운용 방법.
KR1020130027135A 2013-03-14 2013-03-14 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법 KR102044023B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020130027135A KR102044023B1 (ko) 2013-03-14 2013-03-14 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법
US14/775,801 US10083118B2 (en) 2013-03-14 2014-03-07 Key value-based data storage system and operation method thereof
PCT/KR2014/001868 WO2014142473A1 (ko) 2013-03-14 2014-03-07 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130027135A KR102044023B1 (ko) 2013-03-14 2013-03-14 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법

Publications (2)

Publication Number Publication Date
KR20140112717A KR20140112717A (ko) 2014-09-24
KR102044023B1 true KR102044023B1 (ko) 2019-12-02

Family

ID=51537062

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130027135A KR102044023B1 (ko) 2013-03-14 2013-03-14 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법

Country Status (3)

Country Link
US (1) US10083118B2 (ko)
KR (1) KR102044023B1 (ko)
WO (1) WO2014142473A1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9843453B2 (en) * 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US11301422B2 (en) * 2016-02-23 2022-04-12 Samsung Electronics Co., Ltd. System and methods for providing fast cacheable access to a key-value device through a filesystem interface
US10390114B2 (en) * 2016-07-22 2019-08-20 Intel Corporation Memory sharing for physical accelerator resources in a data center
US11042330B2 (en) * 2017-03-01 2021-06-22 Samsung Electronics Co., Ltd. Methods and systems for distributed data storage
US10860249B2 (en) * 2017-12-25 2020-12-08 Pliops Ltd. Solid state disk (SSD) controller and database
KR102034833B1 (ko) * 2018-02-09 2019-10-21 연세대학교 산학협력단 플래시 저장장치의 내부 병렬성을 이용하는 키 값 기반의 데이터 액세스 장치 및 방법
US10922011B2 (en) 2018-04-12 2021-02-16 Samsung Electronics Co., Ltd. Controllers configured to perform secure deletion, key-value storage devices including said controllers, and methods of operation thereof
US11099790B2 (en) 2019-01-10 2021-08-24 Samsung Electronics Co., Ltd. Parallel key value based multithread machine learning leveraging KV-SSDS
US11580162B2 (en) 2019-04-18 2023-02-14 Samsung Electronics Co., Ltd. Key value append
US11301241B2 (en) * 2019-06-18 2022-04-12 David Michael Vigna Enterprise reports, error handler and audits compartmentalized by web application
US11194706B2 (en) 2019-09-05 2021-12-07 Facebook Technologies, Llc System and method for split storage stack
US11169816B2 (en) * 2019-09-05 2021-11-09 Facebook Technologies, Llc System and method for key value store
KR102264119B1 (ko) * 2019-11-13 2021-06-11 인하대학교 산학협력단 CaseDB: 엣지컴퓨팅을 위한 저비용 Put-Intensive 키-벨류 저장장치
US11287994B2 (en) * 2019-12-13 2022-03-29 Samsung Electronics Co., Ltd. Native key-value storage enabled distributed storage system
US11321244B2 (en) 2019-12-16 2022-05-03 Samsung Electronics Co., Ltd. Block interface emulation for key value device
US11243694B2 (en) * 2020-01-29 2022-02-08 Samsung Electronics Co., Ltd. Grouping key value object IOs to improve IO performance for key-value storage devices
US11972361B2 (en) 2020-01-29 2024-04-30 Samsung Electronics Co., Ltd. Performance optimization of object grouping schema in a network key-value storage device using adaptive regression
KR102345517B1 (ko) * 2020-05-06 2021-12-30 인하대학교 산학협력단 엣지 컴퓨팅을 위해 데이터중복제거 기술이 적용된 casedb(키 벨류 저장장치)
CN113254505B (zh) * 2021-06-17 2021-10-08 湖南视觉伟业智能科技有限公司 分布式数据存储方法、检索方法、***及可读存储介质
KR102471966B1 (ko) * 2021-11-25 2022-11-30 (주)글루시스 스토리지 노드 기반의 키-값 스토어를 이용하는 데이터 입출력 방법
CN115118727B (zh) * 2022-08-26 2022-11-29 北京数牍科技有限公司 分布式计算架构的数据传输方法、装置、设备及存储介质
KR20240077233A (ko) * 2022-11-24 2024-05-31 재단법인대구경북과학기술원 샤딩 기반의 키-값 캐싱 시스템 및 방법
CN116431356B (zh) * 2023-06-13 2023-08-22 中国人民解放军军事科学院***工程研究院 一种基于智能网卡的云网络缓存加速方法与***

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7096213B2 (en) * 2002-04-08 2006-08-22 Oracle International Corporation Persistent key-value repository with a pluggable architecture to abstract physical storage
US7903819B2 (en) * 2007-09-07 2011-03-08 Yahoo! Inc. Memory efficient storage of large numbers of key value pairs
US9098519B2 (en) * 2008-09-16 2015-08-04 File System Labs Llc Methods and apparatus for distributed data storage
US20110103391A1 (en) * 2009-10-30 2011-05-05 Smooth-Stone, Inc. C/O Barry Evans System and method for high-performance, low-power data center interconnect fabric
US20110276744A1 (en) 2010-05-05 2011-11-10 Microsoft Corporation Flash memory cache including for use with persistent key-value store
JP5765416B2 (ja) * 2011-03-08 2015-08-19 日本電気株式会社 分散ストレージシステムおよび方法
US20120310882A1 (en) 2011-06-03 2012-12-06 Apple Inc. Key value data storage
JP5524144B2 (ja) 2011-08-08 2014-06-18 株式会社東芝 key−valueストア方式を有するメモリシステム
US9063939B2 (en) * 2011-11-03 2015-06-23 Zettaset, Inc. Distributed storage medium management for heterogeneous storage media in high availability clusters
JP5597666B2 (ja) * 2012-03-26 2014-10-01 株式会社東芝 半導体記憶装置、情報処理システムおよび制御方法
US9847907B2 (en) * 2012-11-26 2017-12-19 Amazon Technologies, Inc. Distributed caching cluster management

Also Published As

Publication number Publication date
US10083118B2 (en) 2018-09-25
WO2014142473A1 (ko) 2014-09-18
KR20140112717A (ko) 2014-09-24
US20160041918A1 (en) 2016-02-11

Similar Documents

Publication Publication Date Title
KR102044023B1 (ko) 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법
US11042311B2 (en) Cluster system with calculation and storage converged
US9760497B2 (en) Hierarchy memory management
US11409454B1 (en) Container ownership protocol for independent node flushing
US11921695B2 (en) Techniques for recording metadata changes
WO2023125524A1 (zh) 数据存储方法、***、存储访问配置方法及相关设备
EP4386549A1 (en) Memory management method and apparatus, processor and computing device
EP3353664B1 (en) Method and apparatus for pinning memory pages in a multi-level system memory
EP4307129A1 (en) Method for writing data into solid-state hard disk
US9715460B1 (en) Enabling a first virtual storage director running in a container maintained by a hypervisor to achieve direct memory access to memory of a second virtual storage director running in a different container
WO2021238594A1 (zh) 存储介质管理方法、装置、设备以及计算机可读存储介质
EP4273703A1 (en) Computing system generating map data, and method of operating the same
EP4273702A1 (en) Operating method of memory device for managing map data of each of plurality of storage devices, computing system including memory device, and operating method of computing system
US20230359389A1 (en) Operation method of host configured to communicate with storage devices and memory devices, and system including storage devices and memory devices
US11809315B2 (en) Fabricless allocation of cache slots of local shared caches with cache slot recycling in a fabric environment
EP4273708A1 (en) Operation method of host configured to communicate with storage devices and memory devices, and system including storage devices and memory devices
US20230359379A1 (en) Computing system generating map data, and method of operating the same
KR102149468B1 (ko) 통합 캐시를 하나 또는 복수의 논리 유닛에 동적 할당하는 시스템 및 방법
WO2022222523A1 (zh) 一种日志管理方法及装置
EP4283457A2 (en) Computing system for managing distributed storage devices, and method of operating the same
US11327888B2 (en) Using storage class memory as a persistent operating system file/block cache
KR20230163238A (ko) 분산된 스토리지 장치들을 관리하는 컴퓨팅 시스템, 및 그것의 동작하는 방법
KR20230156583A (ko) 복수의 스토리지 장치들 각각의 맵 데이터를 관리하는 메모리 장치의 동작 방법 및 이를 포함하는 컴퓨팅 시스템 및 이의 동작 방법
KR20230157187A (ko) Cxl 스위치, 메모리 장치 및 스토리지 장치를 포함하는 컴퓨팅 장치 및 이의 동작 방법
KR20230154618A (ko) 스토리지 장치, 메모리 장치, 및 스토리지 장치 및 메모리 장치를 포함하는 시스템

Legal Events

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