IP Library Granted Patent US 7,636,801
Granted Patent B1
US 7,636,801 · App. 11/156,845 · Granted Dec 22, 2009

Coordination of quality of service in a multi-layer virtualized storage environment

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,636,801
App. No.
11/156,845
Granted
Dec 22, 2009
Kind
B1
Abstract

A system for coordination for quality of service in multi-layer storage virtualization environments includes a first, second and third storage entity at a respective first, second and third layer of virtualized storage. The first storage entity sends a request for an I/O task to the second storage entity. In response to the request, the second storage entity may be configured to cooperate with the third storage entity to perform one or more I/O operations to satisfy one or more quality of service requirements associated with the I/O task.

Claims (72)

1. A system comprising:

a plurality of storage entities arranged in three or more hierarchical layers of virtualized storage including a first layer of virtualized storage, a second layer of virtualized storage, and a third layer of virtualized storage, wherein the plurality of storage entities is configured to:

at a first storage entity at the first layer of virtualized storage, receive a request to perform an I/O task requiring a plurality of I/O operations, wherein the request specifies one or more quality of service requirements to be satisfied in performing the I/O task;

in response to the request, determine a path through the three or more hierarchical layers of virtualized storage for performing the I/O task by:

selecting a second storage entity for inclusion in the path from among a plurality of storage entities at the second layer of virtualized storage in response to determining that the second storage entity can satisfy the one or more quality of service requirements specified by the request;

selecting a third storage entity for inclusion in the path from among a plurality of storage entities at the third layer of virtualized storage in response to determining that the third storage entity can satisfy the one or more quality of service requirements specified by the request; and

wherein the plurality of storage entities is further configured to perform the I/O task through the three or more hierarchical layers of virtualized storage using the determined path such that the first storage entity at the first layer of virtualized storage communicates with the second storage entity at the second layer of virtualized storage to perform a first one or more of the plurality of I/O operations required by the task, and the second storage entity at the second layer of virtualized storage communicates with the third storage entity at the third layer of virtualized storage to perform a second one or more of the plurality of I/O operations required by the task.

2. The system of claim 1 , wherein at least one of the first storage entity, the second storage entity, and the third storage entity is configured to:

aggregate storage of one or more logical or physical block storage devices to generate a virtualized block device; and

present the virtualized block device to a block device consumer at a higher layer of the three or more hierarchical layers of virtualized storage.

3. The system of claim 1 ,

wherein the three or more hierarchical layers of virtualized storage includes a fourth layer of virtualized storage between the first layer and the second layer;

wherein the first storage entity at the first layer is configured to select the second storage entity at the second layer for inclusion in the path by bypassing the fourth layer of virtualized storage in order to satisfy the one or more quality of service requirements specified by the request.

4. The system of claim 1 ,

wherein the one or more quality of service requirements specified by the request include a requirement for pre-fetching data for the I/O task.

5. The system of claim 1 ,

wherein the one or more quality of service requirements specified by the request include a requirement for caching one or more blocks of data for the I/O task.

6. The system of claim 1 , wherein the first storage entity at the first layer of virtualized storage is configured to receive the request to perform the I/O task from a software application that specifies the one or more quality of service requirements.

7. The system of claim 1 , wherein the second storage entity at the second layer of virtualized storage is configured to:

obtain performance metrics; and

select the third storage entity at the third layer of virtualized storage for inclusion in the path in response to determining that the performance metrics indicate that the third storage entity can satisfy the one or more quality of service requirements.

8. The system of claim 1 , wherein the second storage entity at the second layer of virtualized storage is configured to:

reserve use of the third storage entity at the third layer of virtualized storage for high-priority I/O tasks; and

select the third storage entity at the third layer of virtualized storage for inclusion in the path in response to determining that the one or more quality of service requirements indicate that the requested I/O task is a high-priority I/O task.

9. A computer-accessible storage medium storing program instructions executable to:

