Methods and systems for data storage
First Claim
1. A system for remote storage of data, the system comprising:
- a processor circuit comprising at least one processor;
a local data storage device in electronic communication with the processor circuit, wherein the local data storage device comprises;
a local block map, wherein the local block map comprises a plurality of mappings, wherein each mapping maps an identifier of a data block to a corresponding content address; and
a log-structured local data storage comprising data units organized by content address; and
a memory circuit operatively associated with the processor circuit, wherein the memory circuit comprises instructions that, when executed by the processor circuit, cause the processor circuit to;
receive an electronic write request from an application, wherein the write request comprises an identifier of a first data block and a value for the first data block;
derive a content address of the first data block considering the value for the first data block;
write a mapping to a logical end of the local block map, wherein the mapping maps the identifier of the first data block to the content address;
write the mapping to a remote block map;
determine if the content address is present at the local data storage;
conditioned upon the content address not being present at the local data storage;
write the value of the first data block to the local storage at a first location; and
write to the local storage metadata associating the content address with the first location.
3 Assignments
0 Petitions
Accused Products
Abstract
In one general aspect, various embodiments are directed to a method of writing a data block to a memory comprising receiving an electronic write request from an application. A content address of a first data block considering the value for the first data block. A mapping of the first data block to the content address may be written to a logical end of the local block map. The mapping may also be written to a remote block map. If the content address is not present at a local data storage, the value of the first data block may be written to the local data storage at a first location and metadata associating the content address with the first location may be written to the local data storage.
119 Citations
20 Claims
-
1. A system for remote storage of data, the system comprising:
-
a processor circuit comprising at least one processor; a local data storage device in electronic communication with the processor circuit, wherein the local data storage device comprises; a local block map, wherein the local block map comprises a plurality of mappings, wherein each mapping maps an identifier of a data block to a corresponding content address; and a log-structured local data storage comprising data units organized by content address; and a memory circuit operatively associated with the processor circuit, wherein the memory circuit comprises instructions that, when executed by the processor circuit, cause the processor circuit to; receive an electronic write request from an application, wherein the write request comprises an identifier of a first data block and a value for the first data block; derive a content address of the first data block considering the value for the first data block; write a mapping to a logical end of the local block map, wherein the mapping maps the identifier of the first data block to the content address; write the mapping to a remote block map; determine if the content address is present at the local data storage; conditioned upon the content address not being present at the local data storage; write the value of the first data block to the local storage at a first location; and write to the local storage metadata associating the content address with the first location. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method for remote storage of data, the method comprising:
-
receiving an electronic write request from an application, wherein the write request comprises an identifier of a first data block and a value for the first data block; deriving a content address of the first data block considering the value for the first data block; writing a mapping to a logical end of a local block map, wherein the mapping maps the identifier of the first data block to the content address, wherein the local block map comprises a plurality of mappings, wherein each of the plurality of mappings maps an identifier of a data block to a corresponding content address; writing the mapping to a remote block map; determining if the content address is present at a local data storage, wherein the local data storage is log-structured and comprises data units organized by content address; conditioned upon the content address not being present at the local data storage; writing the value of the first data block to the local storage at a first location; and writing to the local storage metadata associating the content address with the first location.
-
-
11. A portable data storage device for re-creating a client device on a computer machine, the device comprising a computer readable medium having written thereon:
-
a local block map, wherein the local block map comprises a plurality of mappings, wherein each mapping maps an identifier of a data block to a corresponding content address; a log-structured local data storage comprising data units organized by content address; and
instructions that, when executed by a processor circuit, cause the processor circuit to;receive an electronic write request from an application, wherein the write request comprises an identifier of a first data block and a value for the first data block; derive a content address of the first data block considering the value for the first data block; write a mapping to a logical end of the local block map, wherein the mapping maps the identifier of the first data block with the content address; write the mapping to a remote block map; determine if the content address is present at the local data storage; conditioned upon the content address not being present at the local data storage; write the value of the first data block to the local storage at a first location; and write to the local storage metadata associating the content address with the first location.
-
-
12. A computer readable medium comprising instructions thereon that, when executed by at least one processor, cause the at least one processor to:
-
upon receipt of a write request comprising an identifier of a data block and a value of the data block, derive a content address for the data block based on the value of the data block; update a local block map to associate the identifier with the content address; update a remote block map to associate the identifier with the content address; determine whether a log-structured local data log comprises the content address; conditioned upon the local data log not comprising the content address; write the value of the data block to the local data log at a first location; and write to the local data log metadata associating the content address with the first location; determine whether a remote data log comprises the content address;
conditioned upon the remote data log not comprising the content address;write the value of the data block to the remote data log at a first remote location; and write to the remote data log metadata associating the content address with the first remote location. - View Dependent Claims (13, 14, 15, 16)
-
-
17. A computer system comprising:
-
a processor circuit comprising at least one processor; a local data storage device in electronic communication with the processor circuit, wherein the local data storage device comprises; a local block map, wherein the local block map comprises a plurality of mappings, wherein each mapping maps an identifier of a data block to a corresponding content address; and a log-structured local data storage comprising data units organized by content address; and a memory circuit operatively associated with the processor circuit, wherein the memory circuit comprises instructions that, when executed by the processor circuit, cause the processor circuit to; receive an electronic read request from an application, wherein the read request comprises an identifier of a first data block; determine if the local block map comprises a content address associated with the identifier of the first data block; conditioned upon the local block map comprising a content address associated with the identifier of the first data block, retrieving the content address from the local block map; conditioned upon the local block map not comprising the content address, retrieving the content address from a remote block map; determine whether the content address appears in the local data storage; conditioned upon the content address appearing in the local data storage, retrieving a value associated with the content address in the local storage and returning the value to the application as a value for the first data block; and conditioned upon the content address not appearing in the local data storage, retrieving a value associated with the content address in the remote storage and returning the value to the application as an identifier of a value for the first data block. - View Dependent Claims (18, 19)
-
-
20. A computer-implemented method comprising:
-
receiving by a processor circuit an electronic read request from an application, wherein the read request comprises an identifier of a first data block, and wherein the processor circuit comprises at least one processor and is in communication with a local data storage; determining by the processor circuit if a local block map at the local data storage comprises a content address associated with the identifier of the first data block; conditioned upon the local block map comprising a content address associated with the identifier of the first data block, retrieving the content address from the local block map by the processor circuit; conditioned upon the local block map not comprising the content address, retrieving the content address from a remote block map by the processor circuit; determining by the processor circuit whether the content address appears in the local data storage; conditioned upon the content address appearing in the local data storage, retrieving by the processor circuit a value associated with the content address in the local data storage and returning the value to the application as a value for the first data block; and conditioned upon the content address not appearing in the local data storage, retrieving a value associated with the content address in the remote storage and returning the value to the application as an identifier of a value for the first data block.
-
Specification