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

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

Info

Publication number
WO2014142473A1
WO2014142473A1 PCT/KR2014/001868 KR2014001868W WO2014142473A1 WO 2014142473 A1 WO2014142473 A1 WO 2014142473A1 KR 2014001868 W KR2014001868 W KR 2014001868W WO 2014142473 A1 WO2014142473 A1 WO 2014142473A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
storage
service front
key
cache
Prior art date
Application number
PCT/KR2014/001868
Other languages
English (en)
French (fr)
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 US14/775,801 priority Critical patent/US10083118B2/en
Publication of WO2014142473A1 publication Critical patent/WO2014142473A1/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

Definitions

  • the present invention relates to a key-value storage system, and more particularly, to a key value-based data storage system capable of supporting low power and high performance data input / output and a method of operating the same.
  • the method of using Memcached as a key-value cache server and storing the actual data in a database server utilizes a distribution cache server and a client library. Data cache is processed by selecting a cache node with consistent hasing in.
  • the client program is responsible for cache management and processes data separately from the cache server and DBS.
  • FAW Fast Array of Wimpy Nodes
  • CMU Carnegie Mellon University
  • SSDs solid state disks
  • a single front-end node is accessed to request key-value operations.
  • the front end uses persistent hashing to determine the backend node to store the key-value, and requests the node to save the data.
  • the front end keeps the results of the request in its own memory, providing cached data to the client in a later get operation without going through the backend node.
  • an object of the present invention is to solve the problems of the prior art as described above, and is based on a cluster equipped with high-performance storage such as NAND Flash storage (key-value storage system). storage) system and utilizes the storage memory (idle memory) of each storage node as a cache to provide a low power high performance key value based data storage system and its operation method. have.
  • high-performance storage such as NAND Flash storage (key-value storage system). storage) system and utilizes the storage memory (idle memory) of each storage node as a cache to provide a low power high performance key value based data storage system and its operation method.
  • the present invention for achieving the above object is a computing node including a board corresponding to a substrate module, a central processing unit disposed on the substrate module, memory and cache storage for the cache and the NAND flash storage disposed on the substrate module, the computing And a communication interface connecting the nodes, wherein the computing nodes disclose a configuration of a key value based data storage system, characterized in that it supports key value based data processing.
  • the computing node may form a cluster including an ARM board with an SD card / SSD or an ARM board with NAND flash storage included in a system on chip (SoC), or a plurality of ARM CPUs, memory, and NAND flash storage.
  • SoC system on chip
  • the computing node allocates a key range of each of the plurality of storage nodes to configure key-value storage, a plurality of storage nodes that actually store key-value data.
  • a storage master node configured as one of the service front end nodes for managing at least one service front end node and the at least one service front end node.
  • the service front end node dynamically configures a cache size by forming a cache cluster with idle memory of the storage node.
  • the software components constituting the node operate in a microkernel-based user level process and are provided in a library form according to component dependencies so that a plurality of modules operate in one user level process.
  • the service front end node When the service front end node receives the put operation request from the client node, the service front end node stores the key value in a specific storage node and maintains the storage result as a cache.
  • the service front-end node When the service front end node receives a get operation request from a client node, the service front-end node first looks up a cache and obtains a value through a corresponding storage node when a cache miss occurs.
  • the driving of the service front end node, the storage master node, and the software components included in the storage node is performed on a microkernel or monolithic kernel.
  • the present invention also provides a method in which a client node requests an operation for reading or writing key-value data, and at least one service for managing a plurality of storage nodes storing the key value data according to the operation request. Providing a list of front end nodes to the client node, the client node selecting a service front end node to read or write the key value data, and wherein the selected service front end node requests the key according to the client node request.
  • a configuration of a method for operating a key value based data storage system comprising: providing a value data to a specific storage node or reading from a specific storage node and providing the same to the client node.
  • the method further comprises selecting any one of the service front end nodes as a storage master node, wherein the storage master node generates and manages the list of service front end nodes.
  • the method further includes the service front end node assigning the key range to the plurality of storage nodes.
  • the method further includes the service front end node dynamically configuring a cache size by configuring a cache cluster with idle memory of the storage node.
  • the providing step includes the service front end node receiving a put operation request from the client node, storing a key-value in a specific storage node, and maintaining the storage result in a cache by the storage node. It includes.
  • the providing may include receiving a get operation request from the client node by the service front end node, looking up a cache by the service front end node, and caching misses by the service front end node. In the case of miss), a value is obtained through a corresponding storage node.
  • the method comprises the steps of forming the cluster for the key value based data storage system by the computing nodes including an ARM board with SD card / SSD or an ARM board with NAND flash storage included in a System on chip (SoC). Include.
  • SoC System on chip
  • the method includes the steps of computing the clusters for the key value based data storage system by the computing nodes interworking a plurality of SSDs mounted with the ARM CPU, memory, and NAND flash storage.
  • the method includes the steps of computing nodes implemented as ARM-based microservers using SSDs via IO virtualization to form a cluster for the key value based data storage system.
  • the present invention provides an environment using a conventional high performance server-based key-value storage and memcached. Energy consumption can be reduced by configuring distributed storage through ARM-based clustering.
  • the present invention supports to configure scalable storage by adaptively adding or removing clusters according to designer's intention.
  • the present invention improves the resource efficiency of the node by using the idle memory (idle memory) of the storage cluster as a cache, and communication overhead caused by the client directly cache management (cache management) as in the process of applying the memcached method Assist in reducing the occurrence.
  • FIG. 1 is a view showing data storage systems in an ARM cluster configuration according to an embodiment of the present invention.
  • FIG. 2 is a node diagram of an ARM cluster constituting a key value based data storage system.
  • FIG. 3 is a software structural diagram of a service front end node of the present invention.
  • FIG. 4 is a software structural diagram of a storage master node of the present invention.
  • FIG. 5 is a software structural diagram of a storage node of the present invention.
  • FIG. 6 is a view for explaining the performance of the put operation of the present invention.
  • FIG. 7 is a view for explaining the performance of the get operation of the present invention.
  • FIG. 8 is a key-value cache configuration utilizing idle memory of a storage node of the present invention.
  • key-value storage refers to a storage for storing data consisting of ⁇ key, value> pairs, or a storage device for storing a value of less than 1 KB.
  • a key-value get operation or get operation means an operation of finding a value value by inputting a key value.
  • a key-value put operation or put operation means an operation for requesting storage of a ⁇ key, value> pair.
  • NAND flash storage has lower power demand per byte and 10 to 100 times faster read / write speeds than hard disk drives (HDDs).
  • the present invention takes advantage of the fast data access and low power characteristics of NAND flash storage, and utilizes low-end ARM boards with lower computing power compared to existing servers, thereby making the ARM cluster or ARM-based micro server IO intensive. It is configured to maximize low power by configuring as one key-value storage.
  • the present invention provides a data buffer and log only structured data of an append only type.
  • data can be stored in the form of sequential writes in NAND flash storage when a key-value put operation is requested, thereby improving the performance of a write operation.
  • a get operation on a key-value performs read access to distributed key-value storage.
  • Data random reads in NAND flash storage are faster than sequential write operations.
  • the memory of each node can be clustered and used as a key-value cache to improve the performance of put and get operations.
  • FIG. 1 is a diagram schematically illustrating the types of ARM-based computing nodes for configuring a key value-based data storage system 10 having a cluster of ARM-based computing nodes according to an embodiment of the present invention.
  • the data storage system 10 of the present invention is configured as any one of a plurality of ARM-based computing nodes 101, 102, and 103, and each type of ARM-based computing nodes 101, 102 and 103 comprise a substrate module such as an ARM board 14, a central processing unit such as an ARM CPU 11, a NAND flash storage 12, a memory 13 and a bus.
  • the first type system 10a includes an ARM CPU 11, a NAND flash storage 12, and a memory 13 mounted on an ARM board 14, thereby providing one first type.
  • the nodes 101 are configured, and the first type nodes 101 are configured to be connected via the first type bus 15a.
  • Some of the first type nodes 101 included in the first type system 10a may operate as service front end nodes, and the other first type nodes may operate as storage nodes.
  • the first type bus 15a supports the connection between the first type nodes 101 and supports the transfer of client requests from client nodes to certain nodes, and the client stores data stored in a specific first type node. It serves to provide the requesting client node.
  • the NAND flash storage 12 includes an ARM board 14 included in a system on chip (SoC), or an SD card / SSD-equipped ARM. It may be configured to be mounted on the board (14).
  • SoC system on chip
  • SD card / SSD-equipped ARM may be configured to be mounted on the board (14).
  • the second type system 10b includes an ARM CPU 11 and a memory 13 mounted on an ARM board 14 to configure the second type nodes 102, and separately provided SSD storage 16.
  • the second type bus 15b configures a cluster to operate the put operation or the get operation of the second type nodes 102 in the form of an ARM-based microserver based on specific SSD storages 16.
  • ARM-based microservers consist of key-value storage using SSDs through input / output (IO) virtualization.
  • the third type system 10c forms the third type nodes 103 by packetizing the ARM CPU 11, the memory 13, and the NAND flash storage 12, and the third type.
  • a cluster is formed by performing bus connection through the third type bus port 18 provided at the nodes 103.
  • the third type nodes 103 constituting the third type system 10c are not only an ARM board 14 on which an ARM CPU 11 corresponding to an ARM processor is mounted, but also an ARM CPU (not shown) in a NAND flash storage 12. 11) and the memory 13 are integrated to include all of the interlocking SSD cluster capable of computing.
  • the NAND flash storage 12 may be included in each node as an SoC or connected in the form of an SD card or an SSD through a system bus or an interconnection fabric.
  • Node-to-node communication supports high-speed data processing by providing short communication latency of less than milli second between nodes by utilizing system bus or interconnection fabric for high-speed communication between network devices or cluster nodes.
  • FIG. 2 is a diagram illustrating a functional node configuration for configuring the data storage system 10 described with reference to FIG. 1 as a distributed storage system.
  • each node on the cluster included in the data storage system 10 may be a service master node or a storage master node 200 (hereinafter referred to as a storage master node) or a service front according to a function. It is classified into an end node 100 (Service front-end node) and a storage node 300 (storage node).
  • the data storage system 10 includes one storage master node 200 that is responsible for node management and one or more service front ends that provide key-value storage services to the client node 1.
  • Node 100 and one or more storage nodes 300 for storing and managing the actual key-value data.
  • the storage master node 200 manages node membership according to node join / leave.
  • the storage master node 200 performs key range assign to be in charge of joining the service front end node 100 and may be one of the service front end nodes 100.
  • each service front end node 100 When there are a plurality of service front end nodes 100, each service front end node 100 performs key-space partitioning with consistent hashing, thereby exclusively between the service front end nodes 100. It has an in-key range and can be responsible for providing key value storage services based on this.
  • the service front-end node list maintains and updates the service front-end list that is in charge of each key range through communication between the service front-end nodes 100. Deliver the service front-end node items by range).
  • the client node 1 obtains a list of service front end nodes from the storage master node 200, checks the service front end node 100 information for each key range, and directly connects to each service front end node 100. A put operation or a get operation on a ⁇ key, value> can also be performed.
  • the storage node 300 depends on one service front end node 100.
  • the storage node 300 is responsible for the sub-range of the key range (depending on the corresponding service front end node 100), and stores the key value data (key-value data) and Manage.
  • a key range to be in charge of each storage node 300 and a service front end node 100 to be bound are configured as the storage master 300 when the storage node 300 receives a request to join the storage master node 200. Determined by node 200.
  • the memory 13 disposed in the storage node 300 constitutes an index table including storage offset information in which each key-value is stored or is stored in the NAND flash storage 12. It is used as a buffer for key-value data of a step. Other idle memory spaces are provided to the service front end node 100 as a cache space.
  • the storage node 300 also plays a role of a member node of a cache cluster required by the service front end node 100 to read data from the NAND flash storage 12. It reduces the execution time for random read of key value storage based on NAND flash storage which has a long access time. As a result, the data storage system 10 of the present invention can improve the resource utilization of the storage node 300 while increasing the QPS (Queries Per Second) for read access.
  • QPS Quality of Second
  • the data storage system 10 of the present invention implements all of the software stacks of each node constituting the system based on a micro kernel. Accordingly, the data storage system 10 of the present invention may be configured with only user-level operating system (OS) services and programs required for each node to support an optimal system. Alternatively, in the data storage system 10 of the present invention, the driving of the software modules may be implemented based on a monolithic kernel in addition to the micro kernel.
  • OS operating system
  • FIGS. 3 to 5 are diagrams illustrating a software stack implemented at each node of the data storage system 10 of the present invention.
  • FIG. 3 is a diagram illustrating a service front end module disposed at a service front end node of the present invention
  • FIG. 4 is a diagram showing a storage master module disposed at a storage master node of the present invention
  • modules marked at the user-level for performance improvement are processed in one process in the same address space according to inter-module dependencies. It can work.
  • modules are provided in the form of libraries so that they can run on the same process.
  • each node constituting the data storage system 10 described below may be configured as a user level program that provides a key-value service based on Linux.
  • the software components of the present invention operate in a microkernel-based user-level process.
  • modules may be provided in the form of libraries according to the dependencies of components, and thus a plurality of modules may operate as one user-level process to support performance improvement.
  • the service front end node 100 of the present invention includes a service front end unit 110, a cache manager 120, a first communication interface unit 130, and a first microkernel 140. It is configured by.
  • the service front end 110, the cache manager 120, and the first communication interface 130 operate as a user level process.
  • Components operating in the above-described user level process may be implemented on the first microkernel 140 and may be operation controlled based on the first microkernel 140.
  • the service front end unit 110 maintains information on the storage nodes 300 for each key range as an index table on the memory 13 to operate key values from the client node 1.
  • the storage node 300 in charge of the corresponding key is found through an index table lookup, and a key value operation is requested.
  • the result of the put key-value operation based on the put operation is stored in a cache corresponding to the NAND flash storage 12.
  • the first communication interface unit 130 may establish a communication channel with the client node 1 based on the first microkernel 140 to receive a put operation execution request or a get operation execution request from the client node 1. Can be.
  • the first communication interface unit 130 is a component in charge of communication between each node. When the communication interface of the node is configured as a network interface, the first communication interface unit 130 performs socket communication. In the case of a high-speed communication bus such as PCIe or interconneciton fabric, the first communication interface unit 130 is responsible for communication using a bus.
  • the cache manager 120 controls to perform a get operation operation of collecting data stored in the NAND flash storage 12 according to a request of the service front end unit 110, or a put operation of storing data in the NAND flash storage 12.
  • Cache management of the storage node 300 for performance control is performed. That is, the cache manager 120 checks the states of the storage nodes 300 to access the cache for reading and writing data, and provides the service front end unit 110 with the processing result according to the read and write operations. In this process, when the cache manager 120 receives a corresponding business performance from the service front end 110 according to a request for performing a get operation from the client node 1, the cache manager 120 caches the operation before the operation is delivered to the storage node 300. After checking whether the value exists in the first), if the value does not exist in the cache, the operation is delivered to the storage node 300 to be performed.
  • a cache is configured by utilizing the memory 13 space of the storage node 300 to which the service front and node 100 belongs.
  • the cache manager 120 of the front end node 100 determines in which memory node of the storage node 300 to store key-values to be cached, and in which storage node 300 each cached data is stored.
  • the hash table with cache information performs a table resize whenever the storage node 300 is added or removed and increases or decreases the memory space to be used as a cache. bucket array).
  • the storage master node 200 of the present invention includes a storage master unit 210, a second communication interface unit 230, and a second microkernel 240.
  • the storage master node 200 having such a configuration performs management, data allocation, and communication control of the service front end node 100 and the storage node 300.
  • the storage master unit 210 manages membership of the service front end node 100 and the storage node 300.
  • the storage master unit 210 allocates a key range to be in charge of each node of the data storage system 10.
  • the second communication interface unit 230 supports communication with other nodes.
  • the second communication interface 230 may perform any one of bus communication and socket communication like the first communication interface 130 described above.
  • the second communication interface unit 230 communicates with the service front end nodes 100 and the storage nodes 300 so that the storage master unit 210 can perform overall membership management of each node. Support channel formation.
  • the second microkernel 240 is a component that supports signal transmission, data transmission, and processing for operating the respective components of the storage master node 200.
  • the second micro kernel 240 transmits commands of the storage master unit 210 to other nodes through the second communication interface unit 230, and data provided by the other nodes to the second communication interface unit 230.
  • the storage master unit 210 performs a function support for operations such as key range allocation of the storage master unit 210.
  • the storage node 300 of the present invention includes a key value storage unit 310, a cache agent 320, a system driver 350, a third communication interface unit 330, and a third micro kernel 340. ).
  • the key value storage unit 310 of the storage node 300 configured as described above stores or reads a key-value pair requested from the service front end node 100 in a storage medium.
  • the key value storage unit 310 performs a sequential write using a log-structured data store, which is an append-only type, so that the sequential write of the NAND flash storage 12 is performed. It supports to take advantage of write performance.
  • the cache agent 320 reports the idle memory space of the storage node 300 to the cache manager 120 in the service front end node 100 so that the cache agent 320 can be used as a space for caching. .
  • the system driver 350 is composed of a file system and a storage driver to perform file storage and driver support.
  • the third communication interface unit 330 is configured to perform communication channel establishment with other nodes to be connected to the storage node 300 based on the third microkernel 340. That is, the third communication interface unit 330 forms a communication channel with the service front end node 100 and the storage master node 200 and supports the transfer of data required by the nodes and the storage of data provided by the nodes. do.
  • the storage nodes 300 belong to the service front end nodes 100 and are assigned a sub key range of a predetermined key range and support read and write operations of data corresponding thereto.
  • FIG. 6 is a diagram illustrating a put operation, that is, a write operation, of the data storage system 10 according to an exemplary embodiment.
  • the client node 1 requests a put ⁇ key1, value> from the service front end node 100. Then, the service front end node 100 performs a lookup of the storage node to identify the storage node 30a that will transfer data provided by the client node 1 among the storage nodes 300.
  • the node receiving the put operation request from the client node 1 may be the storage master node 200, and the storage master node 200 may distribute the put operation request to the specific service front end node 100. To this end, the storage master node 200 allocates a key range to each service front end node 100.
  • the storage master node 200 may be comprised of any one of the service front end nodes 100, and the selection of the storage master node 200 may be based on consultation between the service front end nodes 100, or by a system designer. Can be selected by. Meanwhile, the service front end node 100 performs key range check for performing a put operation, and supports storage node 30a selection and put message delivery according to the key range. To this end, the storage master node 200 among the service front end nodes 100 may perform list information management and membership management of the service front end nodes 100 assigned a key range.
  • the service front end node 100 provides put ⁇ key1, value> to a specific storage node 30a.
  • the specific storage node 30a performs put ⁇ key1, value> and provides the service front end node 100 with a response, put_response. Thereafter, the service front end node 100 may notify the client node 1 that the put operation has been performed by providing put_response.
  • the service front end node 100 performs a bucket search and related node check and provides a cache ⁇ key1, value> to a separate storage node 30b.
  • the separate storage node 30b caches the cache ⁇ key1, value> when it receives the cache ⁇ key1, value> from the service front end node 100 as a configuration for caching.
  • the separate storage node 30b provides the cache front desk node 100 with the cache_response corresponding to the caching result.
  • the service front end node 100 updates the hash table to perform entry setting corresponding to the valid cache for key1.
  • FIG. 7 is a diagram for describing a get operation, that is, a read operation, of the data storage system 10 according to an exemplary embodiment.
  • the client node 1 provides get ⁇ key1> to the service front end node 100 to perform a get operation of the present invention. Then, the service front end node 100 performs a lookup cache for the received get ⁇ key1> and checks which storage node 300 the data is stored in. In this process, the storage master node 200 may check the key range and selectively control the service front end node 100 that has delivered the get message. The service front end node 100 checks key1 of the get message to determine which storage node 300 is included. To this end, the service front end node 100 may perform information management on key ranges of the storage node 300.
  • the service front end node 100 transmits get ⁇ key1> to the storage node 300.
  • the storage node 300 extracts a key1 value from the received get ⁇ key1> and performs a lookup cache process for searching for a cache in which a key corresponding to the key1 value is stored.
  • the storage node 300 provides a cache response cache_response ⁇ key, value> to the service front end node 100.
  • the service front end node 100 provides the data received from the storage node 300 as get_response ⁇ key, value> as a response to the get request of the client node 1. That is, the data storage system 10 of the present invention looks up a cache first when a get operation request is received from the client node 1, and obtains a value through the corresponding storage node when a cache miss exists. Support.
  • FIG. 8 is a diagram illustrating a logical structure of a cache space in which a memory in a storage node is used as a key-value cache in the data storage system 10 of the present invention.
  • the cache manager 120 of the service front end node 100 creates and maintains a hash table as shown. That is, the ID and offset value of the storage node are allocated to a specific key.
  • the bucket size t of the hash table managed by one service front end node 100 may be a value corresponding to the cache space values of all storage nodes 300. Accordingly, the buckets of all the storage nodes 300 are managed by the cache manager 120 of the service front end node 100 in one continuous bucket array. Accordingly, the service front end node 100 of the present invention forms a cache cluster with idle memory of the storage node 300 to support a dynamically expandable cache size.

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

