Code upgrades (Licensed Machine Code)
-
Phase 0: Before you start
-
Phase 1: Plan and install
-
Phase 2: Build the storage
-
Phase 3: Copy Services
-
Phase 4: Run it day to day
-
Phase 5: Troubleshooting and career
A DS8000 code upgrade replaces the Licensed Machine Code on the HMCs, the two storage servers, the adapters and even the flash drives while the hosts keep running, and most companies go through it about twice a year. The design makes it safe, but only if the people around it have done their homework on host paths, hardware health and timing.
This lesson covers how IBM releases code in bundles, how to read a bundle number, the three ways a code load can happen (Remote Code Load, Customer Code Load, on-site), and what goes on inside the box during the load. In the lab you’ll run the pre-upgrade checks a storage admin runs and watch each CPC fail over and back in the practice shell, the way it does during a real load.
You need the practice shell, plus the failover idea from Lesson 18 of the Architecture course.
| Time | You need | By the end you can |
|---|---|---|
| 60 to 75 minutes | The SaatVedha practice shell, the setup script below and a notebook for your checklist | Read bundle levels with ver -l, plan a code load, run pre-checks on paths and hardware, and explain each activation step |
What it is, in one line
A DS8000 code upgrade installs a tested bundle of new firmware on every part of the system one side at a time, so the hosts keep working while each CPC fails over and back.
In Simple Words
Repainting a school with two staircases
Your school has two staircases, left and right, and the painters have to repaint both without the school closing. So they paint the left staircase first while everyone uses the right one, then paint the right one while everyone uses the left, and nobody misses a class.
But if one classroom’s door only opens onto the left staircase, those children are stuck while it’s being painted, and that’s a host with only one path. So before the painters start, the head teacher walks round and checks every room can reach both staircases, and that walk is your pre-upgrade check.
Engineer's View
Bundles, levels and what gets updated
What gets new code. Device adapters, host adapters, NVMe flash drives and FlashCore Modules, iPDUs, storage enclosure ESMs and power supplies, I/O bay cards, the HMCs and the code on each CPC. IBM tests all of these together and ships them as one bundle.
Bundle names. The format is PR.MM.FFF.EEEE. In bundle 10.10.106.0, the 10.10 means Release 10.1 with no service pack, 106 is the fix level and 0 is the base (no interim fix). ver -l shows the DS CLI, Storage Manager and LMC versions along with the bundle, and lsserver -l shows the LIC and bundle on each server.
Who loads it. Remote Code Load (RCL) is the standard route, where IBM Remote Support connects, pulls the code from IBM Fix Central and activates it in your window, and with Expert Care Premium you get it twice a year as part of the deal.
Customer Code Load lets you do it yourself from the Storage Manager GUI (Settings → Support → Update System), and an On-site Code Load by an IBM SSR needs a feature code (AHY2 or AHY3).
Timing. Once the code is distributed you have 30 days to activate it before it expires. The HMC keeps up to six earlier code versions and each CPC holds three (previous, active, next), and a normal activation takes 2.5 to 4 hours.
During activation. The HMCs get updated first, and then each CPC updates in turn while its LSSs fail over to the other CPC.
Host adapters use fast-load, which switches firmware in under 2 seconds (IBM quotes under 2.5 seconds of impact), and light-on fastload keeps the ports logged in to the switches. Even so, a host with a single path, or with both paths on the same host adapter, can lose access. For IBM Z, CUIR (off by default) lets the DS8000 ask z/OS to vary paths offline automatically.
After. Upgrade DS CLI on the admin workstations (a higher DS CLI level works fine with older systems), and check connectivity from the GUI, Copy Services Manager, IBM Spectrum Control and the key managers.
How it works, step by step
Here’s a typical code load at a company following IBM’s recommended rhythm, with the HMCs on Thursday and the storage facility on Saturday.
1Plan: pick the target level
Check IBM’s DS8000 Code Recommendation page and read the “Must-Read” notes for the bundle. Look at the size of the jump too, because a big gap between your level and the target can mean extra steps, and book the window with your IBM Technical Account Manager or the Remote Support team.
2Acquire and distribute
The bundle gets downloaded from IBM Fix Central to HMC1 (or loaded from local media), copied to HMC2 and staged on each CPC in an alternative OS repository. Nothing changes for the hosts yet, and the pre-check scans keep running until you activate.
3Thursday: update the HMCs and run the pre-check
The HMCs take the new code first, and the updated pre-verification test then checks the whole system. If it finds problems, such as an open serviceable event or a failed part, you have a day or two to sort them out.
4Before activation: your own host checks
IBM’s checks look inside the box, and yours look outside it: every host has at least two logged-in paths on two different host adapters, multipath shows all the paths active, Metro Mirror pairs are Full Duplex, and nothing else is changing on the SAN.
5Saturday: activate CPC by CPC
The code on CPC 0 is updated while CPC 1 runs all the LSSs, and then CPC 0 takes over while CPC 1 is updated. Each failover and failback causes a short I/O pause, which good multipath drivers ride through.
6Adapters, drives and power
Host adapters switch firmware in under 2 seconds thanks to fast-load, device adapters update along with their CPC, and flash drive firmware updates are concurrent as well.
If something fails, the code load’s autonomic recovery decides whether to carry on or to stop and call IBM.
7After: check and clean up
Run ver -l and lsserver -l to confirm both servers are on the new bundle. Then re-check host paths and mirrors, upgrade DS CLI on your workstations, and test the GUI, CSM and key manager connections.

