IP Library Granted Patent US 10,831,721
Granted Patent B2
US 10,831,721 · App. 12/730,185 · Granted Nov 10, 2020

Virtualized data storage system architecture

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 10,831,721
App. No.
12/730,185
Granted
Nov 10, 2020
Kind
B2
Abstract

Virtual storage arrays consolidate branch data storage at data centers connected via wide area networks. Virtual storage arrays appear to storage clients as local data storage; however, virtual storage arrays actually store data at the data center. The virtual storage arrays overcomes bandwidth and latency limitations of the wide area network by predicting and prefetching storage blocks, which are then cached at the branch location. Virtual storage arrays leverage an understanding of the semantics and structure of high-level data structures associated with storage blocks to predict which storage blocks are likely to be requested by a storage client in the near future. Virtual storage arrays determine the association between requested storage blocks and corresponding high-level data structure entities to predict additional high-level data structure entities that are likely to be accessed. From this, the virtual storage array identifies the additional storage blocks for prefetching.

Claims (80)

1. A method, comprising:

in response to receiving a first read request for a first storage block, retrieving the first storage block from a cache or a storage device;

identifying a first high level data structure associated with the first storage block, wherein the first high level data structure is one of: a first file, a first directory, a first file system node, a first database, or a first row;

analyzing the first high level data structure to determine a second high level data structure that (1) is referenced in the first high level data structure, and (2) is likely to be associated with a future read request, wherein the second high level data structure is one of: a second file, a second directory, a second file system node, a second database, or a second row;

identifying a second storage block associated with the second high level data structure, wherein said identifying the second storage block comprises:

providing a first identifier of the second high-level data structure to an inferred storage structure database, and

receiving a second identifier of the second storage block from the inferred storage structure database;

in response to determining, by using a storage block access optimizer, that the second storage block is not present in the cache,

prefetching the second storage block from the storage device, and

storing the second storage block in the cache; and

in response to receiving a second read request for the second storage block, retrieving the second storage block from the cache.

2. The method of claim 1 , wherein the cache is in a first network location, wherein the storage device is in a second network location, and wherein the first network location is connected to the second network location by a wide area network.

3. The method of claim 1 , further comprising:

receiving, from a client, a write request to write an updated third storage block to the storage device;

in response to determining that the cache is full,

sending the updated third storage block to the storage device,

receiving a first write acknowledgement from the storage device, and

sending the first write acknowledgement to the client; and

in response to determining that the cache is not full,

storing the updated third storage block in the cache,

sending a second write acknowledgement to the client, and

sending the updated third storage block to the storage device.

4. The method of claim 1 , further comprising:

over a period of time that includes a set of snapshot times, receiving multiple write requests to write versions of a third storage block to the storage device; and

maintaining a latest version of the third storage block in the cache that was written to the cache before each snapshot time in the set of snapshot times.

5. The method of claim 4 , further comprising:

sending, to the storage device, the latest version of the third storage block in the cache that was written to the cache before each snapshot time in the set of snapshot times.

6. A non-transitory computer-readable storage medium storing instructions that, when executed by a processor, cause the processor to perform a method, comprising:

in response to receiving a first read request for a first storage block, retrieving the first storage block from a cache or a storage device;

identifying a first high level data structure associated with the first storage block, wherein the first high level data structure is one of: a first file, a first directory, a first file system node, a first database, or a first row;

analyzing the first high level data structure to determine a second high level data structure that (1) is referenced in the first high level data structure, and (2) is likely to be associated with a future read request, wherein the second high level data structure is one of: a second file, a second directory, a second file system node, a second database, or a second row;

identifying a second storage block associated with the second high level data structure, wherein said identifying the second storage block comprises:

providing a first identifier of the second high-level data structure to an inferred storage structure database, and

receiving a second identifier of the second storage block from the inferred storage structure database;

in response to determining, by using a storage block access optimizer, that the second storage block is not present in the cache,

prefetching the second storage block from the storage device, and storing the second storage block in the cache; and

in response to receiving a second read request for the second storage block, retrieving the second storage block from the cache.

7. The non-transitory computer-readable storage medium of claim 6 , wherein the cache is in a first network location, wherein the storage device is in a second network location, and wherein the first network location is connected to the second network location by a wide area network.

8. The non-transitory computer-readable storage medium of claim 6 , wherein the method further comprising:

receiving, from a client, a write request to write an updated third storage block to the storage device;

in response to determining that the cache is full,

sending the updated third storage block to the storage device,

receiving a first write acknowledgement from the storage device, and

sending the first write acknowledgement to the client; and in response to determining that the cache is not full,

storing the updated third storage block in the cache,

sending a second write acknowledgement to the client, and

sending the updated third storage block to the storage device.

9. The non-transitory computer-readable storage medium of claim 6 , wherein the method further comprising:

over a period of time that includes a set of snapshot times, receiving multiple write requests to write versions of a third storage block to the storage device; and

maintaining a latest version of the third storage block in the cache that was written to the cache before each snapshot time in the set of snapshot times.

10. The non-transitory computer-readable storage medium of claim 9 , wherein the method further comprising:

