On-demand subscribed content library

A cluster management system and method for synchronizing content libraries within a distributed computer system allows an on-demand synchronization option of a content library subscribed to a publishing content library, which includes at least a consumable software item and metadata of the consumable software item, to be enabled. As a result of the on-demand synchronization option of the subscribed content library being enabled, the metadata of the consumable software item is downloaded from the publishing content library to the subscribed content library without downloading the consumable software item. The consumable software item is downloaded from the publishing content library to the subscribed content library in response to user selection of the consumable software item at the subscribed content library.

BACKGROUND

Virtualization allows computer resources, such as processors, computer memories, network bandwidth and data storage facilities, to be shared among resource-consuming processing entities, e.g., virtual machines (VMs), running on a distributed computer system. This sharing of computer resources can increase efficiency by reducing maintenance and operating costs, allowing flexibility with respect to individual resource usage, and simplifying resource management. With respect to shared storage, the benefits include data consolidation, universal access to data, ease of storage management, and support for live migration of virtualized environments.

The resource-consuming processing entities can be used to form virtual data centers and other processing clusters to perform various tasks and operations. Administrators and users of these data centers and processing clusters need to efficiently manage different aspects of the data centers and processing clusters, which may involve using consumable software contents, such as virtual machine and application templates. Typically, these consumable software contents are stored in local or remote datastores that can be accessed to anyone with administrative rights to the data centers or processing clusters and their datastores. This presents a security issue since anyone with access to a data center or processing cluster and its datastore can also freely access the consumable software contents stored in the datastore, and, for example, initiate unauthorized build of resource-consuming processing entities using the consumable software contents. In addition, sharing these consumable software contents between different administrators and users can be tedious and time-consuming since the consumable contents may be stored in numerous datastores.

SUMMARY

A cluster management system and method for synchronizing content libraries within a distributed computer system allows an on-demand synchronization option of a content library subscribed to a publishing content library, which includes at least a consumable software item and metadata of the consumable software item, to be enabled. As a result of the on-demand synchronization option of the subscribed content library being enabled, the metadata of the consumable software item is downloaded from the publishing content library to the subscribed content library without downloading the consumable software item. The consumable software item is downloaded from the publishing content library to the subscribed content library in response to user selection of the consumable software item at the subscribed content library.

A method for synchronizing content libraries within a distributed computer system in accordance with an embodiment of the invention comprises subscribing a content library in the distributed computer system to a publishing content library in the distributed computer system so that the content library is set as a subscribed content library to the publishing content library, the publishing content library including at least a consumable software item and metadata of the consumable software item, enabling an on-demand synchronization option of the subscribed content library, as a result of the on-demand synchronization option of the subscribed content library being enabled, downloading the metadata of the consumable software item from the publishing content library to the subscribed content library without downloading the consumable software item, and in response to user selection of the consumable software item at the subscribed content library, downloading the consumable software item from the publishing content library to the subscribed content library so that the consumable software item can be used from the subscribed content library. In some embodiments, the steps of this method are performed when program instructions contained in a computer-readable storage medium are executed by one or more processors.

A management server supported by hardware in a distributed computer system in accordance with an embodiment of the invention comprises memory and a processor, when program instructions in the memory are executed, is configured to subscribe a content library in the distributed computer system to a publishing content library in the distributed computer system so that the content library is set as a subscribed content library to the publishing content library, the publishing content library including at least a consumable software item and metadata of the consumable software item, enable an on-demand synchronization option of the subscribed content library, as a result of the on-demand synchronization option of the subscribed content library being enabled, download the metadata of the consumable software item from the publishing content library to the subscribed content library without downloading the consumable software item, and in response to user selection of the consumable software item at the subscribed content library, download the consumable software item from the publishing content library to the subscribed content library so that the consumable software item can be used from the subscribed content library.

DETAILED DESCRIPTION

