IP Library Granted Patent US 11,593,319
Granted Patent B2
US 11,593,319 · App. 16/849,888 · Granted Feb 28, 2023

Virtualized data storage system architecture

Inventors: David Tze-Si Wu (San Francisco, CA); Steven McCanne (Berkeley, CA); Michael J. Demmer (San Francisco, CA); Nitin Gupta (Fremont, CA)
Assignee: Riverbed Technology, Inc.
G06F16/188G06F12/0862G06F16/172G06F3/067G06F3/0643G06F3/0653G06F2212/6024
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 11,593,319
App. No.
16/849,888
Granted
Feb 28, 2023
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 (47)

1. A method of optimizing a block storage protocol write access to a block storage device via a wide area network, the method comprising:

receiving a sequence of storage block write operations;

selecting, by using a processor, a first storage block write operation included in the sequence of storage block write operations, wherein the first storage block operation includes a first version of a storage block;

determining whether the sequence of storage block write operations includes a second storage block write operation including a second version of the storage block, wherein the second storage block write operation is more recent than the first storage block write operation, and wherein the determining whether the sequence of storage block write operations includes the second storage block write operation including the second version of the storage block comprises searching the sequence of storage block write operations from a time associated with the first storage block write operation up to a snapshot time;

in response to the determination that the sequence of storage block write operations does not include the second storage block write operation including the second version of the storage block, communicating the first version of the storage block via a wide area network to a data storage connected with the wide area network at a first network location;

in response to the determination that the sequence of storage block write operations includes the second storage block write operation including the second version of the storage block, communicating the second version of the storage block via the wide area network to the data storage;

determining whether the sequence of storage block write operations after the snapshot time includes a third storage block write operation including a third version of the storage block, wherein the third storage block write operation is more recent than the second storage block write operation; and

in response to the determination that the sequence of storage block write operations includes the third storage block write operation including the third version of the storage block, communicating the third version of the storage block via the wide area network to the data storage.

2. The method of claim 1 , comprising:

in response to receiving the sequence of storage block requests, caching the sequence of storage block requests in a storage block cache; and

following the communication of the second version of the storage block to the data storage, removing the first storage block write operation and the first version of the storage block from the storage block cache.

3. The method of claim 2 , wherein the storage block cache is connected with the wide-area network at a second network location, the method comprising:

following the communication of the second version of the storage block to the data storage, retaining the first version of the storage block in the storage block cache for read access by a storage client connected with the wide-area network at the second location.

4. The method of claim 1 , wherein the determining whether the sequence of storage block write operations includes the second storage block write operation including the second version of the storage block comprises:

searching the sequence of storage block write operations from a time associated with the first storage block write operation up to an end of the sequence of storage block write operations.

5. A non-transitory computer-readable storage medium storing instructions that, when executed by a computer, cause the computer to perform a method of optimizing a block storage protocol write access to a block storage device via a wide area network, the method comprising:

receiving a sequence of storage block write operations;

selecting a first storage block write operation included in the sequence of storage block write operations, wherein the first storage block operation includes a first version of a storage block;

determining whether the sequence of storage block write operations includes a second storage block write operation including a second version of the storage block, wherein the second storage block write operation is more recent than the first storage block write operation, and wherein the determining whether the sequence of storage block write operations includes the second storage block write operation including the second version of the storage block comprises searching the sequence of storage block write operations from a time associated with the first storage block write operation up to a snapshot time;

in response to the determination that the sequence of storage block write operations does not include the second storage block write operation including the second version of the storage block, communicating the first version of the storage block via a wide area network to a data storage connected with the wide area network at a first network location;

in response to the determination that the sequence of storage block write operations includes the second storage block write operation including the second version of the storage block, communicating the second version of the storage block via the wide area network to the data storage;

determining whether the sequence of storage block write operations after the snapshot time includes a third storage block write operation including a third version of the storage block, wherein the third storage block write operation is more recent than the second storage block write operation; and

in response to the determination that the sequence of storage block write operations includes the third storage block write operation including the third version of the storage block, communicating the third version of the storage block via the wide area network to the data storage.

6. The non-transitory computer-readable storage medium of claim 5 , comprising:

in response to receiving the sequence of storage block requests, caching the sequence of storage block requests in a storage block cache; and

following the communication of the second version of the storage block to the data storage, removing the first storage block write operation and the first version of the storage block from the storage block cache.

7. The non-transitory computer-readable storage medium of claim 6 , wherein the storage block cache is connected with the wide-area network at a second network location, the method comprising:

following the communication of the second version of the storage block to the data storage, retaining the first version of the storage block in the storage block cache for read access by a storage client connected with the wide-area network at the second location.

8. The non-transitory computer-readable storage medium of claim 5 , wherein the determining whether the sequence of storage block write operations includes the second storage block write operation including the second version of the storage block comprises:

searching the sequence of storage block write operations from a time associated with the first storage block write operation up to an end of the sequence of storage block write operations.

9. An apparatus, comprising:

a processor; and

a non-transitory computer-readable storage medium storing instructions that, when executed by the processor, cause the apparatus to perform a method of optimizing a block storage protocol write access to a block storage device via a wide area network, the method comprising:

receiving a sequence of storage block write operations;

selecting a first storage block write operation included in the sequence of storage block write operations, wherein the first storage block operation includes a first version of a storage block;

determining whether the sequence of storage block write operations includes a second storage block write operation including a second version of the storage block, wherein the second storage block write operation is more recent than the first storage block write operation, and wherein the determining whether the sequence of storage block write operations includes the second storage block write operation including the second version of the storage block comprises searching the sequence of storage block write operations from a time associated with the first storage block write operation up to a snapshot time;

in response to the determination that the sequence of storage block write operations does not include the second storage block write operation including the second version of the storage block, communicating the first version of the storage block via a wide area network to a data storage connected with the wide area network at a first network location;

in response to the determination that the sequence of storage block write operations includes the second storage block write operation including the second version of the storage block, communicating the second version of the storage block via the wide area network to the data storage;

determining whether the sequence of storage block write operations after the snapshot time includes a third storage block write operation including a third version of the storage block, wherein the third storage block write operation is more recent than the second storage block write operation; and

in response to the determination that the sequence of storage block write operations includes the third storage block write operation including the third version of the storage block, communicating the third version of the storage block via the wide area network to the data storage.

10. The apparatus of claim 9 , comprising:

in response to receiving the sequence of storage block requests, caching the sequence of storage block requests in a storage block cache; and

following the communication of the second version of the storage block to the data storage, removing the first storage block write operation and the first version of the storage block from the storage block cache.

11. The apparatus of claim 10 , wherein the storage block cache is connected with the wide-area network at a second network location, the apparatus comprising:

following the communication of the second version of the storage block to the data storage, retaining the first version of the storage block in the storage block cache for read access by a storage client connected with the wide-area network at the second location.

12. The apparatus of claim 9 , wherein the determining whether the sequence of storage block write operations includes the second storage block write operation including the second version of the storage block comprises:

searching the sequence of storage block write operations from a time associated with the first storage block write operation up to an end of the sequence of storage block write operations.

Assignments (12)
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: 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: 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: 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 - 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 →
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 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 23, 2020
From: WU, DAVID; MCCANNE, STEVEN; DEMMER, MICHAEL J.; GUPTA, NITIN
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 052481/0327 →
Continuity (3)
Division 12730185 · Mar 23, 2010
Provisional Application 61162463 · Mar 23, 2009
Related Publication 20200242088A1 · Jul 30, 2020