OpenVMS Notes: "Alpha to Itanium" Porting Diaries

edit: 2018-10-13

Executive Summary

The Name Game

A very brief history of Itanium

Project-01 :: HP rx2800-i2

Introduction (my first Itanium)

Day 1 (well, just a few hours one afternoon)


Itanium rx2650
(drives are vertical; beer is optional)

So what's in your Itanium?

iLO and UEFI

Survival Kit
Data Center Survival Kit

Wasted Time (caused by me)

Initial Setup

legend for my examples:
	<sr>	system response (what the system displays)
	<ur>	user response (what you should type or do)
	(text)	some action is described
	<enter>	hit the "enter" key
<ur>	(connect a serial line to the iLO port then hit <enter>)
<sr>	MP login:
<ur>	Administrator
<sr>	MP password:
<ur>	******** (this is found on a pullout tag on the front of your processor chassis)
<sr>	Hewlett-Packard Integrated Lights-Out 3 for Integrity
	(C) Copyright 1999-2013 Hewlett-Packard Development Company, L.P.
		MP Host Name: kawc0x
		iLO MP Firmware Revision 01.55.02
		 CO: Console
		VFP: Virtual Front Panel
		 CM: Command Menu
		 CL: Console Log
		 SL: Show Event Logs
		 HE: Main Help Menu
		 X: Exit Connection
	[kawc0x]</> hpiLO->