Turning now toFIG. 1, a distributed computer system100in accordance with an embodiment of the invention is shown. As shown inFIG. 1, the distributed computer system includes a network102, clusters C-1, C-2. . . C-N (where N is a positive integer) of host computers and a storage system104. The clusters of host computers are used to support or host multiple processing entities that can execute various applications. As used herein, the term “processing entity” is any software entity that can run on a computer system, such as a software application, a software process, a virtual machine (VM) and a “container” that provides system-level process isolation. One or more of the clusters of host computers may be grouped to form and function as a data center. The number of clusters included in the distributed computer system may be in the hundreds or more. Thus, the distributed computer system may include multiple data centers. The host computers of the different clusters may be connected to the storage system104via the network102. Thus, each of the host computers in the clusters is able to access the storage system via the network and may share the resources provided by the storage system. Consequently, any process running on any of the host computers in the distributed computer system may also access the storage system via the network.

In the illustrated embodiment, each of the clusters C-1, C-2. . . C-N includes a number of host computers H-1, H-2. . . H-M (where M is a positive integer) and a cluster management server106. The host computers can be assigned to the host computer clusters based on predefined criteria, which may include geographical and/or logical relationships between the host computers. The number of host computers included in each of the clusters can be any number from one to several hundred or more. In addition, the number of host computers included in each of the clusters can vary so that different clusters can have a different number of host computers. The host computers are physical computer systems that host or support one or more processing entities so that the processing entities are executing on the physical computer systems. The host computers may be servers that are commonly found in data centers. As an example, the host computers may be servers installed in one or more server racks. In an embodiment, the host computers of a cluster are located within the same server rack.

Turning now toFIG. 2, components of a host computer200that is representative of the host computers H-1, H-2. . . H-M in the clusters C-1, C-2. . . C-N in accordance with an embodiment of the invention are shown. InFIG. 2, the physical connections between the various components of the host computer are not illustrated. In the illustrated embodiment, the host computer is configured to support a number of processing entities220A,220B . . .220L (where L is a positive integer), which are VMs in this embodiment. The number of VMs supported by the host computer can be anywhere from one to more than a hundred. The exact number of VMs supported by the host computer is only limited by the physical resources of the host computer. The VMs share at least some of the hardware resources of the host computer, which include system memory222, one or more processors224, a storage interface226, and a network interface228. The system memory222, which may be random access memory (RAM), is the primary memory of the host computer. The processor224can be any type of a processor, such as a central processing unit (CPU) commonly found in a server. The storage interface226is an interface that allows that host computer to communicate with the storage system104. As an example, the storage interface may be a host bus adapter or a network file system interface. The network interface228is an interface that allows the host computer to communicate with other devices connected to the network102. As an example, the network interface may be a network adapter.

In the illustrated embodiment, the VMs220A,220B . . .220L run on “top” of a hypervisor230, which is a software interface layer that enables sharing of the hardware resources of the host computer200by the VMs. However, in other embodiments, one or more of the VMs can be nested, i.e., a VM running in another VM. Any computer virtualization architecture can be implemented. For example, the hypervisor may run on top of the host computer's operating system or directly on hardware of the host computer. With the support of the hypervisor, the VMs provide virtualized computer systems that give the appearance of being distinct from the host computer and from each other. Each VM includes a guest operating system (OS)232and one or more guest applications (APP)234. The guest operating system manages virtual system resources made available to the corresponding VM by the hypervisor230, and, among other things, the guest operating system forms a software platform on top of which the guest applications run.

Similar to any other computer system connected to the network102, the VMs220A,220B . . .220L are able to communicate with other computer systems connected to the network using the network interface228of the host computer200. In addition, the VMs are able to access the storage system104using the storage interface226of the host computer.

The host computer200may include a virtual network agent236, which operates within the hypervisor230to provide virtual networking capabilities, such as bridging, L3 routing, L2 switching and firewall capabilities, so that software defined networks or virtual networks can be created. In a particular embodiment, the virtual network agent236may be part of a VMware NSX™ virtual network product installed in the distributed computer system100.

