System and method for using persistent memory to accelerate write performance
US-2017199679-A1 · Jul 13, 2017 · US
US10922007B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-10922007-B2 |
| Application number | US-201916417433-A |
| Country | US |
| Kind code | B2 |
| Filing date | May 20, 2019 |
| Priority date | Jun 30, 2017 |
| Publication date | Feb 16, 2021 |
| Grant date | Feb 16, 2021 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
Techniques for providing high-performance writable snapshots in data storage systems are disclosed. The techniques include storing a set of snapshots containing changes to a data set over time in a set of allocation units containing a series of contiguous blocks. A set of metadata blocks in the allocation units is used to track a state of data stored in the series of contiguous blocks. Ownership of the allocation units by the snapshots is also tracked in a set of allocation unit mappings between the allocation units and a set of snapshot identifiers representing the snapshots. The allocation unit mappings and metadata blocks are then used to execute writes to the data set and free blocks in the snapshots.
Opening claim text (preview).
What is claimed is: 1. A non-transitory computer readable medium comprising instructions which, when executed by one or more hardware processors, causes performance of operations comprising: dividing available storage in a filesystem into one or more contiguous allocation unit (AU) chunks, wherein each of the AU chunks comprises: a set of contiguous fixed-size AUs, wherein each AU in the set of contiguous fixed-size AUs comprises a series of contiguous fixed-size blocks and one or more metadata blocks that track the state of individual blocks in the contiguous fixed-sized blocks; and a set of contiguous AU mappings that is adjacent to the set of contiguous fixed-size AUs, wherein each AU mapping in the set of contiguous AU mappings represents a different AU in the set of contiguous fixed-size AUs; storing, in a first AU mapping in the set of contiguous AU mappings, a first snapshot identifier for a snapshot of the filesystem to indicate allocation of a first AU represented by the first AU mapping to the snapshot; and allocating a first block in the first AU to the snapshot by storing, in a first entry representing the first block in the one or more metadata blocks in the first AU, a first reserved value representing a local allocation of the first block to the snapshot. 2. The medium of claim 1 , wherein the operations further comprise: identifying, in the one or more metadata blocks in the first AU, one or more entries storing a second reserved value representing a free block that is available for subsequent allocation; and selecting the first block in the first AU for allocation to the snapshot from one or more blocks in the first AU represented by the one or more entries. 3. The medium of claim 1 , wherein the operations further comprise: during a write to a second block by the snapshot, obtaining a second snapshot identifier from a second AU mapping for a second AU containing the second block; when the second snapshot identifier does not match the first snapshot identifier, copying the second block to a free block in the first AU; and applying the write to the free block. 4. The medium of claim 3 , wherein the operations further comprise: adding a block number of the second block to a third block in the first AU that stores block numbers of inherited blocks that have been deleted in the snapshot; and storing, in a second entry representing the third block in the one or more metadata blocks in the first AU, a second reserved value representing storing the block numbers of the inherited blocks that have been deleted in the snapshot. 5. The medium of claim 4 , wherein the operations further comprise: during deletion of an older snapshot that is a parent of the snapshot, identifying the third block storing the block numbers of the inherited blocks that have been deleted in the snapshot based on the second reserved value in the second entry representing the third block; identifying, based on the set of contiguous AU mappings, a subset of the block numbers owned by the older snapshot; and marking blocks represented by the subset of the block numbers as free. 6. The medium of claim 1 , wherein the operations further comprise: storing, in a second AU mapping in the set of contiguous AU mappings, a second reserved value indicating sharing of a second AU represented by the second AU mapping by multiple snapshots; and storing, in a second entry in the one or more metadata blocks in the second AU, a third reserved value representing use of a second block represented by the second entry in storing ownership of individual blocks in the first AU by multiple snapshots. 7. The medium of claim 6 , wherein the operations further comprise: identifying the second AU based on an offset of the second AU mapping in the set of contiguous AU mappings. 8. The medium of claim 6 , wherein the operations further comprise: during a write to a third block in the second AU by the snapshot, obtaining, from the second block, a second snapshot identifier for a second snapshot owning the second block; and comparing the second snapshot identifier to the first snapshot identifier for the snapshot. 9. The medium of claim 8 , wherein the operations further comprise: when the second snapshot identifier does not match the first snapshot identifier, copying the second block to a free block in the first or second AU; applying the write to the free block; and updating the second block to indicate ownership of the free block by the first snapshot. 10. The medium of claim 8 , wherein the operations further comprise: when the second snapshot identifier matches the first snapshot identifier, applying the write to the second block. 11. The medium of claim 1 , wherein allocating the first block in the first AU to the snapshot comprises: matching a block number of the first block to an offset of the first entry in the one or more metadata blocks. 12. The medium of claim 1 , wherein the operations further comprise: identifying, in the set of contiguous AU mappings, one or more AU mappings storing a second reserved value representing a free AU that is available for subsequent allocation; and selecting the first AU for allocation to the snapshot based on the one or more AU mappings. 13. The medium of claim 1 , wherein the set of snapshots comprises: a writable snapshot; and one or more read-only snapshots preceding the writable snapshot. 14. A method, comprising: dividing available storage in a filesystem into one or more contiguous allocation unit (AU) chunks, wherein each of the AU chunks comprises: a set of contiguous fixed-size AUs, wherein each AU in the set of contiguous fixed-size AUs comprises a series of contiguous fixed-size blocks and one or more metadata blocks that track the state of individual blocks in the contiguous fixed-sized blocks; and a set of contiguous AU mappings that is adjacent to the set of contiguous fixed-size AUs, wherein each AU mapping in the set of contiguous AU mappings represents a different AU in the set of contiguous fixed-size AUs; storing, in a first AU mapping in the set of contiguous AU mappings, a first snapshot identifier for a snapshot of the filesystem to indicate allocation of a first AU represented by the first AU mapping to the snapshot; and allocating a first block in the first AU to the snapshot by storing, in a first entry representing the first block in the one or more metadata blocks in the first AU, a first reserved value representing a local allocation of the first block to the snapshot. 15. The method of claim 14 , further comprising: identifying, in the one or more metadata blocks in the first AU, one or more entries storing a second reserved value representing a free block that is available for subsequent allocation; and selecting the first block in the first AU for allocation to the snapshot from one or more blocks in the first AU represented by the one or more entries. 16. The method of claim 14 , wherein the operations further comprise: during a write to a second block by the snapshot, obtaining a second snapshot identifier from a second AU mapping for a second AU containing the second block; when the second snapshot identifier does not match the first snapshot identifier, copying the second block to a free block in the first AU; and applying the write to the free block. 17. The method of claim 16 , further comprising: adding a block number of the second block to a third block in the first AU that stores block numbers of inherited blocks that have been deleted in the snapshot; and storing, in a secon
Replication mechanisms · CPC title
at device level, e.g. emulation of a storage device or system · CPC title
Plurality of storage devices · CPC title
in relation to data integrity, e.g. data losses, bit errors · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.