IP Library Granted Patent US 9,330,010
Granted Patent B1
US 9,330,010 · App. 14/470,337 · Granted May 3, 2016

Methods and systems for improved data caching in a virtualized environment

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,330,010
App. No.
14/470,337
Granted
May 3, 2016
Kind
B1
Abstract

Systems and methods for data storage and caching in a system including virtual machines is disclosed. In an embodiment, a machine implemented method includes mapping a plurality of virtual hard drives to a logical unit number (LUN) of a storage system, each virtual hard drive including a logical block address (LBA) range of the storage system LUN; storing the mapping in a caching module data structure; determining that one of the virtual hard drives should be cached; and updating the caching module data structure to indicate that the LBA range associated with the one of the virtual hard drives should be cached.

Claims (49)

1. A machine implemented method, comprising:

mapping a plurality of virtual hard drives to a logical unit number (LUN) of a storage system, each virtual hard drive including a logical block address (LBA) range of the storage system LUN;

storing the mapping in a caching module data structure;

determining that one of the virtual hard drives should be cached; and

updating the caching module data structure to indicate that the LBA range associated with the one of the virtual hard drives should be cached.

2. The machine implemented method of claim 1 further comprising:

receiving an input/output (I/O) command from a virtual machine, the I/O command relating to an I/O LUN for a command data length; and

when the caching data structure indicates that caching is allowed for a LBA range referenced by the I/O LUN and command data length, processing the I/O command for a cache LUN.

3. The machine implemented method of claim 2 further comprising: forwarding the I/O command to the storage system.

4. The machine implemented method of claim 3 , wherein forwarding the I/O command is a lower priority when the I/O command has been processed for the cache LUN than when it has not.

5. The machine implemented method of claim 1 , wherein determining that one of the virtual hard drives should be cached includes receiving input from a system manager.

6. The machine implemented method of claim 1 , wherein determining that one of the virtual hard drives should be cached includes tracking I/O statistics for the virtual hard drives.

7. A machine implemented method comprising:

selecting a virtual machine for which to provide caching;

obtaining parameters of a virtual disk associated with the virtual machine, the parameters including a storage LUN identity and a LBA range;

updating a caching module data structure with the storage LUN identity and the LBA range to allow caching;

receiving an I/O command from a virtual machine, the I/O command for reading from or writing to an I/O LUN at an LBA start location for a data length;

checking the I/O LUN and the data length against the caching module data structure to determine if the I/O command relates to an LBA range that allows caching; and

processing the I/O command for a cache LUN, when the determination is that the LBA range allows caching.

8. The machine implemented method of claim 7 wherein the caching module data structure comprises a plurality of LUN identifiers (IDs) corresponding to LUNs available to the virtual machine, each LUN ID having a plurality of associated LBA ranges, and each associated LBA range having an associated cache approval indicator.

9. The machine implemented method of claim 8 wherein checking the I/O LUN and the data length against the caching module data structure to determine if the I/O command relates to an LBA range that allows caching, comprises:

finding the I/O LUN in the plurality of LUN IDs;

finding a matching LBA range from the plurality of associated LBA ranges that corresponds to the LBA start location and the data length; and

checking the associated cache approval indicator for the matching LBA range.

10. A non-transitory, machine readable storage medium storing executable instructions, which when executed by a machine, causes the machine to perform a method, the method comprising:

mapping a plurality of virtual hard drives to a logical unit number (LUN) of a storage system, each virtual hard drive including a logical block address (LBA) range of the storage system LUN;

storing the mapping in a caching module data structure;

determining that one of the virtual hard drives should be cached; and

updating the caching module data structure to indicate that the LBA range associated with the one of the virtual hard drives should be cached.

11. The storage medium of claim 10 , the method further comprising:

receiving an input/output (I/O) command from a virtual machine, the I/O command relating to an I/O LUN for a command data length; and

when the caching data structure indicates that caching is allowed for a LBA range referenced by the I/O LUN and command data length, processing the I/O command for a cache LUN.

12. The storage medium of claim 11 , the method further comprising: forwarding the I/O command to the storage system.

13. The storage medium of claim 12 , wherein forwarding the I/O command is a lower priority when the I/O command has been processed for the cache LUN than when it has not.

14. The storage medium of claim 10 , wherein determining that one of the virtual hard drives should be cached includes receiving input from a system manager.

15. The storage medium of claim 10 , wherein determining that one of the virtual hard drives should be cached includes tracking I/O statistics for the virtual hard drives.

16. A system comprising:

a processor executing instructions out of a memory for:

mapping a plurality of virtual hard drives to a logical unit number (LUN) of a storage system, each virtual hard drive including a logical block address (LBA) range of the storage system LUN;

storing the mapping in a caching module data structure;

determining that one of the virtual hard drives should be cached; and

updating the caching module data structure to indicate that the LBA range associated with the one of the virtual hard drives should be cached.

17. The system of claim 16 further including instructions for:

receiving an input/output (I/O) command from a virtual machine, the I/O command relating to an I/O LUN for a command data length; and

when the caching data structure indicates that caching is allowed for the LBA range referenced by the I/O LUN and command data length, processing the I/O command for a cache LUN.

18. The system of claim 17 further including instructions for: forwarding the I/O command to the storage system.

19. The system of claim 18 , wherein forwarding the I/O command is a lower priority when the I/O command has been processed for the cache LUN than when it has not.

20. The system of claim 16 , wherein determining that one of the virtual hard drives should be cached includes receiving input from a system manager.

21. The system of claim 16 , wherein determining that one of the virtual hard drives should be cached includes tracking I/O statistics for the virtual hard drives.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CHANGE OF NAME Recorded Oct 8, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047205/0953 →
RELEASE OF SECURITY INTEREST Recorded Jul 6, 2018
From: JP MORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: CAVIUM, INC; CAVIUM NETWORKS LLC; QLOGIC CORPORATION
Reel/Frame 046496/0001 →
MERGER Recorded Oct 18, 2017
From: QLOGIC CORPORATION
To: CAVIUM, INC.
Reel/Frame 044812/0504 →
SECURITY AGREEMENT Recorded Mar 1, 2017
From: QLOGIC CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 041854/0119 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 27, 2014
From: SHAH, BHAVIK
To: QLOGIC, CORPORATION
Reel/Frame 033622/0314 →