IP Library Granted Patent US 7,111,021
Granted Patent B1
US 7,111,021 · App. 10/394,859 · Granted Sep 19, 2006

System and method for efficient space accounting in a file system with snapshots

Assignee: Network Appliance, 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,111,021
App. No.
10/394,859
Granted
Sep 19, 2006
Kind
B1
Abstract

A system and method for implementing on-the-fly block ownership accounting of snapshots in a file system is provided. For each snapshot, including the current active file system, the number of blocks that the snapshot is the youngest and oldest owner of is computed and stored in non-volatile storage. As file system operations modify the file system and associated snapshots, the youngest and oldest owner counts are updated concurrently with the execution of the file system operations, thereby providing near instantaneous access to the count information for use by various file system commands.

Claims (95)

1. A method for on-the-fly block accounting in a file system, the method comprising the steps of:

generating an initial accounting for each snapshot associated with the file system, the initial accounting identifying a youngest owner count;

performing, in response to creating a snapshot, a snapshot creation accounting procedure;

performing, in response to deleting a snapshot, a snapshot deletion accounting procedure;

performing, in response to freeing a block, a free block accounting procedure; and

performing, in response to allocating a block, a block allocation accounting procedure.

2. The method of claim 1 wherein the youngest owner count comprises a value identifying a number of blocks in the file system having a particular snapshot as their youngest owner.

3. The method of claim 1 wherein the initial accounting further comprises identifying, for each of one or more snapshots in the file system, an oldest owner count.

4. The method of claim 3 wherein the oldest owner count comprises a value identifying a number of blocks in the file system having a particular snapshot as their oldest owner.

5. The method of claim 1 wherein an active file system is a snapshot associated with the file system.

6. The method of claim 1 wherein the youngest owner count is stored in non-volatile storage.

7. The method of claim 6 wherein the non-volatile storage comprises a disk.

8. The method of claim 1 wherein the youngest owner count is stored in a predetermined location on a storage device.

9. The method of claim 8 wherein the predetermined location comprises a file system information block associated with a particular snapshot.

10. A method for on-the-fly block accounting in a file system, the method comprising the steps of:

generating an initial accounting for each snapshot associated with the file system, the initial accounting identifying a youngest owner count;

performing, in response to creating a snapshot, a snapshot creation accounting procedure including

setting the youngest owner count associated with a newly created snapshot to zero,

setting an oldest owner count associated with a newly created snapshot to a number identifying a count of blocks in the file system that have an active file system as their oldest owner, and

setting the oldest owner count associated with the active file system to a value of zero; and

performing, in response to deleting a snapshot, a snapshot deletion accounting procedure;

performing, in response to freeing a block, a free block accounting procedure; and

performing, in response to allocating a block, a block allocation accounting procedure.

11. The method of claim 1 wherein the step of performing a snapshot deletion accounting procedure further comprises the steps of:

determining, for each block used by the deleted snapshot, whether the block is used in a next youngest snapshot.

12. The method of claim 3 wherein the step of performing a free block accounting procedure further comprises the steps of:

incrementing the youngest owner associated with a newly created snapshot by 1; and

decrementing the oldest owner count of the active file system by 1.

13. The method of claim 3 wherein the step of performing a block allocation accounting procedure further comprises the steps of:

incrementing the youngest owner count of the active file system by 1; and

increasing the oldest owner count of the active file system by 1.

14. The method of claim 1 wherein an active file system of the file system comprises a snapshot.

15. A method for on-the-fly block accounting for a file system, the method comprising the steps of:

calculating, for a snapshot associated with the file system, a youngest owner count; and

updating, in response to a file system operation, the youngest owner count.

16. The method of claim 15 wherein the youngest owner count identifies a number of blocks in the file system having the snapshot as their youngest owner.

17. The method of claim 15 wherein an active file system is a snapshot.

18. The method of claim 15 wherein the file system operation comprises a create snapshot command.

19. A method for on-the-fly block accounting for a file system, the method comprising the steps of:

calculating, for a snapshot associated with the file system, an oldest owner count; and

updating, in response to a file system operation, the oldest owner count.

20. The method of claim 19 wherein the oldest owner count identifies a number of blocks in the file system having the snapshot as their oldest owner.

21. The method of claim 19 wherein an active file system is a snapshot.

22. The method of claim 19 wherein the file system operation comprises a create snapshot command.

23. A method for on-the-fly block accounting in a file system, the method comprising the steps of:

