IP Library Granted Patent US 9,697,130
Granted Patent B2
US 9,697,130 · App. 14/332,696 · Granted Jul 4, 2017

Systems and methods for storage service automation

Inventors: Jaidil Karippara (San Ramon, CA); Pavan Pamula (Fremont, CA); Yuepeng Feng (Fremont, CA); Vikuto Atoka Sema (Fremont, CA)
Assignee: SanDisk Technologies LLC
G06F12/0868G06F3/06G06F9/45533G06F9/50G06F12/084G06F12/0866G06F12/0871G06F12/0888G06F13/28G06F2212/151G06F2212/313
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 9,697,130
App. No.
14/332,696
Granted
Jul 4, 2017
Kind
B2
Abstract

A cache automation module detects the deployment of storage resources in a virtual computing environment and, in response, automatically configures cache services for the detected storage resources. The automation module may detect new storage resources by monitoring storage operations and/or requests, by use of an interface provided by virtualization infrastructure, and/or the like. The cache automation module may deterministically identify storage resources that are to be cached and automatically caching services for the identified storage resources.

Claims (53)

1. A method, comprising:

detecting a virtual machine deployed on a host computing device, wherein the detected virtual machine is associated with two or more storage resources;

determining a cache configuration for the detected virtual machine; and

configuring a cache to service input/output (I/O) requests pertaining to the detected virtual machine in accordance with the determined cache configuration, wherein configuring the cache comprises:

determining whether to enable caching for each of the two or more storage resources associated with the detected virtual machine, the determining comprising determining to enable caching for a first one of the storage resources and to disable caching for a second one of the storage resources, and

configuring an I/O monitor of the cache to: identify I/O requests pertaining to the detected virtual machine, redirect identified I/O requests associated with the first storage resource to the cache, and ignore identified I/O requests associated with the second storage resource.

2. The method of claim 1 , wherein the cache comprises a file-share cache configured to cache a single copy of cached file data for two or more different virtual machines, wherein the determined cache configuration comprises a file-share criterion, and wherein configuring the cache further comprises causing the cache to use the file-share criterion to select identified I/O requests to service using the file-share cache.

3. The method of claim 1 , wherein configuring the I/O monitor comprises activating an I/O filter configured to identify I/O requests pertaining to the detected virtual machine within the host computing device.

4. The method of claim 1 , wherein the I/O monitor comprises a storage driver operating within the host computing device, and wherein configuring the cache further comprises configuring the storage driver to receive I/O requests of the virtual machine associated with the first storage resource and to redirect the received I/O requests to the cache.

5. The method of claim 1 , further comprising determining to disable caching for the second storage resource in response to determining that the second storage resource comprises a cluster shared volume.

6. An apparatus, comprising:

a cache manager configured to service storage requests of one or more virtual machines operating in a virtual computing environment;

a detector configured to detect addition of an identified storage resource to the virtual computing environment;

a cache automation service configured to determine whether to enable caching for the identified storage resource or exclude the identified storage resource from caching; and

a configuration engine to configure the cache manager for the identified storage resource, the configuration engine configured to:

in response to the cache automation service determining to enable caching for the identified storage resource, configure the cache manager to service storage requests directed to the identified storage resource by the virtual machines, and

in response to the cache automation service determining to exclude the identified storage resource from caching, configure the cache manager to ignore storage requests directed to the identified storage resource by the virtual machines.

7. The apparatus of claim 6 , wherein the configuration engine is further configured to:

configure a monitor of the cache manager to detect storage requests pertaining to the identified storage resource in a storage stack,

in response to the cache automation service determining to enable caching for the identified storage resource, configure the monitor to redirect the detected storage requests to the cache manager, and

in response to the cache automation service determining to exclude the identified storage resource from caching, configure the monitor to ignore the detected storage requests.

8. The apparatus of claim 6 , wherein the cache automation service is further configured to determine whether to cache data of the identified storage resource based on one or more of a type of the identified storage resource, a name of a virtual machine associated with the identified storage resource, an application associated with the identified storage resource, and a file name associated with the identified storage resource.

9. The apparatus of claim 6 , wherein the configuration engine determines to exclude the identified storage resource from caching in response to determining that the identified storage resource is a volume shared by one or more different virtual machines.

10. The apparatus of claim 6 , wherein the cache manager is further configured to:

service storage requests according to one or more cache modes, including a write through cache mode, a write back cache mode, and an ephemeral cache mode, wherein the configuration engine configures the cache manager to select cache modes for write requests directed to the identified storage resource,

service a write request according to one of the write through cache mode and the write back cache mode by caching data of the write request in cache storage of the cache manager such that the data of the write request is to be written to the identified storage resource before being evicted by the cache manager, and

service the write request according to the ephemeral cache mode by caching the data of the write request in scratch storage of the cache manager such that the data of the write request is not written to the identified storage resource before being evicted by the cache manager.

11. The apparatus of claim 6 , further comprising a driver configured to detect storage requests directed to the identified storage resource within a guest operating system of a virtual machine,

wherein the configuration engine is further configured to:

