Method and apparatus to deploy applications in cloud environments

A management computer comprises: a memory configured to store server information identifying functionalities which can be executed by each of a plurality of servers and applications running on each of the servers, and storage system information identifying functionalities which can be executed by each of a plurality of storage systems and application data stored in each of the storage systems; and a processor configured to: select a server, in which an application is to be deployed, from the plurality of servers, and a storage system, on which a volume either contains data to be used to deploy the application or maps to another volume that contains the data to be used to deploy the application, from the plurality of storage systems, based on the server information and the storage system information, and request to deploy the application on the selected server and create the volume on the selected storage system.

BACKGROUND OF THE INVENTION

The present invention relates generally to computer systems and, more particularly, to method and apparatus to deploy applications in cloud environments.

Cloud computing has become widely used. There are several solutions to utilize multiple cloud computing environments. For example, a cloud environment is managed and used based on following role allotment. The infrastructure administrator manages IT resources and stores these into resource pools. Application administrator obtains IT resources from the resource pool using a self-service portal to execute his/her applications. Several problems exist. In a cloud computing environment, users cannot select servers on which applications (VMs) are deployed because they do not identify the infrastructure within the cloud. Performance and/or capacity efficiency will vary greatly depending on which servers the applications (VMs) will be deployed. In the case where servers and/or storages have deduplication functionality, it is better to deploy applications (VMs) on servers on which other applications (VMs) created by using the same application catalog are already running from a capacity efficiency perspective. On the other hand, deploying many applications (VMs) on the same servers will cause performance bottleneck.

U.S. Patent Application Publication No. US2013/0132954 relates to a mechanism for image deployment in a cloud environment comprising at least two hosts coupled to at least one disk, and at least one virtual machine created in at least one host of the at least two hosts by deploying an additional image to the at least one disk. The method is characterized in that the at least one host for deploying an additional image is selected according to a deployment factor representing a communality relationship between one or more existing base images in the cloud environment and the additional image. This reference does not consider configurations of servers and storages and their capabilities of deduplication functionalities in deploying applications (VMs). Nor does it disclose changing the configurations of servers and storages or changing the criteria for deciding where to deploy applications (VMs) according to the type of the applications.

BRIEF SUMMARY OF THE INVENTION

Exemplary embodiments of the invention provide a scheme for deploying applications (VMs) by considering the servers on which other applications (VMs) created by using the same application catalog are deployed, whether the servers have deduplication functionalities, and performance of the servers. When no candidate servers are found, the scheme provides ways for deploying applications (VMs) by considering storages that have volumes in which other applications (VMs) created by using the same application catalog are contained, whether the storages have deduplication functionalities, and performance of the storages. When no candidate storages are found, the scheme provides ways for deploying applications (VMs) by changing the configurations of the storages. This includes virtualizing volumes in which the other applications (VMs) created by using the same application catalog are contained to other storages, copying or migrating volumes in which the other applications (VMs) created by using the same application catalog are contained to other volumes on the same storages or other storages, and changing I/O paths from servers to storages. The scheme further provides ways for deploying applications (VMs) by changing the criteria for deciding where to deploy applications (VMs) according to the type of the applications. For instance, in the case of deploying web servers, distributing loads of servers is considered more important than capacity efficiency. In the case of deploying file servers, capacity efficiency is considered more important than the performance of servers. In a specific embodiment, the scheme is implemented in the form of a management program.

This invention discloses how to decrease costs to execute applications, especially in a cloud environment. The management program deploys applications on suitable servers from suitable storages from perspectives of both capacity efficiency and performance.

One aspect of the present invention is directed to a management computer coupled to a plurality of servers and a plurality of storage systems. The management computer comprises: a memory being configured to store server information identifying functionalities which can be executed by each of the plurality of servers and applications running on each of the plurality of servers, and storage system information identifying functionalities which can be executed by each of the plurality of storage systems and application data stored in each of the plurality of storage systems; and a processor being configured to: select a server, in which an application is to be deployed, from the plurality of servers, and a storage system, on which a volume either contains data to be used to deploy the application or maps to another volume that contains the data to be used to deploy the application, from the plurality of storage systems, based on the server information and the storage system information, and request to deploy the application on the selected server and create the volume on the selected storage system.

In some embodiments, selecting the server comprises: determining whether one or more servers of the plurality of servers have deduplication functionality; determining whether one or more servers of the plurality of servers have one or more other applications running thereon that are deployed from a same application catalog as the application; determining whether one or more servers of the plurality of servers have loads that are below a preset server load threshold; if one or more servers of the plurality of servers have deduplication functionality, have one or more other applications running thereon that are deployed from the same application catalog as the application, and have loads that are below the preset server load threshold (criterion 1), then selecting the server having the lowest load from the one or more servers under criterion 1; otherwise, if one or more servers of the plurality of servers have deduplication functionality, and have loads that are below the preset server load threshold, but do not have one or more other applications running thereon that are deployed from the same application catalog as the application (criterion 2), then selecting the server having the lowest load from the one or more servers under criterion 2; otherwise, if one or more servers of the plurality of servers have loads that are below the preset server load threshold, but do not have deduplication functionality and do not have one or more other applications running thereon that are deployed from the same application catalog as the application (criterion 3), then selecting the server having the lowest load from the one or more servers under criterion 3.

