Metro Mirror and Global Mirror: paths, pairs, failover

DS8000 Metro Mirror keeps a second, identical copy of your volumes on another DS8000 in another building, one write at a time. If the main site loses power or catches fire, the bank or airline switches over to the second site and carries on. Global Copy and Global Mirror do the same job over longer distances, with a small delay.

You’ll build replication end to end in the practice shell, against a pretend DR system called IBM.2107-78SV002. That means finding the replication ports, creating paths, creating Metro Mirror and Global Copy pairs, and then practising a planned failover to the DR site and a failback home.

You need the practice shell and the volume and LSS ideas from Lessons 13 and 14. FlashCopy (Lesson 18) helps, but you can manage without it.

TimeYou needBy the end you can
75 to 90 minutesThe SaatVedha practice shell and the setup script belowCreate PPRC paths and Metro Mirror pairs, read lspprc states, and run a failover and failback with the right -dev on each side

What it is, in one line

Metro Mirror copies each write to a second DS8000 before the host hears “done”, so the DR copy always matches, while Global Copy and Global Mirror copy asynchronously to cover longer distances.

In Simple Words

Two notebooks in two classrooms

Say you’re the class monitor, and every time the teacher says something important you write it in your notebook. Your friend sits in the next classroom with a phone call open, and you read each line out to her; she writes the same line, says “got it”, and only then do you nod to the teacher.

That way the two notebooks always match, and if yours falls in a puddle, hers is still perfect. That’s Metro Mirror, where nothing counts as “done” until both books have it. If your friend were in another city, waiting for “got it” after every line would slow the class down, so you’d send her lines in batches and let her catch up, which is Global Copy. Global Mirror adds one more rule: every few seconds she takes a photo of her notebook, so she always has a tidy page to start from.

Engineer's View

Paths, pairs and states

Names. IBM calls all of this Remote Mirror and Copy, but the commands still use the old name PPRC (peer-to-peer remote copy). Metro Mirror (-type mmir) is synchronous.

Global Copy (-type gcp) is asynchronous and fuzzy. Global Mirror is Global Copy plus FlashCopy journals at the DR site, with a session that forms consistency groups (mksession, mkgmir).

Connectivity. Replication runs over Fibre Channel (FCP) ports, never FICON. Plan enough paths for both speed and redundancy, and if you run Metro Mirror and Global Copy between the same pair of systems, keep their logical and physical paths separate.

Over long distances you may need channel extenders or DWDM.

Paths. A path joins a source LSS to a target LSS over port pairs (I0030:I0130). lsavailpprcport lists the usable port pairs and needs the remote WWNN, which you get from lssi on the DR box. mkpprcpath replaces all the paths for that LSS pair, so list every port pair in the same command. -consistgrp turns the LSS pair into a consistency group, so that a suspend puts its volumes into long busy instead of letting them run unprotected.

Pairs. mkpprc -type mmir -mode full begins with a full copy (Copy Pending) and then moves to Full Duplex, and on the DR side the same pair shows Target Full Duplex. Global Copy pairs always show Copy Pending. -critmode makes writes fail if the last path goes, rather than carrying on without a mirror.

Failover and failback. failoverpprc runs on the DR box (-dev = DR, pairs written DR:prod) and works even with the paths down, turning the DR volumes into Suspended sources the hosts can use. failbackpprc copies changes from whichever side is now the source, and it needs paths in that direction.

Limits. Copy Services work on LUNs up to 4 TiB. The volumes have to be the same size on both sides, and you can’t expand a volume while it’s in a pair.

Metro Mirror needs the MM licence and Global Mirror needs the GM licence.

How it works, step by step

Follow a payments team that wants volumes 2200 and 2201, both in LSS 22, mirrored from the main site (78SV001) to the DR site (78SV002).

1Create matching volumes on the DR box

The DR volumes have to match the production volumes in size. Most teams also use the same volume IDs on both sides, so 2200 mirrors to 2200, which makes failover scripts much easier to read.

2Find the replication ports

lsavailpprcport -remotewwnn <DR WWNN> 22:22 asks the DS8000 which of its FCP ports can see the DR box’s ports through the SAN or the dark fibre, and you pick at least two port pairs on different host adapters.

