Interactive · Metro NDM · VMAX → PowerMax · shared Brocade fabrics
The thirteen stages of a non-disruptive migration, drawn on one canvas. Thick grey lines are physical cables; thin coloured lines over them are zones; a cable with no colour on it is plugged in and doing nothing — the state most of Phase A lives in, and the distinction that trips people up. Step through it, or press play.
—
—
—
—
Source device R1
—
—
Target device R2
—
—
SRDF pair
—
—
Host paths
—
—
A port can be cabled and carry nothing. It can be cabled and zoned and still show the host nothing. Only when a masking view presents a device through that port does a path appear. Phase A is entirely cabling and zoning; not one host sees anything new until B2 creates the masking view on the target.
| Phase | Step | Tool and command | Gate before moving on |
|---|---|---|---|
| A1 | Identify the RDF director ports on both arrays | SYMsymcfg -sid <sid> list -dir all GUISystem > Directors | RF ports identified on both arrays, spread across engines |
| A2 | Cable the RDF ports into Fabric A and Fabric B | HWphysical cabling FOSswitchshow | Four RF ports online, two per fabric, one from each array |
| A3 | Back up both fabric configs | FOScfgshow · configupload | Saved and timestamped, before any zoning change |
| A4 | Create the array-to-array zone in both fabrics | FOSzonecreate · cfgadd · cfgsave · cfgenable | RDF zone effective in both fabrics; host zones untouched |
| A5 | Verify each array can see the other | SYMsymcfg discover then symsan list -sanrdf | Remote RF port WWNs visible from the local array |
| A6 | Create the migration environment | SYMsymdm environment -validate then -setup | RDF group present, labelled M_xxxxyyyy |
| B1 | Zone this SG's hosts to the target array | FOSzonecreate · cfgadd · cfgsave · cfgenable | New host zones effective, existing zones untouched |
| B2 | Create the migration session for the SG | SYMsymdm create -sg -validate then without -validate | State reaches Migrating |
| B3 | Rescan and verify the host sees the new paths | VMWrescan HBAs SYMsymdm list -detail | Path count doubled; new paths present but not ready |
| B4 | Let the pair synchronize | SYMsymrdf query on the NDM group | R2 invalid tracks at zero, pair active/active |
| B5 | Cut over application access to the target | SYMsymdm cutover -sg GUICutover | Datastores mounted, VMs responsive, signed off |
| B6 | Commit | SYMsymdm commit -sg | Path count back to baseline |
| C1 | Clean up after the last group | FOSremove source and RDF zones SYMsymdm environment -remove | No orphaned zones, masking views or RDF groups left behind |
Three zone families, and none of them may be merged. Host to source, host to target, array to array. The RDF zone contains no host initiators at all, so it will legitimately look different from every other zone in the config — that is correct and should not be "fixed". And never name targets on both arrays in one zone: it works, and then removing it after commit takes production targets out with it.
A shared VMFS datastore means every node in the cluster must see the same devices. The masking is built as a cascaded initiator group — one child per host, all of them inside a parent — so that a single masking view covers the whole cluster. NDM clones that structure onto the target, which means one cutover command changes every node at the same instant.
Cutover is one operation on one storage group. It sets the source devices host inactive for all four nodes simultaneously. A node that never discovered the target paths has nothing left to fail over to. Toggle a node below to see the difference.
| Behaviour | Detail |
|---|---|
| Bandwidth is shared | Because the RDF ports use the same fabrics as host traffic, the copy competes for ISL bandwidth. Check ISL utilisation before starting a large group. |
| Copy mode during sync | The pair is put into adaptive copy disk mode while data moves from R1 to R2. It is not synchronous replication during this phase. |
| When the target becomes usable | The session goes active/active only after all SCSI information and application data have synchronized. Until then the R2 carries DEV-INACT. |
| Bias | Bias sits on the source. If the link drops, the source stays accessible and the target does not — the safe default for a migration. |
| Cancel | Suspends the session. The R2 returns to DEV-INACT and all I/O is redirected back to R1. |
| One group, many migrations | The RDF group created at A6 is used by every storage group you migrate between this array pair. Built once, removed once. |
| readytgt option | Clears DEV-INACT on the R2 and goes active/active without waiting for synchronization to finish. It removes the "wait for zero invalid tracks" gate — know whether your runbook uses it. |
| sync-stop option | Makes the source DEV-INACT so all I/O runs through the target, moving the session to CutoverNoSync. Used to test application performance on the target before committing. |