How to simplify your SAN zoning

Lets imagine a new rack server or a new blade server has been added to your Fibre Channel SAN.   The first job for the SAN administrator is to zone it to the storage it requires access to.  The task normally runs something like this:

  1. Identify the WWPNs for the new server HBA.  We can do this using Qlogic SAN Surfer or Emulex HBAnywhere, or by looking at the WWPNs reported by the Fibre Channel switch or by using datapath query wwpn (with SDD and SDDDSM) or by using the xiv_fc_admin -P command with the XIV HAK.  There are lots of different ways, you get the idea.
  2. On fabric 1 create a new alias for the server HBA port cabled to that fabric.
  3. For each storage device that the server needs access to on fabric 1 (or possibly just switch 1), create a new zone and include the new server alias and the alias for every relevant storage port on that device.  Repeat if you have other storage devices (so two XIVs means two new zones).
  4. Put the new zone (or zones) into the active zoneset (or a clone of it) and activate it.
  5. Repeat on fabric 2 (after waiting a decent interval to ensure no mistakes were made in fabric 1…  well I hope you wait….  you do don’t you?).

The main trap here is that when creating a zone, you need to ensure you select all of the correct storage aliases for your selected storage device.  For instance we could have a simple layout like this:

Fabric 1 contains  our new server (in this example an IBM x3850) and three XIV ports:

alias: x3850_ESXi_Server8:
alias: XIV_Mods4port1:
alias: XIV_Mods6port1:
alias: XIV_Mods8port1:

This means when creating the zone I need to identify and select four separate aliases.   What I could do instead is create an alias with all my XIV target ports in it.   Now I only have two aliases to select in that fabric:

alias: x3850_ESXi_Server8:
alias: XIV_Mods468_port1:
50:01:73:80:0e:b0:01:40;  50:01:73:80:0e:b0:01:60;  50:01:73:80:0e:b0:01:80

If this was a Storwize V7000 implementation I could do the same thing.   A typical install often look like this, where fabric 1 contains  our new server and two Storwize V7000 ports:

alias: x3850_ESXi_Server8:
alias: StorwizeV7000_Node1Port1:
alias: StorwizeV7000_Node2Port1:

This means when creating the zone I need to identify and select three separate aliases.   What I could do instead is create an alias with both my Storwize V7000 WWPNs in it.   Now I only have two aliases to select in that fabric:

alias: x3850_ESXi_Server8:
alias: StorwizeV7000_Node1_2_Port1
50:05:07:68:02:10:04:f4;  50:05:07:68:02:10:04:f5

This method of amalgamating multiple storage port aliases works fine for devices like DS8000, SVC, Storwize V7000 and XIV.   I use this method all the time to simplify zoning and I find it reduces both mistakes and the time required to complete zoning tasks.

The only exceptions are:

  1. Don’t do it for DS3000, DS4000, DS5000 or DCS3700 as the controllers on these devices do not like to see each other through the switch.
  2. Don’t combine ports from different storage devices, so if you have two XIVs in a fabric create one alias for the target ports of each XIV (although you could combine ports from different SVC I/O groups within the same SVC cluster into one alias).   You should still use individual aliases for ports being used for migration or replication purposes.
  3. Don’t use the WWNN to create an alias.    Always create multi-WWPN aliases so you have granular control of which ports go into the alias.  If you use the WWNN from an XIV you will also implicitly include any ports that are being used for replication or migration and thus zone them to the host, which makes no sense.

I would love to hear any techniques you have to make your (and my) life easier.


About Anthony Vandewerdt

I am an IT Professional who lives and works in Melbourne Australia. This blog is totally my own work. It does not represent the views of any corporation. Constructive and useful comments are very very welcome.
This entry was posted in Brocade, DS8800, IBM Storage, SAN, Storwize V7000, SVC and tagged , , , , , , , . Bookmark the permalink.

15 Responses to How to simplify your SAN zoning

  1. Pingback: How to simplify your SAN zoning « Storage CH Blog

  2. Nick says:

    Thanks for the article! Definitely good tips. I also separated each module by WWPN, and then created on each fabric one alias to include all the paths.

    So Alias XIV02_Port_1 could have up to 6 WWPN’s on Fabric 1, and the same goes with Fabric 2 Alias XIV02_Port_3’s

    Each of those aliases would include the needed ports

    XIV02_Module4_Port1, thru Module X_Port1

    This would help if you ever decide to add ports, or remove ports. Not having to manually update each host zone is an added plus!


  3. Cris says:

    I tend to include the first four digits of the array serial number when dealing with environments with multiple arrays for example:


    (I generally don’t do this in single array environments)

    In some environments (depending on the customer and the HBAs, older emulex cards don’t have the WWNs printed on them), we might including a location identifier:

    Fabric 1:

    Fabric 2:

    (L and R indicate the PCI slot location)

    Finally, since we only do single initiator single target zoning, all zones are named using initiatoralias_targetalias


    This makes it really easy to remove associations (zones) and identify if any are missing.

    It can get become a long winded process when you have to add hundreds of them, but I’ve automated the zoning process using some VBA functions. I just drop in the aliases and WWPNs for the host and storage into an excel spreadsheet and the code spits back a brocade or Cisco CLI scripts (some manual modifications are required for tape libraries).

  4. Dennis Skinner says:

    We created template zones for SVC. They never get activated, but they have all the node ports needed to zone a host to SVC. When we add a new host, we duplicate the template zone, rename it, and add in the host WWPN, add to zoneset, activate.

    We never have to deal with remembering to add all the SVC ports beyond setting up the template zones the first time.

  5. Dennis Skinner says:

    “Don’t do it for DS3000, DS4000, DS5000 or DCS3700 as the controllers on these devices do not like to see each other through the switch.”

    Can you elaborate on this? Do you mean mixing the A and B controllers in the same zone or multiple ports from the same controller in the same zone? Or both? Can you point me to IBM docs around this?


    • Good question.
      I mean the A and B controllers in the same zone.
      You could have multiple ports from the A controller in one zone if you wanted.
      As for documentation, please refer to the following Redbook:
      Section 2.1.1 contains the recommendation including this:

      Best practice: Create separate zones for the connection between each HBA and each
      controller (one zone for HBA1 to controller A and one zone for HBA2 to controller B). This
      isolates each zone to its simplest form.

  6. Pingback: SVC and Storwize V7000 Release 6.3: Keys now optional! - The Business of IT Storage Blog - IBM Storage Community

  7. karlochacon says:

    One last question If I have a server with 4 HBAs so 4 WWNPs and XIV and a DS5100.

    I know I can use multiple target in XIV or V7000, but can I include multiple initiators in th same zone?

    I mean HBA 0 and HBA 1 zoned to XIV? Switch A.
    I mean HBA 2 and HBA 3 zoned to XIV? Switch B.

    or I have to create 4 zones? each for every initiator

    thanks a lot

  8. Paul Sorrentino says:

    How would you handle N-Series/NetApp ?

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s