DS8000 Metro Mirror write flow between the main and DR DS8000

3Create the paths

mkpprcpath builds the logical path from LSS 22 to LSS 22 over your port pairs, and lspprcpath should then show every path as Success. A single path is a single point of failure, so two on different adapters and fabrics is the minimum.

4Create the pairs

mkpprc -type mmir -mode full starts the first full copy. The pairs sit in Copy Pending while it runs and turn Full Duplex once every track is across.

After that, every host write lands in the primary’s cache and NVS, gets sent to the secondary and stored there, and only then is the host told “done”.

5Watch the pairs every day

Full Duplex on the primary with Target Full Duplex on the secondary is the healthy picture. Suspended means mirroring has stopped and the DR copy is falling further behind every second, and the Reason column tells you why: Host Source means someone paused it, while Internal Conditions Both often means the paths broke.

6Failover to DR

For a DR test or a real disaster you run failoverpprc on the DR box. The DR volumes become Suspended sources that hosts can mount and write to, and production keeps the old, frozen image.

Failover and failback steps with pausepprc, failoverpprc, mkpprcpath and failbackpprc

7Failback home

Once the main site is healthy again, you first build paths in the reverse direction (DR to prod), and then failbackpprc on the DR box copies only the changes made at DR back to the main site. To get back to normal you repeat failover and failback once more from the main site, which makes production the primary again.

Large shops automate this sequence with IBM Copy Services Manager or GDPS, but you still need to understand each step so you know what the tool is doing and can fix it when it stops halfway.

Hands-on lab: mirror, fail over and fail back

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.

Your practice shell talks to two systems: the main box IBM.2107-78SV001 (the default) and the pretend DR box IBM.2107-78SV002, which you reach with -dev IBM.2107-78SV002. Two replication links connect them, I0030 to I0130 and I0052 to I0152.

Practice shell note: the practice shell is our own teaching tool, not IBM software. Real DS CLI output looks very close to this but isn’t identical. SIM lines and the IDs CMUN03033E and CMUN03004E come from the practice shell. A full Metro Mirror copy takes 1 to 2 simulated minutes, and simctl tick moves the clock on.

1Start clean and build volumes on both boxes

Save this as setup-19.txt. It creates a pool on the main box with two payment volumes and one reporting volume (50 GiB each) in LSS 22, and the same three volumes on the DR box.

setup-19.txt:

# setup-19.txt: production volumes on 78SV001, matching DR volumes on 78SV002 (Lesson 19)
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 T2_0
chrank -extpool P0 R0
chrank -extpool P0 R1
mkfbvol -extpool p0 -cap 50 -name pay_#h 2200-2201
mkfbvol -dev IBM.2107-78SV002 -extpool p0 -cap 50 -name dr_pay_#h 2200-2201
mkfbvol -dev IBM.2107-78SV002 -extpool p0 -cap 50 -name dr_rep_#h 2202
mkfbvol -extpool p0 -cap 50 -name rep_#h 2202

Run this:

python ds8sim.py   (then: simctl reset, quit)
python ds8sim.py -hmc1 10.0.0.1 -user admin -script setup-19.txt
python ds8sim.py

The script prints CMUC00025I six times, three for each box.

✅ Checkpoint: the script ran with no errors.

2Get the DR box WWNN

Run this:

lssi -dev IBM.2107-78SV002

You should see this:

dscli> lssi -dev IBM.2107-78SV002
Date/Time: 24 October 2026 11:02:37 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV002
Name        ID               Storage Unit     Model WWNN             State  ESSNet
===================================================================================
ds8k-g10-dr IBM.2107-78SV002 IBM.2107-78SV002 A05   5005076303FFF1DD Online Enabled

Note down 5005076303FFF1DD. Every path command needs the remote WWNN, and mixing it up with your own is the most common first mistake.

✅ Checkpoint: you have the DR WWNN 5005076303FFF1DD.

3Find usable replication ports

Run this:

lsavailpprcport -remotewwnn 5005076303FFF1DD 22:22

You should see this:

