Efficient and reliable virtual volume mapping
Assignee3PARdata, Inc.
InventorsGeorge R. Cameron, Hueichian Huang
Life of this patent
Estimating the term…
Abstract
A snapshot tree structure includes a base volume storing a current user data, a first snapshot descending from the base volume, and a second snapshot descending from the first snapshot, wherein the second snapshot was created prior to the first snapshot. The first snapshot includes a first table corresponding to first portions of block addresses, a second table corresponding to second portions of the block addresses, and a third table to third portions of the block addresses. The first table includes an entry with a pointer to the second table. The second table includes an entry with a pointer to the third table. The third table includes an entry with a pointer to a data of the base volume before the data is modified in the base volume.
Claims7
A snapshot tree structure, comprising:
- a base volume storing a current user data;
- a first snapshot descending from the base volume, the first snapshot being created at a first time, the first snapshot comprising:
- a first table comprising a first plurality of entries corresponding to first portions of block addresses;
- a second table comprising a second plurality of entries corresponding to second portions of the block addresses;
- a third table comprising a third plurality of entries corresponding to third portions of the block addresses;
- wherein:
- one of the first plurality of entries contains a pointer to the second table;
- one of the second plurality of entries contains a pointer to the third table;
- one of the third plurality of entries contains a pointer to a data of the base volume at the first time before the data is modified in the base volume;
- a second snapshot descending from the first snapshot, the second snapshot being created at a second time earlier than the first time.
A method for creating a snapshot tree structure, comprising:
- creating a base volume;
- at a first time, creating a first snapshot descending from the base volume, said creating a first snapshot comprising:
- creating a first table comprising a first plurality of entries corresponding to first portions of block addresses;
- after said creating a first snapshot, receiving a write to a data block in the base volume at a block address;
- in response to said receiving a write, copying an original value of the data block to the first snapshot, comprising:
- creating a second table comprising a second plurality of entries corresponding to second portions of block addresses;
- writing one of the first plurality of entries corresponding to a first portion of the block address with a pointer leading to the second table;
- creating a third table comprising a third plurality of entries corresponding to third portions of block addresses;
- writing one of the second plurality of entries corresponding to a second portion of the block address with a pointer leading to the third table;
- writing the original value of the data block to a new data block;
- writing one of the third plurality of entries corresponding to a third portion of the block address with a pointer leading to the new data block;
- writing a new value in the data block in the base volume;
- at a second time after the first time, creating a second snapshot descending from the base volume, said creating a second snapshot comprising:
- creating another first table comprising the first plurality of entries corresponding to the first portions of block addresses;
- inserting the second snapshot between the base volume and the first snapshot, wherein the first snapshot now descends from the second snapshot.
Dependencies are inferred from the claim text.