Introduction to IBM VM
======================

This is just a brief explanation and overview of IBMs virtualization
solution VM. Anyone interested in a bit more detail should check out
the Wikipedia entry[1] (and associated links), which is a pretty
decent source.

History
-------

VM as a generally-available product began with VM/370 in 1972. It's
history stretches back a little further than that, beginning with
research projects in the late 60s. But broadly, the timeline goes:

            VM/370 (1972)
                 |
            VM/SP (1980)
                 |
            VM/XA (1984)
                 |
            VM/ESA (1990)
                 |
         z/VM (2000-present)

For those of you mainly familiar with x86-based systems: no, those
dates are not typos - virtualization really has been around for nearly
half a century!

Structure
---------

Most techies these days are familiar with the concept of a
'hypervisor' - it being the software that provides the capability of
running multiple virtual machines inside the same host system. The
hypervisor component in VM is called the Control Program (CP). It is
CP that manages the division of real resources (RAM, CPUs, devices)
between the active 'guest' virtual machines. While CP does provide a
command-line interface, it's use is limited to operations on virtual
machines and real hardware and devices, resource monitoring and so
on.

Besides CP, all other VM functionality is achieved via virtual
machines. Naturally, end-user guest OSes run in virtual machines. What
may be a little surprising is that other facilities generally
recognized as parts of a modern OS (services/daemons, networking
stacks etc.) are also all provisioned within their own virtual
machines. These are commonly referred to as 'service virtual
machines'.

To illustrate, a VM system by default will run one TCP/IP stack,
usually under the 'TCPIP' virtual machine. There's no reason why you
couldn't run a number of separate stacks if you wished, but they'd all
need to be unique virtual machines. TCPIP would normally handle TN3270
(3270 telnet) connections itself, but eg. FTP, SSL connections, SMTP,
and so on would run as separate virtual machines. On a recent VM system,
you might see something similar to:


Ready; T=0.01/0.01 17:24:22
q names
SSL00001 - DSC , SSLDCSSM - DSC , TCPIP    - DSC , DTCVSW2  - DSC
DTCVSW1  - DSC , VMSERVP  - DSC , VMSERVR  - DSC , VMSERVU  - DSC
VMSERVS  - DSC , OPERSYMP - DSC , DISKACNT - DSC , EREP     - DSC
OPERATOR - 0020, MAINT    -L0004
..


('Ready...' is the prompt from CMS, 'q names' is the CP command to
list the active virtual machines. CMS will get it's own article.)

TCPIP (default IP stack)
SSLDCSSM (SSL management process)
SSL0001 (SSL connection pool)
DTCVSW* (Virtual switches)
OPERATOR (provides the interactive system console)
EREP (error reporting and monitoring)
DISKACNT (disk accounting)
MAINT (system admin user)

and so on. 'DSC' indicates that the virtual machine is running
disconnected, somewhat similar to VirtualBox or VMWare where a machine
can be running 'in the background', but there's no open console window.

Guest OSes
----------

A number of operating systems are supported under VM. Unsurprisingly
the list skews a little towards IBM, but here they are:

MVS   (also known as OS/390, z/OS [2])
VSE   (I know nothing at all about this and its predecessor DOS [3])
VM    (yes, VM will run many levels deep under VM. See also [4])
CMS   (to be covered in another article. CMS is provided with VM)
Linux (the s390 and s390x ports [really? you need a link?])
MUSIC (I guess? [5])
TPF   (probably, but I wouldn't expect a production TPF system to be
      run under VM due to response time requirements. [6])

Links
-----
[1] https://en.wikipedia.org/wiki/VM_(operating_system)
[2] https://en.wikipedia.org/wiki/MVS
[3] https://en.wikipedia.org/wiki/VSE_(operating_system)
[4] https://www.theregister.co.uk/2018/07/23/sysadmin_sank_ibm_mainframe_by_going_one_vm_too_deep/
[5] https://en.wikipedia.org/wiki/MUSIC/SP
[6] https://en.wikipedia.org/wiki/Transaction_Processing_Facility