at a first storage entity, receive a request to perform an I/O task requiring a plurality of I/O operations, wherein the request specifies one or more quality of service requirements to be satisfied in performing the I/O task, wherein the first storage entity is one of a plurality of storage entities arranged in three or more hierarchical layers of virtualized storage including a first layer of virtualized storage, a second layer of virtualized storage, and a third layer of virtualized storage, wherein the first storage entity is at the first layer of virtualized storage;

in response to the request, determine a path through the three or more hierarchical layers of virtualized storage for performing the I/O task by:

selecting a second storage entity for inclusion in the path from among a plurality of storage entities at the second layer of virtualized storage in response to determining that the second storage entity can satisfy the one or more quality of service requirements specified by the request;

selecting a third storage entity for inclusion in the path from among a plurality of storage entities at the third layer of virtualized storage in response to determining that the third storage entity can satisfy the one or more quality of service requirements specified by the request; and

perform the I/O task through the three or more hierarchical layers of virtualized storage using the determined path by directing the first storage entity at the first layer of virtualized storage to communicate with the second storage entity at the second layer of virtualized storage to perform a first one or more of the plurality of I/O operations required by the task, and directing the second storage entity at the second layer of virtualized storage to communicate with the third storage entity at the third layer of virtualized storage to perform a second one or more of the plurality of I/O operations required by the task.

10. The computer-accessible storage medium of claim 9 , wherein the program instructions are further executable to:

at one or more of the first storage entity, the second storage entity, and the third storage entity:

aggregate storage of one or more logical or physical block storage devices to generate a virtualized block device; and

present the virtualized block device to a block device consumer at a higher layer of the three or more hierarchical layers of virtualized storage.

11. The computer-accessible storage medium of claim 9 ,

wherein the three or more hierarchical layers of virtualized storage includes a fourth layer of virtualized storage between the first layer and the second layer;

wherein the program instructions are executable to direct the first storage entity at the first layer to select the second storage entity at the second layer for inclusion in the path by bypassing the fourth layer of virtualized storage in order to satisfy the one or more quality of service requirements specified by the request.

12. The computer-accessible storage medium of claim 9 ,

wherein the one or more quality of service requirements specified by the request include a requirement for pre-fetching data for the I/O task.

13. The computer-accessible storage medium of claim 9 ,

wherein the one or more quality of service requirements specified by the request include a requirement for caching one or more blocks of data for the I/O task.

14. The computer-accessible storage medium of claim 9 , wherein the program instructions are executable to cause the first storage entity at the first layer of virtualized storage to receive the request to perform the I/O task from a software application that specifies the one or more quality of service requirements.

15. The computer-accessible storage medium of claim 9 , wherein the program instructions are executable to direct the second storage entity at the second layer of virtualized storage to:

obtain performance metrics; and

select the third storage entity at the third layer of virtualized storage for inclusion in the path in response to determining that the performance metrics indicate that the third storage entity can satisfy the one or more quality of service requirements.

16. The computer-accessible storage medium of claim 9 , wherein the program instructions are executable to direct the second storage entity at the second layer of virtualized storage to:

reserve use of the third storage entity at the third layer of virtualized storage for high-priority I/O tasks; and

select the third storage entity at the third layer of virtualized storage for inclusion in the path in response to determining that the one or more quality of service requirements indicate that the requested I/O task is a high-priority I/O task.

17. A method comprising:

at a first storage entity, receiving a request to perform an I/O task requiring a plurality of I/O operations, wherein the request specifies one or more quality of service requirements to be satisfied in performing the I/O task, wherein the first storage entity is one of a plurality of storage entities arranged in three or more hierarchical layers of virtualized storage including a first layer of virtualized storage, a second layer of virtualized storage, and a third layer of virtualized storage, wherein the first storage entity is at the first layer of virtualized storage;

in response to the request, determining a path through the three or more hierarchical layers of virtualized storage for performing the I/O task by:

selecting a second storage entity for inclusion in the path from among a plurality of storage entities at the second layer of virtualized storage in response to determining that the second storage entity can satisfy the one or more quality of service requirements specified by the request; and