In specific embodiments, selecting the storage system comprises: finding a storage system from the plurality of storage systems which has a volume containing a golden image of the application; determining whether the found storage system has a storage load below a preset storage load threshold; if the server was selected from the one or more servers under criterion 1 or criterion 2 and if the found storage system has a storage load below the preset storage load threshold, then selecting the found storage system; and if the server was selected from the one or more servers under criterion 1 or criterion 2 and if the found storage system has a storage load not below the preset storage load threshold, then virtualizing, copying, or migrating the volume of the found storage system to another storage system of the plurality of storage systems and selecting the another storage system.

In some embodiments, selecting the storage system comprises: finding a storage system from the plurality of storage systems which has a volume containing a golden image of the application; determining whether the found storage system has deduplication functionality; determining whether the found storage system has a storage load below a preset storage load threshold; if the server was selected from the one or more servers under criterion 3, the found storage system has deduplication functionality, and the found storage system has a storage load below the preset storage load threshold, then selecting the found storage system; and if the server was selected from the one or more servers under criterion 3, the found storage system has deduplication functionality, and the found storage system has a storage load not below the preset storage load threshold, then virtualizing, copying, or migrating the volume of the found storage system to another storage system of the plurality of storage systems and selecting the another storage system.

In specific embodiments, electing the storage system comprises: finding a storage system from the plurality of storage systems which has a volume containing a golden image of the application; determining whether the found storage system has deduplication functionality; determining whether the found storage system has a storage load below a preset storage load threshold; finding one or more other storage systems of the plurality of storage systems that include a same virtual storage as one that the found storage system includes; determining whether the found one or more other storage systems have deduplication functionality; if the server was selected from the one or more servers under criterion 3, the found storage system has no deduplication functionality, the found one or more other storage systems do not have deduplication functionality, and the found storage system has a storage load below the preset storage load threshold, then selecting the found storage system; if the server was selected from the one or more servers under criterion 3, the found storage system has no deduplication functionality, the found one or more other storage systems do not have deduplication functionality, and the found storage system has a storage load not below the preset storage load threshold, then virtualizing, copying, or migrating the volume of the found storage system to another storage system of the plurality of storage systems and selecting the another storage system; and if the server was selected from the one or more servers under criterion 3, the found storage system has no deduplication functionality, the found one or more other storage systems have deduplication functionality, then virtualizing, copying, or migrating the volume of the found storage system to one of the one or more other storage systems and selecting the one storage system having the virtualized, copied, or migrated volume.

In some embodiments, the server is selected based on whether performance of the server is more important than capacity efficiency of the server or not. Selecting the server comprises: determining whether one or more servers of the plurality of servers have deduplication functionality; determining whether one or more servers of the plurality of servers have one or more other applications running thereon that are deployed from a same application catalog as the application; determining whether one or more servers of the plurality of servers have loads that are below a preset server load threshold; if the performance of the selected server is not more important than the capacity efficiency of the server, and if one or more servers of the plurality of servers have deduplication functionality, have one or more other applications running thereon that are deployed from the same application catalog as the application, and have loads that are below the preset server load threshold (criterion 1), then selecting the server having the lowest load from the one or more servers under criterion 1; otherwise, if the performance of the selected server is not more important than the capacity efficiency of the server, and if one or more servers of the plurality of servers have deduplication functionality, and have loads that are below the preset server load threshold, but do not have one or more other applications running thereon that are deployed from the same application catalog as the application (criterion 2), then selecting the server having the lowest load from the one or more servers under criterion 2; otherwise, if one or more servers of the plurality of servers have loads that are below the preset server load threshold, but do not have deduplication functionality and do not have one or more other applications running thereon that are deployed from the same application catalog as the application (criterion 3), then selecting the server having the lowest load from the one or more servers under criterion 3.

In specific embodiments, selecting the storage system comprises: finding a storage system from the plurality of storage systems which has a volume containing a golden image of the application; determining whether the found storage system has a storage load below a preset storage load threshold; if the server was selected from the one or more servers under criterion 1 or criterion 2 and if the found storage system has a storage load below the preset storage load threshold, then selecting the found storage system; and if the server was selected from the one or more servers under criterion 1 or criterion 2 and if the found storage system has a storage load not below the preset storage load threshold, then virtualizing, copying, or migrating the volume of the found storage system to another storage system of the plurality of storage systems and selecting the another storage system.

