Virtual Data Storage Devices and Applications Over Wide Area Networks
A virtualization system provides virtualized servers at a branch network location. Virtualized servers are implemented using virtual machine applications within the virtualization system. Data storage for the virtualized servers, including storage of the virtual machine files, is consolidated at a data center network location. The virtual disks of the virtualized servers are mapped to physical data storage at the data center and accessed via a WAN using storage block-based protocols. The virtualization system accesses a storage block cache at the branch network location that includes storage blocks prefetched based on knowledge about the virtualized servers. The virtualization system can include a virtual LAN directing network traffic between the WAN, the virtualized servers, and branch location clients. The virtualized servers, virtual LAN, and virtual disk mapping can be configured remotely via a management application. The management application may use templates to create multiple instances of common branch location configurations.
1 . A method of delivering a service to a client at a first network location, wherein a virtual machine application at the first network location provides the service and a data storage for the virtual machine application is located at a second network location accessible to the virtual machine application via a wide-area network, the method comprising:
configuring at least one virtual disk of the virtual machine application to correspond with at least one disk image stored at the second network location;
configuring a proxy process at the first network location to service I/O requests for storage blocks included in the disk image;
configuring a hypervisor to direct I/O requests for the virtual disk to the proxy process; and
servicing at least one of the I/O requests from a local cache of storage blocks at the first network location.
2 . The method of claim 1 , wherein the proxy process is implemented by a first device at the first network location.
3 . The method of claim 2 , wherein the hypervisor and virtual machine application are implemented by a second device at the first network location.
4 . The method of claim 2 , wherein the hypervisor and virtual machine application are implemented by the first device at the first network location.
5 . The method of claim 1 , wherein the virtual disk of the virtual machine application is a primary disk including a boot program adapted to load and initialize an operating system.
6 . The method of claim 1 , wherein the local cache of storage blocks includes copies of a portion of the storage blocks included in the disk image, wherein the portion of the storage blocks are prefetched from the second network location and communicated via the wide-area network to the first network location.
7 . The method of claim 1 , comprising:
receiving a virtualization template including a specification associating the virtual disk with the disk image.
8 . A method of delivering a service to a client at a first network location, the method comprising:
configuring a virtualization system at the first network location to implement at least a first server within a first virtual machine;
configuring a mapping between at least a first virtual disk of the first virtual machine to a first physical logical storage unit, wherein the first physical logical storage unit is stored in a storage system located at a second network location, wherein the second network location is connected with the first network location via a wide-area network;
receiving storage block requests for storage blocks in the first virtual disk from the first server within the first virtual machine; and
servicing at least a first one of the storage block requests from the first server from a storage block cache at the first network location, wherein the storage block cache includes a copy of at least a portion of the first physical logical storage unit.
9 . The method of claim 8 , comprising:
servicing at least a second one of the storage block requests from the first physical logical storage unit.
10 . The method of claim 8 , wherein configuring the mapping comprises:
associating the first virtual disk of the first virtual machine with a first virtual logical storage unit provided at the first network location.
11 . The method of claim 10 , wherein the first virtual logical storage unit is provided by a second virtual machine implemented by the virtualization system.
12 . The method of claim 10 , wherein the first virtual logical storage unit is provided by a hypervisor in the virtualization system.
13 . The method of claim 10 , wherein the first virtual logical storage unit is provided by a storage interface external to the virtualization system at the first network location.
14 . The method of claim 8 , wherein the storage block cache includes copies of storage blocks prefetched from the physical logical storage unit at the second network location and communicated via the wide-area network to the first network location in advance of the first storage block request.
15 . A method of delivering a service to a client at a first network location, the method comprising:
configuring a virtualization system at the first network location to implement at least a first server within a first virtual machine;
configuring a mapping between at least a first virtual disk of the first virtual machine to a first physical logical storage unit, wherein the first physical logical storage unit is stored in a storage system located at a second network location, wherein the second network location is connected with the first network location via a wide-area network;
initiating a boot process for the first virtual machine;
receiving storage block requests for storage blocks associated with the boot process in the first virtual disk from the first server within the first virtual machine; and
in response to the storage block requests, servicing at least a first one of the storage block requests from the physical logical storage unit via the wide-area network and at least a second one of the storage block requests from a storage block cache at the first network location.
16 . The method of claim 15 , wherein configuring the mapping comprises:
associating the first virtual disk of the first virtual machine with a first virtual logical storage unit provided at the first network location, wherein the first virtual logical storage unit corresponds with the first physical logical storage unit at the second network location.
17 . A method of delivering a service to a client at a first network location, the method comprising:
receiving a specification of virtualized servers to be implemented at a first network location;
receiving a specification of mappings between virtual disks of the virtualized servers and physical logical storage units stored in a storage system at a second network location, wherein the second network location is connected with the first network location via a wide-area network; and
providing a virtualization configuration including the specifications of the virtualized servers, the virtual LAN connections, and the mappings between virtual disks and the physical logical storage units to a virtualization system at the first network location.
18 . The method of claim 17 , comprising:
receiving a specification of virtual LAN connections between at least the virtualized servers; and
including the specification of virtual LAN connections in the virtualization configuration provided to the virtualization system at the first network location.
19 . The method of claim 18 , wherein receiving the specifications of the virtualized servers, the virtual LAN connections, and the mappings between virtual disks and the physical logical storage units comprises:
receiving a selection of a virtualization template, wherein the virtualization template includes a first portion of the virtualization configuration that is independent of the first network location; and
receiving a second portion of the virtualization configuration that is dependent on the first network location.
20 . The method of claim 17 , comprising:
creating at least one of the physical logical storage units in the storage system at the second network location in response to the specification of the mappings.
21 . The method of claim 17 , comprising:
creating a new instance of at least one virtual machine file in response to the specification of the virtualized servers, wherein the new instance of the virtual machine file is stored in a first one of the physical logical storage units in the storage system at the second network location.
22 . The method of claim 17 , comprising:
configuring the virtualization system at the first network location according to virtualization configuration, thereby implementing at least a first virtualized server and a first virtual disk by the virtualization system;
receiving storage block requests for storage blocks in the first virtual disk from the first virtualized server; and
servicing at least a first one of the storage block requests from the first virtualized server from a storage block cache at the first network location, wherein the storage block cache includes a copy of at least a portion of a first physical logical storage unit stored in the storage system at the second network location.