IP Library › Granted Patent US 8,645,662
Granted Patent B2
US 8,645,662 · App. 13/358,453 · Granted Feb 4, 2014

Sub-lun auto-tiering

Inventors: David Alan Burton (Vail, AZ); Kenneth Harris (Boulder, CO); Erich Otto (Longmont, CO)
Assignee: Oracle International Corporation
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 8,645,662
App. No.
13/358,453
Granted
Feb 4, 2014
Kind
B2
Abstract

Embodiments of the invention include systems and methods for auto-tiering multiple file systems across a common resource pool. Storage resources are allocated as a sub-LUN auto-tiering (SLAT) sub-pool. The sub-pool is managed as a single virtual address space (VAS) with a virtual block address (VBA) for each logical block address of each data block in the sub-pool, and a portion of those VBAs can be allocated to each of a number of file systems. Mappings are maintained between each logical block address in which file system data is physically stored and a VBA in the file system's portion of the virtual address space. As data moves (e.g., is added, auto-tiered, etc.), the mappings can be updated. In this way, multiple SLAT file systems can exploit the full resources of the common SLAT sub-pool and maximize the resource options available to auto-tiering functions.

Claims (68)

1. A method for auto-tiering in a storage resource pool having a number of storage classes, each with one or more storage devices configured to store a plurality of data blocks, the method comprising:

allocating, from a top level storage manager to a sub-LUN auto-tiering (SLAT) storage manager, a SLAT sub-pool including a portion of storage resources of each of at least two storage classes;

generating a common SLAT address space having a plurality of logical block addresses each corresponding to a data block of the SLAT sub-pool; and

initializing a SLAT file system as a virtual address space of a predetermined total capacity in the SLAT address space using the SLAT storage manager.

2. The method of claim 1 , wherein:

the SLAT file system is one of a plurality of SLAT file systems, each having an associated virtual address space, predetermined total capacity, and SLAT mapping; and

the plurality of SLAT file systems share the storage resources of the SLAT address space according to their respective predetermined total capacities.

3. The method of claim 1 , wherein generating the SLAT file system as a virtual address space of a predetermined total capacity in the SLAT address space comprises:

generating a virtual address space of the predetermined total capacity using the SLAT storage manager, each virtual address space configured to be mapped to a corresponding one of the plurality of logical block addresses in the SLAT address space according to a SLAT mapping; and

assigning the virtual address space to the SLAT file system in the SLAT storage manager.

4. The method of claim 3 , further comprising:

receiving file data at the SLAT storage manager for storage to the SLAT file system;

storing the file data to a set of data blocks of the SLAT sub-pool; and

generating, using the SLAT storage manager, a SLAT mapping between each of the set of blocks and one of the plurality of logical block addresses in the SLAT address space assigned to the SLAT file system.

5. The method of claim 4 , further comprising:

receiving a quality of service characterization corresponding to the file data prior to storing the file data to the set of data blocks; and

determining an initial resource allocation across the at least two storage classes of the SLAT sub-pool according to the quality of service characterization,

wherein the file data is stored to the set of data blocks of the SLAT sub-pool initially according to the initial resource allocation.

6. The method of claim 5 , wherein determining the initial resource allocation comprises determining at least one RAID level and at least one storage class for the file data.

7. The method of claim 5 , wherein the quality of service characterization indicates that the file data should be optimized for at least one of read access, write access, sequential access, or non-sequential access.

8. The method of claim 4 , further comprising:

receiving an input/output command referring to designated file data of the SLAT file system;

determining one or more data blocks of the SLAT sub-pool corresponding to the designated file data using the SLAT storage manager according to the SLAT mappings; and

performing one or more block-level operations on the one or more data blocks in accordance with the input/output command.

9. The method of claim 6 , further comprising:

updating block access statistics maintained by the SLAT storage manager according to the performing of the one or more block-level operations.

10. The method of claim 7 , further comprising:

determining to promote or demote designated file data of the SLAT file system according to the updated block access statistics;

moving the designated file data from data blocks of a first storage class to data blocks of a second storage class according to the determining step; and

updating the SLAT mappings to reflect the moving step.