dscli> lsavailpprcport -remotewwnn 5005076303FFF1DD 22:22
Date/Time: 24 October 2026 11:02:37 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
Local Port Attached Port Type
=============================
I0030      I0130         FCP
I0052      I0152         FCP

Two port pairs can reach the DR box, and they sit on different host adapters (I003x and I005x), which is what you want.

✅ Checkpoint: two FCP port pairs listed.

4Create the paths for LSS 22

Run these:

mkpprcpath -remotedev IBM.2107-78SV002 -remotewwnn 5005076303FFF1DD -srclss 22 -tgtlss 22 I0030:I0130 I0052:I0152
lspprcpath -l 22

You should see this:

dscli> mkpprcpath -remotedev IBM.2107-78SV002 -remotewwnn 5005076303FFF1DD -srclss 22 -tgtlss 22 I0030:I0130 I0052:I0152
CMUC00149I mkpprcpath: Remote Mirror and Copy path 22:22 successfully established.
dscli> lspprcpath -l 22
Date/Time: 24 October 2026 11:02:37 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
Src Tgt State   SS   Port  Attached Port Tgt WWNN         Failed Reason PPRC CG
================================================================================
22  22  Success FF22 I0030 I0130         5005076303FFF1DD -             Disabled
22  22  Success FF22 I0052 I0152         5005076303FFF1DD -             Disabled

Both paths say Success. The SS column is the subsystem ID of the target LSS, and PPRC CG shows Disabled because we didn’t use -consistgrp.

✅ Checkpoint: two paths for 22:22, both Success.

5Create the Metro Mirror pairs

Run these:

mkpprc -remotedev IBM.2107-78SV002 -type mmir -mode full 2200-2201:2200-2201
lspprc 2200-2201

You should see this:

dscli> mkpprc -remotedev IBM.2107-78SV002 -type mmir -mode full 2200-2201:2200-2201
CMUC00153I mkpprc: Remote Mirror and Copy volume pair relationship 2200:2200 successfully created.
CMUC00153I mkpprc: Remote Mirror and Copy volume pair relationship 2201:2201 successfully created.
dscli> lspprc 2200-2201
Date/Time: 24 October 2026 11:02:37 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
ID        State        Reason Type         SourceLSS Timeout (secs) Critical Mode First Pass Status
===================================================================================================
2200:2200 Copy Pending -      Metro Mirror 22        60             Disabled      Invalid
2201:2201 Copy Pending -      Metro Mirror 22        60             Disabled      Invalid

Copy Pending means the first full copy is under way, and hosts can keep writing to 2200 and 2201 the whole time.

✅ Checkpoint: two pairs in Copy Pending, type Metro Mirror.

6Wait for Full Duplex and check both sides

Run these:

simctl tick 2
lspprc 2200-2201
lspprc -dev IBM.2107-78SV002 2200-2201

You should see this:

dscli> simctl tick 2
SIM0112I simctl: clock advanced 2 minutes.
dscli> lspprc 2200-2201
Date/Time: 24 October 2026 11:04:37 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
ID        State       Reason Type         SourceLSS Timeout (secs) Critical Mode First Pass Status
==================================================================================================
2200:2200 Full Duplex -      Metro Mirror 22        60             Disabled      Invalid
2201:2201 Full Duplex -      Metro Mirror 22        60             Disabled      Invalid
dscli> lspprc -dev IBM.2107-78SV002 2200-2201
Date/Time: 24 October 2026 11:04:37 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV002
ID        State              Reason Type         SourceLSS Timeout (secs) Critical Mode First Pass Status
=========================================================================================================
2200:2200 Target Full Duplex -      Metro Mirror 22        60             Disabled      Invalid
2201:2201 Target Full Duplex -      Metro Mirror 22        60             Disabled      Invalid

The main box says Full Duplex and the DR box says Target Full Duplex, which is the healthy state you’ll check every morning.

✅ Checkpoint: Full Duplex on 78SV001 and Target Full Duplex on 78SV002.

Practice shell: Metro Mirror paths and pairs reaching Full Duplex
Paths, pairs and Full Duplex on both boxes in the practice shell.

7Add a Global Copy pair for reporting

