How hosts see volumes: hosts, ports, volume groups
-
Phase 0: Start here
-
Phase 1: The hardware
-
Phase 2: Virtualization
-
Phase 3: Resilience and data protection
-
Phase 4: Generations, models and rack layouts
-
Phase 5: Wrap-up
DS8000 volume groups are the guest list that decides which servers can see which LUNs. You can build perfect arrays, pools and volumes, but until a host’s WWPNs are linked to a volume group that host sees nothing, and if you get the list wrong the wrong server sees your data, which is far worse.
This is the last rung of the virtualization ladder you started climbing in Lesson 9. We’ll cover host attachments, hosts and clusters, the two volume group types (SCSI Map 256 and SCSI Mask), and why the DS GUI hides volume groups while the DS CLI shows them. Then you’ll map volumes to a two-node cluster and check exactly which host gets what.
Phase 2 roadmap: 9 Virtualization → 10 RAID → 11 Ranks and extents → 12 Extent pools → 13 FB and CKD volumes → 14 LSS and LCU → 15 Thin provisioning → 16 Easy Tier → 17 Volume groups (you are here). Next comes Phase 3: resilience.
| Time | You need | By the end you can |
|---|---|---|
| 60 minutes | Python 3 and the practice shell in C:\ds8k-lab (set up in Lesson 1) | Explain host attachments, hosts, clusters and volume groups, map volumes to a cluster and a single host, read lshost and showvolgrp, and avoid giving LUNs to the wrong server |
What it is, in one line
A volume group is a named list of FB volumes. A host attachment (the host’s WWPNs) points to one volume group, and that list is exactly what the host is allowed to see.
In Simple Words
The guest list at a wedding hall
A wedding hall has many rooms, with each family’s party in a different one. At the door a guard checks every guest’s ID card, and each card number is on one guest list that says which room that person may enter, so a guest whose card isn’t on any list gets no room at all, even though he’s standing inside the building.
For a joint family function two families share one list and see the same room, and one person can have a small private room of their own as well.
If someone gets added to the wrong list by mistake, he walks straight into another family’s party and nobody stops him, because the guard only ever checks the list.
On a DS8000 the ID card is the host’s WWPN, the guest list is the volume group and the rooms are the volumes, with a shared family list being a cluster and the guard being the DS8000 checking every login.
Engineer's View
Host attachments and volume groups on DS8A00
- A host attachment (host connection) identifies a host’s HBA ports by WWPN, and you can group one host’s ports with a port group. The DS8A00 supports up to 8,192 host attachments, which you only need for open systems, since IBM Z hosts reach CKD volumes through their IOCDS.
- A volume group is a named set of FB volumes. Each host connection has one volume group, several connections can share the same one, and a volume can sit in several volume groups. The limit is 8,320 volume groups.
- Whichever DS8000 port an HBA logs in to, it sees the same volume group. You can put a port mask on the connection to restrict which DS8000 ports it may use, but IBM recommends doing that with SAN zoning instead.
- There are two types. SCSI Map 256 is for hosts that poll LUNs (Linux, Windows, VMware), with up to 256 LUN IDs from 0000 to 00FF, and SCSI Mask is for hosts that use Report LUNs (AIX, IBM i), where volume
abcdbecomes LUN ID40ab40cd00000000. The host type sets the block size and address discovery method, and those have to match the volume group type. - CKD volumes go into a default volume group automatically, and any FICON host that logs in can reach them as long as its IOCDS is right.
- The modern way uses
mkhost,mkcluster,chhost -action mapandchcluster -action map, and the DS8000 creates the volume groups for you, which IBM calls the recommended method. The older way ismkvolgrpplusmkhostconnect. - In the DS GUI you define hosts and clusters and assign volumes, and a volume group gets made in the background. Volume group objects can only be managed with the DS CLI.
- If you unassign a host from a cluster, the host ends up keeping the cluster’s mappings. Automatically created volume groups only go away when the host is removed or when you run
rmvolgrp, and a deleted FB volume drops out of every volume group automatically.
On DS8900F: host attachments and volume groups work the same way, but check your code level for the host and cluster commands.
How it works, step by step
Take a hospital whose electronic health records (EHR) run on a two-node Linux cluster. Both nodes need to see the shared database LUNs and node 1 also has a private log volume, so let’s see how the DS8000 wires that up.
1Find the host ports
Once the SAN team has zoned the servers, their HBAs log in to DS8000 ports, and lshostport -unknown lists WWPNs that are logged in but not defined yet. Match them to servers using the WWPNs the server team gives you, never by guessing.
2Create a cluster and hosts
mkcluster ehr_cluster makes the group, and mkhost -type "Linux Server" -hostport WWPN -cluster ehr_cluster ehr_node1 defines each node with its WWPNs and puts it in the cluster. The host type tells the DS8000 how the host discovers LUNs and what block size it uses.
3Map shared volumes to the cluster
chcluster -action map -volume 2000-2001,2100-2101 ehr_cluster gives the shared LUNs to both nodes in one go. The DS8000 creates a volume group named after the cluster, and every host in the cluster now sees exactly these volumes.
4Map private volumes to one host
chhost -action map -volume 2200 ehr_node1 gives node 1 its own log volume and another volume group appears, named after the host, so node 1 now sees five volumes and node 2 sees four.
5The host logs in and asks for its LUNs
When ehr_node1’s HBA logs in to a DS8000 port, the DS8000 finds its host connection and the volume group behind it. A Linux host polls LUN IDs (SCSI Map 256) and an AIX host would send Report LUNs (SCSI Mask), but either way it only gets its own list.
6I/O carries the LUN
Every I/O frame carries the LUN, which includes the LSS and volume number, and the host adapter uses the LSS to pass the I/O to server 0 or server 1, the rule from Lesson 14.
7Changes are live
A volume you add to a volume group shows up after the host rescans. Removing one can hurt, though, because not every operating system copes with a disk vanishing, so check the OS documentation first. And moving a host out of a cluster doesn’t take its shared volumes away, you have to unmap them yourself.
That’s the top of the ladder: drives, array sites, arrays, ranks, pools, volumes, LSSs and now volume groups and hosts.
Hands-on lab: map volumes to a cluster and a host
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.
In this lab you map shared volumes to a two-node cluster and a private volume to one node, then read every object the DS8000 created along the way. Start in C:\ds8k-lab (shell setup is in Lesson 1).
Practice shell note: the practice shell is our own teaching tool, not IBM software, and real DS CLI output looks very close to this without being identical. The host, cluster and volume group messages match IBM’s Redbook, and CMUN02054E in the break lab is a practice shell message. Four host ports are already logged in to the lab DS8000, as if the SAN team had zoned them.
1Build pools and volumes with a setup script
Save this as C:\ds8k-lab\setup-17.txt, run simctl reset and quit in the shell, then run the script with -script and log in again.
mkarray -raidtype 6 -arsite S7
mkarray -raidtype 6 -arsite S8
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 -name ehr_#h 2000-2001
mkfbvol -extpool P1 -cap 100 -name ehr_#h 2100-2101
mkfbvol -extpool P0 -cap 50 -name lab_#h 2200You now have four 100 GiB EHR volumes spread over both servers (LSS 20 and 21) and one 50 GiB log volume in LSS 22.
✅ Checkpoint: The script ends with “FB volume 2200 successfully created”.
2See which host ports are waiting
Type this at the dscli> prompt:
lshostport -unknownYou should see this:
dscli> lshostport -unknown
Date/Time: 24 October 2026 14:01:26 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
WWNN WWPN ESSIOport
===========================================
20000024FF2D0F86 21000024FF2D0F86 I0032
20000024FF2D0F87 21000024FF2D0F87 I0042
20000120FA13B914 10000090FA13B914 I0032
20000120FA13B915 10000090FA13B915 I0042Four WWPNs are logged in but not defined to any host, and ESSIOport is the DS8000 port each one reached. The server team tells you 10000090FA13B914 belongs to ehr_node1 and 10000090FA13B915 to ehr_node2, while the two 21000024... ports belong to a different server running Windows.
In real life each node would have at least two HBA ports on two fabrics, but the lab gives each node one port to keep the output short.
✅ Checkpoint: You can say which WWPN belongs to ehr_node1.
3Create the cluster and hosts, then map
Type these at the dscli> prompt:
mkcluster ehr_cluster
mkhost -type "Linux Server" -hostport 10000090FA13B914 -cluster ehr_cluster ehr_node1
mkhost -type "Linux Server" -hostport 10000090FA13B915 -cluster ehr_cluster ehr_node2
chcluster -action map -volume 2000-2001,2100-2101 ehr_cluster
chhost -action map -volume 2200 ehr_node1You should see this:
dscli> mkcluster ehr_cluster
CMUC00538I mkcluster: The cluster ehr_cluster is successfully created.
dscli> mkhost -type "Linux Server" -hostport 10000090FA13B914 -cluster ehr_cluster ehr_node1
CMUC00530I mkhost: The host ehr_node1 is successfully created.
dscli> mkhost -type "Linux Server" -hostport 10000090FA13B915 -cluster ehr_cluster ehr_node2
CMUC00530I mkhost: The host ehr_node2 is successfully created.
dscli> chcluster -action map -volume 2000-2001,2100-2101 ehr_cluster
CMUC00541I chcluster: The cluster ehr_cluster is successfully modified.
dscli> chhost -action map -volume 2200 ehr_node1
CMUC00531I chhost: The host ehr_node1 is successfully modified.Five success messages, and you never once typed “volume group”, yet the DS8000 is about to show you it made two of them anyway.
✅ Checkpoint: All five commands report “successfully”.
4Read the hidden volume groups
Type these at the dscli> prompt:
lsvolgrp
showvolgrp V0
showvolgrp V1
lshost -lYou should see this:
dscli> lsvolgrp
Date/Time: 24 October 2026 14:01:36 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
Name ID Type
===========================
ehr_cluster V0 SCSI Map 256
ehr_node1 V1 SCSI Map 256
dscli> showvolgrp V0
Date/Time: 24 October 2026 14:01:36 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
Name ehr_cluster
ID V0
Type SCSI Map 256
Vols 2000 2001 2100 2101
dscli> showvolgrp V1
Date/Time: 24 October 2026 14:01:36 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
Name ehr_node1
ID V1
Type SCSI Map 256
Vols 2200
dscli> lshost -l
Date/Time: 24 October 2026 14:01:36 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
Name Type State Cluster AddrMode Volumes Host ports I/O ports
=================================================================================
ehr_node1 Linux Server Online ehr_cluster scsimap256 5 1 16 (all)
ehr_node2 Linux Server Online ehr_cluster scsimap256 4 1 16 (all)V0 is named after the cluster and holds the four shared volumes, and V1 is named after ehr_node1 and holds only its log volume. Both are SCSI Map 256, the type for Linux hosts that poll for LUNs.
lshost -l adds it all up: ehr_node1 sees 5 volumes (4 shared + 1 private) and ehr_node2 sees 4. State Online means the host port is logged in, and I/O ports 16 (all) means any DS8000 port is allowed, with zoning deciding which ones really get used.
✅ Checkpoint: ehr_node1 shows Volumes 5 and ehr_node2 shows Volumes 4.

