US20060107087A1 - System for optimizing server use in a data center - Google Patents

System for optimizing server use in a data center Download PDF

Info

Publication number
US20060107087A1
US20060107087A1 US11/257,008 US25700805A US2006107087A1 US 20060107087 A1 US20060107087 A1 US 20060107087A1 US 25700805 A US25700805 A US 25700805A US 2006107087 A1 US2006107087 A1 US 2006107087A1
Authority
US
United States
Prior art keywords
machine
machines
data
ofx
engine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US11/257,008
Inventor
Daniel Sieroka
Peter Fagerstroem
Stephen Pollack
Cadman Chui
John Stetic
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micro Focus Software Inc
JPMorgan Chase Bank NA
Original Assignee
PlateSpin Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by PlateSpin Ltd filed Critical PlateSpin Ltd
Assigned to PLATESPIN LTD reassignment PLATESPIN LTD ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CHUI, CADMAN, FAGERSTROEM, PETER, POLLACK, STEPHEN, SIEROKA, DANIEL, STETIC, JOHN
Publication of US20060107087A1 publication Critical patent/US20060107087A1/en
Assigned to NOVELL, INC. reassignment NOVELL, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: PLATESPIN LTD.
Assigned to CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH reassignment CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH GRANT OF PATENT SECURITY INTEREST Assignors: NOVELL, INC.
Assigned to CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH reassignment CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH GRANT OF PATENT SECURITY INTEREST (SECOND LIEN) Assignors: NOVELL, INC.
Assigned to NOVELL, INC. reassignment NOVELL, INC. RELEASE OF SECURITY INTEREST IN PATENTS FIRST LIEN (RELEASES RF 026270/0001 AND 027289/0727) Assignors: CREDIT SUISSE AG, AS COLLATERAL AGENT
Assigned to NOVELL, INC. reassignment NOVELL, INC. RELEASE OF SECURITY IN PATENTS SECOND LIEN (RELEASES RF 026275/0018 AND 027290/0983) Assignors: CREDIT SUISSE AG, AS COLLATERAL AGENT
Assigned to CREDIT SUISSE AG, AS COLLATERAL AGENT reassignment CREDIT SUISSE AG, AS COLLATERAL AGENT GRANT OF PATENT SECURITY INTEREST SECOND LIEN Assignors: NOVELL, INC.
Assigned to CREDIT SUISSE AG, AS COLLATERAL AGENT reassignment CREDIT SUISSE AG, AS COLLATERAL AGENT GRANT OF PATENT SECURITY INTEREST FIRST LIEN Assignors: NOVELL, INC.
Assigned to NOVELL, INC. reassignment NOVELL, INC. RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 028252/0316 Assignors: CREDIT SUISSE AG
Assigned to NOVELL, INC. reassignment NOVELL, INC. RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 028252/0216 Assignors: CREDIT SUISSE AG
Assigned to BANK OF AMERICA, N.A. reassignment BANK OF AMERICA, N.A. SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ATTACHMATE CORPORATION, BORLAND SOFTWARE CORPORATION, MICRO FOCUS (US), INC., NETIQ CORPORATION, NOVELL, INC.
Assigned to JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT reassignment JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT NOTICE OF SUCCESSION OF AGENCY Assignors: BANK OF AMERICA, N.A., AS PRIOR AGENT
Assigned to JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT reassignment JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT TYPO IN APPLICATION NUMBER 10708121 WHICH SHOULD BE 10708021 PREVIOUSLY RECORDED ON REEL 042388 FRAME 0386. ASSIGNOR(S) HEREBY CONFIRMS THE NOTICE OF SUCCESSION OF AGENCY. Assignors: BANK OF AMERICA, N.A., AS PRIOR AGENT
Assigned to ATTACHMATE CORPORATION, BORLAND SOFTWARE CORPORATION, MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.), MICRO FOCUS (US), INC., NETIQ CORPORATION reassignment ATTACHMATE CORPORATION RELEASE OF SECURITY INTEREST REEL/FRAME 035656/0251 Assignors: JPMORGAN CHASE BANK, N.A.
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances

