IP Library Granted Patent US 8,479,078
Granted Patent B2
US 8,479,078 · App. 12/839,197 · Granted Jul 2, 2013

Distributed storage network for modification of a data object

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,479,078
App. No.
12/839,197
Granted
Jul 2, 2013
Kind
B2
Abstract

A distributed storage network generates a plurality of data segments from a data object and stores each of the plurality of data segments as a plurality of encoded data slices generated from an error encoding dispersal function. When the distributed storage network receives a modification request for the data object, it determines a size of the plurality of data segments of the data object from a segment size field and identifies one of the plurality of data segments requiring modification. The identified data segment is reconstructed from the plurality of encoded data slices and modified in accordance with the modification request.

Claims (61)

1. A method for modifying a data object in a distributed storage network, comprises:

receiving a modification request to modify the data object, wherein the modification request includes requested modifications to the data object and a position indicator that indicates a portion of the data object for modification;

identifying one of a plurality of data segments of the data object including the portion of the data object for modification to produce an identified data segment, wherein the identified data segment is stored as a plurality of encoded data slices that are generated from the identified data segment based on an error encoding dispersal function;

reconstructing the identified data segment from at least a number T of the plurality of encoded data slices to produce a reconstructed data segment, wherein the number T corresponds to a number of the plurality of encoded data slices needed to reconstruct the identified data segment based on the error encoding dispersal function; and

modifying the reconstructed data segment in response to the requested modifications in the modification request to generate a modified data segment.

2. The method of claim 1 , wherein the position indicator in the modification request indicates one or more bytes of the data object for modification and wherein identifying one of the plurality of data segments comprises:

determining a size of the plurality of data segments of the data object from a segment size field; and

identifying one of the plurality of data segments requiring modification in response to the position indicator and the size of the plurality of data segments of the data object.

3. The method of claim 1 , further comprising:

generating a plurality of rebuilt encoded data slices from the modified data segment using the error encoding dispersal function;

transmitting the plurality of rebuilt encoded data slices for storage in a plurality of storage units; and

modifying a revision field for the plurality of rebuilt encoded data slices.

4. A distributed storage processing module in a distributed storage network, comprises:

a network interface for interfacing with a plurality of storage units in the dispersed storage network; and

a processing module operably coupled to:

receive a modification request to modify a data object, wherein the data object is stored as a plurality of data segments;

identify one of the plurality of data segments requiring modification in response to the modification request to produce an identified data segment, wherein the identified data segment is stored as a plurality of encoded data slices in the plurality of storage units;

retrieve at least a number T of the plurality of encoded data slices from the plurality of storage units, wherein the number T corresponds to a number of the plurality of encoded data slices needed to reconstruct the identified data segment based on an error encoding dispersal function;

reconstruct the identified data segment from at least the number T of the plurality of encoded data slices to produce a reconstructed data segment;

modify the reconstructed data segment in accordance with the modification request to generate a modified data segment; and

generate a plurality of rebuilt encoded data slices from the modified data segment using the error encoding dispersal function and transmit the plurality of rebuilt encoded data slices for storage in the plurality of storage units.

5. The distributed storage processing module of claim 4 , wherein the modification request includes requested modifications to the data object and a position indicator that points to one or more bytes of the data object for modification.

6. The distributed storage processing module of claim 5 , wherein the processing module is operably coupled to identify one of the plurality of data segments requiring modification in response to the position indicator and size of the plurality of data segments of the data object.

7. The distributed storage processing module of claim 6 , wherein the processing module is operably coupled to determine the size of the plurality of data segments of the data object from a segment size field stored in a user vault in a segment and slice directory.

8. The distributed storage processing module of claim 7 , wherein the modification request further includes a user identification and object name.

9. The distributed storage processing module of claim 8 , wherein the processing module is further operably coupled to:

determine a source name for the data object from the user name and object name, wherein the source name is associated with each of the plurality of data segments of the data object; and

determine a slice name for each of the number T of plurality of encoded data slices of the identified data segment from source name and the segment and slice directory.

10. The distributed storage processing module of claim 9 , wherein the processing module is further operably coupled to:

determine a location of the number T of plurality of encoded data slices from the slice name and a virtual DSN address to physical location table.

11. The distributed storage processing module of claim 10 , wherein the processing module is further operably coupled to:

modify a slice revision field for the rebuilt encoded data slices.

12. The distributed storage processing module of claim 11 , wherein the processing module is further operably coupled to:

update the segment size field in the user vault in the segment and slice directory when the size of the modified data segment varies from the identified data segment; and

update a segment revision field for the modified data segment to indicate a revised number of data object bytes.

13. A method for modifying a data object in a distributed storage network, comprises:

receiving a modification request to modify the data object, wherein the data object is stored as a plurality of data segments;

identifying one of the plurality of data segments requiring modification in response to the modification request to produce an identified data segment, wherein the identified data segment is stored as a plurality of encoded data slices that are generated from the identified data segment based on an error encoding dispersal function;

reconstructing the identified data segment from at least a number T of the plurality of encoded data slices to produce a reconstructed data segment, wherein the number T corresponds to a number of the plurality of encoded data slices needed to reconstruct the identified data segment based on the error encoding dispersal function; and

modifying the reconstructed data segment in accordance with the modification request to generate a modified data segment.

14. The method of claim 13 , wherein the modification request includes requested modifications to the data object and a position indicator that points to one or more bytes of the data object for modification.

15. The method of claim 14 , further comprising:

determining a size of the plurality of data segments of the data object from a segment size field stored in a user vault in a segment and slice directory; and

identifying one of the plurality of data segments requiring modification in response to the position indicator and the size of the plurality of data segments of the data object.

16. The method of claim 15 , further comprising:

updating the segment size field in the user vault in the segment and slice directory when the size of the modified data segment varies from the identified data segment; and

updating a segment revision field of the modified data segment to indicate a revised number of data object bytes.

17. The method of claim 13 , further comprising:

generating a plurality of rebuilt encoded data slices from the modified data segment using the error encoding dispersal function; and

transmitting the plurality of rebuilt encoded data slices for storage in a plurality of storage units.

18. The method of claim 17 , further comprising:

modifying a slice field for the plurality of rebuilt encoded data slices.

19. The method of claim 13 , wherein modifying the reconstructed data segment comprises:

revising the reconstructed data segment in accordance with the modification request to generate the modified data segment, wherein a number of bytes of the modified data segment exceeds a fixed segment size; and

generating at least two data segments from the modified data segment to generate a plurality of divided data segments, wherein each of the plurality of divided data segments have the fixed segment size.

20. A method for modifying a data object in a distributed storage network, comprises:

identifying one of a plurality of data segments of the data object requiring modification in response to a modification request of the data object to produce an identified data segment, wherein the identified data segment is stored as a plurality of encoded data slices in a DSN memory;

determining to replace the identified data segment;

generating a replacement data segment based on one or more modifications in the modification request;

generating a plurality of replacement encoded data slices from the replacement data segment based on an error encoding dispersal function; and

transmitting the plurality of replacement encoded data slices to replace the plurality of encoded data slices of the identified data segment in the DSN memory.

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 20, 2010
From: RESCH, JASON K.; CILFONE, BART
To: CLEVERSAFE, INC.
Reel/Frame 024712/0497 →