IP Library Granted Patent US 11,762,817
Granted Patent B2
US 11,762,817 · App. 16/394,926 · Granted Sep 19, 2023

Time sequence data management

Inventors: Nisha Talagala (Livermore, CA); Swaminathan Sundararaman (Santa Clara, CA); Sriram Subramanian (Santa Clara, CA)
Assignee: SANDISK TECHNOLOGIES LLC
G06F16/21G06F11/1448G06F11/1471G06F11/1466
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 11,762,817
App. No.
16/394,926
Granted
Sep 19, 2023
Kind
B2
Abstract

Apparatuses, systems, and methods are disclosed for snapshots of a non-volatile device. A method includes writing data in a sequential log structure for a non-volatile device. A method includes marking a point, in a sequential log structure, for a snapshot of data. A method includes preserving a logical-to-physical mapping for a snapshot based on a marked point and a temporal order for data in a sequential log structure.

Claims (42)

1. A method comprising:

writing data in a sequential log structure comprising blocks of a data storage device, each block of data comprising an epoch identifier for temporally ordering the blocks of data;

preserving the temporal order of the data in the sequential log structure in response to a storage capacity recovery event for one or more of the blocks of the data storage device that copies data forward in the sequential log structure from the one or more blocks to a different block of the blocks at an append point of the sequential log structure, wherein, in response to multiple blocks of data comprising the same epoch identifier and the storage capacity recovery event recovering storage capacity from a subset of the multiple blocks of data that comprise the same epoch identifier, preserving the temporal order of the multiple blocks of data comprises copying the epoch identifier associated with the data of each of the subset of the multiple blocks of data forward with the data to the different block at the append point such that the multiple blocks of data that comprise the same epoch identifier are logically separated within the sequential log structure without losing their association with the same epoch identifier;

invalidating data stored at the one or more blocks by the storage capacity recovery event to recover storage capacity of the data storage device while retaining the data and the temporal order of the data in the sequential log structure based on copying the data and the epoch identifier associated with the data forward in the sequential log structure;

receiving a time sequence request from a client; and

servicing the time sequence request by providing access to data from the data storage device based on the temporal order of the data in the sequential log structure preserved by copying the epoch identifier associated with the data to the different block at the append point.

2. The method of claim 1 , wherein the storage capacity recovery event writes valid data from the one or more blocks to the append point of the sequential log structure.

3. The method of claim 2 , wherein the temporal order of the data is preserved by associating a temporal range of data with one of the one or more epoch identifiers.

4. The method of claim 3 , further comprising storing the epoch identifier associated with the temporal range of data in one or more metadata headers of the temporal range of data.

5. The method of claim 3 , further comprising storing the epoch identifier associated with the temporal range of data in the sequential log structure, the epoch identifier marking the temporal range of data.

6. The method of claim 2 , wherein preserving the temporal order of the data in response to the storage capacity recovery event comprises retaining at least one version of data from each of a plurality of epochs.

7. The method of claim 1 , wherein:

the time sequence request comprises a snapshot request; and

servicing the time sequence request comprises providing a snapshot of data from a point in time based on the temporal order.

8. The method of claim 1 , wherein:

the time sequence request comprises a delta clone request; and

servicing the time sequence request comprises providing, to the client, changes to the data between points in time based on the temporal order.

9. The method of claim 8 , wherein the changes to the data are provided in one or more of the temporal order and a logical address order for the data.

10. The method of claim 1 , wherein:

the time sequence request comprises a rollback request; and

servicing the time sequence request comprises providing access to a previous state of the data based on the temporal order.

11. The method of claim 10 , further comprising providing access to a state of the data adjacent in time to the previous state based on the temporal order in response to an iterate request.

12. The method of claim 10 , further comprising determining a logical-to-physical mapping for the previous state of the data based on the temporal order, the logical-to-physical mapping comprising a mapping between logical addresses of the data and physical locations for the previous state of the data in the sequential log structure.

13. The method of claim 10 , wherein the previous state comprises a state of the data prior in the temporal order to a failed operation.

14. The method of claim 1 , wherein:

