IP Library Granted Patent US 8,209,363
Granted Patent B2
US 8,209,363 · App. 12/218,200 · Granted Jun 26, 2012

File system adapted for use with a dispersed data storage network

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,209,363
App. No.
12/218,200
Granted
Jun 26, 2012
Kind
B2
Abstract

A file system interface to a dispersed data storage network is disclosed. The disclosed interface accepts read and write commands from a file system resident on a user's computer and generates network commands that are forwarded to slice servers that form the storage component of the dispersed data storage network. The slice servers then fulfill the read and write commands.

Claims (108)

1. A method for execution by a computer, the method comprising the steps of:

receiving a request to access a data segment based on a file object identifier, wherein the data segment is encoded into a plurality of data slices that is dispersedly stored on a plurality of slice servers, wherein the data segment is reconstructable from a threshold number of the plurality of data slices;

in response to the request, determining whether an object associated with the file object identifier is cached, wherein the object includes one or more directory objects and one or more associated metadata objects;

when the object is not cached, requesting the object from at least some of the plurality of slice servers by:

requesting a root directory object based on a file vault associated with the data segment, wherein the root directory object includes information that points to a root directory metadata object and information that points to the plurality of slice servers, an intervening directory object, or to a file directory object;

when the root directory object includes the information that points to the plurality of slice servers, requesting the root directory metadata object;

when the root directory object includes the information that points to the intervening directory object:

requesting the intervening directory object based on the information that points to the intervening directory object, wherein the intervening directory object includes information that points to an intervening directory metadata object and information that points to another intervening directory object or to the file directory object; and

requesting the intervening directory metadata object based on the information pointing to the intervening directory metadata object;

when the file directory object is pointed to:

requesting the file directory object based on the information that points to the file directory object, wherein the file directory object includes information that points to a file directory metadata object and information that points to the plurality of slice servers storing the data segment; and

requesting the file directory metadata object based on the information pointing to the file directory metadata object;

receiving object slices of the object from slice servers of the at least some of the slice servers, wherein the object is encoded into a plurality of object slices;

when at least a threshold number of object slices is received, reconstructing the object from the at least the threshold number of object slices, wherein the threshold number of object slices is less than the plurality of object slices;

caching the object to produce a cached object; and

requesting access to the data segment from the plurality of slice servers based on the cached object.

2. The method of claim 1 , wherein the one or more directory objects comprises:

a root directory object that includes information that points to a next directory object and includes information that points to a root directory metadata object; and

a file directory object that includes identity of the plurality of slice servers and information that points to a file directory metadata object, wherein the one or more metadata objects includes the root directory metadata object and the file directory metadata object.

3. The method of claim 2 , wherein the object further comprises: at least one intervening directory object that includes information that points to another next directory object and information that points to an intervening directory metadata object.

4. The method of claim 1 further comprises at least one of:

in response to requesting the root directory object:

receiving root directory slices from slice servers of the at least some of the slice servers;

when a threshold number of root directory slices is received, reconstructing the root directory object from the threshold number of root directory slices; and

caching the root directory object to produce a cached root directory object;

in response to requesting the root directory metadata object:

receiving root directory metadata slices from slice servers of the at least some of the slice servers;

when a threshold number of root directory metadata slices is received, reconstructing the root directory metadata object from the threshold number of root directory slices; and

caching the root directory metadata object to produce a cached root directory metadata object;

in response to requesting the intervening directory object:

receiving intervening directory slices from slice servers of the at least some of the slice servers;

when a threshold number of intervening directory slices is received, reconstructing the intervening directory object from the threshold number of intervening directory slices; and

caching the intervening directory object to produce a cached intervening directory object;

in response to requesting the intervening directory metadata object:

receiving intervening directory metadata slices from slice servers of the at least some of the slice servers;

when a threshold number of intervening directory metadata slices is received, reconstructing the intervening directory metadata object from the threshold number of intervening directory slices; and

