Efficient file copy that avoids data duplication

US9916112B1 · US · B1

Patent metadata
FieldValue
Publication numberUS-9916112-B1
Application numberUS-201314041820-A
CountryUS
Kind codeB1
Filing dateSep 30, 2013
Priority dateSep 30, 2013
Publication dateMar 13, 2018
Grant dateMar 13, 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.

A copy technique involves generating, upon receiving a command to copy at least a portion of a source file, a set of pointers for a destination file that point to a set of pointers for the source file (“physical block pointers”), which in turn point to physical blocks storing data of the file in a storage system. In response to the copy command, a storage processor allocates an inode from an inode table of a file system for the destination file and stores a set of inode pointers in the inode of the destination file that point to the set of pointers for the source file. Thus, instead of creating a redundant copy of the data of the source file, the improved creates technique creates pointers that point to the data stored for the source file.

First claim

Opening claim text (preview).

What is claimed is: 1. A method of responding to a copy command in a data storage system, the method comprising: receiving a copy command to copy at least a portion of a source file in a file system to at least a portion of a destination file, the source file using a first set of physical block pointers that store at least one address that points to a set of physical blocks of a set of physical storage devices that store file data of the source file; and in response to receiving the copy command, performing a copy operation that avoids duplicating any of the file data stored in the set of physical blocks by (i) accessing an inode for the destination file, (ii) generating a second set of physical block pointers that store at least one address that points to the first set of physical block pointers, and (iii) storing a set of inode pointers in the inode of the destination file that point to the second set of physical block pointers, the copy operation establishing the copy without duplicating any of the data stored in the set of physical blocks and thereby conserving storage space, wherein the first set of physical block pointers are stored in physical blocks of the set of physical storage devices, and wherein generating the second set of physical block pointers includes: reading storage locations of the physical blocks where the first set of physical block pointers are stored, and writing the storage locations in the second set of physical block pointers such that the second set of physical block pointers point to the storage locations where the first set of physical block pointers are stored, wherein the first set of physical block pointers that point to physical blocks of the set of physical storage devices storing data of the source file include (i) a first subset of pointers that point to physical blocks storing data of the source file and (ii) a second subset of pointers that point to the first sub-set of pointers for pointing to physical blocks storing data of the source file, wherein reading the storage locations of the physical blocks where the first set of physical block pointers are stored includes accessing an inode provided for the source file to obtain a set of inode pointers that point to the first set of physical block pointers, and wherein, when writing the storage locations in the second set of physical block pointers, the method includes writing only the locations of the first subset of pointers of the first set of physical block pointers in the second set of physical block pointers. 2. A method as in claim 1 , further comprising: receiving a second command to perform a second copy operation on the source file to create a second destination file that is a copy of the source file; in response to receiving the second command, (i) accessing an inode for the second destination file, (ii) generating a third set of physical block pointers that point to the first set of physical block pointers, and (iii) storing a set of inode pointers in the inode of the second destination file that point to the third set of physical block pointers. 3. A method as in claim 1 , wherein the source file and the destination file are disposed within a single file system in the data storage system, such that the copy operation is between two files in the same file system. 4. A method as in claim 3 , wherein the inode of the source file and the inode of the destination file are disposed within a single inode table in the file system. 5. A method as in claim 1 , wherein generating the second set of physical block pointers includes providing the second set of physical block pointers in a set of indirect blocks, and wherein the set of inode pointers in the inode of the destination file points to the set of indirect blocks. 6. The method of claim 5 , wherein the inode of the source file points to the first set of physical block pointers by pointing to a first set of indirect blocks that contain the first set of physical block pointers, wherein the each of the first set of indirect blocks has a block size, wherein each of the set of physical blocks has a block size, and wherein the block size of each of the first set of indirect blocks equals the block size of each of the set of physical blocks. 7. A method of claim 6 , wherein the source file and the destination file are the same file. 8. An electronic apparatus, the electronic apparatus comprising: a set of processors; and memory coupled to the set of processors, the memory and the set of processors together forming controlling circuitry constructed and arranged to: receive a copy command to copy at least a portion of a source file to at least a portion of a destination file, the source file using a first set of physical block pointers that store at least one address that points to a set of physical blocks of a set of physical storage devices that store the data of the source file; and in response to receiving the copy command performing a copy operation that avoids duplicating any of the data stored in the set of physical blocks by (i) accessing an inode for the destination file, (ii) generating a second set of physical block pointers that store at least one address that points to the first set of physical block pointers, and (iii) storing a set of inode pointers in the inode of the destination file that point to the second set of physical block pointers, the copy operation establishing the copy without duplicating any of the data stored in the set of physical blocks and thereby conserving storage space, wherein the first set of physical block pointers are stored in physical blocks of the set of physical storage devices, and wherein the controlling circuitry constructed and arranged to generate the second set of physical block pointers is further constructed and arranged to: read storage locations of the physical blocks where the first set of physical block pointers are stored, and write the storage locations in the second set of physical block pointers such that the second set of physical block pointers point to the storage locations where the first set of physical block pointers are stored, wherein the first set of physical block pointers that point to physical blocks of the set of physical storage devices storing data of the source file include (i) a first subset of pointers that point to physical blocks storing data of the source file and (ii) a second subset of pointers that point to the first sub-set of pointers for pointing to physical blocks storing data of the source file; and wherein the controlling circuitry constructed and arranged to read the storage locations of the physical blocks where the first set of physical block pointers are stored is further constructed and arranged to: access an inode provided for the source file to obtain a set of inode pointers that point to the first set of physical block pointers, and wherein, when writing the storage locations in the second set of physical block pointers, the controlling circuitry is further constructed and arranged to: write only the locations of the first subset of pointers of the first set of physical block pointers in the second set of physical block pointers. 9. An apparatus as in claim 8 , wherein the controlling circuitry is further constructed and arranged to: receive a second command to perform a second copy operation on the source file to create a second destination file that is a copy of the source file; in response to receiving the second command, (i) accessing an inode for the second destination file, (ii) generate a third set of physical block pointers that point to the first set of physical block pointers, and (iii) store a set of inode pointers in the inode of the second destination file that poin

Assignees

Inventors

Classifications

  • Improving the reliability of storage systems · CPC title

  • G06F3/065Primary

    Replication mechanisms · CPC title

  • Plurality of storage devices · CPC title

  • Saving storage space on storage systems · CPC title

  • De-duplication techniques · 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 US9916112B1 cover?
A copy technique involves generating, upon receiving a command to copy at least a portion of a source file, a set of pointers for a destination file that point to a set of pointers for the source file (“physical block pointers”), which in turn point to physical blocks storing data of the file in a storage system. In response to the copy command, a storage processor allocates an inode from an in…
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/065. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Mar 13 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 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).