IP Library Granted Patent US 7,865,673
Granted Patent B2
US 7,865,673 · App. 11/406,956 · Granted Jan 4, 2011

Multiple replication levels with pooled devices

Assignee: Oracle America, 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,865,673
App. No.
11/406,956
Granted
Jan 4, 2011
Kind
B2
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 (n 1 ) required to write the first block to the storage pool using a size of the first block and the first replication type, if n 1 is not a multiple of the maximum supported replication level of the storage pool: allocating a number of padded physical blocks (p 1 ) to n 1 until n 1 +p 1 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 n 1 physical blocks.

Claims (83)

1. 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 (n 1 ) required to write the first block to the storage pool using a size of the first block and the first replication type;

if n 1 is not a multiple of a maximum supported replication level of the storage pool:

allocating a number of padded physical blocks (p 1 ) to n 1 until n 1 +p 1 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 n 1 physical blocks; and

if n 1 is a multiple of the maximum supported replication level of the storage pool, writing the first block to the storage pool by filling in n 1 physical blocks.

2. The method of claim 1 , further comprising:

receiving a second write operation for a second block;

determining a second replication type for the second block;

determining a number of physical blocks (n 2 ) required to write the second block to the storage pool using a size of the second block and the second replication type;

if n 2 is not a multiple of the maximum supported replication level of the storage pool:

allocating a number of padded physical blocks (p 2 ) to n 2 until n 2 +p 2 is a multiple of the maximum supported replication level of the storage pool, and

writing the second block to the storage pool by filling in n 2 physical blocks; and

if n 2 is a multiple of the maximum supported replication level of the storage pool, writing the second block to the storage pool by filling in n 2 physical blocks.

3. The method of claim 2 , wherein the first block is a data block and the second block is an indirect block comprising a block pointer referencing the first block.

4. The method of claim 3 , wherein the first replication type is stored in the second block, and wherein the second replication type is stored in a parent block comprising a block pointer referencing the second block.

5. The method of claim 2 , wherein the first replication type is stored in a first parent block comprising a block pointer referencing the first block, and wherein the second replication type is stored in a second parent block comprising a block pointer referencing the second block.

6. The method of claim 2 , wherein the first block and the second block correspond to a portion of a hierarchical tree structure representing a file in a file system.

7. The method of claim 1 , wherein writing the first block to the storage pool by filling in n 1 physical blocks, comprises:

determining a number of rows (r) required to store the first block in the storage pool using n 1 ;

dividing the first block into a plurality of sequential blocks (s), wherein each of the plurality of blocks is the same size as a physical block;

writing a first r sequential blocks to a first disk in the storage pool; and

writing a r+1 th sequential block to a second disk in the storage pool,

wherein s>r.

8. The method of claim 7 , wherein r is calculated using the following formula: r=((n 1 −1) div d) +1, where d is the number of disks in the storage pool.

9. 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 (n 1 ) required to write the block to the storage pool using a size of the first block and the first replication type;

if n 1 is not a multiple of a maximum supported replication level of the storage pool:

allocating a number of padded physical blocks (p 1 ) to n 1 until n 1 +p 1 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 n 1 physical blocks; and

if n 1 is a multiple of the maximum supported replication level of the storage pool, writing the first block to the storage pool by filling in n 1 physical blocks,

wherein the first block is one selected from the group consisting of the child block and the parent block.

10. The system of claim 9 , wherein the file system if further configured to store a second block in the storage pool using the following method:

receiving a second write operation for a second block;

determining a second replication type for the second block;

determining a number of physical blocks (n 2 ) required to write the second block to the storage pool using a size of the second block and the second replication type;

if n 2 is not a multiple of the maximum supported replication level of the storage pool:

allocating a number of padded physical blocks (p 2 ) to n 2 until n 2 +p 2 is a multiple of the maximum supported replication level of the storage pool, and

writing the second block to the storage pool by filling in n 2 physical blocks; and

if n 2 is a multiple of the maximum supported replication level of the storage pool, writing the second block to the storage pool by filling in n 2 physical blocks,

wherein the first block is one selected from the group consisting of the child block and the parent block.

11. The system of claim 10 , wherein the first block and the second block correspond to a portion of a hierarchical tree structure representing a file.

12. The system of claim 10 , wherein the second replication type is stored in the first block.

13. The system method of claim 9 , wherein writing the first block to the storage pool by filling in n 1 physical blocks, comprises:

determining a number of rows (r) required to store the first block in the storage pool using n 1 ;

dividing the first block into a plurality of sequential blocks (s), wherein each of the plurality of blocks is the same size as a physical block;

writing a first r sequential blocks to a first disk in the storage pool; and

writing a r+1 th sequential block to a second disk in the storage pool,

wherein s>r.

14. The system of claim 13 , wherein r is calculated using the following formula: r=((n 1 −1) div d) +1, where d is the number of disks in the storage pool.

15. 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 (n 1 ) required to write the first block to the storage pool using a size of the first block and the first replication type;

if n 1 is not a multiple of a maximum supported replication level of the storage pool:

allocating a number of padded physical blocks (p 1 ) to n 1 until n 1 +p 1 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 n 1 physical blocks; and

if n 1 is a multiple of the maximum supported replication level of the storage pool, writing the first block to the storage pool by filling in n 1 physical blocks.

16. The non-transitory computer readable medium of claim 15 , further comprising:

receiving a second write operation for a second block;

determining a second replication type for the second block;

determining a number of physical blocks (n 2 ) required to write the second block to the storage pool using a size of the second block and the second replication type;

if n 2 is not a multiple of the maximum supported replication level of the storage pool:

allocating a number of padded physical blocks (p 2 ) to n 2 until n 2 +p 2 is a multiple of the maximum supported replication level of the storage pool, and

writing the second block to the storage pool by filling in n 2 physical blocks; and

if n 2 is a multiple of the maximum supported replication level of the storage pool, writing the second block to the storage pool by filling in n 2 physical blocks.

17. The non-transitory computer readable medium of claim 16 , wherein the first block is a data block and the second block is an indirect block comprising a block pointer referencing the first block.

18. The non-transitory computer readable medium of claim 16 , wherein the first block and the second block correspond to a portion of a hierarchical tree structure representing a file in a file system.

19. The non-transitory computer readable medium of claim 15 , wherein writing the first block to the storage pool by filling in n 1 physical blocks, comprises:

determining a number of rows (r) required to store the first block in the storage pool using n 1 ;

dividing the first block into a plurality of sequential blocks (s), wherein each of the plurality of blocks is the same size as a physical block;

writing a first r sequential blocks to a first disk in the storage pool; and

writing a r+1 th sequential block to a second disk in the storage pool,

wherein s>r.

20. The non-transitory computer readable medium of claim 19 , wherein r is calculated using the following formula: r=((n 1 −1) div d) +1, where d is the number of disks in the storage pool.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037306/0556 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 19, 2006
From: MOORE, WILLIAM H.; BONWICK, JEFFREY S.
To: SUN MICROSYSTEMS, INC.
Reel/Frame 017797/0433 →
Continuity (2)
Provisional Application 6073384800 · Nov 4, 2005
Related Publication 20070106864A1 · May 10, 2007