Definitions

  • Computing systems are growing rapidly in size and complexity. Many businesses have data centers consisting of a multitude of servers. In such an environment servers will have different configurations of hardware and software, including operating systems.
  • One of the problems in managing a data center is moving Operating Systems, applications and data between servers, especially servers with different technology architectures, and load balancing across and within the architectures to provide optimal use of the servers. Generally, optimization occurs only within a common architecture.
  • the source server may have legacy applications that cannot be reinstalled. Further the source server may be utilizing a version of an operating system that is not supported on the target server.
  • the source server and target server may also differ in device drivers and connections to peripherals. Typically the individual performing the transfer must have direct contact with the source and target machines to insert media and enter commands.
  • Load balancing requires a user to determine which software applications should run on which servers and when. In a large data center this is a complex problem. Load balancing is a constantly moving target as both applications and server configurations change. The user must be aware of all applications, the amount of resources they require and when the applications use the resources of a server.
  • Some embodiments of the present invention are directed to a system for remotely monitoring usage of machines in a data center and suggesting conversions between machines to make efficient use of the resources in the data center, the system comprising a data collection engine and an optimization engine operatively coupled to the data collection engine.
  • Some embodiments of the present invention are directed to a method for remotely monitoring usage of machines in a data center to make efficient use of resources in the data center, the method comprising the steps of collecting performance and machine data, analyzing the data, and suggesting conversions between machines.
  • FIG. 1 is a block diagram illustrating the conversions between machines
  • FIG. 2 is a block diagram of a system utilizing an embodiment of the present invention
  • FIG. 3 is a block diagram of a data center
  • FIG. 4 is a block diagram illustrating the interactions between the PowerConvert and OFX modules
  • FIG. 5 is a block diagram illustrating machine hierarchy
  • FIGS. 6 a and 6 b are a flow chart of the functionality of PowerConvert
  • FIG. 7 is a block diagram of the components of an OFX controller
  • FIG. 8 is a block diagram of the components of PowerRecon
  • FIG. 9 is a flow chart of the functionality of the analysis portion of PowerRecon.
  • FIG. 10 is a block diagram of the components of PowerOptinize.
  • FIG. 1 a block diagram illustrating the conversions between machines is shown.
  • Physical machines 10 are servers upon which an operating system and its related software applications run.
  • Virtual machines 12 emulate a specific environment and run on virtual machine server software. For example, some virtual machines 12 may run on a version of Linux, others on versions of Windows.
  • virtual server software such as ESX and GSX provided by VMware Inc., and Microsoft Virtual Server (hereinafter referred to as MSVS)
  • multiple virtual machines 12 may be deployed on a physical machine 10 .
  • Other virtual servers such as Xen which is open source, Virtual Iron and SW-Soft may also be supported by the embodiments of the present invention.
  • Machine Images 14 are stored copies of the state of a physical machine 10 or a virtual machine 12 at a specific time.
  • the conversion from a physical machine 10 (P) to a virtual machine 14 (V) is referred to as P2V.
  • V2I the conversion from a virtual machine 14 (V) to a machine image 12 (I) is referred to as V2I.
  • X is used whenever the source or target is independent of the type of source or target.
  • I2X represents a conversion from a machine image to any other type, physical, virtual or image. In total there are nine possible conversion types as shown in FIG. 1 .
  • the intent of FIG. 1 is to illustrate that any machine may be converted from one to the other utilizing the present invention.
  • Data center 22 is where the machines reside and is shown in greater detail in FIG. 3 .
  • a user may wish to move operating systems, applications and data between machines 10 , 12 , and 14 depending on the addition of new servers, load balancing and disaster recovery. For example, it may be determined that a virtual machine 14 would run more efficiently on a different physical machine 10 .
  • Machine images 12 allow for the state of a physical machine 10 or a virtual machine 14 to be backed up and restored as needed.
  • a machine image 12 is stored on an image server, which serves as a host for the image. The only difference between a machine image 12 and a virtual machine 14 is that the machine image 12 may not be started. To start a machine image 12 it must be moved to either a physical machine 10 or a virtual machine 14 .
  • PowerConvert 24 resides on a server and has a distinct URL.
  • GUI Graphical User Interface
  • a user may manage the movement of operating systems, applications and data between machines 10 , 12 and 14 residing in a network of machines shown as data center 22 .
  • PowerConvert 24 obtains information on machines within data center 22 as selected by the user through GUI 26 and allows the user to move operating systems, applications and data between machines.
  • OFX 28 controls and reports on the jobs requested by PowerConvert 24 and client applications 30 .
  • OFX 28 resides on a server and has a distinct URL. In essence OFX is a generic job management engine that remotely executes and monitors jobs through OFX controllers 44 (see FIG. 3 ). Applications can be created through the use of OFX functionality.
  • PowerRecon 32 accesses servers in data center 22 to monitor the servers and collects statistical data on real and virtual machine usage. PowerRecon may be thought of as data collection engine. PowerOptimize 34 utilizes the data gathered by PowerRecon 32 to suggest to a user options for optimizing the use of the servers in data center 22 . PowerOptimize 34 may be thought of as an optimization engine. Should the user wish to have PowerOptimize 34 automatically act upon the options selected, PowerOptimize 34 instructs PowerConvert 24 to perform the optimizations.
  • Data center 22 is a repository of various types of machines in various numbers.
  • a physical machine 10 a virtual server 40 hosting a plurality of virtual machines 12 and a machine image server 42 hosting a plurality of machine images 14 .
  • a virtual server 40 is a computer running virtual server software such as MSVS, ESX, or GSX. Through the use of virtual server software, multiple virtual machines may exist.
  • Machine image server 42 is a computer that controls the storage of a number of machine images 14 .
  • a machine container is either a virtual server 40 or a machine imager server 42 .
  • the term contained machine is used when making reference to either a virtual machine 12 or a machine image 14 .
  • FIG. 4 is a block diagram illustrating the interactions between the PowerConvert and OFX modules.
  • PowerConvert 24 comprises four main components: PowerConvert Business Server 42 , Database 54 , PowerConvert Web Services Interface 56 , and PowerConvert Controller 58 .
  • PowerConvert Business server 42 handles requests to convert from a source machine to a target machine.
  • database 54 it stores archived operations and device driver information.
  • Database 54 contains information of a set of device drivers necessary when converting a machine.
  • Users and client applications 30 communicate with the PowerConvert Business Server 42 through PowerConvert Web Services Interface 56 .
  • PowerConvert Web Services Interface 56 utilizes Simple Object Access Protocol (SOAP) over Hypertext Transfer Protocol (HTTP) to provide a standard interface.
  • PowerConvert Controller 58 is an instance of an OFX controller 44 (see FIG. 3 ), but its role is specialized.
  • OFX 28 controls and reports on the jobs requested by PowerConvert 24 and client applications 30 .
  • OFX 28 controls and reports on the jobs requested by PowerConvert 24 and client applications 30 .
  • OFX 28 resides on a server and has a distinct URL.
  • OFX 28 is a generic job management engine that remotely executes and monitors jobs through OFX controllers 44 (see FIG. 3 ). Applications can be created through the use of OFX functionality.
  • the core of OFX 28 is OFX Business Server 60 , which runs jobs through OFX Controllers 44 .
  • OFX Business Server 60 is passive; it is a web server and responds to communication from OFX Web Services Interface 46 .
  • OFX Web Services Interface 46 utilizes Simple Object Access Protocol (SOAP) over Hypertext Transfer Protocol (HTTP) to provide a standard interface.
  • SOAP Simple Object Access Protocol
  • HTTP Hypertext Transfer Protocol
  • OFX Business Server 60 stores all information on requests, the status of requests and machine configuration information in a database 62 . In operation OFX Business Server 60 receives information on the status of request from OFX Web Services Interface 46 through OFX controllers 44 (see FIG. 3 ) installed on machines in data center 22 .
  • PowerConvert 24 is a fully automated solution for OS portability. That is PowerConvert 24 can move the entire contents of a machine, including its operating system, applications and data to another machine. PowerConvert 24 will convert a source machine to a target machine. As discussed earlier, the types of source and target machines are Physical (P), Virtual (V), and Image (I). The steps required for each of the nine possible conversion types are illustrated in Table 1 below. Note that the first four rows refer to discovery steps. Discovery steps are prerequisites to the conversion taking place. If the desired source and target machines cannot be discovered, the conversion will not take place.
  • a step can be omitted because it is not needed, or a different step needs to be inserted because of the special processing involved for that conversion type.
  • the appropriate source and target machines must be discovered.
  • the user must initiate and configure the parameters that define the conversion process.
  • the target machine will be configured with essentially the same properties as the source machine. This includes the hostname, amount of RAM, network configuration, number and sizes of disks, and other information.
  • GUI 26 the user modifies the configuration of the target machine to suit their needs. This may include changing the hostname or changing the memory size of the target machine.
  • the conversion process is defined in a set of OFX jobs and actions that run on various OFX controllers 44 installed on machines throughout the data center.
  • the conversion process is guided by a job running on PowerConvert Controller 58 .
  • Each action (or step) in the job is run in sequence.
  • PowerConvert Controller 58 cannot be expected to perform the entire conversion process, since the conversion is almost always distributed among several machines in the data center.
  • a remote machine for example, an ESX server on which a virtual machine will be created
  • PowerConvert 24 When PowerConvert 24 has been instructed to perform a conversion from a source machine to a target machine, it needs to provide instructions to and receive status information from those machines. This is done through OFX 28 via OFX Web Services Interface 46 .
  • a user through the use of GUI 26 , or an application through clients 30 , opens a discover machine dialog and provides the machine identification such as a hostname or IP address and their credentials. This results in a job being scheduled on PowerConvert controller 58 to discover the information about the source machine. Once complete the information collected is forwarded to OFX 28 and stored in database 62 .
  • the discovery gathers all the necessary information needed for a conversion, as well as some other information that may be useful to the user.
  • the information includes all of the machine's components: processors, disks, network adapters, the amount of memory on the machine, details about the operating system, and the network connections.
  • PowerConvert 24 makes use of WMI (Windows Management Instrumentation) to remotely query the source machine. Since not all of the information that PowerConvert 24 needs is available through WMI, some other means to gather information are utilized. For example the physical address Media Access Control (MAC) of each Network Interface Card (NIC) and the properties of each disk volume are queried by deploying a small executable program to the source machine, running it, and copying back the data it generates.
  • MAC Media Access Control
  • NIC Network Interface Card
  • PowerConvert 24 communicates with the source machine using a secure protocol such as Secure Shell (SSH). PowerConvert 24 copies a small executable program to the source machine runs it, and copies back the data it generates.
  • SSH Secure Shell
  • PowerConvert 24 copies a small executable program to the source machine runs it, and copies back the data it generates.
  • the data is provided as Extended Markup Language (XML).
  • FIG. 5 is a block diagram illustrating machine object hierarchy, shown generally as 60 .
  • Each machine type is defined in an XML schema. To aid the reader in understanding this mapping of machines, FIG. 3 describes the physical presence of the machines.
  • FIG. 5 describes the hierarchical structure of how machines are described using XML.
  • Machine 62 is the base type from which all other machine types are derived. Each derived type defines additional properties that are not present in its base type.
  • virtual machines 70 By way of example we illustrate three types of virtual machines 70 . They are Microsoft Virtual Machine 72 , VMware ESX Virtual Machine 74 and VMware GSX Virtual Machine 76 . An example of the XML describing a VMware ESX Virtual Machine 74 is provided in Appendix 1 .
  • a discovery of its machine container occurs. Discovery of a machine container is a matter of determining whether the source machine has a certain property. That is, is it ESX, GSX, MSVS or an Image Server? After determining that the source machine is a machine container, queries are made to determine the properties of each machine container on the source machine. These properties include the version of the application (e.g. ESX v2.5), any special devices that are configured on the machine (e.g. the list of virtual NICs) as well as a list of all of the contained machines. If the source machine is a machine image 14 then the server on which it resides must be discovered, since a machine image 14 cannot be started, it cannot be discovered directly.
  • the target machine is a physical machine 10 a discovery is made of the physical machine 10 . In one embodiment this may require manual effort by the user, who must boot the machine using a PowerConvert boot CD, since it is expected that the physical machine may be bare.
  • the boot CD contains a copy of Windows Preinstallation Environment (WinPE).
  • the boot CD also contains a Windows application to assist the user to discover and register the machine with PowerConvert 24 .
  • the application prompts the user for the URL of PowerConvert 24 and the credentials with which to access it. This results in PowerConvert 24 instructing OFX 28 to create an OFX controller entry in database 62 for that machine.
  • an OFX controller 44 is downloaded from OFX 28 into the WinPE environment and installed and configured. A discovery job is then scheduled to run on this controller.
  • the discovery job collects information about the physical machine such as: memory size, number of processors, speed of processors, number and sizes of disks including partitions and volumes and all available components, including network adapters and hard disk controllers.
  • This machine information is stored by OFX 28 in database 62 .
  • a Linux ramdisk is used instead of the boot CD. All other steps remain the same.
  • Flow chart 80 refers to the steps conducted by PowerConvert 24 should the above mentioned discovery be successful. If discovery is not successful, information on the source and target machine will not be provided to the user via GUI 26 to allow them to initiate conversion.
  • an OFX controller 44 is installed on the source machine container, if necessary.
  • PowerConvert 24 manages machine image 14 by running jobs on its host machine image server 42 .
  • an OFX controller 44 must be deployed to the host machine image server 42 . If the host machine image server 42 already has an OFX controller 44 installed on it from an earlier conversion, then this step can be skipped.
  • step 84 if the target machine is a virtual machine 12 or a machine image 14 , then PowerConvert 24 manages these machines by running jobs on the host Virtual Machine Server 40 (e.g., ESX, GSX or MSVS) or the Machine Image Server 42 .
  • the host Virtual Machine Server 40 e.g., ESX, GSX or MSVS
  • an OFX controller 44 must be deployed to the host machine container. If the host machine container already has an OFX controller 44 installed on it from an earlier conversion, then this step can be skipped.
  • a host machine with an abundance of memory, disk, and CPU resources to be used for multiple purposes.
  • a host machine may be running both VMware GSX and MSVS.
  • both machine container applications will share the same OFX controller 44 to run their jobs. There is no need to install a new instance of an OFX controller 44 for each machine container on the same host.
  • PowerConvert 24 might be installed on a host that is also running MSVS and an Image Server.
  • PowerConvert controller 58 which is actually an instance of an OFX Controller, can be used to run the jobs necessary for the machine containers.
  • step 86 This step only needs to run in the case of converting to a virtual machine.
  • PowerConvert 24 runs a job on the host of the virtual machine server 40 to create and manage a virtual machine 12 .
  • Each type of virtual machine server 40 provides its own API that can be used to create and manage one of its virtual machines.
  • the PowerConvert actions running in the jobs make calls to the virtual machine server 40 through the available API's.
  • the properties of a virtual machine 12 are set to reflect the properties of the source machine. While configuring the conversion in the PowerConvert GUI 26 , the user has the option to adjust many of the properties of the new virtual machine 12 to make optimal use of the resources available.
  • the following properties of a virtual machine 12 may be configured:
  • step 88 This step is run only in the case of conversion to a virtual machine.
  • a virtual machine 12 has been created, but it cannot run because there is no operating system installed on the machine.
  • the OFX controller 44 on the virtual server 40 is responsible for running this job.
  • the newly created virtual machine is modified so that it connects to a virtual CDROM, which contains a copy of the boot image (WinPE or Linux Ramdisk).
  • the virtual machine is forced to reboot. When the machine restarts, it will boot from the CDROM.
  • the boot image will load, and a controller 44 will be installed and configured.
  • this step it is also possible to temporarily modify the memory footprint of the virtual machine for the purposes of running it under the control of PowerConvert 24 .
  • it may be suitable for the user to configure the target virtual machine to run with 128 MB of RAM, but the overall conversion speed can be improved in some situations if the machine under control is given additional virtual memory to utilize.
  • step 90 now that the VM has been created and is under the control of PowerConvert 24 , disk partitions and volumes are created.
  • PowerConvert 24 takes control of a source machine directly.
  • the job runs in PowerConvert controller 58 .
  • the platform specific boot image is copied to the source machine.
  • the boot configuration file is backed up and modified to refer to the new image.
  • the source machine is forced to reboot.
  • the OFX controller 44 is contained in the boot image, so it does not need to be downloaded. Instead, it only needs to be configured. As soon as the machine boots into the boot image, the original boot loader configuration files are restored. This allows the machine to be restored back into its native operating system as soon as it is rebooted, even if it is rebooted in error.
  • step 96 the source and target machines are ready to begin copying. If either the source or target machines are physical or virtual machines, they are running under control. That is, they are running within a boot image, with a controller configured. If either the source or target machines is a machine image, then the controller of the machine container's host is used. In any case, there are two controllers ready to handle the copying of files.
  • a ‘copy source’ job is scheduled to run on the source machines controller, and a ‘copy target’ job is scheduled to run on the target machine's controller.
  • one side binds to a network port and waits for a connection from the other side.
  • Either the source or the target may be configured to listen on a port. In most cases, it does not matter since the conversion is taking place between two machines that are under control. Once a connection is made, the transfer can begin.
  • PowerConvert 24 uses a file-based copy process.
  • the source side begins with the root folder of a given volume and traverses the file system reading each file and folder. As each file and folder is found, the source side writes it to the socket connection. The data is streamed across the network in the OFX Package format. On the target side, the OFX Package is read from the network connection, one file at a time. As each new file arrives, it is recreated on the target machine with all of its associated properties. The intention is to recreate each file and folder exactly as it was on the source machine. The file transfer continues for each volume that is configured to be copied. The user has the option of choosing not to copy one or more volumes, if so desired. Further, some files are not copied from the source machine to optimize the amount of data to transfer taking into account what can be recreated by the operating system on the target.
  • PowerConvert 24 uses a file-based copy process. That is, each individual file and folder is copied from the source to the target.
  • the alternative to this is an image based copy.
  • image-based copy the entire contents of a file system are read from the disk byte-by-byte, regardless of the file system.
  • the user may decide that the size of a volume on the source machine is not optimal for the target machine.
  • PowerConvert 24 prepares the operating system to boot while it is still under control. It is only at this time that PowerConvert 24 has full access to the operating system that has just completed copying from the source. The following steps are taken:
  • Device drivers are installed on the Operating System.
  • the drivers installed are those that match the plug and play identification of the devices on the target machine, which are determined at machine discovery time. For devices such as mass storage devices, it is vital to update the drivers while the machine is under control, otherwise the machine may likely never be able to boot.
  • HAL Hardware Abstraction Layer
  • step 100 the target virtual machine is restarted.
  • This step runs on the target machine container. Its purpose is to ‘undo’ the take control. This involves undoing the temporary changes that were needed during the take control step, including the disconnection of the virtual CDROM and resetting the memory size back to the user configured amount.
  • this step is run from PowerConvert controller 58 . It schedules a job to run on the target physical machines OFX controller 44 , and instructs it to reboot.
  • Step 102 only needs to run for Windows target machines.
  • the target machine is fully configured by the end of the Prepare OS to Boot step 98 .
  • This step runs within a small Windows service that is injected into the target earlier and does the following:
  • Step 104 ends the process and is optional.
  • This step brings the source machine out of the PowerConvert boot image and back into the native operating system.
  • the user may want to ‘move’ a machine, instead of ‘cloning’ a machine. In this case, they may not want to restart the source machine, and the machine is left ‘under control’. If the user does want their source machine restarted, then PowerConvert 24 will relinquish control of that machine by running a ‘reboot’ job on the controller while the machine is under control.
  • a device is a generic term for a physical or virtual device that can be controlled. Examples of devices would be a computer, a virtual machine, a software application, a network switch or a group of devices. Devices can be nested to form a hierarchy. Information on a device includes a Globally Unique ID (guid), a display name, a security descriptor and Extended Markup Language (XML) instance data. PowerConvert 24 extends the use of this instance data to store its own model of a machine object in XML format as discussed above with reference to FIG. 5 .
  • guid Globally Unique ID
  • XML Extended Markup Language
  • An OFX job defines a set of actions. Jobs are executed by an OFX controller 44 and are versioned. Jobs may be scheduled against devices or controllers.
  • Actions provide implementation behavior for jobs. Actions allow developers and users to extend the use of OFX 28 with custom behavior for custom solutions and applications. Actions are implemented as dynamic link libraries and are reusable among jobs.
  • An OFX package is a binary format that is used for file distribution. It is similar in notion to a tar file or a zip file.
  • OFX packages may be used in several ways namely:
  • OFX Action packages When OFX controller 44 needs to execute an action. To do so it must load a specified .dll. This .dll and any dependent .dll's are archived in a package available for OFX controller 44 to download from OFX 28 . In this scenario OFX controller 44 requires the .dll's with their names and content, but little else.
  • OFX Job packages These typically contain data files that are needed during the execution of a job. Multiple job packages can be used in a job.
  • PowerConvert File Transfer During a conversion using PowerConvert 24 , all of the files from a source machine are copied across a network to a target machine. For each file transferred all of the file's properties are transferred with it so that the file can be recreated on the target machine exactly as it was on the source machine.
  • the same package format is used for both Windows and Linux and is portable to any operating system format.
  • the structure of a package comprises four main components, a Package Preamble, Package Headers, File Headers and Files. We will now describe each in turn.
  • a Package Preamble identifies the package version.
  • Package Headers consists of a set of zero or more Headers that pertain to the package as a whole.
  • the format of Package Headers is as follows:
  • Package Headers can be used by the package author to provide additional information or hints about the source or the contents. For example, a package header could provide a hint about the approximate number of files or the estimated size of the package. This gives the program reading the package enough information to estimate progress between 1% to 100%.
  • File Headers have the same format as Package Headers and consist of a set of zero or more Headers. The only difference from Package Headers is that the properties relate to a file, instead of the entire package. File Headers provide a great deal of flexibility as a new File Header can be added whenever the need arises to describe some additional property of a special file type.
  • File Header names used in one embodiment may include:
  • LastWriteTime An integer representation of the last modification time
  • a Header can be used for either packages or files.
  • a Header includes a name/value pair that describes a property of either the package or the file.
  • Each header has a MustUnderstand Boolean flag. When writing a package the author sets this value to TRUE if the reader must understand the meaning of this header. When reading a package the reader must check this flag. If the reader does not understand the meaning of the header, it will fail.
  • Length-prefixed UTF8 string this is a short form for “Four byte length-prefixed eight bit Unicode transformation format encoded string”.
  • One format of a header is as follows:
  • the Files section consists of a sequence of File entries.
  • the number of files in the package is never specified. Instead there exists a Boolean marker with the value TRUE before the beginning of each new File to indicate that a file follows.
  • a Boolean marker with the value FALSE will follow the last file in the package.
  • the writer of a package does not need to pre-calculate the number of files in the package. This is beneficial during a file transfer between two machines. As each file is read from the disk, it can be immediately sent across the network to the target machine. Thus there is no need to wait until the package is fully assembled.
  • the Files section may be embodied in a format as follows:
  • Each File describes the properties and contents of a file or directory.
  • a File structure is as follows:
  • the OFX package format is designed to be flexible for the easy addition of extensions. For example, file compression can be added without changing the File format by adding a File Header with the type “compressed”, for each file that required compression. On the target machine the package reader will know that the file is in a compressed format when it sees the “compressed” File Header.
  • Power Convert Web Services Interface 46 deals primarily with Operations and Machines. To deal with these it provides an Operations Web Service and a Machine Web Service.
  • the Operation Web Service provides a wrapper around the OFX job information, especially with respect to tracking the relationships between all of the remote jobs that make up a single conversion process.
  • GUI 26 calls the Operations Web Service when it wants to check on the status of a conversion, using OperationWebService.GetOperation( )
  • the Operation Web Service also includes methods such as AbortOperation and DeleteOperation.
  • the Machine Web Service handles all request related to machines, including:
  • ConvertToMachineContainer( ) which schedules a job on PowerConvert controller 58 to convert a source machine to a contained machine (i.e. x2V or x2I).
  • OFX Web Services Interface 46 provides access to OFX Business Server 60 .
  • Web services are organized into three groups: Installation/Setup, Controllers-Only and Runtime.
  • Installation/Setup web services are used to configure OFX 28 with jobs, actions and packages. These are primarily used at installation time. Examples of Installation/Setup web services are:
  • JobWebService allows the user to add, delete, modify and query job definitions including actions such as: AddJob, GetJob, GetJobs, DeleteJob and Setjob.
  • ActionTypeWebService allows the user to add, delete, modify and query ActionType definitions including actions such as: AddActionType, DeleteActionType, GetActionType and SetActionType.
  • PackageWebService allows the user to add, delete, modify and upload package definitions including actions such as: AddPackage, GetPackage, SetPackage and UploadPackage.
  • SchemaWebService provides a means for defining the structure, content and semantics of XML documents in more detail. This web service is used to add and get schemas and includes actions such as, AddSchema, GetSchema and GetSchemas.
  • ImportExportWebService is used to import jobs, action types, devices, schemas and packages into OFX 28 .
  • the input is an XML document that contains the definitions of one or more job, action types and packages.
  • This web service will call each of JobWebService, ActionTypeWebService, DeviceWebService, SchemaWebService and PackageWebService as required.
  • ConfigurationWebService is used to get and set security descriptor fields in database 62 . These include jobs, action types, devices, controllers and packages. Actions include GetRootSecurityDescriptor and SetRootSecurityDescriptor.
  • Controller-Only web services are used by OFX controllers 44 .
  • ControllerNotificationWebService is used by OFX controllers 44 to notify OFX 28 of the controller status and the status of the jobs they are running.
  • the three operations are:
  • Heartbeat which is used by an OFX controller 44 to inform OFX 28 that it (the controller) is still running.
  • An OFX controller 44 sends to OFX 28 a snapshot of any jobs that it is currently running. OFX 28 then sends the OFX controller 44 any new jobs that have been scheduled to run on the OFX controller 44 . Typically this occurs every five seconds or so.
  • ControllerPackageDownload is used by OFX controllers 44 to download any packages that are required to execute a job. A job is never executed until an OFX controller 44 has successfully downloaded all of the dependent packages. Packages are defined by a guid and a version. When a OFX controller 44 downloads a package, the package is cached on disk, in case it is needed later to run another job that has the same package dependency.
  • Runtime Web Services are of three types, JobSchedulingWebService, ControllerWebService and DeviceWebService.
  • JobSchedulingWebService includes the following services:
  • ScheduleJob which is used for defining a new job instance, along with input parameters and the device or controller for the job to be executed on.
  • GetScheduledJob which returns information about the specified job. This includes the job status, the status of each action in the job and any input and output data.
  • DeleteJob which is used to delete a scheduled job when it is no longer needed on the system.
  • ControllerWebService includes the following services:
  • AddController which is used to define and configure a new OFX controller 44 just before the controller is deployed to a machine.
  • DeleteController which is used to delete a specified OFX controller 44 entry in the database.
  • DeviceWebService allows the user to add, delete, modify and query device definitions. It includes services such as: AddDevice, SetDevice, GetDevice, GetDevices, GetDevicelds, and DeleteDevice.
  • An OFX controller 44 runs on a computer host to control one or more OFX devices, and it executes jobs provided to it by OFX 28 .
  • the design of OFX controllers 44 is independent of platform architecture and uses OFX Web Services Interface 62 to communicate with OFX 28 .
  • OFX controllers 44 are generic in that they know nothing about the actions they are executing. All the code needed to execute an action is downloaded on demand from OFX 28 .
  • An OFX controller 44 for Windows is deployed from OFX 28 by using NetBIOS and WMI to copy OFX controller 44 to a remote machine and register it as a Windows Service.
  • a OFX controller 44 for a Linux machine is deployed using the SSH protocol. In both cases, administrator credentials are required on the targeted machine.
  • each OFX controller 44 is configured with:
  • an OFX controller 44 comprises five main components, notification service 110 , job manager 112 , scheduler service 114 , package manager 116 and job execution process(es) 118 .
  • Notification service 110 regularly checks in with OFX Business Server 60 through OFX Web Services Interface 62 to report status and to determine if any new jobs are waiting. This checking in is referred to as a “heartbeat” and occurs frequently, typically on the order of every five seconds but is user definable.
  • OFX controller 44 will send a snapshot of the status of each running job and the latest log file entries. Log file entries are maintained by the controller to indicate the status of a job. Examples of log file entries are; job received and package downloaded. A log file provides a running status of the job progression.
  • Notification Service 110 will receive any new jobs that have been scheduled to run on an OFX controller 44 since the last heartbeat. An OFX controller 44 will keep sending a snapshot of a given job at the heartbeat until the job has completed running. The benefit of such a design is that the dataflow across a network is minimized.
  • Job manager 112 is responsible for persisting all of the job XML files on disk.
  • notification service 110 receives a new job from OFX 28 , it forwards that job to job manager 112 which will immediately persist that job XML to disk.
  • job manager 112 will notify scheduler service 114 that a new job has arrived.
  • notification service 110 is preparing a heartbeat for OFX 28 it will ask job manager 112 for all the jobs that have been modified since the last successful heartbeat.
  • Job manager 112 stores this information in the form of an XML file in job XML folder 120 .
  • Scheduler service 114 is responsible for the running of each job. Scheduler service 114 schedules a job for a given time and controls a queue of jobs to be run. Before a job can be executed any dependent packages must first be downloaded, so package manager 116 is sent a request to download the packages. Each job has one or more associated packages, which contain everything needed to execute a job. The packages required to run a job are specified in the job XML. Scheduler service 114 executes a job by spawning a separate job execution process 118 . Scheduler service 114 then waits for the process 118 to exit, at which time it will check the exit status of the process.
  • scheduler service 114 is responsible for setting the job status to “Failed” by modifying the job XML in job XML folder 120 . Finally, scheduler service 114 informs job manager 112 that the job has completed.
  • Each job is run in its own process 118 to protect any other running jobs. There is one new process created for each job that needs to be run. There is no limit to the number of jobs that can run concurrently on a single OFX controller 44 , except for the usual memory, disk and CPU resource constraints of a machine.
  • the job execution process 118 is responsible for running the job. It does this by loading and executing each of the actions specified in the job.
  • the job execution process is also responsible for setting the status of each action as it changes, as well as the overall job status. It is also responsible for flushing the job XML to the Job XML folder 120 at the completion of each action.
  • Package manager 116 communicates with an OFX file server 122 to download all packages specified in a job.
  • OFX file server 122 is under the control of OFX 28 .
  • Package manager 116 will also store its own cache of packages that have been downloaded previously in packages folder 124 . Packages are identified by a name (guid) and a version. Package manager 116 will access cached packages in packages folder 124 . As the number of packages to download for a specific job can vary, and their sizes can vary, any request to package manager 116 is asynchronous.
  • Package manager 116 will notify scheduler service 114 when it completes downloading all of the packages for a specific job. Package manager 116 automatically handles retries, in the case that the download of a package fails because of some temporary network difficulties.
  • database 62 is a relational SQL database containing a plurality of tables.
  • the main tables provide information on: packages, scheduled jobs, controllers, devices and actions.
  • the tables for scheduled jobs and controllers would be linked together by controller id.
  • the scheduled jobs table would include information about a job, such as a job id, a job version, a device id, status, date scheduled and other fields.
  • the controllers table would include information about a controller such as: id, security descriptor, description, pointers to a bootfile, status, and other fields. It is not the intent of the inventors to restrict the use of the present invention to a specific implementation of database 62 but rather to indicate that it serves as a repository for OFX 28 .
  • FIG. 8 is a block diagram of the components of PowerRecon 32 .
  • PowerRecon 32 is designed to aid in the consolidation of operating systems, applications and data on servers in data center 22 .
  • PowerRecon 32 monitors the servers to collect information and provides detailed plans on how a consolidation may be accomplished.
  • Information may be collected through the use of Windows services such as WMI or Windows Performance Counters. In the case of Linux commands to collect information may be made through a service such as SSH.
  • a user through the use of GUI 26 may examine the information collected by PowerRecon 32 and select which consolidations should occur.
  • PowerRecon 32 comprises two main modules, Web Services Application Programming Interface (API) 130 and Software Developer's Kit (SDK) 132 which communicate with each other.
  • Web Services API 130 comprises three modules, inventory 134 , performance 136 and analysis 138 .
  • Inventory These provide inventory gathering, machine and machine container information, group information, and security credentials. Machines contain containers, groups can contain other groups and machines.
  • Performance Data Collection provide methods for the starting and stopping of data collection and retrieval of performance data.
  • Reports These report on actions that the system is performing. They return information of the state and progress of a task such as running an analysis, running inventory or running optimization.
  • Examples of methods in Web Services API 130 used by inventory 134 include:
  • Examples of methods in Web Services API 130 used by performance 136 include:
  • Examples of methods in WebServices API 130 used by analysis 138 include:
  • Inventory 134 through the use of OFX controllers described earlier in reference to OFX 28 collects information on a server.
  • Information to be collected includes detailed information about machines and containers.
  • the information collected is stored in PowerOptimize database 146 . This information may be refreshed at the request of the user or automatically on a regular schedule.
  • Performance 136 examines the data collected in PowerRecon database 148 .
  • This data includes information on the performance data that needs to be collected: such as: disk I/O, CPU usage, CPU pages NIC Megabits per Second (Mbps) and memory usage.
  • PowerRecon database 148 also stores historical performance data that has been collected. As a part of the Web Services API 130 , it returns the data requested from database 148 .
  • Analysis 138 examines the information collected by inventory 134 and performance 136 stored in databases 146 and 148 to make suggestions to optimize the performance of the servers in data center 22 .
  • FIG. 9 illustrates the logical steps of analysis 138 .
  • PowerRecon SDK 132 comprises two main modules, database gatherer 140 and realtime gatherer 142 .
  • PowerRecon SDK 132 utilizes a Simple Performance Inspector (SPI) interface 144 to obtain information on the server.
  • SPI 144 may be created to act as an adapter for any source of performance data.
  • An SPI 144 runs on a server and is configured to the server platform to utilize platform specific tools. Information may be collected using a variety of methods such as SSH for Linux, Windows Performance Counters, or tools provided by products such as VMware to best collect the data. In addition, multiple SPI's mitigate losses of data.
  • Database gatherer 140 extracts information from a server and returns it to Web Services API 130 to be stored in database 148 .
  • Realtime gatherer 142 collects information on a server in realtime and returns it to Web Services API 130 to be displayed to a user via GUI 26 .
  • FIG. 9 is a flow chart of the functionality of the analysis portion ( 138 ) of PowerRecon 32 and is shown generally as 150 .
  • databases 146 and 148 are queried for inventory and performance information on each server submitted for analysis.
  • a possibility test is made. For example are there enough resources available on a target machine to move other machines to it? If three machines each require 1 GB of RAM and the target machine has only 2 GB of RAM than such a transfer is not possible.
  • an intelligence test is performed. This step verifies that the usage of each resource (e.g. Disk I/O and CPU) for the machines to be transferred does not conflict.
  • a suggestion may be made to reduce the RAM of the target machine to 512 MB and perhaps increase the paging file size.
  • a suggestion could be made to move to a two CPU machine.
  • step 158 the solutions are generated and stored in database 148 so that the user may view and change them via GUI 26 . Any changes made by the user are verified by steps 152 and 156 . If the user selects a solution, it is then passed to PowerConvert 24 for execution.
  • step 160 the user may request after a certain amount of time to return to step 152 to generate another analysis for the new configuration to determine if it is functioning as expected.
  • PowerOptimize 34 is directed toward load balancing, right sizing and self healing of data centers. Through the use of PowerRecon 32 it can utilize both historical and real time data to provide suggested changes.
  • PowerOptinmize 34 comprises five main logic engines namely: expert systems 170 , bin packing 172 , neural networks 174 , fuzzy logic 176 and user options 178 .
  • Suggestions 180 coordinates the information collected by each engine and interacts with analysis 138 and GUI 26 to allow a user to select an action to be taken. Alternatively, should the user wish an action to be taken automatically, suggestions 180 will instruct PowerConvert 24 to make the suggested changes.
  • Expert systems 170 is based upon facts, rules, actions and an inference engine.
  • the number of facts grows each time the inference engine runs.
  • the rules define what should be done with the facts.
  • the facts are a collection of known elements such as: machines, metric data and, thresholds. Examples of metric data would include: processor utilization by CPU, memory usage, disk space, bytes read and written from and to a disk, and bytes sent and received for a NIC. Thresholds are values above or below which a decision can be made.
  • the rules define how the system acts based upon the facts. For example:
  • a server If a server has room then convert from a physical to a virtual machine, i.e. does it have enough disk space, memory, CPU and NIC to support the physical machine as a virtual machine.
  • a threshold e.g. four
  • Rule c is an example of a constraint, which may restrict movements of machines or images.
  • the inference engine process the rules based upon: preferences (e.g. CPU usage should be maximized), constraints (e.g. maximum of 4 VM machines on a server), cost and priorities and parameter assignment. Parameter assignment appends a new value to the facts.
  • Expert systems 170 conducts an analysis within the context of a set of machines (the machine pool), comprised of source and target candidates.
  • the logic as follows describes a rule referred to as “the zone”.
  • the zone is the middle part of the low and high thresholds a user may define for a machine's usage. For example if the low threshold is 30 , and the high threshold is 70 , the user had identified that they would like performance for a component such as a CPU or disk to be within the zone between 30 and 70. This can be defined per machine, per component.
  • Target machines may be any container and empty physical machines.
  • a virtual machine in the pool may be converted to another virtual server to enable more efficient use of virtual machines on virtual servers.
  • NIC usage will be considered per NIC, since NIC's can be on separate networks. Disk usage is considered on an individual basis. To get disk usage in the zone may require a conversion with disk resizing. Memory is targeted for the zone based on peak usage.
  • An example algorithm to select machines for conversion would include the steps:
  • the first solution is a best fit packing of virtual machines into virtual machine servers.
  • the list of source candidates include the virtual machines already on virtual machine servers. Then loop through all permutations of source and target machines to find the best layout.
  • the second solution is a variation on the first solution. Virtual machines are left on the virtual machine servers where they currently reside if the server is below the zone. Then search permutations of the remaining source and target machines to find the best layout.
  • a footprint is the collective usage of all components on a machine. It is an n-dimensional representation of the machine's usage of physical hardware and performance data.
  • Bin packing 172 attempts to optimally assign different types of resources, for example, disk space, memory, or CPU usage to a specific machine to determine if a fit can be made for transferring machines.
  • the general problem is figuring out the best way to pack objects into containers.
  • the problems can be described as the set of NP-complete algorithms known as multi dimensional bin packing and multi dimensional knapsack problem.
  • a number of algorithms may be pursued to solve this problem, some examples are:
  • FF First Fit
  • BFD Best Fit Decreasing
  • Permutation Pack PP
  • the objects are ordered in increasing order.
  • An object is packed into a container where the object has an inverse resource distribution. For example where the object has memory usage>disk usage>cpu usage, then find a container where memory usage ⁇ disk usage ⁇ cpu usage.
  • Custom 1 (C 1 ).
  • the objects are ordered in increasing order and the containers are ordered in increasing order. Then the objects are packed in a round robin manner.
  • Custom 2 (C 2 ).
  • the objects are ordered in increasing order and the containers are ordered in increasing order.
  • Objects are packed in to a container based upon the mean value of their size. For example if a container is to hold four items, find four objects whose size is roughly the mean divided by four. Find the mean/4 object in the sorted list and take the subsequent items from either side of it.
  • Neural networks 174 is a learning model.
  • a neural network contains nodes, which commonly have two inputs and an output. The output is either on or off. The outputs are provided again to other nodes in the network or to other networks. The weights of the connections between nodes changes as the system learns from data passed through the system. As the network, or any other logic engine makes suggestions on what to do, the user may make a decision on what is actually the best course of action from their perspective. This information would then be fed back to the neural network 174 to make it learn.
  • Fuzzy logic 176 uses human readable rules to make decisions. Rather than using thresholds such as “memory usage>70%”, fuzzy rules may be applied, such as: if memory is above average and memory is increasing then add more memory. In the use of fuzzy logic the rules are not precise but descriptive of the goal to be achieved. Membership functions drive the fuzzy logic engine. It describes the importance of each input as a set of fuzzy numbers. Based upon these fuzzy numbers from the membership, a concrete value is returned. Fuzzy logic 176 could be used to monitor and change resources on a server which are easily modified on a running server. For example without stopping a virtual machine from running, memory and paging could be adjusted as needed. For certain virtual servers, virtual machines may be moved onto faster servers.
  • User options 178 allows the user to enter their own criteria for suggesting machine conversions. For example a user could enter values for fuzzy logic fields such as:
  • VM_SHARES_UNDERALLOCATED VM_SHARES_OPTIMAL
  • VM_SHARES_OVERALLOCATED for virtual machines, globally or for all virtual machines on a virtual server.

