Chapter THREE. Partitioned Servers: Virtual Partitions

Chapter Syllabus

  • 3.1 An Introduction to Virtual Partitions

  • 3.2 Obtaining the Virtual Partitions Software

  • 3.3 Setting Up an Ignite-UX Server to Support Virtual Partitions

  • 3.4 Planning Your Virtual Partitions

  • 3.5 Creating the vPar Database

  • 3.6 Booting a Newly Created vPar from an Ignite-UX Server

  • 3.7 Managing Hardware within a Virtual Partition

  • 3.8 Rebooting vpmon

  • 3.9 Interfacing with the Virtual Partition Monitor: vpmon

  • 3.10 Changing Partition Attributes

  • 3.11 Resetting a Virtual Partition

  • 3.12 Removing a Virtual Partition

  • 3.13 Turning Off Virtual Partitioning Functionality

In Chapter 2, we introduced the idea of partitioning and discussed Node Partitions (nPars). If you are joining this discussion without the prior knowledge of nPars, I will reiterate that partitioning is not a new concept in the computing industry. Many vendors have provided some form of partitioning as a software and/or a hardware solution for some years. The basic idea of partitioning is to create a configuration of hardware and software components that support the running of an independent instance of an operating system. HP currently supports two types of partitioning:

  • An nPar, or Node Partition

  • A vPar, or Virtual Partition

This chapter deals with Virtual Partitions.

A Virtual Partition is a collection of hardware components that support the running of an independent instance of an Operating System. A major difference between a vPar and an nPar is that a vPar is considered to be software partitioning with no reliance or dependence on a specific hardware architecture. On the other hand, an nPar is considered a hardware as well as a software solution, as an nPar relies on a cell-based hardware architecture.

The flexibility in configuration makes partitioning a very popular configuration tool. Some key benefits of Virtual Partitions include:

  • Increasing server utilization

  • Isolating Operating System and Application Faults

  • Providing flexibility through multiple but independent Operating System instances

  • Providing flexibility through dynamic CPU allocation

The hardware components that constitute a Virtual Partition can come from an existing server, e.g., an rp7400/N4000 server, or from a Node Partition configured from a partitionable server complex. During our discussion in this chapter, I utilize an existing node partition, which I created in Chapter 2 within a Superdome complex. The initial hardware could just as easily be an existing rp7400/N4000 server, for example.

At the moment, HP supports Virtual Partitions running only HP-UX. In the future, there is the possibility of running various versions of HP-UX, Windows, and Linux simultaneously within different Virtual Partitions.

