IP Library Granted Patent US 7,844,775
Granted Patent B2
US 7,844,775 · App. 11/524,666 · Granted Nov 30, 2010

Distribution of data in a distributed shared storage system

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,844,775
App. No.
11/524,666
Granted
Nov 30, 2010
Kind
B2
Abstract

Segments or blocks of a file can be distributed among an number n of storage units by using a function of sequentially assigned segment identifiers for each segment, where the function is reduced modulo n, so long as the function is not congruent to segment identifier, modulo n, for any given segment identifier. An example of such a function, where n is the number of storage units and k is a segment identifier, is f(k)=ak+b, where a is relatively prime to n. Such a function can be computed quickly for any given segment. As the list of storage units changes, data may be redistributed using a new mapping of segments to storage units. Any new mapping can be restricted so that segments only move to a new storage unit or from an old storage unit, and not from one existing storage unit to another. In this way, the amount of data to be moved is limited. A chain of the lists of available storage units, as that list changes over time, is maintained to permit the history of file mappings to be recreated.

Claims (27)

1. A distributed shared storage system, comprising:

a plurality of client systems;

a plurality of independent storage units for storing a plurality of files, each file comprising a plurality of segments of data, each of the plurality of segments being identified by a file identifier corresponding to the file from which that segment originates and a segment identifier;

wherein a client requests a segment of data by providing the segment identifier corresponding to the requested segment and the file identifier corresponding to the requested segment;

wherein for each of the plurality of files, segments of the file are distributed among the plurality of storage units by using a mapping based on a linear function of the segment identifier for each segment, wherein the function is reduced modulo n, wherein n is the number of independent storage units in the distributed shared storage system, and wherein,

a segment identified by segment identifier i of the file is mapped onto storage element e in accordance with a formula

e =( s+ik )mod n,

 wherein s is an offset, and k is a stride, wherein the offset and the stride are generated from a seed value associated with the file, and k is relatively prime to n,

2. The distributed shared storage system of claim 1 , wherein the formula is used to provide an index into a list of the n storage units.

3. The distributed shared storage system of claim 1 , wherein addition of a new storage unit to the plurality of storage units or removal of one of the plurality of storage units causes data to be redistributed using a new mapping of segments to storage units.

4. The distributed shared storage system of claim 3 , wherein, if a new storage unit is added, the new mapping causes at least one of the plurality of segments to move to the new storage unit from one of the plurality of storage units, without causing segments to move from one of the plurality of storage units to another one of the plurality of storage units.

5. The distributed shared storage system of claim 2 , wherein a chain of lists of available storage units is maintained as storage units are added or removed.

6. The distributed storage system of claim 3 , wherein if one of the plurality of storage units is removed, the new mapping causes the segments stored on the removed storage unit to be mapped onto the remaining ones of the plurality of storage units without mapping segments from one of the remaining ones of the plurality of storage units to another one of the remaining ones of the plurality of storage units.

7. A method of storing a data file on a plurality of computer-readable storage units, the data file comprising a plurality of segments, each segment being identified by a segment identifier, the method comprising:

for each of the plurality of segments, mapping that segment to one of the plurality of storage units wherein the mapping is based on a linear function of the corresponding segment identifier, wherein the function is reduced modulo n,

wherein n is the number of storage units in the plurality of computer-readable storage units;

generating a seed value;

generating an offset value s and a stride value k, wherein s and k are derived from the seed value, wherein the offset value is a whole number greater than or equal to 1 and less than or equal to n, and wherein k is a whole number that is relatively prime to n;

wherein the mapping is e=(s+ik)mod n, wherein e identifies the storage unit to which a segment having segment identifier i is mapped; and

storing the segment on the storage unit to which it is mapped.

8. The method of claim 7 , further comprising storing a plurality of data files on the plurality of computer-readable storage units, the plurality of data files including the first-mentioned data file, wherein storing each of the plurality of data files involves mapping the segments of that data file to the plurality of storage units based on a corresponding linear function associated with that data file.

9. The method of claim 8 , further comprising for each of the plurality of data files, generating a corresponding seed value to be associated with that data file and using the seed value to generate an offset value s and a stride value k corresponding to that data file, wherein the offset value is a whole number greater than or equal to 1 and less than or equal to n, and wherein k is a whole number that is relatively prime to n, wherein the mapping for that file is e=(s+ik)mod n, wherein e identifies the storage unit to which a segment having segment identifier i is mapped.

10. The method of claim 9 , further comprising generating an index into a list of the plurality of storage units using the file mappings.

11. The method of claim 7 , wherein if a new storage unit is added to the plurality of storage units or one of the plurality of storage units is removed, redistributing the segments among the plurality of storage units using a new mapping.

12. The method of claim 11 , wherein, if a new storage unit is added, the new mapping maps at least one of the plurality of segments to the new storage unit without mapping segments from one of the plurality of storage units to another one of the plurality of storage units.

13. The method of claim 11 , wherein if one of the plurality of storage units is removed, the new mapping maps the segments stored on the removed storage unit onto the remaining ones of the plurality of storage units without mapping segments from one of the remaining ones of the plurality of storage units to another one of the remaining ones of the plurality of storage units.

14. The method of claim 11 , further comprising maintaining a chain of lists of available storage units as storage units are added or removed.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 054900/0716) Recorded Nov 8, 2023
From: JPMORGAN CHASE BANK, N.A.
To: AVID TECHNOLOGY, INC.
Reel/Frame 065523/0146 →
PATENT SECURITY AGREEMENT Recorded Nov 8, 2023
From: AVID TECHNOLOGY, INC.
To: SIXTH STREET LENDING PARTNERS, AS ADMINISTRATIVE AGENT
Reel/Frame 065523/0194 →
SECURITY INTEREST Recorded Jan 5, 2021
From: AVID TECHNOLOGY, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 054900/0716 →
RELEASE OF SECURITY INTEREST Recorded Jan 5, 2021
From: CERBERUS BUSINESS FINANCE, LLC
To: AVID TECHNOLOGY, INC.
Reel/Frame 055731/0019 →
RELEASE OF SECURITY INTEREST IN UNITED STATES PATENTS Recorded Mar 1, 2016
From: KEYBANK NATIONAL ASSOCIATION
To: AVID TECHNOLOGY, INC.
Reel/Frame 037970/0201 →
ASSIGNMENT FOR SECURITY -- PATENTS Recorded Feb 26, 2016
From: AVID TECHNOLOGY, INC.
To: CERBERUS BUSINESS FINANCE, LLC, AS COLLATERAL AGENT
Reel/Frame 037939/0958 →
RELEASE OF SECURITY INTEREST Recorded Jun 30, 2015
From: WELLS FARGO CAPITAL FINANCE, LLC
To: AVID TECHNOLOGY INC.; AVID SYSTEMS, INC.
Reel/Frame 036037/0693 →
PATENT SECURITY AGREEMENT Recorded Jun 23, 2015
From: AVID TECHNOLOGY, INC.
To: KEYBANK NATIONAL ASSOCIATION, AS THE ADMINISTRATIVE AGENT
Reel/Frame 036008/0824 →
SECURITY AGREEMENT Recorded Nov 9, 2010
From: AVID TECHNOLOGY, INC.; PINNACLE SYSTEMS, INC.
To: WELLS FARGO CAPITAL FINANCE, LLC, AS AGENT
Reel/Frame 025675/0413 →