Abstract

A system and method for analyzing the usage of servers and their associated applications and providing suggestions on how to best make use of the resources of the servers. Numerous forms of analysis are utilized to provide suggestions to a user for efficient use of the servers. Should a suggestion be accepted by a user a conversion between servers is conducted. Optionally a conversion may be conducted automatically based upon a suggestion.

Description

    COPYRIGHT NOTICE
  • A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
  • BACKGROUND OF THE INVENTION
  • Computing systems are growing rapidly in size and complexity. Many businesses have data centers consisting of a multitude of servers. In such an environment servers will have different configurations of hardware and software, including operating systems.
  • One of the problems in managing a data center is moving Operating Systems, applications and data between servers, especially servers with different technology architectures, and load balancing across and within the architectures to provide optimal use of the servers. Generally, optimization occurs only within a common architecture.
  • Moving an Operating System, related applications and data from a source server to a target server traditionally requires that all software on the source server be reinstalled on the target server. This is often not trivial. The source server may have legacy applications that cannot be reinstalled. Further the source server may be utilizing a version of an operating system that is not supported on the target server. The source server and target server may also differ in device drivers and connections to peripherals. Typically the individual performing the transfer must have direct contact with the source and target machines to insert media and enter commands.
  • Load balancing requires a user to determine which software applications should run on which servers and when. In a large data center this is a complex problem. Load balancing is a constantly moving target as both applications and server configurations change. The user must be aware of all applications, the amount of resources they require and when the applications use the resources of a server.
  • SUMMARY OF THE INVENTION
  • Some embodiments of the present invention are directed to a system for remotely monitoring usage of machines in a data center and suggesting conversions between machines to make efficient use of the resources in the data center, the system comprising a data collection engine and an optimization engine operatively coupled to the data collection engine.
  • Some embodiments of the present invention are directed to a method for remotely monitoring usage of machines in a data center to make efficient use of resources in the data center, the method comprising the steps of collecting performance and machine data, analyzing the data, and suggesting conversions between machines.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • For a better understanding of the present invention, and to show more clearly how it may be carried into effect, reference will now be made, by way of example, to the accompanying drawings which aid in understanding an embodiment of the present invention and in which:
  • FIG. 1 is a block diagram illustrating the conversions between machines;
  • FIG. 2 is a block diagram of a system utilizing an embodiment of the present invention;
  • FIG. 3 is a block diagram of a data center;
  • FIG. 4 is a block diagram illustrating the interactions between the PowerConvert and OFX modules;
  • FIG. 5 is a block diagram illustrating machine hierarchy;
  • FIGS. 6 a and 6 b are a flow chart of the functionality of PowerConvert;
  • FIG. 7 is a block diagram of the components of an OFX controller;
  • FIG. 8 is a block diagram of the components of PowerRecon;
  • FIG. 9 is a flow chart of the functionality of the analysis portion of PowerRecon; and
  • FIG. 10 is a block diagram of the components of PowerOptinize.
  • DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION
  • Referring first to FIG. 1 a block diagram illustrating the conversions between machines is shown. There are three types of machines, Physical 10, Virtual 12 and Image 14. Physical machines 10 are servers upon which an operating system and its related software applications run. Virtual machines 12 emulate a specific environment and run on virtual machine server software. For example, some virtual machines 12 may run on a version of Linux, others on versions of Windows. Through the use of virtual server software such as ESX and GSX provided by VMware Inc., and Microsoft Virtual Server (hereinafter referred to as MSVS), multiple virtual machines 12 may be deployed on a physical machine 10. Other virtual servers such as Xen which is open source, Virtual Iron and SW-Soft may also be supported by the embodiments of the present invention. Machine Images 14 are stored copies of the state of a physical machine 10 or a virtual machine 12 at a specific time.
  • The conversion from a physical machine 10 (P) to a virtual machine 14 (V) is referred to as P2V. Similarly the conversion from a virtual machine 14 (V) to a machine image 12 (I) is referred to as V2I. In general, X is used whenever the source or target is independent of the type of source or target. For example, I2X represents a conversion from a machine image to any other type, physical, virtual or image. In total there are nine possible conversion types as shown in FIG. 1. The intent of FIG. 1 is to illustrate that any machine may be converted from one to the other utilizing the present invention.
  • Referring next to FIG. 2, a block diagram of a system utilizing an embodiment of the present invention is shown generally as 20. Data center 22 is where the machines reside and is shown in greater detail in FIG. 3. In managing data center 22 a user may wish to move operating systems, applications and data between machines 10, 12, and 14 depending on the addition of new servers, load balancing and disaster recovery. For example, it may be determined that a virtual machine 14 would run more efficiently on a different physical machine 10. Machine images 12 allow for the state of a physical machine 10 or a virtual machine 14 to be backed up and restored as needed. A machine image 12 is stored on an image server, which serves as a host for the image. The only difference between a machine image 12 and a virtual machine 14 is that the machine image 12 may not be started. To start a machine image 12 it must be moved to either a physical machine 10 or a virtual machine 14.
  • The conversion between machines is directed by PowerConvert 24. PowerConvert 24 resides on a server and has a distinct URL. Through the use of a Graphical User Interface (GUI) 26, a user may manage the movement of operating systems, applications and data between machines 10, 12 and 14 residing in a network of machines shown as data center 22. PowerConvert 24 obtains information on machines within data center 22 as selected by the user through GUI 26 and allows the user to move operating systems, applications and data between machines. OFX 28 controls and reports on the jobs requested by PowerConvert 24 and client applications 30. OFX 28 resides on a server and has a distinct URL. In essence OFX is a generic job management engine that remotely executes and monitors jobs through OFX controllers 44 (see FIG. 3). Applications can be created through the use of OFX functionality.
  • PowerRecon 32 accesses servers in data center 22 to monitor the servers and collects statistical data on real and virtual machine usage. PowerRecon may be thought of as data collection engine. PowerOptimize 34 utilizes the data gathered by PowerRecon 32 to suggest to a user options for optimizing the use of the servers in data center 22. PowerOptimize 34 may be thought of as an optimization engine. Should the user wish to have PowerOptimize 34 automatically act upon the options selected, PowerOptimize 34 instructs PowerConvert 24 to perform the optimizations.
  • Referring now to FIG. 3, a block diagram of a data center 22 is shown. Data center 22 is a repository of various types of machines in various numbers. In the example shown there is a physical machine 10, a virtual server 40 hosting a plurality of virtual machines 12 and a machine image server 42 hosting a plurality of machine images 14. A virtual server 40 is a computer running virtual server software such as MSVS, ESX, or GSX. Through the use of virtual server software, multiple virtual machines may exist. Machine image server 42 is a computer that controls the storage of a number of machine images 14. Generically, a machine container is either a virtual server 40 or a machine imager server 42. Also, the term contained machine is used when making reference to either a virtual machine 12 or a machine image 14.
  • FIG. 4 is a block diagram illustrating the interactions between the PowerConvert and OFX modules.
  • PowerConvert 24 comprises four main components: PowerConvert Business Server 42, Database 54, PowerConvert Web Services Interface 56, and PowerConvert Controller 58. PowerConvert Business server 42 handles requests to convert from a source machine to a target machine. In database 54 it stores archived operations and device driver information. Database 54 contains information of a set of device drivers necessary when converting a machine. Users and client applications 30 communicate with the PowerConvert Business Server 42 through PowerConvert Web Services Interface 56. In one embodiment PowerConvert Web Services Interface 56 utilizes Simple Object Access Protocol (SOAP) over Hypertext Transfer Protocol (HTTP) to provide a standard interface. PowerConvert Controller 58 is an instance of an OFX controller 44 (see FIG. 3), but its role is specialized. It is responsible for running discovery jobs, and jobs that guide the overall conversion process, which includes deploying other controllers to remote machines, when necessary. Primarily, it is responsible for handling any requests to PowerConvert 24 that cannot be fulfilled synchronously in the time of a typical http request/response.
  • OFX 28 controls and reports on the jobs requested by PowerConvert 24 and client applications 30. OFX 28 controls and reports on the jobs requested by PowerConvert 24 and client applications 30. OFX 28 resides on a server and has a distinct URL. In essence OFX 28 is a generic job management engine that remotely executes and monitors jobs through OFX controllers 44 (see FIG. 3). Applications can be created through the use of OFX functionality. The core of OFX 28 is OFX Business Server 60, which runs jobs through OFX Controllers 44. OFX Business Server 60 is passive; it is a web server and responds to communication from OFX Web Services Interface 46. In one embodiment OFX Web Services Interface 46 utilizes Simple Object Access Protocol (SOAP) over Hypertext Transfer Protocol (HTTP) to provide a standard interface. OFX Business Server 60 stores all information on requests, the status of requests and machine configuration information in a database 62. In operation OFX Business Server 60 receives information on the status of request from OFX Web Services Interface 46 through OFX controllers 44 (see FIG. 3) installed on machines in data center 22.
  • PowerConvert 24 is a fully automated solution for OS portability. That is PowerConvert 24 can move the entire contents of a machine, including its operating system, applications and data to another machine. PowerConvert 24 will convert a source machine to a target machine. As discussed earlier, the types of source and target machines are Physical (P), Virtual (V), and Image (I). The steps required for each of the nine possible conversion types are illustrated in Table 1 below. Note that the first four rows refer to discovery steps. Discovery steps are prerequisites to the conversion taking place. If the desired source and target machines cannot be discovered, the conversion will not take place.
  • Depending on the source machine and the target machine types used in a conversion, the actual steps used in the conversion process differ. Typically, either a step can be omitted because it is not needed, or a different step needs to be inserted because of the special processing involved for that conversion type.
  • There are some prerequisites before the conversion can begin. First, the appropriate source and target machines must be discovered. Next, the user must initiate and configure the parameters that define the conversion process. By default, the target machine will be configured with essentially the same properties as the source machine. This includes the hostname, amount of RAM, network configuration, number and sizes of disks, and other information. Using GUI 26, the user then modifies the configuration of the target machine to suit their needs. This may include changing the hostname or changing the memory size of the target machine.
  • The conversion process is defined in a set of OFX jobs and actions that run on various OFX controllers 44 installed on machines throughout the data center.
  • The conversion process is guided by a job running on PowerConvert Controller 58. Each action (or step) in the job is run in sequence. PowerConvert Controller 58 cannot be expected to perform the entire conversion process, since the conversion is almost always distributed among several machines in the data center. Whenever the ‘next’ step in the conversion process needs to be run on a remote machine (for example, an ESX server on which a virtual machine will be created), it is the responsibility of the job running on PowerConvert Controller 58 to schedule the appropriate job to run on the appropriate OFX controller 44 (see FIG. 3). It does this by calling OFX 28.
  • Table 1 below indicates which steps need to be executed for the given conversion type.
    TABLE 1
    Discovery and PowerConvert Steps
    Description P2V V2V I2V P2I V2I I2I P2P V2P I2P
    Discover x x x x x x
    Source
    Discover x x x
    Source
    Machine
    Container
    Discover x x x x x x
    Target Machine
    Container
    Discover x x x
    Physical Target
    Install x x x
    Controller on
    Source
    Machine
    Container if
    necessary
    Install x x x x x x
    Controller on
    Target machine
    Container if
    necessary
    Create VM x x x
    Take Control x x x
    of Target
    Machine
    Create x x x x x x
    Volumes on
    Target
    Take Control x x x x x x
    of Source
    Machine
    Copy Volumes x x x x x x x x x
    from Source
    to Target
    Prepare OS x x x x x x
    to boot
    Restart Target x x x x x x
    Configure OS x x x x x x
    in Target
    Restart Source x x x x x x
    Machine
    (optional)
  • When PowerConvert 24 has been instructed to perform a conversion from a source machine to a target machine, it needs to provide instructions to and receive status information from those machines. This is done through OFX 28 via OFX Web Services Interface 46.
  • A user through the use of GUI 26, or an application through clients 30, opens a discover machine dialog and provides the machine identification such as a hostname or IP address and their credentials. This results in a job being scheduled on PowerConvert controller 58 to discover the information about the source machine. Once complete the information collected is forwarded to OFX 28 and stored in database 62. The discovery gathers all the necessary information needed for a conversion, as well as some other information that may be useful to the user. The information includes all of the machine's components: processors, disks, network adapters, the amount of memory on the machine, details about the operating system, and the network connections.
  • If the source machine is running Windows, PowerConvert 24 makes use of WMI (Windows Management Instrumentation) to remotely query the source machine. Since not all of the information that PowerConvert 24 needs is available through WMI, some other means to gather information are utilized. For example the physical address Media Access Control (MAC) of each Network Interface Card (NIC) and the properties of each disk volume are queried by deploying a small executable program to the source machine, running it, and copying back the data it generates. In the case of a Linux source machine, PowerConvert 24 communicates with the source machine using a secure protocol such as Secure Shell (SSH). PowerConvert 24 copies a small executable program to the source machine runs it, and copies back the data it generates. In one embodiment the data is provided as Extended Markup Language (XML).
  • FIG. 5 is a block diagram illustrating machine object hierarchy, shown generally as 60. Each machine type is defined in an XML schema. To aid the reader in understanding this mapping of machines, FIG. 3 describes the physical presence of the machines. FIG. 5 describes the hierarchical structure of how machines are described using XML. Machine 62 is the base type from which all other machine types are derived. Each derived type defines additional properties that are not present in its base type.
  • By way of example we illustrate three types of virtual machines 70. They are Microsoft Virtual Machine 72, VMware ESX Virtual Machine 74 and VMware GSX Virtual Machine 76. An example of the XML describing a VMware ESX Virtual Machine 74 is provided in Appendix 1.
  • In the case of conversion of a machine image 14 as a source machine, a discovery of its machine container occurs. Discovery of a machine container is a matter of determining whether the source machine has a certain property. That is, is it ESX, GSX, MSVS or an Image Server? After determining that the source machine is a machine container, queries are made to determine the properties of each machine container on the source machine. These properties include the version of the application (e.g. ESX v2.5), any special devices that are configured on the machine (e.g. the list of virtual NICs) as well as a list of all of the contained machines. If the source machine is a machine image 14 then the server on which it resides must be discovered, since a machine image 14 cannot be started, it cannot be discovered directly.
  • In the case of a conversion to a target virtual machine 12 or a machine image 14 a discovery of a machine container occurs. This discovery is the same as the previous discovery step mentioned for conversion of a source machine that is an image.
  • If the target machine is a physical machine 10 a discovery is made of the physical machine 10. In one embodiment this may require manual effort by the user, who must boot the machine using a PowerConvert boot CD, since it is expected that the physical machine may be bare. The boot CD contains a copy of Windows Preinstallation Environment (WinPE). The boot CD also contains a Windows application to assist the user to discover and register the machine with PowerConvert 24. The application prompts the user for the URL of PowerConvert 24 and the credentials with which to access it. This results in PowerConvert 24 instructing OFX 28 to create an OFX controller entry in database 62 for that machine. Next, an OFX controller 44 is downloaded from OFX 28 into the WinPE environment and installed and configured. A discovery job is then scheduled to run on this controller. The discovery job collects information about the physical machine such as: memory size, number of processors, speed of processors, number and sizes of disks including partitions and volumes and all available components, including network adapters and hard disk controllers. This machine information is stored by OFX 28 in database 62. In the case of Linux a Linux ramdisk is used instead of the boot CD. All other steps remain the same.
  • Referring now to FIGS. 6 a and 6 b a flow chart of the functionality of PowerConvert 24 is shown generally as 80. Flow chart 80 refers to the steps conducted by PowerConvert 24 should the above mentioned discovery be successful. If discovery is not successful, information on the source and target machine will not be provided to the user via GUI 26 to allow them to initiate conversion.
  • Beginning at step 82, an OFX controller 44 is installed on the source machine container, if necessary. When the source machine for a conversion is a machine image 14, PowerConvert 24 manages machine image 14 by running jobs on its host machine image server 42. Thus, an OFX controller 44 must be deployed to the host machine image server 42. If the host machine image server 42 already has an OFX controller 44 installed on it from an earlier conversion, then this step can be skipped.
  • Moving now to step 84, if the target machine is a virtual machine 12 or a machine image 14, then PowerConvert 24 manages these machines by running jobs on the host Virtual Machine Server 40 (e.g., ESX, GSX or MSVS) or the Machine Image Server 42. Thus, an OFX controller 44 must be deployed to the host machine container. If the host machine container already has an OFX controller 44 installed on it from an earlier conversion, then this step can be skipped.
  • It is not uncommon for a host machine with an abundance of memory, disk, and CPU resources to be used for multiple purposes. For example, a host machine may be running both VMware GSX and MSVS. In this case, both machine container applications will share the same OFX controller 44 to run their jobs. There is no need to install a new instance of an OFX controller 44 for each machine container on the same host.
  • Similarly PowerConvert 24 might be installed on a host that is also running MSVS and an Image Server. In this case, PowerConvert controller 58, which is actually an instance of an OFX Controller, can be used to run the jobs necessary for the machine containers.
  • Next is step 86. This step only needs to run in the case of converting to a virtual machine. When the target machine is a virtual machine, PowerConvert 24 runs a job on the host of the virtual machine server 40 to create and manage a virtual machine 12. Each type of virtual machine server 40 provides its own API that can be used to create and manage one of its virtual machines. The PowerConvert actions running in the jobs make calls to the virtual machine server 40 through the available API's.
  • By default, the properties of a virtual machine 12 are set to reflect the properties of the source machine. While configuring the conversion in the PowerConvert GUI 26, the user has the option to adjust many of the properties of the new virtual machine 12 to make optimal use of the resources available. The following properties of a virtual machine 12 may be configured:
  • a) The display name (as used by the virtual machine server)
  • b) Memory (RAM)
  • c) Minimum memory size
  • d) Memory shares
  • e) Number and size of the hard disks
  • f) Hard disk controller types (IDE or SCSI)
  • g) Number of CPUs
  • h) CPU min and max, shares and affinity
  • i) Number of NICs and the mapping to a virtual adapter
  • Finally, the new virtual machine 12 is registered with the virtual server 40.
  • We now move to step 88. This step is run only in the case of conversion to a virtual machine. A virtual machine 12 has been created, but it cannot run because there is no operating system installed on the machine.
  • The OFX controller 44 on the virtual server 40 is responsible for running this job. In this job, the newly created virtual machine is modified so that it connects to a virtual CDROM, which contains a copy of the boot image (WinPE or Linux Ramdisk). Then the virtual machine is forced to reboot. When the machine restarts, it will boot from the CDROM. The boot image will load, and a controller 44 will be installed and configured.
  • In this step it is also possible to temporarily modify the memory footprint of the virtual machine for the purposes of running it under the control of PowerConvert 24. For example, it may be suitable for the user to configure the target virtual machine to run with 128 MB of RAM, but the overall conversion speed can be improved in some situations if the machine under control is given additional virtual memory to utilize.
  • There is no need to take control of a target physical machine during the conversion process, since this already happens during the discovery stage when the machine is booted from the CDROM.
  • Moving next to step 90, now that the VM has been created and is under the control of PowerConvert 24, disk partitions and volumes are created.
  • Moving next to step 94, PowerConvert 24 takes control of a source machine directly. The job runs in PowerConvert controller 58. The platform specific boot image is copied to the source machine. Next, the boot configuration file is backed up and modified to refer to the new image. Finally, the source machine is forced to reboot.
  • When the source machine reboots, it will boot from the new boot image. In one embodiment, the OFX controller 44 is contained in the boot image, so it does not need to be downloaded. Instead, it only needs to be configured. As soon as the machine boots into the boot image, the original boot loader configuration files are restored. This allows the machine to be restored back into its native operating system as soon as it is rebooted, even if it is rebooted in error.
  • Moving now to step 96 the source and target machines are ready to begin copying. If either the source or target machines are physical or virtual machines, they are running under control. That is, they are running within a boot image, with a controller configured. If either the source or target machines is a machine image, then the controller of the machine container's host is used. In any case, there are two controllers ready to handle the copying of files. A ‘copy source’ job is scheduled to run on the source machines controller, and a ‘copy target’ job is scheduled to run on the target machine's controller. In the jobs, one side binds to a network port and waits for a connection from the other side. Either the source or the target may be configured to listen on a port. In most cases, it does not matter since the conversion is taking place between two machines that are under control. Once a connection is made, the transfer can begin.
  • PowerConvert 24 uses a file-based copy process. The source side begins with the root folder of a given volume and traverses the file system reading each file and folder. As each file and folder is found, the source side writes it to the socket connection. The data is streamed across the network in the OFX Package format. On the target side, the OFX Package is read from the network connection, one file at a time. As each new file arrives, it is recreated on the target machine with all of its associated properties. The intention is to recreate each file and folder exactly as it was on the source machine. The file transfer continues for each volume that is configured to be copied. The user has the option of choosing not to copy one or more volumes, if so desired. Further, some files are not copied from the source machine to optimize the amount of data to transfer taking into account what can be recreated by the operating system on the target.
  • As mentioned earlier, PowerConvert 24 uses a file-based copy process. That is, each individual file and folder is copied from the source to the target. The alternative to this is an image based copy. In an image-based copy, the entire contents of a file system are read from the disk byte-by-byte, regardless of the file system.
  • There are several advantages to using a file-based copy instead of an image-based copy, as follows:
  • 1. Resizing of volumes. At configuration time, the user may decide that the size of a volume on the source machine is not optimal for the target machine.
      • a) For example, the C: drive on a Windows source machine is 20 GB in size, and now near capacity. In this case, the corresponding volume on the target machine can be configured with an increased size of, say, 50 GB.
      • b) Similarly, a volume on the source may be underutilized. It may be sized at 120 GB, but only ever uses about 10 GB. In this case, the corresponding volume on the target machine can be configured with a smaller size of, say, 20 GB.
        2. Automatic defragmentation of the file system on the target machine. Any file on the source machine may be fragmented. That is, its data is not stored contiguously on the disk. During PowerConvert's file transfer step, files are being written to the target's disk one file at a time, each file will naturally occupy the next available sectors of the disk, since the disk starts off with a clean file system.
        3. Filtering specific files so that they are not copied or are changed during the copy process. Files that can be recreated without copying, such as the swap file for the Windows operating system need not be copied which often save 1 GB or more of data.
  • Moving now to step 98, PowerConvert 24 prepares the operating system to boot while it is still under control. It is only at this time that PowerConvert 24 has full access to the operating system that has just completed copying from the source. The following steps are taken:
  • a) Update drivers. Device drivers are installed on the Operating System. The drivers installed are those that match the plug and play identification of the devices on the target machine, which are determined at machine discovery time. For devices such as mass storage devices, it is vital to update the drivers while the machine is under control, otherwise the machine may likely never be able to boot.
  • b) Update Hardware Abstraction Layer (HAL) and kernel files. Hal and kernel files are updated, if necessary.
  • c) Update boot configuration file (boot.ini or grub.conf or linux.conf) so that the new machine will boot from the appropriate partition.
  • d) Update hostname, as configured by the user.
  • e) Update network connections. At this time for Linux only; it needs to be done later for Windows.
  • f) Disable VMware tools, if necessary.
  • g) Disable MSVS additions, if necessary.
  • h) Update Windows services or Linux daemons, as configured by the user.
  • Moving now to step 100, the target virtual machine is restarted. This step runs on the target machine container. Its purpose is to ‘undo’ the take control. This involves undoing the temporary changes that were needed during the take control step, including the disconnection of the virtual CDROM and resetting the memory size back to the user configured amount. In the case of a physical machine, this step is run from PowerConvert controller 58. It schedules a job to run on the target physical machines OFX controller 44, and instructs it to reboot.
  • Step 102 only needs to run for Windows target machines. For Linux, the target machine is fully configured by the end of the Prepare OS to Boot step 98. This step runs within a small Windows service that is injected into the target earlier and does the following:
  • a) Restore mount points on volumes
  • b) Configure network connections
  • c) Generate new Session Id
  • d) Join a domain or workgroup, as configured by user
  • e) Restore NT4 file security
  • Step 104 ends the process and is optional. This step brings the source machine out of the PowerConvert boot image and back into the native operating system. The user may want to ‘move’ a machine, instead of ‘cloning’ a machine. In this case, they may not want to restart the source machine, and the machine is left ‘under control’. If the user does want their source machine restarted, then PowerConvert 24 will relinquish control of that machine by running a ‘reboot’ job on the controller while the machine is under control.
  • To aid the reader in understanding the function of OFX 28 we will now describe some OFX terms.
  • A device is a generic term for a physical or virtual device that can be controlled. Examples of devices would be a computer, a virtual machine, a software application, a network switch or a group of devices. Devices can be nested to form a hierarchy. Information on a device includes a Globally Unique ID (guid), a display name, a security descriptor and Extended Markup Language (XML) instance data. PowerConvert 24 extends the use of this instance data to store its own model of a machine object in XML format as discussed above with reference to FIG. 5.
  • An OFX job defines a set of actions. Jobs are executed by an OFX controller 44 and are versioned. Jobs may be scheduled against devices or controllers.
  • Actions provide implementation behavior for jobs. Actions allow developers and users to extend the use of OFX 28 with custom behavior for custom solutions and applications. Actions are implemented as dynamic link libraries and are reusable among jobs.
  • An OFX package is a binary format that is used for file distribution. It is similar in notion to a tar file or a zip file.
  • OFX packages may be used in several ways namely:
  • 1. OFX Action packages. When OFX controller 44 needs to execute an action. To do so it must load a specified .dll. This .dll and any dependent .dll's are archived in a package available for OFX controller 44 to download from OFX 28. In this scenario OFX controller 44 requires the .dll's with their names and content, but little else.
  • 2. OFX Job packages. These typically contain data files that are needed during the execution of a job. Multiple job packages can be used in a job.
  • 3. PowerConvert File Transfer. During a conversion using PowerConvert 24, all of the files from a source machine are copied across a network to a target machine. For each file transferred all of the file's properties are transferred with it so that the file can be recreated on the target machine exactly as it was on the source machine.
  • 4. PowerConvert Image Server. When archiving machine images on an image server, for each file in the archive, all of its properties and contents are stored so that it can be recreated at some later time when the machine image is deployed to a target machine.
  • The same package format is used for both Windows and Linux and is portable to any operating system format.
  • The structure of a package comprises four main components, a Package Preamble, Package Headers, File Headers and Files. We will now describe each in turn.
  • A Package Preamble identifies the package version.
  • Package Headers consists of a set of zero or more Headers that pertain to the package as a whole. The format of Package Headers is as follows:
  • Number of Headers four bytes
  • Header 1 variable size
  • . . .
  • Header n
  • Package Headers can be used by the package author to provide additional information or hints about the source or the contents. For example, a package header could provide a hint about the approximate number of files or the estimated size of the package. This gives the program reading the package enough information to estimate progress between 1% to 100%.
  • File Headers have the same format as Package Headers and consist of a set of zero or more Headers. The only difference from Package Headers is that the properties relate to a file, instead of the entire package. File Headers provide a great deal of flexibility as a new File Header can be added whenever the need arises to describe some additional property of a special file type. For example File Header names used in one embodiment may include:
  • Attributes An integer representation of the file attributes
  • CreationTime An integer representation of the file creation time
  • LastWriteTime An integer representation of the last modification time
  • Backup Utilizes Windows backup semantics (Boolean)
  • A Header can be used for either packages or files. A Header includes a name/value pair that describes a property of either the package or the file. Each header has a MustUnderstand Boolean flag. When writing a package the author sets this value to TRUE if the reader must understand the meaning of this header. When reading a package the reader must check this flag. If the reader does not understand the meaning of the header, it will fail. In describing headers and other components we will hereinafter be referring to “Length-prefixed UTF8 string”, this is a short form for “Four byte length-prefixed eight bit Unicode transformation format encoded string”. One format of a header is as follows:
  • Name Length-prefixed UTF8 string
  • Value Length-prefixed UTF8 string
  • MustUnderstand One byte (Boolean)
  • The Files section consists of a sequence of File entries. The number of files in the package is never specified. Instead there exists a Boolean marker with the value TRUE before the beginning of each new File to indicate that a file follows. A Boolean marker with the value FALSE will follow the last file in the package. With this format the writer of a package does not need to pre-calculate the number of files in the package. This is beneficial during a file transfer between two machines. As each file is read from the disk, it can be immediately sent across the network to the target machine. Thus there is no need to wait until the package is fully assembled. The Files section may be embodied in a format as follows:
  • MoreFlag One byte (Boolean TRUE)
  • File 1 Variable size
  • MoreFlag One byte (Boolean TRUE)
  • File 2 Variable size
  • . . .
  • MoreFlag One byte (Boolean TRUE)
  • File n Variable size
  • End of Files Marker One byte (Boolean FALSE)
  • Each File describes the properties and contents of a file or directory. A File structure is as follows:
  • Full Name of File Length-prefixed UTF8 string
  • Is Directory One byte (Boolean)
  • File Length in Bytes Eight bytes
  • File Headers Variable Size
  • File Contents Variable Size
  • The OFX package format is designed to be flexible for the easy addition of extensions. For example, file compression can be added without changing the File format by adding a File Header with the type “compressed”, for each file that required compression. On the target machine the package reader will know that the file is in a compressed format when it sees the “compressed” File Header.
  • We will now provide more detail on PowerConvert Web Services Interface 56 and OFX Web Services Interface 46.
  • Power Convert Web Services Interface 46 deals primarily with Operations and Machines. To deal with these it provides an Operations Web Service and a Machine Web Service. The Operation Web Service provides a wrapper around the OFX job information, especially with respect to tracking the relationships between all of the remote jobs that make up a single conversion process. GUI 26 calls the Operations Web Service when it wants to check on the status of a conversion, using OperationWebService.GetOperation( ) The Operation Web Service also includes methods such as AbortOperation and DeleteOperation.
  • The Machine Web Service handles all request related to machines, including:
  • a) GetMachine( ), to retrieve the machine properties
  • b) Discover( ), which schedules a job on PowerConvert controller 58 to gather information about the specified machine, and add the results to database 62.
  • c) Undiscover( ) which will remove the machine from database 62.
  • d) ConvertToMachineContainer( ), which schedules a job on PowerConvert controller 58 to convert a source machine to a contained machine (i.e. x2V or x2I).
  • OFX Web Services Interface 46 provides access to OFX Business Server 60. Web services are organized into three groups: Installation/Setup, Controllers-Only and Runtime.
  • Installation/Setup web services are used to configure OFX 28 with jobs, actions and packages. These are primarily used at installation time. Examples of Installation/Setup web services are:
  • a) JobWebService allows the user to add, delete, modify and query job definitions including actions such as: AddJob, GetJob, GetJobs, DeleteJob and Setjob.
  • b) ActionTypeWebService allows the user to add, delete, modify and query ActionType definitions including actions such as: AddActionType, DeleteActionType, GetActionType and SetActionType.
  • c) PackageWebService allows the user to add, delete, modify and upload package definitions including actions such as: AddPackage, GetPackage, SetPackage and UploadPackage.
  • d) SchemaWebService provides a means for defining the structure, content and semantics of XML documents in more detail. This web service is used to add and get schemas and includes actions such as, AddSchema, GetSchema and GetSchemas.
  • e) ImportExportWebService is used to import jobs, action types, devices, schemas and packages into OFX 28. The input is an XML document that contains the definitions of one or more job, action types and packages. This web service will call each of JobWebService, ActionTypeWebService, DeviceWebService, SchemaWebService and PackageWebService as required.
  • f) ConfigurationWebService is used to get and set security descriptor fields in database 62. These include jobs, action types, devices, controllers and packages. Actions include GetRootSecurityDescriptor and SetRootSecurityDescriptor.
  • Controller-Only web services are used by OFX controllers 44. There are two types of Controller-Only web services, namely ControllerNotificationWebService and ControllerPackageDownload.
  • ControllerNotificationWebService is used by OFX controllers 44 to notify OFX 28 of the controller status and the status of the jobs they are running. The three operations are:
  • a) Startup, which provides notification to OFX 28 when OFX controller 44 starts.
  • b) Heartbeat, which is used by an OFX controller 44 to inform OFX 28 that it (the controller) is still running. An OFX controller 44 sends to OFX 28 a snapshot of any jobs that it is currently running. OFX 28 then sends the OFX controller 44 any new jobs that have been scheduled to run on the OFX controller 44. Typically this occurs every five seconds or so.
  • c) Shutdown, which provides notification to OFX 28 when an OFX controller 44 stops.
  • ControllerPackageDownload is used by OFX controllers 44 to download any packages that are required to execute a job. A job is never executed until an OFX controller 44 has successfully downloaded all of the dependent packages. Packages are defined by a guid and a version. When a OFX controller 44 downloads a package, the package is cached on disk, in case it is needed later to run another job that has the same package dependency.
  • Runtime Web Services are of three types, JobSchedulingWebService, ControllerWebService and DeviceWebService.
  • JobSchedulingWebService includes the following services:
  • a) ScheduleJob, which is used for defining a new job instance, along with input parameters and the device or controller for the job to be executed on.
  • b) GetScheduledJob, which returns information about the specified job. This includes the job status, the status of each action in the job and any input and output data.
  • c) GetControllerJobs, which returns all of the jobs related to a specific controller 44.
  • d) AbortJob, which aborts a running job.
  • e) DeleteJob, which is used to delete a scheduled job when it is no longer needed on the system.
  • ControllerWebService includes the following services:
  • a) AddController, which is used to define and configure a new OFX controller 44 just before the controller is deployed to a machine.
  • b) SetController, which is used is used for modifying the properties of controller 44.
  • c) DeleteController, which is used to delete a specified OFX controller 44 entry in the database.
  • d) GetController, which returns its properties and attributes of a specified controller.
  • e) GetControllers, which returns properties and attributes of all controllers 44.
  • f) GetControllerEventLogEntries, which returns the event log entries for OFX controller 44.
  • g) ClearControllerEventLogEntries, which clears the event log entries for OFX controller 44.
  • DeviceWebService allows the user to add, delete, modify and query device definitions. It includes services such as: AddDevice, SetDevice, GetDevice, GetDevices, GetDevicelds, and DeleteDevice.
  • An example of a SOAP request and response for the service ControllerWebService.GetController follows. The fields in bold are placeholders that need to be replaced with actual values.
    EXAMPLE
    ControllerWebService.Getcontroller
    POST /ofxweb/Controller.asmx HTTP/1.1
    Host: shark.platespin.com
    Content-Type: text/xml; charset=utf-8
    Content-Length: length
    SOAPAction: “http://schemas.platespin.com/ofx/ws/GetController”
    <?xml version=“1.0” encoding=“utf-8”?>
    <soap:Envelope xmlns:xsi=“http://www.w3.org/2001/xmlSchema-
    instance” xmlns:xsd=“http://www.w3.org/2001/xmlSchema”
    xmlns:soap=“http://schemasxmlsoap.org/soap/envelope/”>
     <soap:Body>
      <id
    xmlns=“http://schemas.platespin.com/ofx/ws/”>string</id>
      <options
    xmlns=“http://schemas.platespin.com/ofx/ws/”>Properties or Data
    or SecurityDescriptor</options>
     </soap:Body>
    </soap:Envelope>
    HTTP/1.1 200 OK
    Content-Type: text/xml; charset=utf-8
    Content-Length: length
    <?xml version=“1.0” encoding=“utf-8”?>
    <soap:Envelope xmlns:xsi=“http://www.w3.org/2001/xmlSchema-
    instance” xmlns:xsd=“http://www.w3.org/2001/xmlSchema”
    xmlns:soap=“http://schemasxmlsoap.org/soap/envelope/”>
     <soap:Body>
      <controller id=“string” status=“Unknown or Running or
    Stopped” dateCreated=“dateTime” dateModified=“dateTime”
    bootFile=“string” bootFromNetwork=“boolean”
    bootPlatform=“Windows or Linux” bootExpected=“boolean”
    xmlns=“http://schemas.platespin.com/ofx/ws/”>
       <description>string</description>
       <data>xml</data>
       <macAddresses>
        <macAddress>string</macAddress>
        <macAddress>string</macAddress>
       </macAddresses>
       <securityDescriptor>base84Binary</securityDescriptor>
      </controller>
     </soap:Body>
    </soap:Envelope>
  • Referring now to FIG. 7, a block diagram of the components of an OFX controller 44 is shown. An OFX controller 44 runs on a computer host to control one or more OFX devices, and it executes jobs provided to it by OFX 28. The design of OFX controllers 44 is independent of platform architecture and uses OFX Web Services Interface 62 to communicate with OFX 28. OFX controllers 44 are generic in that they know nothing about the actions they are executing. All the code needed to execute an action is downloaded on demand from OFX 28.
  • An OFX controller 44 for Windows is deployed from OFX 28 by using NetBIOS and WMI to copy OFX controller 44 to a remote machine and register it as a Windows Service. Similarly a OFX controller 44 for a Linux machine is deployed using the SSH protocol. In both cases, administrator credentials are required on the targeted machine.
  • At deployment time each OFX controller 44 is configured with:
  • a) The URL of OFX 28, which the OFX controller 44 uses to contact OFX 28.
  • b) A unique guid so that it can be identified by OFX 28.
  • c) A randomly generated symmetric encryption key for security. This “secret” along with a nonce value are used as a signature for the purpose of preventing replay attacks.
  • As shown in FIG. 7, an OFX controller 44 comprises five main components, notification service 110, job manager 112, scheduler service 114, package manager 116 and job execution process(es) 118.
  • Notification service 110 regularly checks in with OFX Business Server 60 through OFX Web Services Interface 62 to report status and to determine if any new jobs are waiting. This checking in is referred to as a “heartbeat” and occurs frequently, typically on the order of every five seconds but is user definable. On each heartbeat OFX controller 44 will send a snapshot of the status of each running job and the latest log file entries. Log file entries are maintained by the controller to indicate the status of a job. Examples of log file entries are; job received and package downloaded. A log file provides a running status of the job progression. Notification Service 110 will receive any new jobs that have been scheduled to run on an OFX controller 44 since the last heartbeat. An OFX controller 44 will keep sending a snapshot of a given job at the heartbeat until the job has completed running. The benefit of such a design is that the dataflow across a network is minimized.
  • Job manager 112 is responsible for persisting all of the job XML files on disk. When notification service 110 receive a new job from OFX 28, it forwards that job to job manager 112 which will immediately persist that job XML to disk. Next, job manager 112 will notify scheduler service 114 that a new job has arrived. Also, when notification service 110 is preparing a heartbeat for OFX 28 it will ask job manager 112 for all the jobs that have been modified since the last successful heartbeat. As a job executes the job data will change. For example the status of an action will change from “NotRun” to “Running” when the action starts. Job manager 112 stores this information in the form of an XML file in job XML folder 120.
  • Scheduler service 114 is responsible for the running of each job. Scheduler service 114 schedules a job for a given time and controls a queue of jobs to be run. Before a job can be executed any dependent packages must first be downloaded, so package manager 116 is sent a request to download the packages. Each job has one or more associated packages, which contain everything needed to execute a job. The packages required to run a job are specified in the job XML. Scheduler service 114 executes a job by spawning a separate job execution process 118. Scheduler service 114 then waits for the process 118 to exit, at which time it will check the exit status of the process. If the job execution process 118 failed for any reason, scheduler service 114 is responsible for setting the job status to “Failed” by modifying the job XML in job XML folder 120. Finally, scheduler service 114 informs job manager 112 that the job has completed.
  • Each job is run in its own process 118 to protect any other running jobs. There is one new process created for each job that needs to be run. There is no limit to the number of jobs that can run concurrently on a single OFX controller 44, except for the usual memory, disk and CPU resource constraints of a machine.
  • The job execution process 118 is responsible for running the job. It does this by loading and executing each of the actions specified in the job. The job execution process is also responsible for setting the status of each action as it changes, as well as the overall job status. It is also responsible for flushing the job XML to the Job XML folder 120 at the completion of each action.
  • Package manager 116 communicates with an OFX file server 122 to download all packages specified in a job. OFX file server 122 is under the control of OFX 28. Package manager 116 will also store its own cache of packages that have been downloaded previously in packages folder 124. Packages are identified by a name (guid) and a version. Package manager 116 will access cached packages in packages folder 124. As the number of packages to download for a specific job can vary, and their sizes can vary, any request to package manager 116 is asynchronous. Package manager 116 will notify scheduler service 114 when it completes downloading all of the packages for a specific job. Package manager 116 automatically handles retries, in the case that the download of a package fails because of some temporary network difficulties.
  • To better illustrate the types of information utilized by OFX 28 we will now briefly describe the contents of database 62. In one embodiment database 62 is a relational SQL database containing a plurality of tables. The main tables provide information on: packages, scheduled jobs, controllers, devices and actions. As an example of the structure of database 62, the tables for scheduled jobs and controllers would be linked together by controller id. The scheduled jobs table would include information about a job, such as a job id, a job version, a device id, status, date scheduled and other fields. The controllers table would include information about a controller such as: id, security descriptor, description, pointers to a bootfile, status, and other fields. It is not the intent of the inventors to restrict the use of the present invention to a specific implementation of database 62 but rather to indicate that it serves as a repository for OFX 28.
  • FIG. 8 is a block diagram of the components of PowerRecon 32. PowerRecon 32 is designed to aid in the consolidation of operating systems, applications and data on servers in data center 22. PowerRecon 32 monitors the servers to collect information and provides detailed plans on how a consolidation may be accomplished. Information may be collected through the use of Windows services such as WMI or Windows Performance Counters. In the case of Linux commands to collect information may be made through a service such as SSH. A user through the use of GUI 26 may examine the information collected by PowerRecon 32 and select which consolidations should occur.
  • PowerRecon 32 comprises two main modules, Web Services Application Programming Interface (API) 130 and Software Developer's Kit (SDK) 132 which communicate with each other. Web Services API 130 comprises three modules, inventory 134, performance 136 and analysis 138.
  • In one embodiment there are five groups of methods provided by Web Services 130. They are:
  • 1) Autonomic. These provide analysis and optimization web services.
  • 2) Inventory. These provide inventory gathering, machine and machine container information, group information, and security credentials. Machines contain containers, groups can contain other groups and machines.
  • 3) Nodes. These provide hierarchical definitions of the groups, machines and containers.
  • 4) Performance Data Collection. These provide methods for the starting and stopping of data collection and retrieval of performance data.
  • 5) Reports. These report on actions that the system is performing. They return information of the state and progress of a task such as running an analysis, running inventory or running optimization.
  • Examples of methods in Web Services API 130 used by inventory 134 include:
  • a) Import. This imports information about a machine by returning the id of the machine as stored in the PowerOptimize database 146.
  • b) Inventory. This discovers a set of servers of the same platform type such as all ESX machines.
  • Examples of methods in Web Services API 130 used by performance 136 include:
  • a) Start. This starts performance monitoring on a machine.
  • b) Stop. This stops performance monitoring on a machine.
  • c) GetMetricData. This gets the metric data collected for a machine.
  • d) GetMonitoredMachines. This provides a list of machines being monitored for performance metrics.
  • Examples of methods in WebServices API 130 used by analysis 138 include:
  • a) AnalyseMachine. This starts an analysis on a single machine to determine if it is within a set of thresholds to determine if it is overused, underused or within a target range.
  • b) StartAnalysis. This performs the same tests as AnalyseMachine but does it on a group of machines.
  • Inventory 134, through the use of OFX controllers described earlier in reference to OFX 28 collects information on a server. Information to be collected includes detailed information about machines and containers. The information collected is stored in PowerOptimize database 146. This information may be refreshed at the request of the user or automatically on a regular schedule.
  • Performance 136 examines the data collected in PowerRecon database 148. This data includes information on the performance data that needs to be collected: such as: disk I/O, CPU usage, CPU pages NIC Megabits per Second (Mbps) and memory usage. PowerRecon database 148 also stores historical performance data that has been collected. As a part of the Web Services API 130, it returns the data requested from database 148.
  • Analysis 138 examines the information collected by inventory 134 and performance 136 stored in databases 146 and 148 to make suggestions to optimize the performance of the servers in data center 22. FIG. 9 illustrates the logical steps of analysis 138.
  • PowerRecon SDK 132 comprises two main modules, database gatherer 140 and realtime gatherer 142. When a request is received to obtain information on a server in data center 22 from Web Services API 130, PowerRecon SDK 132 utilizes a Simple Performance Inspector (SPI) interface 144 to obtain information on the server. An SPI 144 may be created to act as an adapter for any source of performance data. An SPI 144 runs on a server and is configured to the server platform to utilize platform specific tools. Information may be collected using a variety of methods such as SSH for Linux, Windows Performance Counters, or tools provided by products such as VMware to best collect the data. In addition, multiple SPI's mitigate losses of data.
  • Database gatherer 140 extracts information from a server and returns it to Web Services API 130 to be stored in database 148. Realtime gatherer 142 collects information on a server in realtime and returns it to Web Services API 130 to be displayed to a user via GUI 26.
  • FIG. 9 is a flow chart of the functionality of the analysis portion (138) of PowerRecon 32 and is shown generally as 150. Beginning at step 152 databases 146 and 148 are queried for inventory and performance information on each server submitted for analysis. At step 154 a possibility test is made. For example are there enough resources available on a target machine to move other machines to it? If three machines each require 1 GB of RAM and the target machine has only 2 GB of RAM than such a transfer is not possible. Moving to step 156 an intelligence test is performed. This step verifies that the usage of each resource (e.g. Disk I/O and CPU) for the machines to be transferred does not conflict. For example if two machines have intensive disk I/O usage, it would be useful to have them on servers with low I/O usage. In another example if two machines have high CPU usage, from 3:00PM to 6:00PM Monday to Friday it would be efficient to have them on separate servers. Conversely if one machine had a high CPU usage from 8:00 to 12:00 from Monday to Friday and another from 12:00 to 4:00, they would be good candidates to reside on the same server. Any number of analyses may be used to determine a good fit for machines on servers based upon resource use such as: mean, trend analysis, standard deviation, or min/max values. At this step a suggestion may also be made of the size of a new virtual machine. For example if a machine was configured for 2 GB of RAM, but only used 256 MB most of the time, a suggestion may be made to reduce the RAM of the target machine to 512 MB and perhaps increase the paging file size. In another scenario, if the server is a heavily used single processor machine, a suggestion could be made to move to a two CPU machine.
  • Moving to step 158 the solutions are generated and stored in database 148 so that the user may view and change them via GUI 26. Any changes made by the user are verified by steps 152 and 156. If the user selects a solution, it is then passed to PowerConvert 24 for execution.
  • Moving to step 160 the user may request after a certain amount of time to return to step 152 to generate another analysis for the new configuration to determine if it is functioning as expected.
  • Referring now to FIG. 10 a block diagram of the components of PowerOptimize are shown. PowerOptimize 34 is directed toward load balancing, right sizing and self healing of data centers. Through the use of PowerRecon 32 it can utilize both historical and real time data to provide suggested changes. PowerOptinmize 34 comprises five main logic engines namely: expert systems 170, bin packing 172, neural networks 174, fuzzy logic 176 and user options 178. Suggestions 180 coordinates the information collected by each engine and interacts with analysis 138 and GUI 26 to allow a user to select an action to be taken. Alternatively, should the user wish an action to be taken automatically, suggestions 180 will instruct PowerConvert 24 to make the suggested changes.
  • Expert systems 170 is based upon facts, rules, actions and an inference engine. The number of facts grows each time the inference engine runs. The rules define what should be done with the facts. The facts are a collection of known elements such as: machines, metric data and, thresholds. Examples of metric data would include: processor utilization by CPU, memory usage, disk space, bytes read and written from and to a disk, and bytes sent and received for a NIC. Thresholds are values above or below which a decision can be made.
  • The rules define how the system acts based upon the facts. For example:
  • a) If a CPU is overused, then add virtual machines on a server to handle the overuse.
  • b) If a server has room then convert from a physical to a virtual machine, i.e. does it have enough disk space, memory, CPU and NIC to support the physical machine as a virtual machine.
  • c) If the number of virtual machines on a server is beyond a threshold (e.g. four) then no new virtual machines may be added.
  • Rule c) is an example of a constraint, which may restrict movements of machines or images. The inference engine process the rules based upon: preferences (e.g. CPU usage should be maximized), constraints (e.g. maximum of 4 VM machines on a server), cost and priorities and parameter assignment. Parameter assignment appends a new value to the facts.
  • Expert systems 170 conducts an analysis within the context of a set of machines (the machine pool), comprised of source and target candidates. The logic as follows describes a rule referred to as “the zone”. The zone is the middle part of the low and high thresholds a user may define for a machine's usage. For example if the low threshold is 30, and the high threshold is 70, the user had identified that they would like performance for a component such as a CPU or disk to be within the zone between 30 and 70. This can be defined per machine, per component.
  • a) Target machines may be any container and empty physical machines.
  • b) The heuristic for this rule is straightforward; for every metric by which the performance of a machine is evaluated, there is a desired range. The goal is to have all physical machines within the zone.
  • c) Within the desired range is a “sweet spot” used to rank machines and prioritize alternate solution scenarios.
  • d) If a physical machine in the pool is in the zone, it shall not be moved.
  • e) If a virtual machine in the pool is in the zone, it may be converted to another virtual server to enable more efficient use of virtual machines on virtual servers.
  • f) If all the target candidates in the machine pool are in the zone, no conversions are possible.
  • f) If all source machines are in the zone, no conversions are suggested.
  • g) Physical machines that are below the range should be moved to a virtual machine server, thereby freeing up the physical machine. P2V conversions are prioritized in such a way as to maximize the number of virtual machines on a virtual machine server.
  • h) In the absence of P2V candidates, virtual machines are migrated between underutilized virtual machine servers. The priority is to have the virtual machine server with the least powerful hardware in the zone first. The rational is that by leaving the most powerful available, there will be greater flexibility for future analyses.
  • i) Physical servers that are above the zone should be left where they are as there is not a solution. If more powerful hardware exists for a conversion target then a possible solution is P2V or P2P conversion.
  • For decision making, performance statistics for CPU usage will be averaged over all instances. For example, percent usage will be averaged over both processors in a dual CPU server. NIC usage will be considered per NIC, since NIC's can be on separate networks. Disk usage is considered on an individual basis. To get disk usage in the zone may require a conversion with disk resizing. Memory is targeted for the zone based on peak usage.
  • An example algorithm to select machines for conversion would include the steps:
  • 1) Loop once through the machine pool to select candidate target machines and candidate source machines.
  • 2) If the list of target candidates is empty, return.
  • 3) If the list of source candidates is empty, return.
  • Based upon the candidates selected we propose two solutions. The first solution is a best fit packing of virtual machines into virtual machine servers. In the list of source candidates include the virtual machines already on virtual machine servers. Then loop through all permutations of source and target machines to find the best layout. The second solution is a variation on the first solution. Virtual machines are left on the virtual machine servers where they currently reside if the server is below the zone. Then search permutations of the remaining source and target machines to find the best layout.
  • The above solutions can be implemented simply by defining a set of comparison operators and methods, namely:
  • a) Vmserver.CanFit(machine a): True or False depending on whether a virtual machine server has enough of the correct resources to support “machine a” as a virtual machine.
  • b) Vmserver.NotFull( ): True if the virtual machine server can host more virtual machines.
  • c) machine.BiggerThan(machine a): True or False depending on whether “machine a” has a bigger footprint than the current machine. A footprint is the collective usage of all components on a machine. It is an n-dimensional representation of the machine's usage of physical hardware and performance data.
  • d) machine.LessThan(machine a): True or False depending on whether “machine a” has a smaller footprint than the current machine.
  • Bin packing 172 attempts to optimally assign different types of resources, for example, disk space, memory, or CPU usage to a specific machine to determine if a fit can be made for transferring machines.
  • The general problem is figuring out the best way to pack objects into containers. The problems can be described as the set of NP-complete algorithms known as multi dimensional bin packing and multi dimensional knapsack problem. A number of algorithms may be pursued to solve this problem, some examples are:
  • a) First Fit (FF). In this scenario, objects arrive in an unsorted list and are packed into the first bin they fit in.
  • b) First Fit Decreasing (FFD). In this scenario, objects are sorted in decreasing order and then FF is applied.
  • c) Best Fit (BF). In this scenario, objects arrive in an unsorted list and are packed into the bin that would leave the least amount of space.
  • d) Best Fit Decreasing (BFD). In this scenario, the objects are ordered in decreasing order and BF is applied.
  • e) Next Fit (NF). In this scenario, objects arrive in an unsorted list and packed into the first bin they fit into. Subsequent objects are packed in the bin starting after the bin where the last object was packed.
  • f) Next Fit Decreasing (NFD). In this scenario, objects are sorted in decreasing order and NF is applied.
  • g) Worst Fit (WF). In this scenario, the objects are unsorted and packed in order into the bin that would leave the most amount of space.
  • h) Worst Fit Decreasing (WFD). In this scenario, the objects are sorted in decreasing order and WF is applied.
  • i) Permutation Pack (PP). In this scenario, the objects are ordered in increasing order. An object is packed into a container where the object has an inverse resource distribution. For example where the object has memory usage>disk usage>cpu usage, then find a container where memory usage<disk usage<cpu usage.
  • j) Custom 1 (C1). In this scenario, the objects are ordered in increasing order and the containers are ordered in increasing order. Then the objects are packed in a round robin manner.
  • k) Custom 2 (C2). In this scenario, the objects are ordered in increasing order and the containers are ordered in increasing order. Objects are packed in to a container based upon the mean value of their size. For example if a container is to hold four items, find four objects whose size is roughly the mean divided by four. Find the mean/4 object in the sorted list and take the subsequent items from either side of it.
  • Neural networks 174 is a learning model. A neural network contains nodes, which commonly have two inputs and an output. The output is either on or off. The outputs are provided again to other nodes in the network or to other networks. The weights of the connections between nodes changes as the system learns from data passed through the system. As the network, or any other logic engine makes suggestions on what to do, the user may make a decision on what is actually the best course of action from their perspective. This information would then be fed back to the neural network 174 to make it learn.
  • Fuzzy logic 176 uses human readable rules to make decisions. Rather than using thresholds such as “memory usage>70%”, fuzzy rules may be applied, such as: if memory is above average and memory is increasing then add more memory. In the use of fuzzy logic the rules are not precise but descriptive of the goal to be achieved. Membership functions drive the fuzzy logic engine. It describes the importance of each input as a set of fuzzy numbers. Based upon these fuzzy numbers from the membership, a concrete value is returned. Fuzzy logic 176 could be used to monitor and change resources on a server which are easily modified on a running server. For example without stopping a virtual machine from running, memory and paging could be adjusted as needed. For certain virtual servers, virtual machines may be moved onto faster servers.
  • User options 178 allows the user to enter their own criteria for suggesting machine conversions. For example a user could enter values for fuzzy logic fields such as:
  • a) CPU_VERY_OVERUSED, CPU_OVERUSED, CPU_OPTIMAL, CPU_UNDERUSED, CPU_VERY_UNDERUSED, for each virtual and physical machine
  • b) VM_SHARES_UNDERALLOCATED, VM_SHARES_OPTIMAL, VM_SHARES_OVERALLOCATED, for virtual machines, globally or for all virtual machines on a virtual server.
  • c) SHORT_TIME, SOME_TIME, LONG_TIME, to define time scales for collecting and assessing data globally.
  • Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims. By way of example note that the inventors refer to the use of Windows and Linux environments, specific VM products and specific tools such as WinPE and SSH. One skilled in the art will recognize that the present invention is structured to be portable across operating systems and easily adaptable to different computing environments and other virtual machine technology.
    APPENDIX 1
    Machine XML Sample
    <?xml version=“1.0” encoding=“utf-8” ?>
    <VMwareESXVirtualMachine
    xmlns:xsd=“http://www.w3.org/2001/XMLSchema”
    xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
    xmlns=“http://schemas.platespin.com/athens/ws/”>
    <productVersion>Version5_1</productVersion>
    <productVersionAtCreation>Version5_1</productVersionAtCreation>
    <lastUpdateTime>2005-10-05T10:04:50.0619494-
    04:00</lastUpdateTime>
    <id>e6c2ef66-b9b9-4c63-bf16-6a57c66ace44</id>
    <manufacturer>VMware, Inc.</manufacturer>
    <model>VMware Virtual Platform</model>
    <smbiosUUID>0ed94d56-dcc2-83a3-404a-6602a5041d94</smbiosUUID>
    <serialNumber>VMware-56 4d d9 0e c2 dc a3 83-40 4a 66 02 a5 04
    1d 94</serialNumber>
    <operatingSystem xsi:type=“MicrosoftOperatingSystem”>
     <productVersion>Version5_1</productVersion>
    <productVersionAtCreation>Version5_1</productVersionAtCreation>
     <type>Windows2000</type>
     <hostName>vm3.platespin.com</hostName>
     <address>192.168.80.102</address>
     <version>5.0.2195</version>
    <networkConnections>
     <networkConnection>
      <name>Local Area Connection</name>
      <ipAddresses>
       <ipAddress>
        <address>192.168.80.102</address>
        <subnetMask>255.255.255.0</subnetMask>
       </ipAddress>
      </ipAddresses>
      <macAddress>00-0C-29-04-1D-94</macAddress>
      <dhcpEnabled>false</dhcpEnabled>
      <DefaultGateways>192.168.80.1</DefaultGateways>
      <DnsServers>192.168.220.10</DnsServers>
      <DnsServers>10.10.220.10</DnsServers>
      <WinsServers>192.168.50.66</WinsServers>
      <WinsServers>127.0.0.0</WinsServers>
      <peerDns>false</peerDns>
     </networkConnection>
    </networkConnections>
    <volumes>
     <volume>
      <fileSystem>NTFS</fileSystem>
      <size>3133796352</size>
      <freeSpace>1624932352</freeSpace>
      <serialNumber>8062f759</serialNumber>
    <label />
      <mountPoints>C:</mountPoints>
      <partitions>\disk0\partition0\</partitions>
      <isDynamic>false</isDynamic>
      <isCompressed>false</isCompressed>
     </volume>
     <volume>
      <fileSystem>NTFS</fileSystem>
      <size>535805440</size>
      <freeSpace>530402816</freeSpace>
      <serialNumber>581d5335</serialNumber>
      <label>Compressed</label>
      <mountPoints>D:</mountPoints>
      <partitions>\disk1\partition0\</partitions>
       <isDynamic>false</isDynamic>
       <isCompressed>true</isCompressed>
     </volume>
    </volumes>
    <installedPrograms>
     <installedProgram>
      <displayName>WebFldrs</displayName>
      <size>2556</size>
      <version>9.50.7522</version>
      <category>SystemComponent</category>
     </installedProgram>
    </installedPrograms>
    <acpiSupported>true</acpiSupported>
    <domain>PSACME</domain>
    <servicePack>4.0</servicePack>
    <windowsDirectory>C:\winnt</windowsDirectory>
    <description />
    <pageFiles>
     <pageFile>
      <location>C:\pagefile.sys</location>
      <maxSize>805306368</maxSize>
     </pageFile>
    </pageFiles>
    <hardwareProfile>1</hardwareProfile>
    <languageType>English</languageType>
    <systemFileList>
     <systemFileInfo>
      <fileName>ntoskrnl.exe</fileName>
      <internalName>ntoskrnl.exe</internalName>
      <companyName>Microsoft Corporation</companyName>
      <productVersion>5.00.2195.6717</productVersion>
      <languageType>English</languageType>
     </systemFileInfo>
     <systemFileInfo>
      <fileName>ntkrnlpa.exe</fileName>
      <internalName>ntkrnlpa.exe</internalName>
      <companyName>Microsoft Corporation</companyName>
      <productVersion>5.00.2195.6717</productVersion>
      <languageType>English</languageType>
     </systemFileInfo>
     <systemFileInfo>
      <fileName>hal.dll</fileName>
      <internalName>halaacpi.dll</internalName>
      <companyName>Microsoft Corporation</companyName>
      <productVersion>5.00.2195.6691</productVersion>
      <languageType>English</languageType>
    </systemFileInfo>
    </systemFileList>
     <windowsServices>
      <windowsService>
      <name>Abiosdsk</name>
      <description />
      <displayName>Abiosdsk</displayName>
      <status>Stopped</status>
      <startMode>Disabled</startMode>
      <type>KernelDriver</type>
      <pathToExecutable />
     </windowsService>
     <windowsService>
      <name>abp480n5</name>
      <description />
      <displayName>abp480n5</displayName>
       <status>Stopped</status>
       <startMode>Disabled</startMode>
       <type>KernelDriver</type>
       <pathToExecutable />
     </windowsService>
    - <!-- removed some for clarity -->
    </windowsServices>
    <controlSet>1</controlSet>
    </operatingSystem>
    <memory>268435456</memory>
    <status>Running</status>
    <components>
     <component xsi:type=“NetworkAdapter”>
      <manufacturer>Advanced Micro Devices (AMD)</manufacturer>
      <model>AMD PCNET Family PCI Ethernet Adapter</model>
      <deviceId>0</deviceId>
       <pnpId>PCI\
       VEN_1022&DEV_2000&SUBSYS_20001022&REV_10\
       3&61AAA01&0&88</pnpId>
       <macAddress>00-0C-29-04-1D-94</macAddress>
     </component>
     <component xsi:type=“DiskDrive”>
      <manufacturer>(Standard disk drives)</manufacturer>
      <model>VMware Virtual disk SCSI Disk Device</model>
      <deviceId>\\.\PHYSICALDRIVE0</deviceId>
      <pnpId>SCSI\
        DISK&VEN_VMWARE&PROD_VIRTUAL_DISK&REV_1.0\
        4&5FCAAFC&0&000</pnpId>
      <size>3142056960</size>
      <type>SCSI</type>
     <partitions>
      <partition>
       <name>\disk0\partition0\</name>
       <size>3133799424</size>
       <startingOffset>32256</startingOffset>
       <active>true</active>
       <partitionType>7</partitionType>
       <primary>true</primary>
      </partition>
     </partitions>
    </component>
    <component xsi:type=“DiskDrive”>
     <manufacturer>(Standard disk drives)</manufacturer>
     <model>VMware Virtual disk SCSI Disk Device</model>
     <deviceId>\\.\PHYSICALDRIVE1</deviceId>
     <pnpId>SCSI\
      DISK&VEN_VMWARE&PROD_VIRTUAL_DISK&REV_1.0\
      4&5FCAAFC&0&010</pnpId>
     <size>536870912</size>
     <type>SCSI</type>
     <partitions>
      <partition>
       <name>\disk1\partition0\</name>
       <size>535805952</size>
       <startingOffset>16384</startingOffset>
       <active>false</active>
       <partitionType>7</partitionType>
       <primary>true</primary>
     </partition>
    </partitions>
    </component>
    <component xsi:type=“Processor”>
     <manufacturer>GenuineIntel</manufacturer>
     <model>Intel(R) Xeon(TM) CPU 3.06GHz</model>
     <deviceId>CPU0</deviceId>
     <speed>3059</speed>
    </component>
    <component xsi:type=“ScsiRaidController”>
     <manufacturer>BusLogic</manufacturer>
     <model>BusLogic MultiMaster PCI SCSI Host Adapter</model>
     <deviceId>PCI\
      VEN_104B&DEV_1040&SUBSYS_1040104B&REV_01\
      3&61AAA01&0&80</deviceId>
     <pnpId>PCI\
      VEN_104B&DEV_1040&SUBSYS_1040104B&REV_01\
      3&61AAA01&0&80</pnpId>
     <driverName>buslogic</driverName>
    </component>
    </components>
    <role>None</role>
    <PlateSpinDiscovered>true</PlateSpinDiscovered>
    <operatingSystemType>Windows2000</operatingSystemType>
    <numberOfCpus>1</numberOfCpus>
    <cpuMin>1</cpuMin>
    <cpuMax>1</cpuMax>
    </VMwareESXVirtualMachine>