selecting a third storage entity for inclusion in the path from among a plurality of storage entities at the third layer of virtualized storage in response to determining that the third storage entity can satisfy the one or more quality of service requirements specified by the request; and

performing the I/O task through the three or more hierarchical layers of virtualized storage using the determined path such that the first storage entity at the first layer of virtualized storage communicates with the second storage entity at the second layer of virtualized storage to perform a first one or more of the plurality of I/O operations required by the task, and the second storage entity at the second layer of virtualized storage communicates with the third storage entity at the third layer of virtualized storage to perform a second one or more of the plurality of I/O operations required by the task.

18. The method of claim 17 , further comprising:

at one or more of the first storage entity, the second storage entity, and the third storage entity:

aggregating storage of one or more logical or physical block storage devices to generate a virtualized block device; and

presenting the virtualized block device to a block device consumer at a higher layer of the three or more hierarchical layers of virtualized storage.

19. The method of claim 17 ,

wherein the three or more hierarchical layers of virtualized storage includes a fourth layer of virtualized storage between the first layer and the second layer;

wherein the first storage entity at the first layer selects the second storage entity at the second layer for inclusion in the path by bypassing the fourth layer of virtualized storage in order to satisfy the one or more quality of service requirements specified by the request.

20. The method of claim 17 ,

wherein the one or more quality of service requirements specified by the request include a requirement for pre-fetching data for the I/O task.

21. The method of claim 17 ,

wherein the one or more quality of service requirements specified by the request include a requirement for caching one or more blocks of data for the I/O task.

22. The method of claim 17 , wherein the first storage entity at the first layer of virtualized storage receives the request to perform the I/O task from a software application that specifies the one or more quality of service requirements.

23. The method of claim 17 , wherein the second storage entity at the second layer of virtualized storage operates to:

obtain performance metrics; and

select the third storage entity at the third layer of virtualized storage for inclusion in the path in response to determining that the performance metrics indicate that the third storage entity can satisfy the one or more quality of service requirements.

24. The method of claim 17 , wherein the second storage entity at the second layer of virtualized storage operates to:

reserve use of the third storage entity at the third layer of virtualized storage for high-priority I/O tasks; and

select the third storage entity at the third layer of virtualized storage for inclusion in the path in response to determining that the one or more quality of service requirements indicate that the requested I/O task is a high-priority I/O task.

Assignments (18)
SECURITY INTEREST Recorded Dec 12, 2025
From: ARCTERA US LLC
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 073951/0470 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 070530/0497 Recorded Dec 1, 2025
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0730 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 069585/0150 Recorded Dec 1, 2025
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0848 →
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC (F/K/A VERITAS US IP HOLDINGS LLC)
Reel/Frame 069712/0090 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
SECURITY INTEREST Recorded Dec 10, 2024
From: ARCTERA US LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 069563/0243 →
PATENT SECURITY AGREEMENT Recorded Dec 10, 2024
From: ARCTERA US LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069585/0150 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC
To: ARCTERA US LLC
Reel/Frame 069548/0468 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY IN PATENTS AT R/F 037891/0726 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS US IP HOLDINGS, LLC
Reel/Frame 054535/0814 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
MERGER AND CHANGE OF NAME Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC; VERITAS TECHNOLOGIES LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038455/0752 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037891/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037697/0412 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED ON REEL 019872 FRAME 979. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNEE IS SYMANTEC OPERATING CORPORATION. Recorded Mar 5, 2012
From: VERITAS OPERATING CORPORATION
To: SYMANTEC OPERATING CORPORATION
Reel/Frame 027819/0462 →
CHANGE OF NAME Recorded Sep 26, 2007
From: VERITAS OPERATING CORPORATION
To: SYMANTEC CORPORATION
Reel/Frame 019872/0979 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 20, 2005
From: KEKRE, ANAND A.; KULKARNI, PRADIP; PANCHBUDHE, ANKUR
To: VERITAS OPERATING CORPORATION
Reel/Frame 016715/0228 →