11. The method of claim 1 , further comprising:

receiving a request for a SLAT file system having a requested total capacity,

wherein the SLAT file system is generated in response to the request, and the predetermined total capacity is the requested total capacity.

12. A data storage system comprising:

a plurality of storage classes, each comprising one or more storage devices configured to store a plurality of data blocks;

a top-level storage manager configured to manage storage resources across the plurality of storage classes;

a sub-LUN auto-tiering (SLAT) storage manager configured to manage a SLAT sub-pool including a portion of storage resources of each of at least two storage classes allocated from the top-level storage manager and to generate a common SLAT address space having a plurality of logical block addresses each corresponding to a data block of the SLAT sub-pool; and

at least one SLAT file system comprising a virtual address space of a predetermined total capacity, each virtual address space configured to be mapped to a corresponding one of the plurality of logical block addresses in the SLAT address space according to a SLAT mapping.

13. The data storage system of claim 12 , wherein:

the at least one SLAT file system is at least one of a plurality of file systems;

each of the plurality of SLAT file systems has an associated virtual address space, predetermined total capacity, and SLAT mapping; and

the plurality of SLAT file systems share the storage resources of the SLAT address space according to their respective predetermined total capacities.

14. The data storage system of claim 12 , wherein the SLAT storage manager is further configured to:

receive file data for storage to a first SLAT file system;

store the file data to a set of data blocks of the SLAT sub-pool; and

generate a SLAT mapping between each of the set of blocks and one of the plurality of logical block addresses in the SLAT address space assigned to the first SLAT file system.

15. The data storage system of claim 14 , wherein the SLAT storage manager is further configured to:

receive a quality of service characterization corresponding to the file data prior to storing the file data to the set of data blocks; and

determine an initial resource allocation across the at least two storage classes of the SLAT sub-pool according to the quality of service characterization,

wherein the file data is stored to the set of data blocks of the SLAT sub-pool initially according to the initial resource allocation.

16. The data storage system of claim 14 , wherein the SLAT storage manager comprises:

an input/output module configured to receive an input/output command referring to designated file data of the SLAT file system; and

a block processing module configured to:

determine one or more data blocks of the SLAT sub-pool corresponding to the designated file data using the SLAT storage manager according to the SLAT mappings; and

perform one or more block-level operations on the one or more data blocks in accordance with the input/output command.

17. The data storage system of claim 16 , wherein the SLAT storage manager further comprises:

a statistics module configured to maintain block access statistics and to update block access statistics according to the performing of the one or more block-level operations by the block processing module.

18. The data storage system of claim 17 , wherein the block processing module is further configured to:

determine to promote or demote designated file data of the SLAT file system according to the block access statistics updated by the statistics module;

move the designated file data from data blocks of a first storage class to data blocks of a second storage class according to the determining step; and

update the SLAT mappings to reflect the moving step.

19. The data storage system of claim 12 , wherein the SLAT storage manager is further configured to receive a request for a SLAT file system having a requested total capacity and to generate the SLAT file system in response to the request, such that the predetermined total capacity is the requested total capacity.

20. A data storage system comprising:

a plurality of storage classes, each comprising one or more storage devices configured to store a plurality of data blocks;

a top-level storage manager configured to manage storage resources across the plurality of storage classes;

a sub-LUN auto-tiering (SLAT) storage manager configured to manage a SLAT sub-pool including a portion of storage resources of each of at least two storage classes allocated from the top-level storage manager and to generate a common SLAT address space having a plurality of logical block addresses each corresponding to a data block of the SLAT sub-pool; and

a plurality of SLAT file systems, each associated with a virtual address space of a total capacity, each virtual address space configured to be mapped to a corresponding one of the plurality of logical block addresses in the SLAT address space according to a SLAT mapping; and

at least one non-SLAT file system associated with an a priori resource allocation managed by the top-level storage manager.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 26, 2012
From: BURTON, DAVID ALAN; HARRIS, KENNETH; OTTO, ERICH
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 027602/0179 →
Continuity (2)
Provisional Application 61580040 · Dec 23, 2011
Related Publication 20130166839A1 · Jun 27, 2013