Efficient io processing in a storage system with instant snapshot, xcopy, and unmap capabilities
Abstract
A method for a storage system to process input and output operations. The method includes receiving writes over time to an address at a base virtual volume, storing each of the writes in a physical storage at a new location that is without existing data, tagging each stored write with a different generation number to distinguish between different versions of data written to the address at the base virtual volume, receiving a read of the address at the base virtual volume, and, in response to the read of the address at the base virtual volume, returning one of the stored writes that is tagged with a newer generation number than a remainder of the stored writes.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1 . A method for a storage system to process input and output operations, comprising:
receiving writes over time to an address at a base virtual volume; storing each of the writes in a physical storage at a new location that is without existing data; tagging each stored write with a different generation number to distinguish between different versions of data written to the address at the base virtual volume; receiving a read of the address at the base virtual volume; and in response to the read of the address at the virtual volume, returning one of the stored writes that is tagged with a newer generation number than a remainder of the stored writes.
2 . The method of claim 1 , further comprising reclaiming space in the storage by deleting the remainder of the stored writes.
3 . The method of claim 1 , further comprising:
capturing a snapshot virtual volume of the base virtual volume by creating a static view that a creation generation number of the static view; attaching the read-only view to the base virtual volume; receiving a read of the address at the snapshot; and in response to the read of the address at the snapshot virtual volume, returning one of the stored writes having a most recent generation number that is older than or equal to the creation generation number of the static view.
4 . The method of claim 3 , further comprising reclaiming space in the storage by, for a range between a creation generation number of the base virtual volume and the creation generation number of the static view, deleting all but the stored write having the most recent generation number in the range.
5 . The method of claim 1 , further comprising:
capturing a first snapshot virtual volume of the base virtual volume by creating a first static view that identifies a first creation generation number of the first static view; capturing a second snapshot virtual volume of the base virtual volume by creating a second static view that identifies a second creation generation number of the second static view; and reclaiming space in the storage by:
for a first range between a creation generation number of the base virtual volume and the first creation generation number of the first static view, deleting all but the stored write having a most recent generation number in the first range; and
for a second range between the first creation generation number of the first static view and the second creation generation number of the second static view, deleting all but the stored write having a most recent generation number in the second range.
6 . The method of claim 1 , further comprising performing a copy command by:
receiving a command to copy data from an address range at a first virtual volume to a second virtual volume; creating a range view that identifies the address range, a creation generation number of the first virtual volume, and a creation generation number of the range view; attaching the range view to the first virtual volume; creating a first query range that identifies (1) the first virtual volume and (2) a first range between the creation generation number of the first virtual volume and the creation generation number of the range view; and attaching the first query range to the second virtual volume; creating a second query range that identifies (1) the second virtual volume and (2) a second range between the creation generation number of the range view and a current generation number; and attaching the second query range to the second virtual volume;
7 . The method of claim 6 , further comprising:
receiving a read of an address in the address range at the second virtual volume; in response to receiving the read, using the second query range to search the second virtual volume for a stored write to the address and having a generation number in the second range; when the searching the second virtual volume using the second query range fails, using the first query range to search the first virtual volume for a stored write to the address and having a generation number in the first range; and when using the second query range to search the second virtual volume or using the first query range to search the first virtual volume succeeds, returning the corresponding stored write.
8 . The method of claim 7 , further comprising reclaiming space in the storage by, for a range between the creation generation number of the first virtual volume the creation generation number of the range view, deleting all but the stored write having the most recent generation number in the range.
9 . The method of claim 1 , further comprising performing an unmap command by:
receiving a command to unmap data from an address range at the base virtual volume; creating a first query range that identifies the address range, a creation generation number of the base virtual volume, and a creation generation number of the first query range; attaching the first query range to the base virtual volume; creating a second query range that identifies (1) the base virtual volume, (2) a range between the creation generation number of the first query range and a current generation number, and (3) a zero view for returning zero data; and attaching the second query range to the virtual volume;
10 . The method of claim 9 , further comprising:
receiving a read of an address in the address range at the base virtual volume; in response to receiving the read, using the first query range to search the base virtual volume for a stored write to the address and having a generation number in the range; when using the first query range to search the base virtual volume succeeds, returning the corresponding stored write; and when using the first query range to search the base virtual volume fails, using the second query range to return the zero data.
11 . The method of claim 10 , further comprising reclaiming space in the storage by, for a range between the creation generation number of the base virtual volume and the creation generation number of first query range, deleting all the stored writes in the range.
12 . The method of claim 1 , wherein said tagging each stored write comprises creating a key-value pair comprising a key and a value, the key identifying the base virtual volume, the address, and a generation number when corresponding write data was received, the value identifying the location without existing data in the storage.
13 . The method of claim 12 , wherein said returning one of the stored writes comprises:
determining key-value pairs having keys identifying the base virtual volume and the address; from the key-value pairs, determining a key-value pair having a key identifying the newer generation number; determining a key location identified by a value of the key-value pair; and reading and returning data from the location in the storage.
14 . The method of claim 1 , wherein the storage comprises a logic unit number having a RAID 5 or 6 configuration.Join the waitlist — get patent alerts
Track US2021224161A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.