<ur>	co
<sr>	(iLo system connects to system Itanium console)

	[Use Ctrl-B or ESC-( to return to MP main menu.]

	- - - - - - - - - - Prior Console Output - - - - - - - - - -
	1,0,0,0 5400006301E10000 0000000000000000 EVN_BOOT_START
	* ROM Version : 01.95
	* ROM Date    : Fri Feb 01 03:54:28 PST 2013
	1,0,0,0 3400083701E10000 000000000002000C EVN_BOOT_CELL_JOINED_PD
	1,0,0,0 340000B101E10000 0000003C0205000C EVN_MEM_DISCOVERY
	1,0,0,0 1400002601E10000 000000000006000C EVN_BOOT_CPU_LATE_TEST_START
	1,0,1,0 1400002605E10000 000000000006000C EVN_BOOT_CPU_LATE_TEST_START
	1,0,2,0 1400002609E10000 000000000006000C EVN_BOOT_CPU_LATE_TEST_START
	1,0,3,0 140000260DE10000 000000000006000C EVN_BOOT_CPU_LATE_TEST_START
	1,0,1,1 1400002607E10000 000000000006000C EVN_BOOT_CPU_LATE_TEST_START
	1,0,2,1 140000260BE10000 000000000006000C EVN_BOOT_CPU_LATE_TEST_START
	1,0,3,1 140000260FE10000 000000000006000C EVN_BOOT_CPU_LATE_TEST_START
	1,0,0,1 1400002603E10000 000000000006000C EVN_BOOT_CPU_LATE_TEST_START
	1,0,0,0 5400020701E10000 000000000011000C EVN_EFI_START

	Press Ctrl-C now to bypass loading option ROM UEFI drivers.

	1,0,0,0 3400008101E10000 000000000007000C EVN_IO_DISCOVERY_START
	1,0,0,0 5400020B01E10000 0000000000000006 EVN_EFI_LAUNCH_BOOT_MANAGER

	(C) Copyright 1996-2010 Hewlett-Packard Development Company, L.P.

	Note, menu interfaces might only display on the primary console device.
	The current primary console device is:
	Serial PcieRoot(0x30304352)/Pci(0x1C,0x5)/Pci(0x0,0x5)
	The primary console can be changed via the 'conconfig' UEFI shell command.

	Press:  ENTER  -  Start boot entry execution
		B / b  -  Launch Boot Manager (menu interface)
		D / d  -  Launch Device Manager (menu interface)
		M / m  -  Launch Boot Maintenance Manager (menu interface)
		S / s  -  Launch UEFI Shell (command line interface)
		I / i  -  Launch iLO Setup Tool (command line interface)

	*** User input can now be provided ***

	Automatic boot entry execution will start in 7 second(s).
<ur>	s
<sr>	Searching for devices.
	HP Smart Array P410i Controller     (version 5.78)  1 Logical Drive
	Currently the controller is in RAID mode
	Launching UEFI Shell.
	UEFI Shell version 2.10 [2.0]
	Current running mode 1.1.2
	Device mapping table
	  fs0    :Removable HardDisk - Alias hd9a0b blk0
	  fs1    :Removable HardDisk - Alias hd9a0d blk1
	  blk0   :Removable HardDisk - Alias hd9a0b fs0
	  blk1   :Removable HardDisk - Alias hd9a0d fs1
	  blk2   :BlockDevice - Alias (null)
	  blk3   :Removable HardDisk - Alias (null)
	  blk4   :Removable BlockDevice - Alias (null)
	Press ESC in 1 seconds to skip startup.nsh, any other key to continue.
Caveat: this listing actually shows two initialized volumes (file systems are prefixed with "fs")
and five block structured devices (prefixed with "blk"). On a brand new system (with no optical
media present in the DVD drive) you will likely see one or more "blk" entries and zero "fs" entries.
Notice how fs0 (red) points to blk0 (red) and vice versa.
Also notice the alias names in green and purple.

Booting the OpenVMS ISO DVD from UEFI

<sr>	Shell>
<ur>	map
<sr>	(system will display known devices; initialized media will appear with fs# entries)
<ur>	(insert VMS media into the DVD drive)
	map -r
<sr>	("-r" forces the map command to rescan all the hardware) 
	(the system will display known devices; in my case "fs0:" now refers to the DVD drive)
<ur>	fs0:
<sr>	fs0:>\
<ur>	ls
<sr>	(should get a directory listing)
<ur>	cd efi\boot
<sr>	fs0:\efi\boot>
<ur>	bootia64
<sr>	(OpenVMS boots then displays the familiar 8-line installation menu)
<ur>	(use the menu to install OpenVMS on the desired drive)
	Once OpenVMS is installed, eject the DVD then reboot
	The system will reboot to UEFI but not OpenVMS (what?)
<sr>	Shell>
<ur>	map
<sr>	(system will display known devices; in my case fs0: now refers to the OpenVMS system drive)
<ur>	fs0:
<sr>	fs0:>\
<ur>	bcfg boot add 1 \EFI\VMS\VMS_LOADER.EFI "OpenVMS 8.4"
<sr>	fs0:>\
<ur>	exit
<sr>	system will drop into the UEFI menu
<ur>	B
<sr>	system will display boot menu
<ur>	choose the first entry (if you entered "add 1" above)
<sr>	system will boot OpenVMS
Question: So what just happened?
Answer  : The boot configuration command (BCFG) looked at my currently selected device (fs0) then used
	  associated drive information (1459B1241-18EB-11E5-9F2B-AA000400FEFF in my case) to make an
	  entry into position #1 of the boot configuration table. Previous entries were pushed down by
	  one position. Coles Notes Summary: we now boot by GUID rather than drive letter

Day 2 (Installing OpenVMS)

Day 3

Day 4

Day 5 (playing with RAID)

surf over to	:	(this whole paragraph was updated on 2016-02-11)
click		: SUPPORT
click		: HPE Servers, Storage and Networking 
click		: Download Drivers
type		: P410i
click		: GO
view results	: notice lots of ProLiant BL + DL products are listed
click on	: HP Smart Array P410i Controller
click		: Get drivers, software & firmware
search drop-down: look for "OpenVMS" or "OVMS" (but you will not find either)
select drop-down: "OS Independent"
result		: ~100 firmware files but nothing of use to OpenVMS or UEFI
		: You will see a lot of Linux stuff here (RPM files, etc.)
surf over to	:	(this whole paragraph was updated on 2016-02-11)
click		: SUPPORT
click		: HPE Servers, Storage and Networking
click		: Download Drivers
type		: HP Integrity rx2800 i2
click		: GO
click		: Get drivers, software & firmware
click on	: HP Integrity rx2800 i2 Rack Optimized Server
select drop-down: "OpenVMS v8.4"
result		: 9 firmware files including these 2 in the "Firmware Controller Storage" section:
		  ** CRITICAL ** SAS IO Firmware Update Package (EFI) - HP Integrity rx2800 i2 Servers
			which contains this file:
		  ** CRI2TICAL ** SAS IO Firmware Update Package for OVMS - HP Integrity rx2800 i2 Server
			which contains this file: HP-I64VMS-IOCFM_RX2800I2-V0578.ZIPEXE
			(self extracting archive for OpenVMS Itanium)

Day 6 (adding two more drives)

<sr>	Shell>
<ur>	fs0:
<sr>	fs0:>\
<ur>	cd efi\tools	(look for SAUPDATE.EFI which may be in a different place on your system)
<sr>	fs0:\efi\tools>
<ur>	saupdate get_mode p410i	(or: "saupdate get_mode all")
<sr>	The controller at 0:1:0:0 is in RAID mode
<ur>	drivers -b
<sr>	            T   D
	D           Y C I
	R           P F A
	V  VERSION  E G G #D #C DRIVER NAME                         IMAGE NAME
	== ======== = = = == == =================================== ===============
	16 0000000A B - -  1 56 PCI Bus Driver                      PciBusDxe
	1A 00000014 B - -  1  1 Serial 16550 Driver                 Serial
	68 00000001 D - -  1  - ICH Serial ATA Controller Initializ SataControllerD
	6E 0000000A B - -  1  1 AHCI Bus Driver                     AhciDxe
	6F 0000000A D - -  3  - Platform Console Management Driver  ConPlatformDxe
	70 0000000A D - -  2  - Platform Console Management Driver  ConPlatformDxe
	71 0000000A B - -  3  3 Console Splitter Driver             ConSplitterDxe
	72 0000000A B - -  2  2 Console Splitter Driver             ConSplitterDxe
	73 0000000A ? - -  -  - Console Splitter Driver             ConSplitterDxe
	74 0000000A B - -  2  2 Console Splitter Driver             ConSplitterDxe
	75 0000000A ? - -  -  - Console Splitter Driver             ConSplitterDxe
	78 0000000A ? - -  -  - UGA Console Driver                  GraphicsConsole
	79 0000000A B - -  1  1 Serial Terminal Driver              TerminalDxe
	7A 0000000A D - -  1  - VGA Class Driver                    VgaClassDxe
	7B 00000000 D - -  1  - PCI VGA Mini Port Driver            VgaMiniPort
	7C 0000000A D - -  5  - Generic Disk I/O Driver             DiskIoDxe
	7F 0000000A D - -  2  - FAT File System Driver              Fat.efi
	81 0000000A B - -  1  1 SCSI Bus Driver                     ScsiBus
	82 0000000A ? - -  -  - Scsi Disk Driver                    ScsiDisk
	Press ENTER to continue, 'q' to exit:
<ur>	<enter>
<sr>	83 00000030 ? - -  -  - Scsi Tape Driver                    ScsiTape
	84 0000000A B - -  1  3 Partition Driver(MBR/GPT/El Torito) PartitionDxe
	85 0000000A B - -  7  4 Usb Bus Driver                      UsbBusDxe
	86 0000000A D - -  2  - Usb Keyboard Driver                 UsbKbDxe
	87 00000011 ? - -  -  - Usb Mass Storage Driver             UsbMassStorageD
	88 0000000A D - -  2  - Usb Mouse Driver                    UsbMouseDxe
	89 00000020 D - -  5  - Usb Uhci Driver                     UhciDxe
	8A 00000030 D - -  2  - Usb Ehci Driver                     EhciDxe
	8C 0000000A D - -  4  - Simple Network Protocol Driver      SnpDxe
	8D 0000000A B - -  4 12 MNP Network Service Driver          MnpDxe
	8E 0000000A B - -  4  4 ARP Network Service Driver          ArpDxe
	8F 0000000A B - -  4 32 IP4 Network Service Driver          Ip4Dxe
	90 0000000A D - -  4  - IP4 CONFIG Network Service Driver   Ip4ConfigDxe
	91 0000000A B - - 24 20 UDP Network Service Driver          Udp4Dxe
	92 0000000A B - -  4  4 DHCP Protocol Driver                Dhcp4Dxe
	93 0000000A B - -  8  4 MTFTP4 Network Service              Mtftp4Dxe
	94 0000000A D - - 24  - UEFI PXE Base Code Driver           UefiPxeBcDxe
	95 0000000A D - -  4  - Tcp Network Service Driver          Tcp4Dxe
	96 0000000A ? - -  -  - iSCSI Driver                        IScsiDxe
	9C 00000350 B X X  1  2 Smart Array SAS Driver v3.50        MemoryMapped(0x
	BF 04030100 B X X  1  1 Intel(R) PRO/1000 4.3.01 PCI-E      MemoryMapped(0x
	C2 04030100 B X X  1  1 Intel(R) PRO/1000 4.3.01 PCI-E      MemoryMapped(0x
	C6 04030100 B X X  1  1 Intel(R) PRO/1000 4.3.01 PCI-E      MemoryMapped(0x
	C9 04030100 B X X  1  1 Intel(R) PRO/1000 4.3.01 PCI-E      MemoryMapped(0x
	Press ENTER to continue, 'q' to exit:
<ur>	q
<ur>	devices -b
<sr>	C  T   D
	T  Y C I
	R  P F A
	L  E G G #P #D #C Device Name
	-- - - - -- -- -- -------------------------------------
	5F R - -  -  1 56 PcieRoot(0x30304352)
	76 D - -  5  -  -<UNKNOWN>
	77 D - -  2  -  -<UNKNOWN>
	98 D - -  1  -  - PcieRoot(0x30304352)/Pci(0x0,0x0)
	99 D - -  1  -  - PcieRoot(0x30304352)/Pci(0x1,0x0)
	9A B X X  1  2  2 Smart Array P410i Controller ---------+
	9D D - -  1  -  - PcieRoot(0x30304352)/Pci(0x3,0x0)	|
	(...snip...)						|
<ur>	drvcfg							|
<sr>	Configurable Components					|
	  Drv[BF]  Ctrl[BD]  Lang[eng]				|
	  Drv[C2]  Ctrl[C0]  Lang[eng]				|
	  Drv[C6]  Ctrl[C4]  Lang[eng]				|
	  Drv[C9]  Ctrl[C7]  Lang[eng]				|
	  Drv[9C]  Ctrl[9A]  Lang[eng] <------------------------+
<ur>	drvcfg -s 9C 9A <---------------------------------------+
<sr>	Set Configuration Options
	  Drv[9C] Ctrl[9A] Lang[eng]

	 Option Rom Configuration for Arrays (ORCA), version 3.50
	 Copyright 2009 Hewlett-Packard Development Company, L.P.
	 Controller: HP Smart Array P410i
		Create Logical Drive
		View Logical Drive
		Delete Logical Drive

 Day 7 (Simplistic Benchmarks)

1000	!============================================================
	! title  : neil_100.bas
	! purpose: compare executable sizes between Alpha and Itanium
	option type=explicit
	set no prompt
	declare string junk$, long i%, j%
	when error in
	     print "number of loops? (default=10) ";
	     input junk$
	     i% = integer(junk$)
	     i% = 0
	end when
	select i%				!
	    case 1 to 100			!
	    case else				! default
		i% = 10				! default
	end select				!
	for j% = 1 to i%			!
	    print "this is test line:";j%	!
	next j%					!
	end					!
File NameAlphaItanium
NEIL_100.BAS  1KB  1KB
NEIL_100.EXE  4KB  10KB
NEIL_100.LIS  20KB  34KB
NEIL_100.OBJ  6KB  6KB

    Name                                Bytes Attributes



    Name                                Bytes Attributes

0   $READ_ONLY$                         296     PIC CON REL LCL   SHR NOEXE   RD NOWRT OCTA
1   $CODE$                              1584    PIC CON REL LCL   SHR   EXE NORD NOWRT OCTA
2   $LINK$                                    NOPIC CON REL LCL NOSHR NOEXE   RD NOWRT OCTA
3   $LITERAL$                           54      PIC CON REL LCL   SHR NOEXE   RD NOWRT OCTA
4   $ARRAY                              0     NOPIC CON REL LCL NOSHR NOEXE   RD   WRT OCTA
5   $DESC                               0     NOPIC CON REL LCL NOSHR NOEXE   RD   WRT OCTA
LabelMachineCPU clockCPUsMemory
Raid60k Line
Compile Time
Single Task Speed Up Total
DVLPAlphaServer-DS20e633 MHz2DDR2 GBMylex 960361 seconds n/a 
PROD1AlphaServer-DS20e833 MHz2 DDR4 GBRA-3000241 seconds n/a 
PROD2Itanium rx2800-i21.6 GHzone quad core
DDR264 GBP410i35 seconds10.3 times faster than DVLP
  6.9 times faster than PROD1

Day 8

Day 9 (Began porting software)

  1. Today I created directories on the Itanium to replicate our development environment on the Alpha (we do not have any commercial source code versioning tools or source code repositories)
    	[dvlp]		- files of the form:	yada.bas	(VMS-BASIC sources)
	(DCL build scripts)
    						yada.c		(DEC-C sources)
    	[dvlp.cxx}	- files of the form:	yada.cxx	(DEC-C++ sources)
    	[dvlp.fil]	- files of the form:	yada.rec	(record maps)
    						yada.opn	(file opens)
    	[dvlp.fdl]	- files of the form:	yada.fdl	(RMS fdl files used in ISAM tuning)
    	[dvlp.flb]	- files of the form:	yada.flb	(FMS form libraries)
    						yada.fms	(FMS forms)
    	[]	- files of the form:	(VMS-BASIC standalone functions)
    						yada.sub	(VMS-BASIC standalone sub programs)
    	[]	- files of the form:	(VMS-BASIC standalone includes)
    	[dvlp.mar]	- files of the form:	yada.mar	(macro assembler stuff)
    	[dvlp.sql]	- files of the form:	yada.sql	(SQL files to perform MariaDB maintenance)
	(DCL scripts to perform MariaDB maintenance)
    	[src]		- production copies of everything found in/under [dvlp]
    	[data]		- files of the form:	yada.dat	(RMS/ISAM production data files)
  2. Next, I copied over all our source code from the Alpha then prepared to run the build scripts
  3. Some very old (not yet modernized) BASIC programs reference VMS run-time libraries (STARLET.OLB) but the sources do not pick up declarations from BASIC$STARLET.TLB. These programs pickup their external symbols declarations via an include [.inc] but expect to have symbols resolved at link time where we associate them with "[.mar]symbols.obj" which is created from DCL by invoking the macro assembler like so:
            $mac [.mar]symbols.mar

    Even though we are now on a different architecture CPU, this command worked without modification.
    comment: I have got to find the time to get rid of this old crud
  4. Many of our smaller programs only contain a few external functions found in [.fun] which are compiled every time we rebuild. Some larger programs (which are continually being rebuilt) expect to find the object files associated with precompiled functions inside our custom library ICSIS_FUNCTIONS.OLB (anyone modifying an external function is responsible for updating the library). We have been using a home-brewed DCL script to create/maintain this OLB for the past 15 years starting with VAX then leading to Alpha. On Itanium this script only works once (library creation) but fails when replacing an individual module upon a subsequent pass. (you will get a weird message about your OLB not being an ELF library).
  5. I invoked a few scripts which rebuild all 200+ programs. There were ~25 failures all due to poor housekeeping (eg. they also could not be rebuilt this way on Alpha)
  6. I have one program which builds with some very strange linker messages on Itanium. This area of the code is a place where I employ sys$cmexec to call a small function which sets/changes a logical name in table LNM$SYSTEM_TABLE (Why do it this way? It is a supervisor-mode logical name which means I must first change over to executive mode; if this stand-alone program used a CLI then I could just use LIB$SET_LOGICAL; in hindsight the CLI-based approach might have been less painful).

Day 10

Day 11 (Apache woes :: part 1)

Day 12 (Apache patch)

Day 13 (my FTP woes)

I think it is safe to say that most modern systems push messages between them using SFTP (which is based upon SSH) or SOAP. However, older interfaces connected to other non-OpenVMS systems may require FTP transfers and this can be a problem. Why?

Okay so it turns out that we have two separate FTP-related issues which may force us to a third-party stack (MultiNet)

  1. Some foreign systems connect to our OpenVMS system via FTP and expect to see a UNIX-like file listing. These are programmatic transfers written using Microsoft's C# making use of the FTP API built into .NET -AND- we have had no luck getting those programmer's to change their code (they push-pull between various systems of which we are only one of many)
  2. We are required to do programmatic semi-intelligent FTP transfers to other sites so need an FTP API or FTP scripting capabilities. Here is the pseudo code:
    1. prepare to push a message file to a remote system
    2. connect to the remote system via FTP
    3. look to see if file "YADA.txt" exists
      1. If NO, then push our message
      2. If YES, then the remote system has not picked up previous file so don't overwrite it but try again in 60 seconds
      3. If still YES, then raise an alarm
    4. If this interface were rewritten today we would demand to push uniquely named files of the form "YADA-ccyymmddhhmmss.txt" but would still need to deal with problems like: "full destination disk", "unable to connect", and "receiving end not processing their inbound message files"

(our) Alpha Environment

Our existing AlphaServer DS20e employs the TCPware stack

  1. many of our inbound FTP accounts employ special ftp-specific logical names to make our system appear UNIX-like
  2. TCPware provides an "FTP Library" which is an FTP API used by high-level languages (BASIC and C in our case) to do outbound programmatic FTP transfers
  3. Some outbound FTP transfers still employ the programmatic scripting (referred to as a "take" file)

(my) Itanium Options

  1. get a TCPware license for this Itanium
  2. get a MultiNet license for this Itanium
  3. stay with TCPIP Services for OpenVMS

Day 14 (human-caused problems with SFTP)

  1. Received a trial license from Process Software then downloaded and installed MultiNet
  2. As usual, I was interrupted when configuring SSH which led to some delays in getting SFTP to work properly.
  3. I think I found a problem with FTP UNIX mode. The MultiNet version of the process logicals are supposed to work the same way as they do in TCPware but they don't. So check out this stub from LOGIN.COM script of one of the accounts needing this
    $! logicals for TCPware
    $       DEFINE TCPWARE_FTP_STRIP_VERSION                TRUE
    $! logicals for MultiNet (our Itanium box)
    $!~~~   DEFINE MULTINET_FTP_DISALLOW_UNIX_STYLE         FALSE   (bug - must be undefined)

Day 15 (gSOAP)

Day 16 (problem with the Itanium Linker)

$! link-1 does not work on Itanium
$! yields: 1 error and 4 warnings
$ link  /exec=qsrv.exe -
 [dvlpc.qsrv.objs]qsrv.obj, -
 [dvlpc.qsrv.objs]cgi.obj, -
 [dvlpc.qsrv.objs]cdescriptor.obj, -
 [dvlpc.qsrv.objs]cquery.obj, -
 [dvlpc.qsrv.objs]cstatus.obj, -
 csmis$dvlp:ICSIS_FUN_LIBRARY.OLB/library, -
 mysql055_root:[lib.ia64]libclientlib.olb/library, -
 mysql055_root:[lib.ia64]libdbug.olb/library, -
 mysql055_root:[lib.ia64]libmysys.olb/library, -
 mysql055_root:[lib.ia64]libsql.olb/library, -
 mysql055_root:[lib.ia64]libstrings.olb/library, -
 mysql055_root:[lib.ia64]libvio.olb/library, -
 mysql055_root:[lib.ia64]libyassl.olb/library, -

$! link-2 does work on Itanium
$! yields: 0 errors and 0 warnings
$ link  /exec=qsrv.exe -
 [dvlpc.qsrv.objs]qsrv.obj, -
 [dvlpc.qsrv.objs]cgi.obj, -
 [dvlpc.qsrv.objs]cdescriptor.obj, -
 [dvlpc.qsrv.objs]cquery.obj, -
 [dvlpc.qsrv.objs]cstatus.obj, -

Day 17 (Apache woes :: part 2)


New Problem

Curiosity Killed The Cat (satisfaction brought it back) Quick Fix (2015-11-13) Final Fix (2015-11-27)

Day 18 (important miscellaneous stuff)

Third Party Software (we can't live without) Other

Day 19 (supported drives limitations)

Day 20 (drive limitations removed)

Day 21 (the cutover)

What a long strange trip this has been...

Summary (so far)

Project-02 :: rx2660

Day 1 (fetch units; initial power up tests)

Day 2 (installing drives; installing OpenVMS)

Day 3 (updating firmware and other stuff)

Day 4 (optional: Installing Linux on Itanium)

Common Stuff

Comparing UEFI to EFI

At first blush you might think that the graphics-based setup associated with EFI systems may be of some use to you but you would be wrong.

Monitoring RAID drives with MSA

During my computer-room walk-through yesterday (2017-11-13), I noticed one dead drive (#6) on KAWC09.
This got me thinking: what was the best way to monitor firmware-managed drives from the OS? 
What follows is my first stab hack at this.
1) Our rx2660 hosts a P400 RAID controller.
2) Our rx2800-i2 hosts a P410i RAID controller.
3) These controllers can be set up for: JBOD (just a bunch of drives), RAID-0, or RAID-1.
4) If an optional license is entered (DVLP has such a license), the controller can also support RAID-5 and higher.
5) The controllers will be seen as “PK” devices in OpenVMS
Here is my first stab at solving the monitoring problem
KAWC09(DVLP)::Neil> sh dev pk/full
Device PKB0:, device type HP Smart Array, is online, error logging is enabled.
    Error count                    0    Operations completed                706
    Owner process                 ""    Owner UIC                      [SYSTEM]
    Owner process ID        00000000    Dev Prot              S:RWPL,O:RWPL,G,W
    Reference count                0    Default buffer size               65535
    Current preferred CPU Id       7    Fastpath                              1
    Current Interrupt CPU Id       7
Device PKA0:, device type HP LSISAS106x SAS, is online, error logging is
    Error count                    0    Operations completed                  1
    Owner process                 ""    Owner UIC                      [SYSTEM]
    Owner process ID        00000000    Dev Prot              S:RWPL,O:RWPL,G,W
    Reference count                0    Default buffer size                   0
    Current preferred CPU Id       6    Fastpath                              1
    Current Interrupt CPU Id       6
    SAS Address 5006-0000-0001-C270
KAWC09(DVLP)::Neil> sas :== $sys$system:sas$util.exe
KAWC09(DVLP)::Neil> msa :== $sys$system:msa$util.exe
KAWC09(DVLP)::Neil> msa
MSA> set controller pkb0
MSA> sho disks
SAS device                                              [Disk]
Disk 8: bus: 1, Target id: 0, Port: 1I,  Box/Enclosure: 0, Bay: 8,  size 136.73 [146.82]GB
  Disk 8, # 0, size 286677120 blocks, (136.70 [146.78] GB), Unit 2.
  Disk 8, # 1, size 6832 blocks, (3.34 [3.50] MB), Unused.
SAS device                                              [Disk]
Disk 7: bus: 1, Target id: 1, Port: 1I,  Box/Enclosure: 0, Bay: 7,  size 136.73 [146.82]GB
  Disk 7, # 0, size 286683904 blocks, (136.70 [146.78] GB), Unit 1.
  Disk 7, # 1, size 48 blocks, (0.02 [0.02] MB), Unused.
SAS device                                              [Disk]
Disk 5: bus: 1, Target id: 3, Port: 1I,  Box/Enclosure: 0, Bay: 5,  size 136.73 [146.82]GB
  Disk 5, # 0, size 286683904 blocks, (136.70 [146.78] GB), Unit 1.
  Disk 5, # 1, size 48 blocks, (0.02 [0.02] MB), Unused.
SAS device                                              [Disk]
Disk 4: bus: 1, Target id: 4, Port: 2I,  Box/Enclosure: 1, Bay: 4,  size 136.73 [146.82]GB
  Disk 4, # 0, size 286683904 blocks, (136.70 [146.78] GB), Unit 1.
  Disk 4, # 1, size 48 blocks, (0.02 [0.02] MB), Unused.
SAS device                                              [Disk]
Disk 3: bus: 1, Target id: 5, Port: 2I,  Box/Enclosure: 1, Bay: 3,  size 136.73 [146.82]GB
  Disk 3, # 0, size 286683904 blocks, (136.70 [146.78] GB), Unit 1.
  Disk 3, # 1, size 48 blocks, (0.02 [0.02] MB), Unused.
SAS device                                              [Disk]
Disk 2: bus: 1, Target id: 6, Port: 2I,  Box/Enclosure: 1, Bay: 2,  size 136.73 [146.82]GB
  Disk 2, # 0, size 286683904 blocks, (136.70 [146.78] GB), Unit 1.
  Disk 2, # 1, size 48 blocks, (0.02 [0.02] MB), Unused.
SAS device                                              [Disk]
Disk 1: bus: 1, Target id: 7, Port: 2I,  Box/Enclosure: 1, Bay: 1,  size 136.73 [146.82]GB
  Disk 1, # 0, size 286677120 blocks, (136.70 [146.78] GB), Unit 0.
  Disk 1, # 1, size 6832 blocks, (3.34 [3.50] MB), Unused.
MSA> help
  Information available:
  ACCEPT     ADD        DELETE     EXIT       FLASH      HELP       HPSAS
  LOCATE     MSA        Overview   READ       RESET      SCAN       SET
  SHOW       SmartArray START
MSA> exit
  1. This RAID array defines 8-drives as three logical units
  2. Notice that drive-6 (which is dead) is missing from this list
  3. use command MSA to inspect the physical drives
  4. use command SAS to inspect the logical units

Used MSA$UTIL to replace a drive on a running system

My production OpenVMS system runs on an rx2800-i2 where the P410 controller is set up like this:

disk slot-1 +---- RAID-1 (system disk)
disk slot-2 +
disk slot-3 --+-- RAID-1 (data disk)
disk slot-4 --+
disk slot-5 empty
disk slot-6 empty
disk slot-7 ----- RAID-0 (scratch data)
disk slot-8 ----- RAID-0 (emergency system disk)
I rebooted the system on Sunday 2018-02-18 (annual maintenance: installed consolidated OpenVMS patch kit 1200; updated to MultiNet-5.5). During reboot I noticed several messages from the S.M.A.R.T. subsystem indicating an imminent failure of the drive in slot #7 could be expected soon. I ordered a replacement drive which came in two days later. I swapped out the drive but nothing happened. At this point, I fired up MSA$UTIL and noticed some identification problems with Unit-2. At this point I did the following:
  1. used "delete" to erase the definition of Unit-2
  2. used "set" to create a new definition of Unit-2
At this point everything worked properly from OpenVMS (was able to mount the disk). In hind sight, perhaps I should have experimented with the "accept" command. 

Backup and Restoration suggestions

Caveats: the following advice is targeted at all computer systems this side of Y2K: Unix, Linux, OpenVMS and Windows.>No matter how you interpret what follows, you must ALWAYS do whole disk backups of all your drives. Why? You never know when your computer room will be damaged by fire, water, or anything else which will require you to recover your system at a new location. Make sure you are do daily backups (at the very minimum) and deliver the external media to an off-site location. This means buying enough media to rotate through 30-days at the very least.

comment: I know of one company where their Windows systems were infected on day x then the malware was activated 3-months later. This means that the backups were also infected.

Advice for OpenVMS on Itanium


External Links

Back to OpenVMS
 Back to Home
Neil Rieck
Kitchener - Waterloo - Cambridge, Ontario, Canada.