Techniques for mitigating effects of small unaligned writes

US9922039B1 · US · B1

Patent metadata
FieldValue
Publication numberUS-9922039-B1
Application numberUS-201615086758-A
CountryUS
Kind codeB1
Filing dateMar 31, 2016
Priority dateMar 31, 2016
Publication dateMar 20, 2018
Grant dateMar 20, 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.

Embodiments are directed to techniques for allowing write operations to proceed on units smaller than a block. Merely decreasing the block size is not desirable, however, since many files are written in large chunks at once, and larger block sizes can increase speed and decrease the amount of overhead metadata required. Therefore, in order to maintain large block sizes while still obtaining the benefit of being able to make small writes when necessary, blocks may be divided into sub-blocks. Unaligned writes that do not fill up an entire block may be segregated and stored separately from aligned writes, the unaligned writes having finer granularity. These techniques may result in faster operation for unaligned writes. They also especially benefit systems using compression because they allow efficiently partially overwriting compressed blocks.

First claim

Opening claim text (preview).

What is claimed is: 1. A method performed by a computing device, the method comprising: receiving, by the computing device, a set of block write commands, each block write command directing the computing device to write to a set of addresses of a logical volume (LV) stored on a container filesystem (CFS) of persistent storage of the computing device; for a first subset of the set of block write commands, determining that the block write commands of the first subset each direct the computing device to write to at least a threshold number of logical sub-blocks of a respective logical block of the LV, each logical block being divided into a predefined number of equal-sized logical sub-blocks, each logical sub-block having a contiguous logical address range within the LV; for a second subset of the set of block write commands, determining that the block write commands of the second subset each direct the computing device to write to fewer than the threshold number of logical sub-blocks of a respective logical block; for each block write command of the first subset: inserting a block pointer in a set of metadata of a first file of the CFS, the first file representing the LV, the set of metadata of the first file having offsets that represent logical blocks of the LV; and writing data of that block write command of the first subset to a block in a first region of the CFS pointed to by the inserted block pointer; and for each block write command of the second subset: inserting a set of sub-block pointers in a set of metadata of a second file of the CFS, the second file also representing the LV, the set of metadata of the second file having offsets that represent logical sub-blocks of the LV; and writing data of that block write command of the second subset to a set of sub-blocks in a second region of the CFS pointed to by the inserted set of sub-block pointers, the second region being separate from the first region; wherein the first file and the second file both represent the LV such that any logical byte address within the LV may be represented within an offset of both the first file and the second file. 2. The method of claim 1 wherein: writing data of that block write command to the block pointed to by the inserted block pointer for each block write command of the first subset includes compressing the data of that block write command prior to writing to the block pointed to by the inserted block pointer; and writing data of that block write command to the set of sub-blocks pointed to by the inserted set of sub-block pointers for each block write command of the second subset includes writing uncompressed data to the set of sub-blocks pointed to by the inserted set of sub-block pointers. 3. The method of claim 2 wherein the method further comprises: subsequently, receiving a new block write command directing the computing device to write to at least the threshold number of logical sub-blocks of a logical block previously-written-to by a block write command of the second subset; and in response to receiving the new block write command: inserting a new block pointer in the set of metadata of the first file, the new block pointer corresponding to the logical block previously-written-to; writing compressed data of the new block write command to a block in a first region of the CFS pointed to by the inserted new block pointer; and removing, from the set of metadata of the second file, the set of sub-block pointers for the logical block previously-written-to. 4. The method of claim 1 wherein the method further comprises: subsequently, receiving a new block write command directing the computing device to write to fewer than the threshold number of logical sub-blocks of a logical block previously-written-to by a block write command of the first subset; and in response to receiving the new block write command: inserting a new set of sub-block pointers in the set of metadata of the second file, the new set of sub-block pointers corresponding to the fewer than the threshold number of logical sub-blocks of the logical block previously-written-to; and writing data of the new block write command to a new set of sub-blocks in the second region pointed to by the inserted new set of sub-block pointers. 5. The method of claim 4 wherein: inserting the block pointer in the set of metadata of the first file for each block write command of the first subset includes, marking, in the set of metadata of the first file, a shadow flag associated with the block pointer inserted for that block write command to indicate that there is no shadow data; and the method further comprises: in response to receiving the new block write command, changing, in the set of metadata of the first file, the shadow flag associated with the block pointer inserted for the logical block previously-written-to, to indicate that there is now shadow data for that logical block; subsequently, receiving a block read command directing the computing device to read the logical block previously-written-to; and in response to receiving the block read command: reading the block in the first region of the CFS pointed to by the block pointer inserted for the logical block previously-written-to; reading the shadow flag associated with the block pointer inserted for the logical block previously-written-to, indicating that there is shadow data for that logical block; in response to reading the shadow flag indicating that there is shadow data for that logical block, reading sub-blocks pointed to by the inserted new set of sub-block pointers in the set of metadata of the second file; and overlaying the read sub-blocks over the block read from the first region. 6. The method of claim 4 wherein the method further comprises: subsequently, receiving a block read command directing the computing device to read the logical block previously-written-to; and in response to receiving the block read command: reading the block in the first region of the CFS pointed to by the block pointer inserted for the logical block previously-written-to; reading sub-blocks pointed to by the inserted new set of sub-block pointers in the set of metadata of the second file; and overlaying the read sub-blocks over the block read from the first region. 7. The method of claim 1 wherein the method further comprises: subsequently, receiving a new block write command directing the computing device to write to at least the threshold number of logical sub-blocks of a logical block previously-written-to by a block write command of the second subset; and in response to receiving the new block write command: inserting a new block pointer in the set of metadata of the first file, the new block pointer corresponding to the logical block previously-written-to; writing data of the new block write command to a block in a first region of the CFS pointed to by the inserted new block pointer; and removing, from the set of metadata of the second file, the set of sub-block pointers for the logical block previously-written-to. 8. The method of claim 1 wherein the method further comprises: subsequently, receiving a new block write command directing the computing device to write to at least the threshold number of logical sub-blocks of a logical block previously-written-to by a block write command of the first subset; and in response to receiving the new block write command, writing data of the new block write command to a block in the first region of the CFS pointed to by a block pointer corresponding to the logical block previously-written-to. 9. The method of claim 1 wherein the method further comprises: subsequently, receiving a new block write command directing the computing device t

Assignees

Inventors

Classifications

  • G06F3/0611Primary

    in relation to response time · CPC title

  • Management of files · CPC title

  • Command handling arrangements, e.g. command buffers, queues, command scheduling · CPC title

  • Physics · mapped topic

  • 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 US9922039B1 cover?
Embodiments are directed to techniques for allowing write operations to proceed on units smaller than a block. Merely decreasing the block size is not desirable, however, since many files are written in large chunks at once, and larger block sizes can increase speed and decrease the amount of overhead metadata required. Therefore, in order to maintain large block sizes while still obtaining 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 G06F3/0611. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Mar 20 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 7 related publications on this page (citations in our corpus or others sharing the same primary CPC).