Distributed data storage controller
First Claim
Patent Images
1. A computer-implemented method, comprising:
- implementing a data mapping engine on a client device using a virtual machine instance running on the client device, the data mapping engine configured at least to receive data requests from the virtual machine instance running on the client device;
receiving, by the virtual machine instance, a portion of a data map;
determining, by the data mapping engine using at least the portion of the data map, a server request based at least in part on a data request of the received data requests, the server request identifying data within a data storage system, the server request determined at least in part by a placement engine implemented across one or more computer systems, the placement engine determining the server request based at least on data storage-related information received from at least one of the client device or the data storage system;
transmitting the server request to the data storage system;
after transmitting the server request, receiving a response from the data storage system;
updating, based at least in part on the response from the data storage system, the portion of the data map; and
transmitting information related to the updated portion of the data map to a map authority.
1 Assignment
0 Petitions
Accused Products
Abstract
A storage controller is implemented for controlling a storage system. The storage controller may be implemented using a distributed computer system and may include components for servicing client data requests based on the characteristics of the distributed computer system, the client, or the data requests. The storage controller is scalable independently of the storage system it controls. All components of the storage controller, as well as the client, may be virtual or hardware-based instances of a distributed computer system.
73 Citations
20 Claims
-
1. A computer-implemented method, comprising:
-
implementing a data mapping engine on a client device using a virtual machine instance running on the client device, the data mapping engine configured at least to receive data requests from the virtual machine instance running on the client device; receiving, by the virtual machine instance, a portion of a data map; determining, by the data mapping engine using at least the portion of the data map, a server request based at least in part on a data request of the received data requests, the server request identifying data within a data storage system, the server request determined at least in part by a placement engine implemented across one or more computer systems, the placement engine determining the server request based at least on data storage-related information received from at least one of the client device or the data storage system; transmitting the server request to the data storage system; after transmitting the server request, receiving a response from the data storage system; updating, based at least in part on the response from the data storage system, the portion of the data map; and transmitting information related to the updated portion of the data map to a map authority. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. One or more computer-readable storage devices for storing computer-executable instructions that, when executed by one or more computer systems, configure the one or more computer systems to perform operations, comprising:
-
implementing a data mapping engine on a client device, the data mapping engine configured to at least receive data requests; receiving, by the client device, at least a portion of a map from a map authority that is implemented with the one or more computer systems, the portion of the map including information associating at least one or more block addresses accessible by the client device to one or more locations of a data storage system; translating, using the map, the data requests of the client device into server requests to be transmitted to the data storage system, the server requests being operable to locate data responsive to the data requests within the data storage system; transmitting the server requests to the data storage system; collecting, by an instance running on the client device, characteristic information associated with translating the data requests of the client device into the server requests; and optimizing a future translation of data requests based in part on the collected characteristic information. - View Dependent Claims (11, 12, 13, 14, 15)
-
-
16. A computer system, comprising:
-
memory that stores computer-executable instructions; and at least one processor configured to access the memory and execute the computer-executable instructions to collectively at least; implement a data mapping engine on a client, the data mapping engine configured to at least receive data requests; store a data table at the client using an authoritative entity comprised of a subset of resources of the computer system; receive a copy of the data table by the client of the computer system and from the authoritative entity; process a data request operable to locate stored data within a data storage system by the client and using at least the copy of the data table received by the client; transmit a data location command determined based in part on the data request by the client, the data location command from a plurality of data location commands to the data storage system; receive, from the data storage system, a portion of the stored data related to the data location command; determine, based in part on the portion of the stored data related to the data location command and determining that the copy of the data table contains at least one incorrect reference to data within the data storage system; and adjust, by the client, the copy of the data table to correct the at least one incorrect reference. - View Dependent Claims (17, 18, 19, 20)
-
Specification