Thin provisioning row snapshot with reference count map
AssigneeChelsio Communications, Inc.
InventorsAtul Gupta, Umashankar Tumari Mahabalagiri, Vishnu Rangayyan
Life of this patent
Estimating the term…
Abstract
The storage of single or multiple references of the same data block in a storage pool is disclosed. Indexing of the data includes storing reference information in the storage pool as a mapping table. The mapping table indexes each data block in the storage pool. On any read or write request mapping information is used to retrieve the corresponding data block in storage pool.
Claims34
A method for scalable indexing of a storage pool formed from multiple storage units in which backup information is recorded, comprising:
- forming a virtual volume in which the combined storage capacity of the storage pool is represented by a set of chunks have a pre-selected data size with the chunks being assigned to be either storage chunks or reference chunks;
- storing in a set of reference chunks metadata information to index the storage chunks and track usage of storage chunks, wherein storage chunks are allocated on demand and are referable more than once to reduce redundant storage for identical content;
- adjusting the total number of chunks and a chunk allocation in response to a change in the size of the available physical storage to include a sufficient number of reference chunks to index all of the storage chunks;
- wherein the reference chunks are updatable to store indexing information for redirect on write snapshots of the virtual volume;
- and
- wherein the set of reference chunks stores:
- a reference count map maintained as a set of contiguous storage pool chunks, the reference count map referencing all the storage chunks in a virtual volume including usage information on storage chunks used more than once including a usage count of each storage chunk, the usage count tracking free and allocated storage chunks and the number of times a storage chunk is referenced;
- and
- a reference count of chunks referred to by any redirect on write snapshots of the virtual volume.
A method for scalable indexing of a storage pool formed from multiple storage units in which backup information is recorded, comprising:
- forming a virtual volume in which the combined storage capacity of the storage pool is represented by a set of chunks have a pre-selected data size with the chunks being assigned to be either storage chunks or reference chunks;
- storing in a set of reference chunks metadata information to index the storage chunks and track usage of storage chunks, wherein storage chunks are allocated on demand and are referable more than once to reduce redundant storage for identical content;
- and
- adjusting the total number of chunks and a chunk allocation in response to a change in the size of the available physical storage to include a sufficient number of reference chunks to index all of the storage chunks, wherein the set of reference chunks stores a reference count map referencing all of the storage pool chunks in the storage pool, the reference chunks including a usage count of each storage chunk, the usage count tracking free and allocated storage chunks and wherein the reference count map assigns a set of bits in each reference chunk as a bitset to store a usage count of each storage chunk associated with a particular reference chunk to indicate when an individual storage chunk is allocated and referred to by more than one volume or snapshot.
A method for scalable indexing of a storage pool formed from multiple storage units in which backup information is recorded, comprising:
- forming a virtual volume in which the combined storage capacity of the storage pool is represented by a set of chunks have a pre-selected data size with the chunks being assigned to be either storage chunks or reference chunks;
- storing in a set of reference chunks metadata information to index the storage chunks and track usage of storage chunks, wherein storage chunks are allocated on demand and are referable more than once to reduce redundant storage for identical content;
- and
- adjusting the total number of chunks and a chunk allocation in response to a change in the size of the available physical storage to include a sufficient number of reference chunks to index all of the storage chunks, wherein the set of reference chunks stores a reference count map referencing all of the storage pool chunks in the storage pool, the reference chunks including a usage count of each storage chunk, the usage count tracking free and allocated storage chunks and wherein each reference count chunk in the reference map indexes a set of storage chunks, the method further comprising:
- in response to allocation of a chunk, scanning a reference count map bitset in a first reference count chunk to identify the address of a freely available chunk in the storage pool;
- responsive to determining that the scanned reference count chunk does not have any free bitset available, sequentially scanning subsequent reference count chunks to identify the first freely available bitset and marking the bitset to identify a new chunk allocation.
A method for scalable indexing of a storage pool formed from multiple storage units in which backup information is recorded, comprising:
- forming a virtual volume in which the combined storage capacity of the storage pool is represented by a set of chunks have a pre-selected data size with the chunks being assigned to be either storage chunks or reference chunks;
- storing in a set of reference chunks metadata information to index the storage chunks and track usage of storage chunks, wherein storage chunks are allocated on demand and are referable more than once to reduce redundant storage for identical content;
- adjusting the total number of chunks and a chunk allocation in response to a change in the size of the available physical storage to include a sufficient number of reference chunks to index all of the storage chunks;
- and
- logging a reference count change in a logging string, comprising:
- an address of a reference count chunk;
- an offset of a storage pool chunk within a reference count chunk;
- a previous reference count;
- and
- a new reference count.
A method for scalable indexing of a storage pool formed from multiple storage units in which backup information is recorded, comprising:
- forming a virtual volume in which the combined storage capacity of the storage pool is represented by a set of chunks have a pre-selected data size with the chunks being assigned to be either storage chunks or reference chunks;
- storing in a set of reference chunks metadata information to index the storage chunks and track usage of storage chunks, wherein storage chunks are allocated on demand and are referable more than once to reduce redundant storage for identical content;
- and
- wherein the reference chunks having a sequential order and the reference chunks comprise a reference count map including:
- a reference count of chunks referred to by the virtual volume;
- a reference count of chunks referred to by clones of the virtual volume;
- and
- a reference count of chunks referred to by any redirect on write snapshots of the virtual volume.
A storage server to provide thin provisioning of storage, comprising:
- at least one interface for the storage server to access storage devices;
- at least one processor and a memory having computer program code which when executed on the processor is operative to perform scalable indexing of a storage pool formed from multiple storage units in which backup information is recorded, including:
- generating a virtual volume in which the combined storage capacity of the storage pool is represented by a set of chunks have a pre-selected data size with the chunks being assigned to be either storage chunks or reference chunks;
- storing in a set of reference chunks metadata information to index the storage chunks and track usage of storage chunks, wherein storage chunks are allocated on demand and are referable more than once to reduce redundant storage for identical content;
- and
- adjusting the total number of chunks and a chunk allocation in response to a change in the size of the available physical storage to include a sufficient number of reference chunks to index all of the storage chunks;
- wherein the set of reference chunks stores a reference count map referencing all of the storage pool chunks in the storage pool, the reference chunks including a usage count of each storage chunk, the usage count tracking free and allocated storage chunks;
- and
- wherein the reference count map assigns a set of bits in each reference chunk as a bitset to store a usage count of each storage chunk associated with a particular reference chunk to indicate when an individual storage chunk is allocated and referred to by more than one volume or snapshot.
A storage server to provide thin provisioning of storage, comprising:
- at least one interface for the storage server to access storage devices;
- at least one processor and a memory having computer program code which when executed on the processor is operative to perform scalable indexing of a storage pool formed from multiple storage units in which backup information is recorded, including:
- generating a virtual volume in which the combined storage capacity of the storage pool is represented by a set of chunks have a pre-selected data size with the chunks being assigned to be either storage chunks or reference chunks;
- storing in a set of reference chunks metadata information to index the storage chunks and track usage of storage chunks, wherein storage chunks are allocated on demand and are referable more than once to reduce redundant storage for identical content;
- and
- adjusting the total number of chunks and a chunk allocation in response to a change in the size of the available physical storage to include a sufficient number of reference chunks to index all of the storage chunks;
- wherein the set of reference chunks stores a reference count map referencing all of the storage pool chunks in the storage pool, the reference chunks including a usage count of each storage chunk, the usage count tracking free and allocated storage chunks and wherein each reference count chunk in the reference map indexes a set of storage chunks, the method further comprising:
- in response to allocation of a chunk, scanning a reference count map bitset in a first reference count chunk to identify the address of a freely available chunk in the storage pool;
- responsive to determining that the scanned reference count chunk does not have any free bitset available, sequentially scanning subsequent reference count chunks to identify the first freely available bitset and marking the bitset to identify a new chunk allocation.
A storage server to provide thin provisioning of storage, comprising:
- at least one interface for the storage server to access storage devices;
- at least one processor and a memory having computer program code which when executed on the processor is operative to perform scalable indexing of a storage pool formed from multiple storage units in which backup information is recorded, including:
- generating a virtual volume in which the combined storage capacity of the storage pool is represented by a set of chunks have a pre-selected data size with the chunks being assigned to be either storage chunks or reference chunks;
- storing in a set of reference chunks metadata information to index the storage chunks and track usage of storage chunks, wherein storage chunks are allocated on demand and are referable more than once to reduce redundant storage for identical content;
- adjusting the total number of chunks and a chunk allocation in response to a change in the size of the available physical storage to include a sufficient number of reference chunks to index all of the storage chunks;
- and
- logging a reference count change in a logging string, comprising:
- an address of a reference count chunk;
- an offset of a storage pool chunk within a reference count chunk;
- a previous reference count;
- and
- a new reference count.
A method for scalable indexing of a storage pool formed from multiple storage units in which backup information is recorded, comprising:
- forming a virtual volume in which the combined storage capacity of the storage pool is represented by a set of chunks have a pre-selected data size with the chunks being assigned to be either storage chunks or reference chunks;
- storing in a set of reference chunks metadata information to index the storage chunks and track usage of storage chunks, wherein storage chunks are allocated on demand and are referable more than once to reduce redundant storage for identical content;
- adjusting the total number of chunks and a chunk allocation in response to a change in the size of the available physical storage to include a sufficient number of reference chunks to index all of the storage chunks;
- wherein the set of reference chunks stores:
- a reference count map maintained as a set of contiguous storage pool chunks disposed at one end of the storage pool or on an external storage device, the reference count map referencing all the storage chunks in a virtual volume including usage information on storage chunks used more than once including a usage count of each storage chunk.
A method for scalable indexing of a storage pool formed from multiple storage units in which backup information is recorded, comprising:
- forming a virtual volume in which the combined storage capacity of the storage pool is represented by a set of chunks have a pre-selected data size with the chunks being assigned to be either storage chunks or reference chunks;
- storing in a set of reference chunks metadata information to index the storage chunks and track usage of storage chunks, wherein storage chunks are allocated on demand and are referable more than once to reduce redundant storage for identical content;
- adjusting the total number of chunks and a chunk allocation in response to a change in the size of the available physical storage to include a sufficient number of reference chunks to index all of the storage chunks;
- wherein the reference chunks having a sequential order and the reference chunks comprise a reference count map referencing all of the storage pool chunks in the storage pool, the reference chunks including a usage count of each storage chunk, the usage count tracking free and allocated storage chunks.
Dependencies are inferred from the claim text.