Replication target service
AssigneeAmazon Technologies, Inc.
InventorCraig Keith Carl
Life of this patent
Estimating the term…
Abstract
A data storage service receives commands configured according to a communication protocol, such as a small computer system interface protocol. The commands may be replications of commands sent to a block-level data storage system, such as a storage area network. Data to be written by execution of the commands is persisted using an object-based data storage system. When read commands are received, data blocks can be extracted from the data objects in which they are stored.
Claims25
A computer-implemented method, comprising:
- provisioning a virtual storage device addressable using a block-level communication protocol;
- obtaining a plurality of write commands that are configured according to the block-level communication protocol and that address the provisioned virtual storage device;
- aggregating the plurality of write commands into an aggregate write command;
- executing the aggregate write command by at least:
- providing a web service application programming interface call to a web service to cause data associated with a write command of the plurality of write commands to be persisted as part of a corresponding data object in a key-value data store accessible via the web service, the data object being retrievable from the key-value data store by referencing a key for the data object, wherein causing the data of the write command to be persisted as part of the data object includes aggregating data for multiple write commands into the data object, wherein the write command comprises updated data for a data block having a data block address, the data block having data corresponding to the data block address stored in another data object as a result of a previous write command specifying the data block address;
- and
- storing information associating the key with one or more data block addresses, including the data block address, specified by the write command of the plurality of write commands;
- and
- providing the write command to a block data storage system separate from the key-value data store, wherein data according to the write command is persisted as a data block by the block data storage system.
A computer-implemented method, comprising:
- obtaining a write command configured according to a first communication protocol, the write command specifying an identifier for a data block, stored in a virtual storage device;
- aggregating the write command and a different write command into an aggregated write command;
- and
- executing the aggregated write command by at least:
- providing a web service application programming interface call to a web service to cause data of the write command to be persisted, with other data from the different write command, as part of a data object in a key-value store accessible via the web service, the data object retrievable from the key-value store using a key associated with the data object, wherein the write command and the different write command comprise updated data for the data block having a data block address, the data block having data corresponding to the data block address stored in another data object as a result of a previous write command specifying the data block address;
- causing data according to the write command to be persisted as a data block at a block data storage system;
- causing data according to the write command to be persisted as a data object at the key-value store;
- and
- associating, in a data store, separate from the virtual storage device, the key with the identifier for the data block.
A system, comprising:
- one or more processors;
- and
- memory including instructions that, as a result of execution by the one or more processors, cause the system to imitate a block-level storage device by at least:
- providing a block-level data storage interface;
- obtaining, to the block-level data storage interface, a plurality of block-level commands;
- aggregating the obtained plurality of block-level commands into an aggregate block level command;
- and
- executing the aggregate block level command by at least:
- providing web service application programming interface calls to a web service to cause an object-based virtual data storage system accessible via the web service to persistently store data blocks in data objects in accordance with each block-level command of the obtained plurality of block-level commands, wherein each block-level command of the block-level commands comprises updated data for a data block that has a data block address, the data block having data corresponding to the data block address stored in another data object as a result of a previous block-level command specifying the data block address;
- causing a data storage device to store data blocks in accordance with each block-level command of the obtained plurality of block-level commands, the data storage device separate from the virtual data storage system;
- and
- updating a key-value data store, separate from the object-based virtual data storage system, in accordance with the block-level commands, the key-value data store being separate from the object-based virtual data storage system.
A non-transitory computer-readable storage media having stored therein instructions that, as a result of execution by one or more processors of a computer system, cause the computer system to:
- obtain a write command that specifies a data block and data for the data block;
- aggregate the write command and a different write command specifying different data into an aggregated write command;
- execute the aggregated write command by at least:
- providing a web service application programming interface call to a web service to cause the data for the data block to be persistently stored in a virtual data storage system that stores a data object, the data object being a logical container for one or more data blocks;
- and
- providing the data according to the write command to a data block storage system, the data block storage system different from the virtual data storage system;
- and
- aggregate the data for the write command and the different write command into the data object, wherein the write command and the different write command comprise updated data for a data block having a data block address, the data block having data corresponding to the data block address stored in another data object as a result of a previous write command specifying the data block address;
- and
- maintain, in a data store separate from the virtual data storage system, information usable to locate the data object from an identifier of the data block.
Dependencies are inferred from the claim text.