In some embodiments, selecting the storage system comprises: finding a storage system from the plurality of storage systems which has a volume containing a golden image of the application; determining whether the found storage system has deduplication functionality; determining whether the found storage system has a storage load below a preset storage load threshold; if the server was selected from the one or more servers under criterion 3, the found storage system has deduplication functionality, and the found storage system has a storage load below the preset storage load threshold, then selecting the found storage system; and if the server was selected from the one or more servers under criterion 3, the found storage system has deduplication functionality, and the found storage system has a storage load not below the preset storage load threshold, then virtualizing, copying, or migrating the volume of the found storage system to another storage system of the plurality of storage systems and selecting the another storage system.

In specific embodiments, selecting the storage system comprises: finding a storage system from the plurality of storage systems which has a volume containing a golden image of the application; determining whether the found storage system has deduplication functionality; determining whether the found storage system has a storage load below a preset storage load threshold; finding one or more other storage systems of the plurality of storage systems that include a same virtual storage as one that the found storage system includes; determining whether the found one or more other storage systems have deduplication functionality; if the server was selected from the one or more servers under criterion 3, the found storage system has no deduplication functionality, one or more other storage systems of the plurality of storage systems include the same virtual storage as one that the found storage system includes and do not have deduplication functionality, and the found storage system has a storage load below the preset storage load threshold, then selecting the found storage system; if the server was selected from the one or more servers under criterion 3, the found storage system has no deduplication functionality, one or more other storage systems of the plurality of storage systems include the same virtual storage as one that the found storage system includes and do not have deduplication functionality, and the found storage system has a storage load not below the preset storage load threshold, then virtualizing, copying, or migrating the volume of the found storage system to another storage system of the plurality of storage systems and selecting the another storage system; and if the server was selected from the one or more servers under criterion 3, the found storage system has no deduplication functionality, one or more other storage systems of the plurality of storage systems include the same virtual storage as one that the found storage system includes and have deduplication functionality, then virtualizing, copying, or migrating the volume of the found storage system to one of the one or more other storage systems and selecting the one storage system having the virtualized, copied, or migrated volume.

In accordance with another aspect of the invention, a method for managing a plurality of servers and a plurality of storage systems comprises: storing server information identifying functionalities which can be executed by each of the plurality of servers and applications running on each of the plurality of servers, and storage system information identifying functionalities which can be executed by each of the plurality of storage systems and application data stored in each of the plurality of storage systems; selecting a server, in which an application is to be deployed, from the plurality of servers, and a storage system, on which a volume either contains data to be used to deploy the application or maps to another volume that contains the data to be used to deploy the application, from the plurality of storage systems, based on the server information and the storage system information, and requesting to deploy the application on the selected server and create the volume on the selected storage system.

These and other features and advantages of the present invention will become apparent to those of ordinary skill in the art in view of the following detailed description of the specific embodiments.

DETAILED DESCRIPTION OF THE INVENTION

In the following detailed description of the invention, reference is made to the accompanying drawings which form a part of the disclosure, and in which are shown by way of illustration, and not of limitation, exemplary embodiments by which the invention may be practiced. In the drawings, like numerals describe substantially similar components throughout the several views. Further, it should be noted that while the detailed description provides various exemplary embodiments, as described below and as illustrated in the drawings, the present invention is not limited to the embodiments described and illustrated herein, but can extend to other embodiments, as would be known or as would become known to those skilled in the art. Reference in the specification to “one embodiment,” “this embodiment,” or “these embodiments” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention, and the appearances of these phrases in various places in the specification are not necessarily all referring to the same embodiment. Additionally, in the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to one of ordinary skill in the art that these specific details may not all be needed to practice the present invention. In other circumstances, well-known structures, materials, circuits, processes and interfaces have not been described in detail, and/or may be illustrated in block diagram form, so as to not unnecessarily obscure the present invention.

Furthermore, some portions of the detailed description that follow are presented in terms of algorithms and symbolic representations of operations within a computer. These algorithmic descriptions and symbolic representations are the means used by those skilled in the data processing arts to most effectively convey the essence of their innovations to others skilled in the art. An algorithm is a series of defined steps leading to a desired end state or result. In the present invention, the steps carried out require physical manipulations of tangible quantities for achieving a tangible result. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals or instructions capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, instructions, or the like. It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise, as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing,” “computing,” “calculating,” “determining,” “displaying,” or the like, can include the actions and processes of a computer system or other information processing device that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system's memories or registers or other information storage, transmission or display devices.

The present invention also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may include one or more general-purpose computers selectively activated or reconfigured by one or more computer programs. Such computer programs may be stored in a computer-readable storage medium including non-transitory medium, such as, but not limited to optical disks, magnetic disks, read-only memories, random access memories, solid state devices and drives, or any other types of media suitable for storing electronic information. The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs and modules in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform desired method steps. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein. The instructions of the programming language(s) may be executed by one or more processing devices, e.g., central processing units (CPUs), processors, or controllers.

