Nova-z/VM

= Overview = Nova-Compute uses z/VM driver to communicate with hypervisor z/VM and control virtual machines on IBM System z.This wiki introduces z/VM driver for Nova-Compute and some relate tools used by z/VM driver. = Concepts =

System z
System z is a family name used by IBM for all of its mainframe computers. IBM System z are the direct descendants of System/360, announced in 1964, and the System/370 from 1970s, and now includes the IBM System z9, the IBM System z10 and the newer IBM zEnterprise. System z is famous for its high availability and used in government, financial services, retail, manufacturing, and just about every other industry.

z/VM
z/VM is a hypervisor for the IBM System z platform that provides a highly flexible test and production environment. z/VM offers a base for customers who want to exploit IBM virtualization technology on one of the industry's best-of- breed server environments, the IBM System z family. With virtualization technology, customers can easily create many virtual machines consisting of virtualized processor, communications, storage, networking, and I/O resources.

The z/VM hypervisor is designed to help clients extend the business value of mainframe technology across the enterprise by integrating applications and data while providing exceptional levels of availability, security, and operational ease. z/VM virtualization technology is designed to allow the capability for clients to run hundreds to thousands of Linux servers on a single mainframe running with other System z operating systems, such as z/OS, or as a large-scale Linux-only enterprise server solution.

xCAT
xCAT is an open source scalable distributed computing management and provisioning tool that provides a unified interface for hardware control, discovery, and OS diskful/diskfree deployment. It is used by NASA, University of Toronto, IBM, Adaptive Computing, Los Alamos Laboratory and so on. This picture show the architure of xCAT.

= Architecture =

The picture above shows how the system works:
 * 1) Nova-Compute uses z/VM driver to control/configure z/VM.
 * 2) The xCAT management node (MN) runs on any Linux virtual server and it is used to manage virtual servers spanning across multiple z/VM partitions.
 * 3) The z/VM driver sends RESTful APIs to communicate with xCAT MN.
 * 4) The zVM OpenStack driver will fetch images from Glance unless the image is already in xCAT image repository"
 * 5) xCAT MN manages each z/VM partition using a System z hardware control point (zHCP) running on a privileged Linux virtual server.
 * 6) The zHCP interfaces with z/VM systems management API (SMAPI), directory manager (DirMaint), and control program layer (CP) to manage the z/VM partition. It utilizes a C socket interface to communicate with the SMAPI layer and VMCP Linux module to communicate with the CP layer.

= Prerequisites = = Configuration = By default /etc/nova/nova.conf, these options are required: compute_driver = zvm.ZVMDriver network_api_class = nova.network.quantumv2.api.API libvirt_vif_driver = nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver force_config_drive=true config_drive_format=tgz zvm_xcat_server = 192.168.1.100 zvm_xcat_username = root zvm_xcat_password = xxxxxxx zvm_diskpool = pool1 zvm_host = system360 zvm_scsi_pool = smpool zvm_vmrelocate_force = architecture zvm_user_profile = myprofile zvm_xcat_master = xcatmaster These options are optional, and the values listed below are default values: zvm_xcat_group = all zvm_disk_pool_type = ECKD zvm_config_drive_inject_password = False zvm_vmrelocate_immediate = yes zvm_vmrelocate_max_total = nolimit zvm_vmrelocate_max_quiesce = nolimit zvm_reachable_timeout = 180 zvm_user_default_password = password zvm_os_default_password = ospass zvm_user_default_privilege = g zvm_image_tmp_path = /opt/stack/data/nova/images xcat_image_clean_period = 30 xcat_free_space_threshold = 50
 * 1) One OpenStack nova-compute service node will manage one and only one xCAT MN node.
 * 2) Each of the zVM systems (reside in different LPARs or CECs ) has one nova-compute service node
 * 3) zHCP must be managed by xCAT MN.
 * 4) Compute Node and xCAT MN can ssh each other without password.
 * 1) Use z/VM
 * 1) config drive is required
 * 1) Only tgz is valid for now
 * 1) Host name or IP address of xCAT management_node
 * 1) xCAT username
 * 1) Password of the xCAT user
 * 1) z/VM disk pool for ephemeral disks
 * 1) z/VM host that managed by xCAT MN
 * 1) Default zfcp scsi disk pool
 * 1) Valid optiosns are: 'architecture' -- attempt relocation even though hardware architecture facilities or CP features are not available on destination system; 'domain' -- attempt relocation even though VM would be moved outside of its domain, or 'domain' -- relocation should proceed even if CP determines that there are insufficient storage resources on destination system
 * 1) User profile for creating a z/VM userid
 * 1) The xCAT MM node name
 * 1) xCAT group for OpenStack
 * 1) Default disk type for root disk, can be ECKD/FBA
 * 1) Sets the admin password in the config drive
 * 1) Valid options are: 'yes' -- VMRELOCATE command will do one early pass through virtual machine storage and then go directly to the quiesce stage, or 'no' -- specifies immediate processing
 * 1) Maximum wait time(seconds) for relocation to complete
 * 1) Maximum quiesce time(seconds) a VM may be stopped during a relocation attempt
 * 1) Timeout(seconds) when start an instance.
 * 1) Default password for a new created z/VM user
 * 1) Default OS password for a new created z/VM user
 * 1) Default privilege level for a new created z/VM user
 * 1) The path to store the z/VM image files
 * 1) The period(days) to clean up an image that not be used for deploy in one xCAT MN within the defined time
 * 1) The threshold for xCAT free space, if snapshot or spawn check xCAT free space not enough for its image operations, it will prune image to meet the threshold

= More information = zvm-plugin blueprint

= References =
 * 1) z/VM
 * 2) xCAT
 * 3) xCAT on z/VM
 * 4) http://en.wikipedia.org/wiki/Z/VM
 * 5) http://en.wikipedia.org/wiki/System_z