Turning back toFIG. 1, each of the cluster management servers106in the clusters C-1, C-2. . . C-N operates to monitor and manage the host computers H-1, H-2. . . H-M in the respective cluster. Each cluster management server may be configured to monitor the current configurations of the host computers and the processing entities, e.g., VMs, running on the host computers in the respective cluster. The monitored configurations may include hardware configuration of each of the host computers, such as CPU type and memory size, and/or software configurations of each of the host computers, such as operating system (OS) type and installed applications or software programs. The monitored configurations may also include processing entity hosting information, i.e., which processing entities are hosted or running on which host computers. The monitored configurations may also include processing entity information. The processing entity information may include size of each of the processing entities, virtualized hardware configuration of each of the processing entities, such as virtual CPU type and virtual memory size, software configuration of each of the processing entities, such as OS type and installed applications or software programs running on each of the processing entities, and virtual storage size for each of the processing entities. The processing entity information may also include resource parameter settings, such as demand, limit, reservation and share values for various resources, e.g., CPU, memory, network bandwidth and storage, which are consumed by the processing entities. The “demand,” or current usage, of the processing entities for the consumable resources, such as CPU, memory, network, and storage, are measured by the host computers hosting the processing entities and provided to the respective cluster management server.

In some embodiments, the cluster management servers106may be physical computers with each computer including at least memory and one or more processors, similar to the host computer200. In other embodiments, the cluster management servers may be implemented as software programs running on physical computers, such as the host computer200shown inFIG. 2, or virtual computers, such as the VMs220A,220B . . .220L. In an implementation, the cluster management servers are VMware® vCenter™ servers with at least some of the features available for such servers.

In the illustrated embodiment, each of the cluster management servers106includes a content library (CL) management module108, which is configured to create and manage one or more content libraries110. A content library is a repository for consumable software items, such as virtual machine (VM) templates and virtual application (vApp) templates, as well as other software items, such as ISO files, scripts and text files, for example. A VM template is a master image of a virtual machine that can be used to create new virtual machines. This image typically includes an operating system, applications and configuration settings for the virtual machine. A vApp template is a VM image that is loaded with an operating system, applications and data. vApp templates ensure that virtual machines are consistently configured across an entire organization. Thus, consumable software items can be software items that are used to clone, convert or deploy processing entities. A content library may be a publishing content library, which functions as a source of software items for other content libraries that are subscribed to the publishing content library, i.e., subscribed content libraries. A subscribed content library is a content library that allows the users of the subscribed content library to easily access and use the software items of the publishing content library to which the subscribed content library is subscribed. A single publishing content library may have multiple subscribed content libraries. Thus, the use of content libraries in the distributed computer system100easily allows users to share and use software items, in particular the consumable software items. The content library management module108and content libraries are further described below.

The network102can be any type of computer network or a combination of networks that allows communications between devices connected to the network. The network102may include the Internet, a wide area network (WAN), a local area network (LAN), a storage area network (SAN), a fibre channel network and/or other networks. The network102may be configured to support protocols suited for communications with storage arrays, such as Fibre Channel, Internet Small Computer System Interface (iSCSI), Fibre Channel over Ethernet (FCoE) and HyperSCSI.

The storage system104is used to store data for the host computers of the clusters C-1, C-2. . . C-N, which can be accessed like any other storage device connected to computer systems. In an embodiment, the storage system can be accessed by entities, such as the cluster management servers106, including their content library management modules108, and the processing entities running on the host computers, using any file system, e.g., virtual machine file system (VMFS) or network file system (NFS). The storage system104includes one or more computer data storage devices112, which can be any type of storage devices, such as solid-state devices (SSDs), hard disks or a combination of the two. At least some of these storage devices may be local storage devices of the host computers, e.g., locally attached disks or SSDs within the host computers. The storage devices112may operate as components of a network-attached storage (NAS) and/or a storage area network (SAN). The storage system may include one or more storage managing modules114, which manage the operation of the storage system. In an embodiment, each storage managing module114is a computer program executing on one or more computer systems (not shown) of the storage system. The storage system supports multiple datastores DS-1, DS-2. . . DS-X (where X is a positive integer), which may be identified using logical unit numbers (LUNs). In an embodiment, the datastores are virtualized representations of storage facilities. Thus, each datastore may use the storage resource from more than one storage device included in the storage system. The datastores are used to store data associated with the processing entities supported by the host computers of the clusters. The same datastore may be associated with more than one cluster. For VMs, the datastores may be used to store virtual storage, e.g., virtual disks, used by each of the VMs, as well as other files needed to support the VMs, such as configuration files for the VMs. In addition, the datastores may be used to store snapshots of processing entities, e.g., VMs, which may include some or all of the files of the processing entities. Furthermore, the datastores may be used to store content libraries108created and managed by the content library management modules108, as well as the contents of the content libraries. One or more datastores may be associated with one or more host computers. Thus, each host computer is associated with at least one datastore. Some of the datastores may be grouped into one or more clusters of datastores, which are commonly referred to as storage pods.

