IP Library Granted Patent US 11,169,816
Granted Patent B2
US 11,169,816 · App. 16/561,834 · Granted Nov 9, 2021

System and method for key value store

Inventors: Andrew M. Rogers (Bellevue, WA); Arthur Zwiegincew (Emerald Hills, CA)
Assignee: Facebook Technologies, LLC
G06F9/4401G06F21/6218
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,169,816
App. No.
16/561,834
Granted
Nov 9, 2021
Kind
B2
Abstract

In certain embodiments, a method includes starting an application as a first process within a user space of an operating system. The application instantiates a key-value store and a file system associated with the operating system. The method also includes managing, by a block device service running within the user space, one or more first data blocks of a persistent storage allocated to the key value store and one or more second data blocks of the persistent storage allocated to the file system. In addition, the method includes receiving, by a kernel of the operating system, a system call request comprising an access request generated by the key-value store or the file system. The method further includes granting, by the block device service, and in response to the access request, the key value store or the file system access to the one or more first or second data blocks.

Claims (32)

1. A method comprising, by a computing device:

starting an application as a first process within a user space of an operating system, wherein the application instantiates a key-value store library and a file system library associated with the operating system, wherein the key-value store library and the file system library are located within the application;

starting a block device service as a second process within the user space of the operating system, the block device service being configured to manage a persistent storage device of the computing device;

managing, by the block device service running as the second process within the user space of the operating system, one or more first data blocks of the persistent storage device allocated to the key-value store library and one or more second data blocks of the persistent storage device allocated to the file system library, wherein the key-value store library manages the one or more first data blocks using a mapping between a virtual storage space and the one or more first data blocks;

receiving, by a kernel of the operating system, a system call request generated by the key-value store library or the file system library, the system call request comprising an access request to access the persistent storage device of the computing device, wherein the kernel is a microkernel;

granting, by the block device service and in response to the access request, (1) the key-value store library access to the one or more first data blocks or (2) the file system library access to the one or more second data blocks; and

providing the key-value store library and the file system library, in response to the system call request, access to the one or more first data blocks or the one or more second data blocks through an inter process communication (IPC) channel between the application and the block device service via the kernel.

2. The method according to claim 1 , further comprising: reading or writing data on the one or more first data blocks using the key-value store library, or reading or writing on the one or more second data blocks using the file system library of the persistent storage device.

3. The method of claim 1 , further comprising: sending a request to a logical volume service during set-up of the application; and allocating the one or more first data blocks of the persistent storage device for the key-value store library, and the one or more second data blocks at the persistent storage device for the file system library.

4. The method of claim 3 , wherein the logical volume service informs the block device service of the allocation of the one or more first data blocks and the one or more second data blocks at the persistent storage device.

5. The method of claim 1 , wherein the key-value store library and the file system library comprise an internal structure indicating a location of the one or more first data blocks or the one or more second data blocks in the persistent storage device.

6. One or more computer-readable non-transitory storage media embodying software that is operable upon execution to:

start an application as a first process within a user space of an operating system, wherein the application instantiates a key-value store library and a file system library associated with the operating system, wherein the key-value store library and the file system library are located within the application;

start a block device service as a second process within the user space of the operating system, the block device service being configured to manage a persistent storage device of a computing device;

manage, by the block device service running as the second process within the user space of the operating system, one or more first data blocks of the persistent storage device allocated to the key-value store library and one or more second data blocks of the persistent storage device allocated to the file system library, wherein the key-value store library manages the one or more first data blocks using a mapping between a virtual storage space and the one or more first data blocks;

receive, by a kernel of the operating system, a system call request generated by the key-value store library or the file system library, the system call request comprising an access request to access the persistent storage device of the computing device, wherein the kernel is a microkernel;

grant, by the block device service and in response to the access request, (1) the key-value store library access to the one or more first data blocks or (2) the file system library access to the one or more second data blocks; and

provide the key-value store library and the file system library, in response to the system call request, access to the one or more first data blocks or the one or more second data blocks through an inter process communication (IPC) channel between the application and the block device service via the kernel.

7. The media of claim 6 , further comprising: read or write data on the one or more first data blocks using the key-value store library, or read or write on the one or more second data blocks using the file system library of the persistent storage device.

8. The media of claim 6 , further comprising: send a request to a logical volume service during set-up of the application; and allocate the one or more first data blocks of the persistent storage device for the key-value store library, and the one or more second data blocks at the persistent storage device for the file system library.

9. The media of claim 8 , wherein the logical volume service informs the block device service of the allocation of the one or more first data blocks and the one or more second data blocks at the persistent storage device.

10. The media of claim 6 , wherein the key-value store library and the file system library comprise an internal structure indicating a location of the one or more first data blocks or the one or more second data blocks in the persistent storage device.

11. A system comprising:

one or more processors; and

one or more computer-readable non-transitory storage media coupled to the one or more processors and comprising instructions operable upon execution by the one or more processors to cause the system to:

start an application as a first process within a user space of an operating system, wherein the application instantiates a key-value store library and a file system library associated with the operating system, wherein the key-value store library and the file system library are located within the application;

start a block device service as a second process within the user space of the operating system, the block device service being configured to manage a persistent storage device of a computing device;

manage, by the block device service running as the second process within the user space of the operating system, one or more first data blocks of the persistent storage device allocated to the key-value store library and one or more second data blocks of the persistent storage device allocated to the file system library, wherein the key-value store library manages the one or more first data blocks using a mapping between a virtual storage space and the one or more first data blocks;

receive, by a kernel of the operating system, a system call request generated by the key-value store library or the file system library, the system call request comprising an access request to access the persistent storage device of the computing device, wherein the kernel is a microkernel;

grant, by the block device service and in response to the access request, (1) the key-value store library access to the one or more first data blocks or (2) the file system library access to the one or more second data blocks; and

provide the key-value store library and the file system library, in response to the system call request, access to the one or more first data blocks or the one or more second data blocks through an inter process communication (IPC) channel between the application and the block device service via the kernel.

12. The system of claim 11 , further comprising: read or write data on the one or more first data blocks using the key-value store library, or read or write on the one or more second data blocks using the file system library of the persistent storage device.

Assignments (2)
CHANGE OF NAME Recorded Jul 6, 2022
From: FACEBOOK TECHNOLOGIES, LLC
To: META PLATFORMS TECHNOLOGIES, LLC
Reel/Frame 060591/0848 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2019
From: ROGERS, ANDREW M.; ZWIEGINCEW, ARTHUR
To: FACEBOOK TECHNOLOGIES, LLC
Reel/Frame 050319/0058 →