sending, to the storage device, the latest version of the third storage block in the cache that was written to the cache before each snapshot time in the set of snapshot times.

11. An apparatus, comprising:

a processor; and

a non-transitory computer-readable storage medium storing instructions that, when executed by the processor, cause the processor to perform a method, comprising: in response to receiving a first read request for a first storage block, retrieving the first storage block from a cache or a storage device;

identifying a first high level data structure associated with the first storage block, wherein the first high level data structure is one of: a first file, a first directory, a first file system node, a first database, or a first row;

analyzing the first high level data structure to determine a second high level data structure that (1) is referenced in the first high level data structure, and (2) is likely to be associated with a future read request, wherein the second high level data structure is one of: a second file, a second directory, a second file system node, a second database, or a second row;

identifying a second storage block associated with the second high level data structure, wherein said identifying the second storage block comprises:

providing a first identifier of the second high-level data structure to an inferred storage structure database, and

receiving a second identifier of the second storage block from the inferred storage structure database;

in response to determining, by using a storage block access optimizer, that the second storage block is not present in the cache,

prefetching the second storage block from the storage device, and

storing the second storage block in the cache; and

in response to receiving a second read request for the second storage block, retrieving the second storage block from the cache.

12. The apparatus of claim 11 , wherein the cache is in a first network location, wherein the storage device is in a second network location, and wherein the first network location is connected to the second network location by a wide area network.

13. The apparatus of claim 11 , wherein the method further comprising:

receiving, from a client, a write request to write an updated third storage block to the storage device;

in response to determining that the cache is full,

sending the updated third storage block to the storage device,

receiving a first write acknowledgement from the storage device, and

sending the first write acknowledgement to the client; and

in response to determining that the cache is not full,

storing the updated third storage block in the cache,

sending a second write acknowledgement to the client, and

sending the updated third storage block to the storage device.

14. The apparatus of claim 11 , wherein the method further comprising:

over a period of time that includes a set of snapshot times, receiving multiple write requests to write versions of a third storage block to the storage device; and

maintaining a latest version of the third storage block in the cache that was written to the cache before each snapshot time in the set of snapshot times.

15. The apparatus of claim 14 , wherein the method further comprising:

sending, to the storage device, the latest version of the third storage block in the cache that was written to the cache before each snapshot time in the set of snapshot times.

Assignments (18)
RELEASE OF SECURITY INTEREST Recorded Aug 11, 2023
From: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC; RIVERBED HOLDINGS, INC.
Reel/Frame 064673/0739 →
CHANGE OF NAME Recorded Feb 18, 2022
From: RIVERBED TECHNOLOGY, INC.
To: RIVERBED TECHNOLOGY LLC
Reel/Frame 059232/0551 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS U.S. COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0169 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0046 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0108 →
SECURITY INTEREST Recorded Dec 10, 2021
From: RIVERBED TECHNOLOGY LLC (FORMERLY RIVERBED TECHNOLOGY, INC.); ATERNITY LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS U.S. COLLATERAL AGENT
Reel/Frame 058486/0216 →
PATENT SECURITY AGREEMENT Recorded Oct 27, 2021
From: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 057943/0386 →
PATENT SECURITY AGREEMENT SUPPLEMENT - FIRST LIEN Recorded Oct 14, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 057810/0502 →
PATENT SECURITY AGREEMENT SUPPLEMENT - SECOND LIEN Recorded Oct 14, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
Reel/Frame 057810/0559 →
RELEASE OF SECURITY INTEREST IN PATENTS RECORED AT REEL 056397, FRAME 0750 Recorded Oct 13, 2021
From: MACQUARIE CAPITAL FUNDING LLC
To: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 057983/0356 →
SECURITY INTEREST Recorded May 26, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: MACQUARIE CAPITAL FUNDING LLC
Reel/Frame 056397/0750 →
PATENT SECURITY AGREEMENT Recorded Mar 5, 2021
From: RIVERBED TECHNOLOGY, INC.
To: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
Reel/Frame 055514/0249 →
CORRECTIVE ASSIGNMENT TO CORRECT THE CONVEYING PARTY NAME PREVIOUSLY RECORDED ON REEL 035521 FRAME 0069. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST IN PATENTS. Recorded Jun 2, 2015
From: JPMORGAN CHASE BANK, N.A.
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 035807/0680 →
SECURITY INTEREST Recorded May 1, 2015
From: RIVERBED TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 035561/0363 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Apr 28, 2015
From: BARCLAYS BANK PLC
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 035521/0069 →
PATENT SECURITY AGREEMENT Recorded Dec 27, 2013
From: RIVERBED TECHNOLOGY, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 032421/0162 →
RELEASE OF PATENT SECURITY INTEREST Recorded Dec 26, 2013
From: MORGAN STANLEY & CO. LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 032113/0425 →
SECURITY AGREEMENT Recorded Dec 20, 2012
From: RIVERBED TECHNOLOGY, INC.; OPNET TECHNOLOGIES, INC.
To: MORGAN STANLEY & CO. LLC
Reel/Frame 029646/0060 →