Hands-on lab: pre-upgrade checks and a CPC rehearsal
Before you run any command, double-check it
Read every command twice before you press Enter. Check the target: the system or account, the IDs, the names and the sizes. These commands are for learning and were tested in our lab, not on your system. At work, run the read-only list commands first, follow your change process, make sure a backup exists, and ask a second person to check anything that changes or deletes data. You run them at your own risk.
You’re the storage admin in the week before a code load, looking after two hosts, a Linux ERP database (erp-db1) and a Windows app server (win-app1). You’ll record the current level and run the outside-the-box checks, then rehearse what each CPC update looks like from the hosts’ side.
Practice shell note: the practice shell is our own teaching tool, not IBM software, and it can’t load code. Real DS CLI output is similar but not identical, and the SIM lines and “Note (practice shell)” lines are ours. The simctl serverfail steps only imitate the CPC failover that a real code load triggers.
1Start clean and load the setup script
Save this as setup-20.txt. After simctl reset both hosts’ ports are already logged in to the lab SAN, so all the script does is build the storage and map it.
setup-20.txt:
# setup-20.txt: a small working system with two hosts for Lesson 20
mkarray -raidtype 6 -arsite S1
mkarray -raidtype 6 -arsite S2
mkrank -array A0 -keygrp 1 -stgtype fb
mkrank -array A1 -keygrp 1 -stgtype fb
mkextpool -rankgrp 0 -keygrp 1 -stgtype fb FB_0
mkextpool -rankgrp 1 -keygrp 1 -stgtype fb FB_1
chrank -extpool P0 R0
chrank -extpool P1 R1
mkfbvol -extpool p0 -cap 100 -sam ese -name erp_#h 2000-2001
mkfbvol -extpool p1 -cap 100 -sam ese -name erp_#h 2100-2101
mkhost -type "Linux Server" -hostport 10000090FA13B914,10000090FA13B915 erp-db1
mkhost -type "Windows Server" -hostport 21000024FF2D0F86,21000024FF2D0F87 win-app1
chhost -action map -volume 2000,2100 erp-db1
chhost -action map -volume 2001,2101 win-app1Run this:
python ds8sim.py (then: simctl reset, quit)
python ds8sim.py -hmc1 10.0.0.1 -user admin -script setup-20.txt
python ds8sim.py✅ Checkpoint: the script ends with two CMUC00531I lines.
2Record the current code level
Run these:
ver -l
lsserver -lYou should see this:
dscli> ver -l
Date/Time: 24 October 2026 11:09:34 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
DSCLI 7.10.10.348
StorageManager 10.2.2507181727
HMC DSCLI 7.10.10.348
==================Version==================
Storage Image LMC Bundle Version
===========================================
IBM.2107-78SV001 7.10.10.348 10.10.106.0
dscli> lsserver -l
Date/Time: 24 October 2026 11:09:34 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
ID Image ID Image Name Power Control SFI State LIC Version OS Version Bundle Version
===================================================================================================
server0 IBM.2107-78SV001 ds8k-g10-lab Online Online 7.10.10.348 AIX 7.3 10.10.106.0
server1 IBM.2107-78SV001 ds8k-g10-lab Online Online 7.10.10.348 AIX 7.3 10.10.106.0Put these in the change record: DS CLI 7.10.10.348, bundle 10.10.106.0 on both servers. The two servers have to show the same level, and a mismatch means an earlier load didn’t finish.
✅ Checkpoint: both servers show bundle 10.10.106.0.
3Check both HMCs
Run this:
lshmcYou should see this:
dscli> lshmc
Date/Time: 24 October 2026 11:09:34 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
Name State Role Release Management-IP Location-Code Machine-Type Machine-Model Memory Disk
================================================================================================================================
DS8A50-1A.LAB Online Primary(1) R10.1 bundle 10.10.106.0 10.0.0.1 U7063CR2.78SV1DD 7063 CR2 33GB 1TB
DS8A50-1B.LAB Online Secondary(2) R10.1 bundle 10.10.106.0 10.0.0.2 U7063CR2.78SV2DD 7063 CR2 33GB 1TBBoth HMCs need to be Online. The bundle lands on HMC1 first and is then copied to HMC2, so a broken HMC2 kills the plan before it starts.
✅ Checkpoint: two HMCs Online, primary and secondary.
4Check hardware health
Run this:
lsarrayYou should see this:
dscli> lsarray
Date/Time: 24 October 2026 11:09:34 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
Array State Data RAIDtype arsite Rank DA Pair DDMcap (10^9B)
====================================================================
A0 Assigned Normal 6 (5+P+Q+S) S1 R0 0 4800.0
A1 Assigned Normal 6 (5+P+Q+S) S2 R1 0 4800.0Every array is Normal. Fix any rebuilding array or failed part before activation, because the code load already reduces redundancy for a few hours, and on a real system check the GUI Events page for open serviceable events as well.
✅ Checkpoint: every array shows Data Normal.
5Check every host has two paths on two adapters
Run these:
lshost
lshostport -login
lsioport -l I0032 I0042You should see this:
dscli> lshost
Date/Time: 24 October 2026 11:09:34 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
Name Type State Cluster
======================================
erp-db1 Linux Server Online -
win-app1 Windows Server Online -
dscli> lshostport -login
Date/Time: 24 October 2026 11:09:34 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
WWNN WWPN Host I/O ports ESSIOport
==============================================================
20000024FF2D0F86 21000024FF2D0F86 win-app1 16 (all) I0032
20000024FF2D0F87 21000024FF2D0F87 win-app1 16 (all) I0042
20000120FA13B914 10000090FA13B914 erp-db1 16 (all) I0032
20000120FA13B915 10000090FA13B915 erp-db1 16 (all) I0042
dscli> lsioport -l I0032 I0042
Date/Time: 24 October 2026 11:09:34 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
ID WWPN State Type topo portgrp Speed Frame I/O Enclosure HA Card Security
===============================================================================================================================
I0032 500507630303B0DD Communication established Fibre Channel-SW SCSI-FCP 0 32 Gb/s 1 1B2 C3 Disabled
I0042 500507630304B0DD Communication established Fibre Channel-SW SCSI-FCP 0 32 Gb/s 1 1B2 C4 DisabledEach host has two logged-in WWPNs, one on I0032 and one on I0042, and lsioport -l shows I0032 sits on HA card C3 and I0042 on C4. Because they’re on different adapters, the other path carries the I/O while one adapter takes new firmware.
On the hosts themselves, ask the teams to show you multipath -ll (Linux) or mpclaim -s -d (Windows) with every path active.
✅ Checkpoint: each host lists two WWPNs on two different HA cards.

