IP Library Granted Patent US 10,346,095
Granted Patent B2
US 10,346,095 · App. 13/829,358 · Granted Jul 9, 2019

Systems, methods, and interfaces for adaptive cache persistence

Inventors: Vikram Joshi (Los Gatos, CA); David Flynn (Sandy, UT); Yang Luan (San Jose, CA); Michael F. Brown (Campbell, CA)
Assignee: SANDISK TECHNOLOGIES, LLC
G06F3/0662G06F3/061G06F3/0659G06F3/0664G06F3/0671G06F3/0689G06F12/0842G06F12/0866G06F12/0877G06F12/0888G06F12/0804G06F2212/151G06F2212/6042
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,346,095
App. No.
13/829,358
Granted
Jul 9, 2019
Kind
B2
Abstract

A storage module may be configured to service I/O requests according to different persistence levels. The persistence level of an I/O request may relate to the storage resource(s) used to service the I/O request, the configuration of the storage resource(s), the storage mode of the resources, and so on. In some embodiments, a persistence level may relate to a cache mode of an I/O request. I/O requests pertaining to temporary or disposable data may be serviced using an ephemeral cache mode. An ephemeral cache mode may comprise storing I/O request data in cache storage without writing the data through (or back) to primary storage. Ephemeral cache data may be transferred between hosts in response to virtual machine migration.

Claims (50)

1. A method, comprising:

identifying input/output (I/O) requests that pertain to a file associated with a backing store;

determining a persistence level of a plurality of persistence levels for the identified I/O requests based on a duration of storage in a computing device for data corresponding to the identified I/O requests;

selecting an ephemeral cache mode from a plurality of cache modes for the identified I/O requests based on the determined persistence level, wherein each cache mode corresponds to a respective duration of storage in which the ephemeral cache mode comprises caching the data in cache storage in response to determining a low persistence level corresponding to storage of data in the computing device without redundancy, separate from the backing store, without accessing the backing store; and

servicing the identified I/O requests by caching data of the file in the ephemeral cache mode, wherein:

caching the data of the file in the ephemeral cache mode comprises:

admitting the data of the file into the cache storage without redundantly admitting the data elsewhere, and

evicting the data of the file from the cache storage, and

the data is admitted and evicted from the cache storage without accessing the backing store.

2. The method of claim 1 , further comprising acknowledging completion of a write request of the identified I/O requests in response to caching data corresponding to the write request in the cache storage.

3. The method of claim 1 , further comprising selecting the ephemeral cache mode from the plurality of cache modes based on one or more of a source identifier of one or more of the identified I/O requests, a file identifier of one or more of the identified I/O requests, and an application associated with one or more of the identified I/O requests.

4. The method of claim 1 , wherein the identified I/O requests are issued by a virtual machine operating on a first host device, the method further comprising retaining the data of the file admitted into the cache storage at the first device in response to determining that the virtual machine is being transferred to operate on a second host device.

5. The method of claim 4 , further comprising populating cache storage of the second host device with at least a portion of the data of the file retained at the first host device.

6. An apparatus comprising:

means for monitoring storage requests directed to a primary storage to identify storage requests that pertain to a file of the primary storage determined to be a dispensable file, where in dispensability is based on a duration of storage in a computing device for data in the dispensable file corresponding to the identified storage requests;

means for caching data of the dispensable file exclusively within cache storage, separate from the primary storage, in response to determining storage of the data in the computing device without redundancy corresponding to the identified storage requests, wherein caching the data of the dispensable file comprises writing the data of the dispensable file to the cache storage without accessing the primary storage and without redundantly storing the data elsewhere;

means for acknowledging completion of a request to write specified data to the dispensable file in response to caching the specified data within the cache storage and without accessing the primary storage and without redundantly storing the data elsewhere;

means for servicing one or more storage requests pertaining to the specified data by use of the cache storage and without accessing the primary storage and without redundantly storing the data elsewhere; and

means for removing the specified data from the cache storage without accessing the primary storage such that the specified data is evicted from the cache storage without being written to the primary storage and without redundantly storing the data elsewhere.

7. The apparatus of claim 6 , wherein caching the specified data comprises performing one or more storage operations that are independent of the primary storage.

8. The apparatus of claim 6 , wherein:

the storage requests are monitored within a storage stack; and

caching the specified data within the cache storage comprises performing one or more storage operations outside of the storage stack.

9. The apparatus of claim 6 , further comprising means for determining that the file of the primary storage is a dispensable file in response to determining that data written to the file does not need to be retained after one or more of a reboot, restart, and shutdown of a client associate with the file.

10. The apparatus of claim 6 , wherein the identified storage requests are generated by a virtual machine operating on a local virtual machine host, the apparatus further comprising means for pushing data of the dispensable file, cached exclusively within the cache storage in response to the identified storage requests generated by the virtual machine, to a remote virtual machine host in response to the virtual machine transferring to the remote virtual machine host.

