Multiple replication levels with pooled devices
AssigneeOracle America, Inc.
InventorsWilliam H. Moore, Jeffrey S. Bonwick
Life of this patent
Estimating the term…
Abstract
A method for writing data to a storage pool, including receiving a first write operation for a first block, determining a first replication type for the first block, determining a number of physical blocks (n1) required to write the first block to the storage pool using a size of the first block and the first replication type, if n1 is not a multiple of the maximum supported replication level of the storage pool: allocating a number of padded physical blocks (p1) to n1 until n1+p1 is a multiple of a maximum supported replication level of the storage pool, and writing the first block to the storage pool by filling in the n1 physical blocks.
Claims20
A method for writing data to a storage pool, comprising:
- receiving a first write operation for a first block;
- determining a first replication type for the first block;
- determining a number of physical blocks (n1) required to write the first block to the storage pool using a size of the first block and the first replication type;
- if n1 is not a multiple of a maximum supported replication level of the storage pool:
- allocating a number of padded physical blocks (p1) to n1 until n1+p1 is a multiple of the maximum supported replication level of the storage pool, and
- writing the first block to the storage pool by filling in the n1 physical blocks;
- and
- if n1 is a multiple of the maximum supported replication level of the storage pool, writing the first block to the storage pool by filling in n1 physical blocks.
A system for writing data, comprising:
- a storage pool comprising:
- a plurality of child blocks, wherein each of the plurality of child blocks comprises one selected from the group consisting of a data block and an indirect block, wherein the indirect block references at least one of the plurality of child blocks;
- a parent block referencing at least one indirect block;
- and
- a storage pool allocator configured to store the root block and the plurality of child blocks,
- a file system operatively connected to the storage pool, wherein the file system is configured to store a first block in the storage pool using the following method:
- determining a first replication type for a first block;
- determining a number of physical blocks (n1) required to write the block to the storage pool using a size of the first block and the first replication type;
- if n1 is not a multiple of a maximum supported replication level of the storage pool:
- allocating a number of padded physical blocks (p1) to n1 until n1+p1 is a multiple of the maximum supported replication level of the storage pool, and
- writing the first block to the storage pool by filling in n1 physical blocks;
- and
- if n1 is a multiple of the maximum supported replication level of the storage pool, writing the first block to the storage pool by filling in n1 physical blocks,
- wherein the first block is one selected from the group consisting of the child block and the parent block.
A non-transitory computer readable medium comprising computer readable program code embodied therein for causing a computer system to:
- receiving a first write operation for a first block;
- determining a first replication type for the first block;
- determining a number of physical blocks (n1) required to write the first block to the storage pool using a size of the first block and the first replication type;
- if n1 is not a multiple of a maximum supported replication level of the storage pool:
- allocating a number of padded physical blocks (p1) to n1 until n1+p1 is a multiple of the maximum supported replication level of the storage pool, and
- writing the first block to the storage pool by filling in n1 physical blocks;
- and
- if n1 is a multiple of the maximum supported replication level of the storage pool, writing the first block to the storage pool by filling in n1 physical blocks.
Dependencies are inferred from the claim text.