Optimizing thin provisioning in a data storage system through selective use of multiple grain sizes
US-2016188211-A1 · Jun 30, 2016 · US
US9805044B1 · US · B1
| Field | Value |
|---|---|
| Publication number | US-9805044-B1 |
| Application number | US-201514674389-A |
| Country | US |
| Kind code | B1 |
| Filing date | Mar 31, 2015 |
| Priority date | Mar 31, 2015 |
| Publication date | Oct 31, 2017 |
| Grant date | Oct 31, 2017 |
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.
A technique for managing block allocation in data storage systems involve providing multiple ranges of contiguous logical addresses (logical windows) in a logical address space of a file and allocating contiguous ranges of physical addresses (physical windows) in a file system to respective logical windows in response to requests to write data to logical addresses within the logical windows. When allocating blocks from one or more streams, each logical window to which writes are directed is mapped to a respective physical window, and each logical address in the logical window is mapped to a physical address in the physical window.
Opening claim text (preview).
What is claimed is: 1. A method of managing block allocation in data storage systems, the method comprising: providing multiple logical windows in a logical address space of a file stored in a file system, each logical window being a contiguous range of logical addresses, the logical address space of the file providing a monotonic range of logical offsets into the file from a perspective of a host application; receiving a first write request specifying data to be written to the file at a first logical address, the first logical address being within a first logical window in the logical address space of the file; in response to the first write request, allocating a first physical window to the first logical window for exclusive use by the first logical window, the first physical window being a first range of contiguous blocks in a physical address space of the file system; receiving a second write request specifying data to be written to the file at a second logical address, the second logical address being within a second logical window in the logical address space of the file; in response to the second write request, allocating a second physical window to the second logical window for exclusive use by the second logical window, the second physical window being a second range of contiguous blocks in the physical address space of the file system, wherein the file system includes a data subspace divided into windows of uniform size, each window including a predetermined number of blocks, wherein each window has a window number that indicates an ordinal position of the window within the physical address space of the file system, and wherein the file system includes an indirect block, the indirect block having multiple block pointers, wherein the first logical window is formed from a first contiguous range of block pointers in the indirect block, and wherein the second logical window is formed from a second contiguous range of block pointers in the indirect block. 2. A method as in claim 1 , further comprising: receiving another write request containing (i) first data directed to a set of logical addresses of the file in the first logical window and (ii) second data directed to a set of logical addresses of the file outside of the first logical window; and in response to receiving the other write request: storing the first data in blocks within the first physical window; and storing the second data in blocks outside of the first window. 3. A method as in claim 2 , wherein the first logical window and the first physical window each have a beginning address, and wherein storing the first data includes, for each logical address to which the first data are addressed within the first logical window: computing an offset of that logical address relative to the beginning of the first logical window; and allocating a block in the first physical window at the same offset relative to the beginning of the first physical window. 4. A method as in claim 2 , wherein, when allocating the first physical window, a number of blocks allocated in the first physical window equals a number of logical addresses in the first logical window; and wherein, when allocating the second physical window, a number of blocks allocated in the second physical window equals a number of logical addresses in the second logical window. 5. A method as in claim 4 , wherein the number of logical addresses contained in each of the multiple logical windows is adjustable, and wherein the method further comprises: receiving a command to set the number of logical addresses contained in each of the multiple logical windows to a specified window size; and in response to receiving the command, establishing the number of logical addresses contained in each of the multiple logical windows to be the specified window size. 6. A method as in claim 5 , wherein content of the file system is stored within a set of RAID (Redundant Array of Independent Disks) groups, the set of RAID groups having a full-stripe size, and wherein the window size is set to be an integer multiple of the full-stripe size. 7. A method as in claim 2 , further comprising: receiving a command to coalesce physical windows; in response to the receiving the command, (i) identifying a set of sparsely-allocated physical windows having no more than a threshold number of allocated blocks (ii) transferring data stored in the allocated blocks of the set of sparsely-allocated physical windows to other locations in the file system, and (iii) deallocating each of the set of sparsely-allocated physical windows. 8. A method as in claim 2 , wherein, in response to (i) a request to allocate a block in a logical window to which no physical window has yet been allocated and (ii) physical windows allocated for exclusive use occupying all available physical address space of the file system for storing file data, the method further comprises: suspending the use of windows to allocate blocks; and allocating a free block at a physical address in the file system within a physical window that has was previously reserved for exclusive use. 9. A method as in claim 1 , wherein the file system maps each of the multiple logical windows to a respective physical window, and wherein the method further comprises, in response to the first write request: checking an allocation bitmap to identify a free window of contiguous physical addresses; and allocating a block within the free window for receiving the data to be written to the file at the first logical address, wherein allocating the block within the free window effects a reservation of all blocks within the free window for logical addresses within the first logical window. 10. A data storage system configured to manage block allocation, the data storage system comprising: a storage device; and a storage processor including memory and controlling circuitry, the controlling circuitry being constructed and arranged to: provide multiple logical windows in a logical address space of a file stored in a file system, each logical window being a contiguous range of logical addresses, the logical address space of the file providing a monotonic range of logical offsets into the file from a perspective of a host application; receive a first write request specifying data to be written to the file at a first logical address, the first logical address being within a first logical window in the logical address space of the file; in response to the first write request, allocate a first physical window to the first logical window for exclusive use by the first logical window, the first physical window being a first range of contiguous blocks in a physical address space of the file system; receive a second write request specifying data to be written to the file at a second logical address, the second logical address being within a second logical window in the logical address space of the file; in response to the second write request, allocate a second physical window to the second logical window for exclusive use by the second logical window, the second physical window being a second range of contiguous blocks in the physical address space of the file system, wherein the file system includes a data subspace divided into windows of uniform size, each window including a predetermined number of blocks, wherein each window has a window number that indicates an ordinal position of the window within the physical address space of the file system, and wherein the file system includes an indirect block, the indirect block having multiple block pointers, wherein the first logical window is formed from a first contiguous range of block pointers in the indirect block, and wher
in relation to throughput · CPC title
Management of blocks · CPC title
Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS] · CPC title
Details of free space management performed by the file system (saving storage space on storage systems G06F3/0608; management of blocks in storage devices G06F3/064) · CPC title
Physics · mapped topic
Related publications grouped by family.
Answers are generated from the same data shown on this page.