6Check Copy Services
Run this:
lspprcYou should see this:
dscli> lspprc
CMUC00234I lspprc: No Remote Mirror and Copy found.There are no mirrors on this lab system. On a real one, every pair should be Full Duplex before the load, and you note down any that aren’t so nobody blames the upgrade afterwards.
✅ Checkpoint: you know the mirror state before the change.
7Rehearse the CPC 0 update
During activation CPC 0 is updated while CPC 1 runs everything, so imitate that and watch from the host side.
Run these:
simctl serverfail 0
lsserver
lshostYou should see this:
dscli> simctl serverfail 0
SIM0107I simctl: server0 is offline. Failover: server1 now serves rank groups 0 and 1. Host I/O continues; write cache runs in a single copy until failback.
dscli> lsserver
Date/Time: 24 October 2026 11:09:34 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
ID Image ID Image Name Power Control SFI State
=============================================================
server0 IBM.2107-78SV001 ds8k-g10-lab Offline Offline
server1 IBM.2107-78SV001 ds8k-g10-lab Online Online
Note (practice shell): server0 is offline. server1 now runs rank groups 0 and 1 (failover).
dscli> lshost
Date/Time: 24 October 2026 11:09:34 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
Name Type State Cluster
======================================
erp-db1 Linux Server Online -
win-app1 Windows Server Online -Both hosts stay Online. All the rank groups are now running on server1, and write data has only one cache copy until failback, which is why you keep other risky work out of a code load window.
✅ Checkpoint: lshost shows both hosts Online while server0 is offline.
8Rehearse the CPC 1 update and finish
Run these:
simctl serverfix 0
simctl serverfail 1
lshost
simctl serverfix 1
lsserverYou should see this:
dscli> simctl serverfix 0
SIM0108I simctl: server0 is online. Failback: rank group 0 moved back to server0.
dscli> simctl serverfail 1
SIM0107I simctl: server1 is offline. Failover: server0 now serves rank groups 0 and 1. Host I/O continues; write cache runs in a single copy until failback.
dscli> lshost
Date/Time: 24 October 2026 11:09:34 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
Name Type State Cluster
======================================
erp-db1 Linux Server Online -
win-app1 Windows Server Online -
dscli> simctl serverfix 1
SIM0108I simctl: server1 is online. Failback: rank group 1 moved back to server1.
dscli> lsserver
Date/Time: 24 October 2026 11:09:34 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
ID Image ID Image Name Power Control SFI State
=============================================================
server0 IBM.2107-78SV001 ds8k-g10-lab Online Online
server1 IBM.2107-78SV001 ds8k-g10-lab Online OnlineBoth servers are back Online. After a real load you’d run ver -l and lsserver -l again at this point and expect to see the new bundle number on both servers.
✅ Checkpoint: both servers Online at the end.
9Write your pre-upgrade checklist
Turn the steps above into a checklist you can reuse, and keep it short so people will use it:
[ ] Target bundle chosen, Must-Read notes read, window booked
[ ] ver -l and lsserver -l recorded (before)
[ ] lshmc: both HMCs Online
[ ] lsarray / GUI Events: no rebuild, no open serviceable events
[ ] Every host: 2+ paths on 2 different HA cards (lshostport -login, lsioport -l)
[ ] Host teams confirm multipath shows all paths active
[ ] lspprc: mirrors Full Duplex (note exceptions)
[ ] No SAN or host changes in the same window
[ ] After: ver -l, lsserver -l, paths, mirrors, DS CLI upgrade, GUI/CSM/key manager checks✅ Checkpoint: you have a checklist with before, during and after checks.
Break It, Then Fix It
Start fresh (simctl reset, then run setup-20.txt again). This time you’re looking for the two problems that most often turn a quiet code load into an incident.
1Break it: a rebuild running before the window
A drive fails the night before the code load.
Run these:
simctl drivefail S1
lsarrayYou’ll see this:
dscli> simctl drivefail S1
SIM0110I simctl: drive IBM.2107-D04-8SV01/R1-P1-D1 failed. Array A0 is rebuilding onto a spare (about 10 simulated minutes; use simctl tick).
dscli> lsarray
Date/Time: 24 October 2026 11:09:34 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
Array State Data RAIDtype arsite Rank DA Pair DDMcap (10^9B)
========================================================================
A0 Assigned Rebuilding 6 (5+P+Q+S) S1 R0 0 4800.0
A1 Assigned Normal 6 (5+P+Q+S) S2 R1 0 4800.0Why it matters: array A0 is rebuilding onto a spare, and starting a code load now would pile one reduced-redundancy event on top of another. IBM’s pre-check would also flag the open serviceable event.
Fix: let the rebuild finish and get the part replaced, then run the checks again, and move the window if you have to.
Run these:
simctl tick 10
lsarrayYou should see this:
dscli> simctl tick 10
SIM0111I simctl: array A0 rebuild complete; the failed drive was replaced and is now the spare.
SIM0112I simctl: clock advanced 10 minutes.
dscli> lsarray
Date/Time: 24 October 2026 11:19:34 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
Array State Data RAIDtype arsite Rank DA Pair DDMcap (10^9B)
====================================================================
A0 Assigned Normal 6 (5+P+Q+S) S1 R0 0 4800.0
A1 Assigned Normal 6 (5+P+Q+S) S2 R1 0 4800.0✅ Checkpoint: A0 shows Data Normal again.

