In order to do this there has to be at least a basic understanding of the components involved. So let’s go through that real quick.
- You need to have a Windows operating system loaded on your physical server. In this example I’ll be using Windows 2008r2
- You need to have Host Bus Adapters (HBAs) and drivers in the server. These will either be QLogic or Emulex. You can go to the vendor site to find updated drivers. We’ll want at least two HBAs in the server for high availability/redundancy.
- Need a storage array with block level storage (so we can use fibre channel to connect). In my example I’ll be using an EMC CX4-120 array with the Unisphere GUI. The zoning on the switch will be pretty much the same no matter which array you’re using.
- This array has two Storage Processors. Storage Processor A and Storage Processor B (Known later as SPA and SPB). The SPs will have at least two ports, some may have more. For this example I will use two ports from each SP: SPA 0, SPA 1, SPB 0, and SPB 1.
- Two Fibre Channel switches. In my example I’ll be using Brocade switches. Each switch port will have the appropriate SFPs for our cables. We don’t need two switches if this is a test environment, but in a production environment you want two so we can create two fabrics for high availability/redundancy.
- Fibre Channel cables. In my example I’ll be using LC-LC adapters.
In this article I’ll be going through the steps to connect your Windows server to a switch which is also connected to your storage array. I’m assuming your array, servers, and switches have already been racked and added to the management network as well as configured with IPs so we can manage them. The very first thing you’ll need to do is cable the storage array to the switches. There’s nothing difficult about this. You really just need to plug them in. You also may want to take note of which switch ports are plugged into SPA 0, SPA 1 (and other ports if you have them) as well as SPB 0, SPB1 (and so on). If you really want to be organized you can go ahead and label them. It is smart and generally a best practice to make sure you have each SP connected to each switch. For instance, we might want SPA 0 and SPB 1 connected to our first switch and have SPA 1 and SPB 0 connected to our second switch. We’ll also want to plug in our server to our switches using the Fibre Channel cables. We’ll plug the first HBA (now known as HBA0) to the first switch and the second HBA (now known as HBA1) to the second switch. This design gives us two switching fabrics. If one SP, one switch, and or one HBA goes down we should still remain up.
Now that we have everything physically connected and we’re seeing all sorts of nice green lights we can use a browser to connect to the storage switches. Just a heads up: these switches generally use some out dated version of Java that will make it a huge pain to connect to. Once you get connected we click on the Zone Admin link on the upper left. This will bring up a popup with our Zoning information. The first thing we need to do is create Aliases for all of our ports. This is not a requirement, but sure makes life easier in the long run.
- Click on the Alias tab and then click New Alias and type in a name for your Alias. If this alias is for HBA0 in your server then I would call the Alias HostName_HBA0. If this were for port SPA 0 on our array, I would call it ArrayName_SPA0.
- Once you’ve created your first Alias, let’s assume it was for Server_HBA0 you need to add the correct WWN (World Wide Name). You can get this information from various tools. The easiest probably being from the vendor (Emulex or QLogic). You should be able to pull up a log with the WWN for HBA 0 and you will add this as the member for Alias Server_HBA0.
- Repeat this for all your ports. You can get the WWNs for the storage processor ports from the array itself (Unisphere or Navisphere in the case of EMC).
Now we need to click on the Zone tab to configure the proper zoning for our switch so the array can see the servers.
- Click on the Zone tab.
- Click on New Zone.
- Each zone will have an SP port in it and a server port in it. Since we’re only working on one switch right now, it will only use one of the HBA ports from the server and the two SP ports connected to that switch. These numbers change depending on the number of SP ports and server HBA ports.
- For our first zone let’s name it Server_HBA0_ArrayName_SPA0. This tells us which server port and which storage processor port is in this zone.
- Now we add members. Given the name we’ve assigned it lets us add the members (aliases) Server_HBA0 as well as ArrayName_SPA0.
- Repeat these steps for HBA0 and SPB 1.
Once we’ve added all the zones we need to add them to the current Zone Config to apply these changes to the switch.
- Click on the Zone Config tab
- Add all of the zones into you Zone config by highlighting them and clicking Add Member. These will most likely be the only non-grayed out zones, but be careful as it is possible you have other zones that are not members. Specifically you will be adding Server_HBA0_ArrayName_SPA0 and Server_HBA0_ArrayName_SPB1.
- Click the Enable Config button and wait for the changes to be committed.
We need to repeat all of these steps (Aliasing, Zoning, and Zone Config) on the other Switch. Keep in mind we’ll be using Server_HBA1 and ArrayName_SPA1 or ArrayName_SPB0 on the other switch.
At this point we can connect to Unisphere to see if there our new Host Initiators populated from our zoning. Connect to Unisphere by typing in the IP address of one of our SPs into a browser. Connect to the right array and then click on Hosts and check the Host Connectivity Status. We’ll see a new server in there. We will most likely need to register it, which we can do by right-clicking on the server in this screen. Once the server has been registered we can create Storage Groups which contain both LUNs and Hosts. Now that we have the Storage Groups we can connect to the host and see that there are new drives from the array for us to initialize.
Zoning really isn’t a difficult procedure once you’ve done it a couple of times and understand it conceptually. You just need to keep in mind that you want several paths to go from our array to our server with generally the same amount of connections going through each storage switch.