Skip to content
Graphviz (DOT) templates

SAN dual-fabric zoning — single initiator, single target

Fibre Channel storage area network design: two air-gapped fabrics with switch domain IDs and ISLs, host HBA and array front-end port WWPNs, and the zoneset with its single-initiator single-target zone names — the zoning drawing a storage engineer must hand to change control before an array or host is cabled.

Template previewGraphviz (DOT)
Rendering…

Make it your own.

digraph SanZoning {
  rankdir=LR;
  graph [bgcolor="transparent", nodesep=0.35, ranksep=1.0, fontname="Inter", labelloc="t",
         label="SAN fabric and zoning — two air-gapped fabrics, single initiator / single target\n4 paths per LUN per host (2 HBAs x 2 controllers) · no ISL between fabric A and fabric B"];
  node [shape=box, style="rounded,filled", fontname="Inter", fontsize=9, fillcolor="white"];
  edge [fontname="Inter", fontsize=8, color="#475569", arrowsize=0.6];

  subgraph cluster_hosts {
    label="Initiators"; style="rounded,filled"; fillcolor="#f8fafc"; fontname="Inter"; fontsize=10;
    HA1 [label="esx01_hba0\n10:00:00:90:fa:c1:20:01", fillcolor="#dbeafe"];
    HB1 [label="esx01_hba1\n10:00:00:90:fa:c1:20:02", fillcolor="#fce7f3"];
    HA2 [label="esx02_hba0\n10:00:00:90:fa:c1:21:01", fillcolor="#dbeafe"];
    HB2 [label="esx02_hba1\n10:00:00:90:fa:c1:21:02", fillcolor="#fce7f3"];
    HA3 [label="db01_hba0\n10:00:00:90:fa:c1:22:01", fillcolor="#dbeafe"];
    HB3 [label="db01_hba1\n10:00:00:90:fa:c1:22:02", fillcolor="#fce7f3"];
  }

  subgraph cluster_fabA {
    label="Fabric A — zoneset ZS_FAB_A_v14, active 2026-02-11";
    style="rounded,filled"; fillcolor="#eff6ff"; fontname="Inter"; fontsize=10;
    SWA1 [label="fab-a-sw1\ndomain 1, principal\n32 Gb/s", fillcolor="#bfdbfe"];
    SWA2 [label="fab-a-sw2\ndomain 2\n32 Gb/s", fillcolor="#bfdbfe"];
    SWA1 -> SWA2 [dir=none, style=bold, label="ISL 2x32 Gb trunk"];
  }

  subgraph cluster_fabB {
    label="Fabric B — zoneset ZS_FAB_B_v14, active 2026-02-11";
    style="rounded,filled"; fillcolor="#fdf2f8"; fontname="Inter"; fontsize=10;
    SWB1 [label="fab-b-sw1\ndomain 11, principal\n32 Gb/s", fillcolor="#fbcfe8"];
    SWB2 [label="fab-b-sw2\ndomain 12\n32 Gb/s", fillcolor="#fbcfe8"];
    SWB1 -> SWB2 [dir=none, style=bold, label="ISL 2x32 Gb trunk"];
  }

  subgraph cluster_array {
    label="Target — all-flash array, dual controller";
    style="rounded,filled"; fillcolor="#f0fdf4"; fontname="Inter"; fontsize=10;
    TA0 [label="CT0.FC0 (fabric A)\n52:4a:93:7d:0a:11:00:00", fillcolor="#bbf7d0"];
    TA1 [label="CT1.FC0 (fabric A)\n52:4a:93:7d:0a:11:00:10", fillcolor="#bbf7d0"];
    TB0 [label="CT0.FC1 (fabric B)\n52:4a:93:7d:0a:11:00:01", fillcolor="#bbf7d0"];
    TB1 [label="CT1.FC1 (fabric B)\n52:4a:93:7d:0a:11:00:11", fillcolor="#bbf7d0"];
  }

  ZONES [shape=note, fillcolor="#fef9c3", fontsize=9,
    label="Zoning standard — single initiator, single target, WWPN zoning only (no port zoning)\lFabric A, 6 zones:\l  Z_ESX01_HBA0__ARR_CT0FC0   Z_ESX01_HBA0__ARR_CT1FC0\l  Z_ESX02_HBA0__ARR_CT0FC0   Z_ESX02_HBA0__ARR_CT1FC0\l  Z_DB01_HBA0__ARR_CT0FC0    Z_DB01_HBA0__ARR_CT1FC0\lFabric B, 6 zones: same list with HBA1 and CT0FC1 / CT1FC1\lChange control: activate on fabric A, verify all hosts see 4 paths, then fabric B\lHost multipathing: round-robin, IOPS=1; 12 initiator-target pairs per shared LUN\l"];

  HA1 -> SWA1 [label="port 1/0"];
  HA2 -> SWA2 [label="port 2/0"];
  HA3 -> SWA1 [label="port 1/1"];
  HB1 -> SWB1 [label="port 1/0"];
  HB2 -> SWB2 [label="port 2/0"];
  HB3 -> SWB1 [label="port 1/1"];

  SWA1 -> TA0 [dir=none, label="port 1/14"];
  SWA2 -> TA1 [dir=none, label="port 2/14"];
  SWB1 -> TB0 [dir=none, label="port 1/14"];
  SWB2 -> TB1 [dir=none, label="port 2/14"];
}