2Break it: a host quietly down to one path
Last month someone moved a cable for erp-db1, and its second HBA never logged back in. Nobody noticed, because the database kept working.
Run these:
simctl logout 10000090FA13B915
lshostport -loginYou’ll see this:
dscli> simctl logout 10000090FA13B915
SIM0104I simctl: host port 10000090FA13B915 logged out.
dscli> lshostport -login
Date/Time: 24 October 2026 11:19:34 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
WWNN WWPN Host I/O ports ESSIOport
==============================================================
20000024FF2D0F86 21000024FF2D0F86 win-app1 16 (all) I0032
20000024FF2D0F87 21000024FF2D0F87 win-app1 16 (all) I0042
20000120FA13B914 10000090FA13B914 erp-db1 16 (all) I0032erp-db1 has only one WWPN logged in now, on I0032. So what happens when that adapter takes new firmware? Imitate the port going dark:
Run these:
simctl portfail I0032
lshost
simctl portfix I0032You’ll see this:
dscli> simctl portfail I0032
SIM0105I simctl: I/O port I0032 has no light (cable or SFP problem).
dscli> lshost
Date/Time: 24 October 2026 11:19:34 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
Name Type State Cluster
=======================================
erp-db1 Linux Server Offline -
win-app1 Windows Server Online -
dscli> simctl portfix I0032
SIM0106I simctl: I/O port I0032 has light again.Why: with one path, losing that port means losing every disk. Fast-load is very short, but IBM warns that a host on a single path, or with both paths on the same adapter, can lose connectivity, so never bet a database on “it’s only 2 seconds”.
Fix: get the second path back before the load. The SAN team fixes the zone or cable and the HBA logs in on a different adapter (here I0052 on card C5), and then you repeat the test.
Run these:
simctl login 10000090FA13B915 I0052
lshostport -login
simctl portfail I0032
lshost
simctl portfix I0032You should see this:
dscli> simctl login 10000090FA13B915 I0052
SIM0103I simctl: host port 10000090FA13B915 logged in to I0052.
dscli> lshostport -login
Date/Time: 24 October 2026 11:19:34 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
WWNN WWPN Host I/O ports ESSIOport
==============================================================
20000024FF2D0F86 21000024FF2D0F86 win-app1 16 (all) I0032
20000024FF2D0F87 21000024FF2D0F87 win-app1 16 (all) I0042
20000090FA13B915 10000090FA13B915 erp-db1 16 (all) I0052
20000120FA13B914 10000090FA13B914 erp-db1 16 (all) I0032
dscli> simctl portfail I0032
SIM0105I simctl: I/O port I0032 has no light (cable or SFP problem).
dscli> lshost
Date/Time: 24 October 2026 11:19:34 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
Name Type State Cluster
======================================
erp-db1 Linux Server Online -
win-app1 Windows Server Online -
dscli> simctl portfix I0032
SIM0106I simctl: I/O port I0032 has light again.✅ Checkpoint: erp-db1 stays Online with I0032 dark.
This happened at work
The check-in server that had one path
An airline booked a Remote Code Load for a Saturday night, the quietest time for flights. IBM’s pre-check came back clean, with no open events and both HMCs fine, and the storage team signed off without asking the server teams for path checks, because “fast-load is under 2 seconds”. Two hours in, the host adapters were updated, and most servers never noticed, but one old Windows server that ran part of airport check-in started printing disk errors and its database went offline. It turned out the server did have two HBAs, but a SAN change six months earlier had left both its zones on ports of the same host adapter. When that adapter switched firmware, both paths dropped together, the Windows MPIO timers gave up before the ports came back, and the database marked its files suspect.
For 50 minutes the airline ran check-in at two airports on paper while the DBA recovered the database.
Root cause: nobody had checked that every host had paths on two different adapters. Fix: the pre-upgrade checklist now has lshostport -login together with lsioport -l to map each WWPN to its HA card, and the server teams sign off that mpclaim or multipath -ll shows all paths. That server was rezoned onto two adapters in two I/O enclosures.
The lesson: the DS8000 is built to update without downtime, so the part you have to prove is your hosts.
Common mistakes and troubleshooting
| Symptom | Likely cause | What to check / fix |
|---|---|---|
| Pre-check fails a day before the window | Open serviceable event, failed part, rebuild | Check GUI Events and lsarray, fix the problem and rerun the check, or move the window. |
| A host loses disks during the adapter update | Single path, or both paths on one HA card | Run lshostport -login + lsioport -l before the load, and rezone onto two adapters. |
| Some DS CLI Copy Services commands fail after the HMC update | HMC on a much newer level than the storage facility | That’s expected for big jumps until activation, so plan it with IBM. |
| Downloaded code disappeared | Not activated within 30 days | Acquire it again and activate it in time. |
| Servers show different bundle levels | Activation stopped part way | Check the GUI status and the case number, and call IBM before you do anything else. |
| Scripts behave oddly after the upgrade | Old DS CLI on admin workstations | Install the matching or a newer DS CLI from IBM Fix Central. |
Keep a “before” and “after” copy of ver -l, lsserver -l, lshost and lspprc in the change record, so any questions after the weekend are quick to answer.
Interview questions
Click a question to open it. Each one is worded the way an interviewer would ask it, and underneath you’ll find why they ask it and one way you could answer in your own words.
Fresher level
1. What does “concurrent code load” mean on a DS8000?
Why they ask this: They want to hear that you understand why upgrades don’t need downtime, and what has to be true for that to hold.
How you might answer: It means the code goes in while the hosts keep working. The HMCs update first, then each CPC updates while its LSSs fail over to the other one, and the host adapters switch firmware in under 2 seconds with fast-load. It only stays “no impact” if every host has working multipath with its paths on different adapters.
2. How do you check the current code level from the DS CLI?
Why they ask this: It’s basic but it matters, because you need it for every change record and support call.
How you might answer: I’d run ver -l, which shows the DS CLI, Storage Manager and LMC versions plus the bundle, say 10.10.106.0. I’d also run lsserver -l to confirm both servers show the same LIC and bundle version.
2–5 years experience
3. Your manager asks you to prepare for next month’s code upgrade. What do you do in the weeks before?
Why they ask this: They want a structured plan, not “IBM does it”.
How you might answer: I’d check IBM’s code recommendation and the Must-Read notes for the target bundle, then book the RCL window with IBM or plan a Customer Code Load. I’d let the application teams know and freeze other SAN and storage changes for that weekend.
In the week before, I’d check hardware health and events, both HMCs and the mirror states, and most of all that every host has paths on two different adapters, with the server teams confirming multipath. I’d also keep the before outputs of ver -l and lsserver -l in the change.
4. During a code load, one AIX host lost all its disks for 20 seconds. What went wrong and how do you prevent it?
Why they ask this: They want to see whether you can trace a real impact back to its cause rather than blame the vendor.
How you might answer: Most likely both its paths went through ports on the same host adapter, or it only had one path, so the adapter firmware update took both away at once. I’d compare lshostport -login with lsioport -l to see which HA cards it uses, and look at the host’s multipath settings. The fix is rezoning onto two adapters, ideally in two I/O enclosures, and adding this check to the pre-upgrade list.
Senior level
5. How would you run DS8000 code upgrades for a bank with ten DS8000s and Metro Mirror between sites?
Why they ask this: A senior person has to think about order, risk and replication across many systems.
How you might answer: I’d follow IBM’s code recommendation and keep all the systems within supported levels of each other, upgrading the DR boxes before production so any problem hits DR first. I’d use the HMC Code Image Server so one HMC downloads the bundle once and the rest copy it locally.
Every system would get its HMC update a day or two before activation, its own pre-checks, and a check that the Metro Mirror pairs are Full Duplex before and after. For mainframe hosts I’d turn on CUIR so path handling happens automatically.
6. RCL, Customer Code Load or on-site: which would you choose, and why?
Why they ask this: They want to see you weigh control, effort and the support model.
How you might answer: RCL is my default, since IBM Remote Support acquires and activates the code in our window, and with Expert Care Premium it’s included twice a year. Customer Code Load suits teams who want full control of the timing, because it runs the same background process from the GUI, with a 30-day window between download and activation. An on-site load makes sense when security rules block remote access, and you need to order a feature code for it.
Quick quiz
Q1. In bundle 10.10.106.0, what does 106 mean?
- The release
- The fix level
- The number of the CPC
- The DS CLI version
Show answer
B: The format is PR.MM.FFF.EEEE, and FFF is the fix level.
Q2. What is updated first during a code load?
- The flash drives
- The host adapters
- The HMCs
- The hosts
Show answer
C: HMC1 and HMC2 are updated first, followed by the CPCs, adapters and other parts.
Q3. How long can downloaded code wait before it must be activated?
- 24 hours
- 7 days
- 30 days
- One year
Show answer
C: If it isn’t activated within 30 days, the code expires and is removed.
Q4. Which host is most at risk during host adapter updates?
- A host with four paths on two adapters
- A host with two paths on the same adapter
- A mainframe with CUIR enabled
- A host with no mapped volumes
Show answer
B: If both paths use one adapter, its firmware switch takes away both paths at the same time.
Q5. How long does a typical DS8000 activation take?
- 10 minutes
- 2.5 to 4 hours
- 2 days
- A week
Show answer
B: IBM says 2.5 to 4 hours is normal, depending on the hardware.
Quick recap
- Code comes as a tested bundle (PR.MM.FFF.EEEE), for HMCs, CPCs, adapters, drives and power.
ver -landlsserver -lshow the levels, so record them before and after.- RCL is the standard, Customer Code Load runs from the GUI, and an on-site load needs a feature code.
- HMCs first, then each CPC fails over while it updates; host adapters use fast-load (under 2 seconds).
- Your part is hardware health, both HMCs, the mirrors, and two paths on two adapters for every host.
- After the load, upgrade DS CLI and check the GUI, CSM and key manager connections.
Next lesson
Lesson 21: Monitoring: SNMP, syslog, Call Home, remote support → You set up SNMP traps and syslog, and learn how Call Home and remote support work.
Further reading: DS8000 code upgrade
Want to go deeper into DS8000 code upgrade? Chapter 11 of the IBM Storage DS8A00 Architecture and Implementation Guide (IBM Redbooks) covers bundles, RCL and Customer Code Load. For the failover behind every code load, see RAS: failover, failback and no single point of failure.
You can also see the full plan for this course on the IBM DS8000 Implementation course page.