the time sequence request comprises an asynchronous replication request; and

servicing the time sequence request comprises asynchronously replicating the data, in the temporal order, to a different storage location.

15. An apparatus comprising:

a log storage module configured to store data sequentially to an append point of a sequential, chronologically ordered writing structure, the data comprising a span identifier for temporally ordering the data;

a temporal order module configured to preserve a chronological order of the data in the sequential, chronologically ordered writing structure in response to a storage capacity recovery event that copies data forward in the sequential, chronologically ordered writing structure, wherein, in response to a plurality of the data comprising the same span identifier and the storage capacity recovery event recovering storage capacity from a subset of the plurality of data that comprise the same span identifier, preserving the chronological order of the plurality of data comprises copying the span identifier associated with each of the subset of the plurality of data forward with the data such that the plurality of data that comprise the same span identifier are logically separated within the sequential, chronologically ordered writing structure without losing their association with the same span identifier;

a storage capacity recovery module configured to invalidate an original version of the data by the storage capacity recovery event to recover storage capacity while retaining the data and the chronological order of the data in the sequential, chronologically ordered writing structure based on copying the data and the span identifier associated with the data forward in the sequential, chronologically ordered writing structure; and

a time sequence interface module configured to satisfy time sequence requests, by providing access to data from the sequential, chronologically ordered writing structure, using the chronological order,

wherein at least a portion of the log storage module, the temporal order module, and the time sequence interface module comprise one or more of hardware and executable code, the executable code stored on one or more non-transitory computer readable storage media.

16. The apparatus of claim 15 , wherein the temporal order module is further configured to preserve the chronological order by associating a chronological span of data with the span identifier.

17. The apparatus of claim 16 , further comprising a storage capacity recovery module configured to copy the chronological span of data and the span identifier forward to a different append point of the sequential, chronologically ordered writing structure than an intake append point in response to the storage capacity recovery event.

18. The apparatus of claim 16 , wherein the temporal order module is further configured to increment the span identifier for association with a subsequent chronological span of data in response to a time sequence request comprising a new span request.

19. An apparatus comprising:

means for maintaining data in a sequential log writing structure, the data comprising an epoch identifier for temporally ordering the data;

means for preserving, in response to a storage capacity recovery event that copies data forward in the sequential log writing structure, a chronological order in which the data is written, wherein, in response to a plurality of the data comprising the same epoch identifier and the storage capacity recovery event recovering storage capacity from a subset of the plurality of data that comprise the same epoch identifier, preserving the chronological order of the plurality of data comprises copying the epoch identifier associated with each of the subset of the plurality of the data forward with the data such that the plurality of data that comprise the same epoch identifier are logically separated within the sequential log writing structure without losing their association with the same epoch identifier;

means for invalidating an original version of the data by the storage capacity recovery event to recover storage capacity while retaining the data and the chronological order of the data in the sequential log writing structure based on copying the data and the epoch identifier associated with the data forward in the sequential log writing structure; and

means for accessing the data based on the chronological order in which the data is written.

20. The apparatus of claim 19 , further comprising means for asynchronously replicating the data, at a remote location, in the chronological order in which the data is written.

Assignments (7)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 4, 2019
From: TALAGALA, NISHA; SUNDARARAMAN, SWAMINATHAN; SUBRAMANIAN, SRIRAM
To: FUSION-IO, INC.
Reel/Frame 050627/0264 →
CHANGE OF NAME Recorded Oct 4, 2019
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 050637/0579 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 4, 2019
From: FUSION-IO, LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 050627/0380 →
CHANGE OF NAME Recorded Oct 4, 2019
From: FUSION-IO, INC.
To: FUSION-IO, LLC
Reel/Frame 050637/0565 →
Continuity (7)
Continuation 13939992 · Jul 11, 2013
Continuation In Part 13830809 · Mar 14, 2013
Provisional Application 61829865 · May 31, 2013
Provisional Application 61812695 · Apr 16, 2013
Provisional Application 61726316 · Nov 14, 2012
Provisional Application 61705058 · Sep 24, 2012
Related Publication 20190251067A1 · Aug 15, 2019