Method and system for priority-based allocation in a storage pool
First Claim
Patent Images
1. 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, andwherein 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.
2 Assignments
0 Petitions
Accused Products
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.
-
Citations
18 Claims
-
1. 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. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. 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.
-
-
18. 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.
-
Specification