generating an initial accounting for each snapshot associated with the file system, the initial accounting identifying a youngest owner count for each snapshot, where the youngest owner count counts a block if a snapshot uses the block and no newer snapshot uses the block; and

identifying an oldest owner count for each snapshot associated with the file system, where the oldest owner count counts a block if a snapshot uses the block and no older snapshot uses the block.

24. The method of claim 23 , further comprising:

generating a new snapshot; and

in response to the new snapshot, updating the accounting of the youngest owner count and the oldest owner count.

25. An apparatus for on-the-fly block accounting in a file system, comprising:

means for generating an initial accounting for each snapshot associated with the file system, the initial accounting identifying a youngest owner count for each snapshot, where the youngest owner count counts a block if a snapshot uses the block and no newer snapshot uses the block; and

means for identifying an oldest owner count for each snapshot associated with the file system, where the oldest owner count counts a block if a snapshot uses the block and no older snapshot uses the block.

26. The apparatus of claim 25 , further comprising:

means for generating a new snapshot; and

in response to the new snapshot, means for updating the accounting of the youngest owner count and the oldest owner count.

27. The method of claim 23 , further comprising:

deleting a snapshot; and

in response to deleting the snapshot, determining for each block used by the deleted snapshot, whether the block is used in a next youngest snapshot.

28. The method of claim 23 , further comprising:

freeing a block; and

in response to freeing the block, incrementing the youngest owner associated with a newly created snapshot by 1, and decrementing the oldest owner count of an active file system by 1.

29. The method of claim 23 , further comprising:

allocating a block; and

in response to allocating the block, incrementing the youngest owner count of an active file system by 1, and increasing the oldest owner count of the active file system by 1.

30. The apparatus of claim 25 , further comprising:

means for deleting a snapshot; and

in response to deleting the snapshot, means for determining for each block used by the deleted snapshot, whether the block is used in a next youngest snapshot.

31. The apparatus of claim 25 , further comprising:

means for freeing a block; and

in response to freeing the block, means for incrementing the youngest owner associated with a newly created snapshot by 1, and decrementing the oldest owner count of an active file system by 1.

32. The apparatus of claim 25 , further comprising:

means for allocating a block; and

in response to allocating the block, means for incrementing the youngest owner count of an active file system by 1, and increasing the oldest owner count of the active file system by 1.

33. A system for on-the-fly block accounting in a file system, comprising:

a storage system;

a memory stored within the storage system;

an operating system stored within the memory, the operating system configured to generate an initial accounting for each snapshot associated with the file system, the initial accounting identifying a youngest owner count, where the youngest owner count counts a block if a snapshot uses the block and no newer snapshot uses the block; and

the operating system further configured to identify an oldest owner count for each snapshot associated with the file system, where the oldest owner count counts a block if a snapshot uses the block and no older snapshot uses the block.

34. The system of claim 33 , further comprising:

the file system configured to generate a new snapshot; and

in response to the new snapshot, the operating system configure to update the α-counting of the youngest owner count and the oldest owner count.

35. The system of claim 33 , further comprising:

the file system configured to delete a snapshot; and

in response to deleting the snapshot, the operating system configured to determine for each block used by the deleted snapshot, whether the block is used in a next youngest snapshot.

36. The system of claim 33 , further comprising:

the file system configured to free a block; and

in response to freeing the block, the operating system configured to increment the youngest owner associated with a newly created snapshot by 1, and decrement the oldest owner count of an active file system by 1.

37. The system of claim 33 , further comprising:

the file system configured to allocate a block; and

in response to allocating the block, the operating system configured to increment the youngest owner count of an active file system by 1, and increase the oldest owner count of the active file system by 1.

38. A method for on-the-fly block accounting in a file system, the method comprising the steps of:

generating an initial accounting for each snapshot associated with the file system, the initial accounting identifying a youngest owner count, where the youngest owner count counts a block if a snapshot uses the block and no newer snapshot uses the block;

identifying an oldest owner count for each snapshot associated with the file system, where the oldest owner count counts a block if a snapshot uses the block and no older snapshot uses the block; and

in response to a file system command, updating the initial accounting by determining a new youngest owner count and a new oldest owner count.

Assignments (2)
CHANGE OF NAME Recorded May 8, 2024
From: NETWORK APPLIANCE, INC.
To: NETAPP, INC.
Reel/Frame 067348/0714 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2003
From: LEWIS, BLAKE H.; KAHN, ANDY C.
To: NETWORK APPLIANCE, INC.
Reel/Frame 014480/0517 →