키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법
본 발명은 키 값 스토리지(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 크기를 동적으로 확장 가능하도록 지원한다.
한편, 본 명세서와 도면을 통해 본 발명의 바람직한 실시 예들에 대하여 설명하였으며, 비록 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것일 뿐, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 자명한 것이다.

Claims (17)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/775,801 US10083118B2 (en) 2013-03-14 2014-03-07 Key value-based data storage system and operation method thereof

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
WO2014142473A1 true WO2014142473A1 (ko) 2014-09-18

Family

ID=51537062

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2014/001868 WO2014142473A1 (ko) 2013-03-14 2014-03-07 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법

Country Status (3)

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

Families Citing this family (21)

* 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
US10034407B2 (en) * 2016-07-22 2018-07-24 Intel Corporation Storage sled for a data center
US11042330B2 (en) * 2017-03-01 2021-06-22 Samsung Electronics Co., Ltd. Methods and systems for distributed data storage
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 北京数牍科技有限公司 分布式计算架构的数据传输方法、装置、设备及存储介质
CN116431356B (zh) * 2023-06-13 2023-08-22 中国人民解放军军事科学院系统工程研究院 一种基于智能网卡的云网络缓存加速方法与系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060195450A1 (en) * 2002-04-08 2006-08-31 Oracle International Corporation Persistent key-value repository with a pluggable architecture to abstract physical storage
US20090067631A1 (en) * 2007-09-07 2009-03-12 Yahoo! Inc. Memory efficient storage of large numbers of key value pairs
US20110276744A1 (en) * 2010-05-05 2011-11-10 Microsoft Corporation Flash memory cache including for use with persistent key-value store
US20120310882A1 (en) * 2011-06-03 2012-12-06 Apple Inc. Key value data storage
KR20130018602A (ko) * 2011-08-08 2013-02-25 가부시끼가이샤 도시바 Key-value 스토어를 포함하는 메모리 시스템

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
JP5765416B2 (ja) * 2011-03-08 2015-08-19 日本電気株式会社 分散ストレージシステムおよび方法
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060195450A1 (en) * 2002-04-08 2006-08-31 Oracle International Corporation Persistent key-value repository with a pluggable architecture to abstract physical storage
US20090067631A1 (en) * 2007-09-07 2009-03-12 Yahoo! Inc. Memory efficient storage of large numbers of key value pairs
US20110276744A1 (en) * 2010-05-05 2011-11-10 Microsoft Corporation Flash memory cache including for use with persistent key-value store
US20120310882A1 (en) * 2011-06-03 2012-12-06 Apple Inc. Key value data storage
KR20130018602A (ko) * 2011-08-08 2013-02-25 가부시끼가이샤 도시바 Key-value 스토어를 포함하는 메모리 시스템

Also Published As

Publication number Publication date
KR20140112717A (ko) 2014-09-24
US10083118B2 (en) 2018-09-25
US20160041918A1 (en) 2016-02-11
KR102044023B1 (ko) 2019-12-02

Similar Documents

Publication Publication Date Title
WO2014142473A1 (ko) 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법
CN113810312B (zh) 用于管理存储器资源的系统和方法
US11416431B2 (en) System with cache-coherent memory and server-linking switch
US9104587B2 (en) Remote memory management when switching optically-connected memory
US6421769B1 (en) Efficient memory management for channel drivers in next generation I/O system
US8943294B2 (en) Software architecture for service of collective memory and method for providing service of collective memory using the same
WO2023096118A1 (ko) 스토리지 노드 기반의 키-값 스토어를 이용하는 데이터 입출력 방법
WO2023125524A1 (zh) 数据存储方法、系统、存储访问配置方法及相关设备
US11029847B2 (en) Method and system for shared direct access storage
Tianhua et al. The design and implementation of zero-copy for linux
US8688889B2 (en) Virtual USB key for blade server
US20240012684A1 (en) Memory disaggregation method, computing system implementing the method
US20230222067A1 (en) Apparatus and method for cache-coherence

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14765043

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 14775801

Country of ref document: US

122 Ep: pct application non-entry in european phase

Ref document number: 14765043

Country of ref document: EP

Kind code of ref document: A1