A Raspberry Pi (VAX) Cluster
In a blog post last month I looked at how a Raspberry Pi can be used to emulate a formidable IBM mainframe, and in this post I describe how a pair can be used to emulate VAX computers which can then be configured to form a VMScluster.
The MicroVAX 3900 hardware being emulated this time is a little more modern and somewhat smaller than the IBM 4381 processor, but the VAX architecture and OpenVMS operating system are no less impressive. On introduction in 1989 an entry level MicroVAX 3900 would have set you back over $120,000 and, as with IBM's VM operating system, you'd be mistaken if you thought that OpenVMS was dead and buried as it runs many mission critical workloads today.
Emulation of the VAX hardware has been made possible by a pretty amazing piece of software called SimH. In order to be able to run OpenVMS on this a licence is required, but fortunately these are available free of charge via the OpenVMS Hobbyist programme.
The SimH software is configured to emulate a MicroVAX 3900 with 64Mb of memory, 1.5Gb disk and a CD-ROM drive. An ISO file containing an image of the OpenVMS installation media is attached to the virtual CD-ROM drive and the emulator is booted. The steps to install the software are reasonably simple and the image below shows part of the installation process.
For extra authenticity the above image shows a real DEC VT420 serial terminal wired up to the UART of Raspberry Pi #1 via a 3.3v-RS232 level converter. But for the sake of clarity the screenshots that follow have been captured via a Linux laptop connected to Rasberry Pi #2 via a a USB-serial adapter, a.k.a. “FTDI cable”.
In the above screenshot we can see OpenVMS starting up and the many operator communications or “OPCOM” messages that are displayed. Once system startup has completed we can then log in and use the “show system” command to get the equivalent of a “ps -aef” on Linux. Note that OpenVMS commands are not case sensitive and can be abbreviated.
With one system up and running we now need at least one more in order to form a cluster. Here we have a second Raspberry Pi attached via a network crossover cable and each board has been configured with a static IP address. Although in actual fact we won't be using TCP/IP at all, but it's useful to have this configured to test the Ethernet connection and to copy files across if required.
Once we've tested basic network connectivity the second SimH instance can be configured pretty much the same, albeit the emulated Ethernet card must be configured with a different MAC address. Obviously, when installing OpenVMS the system is given a different node name, and when installing the networking software a different DECnet address is used. To summarise, we have:
Raspberry Pi #1 192.168.1.1
Raspberry Pi #2 192.168.1.2
VAX1 (running on RP #1) 1.1 (a DECnet address)
VAX2 (running on RP #2) 1.2 (a DECnet address)
With both boards having booted Linux and the configured emulators having booted OpenVMS, we can then “set host” (the DECnet equivalent of telnet) from one emulated VAX to the other.
Note that as stated previously, Raspberry Pi #2 is connected to the laptop, and the above screenshot shows logging in from VAX2 to VAX1.
Now we are happy that the emulated VAXen (the plural of VAX!) can reach each other over the network the next step is to configure them into a cluster. This is as easy as running the cluster_config script on each VAX and answering a few basic questions, including the password that nodes must use when requesting to join the cluster.
When the first configured node has restarted we then configure the clustering software on the second, and upon that node restarting the first node will display messages indicating that it has requested to join the cluster. In this case VAX2 was configured first, followed by VAX1.
Now that we have a cluster configured with two nodes we can check their status with the command “show cluster”.
Introduced in 1983, the VMScluster software was way ahead of its time and compares favourably with its much more recent contemporaries. Allowing, for example, disks to be transparently shared across the cluster and multiple nodes to write to the same file at the same time (record level locking), load balancing and distributed queueing.
By using the “show devices d” command we can see all the disks available to the cluster, prefixed with the name of the node to which they are attached and a “$” separator. The DUA0: drives are the system disks, and DUA1: to DUA3: on each node are additional unused 1.5Gb drives.
Many other OpenVMS commands can have “/cluster” appended to set a cluster-wide context. E.g. “show users/cluster”.
Finally, if we shut down one of the nodes it will be removed from the cluster.
In this case all processing on the remaining node has been frozen as a precautionary measure, as it could have just been that cluster communications were lost and a “split-brain” situation is generally undesirable. Although this two node cluster could easily be configured so that either node will continue if the other is lost or shut down.
This exercise was really just for fun and to see how easy it would be to create a VMScluster using VAX hardware emulated via Raspberry Pi boards. But it also serves to show how the Raspberry Pi can be combined with open source software such as SimH for use in computer conservation, and to provide museums etc. with the basis of a low cost demonstrator for classic computer architectures.
Image top: two Raspberry Pi boards sat atop a MicroVAX 3500 which uses the same cabinet as the model 3900 machines being emulated.
CommentsAdd a comment
May 26, 2018 23:30
Late to the party but.... I'm an old Deccie and saw this article. I've been building micro-clusters of PI-3's and zeros, I've got a small DECnet network and wanted to add nodes, a LAVC cluster (what this looks like) to talk to my DUNIX nets would be great. Is this stil alive can i get access to hobbyist licenses? for OpenVMS?
May 30, 2018 12:52
@Pijack99 They change the process for registering to get PAKs every now and again, but appears you still can: https://www.hpe.com/h41268/live/index_e.aspx?qid=24548 Though looks like you'd need to join a user group (DECUS or similar).
November 17, 2015 16:05
@mattsaintdev Thanks for spotting this! Now updated with a current link to the installation steps.
November 17, 2015 15:27
Hi - was just going to read the install steps but the link is broken - any change you could fix this I would love to get a vax on raspi going.
October 19, 2015 10:27
VMS is a licensed software product and AFAIK you will need either the original PAKs (licence keys) that came with the machine, or to join the OpenVMS Hobbyist programme. With the former the official media will be available from HP, whereas with the latter I believe that you can now download ISO images after registering for keys. For more info on the Hobbyist Programme see: http://www.openvmshobbyist.com .
October 18, 2015 22:31
Where can you download a copy of OpenVMS. I have looked for over a year. no luck I would like to to this project. I also just restored a Vax Station 3100 and would like to use OpenVMS on it.....
January 5, 2015 12:26
@riclf did that, too :o) For details see: http://www.rs-online.com/designspark/el ... -mainframe
January 4, 2015 01:28
Great and fun article ! The microVAX was of course a mini-computer not a mainframe. It would be exciting to see this same methodology to emulating an early IBM mainframe, the S/370. Or if easier to do, another mini-computer that emulated the IBM S/370 instruction set, the WangVS.
November 5, 2013 12:47
It's amazing what you can do with such a small but of kit!