The reporting data can afford to lag a little, so it uses Global Copy instead.

Run these:

mkpprc -remotedev IBM.2107-78SV002 -type gcp -mode full 2202:2202
lspprc 2200-2202

You should see this:

dscli> mkpprc -remotedev IBM.2107-78SV002 -type gcp -mode full 2202:2202
CMUC00153I mkpprc: Remote Mirror and Copy volume pair relationship 2202:2202 successfully created.
dscli> lspprc 2200-2202
Date/Time: 24 October 2026 11:04:37 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
ID        State        Reason Type         SourceLSS Timeout (secs) Critical Mode First Pass Status
===================================================================================================
2200:2200 Full Duplex  -      Metro Mirror 22        60             Disabled      Invalid
2201:2201 Full Duplex  -      Metro Mirror 22        60             Disabled      Invalid
2202:2202 Copy Pending -      Global Copy  22        Unknown        Disabled      False

Global Copy pairs always show Copy Pending, even when they’ve fully caught up, so don’t raise an alarm over it. On real systems you’d add a Global Mirror session on top to get consistent DR data.

✅ Checkpoint: 2202:2202 shows Copy Pending, type Global Copy.

8Planned failover to DR

It’s DR test day and the payments app has been stopped at the main site. Pause the pairs, then fail over on the DR box.

Note that the pair is written DR:prod and -dev points at the DR box.

Run these:

pausepprc -remotedev IBM.2107-78SV002 2200-2201:2200-2201
lspprc 2200-2201
failoverpprc -dev IBM.2107-78SV002 -remotedev IBM.2107-78SV001 -type mmir 2200-2201:2200-2201
lspprc -dev IBM.2107-78SV002 2200-2201

You should see this:

dscli> pausepprc -remotedev IBM.2107-78SV002 2200-2201:2200-2201
CMUC00157I pausepprc: Remote Mirror and Copy volume pair 2200:2200 relationship successfully paused.
CMUC00157I pausepprc: Remote Mirror and Copy volume pair 2201:2201 relationship successfully paused.
dscli> lspprc 2200-2201
Date/Time: 24 October 2026 11:04:37 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
ID        State     Reason      Type         SourceLSS Timeout (secs) Critical Mode First Pass Status
=====================================================================================================
2200:2200 Suspended Host Source Metro Mirror 22        60             Disabled      Invalid
2201:2201 Suspended Host Source Metro Mirror 22        60             Disabled      Invalid
dscli> failoverpprc -dev IBM.2107-78SV002 -remotedev IBM.2107-78SV001 -type mmir 2200-2201:2200-2201
CMUC00196I failoverpprc: Remote Mirror and Copy pair 2200:2200 successfully reversed.
CMUC00196I failoverpprc: Remote Mirror and Copy pair 2201:2201 successfully reversed.
dscli> lspprc -dev IBM.2107-78SV002 2200-2201
Date/Time: 24 October 2026 11:04:37 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV002
ID        State     Reason      Type         SourceLSS Timeout (secs) Critical Mode First Pass Status
=====================================================================================================
2200:2200 Suspended Host Source Metro Mirror 22        60             Disabled      Invalid
2201:2201 Suspended Host Source Metro Mirror 22        60             Disabled      Invalid

On the DR box the volumes now show Suspended with reason Host Source, meaning they’re sources the DR hosts can mount, while the main site holds on to the image from the moment you paused.

✅ Checkpoint: lspprc on 78SV002 shows Suspended Host Source for 2200 and 2201.

9Fail back so changes flow home

After the test, the changes made at DR have to go back home. failbackpprc needs paths in the DR-to-prod direction, so create those first.

Run these:

mkpprcpath -dev IBM.2107-78SV002 -remotedev IBM.2107-78SV001 -remotewwnn 5005076303FFF0DD -srclss 22 -tgtlss 22 I0130:I0030 I0152:I0052
failbackpprc -dev IBM.2107-78SV002 -remotedev IBM.2107-78SV001 -type mmir 2200-2201:2200-2201
simctl tick 2
lspprc -dev IBM.2107-78SV002 2200-2201
lspprc 2200-2201

You should see this:

dscli> mkpprcpath -dev IBM.2107-78SV002 -remotedev IBM.2107-78SV001 -remotewwnn 5005076303FFF0DD -srclss 22 -tgtlss 22 I0130:I0030 I0152:I0052
CMUC00149I mkpprcpath: Remote Mirror and Copy path 22:22 successfully established.
dscli> failbackpprc -dev IBM.2107-78SV002 -remotedev IBM.2107-78SV001 -type mmir 2200-2201:2200-2201
CMUC00197I failbackpprc: Remote Mirror and Copy pair 2200:2200 successfully failed back.
CMUC00197I failbackpprc: Remote Mirror and Copy pair 2201:2201 successfully failed back.
dscli> simctl tick 2
SIM0112I simctl: clock advanced 2 minutes.
dscli> lspprc -dev IBM.2107-78SV002 2200-2201
Date/Time: 24 October 2026 11:06:37 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV002
ID        State       Reason Type         SourceLSS Timeout (secs) Critical Mode First Pass Status
==================================================================================================
2200:2200 Full Duplex -      Metro Mirror 22        60             Disabled      Invalid
2201:2201 Full Duplex -      Metro Mirror 22        60             Disabled      Invalid
dscli> lspprc 2200-2201
Date/Time: 24 October 2026 11:06:37 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
ID        State              Reason Type         SourceLSS Timeout (secs) Critical Mode First Pass Status
=========================================================================================================
2200:2200 Target Full Duplex -      Metro Mirror 22        60             Disabled      Invalid
2201:2201 Target Full Duplex -      Metro Mirror 22        60             Disabled      Invalid

The DR box is now the primary (Full Duplex) and the main box is the target. To make production the primary again, you’d pause, run failoverpprc on 78SV001 and then failbackpprc from 78SV001, the same steps in the opposite direction.

✅ Checkpoint: 78SV002 shows Full Duplex and 78SV001 shows Target Full Duplex.

Break It, Then Fix It

Start fresh so no paths exist: run simctl reset in the shell, leave, and run setup-19.txt again. Then make the three mistakes new replication admins tend to make in their first month.

1Break it: pair before path, then the wrong WWNN

Try to create a pair before any path exists, and then try to create the path using the WWNN from your own lssi.

Run these:

mkpprc -remotedev IBM.2107-78SV002 -type mmir -mode full 2200:2200
mkpprcpath -remotedev IBM.2107-78SV002 -remotewwnn 5005076303FFF0DD -srclss 22 -tgtlss 22 I0030:I0130
lssi

You’ll get these errors:

dscli> mkpprc -remotedev IBM.2107-78SV002 -type mmir -mode full 2200:2200
CMUN03033E mkpprc: 2200:2200: No working Remote Mirror and Copy path exists from LSS 22 to LSS 22. Create one with mkpprcpath and check lspprcpath.
dscli> mkpprcpath -remotedev IBM.2107-78SV002 -remotewwnn 5005076303FFF0DD -srclss 22 -tgtlss 22 I0030:I0130
CMUN03004E mkpprcpath: 5005076303FFF0DD: This is the WWNN of the local storage image. Specify the WWNN of the remote storage image (run lssi on the remote box).
dscli> lssi
Date/Time: 24 October 2026 11:02:37 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
Name         ID               Storage Unit     Model WWNN             State  ESSNet
====================================================================================
ds8k-g10-lab IBM.2107-78SV001 IBM.2107-78SV000 A05   5005076303FFF0DD Online Enabled

Why: a pair needs a working path between its two LSSs, and a path has to point at the other box’s WWNN. lssi on the main box shows 5005076303FFF0DD, which is the local system. (Both IDs are practice shell messages, but a real DS8000 refuses too.)

Fix: use the DR WWNN from lssi -dev IBM.2107-78SV002 and then create the pair. This time we build only one path, which sets things up for the next break.

Run these:

mkpprcpath -remotedev IBM.2107-78SV002 -remotewwnn 5005076303FFF1DD -srclss 22 -tgtlss 22 I0030:I0130
mkpprc -remotedev IBM.2107-78SV002 -type mmir -mode full 2200:2200
simctl tick 2