in response to the cache automation service determining to enable caching for the identified storage resource, configure the driver to redirect the detected storage requests to the cache manager, and

in response to the cache automation service determining to exclude the identified storage resource from caching, configure the driver to ignore the detected storage requests.

12. The apparatus of claim 6 , wherein the cache manager comprises a file-sharing cache configured to cache file data shared by two or more virtual machines, wherein the configuration engine is further configured to cause the cache manager to implement a file-sharing policy for the identified storage resource, wherein the cache manager is further configured to use the file-sharing policy to select storage requests, of the storage requests directed to the identified storage resource by the virtual machines, to service using the file-sharing cache.

13. The apparatus of claim 6 , wherein the configuration engine is further configured to configure the cache manager to distinguish storage requests that pertain to persistent data of the identified storage resource from write requests that pertain to ephemeral data of the identified storage resource, and

wherein the cache manager is further configured to:

cache the persistent data of the identified storage resource in a cache storage, wherein the persistent data is designated to be written to the identified storage resource in one of a write back mode and a write through mode, and

cache the ephemeral data of the identified storage resource in scratch storage, separate from the cache storage, wherein the ephemeral data is not designated to be written to the identified storage resource.

14. The apparatus of claim 6 , wherein the detector is further configured to detect the addition of the identified storage resource in response to one or more of initialization of a virtual machine within the virtual computing environment and initialization of a storage resource within the virtual computing environment.

15. The apparatus of claim 6 , wherein the detector is further configured to detect the addition of the identified storage resource by use of an application programming interface of the virtual computing environment.

16. A system, comprising:

a monitor that detects deployment of a virtual storage volume within a virtualization infrastructure; and

a configuration agent that automatically configures caching services for the deployed virtual storage volume by use of autocache metadata, the autocache metadata comprising a plurality of selection criteria, each selection criterion corresponding to a respective cache configuration, wherein, in response to the detection, the configuration agent is configured to select a cache configuration using the selection criterion and to apply the selected cache configuration, wherein applying the selected cache configuration comprises:

configuring an input/output (I/O) monitor to identify I/O requests issued by virtual machines operating within the virtualization infrastructure that pertain to the deployed virtual storage volume,

providing a file-share policy to a file-share cache, the file-share policy to configure the file-share cache to service first I/O requests of the identified I/O requests, and

providing a cache policy to a cache manager, the cache policy to configure the cache manager to service I/O requests of the identified I/O requests, other than the first I/O requests, using cache storage allocated to the virtual machines,

wherein the file-share cache is configured to service the first I/O requests by admitting file data of the virtual machines into the file-share cache and providing access to the admitted file data to two or more of the virtual machines.

17. The system of claim 16 , wherein the monitor detects deployment of the virtual storage volume by use of an interface provided by the virtualization infrastructure.

18. The system of claim 16 , wherein configuring the file-share cache to service the first I/O requests comprises configuring the file-share cache to use a file-selection criterion to identify the first I/O requests of the identified I/O requests, the file selection criterion comprising one or more of a file name criterion and a file path criterion.

19. The system of claim 16 , wherein the configuration agent configures a storage driver operating within a guest operating system to redirect I/O requests pertaining to the detected virtual storage volume to the I/O monitor.

20. The system of claim 16 , wherein applying the selected cache configuration further comprises:

configuring an ephemeral cache to service second I/O requests of the identified I/O requests, other than the first I/O requests,

wherein the cache manager is configured to service write requests other than write requests of the first I/O requests and the second I/O requests by storing data in the cache storage allocated to the virtual machines, the stored data being designated for storage on a backing store associated with the deployed virtual storage volume, and

wherein the ephemeral cache is configured to service write requests of the second I/O requests by storing data in a scratch storage, separate from the cache storage, wherein data stored in the scratch storage is designated to be erased without being written to the backing store.

21. The system of claim 20 , wherein the selection criteria of the autocache metadata are based on one or more of: storage volume type, virtual machine name, storage volume file name, and application name.

Assignments (12)
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 13, 2017
From: KARIPPARA, JAIDIL; PAMULA, PAVAN; FENG, YUEPENG; SEMA, VIKUTO
To: FUSION-IO, INC.
Reel/Frame 041240/0498 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0807 →
RELEASE OF SECURITY INTEREST Recorded May 4, 2016
From: FUSION-IO, INC.
To: SANDISK CORPORATION
Reel/Frame 038748/0880 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: PS12 LUXCO S.A.R.L.
Reel/Frame 038362/0575 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: PS12 LUXCO S.A.R.L.
To: LONGITUDE ENTERPRISE FLASH S.A.R.L.
Reel/Frame 038362/0604 →
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 Jul 26, 2014
From: FUSION-IO, INC.
To: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033419/0748 →
SECURITY INTEREST Recorded Jul 24, 2014
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: FUSION-IO, INC.
Reel/Frame 033410/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2014
From: FUSION-IO, INC.
To: INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033390/0566 →
Continuity (2)
Provisional Application 62017128 · Jun 25, 2014
Related Publication 20150378921A1 · Dec 31, 2015