
Before we worked on directly attaching a shared storage to host (Direct host connection with Netapp EF560). But what if we have more than 4 hosts and we still need high availability? Yes, we are going to need an SAN switch and start to configure our Storage Area Network.
For each component to communicate each other, SAN switched need Zone configuration. In this blog we are going to configure a Brocade 300 series SAN switch, to connect Netapp EF560 storage to Fujitsu RX300 server. Our SAN switch has 8 active 4Gbps port.
First thing is first, we are going to need WWN numbers of our HBA cards on the server. By these WWN numbers, we are going to configure our host on the SAN switch. To obtain these WWN numbers the following files can be examined.
[root@tslnx01 fc_host]# cat host1/port_name
0x21000024ff308a3c
[root@tslnx01 fc_host]# cat host2/port_name
0x21000024ff308a3d
[root@tslnx01 fc_host]#
[root@tslnx01 fc_host]# multipath -ll
[root@tslnx01 fc_host]#
As can be seen from the above output, we now have the WWN numbers of the ports of the HBA card (There is one HBA card with two ports, each port has an WWN number assigned to it). And consider, there is no multipath output, since there is no configuration made yet.
Now, login to the brocade switch and execute "switchshow" command to see which ports are connected to which hosts.
Remember, on the SAN switch both storage unit itself and the servers are considered as hosts.
ALJ1906H0HF:admin> switchshow
switchName: ALJ1906H0HF
switchType: 71.2
switchState: Online
switchMode: Native
switchRole: Principal
switchDomain: 1
switchId: fffc01
switchWwn: 10:00:00:05:33:bd:40:86
zoning: ON (config)
switchBeacon: OFF
Index Port Address Media Speed State Proto
==================================================
0 0 010000 id N4 No_Light FC
1 1 010100 id N4 No_Light FC
2 2 010200 id N4 Online FC F-Port 21:00:00:24:ff:30:8a:3d
3 3 010300 id N4 Online FC F-Port 21:00:00:24:ff:30:8a:3c
4 4 010400 id N4 Online FC F-Port 20:12:00:80:e5:29:b5:0c
5 5 010500 id N4 Online FC F-Port 20:13:00:80:e5:29:b5:0c
6 6 010600 id N4 No_Light FC
7 7 010700 id N4 No_Light FC
8 8 010800 -- N8 No_Module FC (No POD License) Disabled
9 9 010900 -- N8 No_Module FC (No POD License) Disabled
10 10 010a00 -- N8 No_Module FC (No POD License) Disabled
11 11 010b00 -- N8 No_Module FC (No POD License) Disabled
12 12 010c00 -- N8 No_Module FC (No POD License) Disabled
13 13 010d00 -- N8 No_Module FC (No POD License) Disabled
14 14 010e00 -- N8 No_Module FC (No POD License) Disabled
15 15 010f00 -- N8 No_Module FC (No POD License) Disabled
16 16 011000 -- N8 No_Module FC (No POD License) Disabled
17 17 011100 -- N8 No_Module FC (No POD License) Disabled
18 18 011200 -- N8 No_Module FC (No POD License) Disabled
19 19 011300 -- N8 No_Module FC (No POD License) Disabled
20 20 011400 -- N8 No_Module FC (No POD License) Disabled
21 21 011500 -- N8 No_Module FC (No POD License) Disabled
22 22 011600 -- N8 No_Module FC (No POD License) Disabled
23 23 011700 -- N8 No_Module FC (No POD License) Disabled
Checkout the 2nd and 3rd ports on the switch and you can see the WWN numbers of the connected ports are matches with the server HBA port WWN numbers. Also 4th and 5th ports connected WWN numbers are also matching the EF560 storage box controllers. It is not a must, but highly recommended to create an alias on these WWN numbers on the SAN switch to easily read the configuration later on. We are going to user "alicreate" command to create the aliases. "alicreate" command needs two parameters. The first one is the name of the alias, and the second is the WWN number. Each parameter is seperated by the a "," and the WWN numbers are seperated by ";".
An alias named "tslnx01" is already created on the SAN Switch with the correct WWN numbers, so we can use this alias directly. We are going to create an alias for the EF560 storage as follows.
ALJ1906H0HF:admin> alicreate "EF560","20:12:00:80:e5:29:b5:0c;20:13:00:80:e5:29:b5:0c"
ALJ1906H0HF:admin>
ALJ1906H0HF:admin>
After creating aliases, we going to use the alias names instead of the WWN numbers.
Each WWN names/numbers within the Zone can be accessed from each other. But for the WWN numbers of the other servers which are outside of the zone cannot reach the WWN's within the node, even if they are connected to the same switch. So in order to define LUNs for an host they reside within the same Zone. To create a zone "zonecreate" command is used.
"zonecreate" command works with two parameters. The first parameter is the name of the zone and the second is the names of the aliases (or the WWN numbers). While parameters are separated with ",", alias names are seperated by ";".
ALJ1906H0HF:admin> zonecreate "tslnx01_EF560","tslnx01;EF560"
ALJ1906H0HF:admin>
ALJ1906H0HF:admin>
After creating the zone, this new zone should be added to the configuration and this new configuration should be enabled with the "cfgadd" and "cfgenable" commands respectively.
Be careful if this new configuration is updating an existing configuration. If so, data access may be paused for some seconds. Be cautious on production systems.
ALJ1906H0HF:admin> cfgadd "config","tslnx01_EF560"
ALJ1906H0HF:admin> cfgenable "config"
You are about to enable a new zoning configuration.
This action will replace the old zoning configuration with the
current configuration selected. If the update includes changes
to one or more traffic isolation zones, the update may result in
localized disruption to traffic on ports associated with
the traffic isolation zone changes
Do you want to enable 'config' configuration (yes, y, no, n): [no] yes
zone config "config" is in effect
Updating flash ...
ALJ1906H0HF:admin>
At this time being the active configuration should be the updated one. "cfgshow" command will show us the running configuration.
ALJ1906H0HF:admin> cfgshow
Defined configuration:
cfg: cfg zone_0_0
cfg: config tslnx01_V7300; tslnx01_EF560
zone: tslnx01_EF560
tslnx01; EF560
zone: tslnx01_V7300
tslnx01; V7300
zone: zone_0_0
1,0; 1,0
alias: EF560 20:12:00:80:e5:29:b5:0c; 20:13:00:80:e5:29:b5:0c
alias: V7300 21:00:00:1b:97:28:02:a1; 21:00:00:0e:1e:28:02:a1;
21:00:00:1b:97:27:55:b1; 21:00:00:0e:1e:27:55:b1
alias: tslnx01 21:00:00:24:ff:30:8a:3d; 21:00:00:24:ff:30:8a:3c
Effective configuration:
cfg: config
zone: tslnx01_EF560
21:00:00:24:ff:30:8a:3d
21:00:00:24:ff:30:8a:3c
20:12:00:80:e5:29:b5:0c
20:13:00:80:e5:29:b5:0c
zone: tslnx01_V7300
21:00:00:24:ff:30:8a:3d
21:00:00:24:ff:30:8a:3c
21:00:00:1b:97:28:02:a1
21:00:00:0e:1e:28:02:a1
21:00:00:1b:97:27:55:b1
21:00:00:0e:1e:27:55:b1
ALJ1906H0HF:admin>
In order to access to exported LUNs through the storage, you may need to restart the multipathd service.
[root@tslnx01 fc_host]# service multipathd restart
ok
Stopping multipathd daemon: [ OK ]
Starting multipathd daemon: [ OK ]
[root@tslnx01 fc_host]#
[root@tslnx01 fc_host]# multipath -ll
mpathr (360080e50004316c8000000ea55a34223) dm-5 NETAPP,INF-01-00
size=10G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 rdac' wp=rw
|-+- policy='round-robin 0' prio=14 status=active
| |- 1:0:1:3 sdm 8:192 active ready running
| `- 2:0:0:3 sdu 65:64 active ready running
`-+- policy='round-robin 0' prio=9 status=enabled
|- 1:0:0:3 sde 8:64 active ready running
`- 2:0:1:3 sdac 65:192 active ready running
mpathq (360080e500029b50c0000012555a3420b) dm-1 NETAPP,INF-01-00
size=10G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 rdac' wp=rw
|-+- policy='round-robin 0' prio=14 status=active
| |- 1:0:0:2 sdd 8:48 active ready running
| `- 2:0:1:2 sdab 65:176 active ready running
`-+- policy='round-robin 0' prio=9 status=enabled
|- 1:0:1:2 sdl 8:176 active ready running
`- 2:0:0:2 sdt 65:48 active ready running
mpathp (360080e50004316c8000000e955a34204) dm-2 NETAPP,INF-01-00
size=10G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 rdac' wp=rw
|-+- policy='round-robin 0' prio=14 status=active
| |- 1:0:1:1 sdk 8:160 active ready running
| `- 2:0:0:1 sds 65:32 active ready running
`-+- policy='round-robin 0' prio=9 status=enabled
|- 1:0:0:1 sdc 8:32 active ready running
`- 2:0:1:1 sdaa 65:160 active ready running
mpatho (360080e500029b50c0000012155a341ed) dm-0 NETAPP,INF-01-00
size=10G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 rdac' wp=rw
|-+- policy='round-robin 0' prio=14 status=active
| |- 1:0:0:0 sdb 8:16 active ready running
| `- 2:0:1:0 sdz 65:144 active ready running
`-+- policy='round-robin 0' prio=9 status=enabled
|- 1:0:1:0 sdj 8:144 active ready running
`- 2:0:0:0 sdr 65:16 active ready running
mpathv (360080e50004316c8000001d655b8432e) dm-7 NETAPP,INF-01-00
size=30G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 rdac' wp=rw
|-+- policy='round-robin 0' prio=14 status=active
| |- 1:0:1:8 sdq 65:0 active ready running
| `- 2:0:0:8 sdy 65:128 active ready running
`-+- policy='round-robin 0' prio=9 status=enabled
|- 1:0:0:8 sdi 8:128 active ready running
`- 2:0:1:8 sdag 66:0 active ready running
mpathu (360080e500029b50c0000021155b84318) dm-3 NETAPP,INF-01-00
size=10G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 rdac' wp=rw
|-+- policy='round-robin 0' prio=14 status=active
| |- 1:0:0:6 sdh 8:112 active ready running
| `- 2:0:1:6 sdaf 65:240 active ready running
`-+- policy='round-robin 0' prio=9 status=enabled
|- 1:0:1:6 sdp 8:240 active ready running
`- 2:0:0:6 sdx 65:112 active ready running
mpatht (360080e500029b50c0000021055b842f0) dm-4 NETAPP,INF-01-00
size=10G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 rdac' wp=rw
|-+- policy='round-robin 0' prio=14 status=active
| |- 1:0:0:4 sdf 8:80 active ready running
| `- 2:0:1:4 sdad 65:208 active ready running
`-+- policy='round-robin 0' prio=9 status=enabled
|- 1:0:1:4 sdn 8:208 active ready running
`- 2:0:0:4 sdv 65:80 active ready running
mpaths (360080e50004316c8000001d555b8430e) dm-6 NETAPP,INF-01-00
size=10G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 rdac' wp=rw
|-+- policy='round-robin 0' prio=14 status=active
| |- 1:0:1:5 sdo 8:224 active ready running
| `- 2:0:0:5 sdw 65:96 active ready running
`-+- policy='round-robin 0' prio=9 status=enabled
|- 1:0:0:5 sdg 8:96 active ready running
`- 2:0:1:5 sdae 65:224 active ready running
[root@tslnx01 fc_host]#
Comments