Claims (24)

1. A system for remotely monitoring usage of machines in a data center and suggesting conversions between machines to make efficient use of resources in said data center, said system comprising:
a) a data collection engine; and
b) an optimization engine operatively coupled to said data collection engine.
2. The system of claim 1 wherein said system is operatively coupled to a machine conversion engine for the purpose of executing a conversion remotely and automatically.
3. The system of claim 1 further comprising a machine conversion engine and a job management engine operatively coupled to each of said data collection engine and said optimization engine.
4. The system of claim 1 wherein said data collection engine comprises means for collecting data and storing it in a database and means for collecting data in real time and presenting it to a user via a graphical interface.
5. The system of claim 1 wherein said data collection engine comprises a web services interface, said interface comprising an inventory module, a performance module and an analysis module.
6. The system of claim 5 wherein said inventory module comprises means for collecting information on the configuration of said machines and storing the same in a database.
7. The system of claim 5 wherein said performance module comprises means for extracting performance information from a database of information collected by said data collection engine and means for providing it to a requester.
8. The system of claim 5 wherein said analysis module comprises means for examining possible conversions between machines and means for determining the viability of a conversion.
9. The optimization engine of claim 1 wherein said optimization engine utilizes one or more analysis modules to provide suggestions on converting machines.
10. The optimization engine of claim 9 wherein said analysis module is an expert system.
11. The optimization engine of claim 9 wherein said analysis module comprises means for utilizing bin packing.
12. The optimization engine of claim 9 wherein said analysis module is a neural network.
13. The optimization engine of claim 9 wherein said analysis module comprises means for utilizing fuzzy logic.
14. The optimization engine of claim 9 wherein said analysis module comprises means for accepting analysis parameters from a user.
15. A method for remotely monitoring usage of machines in a data center to make efficient use of resources in the data center, the method comprising the steps of:
collecting performance and machine data;
analyzing the data; and
suggesting conversions between machines.
16. The method of claim 15 further comprising the step of executing a conversion remotely and automatically.
17. The method of claim 15 further comprising the step of storing said data in a database and presenting it to a user via a graphical interface.
18. The method of claim 15 further comprising the step of collecting said data in real time and presenting it to a user via a graphical interface.
19. The method of claim 15 wherein said analyzing utilizes an expert system.
20. The method of claim 15 wherein said analyzing utilizes bin packing.
21. The method of claim 15 wherein said analyzing utilizes a neural network.
22. The method of claim 15 wherein said analyzing utilizes fuzzy logic.
23. The method of claim 15 further comprising the step of accepting analysis parameters from a user.
24. A computer readable medium, said medium comprising instructions for remotely monitoring usage of machines in a data center to make efficient use of resources in the data center, said instructions implementing the steps of:
collecting performance and machine data;
analyzing the data; and
suggesting conversions between machines.
US11/257,008 2004-10-26 2005-10-25 System for optimizing server use in a data center Abandoned US20060107087A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CA2486103 2004-10-26
CA002486103A CA2486103A1 (en) 2004-10-26 2004-10-26 System and method for autonomic optimization of physical and virtual resource use in a data center