Exemplary embodiments of the invention, as will be described in greater detail below, provide apparatuses, methods and computer programs for deploying applications in cloud environments.

First Embodiment

This embodiment discloses how a management program deploys applications (VMs) on servers by considering various factors.

FIG. 1illustrates an example of a logical configuration of a system in which the method and apparatus of the invention may be applied. A cloud system1000includes a management program1200, applications and virtualized resources1300, an IT infrastructure1500, a self-service portal1600, and an IT infrastructure management user interface1800. An application administrator1010uses this system via the self-service portal1600. An IT infrastructure administrator1030uses this system via an IT infrastructure management user interface1800.

FIG. 1-A shows an example of a logical configuration of the IT infrastructure1500ofFIG. 1. An application1543and an OS (Operating System)1542are running on a hypervisor1541. This hypervisor1541is running on a server1540. Applications1554,1555and OS1552,1553are running on a hypervisor1551. This hypervisor1551is running on a server1550. The application1543uses a virtual volume1532of the virtual storage system01(1530). The application1554uses a virtual volume1533of the virtual storage system01(1530). The application1555uses a virtual volume1534of the virtual storage system01(1530). These virtual volumes1532,1533, and1534are provisioned from physical storage systems01(1510) and02(1520).

FIG. 2shows an example of the physical configuration of the cloud system ofFIG. 1. The cloud system1000includes a management server2000, servers3000, storage arrays4000, a management network5000, and a data network6000. The servers3000and storage arrays4000are connected via the data network6000. This network can be LAN (Local Area Network) or WAN (Wide Area Network), but it is not limited to them. The management server2000, servers3000, and storage arrays4000are connected via the management network5000. This network is usually LAN, but it is not limited to that. Although the management network and data network are separated in this embodiment, they can be a single converged network. In this embodiment, the management server2000and servers3000are separated, but the invention is not limited to that. For example, any server can host a management program. In this embodiment, the servers3000and storage arrays4000are separated, but the invention is not limited to that. For example, the servers and storages arrays can be combined into one system.

FIG. 2-A shows an example of a configuration of the management server2000of the cloud system1000. A management interface2100is an interface to the management network5000. An input and output device2300is a user interface such as a monitor, a keyboard, and a mouse. A local Disk2400contains a management program2410(same as1200inFIG. 1), an image catalog table2420(FIG. 3), and a VM template table2430(FIG. 4). The management program2410is loaded to a memory2500and executed by a processor2200. The process of the management program2410is described later usingFIG. 15. The image catalog table2420and VM template table2430are loaded to the memory2500and used by the management program2410. The memory2500contains a physical storage table2510(FIG. 5), a virtual storage table2520(FIG. 6), a virtual volume table2530(FIG. 7), a physical server table2540(FIG. 8), a virtual server table2550(FIG. 9), a mapping table2560(FIG. 10), a storage performance table2570(FIG. 11), and a server performance table2580(FIG. 12).

FIG. 3shows an example of the image catalog table2420according to the first embodiment. This catalog is referred to when the application administrator1010deploys applications by using the self-service portal1600. This table is loaded from the local disk2400to the memory2500of the management server2000. Column2421shows the identifications of the catalogs. Column2422shows the types of the applications. Column2423shows the descriptions of the applications. Column2424shows the locations of storage volumes in which the applications are contained. These storage volumes are called “golden images.” Rows242A-242C each show an image catalog. For example, row242A shows the catalog of an Operating System. This catalog contains the SUSE 10.0 Linux image. This image is located on the volume01of the storage system01. The three rows242A-242C list three different application catalogs in this example. Each application catalog typically represents different application name and/or version and/or different OS name/version; however, the invention is not limited to this way of cataloging applications.

FIG. 4shows an example of the VM template table2430. This table describes the resource configurations of several VM types. This table is loaded from the local disk2400to the memory2500of the management server2000. Column2431shows the identifications of the templates. Column2432shows the VM types. Column2433shows the processor types. The values of the column can be normal, high memory, high CPU, or High I/O. Column2434shows the processor performance. The values are relative values on the basis of normal CPU. Column2435shows the numbers of processors. Column2436shows the capacities of the memories. Column2437shows the maximum IOPS (Input/Output Operations per Second). Column2438shows the unit prices. Rows243A-243D each show the resource configuration of a VM type. For example, row243A shows the configuration of the normal VM. This type of VM contains two normal processors and 4 GB memory. The unit price of this type of VM is 10.

