IP Library › Granted Patent US 9,189,265
Granted Patent B2
US 9,189,265 · App. 11/960,460 · Granted Nov 17, 2015

Storage architecture for virtual machines

Inventors: Daniel K. Hiltgen (San Jose, CA); Rene W. Schmidt (Palo Alto, CA)
Assignee: VMware, Inc.
G06F9/45558G06F11/1438G06F21/6218G06F12/14G06F2009/45579G06F2009/45587G06F2201/815
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,189,265
App. No.
11/960,460
Granted
Nov 17, 2015
Kind
B2
Abstract

Some embodiments of the present invention include a method comprising: accessing units of network storage that encode state data of respective virtual machines, wherein the state data for respective ones of the virtual machines are stored in distinct ones of the network storage units such that the state data for more than one virtual machine are not commingled in any one of the network storage units.

Claims (50)

1. A method of operating a plurality of virtual machines on an individual computer system that is coupled to a network storage over a network, the method comprising:

allocating units of the network storage to respective ones of the virtual machines, wherein the units of the network storage are logical units of non-volatile memory in the network storage that are accessed over the network;

storing virtual disk data and non-disk data of respective ones of the virtual machines in the network storage units such that the non-disk data of more than one virtual machine are not commingled in any one of the network storage units;

responsive to receiving a first disk access request from a guest in a first virtual machine of the virtual machines, generating, by operation of a virtualization layer, a corresponding request to access the unit of the network storage associated with the first virtual machine using a block-level I/O interface of the network storage, wherein the virtual disk data stored in the network storage units are accessible by a disk access request from respective ones of the virtual machines, wherein the virtualization layer is configured to restrict access to the non-disk data of the virtual machines stored in the network storage units by a disk access request from a guest of the virtual machines, the non-disk data of the virtual machines representing internal states of virtualized system components of the virtual machines; and

responsive to receiving a response from the network storage to the corresponding request, modifying the response to conceal a location of non-disk data of the virtual machines from the guest in the first virtual machine.

2. The method of claim 1 , wherein the allocating comprises:

allocating a first unit of network storage from underlying resources of a network storage system; and

mapping a first one of the virtual machines to the first unit of network storage.

3. The method of claim 2 , wherein the mapping comprises:

encoding an indication of the first virtual machine in the first unit of network storage; and

providing a virtualization layer that supports the first virtual machine with the indication; and

associating the first unit of network storage with the first virtual machine.

4. The method of claim 3 , further comprising:

encoding a type indicator that marks the first unit of network storage as storing non-disk data of a virtual machine.

5. The method of claim 1 , wherein the non-disk data are stored in respective units of the network storage without a file system as an intermediary between the virtual machines and the non-disk data.

6. The method of claim 1 , wherein the non-disk data of a first virtual machine includes state of at least a portion of a virtual memory hierarchy of the first virtual machine.

7. The method of claim 6 , wherein the virtual memory hierarchy comprises at least one of virtual system memory, virtual cache, and virtual registers.

8. A virtual machine provisioning tool that:

provisions a plurality of virtual machines onto a computer system that is coupled to a network storage over a network,

allocates units of the network storage to the virtual machines, wherein the units of the network storage are logical units of non-volatile memory in the network storage that are accessed over a network using a block-level I/O interface;

stores data of the virtual machines, the data including virtual disk data and non-disk data, wherein the data of individual ones of the virtual machines are stored in the network storage units such that the non-disk data of more than one virtual machine are not commingled in any one of the network storage units,

encodes an indication of each of the plurality of virtual machines in the respective network storage units;

provides a virtualization layer that supports the plurality of virtual machines with the indications of each of the plurality of virtual machines;

associates the distinct units of network storage with the plurality of virtual machines;

responsive to receiving a first disk access request from a guest in a first virtual machine of the plurality of virtual machines, generate a corresponding request to access the unit of the network storage associated with the first virtual machine using the block-level I/O interface of the network storage; and

responsive to receiving a response from the network storage to the corresponding request, modifying the response to conceal a location of non-disk data of the virtual machines from the guest in the first virtual machine; and

wherein the virtual disk data stored in the network storage units are accessible by a disk access request from individual ones of the virtual machines and wherein the virtualization layer is configured to restrict access to the non-disk data of the virtual machines stored in the network storage units by a disk access request from a guest of the virtual machines, the non-disk data of the virtual machines representing internal states of virtualized system components of the virtual machines.

