IP Library Granted Patent US 8,732,206
Granted Patent B2
US 8,732,206 · App. 12/838,080 · Granted May 20, 2014

Distributed storage timestamped revisions

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,732,206
App. No.
12/838,080
Granted
May 20, 2014
Kind
B2
Abstract

Various revisions of encoded data slices stored in a distributed storage system can be time stamped to assist in retrieving desired data revisions. Each of the multiple revisions of the encoded data slices may have the same name, but different revision numbers. An encoded data slice, which is received at a distributed storage unit along with a write command, slice name, and the revision number, is time stamped. The timestamp and revision number are stored in conjunction with the data slice. A desired encoded data slice can be retrieved by sending a read command, slice name, and timeframe to the distributed storage unit. The appropriate encoded data slice can be retrieved by determining which revision number has a timestamp most closely matching the requested timeframe.

Claims (84)

1. A method for use in a distributed storage unit, the method comprising:

storing a plurality of encoded data slices having a common slice name, but different revision numbers, corresponding to different revisions of a data segment, wherein, for each revision of the data segment, the data segment is dispersed storage error encoded into a set of encoded data slices, wherein the plurality of encoded data slices includes one or more encoded data slices from each set of encoded data slices of the different revisions of the data segment, and wherein the different revision numbers includes a current revision number and one or more previous revision numbers;

receiving a read command indicating the common slice name and a requested timeframe;

selecting one of the plurality of encoded data slices having one of the one or more previous revision numbers correlating to the requested timeframe; and

transmitting a response to the read command including the selected one of the plurality of encoded data slices.

2. The method of claim 1 , further comprising:

storing time stamps, for each different revision of the data segment, associated with the plurality of encoded data slices; and

determining a time stamp most nearly correlated to the requested timeframe.

3. The method of claim 1 , further comprising:

receiving an encoded data slice having the common slice name and a revision number corresponding to a new revision of the data segment;

receiving a write command indicating that the received encoded data slice is to be stored;

determining a time stamp associated with the received encoded data slice and the revision number; and

storing the received encoded data slice, the revision number, and the time stamp.

4. The method of claim 1 , further comprising:

receiving a delete command indicating, by the common slice name and one of the different revision numbers, one of the plurality of encoded data slices to be deleted;

determine a timestamp associated with the delete command;

appending the timestamp and a delete marker to the one of the plurality of encoded data slices to generate a marked slice; and

storing the marked slice.

5. The method of claim 4 , further comprising:

deleting the marked slice based on availability of system resources.

6. A method comprising:

receiving a first encoded data slice having a slice name and a first revision number, the first encoded data slice is one of a first set of encoded data slices generated by dispersed storage error encoding a first revision of a data segment;

determining a first time stamp associated with the first encoded data slice;

storing the first encoded data slice and the first time stamp;

receiving a second encoded data slice having the slice name and a second revision number, the second encoded data slice is one of a second set of encoded data slices generated by dispersed storage error encoding a second revision of the data segment, wherein the second revision is a more current version of the data segment than the first revision;

determining a second time stamp associated with the second encoded data slice; and

storing the second encoded data slice and the second time stamp;

receiving a read command, the slice name, and a timeframe;

determining that the first time stamp corresponds to the timeframe;

based on the determining, selecting the first encoded data slice; and

transmitting the selected encoded data slice in response to the read command.

7. The method of claim 6 further comprises:

receiving a third encoded data slice having the slice name and a third revision number, the third encoded data slice is one of a third set of encoded data slices generated by dispersed storage error encoding a third revision of the data segment;

determining a third time stamp associated with the third encoded data slice; and

storing the third encoded data slice and the third time stamp.

8. The method of claim 6 , further comprising:

receiving a delete command identifying one of the first encoded data slice and the second encoded data slice as an identified slice;

determining a third timestamp corresponding to a time associated with the delete command;

appending the third timestamp and a delete marker to the identified slice to generate a marked slice; and

storing the marked slice.

9. A distributed storage unit comprising:

at least one memory to store a plurality of encoded data slices having a common slice name, but different revision numbers, corresponding to different revisions of a data segment, wherein, for each revision of the data segment, the data segment is dispersed storage error encoded into a set of encoded data slices, wherein the plurality of encoded data slices includes one or more encoded data slices from each set of encoded data slices of the different revisions of the data segment, and wherein the different revision numbers includes a current revision number and one or more previous revision numbers;

an interface to receive a read command indicating the common slice name and a requested timeframe;

a processor to select one of the plurality of encoded data slices one of the one or more previous revision numbers correlating to the requested timeframe; and

the interface further to transmit a response to the read command including the selected one of the plurality of encoded data slices.

10. The distributed storage unit of claim 9 , further comprising:

the memory further to store time stamps, for each different revision of the data segment, associated with the plurality of encoded data slices; and

the processor further to determine a time stamp most nearly correlated to the requested timeframe.

11. The distributed storage unit of claim 9 , further comprising:

the interface further to:

receive an encoded data slice having the common slice name and a revision number corresponding to a new revision of the data segment;

receive a write command indicating that the received encoded data slice is to be stored;

the processor further to determine a time stamp associated with the received encoded data slice and the revision number; and

the memory further to store the received encoded data slice, the revision number, and the time stamp.

12. The distributed storage unit of claim 9 , further comprising:

the interface to receive a delete command indicating, by the common slice name and one of the different revision numbers, one of the plurality of encoded data slices to be deleted;

the processor further to:

determine a timestamp associated with the delete command;

append the timestamp and a delete marker to the one of the plurality of encoded data slices to generate a marked slice; and

the memory further to store the marked slice.

13. The distributed storage unit of claim 12 , further comprising:

the processor further to delete the marked slice based on availability of system resources.

14. A distributed storage unit comprising:

an interface to receive a first encoded data slice having a slice name and a first revision number, the first encoded data slice is one of a first set of encoded data slices generated by dispersed storage error encoding a first revision of a data segment;

a processor to determine a first time stamp associated with the first encoded data slice;

a memory to store the first encoded data slice and the first time stamp;

the interface further to receive a second encoded data slice having the slice name and a second revision number, the second encoded data slice is one of a second set of encoded data slices generated by dispersed storage error encoding a second revision of the data segment, wherein the second revision is a more current version of the data segment than the first revision;

the processor further to determine a second time stamp associated with the second encoded data slice; and

the memory further to store the second encoded data slice and the second time stamp;

the interface further to receive a read command, the slice name, and a timeframe;

the processor further to:

determine that the first time stamp corresponds to the timeframe;

select, based on the determining, the first encoded data slice; and

the interface further to transmit the selected encoded data slice in response to the read command.

15. The distributed storage unit of claim 14 further comprises:

the interface further to receive a third encoded data slice having the slice name and a third revision number, the third encoded data slice is one of a third set of encoded data slices generated by dispersed storage error encoding a third revision of the data segment;

the processor further to determine a third time stamp associated with the third encoded data slice; and

the memory further to store the third encoded data slice and the third time stamp.

16. The distributed storage unit of claim 14 , further comprising:

the interface further to receive a delete command identifying one of the first encoded data slice and the second encoded data slice as an identified slice;

the processor further to:

determine a third timestamp corresponding to a time associated with the delete command;

append the third timestamp and a delete marker to the identified slice to generate a marked slice; and

the memory further to store the marked slice.

Assignments (6)
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2010
From: RESCH, JASON K.; LEGGETTE, WESLEY; BAPTIST, ANDREW
To: CLEVERSAFE, INC.
Reel/Frame 024734/0162 →