5Look one level lower: host connections
Type this at the dscli> prompt:
lshostconnect -lYou should see this:
dscli> lshostconnect -l
Date/Time: 24 October 2026 14:01:36 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
Name ID WWPN HostType LBS addrDiscovery Profile portgrp volgrpID ESSIOport host
============================================================================================================
ehr_node1 0001 10000090FA13B914 Linux 512 LUNPolling Linux Server 1 V1 all ehr_node1
ehr_node2 0002 10000090FA13B915 Linux 512 LUNPolling Linux Server 2 V0 all ehr_node2This is the older, lower-level view the Redbook still documents. Each WWPN is a host connection with an ID, a block size (LBS 512), an address discovery method (LUNPolling), a port group and one volgrpID. The host column ties it back to the host object, and each host gets its own port group, which IBM recommends over the default port group 0.
The shell shows one volume group per connection, so node 1’s connection points to V1 here. This output doesn’t show how a real DS8000 combines a host’s own mappings with its cluster mappings internally, so trust lshost for the full count.
✅ Checkpoint: Each WWPN has its own host connection ID.
6See how a volume ID becomes a LUN ID
For SCSI Mask volume groups (AIX, IBM i) the Redbook gives a simple rule, and this script asks the DS8000 which volumes sit in which volume group and then applies that rule to each one.
Save it as C:\ds8k-lab\lunid.py, next to ds8sim.py. It runs right there on your laptop, not on the DS8000.
The script:
# lunid.py - how a DS8000 volume ID becomes a SCSI LUN ID in a SCSI Mask volume group
# Runs on your workstation or jump server, not on the DS8000.
# It talks to the DS8000 only through the DS CLI (auto.profile: banner off, header on, format delim).
import csv, subprocess
DSCLI = ["python", "ds8sim.py", "-cfg", "auto.profile"] # at work: ["dscli", "-cfg", "auto.profile"]
def dscli(*args):
"""Run one DS CLI command and return its rows as dictionaries."""
out = subprocess.run(DSCLI + list(args), capture_output=True, text=True).stdout
lines = [l for l in out.splitlines() if l and not l.startswith("SaatVedha") and not l.startswith("CMUC")]
return list(csv.DictReader(lines))
def scsimask_lun(vol):
ab, cd = vol[:2], vol[2:]
return f"40{ab}40{cd}00000000"
names = {v["ID"]: v["Name"] for v in dscli("lsfbvol")}
for g in dscli("lsvolgrp"):
vols = dscli("showvolgrp", g["ID"])[0]["Vols"].split()
print(f"Volume group {g['ID']} {g['Name']} ({g['Type']}), {len(vols)} volume(s)")
for vol in vols:
print(f" volume {vol} {names.get(vol, '-'):<9} -> LUN_ID 0x{scsimask_lun(vol)}")
print()
print("LUN_ID is the SCSI Mask rule (AIX, IBM i): 40 + first two digits + 40 + last two digits + zeros")
print("SCSI Map 256 volume group: up to 256 LUN IDs, 0x0000 to 0x00FF")
print("Limits: 8,320 volume groups, 8,192 host attachments")The script needs a saved password and a profile it can read. Use the password you picked in Lesson 1, and if the shell says the record already exists you’ve saved it before, so carry on.
Type these at the dscli> prompt:
managepwfile -action add -name admin -pw <your password> -pwfile security.dat
quitYou should see this:
dscli> managepwfile -action add -name admin -pw <your password> -pwfile security.dat
CMUC00206I managepwfile: Record 10.0.0.1/admin successfully added to password file security.dat.
dscli> quitSave this as auto.profile in the lab folder:
hmc1: 10.0.0.1
username: admin
pwfile: security.dat
devid: IBM.2107-78SV001
banner: off
header: on
format: delim
delim: ,Banner off, header on and format delim make the DS CLI print one header row followed by plain comma-separated rows, which is easy for a script to read. Implementation Lesson 2 explains every line.
Run this:
python lunid.pyYou should see this:
Volume group V0 ehr_cluster (SCSI Map 256), 4 volume(s)
volume 2000 ehr_2000 -> LUN_ID 0x4020400000000000
volume 2001 ehr_2001 -> LUN_ID 0x4020400100000000
volume 2100 ehr_2100 -> LUN_ID 0x4021400000000000
volume 2101 ehr_2101 -> LUN_ID 0x4021400100000000
Volume group V1 ehr_node1 (SCSI Map 256), 1 volume(s)
volume 2200 lab_2200 -> LUN_ID 0x4022400000000000
LUN_ID is the SCSI Mask rule (AIX, IBM i): 40 + first two digits + 40 + last two digits + zeros
SCSI Map 256 volume group: up to 256 LUN IDs, 0x0000 to 0x00FF
Limits: 8,320 volume groups, 8,192 host attachmentsThe script ran lsfbvol, lsvolgrp and one showvolgrp per group, so the list always matches what’s on the box. The lab groups are SCSI Map 256, so the LUN_ID column shows the ID each volume would get in a SCSI Mask group.
An AIX admin who sees LUN 0x4021400100000000 in lsattr output can read DS8000 volume 2101 straight out of it, which is handy when you’re matching host disks to DS8000 volumes during a migration or a problem call. At work you’d run this from the jump server before a migration and hand the list to the AIX team.
✅ Checkpoint: Your script lists both volume groups and maps 2101 to 0x4021400100000000.
Break It, Then Fix It
The scariest volume group mistake doesn’t give you an error at all. Keep the shell from the lab open.
1Break it: put the wrong host in the cluster
A colleague defines a Windows test server, lab_app, by copying your last mkhost command, cluster flag included.
Type these at the dscli> prompt:
mkhost -type "Windows Server" -hostport 21000024FF2D0F86,21000024FF2D0F87 -cluster ehr_cluster lab_app
lshost -lYou’ll get this (no error):
dscli> mkhost -type "Windows Server" -hostport 21000024FF2D0F86,21000024FF2D0F87 -cluster ehr_cluster lab_app
CMUC00530I mkhost: The host lab_app is successfully created.
dscli> lshost -l
Date/Time: 24 October 2026 14:01:52 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
Name Type State Cluster AddrMode Volumes Host ports I/O ports
===================================================================================
ehr_node1 Linux Server Online ehr_cluster scsimap256 5 1 16 (all)
ehr_node2 Linux Server Online ehr_cluster scsimap256 4 1 16 (all)
lab_app Windows Server Online ehr_cluster scsimap256 4 2 16 (all)
So a test server now sees the four EHR database LUNs, and if someone on lab_app opens Disk Management and initialises a “new disk”, the patient database gets overwritten. The DS8000 did exactly what it was told; it was the guest list that was wrong.
To fix it, take the host out of the cluster and then remove the mappings it keeps:
chhost -unassign lab_app
lshost -l
chhost -action unmap -volume 2000-2001,2100-2101 lab_app
lshost -lYou should see this:
dscli> chhost -unassign lab_app
CMUC00531I chhost: The host lab_app is successfully modified.
dscli> lshost -l
Date/Time: 24 October 2026 14:01:52 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
Name Type State Cluster AddrMode Volumes Host ports I/O ports
===================================================================================
ehr_node1 Linux Server Online ehr_cluster scsimap256 5 1 16 (all)
ehr_node2 Linux Server Online ehr_cluster scsimap256 4 1 16 (all)
lab_app Windows Server Online - scsimap256 4 2 16 (all)
dscli> chhost -action unmap -volume 2000-2001,2100-2101 lab_app
CMUC00531I chhost: The host lab_app is successfully modified.
dscli> lshost -l
Date/Time: 24 October 2026 14:01:52 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
Name Type State Cluster AddrMode Volumes Host ports I/O ports
===================================================================================
ehr_node1 Linux Server Online ehr_cluster scsimap256 5 1 16 (all)
ehr_node2 Linux Server Online ehr_cluster scsimap256 4 1 16 (all)
lab_app Windows Server Online - scsimap256 0 2 16 (all)Look at the middle output. After -unassign, lab_app has left the cluster but still shows Volumes 4, which is the Redbook behaviour: a host that leaves a cluster keeps the cluster’s mappings, and only the explicit unmap brings it down to 0. Plenty of people stop after the first command and think they’re safe.
✅ Checkpoint: lab_app shows Cluster – and Volumes 0.
2Break it: define the same WWPN twice
Someone wants to add a third EHR node and reuses node 1’s WWPN from an old spreadsheet.
Type this at the dscli> prompt:
mkhost -type "Linux Server" -hostport 10000090FA13B914 ehr_node3You’ll get this error:
dscli> mkhost -type "Linux Server" -hostport 10000090FA13B914 ehr_node3
CMUN02054E mkhost: 10000090FA13B914: The host port is already defined (host connection 0001). Each host port can be defined only once.Why: the Redbook says each host’s HBA can only be defined once. A WWPN belongs to one physical port, so two hosts can’t both own it. (The message text comes from the practice shell.) This time the error saved you, because the “third node” was really node 1.
To fix it, check which ports exist and who owns them:
lshostport -lYou should see this:
dscli> lshostport -l
Date/Time: 24 October 2026 14:01:52 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
WWPN Name Type State Volumes AddrMode I/O ports Host
==========================================================================================
10000090FA13B914 ehr_node1 Linux Server logged_in 5 scsimap256 16 (all) ehr_node1
10000090FA13B915 ehr_node2 Linux Server logged_in 4 scsimap256 16 (all) ehr_node2
21000024FF2D0F86 lab_app Windows Server logged_in 0 scsimap256 16 (all) lab_app
21000024FF2D0F87 lab_app Windows Server logged_in 0 scsimap256 16 (all) lab_appNow you’ve got every port, its host and how many volumes it sees in one table. Get the new node’s real WWPNs from the server itself (or the SAN switch) rather than an old spreadsheet, and then define it.
✅ Checkpoint: You can see that 10000090FA13B914 already belongs to ehr_node1.
This happened at work
The night the reporting server saw the patient database
A hospital ran its EHR database on a two-node Linux cluster attached to a DS8000, with the shared database LUNs mapped to a cluster and a private boot and log volume on each node. In the middle of a busy week a contractor was asked to give a new reporting server “the same storage setup as the EHR nodes”, so he copied the EHR host definition from the change ticket, cluster name and all, and created the reporting host inside the EHR cluster.
The reporting server was a Windows box, and when its administrator logged in the next morning Disk Management showed four new, unknown disks and offered to initialise them. He was about to click OK when he noticed the sizes matched the EHR database, and he rang the storage team instead. Nothing got overwritten, but for about fourteen hours a server outside the cluster had full write access to the patient database, which is a data integrity risk and a privacy incident at the same time.
Root cause: the reporting host was put in the wrong cluster, so it picked up the cluster’s volume group. The first fix they tried, taking it out of the cluster, didn’t remove the mappings it had inherited.
Fix: the storage team unassigned the host, explicitly unmapped the EHR volumes, checked lshost -l and lshostport -l for every host and opened a privacy review. Mapping changes for clinical systems now need a second person to check the volume counts before and after.
Lesson: treat a volume group as a security boundary. Check which cluster a new host is joining, and after any change make sure every host’s volume count is what you expected.
Common mistakes and troubleshooting
| Symptom | Likely cause | What to check / fix |
|---|---|---|
| Host is zoned but sees no disks | No host defined, or no volumes mapped | Check lshostport -unknown, the Volumes count in lshost -l, and lsvolgrp. |
| A host sees LUNs it shouldn’t | Added to the wrong cluster or volume group | Unassign it, then unmap explicitly and confirm with lshost -l. |
| Host still sees cluster LUNs after leaving the cluster | Unassigned hosts keep cluster mappings | Run chhost -action unmap for those volumes. |
| mkhost refuses a WWPN | WWPN already defined to another host | Check lshostport -l and get the real WWPN from the server or switch. |
| AIX sees odd LUN numbers | SCSI Mask LUN IDs (40ab40cd…) | Decode: volume abcd becomes LUN ID 0x40ab40cd00000000. |
| Can’t find volume groups in the GUI | The GUI hides them | Use hosts and clusters in the GUI, or lsvolgrp and showvolgrp in the DS CLI. |
| Disk vanished and the host crashed | Volume removed from a volume group while in use | Remove the disks on the host first, following the OS documentation, and then unmap. |
After every mapping change, spend one minute on lshost -l for volume counts and lshostport -l for who owns which port, and compare them with the ticket. It’s the cheapest safety check in storage.
Interview questions
Click a question to open it. Each is phrased the way an interviewer might ask it, and underneath you’ll find why they ask it and one way to answer in your own words.
Fresher level
1. What’s a volume group on a DS8000?
Why they ask this: They want the core idea behind LUN masking on the DS8000.
How you might answer: A volume group is a named list of FB volumes. A host’s ports, defined as a host connection, point to one volume group, and that list is exactly what the host can see.
Several hosts can share a volume group and a volume can be in several volume groups. CKD volumes don’t need one, they go into a default volume group.
2. How do you give a Linux server access to two new LUNs on a DS8000?
Why they ask this: They want practical, step-by-step thinking.
How you might answer: After zoning I’d confirm the WWPNs with lshostport -unknown, create the host with mkhost -type “Linux Server” -hostport and its WWPNs, and then run chhost -action map -volume with the two volume IDs.
Then I’d check lshost -l for the volume count and ask the server team to rescan and confirm multipath sees two paths per LUN.
2–5 years experience
3. What’s the difference between mapping to a host and mapping to a cluster?
Why they ask this: They’re checking you understand shared versus private access.
How you might answer: Mapping to a cluster with chcluster puts the volumes in the cluster’s volume group so every host in the cluster sees them, which is what shared cluster disks need. Mapping to a host with chhost only gives that one host access, for something like a boot or log volume.
There’s one catch: if a host leaves the cluster with chhost -unassign, it keeps the cluster’s mappings until I unmap them.
4. When would you use SCSI Map 256 versus SCSI Mask volume groups?
Why they ask this: They’re testing whether you know the host type drives this choice.
How you might answer: SCSI Map 256 is for hosts that poll for LUNs, like Linux, Windows and VMware, and it supports up to 256 LUN IDs. SCSI Mask is for hosts that use Report LUNs, like AIX and IBM i, and it maps volume abcd to LUN ID 40ab40cd00000000.
Usually the host type picks it for me, because mkhost with the right -type sets the address discovery method and block size, and those have to match the volume group type.
Senior level
5. A server outside a cluster turned out to see the cluster’s database LUNs. How do you handle it?
Why they ask this: At senior level you handle both the technical fix and the governance.
How you might answer: First I’d stop the exposure: unassign the host from the cluster, unmap the volumes it inherited, and confirm with lshost -l and lshostport -l that it can’t see anything it shouldn’t. I’d also ask the server team to check nobody touched those disks.
Then I’d treat it as an incident. That means reporting it to security or privacy if regulated data was exposed, finding out how it happened, and adding a second-person check plus before/after volume counts to mapping changes.
6. How would you design host and volume group management for a large DS8000 with hundreds of hosts?
Why they ask this: They’re after scale and auditability.
How you might answer: I’d use hosts and clusters, the recommended method, so the DS8000 creates and names volume groups consistently and the GUI shows the same picture. Each host gets its own port group, clusters mirror the real application clusters, and names follow a standard.
I’d keep the plan in a CMDB, script changes so they can be reviewed, and run a regular report from lshost -l and lshostport -l to catch unknown ports or odd volume counts. The limits are 8,192 host attachments and 8,320 volume groups, so there’s plenty of room, just not for sloppiness.
Quick quiz
Q1. What does a volume group define?
- Which ranks a volume uses
- Which FB volumes a host can see
- The RAID level
- The extent size
Show answer
B: a volume group is the list of FB volumes a host attachment can access.
Q2. How many volume groups can one host connection have?
- One
- Two
- Up to 256
- Unlimited
Show answer
A: each host connection has exactly one volume group, though a volume can be in many groups.
Q3. Which volume group type do AIX hosts usually use?
- SCSI Map 256
- SCSI Mask
- CKD default
- FICON
Show answer
B: AIX uses Report LUNs, which goes with the SCSI Mask type.
Q4. A host is unassigned from a cluster. What happens to the cluster volumes?
- It loses them at once
- It keeps them until they are unmapped
- They are deleted
- They move to another host
Show answer
B: a host that leaves a cluster keeps the cluster mappings.
Q5. Where can you manage volume group objects directly?
- Only in the DS GUI
- Only in the DS CLI
- On the HMC console
- In the host OS
Show answer
B: the GUI hides volume groups, and the DS CLI manages them directly.
Quick recap
- A host attachment (WWPNs) points to one volume group, and the volume group lists the FB volumes the host can see.
- Hosts and clusters (mkhost, mkcluster, chhost, chcluster) are the recommended way, and the volume groups get created for you.
- SCSI Map 256 suits polling hosts like Linux and Windows; SCSI Mask suits Report LUNs hosts like AIX.
- A host leaving a cluster keeps the cluster mappings until you unmap them.
- Each WWPN can only be defined once, so check lshostport -l before adding hosts.
- After every change, compare the lshost -l volume counts with what you expected.
Next lesson
Lesson 18: RAS: failover, failback and no single point of failure → Phase 3 starts here, and you’ll watch one server take over from the other without the hosts noticing.
Further reading: DS8000 volume groups
Want to go deeper into DS8000 volume groups? Sections 3.4.6 and 3.4.7 of IBM’s IBM Storage DS8A00 Architecture and Implementation Guide (IBM Redbooks) explain host attachments, volume groups and the full virtualization hierarchy. To see the whole ladder again, revisit Lesson 9: DS8000 virtualization.
You can also see the full plan for this course on the IBM DS8000 Architecture course page.
