IP Library Granted Patent US 8,204,868
Granted Patent B1
US 8,204,868 · App. 12/165,496 · Granted Jun 19, 2012

Method and system for improving performance with single-instance-storage volumes by leveraging data locality

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 8,204,868
App. No.
12/165,496
Granted
Jun 19, 2012
Kind
B1
Abstract

A method and system for improving performance with single-instance-storage volumes by leveraging data locality is provided. A client provides a set of fingerprints generated from data segments to be saved to a single-instance storage volume and receives the information on whether a data segment exists on the single-instance storage volume and where it is stored if a data segment exists. Based on its received information, the client determines if a number of non-sequential accesses of a computer-readable medium for the set of segments from the single-instance-storage volume exceeds a predetermined threshold. If so, the client provides the whole set of data segments for storage within the single-instance storage volume regardless of whether or not the data segments are duplicate data segments. These sent data segments will be stored contiguously within the single-instance storage volume while the duplicates will be removed from their previous stored locations.

Claims (74)

1. A method comprising:

identifying a first set of storage locations that store a set of data segments, wherein

a single-instance-storage volume comprises the first set of storage locations, and

the single-instance-storage volume stores de-duplicated data segments;

determining if the number of disk seeks needed to retrieve each data segment of the set of data segments from the first set of storage locations exceeds a predetermined threshold, wherein

the set of data segments is contiguously accessed from a local storage volume, and

the number of disk seeks indicates the number of non-sequential accesses needed to retrieve the each data segment of the set of data segments from the first set of storage locations; and

providing all data segments in the set of data segments for contiguous storage in a second set of storage locations within the single-instance-storage volume, in response to determining that the number of disk seeks needed to retrieve the each data segment of the set of data segments from the first set of storage locations exceeds the predetermined threshold, wherein

the single-instance-storage volume comprises a duplicate of at least one of the data segments in the set of data segments.

2. The method of claim 1 , further comprising:

removing data segment content from the first set of storage locations; and

adding one or more pointers to the set of data segments to identify the second set of storage locations, wherein

the removing and adding are performed in response to determining that the number of disk seeks needed to retrieve the each data segment of the set of data segments from the first set of storage locations exceeds the predetermined threshold.

3. The method of claim 1 , further comprising:

in response to determining that the number of disk seeks needed to retrieve the each data segment of the set of data segments from the first set of storage locations does not exceed the predetermined threshold, providing only a subset of data segments among the set of data segments, wherein

the subset of data segments comprises data segments not already stored on the single-instance-storage volume.

4. The method of claim 3 , further comprising:

updating references to the set of data segments in the single-instance-storage volume.

5. The method of claim 1 , further comprising:

accessing a fingerprint-to-segment location mapping table to determine the first set of storage locations;

receiving the first set of storage locations; and

analyzing the first set of storage locations to determine the number of disk seeks needed to retrieve the each data segment of the set of data segments from the first set of storage locations.

6. A system comprising:

at least one processor;

an interconnect coupled to the at least one processor;

a network interface coupled to the at least one processor via the interconnect, wherein

the network interface enables the system to send data to and receive data from a single-instance-storage volume over a network; and

a computer-readable medium coupled to the at least one processor via the interconnect, wherein the computer-readable medium comprises instructions executable by the at least one processor and configured to:

identify a first set of storage locations that store a set of data segments, wherein

the single-instance-storage volume comprises the first set of storage locations, and

the single-instance storage volume stores de-duplicated data segments;

determine if the number of disk seeks needed to retrieve each data segment of the set of data segments from the first set of storage locations exceeds a predetermined threshold, wherein

the set of data segments is contiguously accessed from a local storage volume, and

the number of disk seeks indicates the number of non-sequential accesses needed to retrieve the each data segment of the set of data segments from the first set of storage locations; and