FIG. 5shows an example of the physical storage table2510. This table is created in the memory2500by the management program2410. Column2511shows the identifications of the physical storage arrays. Column2512shows the port resources of each physical storage array. Column2513shows the cache resources of each physical storage array. Column2514shows the array group resources of each physical storage array. Column2515shows whether deduplication functionalities are installed on the physical storage arrays or not. Rows251A-251C each show the configuration of a physical storage array. For example, row251A shows the configuration of physical storage array01. The physical storage array has 8 Gbps each of ports A, B, C and D, 160 GB of cache C-01and 128 GB of cache C-02, and 300 TB of array group AG-002and 300 TB of array group AG-102, and it has deduplication functionality installed.

FIG. 6shows an example of the virtual storage table2520. This table is created in the memory2500by the management program2410. Column2521shows the identifications of the virtual storage arrays. Column2522shows the identifications of the physical storage arrays which contain the virtual storage arrays. Column2523shows the assigned port resources to each virtual storage array. Column2524shows the assigned cache resources to each virtual storage array. Column2525shows the assigned array groups to each virtual storage array. Each row shows the configuration of a virtual storage array. For example, row252A shows the configuration of virtual storage array01. Physical storage arrays01,02, and03contain the virtual storage array. This means that resources of these physical storage arrays are assigned to the virtual storage array. The virtual storage array has 8 Gbps each of ports A, B, C, D, E, F, G, and H, 160 GB of cache C-01, 128 GB of cache C-02, 128 GB of cache C-03, and 32 GB of cache C-04, and 300 TB of array group AG001, 300 TB of array group AG002, 200 TB of array group AG003, 500 TB of array group AG004, 1000 TB of array group AG005, and 500 TB of array group AG006.

FIG. 7shows an example of the virtual volume table2530. This table is created in the memory2500by the management program2410. Column2531shows the identifications of the virtual storage arrays owning the virtual storage volumes. Column2532shows the identifications of the virtual storage volumes. Column2533shows the identifications of the physical storage arrays that have the physical volume assigned to the virtual volumes. Column2534shows the identifications of the physical storage volumes assigned to the virtual volumes. Column2535shows the cache resources assigned to each virtual volume. Column2536shows the capacity of each virtual volume. Rows253A-253E each show the configuration of a virtual volume. For example, row253A shows the configuration of virtual volume01of virtual storage array01. The virtual volume is assigned from physical volume01of physical storage01. The virtual volume has 32 GB of cache resources and 80 TB of capacity assigned.

FIG. 8shows an example of the physical server table2540. This table is created in the memory2500by the management program2410. Column2541shows the identifications of physical servers. Column2542shows the numbers of cores and types of CPU of each physical server. Column2543shows the capacities of memories of each physical server. Column2544shows the port resources of each physical server. Column2545shows whether deduplication functionalities are installed on the physical servers or not. Rows254A-254D each show the configuration of a physical server. For example, row254A shows the configuration of physical server01. The physical server has 12 cores of Normal CPU, 32 GB of memory, 4 Gbps each of ports A and B, and deduplication functionality installed.

FIG. 9shows an example of the virtual server table2550. This table is created in the memory2500by the management program2410. Column2551shows the identifications of the virtual servers. Column2552shows the identifications of the physical servers on which the virtual servers are running. Column2553shows numbers of CPU cores assigned to each virtual server. Column2554shows capacities of memories assigned to each virtual server. Column2555shows port resources assigned to each virtual server. Rows255A-255D each show the configuration of a virtual server. For example, row255A shows the configuration of virtual server01. The virtual server is hosted on the physical server01and has 2 CPU cores, 4 GB of memory, and 4 Gbps of port A.

FIG. 10shows an example of the mapping table2560. This table is created in the memory2500by the management program2410. Column2561shows the identifications of the applications. Column2562shows the names of the applications. This name is specified in the application name field1620-A of the GUI1600-A of the self-service portal1600by the application administrator1010. Column2563shows the identifications of the image catalogs. Application type is selected in the application type field1610-A of the GUI1600-A of the self-service portal1600(FIG. 13) by the application administrator1010. By matching this information and the type column2422in the image catalog table2420, the identification is decided. Column2564shows the identifications of the virtual servers on which the applications are running. Column2565shows the names of the virtual servers. In this embodiment, these names are automatically created based on application name by the management program, but the invention is not limited to this. For example, the application administrator can specify the name of each virtual server. Column2566shows the identifications of the ports of the virtual servers. Column2567shows the identifications of the virtual servers. Column2568shows the identifications of the ports of the virtual storages. Column2569shows the identifications of the virtual volumes. Rows256A-256G each show the end-to-end mapping between applications and virtual volumes. For example, row256B shows that the application2has name of “Web-C,” is created from image catalog4, and is running on the virtual server03whose name is “WebDB.” Also, two virtual volumes052and055are assigned to the virtual server03for the application. The virtual volume052of virtual storage02is assigned to the virtual server03through the port B of the virtual storage and the port A of the virtual server. The virtual volume055of virtual storage01is assigned to the virtual server03through the port A of the virtual storage and the port A of the virtual server.