We start by taking an existing Node Partition, installing the Virtual Partition software, and then creating a number of vPars from the nPar. Be sure to check the HP documentation (for more details, see http://docs.hp.com/hpux/hplex/index.html#C.%20vPars%20%28 software-based%20partitioning%29) as to which servers and Operating Systems support Virtual Partitions. We also discuss day-to-day management tasks involved with Virtual Partitions including dynamically adding and removing CPUs from a Virtual Partition to cope with changing processing demands. I would suggest having access to your own system configuration while reading through this chapter as well as access to the excellent HP documentation: for example, Installing and Managing HP-UX Virtual Partitions (vPars) available from http://docs.hp.com/hpux/pdf/T1335-90018.html.

An Introduction to Virtual Partitions

A Virtual Partition (vPar) is an independent instance of an Operating System running on a subset of hardware components taken from an existing server or Node Partition. Each Operating System instance runs completely independently of other instances, and as such, a primary reason for using vPars is to offer application and Operating System software fault isolation. Additional benefits include:

  • Increased system utilization by partitioning previously unused portions of the server. Typically, a non-vPars server is only using 50 percent of its capacity.

  • Greater flexibility of resources through:

    • Multiple but independent operating environments per server (with as low as one CPU granularity per partition)

    • The dynamic movement of CPU power between virtual partitions depending on workload requirements.

  • Increased isolation of applications, their operating systems, and assigned resources (CPU, memory, and I/O) with individual reconfiguration and rebooting of the individual partitions without affecting other partitions and their applications.

  • Increased product integration with other HP-UX offerings that includes iCOD, Partition Manager, Online Diagnostics, and Virtual Partition Manager.

Currently, we cannot dynamically add memory to a vPar without rebooting it. While performance is one criterion, security may be another with each vPar being isolated from other partitions on the system. Virtual partitions are implemented as a software solution. Initially we take an existing installation of HP-UX and install the Virtual Partition software. We then define the number of Virtual Partitions we require in the Virtual Partition Database (/stand/vpdb) using commands such as vparcreate (or via the vparmgr GUI). At system boot time, the Virtual Partition Monitor (/stand/vpmon) is executed instead of the normal HP-UX kernel /stand/vmunix. The vpmon reads the Virtual Partition Database (vpdb), which details the hardware components belonging to respective vPars. The vpmon then boots the appropriate HP-UX kernel located on a boot disk within each vPar (Figure 3-1).

How vPars work

Figure 3-1. How vPars work

The console interface for the original server/nPar is used to manage all vPars. By using the key sequence ctrl-a, the administrator can switch between the virtual consoles for each vPar.

To make my life easy, I simply visualize a Virtual Partition as a minimal server configuration:

  • At least 1 CPU

  • The minimum amount of memory to support HP-UX

  • IO capability to support a boot device

  • A LAN card (probably) to support networking

Most vPar solutions will use 1GB of memory per active CPU. Technically this is not an absolute requirement; it just seems to work better. What we need to do is to work out how many vPars we need to configure based on our application/user needs as well as some limitations imposed by the vPar software (check the documentation Installing and Managing HP-UX Virtual Partitions (vPars) available at http://docs.hp.com/hpux/pdf/T1335-90018.html for server specific limitations as to the maximum supported number of Virtual Partitions).

In reality, we need to consider other criteria as well as the number of vPars to consider. Other considerations include:

  • Will we want to configure multiple paths to IO devices? If so, this will limit the overall number of IO devices available to vPars.

  • Will we want to configure floating CPUs? A floating CPU is known as an unbound CPU. This has limitations as to what the CPU can process, i.e., unbound CPUs do not process IO interrupts. These limitations are offset by the ability of unbound CPUs to be added and removed to existing vPars without requiring a reboot. Consequently, the overall number of CPUs available to the initial vPar configuration may be considerably less, as we may want to configure a pool of unbound CPUs in order to allocate them as we see fit.

  • Applications that perform a significant amount of IO will need to be configured with more bound CPUs. Unbound CPUs do not process IO interrupts. This can affect the number of floating CPUs in your overall vPar configuration.

Obtaining the Virtual Partitions Software

The Virtual Partitions product (T1335AC) is a purchasable product and comes on CD. Details of how to purchase the product online as well as a run-down of features and benefits can be found at http://software.hp.com/portal/swdepot/displayProductInfo.do?productNumber=T1335AC.

We use our Superdome nPar created in Chapter 2 as a basis for creating a number of vPars. We need to analyze the configuration in order to establish how many vPars we can actually configure, based on the available hardware in the nPar.

Setting Up an Ignite-UX Server to Support Virtual Partitions

On our first Virtual Partition, we can utilize the existing HP-UX Operating System. On subsequent Virtual Partitions, we need to have a means of installing HP-UX onto the intended boot disks. This may be an Ignite-UX Server (hence the need for a LAN card in our configuration) that contains the full Operating System software, patches, the vPar bundle, and any associated applications (see Chapter 13, Installing Software with Software Distributor and Ignite-UX). The only issue with setting up an Ignite-UX Server is the Ignite-UX kernel itself. The WINSTALL file supplied by newer versions of Ignite-UX is perfectly vPar-enabled. However, if our version of Ignite-UX on the Ignite server is B.3.4.XX (September 2001), B.3.5.XX (December 2001), or B.3.6.XX (Match 2002), we need to obtain the new version of the /opt/ignite/boot/WINSTALL file. A script called WINSTALL_script, located under the root directory of the CD in a sub-directory called vParsWINSTALL, will copy the WINSTALL file to the correct location on the Ignite-UX server.

root@hpeos003[] bdf /cdrom
Filesystem          kbytes    used   avail %used Mounted on
/dev/dsk/c2t2d0     112014  112014       0  100% /cdrom
root@hpeos003[] ll /cdrom/vParsWINSTALL/
total 101289984
-r-xr-xr-x   1 4294967295 4294967295 16935056 May 20  2002 WINSTALL.Dec01
-r-xr-xr-x   1 4294967295 4294967295 17050784 May 20  2002 WINSTALL.Mar02
-r-xr-xr-x   1 4294967295 4294967295 16644896 May 20  2002 WINSTALL.Sep01
-r-xr-xr-x   1 4294967295 4294967295    9711 May 20  2002 WINSTALL_script
root@hpeos003[]

Once you locate the script, simply run it and the new WINSTALL file will prompt you for any additional information it needs.

Planning Your Virtual Partitions

One of the first tasks with Virtual Partitions is to establish how much hardware you have in your current non Virtual Partition server. This can be a process of running various ioscan commands and probably drawing a schematic diagram of what hardware you have available. Here is a diagram of what we have in our Superdome nPar in Figure 3-2.

nPar physical configuration

Figure 3-2. nPar physical configuration

Drawing this schematic diagram is a good exercise, as we need to plan the configuration VERY carefully. When you have lots more hardware, sometimes it becomes obvious which divisions to make when creating multiple vPars; e.g., with a 2-cell partition, it might be obvious to create 2 vPars using CPUs from a specific cells to be members of a particular vPar. The unused (unbound) CPUs could float between either vPar, although it would be better for performance to localize CPU/memory IO to within a single cell.

What I need to do is assign LBAs (specific interface cards) to individual vPars. I need to remember to create in each vPar enough hardware to support a basic server:

  • At least 1 CPU

  • The minimum amount of memory to support HP-UX (1GB per CPU works better)

  • IO capability to support a boot device

  • A LAN card (probably) to support networking

I have spent some time considering how to divide up this nPar. The solution I have come up with is to create two vPars (I currently don't have enough disks to configure any more vPars). I have split the 12-slot IO cardcage and RAM into separate chunks just to allow us to visualize each vPar as a separate server. Here's my plan, see Figure 3-3.

Intended vPar configuration

Figure 3-3. Intended vPar configuration

We can summarize the hardware details of each Virtual Partition as follows:

  1. vPar0

    • Physical Memory: 2GB

    • Total Number of CPU: 2

      • Total number of Bound CPU: 1 (2/10)

      • Total Number of Unbound CPU: 1

    • Assigned LBA:

      • 2/0/0

      • 2/0/1

      • 2/0/2

      • 2/0/3

      • 2/0/10

      • 2/0/11

      • 2/0/12

      • 2/0/14

    • Boot device: 2/0/1/0/0.0.0

    • Alternate Boot device: 2/0/11/0/0.3.0

  2. vPar0

    • Physical Memory: 2GB

    • Total Number of CPU: 2

      • Total number of Bound CPU: 1 (2/12)

      • Total Number of Unbound CPU: 1

    • Assigned LBA:

      • 2/0/4

      • 2/0/6

      • 2/0/9

      • 2/0/8

    • Boot device: 2/0/4/0/0.8.0

Once our plan has been finalized, we can start to consider creating the vPars themselves.

Creating the vPar Database

The first part of creating Virtual Partitions is to install the software onto our original Operating System (this requires a reboot). I an installing the Virtual Partition product as well as the vPar GUI; VPARMGR, which is not installed by default:

root @uksd3 #swinstall -s hpwin050:/depot/sept_2002_vpar -x autoreboot=true T1335AC VPARMGR
=======  11/06/03 00:01:46 GMT  BEGIN swinstall SESSION
         (non-interactive) (jobid=uksd3-0015)

       * Session started for user "root@uksd3".

       * Beginning Selection
       * Target connection succeeded for "uksd3:/".
       * Source connection succeeded for
         "hpwin050:/depot/sept_2002_vpar".
NOTE:    One or more patch filesets were automatically selected or
         deselected to maintain patch integrity. Please refer to the
         swinstall.log logfile for details.
WARNING: The software specified contains a kernel fileset.  It will be
         necessary to reconfigure and reboot the system to make the
         kernel software functional.
       * Source:                 hpwin050:/depot/sept_2002_vpar
       * Targets:                uksd3:/
       * Software selections:
             T1335AC,r=A.02.01.00,a=HP-UX_B.11.11_64,v=HP
             VPARMGR,r=B.11.11.01.01,a=HP-UX_B.11.11_32/64,v=HP
           + B6826AA,r=B.11.11.01.05,a=HP-UX_B.11.11_32/64,v=HP
           + FEATURE11-11,r=B.11.11.0209.5,a=HP-UX_B.11.11_32/64,v=HP
           + GOLDBASE11i,r=B.11.11.0206.4,a=HP-UX_B.11.11_32/64,v=HP
           + HWEnable11i,r=B.11.11.0209.5,a=HP-UX_B.11.11_32/64,v=HP
           + OBAM.OBAM-BIN,r=B.11.00.05.3.06,a=HP-UX_B.11.00_32/64,v=HP,fr=B.11.00.05.3.06,fa=HP-UX_B.11.00_32/64
           + OBAM.OBAM-JVM,r=B.11.00.05.3.06,a=HP-UX_B.11.00_32/64,v=HP,fr=B.11.00.05.3.06,fa=HP-UX_B.11.00_32/64
           + OBAM.OBAM-WEB,r=B.11.00.05.3.06,a=HP-UX_B.11.00_32/64,v=HP,fr=B.11.00.05.3.06,fa=HP-UX_B.11.00_32/64
           + OS-Core.C-KRN,r=B.11.11,a=HP-UX_B.11.11_32/64,v=HP,fr=B.11.11,fa=HP-UX_B.11.11_32/64
...
       * A "+" indicates an automatic selection due to dependency or
         the automatic selection of a patch or reference bundle.
       * Selection succeeded.


       * Beginning Analysis and Execution
       * Session selections have been saved in the file
         "/.sw/sessions/swinstall.last".
       * "uksd3:/":  18 filesets have the selected revision already
         installed.
       * "uksd3:/":  1 filesets have a version with a higher revision
         number already installed.
       * "uksd3:/":  17 filesets were determined to be skipped in the
         analysis phase.
       * "uksd3:/":  The software dependencies for 3 products or
         filesets cannot be resolved.
       * "uksd3:/":  1 bundles have the selected revision already
         installed.
ERROR:   "uksd3:/":  1 bundles have a version with a higher revision
         number already installed.
       * "uksd3:/":  3 bundles cannot be installed because none of
         their filesets can be installed.
       * The analysis phase failed for "uksd3:/".
ERROR:   "uksd3:/":  42 filesets were determined to be skipped in the
         analysis phase.
       * The execution phase failed for "uksd3:/".
       * Analysis and Execution had errors.


NOTE:    More information may be found in the agent logfile using the
         command "swjob -a log uksd3-0015 @ uksd3:/".


        *** FINAL System shutdown message (uksd3) ***

System going down IMMEDIATELY

=======  11/06/03 00:04:28 GMT  END swinstall SESSION (non-interactive)
         (jobid=uksd3-0015)

root @uksd3 #swlist T1335AC VPARMGR
# Initializing...
# Contacting target "uksd3"...
#
# Target:  uksd3:/
#

# T1335AC                       A.02.01.00     HP-UX Virtual Partitions
  T1335AC.VirtualPartition      A.02.01.00     HP-UX Virtual Partitions Function
ality
  T1335AC.PHNE_25084            1.0            Cumulative STREAMS Patch
  T1335AC.PHNE_25644            1.0            cumulative ARPA Transport patch
  T1335AC.PHKL_23374            1.0            Fix close(2) data corruption
  T1335AC.PHKL_23337            1.0            Side effect of madvise() call fixed.
  T1335AC.PHKL_23335            1.0            solve inode deadlock with mmap and
pagefault
  T1335AC.PHKL_23280            1.0            signal race condition patch
  T1335AC.PHKL_23250            1.0            Fix for memory driver bug
  T1335AC.PHKL_23242            1.0            VxFS mmap(2) performance improvement
  T1335AC.PHKL_23239            1.0            getmount_entry() performance improvement
  T1335AC.PHKL_23225            1.0            Fix for dqput() data page fault panic
  T1335AC.PHKL_23196            1.0            Fix for locking problem in I/O (GIO)
  T1335AC.PHKL_23154            1.0            dflush() panic
  T1335AC.PHSS_22535            1.0            ld(1) and linker tools cumulative
 patch
  T1335AC.PHKL_27172            1.0            vPars panic; Syscall cumulative
  T1335AC.PHKL_26847            1.0            console,chassis code,crash/dump,reboot-RvPar
  T1335AC.PHKL_26979            1.0            vPar enablement patch with kwdb support
  T1335AC.PHKL_26039            1.0            callout migration race condition
  T1335AC.PHKL_26037            1.0            vPar enablement patch, callout migration
  T1335AC.PHKL_25080            1.0            vPar enablement patch
  T1335AC.PHKL_24960            1.0            vPar enablement patch
  T1335AC.PHKL_24585            1.0            Psets & vPar enablement patch
  T1335AC.PHKL_24582            1.0            iCOD Support, Psets Enablement Patch
  T1335AC.PHKL_24566            1.0            Kernel Memory allocation, Psets Enablement
  T1335AC.PHKL_24565            1.0            vPar Enablement patch
  T1335AC.PHKL_24564            1.0            vPar enablement patch
  T1335AC.PHKL_24563            1.0            vPar enablement patch
  T1335AC.PHKL_24562            1.0            vPar enablement patch
  T1335AC.PHKL_24561            1.0            Psets & vPar Enablement
  T1335AC.PHKL_24560            1.0            vPar enablement patch
  T1335AC.PHKL_24558            1.0            vPar enablement patch
  T1335AC.PHKL_24556            1.0            vPar enablement patch
  T1335AC.PHKL_24554            1.0            vPar enablement patch
  T1335AC.PHKL_24552            1.0            vPar enablement patch
  T1335AC.PHKL_24551            1.0            thread nostop, vPar, Psets, load
averages
  T1335AC.PHKL_27054            1.0            early boot,Psets,vPar,Xserver,T60
0 HPMC
  T1335AC.PHKL_24548            1.0            vPar enablement patch
  T1335AC.PHCO_26682            1.0            shutdown(1m) patch
  T1335AC.PHCO_26681            1.0            reboot(1m) patch
  T1335AC.PHCO_25013            1.0            for vpars Q4 version B.11.20f
  T1335AC.PHCO_25130            1.0            vPar manpage cumulative patch
  T1335AC.PHCO_26896            1.0            vPar commands man pages patch
# VPARMGR                       B.11.11.01.01  Virtual Partition Manager - HP-UX

  VPARMGR.vParManager           B.11.11.01.01  Virtual Partition Manager for HP-
UX
root @uksd3 #

We are now ready to create our first partition. There are a couple of points we should understand before proceeding:

  • Each Virtual Partition needs to be assigned a unique name. Unlike nPars, which are assigned a partition number as well as a name, vPars do not have an associated partition number; they need to be explicitly assigned a partition name.

  • The first partition created MUST have assigned the LBA that supports the system console (the Core IO card on a node Partition).

  • We should document the hardware paths for all devices before proceeding in order to devise a consistent plan of how our partitions will be configured.

Armed with these pieces of information, we can proceed. We can create all of the Virtual Partitions while the original partition is running HP-UX as normal:

root @uksd3 #vparcreate -p vPar0 –a cpu::2 -a cpu:::1:2 -a cpu:2/10 -a mem::2048
-a io:2/0/0 -a io:2/0/1 -a io:2/0/2 -a io:2/0/3 -a io:2/0/10 -a io:2/0/11 -a
io:2/0/12 -a io:2/0/14 -a io:2/0/1/0/0.0.0:BOOT -a io:2/0/11/0/
0.3.0:ALTBOOT
root @uksd3 #
root @uksd3 #vparstatus
vparstatus: Warning: Virtual partition monitor not running, Requested resources shown.
[Virtual Partition]
                                                                          Boot
Virtual Partition Name       State Attributes Kernel Path               Opts
============================ ===== ========== ========================= =====
vPar0                          N/A   Dyn,Auto   /stand/vmunix

[Virtual Partition Resource Summary]
                                           CPU    Num        Memory (MB)
                                  CPU     Bound/   IO   # Ranges/
Virtual Partition Name          Min/Max  Unbound  devs  Total MB    Total MB
==============================  ================  ====  ====================
vPar0                             1/  2    1   1    10    0/  0         2048
root @uksd3 #
root @uksd3 #ll /stand/vp*
-rw-------   1 root       sys           4136 Nov  6 00:59 /stand/vpdb
-r-xr-xr-x   1 bin        bin        1062320 Jun 27  2002 /stand/vpmon
root @uksd3 #

We have now created our first partition. It has not booted yet. I should explain the options to vparcreate (see Table 3-1).

Table 3-1. Options Used with vparcreate

Option

Description

-p vPar0

Specifies the partition name. The vPar name can be a maximum of 239 characters and contain [aA-zZ],[0-9], underscore and dot.

-a cpu::2

We are specifying the total number of CPUs to be allocated to this partition. If we do not further specify which CPUs to allocate, the monitor will choose which CPUs to allocate for each partition.

-a cpu:::1:2

Specifies the minimum (1) and maximum (2) number of CPUs available to the partition. This option does not allocate CPUs but specifies the limits for other tasks. This option is optional.

-a cpu:2/10

We are stipulating a specific CPU to be allocated to this partition. By doing so, this CPU is a bound CPU. An unbound CPU cannot be explicitly specified.

-a mem::2048

We are specifying an amount of memory (in MB) to be allocated to this partition.

There is the possibility of specifying a specific address range within the global pool of memory available:

-a mem:::base:range

starting at "base" bytes and extending for “range” megabytes. When vPars are supported on systems that implement NUMA features (Integrity servers, hp sx1000 chipset and beyond), the use of this option will become more apparent; i.e., in an nPar utilizing Cell Local Memory, we can localize the memory for a vPar by specifying an explicit address space within memory. As such, the use of this option with current supported technology is VERY limited.

-a <hw path>

We are adding a particular hardware path (LBA) to the partition. All devices connected to the LBA will be made available to the partition.

-a 2/0/1/0/0.0.0:BOOT

We are specifying the Primary Boot Path for this partition. The vPar Database (/stand/vpdb) holds the boot paths for Virtual Partition. For the first partition, this should match the Primary Boot Path for the server/nPar.

-a 2/0/11/0/0.3.0:ALTBOOT

We are specifying an Alternate Boot Path for this partition, if appropriate.

We can choose to boot the new Virtual Partition and then continue configuring additional Virtual Partitions, or we can continue to configure additional Virtual Partitions right now. The decision will probably be based on whether the intended boot devices for our additional Virtual Partitions have been installed with HP-UX already (as well as the Virtual Partitions software, appropriate patches, and any additional application software). If they have, I would probably create all my partitions now and then boot all my Virtual Partitions straight away.

One last thing we need to configure is the AUTO file on the Primary boot path for our original server/nPar. The AUTO file needs to be altered in order to flag the hpux Secondary Loader to execute the Virtual Partition Monitor (vpmon) instead of the HP-UX kernel. Most of the time we will want to boot all of the configured Virtual Partitions once the server/nPar itself has booted. In such a situation, we update the AUTO file to look like this:

root @uksd3 #mkboot -a "hpux /stand/vpmon -a" /dev/rdsk/c0t0d0
root @uksd3 #

The –a option to vmpon activates all of the configured Virtual Partitions. Later we will see other ways to boot individual Virtual Partitions from the vpmon interface.

Now that my AUTO file will execute vpmon, I will test my preliminary configuration by rebooting this server:

root @uksd3 #shutdown -ry now

SHUTDOWN PROGRAM
11/06/03 01:31:28 GMT

Broadcast Message from root (console) Thu Nov  6 01:31:28...
SYSTEM BEING BROUGHT DOWN NOW ! ! !


/sbin/auto_parms: DHCP access is disabled (see /etc/auto_parms.log)


     System shutdown in progress
     ___________________________
...

Duplex Console IO Dependent Code (IODC) revision 1
   --------------------------------------------------------------------------
     (c) Copyright 1995-2002, Hewlett-Packard Company, All rights reserved
   --------------------------------------------------------------------------


          Cab/      Cell      ------- Processor --------    Cache Size
    Cell  Slot      State      #    Speed       State      Inst    Data
    ----  ----  ------------  ---  --------  -----------  ------  ------
      2   0/2   Active         0   552  MHz  Active       512 KB  1 MB
                               1   552  MHz  Idle         512 KB  1 MB
                               2   552  MHz  Idle         512 KB  1 MB
                               3   552  MHz  Idle         512 KB  1 MB


     Primary Boot Path:  2/0/1/0/0.0
          Boot Actions:  Boot from this path.
                         If unsuccessful, go to next path.

HA Alternate Boot Path:  2/0/4/0/0.8
          Boot Actions:  Boot from this path.
                         If unsuccessful, go to BCH.

   Alternate Boot Path:  2/0/4/0/0.8
          Boot Actions:  Skip this path.
                         Go to BCH.

          Console Path:  2/0/0/0/0.0


Attempting to boot using the primary path.
-------------------------------------------------------------


 To discontinue, press any key within 10 seconds.

 10 seconds expired.
 Proceeding...


Initializing boot Device.


Boot IO Dependent Code (IODC) Revision 0


Boot Path Initialized.


HARD Booted.

ISL Revision A.00.43  Apr 12, 2000

ISL booting  hpux /stand/vpmon -a

Boot
: disk(2/0/1/0/0.0.0.0.0.0.0;0)/stand/vpmon
614400 + 168736 + 16898800 start 0x23000
[MON] Booting vPar0...
[MON] Console client set to vPar0
[MON] Console server set to vPar0

[vPar0]

[MON] vPar0 loaded
gate64: sysvec_vaddr = 0xc0002000 for 2 pages
NOTICE: nfs3_link(): File system was registered at index 3.
NOTICE: autofs_link(): File system was registered at index 6.
NOTICE: cachefs_link(): File system was registered at index 7.
td: claimed Tachyon TL/TS Fibre Channel Mass Storage card at 2/0/12/0/0
fddi4: INITIALIZING: 0150 PCI FDDI card in slot 2/0/10/0/0
Entering cifs_init...
Initialization finished successfully... slot is 9

    Host is virtual System Console slave
Logical volume 64, 0x3 configured as ROOT
Logical volume 64, 0x2 configured as SWAP
...
     Start CDE login server .............................................. OK

The system is ready.

uksd3 [HP Release B.11.11] (see /etc/issue)
Console Login:

Now that I have created and tested my first Virtual Partition, I may take a little time to view the IO devices available to this Operating System:

root @uksd3 #vparstatus -vp vPar0
[Virtual Partition Details]
Name:         vPar0
State:        Up
Attributes:   Dynamic,Autoboot
Kernel Path:  /stand/vmunix
Boot Opts:

[CPU Details]
Min/Max:  1/2
Bound by User [Path]:  2.10
Bound by Monitor [Path]:
Unbound [Path]:  2.11

[IO Details]
   2.0.0
   2.0.1
   2.0.2
   2.0.3
   2.0.10
   2.0.11
   2.0.12
   2.0.14
   2.0.1.0.0.0.0  BOOT
   2.0.11.0.0.3.0  ALTBOOT

[Memory Details]
Specified [Base  /Range]:
          (bytes) (MB)
Total Memory (MB):  2048
root @uksd3 #
root @uksd3 #dmesg | grep Physical
    Physical: 2086912 Kbytes, lockable: 1565196 Kbytes, available: 1803724 Kbytes
root @uksd3 #
root @uksd3 #rad -q
                                                                     Driver(s)
Slot        Path        Bus   Speed   Power   Occupied    Suspended   Capable
0-1-1-0     2/0/0       0     33      On      Yes         No          No
0-1-1-1     2/0/1/0     8     33      On      Yes         No          Yes
0-1-1-2     2/0/2/0     16    33      On      Yes         No          Yes
0-1-1-3     2/0/3/0     24    33      On      Yes         No          Yes
0-1-1-6     2/0/14/0    112   33      On      No          N/A         N/A
0-1-1-7     2/0/12/0    96    33      On      Yes         No          Yes
0-1-1-8     2/0/11/0    88    33      On      Yes         No          Yes
0-1-1-9     2/0/10/0    80    33      On      Yes         No          Yes
root @uksd3 #

As you can see, this server is behaving as if it were completely oblivious to the fact it exists in a Virtual Partition. The vpmon has allocated the necessary resource to the partition and then booted HP-UX within that configuration. The only slight problem I have here is with the ioscan command.

root @uksd3 #ioscan -fnkC processor
Class       I  H/W Path  Driver    S/W State H/W Type  Description
===================================================================
processor   0  2/10      processor CLAIMED   PROCESSOR Processor
processor   1  2/11      processor CLAIMED   PROCESSOR Processor
processor   2  2/12      processor CLAIMED   PROCESSOR Processor
processor   3  2/13      processor CLAIMED   PROCESSOR Processor
root @uksd3 #

As you can see, ioscan seems to be reporting more processors than it should for this partition. The fact is that ioscan is reporting all of my bound processors as well as all of the unbound processors, even the ones not allocated to me. We can be assured that vpmon has only allocated the correct number of active processors to this vPar by using commands like glance, top, and mpshed:

root @uksd3 #mpsched -s
System Configuration:
=====================
Locality Domain Count: 1
Processor Count: 2
Domain    Processors
------    ----------
   0        0   1
root @uksd3 #
root @uksd3 #vparstatus -vp vPar0
[Virtual Partition Details]
Name:         vPar0
State:        Up
Attributes:   Dynamic,Autoboot
Kernel Path:  /stand/vmunix
Boot Opts:

[CPU Details]
Min/Max:  1/2
Bound by User [Path]:  2.10
Bound by Monitor [Path]:
Unbound [Path]:  2.11

[IO Details]
   2.0.0
   2.0.1
   2.0.2
   2.0.3
   2.0.10
   2.0.11
   2.0.12
   2.0.14
   2.0.1.0.0.0.0  BOOT
   2.0.11.0.0.3.0  ALTBOOT

[Memory Details]
Specified [Base  /Range]:
          (bytes) (MB)
Total Memory (MB):  2048
root @uksd3 #

It is interesting to note that this vPar has allocated the next available processor as the unbound processor for this partition. If this had been intended for another partition, we would have had to revise our overall configuration. The issue here is that, with the current software, we can't specify which processors will be selected as unbound processors.

When we configure our second partition, I will expect ioscan to report fewer processors, as at least one of the current processors will become bound to the new vPar.

Booting a Newly Created vPar from an Ignite-UX Server

I am now going to create my second Virtual Partition using the design specifications I created earlier:

root @uksd3 #vparcreate -p vPar1 -a cpu::2 -a cpu:::1:2 -a cpu:2/12 -a mem::2048
-a io:2/0/4 -a io:2/0/6 -a io:2/0/9 -a io:2/0/8 -a io:2/0/4/0/0.8.0:BOOT
root @uksd3 #vparstatus
[Virtual Partition]
                                                                          Boot
Virtual Partition Name       State Attributes Kernel Path               Opts
============================ ===== ========== ========================= =====
vPar0                          Up    Dyn,Auto   /stand/vmunix
vPar1                          Down  Dyn,Auto   /stand/vmunix

[Virtual Partition Resource Summary]
                                           CPU    Num        Memory (MB)
                                  CPU     Bound/   IO   # Ranges/
Virtual Partition Name          Min/Max  Unbound  devs  Total MB    Total MB
==============================  ================  ====  ====================
vPar0                             1/  2    1   1    10    0/  0         2048
vPar1                             1/  2    1   1     5    0/  0         2048
root @uksd3 #

We can see that this Virtual Partition is currently down. This is to be expected, as the next task I need to perform is to install the software onto the boot disk for this vPar. The problem that may become apparent is that there is no BCH interface for this vPar. The BCH interface pertains to the original server/nPar. Consequently, I need to use the vparboot command to boot the subsequent vPars from the Ignite-UX server. Once booted, we should navigate to the console for this partition (accessed via the system console and using the ctrl-a key sequence) and continue with the installation of HP-UX.

root @uksd3 #vparboot -p vPar1 -I hpwin050,/opt/ignite/boot/WINSTALL
vparboot: Booting vPar1.  Please wait...
root @uksd3 #
root @uksd3 #
[MON] vPar1 loaded
root @uksd3 # <ctrl-a>
[vPar1]
gate64: sysvec_vaddr = 0xc0002000 for 2 pages
NOTICE: nfs3_link(): File system was registered at index 4.
NOTICE: autofs_link(): File system was registered at index 6.
NOTICE: cachefs_link(): File system was registered at index 7.

    Host is virtual System Console slave
    Swap device table:  (start & size given in 512-byte blocks)
        entry 0 - auto-configured on root device; ignored - no room
WARNING: no swap device configured, so dump cannot be defaulted to primary swap.
WARNING: No dump devices are configured.  Dump is disabled.
read_ss_nvm: Cannot validate NVM - -2
Starting the STREAMS daemons-phase 1
Create STCP device files
Starting the STREAMS daemons-phase 2
       $Revision: vmunix:    vw: -proj    selectors: CUPI80_BL2000_1108 -c 'V
w for CUPI80_BL2000_1108 build' -- cupi80_bl2000_1108 'CUPI80_BL2000_1108'  Wed Nov  8 19:24:56 PST 2000 $
Memory Information:
    physical page size = 4096 bytes, logical page size = 4096 bytes
    Physical: 2013184 Kbytes, lockable: 1490464 Kbytes, available: 1727340 Kbytes

=======  11/05/03 21:19:27 EST  HP-UX Installation Initialization. (Wed Nov 05 21:19:27 EST 2003)
       @(#) Ignite-UX Revision B.4.4.29
       @(#) install/init (opt) $Revision: 10.277 $
     * Scanning system for IO devices...

    System Console is virtual
     * Querying disk device: 2/0/4/0/0.8.0 ...
     * Querying disk device: 2/0/4/0/0.10.0 ...
NOTE:  Default (boot) source does not appear to be a valid (or complete)
       install source, switching source to Network
     * Setting keyboard language.
NOTE:
       The console firmware terminal type is currently set to "vt100". If you
       are using any other type of terminal you will see "garbage" on the
       screen following this message.
       If this is the case, you will need to either change the terminal type
       set in the firmware via GSP (if your GSP firmware version supports
       this feature), or change your terminal emulation to match the
       firmware. In either case you will need to restart if your terminal and
       the firmware terminal type do not match.
       Press the 'b' key if you want to reboot now.



                        Welcome to Ignite-UX!

 Use the <tab> key to navigate between fields, and the arrow keys
 within fields.  Use the <return/enter> key to select an item.
 Use the <return/enter> or <space-bar> to pop-up a choices list.  If the
 menus are not clear, select the "Help" item for more information.

 Hardware Summary:         System Model: 9000/800/SD32000
 +---------------------+----------------+-------------------+ [ Scan Again  ]
 | Disks: 2  ( 67.8GB) |  Floppies: 0   | LAN cards:   1    |
 | CD/DVDs:        0   |  Tapes:    0   | Memory:    1966Mb |
 | Graphics Ports: 0   |  IO Buses: 3   | CPUs:        3    | [ H/W Details ]
 +---------------------+----------------+-------------------+

                       [      Install HP-UX       ]

                       [   Run a Recovery Shell   ]

                       [    Advanced Options      ]

          [  Reboot  ]                              [  Help  ]

We are using the vparboot command to instigate the installation of HP-UX. Subsequent boots for this vPar will normally be handled by vpmon. The other times we use vparboot are when a vPar is in a down state (after issuing a command such as shutdown –h) and we want to restart HP-UX.

As with any installation, setting up the Operating System and third party software on a Virtual Partition can take some considerable time. Once we have installed HP-UX, the Virtual Partition software, all relevant patches and all relevant third-party applications, each Virtual Partition will function in the same way as any standard HP-UX server.

root @uksd5 #vparstatus
[Virtual Partition]
                                                                          Boot
Virtual Partition Name       State Attributes Kernel Path               Opts
============================ ===== ========== ========================= =====
vPar0                          Up    Dyn,Auto   /stand/vmunix
vPar1                          Up    Dyn,Auto   /stand/vmunix

[Virtual Partition Resource Summary]
                                           CPU    Num        Memory (MB)
                                  CPU     Bound/   IO   # Ranges/
Virtual Partition Name          Min/Max  Unbound  devs  Total MB    Total MB
==============================  ================  ====  ====================
vPar0                             1/  2    1   1    10    0/  0         2048
vPar1                             1/  2    1   1     5    0/  0         2048
root @uksd5 #

As we can see, our second partition is now up and running. We can also check which processors are visible to this partition, as well as which processors have been allocated.

root @uksd5 #ioscan -fnkC processor
Class       I  H/W Path  Driver    S/W State H/W Type  Description
===================================================================
processor   0  2/11      processor CLAIMED   PROCESSOR Processor
processor   1  2/12      processor CLAIMED   PROCESSOR Processor
processor   2  2/13      processor CLAIMED   PROCESSOR Processor
root @uksd5 #

Again, this makes some kind of sense, as the kernel can see bound as well as all unbound processors.

root @uksd5 #vparstatus -vp vPar1
[Virtual Partition Details]
Name:         vPar1
State:        Up
Attributes:   Dynamic,Autoboot
Kernel Path:  /stand/vmunix
Boot Opts:

[CPU Details]
Min/Max:  1/2
Bound by User [Path]:  2.12
Bound by Monitor [Path]:
Unbound [Path]:  2.13

[IO Details]
   2.0.4
   2.0.6
   2.0.9
   2.0.8
   2.0.4.0.0.8.0  BOOT

[Memory Details]
Specified [Base  /Range]:
          (bytes) (MB)
Total Memory (MB):  2048
root @uksd5 #

Here we can confirm which processors have actually been allocated to this partition. We can now move on and discuss managing Virtual Partitions.

Managing Hardware within a Virtual Partition

We now have two vPars up and running:

root @uksd5 #vparstatus
[Virtual Partition]
                                                                          Boot
Virtual Partition Name       State Attributes Kernel Path               Opts
============================ ===== ========== ========================= =====
vPar0                          Up    Dyn,Auto   /stand/vmunix
vPar1                          Up    Dyn,Auto   /stand/vmunix
[Virtual Partition Resource Summary]
                                           CPU    Num        Memory (MB)
                                  CPU     Bound/   IO   # Ranges/
Virtual Partition Name          Min/Max  Unbound  devs  Total MB    Total MB
==============================  ================  ====  ====================
vPar0                             1/  2    1   1    10    0/  0         2048
vPar1                             1/  2    1   1     5    0/  0         2048
root @uksd5 #

At present, the only hardware we can manage without forcing a reboot of a vPar or the underlying server/nPar are unbound CPUs. A bound CPU handles interrupts and as such cannot be moved from a running vPar. The process of moving an unbound CPU is not as difficult as it might at first seem. Here's a quick recap on where we are currently:

  • In our initial configuration, we stipulated a total number of CPUs for each vPar to = 2.

  • We specified a minimum and maximum number of CPUs we wanted to maintain for our vPar (this is optional, but allows us to maintain a minimum and a maximum configuration).

  • We specified the specific CPU(s) by hardware address that were bound CPUs. Currently we have no control over which unbound CPUs will be selected for inclusion in our vPar.

To remove an unbound CPU from a vPar, we can simply delete a specified number of CPUs.

root @uksd3 #vparstatus
[Virtual Partition]
                                                                          Boot
Virtual Partition Name       State Attributes Kernel Path               Opts
============================ ===== ========== ========================= =====
vPar0                          Up    Dyn,Auto   /stand/vmunix
vPar1                          Up    Dyn,Auto   /stand/vmunix

[Virtual Partition Resource Summary]
                                           CPU    Num        Memory (MB)
                                  CPU     Bound/   IO   # Ranges/
Virtual Partition Name          Min/Max  Unbound  devs  Total MB    Total MB
==============================  ================  ====  ====================
vPar0                             1/  2    1   1    10    0/  0         2048
vPar1                             1/  2    1   1     5    0/  0         2048
root @uksd3 #vparstatus -w
The current virtual partition is vPar0.
root @uksd3 #vparmodify –p vPar1 –d cpu::1
root @uksd3 #
root @uksd3 #vparstatus
[Virtual Partition]
                                                                          Boot
Virtual Partition Name       State Attributes Kernel Path               Opts
============================ ===== ========== ========================= =====
vPar0                          Up    Dyn,Auto   /stand/vmunix
vPar1                          Up    Dyn,Auto   /stand/vmunix

[Virtual Partition Resource Summary]
                                           CPU    Num        Memory (MB)
                                  CPU     Bound/   IO   # Ranges/
Virtual Partition Name          Min/Max  Unbound  devs  Total MB    Total MB
==============================  ================  ====  ====================
vPar0                             1/  2    1   1    10    0/  0         2048
vPar1                             1/  2    1   0     5    0/  0         2048
root @uksd3 #

The first thing to note is that we can manage any partition from any other partition.

We could have deleted a CPU by modifying the total number of CPUs assigned to the vPar (e.g., vparmodify –p vPar –m cpu::1). This would have effectively deleted 1 CPU. In our configuration, both commands are effectively equivalent. Deleting a CPU by hardware address implies removing a bound CPU, which requires the vPar to be down.

We can now view available resources that are not assigned to any vPar:

root @uksd3 #vparstatus -A
[Unbound CPUs (path)]:  2.13
[Available CPUs]:  1

[Available I/O devices (path)]:  <none>

[Unbound memory (Base  /Range)]:
                (bytes) (MB)
[Available memory (MB)]:  0
root @uksd3 #

In a similar fashion, we can modify the total number of CPUs in vPar0 to allow us to include the available CPU:

root @uksd3 #vparmodify -p vPar0 -m cpu::3
vparmodify Error: "-m cpu::3": Total CPUs would exceed configured maximum.
root @uksd3 #

This error message makes sense. As part of our configuration, we decided to specify a maximum and minimum number of processors per partition. That part of the configuration was optional. Here we can see the effect it has on future configuration changes. Now we need to modify the maximum number of processors before modifying the total number of processors for this partition. The problem with modifying the maximum number of processors is that it requires the partition to be down.

root @uksd3 #vparstatus -w
The current virtual partition is vPar0.
root @uksd3 #
root @uksd3 #vparmodify -p vPar0 -m cpu:::1:5
vparmodify: Error: Virtual partition vPar0 must be in the Down state.
root @uksd3 #
root @uksd3 #shutdown -h now

SHUTDOWN PROGRAM
11/07/03 02:13:32 GMT

Broadcast Message from root (console) Fri Nov  7 02:13:32...
SYSTEM BEING BROUGHT DOWN NOW ! ! !
...

root @uksd5 #vparstatus
[Virtual Partition]
                                                                          Boot
Virtual Partition Name       State Attributes Kernel Path               Opts
============================ ===== ========== ========================= =====
vPar0                          Down  Dyn,Auto   /stand/vmunix
vPar1                          Up    Dyn,Auto   /stand/vmunix

[Virtual Partition Resource Summary]
                                           CPU    Num        Memory (MB)
                                  CPU     Bound/   IO   # Ranges/
Virtual Partition Name          Min/Max  Unbound  devs  Total MB    Total MB
==============================  ================  ====  ====================
vPar0                             1/  2    1   1    10    0/  0         2048
vPar1                             1/  2    1   0     5    0/  0         2048
root @uksd5 #vparmodify -p vPar0 -m cpu:::1:5
root @uksd5 #vparstatus
[Virtual Partition]
                                                                          Boot
Virtual Partition Name         State Attributes Kernel Path               Opts
============================== ===== ========== ========================= =====
vPar0                          Down  Dyn,Auto   /stand/vmunix
vPar1                          Up    Dyn,Auto   /stand/vmunix

[Virtual Partition Resource Summary]
                                           CPU    Num        Memory (MB)
                                  CPU     Bound/   IO   # Ranges/
Virtual Partition Name          Min/Max  Unbound  devs  Total MB    Total MB
==============================  ================  ====  ====================
vPar0                             1/  5    1   1    10    0/  0         2048
vPar1                             1/  2    1   0     5    0/  0         2048
root @uksd5 #
root @uksd5 #vparboot -p vPar0
vparboot: Booting vPar0.  Please wait...
root @uksd5 # [MON] Console server set to vPar0

[vPar1]

[MON] vPar0 loaded

root @uksd5 #
root @uksd5 #vparstatus
[Virtual Partition]
                                                                          Boot
Virtual Partition Name       State Attributes Kernel Path               Opts
============================ ===== ========== ========================= =====
vPar0                          Up    Dyn,Auto   /stand/vmunix
vPar1                          Up    Dyn,Auto   /stand/vmunix

[Virtual Partition Resource Summary]
                                           CPU    Num        Memory (MB)
                                  CPU     Bound/   IO   # Ranges/
Virtual Partition Name          Min/Max  Unbound  devs  Total MB    Total MB
==============================  ================  ====  ====================
vPar0                             1/  5    1   1    10    0/  0         2048
vPar1                             1/  2    1   0     5    0/  0         2048
root @uksd5 #
root @uksd5 #
root @uksd5 #vparmodify -p vPar0 -m cpu::3
root @uksd5 #vparstatus
[Virtual Partition]
                                                                          Boot
Virtual Partition Name       State Attributes Kernel Path               Opts
============================ ===== ========== ========================= =====
vPar0                          Up    Dyn,Auto   /stand/vmunix
vPar1                          Up    Dyn,Auto   /stand/vmunix
[Virtual Partition Resource Summary]
                                           CPU    Num        Memory (MB)
                                  CPU     Bound/   IO   # Ranges/
Virtual Partition Name          Min/Max  Unbound  devs  Total MB    Total MB
==============================  ================  ====  ====================
vPar0                             1/  5    1   2    10    0/  0         2048
vPar1                             1/  2    1   0     5    0/  0         2048
root @uksd5 #
root @uksd3 #vparstatus -w
The current virtual partition is vPar0.
root @uksd3 #vparstatus -vp vPar0
[Virtual Partition Details]
Name:         vPar0
State:        Up
Attributes:   Dynamic,Autoboot
Kernel Path:  /stand/vmunix
Boot Opts:

[CPU Details]
Min/Max:  1/5
Bound by User [Path]:  2.10
Bound by Monitor [Path]:
Unbound [Path]:  2.11
                 2.13

[IO Details]
   2.0.0
   2.0.1
   2.0.2
   2.0.3
   2.0.10
   2.0.11
   2.0.12
   2.0.14
   2.0.1.0.0.0.0  BOOT
   2.0.11.0.0.3.0  ALTBOOT

[Memory Details]
Specified [Base  /Range]:
          (bytes) (MB)
Total Memory (MB):  2048
root @uksd3 #

The additional CPU allocated to vPar0 is now available to the scheduler to allocate to threads/processes. Similarly, vPar1 now has less processing power at its disposal. We need to understand the implications of such a change before we start, don't we?

We can manage other hardware in a Virtual Partition in a similar fashion except that for any changes to IO and memory requirements, the vPar must be in a down state. In this example, I ran shutdown –h now on vPar0 to take it to a down state:

root @uksd5 #vparstatus -w
The current virtual partition is vPar1.
root @uksd5 #vparstatus
[Virtual Partition]
                                                                          Boot
Virtual Partition Name       State Attributes Kernel Path               Opts
============================ ===== ========== ========================= =====
vPar0                          Down  Dyn,Auto   /stand/vmunix
vPar1                          Up    Dyn,Auto   /stand/vmunix

[Virtual Partition Resource Summary]
                                           CPU    Num        Memory (MB)
                                  CPU     Bound/   IO   # Ranges/
Virtual Partition Name          Min/Max  Unbound  devs  Total MB    Total MB
==============================  ================  ====  ====================
vPar0                             1/  5    1   2    10    0/  0         2048
vPar1                             1/  2    1   0     5    0/  0         2048
root @uksd5 #
root @uksd5 #vparstatus -vp vPar0
[Virtual Partition Details]
Name:         vPar0
State:        Down
Attributes:   Dynamic,Autoboot
Kernel Path:  /stand/vmunix
Boot Opts:

[CPU Details]
Min/Max:  1/5
Bound by User [Path]:  2.10
Bound by Monitor [Path]:
Unbound [Path]:  <no path>
                 <no path>

[IO Details]
   2.0.0
   2.0.1
   2.0.2
   2.0.3
   2.0.10
   2.0.11
   2.0.12
   2.0.14
   2.0.1.0.0.0.0  BOOT
   2.0.11.0.0.3.0  ALTBOOT

[Memory Details]
Specified [Base  /Range]:
          (bytes) (MB)
Total Memory (MB):  2048
root @uksd5 #

I can now remove an IO device (an LBA) using vparmodify:

root @uksd5 #vparmodify -p vPar0 -d io:2/0/14
root @uksd5 #
root @uksd5 #vparstatus -vp vPar0
[Virtual Partition Details]
Name:         vPar0
State:        Down
Attributes:   Dynamic,Autoboot
Kernel Path:  /stand/vmunix
Boot Opts:

[CPU Details]
Min/Max:  1/5
Bound by User [Path]:  2.10
Bound by Monitor [Path]:
Unbound [Path]:  <no path>
                 <no path>

[IO Details]
   2.0.0
   2.0.1
   2.0.2
   2.0.3
   2.0.10
   2.0.11
   2.0.12
   2.0.1.0.0.0.0  BOOT
   2.0.11.0.0.3.0  ALTBOOT

[Memory Details]
Specified [Base  /Range]:
          (bytes) (MB)
Total Memory (MB):  2048
root @uksd5 #
root @uksd5 #vparstatus -A
[Unbound CPUs (path)]:  2.11
                        2.13
[Available CPUs]:  0
[Available I/O devices (path)]:  2.0.14

[Unbound memory (Base  /Range)]:  0x8000000/64
                (bytes) (MB)      0x84000000/1984
[Available memory (MB)]:  0
root @uksd5 #

We can now add this IO device to vPar1 if we want, although this would require that we restart vPar0 (use the vparboot –p vPar0 command) and then take vPar1 to a down state.

root @uksd5 #vparboot -p vPar0
vparboot: Booting vPar0.  Please wait...
root @uksd5 #[MON] Console server set to vPar0

[MON] vPar0 loaded

root @uksd5 #
root @uksd5 #vparstatus -w
The current virtual partition is vPar1.
root @uksd5 #shutdown -h now

SHUTDOWN PROGRAM
11/07/03 02:41:59 GMT

Broadcast Message from root (console) Fri Nov  7 02:41:59...
SYSTEM BEING BROUGHT DOWN NOW ! ! !
...

root @uksd3 #vparstatus
[Virtual Partition]
                                                                          Boot
Virtual Partition Name       State Attributes Kernel Path               Opts
============================ ===== ========== ========================= =====
vPar0                          Up    Dyn,Auto   /stand/vmunix
vPar1                          Down  Dyn,Auto   /stand/vmunix

[Virtual Partition Resource Summary]
                                           CPU    Num        Memory (MB)
                                  CPU     Bound/   IO   # Ranges/
Virtual Partition Name          Min/Max  Unbound  devs  Total MB    Total MB
==============================  ================  ====  ====================
vPar0                             1/  5    1   2     9    0/  0         2048
vPar1                             1/  2    1   0     5    0/  0         2048
root @uksd3 #
root @uksd3 #vparmodify -p vPar1 -a io:2/0/14
root @uksd3 #
root @uksd3 #vparstatus -vp vPar1
[Virtual Partition Details]
Name:         vPar1
State:        Down
Attributes:   Dynamic,Autoboot
Kernel Path:  /stand/vmunix
Boot Opts:
[CPU Details]
Min/Max:  1/2
Bound by User [Path]:  2.12
Bound by Monitor [Path]:
Unbound [Path]:

[IO Details]
   2.0.4
   2.0.6
   2.0.9
   2.0.8
   2.0.4.0.0.8.0  BOOT
   2.0.14

[Memory Details]
Specified [Base  /Range]:
          (bytes) (MB)
Total Memory (MB):  2048
root @uksd3 #
root @uksd3 #vparboot -p vPar1
vparboot: Booting vPar1.  Please wait...
root @uksd3 #
[MON] vPar1 loaded

root @uksd3 #

The only issue we haven't discussed here is deleting a vPar. I will cover that toward the end of this section.

Adding/removing cells to an nPar running vPars

If we want to effect a change to an nPar that will change the underlying cell assignment, we can do so while vpmon is up and running. The tricky part of this configuration is being able to step back and realize that in fact we are running vPars from within an nPar:

root @uksd3 #parstatus -w
The local partition number is 2.
root @uksd3 #
root @uksd3 #parstatus -P
[Partition]
Par              # of  # of I/O
Num Status       Cells Chassis  Core cell  Partition Name (first 30 chars)
=== ============ ===== ======== ========== ===============================
 0  active         1      1     cab0,cell0 uksd1
 1  active         1      1     cab0,cell4 uksd2
 2  active         1      1     cab0,cell2 uksd3
root @uksd3 #

In our configuration, we are running two vPars within nPar = 2 (partition name = uksd3). From here we can effect changes to the nPar, i.e., adding and/or removing cells using standard nPar management techniques.

root @uksd3 #parstatus -AC
[Cell]
                        CPU     Memory                              Use
                        OK/     (GB)                        Core    On
Hardware   Actual       Deconf/ OK/                         Cell    Next Par
Location   Usage        Max     Deconf    Connected To      Capable Boot Num
========== ============ ======= ========= ================= ======= ==== ===
cab0,cell1 absent       -       -         -                   -       -    -
cab0,cell3 absent       -       -         -                   -       -    -
cab0,cell5 absent       -       -         -                   -       -    -
cab0,cell6 inactive     4/0/4    4.0/ 0.0 cab0,bay0,chassis3  yes     -    -
cab0,cell7 absent       -       -         -                   -       -    -

root @uksd3 #
root @uksd3 #parmodify -p 2 -a 6:::

In order to activate any cell that has been newly added,
reboot the partition with the -R option.
Command succeeded.
root @uksd3 #

As we can see, there is now a pending change in the SCCD and all the Virtual Partitions are up and running. If we were simply to reboot the current vPar, even with the –R option, the reboot-for-reconfig would not take effect until all other vPars had been halted. Only then will vpmon be rebooted allowing the nPar to be rebooted and the new SCCD pushed out by the GSP. As you can imagine, this needs to be planned well in advance. The process of rebooting all vPars can take some considerable time.

root @uksd3 #shutdown -R now

SHUTDOWN PROGRAM
11/07/03 03:20:02 GMT

Broadcast Message from root (console) Fri Nov  7 03:20:02...
SYSTEM BEING BROUGHT DOWN NOW ! ! !
..
[vPar1]
[MON] vPar0 has halted.


root @uksd5 #
root @uksd5 #shutdown -ry now

SHUTDOWN PROGRAM
11/07/03 03:24:02 GMT

Broadcast Message from root (console) Fri Nov  7 03:24:02...
SYSTEM BEING BROUGHT DOWN NOW ! ! !
...
Note: If this is a partitionable system, the requested reconfiguration will not
take place until all the virtual partitions on this hard partition are shut down
and the virtual partition monitor is rebooted.
...

Closing open logical volumes...
Done

Cells has been reset and are ready for reconfiguration (Boot Is Blocked (BIB) is
set).

 Please check Virtual Front Panel (VFP) for reset status.


Reboot for reconfiguration returned 2


Cells have been reset (Boot Is Blocked (BIB) is not set).


[MON]
[MON] vPar1 has halted.
All partitions have halted. System will now reboot for reconfiguration.

Once the nPar has rebooted, we have a new pool of available resources with which to manage our vPars.

Firmware Version  35.4

Duplex Console IO Dependent Code (IODC) revision 1
   --------------------------------------------------------------------------
     (c) Copyright 1995-2002, Hewlett-Packard Company, All rights reserved
   --------------------------------------------------------------------------


          Cab/      Cell      ------- Processor --------    Cache Size
    Cell  Slot      State      #    Speed       State      Inst    Data
    ----  ----  ------------  ---  --------  -----------  ------  ------
      2   0/2   Active         0   552  MHz  Active       512 KB  1 MB
                               1   552  MHz  Idle         512 KB  1 MB
                               2   552  MHz  Idle         512 KB  1 MB
                               3   552  MHz  Idle         512 KB  1 MB
      6   0/6   Idle           0   552  MHz  Idle         512 KB  1 MB
                               1   552  MHz  Idle         512 KB  1 MB
                               2   552  MHz  Idle         512 KB  1 MB
                               3   552  MHz  Idle         512 KB  1 MB


     Primary Boot Path:  2/0/1/0/0.0
          Boot Actions:  Boot from this path.
                         If unsuccessful, go to next path.

HA Alternate Boot Path:  2/0/4/0/0.8
          Boot Actions:  Boot from this path.
                         If unsuccessful, go to BCH.

   Alternate Boot Path:  2/0/4/0/0.8
          Boot Actions:  Skip this path.
                         Go to BCH.

          Console Path:  2/0/0/0/0.0


Attempting to boot using the primary path.
-------------------------------------------------------------


 To discontinue, press any key within 10 seconds.

 10 seconds expired.
 Proceeding...


Initializing boot Device.


Boot IO Dependent Code (IODC) Revision 0


Boot Path Initialized.


HARD Booted.

ISL Revision A.00.43  Apr 12, 2000

ISL booting  hpux /stand/vpmon -a

Boot
: disk(2/0/1/0/0.0.0.0.0.0.0;0)/stand/vpmon
614400 + 168736 + 16898800 start 0x23000
[MON] Booting vPar1...
[MON] Booting vPar0...
[MON] Console client set to vPar1

[MON] vPar1 loaded
[MON] Console server set to vPar0
...
root @uksd3 #vparstatus -A
[Unbound CPUs (path)]:  6.10
                        6.11
                        6.12
                        6.13
[Available CPUs]:  4

[Available I/O devices (path)]:  6.0
                                 6.0.0
                                 6.0.1
                                 6.0.2
                                 6.0.3
                                 6.0.4
                                 6.0.6
                                 6.0.8
                                 6.0.9
                                 6.0.10
                                 6.0.11
                                 6.0.12
                                 6.0.14

[Unbound memory (Base  /Range)]:  0x0/64
                (bytes) (MB)      0xc000000/4032
[Available memory (MB)]:  4096
root @uksd3 #

Rebooting vpmon

We have seen in the previous section that we can shut down and restart vPars independent of each other. The shutdown and restarts are all occurring while vpmon is still loaded in memory, managing all existing vPars. There are times when we want to restart the vmpon itself. The main reason for restarting vpmon is to perform maintenance on the underlying server/nPar, e.g., you want to add additional hardware to an existing server/nPar. In such a situation, we will need to shut down all vPars to a down state (shutdown –h now on all vPars). This will leave us interacting directly with vpmon; at the MON> prompt on the console. From here we can reboot/halt vpmon itself.

root @uksd3 #vparstatus
[Virtual Partition]
                                                                          Boot
Virtual Partition Name       State Attributes Kernel Path               Opts
============================ ===== ========== ========================= =====
vPar0                          Up    Dyn,Auto   /stand/vmunix
vPar1                          Down  Dyn,Auto   /stand/vmunix

[Virtual Partition Resource Summary]
                                           CPU    Num        Memory (MB)
                                  CPU     Bound/   IO   # Ranges/
Virtual Partition Name          Min/Max  Unbound  devs  Total MB    Total MB
==============================  ================  ====  ====================
vPar0                             1/  5    1   2     9    0/  0         2048
vPar1                             1/  2    1   0     6    0/  0         2048
root @uksd3 #shutdown -h now

SHUTDOWN PROGRAM
11/07/03 02:51:52 GMT

Broadcast Message from root (console) Fri Nov  7 02:51:52...
SYSTEM BEING BROUGHT DOWN NOW ! ! !
...
System shutdown time has arrived


[MON]
[MON] vPar0 has halted.
MON>
MON> ?

Supported Commands:

?                Print list of commands
cat              Dump contents of file to screen
cbuf             Dump contents of console buffer
getauto          Print the AUTO file
help             Print list of commands
lifls            List files in LIF directory
log              View the event log
ls               List files in a directory
readdb           Read a partition DB
reboot           Reboot system
scan             Scan the system
toddriftreset    Reset the TOD drift of all vpars
vparload         Load vPar
vparinfo         Display vPar info
bootpath         Display monitor boot path

MON>

A REBOOT will reboot vpmon. This would give us the opportunity to interact with the boot-up of the server/n-Par via the system console. At that time, we could interrupt the boot sequence in order to manage the server/n-Par (power-cycle the server or PE the necessary hardware components) to implement the changes that required us to reboot vpmon. To restart an nPar, we will need to use the GSP BO command.

MON> vparload -all
[MON] Booting vPar1...
[MON] Booting vPar0...

Interfacing with the Virtual Partition Monitor: vpmon

Normally, we don't interact directly with vpmon; it is loaded in memory, managing all vPar resources, but ostensibly not a visible resource within an individual partition. In some instances, we may want to interact with vpmon in order to boot individual vPars to investigate a problem that is not allowing a specific vPar to boot. We can interact with vpmon by either halting all of our existing vPars or by interacting with ISL and stipulating that hpux should only load vpmon and nothing else:

Main Menu: Enter command or menu > bo pri

     Primary Boot Path:  2/0/1/0/0.0


 Do you wish to stop at the ISL prompt prior to booting? (y/n) >> y

Initializing boot Device.


Boot IO Dependent Code (IODC) Revision 0


Boot Path Initialized.


HARD Booted.

ISL Revision A.00.43  Apr 12, 2000

ISL>
ISL> hpux /stand/vpmon

Boot
: disk(2/0/1/0/0.0.0.0.0.0.0;0)/stand/vpmon
614400 + 168736 + 16898800 start 0x23000

Welcome to VPMON (type '?' for a list of commands)

MON> ?

Supported Commands:

?                Print list of commands
cat              Dump contents of file to screen
cbuf             Dump contents of console buffer
getauto          Print the AUTO file
help             Print list of commands
lifls            List files in LIF directory
log              View the event log
ls               List files in a directory
readdb           Read a partition DB
reboot           Reboot system
scan             Scan the system
toddriftreset    Reset the TOD drift of all vpars
vparload         Load vPar
vparinfo         Display vPar info
bootpath         Display monitor boot path

MON>

From here we can issue commands such as vparinfo and ls to investigate the underlying vPar configuration.

MON> vparinfo

Resources not assigned to any partition
-------------------------------------
2           0xfffffffffc200000      1       0  TYPE=14  SV_MODEL=170
2/0         0xfffffff848000000      1       0  TYPE= 7  SV_MODEL= 12
2/5         0xfffffffffc205000      1       0  TYPE= 1  SV_MODEL=  9
2/11        0xfffffffffc27a000      1       0  TYPE= 0  SV_MODEL=  4
2/13        0xfffffffffc27e000      1       0  TYPE= 0  SV_MODEL=  4

Names of the partitions in the database:
----------------------------------------

vPar0 (down)
vPar1 (down)

Available Free Memory: 0 MB

Available MEM RANGE: 0x0000000000000000-0x00000000ffffffff (4194304 Kb)
MON>
MON> bootpath
disk(2/0/1/0/0.0.0.0.0.0.0)
MON> getauto
hpux /stand/vpmon -a

MON> ls -l
drwxr-xr-x    2 0            0                 65536 lost+found
-rw-r--r--    1 0            3                  4948 ioconfig
-rw-r--r--    1 0            3                    19 bootconf
-r--r--r--    1 0            3                  1063 system
drwxr-xr-x    2 0            3                  1024 krs
drwxr-xr-x    2 0            3                  1024 system.d
drwxr-xr-x    4 0            3                  2048 build
-rwxr-xr-x    1 0            0              28133624 vmunix
drwxrwxrwx    5 0            0                  1024 dlkm
-r--r--r--    1 0            3                    82 kernrel
-rw-------    1 0            0                    12 rootconf
drwxr-xr-x    2 0            0                  1024 krs_tmp
drwxr-xr-x    2 0            0                  1024 krs_lkg
-r--r--r--    1 0            3                  1058 system.prev
drwxrwxrwx    5 0            3                  1024 dlkm.vmunix.prev
-rwxr-xr-x    1 0            3              27239144 vmunix.prev
-r-xr-xr-x    1 2            2               1062320 vpmon
-rw-------    1 0            0              17813008 vpmon.dmp
-rw-------    1 0            0                  8232 vpdb

MON>

We can decide to load a specific vPar from vpmon using the vparload command. If we want to boot a Virtual Partition using a specific boot method, e.g., single user mode, we use the –o <boot option> option to vparload; these are effectively the options we would pass to the hpux secondary loader. Should we need to boot from a different kernel, we use the –b <kernel> option to vparload:

MON> vparload -p vPar0 -o "-is" -b /stand/vmunix
[MON] Booting vPar0...
[MON] Console client set to vPar0
[MON] Console server set to vPar0

[vPar0]

[MON] vPar0 loaded
gate64: sysvec_vaddr = 0xc0002000 for 2 pages
NOTICE: nfs3_link(): File system was registered at index 3.
NOTICE: autofs_link(): File system was registered at index 6.
NOTICE: cachefs_link(): File system was registered at index 7.
td: claimed Tachyon TL/TS Fibre Channel Mass Storage card at 2/0/12/0/0
fddi4: INITIALIZING: 0150 PCI FDDI card in slot 2/0/10/0/0
Entering cifs_init...
Initialization finished successfully... slot is 9

    Host is virtual System Console slave
Logical volume 64, 0x3 configured as ROOT
Logical volume 64, 0x2 configured as SWAP
Logical volume 64, 0x2 configured as DUMP
    Swap device table:  (start & size given in 512-byte blocks)
        entry 0 - major is 64, minor is 0x2; start = 0, size = 8388608
read_ss_nvm: Cannot validate NVM - -2
Starting the STREAMS daemons-phase 1

    System Console is virtual
Checking root file system.
log replay in progress
replay complete - marking super-block as CLEAN
Root check done.
Create STCP device files
Starting the STREAMS daemons-phase 2
                   $Revision: vmunix:    vw: -proj    selectors: CUPI80_BL2000_1108 -c 'Vw for CUPI80_BL2000_1108 build' -- cupi80_bl2000_1108
'CUPI80_BL2000_1108'  Wed Nov  8 19:24:56 PST 2000 $
Memory Information:
    physical page size = 4096 bytes, logical page size = 4096 bytes
    Physical: 2086912 Kbytes, lockable: 1565460 Kbytes, available: 1801848 Kbytes

/sbin/ioinitrc:
/sbin/krs_sysinit:



INIT: Overriding default level with level 's'
INIT: SINGLE USER MODE

INIT: Running /sbin/sh
#

Now that we are in single user mode, we can effect any changes as necessary, e.g., fixing a broken kernel or repairing a broken vg00 (use the option –o –lm to vparload to boot in maintenance mode).

Changing Partition Attributes

The attributes we may consider changing include the dynamic nature of configuration changes to a partition as well as changes to the boot commands used to boot HP-UX.

Changing configuration attributes

The two configuration options we are considering can be seen in the Attributes field of vparstatus:

root @uksd3 #vparstatus
[Virtual Partition]
                                                                          Boot
Virtual Partition Name       State Attributes Kernel Path               Opts
============================ ===== ========== ========================= =====
vPar0                          Up    Dyn,Auto   /stand/vmunix
vPar1                          Up    Dyn,Auto   /stand/vmunix

[Virtual Partition Resource Summary]
                                           CPU    Num        Memory (MB)
                                  CPU     Bound/   IO   # Ranges/
Virtual Partition Name          Min/Max  Unbound  devs  Total MB    Total MB
==============================  ================  ====  ====================
vPar0                             1/  5    1   2     9    0/  0         2048
vPar1                             1/  2    1   0     6    0/  0         2048
root @uksd3 #

Dyn means that dynamic configuration changes to the hardware configuration of the partition are allowed (limited to adding/removing unbound CPUs at present). This can be changed to static with the vparmodify command:

root @uksd3 #vparmodify -p vPar1 -S static
root @uksd3 #
root @uksd3 #vparstatus
[Virtual Partition]
                                                                          Boot
Virtual Partition Name       State Attributes Kernel Path               Opts
============================ ===== ========== ========================= =====
vPar0                          Up    Dyn,Auto   /stand/vmunix
vPar1                          Up    Stat,Auto  /stand/vmunix

[Virtual Partition Resource Summary]
                                           CPU    Num        Memory (MB)
                                  CPU     Bound/   IO   # Ranges/
Virtual Partition Name          Min/Max  Unbound  devs  Total MB    Total MB
==============================  ================  ====  ====================
vPar0                             1/  5    1   2     9    0/  0         2048
vPar1                             1/  2    1   0     6    0/  0         2048
root @uksd3 #

Auto refers to the autoboot attribute for the partition. If the attribute is set to manual, the virtual partition halts after a vparreset and does not boot when vpmon is loaded. It must then be booted manually with the vparboot command.

root @uksd3 #vparmodify -p vPar1 -B manual
root @uksd3 #
root @uksd3 #vparstatus
[Virtual Partition]
                                                                          Boot
Virtual Partition Name       State Attributes Kernel Path               Opts
============================ ===== ========== ========================= =====
vPar0                          Up    Dyn,Auto   /stand/vmunix
vPar1                          Up    Stat,Manl  /stand/vmunix

[Virtual Partition Resource Summary]
                                           CPU    Num        Memory (MB)
                                  CPU     Bound/   IO   # Ranges/
Virtual Partition Name          Min/Max  Unbound  devs  Total MB    Total MB
==============================  ================  ====  ====================
vPar0                             1/  5    1   2     9    0/  0         2048
vPar1                             1/  2    1   0     6    0/  0         2048
root @uksd3 #

Let's see what effect that has made on vPar1:

root @uksd5 #
root @uksd5 #setboot
Primary bootpath : 2/0/4/0/0.8.0
Alternate bootpath : <none>

Autoboot is OFF (disabled)
Autosearch is OFF (disabled)

Note: The interpretation of Autoboot and Autosearch has changed for
systems that support hardware partitions. Please refer to the manpage.
root @uksd5 #

As you can see, the partition autoboot attribute has a direct effect on the setboot autoboot attribute. This is because the process of booting HP-UX is now controlled by vpmon, which reads boot related settings from the Virtual Partition Database (/stand/vpdb). Personally, I think the default configuration attributes for virtual partitions of –B auto and –S dynamic are, more often than not, appropriate defaults. This leads us to the next type of attribute change we may want to consider.

Changing boot-related attributes

We may need to consider changing boot-related attributes for individual vPars. The boot-related attributes I am thinking of include boot paths and the boot string used to boot a Virtual Partition.

The configuration of boot paths for Virtual Partitions is controlled by the setboot command.

root @uksd3 #setboot
Primary bootpath : 2/0/1/0/0.0.0
Alternate bootpath : 2/0/11/0/0.3.0

Autoboot is ON (enabled)
Autosearch is ON (enabled)

Note: The interpretation of Autoboot and Autosearch has changed for
systems that support hardware partitions. Please refer to the manpage.
root @uksd3 #

A Virtual Partition has only two boot paths: the Primary and Alternate Boot Path. As with any other server, we should consider configuring the Alternate Boot Path to be the mirror of our root disk. When considering things like mirroring, we should automatically consider the boot string issued by vpmon to boot HPUX. This is normally stored in the AUTO file on our boot disk. The boot string for a Virtual Partition is stored in /stand/vpdb (remember the AUTO file on our boot disk is configured to boot /stand/vpmon when the server/nPar is booted). To change the boot string for a Virtual Partition, we use the vparmodify command:

root @uksd3 #vparmodify -p vPar1 -o "-lq"
root @uksd3 #
root @uksd3 #vparstatus -vp vPar1
[Virtual Partition Details]
Name:         vPar1
State:        Up
Attributes:   Dynamic,Autoboot
Kernel Path:  /stand/vmunix
Boot Opts:    -lq

[CPU Details]
Min/Max:  1/2
Bound by User [Path]:  2.12
Bound by Monitor [Path]:
Unbound [Path]:

[IO Details]
   2.0.4
   2.0.6
   2.0.9
   2.0.8
   2.0.4.0.0.8.0  BOOT
   2.0.14

[Memory Details]
Specified [Base  /Range]:
          (bytes) (MB)
Total Memory (MB):  2048
root @uksd3 #

The –o option effectively stores the options we would pass to the hpux secondary loader. To change the name of the default kernel to boot, we can use the –b option to vparmodify:

root @uksd3 #vparmodify -p vPar1 -b "/stand/vmunix.test"
root @uksd3 #
root @uksd3 #vparstatus -vp vPar1
[Virtual Partition Details]
Name:         vPar1
State:        Up
Attributes:   Dynamic,Autoboot
Kernel Path:  /stand/vmunix.test
Boot Opts:    -lq

[CPU Details]
Min/Max:  1/2
Bound by User [Path]:  2.12
Bound by Monitor [Path]:
Unbound [Path]:

[IO Details]
   2.0.4
   2.0.6
   2.0.9
   2.0.8
   2.0.4.0.0.8.0  BOOT
   2.0.14

[Memory Details]
Specified [Base  /Range]:
          (bytes) (MB)
Total Memory (MB):  2048
root @uksd3 #

Resetting a Virtual Partition

It is not inconceivable that an instance of HP-UX will hang, possibly due to a software or hardware fault. On a non-vPar server/n-Par, we can deal with this in two ways: We can issue a hard reset (the RS command from the GSP/console) or a soft reset (the TC command from the GSP/console, invoking a system crashdump). If we perform either of these tasks on a vPar-enabled server/n-Par, we will reset all vPars and vpmon … not a good idea. If we want to issue a hard or soft reset on an individual vPar, we use the vparreset command. The –h option is a hard reset (the RS command). The –t option is a soft reset (the TC command).

root @uksd3 #vparreset -p vPar1 -t
Reset virtual partition vPar1? [n]  y
******** TOC -- Processor 2: HPA 0xfffffffffc27c000  Entity ID: 10 *********
General Registers 0 - 31
00-03  0000000000000000  000000000401521c  00000000043d3950  0000000000000000
04-07  0000000001540790  000000000153a000  000000000153a9b0  0000000004c48fd0
08-11  0000000004c74430  0000000004a87080  0000000004b7a080  0000000004b7c080
12-15  0000000004b7a080  0000000004b7c080  0000000004b7c080  0000000004ada1a0
16-19  0000000000000064  000000004008fd00  0000000000000000  0000000000000002
20-23  0000000000000000  0000000007ae04e0  0000000700000000  00000000049dcb80
24-27  fffffff000000000  0000000000000040  fffffff0ffffffff  0000000004b84080
28-31  fffffff0ffffffff  0000000007ae0350  0000000007ae0310  0000000004156c08

Control Registers 0 - 31
00-03  000000007d3c35f0  0000000000000000  0000000000000000  0000000000000000
04-07  0000000000000000  0000000000000000  0000000000000000  0000000000000000
08-11  000000000000ba0f  000000000000945c  00000000000000c0  0000000000000038
12-15  0000000000000000  0000000000000000  000000000400a000  fffffff0ffffffff
16-19  00000140924adab5  0000000000000000  00000000043d3950  00000000e81f1d05
20-23  000000001034001e  00000000b82e1300  000000000804021f  0000000000000000
24-27  000000000153a000  000000000465d1d6  000000004008fd00  000000004006cd80
28-31  000000000153a000  00000140921e233e  0000000000007c37  0000000007ae0310

Space Registers 0 - 7
00-03  000000000b049000  00000000024f8000  000000000a30a400  0000000000000000
04-07  0000000000000000  00000000ffffffff  0000000009886000  0000000000000000

IIA Space                    = 0000000000000000
IIA Offset                   = 00000000043d3954
CPU State                    = 0x9e000001

root @uksd3 #

The hex data is gathered from the Processor Information Module (PIM). This will be displayed whenever we perform a hard or soft reset of a vPar. After a TOC, we will find the crashdump under the directory configured to store crashdumps, /var/adm/crash by default. It should be noted that any root user logged into a vPar within a server/n-Par is able to reset any other vPar within the same server/n-Par.

Removing a Virtual Partition

root @uksd3 #vparstatus
[Virtual Partition]
                                                                          Boot
Virtual Partition Name       State Attributes Kernel Path               Opts
============================ ===== ========== ========================= =====
vPar0                          Up    Dyn,Auto   /stand/vmunix
vPar1                          Up    Dyn,Auto   /stand/vmunix

[Virtual Partition Resource Summary]
                                           CPU    Num        Memory (MB)
                                  CPU     Bound/   IO   # Ranges/
Virtual Partition Name          Min/Max  Unbound  devs  Total MB    Total MB
==============================  ================  ====  ====================
vPar0                             1/  5    1   1     9    0/  0         2048
vPar1                             1/  2    1   1     5    0/  0         2048
root @uksd3 #

In order to remove a virtual partition, it must be in a down state. After shutdown, we can remove the partition quite simply with vparremove:

root @uksd3 #vparremove -p vPar1
Remove virtual partition vPar1? [n]  y
vparremove: Error: Specified virtual partition vPar1 not in Down state. Cannot remove the virtual partition.
root @uksd3 #
...
root @uksd5 #shutdown -h now

SHUTDOWN PROGRAM
11/07/03 05:11:46 GMT

Broadcast Message from root (console) Fri Nov  7 05:11:46...
SYSTEM BEING BROUGHT DOWN NOW ! ! !
...
root @uksd3 #vparstatus
[Virtual Partition]
                                                                          Boot
Virtual Partition Name       State Attributes Kernel Path               Opts
============================ ===== ========== ========================= =====
vPar0                          Up    Dyn,Auto   /stand/vmunix
vPar1                          Down  Dyn,Auto   /stand/vmunix

[Virtual Partition Resource Summary]
                                           CPU    Num        Memory (MB)
                                  CPU     Bound/   IO   # Ranges/
Virtual Partition Name          Min/Max  Unbound  devs  Total MB    Total MB
==============================  ================  ====  ====================
vPar0                             1/  5    1   1     9    0/  0         2048
vPar1                             1/  2    1   1     5    0/  0         2048
root @uksd3 #
root @uksd3 #vparremove -p vPar1
Remove virtual partition vPar1? [n]  y
root @uksd3 #
root @uksd3 #vparstatus
[Virtual Partition]
                                                                          Boot
Virtual Partition Name       State Attributes Kernel Path               Opts
============================ ===== ========== ========================= =====
vPar0                          Up    Dyn,Auto   /stand/vmunix

[Virtual Partition Resource Summary]
                                           CPU    Num        Memory (MB)
                                  CPU     Bound/   IO   # Ranges/
Virtual Partition Name          Min/Max  Unbound  devs  Total MB    Total MB
==============================  ================  ====  ====================
vPar0                             1/  5    1   1     9    0/  0         2048
root @uksd3 #

The resources that were used by vPar1 are now available to be used by other partitions, or that's what you thought.

root @uksd3 #vparstatus -A
[Unbound CPUs (path)]:  2.12
                        2.13
[Available CPUs]:  2

[Available I/O devices (path)]:  2.0.4
                                 2.0.6
                                 2.0.8
                                 2.0.9
                                 2.0.14

[Unbound memory (Base  /Range)]:  0x0/128
                (bytes) (MB)      0xc000000/1920
[Available memory (MB)]:  2048
root @uksd3 #

As we can see, there are now two processors available, as a result of removing vPar1. If I were to attempt to use these two processors in an existing partition, the task would fail:

root @uksd3 #vparmodify -p vPar0 -m cpu::4
vparmodify Error: "-m cpu::4": One or more unbound CPUs was not available when
virtual partition vPar0 was booted. You must shut down the partition to add them.
root @uksd3 #

You might be able to deduce the reason for the error from the error message itself. What's this, a UNIX error message that actually means something? The reason for this is that when a Virtual Partition is booted, it creates an in-core table of all unbound CPUs. When vPar0 was booted, this constituted the two unbound CPUs: one in vPar0 and one in vPar1. Even though I have removed vPar1, the in-core table of unbound CPUs in vPar0 still only lists the two original unbound CPUs.

While I can allocate one of the available CPUs to vPar0, to be able to allocate the originally bound CPU from vPar1, I would have to reboot vPar0. Worth knowing I think.

root @uksd3 #vparmodify -p vPar0 -m cpu::3
root @uksd3 #vparstatus
[Virtual Partition]
                                                                          Boot
Virtual Partition Name         State Attributes Kernel Path               Opts
============================== ===== ========== ========================= =====
vPar0                          Up    Dyn,Auto   /stand/vmunix

[Virtual Partition Resource Summary]
                                           CPU    Num        Memory (MB)
                                  CPU     Bound/   IO   # Ranges/
Virtual Partition Name          Min/Max  Unbound  devs  Total MB    Total MB
==============================  ================  ====  ====================
vPar0                             1/  5    1   2     9    0/  0         2048
root @uksd3 #vparstatus -A
[Unbound CPUs (path)]:  2.12
[Available CPUs]:  1

[Available I/O devices (path)]:  2.0.4
                                 2.0.6
                                 2.0.8
                                 2.0.9
                                 2.0.14

[Unbound memory (Base  /Range)]:  0x0/128
                (bytes) (MB)      0xc000000/1920
[Available memory (MB)]:  2048
root @uksd3 #

Turning Off Virtual Partition Functionality

There may be a time when we want to temporarily turn off Virtual Partition functionality. What I mean by this is to return a server/n-Par to run pure HP-UX without vpmon being loaded and giving the server/n-Par access to all of its available hardware. It may be that we have an urgent need to have access to the complete compliment of CPU and memory in order to perform some critical processing. The steps I am going to outline do not uninstall Virtual Partitions but simply turns off the functionality temporarily.

First, we changed the default boot string on the boot disk for the server/nPar:

root @uksd3 #parstatus -w
The local partition number is 2.
root @uksd3 #parstatus -Vp 2
[Partition]
Partition Number       : 2
Partition Name         : uksd3
Status                 : active
IP address             : 0.0.0.0
Primary Boot Path      : 2/0/1/0/0.0.0
Alternate Boot Path    : 2/0/4/0/0.8.0
HA Alternate Boot Path : 2/0/4/0/0.8.0
PDC Revision           : 35.4
IODCH Version          : 5C70
CPU Speed              : 552 MHz
Core Cell              : cab0,cell2

[Cell]
                        CPU     Memory                              Use
                        OK/     (GB)                        Core    On
Hardware   Actual       Deconf/ OK/                         Cell    Next Par
Location   Usage        Max     Deconf    Connected To      Capable Boot Num
========== ============ ======= ========= ================= ======= ==== ===
cab0,cell2 active core  4/0/4    4.0/ 0.0 cab0,bay1,chassis1  yes     yes  2

[Chassis]
                                 Core Connected  Par
Hardware Location   Usage        IO   To         Num
=================== ============ ==== ========== ===
cab0,bay1,chassis1  active       yes  cab0,cell2 2

root @uksd3 #
root @uksd3 #lifcp /dev/rdsk/c0t0d0:AUTO -
hpux /stand/vpmon -a
root @uksd3 #
root @uksd3 #mkboot -a "hpux" /dev/rdsk/c0t0d0
root @uksd3 #
root @uksd3 #lifcp /dev/rdsk/c0t0d0:AUTO -
hpux
root @uksd3 #

We are now in a position to reboot vpmon. Once we reboot the server/n-Par, the AUTO file will load pure HP-UX.

root @uksd3 #shutdown -h now

SHUTDOWN PROGRAM
11/07/03 05:40:18 GMT

Broadcast Message from root (console) Fri Nov  7 05:40:19...
SYSTEM BEING BROUGHT DOWN NOW ! ! !
...

        *** FINAL System shutdown message from root@uksd3 ***
System going down IMMEDIATELY

System shutdown time has arrived


[MON]
[MON] vPar0 has halted.
MON>
MON> reboot



Firmware Version  35.4

Duplex Console IO Dependent Code (IODC) revision 1
   --------------------------------------------------------------------------
     (c) Copyright 1995-2002, Hewlett-Packard Company, All rights reserved
   --------------------------------------------------------------------------

          Cab/      Cell      ------- Processor --------    Cache Size
    Cell  Slot      State      #    Speed       State      Inst    Data
    ----  ----  ------------  ---  --------  -----------  ------  ------
      2   0/2   Active         0   552  MHz  Active       512 KB  1 MB
                               1   552  MHz  Idle         512 KB  1 MB
                               2   552  MHz  Idle         512 KB  1 MB
                               3   552  MHz  Idle         512 KB  1 MB


     Primary Boot Path:  2/0/1/0/0.0
          Boot Actions:  Boot from this path.
                         If unsuccessful, go to next path.

HA Alternate Boot Path:  2/0/4/0/0.8
          Boot Actions:  Boot from this path.
                         If unsuccessful, go to BCH.

   Alternate Boot Path:  2/0/4/0/0.8
          Boot Actions:  Skip this path.
                         Go to BCH.

          Console Path:  2/0/0/0/0.0


Attempting to boot using the primary path.
-------------------------------------------------------------
 To discontinue, press any key within 10 seconds.

 10 seconds expired.
 Proceeding...


Initializing boot Device.


Boot IO Dependent Code (IODC) Revision 0


Boot Path Initialized.


HARD Booted.

ISL Revision A.00.43  Apr 12, 2000

ISL booting  hpux

Boot
: disk(2/0/1/0/0.0.0.0.0.0.0;0)/stand/vmunix
10125312 + 1949784 + 1347720 start 0x81d7868
...
root @uksd3 #vparstatus
vparstatus: Warning: Virtual partition monitor not running, Requested resources
shown.
[Virtual Partition]
                                                                          Boot
Virtual Partition Name         State Attributes Kernel Path               Opts
============================== ===== ========== ========================= =====
vPar0                          N/A   Dyn,Auto   /stand/vmunix

[Virtual Partition Resource Summary]
                                           CPU    Num        Memory (MB)
                                  CPU     Bound/   IO   # Ranges/
Virtual Partition Name          Min/Max  Unbound  devs  Total MB    Total MB
==============================  ================  ====  ====================
vPar0                             1/  5    1   2     9    0/  0         2048
root @uksd3 #
root @uksd3 #ll /stand/vp*
-rw-------   1 root       root          4136 Nov  7 05:36 /stand/vpdb
-r-xr-xr-x   1 bin        bin        1062320 Jun 27  2002 /stand/vpmon
-rw-------   1 root       root       17813008 Nov  6 01:50 /stand/vpmon.dmp
root @uksd3 #

As we can see, Virtual Partitions functionality has been temporarily turned off. To reinstate it, we would simply reinstate the AUTO file to include the boot string “hpux /stand/vpmon –a” and reboot the server/n-Par.

It should be noted that while the server/n-Par has access to its full compliment of hardware, there is nothing stopping an administrator from accessing the data on the disks that belonged to a previous vPar.

Chapter Review

We have now looked at two of HPs solutions to partitioning: hard or node Partitions in Chapter 2 and Virtual Partitions in this chapter. These two solutions are part of HPs partitioning continuum initiative (see http://www.hp.com/products1/unix/operating/manageability/partitions/index.html). This initiative focuses on the different technologies that may be used in order to achieve a number of key benefits to an organization:

  • Saving on cost of ownership

  • Maximizing performance

  • Optimizing availability

  • Enhanced flexibility

The technologies used to achieve these goals include:

  • HyperPlexHard partitions with multiple server nodes deliver the optimum capacity at all levels by supporting the complete HP 9000 product line. A hard partition can theoretically range in size from two HP 9000 rp2400 nodes, up to hundreds of Superdome servers, resulting in extreme capacity. These partitions operate in such a manner that they can be totally isolated from other hard partitions. Multiple applications can run in these partitions, and these applications are completely isolated from the other nodes and their respective operating environments.

  • nPartitionsHard partitions within a node are called nPartitions. They are uniquely available for a number of PA-RISC and Itanium2 based servers, the most powerful HP 9000 high-end server nodes. Superdome can support anywhere from one to sixteen nPartitions. It offers hard partitions with cell granularity, each supporting its own operating system with complete software isolation.

  • Virtual PartitionsThe need exists not only to isolate operating environments so that multiple customers' applications can co-exist in the same server or cluster, but also many instances require that a number of isolated operating environments can be dynamically created on, modified on, and even deleted from a running server without interrupting non-related partitions. For this requirement, HP has developed virtual partitions—a unique technology that provides application and operating systems, and isolation that runs on single server nodes or nPartitions. Available for rp5470, rp7400, rp8400, and PA-RISC Superdome. Each virtual partition runs its own image of the HP-UX 11i operating system and can fully host its own applications, offering complete software isolation. The capability of CPU migration allows you to add and delete CPUs dynamically (without rebooting) from one virtual partition to another. It is ideal to ensure a high degree of flexibility in the fast moving Internet age.

  • Resource PartitionsHP's resource partitions are unique partitions created for workload management purposes. Resource partitions run within hard partitions and within virtual partitions. They are controlled by HP's Workload Management functions. Very often, many applications run on one server at the same time, but each application has different resource needs. HP-UX Workload Manager (WLM) and Process Resource Manager (PRM) software are used to create resource partitions dynamically for applications that need guaranteed dedicated resources, such as CPU, memory, or disk I/O. Applications with specific goals, such as response time, can use HP's goal-based HP-UX WLM to allocate automatically and dynamically the necessary resources to applications or user groups within hard partitions or virtual partitions. Unique service level objectives can be met every time.

  • Processor SetPsets are a standalone product, but when integrated with PRM, processor sets allow the system administrator to group CPUs on your system in a set and assign a PSET PRM group. Once these processors are assigned to a PSET PRM group, they are reserved for use by the applications and users assigned to that group. Using processor sets allows the system administrator to isolate applications and users that are CPU-intensive, or that need dedicated, on-demand CPU resources.

I think that's about it.

Test Your Knowledge

1:

Select the most appropriate answer:

  1. Virtual Partitions are supported on all HP server models.

  2. Cell-based server complexes support Virtual Partitions.

  3. Currently, Virtual Partitions support only HP-UX.

  4. A and B are correct.

  5. A and C are correct.

  6. B and C are correct.

  7. A, B, and C are correct.

  8. None of the answers is correct.

2:

Virtual Partitions (T1335A) is a selectable software component available on the 11i Enterprise Operating Environment installation media. As such, the software can be installed during an installation of the HP-UX Operating Software. When such a selection is made, in addition to installing the Operating System, the first Virtual Partition will be created once the Operating System is installed.

In its entirety, is the above statement True or False?

3:

Which of the following statements pertain to creating Virtual Partitions? Select all correct answers.

  1. A vPar must contain at least one bound CPU.

  2. A vPar must contain at least one unbound CPU.

  3. Every vPar requires at least 1GB of RAM.

  4. The system console for a server/nPar is used to manage all vPars configured within that server/nPar.

  5. The kernel (/stand/vmunix) is used to locate and load the Virtual Partition Monitor (vpmon) at system boot time.

4:

The partition number assigned by vparcreate/vparmgr is calculated based on existing vPars and any existing nPars, where appropriate. True or False?

5:

The scenario is as follows:

  1. An nPar has eight CPU installed and configured.

  2. We have created two vPars (vPar0 and vPar1) each with four CPU.

  3. vPar0 bound has three bound and one unbound CPU.

  4. vPar1 has two bound and two unbound CPU.

vPar0 is experiencing significant CPU performance bottleneck problems. We are attempting to remedy this situation by utilizing the spare CPU capacity in vPar1. We have read in the system documentation that we can dynamically move a CPU from one vPar to another without a reboot. Choose all the appropriate actions in order to move a bound CPU from vPar1 to vPar0.

  1. Use vparmodify to redefine the total number of CPU in both vPars and then restart vpmon.

  2. Use the kill –STOP <pid> on all processes running on the CPU that is to be reassigned and then use vparmodify to redefine the total number of CPU in both vPars.

  3. Use vparmodify to redefine the total number of CPU in both vPars.

  4. Use the OLA/R command “rad –o <CPU>” to turn the CPU OFF on vPar1 and then use “rad –i <CPU>” on vPar0 to turn the CPU on.

  5. The above can be accomplished by redefining the ioconfig file in /etc and /stand. Once redefined, it can be loaded into the kernel IO tree by using the command “ioinit –f <filename>”.

  6. Action B is required. Additionally, if we wanted to re-assign instance numbers because of the additional/new CPU, action E would also be necessary.

  7. Actions C and E need to be performed before the changes can take effect.

  8. This operation cannot be accomplished without a reboot.

Answers to Test Your Knowledge

A1:

F is correct.

A2:

False. Virtual Partitions is a separate purchasable software component that is installed, where appropriate, after the OS software is installed.

A3:

A and D are the only correct answers.

A4:

False. A vPar is NOT assigned a partition number, only a partition name.

A5:

The IMPORTANT fact in this question is that we are trying to move a BOUND CPU from one vPar to another. You cannot remove a bound CPU unless a partition is in the DOWN state. As such, the answer to the question is G.

Chapter Review Questions

1:

Give at least two reasons why you would choose to employ Virtual Partitions instead of Node Partitions.

2:

Why is it important to make a backup copy of your kernel after installing the Virtual Partition software?

3:

My existing vPar (vpar0) has four CPU. I have a serious CPU performance bottleneck in this vPar. I have analyzed all other vPars, and there is insufficient capacity to reconfigure any existing CPUs to vPar0. I have just purchased four additional CPU for my server/nPar. What steps must I perform in order to make these additional/new CPU available to vPar0?

4:

Why is it important to understand the IO requirements of each application housed in a separate vPar, before designing an overall partition configuration?

5:

It is often said that Virtual Partitions offer isolation from Operating System and application software faults. Surely, if there is a “bug” in HP-UX, it will affect all of my vPars causing all of them to crash.

Give a brief explanation as to why a Virtual Partition can offer isolation from Operating System crashes due to software “bugs.”

Answers to Chapter Review Questions

A1:

This list is not exhaustive but offers some ideas:

  1. My server does not support nPars but does support vPars.

  2. I want a finer granularity of control on how much hardware is assigned to each partition. With an nPar, I must have an entire cell and IO chassis as part of the nPar. With a vPar, I can have as few as one CPU, minimal memory, and a “few” PCI cards. On a Node Partitionable server, you could create a single nPar containing all hardware components. From this nPar, you could create the necessary vPars. While this is possible, the administrator must be aware of High Availability and High Performance requirements of such a configuration.

  3. It is necessary to be able to dynamically reconfigure the number of CPU in a partition. Cell OLA/R is currently not available; hence, true dynamic cell reconfiguration is not possible in an nPar. In a vPar, we can redefine the number of CPU by adding and removing UNBOUND CPU without requiring a reboot.

A2:

Once the Virtual Partition software is installed, the kernel (/stand/vmunix) is relocatable to an address controlled by vpmon. The original kernel is not relocatable. If your kernel becomes corrupt, your current non-relocatable kernel cannot be used to boot a Virtual Partition. You would have to take other measures in order to fix a corrupted kernel in a Virtual Partition, e.g., temporarily turning off vPar functionality and manually fixing the corrupt kernel.

A3:

The important task here is to reboot vpmon. To accomplish this, all vPars need to be in a DOWN state. To accomplish this, we will:

  1. Shut down/halt all existing vPars.

  2. Use the REBOOT command to reboot vpmon.

  3. If we have an nPar, we may need to reconfigure the nPar to accommodate the new CPUs by adding additional cells (if necessary).

  4. Halt the server or PE the nPar cells affected.

  5. Install the CPUs.

  6. PE the nPar cells, if appropriate.

  7. Reboot/boot the server/nPar.

  8. Ensure that all vPars are booted.

  9. Ensure that we can see the available CPUs from vPar0.

  10. Reconfigure vPar0 (use vparmodify/vparmgr) to include the additional CPUs.

A4:

It is important to understand the IO requirements of each application housed in a separate vPar, as this will influence the proportion of bound and unbound CPUs in each vPar. A bound CPU will be able to process IO interrupts, while an unbound CPU cannot. If an application/vPar performs lots of IO, then a higher number of bound CPUs will be required. However, bound CPUs cannot be relocated to a different vPar without performing a reboot. This limitation can have an influence on the entire partition configuration as well as the flexibility in reassigning CPUs across the entire configuration.

A5:

Virtual Partitions DO offer isolation from Operating System and application software faults because they are running independent instances of the software. If a particular “bug” affects a portion of software not utilized by a particular partition, it may be that that partition never experiences the problem and never comes across the bug; e.g., the bug could be in FDDI software, and a particular vPar does not utilize any FDDI cards. It is the independence of each instance of the Operating System that provides the isolation from individual software faults.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.147.48.78