IP Library Granted Patent US 7,603,532
Granted Patent B2
US 7,603,532 · App. 10/966,605 · Granted Oct 13, 2009

System and method for reclaiming unused space from a thinly provisioned data container

Assignee: NetApp, Inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,603,532
App. No.
10/966,605
Granted
Oct 13, 2009
Kind
B2
Abstract

A system and method for reclaiming unused space from a thinly provisioned data container served by a storage system. A host-side agent detects blocks of the data container that may be freed and sends a novel Punch Hole command to the storage system associated with the data container. The storage system allocates the appropriate blocks in response to the Punch Hole command.

Claims (49)

1. A method for reclaiming unused space from a data container served by a storage system, comprising:

maintaining a client computer interacting with the storage system;

maintaining the data container by the storage system;

executing on the client computer a computer program which stores data by writing the data to a file system on the client computer and to the data container of the storage system, the client computer program also freeing blocks on the client computer to create one or more freed blocks, the client computer program not informing the storage system that the one or more freed blocks were freed on the file system of the client computer;

executing an agent on the client computer, the agent examining metadata of the file system on the client computer to detect the one or more freed blocks;

sending, by the agent, a punch hole command to the storage system, the punch hole command having an operation code field, a number of ranges field and one or more range identifier fields which identify the one or more freed blocks; and

deallocating by the storage system, in response to receiving the punch hole command, blocks on the data container of the storage system which correspond to the one or more freed blocks that were freed on the client computer by the client computer program.

2. The method of claim 1 wherein the data container comprises a virtual disk.

3. The method of claim 1 wherein the range identifier fields comprise a logical block address field and a range length field.

4. The method of claim 1 wherein detecting the one or more freed blocks, further comprises:

querying the file system on the client computer.

5. The method of claim 1 wherein detecting the one or more freed blocks, further comprises:

allocating a file on the file system overlaid onto the data container;

locking the allocated file;

identifying blocks storing the allocated file on the file system; and

identifying the one or more freed blocks as the blocks storing the allocated file.

6. The method of claim 1 wherein detecting the one or more freed blocks, further comprises:

querying a non-file system application.

7. The method of claim 6 wherein the non-file system application comprises a database system.

8. A system for reclaiming unused space from a data container served by a storage system, comprising:

means for maintaining a client computer interacting with the storage system;

means for maintaining the data container by the storage system;

means for executing on the client computer a computer program which stores data by writing the data to a file system on the client computer and to the data container of the storage system, the client computer program also freeing blocks on the client computer to create one or more freed blocks, the client computer program not informing the storage system that the one or more freed blocks were freed on the file system of the client computer;

means for examining metadata of the file system on the client computer to detect, by an agent executing on the client computer, the one or more freed blocks;

means for sending, by the agent, a punch hole command to the storage system, the punch hole command having an operation code field, a number of ranges field and one or more range identifier fields which identify the one or more freed blocks; and

means for deallocating by the storage system, in response to receiving the punch hole command, blocks on the data container of the storage system which correspond to the one or more freed blocks that were freed on the client computer by the client computer program.

9. The system of claim 8 wherein the data container comprises a virtual disk.

10. The system of claim 8 wherein the range identifier fields comprise a logical block address field and a range length field.

11. The system of claim 8 wherein the means for detecting the one or more freed blocks, further comprises:

means for querying the file system on the client computer.

12. The system of claim 8 wherein the means for detecting the one or more freed blocks, further comprises:

means for allocating a file on the file system overlaid onto the data container;

means for locking the allocated file;

means for identifying blocks storing the allocated file on the file system; and

means for identifying the one or more freed blocks as the identified blocks storing the allocated file.

13. The system of claim 8 wherein the means for detecting the one or freed blocks, further comprises:

means for querying a non-file system application.

14. The system of claim 13 wherein the non-file system application comprises a database system.

15. A system for reclaiming unused space from a data container served by a storage system, comprising:

a host-side agent executing on a client computer that interacts with the storage system, the client computer having a client computer program that stores data to a file system on the client computer and to the data container of the storage system, the client computer program to also free blocks on the client computer to create one or more freed blocks where the client computer program does not inform the storage system of the one or more freed blocks on the file system of the client computer, the host-side agent configured to examine metadata of the file system on the client computer to detect the one or more freed blocks on the client computer, the host-side agent to send a punch hole command to the storage system, the punch hole command has an operation code field, a number of ranges field and one or more range identifier fields which identifies the one or more freed blocks, and the storage system to deallocate, in response to the punch hole command, blocks on the data container which corresponds to the one or more freed blocks that were freed on the client computer.

16. The system of claim 15 wherein the host-side agent is further configured to query the file system on the client computer to detect the one or more freed blocks.

17. The system of claim 15 wherein the host-side agent is further configured to query a non-file system application to detect the one or more freed blocks.

18. A computer readable medium containing executable program instructions executed by a processor, comprising:

program instructions that maintain a client computer interacting with the storage system;

program instructions that maintain a data container by the storage system;

program instructions that execute on the client computer a computer program which stores data by writing the data to a file system on the client computer and to the data container of the storage system, the client computer program also freeing blocks on the client computer to create one or more freed blocks, the client computer program not informing the storage system that the one or more freed blocks were freed on the file system of the client computer;

program instructions that execute an agent on the client computer, the agent examining metadata of the file system on the client computer to detect the one or more freed blocks;

program instructions that send, by the agent, a punch hole command to the storage system, the punch hole command having an operation code field, a number of ranges field and one or more range identifier fields which identify the one or more freed blocks; and

program instructions that deallocate, by the storage system, in response to receiving the punch hole command, blocks on the data container of the storage system which correspond to the one or more freed blocks that were freed on the client computer by the client computer program.

Assignments (3)
CHANGE OF NAME Recorded Aug 4, 2024
From: NETWORK APPLIANCE, INC.
To: NETAPP, INC.
Reel/Frame 068176/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 19, 2005
From: RAJAN, VIJAYAN; BOLEN, DAVID BRITTAIN; DOUCETTE, DOUGLAS P.
To: NETWORK APPLIANCE, INC.
Reel/Frame 016167/0798 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 15, 2004
From: DOUCETTE, DOUGLAS P.
To: NETWORK APPLIANCE, INC.
Reel/Frame 015909/0142 →
Continuity (1)
Related Publication 20060085471A1 · Apr 20, 2006