CPC G06F 3/065 (2013.01) [G06F 3/0653 (2013.01); G06F 3/0655 (2013.01); G06F 3/0679 (2013.01); G06F 16/275 (2019.01)] | 20 Claims |
1. A computer-implemented method comprising:
establishing a synchronous replication configuration for a first stretched resource that has a first identity, wherein the first stretched resource is configured from a first resource on a first storage system and a second resource on a second storage system, wherein the first resource and the second resource are both configured to have a same identity, the first identity, wherein the first resource is exposed to a host over a first path between the first storage system and the host, wherein the second resource is exposed to the host over a second path between the second storage system and the host, wherein the host identifies the first path and the second path as two paths to a same stretched resource, the first stretched resource;
tracking, by the first storage system, a plurality of in-progress write requests in a map, wherein the map includes a corresponding entry for each of the plurality of in-progress write requests which has been committed by the first storage system and where the first storage system has not yet received an acknowledgement from the second storage system regarding commitment of said each in-progress write request;
determining a failure of the first storage system thereby failing or fracturing the established synchronous replication configuration for the first stretched resource;
responsive to said determining the failure of the first storage system, performing first processing including taking a snapshot B1 of the second resource of the second storage system;
and responsive to the first storage system recovering from the failure, performing second processing including:
taking a snapshot A1 of the first resource of the first storage system;
the second storage system retrieving the map from the first storage system;
for each in-progress write request of the map directed to the first stretched resource, the second storage system marking blocks specified by said each in-progress write request as modified on the second resource;
taking a snapshot B2 of the second resource of the second storage system;
computing a first snapshot difference between the snapshot B1 and the snapshot B2, wherein the first snapshot difference identifies a first list of blocks of the second resource marked as modified; and
storing content of modified blocks of the first list at corresponding blocks of the snapshot A1 of the first resource of the first storage system.
|