FIG. 11shows an example of the storage performance table2570. This table is created in the memory2500by the management program2410. Column2571shows the identifications of the physical and/or virtual storage arrays. Column2572shows the identifications of historical performance data of the storage arrays. Timestamps may be used as the history ID2572. Column2573shows the usage rate of the caches of the storage arrays. Column2574shows the usage rate of the array group of the storage arrays. Column2575shows the usage rate of the ports of the storage arrays. Each row shows the historical performance data of a storage array. For example, row257A shows the performance data of storage array01which has at least three historical data (from 0 to 2).

FIG. 12shows an example of the server performance table2580. This table is created in the memory2500by the management program2410. Column2581shows the identifications of the physical and/or virtual servers. Column2582shows the identifications of historical performance data of the servers. Timestamps may be used as the history ID2582. Column2583shows the usage rate of the CPUs of the servers. Column2584shows the usage rate of the memories of the servers. Column2585shows the usage rate of the disks of the servers. Column2586shows the usage rate of the ports of the servers. Each row shows the historical performance data of a server. For example, row258A shows the performance data of server01which has at least three historical data (from 0 to 2).

FIG. 13shows an example of the GUI1600-A of the self-service portal1600. This GUI is used when the application administrator1010deploys applications on the cloud system1000. The application administrator selects application type1610-A (for example, “Mail”). Candidates are displayed based on the description2423of the catalog table2420(FIG. 3). Next, the application administrator inputs an application name1620-A (for example, “Mail-A”). Next, the application administrator selects the size of the application1630-A. For example, unit of the mail application is 500 boxes. Therefore the application administrator can select multiples of 500. Next, the application administrator inputs the period of the application usage1640-A (for example, 2 years). The unit of the period can be hours, days, months and years, but it is not limited to them. If a “Cancel” button1660A is clicked, the management program2410cancels the deployment process. If a “Confirm” button1650-A is clicked, the management program2410displays the confirmation GUI1600-B.

FIG. 14shows an example of the confirmation GUI1600-B of the self-service portal1600. This GUI is displayed after the application administrator clicked the “Confirm” button1650-A of the application deployment GUI1600-A of the self-service portal1600inFIG. 13. Field1610-B is the application type. Field1620-B is the application name. Field1630-B is the size of the application. Field1640-B is the period of the application usage. Field1650-B is the information of the VMs being provisioned. Column1651-B is the name of the VM. This name is created from the application name1620-B by the management program2410. Column1652-B is the number and type of the CPU. Column1653-B is the capacity of the memory. Column1654-B is the capacity of storage volumes. Rows165A-B to165D-B each show the configuration of a VM. For example, row165A-B shows the configuration of the VM named “Mail-A-1.” This VM has 16 of High CPU, 8 GB memory, and 2 TB of storage volume. Field1660-B is the calculated unit cost of the application. According to the unit price2438of the VM template table2430(FIG. 4), the unit cost of one “High I/O” VM is 90. The number of “High I/O” VM allocated for this application is 4. Therefore, the unit cost of this application is 360. The unit cost can include the cost of storage volumes. If a “Cancel” button1680-B is clicked, the management program2410cancels the deployment process. If a “Back” button1690-B is clicked, the management program2410redisplays the provisioning GUI1600-A of the self-service portal1600. If a “Confirm” button1670-B is clicked, the management program2410executes application deployment process.

FIG. 15shows an example of a flow diagram illustrating a process of the management program2410in management server2000according to the first embodiment. The process starts in step10010. In step10020, the management program2410receives a request for deploying applications from the self-service portal1600. The parameters shown inFIG. 14(Self Service Portal—Confirmation GUI) are passed to the management program2410. In step10030, the management program2410lists up servers having dedupe functionality. This list is called “list1” in the following sequences. In step10040, the management program2410lists up servers on which applications deployed from the same catalog are running. This list is called “list2” in the following sequences. In step10050, the management program2410lists up servers whose loads are less than a threshold. The threshold can be pre-defined or specified by the IT infrastructure administrator1030. This list is called “list3” in the following sequences. For example, each server has a server load that is calculated by summing CPU usage, memory usage, and port IOPS (Input/Output Operations per Second), typically using weighting factors but not required. That server load is compared with the preset server load threshold. The thresholds can be pre-defined or specified by the IT infrastructure administrator1030.

