Method and system for priority-based allocation in a storage pool
AssigneeSun Microsystems, Inc.
InventorsWilliam H. Moore, Darrin P. Johnson, Jeffrey S. Bonwick, Tabriz I. Holtz
Life of this patent
Estimating the term…
Abstract
A method for priority-based allocation in a storage pool involves receiving a request to write a data item in the storage pool, where the storage pool includes multiple metaslabs, and where each of the metaslabs includes a contiguous region of data. The method further involves determining a target metaslab selected from the multiple metaslabs by comparing multiple allocation priorities, where each of the allocation priorities is associated with one of the metaslabs, allocating a block to the target metaslab, and writing the block to the target metaslab, where the block includes a portion of the data item.
Claims18
A method for priority-based allocation in a storage pool, comprising:
- receiving a first request to write a first data item in the storage pool,
- wherein the storage pool comprises a physical disk,
- wherein the physical disk comprises a plurality of metaslabs, and
- wherein each of the plurality of metaslabs comprises a contiguous region of data;
- determining a first target metaslab selected from the plurality of metaslabs by comparing a first plurality of allocation priorities,
- wherein each of the first plurality of allocation priorities is associated with one of the plurality of metaslabs;
- allocating a first block to the first target metaslab;
- writing the first block to the first target metaslab;
- dynamically modifying an allocation priority selected from the first plurality of allocation priorities according to a block allocation policy after writing the first block to the target metaslab to obtain a modified first plurality of allocation priorities, wherein the first block comprises a first portion of the first data item;
- determining a second target metaslab selected from the plurality of metaslabs by comparing the modified first plurality of allocation priorities;
- allocating a second block to the second target metaslab;
- and
- writing the second block to the second target metaslab, wherein the second block comprises a second portion of the first data item.
A system comprising:
- a storage pool comprising a physical disk, wherein the physical disk comprises a plurality of metaslabs, wherein each of the plurality of metaslabs comprises a contiguous region of data;
- a first plurality of allocation priorities, wherein each of the plurality of allocation priorities is associated with one of the plurality of metaslabs;
- and
- a file system configured to:
- receive a request to write a data item in the storage pool;
- determine a first target metaslab selected from the plurality of metaslabs by comparing the plurality of allocation priorities;
- allocate a first block to the target metaslab;
- write the first block to the first target metaslab, dynamically modify an allocation priority selected from the first plurality of allocation priorities according to a block allocation policy after writing the first block to the first target metaslab to obtain a first modified plurality of allocation priorities, wherein the first block comprises a first portion of the data item;
- determine a second target metaslab selected from the plurality of metaslabs by comparing the first modified plurality of allocation priorities;
- allocate a second block to the second target metaslab;
- and
- write the second block to the second target metaslab, wherein the second block comprises a second portion of the data item.
A computer readable medium comprising executable instructions for priority-based allocation in a storage pool by:
- receiving a request to write a data item in the storage pool,
- wherein the storage pool comprises a physical disk,
- wherein the physical disk comprises a plurality of metaslabs, and
- wherein each of the plurality of metaslabs comprises a contiguous region of data;
- determining a first target metaslab selected from the plurality of metaslabs by comparing a plurality of allocation priorities,
- wherein each of the plurality of allocation priorities is associated with one of the plurality of metaslabs;
- allocating a first block to the target metaslab;
- writing the first block to the first target metaslab, dynamically modifying an allocation priority selected from the first plurality of allocation priorities according to a block allocation policy after writing the first block to the first target metaslab to obtain a first modified plurality of allocation priorities, wherein the first block comprises a portion of the data items;
- determining a second target metaslab selected from the plurality of metaslabs by comparing the first modified plurality of allocation priorities;
- allocating a second block to the second target metaslab;
- and
- writing the second block to the second target metaslab, wherein the second block comprises a second portion of the data item.
Dependencies are inferred from the claim text.