IP Library Granted Patent US 10,318,495
Granted Patent B2
US 10,318,495 · App. 13/939,992 · Granted Jun 11, 2019

Snapshots for a non-volatile device

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 10,318,495
App. No.
13/939,992
Granted
Jun 11, 2019
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 (38)

1. A method comprising:

servicing one or more requests from one or more storage clients to write data to a non-volatile memory device, by writing the data in a sequential log on the non-volatile memory device, the data comprising data segments;

storing logical addresses for the data segments with the data segments in the sequential log;

initializing a snapshot of the data by marking a point in the sequential log;

activating the snapshot for access by a client, wherein activating the snapshot comprises populating a snapshot logical-to-physical mapping by mapping logical addresses stored in the sequential log prior to initializing the snapshot to physical locations of data segments stored in the sequential log prior to initializing the snapshot, the snapshot logical-to-physical mapping differing from a current logical-to-physical mapping;

servicing a client request to access the snapshot, by using the snapshot logical-to-physical mapping to access data stored in the sequential log prior to initializing the snapshot, while preserving data stored in the sequential log subsequent to the initializing the snapshot; and

servicing a client request to access data stored in the sequential log subsequent to the initializing the snapshot, by using the current logical-to-physical mapping.

2. The method of claim 1 , further comprising maintaining different validity maps for a plurality of different snapshots of the non-volatile memory device.

3. The method of claim 2 , wherein maintaining the different validity maps comprises copying at least a portion of a validity map for a first snapshot in response to a write request received for a second snapshot.

4. The method of claim 2 , further comprising retaining, during a storage capacity recovery operation, data marked as valid in one or more of the different validity maps.

5. The method of claim 1 , wherein activating the snapshot is in response to an activation event for the snapshot, the activation event occurring separate from and later in time than a creation event for the snapshot.

6. The method of claim 5 , wherein the activation event comprises one or more of an activation request for the snapshot, a background activation process processing the snapshot, a scheduled activation event for the snapshot, and a failure event.

7. The method of claim 1 , wherein the snapshot comprises a block-level snapshot of logical blocks of the non-volatile memory device.

8. The method of claim 1 , further comprising preserving a temporal order for the data in response to a storage capacity recovery event, the storage capacity recovery event writing valid data from a recovered storage region of the sequential log to an append point of the sequential log.

9. The method of claim 8 , wherein preserving the temporal order for the data comprises retaining one or more epoch identifiers for the valid data written to the append point of the sequential log.

10. The method of claim 1 , wherein marking the point in the sequential log comprises writing an epoch identifier associated with the snapshot to the sequential log.

11. The method of claim 1 , wherein marking the point in the sequential log comprises:

incrementing an epoch identifier; and

storing the incremented epoch identifier in one or more metadata headers for data written in the sequential log after the point in the sequential log.

12. An apparatus comprising:

a log storage module configured to service one or more requests from one or more storage clients to write data to a non-volatile memory device, by writing the data in a sequential log on the non-volatile memory device, the data comprising data segments;

a temporal order module configured to store logical addresses for the data segments with the data segments in the sequential log;

a creation module configured to initialize a snapshot of the data by marking a point in the sequential log;

an activation module configured to activate the snapshot for access by a client, wherein activating the snapshot comprises populating a snapshot logical-to-physical mapping by mapping logical addresses stored in the sequential log prior to initializing the snapshot to physical locations of data segments stored in the sequential log prior to initializing the snapshot, the snapshot logical-to-physical mapping differing from a current logical-to-physical mapping;

a snapshot interface module configured to service a client request to access the snapshot, by using the snapshot logical-to-physical mapping to access data stored in the sequential log prior to initializing the snapshot, while preserving data stored in the sequential log subsequent to the initializing the snapshot; and

a non-volatile memory controller configured to service a client request to access data stored in the sequential log subsequent to the initializing the snapshot, by using the current logical-to-physical mapping,

wherein the log storage module, the temporal order module, the creation module, the activation module, and the snapshot interface module comprise one or more of logic hardware and a non-transitory computer readable storage medium storing computer usable program code.

13. The apparatus of claim 12 , further comprising a validity module configured to maintain different validity maps for a plurality of different snapshots of the non-volatile memory device.

14. The apparatus of claim 12 , wherein the activation module activates the snapshot in response to an activation event for the snapshot, the activation event occurring separate from and later in time than a creation event for the snapshot.

15. The apparatus of claim 14 , wherein the activation event comprises one or more of an activation request for the snapshot, a background activation process processing the snapshot, a scheduled activation event for the snapshot, and a failure event.

16. An apparatus comprising:

means for servicing one or more requests from one or more storage clients to write data to a non-volatile memory device, by writing the data in a sequential log on the non-volatile memory device, the data comprising data segments;

means for storing logical addresses for the data segments with the data segments in the sequential log;

means for initializing a snapshot of the data by marking a point in the sequential log;

means for activating the snapshot for access by a client, wherein activating the snapshot comprises populating a snapshot logical-to-physical mapping by mapping logical addresses stored in the sequential log prior to initializing the snapshot to physical locations of data segments stored in the sequential log prior to initializing the snapshot, the snapshot logical-to-physical mapping differing from a current logical-to-physical mapping;

means for servicing a client request to access the snapshot, by using the snapshot logical-to-physical mapping to access data stored in the sequential log prior to initializing the snapshot, while preserving data stored in the sequential log subsequent to the initializing the snapshot; and

means for servicing a client request to access data stored in the sequential log subsequent to the initializing the snapshot, by using the current logical-to-physical mapping.

17. The apparatus of claim 16 , further comprising means for preserving a temporal order for the data in response to a storage capacity recovery event, the storage capacity recovery event writing valid data from a recovered storage region of the sequential log to an append point of the sequential log.

Assignments (9)
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 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0807 →
CORRECTIVE ASSIGNMENT TO REMOVE APPL. NO'S 13/925,410 AND 61/663,464 PREVIOUSLY RECORDED AT REEL: 034838 FRAME: 0091. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Apr 30, 2015
From: FUSION-IO, INC
To: FUSION-IO, LLC
Reel/Frame 035603/0748 →
CORRECTIVE ASSIGNMENT TO REMOVE APPL. NO'S 13/925,410 AND 61/663,464 PREVIOUSLY RECORDED AT REEL: 035168 FRAME: 0366. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Apr 30, 2015
From: FUSION-IO, LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 035603/0582 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 9, 2015
From: FUSION-IO, LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 035168/0366 →
CHANGE OF NAME Recorded Jan 28, 2015
From: FUSION-IO, INC
To: FUSION-IO, LLC
Reel/Frame 034838/0091 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 11, 2013
From: TALAGALA, NISHA; SUNDARARAMAN, SWAMINATHAN; SUBRAMANIAN, SRIRAM
To: FUSION-IO, INC.
Reel/Frame 030781/0972 →
Continuity (6)
Continuation In Part 13830809 · Mar 14, 2013
Provisional Application 61705058 · Sep 24, 2012
Provisional Application 61726316 · Nov 14, 2012
Provisional Application 61812695 · Apr 16, 2013
Provisional Application 61829865 · May 31, 2013
Related Publication 20140089264A1 · Mar 27, 2014
Cited By (1)
US 12,630,105