You should see this:

dscli> mkpprcpath -remotedev IBM.2107-78SV002 -remotewwnn 5005076303FFF1DD -srclss 22 -tgtlss 22 I0030:I0130
CMUC00149I mkpprcpath: Remote Mirror and Copy path 22:22 successfully established.
dscli> mkpprc -remotedev IBM.2107-78SV002 -type mmir -mode full 2200:2200
CMUC00153I mkpprc: Remote Mirror and Copy volume pair relationship 2200:2200 successfully created.
dscli> simctl tick 2
SIM0112I simctl: clock advanced 2 minutes.

✅ Checkpoint: 2200:2200 is created over one path.

Practice shell errors: no path, local WWNN, path failed and pair suspended
Pair before path, the wrong WWNN, and a pair suspended by a failed link.

2Break it: lose the only path

A SAN engineer swaps an SFP on the fabric that carries your only replication link.

Run these:

simctl linkfail I0030
lspprcpath 22
lspprc 2200

You’ll get this:

dscli> simctl linkfail I0030
SIM0113I simctl: replication link I0030 <-> I0130 is down.
dscli> lspprcpath 22
Date/Time: 24 October 2026 11:04:37 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
Src Tgt State  SS   Port  Attached Port Tgt WWNN
========================================================
22  22  Failed FF22 I0030 I0130         5005076303FFF1DD
dscli> lspprc 2200
Date/Time: 24 October 2026 11:04:37 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
ID        State     Reason                   Type         SourceLSS Timeout (secs) Critical Mode First Pass Status
==================================================================================================================
2200:2200 Suspended Internal Conditions Both Metro Mirror 22        60             Disabled      Invalid

Why: with every path to LSS 22 down, the DS8000 can’t send writes to DR, so it suspends the pair (reason Internal Conditions Both) and keeps production running. The DR copy is now ageing by the second, but no host sees an error, which is exactly why nobody notices.

Fix: bring the link back, recreate the paths with both port pairs in one command (mkpprcpath replaces the list rather than adding to it), and resume the pair.

Run these:

simctl linkfix I0030
mkpprcpath -remotedev IBM.2107-78SV002 -remotewwnn 5005076303FFF1DD -srclss 22 -tgtlss 22 I0030:I0130 I0052:I0152
lspprcpath 22
resumepprc -remotedev IBM.2107-78SV002 -type mmir 2200:2200
simctl tick 2
lspprc 2200

You should see this:

dscli> simctl linkfix I0030
SIM0113I simctl: replication link I0030 <-> I0130 is up.
dscli> mkpprcpath -remotedev IBM.2107-78SV002 -remotewwnn 5005076303FFF1DD -srclss 22 -tgtlss 22 I0030:I0130 I0052:I0152
CMUC00149I mkpprcpath: Remote Mirror and Copy path 22:22 successfully established.
dscli> lspprcpath 22
Date/Time: 24 October 2026 11:04:37 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
Src Tgt State   SS   Port  Attached Port Tgt WWNN
=========================================================
22  22  Success FF22 I0030 I0130         5005076303FFF1DD
22  22  Success FF22 I0052 I0152         5005076303FFF1DD
dscli> resumepprc -remotedev IBM.2107-78SV002 -type mmir 2200:2200
CMUC00158I resumepprc: Remote Mirror and Copy volume pair 2200:2200 relationship successfully resumed. This message is being returned before the copy completes.
dscli> simctl tick 2
SIM0112I simctl: clock advanced 2 minutes.
dscli> lspprc 2200
Date/Time: 24 October 2026 11:06:37 UTC IBM DSCLI Version: 7.10.10.348 DS: IBM.2107-78SV001
ID        State       Reason Type         SourceLSS Timeout (secs) Critical Mode First Pass Status
==================================================================================================
2200:2200 Full Duplex -      Metro Mirror 22        60             Disabled      Invalid

✅ Checkpoint: two Success paths and the pair back in Full Duplex.

If you’d rather writes stopped than ran unmirrored, that’s the job of -critmode on mkpprc and -consistgrp on mkpprcpath. Agree it with the business, because you’re trading availability for zero data loss.