caching the intervening directory metadata object to produce a cached intervening directory metadata object;

in response to requesting the file directory object:

receiving file directory slices from slice servers of the at least some of the slice servers;

when a threshold number of file directory slices is received, reconstructing the file directory object from the threshold number of file directory slices; and

caching the file directory object to produce a cached file directory object; and

in response to requesting the file directory metadata object:

receiving file directory metadata slices from slice servers of the at least some of the slice servers;

when a threshold number of file directory metadata slices is received, reconstructing the file directory metadata object from the threshold number of file directory slices; and

caching the file directory metadata object to produce a cached file director metadata object.

5. The method of claim 1 , wherein the requesting the data segment from the plurality of slice servers further comprises:

accessing the cached object to obtain the identity of the plurality of slice servers storing the data segment; and

requesting access to a data slice from each of at least a threshold number of the plurality of slice servers.

6. The method of claim 1 , wherein the requesting access to the data segment further comprises at least one of:

requesting read access to the data segment; and

requesting write access to the data segment.

7. The method of claim 1 further comprises:

when the reconstructing the object is unsuccessful, rolling back access to the data segment to a previously successful data segment access.

8. A computer comprises:

a network port for communicating with a network; and

a central processing unit operable to:

receive a request to access a data segment based on a file object identifier, wherein the data segment is encoded into a plurality of data slices that is dispersedly stored on a plurality of slice servers, wherein the data segment is reconstructable from a threshold number of the plurality of data slices and wherein the threshold number of data slices is less than the plurality of data slices;

in response to the request, determine whether an object associated with the file object identifier is cached, wherein the object includes one or more directory objects and one or more associated metadata objects;

when the object is not cached, request the object from at least some of the plurality of slice servers by:

requesting a root directory object based on a file vault associated with the data segment, wherein the root directory object includes information that points to a root directory metadata object and information that points to the plurality of slice servers, an intervening directory object, or to a file directory object;

when the root directory object includes the information that points to the plurality of slice servers, requesting the root directory metadata object;

when the root directory object includes the information that points to the intervening directory object:

requesting the intervening directory object based on the information that points to the intervening directory object, wherein the intervening directory object includes information that points to an intervening directory metadata object and information that points to another intervening directory object or to the file directory object; and

requesting the intervening directory metadata object based on the information pointing to the intervening directory metadata object;

when the file directory object is pointed to:

requesting the file directory object based on the information that points to the file directory object, wherein the file directory object includes information that points to a file directory metadata object and information that points to the plurality of slice servers storing the data segment; and

requesting the file directory metadata object based on the information pointing to the file directory metadata object;

receive object slices of the object from slice servers of the at least some of the slice servers, wherein the object is encoded into a plurality of object slices;

when at least a threshold number of object slices is received, reconstruct the object from the at least the threshold number of object slices, wherein the threshold number of object slices is less than the plurality of object slices;

cache the object to produce a cached object; and

request access to the data segment from the plurality of slice servers based on the cached object.

9. The computer of claim 8 , wherein the one or more directory objects comprises at least one of:

a root directory object that includes information that points to a next directory object and includes information that points to a root directory metadata object;

at least one intervening directory object that includes information that points to another next directory object and information that points to an intervening directory metadata object; and

a file directory object that includes identity of the plurality of slice servers and information that points to a file directory metadata object, wherein the one or more metadata objects includes the root directory metadata object and the file directory metadata object.

10. The computer of claim 8 , wherein the central processing unit is further operable to perform at least one of:

in response to requesting the root directory object:

receive root directory slices from slice servers of the at least some of the slice servers;

when a threshold number of root directory slices is received, reconstruct the root directory object from the threshold number of root directory slices; and

cache the root directory object to produce a cached root directory object;

in response to requesting the root directory metadata object:

receive root directory metadata slices from slice servers of the at least some of the slice servers;