11. The apparatus of claim 6 , wherein:

the identified storage requests correspond to a virtual machine operating on a first host computing device, and

the virtual machine is migrated to a second host computing device, the apparatus further comprising:

means for transferring data of the dispensable file, cached exclusively within the cache storage of the first computing device to the second host in computing device.

12. The apparatus of claim 11 , further comprising means for retaining a cache tag associated with data of the dispensable file cached exclusively within the cache storage of the first host computing device in response to migrating the virtual machine to the second host computing device.

13. The apparatus of claim 6 , wherein the identified storage requests correspond to a virtual machine, the apparatus further comprising means for removing data of the dispensable file from the cache storage responsive to one or more of a reboot, restart, and shutdown of the virtual machine.

14. An apparatus, comprising:

an agent configured to intercept input/output (I/O) requests pertaining to a client;

a storage controller configured to assign cache modes to the intercepted I/O requests from a plurality of cache modes based on a duration of storage file data corresponding to the I/O requests will be stored in the client and storage of the file data in the client without redundancy, the plurality of cache modes including an ephemeral cache mode, wherein the storage controller is configured to assign the ephemeral cache mode to intercepted I/O requests pertaining to files of a primary storage system determined to correspond to file data that will be stored for a an amount of time that expires upon execution of one or more of a subsequent reboot, a subsequent restart, and a subsequent shutdown of the client; and

a cache management system configured to service the intercepted I/O requests in accordance with the cache modes assigned thereto, wherein servicing the intercepted I/O requests assigned the ephemeral cache mode comprises caching data of the files within a cache storage device, separate from the primary storage system and without accessing the primary storage system and without redundantly storing the data elsewhere, by:

writing the data of the files to the cache storage device without accessing the primary storage system and without redundantly storing the data elsewhere in response to write requests of the intercepted I/O requests assigned the ephemeral cache mode, and

removing the data of the files from the cache storage device without accessing the primary storage system via to one or more of a reboot, restart, and shutdown of the client such that the data of the files are written to the cache storage device and, not written elsewhere, are subsequently removed from the cache storage device without accessing the primary storage system,

wherein the agent, the storage controller, and the cache management system comprise one or more of a circuit, a programmable circuit, and instructions stored on a non-transitory computer-readable storage medium.

15. The apparatus of claim 14 , wherein the storage controller is configured to assign cache modes to the intercepted I/O requests based on one or more of source identifiers of the intercepted I/O request, file identifier of the intercepted I/O requests, and application associated with the intercepted I/O requests.

16. The apparatus of claim 14 , wherein:

a first write request, of the intercepted I/O requests, is assigned the ephemeral cache mode;

a second write request, of the intercepted I/O requests, is assigned a write-through cache mode, and

the cache management system is configured to acknowledge completion of the first write request in response to writing data associated with the first write request to the cache storage device and to acknowledge completion of the second write request in response to writing data with the second write request to the primary storage system.

17. The apparatus of claim 14 , wherein:

the cache management systems is configured to retain data of a virtual machine written to the cache storage device in response to intercepted I/O requests assigned the ephemeral cache mode at a first virtual machine host in response to determining that the virtual machine will transfer to a second virtual machine host; and

the cache management system is further configured to transfer the retained data of the virtual machine to the second virtual machine host.

18. The apparatus of claim 17 , wherein the second virtual machine host is configured to populate a cache storage device of the second virtual machine host with data of the virtual machine transferred from the first virtual host.

19. The apparatus of claim 14 , wherein the cache management system is configured to:

identify data of a first virtual machine that was written to the cache storage device in response to intercepted I/O requests assigned the ephemeral cache mode; and

flush the identified data to a second virtual machine in response to determining that the identified data is migrated between virtual machine hosts.

Assignments (9)
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 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0807 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 22, 2016
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: PS12 LUXCO S.A.R.L.
Reel/Frame 038348/0708 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 22, 2016
From: PS12 LUXCO S.A.R.L.
To: LONGITUDE ENTERPRISE FLASH S.A.R.L.
Reel/Frame 038348/0719 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2016
From: LONGITUDE ENTERPRISE FLASH SARL
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 038324/0628 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 7, 2015
From: FUSION-IO, INC.
To: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 035583/0850 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 23, 2014
From: JOSHI, VIKRAM; LUAN, YANG; BROWN, MICHAEL F.; FLYNN, DAVID; LIM TZE HAO, BRENT; YANG, JERENE ZHE; RADHAKRISHNAN, PRASHANTH
To: FUSION-IO, INC.
Reel/Frame 032741/0169 →
Continuity (2)
Provisional Application 61696126 · Aug 31, 2012
Related Publication 20140068197A1 · Mar 6, 2014
Cited By (3)
US 12,517,830 US 12,625,815 US 12,638,989