IP Library Granted Patent US 7,386,662
Granted Patent B1
US 7,386,662 · App. 11/156,846 · Granted Jun 10, 2008

Coordination of caching and I/O management 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,386,662
App. No.
11/156,846
Granted
Jun 10, 2008
Kind
B1
Abstract

Systems and methods are disclosed for performing cache and I/O management in a multi-layer storage virtualization environment. Block virtualization may be implemented at various layers, each with one or more storage entities. One storage entity may coordinate and leverage the cache and the caching mechanism available with another storage entity. The storage entities may be at the same layer (horizontal cache coordination) or at different layers (vertical cache coordination). Cache coordination may include application-assisted read-ahead.

Claims (55)

1. A system comprising:

a first layer of virtualized storage, wherein the first layer of virtualized storage comprises a first storage entity; and

a second layer of virtualized storage, wherein the second layer of virtualized storage comprises a second storage entity;

wherein the first storage entity is configured to request the second storage entity to store data in a cache, wherein the cache is managed by the second storage entity, and wherein the cache is readable by the first storage entity.

2. The system of claim 1 ,

wherein the first storage entity or the second storage entity comprises a host.

3. The system of claim 1 ,

wherein the first storage entity or the second storage entity comprises a storage appliance.

4. The system of claim 1 ,

wherein the first storage entity or the second storage entity comprises a switch.

5. The system of claim 1 ,

wherein the first storage entity or the second storage entity comprises a disk array.

6. The system of claim 1 , further comprising:

a third layer of virtualized storage, wherein the third layer of virtualized storage comprises a third storage entity, and wherein an I/O path from the first storage entity to the second storage entity comprises the third storage entity;

wherein the first storage entity is configured to request the third storage entity to store the data in an additional cache, wherein the additional cache is managed by the third storage entity, and wherein the additional cache is readable by the first storage entity;

wherein the second storage entity is configured to stop storing the data in the cache in response to storage of the data in the additional cache.

7. The system of claim 1 ,

wherein the first storage entity is configured to identify a region of storage comprising a block of data likely to be accessed by the first storage entity; and

wherein the first storage entity is configured to request the second storage entity to pre-fetch the block of data from the region of storage and store the data in the cache.

8. The system of claim 7 ,

wherein the second storage entity is configured to determine whether to pre-fetch the data from the region of storage based on a current load level at the second storage entity.

9. The system of claim 7 ,

wherein the second storage entity is configured to determine whether to pre-fetch the data from the region of storage based on an estimated expense of the prefetch operation.

10. The system of claim 1 ,

wherein the second storage entity is configured to identify a block of data likely to be accessed by the first storage entity, pre-fetch the block of data and store the block in the cache.

11. The system of claim 1 ,

wherein the first layer of virtualized storage comprises a third storage entity; and

wherein the first storage entity is configured to request the third storage entity to store additional data in an additional cache, wherein the additional cache is managed by the third storage entity, and wherein the additional cache is readable by the first storage entity.

12. The system of claim 11 ,

wherein the first storage entity is configured to identify a region of storage comprising one or more blocks of data likely to be accessed by the first storage entity; and

wherein the first storage entity is configured to request the third storage entity to pre-fetch the data from the region of storage and store the data in the additional cache.

13. The system of claim 1 , further comprising:

a cache manager configured to provide information to the first storage entity indicative of a caching capability of the second storage entity.

14. A method, comprising:

a first storage entity requesting a second storage entity to store data in a cache managed by the second storage entity, wherein a first layer of virtualized storage comprises the first storage entity, and wherein a second layer of virtualized storage comprises the second storage entity; and

the first storage entity reading the data from the cache.

15. The method of claim 14 , further comprising:

the first storage entity requesting a third storage entity to store the data in an additional cache, wherein a third layer of virtualized storage comprises the third storage entity, wherein an I/O path from the first storage entity to the second storage entity comprises the third storage entity, wherein the additional cache is managed by the third storage entity, and wherein the additional cache is readable by the first storage entity; and

the second storage entity discontinuing storing the data in the cache in response to the first storage entity requesting the third storage entity to store the data in the additional cache.

16. The method of claim 14 , further comprising:

identifying a region of storage comprising one or more blocks of data likely to be accessed by the first storage entity;

the second storage entity pre-fetching the one or more blocks of data from the region of storage; and

the second storage entity storing the data in the cache.

17. The method of claim 14 , further comprising:

the first storage entity requesting a third storage entity to store additional data in an additional cache, wherein the additional cache is managed by the third storage entity, wherein the first layer of virtualized storage comprises the third storage entity, and wherein the additional cache is readable by the first storage entity.

18. A computer-accessible storage medium storing program instructions, wherein the program instructions are computer-executable to:

send a request from a first storage entity to a second storage entity to store data in a cache managed by the second storage entity, wherein a first layer of virtualized storage comprises the first storage entity, and wherein a second layer of virtualized storage comprises the second storage entity; and

reading the data at the first storage entity from the cache.

19. The computer-accessible storage medium of claim 18 , wherein the instructions are further computer-executable to:

send a request from the first storage entity to a third storage entity to store the data in an additional cache, wherein a third layer of virtualized storage comprises the third storage entity, wherein an I/O path from the first storage entity to the second storage entity comprises the third storage entity, wherein the additional cache is managed by the third storage entity, and wherein the additional cache is readable by the first storage entity; and

discontinue storing the data in the cache managed by the second storage entity in response to the first storage entity requesting the third storage entity to store the data in the additional cache.

20. The computer-accessible storage medium of claim 18 , wherein the instructions are further computer-executable to:

identify a region of storage comprising one or more blocks of data likely to be accessed by the first storage entity;

pre-fetch the one or more blocks of data at the second storage entity from the region of storage; and

store the data in the cache managed by the second storage entity.

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
To: VERITAS OPERATING CORPORATION
Reel/Frame 016715/0188 →