when a threshold number of root directory metadata slices is received, reconstruct the root directory metadata object from the threshold number of root directory slices; and

cache the root directory metadata object to produce a cached root directory metadata object;

in response to requesting the intervening directory object:

receive intervening directory slices from slice servers of the at least some of the slice servers;

when a threshold number of intervening directory slices is received, reconstruct the intervening directory object from the threshold number of intervening directory slices; and

cache the intervening directory object to produce a cached intervening directory object;

in response to requesting the intervening directory metadata object:

receive intervening directory metadata slices from slice servers of the at least some of the slice servers;

when a threshold number of intervening directory metadata slices is received, reconstruct the intervening directory metadata object from the threshold number of intervening directory slices; and

cache the intervening directory metadata object to produce a cached intervening directory metadata object;

in response to requesting the file directory object:

receive file directory slices from slice servers of the at least some of the slice servers;

when a threshold number of file directory slices is received, reconstruct the file directory object from the threshold number of file directory slices; and

cache the file directory object to produce a cached file directory object; and

in response to requesting the file directory metadata object:

receive file directory metadata slices from slice servers of the at least some of the slice servers;

when a threshold number of file directory metadata slices is received, reconstruct the file directory metadata object from the threshold number of file directory slices; and

cache the file directory metadata object to produce a cached file directory metadata object.

11. The computer of claim 8 , wherein the central processing unit is further operable to request the data segment from the plurality of slice servers further by:

accessing the cached object to obtain the identity of the plurality of slice servers storing the data segment; and

requesting access to a data slice from each of at least a threshold number of the plurality of slice servers.

12. The computer of claim 8 , wherein the central processing unit is further operable to request access to the data segment further by at least one of:

requesting read access to the data segment; and

requesting write access to the data segment.

13. The computer of claim 8 , wherein the central processing unit is further operable to:

when the reconstructing the object is unsuccessful, roll back access to the data segment to a previously successful data segment access.

Assignments (9)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Jun 11, 2025
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: PURE STORAGE, INC.
Reel/Frame 071558/0523 →
SECURITY INTEREST Recorded Aug 26, 2020
From: PURE STORAGE, INC.
To: BARCLAYS BANK PLC AS ADMINISTRATIVE AGENT
Reel/Frame 053867/0581 →
CORRECTIVE ASSIGNMENT TO CORRECT THE 9992063 AND 10334045 LISTED IN ERROR PREVIOUSLY RECORDED ON REEL 049556 FRAME 0012. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNOR HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 14, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 052205/0705 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049556/0012 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 13, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038687/0596 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Aug 20, 2013
From: SILICON VALLEY BANK
To: CLEVERSAFE, INC.
Reel/Frame 031058/0255 →
FIRST AMENDMENT TO IPSA Recorded Dec 31, 2012
From: CLEVERSAFE, INC.
To: SILICON VALLEY BANK
Reel/Frame 029555/0356 →
CORRECTIVE ASSIGNMENT TO CORRECT THE SPELLING OF T Recorded Feb 19, 2010
From: PALTHEPU, SRINIVAS; RESCH, JASON; VOLVOVSKI, ILYA; QUIGLEY, JOHN; DHUSE, GREG; THORNTON, VANCE; BAPTIST, ANDREW; MARK, ZACHARY; CILFONE, BART; GLADWIN, S. CHRISTOPHER
To: CLEVERSAFE, INC.
Reel/Frame 023966/0695 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 18, 2009
From: PALTHEPU, SRINIVAS, MR.; RESCH, JASON, MR.; VOLVOSKI, ILYA, MR.; QUIGLEY, JOHN, MR.; DHUSE, GREG, MR.; THORNTON, VANCE, MR.; BAPTIST, ANDREW, MR.; MARK, ZACHARY, MR.; CILFONE, BART, MR.; GLADWIN, S. CHRISTOPHER, MR.
To: CLEVERSAFE, IMC.
Reel/Frame 022274/0542 →