Reclaiming space from file system hosting many primary storage objects and their snapshots
US-9400741-B1 · Jul 26, 2016 · US
US9965201B1 · US · B1
| Field | Value |
|---|---|
| Publication number | US-9965201-B1 |
| Application number | US-201514674566-A |
| Country | US |
| Kind code | B1 |
| Filing date | Mar 31, 2015 |
| Priority date | Mar 31, 2015 |
| Publication date | May 8, 2018 |
| Grant date | May 8, 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.
An improved technique for managing data storage includes relocating allocated blocks within a range of a physical address space of a file system to free the allocated blocks. The range has a length equal to a length of one or more full stripes of a RAID group that stores content of the file system. In response to receiving data to be written to the file system, the file system arranges the data in the range of contiguous blocks and performs one or more full-stripe writes to write the data to the RAID group.
Opening claim text (preview).
What is claimed is: 1. A method of managing data storage in a data storage system, the method comprising: performing a block relocation operation on a range of contiguous blocks in a physical address space of a file system to free a set of allocated blocks within the range of contiguous blocks, the range of contiguous blocks having a length equal to that of a set of full stripes of a RAID (Redundant Array of Independent Disks) group that stores content of the file system; in response to the data storage system receiving a set of data to be written to the file system, arranging the set of data in the range of contiguous blocks; and performing a set of full-stripe writes to write the set of data arranged in the range of contiguous blocks to the RAID group, wherein the range of contiguous blocks is one of multiple ranges of contiguous blocks logically represented in the physical address space of the file system, and wherein the method further comprises tracking free ranges in the file system, each free range being a respective one of the ranges of contiguous blocks, for which no blocks are allocated, wherein the range of contiguous blocks is one of multiple ranges of contiguous blocks in the physical address space of the file system, and wherein the method further comprises: generating, for each of the multiple ranges of contiguous blocks, a contiguousness score that indicates a degree to which blocks within the respective range of contiguous blocks store contiguous file data; ranking the multiple ranges of contiguous blocks based at least in part on the contiguousness score; and selecting a highest-ranking range of contiguous blocks for block relocation to free all allocated blocks in the selected range. 2. The method of claim 1 , wherein generating the contiguousness score for a particular range of contiguous blocks includes: scanning per-block metadata of allocated blocks in the particular range; detecting, by scanning the per-block metadata, that the allocated blocks in the particular range have been allocated to a common file; and establishing a value of the contiguousness score based on an extent to which the per-block metadata indicate that the allocated blocks in the particular range have contiguous logical offsets within the common file. 3. The method of claim 1 , wherein the multiple ranges of contiguous blocks are all equal in length, and wherein tracking the free ranges includes maintaining a bitmap, the bitmap indicating, for each block in the multiple ranges of contiguous blocks, whether the block is allocated or free. 4. The method of claim 3 , wherein the block relocation operation is initiated in response to detecting that a number of free ranges in the file system has fallen below a predetermined limit. 5. The method of claim 3 , further comprising performing another block relocation operation on another of the ranges of contiguous blocks, to free a set of allocated blocks within the other range of contiguous blocks, in response to a number of allocated blocks in the other range of contiguous blocks being below a predetermined limit. 6. The method of claim 3 , further comprising performing another block relocation operation on another of the ranges of contiguous blocks, to free a set of allocated blocks within the other range of contiguous blocks, in response to no blocks in the other range of contiguous blocks having been allocated within a predetermined period of time. 7. The method of claim 3 , further comprising: storing, for each block within the ranges of contiguous blocks, metadata that identifies (i) a file in the file system to which the block was allocated and (ii) a logical offset into the file at which the block was allocated, and performing another block relocation operation on another of the ranges of contiguous blocks, to free a set of allocated blocks within the other range of contiguous blocks, in response to the other range of contiguous blocks not corresponding to a range of contiguous logical offsets into any file, as indicated by the metadata for the blocks in the other range of contiguous blocks. 8. The method of claim 3 , further comprising: ranking the ranges of contiguous blocks according to a set of factors to produce a ranked list of ranges of contiguous blocks, the set of factors including a number of allocated blocks within each of the ranges of contiguous blocks; and performing a block relocation operation on a higher ranking range of contiguous blocks before performing a block relocation operation on a lower ranking range of contiguous blocks. 9. The method of claim 3 , further comprising: performing a block relocation operation on a second range of contiguous blocks in the physical address space of the file system to free a set of allocated blocks within the second range of contiguous blocks, the second range of contiguous blocks having a length equal to that of the set of full stripes of the RAID group; in response to the data storage system receiving data to be written to contiguous logical offsets into a file of the file system, arranging the data in the range of contiguous blocks in order of logical offset; and performing a set of full-stripe writes to write the data arranged in the range of contiguous blocks to the RAID group. 10. A data storage system, comprising control circuitry that includes a set of processing units coupled to memory, the control circuitry constructed and arranged to: perform a block relocation operation on a range of contiguous blocks in a physical address space of a file system to free a set of allocated blocks within the range of contiguous blocks, the range of contiguous blocks having a length equal to that of a set of full stripes of a RAID (Redundant Array of Independent Disks) group that stores content of the file system; in response to the data storage system receiving a set of data to be written to the file system, arrange the set of data in the range of contiguous blocks; and perform a set of full-stripe writes to write the set of data arranged in the range of contiguous blocks to the RAID group, wherein the range of contiguous blocks is one of multiple ranges of contiguous blocks in the physical address space of the file system, and wherein the control circuitry is further constructed and arranged to: generate, for each of the multiple ranges of contiguous blocks, a contiguousness score that indicates a degree to which blocks within the respective range of contiguous blocks store contiguous file data; rank the multiple ranges of contiguous blocks based at least in part on the contiguousness score; and select a highest-ranking range of contiguous blocks for block relocation to free all allocated blocks in the selected range. 11. The data storage system of claim 10 , wherein the range of contiguous blocks is one of multiple ranges of contiguous blocks logically represented in the physical address space of the file system, wherein the multiple ranges of contiguous blocks are all equal in length, and wherein the control circuitry is further constructed and arranged to initiate the block relocation operation in response to detecting that a number of free ranges in the file system has fallen below a predetermined limit, each free range being a respective one of multiple the ranges of contiguous blocks, for which no blocks are allocated. 12. The data storage system of claim 11 , wherein the control circuitry is further constructed and arranged to: store, for each block within the ranges of contiguous blocks, metadata that identifies (i) a file in the file system to which the block was allocated and (ii) a logical offset into the file at which the block was allocated;
Management of blocks · CPC title
Disk arrays, e.g. RAID, JBOD · CPC title
at area level, e.g. provisioning of virtual or logical volumes · CPC title
in relation to data integrity, e.g. data losses, bit errors · CPC title
Improving I/O performance · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.