Dynamic resource commitment management
AssigneeAmazon Technologies, Inc.
InventorsBradley E. Marshall, Swaminathan Sivasubramanian, Tate Andrew Certain, Nicholas J. Maniscalco
Life of this patent
Estimating the term…
Loading patent…
AssigneeAmazon Technologies, Inc.
InventorsBradley E. Marshall, Swaminathan Sivasubramanian, Tate Andrew Certain, Nicholas J. Maniscalco
Estimating the term…
Various aspects of a data volume or other shared resource are determined and updated dynamically for purposes such as to provide guaranteed qualities of service. For example, the number of partitions in a data volume and/or the way in which data is stored across those partitions can be updated dynamically without significantly impacting the customer using the volume. The data stored to the volume can be striped or otherwise distributed across a number of logical areas, which then can be distributed across the partitions. Separate mappings can be used for the data in each logical area, and the logical areas in each partition, such that when moving a logical area only a single mapping has to be updated, regardless of the amount of data in that logical area. Further, logical areas can be moved between partitions without the need to repartition or redistributed the data in the data volume.
A computer-implemented method of storing data in a data volume, comprising:
A computer-implemented method of dynamically adjusting the storage of data in a data volume, comprising:
A computer-implemented method of distributing data across a data volume, comprising:
A system for dynamically adjusting the storage of data in a data volume, comprising:
A computer-readable storage medium including instructions for adjusting usage of a shared computing resource, the instructions when executed by a processor causing the processor to:
A computer-implemented method of dynamically adjusting the storage of data in a data volume, comprising:
Dependencies are inferred from the claim text.
Drawings are temporarily unavailable. Open the PDF at USPTO
No related US applications are recorded in the indexed filing history.
Partitioning or combining of resources: logical partitioning of resources; Management or configuration of virtualized resources
File access structures, e.g. distributed indices: distributed indices
Computing and data processing
About 4 years 5 months of term left · ends 22 Mar 2031 (estimated)
As an increasing number of applications and services are being made available over networks such as the Internet, an increasing number of content, application, and/or service providers are turning to technologies such as remote resource sharing and cloud computing. Cloud computing, in general, is an approach to providing access to electronic resources through services, such as Web services, where the hardware and/or software used to support those services is dynamically scalable to meet the needs of the services at any given time. A user or customer typically will rent, lease, or otherwise pay for access to resources through the cloud, and thus does not have to purchase and maintain the hardware and/or software to provide access to these resources.
In some environments, multiple users can share resources such as data repositories, wherein the users can concurrently send multiple read and/or write requests to be executed against the same data instance, for example. Problems can arise, however, such as when the number of concurrent requests exceeds the ability of the instance to process those requests, when the available bandwidth for a resource supporting the instance is no longer sufficient, or when the storage capacity for the instance and/or customer is no longer sufficient. In many cases issues such as insufficient storage capacity, number of input/output (I/O) operations per second (IOPS), and/or bandwidth can be addressed by increasing the number and/or amount of resources dedicated to those tasks. Such approaches can be very complicated, however, as almost all the data must be redistributed across resource instances and all mappings for that data updated accordingly. Further, such approaches can require the purchase, installation, and maintenance of additional components that might not otherwise be necessary.
Various embodiments in accordance with the present disclosure will be described with reference to the drawings, in which:
FIG. 1 illustrates an environment in which various embodiments can be implemented;
FIG. 2 illustrates an example separation of management and host components that can be used in accordance with various embodiments;
Systems and methods in accordance with various embodiments of the present disclosure may overcome one or more of the aforementioned and other deficiencies experienced in conventional approaches to managing aspects of resource sharing and allocation in an electronic environment. For example, various embodiments enable users to request a specific quality of service or level of processing, such as a minimum and/or committed rate of input/output operations per second (IOPS), bandwidth, and/or storage capacity for a given resource. The requested amount(s) can be any appropriate amount, which can be less or greater than the total amount provided by any single instance or device of the respective resource, providing improved granularity over that which is possible with conventional approaches. Multiple customers can be assigned to a single resource, such as a data server or data store, with each of the customers potentially receiving at least one guaranteed level of service. By managing the performance allocations for customers on various resources, systems and methods in accordance with various embodiments can enable customers to purchase appropriately-sized volumes that have an IOPS guarantee at any appropriate level, such as between 1 IOPS and 5,000 IOPS. By allocating portions of disks, spindles, and other such resources, a system can offer customers guaranteed and/or minimum levels of storage, IOPS, bandwidth, and other such functional aspects, which can be dynamically changed as needed and/or desired. In various embodiments, customers having commitments that cannot be provided by a single available resource can have the commitment spread across multiple resources or resource instances. For example, a data volume might include multiple physical storage devices (e.g., flash memory devices or data spindles) that each contain a portion of the data stored for a particular user.
Systems and methods in accordance with various embodiments enable various commitments, minimums, guarantees, and/or other such aspects to be adjusted dynamically, in response to customer requests, established thresholds, usage variations, or any of a number of other such criteria or inputs. The system can automatically adjust aspect of various resources as needed, such as to provision or allocate additional resources; add, move, or resize data volumes; split customers across multiple resources; or any of a number of other such actions as described and suggested herein. A system in accordance with various embodiments includes at least one monitoring component of a control plane, or control environment, operable to monitor usage of resources in a data environment and adjust the utilization of the resources based on established criteria. The control plane can include one or more interfaces (e.g., Web service APIs) enabling customers to request specific changes, or establish criteria to be used in making such changes. Various other approaches can be used as well within the scope of the various embodiments.
In some embodiments, the number of resources or resource instances can be adjusted automatically as the customer's needs or usage change. For example, if a customer needs more storage space, bandwidth, or IOPS, the system can automatically dedicate at least a portion of another resource instance to the customer, and can adjust the provisioning of the customer across those instances accordingly. If the customer's usage goes down, the system can dynamically decrease the number of resource instances that have at least a portion dedicated to that customer, and can adjust the data across a fewer number of instances.