# US 11,029,993 B2 · System and method for a distributed key-value store

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,029,993 B2
- Document ID: US11029993B2
- Status: Granted
- Kind: B2
- Application number: 16/518,931
- Filed: 2019-07-22
- Published: 2020-10-08
- Granted: 2021-06-08
- Earliest claimed: 2019-04-04
- Assignees: Nutanix, Inc.
- Applicants: Nutanix, Inc.
- Inventors: Anoop Jawahar; Jaideep Singh; Ronak Sisodia; Yasaswi Kishore; Sandeep Madanala; Rituparna Saikia
- Web page: https://patentgrep.com/patent/US11029993B2

## CPC

- G06F 9/455: Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 8/60: Software deployment
- G06F 2009/4557: {Distribution of virtual machine instances; Migration and load balancing}
- G06F 2009/45579: {I/O management, e.g. providing access to device drivers or storage}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

An apparatus includes a processor having programmed instructions to determine a container number of container instances to be deployed in a cluster based on compute resources and determine a node number of virtual nodes to be deployed in the cluster based on storage resources. The node number of virtual nodes includes a key-value store. Each of the node number of virtual nodes owns a corresponding key range of the key-value store. The processor has programmed instructions to distribute the node number of virtual nodes equally across the container number of container instances and deploy the container number of container instances.

## Claims

### Claim 1

An apparatus comprising a processor having programmed instructions to:
deploy a container instance providing a compute resource to access metadata indicating a storage location of an object in a distributed storage platform;
deploy a virtual node implementing a key-value range of a key-value store, wherein the virtual node stores the metadata, wherein the container instance includes the virtual node;
receive a request to read the object, wherein the request includes the key-value range;
access, from the virtual node, the metadata using the container instance; and
provide, to an object controller, the metadata comprising the key-value range, wherein the object controller accesses, via a controller virtual machine (CVM) of a CVM cluster, the object in the storage location according to the metadata, wherein each CVM of the CVM cluster runs a subset of distributed operating system for accessing data in the distributed storage platform and has the key-value range.

### Claim 2 (depends on 1)

The apparatus of claim 1, the processor having further programmed instructions to:
assign the virtual node to a corresponding virtual disk; and
mount the corresponding virtual disk to the container instance.

### Claim 3 (depends on 1)

The apparatus of claim 1, wherein the container instance is part of a cluster of container instances and wherein the virtual node is a part of a plurality of virtual nodes distributed equally across the cluster, the processor having further programmed instructions to:
add a new container instance in the cluster; and
rebalance a node number of virtual nodes equally across a container number of container instances and the new container instance.

### Claim 4 (depends on 1)

The apparatus of claim 1, the processor having further programmed instructions to:
determine that the container instance has ceased operating; and
restart the container instance on a new virtual machine.

### Claim 5 (depends on 1)

The apparatus of claim 1, the processor having further programmed instructions to store a mapping of the virtual node to the container instance.

### Claim 6 (depends on 1)

The apparatus of claim 1, the processor having further programmed instructions to:
in response to the request to read the object, hash an object parameter to generate a key that corresponds to the key range of the key-value store; and
shard the I/O request to a plurality of virtual nodes including the virtual node.

### Claim 7 (depends on 6)

The apparatus of claim 6, the processor having further programmed instructions to receive the object from the virtual node.

### Claim 8

A non-transitory computer readable storage medium having instructions stored thereon that, upon execution by a processor, causes the processor to perform operations comprising:
deploying a container instance providing a compute resource to access metadata indicating a storage location of an object in a distributed storage platform;
deploying a virtual node implementing a key-value range of a key-value store, wherein the virtual node stores the metadata, wherein the container instance includes the virtual node;
receiving a request to read the object, wherein the request includes the key-value range;
accessing, from the virtual node, the metadata using the container instance; and
providing, to an object controller, the metadata comprising the key-value range, wherein the object controller accesses, via a controller virtual machine (CVM) of a CVM cluster, the object in the storage location according to the metadata, wherein each CVM of the CVM cluster runs a subset of distributed operating system for accessing data in the distributed storage platform and has the key-value range.

### Claim 9 (depends on 8)

The storage medium of claim 8, the operations further comprising:
assigning the virtual node to a corresponding virtual disk; and
mounting the corresponding virtual disk to the container instance.

### Claim 10 (depends on 8)

The storage medium of claim 8, wherein the container instance is part of a cluster of container instances and wherein the virtual node is a part of a plurality of virtual nodes distributed equally across the cluster, the operations further comprising:
adding a new container instance in the cluster; and
rebalancing a node number of virtual nodes equally across a container number of container instances and the new container instance.

### Claim 11 (depends on 8)

The storage medium of claim 8, the operations further comprising:
determining that the container instance has ceased operating; and
restarting the container instance on a new virtual machine.

### Claim 12 (depends on 8)

The storage medium of claim 8, the operations further comprising storing a mapping of the virtual node to the container instance.

### Claim 13 (depends on 8)

The storage medium of claim 8, the operations further comprising:
in response to the request to read the object, hashing an object parameter to generate a key that corresponds to the key range of the key-value store; and
sharding the I/O request to a plurality of virtual nodes including the virtual node.

### Claim 14 (depends on 13)

The storage medium of claim 13, the operations further comprising receiving the object from the virtual node.

### Claim 15

A computer-implemented method comprising:
deploying, by the processor a container instance providing a compute resource to access metadata indicating a storage location of an object in a distributed storage platform;
deploying, by the processor, a virtual node implementing a key-value range of a key-value store, wherein the virtual node stores the metadata, wherein the container instance includes the virtual node;
receiving, by the processor, a request to read the object, wherein the request includes the key-value range;
accessing, by the processor and from the virtual node, the metadata using the container instance; and
providing, to an object controller, the metadata comprising the key-value range, wherein the object controller accesses, via a controller virtual machine (CVM) of a CVM cluster, the object in the storage location according to the metadata, wherein each CVM of the CVM cluster runs a subset of distributed operating system for accessing data in the distributed storage platform and has the key-value range.

### Claim 16 (depends on 15)

The method of claim 15, further comprising:
assigning, by the processor, the virtual node to a corresponding virtual disk; and
mounting the corresponding virtual disk to the container instance.

### Claim 17 (depends on 15)

The method of claim 15, wherein the container instance is part of a cluster of container instances and wherein the virtual node is a part of a plurality of virtual nodes distributed equally across the cluster, further comprising:
adding, by the processor, a new container instance in the cluster; and
rebalancing, by the processor, a node number of virtual nodes equally across a container number of container instances and the new container instance.

### Claim 18 (depends on 15)

The method of claim 15, further comprising:
determining, by the processor, that the container instance has ceased operating; and
restarting, by the processor, the container instance on a new virtual machine.

### Claim 19 (depends on 15)

The method of claim 15, further comprising storing, by the processor, a mapping of the virtual node to the container instance.

### Claim 20 (depends on 15)

The method of claim 15, further comprising:
in response to the request to read the object, hashing, by the processor, an object parameter to generate a key that corresponds to a key range of the key-value store; and
sharding, by the processor, the I/O request to a plurality of virtual nodes including the virtual node.