In step10060, the management program2410checks if servers on all lists (list1, list2, and list3) exist or not. If the result is “Yes” (criterion 1 satisfied), then the process proceeds to step10070. If the result is “No,” then the process proceeds to step10080. In step10070, the management program2410selects one of the servers on all lists (list1, list2, and list3) as a target of application deployment (under criterion 1). A server with the lowest server load can be selected, for example. In step10080, the management program2410judges whether servers on both list1and list3exist or not. If the result is “Yes” (criterion 2 satisfied), then the process proceeds to step10090. If the result is “No,” then the process proceeds to step10100. In step10090, the management program2410selects one of the servers on both list1and list2as a target of application deployment (under criterion 2). A server with the lowest server load can be selected, for example. In step10100, the management program2410judges whether servers on list3exist or not. If the result is “Yes” (criterion 3 satisfied), then the process proceeds to step10110. If the result is “No,” then the process proceeds to step10120. In step10110, the management program2410selects one of the servers on list3as a target of application deployment (under criterion 3). A server with the lowest server load can be selected, for example. In step10120, the management program2410displays an error message indicating that no candidate servers are found for deployment of the application.

In step10130, the management program2410refers to the location column2424of the image catalog table2420(FIG. 3) and finds a physical storage holding a volume in which the application (i.e., golden image) is contained. This can be done by comparing the application type input value via1610-B (FIG. 14) and the values of type column2422. In step10135, the management program2410checks if the server was selected in Step10110or not. The server selected in Step10110does not have deduplication functionality while the server selected in Step10070or10090has it. If the result is “Yes” (i.e., no deduplication functionality), then the process proceeds to step10140. If the result is “No,” then the process proceeds to step10150.

In step10140, the management program2410checks if the storage array found in step10120has deduplication functionality or not by referring to the deduplication functionality column2515of the physical storage table2510(FIG. 5). If the result is “Yes,” then the process proceeds to step10150. If the result is “No,” then the process proceeds to step10170. In step10150, the management program2410checks if loads of the storage array found in step10120are less than a preset threshold or not. The thresholds can be pre-defined or specified by the IT infrastructure administrator1030. If the result is “Yes,” then the process proceeds to step10160. If the result is “No,” then the process proceeds to step10190. For example, each storage has a storage load that is calculated by summing CPU usage, memory usage, and port IOPS (Input/Output Operations per Second), typically using weighting factors but not required. That storage load is compared with the preset storage load threshold.

In step10160, the management program2410selects the storage array found in step10130as a target storage array being used in the application deployment process. In step10170, the management program2410refers to the physical storage table2510(FIG. 5) and the virtual storage table2520(FIG. 6), and finds other physical storages that include the same virtual storage as the one the physical storage array found in step10130has. For example, assuming that the physical storage array01was found in step10130, then the physical storage array02and03would be found in this process because these three physical storage arrays comprise the same virtual storage array01. In step10180, the management program2410checks if the other storage arrays found in step10170have deduplication functionalities or not by referring to the deduplication functionality column2515of the physical storage table2510(FIG. 5). If the result is “Yes,” then the process proceeds to step10190. If the result is “No,” then the process proceeds to step10150. In step10190, the management program2410virtualizes the application volume to one of the other storage arrays that includes the same virtual storage array and has deduplication functionality. This process is not limited to virtualization but copying or migrating the volume to another storage array can be used instead. In step10200, the management program2410deploys the requested application on the server selected in step10070,10090, or10110from the storage selected in step10160or step10190. Deployment can be done by creating a writable snapshot from the application volume (i.e., “golden images”) or copying data in the application volume to another volume. In step10210, the application deployment process of the management program2410ends.

FIG. 15Ashows an example of a flow diagram11000illustrating a process of identifying the server with the lowest server load. In this example, the loads are evaluated based on CPU usage, memory usage, and port IOPS (Input/Output Operations per Second). In another example, different factors may be considered. After starting (11010), the method inFIG. 15Asorts the servers according to their CPU usage (from lower to higher) and scores them based on the order (11020), sorts the servers according to their memory usage (from lower and higher) and scores them based on the order (11030), and sorts the servers according to their port's IOPS (from lower to higher) and scores them based on the order (11040). An example of sorting the servers according to their CPU usage is illustrated with a table11100having columns for number11101, server ID11102, CPU usage11103, and score11104, and rows1110A to1110E representing five servers. Finally, the method calculates the sum of the scores and determines a server with the lowest total score as the server with the lowest server load (11050). The three types of scores (corresponding to the three types of loads) can be weighted in the summing step according to a preset criterion. A similar approach can be used to identify the storage with the lowest storage load.