Turning back to the content library management modules108, each of these content library management modules is configured or programmed to support a content library feature in which one or more content libraries can be created and maintained for the corresponding cluster. When a content library is created by a user using a content library management module, the content library can be configured to be a publishing content library so that one or more other content libraries can subscribe to the publishing content library. The publishing content library may be configured so that a password or other verification is required for other content libraries to subscribe to the publishing content library. The publishing content library typically includes one or more software items, which may include consumable software items, and metadata of the software items (sometimes referred to herein as “item metadata”). In an embodiment, the consumable software items may be stored as Open Virtualization Format (OVF) file format. The item metadata includes information regarding each of the software items, such as identification of the software item, creation date of the software item, software item type, name of library to which the software item belong, description of the storage item, version of the storage item, file uniform resource locator (URL) of the storage item and storage location of the software item. The item metadata may be stored as one or more files in the publishing content library that can be synchronized at any subscribed content library. In an embodiment, the item metadata may be stored as one or more JavaScript Object Notation (JSON) files. However, in other embodiments, the item metadata may be stored in the content library in any format or structure.

Alternatively, when a content library is created by a user using a content library management module108, the content library can be configured to subscribe to a publishing content library so that the created content library can be a subscribed content library to the publishing content library. The publishing and subscribed content libraries may be created using the same content library management module in a cluster management server or different content library management modules in other cluster management servers. The subscribed content library includes options for content synchronization with the publishing content library. One content synchronization content option is to set the subscribed content library for full content download. With this full synchronization option, after a subscribed content library is created, the item metadata and all the software items in the publishing content library are downloaded to the subscribed content library, as described below using an example.

FIG. 3Aillustrates an initial synchronization process of a subscribed content library304with a publishing content library302to which the subscribed content library is subscribed when the full synchronization option of the subscribed content library is enabled in accordance with an embodiment of the invention. The publishing content library302includes item metadata306and multiple software items308-1. . .308-N (where N is an integer greater than 1), which may include consumable software items, such as VM templates and vApp templates. Thus, inFIG. 3A, the subscribed content library304is being synchronized with the publishing content library302. In this example, the subscribed content library304has been set to the full synchronization option. Thus, the item metadata306and all the software items308-1. . .308-N are being downloaded from the publishing content library302to the subscribed content library304.

Once the subscribed content library304has been synchronized with the publishing content library302, the subscribed content library may be re-synchronized with the publishing content library automatically at predetermined periods or manually in response to user input. Alternatively, the subscribed content library may be re-synchronized with the publishing content library automatically when the contents of the publishing content library have been changed.

FIG. 3Billustrates a re-synchronization process of the subscribed content library304with the publishing content library302when the full synchronization option of the subscribed content library is enabled in accordance with an embodiment of the invention. In this example, a new software item310has been added to the publishing content library302shown inFIG. 3A. Consequently, the item metadata in the publishing content library has been changed from the item metadata306to item metadata306′. Thus, inFIG. 3B, the new software item310is being downloaded from the publishing content library302to the subscribed content library304. In addition, the software items308-1. . .308-N in the subscribed content library304are synchronized with the software items308-1. . .308-N in the publishing content library302since one or more of these software items in the publishing content library302may have been modified or changed since previous synchronization process. In addition, the previous item metadata306in the subscribed content library304is being synchronized with the item metadata306′ in the publishing content library302so that both the publishing and subscribed content libraries include the latest item metadata306′.

The other content synchronization option is to set a subscribed content library for on-demand content download. With this on-demand synchronization option, after the subscribed content library is created, only the item metadata in the publishing content library is downloaded to the subscribed content library, as described below using an example.

