Consistent snapshot points in a distributed storage service
First Claim
1. A distributed storage service, comprising:
- a plurality of computing devices that implement;
a storage subsystem comprising a plurality of storage nodes configured to store data for a plurality of data systems;
an access subsystem comprising a plurality of access nodes, wherein two or more of the access nodes are assigned to a particular data system of the plurality of data systems and configured to;
receive data requests for the data system; and
issue write operations to the storage subsystem to update data of the data system as indicated by the data requests, wherein each write operation indicates a current snapshot epoch of the data system; and
a snapshot coordinator implemented by one or more of the plurality of computing devices and configured to;
obtain a snapshot request for the data system to generate a new snapshot; and
perform a two-phase commit with the two or more access nodes assigned to the data system to establish a consistent snapshot point for the data system;
wherein, to perform the two-phase commit, the snapshot coordinator is configured to;
send a prepare message to each of the two or more access nodes, wherein the prepare message directs the access nodes to prepare to perform a snapshot epoch transition for the data system, wherein the snapshot epoch transition comprises incrementing the snapshot epoch at each of the two or more access nodes to thus establish a consistent snapshot point for the data system; and
upon receiving a response message to the prepare message from each of the two or more access nodes, send a commit message to each of the two or more access nodes, wherein the commit message directs the access nodes to commit to the snapshot epoch transition so that subsequent write operations issued by the access nodes to the storage subsystem indicate a new snapshot epoch.
1 Assignment
0 Petitions
Accused Products
Abstract
Methods and apparatus for identifying consistent snapshot points for file systems in a distributed storage service in which a client may access a file system in backend storage via two or more access nodes. A snapshot coordinator initiates a two-phase commit to perform a snapshot epoch transition. The coordinator sends prepare messages to the nodes. In response, a node sends a response to the coordinator, stops issuing writes to the file system, sets a timer, and waits for a commit message. Upon receiving a response from all nodes, the coordinator sends a commit message. Upon receiving the commit or the timer expiring, the nodes increment an epoch counter and begin issuing writes to the file system tagged with the new epoch and indicating that a copy-on-write operation be performed. The transition is successful if all nodes respond to the request message; otherwise, the two-phase commit is retried.
48 Citations
20 Claims
-
1. A distributed storage service, comprising:
-
a plurality of computing devices that implement; a storage subsystem comprising a plurality of storage nodes configured to store data for a plurality of data systems; an access subsystem comprising a plurality of access nodes, wherein two or more of the access nodes are assigned to a particular data system of the plurality of data systems and configured to; receive data requests for the data system; and issue write operations to the storage subsystem to update data of the data system as indicated by the data requests, wherein each write operation indicates a current snapshot epoch of the data system; and a snapshot coordinator implemented by one or more of the plurality of computing devices and configured to; obtain a snapshot request for the data system to generate a new snapshot; and perform a two-phase commit with the two or more access nodes assigned to the data system to establish a consistent snapshot point for the data system; wherein, to perform the two-phase commit, the snapshot coordinator is configured to; send a prepare message to each of the two or more access nodes, wherein the prepare message directs the access nodes to prepare to perform a snapshot epoch transition for the data system, wherein the snapshot epoch transition comprises incrementing the snapshot epoch at each of the two or more access nodes to thus establish a consistent snapshot point for the data system; and upon receiving a response message to the prepare message from each of the two or more access nodes, send a commit message to each of the two or more access nodes, wherein the commit message directs the access nodes to commit to the snapshot epoch transition so that subsequent write operations issued by the access nodes to the storage subsystem indicate a new snapshot epoch. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method, comprising:
performing, by a snapshot coordinator for a distributed storage service implemented by one or more computer systems; providing a plurality of access nodes of the distributed storage service, wherein the access nodes are assigned to a data system stored by a storage subsystem of the distributed storage service, the access nodes configured to perform; receiving data requests for the data system; and issuing write operations to the storage subsystem to update data of the data system as indicated by the data requests, wherein each write operation indicates a current snapshot epoch of the data system; in response to a snapshot request to generate a snapshot of the data system, performing a two-phase commit with a plurality of access nodes of the distributed storage service to establish a consistent snapshot point for the data system, wherein performing the two-phase commit comprises; sending a prepare message to each of the plurality of access nodes, wherein the prepare message directs the access nodes to prepare to perform a snapshot epoch transition for the data system, wherein performing a snapshot epoch transition comprises incrementing a snapshot epoch at each of the plurality of access nodes to thus establish a consistent snapshot point for the data system; when a response message to the prepare message is received from each of the access nodes, sending a commit message to each of the plurality of access nodes, wherein the commit message directs the access nodes to commit to the snapshot epoch transition so that subsequent write operations issued by the access nodes to the storage subsystem indicate a new snapshot epoch; and when a response message to the prepare message is not received from each of the access nodes, sending a prepare message to each of the plurality of access nodes to retry the two-phase commit. - View Dependent Claims (9, 10, 11, 12, 13, 14, 15, 16, 17)
-
18. A non-transitory computer-readable storage medium storing program instructions that when executed on one or more computers cause the one or more computers to implement:
-
a plurality of access nodes in a distributed storage service configured to; receive data requests for a data system stored by a storage subsystem of the distributed storage service; and issue write operations to the storage subsystem to update data of the data system as indicated by the data requests, wherein each write operation indicates a current snapshot epoch of the data system; and a snapshot coordinator for the distributed storage service configured to, in response to a snapshot request to generate a snapshot of the data system, perform a two-phase commit with the access nodes to establish a consistent snapshot point for the data system, wherein, to perform the two-phase commit, the snapshot coordinator is configured to; send a prepare message to each of the access nodes, wherein the prepare message directs the access nodes to prepare to perform a snapshot epoch transition for the data system, wherein the snapshot epoch transition comprises incrementing the snapshot epoch at each of the access nodes to thus establish a consistent snapshot point for the data system; and upon receiving a response message to the prepare message from each of the access nodes, send a commit message to each of the access nodes, wherein the commit message directs the access nodes to commit to the snapshot epoch transition so that subsequent write operations issued by the access nodes to the storage subsystem indicate a new snapshot epoch. - View Dependent Claims (19, 20)
-
Specification