In the flow diagram10000, the management program checks deduplication capabilities of servers prior to the ones of storages. This is because deduplicating data on servers is better for reducing data transferred from servers to storages via networks. In this embodiment, the management program deploys applications on servers from storage volumes by considering the servers on which other applications (VMs) created by using the same application catalog are deployed, whether the servers have deduplication functionalities and performance of the servers. In the case where no candidate servers are found, the management program performs the deployment by considering the storages having volumes in which the other applications (VMs) created by using the same application catalog are contained, whether the storages have deduplication functionalities and performance of the storages. In the case where no candidate storages are found, the management program changes the configurations of the storages. This includes virtualizing volumes in which the other applications (VMs) created by using the same application catalog are contained to other storages, or copying or migrating volumes in which the other applications (VMs) created by using the same application catalog are contained to other volumes on the same storages or other storages. By doing this, applications can be deployed on suitable servers from suitable storages from perspectives of both capacity efficiency and performance. Yet another way to overcome the problem of loads that exceed the threshold is by changing or reconfiguring I/O paths from servers to storages. For example, the load on a port of the storage may be higher than the threshold in a path from a server via the port to a writable snapshot of the golden image. Another path can be formed from the server via another port to another writable snapshot of the golden image so as to reduce the load on each of the ports of the storage.

Second Embodiment

This embodiment discloses how the management program deploys applications (VMs) on servers by changing the criteria for deciding where to deploy applications (VMs) according to the type of the applications.

FIG. 16shows an example of the image catalog table2420′ according to the second embodiment. Most parts of this table are the same as the image catalog table2420inFIG. 3. The only difference between them is that the image catalog table2420′ has the tendency column2425′. Column2425′ shows the tendency of the application. The tendency may be “capacity,” “performance,” or “n/a” (“not applicable”). For example, the tendency of the application02(row242B′) is “capacity.” This means that capacity efficiency is more important for this application than performance.

FIG. 17shows an example of a portion of the flow diagram of the management program2410in the management server2000according to the second embodiment. Most parts of the flow diagram10000′ are the same as those of the flow diagram10000inFIG. 15. The parts prior to step10055and after step10120are omitted inFIG. 17. The only difference betweenFIG. 15andFIG. 17is that the flow diagram10000′ inFIG. 17has an additional conditional branch (step10055) between step10050and step10060. In step10055, the management program2410refers to the image catalog table2420′ (FIG. 16) and checks the tendency of the application. If the tendency is “performance,” then the process proceeds to step10100. If the tendency is “n/a” or “capacity,” the process proceeds to step10060. This means that in case of applications with “performance” tendency, the management program selects a server with the lowest server load among all servers with less loads than a threshold, regardless of capacity efficiency.

In this embodiment, the management program deploys applications on servers from storage volumes by changing the criteria for deciding where to deploy applications (VMs) according to the type of the applications. For instance, in the case of deploying web servers, distributing loads of servers is considered more important than capacity efficiency. In the case of deploying database servers, capacity efficiency is considered more important than performance of servers. By doing this, applications can be deployed on suitable servers from suitable storages from the perspectives of both capacity efficiency and performance according to the type of the applications.

Of course, the system configuration illustrated inFIG. 2is purely exemplary of information systems in which the present invention may be implemented, and the invention is not limited to a particular hardware configuration. The computers and storage systems implementing the invention can also have known I/O devices (e.g., CD and DVD drives, floppy disk drives, hard drives, etc.) which can store and read the modules, programs and data structures used to implement the above-described invention. These modules, programs and data structures can be encoded on such computer-readable media. For example, the data structures of the invention can be stored on computer-readable media independently of one or more computer-readable media on which reside the programs used in the invention. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include local area networks, wide area networks, e.g., the Internet, wireless networks, storage area networks, and the like.

In the description, numerous details are set forth for purposes of explanation in order to provide a thorough understanding of the present invention. However, it will be apparent to one skilled in the art that not all of these specific details are required in order to practice the present invention. It is also noted that the invention may be described as a process, which is usually depicted as a flowchart, a flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged.

As is known in the art, the operations described above can be performed by hardware, software, or some combination of software and hardware. Various aspects of embodiments of the invention may be implemented using circuits and logic devices (hardware), while other aspects may be implemented using instructions stored on a machine-readable medium (software), which if executed by a processor, would cause the processor to perform a method to carry out embodiments of the invention. Furthermore, some embodiments of the invention may be performed solely in hardware, whereas other embodiments may be performed solely in software. Moreover, the various functions described can be performed in a single unit, or can be spread across a number of components in any number of ways. When performed by software, the methods may be executed by a processor, such as a general purpose computer, based on instructions stored on a computer-readable medium. If desired, the instructions can be stored on the medium in a compressed and/or encrypted format.

From the foregoing, it will be apparent that the invention provides methods, apparatuses and programs stored on computer readable media for deploying applications in cloud environments. Additionally, while specific embodiments have been illustrated and described in this specification, those of ordinary skill in the art appreciate that any arrangement that is calculated to achieve the same purpose may be substituted for the specific embodiments disclosed. This disclosure is intended to cover any and all adaptations or variations of the present invention, and it is to be understood that the terms used in the following claims should not be construed to limit the invention to the specific embodiments disclosed in the specification. Rather, the scope of the invention is to be determined entirely by the following claims, which are to be construed in accordance with the established doctrines of claim interpretation, along with the full range of equivalents to which such claims are entitled.