This happened at work

The mirror that was suspended for eleven days

An insurer mirrored its policy and claims databases with Metro Mirror between two data centres 30 km apart. During the install the second fabric’s ports were “full”, so both replication paths for the main LSSs ended up cabled into the same SAN fabric. Then, on a quiet Sunday, a firmware update rebooted that fabric’s director. Both paths dropped and every pair suspended, but production carried on without a hiccup. The monitoring team watched host errors and pool space, nobody watched mirror states, and the Copy Services events sat unread in the DS GUI. Eleven days later the yearly DR test began with lspprc, and every pair said Suspended; had the main site failed in that time, the insurer would have lost eleven days of claims.

Root cause: both paths sat on one fabric, and there was no working alert for suspended pairs. Fix: the paths were moved to two adapters on two fabrics, and lspprc and lspprcpath went into a daily health script that pages someone for anything that isn’t Full Duplex or Success. Every fabric change now carries a “check lspprcpath after” step.

The lesson: Metro Mirror only protects you while it’s running, and a suspend makes no noise by design, so you have to watch for it.

Common mistakes and troubleshooting

SymptomLikely causeWhat to check / fix
mkpprc says no path existsPaths not created, or created for another LSS pairRun lspprcpath for the source LSS, then mkpprcpath for that exact LSS pair.
mkpprcpath or lsavailpprcport fails on the WWNNLocal WWNN used instead of the remote oneRun lssi -dev against the DR box and copy its WWNN.
Second path “disappeared” after adding a new onemkpprcpath replaces all paths for the LSS pairList every port pair in the same command, every time.
Pairs Suspended, reason Internal Conditions BothAll paths down (fabric, SFP, link)Check lspprcpath, fix the link, recreate the paths, then resumepprc.
Global Copy pair “stuck” in Copy PendingThat’s normal for Global CopyLook at First Pass Status and Out Of Sync Tracks instead.
failoverpprc does nothing usefulRun on the wrong box or pairs typed prod:DRRun it with -dev set to the DR box and the pairs written DR:prod.
failbackpprc says no pathNo paths in the new directionRun mkpprcpath from the DR box to production first.

Check both directions on both boxes every time, because a pair can look fine from one side and tell a different story from the other.

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’s the difference between Metro Mirror and Global Copy?

Why they ask this: They want to hear that you understand synchronous against asynchronous, and what that means for data loss and distance.

How you might answer: Metro Mirror is synchronous, so the host only gets “done” once the write is stored on both DS8000s; the DR copy is identical, but distance adds latency. Global Copy is asynchronous and sends writes later, so it copes with long distances, but the DR copy lags and isn’t consistent by itself. Global Mirror adds consistency groups on top of Global Copy.

2. What do Full Duplex, Copy Pending and Suspended mean on lspprc?

Why they ask this: It’s the most important status output in replication work, and they want to know you can read it.

How you might answer: Copy Pending means the copy is still catching up, which is normal during the first copy and is always the state for Global Copy. Full Duplex means a Metro Mirror pair is in sync, and on the DR box it shows as Target Full Duplex. Suspended means mirroring has stopped, and the Reason column, Host Source or Internal Conditions Both for example, tells you why.

2–5 years experience

3. Walk me through setting up Metro Mirror for two new volumes from scratch.

Why they ask this: They want the full order of steps, plus the details that usually go wrong.

How you might answer: I’d create same-size volumes on the DR box, get its WWNN with lssi, and check lsavailpprcport -remotewwnn for port pairs on different adapters. Next comes mkpprcpath with all the port pairs in one command, and lspprcpath to confirm Success on each path.

Then I’d run mkpprc -type mmir -mode full and watch lspprc until Copy Pending turns to Full Duplex, checking the DR side as well, and finally add the pairs to monitoring.

4. Your monitoring shows every pair Suspended with reason Internal Conditions Both. What do you do?

Why they ask this: They’re looking for calm troubleshooting, and for you to realise production is fine but DR isn’t.

How you might answer: I’d start by telling the team that production is running but DR is no longer current. Then I’d check lspprcpath to see which paths failed and work with the SAN team on the links or SFPs. Once the paths show Success again I’d run resumepprc, watch the pairs come back to Full Duplex, and then find out why we had a single point of failure.

