Efficient scavenging of data and metadata file system blocks
US-9430492-B1 · Aug 30, 2016 · US
US9940331B1 · US · B1
| Field | Value |
|---|---|
| Publication number | US-9940331-B1 |
| Application number | US-201414319660-A |
| Country | US |
| Kind code | B1 |
| Filing date | Jun 30, 2014 |
| Priority date | Jun 30, 2014 |
| Publication date | Apr 10, 2018 |
| Grant date | Apr 10, 2018 |
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.
Improved techniques involve a storage processor proactively scavenging provisioned free blocks in snap container files and punching holes in the scavenged provisioned free blocks. For example, the storage processor may locate provisioned free blocks by accessing container file system metadata. The storage processor may then punch holes, i.e., release ownership of the snap container file on the identified provisioned free blocks. The storage processor may also delete or otherwise invalidate pointers to those blocks in the snap container file's inode.
Opening claim text (preview).
What is claimed is: 1. A method of reclaiming storage space in a data storage system, the method comprising: storing, in a container file system realized in the data storage system, a primary container file for realizing the primary file system and a respective snap container file for realizing each of the set of snaps, the primary file system being an active and accessible version of a file system of the data storage system, each of the snaps being a respective snapshot of the primary file system at an instant of time; for each of the snap container files: identifying a set of provisioned free blocks of that snap container file, that snap container file having an ownership share of each of the identified set of provisioned free blocks; and for each of the identified set of provisioned free blocks of the snap container file, releasing the ownership share of that snap container file on that provisioned free block, wherein each of the snap container files includes a snap container file inode, the snap container file inode of each respective snap container file including pointers that point to each block of that snap container file; and wherein the method further comprises, for each of the snap container files, when releasing the ownership share of that snap container file on each of the set of provisioned free blocks, also removing the pointer of the snap container file inode that points to that provisioned free block, and wherein the method further comprises: receiving a request to perform a shrink operation on the primary file system; in response to the request, identifying a target address to which an end-of-file pointer of the primary container file is to be moved from a current address; identifying a set of provisioned free blocks of the primary container file, each of the set of provisioned free blocks of the primary container file having an address between the target address and the current address; and for each of the set of provisioned free blocks of the primary container file, releasing the ownership share of the primary container file on that provisioned free block. 2. A method as in claim 1 , wherein, for each of the snap container files, identifying the set of provisioned free blocks of that snap container file includes: verifying that the snap container file inode of that snap container file has pointers that point to the same blocks as corresponding pointers of a primary container file inode of the primary container file, the corresponding blocks of the primary container file having the same addresses as the blocks of that snap container file; and labeling the blocks of that snap container as the provisioned free blocks of that snap container file. 3. A method as in claim 2 , wherein releasing the ownership share of each of the snap container files on each of the set of provisioned free blocks of the snap container file includes: obtaining a reference count of that provisioned free block; and adjusting the reference count of that provisioned free block to reflect that the ownership share of that snap container file on that provisioned free block has been relinquished. 4. A method as in claim 2 , wherein the file system is thickly provisioned in that the file system is guaranteed a specified amount of storage from a storage pool; and wherein, upon releasing the ownership share of each of the set of snap container files on each of the set of provisioned free blocks of that snap container file includes increasing, the method further comprises increasing a reservation of storage space in the storage pool by the amount of storage contained in a provisioned free block. 5. A method as in claim 1 , further comprising creating a new snap of the primary file system, the new snap being realized in a new snap container file having a new snap container file inode; wherein identifying the set of provisioned free blocks of each of the set of snap container files includes locating, upon the creation of the new snap, each provisioned free block of the new snap container file; and wherein releasing the ownership share of each of the set of snap container files on each of the set of provisioned free blocks of that snap container file includes removing the pointer of the new snap container file inode that points to a provisioned free block of the new snap container file. 6. A method as in claim 5 , further comprising releasing the ownership share of the primary container file on blocks of the primary container file that have the same addresses as the provisioned free blocks of that snap container file after releasing the ownership share of each of the set of snap container files on each of the set of provisioned free blocks of that snap container file. 7. A method as in claim 1 , further comprising expressing the primary container file as a volume file on which SCSI commands processed by a storage processor of the data storage system are executed; and wherein, for each of the snap container files, releasing the ownership share of each of the set of provisioned free blocks of that snap container file includes executing, by the storage processor, a punch hole command, the punch hole command being a SCSI command for releasing an ownership share of a file on a block. 8. A method as in claim 1 , wherein each of the snap container files has metadata containing information indicating whether that snap container has had its ownership share of each of its identified set of provisioned free blocks released; and wherein the method further comprises, for each of the snap container files, writing, upon releasing the ownership share of that snap container file on each of the set of provisioned free blocks, information in the metadata of that snap container file indicating that that snap container file has had its ownership share of each of its identified set of provisioned free blocks released. 9. A data storage system comprising a storage processor including a controller, the controller including memory and controlling circuitry coupled to the memory, the controlling circuitry being constructed and arranged to: store, in a container file system realized in the data storage system, a primary container file for realizing the primary file system and a respective snap container file for realizing each of the set of snaps, the primary file system being an active and accessible version of a file system of the data storage system, each of the snaps being a respective snapshot of the primary file system at an instant of time; for each of the snap container files: identify a set of provisioned free blocks of that snap container file, that snap container file having an ownership share of each of the identified set of provisioned free blocks; and for each of the identified set of provisioned free blocks of the snap container file, release the ownership share of that snap container file on that provisioned free block, wherein each of the snap container files includes a snap container file inode, the snap container file inode of each respective snap container file including pointers that point to each block of that snap container file; and wherein the controlling circuitry is further constructed and arranged to, for each of the snap container files, when releasing the ownership share of that snap container file on each of the set of provisioned free blocks, also remove the pointer of the snap container file inode that points to that provisioned free block, and wherein the controlling circuitry is further constructed and arranged to: receive a request to perform a shrink operation on the primary file system; in response to the request, identify a target address to which an end-of-file pointer of the primary container file is to be moved fr
Physics · mapped topic
at area level, e.g. provisioning of virtual or logical volumes · CPC title
Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket · CPC title
Plurality of storage devices · CPC title
Saving storage space on storage systems · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.