PROVIDING A RELIABLE BACKING STORE FOR BLOCK DATA STORAGE
First Claim
1. A method for a computing system of a block data storage service to maintain access of executing programs to remote stored block data, the method comprising:
- receiving a request to initiate access of a first executing program to non-local block data storage provided by a block data storage service, the first program executing on a first of a plurality of computing systems that are co-located at a first geographical location and that share one or more internal networks, the block data storage service using a first group of multiple other of the plurality of computing systems as block data storage systems that provide block data storage to multiple executing programs, the first computing system not being part of the first group; and
under control of a system manager module of the block data storage service, managing the providing of the block data storage to the multiple executing programs, by;
after receiving indications of one or more data access requests initiated by the first executing program to the non-local block data storage provided by the block data storage service, automatically responding by performing the data access requests on a first block data storage volume that has a primary copy stored on a second computing system and that has a mirror copy stored on a third computing system, the second and third computing systems each being part of the first group of block data storage systems, the performing of the data access requests causing one or more modifications to block data stored on the first block data storage volume in such a manner that the primary and mirror copies of the first block data storage volume each store the same block data;
at a first time after the performing of the data access requests, creating a first snapshot copy of the first block data storage volume on one or more remote archival data storage systems at a second geographical location that is distinct from the first geographical location, the first snapshot copy including a copy of the block data stored on the first block data storage volume at the first time; and
after creating the first snapshot copy and receiving indications of one or more other data access requests initiated by the first executing program to the provided non-local block data storage,automatically responding by performing the other data access requests on the primary copy stored on the second computing system, the performing of a subset of the other data access requests causing one or more further modifications to the block data stored on the primary copy;
maintaining the mirror copy by modifying the block data stored on the third computing system to include only the further modified block data from the performing of the other data access requests subset after the creating of the first snapshot copy, such that the maintained mirror copy on the third computing system lacks a subset of the block data stored on the second computing system for the primary copy of the block data storage volume, the stored block data subset corresponding to the stored block data that has not been modified since the creating of the first snapshot copy; and
after determining to promote the mirror copy of the first block data storage volume on the third computing system to be a new primary copy of the first block data storage volume, automatically restoring the mirror copy on the third computing system to include the subset of the stored block data by retrieving the subset of the stored block data from the first snapshot copy on the one or more remote archival data storage systems, such that the restored mirror copy on the third computing system matches the primary copy of the first block data storage volume before the promoting of the mirror copy.
1 Assignment
0 Petitions
Accused Products
Abstract
Techniques are described for managing access of executing programs to non-local block data storage. In some situations, a block data storage service uses multiple server storage systems to reliably store copies of network-accessible block data storage volumes that may be used by programs executing on other physical computing systems, and at least some stored data for some volumes may also be stored on remote archival storage systems. A group of multiple server block data storage systems that store block data volumes may in some situations be co-located at a data center, and programs that use volumes stored there may execute on other computing systems at that data center, while the archival storage systems may be located outside the data center. The data stored on the archival storage systems may be used in various ways, including to reduce the amount of data stored in at least some volume copies.
-
Citations
25 Claims
-
1. A method for a computing system of a block data storage service to maintain access of executing programs to remote stored block data, the method comprising:
-
receiving a request to initiate access of a first executing program to non-local block data storage provided by a block data storage service, the first program executing on a first of a plurality of computing systems that are co-located at a first geographical location and that share one or more internal networks, the block data storage service using a first group of multiple other of the plurality of computing systems as block data storage systems that provide block data storage to multiple executing programs, the first computing system not being part of the first group; and under control of a system manager module of the block data storage service, managing the providing of the block data storage to the multiple executing programs, by; after receiving indications of one or more data access requests initiated by the first executing program to the non-local block data storage provided by the block data storage service, automatically responding by performing the data access requests on a first block data storage volume that has a primary copy stored on a second computing system and that has a mirror copy stored on a third computing system, the second and third computing systems each being part of the first group of block data storage systems, the performing of the data access requests causing one or more modifications to block data stored on the first block data storage volume in such a manner that the primary and mirror copies of the first block data storage volume each store the same block data; at a first time after the performing of the data access requests, creating a first snapshot copy of the first block data storage volume on one or more remote archival data storage systems at a second geographical location that is distinct from the first geographical location, the first snapshot copy including a copy of the block data stored on the first block data storage volume at the first time; and after creating the first snapshot copy and receiving indications of one or more other data access requests initiated by the first executing program to the provided non-local block data storage, automatically responding by performing the other data access requests on the primary copy stored on the second computing system, the performing of a subset of the other data access requests causing one or more further modifications to the block data stored on the primary copy; maintaining the mirror copy by modifying the block data stored on the third computing system to include only the further modified block data from the performing of the other data access requests subset after the creating of the first snapshot copy, such that the maintained mirror copy on the third computing system lacks a subset of the block data stored on the second computing system for the primary copy of the block data storage volume, the stored block data subset corresponding to the stored block data that has not been modified since the creating of the first snapshot copy; and after determining to promote the mirror copy of the first block data storage volume on the third computing system to be a new primary copy of the first block data storage volume, automatically restoring the mirror copy on the third computing system to include the subset of the stored block data by retrieving the subset of the stored block data from the first snapshot copy on the one or more remote archival data storage systems, such that the restored mirror copy on the third computing system matches the primary copy of the first block data storage volume before the promoting of the mirror copy. - View Dependent Claims (2, 3)
-
-
4. A computer-implemented method for maintaining access of executing programs to stored block data, the method comprising:
-
receiving one or more indications of one or more data access requests initiated by a first program executing on a first computing system to access block data stored on a non-local block data storage volume, the block data storage volume provided by a distinct second data storage system that is at a common first geographical location with the first computing system and that is separated from the first computing system by one or more networks; automatically responding to the received indications of the data access requests by interacting with the second data storage system on behalf of the first executing program so as to initiate performance of the data access requests on the block data storage volume provided by the second data storage system, the performance of the data access requests causing one or more modifications to the block data stored on the block data storage volume; automatically maintaining a mirror copy of the block data storage volume on a third data storage system at the first geographical location, the third data storage system being distinct from the first computing system and second data storage system, the maintained mirror copy on the third data storage system lacking a subset of the block data stored on the second data storage system for the block data storage volume, the subset of the stored block data corresponding to one or more portions of the stored block data that have not been modified since a prior creation of a snapshot copy of the block data storage volume on one or more archival data storage systems at a second geographical location that is distinct from the first geographical location; and after determining to make access available to the mirror copy of the block data storage volume on the third data storage system, automatically restoring the mirror copy on the third data storage system to include the subset of the stored block data by retrieving the subset of the stored block data from the snapshot copy on the one or more archival data storage systems. - View Dependent Claims (5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A computer-readable medium whose contents enable one or more computing systems to maintain access of executing programs to stored block data, by performing a method comprising:
-
providing access of a first program executing on a first computing system to a block data storage volume provided by a second block data storage system, the provided access enabling the first program to initiate data access requests for block data stored on the block data storage volume; automatically responding to one or more received indications of one or more data access requests initiated by the first program for the block data storage volume, the responding including initiating performance of the data access requests on the block data storage volume on the second block data storage system and including initiating performance of at least some of the data access requests on a distinct mirror copy of the block data storage volume on a third block data storage system, the indications received after a copy of the block data that is stored on the block data storage volume at an earlier time is created on one or more other remote archival storage systems, the mirror copy of the block data storage volume on the third block data storage system not including at least some block data that is currently stored in the block data storage volume on the second block data storage system and not including at least some of the block data that is stored in the copy of the block data storage volume on the remote archival storage systems; and after the performance of the at least some data access requests on the mirror copy of the block data storage volume on the third block data storage system, updating the mirror copy on the third block data storage system to include the at least some block data that is currently stored in the block data storage volume on the second block data storage system, the updating including retrieving at least a portion of the at least some block data from the block data that is stored in the copy on the remote archival storage systems. - View Dependent Claims (14, 15, 16, 17, 18, 19)
-
-
20. A system configured to maintain access of executing programs to block data storage functionality, comprising:
-
one or more memories; and a block data storage system manager module configured to provide a block data storage service that uses multiple block data storage systems to store block data storage volumes that are created by users of the block data storage service and accessed over one or more networks on behalf of one or more executing programs associated with the users, the providing of the block data storage service including; creating one or more block data storage volumes for use by one or more executing programs, each of the block data storage volumes being stored on one of the multiple block data storage systems; after access to a first of the created block data storage volumes that is stored on a first of the block data storage systems is provided to a first of the one or more executing programs, responding to one or more data access requests by the first program for the first block data storage volume by initiating performance of the one or more data access requests on the first block data storage volume stored on the first block data storage system, at least one of the one or more data access requests modifying block data stored on the first block data storage volume on the first block data storage system; after the performance of the one or more data access requests on the first block data storage volume, creating on one or more other remote archival storage systems a copy of the block data stored on the first block data storage volume; and after the creating of the copy on the remote archival storage systems, responding to one or more other data access requests initiated by the first program for the first block data storage volume by initiating performance of the one or more other data access requests on the first block data storage volume stored on the first block data storage system, at least one of the one or more other data access requests further modifying the block data stored on the first block data storage volume on the first block data storage system; and automatically providing a mirror copy of the first block data storage volume on a second of the block data storage systems, the providing of the mirror copy including storing on the second block data storage system a first subset of the stored block data in the first block data storage volume and including storing on the one or more other remote archival storage systems a second subset of the stored block data in the first block data storage volume. - View Dependent Claims (21, 22, 23, 24, 25)
-
Specification