US 11,893,260 B2
Snapshot-based remote replication
Bhaskar Bora, Shrewsbury, MA (US); Mark J. Halstead, Holliston, MA (US); Deepak Vokaliga, Hopkinton, MA (US); Benjamin Yoder, Chandler, AZ (US); and William R. Stronge, Westford, MA (US)
Assigned to EMC IP Holding Company LLC, Hopkinton, MA (US)
Filed by EMC IP Holding Company LLC, Hopkinton, MA (US)
Filed on Apr. 22, 2021, as Appl. No. 17/238,103.
Prior Publication US 2022/0342551 A1, Oct. 27, 2022
Int. Cl. G06F 3/06 (2006.01); G06F 11/14 (2006.01)
CPC G06F 3/065 (2013.01) [G06F 3/067 (2013.01); G06F 3/0619 (2013.01); G06F 3/0659 (2013.01); G06F 3/0683 (2013.01); G06F 11/1435 (2013.01); G06F 2201/84 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A method of replicating data from a first storage system to a second storage system, comprising:
receiving, at the first storage system from a host, a write request that writes first content on a first logical storage unit;
responsive to the first storage system receiving the write request from the host, the first storage system partitioning the write request into multiple dependent writes, wherein each of the multiple dependent writes is dependent on all other ones of the multiple dependent writes such that the multiple dependent writes are all included in a same snapshot of the first logical storage unit;
taking, at a first point in time, a first snapshot of the first logical storage unit on the first storage system, the first logical storage unit including a plurality of logical storage elements;
prior to taking the first snapshot of the first logical storage unit at the first point in time, performing a first of the multiple dependent writes to the first logical storage unit;
determining that one or more dependent writes of the multiple dependent writes are not performed on the first logical storage unit prior to said taking the first snapshot of the first logical storage unit at the first point in time;
reconciling the one or more dependent writes of the first snapshot prior to determining a first difference set of differences between the first snapshot of the first logical storage unit and a second snapshot of the first logical storage unit, wherein the second snapshot of the first logical storage unit is a most recent previous snapshot of the first logical storage unit taken at a point in time prior to the first point in time, wherein said reconciling includes:
delaying said determining the first difference set until the one or more dependent writes are performed on the first logical storage unit and until the first snapshot is updated to include the one or more dependent writes;
subsequent to completing said reconciling, performing said determining the first difference set of differences between the first snapshot of the first logical storage unit and the second snapshot of the first logical storage unit, wherein said determining the first difference set further includes:
for at least a first logical storage element of the first logical storage unit, determining if first snapshot metadata of the first snapshot references first data that also is referenced for the at least first logical storage element by second snapshot metadata of the second snapshot denoting the most recent previous snapshot of the first logical storage unit;
sending from the first storage system to the second storage system a replication instruction, wherein, if the first data is not also referenced by the second snapshot metadata, the replication instruction specifies the first logical storage element and the first data; and
applying the replication instruction on the second storage system.