9. The virtual machine provisioning tool of claim 8 , wherein the virtual machine provisioning tool allocates the network storage units from one or more storage pools exposed to the virtual machine provisioning tool by a manager of the network storage.

10. The virtual machine provisioning tool of claim 8 , wherein the virtual machine provisioning tool creates one or more storage pools in the network storage and allocates the network storage units from the created one or more storage pools.

11. The virtual machine provisioning tool of claim 8 , wherein a first of the network storage units stores both virtual disk data and non-disk data of a first virtual machine and only the first virtual machine.

12. The virtual machine provisioning tool of claim 11 , wherein the virtual machine provisioning tool creates a first partition in the first network storage unit for the virtual disk data of the first virtual machine and at least a second partition for the non-disk data of the first virtual machine.

13. The virtual machine provisioning tool of claim 8 , wherein the virtual machine provisioning tool also allocates network storage units for storing secondary virtual disks associated with respective ones of the virtual machines.

14. The virtual machine provisioning tool of claim 8 , wherein the virtual machine provisioning tool allocates a network storage unit for storing a secondary virtual disk to be shared by at least two of the virtual machines.

15. A system comprising:

a plurality of computer systems, wherein a first one of the computer systems comprises a virtualization layer and supports a plurality of virtual machines; and

remote shared storage accessible to the computer systems using a block-level I/O interface and comprising non-volatile memory, wherein individual units of the remote shared storage store data of respective ones of the virtual machines, the data including virtual disk data and non-disk data, wherein the non-disk data of respective ones of the virtual machines are stored in the remote shared storage such that the non-disk data of more than one virtual machine are not commingled in any one of the units of the remote shared storage,

wherein the virtual disk data stored in the remote shared storage units are accessible by a disk access request from respective ones of the virtual machines and wherein the virtualization layer is configured to restrict access to the non-disk data of the virtual machines stored in the remote shared storage units by a disk access request from a guest of the virtual machines, the non-disk data of the virtual machines representing internal states of virtualized system components of the virtual machines, and

wherein the virtualization layer is configured to:

responsive to receiving a first disk access request from a guest in a first virtual machine of the virtual machines, generate a corresponding request to access the unit of the remote shared storage associated with the first virtual machine using the block-level I/O interface of the remote shared storage, and

responsive to receiving a response from the remote shared storage to the corresponding request, modifying the response to conceal a location of non-disk data of the virtual machines from the guest in the first virtual machine.

16. The system of claim 15 further comprising:

a managing computer system for provisioning the plurality of virtual machines.

17. The system of claim 16 , wherein the provisioning of a first one of the virtual machines includes allocation, by the managing computer system, of a distinct set of one or more of the individual units for use by a first one of the virtual machines.

18. The system of claim 17 , wherein the managing computer system indicates to the first computer system the set of one or more individual units allocated for the first virtual machine.

19. The system of claim 18 , wherein the managing computer system indicates the first virtual machine in the allocated set of individual units.

20. The system of claim 15 , wherein a virtualization layer that interfaces between the plurality of virtual machines and the first computer system directly accesses the individual units without intermediary file system interfaces or protocols.

21. The system of claim 20 , wherein the virtualization layer interfaces between the plurality of virtual machines and one of an operating system of the first computer system and underlying hardware of the first computer system.

22. The method of claim 1 , wherein a guest operating system of a virtual machine included in the plurality of virtual machines exposes a virtual disk to applications running on the guest operating system, the virtual disk containing virtual disk data of the virtual machine.

23. The virtual machine provisioning tool of claim 8 , wherein a guest operating system of a virtual machine included in the plurality of virtual machines exposes a virtual disk to applications running on the guest operating system, the virtual disk containing virtual disk data of the virtual machine.

24. The system of claim 15 , wherein a guest operating system of a virtual machine included in the plurality of virtual machines exposes a virtual disk to applications running on the guest operating system, the virtual disk containing virtual disk data of the virtual machine.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 16, 2009
From: HILTGEN, DANIEL K.; SCHMIDT, RENE W.
To: VMWARE, INC.
Reel/Frame 022400/0854 →
Continuity (4)
Provisional Application 60871234 · Dec 21, 2006
Provisional Application 60884568 · Jan 11, 2007
Provisional Application 60886072 · Jan 22, 2007
Related Publication 20080155223A1 · Jun 26, 2008