IP Library Granted Patent US 9,317,377
Granted Patent B1
US 9,317,377 · App. 13/070,064 · Granted Apr 19, 2016

Single-ended deduplication using cloud storage protocol

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 9,317,377
App. No.
13/070,064
Granted
Apr 19, 2016
Kind
B1
Abstract

A single-ended optimized storage protocol enables storage clients or other devices to direct a remote data storage to copy data. In response to commands via the protocol, a remote data storage can copy portions of a data stream at the remote data storage to destination storage locations within the same or a different data stream. The protocol may be utilized for optimized transfer of data via a network to a remote data storage. An initial data stream is divided into segments. Redundant segments are removed from the data stream to form an optimized data stream, which is transferred to the remote data storage. Commands are issued to the remote data storage using the protocol to direct the remote data storage to reconstruct the initial data stream at the remote data storage using the optimized data stream and optionally segments from other data streams previously transferred to the remote data storage.

Claims (54)

1. A method of transferring data to a remote data storage, the method comprising:

dividing, at a first network location, at least a portion of a first data stream into segments;

identifying a first segment in the first data stream that is a duplicate of a second segment in a second data stream, wherein the second data stream is stored in a remote data storage at a second network location;

removing, at the first network location, at least the first segment from the first data stream to form an optimized data stream;

recording, at the first network location, an identity and location of at least the first segment within the first data stream;

transferring the optimized data stream from the first network location to the remote data storage at the second network location;

generating, at the first network location, a copy command that at least identifies the second data stream, a source location of the second segment within the second data stream, a source length of the second segment, and a destination location of the removed first segment within the optimized data stream, wherein the recorded identity and location of the first segment within the first data stream is used to generate the copy command; and

sending the copy command from the first network location to the remote data storage at the second network location, wherein the remote data storage executes the copy command which causes the remote data storage to copy the second segment from the source location in the second data stream to the destination location in the optimized data stream, thereby reconstructing the first data stream in the remote data storage at the second network location without transferring any portion of the optimized data stream or the first segment back to the first network location, and wherein the remote data storage does not require an optimization device to reconstruct the first data stream.

2. The method of claim 1 , wherein the identified second data stream is the first data stream, and wherein, upon receiving the copy command, the remote data storage copies the second segment stored by the remote data storage to at least one destination location in the optimized data stream.

3. The method of claim 2 , wherein the first segment is included in the optimized data stream.

4. The method of claim 2 , wherein the first segment is included in a second data stream previously transferred to the remote data storage.

5. The method of claim 2 , wherein the first segment is protected from modification and deletion by an additional storage client.

6. The method of claim 2 , wherein the first segment is hidden from an additional storage client.

7. The method of claim 1 , wherein identifying the portion of segments that are redundant comprises:

determining a data characterization for each of the segments of the first data stream; and

comparing the data characterizations with data characterizations of previously processed segments to identify segments of the first data stream matching previously processed segments.

8. The method of claim 7 , wherein comparing the data characterizations of previously processed segments comprises:

accessing first records of the data characterizations stored at the first network location.

9. The method of claim 8 , wherein the first records are associated with second records identifying storage locations at the remote data storage of the previously processed segments.

10. The method of claim 7 , wherein comparing the data characterizations of previously processed segments comprises:

accessing metadata including the data characterizations from the remote data storage, wherein the metadata is associated with previously processed segments stored by the remote data storage.

11. The method of claim 10 , wherein the metadata identifies the previously processed segments stored by the remote data storage.

12. The method of claim 1 , wherein identifying the portion of segments that are redundant comprises:

comparing contents of the segments of the first data stream with contents of previously processed segments to identify segments of the first data stream matching previously processed segments.

13. The method of claim 1 , wherein removing at least the first segment from the first data stream to form an optimized data stream comprises:

replacing the first segment with easily compressed data.

14. The method of claim 13 , wherein the easily compressed data is equal in size to its corresponding segment that is removed from the first data stream.

15. The method of claim 1 , wherein the first network location is connected with the second network location including the remote data storage via a wide-area network.

16. The method of claim 1 , wherein the copy command does not include any portion of the first data stream.

17. The method of claim 2 , wherein the copy command includes a source offset and a source ending offset instead of a source location and source length, respectively, of the first segment in the second data stream.

18. The method of claim 2 , wherein the copy command includes at a destination offset specifying the destination location.

19. The method of claim 1 , wherein the copy command is communicated via a web services protocol.

20. The method of claim 1 , wherein the first data stream is received from a storage client.

21. The method of claim 20 , wherein the first data stream is received via a web services protocol.

22. The method of claim 20 , wherein the first data stream is received via a file protocol.

23. The method of claim 22 , wherein the first data stream is received via a block based storage protocol.

24. The method of claim 2 , wherein a single generated copy command is to restore a single data segment to the optimized data stream.

25. A non-transitory computer-readable storage medium storing instructions that, when executed by a computer, cause the computer to perform a method for transferring data to a remote data storage, the method comprising:

dividing, at a first network location, at least a portion of a first data stream into segments;

identifying a first segment in the first data stream that is a duplicate of a second segment in a second data stream, wherein the second data stream is stored in a remote data storage at a second network location;

removing, at the first network location, at least the first segment from the first data stream to form an optimized data stream; recording, at the first network location, an identity and location of at least the first segment within the first data stream;

transferring the optimized data stream from the first network location to the remote data storage at a second network location;

generating, at the first network location, a copy command that at least identifies data stream, a source location of the second segment within the second data stream, a source length of the second segment, and a destination location of the removed first segment within the optimized data stream, wherein the recorded identity and location of the first segment within the first data stream is used to generate the copy command; and

sending the copy command from the first network location to the remote data storage at the second network location, wherein the remote data storage executes the copy command which causes the remote data storage to copy the second segment from the source location in the second data stream to the destination location in the optimized data stream, thereby reconstructing the first data stream in the remote data storage at the second network location without transferring any portion of the optimized data stream or the first segment back to the first network location, and wherein the remote data storage does not require an optimization device to reconstruct the first data stream.

26. An apparatus for transferring data to a remote data storage, the apparatus comprising:

a processor; and

a memory storing instructions executable by the processor, the instructions comprising:

instructions to divide, at a first network location, at least a portion of a first data stream into segments;

instructions to identify a first segment in the first data stream that is a duplicate of a second segment in a second data stream, wherein the second data stream is stored in a remote data storage at a second network location;

instructions to remove, at the first network location, at least the first segment from the first data stream to form an optimized data stream;

instructions to record, at the first network location, an identity and location of at least the first segment within the first data stream;

instructions to transfer the optimized data stream from the first network location to the remote data storage at the second network location;

instructions to generate, at the first network location, a copy command that at least identifies the second data stream, a source location of the second segment within the second data stream, a source length of the second segment, and a destination location within the optimized data stream, wherein the recorded identity and location of the first segment within the first data stream is used to generate the copy command; and

instructions to send the copy command from the first network location to the remote data storage, wherein the remote data storage executes the copy command which causes the remote data storage to copy the second segment from the source location in the second data stream to the destination location in the optimized data stream, thereby reconstructing the first data stream in the remote data storage at the second network location without transferring any portion of the optimized data stream or the first segment back to the first network location, and wherein the remote data storage does not require an optimization device to reconstruct the first data stream.

Assignments (19)
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: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0108 →
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 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 7, 2011
From: WU, DAVID TZE-SI; CHO, JOHN S.
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 026558/0505 →