Senior level

5. Explain a planned failover to DR and back, with the commands and which box each runs on.

Why they ask this: A senior engineer has to know which way each command runs, because a mistake here can overwrite good data.

How you might answer: Once the app has stopped at production, I pause the pairs and run failoverpprc -type mmir with -dev set to the DR box and the pairs written DR:prod. The DR volumes become Suspended sources and the DR hosts start the app.

To come home, I create paths from DR to prod and run failbackpprc on the DR box so the changes flow back. When it reaches Full Duplex I stop the app at DR and repeat failover and failback from the production box. In real life CSM or GDPS drives all this, but I’d still verify each state with lspprc on both sides.

6. The business wants zero data loss but also says production must never stop because of a mirror problem. How do you handle that?

Why they ask this: They want to see whether you can explain a real trade-off and design around it.

How you might answer: Those two goals clash when the links fail. With -critmode or -consistgrp the system protects the mirror by stopping or holding writes, and without them production keeps running while DR falls behind. I’d explain that, cut the odds of it happening with paths on two adapters and two fabrics plus good monitoring, and let the business choose the behaviour for each application.

Quick quiz

Q1. When does a host get “write complete” with Metro Mirror?

  1. As soon as the primary cache has it
  2. After the secondary DS8000 has also stored it
  3. After the data is on flash at both sites
  4. After the next consistency group
Show answer

B: Metro Mirror is synchronous, so the write has to be stored on both systems first.

Q2. Which WWNN do you give to mkpprcpath -remotewwnn?

  1. The local system WWNN
  2. The host HBA WWNN
  3. The remote (DR) system WWNN from lssi on that box
  4. Any port WWPN
Show answer

C: The path points at the other storage system, so it needs the remote WWNN.

Q3. You add a third port pair with mkpprcpath and list only that pair. What happens?

  1. It is added to the existing paths
  2. It replaces all paths for that LSS pair
  3. It fails
  4. It creates a second LSS pair
Show answer

B: mkpprcpath replaces every path for the LSS pair, so list all the port pairs every time.

Q4. Where do you run failoverpprc for a failover to DR?

  1. On the production box, pairs prod:DR
  2. On the DR box, pairs DR:prod
  3. On the HMC only
  4. On both boxes at once
Show answer

B: failoverpprc runs on the DR box and turns its volumes into the sources.

Q5. A Global Copy pair shows Copy Pending all day. What does that mean?

  1. The pair is broken
  2. It is normal for Global Copy
  3. The paths are down
  4. The volumes are different sizes
Show answer

B: Global Copy pairs always show Copy Pending, so check First Pass Status and the out-of-sync tracks.

Quick recap

  • Metro Mirror is synchronous (identical copy); Global Copy is asynchronous; Global Mirror adds consistency groups.
  • Get the DR WWNN with lssi, find ports with lsavailpprcport, then mkpprcpath with all port pairs in one command.
  • mkpprc -type mmir -mode full: Copy Pending, then Full Duplex (Target Full Duplex on DR).
  • Suspended means DR is falling behind, so read the Reason column and check lspprcpath.
  • failoverpprc runs on the DR box with pairs DR:prod; failbackpprc needs paths in the new direction.
  • Use two paths on two adapters and two fabrics, and check the pair states every day.

Next lesson

Lesson 20: Code upgrades (Licensed Machine Code) → You plan and check a DS8000 code bundle upgrade without hurting the hosts.

Further reading: DS8000 Metro Mirror

Want to go deeper into DS8000 Metro Mirror? IBM’s planning rules for replication links are in the IBM Storage DS8A00 Architecture and Implementation Guide (IBM Redbooks), section 5.4. To refresh the theory, read Copy Services map: FlashCopy, Metro Mirror, Global Mirror.

You can also see the full plan for this course on the IBM DS8000 Implementation course page.

Scroll to Top

This website uses cookies

We use a few cookies to keep this site working. If you allow it, we also use Google Analytics to count visits so we can improve our lessons. You can accept all, deny the optional ones, or choose what to allow.