FIG. 4Aillustrates an initial synchronization process of a subscribed content library404with a publishing content library402to which the subscribed content library is subscribed when the on-demand synchronization option of the subscribed content library is enabled in accordance with an embodiment of the invention. The publishing content library402includes item metadata406and software items408-1. . .408-N (where N is an integer greater than 1). In this example, the subscribed content library404has been set to the on-demand synchronization option. Thus, the item metadata406is downloaded from the publishing content library402to the subscribed content library404, but none of the software items408-1. . .408-N are downloaded from the publishing content library to the subscribed content library. Although the software items408-1. . .408-N are not actually downloaded to the subscribed content library404, the software items may be indicated as being available in the subscribed content library using the item metadata406. Thus, inFIG. 4A, these available software items408-1. . .408-N in the subscribed content library402are illustrated as being phantom items.

However, when a user of the subscribed content library404selects a software item for use, that particular software item is downloaded on-demand from the publishing content library402to the subscribed content library404. Thus, when the on-demand synchronization option of the subscribed content library404is enabled, the software items are only downloaded from the publishing content library to the subscribed content library when the software items are needed at the subscribed content library. The downloaded software items are maintained at the subscribed content library404until the software items are evicted or deleted from the subscribed content library either individually, entirely or in groups. However, the downloaded software items in the subscribed content library404may be replaced if different versions of the software items are downloaded from the publishing content library402to the subscribed content library404.

FIG. 4Billustrates an on-demand downloading process of the subscribed content library404with the publishing content library402when the on-demand synchronization option of the subscribed content library is enabled in accordance with an embodiment of the invention. In this example, a user of the subscribed content library404selects one of the phantom software items, i.e., the phantom software item408-N, in the subscribed content library for use. In response, the actual software item408-N is downloaded from the publishing content library402to the subscribed content library404.

Similar to the subscribed content library304shown inFIGS. 3A and 3Bwith the full synchronization option enabled, once the subscribed content library404with the on-demand synchronization option enabled has been synchronized with the publishing content library402, the subscribed content library404may be re-synchronized with the publishing content library402automatically at predetermined periods or manually in response to user input. Alternatively, the subscribed content library404may be re-synchronized with the publishing content library402automatically when the contents of the publishing content library402have been changed. However, since the subscribed content library404has the on-demand synchronization option enabled, only the item metadata is synchronized. Consequently, the subscribed content library404is not synchronized to the publishing content library402with respect to any software items. Thus, if one or more new software items have been added to the publishing content library402, these new software items will not be downloaded to the subscribed content library404. Similarly, if one or more software items are deleted from the publishing content library402, the deletion of these software items will not be reflected in the subscribed content library404even if these software items have been previously downloaded on-demand from the publishing content library402to the subscribed content library404, and currently stored in the subscribed content library404.

FIG. 4Cillustrates a re-synchronization process of the subscribed content library404with the publishing content library402when the on-demand synchronization option of the subscribed content library is enabled in accordance with an embodiment of the invention. In this example, a new software item410has been added to the publishing content library402. Consequently, the item metadata in the publishing content library402has been changed from the item metadata406to item metadata406′. Thus, the previous item metadata406in the subscribed content library404is synchronized with the item metadata406′ in the publishing content library. However, the new software item410in the publishing content library402is not downloaded from the publishing content library to the subscribed content library404. In addition, none of the downloaded software items, e.g., the software item408-N, in the subscribed content library404are affected by the re-synchronization process. Thus, none of the downloaded software items in the subscribed content library404are deleted or modified due to the re-synchronization process.

The on-demand synchronization option for a subscribed content library allows significant reduction in storage use for the subscribed content library. This may be an important factor when storage space is limited for the cluster that is associated with a subscribed content library. Thus, even if storage space is limited, a user can create and use a subscribed content library since the storage requirement for the subscribed content library with just the item metadata will be minimal. This minimal storage requirement for the subscribed content library can be maintained by evicting or deleting a software item that has been downloaded from the publishing content library to the subscribed content library. When the deleted software item is again needed, the deleted software item can be downloaded from the publishing content library to the subscribed content library.