Publications (1)

Publication Number Publication Date
US20060107087A1 true US20060107087A1 (en) 2006-05-18

Family

ID=36207312

Family Applications (2)

Application Number Title Priority Date Filing Date
US11/257,009 Active 2029-08-28 US8606886B2 (en) 2004-10-26 2005-10-25 System for conversion between physical machines, virtual machines and machine images
US11/257,008 Abandoned US20060107087A1 (en) 2004-10-26 2005-10-25 System for optimizing server use in a data center

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US11/257,009 Active 2029-08-28 US8606886B2 (en) 2004-10-26 2005-10-25 System for conversion between physical machines, virtual machines and machine images

Country Status (2)

Country Link
US (2) US8606886B2 (en)
CA (1) CA2486103A1 (en)

Cited By (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070258388A1 (en) * 2006-05-02 2007-11-08 Patrick Glen Bose Virtual server cloning
US20070260721A1 (en) * 2006-05-02 2007-11-08 Patrick Glen Bose Physical server discovery and correlation
US20070276897A1 (en) * 2006-05-23 2007-11-29 Takashi Tameshige Method of deploying a production environment using a development environment
US20070299906A1 (en) * 2006-06-26 2007-12-27 Cisco Technology, Inc. Server change management
US20080033902A1 (en) * 2006-08-04 2008-02-07 Platespin Ltd A Method for Providing Live File Transfer Between Machines
WO2008014614A1 (en) * 2006-08-04 2008-02-07 Novell, Inc. A method for providing live file transfer between machines
US20080270460A1 (en) * 2007-04-27 2008-10-30 Hepner Daniel W Creating a data structure that specifies relationships between networked objects
US20090182812A1 (en) * 2008-01-14 2009-07-16 Paritosh Bajpay Method and apparatus for dynamic scaling of data center processor utilization
US20090235174A1 (en) * 2008-03-17 2009-09-17 Microsoft Corporation Virtualization of Groups of Devices
US20090240798A1 (en) * 2008-03-18 2009-09-24 Microsoft Corporation Resource Equalization for Inter- and Intra- Data Center Operations
US20090307094A1 (en) * 2008-06-04 2009-12-10 Microsoft Corporation Data center programming and application distribution interface
WO2009155680A1 (en) * 2008-06-25 2009-12-30 Novell, Inc. Copying workload files to a virtual disk
US20100005173A1 (en) * 2008-07-03 2010-01-07 International Business Machines Corporation Method, system and computer program product for server selection, application placement and consolidation
US20100131959A1 (en) * 2008-11-26 2010-05-27 Spiers Adam Z Proactive application workload management
US20100162241A1 (en) * 2008-12-19 2010-06-24 Fujitsu Limited Address assignment method, computer, and recording medium having program recorded therein
US20100228840A1 (en) * 2006-06-26 2010-09-09 Cisco Technology, Inc. Port pooling
US20100251253A1 (en) * 2009-03-31 2010-09-30 Microsoft Corporation Priority-based management of system load level
US20100318836A1 (en) * 2009-06-11 2010-12-16 Microsoft Corporation Monitoring and healing a computing system
US20110179162A1 (en) * 2010-01-15 2011-07-21 Mayo Mark G Managing Workloads and Hardware Resources in a Cloud Resource
WO2012125143A1 (en) * 2011-03-11 2012-09-20 Joyent, Inc. Systems and methods for transparently optimizing workloads
US20120254434A1 (en) * 2011-04-01 2012-10-04 Microsoft Corporation Placement goal-based database instance consolidation
US20120254435A1 (en) * 2011-04-01 2012-10-04 Microsoft Corporation Placement goal-based database instance dynamic consolidation
US20120259963A1 (en) * 2011-04-07 2012-10-11 Infosys Technologies Limited System and method for fast server consolidation
US8402228B2 (en) 2010-06-30 2013-03-19 International Business Machines Corporation Page buffering in a virtualized, memory sharing configuration
US20130139174A1 (en) * 2010-06-23 2013-05-30 International Business Machines Corporation Dynamic run time allocation of distributed jobs
US8468251B1 (en) 2011-12-29 2013-06-18 Joyent, Inc. Dynamic throttling of access to computing resources in multi-tenant systems
US8547379B2 (en) 2011-12-29 2013-10-01 Joyent, Inc. Systems, methods, and media for generating multidimensional heat maps
US8555276B2 (en) 2011-03-11 2013-10-08 Joyent, Inc. Systems and methods for transparently optimizing workloads
US8677359B1 (en) 2013-03-14 2014-03-18 Joyent, Inc. Compute-centric object stores and methods of use
US20140089477A1 (en) * 2012-09-27 2014-03-27 Hon Hai Precision Industry Co., Ltd. System and method for monitoring storage machines
US8775485B1 (en) 2013-03-15 2014-07-08 Joyent, Inc. Object store management operations within compute-centric object stores
US8782224B2 (en) 2011-12-29 2014-07-15 Joyent, Inc. Systems and methods for time-based dynamic allocation of resource management
US8793688B1 (en) 2013-03-15 2014-07-29 Joyent, Inc. Systems and methods for double hulled virtualization operations
US8826279B1 (en) 2013-03-14 2014-09-02 Joyent, Inc. Instruction set architecture for compute-based object stores
US8881279B2 (en) 2013-03-14 2014-11-04 Joyent, Inc. Systems and methods for zone-based intrusion detection
US20150007174A1 (en) * 2013-06-28 2015-01-01 Vmware, Inc. Single click host maintenance
US8943284B2 (en) 2013-03-14 2015-01-27 Joyent, Inc. Systems and methods for integrating compute resources in a storage area network
US9081747B1 (en) 2012-03-06 2015-07-14 Big Bang Llc Computer program deployment to one or more target devices
US9092238B2 (en) 2013-03-15 2015-07-28 Joyent, Inc. Versioning schemes for compute-centric object stores
US9104456B2 (en) 2013-03-14 2015-08-11 Joyent, Inc. Zone management of compute-centric object stores
US9729464B1 (en) * 2010-06-23 2017-08-08 Brocade Communications Systems, Inc. Method and apparatus for provisioning of resources to support applications and their varying demands
US9798573B1 (en) * 2009-05-22 2017-10-24 Vmware, Inc. Physical to virtual scheduling system and method
US9912570B2 (en) 2013-10-25 2018-03-06 Brocade Communications Systems LLC Dynamic cloning of application infrastructures
US10771329B1 (en) * 2014-03-24 2020-09-08 Amazon Technologies, Inc. Automated service tuning
US10871997B2 (en) 2014-12-09 2020-12-22 Cirba Ip Inc. System and method for routing computing workloads based on proximity
US10951459B2 (en) 2006-04-21 2021-03-16 Cirba Ip Inc. Method and system for determining compatibility of computer systems
US11093154B1 (en) * 2009-05-20 2021-08-17 Open Invention Network Llc Application and system settings configuration filtering during physical to virtual hard disk conversion
US11182713B2 (en) 2015-01-24 2021-11-23 Vmware, Inc. Methods and systems to optimize operating system license costs in a virtual data center
US11494081B2 (en) * 2020-10-09 2022-11-08 Seagate Technology Llc System and method for using telemetry data to change operation of storage middleware client of a data center
WO2023158445A1 (en) * 2022-02-16 2023-08-24 Nubix, Inc. Method for deploying containerized security technologies on embedded devices
US20230344902A1 (en) * 2022-04-20 2023-10-26 Dell Products L.P. Methods and systems for dynamically adjusting data chunk sizes copied over a network
US11874692B2 (en) 2019-08-16 2024-01-16 Nubix, Inc. Method for deploying containerized security technologies on embedded devices
US11875167B2 (en) 2020-03-23 2024-01-16 Nubix, Inc. Method for deploying containerized protocols on very small devices

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006096683A1 (en) * 2005-03-07 2006-09-14 Computer Associates Think, Inc. System and method for providing data manipulation using web services
US7653794B2 (en) * 2006-05-08 2010-01-26 Microsoft Corporation Converting physical machines to virtual machines
US8239646B2 (en) 2007-07-31 2012-08-07 Vmware, Inc. Online virtual machine disk migration
CA2697965C (en) * 2007-08-31 2018-06-12 Cirba Inc. Method and system for evaluating virtualized environments
US8245217B2 (en) 2007-10-12 2012-08-14 Microsoft Corporation Management of software and operating system updates required for the process of creating a virtual machine facsimile of an existing physical or virtual machine
US8677352B2 (en) * 2007-10-31 2014-03-18 Vmware, Inc. Interchangeable guest and host execution environments
US8208637B2 (en) * 2007-12-17 2012-06-26 Microsoft Corporation Migration of computer secrets
US8219592B2 (en) * 2008-02-29 2012-07-10 International Business Machines Corporation Method and system for using overlay manifests to encode differences between virtual machine images
US7856440B2 (en) * 2008-02-29 2010-12-21 International Business Machines Corporation Method and system for separating content identifiers from content reconstitution information in virtual machine images
US7996414B2 (en) * 2008-02-29 2011-08-09 International Business Machines Corporation Method and system for separating file system metadata from other metadata in virtual machine image format
US7856439B2 (en) * 2008-02-29 2010-12-21 International Business Machines Corporation Method and system for using semantic information to improve virtual machine image management
US9015705B2 (en) * 2008-03-28 2015-04-21 International Business Machines Corporation Computing device having a migrated virtual machine accessing physical storage space on another computing device
US8359593B2 (en) * 2008-04-21 2013-01-22 Vmware, Inc. Computer machine migration of file system images using a redo-log file
WO2010009909A1 (en) * 2008-07-21 2010-01-28 International Business Machines Corporation A method and system for improvements in or relating to off-line virtual environments
US8453144B1 (en) 2008-09-23 2013-05-28 Gogrid, LLC System and method for adapting a system configuration using an adaptive library
US8572608B2 (en) * 2008-10-22 2013-10-29 Vmware, Inc. Methods and systems for converting a related group of physical machines to virtual machines
JP2010108409A (en) * 2008-10-31 2010-05-13 Hitachi Ltd Storage management method and management server
US8819113B2 (en) * 2009-03-02 2014-08-26 Kaseya International Limited Remote provisioning of virtual machines
US8812451B2 (en) 2009-03-11 2014-08-19 Microsoft Corporation Programming model for synchronizing browser caches across devices and web services
US9680964B2 (en) * 2009-03-11 2017-06-13 Microsoft Technology Licensing, Llc Programming model for installing and distributing occasionally connected applications
US8387045B2 (en) * 2009-03-12 2013-02-26 International Business Machines Corporation Cloning image creation using virtual machine environment
DE102009053643A1 (en) * 2009-11-17 2011-05-19 Sinitec Vertriebsgesellschaft Mbh Method for the migration of data and computer program for carrying out a corresponding method
US8555017B2 (en) * 2010-02-22 2013-10-08 Red Hat, Inc. In-place physical to virtual (P2V) migration of an existing operating system during installation of a new operating system
US8505003B2 (en) * 2010-04-28 2013-08-06 Novell, Inc. System and method for upgrading kernels in cloud computing environments
US8601226B1 (en) 2010-05-20 2013-12-03 Gogrid, LLC System and method for storing server images in a hosting system
US20120144390A1 (en) * 2010-12-07 2012-06-07 Microsoft Corporation Customized computer image preparation and deployment including virtual machine mode
US9329886B2 (en) 2010-12-10 2016-05-03 Amazon Technologies, Inc. Virtual machine morphing for heterogeneous migration environments
US9288117B1 (en) 2011-02-08 2016-03-15 Gogrid, LLC System and method for managing virtual and dedicated servers
US8880657B1 (en) 2011-06-28 2014-11-04 Gogrid, LLC System and method for configuring and managing virtual grids
TWI515658B (en) 2011-12-07 2016-01-01 萬國商業機器公司 Method and system for creating a virtual appliance
US8762992B2 (en) 2011-12-22 2014-06-24 Symantec Corporation Systems and methods for protecting virtual machines during physical-to-virtual conversions
TWI610166B (en) * 2012-06-04 2018-01-01 飛康國際網路科技股份有限公司 Automated disaster recovery and data migration system and method
CN103731451B (en) * 2012-10-12 2018-10-19 腾讯科技(深圳)有限公司 A kind of method and system that file uploads
US9575773B2 (en) * 2013-10-23 2017-02-21 Vmware, Inc. Monitoring multiple remote desktops on a wireless device
US9733918B2 (en) 2015-02-27 2017-08-15 International Business Machines Corporation Using cloud patterns for installation on unmanaged physical machines and appliances
US20160274930A1 (en) * 2015-03-16 2016-09-22 Honeywell International Inc. Method and apparatus for an on-process migration in a virtual environment within an industrial process control and automation system
TWI681299B (en) * 2017-08-23 2020-01-01 中華電信股份有限公司 System and method for automatic virtual machine conversion and environment setup across heterogeneous hypervisors
JP2019101553A (en) * 2017-11-29 2019-06-24 株式会社Preferred Networks Information processing system, server device, information processing method and program
CN111597101B (en) * 2019-02-21 2023-09-08 上海哔哩哔哩科技有限公司 SDK access state detection method, computer equipment and computer readable storage medium

Citations (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404527A (en) * 1992-12-31 1995-04-04 Unisys Corporation System and method for remote program load
US5881131A (en) * 1993-11-16 1999-03-09 Bell Atlantic Network Services, Inc. Analysis and validation system for provisioning network related facilities
US5909681A (en) * 1996-03-25 1999-06-01 Torrent Systems, Inc. Computer system and computerized method for partitioning data for parallel processing
US6298308B1 (en) * 1999-05-20 2001-10-02 Reid Asset Management Company Diagnostic network with automated proactive local experts
US20010031454A1 (en) * 1997-05-30 2001-10-18 Alex Mintz Multi-functional communication and aggregation platform
US6356915B1 (en) * 1999-02-22 2002-03-12 Starbase Corp. Installable file system having virtual file system drive, virtual device driver, and virtual disks
US6400996B1 (en) * 1999-02-01 2002-06-04 Steven M. Hoffberg Adaptive pattern recognition based control system and method
US20030065663A1 (en) * 2001-09-12 2003-04-03 Chu Chengwen Robert Computer-implemented knowledge repository interface system and method
US20030191832A1 (en) * 1999-06-01 2003-10-09 Ramakrishna Satyavolu Method and apparatus for controlled establishment of a turnkey system providing a centralized data aggregation and summary capability to third party entities
US6654830B1 (en) * 1999-03-25 2003-11-25 Dell Products L.P. Method and system for managing data migration for a storage system
US20030220740A1 (en) * 2000-04-18 2003-11-27 Intriligator Devrie S. Space weather prediction system and method
US6658465B1 (en) * 1997-08-25 2003-12-02 Intel Corporation Method and apparatus for monitoring and controlling programs in a network
US20040010787A1 (en) * 2002-07-11 2004-01-15 Traut Eric P. Method for forking or migrating a virtual machine
US20040049524A1 (en) * 2000-08-25 2004-03-11 Masatoshi Toyota Remote control server,center server, and system constituted them
US6714980B1 (en) * 2000-02-11 2004-03-30 Terraspring, Inc. Backup and restore of data associated with a host in a dynamically changing virtual server farm without involvement of a server that uses an associated storage device
US6763458B1 (en) * 1999-09-27 2004-07-13 Captaris, Inc. System and method for installing and servicing an operating system in a computer or information appliance
US20040193064A1 (en) * 2000-05-30 2004-09-30 Vladimir Shusterman Multi-scale analysis and representation of physiological and health data
US6802062B1 (en) * 1997-04-01 2004-10-05 Hitachi, Ltd. System with virtual machine movable between virtual machine systems and control method
US6854009B1 (en) * 1999-12-22 2005-02-08 Tacit Networks, Inc. Networked computer system
US20050120359A1 (en) * 2002-02-27 2005-06-02 Koichiro Shoji Computer file system driver control method, program thereof, and program recording medium
US6920458B1 (en) * 2000-09-22 2005-07-19 Sas Institute Inc. Model repository
US20050165731A1 (en) * 2002-08-20 2005-07-28 Tokyo Electron Limited Method for processing data based on the data context
US6941365B2 (en) * 2000-07-28 2005-09-06 Lockheed Martin Corporation Computer resource allocation layout description
US20050198303A1 (en) * 2004-01-02 2005-09-08 Robert Knauerhase Dynamic virtual machine service provider allocation
US20060005189A1 (en) * 2004-06-30 2006-01-05 Microsoft Corporation Systems and methods for voluntary migration of a virtual machine between hosts with common storage connectivity
US20060010176A1 (en) * 2004-06-16 2006-01-12 Armington John P Systems and methods for migrating a server from one physical platform to a different physical platform
US6990667B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Server-independent object positioning for load balancing drives and servers
US20060069761A1 (en) * 2004-09-14 2006-03-30 Dell Products L.P. System and method for load balancing virtual machines in a computer network
US7146353B2 (en) * 2003-07-22 2006-12-05 Hewlett-Packard Development Company, L.P. Resource allocation for multiple applications
US7203944B1 (en) * 2003-07-09 2007-04-10 Veritas Operating Corporation Migrating virtual machines among computer systems to balance load caused by virtual machines
US7219300B2 (en) * 2002-09-30 2007-05-15 Sanavigator, Inc. Method and system for generating a network monitoring display with animated utilization information
US20080066004A1 (en) * 2004-05-04 2008-03-13 Fisher-Rosemount Systems, Inc. Process Plant User Interface System Having Customized Process Graphic Display Layers in an Integrated Environment
US20080177821A1 (en) * 2002-08-06 2008-07-24 Tsao Sheng Tai Ted Concurrent web based multi-task support for control management system
US7484208B1 (en) * 2002-12-12 2009-01-27 Michael Nelson Virtual machine migration
US7577959B2 (en) * 2004-06-24 2009-08-18 International Business Machines Corporation Providing on-demand capabilities using virtual machines and clustering processes
US7577722B1 (en) * 2002-04-05 2009-08-18 Vmware, Inc. Provisioning of computer systems using virtual machines
US7693991B2 (en) * 2004-01-16 2010-04-06 International Business Machines Corporation Virtual clustering and load balancing servers
US20110055738A1 (en) * 2002-12-30 2011-03-03 Frank Damaschke Configurable and Extensible User Interface
US7970903B2 (en) * 2007-08-20 2011-06-28 Hitachi, Ltd. Storage and server provisioning for virtualized and geographically dispersed data centers

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835953A (en) * 1994-10-13 1998-11-10 Vinca Corporation Backup system that takes a snapshot of the locations in a mass storage device that has been identified for updating prior to updating
US6279001B1 (en) * 1998-05-29 2001-08-21 Webspective Software, Inc. Web service
US6889376B1 (en) * 1999-05-12 2005-05-03 Treetop Ventures, Llc Method for migrating from one computer to another
US7213065B2 (en) 2001-11-08 2007-05-01 Racemi, Inc. System and method for dynamic server allocation and provisioning
US7565495B2 (en) 2002-04-03 2009-07-21 Symantec Corporation Using disassociated images for computer and storage resource management
US20030192039A1 (en) 2002-04-05 2003-10-09 Mcconnell Richard G. Configuration management system & method
US8209680B1 (en) * 2003-04-11 2012-06-26 Vmware, Inc. System and method for disk imaging on diverse computers

Patent Citations (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404527A (en) * 1992-12-31 1995-04-04 Unisys Corporation System and method for remote program load
US5881131A (en) * 1993-11-16 1999-03-09 Bell Atlantic Network Services, Inc. Analysis and validation system for provisioning network related facilities
US5909681A (en) * 1996-03-25 1999-06-01 Torrent Systems, Inc. Computer system and computerized method for partitioning data for parallel processing
US6802062B1 (en) * 1997-04-01 2004-10-05 Hitachi, Ltd. System with virtual machine movable between virtual machine systems and control method
US20010031454A1 (en) * 1997-05-30 2001-10-18 Alex Mintz Multi-functional communication and aggregation platform
US6658465B1 (en) * 1997-08-25 2003-12-02 Intel Corporation Method and apparatus for monitoring and controlling programs in a network
US6400996B1 (en) * 1999-02-01 2002-06-04 Steven M. Hoffberg Adaptive pattern recognition based control system and method
US6356915B1 (en) * 1999-02-22 2002-03-12 Starbase Corp. Installable file system having virtual file system drive, virtual device driver, and virtual disks
US6654830B1 (en) * 1999-03-25 2003-11-25 Dell Products L.P. Method and system for managing data migration for a storage system
US6298308B1 (en) * 1999-05-20 2001-10-02 Reid Asset Management Company Diagnostic network with automated proactive local experts
US20030191832A1 (en) * 1999-06-01 2003-10-09 Ramakrishna Satyavolu Method and apparatus for controlled establishment of a turnkey system providing a centralized data aggregation and summary capability to third party entities
US6763458B1 (en) * 1999-09-27 2004-07-13 Captaris, Inc. System and method for installing and servicing an operating system in a computer or information appliance
US6854009B1 (en) * 1999-12-22 2005-02-08 Tacit Networks, Inc. Networked computer system
US6714980B1 (en) * 2000-02-11 2004-03-30 Terraspring, Inc. Backup and restore of data associated with a host in a dynamically changing virtual server farm without involvement of a server that uses an associated storage device
US20030220740A1 (en) * 2000-04-18 2003-11-27 Intriligator Devrie S. Space weather prediction system and method
US6816786B2 (en) * 2000-04-18 2004-11-09 Devrie S Intriligator Space weather prediction system and method
US20040193064A1 (en) * 2000-05-30 2004-09-30 Vladimir Shusterman Multi-scale analysis and representation of physiological and health data
US6941365B2 (en) * 2000-07-28 2005-09-06 Lockheed Martin Corporation Computer resource allocation layout description
US20040049524A1 (en) * 2000-08-25 2004-03-11 Masatoshi Toyota Remote control server,center server, and system constituted them
US6920458B1 (en) * 2000-09-22 2005-07-19 Sas Institute Inc. Model repository
US6990667B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Server-independent object positioning for load balancing drives and servers
US20030065663A1 (en) * 2001-09-12 2003-04-03 Chu Chengwen Robert Computer-implemented knowledge repository interface system and method
US20050120359A1 (en) * 2002-02-27 2005-06-02 Koichiro Shoji Computer file system driver control method, program thereof, and program recording medium
US7577722B1 (en) * 2002-04-05 2009-08-18 Vmware, Inc. Provisioning of computer systems using virtual machines
US20040010787A1 (en) * 2002-07-11 2004-01-15 Traut Eric P. Method for forking or migrating a virtual machine
US20080177821A1 (en) * 2002-08-06 2008-07-24 Tsao Sheng Tai Ted Concurrent web based multi-task support for control management system
US20050165731A1 (en) * 2002-08-20 2005-07-28 Tokyo Electron Limited Method for processing data based on the data context
US7219300B2 (en) * 2002-09-30 2007-05-15 Sanavigator, Inc. Method and system for generating a network monitoring display with animated utilization information
US7484208B1 (en) * 2002-12-12 2009-01-27 Michael Nelson Virtual machine migration
US20110055738A1 (en) * 2002-12-30 2011-03-03 Frank Damaschke Configurable and Extensible User Interface
US7203944B1 (en) * 2003-07-09 2007-04-10 Veritas Operating Corporation Migrating virtual machines among computer systems to balance load caused by virtual machines
US7146353B2 (en) * 2003-07-22 2006-12-05 Hewlett-Packard Development Company, L.P. Resource allocation for multiple applications
US20050198303A1 (en) * 2004-01-02 2005-09-08 Robert Knauerhase Dynamic virtual machine service provider allocation
US7693991B2 (en) * 2004-01-16 2010-04-06 International Business Machines Corporation Virtual clustering and load balancing servers
US20080066004A1 (en) * 2004-05-04 2008-03-13 Fisher-Rosemount Systems, Inc. Process Plant User Interface System Having Customized Process Graphic Display Layers in an Integrated Environment
US20060010176A1 (en) * 2004-06-16 2006-01-12 Armington John P Systems and methods for migrating a server from one physical platform to a different physical platform
US7577959B2 (en) * 2004-06-24 2009-08-18 International Business Machines Corporation Providing on-demand capabilities using virtual machines and clustering processes
US20060005189A1 (en) * 2004-06-30 2006-01-05 Microsoft Corporation Systems and methods for voluntary migration of a virtual machine between hosts with common storage connectivity
US7383405B2 (en) * 2004-06-30 2008-06-03 Microsoft Corporation Systems and methods for voluntary migration of a virtual machine between hosts with common storage connectivity
US20060069761A1 (en) * 2004-09-14 2006-03-30 Dell Products L.P. System and method for load balancing virtual machines in a computer network
US7970903B2 (en) * 2007-08-20 2011-06-28 Hitachi, Ltd. Storage and server provisioning for virtualized and geographically dispersed data centers

Cited By (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10951459B2 (en) 2006-04-21 2021-03-16 Cirba Ip Inc. Method and system for determining compatibility of computer systems
US20070258388A1 (en) * 2006-05-02 2007-11-08 Patrick Glen Bose Virtual server cloning
US20070260721A1 (en) * 2006-05-02 2007-11-08 Patrick Glen Bose Physical server discovery and correlation
US8176153B2 (en) * 2006-05-02 2012-05-08 Cisco Technology, Inc. Virtual server cloning
US8909758B2 (en) 2006-05-02 2014-12-09 Cisco Technology, Inc. Physical server discovery and correlation
US20070276897A1 (en) * 2006-05-23 2007-11-29 Takashi Tameshige Method of deploying a production environment using a development environment
US8554890B2 (en) * 2006-05-23 2013-10-08 Hitachi, Ltd. Method of deploying a production environment using a development environment
US8483087B2 (en) 2006-06-26 2013-07-09 Cisco Technology, Inc. Port pooling
US20070299906A1 (en) * 2006-06-26 2007-12-27 Cisco Technology, Inc. Server change management
US9338046B2 (en) 2006-06-26 2016-05-10 Cisco Technology, Inc. Port pooling
US9769253B2 (en) 2006-06-26 2017-09-19 Cisco Technology, Inc. Port pooling
US8442958B2 (en) 2006-06-26 2013-05-14 Cisco Technology, Inc. Server change management
US20100228840A1 (en) * 2006-06-26 2010-09-09 Cisco Technology, Inc. Port pooling
US20080033902A1 (en) * 2006-08-04 2008-02-07 Platespin Ltd A Method for Providing Live File Transfer Between Machines
WO2008014614A1 (en) * 2006-08-04 2008-02-07 Novell, Inc. A method for providing live file transfer between machines
US20080270460A1 (en) * 2007-04-27 2008-10-30 Hepner Daniel W Creating a data structure that specifies relationships between networked objects
US20090182812A1 (en) * 2008-01-14 2009-07-16 Paritosh Bajpay Method and apparatus for dynamic scaling of data center processor utilization
US8954551B2 (en) 2008-03-17 2015-02-10 Microsoft Corporation Virtualization of groups of devices
US20090235174A1 (en) * 2008-03-17 2009-09-17 Microsoft Corporation Virtualization of Groups of Devices
US8171115B2 (en) 2008-03-18 2012-05-01 Microsoft Corporation Resource equalization for inter- and intra- data center operations
US20090240798A1 (en) * 2008-03-18 2009-09-24 Microsoft Corporation Resource Equalization for Inter- and Intra- Data Center Operations
US8650530B2 (en) * 2008-06-04 2014-02-11 Microsoft Corporation Data center programming and application distribution interface
US20090307094A1 (en) * 2008-06-04 2009-12-10 Microsoft Corporation Data center programming and application distribution interface
US8196154B2 (en) 2008-06-25 2012-06-05 Novell, Inc. Copying workload files to a virtual disk
WO2009155680A1 (en) * 2008-06-25 2009-12-30 Novell, Inc. Copying workload files to a virtual disk
US7970905B2 (en) * 2008-07-03 2011-06-28 International Business Machines Corporation Method, system and computer program product for server selection, application placement and consolidation planning of information technology systems
US8244873B2 (en) 2008-07-03 2012-08-14 International Business Machines Corporation Method, system and computer program product for server selection, application placement and consolidation planning of information technology systems
US20110161470A1 (en) * 2008-07-03 2011-06-30 International Business Machines Corporation Method, System and Computer Program Product for Server Selection, Application Placement and Consolidation Planning of Information Technology Systems
US20100005173A1 (en) * 2008-07-03 2010-01-07 International Business Machines Corporation Method, system and computer program product for server selection, application placement and consolidation
US20100131959A1 (en) * 2008-11-26 2010-05-27 Spiers Adam Z Proactive application workload management
US8549517B2 (en) * 2008-12-19 2013-10-01 Fujitsu Limited Address assignment method, computer, and recording medium having program recorded therein
US20100162241A1 (en) * 2008-12-19 2010-06-24 Fujitsu Limited Address assignment method, computer, and recording medium having program recorded therein
US9274844B2 (en) 2009-03-31 2016-03-01 Microsoft Technology Licensing, Llc Priority-based management of system load level
US8595740B2 (en) 2009-03-31 2013-11-26 Microsoft Corporation Priority-based management of system load level
US20100251253A1 (en) * 2009-03-31 2010-09-30 Microsoft Corporation Priority-based management of system load level
US11644995B1 (en) 2009-05-20 2023-05-09 Philips North America Llc Application and system settings configuration filtering during physical to virtual hard disk conversion
US11093154B1 (en) * 2009-05-20 2021-08-17 Open Invention Network Llc Application and system settings configuration filtering during physical to virtual hard disk conversion
US9798573B1 (en) * 2009-05-22 2017-10-24 Vmware, Inc. Physical to virtual scheduling system and method
US10545788B2 (en) 2009-05-22 2020-01-28 Vmware, Inc. Physical to virtual scheduling system and method
US8375251B2 (en) 2009-06-11 2013-02-12 Microsoft Corporation Monitoring and healing a computing system
US20100318836A1 (en) * 2009-06-11 2010-12-16 Microsoft Corporation Monitoring and healing a computing system
US8346935B2 (en) 2010-01-15 2013-01-01 Joyent, Inc. Managing hardware resources by sending messages amongst servers in a data center
US20110179132A1 (en) * 2010-01-15 2011-07-21 Mayo Mark G Provisioning Server Resources in a Cloud Resource
US9021046B2 (en) 2010-01-15 2015-04-28 Joyent, Inc Provisioning server resources in a cloud resource
US20110179134A1 (en) * 2010-01-15 2011-07-21 Mayo Mark G Managing Hardware Resources by Sending Messages Amongst Servers in a Data Center
US20110179162A1 (en) * 2010-01-15 2011-07-21 Mayo Mark G Managing Workloads and Hardware Resources in a Cloud Resource
US8959217B2 (en) * 2010-01-15 2015-02-17 Joyent, Inc. Managing workloads and hardware resources in a cloud resource
US9729464B1 (en) * 2010-06-23 2017-08-08 Brocade Communications Systems, Inc. Method and apparatus for provisioning of resources to support applications and their varying demands
US10469400B2 (en) 2010-06-23 2019-11-05 Avago Technologies International Business Sales Pte. Limited Method and apparatus for provisioning of resources to support applications and their varying demands
US20130139174A1 (en) * 2010-06-23 2013-05-30 International Business Machines Corporation Dynamic run time allocation of distributed jobs
US9665401B2 (en) * 2010-06-23 2017-05-30 International Business Machines Corporation Dynamic run time allocation of distributed jobs
US8972669B2 (en) 2010-06-30 2015-03-03 International Business Machines Corporation Page buffering in a virtualized, memory sharing configuration
US8402228B2 (en) 2010-06-30 2013-03-19 International Business Machines Corporation Page buffering in a virtualized, memory sharing configuration
WO2012125143A1 (en) * 2011-03-11 2012-09-20 Joyent, Inc. Systems and methods for transparently optimizing workloads
US8789050B2 (en) 2011-03-11 2014-07-22 Joyent, Inc. Systems and methods for transparently optimizing workloads
US8555276B2 (en) 2011-03-11 2013-10-08 Joyent, Inc. Systems and methods for transparently optimizing workloads
US20120254434A1 (en) * 2011-04-01 2012-10-04 Microsoft Corporation Placement goal-based database instance consolidation
US20120254435A1 (en) * 2011-04-01 2012-10-04 Microsoft Corporation Placement goal-based database instance dynamic consolidation
US8667019B2 (en) * 2011-04-01 2014-03-04 Microsoft Corporation Placement goal-based database instance consolidation
US8667020B2 (en) * 2011-04-01 2014-03-04 Microsoft Corporation Placement goal-based database instance dynamic consolidation
US20120259963A1 (en) * 2011-04-07 2012-10-11 Infosys Technologies Limited System and method for fast server consolidation
US20140149566A1 (en) * 2011-04-07 2014-05-29 Infosys Limited System and method for determining optimal combinations
US9749183B2 (en) * 2011-04-07 2017-08-29 Infosys Limited System and method for determining optimal combinations of computer servers
US8595363B2 (en) * 2011-04-07 2013-11-26 Infosys Limited System and method for fast server consolidation
US8547379B2 (en) 2011-12-29 2013-10-01 Joyent, Inc. Systems, methods, and media for generating multidimensional heat maps
US8782224B2 (en) 2011-12-29 2014-07-15 Joyent, Inc. Systems and methods for time-based dynamic allocation of resource management
US8468251B1 (en) 2011-12-29 2013-06-18 Joyent, Inc. Dynamic throttling of access to computing resources in multi-tenant systems
US9081747B1 (en) 2012-03-06 2015-07-14 Big Bang Llc Computer program deployment to one or more target devices
US20140089477A1 (en) * 2012-09-27 2014-03-27 Hon Hai Precision Industry Co., Ltd. System and method for monitoring storage machines
US8943284B2 (en) 2013-03-14 2015-01-27 Joyent, Inc. Systems and methods for integrating compute resources in a storage area network
US9104456B2 (en) 2013-03-14 2015-08-11 Joyent, Inc. Zone management of compute-centric object stores
US8881279B2 (en) 2013-03-14 2014-11-04 Joyent, Inc. Systems and methods for zone-based intrusion detection
US9582327B2 (en) 2013-03-14 2017-02-28 Joyent, Inc. Compute-centric object stores and methods of use
US8826279B1 (en) 2013-03-14 2014-09-02 Joyent, Inc. Instruction set architecture for compute-based object stores
US8677359B1 (en) 2013-03-14 2014-03-18 Joyent, Inc. Compute-centric object stores and methods of use
US9075818B2 (en) 2013-03-15 2015-07-07 Joyent, Inc. Object store management operations within compute-centric object stores
US9792290B2 (en) 2013-03-15 2017-10-17 Joyent, Inc. Object store management operations within compute-centric object stores
US8793688B1 (en) 2013-03-15 2014-07-29 Joyent, Inc. Systems and methods for double hulled virtualization operations
US8898205B2 (en) 2013-03-15 2014-11-25 Joyent, Inc. Object store management operations within compute-centric object stores
US8775485B1 (en) 2013-03-15 2014-07-08 Joyent, Inc. Object store management operations within compute-centric object stores
US9092238B2 (en) 2013-03-15 2015-07-28 Joyent, Inc. Versioning schemes for compute-centric object stores
US9841983B2 (en) * 2013-06-28 2017-12-12 Vmware, Inc. Single click host maintenance
US20150007174A1 (en) * 2013-06-28 2015-01-01 Vmware, Inc. Single click host maintenance
US11431603B2 (en) 2013-10-25 2022-08-30 Avago Technologies International Sales Pte. Limited Dynamic cloning of application infrastructures
US10484262B2 (en) 2013-10-25 2019-11-19 Avago Technologies International Sales Pte. Limited Dynamic cloning of application infrastructures
US9912570B2 (en) 2013-10-25 2018-03-06 Brocade Communications Systems LLC Dynamic cloning of application infrastructures
US10771329B1 (en) * 2014-03-24 2020-09-08 Amazon Technologies, Inc. Automated service tuning
US10871997B2 (en) 2014-12-09 2020-12-22 Cirba Ip Inc. System and method for routing computing workloads based on proximity
US11182713B2 (en) 2015-01-24 2021-11-23 Vmware, Inc. Methods and systems to optimize operating system license costs in a virtual data center
US11200526B2 (en) 2015-01-24 2021-12-14 Vmware, Inc. Methods and systems to optimize server utilization for a virtual data center
US11182717B2 (en) 2015-01-24 2021-11-23 VMware. Inc. Methods and systems to optimize server utilization for a virtual data center
US11182718B2 (en) 2015-01-24 2021-11-23 Vmware, Inc. Methods and systems to optimize server utilization for a virtual data center
US11874692B2 (en) 2019-08-16 2024-01-16 Nubix, Inc. Method for deploying containerized security technologies on embedded devices
US11875167B2 (en) 2020-03-23 2024-01-16 Nubix, Inc. Method for deploying containerized protocols on very small devices
US11494081B2 (en) * 2020-10-09 2022-11-08 Seagate Technology Llc System and method for using telemetry data to change operation of storage middleware client of a data center
WO2023158445A1 (en) * 2022-02-16 2023-08-24 Nubix, Inc. Method for deploying containerized security technologies on embedded devices
US20230344902A1 (en) * 2022-04-20 2023-10-26 Dell Products L.P. Methods and systems for dynamically adjusting data chunk sizes copied over a network
US11811870B1 (en) * 2022-04-20 2023-11-07 Dell Products L.P. Methods and systems for dynamically adjusting data chunk sizes copied over a network

Also Published As

Publication number Publication date
CA2486103A1 (en) 2006-04-26
US8606886B2 (en) 2013-12-10
US20060089995A1 (en) 2006-04-27

Similar Documents

Publication Publication Date Title
US20060107087A1 (en) System for optimizing server use in a data center
US10733041B2 (en) System, method and computer program product for providing status information during execution of a process to manage resource state enforcement
US20220229649A1 (en) Conversion and restoration of computer environments to container-based implementations
US10042628B2 (en) Automated upgrade system for a service-based distributed computer system
Jonathan et al. Nebula: Distributed edge cloud for data intensive computing
JP5089990B2 (en) Method and system for a grid-enabled virtual machine with movable objects
US8347263B1 (en) Repository including installation metadata for executable applications
US8549106B2 (en) Leveraging remote server pools for client applications
US20200034167A1 (en) Automatic application migration across virtualization environments
US7529867B2 (en) Adaptive, scalable I/O request handling architecture in virtualized computer systems and networks
US20120047239A1 (en) System and Method for Installation and Management of Cloud-Independent Multi-Tenant Applications
US20040268345A1 (en) Software image creation in a distributed build environment
US20080104589A1 (en) Adaptive, Scalable I/O Request Handling Architecture in Virtualized Computer Systems and Networks
WO2020253079A1 (en) Jmeter-based distributed performance test method and apparatus, device, and storage medium
US11442830B2 (en) Establishing and monitoring programming environments
US8214809B2 (en) Grid-enabled ANT compatible with both stand-alone and grid-based computing systems
US20080033902A1 (en) A Method for Providing Live File Transfer Between Machines
US11334372B2 (en) Distributed job manager for stateful microservices
WO2011071104A1 (en) Distributed file system, data selection method of same and program
US20200034484A1 (en) User-defined analysis of distributed metadata
US20190034464A1 (en) Methods and systems that collect data from computing facilities and export a specified portion of the collected data for remote processing and analysis
US20080104590A1 (en) Adaptive, Scalable I/O Request Handling Architecture in Virtualized Computer Systems and Networks
US20230315755A1 (en) Cross-organization &amp; cross-cloud automated data pipelines
US7188343B2 (en) Distributable multi-daemon configuration for multi-system management
CA2524550A1 (en) A system for optimizing server use in a data center

Legal Events

Date Code Title Description
AS Assignment

Owner name: PLATESPIN LTD, CANADA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SIEROKA, DANIEL;CHUI, CADMAN;FAGERSTROEM, PETER;AND OTHERS;REEL/FRAME:017144/0820

Effective date: 20051021

AS Assignment

Owner name: NOVELL, INC., MASSACHUSETTS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:PLATESPIN LTD.;REEL/FRAME:021083/0130

Effective date: 20080603

AS Assignment

Owner name: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, NEW YORK

Free format text: GRANT OF PATENT SECURITY INTEREST;ASSIGNOR:NOVELL, INC.;REEL/FRAME:026270/0001

Effective date: 20110427

AS Assignment

Owner name: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, NEW YORK

Free format text: GRANT OF PATENT SECURITY INTEREST (SECOND LIEN);ASSIGNOR:NOVELL, INC.;REEL/FRAME:026275/0018

Effective date: 20110427

AS Assignment

Owner name: NOVELL, INC., UTAH

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS FIRST LIEN (RELEASES RF 026270/0001 AND 027289/0727);ASSIGNOR:CREDIT SUISSE AG, AS COLLATERAL AGENT;REEL/FRAME:028252/0077

Effective date: 20120522

Owner name: NOVELL, INC., UTAH

Free format text: RELEASE OF SECURITY IN PATENTS SECOND LIEN (RELEASES RF 026275/0018 AND 027290/0983);ASSIGNOR:CREDIT SUISSE AG, AS COLLATERAL AGENT;REEL/FRAME:028252/0154

Effective date: 20120522

AS Assignment

Owner name: CREDIT SUISSE AG, AS COLLATERAL AGENT, NEW YORK

Free format text: GRANT OF PATENT SECURITY INTEREST FIRST LIEN;ASSIGNOR:NOVELL, INC.;REEL/FRAME:028252/0216

Effective date: 20120522

Owner name: CREDIT SUISSE AG, AS COLLATERAL AGENT, NEW YORK

Free format text: GRANT OF PATENT SECURITY INTEREST SECOND LIEN;ASSIGNOR:NOVELL, INC.;REEL/FRAME:028252/0316

Effective date: 20120522

AS Assignment

Owner name: NOVELL, INC., UTAH

Free format text: RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 028252/0316;ASSIGNOR:CREDIT SUISSE AG;REEL/FRAME:034469/0057

Effective date: 20141120

Owner name: NOVELL, INC., UTAH

Free format text: RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 028252/0216;ASSIGNOR:CREDIT SUISSE AG;REEL/FRAME:034470/0680

Effective date: 20141120

AS Assignment

Owner name: BANK OF AMERICA, N.A., CALIFORNIA

Free format text: SECURITY INTEREST;ASSIGNORS:MICRO FOCUS (US), INC.;BORLAND SOFTWARE CORPORATION;ATTACHMATE CORPORATION;AND OTHERS;REEL/FRAME:035656/0251

Effective date: 20141120

STCB Information on status: application discontinuation

Free format text: ABANDONED -- AFTER EXAMINER'S ANSWER OR BOARD OF APPEALS DECISION

AS Assignment

Owner name: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT, NEW

Free format text: NOTICE OF SUCCESSION OF AGENCY;ASSIGNOR:BANK OF AMERICA, N.A., AS PRIOR AGENT;REEL/FRAME:042388/0386

Effective date: 20170501

AS Assignment

Owner name: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT, NEW

Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT TYPO IN APPLICATION NUMBER 10708121 WHICH SHOULD BE 10708021 PREVIOUSLY RECORDED ON REEL 042388 FRAME 0386. ASSIGNOR(S) HEREBY CONFIRMS THE NOTICE OF SUCCESSION OF AGENCY;ASSIGNOR:BANK OF AMERICA, N.A., AS PRIOR AGENT;REEL/FRAME:048793/0832

Effective date: 20170501

AS Assignment

Owner name: MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.), WASHINGTON

Free format text: RELEASE OF SECURITY INTEREST REEL/FRAME 035656/0251;ASSIGNOR:JPMORGAN CHASE BANK, N.A.;REEL/FRAME:062623/0009

Effective date: 20230131

Owner name: MICRO FOCUS (US), INC., MARYLAND

Free format text: RELEASE OF SECURITY INTEREST REEL/FRAME 035656/0251;ASSIGNOR:JPMORGAN CHASE BANK, N.A.;REEL/FRAME:062623/0009

Effective date: 20230131

Owner name: NETIQ CORPORATION, WASHINGTON

Free format text: RELEASE OF SECURITY INTEREST REEL/FRAME 035656/0251;ASSIGNOR:JPMORGAN CHASE BANK, N.A.;REEL/FRAME:062623/0009

Effective date: 20230131

Owner name: ATTACHMATE CORPORATION, WASHINGTON

Free format text: RELEASE OF SECURITY INTEREST REEL/FRAME 035656/0251;ASSIGNOR:JPMORGAN CHASE BANK, N.A.;REEL/FRAME:062623/0009

Effective date: 20230131

Owner name: BORLAND SOFTWARE CORPORATION, MARYLAND

Free format text: RELEASE OF SECURITY INTEREST REEL/FRAME 035656/0251;ASSIGNOR:JPMORGAN CHASE BANK, N.A.;REEL/FRAME:062623/0009

Effective date: 20230131