Maintaining consistency among copies of a logical storage volume in a distributed storage system
First Claim
1. A system comprising one or more processing devices and one or more memory devices operably coupled to the one or more processing devices, the one or more memory devices storing executable code effective to cause the one or more processing devices to:
- receive first write input/output operations (IOPs) from one or more compute nodes; and
for each first write input/output operation (IOP) from one of the one or more compute nodes, execute the each first write IOP with respect to a first copy of a first storage unit referenced by the each first write IOP by—
assigning a first virtual block address (VBA) to a logical block address (LBA) referenced in the each first write IOP according to a VBA counter;
incrementing the VBA counter;
storing an association between the LBA and the first VBA;
writing data from the each first write IOP to a first physical storage location;
storing an association between the first physical storage location and the first VBA; and
transmitting the each first write IOP to a second storage node of a plurality of storage nodes with the first VBA;
receive second write IOPs from the plurality of storage nodes;
for each second write IOP received from a first storage node of the plurality of storage nodes, execute the each second write IOP with respect to a second copy of a second storage unit referenced by the each second write IOP by—
comparing a second VBA included with the each second write IOP to a second VBA counter;
if the second VBA is not consistent with the second VBA counter, notifying the first storage node that the second copy is not current;
if the second VBA is consistent with the second VBA counter—
incrementing the second VBA counter;
storing an association between a second LBA in the each second write IOP and the second VBA;
writing data from the each second write IOP to a second physical storage location;
storing an association between the second physical storage location and the VBA; and
transmitting an acknowledgment to the first storage node.
2 Assignments
0 Petitions
Accused Products
Abstract
A system maintains a consistency database that maintains a status (current, down, stale) for copies of logical storage volumes stored on storage nodes. As failures are detected, the consistency database is updated. Copies are synchronized with one another using information in the consistency database. Write operations on a primary node for a slice of a logical storage node are assigned a virtual block address (VBA) that is mapped to a logical block address (LBA) within the slice. Consistency of the VBAs of the primary node and that of a secondary node is evaluated and used to detect currency. VBA holes are detected and corresponding write commands resent to maintain currency. Physical segments on the primary node are assigned virtual segment identifiers (VSID) that are maintained consistent with VSIDs on clone nodes so that they can be used for garbage collection and synchronization.
-
Citations
18 Claims
-
1. A system comprising one or more processing devices and one or more memory devices operably coupled to the one or more processing devices, the one or more memory devices storing executable code effective to cause the one or more processing devices to:
-
receive first write input/output operations (IOPs) from one or more compute nodes; and for each first write input/output operation (IOP) from one of the one or more compute nodes, execute the each first write IOP with respect to a first copy of a first storage unit referenced by the each first write IOP by— assigning a first virtual block address (VBA) to a logical block address (LBA) referenced in the each first write IOP according to a VBA counter; incrementing the VBA counter; storing an association between the LBA and the first VBA; writing data from the each first write IOP to a first physical storage location; storing an association between the first physical storage location and the first VBA; and transmitting the each first write IOP to a second storage node of a plurality of storage nodes with the first VBA; receive second write IOPs from the plurality of storage nodes; for each second write IOP received from a first storage node of the plurality of storage nodes, execute the each second write IOP with respect to a second copy of a second storage unit referenced by the each second write IOP by— comparing a second VBA included with the each second write IOP to a second VBA counter; if the second VBA is not consistent with the second VBA counter, notifying the first storage node that the second copy is not current; if the second VBA is consistent with the second VBA counter— incrementing the second VBA counter; storing an association between a second LBA in the each second write IOP and the second VBA; writing data from the each second write IOP to a second physical storage location; storing an association between the second physical storage location and the VBA; and transmitting an acknowledgment to the first storage node. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method comprising:
-
receiving, by a subject storage node comprising a processing device, first write input/output operations (IOPs) from one or more compute nodes; for each first write input/output operation (TOP) from one of the one or more compute nodes, executing, by the subject storage node, the each first write IOP with respect to a first copy of a first storage unit referenced by the each first write IOP by— assigning a first virtual block address (VBA) to a logical block address (LBA) referenced in the each first write IOP according to a VBA counter; incrementing the VBA counter; storing an association between the LBA and the first VBA; writing data from the each first write IOP to a first physical storage location; storing an association between the first physical storage location and the first VBA; transmitting the each first write IOP to a second storage node of a plurality of storage nodes with the first VBA; receiving, by the subject storage node, second write IOPs from the plurality of storage nodes; for each second write IOP received from a first storage node of the plurality of storage nodes, executing, by the subject storage node, the each second write IOP with respect to a second copy of a second storage unit referenced by the each second write IOP by— comparing a second VBA included with the each second write IOP to a second VBA counter; when the second VBA is not consistent with the second VBA counter, notifying the first storage node that the second copy is not current; when the second VBA is consistent with the second VBA counter— incrementing the second VBA counter; storing an association between a second LBA in the each second write TOP and the second VBA; writing data from the each second write TOP to a second physical storage location; storing an association between the second physical storage location and the VBA; and transmitting an acknowledgment to the first storage node. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18)
-
Specification