IP Library Granted Patent US 7,430,571
Granted Patent B2
US 7,430,571 · App. 10/836,090 · Granted Sep 30, 2008

Extension of write anywhere file layout write allocation

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,430,571
App. No.
10/836,090
Granted
Sep 30, 2008
Kind
B2
Abstract

A write allocation technique extends a conventional write allocation procedure employed by a write anywhere file system of a storage system. A write allocator of the file system implements the extended write allocation technique in response to an event in the file system. The extended write allocation technique efficiently allocates blocks, and frees blocks, to and from a virtual volume (vvol) of an aggregate. The aggregate is a physical volume comprising one or more groups of disks, such as RAID groups, underlying one or more vvols of the storage system. The aggregate has its own physical volume block number (pvbn) space and maintains metadata, such as block allocation structures, within that pvbn space. Each vvol also has its own virtual volume block number (vvbn) space and maintains metadata, such as block allocation structures, within that vvbn space. The inventive technique extends input/output efficiencies of the conventional write allocation procedure to comport with an extended file system layout of the storage system.

Claims (61)

1. A method for performing write-allocation in a storage system, the method comprising:

allocating a first block to a virtual volume (vvol) from an aggregate in the storage system, wherein block allocation is performed in parallel on the vvol and the aggregate, where the aggregate is a physical volume formed from one or more groups of storage devices organized into a global storage space, wherein allocating comprises:

selecting a physical volume block number (pvbn) for the first block from a pvbn space of the aggregate and a virtual volume block number (vvbn) for the first block from a vvbn space of a vvol,

adjusting block allocation bitmap structures of the aggregate to record the selected pvbn and block allocation bitmap structures of the vvol to record the selected vvbn,

inserting the selected vvbn and a virtual volume identifier (vvid) of the vvol into an owner map of the aggregate at an entry defined by the selected pvbn;

inserting the selected pvbn into a container map of the vvol, and updating an indirect block or inode file parent of the first block with one or more block pointers to the first block, wherein the step of updating comprises: determining whether the vvol is embodied as a hybrid vvol, wherein the hybrid vvol includes the pvbn inserted in the indirect blocks,

determining whether the vvol is a hybrid, then inserting the selected pvbn into the indirect block or inode as the block pointer, and

determining whether the vvol is a dual vbn hybrid vvol, then inserting both the selected pvbn and the selected vvbn in the indirect block or inode as block pointers,

wherein the dual vbn hybrid vvol includes both pvbn inserted in the indirect block; and

freeing a second block from the vvol to the aggregate.

2. A method for performing write-allocation in a storage system, the method comprising:

allocating a first block to a virtual volume (vvol) from an aggregate in the storage system, wherein block allocation is performed in parallel on the vvol and the aggregate, where the aggregate is a physical volume formed from one or more groups of storage devices organized into a global storage space, wherein allocating comprises:

selecting a physical volume block number (pvbn) for the first block from a pvbn space of the aggregate and a virtual volume block number (vvbn) for the first block from a vvbn space of a vvol,

adjusting block allocation bitmap structures of the aggregate to record the selected pvbn and block allocation bitmap structures of the vvol to record the selected vvbn,

inserting the selected vvbn and a virtual volume identifier (vvid) of the vvol into an owner map of the aggregate at an entry defined by the selected pvbn;

inserting the selected pvbn into a container map of the vvol, and updating an indirect block or inode file parent of the first block with one or more block pointers to the first block, and

freeing a second block from the vvol to the aggregate, wherein the steps of free comprises:

determining whether the vvol is embodied as a hybrid vvol, wherein the hybrid vvol includes the pvbn inserted in the indirect blocks,

determining whether the vvol is a hybrid, then inserting the selected pvbn into the indirect block or inode as the block pointer, and

determining whether the vvol is a dual vbn hybrid vvol, then inserting both the selected pvbn and the selected vvbn in the indirect block or inode as block pointers, wherein the dual vbn hybrid vvol includes both pvbn inserted in the indirect block.

3. The method of claim 2 wherein the block allocation bitmap structures of the aggregate and the vvol include an active map, a summary map and a space map.

4. The method of claim 3 wherein the step of freeing further comprises:

clearing a bit entry of the vvol active map for the acquired vvbn;

checking a bit entry of the vvol summary map for the acquired vvbn; and

if the bit entry is not cleared in the vvol summary map, retaining the acquired vvbn at a container file of the vvol.

5. The method of claim 4 wherein the step of freeing further comprises:

if the bit entry is cleared in the vvol summary map, decrementing the vvol space map; and

clearing a pvbn of the second block from the container map of vvol to thereby free the second block from the vvol.

6. The method of claim 5 wherein the step of freeing further comprises:

clearing a bit entry of the aggregate active map for the cleared pvbn;

checking a bit entry of the aggregate summary map for the cleared pvbn; and

if the bit entry is cleared, decrementing the aggregate space map.

7. The method of claim 4 wherein the step of freeing further comprises: if the bit entry is cleared in the vvol summary map, delaying release of the second block from the vvol to the aggregate.

8. A computer-implemented method for performing write-allocation in a storage system, the method comprising:

organizing one or more virtual volumes (vvols) on an aggregate, where the aggregate is a physical volume formed from one or more groups of storage devices;

allocating a first block to a vvol of the one or more virtual volumes from the aggregate, wherein block allocation is performed in parallel on the vvol and the aggregate by interleaving processing on the aggregate and the vvol;

freeing a second block from the vvol to the agreegate, wherein the step of freeing comprises:

determining whether the vvol is embodied as a hybrid vvol, wherein the hybrid vvol includes the pvbn inserted in the indirect blocks,

determining whether the vvol is a hybrid, then inserting the selected pvbn into the indirect block or inode as the block pointer, and

determining whether the vvol is a dual hybrid vvol, then acquiring the vvbn of the second block directly from an indirect block or inode of the second block, wherein the dual vbn hybrid vvol includes both the pvbn and vvbn inserted in the indirect block.

9. The method of claim 8 , wherein the step of freeing further comprises:

clearing an entry of a vvol active map for the acquired vvbn;

checking an entry of a vvol summary map for the acquired vvbn; and

if the bit entry is not cleared in the vvol summary map, retaining the acquired vvbn at a container of the vyol.

10. The method of claim 8 , wherein the step of freeing further comprises:

if the entry is cleared in the vvol summary map, decrementing a vvol space map; and

clearing a pvbn of the second block from the container map of vvol to thereby free the second block from the vyol.

11. The method of claim 10 , wherein the step of freeing further comprises:

clearing an entry of an aggregate active map for the cleared pvbn;

checking an entry of an aggregate summary map for the cleared pvbn; and

if the entry is cleared, decrementing an aggregate space map.

12. The method of claim 9 , wherein the step of freeing further comprises, if the entry is cleared in the vvol summary map, delaying release of the second block from the vvol to the aggregate.

13. A computer-method for performing write-allocation in a storage system, the method comprising:

organizing one or more virtual volumes (vvols) on an aggregate, where the aggregate is a physical volume formed from one or more groups of storage devices; and

allocating a first block to a vvol of the one or more virtual volumes from an aggregate, wherein block allocation is performed in parallel on the vvol and the aggregate, by interleaving processing on the aggregate and the vvol, wherein the step of allocating comprises:

selecting a physical volume block number (pvbn) for the first block from a pvbn space of the aggregate and a virtual volume block number (vvbn) for the first block from a vvbn space of a vvol,

adjusting block allocation bitmap structures of the aggregate to record the selected pvbn and block allocation bitmap structures of the vvol to record the selected vvbn,

inserting the selected vvbn and a virtual volume identifier (vvid) of the vvol into an owner map of the aggregate at an entry defined by the selected pvbn;

inserting the selected pvbn into a second map of the vvol, and updating an indirect block or inode file parent of the first block with one or more block pointers to the first block, wherein the step of updating comprises: determining whether the vvol is embodied as a hybrid vvol, wherein the hybrid vvol includes the pvbn inserted in the indirect blocks,

determining whether the vvol is a hybrid, then inserting the selected pvbn into the indirect block or inode as the block pointer, and

determining whether the vvol is a dual vbn hybrid vvol, then inserting both the selected pvbn and the selected vvbn in the indirect block or inode as block pointers, wherein the dual vbn hybrid vvol includes both pvbn inserted in the indirect block.

Assignments (3)
CHANGE OF NAME Recorded Jul 14, 2024
From: NETWORK APPLIANCE, INC.
To: NETAPP, INC.
Reel/Frame 067983/0117 →
CHANGE OF NAME Recorded May 26, 2011
From: NETWORK APPLIANCE, INC.
To: NETAPP, INC.
Reel/Frame 026341/0552 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 16, 2004
From: EDWARDS, JOHN K.
To: NETWORK APPLIANCE
Reel/Frame 015578/0906 →