An operation of the distributed computer system100with respect to subscribed content libraries in accordance with an embodiment of the invention is described with reference to a flow diagram ofFIG. 5. At block502, in response to user input at a cluster management server106in the distributed computer system, a subscribed content library associated with that cluster management server is created by the content library management module108of that cluster management server. As part of this creation step, the subscription content library is subscribed to a publishing content library, which can be associated with the same cluster management server or another cluster management server in the distributed computer system, according to the user input. In a particular implementation, the subscription content library may be subscribed to the publishing content library using a pointer, such as a uniform resource locator (URL), to the publishing content library.

Next, at block504, in response to another user input, a full synchronization option or an on-demand synchronization option is enabled for the subscribed content library. If the full synchronization option is enabled, the operation proceeds to block506, where the item metadata and all the software items in the publishing content library are downloaded to the subscribed content library. Next, at block508, a re-synchronization process is performed on the subscribed content library by the content library management module108, which involves synchronizing the subscribed content library with the subscribed content library with respect to the software items and the item metadata in the publishing content library. With the full synchronization option enabled, this re-synchronization process includes updating the item metadata and all the software items in the subscribed content library to correspond to the item metadata and the software items in the publishing content library. The re-synchronization process may be repeated periodically or as needed. The re-synchronization process may also be performed in response to manual user input. The item metadata in the subscribed content library may be synchronized with the item metadata in the publishing content library using a synchronization mechanism. If JSON files are used for the item metadata, a synchronization mechanism that synchronizes the JSON files at the different content libraries may be used. The downloading of software items from the publishing content library to the subscribed content library may be accomplished using a connection based on Hypertext Transfer Protocol (HTTP) or any data transmission/downloading/replication process. As an example, the downloading of software items from the publishing content library to the subscribed content library may alternatively be accomplished using a storage file copy process, such as a storage file copy process at the storage system level or a proprietary storage file copy process, e.g., VMware's Network File Copy (NFC) process.

However, if the on-demand synchronization option is enabled at block504, the operation proceeds to block510, where only the item metadata in the publishing content library are downloaded to the subscribed content library. Thus, with the on-demand synchronization option enabled, the software items in the publishing content library are not downloaded to the subscribed content library. Next, at block514, in response to user selection of a software item at the subscribed content library, the selected software item is downloaded from the publishing content library to the subscribed content library. The on-demand downloading of software items from the publishing content library to the subscribed content library may be accomplished using a connection based on Hypertext Transfer Protocol (HTTP).

Next, at block512, a re-synchronization process is performed on the subscribed content library by the content library management module108, which involves synchronizing the subscribed content library with the publishing content library with respect to only the item metadata in the publishing content library. Thus, the subscribed content library is not synchronized with the publishing content library with respect to the software items in the publishing content library. With the on-demand synchronization option enabled, this re-synchronization process includes updating only the item metadata in the subscribed content library to correspond to the item metadata in the publishing content library. Any software items in the subscribed content library are not synchronized with the software items in the publishing content library. Thus, no software items are added to or deleted from the subscribed content library as part of the re-synchronization process. The re-synchronization process may be repeated periodically or as needed. The re-synchronization process may also be performed in response to manual user input. As noted above, the item metadata in the subscribed content library may be synchronized with the item metadata in the publishing content library using a synchronization mechanism. If JSON files are used for the item metadata, a synchronization mechanism that synchronizes the JSON files at the different content libraries may be used.

Regardless of whether the full or on-demand synchronization option is enabled, the re-synchronization process on the subscribed content library may be repeated as long as the subscribed content library is active or until the subscribed content library is deleted. In some embodiments, further re-synchronization processes on the subscribed content library may be stopped by user input.

A method for synchronizing content libraries within a distributed computer system in accordance with an embodiment of the invention is described with reference to a flow diagram ofFIG. 6. At block602, a content library in the distributed computer system is subscribed to a publishing content library in the distributed computer system so that the content library is set as a subscribed content library to the publishing content library, which includes at least a consumable software item and metadata of the consumable software item. At block604, an on-demand synchronization option of the subscribed content library is enabled. At block606, as a result of the on-demand synchronization option of the subscribed content library being enabled, the metadata of the consumable software item is downloaded from the publishing content library to the subscribed content library without downloading the consumable software item. At block608, in response to user selection of the consumable software item at the subscribed content library, the consumable software item is downloaded from the publishing content library to the subscribed content library so that the consumable software item can be used from the subscribed content library.