Proactive scavenging of file system snaps

US9940331B1 · US · B1

Patent metadata
FieldValue
Publication numberUS-9940331-B1
Application numberUS-201414319660-A
CountryUS
Kind codeB1
Filing dateJun 30, 2014
Priority dateJun 30, 2014
Publication dateApr 10, 2018
Grant dateApr 10, 2018

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

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.

First claim

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

Assignees

Inventors

Classifications

  • 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

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9940331B1 cover?
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 …
Who is the assignee on this patent?
Emc Corp, Emc Ip Holding Co Llc
What technology area does this patent fall under?
Primary CPC classification G06F17/30088. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Apr 10 2018 00:00:00 GMT+0000 (Coordinated Universal Time) (B1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 5 related publications on this page (citations in our corpus or others sharing the same primary CPC).