Window-based resource allocation in data storage systems

US9805044B1 · US · B1

Patent metadata
FieldValue
Publication numberUS-9805044-B1
Application numberUS-201514674389-A
CountryUS
Kind codeB1
Filing dateMar 31, 2015
Priority dateMar 31, 2015
Publication dateOct 31, 2017
Grant dateOct 31, 2017

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.

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.

First claim

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

Assignees

Inventors

Classifications

  • 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

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 US9805044B1 cover?
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. Wh…
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 G06F16/1727. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Oct 31 2017 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 2 related publications on this page (citations in our corpus or others sharing the same primary CPC).