provide all data segments in the set of data segments for contiguous storage in a second set of storage locations within the single-instance-storage volume, in response to determining that the number of disk seeks needed to retrieve the each data segment of the set of data segments from the first set of storage locations exceeds the predetermined threshold, wherein

the single-instance-storage volume comprises a duplicate of at least one of the data segments in the set of data segments.

7. The system of claim 6 , wherein the instructions are further configured to:

remove data segment content from the first set of storage locations; and

add one or more pointers to the set of data segments to identify the second set of storage locations, wherein

the removing and adding are performed in response to determining that the number of disk seeks needed to retrieve the each data segment of the set of data segments from the first set of storage locations exceeds the predetermined threshold.

8. The system of claim 6 , wherein the instructions are further configured to:

in response to determining that the number of disk seeks needed to retrieve the each data segment of the set of data segments from the first set of storage locations does not exceed the predetermined threshold, provide only a subset of data segments among the set of data segments, wherein

the subset of data segments comprises data segments not already stored on the single-instance-storage volume.

9. The system of claim 6 , wherein the instructions are further configured to:

update references to the set of data segments in the single-instance-storage volume.

10. The system of claim 7 , wherein the instructions are further configured to:

access a fingerprint-to-segment location mapping table to determine the first set of storage locations;

receive the first set of storage locations; and

analyze the first set of storage locations to determine the number of disk seeks needed to retrieve the each data segment of the set of data segments from the first set of storage locations.

11. An apparatus comprising:

a memory;

a processor;

means for identifying a first set of storage locations that store a set of data segments, using the processor, wherein

a single-instance-storage volume comprises the first set of storage locations, and

the single-instance-storage volume stores de-duplicated data segments;

means for determining if the number of disk seeks needed to retrieve each data segment of the set of data segments from the first set of storage locations exceeds a predetermined threshold, using the processor, wherein

the set of data segments is contiguously accessed from a local storage volume, and

the number of disk seeks indicates the number of non-sequential accesses needed to retrieve the each data segment of the set of data segments from the first set of storage locations;

means for providing all data segments in the set of data segments for contiguous storage in a second set of storage locations within the single-instance-storage volume, using the processor, in response to determining that the number of disk seeks needed to retrieve the each data segment of the set of data segments from the first set of storage locations exceeds the predetermined threshold, wherein

the single-instance-storage volume comprises a duplicate of at least one of the data segments in the set of data segments; and

means for sending data to and receiving data from a single-instance-storage volume over a network, using the processor.

12. The apparatus of claim 11 , further comprising:

means for removing data segment content from the first set of storage locations, using the processor; and

means for adding one or more pointers to the set of data segments to identify the second set of storage locations, using the processor, wherein

the removing and adding are performed in response to determining that the number of disk seeks needed to retrieve the each data segment of the set of data segments from the first set of storage locations exceeds the predetermined threshold.

13. The apparatus of claim 11 , further comprising:

means for providing only a subset of data segments among the set of data segments, using the processor, in response to determining that the number of disk seeks needed to retrieve the each data segment of the set of data segments from the first set of storage locations does not exceed the predetermined threshold, wherein

the subset of data segments comprises data segments not already stored on the single-instance-storage volume.

14. The apparatus of claim 11 , further comprising:

means for updating references to the set of data segments in the single-instance-storage volume, using the processor.

15. The apparatus of claim 11 , further comprising:

means for accessing a fingerprint-to-segment location mapping table to determine the first set of storage locations, using the processor;

means for receiving the first set of storage locations, using the processor; and

means for analyzing the first set of storage locations to determine the number of disk seeks needed to retrieve the each data segment of the set of data segments from the first set of storage locations, using the processor.

Assignments (13)
AMENDMENT NO. 1 TO PATENT SECURITY AGREEMENT Recorded Apr 8, 2025
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 070779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2025
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 070335/0013 →
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 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 30, 2008
From: WU, WEIBAO; ZHANG, XIANBO
To: SYMANTEC OPERATING CORPORATION
Reel/Frame 021175/0055 →