TS4300 drive zoning

EricvanLoon

ADSM.ORG Member
Joined
Oct 23, 2019
Messages
18
Reaction score
10
Points
0
Hi everybody,

I'm using a TS4300 with 10 drives. On the TS4300, I defined a control path for all drives.
The SP server is equipped with two dual-port HBA's. One port per HBA is used for disk, the other two are used for tape. Each HBA is connected to a different fabric (Fabric0 and Fabric1). The drives themselves are connected with one port only. Currently, I use point-to-point zoning, so each drive can be accessed through one HBA, all even drives on HBA1, all odd drives on HBA2.
I have been reading through the TS4300 manual and I think my zoning is not optimal. Since I have only one cable per drive connected, I know I can't use data path failover. But I should be able to use control path failover and dynamic load balancing. I did add options lin_tape alternate_pathing=1 to the /etc/modprobe.d/lin_tape.conf, but a cat /proc/scsi/IBM* still shows NA in the FO Path column, which indicates that a failover path is not available.
I thinks this might be related to my zoning. How do you guys zone your tape drives?
Thanks for any help in advance!

Kind regards,
Eric van Loon
 
Hi

I have two drives per logical library defined as control path, each drive has one link to fabric0 and one to fabric1. All hosts have the same config. Zoning is one host to group of drives.

Though I have ts4500, it should be the same config.
 
Thanks for your update! I changed my zoning and put all drives in the fabric in one single zone. The drives work, but the FO Path column still show NA. I don't understand why. I think I will open a case at IBM for assistance.
 
Thanks for your update! I changed my zoning and put all drives in the fabric in one single zone. The drives work, but the FO Path column still show NA. I don't understand why. I think I will open a case at IBM for assistance.
If I understood what you what to achieve, I believe you need to have 2 fiber connections per drive to create the failover requirement that you need.

Route channel HBA channel A to one fabric switch, HBA channel B to the other fabric switch. Both should be active

Then wire all tape drives to each of the fabric switch.

Configure the fabric (switch) ports alternately as failover.

Example:

Tape 1: side A goes to fabric A port 2 - active; side B goes to fabric B port 2 - failover
Tape 2: side A goes to fabric A port 3 - failover; side B goes to fabric B port 3 - active
ETC

Remember that the library control (robotics) rides on 1 or 2 tape drives. Make sure that these always lives in an active port.

Don't forget to properly configure the fabric switch in failover mode for used and defined ports.
 
Last edited:
Hi @moon-buddy,

I rechecked the manuals and the FO Path column seems to be related to be related to both drive data path failover and drive control path failover. One needs to have the drives connected with both ports, to have drive data path and control path failover to work. I have all drives connected with one port only, so drive and path failover won't be available in my case.
But I can't find anything about how to configure library path failover. Since I have enabled the control path on all my drives through the TS4300 interface, I have multiple /dev/IBMChanger* devices. Each IBMChanger device is related to one drive. In TSM, I can only configure one library device. Now, if that specific drive is broken, I loose access to the whole library. How can I configure this library path failover, so it will automatically use the another IBMChanger device?
Thanks again for your help!
 
Hi,

In the ts4500, I can set multiple drives per logical library to control paths.

The udev config looks like this for logical libraries:
[root@host ~]# cat /etc/udev/rules.d/99-lin_tape.rules
KERNEL=="IBM*", OWNER="tsmsrv1", GROUP="tsmsrv1", MODE="0660"

KERNEL=="IBMchanger*", ATTR{serial_num}=="0000012345670401", SYMLINK="lin_tape/lib1"
KERNEL=="IBMchanger*", ATTR{serial_num}=="0000012345670402", SYMLINK="lin_tape/lib2"
KERNEL=="IBMchanger*", ATTR{serial_num}=="0000012345670403", SYMLINK="lin_tape/lib3"
KERNEL=="IBMchanger*", ATTR{serial_num}=="0000012345670404", SYMLINK="lin_tape/lib4"

The serial number relates to logical library SN.

The symlink points to the actual IBMchanger, and I guess the lin_tape will move symlink if the device no longer exist. It does not care if the path points to primary or secondary drive in my case.


Rgds,
 
Hi @Trident,

In my case, all IBMchanger devices are part of the same libary and thus share the same serial:

$ cat /proc/scsi/IBMchanger
lin_tape version: 3.0.60
lin_tape major number: 235
Attached Changer Devices:
Number model SN HBA SCSI FO Path
0 3573-TL 55L3A7801LFPLL01 qla2xxx 4:0:0:1 NA
1 3573-TL 55L3A7801LFPLL01 qla2xxx 2:0:0:1 NA
2 3573-TL 55L3A7801LFPLL01 qla2xxx 4:0:3:1 NA
3 3573-TL 55L3A7801LFPLL01 qla2xxx 2:0:3:1 NA
4 3573-TL 55L3A7801LFPLL01 qla2xxx 4:0:4:1 NA
5 3573-TL 55L3A7801LFPLL01 qla2xxx 2:0:4:1 NA
6 3573-TL 55L3A7801LFPLL01 qla2xxx 2:0:2:1 NA
7 3573-TL 55L3A7801LFPLL01 qla2xxx 4:0:1:1 NA
8 3573-TL 55L3A7801LFPLL01 qla2xxx 4:0:2:1 NA
9 3573-TL 55L3A7801LFPLL01 qla2xxx 2:0:1:1 NA

So I don't know how to specify that in a lin_tape.rules.file...
 
Hi,

Can you post the udev rule for the tape library you are using?



You must replace some values below, like owner, group and the name of your symlink device.

[root@host ~]# cat /etc/udev/rules.d/99-lin_tape.rules
KERNEL=="IBM*", OWNER="tsmsrv1", GROUP="tsmsrv1", MODE="0660"
KERNEL=="IBMchanger*", ATTR{serial_num}=="55L3A7801LFPLL01", SYMLINK="lin_tape/mylib"
<lots more here>



The path to you library should use device=/dev/lin_tape/mylib

And you need the lin_taped part as well. My libra manager host has both:
lin_taped-3.0.66-1.x86_64
lin_tape-3.0.66-1.x86_64

Hope that can guide you in the right direction.

Rgds,
 
Hi @Trident,

Currently, I have the following lines in 98-lin_tape.rules:
KERNEL=="IBMchanger*[0-9]", ATTR{serial_num}=="55L3A7801LFPLL01",SYMLINK="lin_tape/by-id/changer0" MODE="0666"
KERNEL=="IBMtape*[0-9]", ATTR{serial_num}=="115EB8A01F", SYMLINK="lin_tape/by-id/drive1" MODE="0666"
KERNEL=="IBMtape*[0-9]", ATTR{serial_num}=="115EB8A029", SYMLINK="lin_tape/by-id/drive2" MODE="0666"
KERNEL=="IBMtape*[0-9]", ATTR{serial_num}=="115EB8A033", SYMLINK="lin_tape/by-id/drive3" MODE="0666"
KERNEL=="IBMtape*[0-9]", ATTR{serial_num}=="115EB8A05B", SYMLINK="lin_tape/by-id/drive4" MODE="0666"
KERNEL=="IBMtape*[0-9]", ATTR{serial_num}=="115EB8A065", SYMLINK="lin_tape/by-id/drive5" MODE="0666"
KERNEL=="IBMtape*[0-9]", ATTR{serial_num}=="115EB8A06F", SYMLINK="lin_tape/by-id/drive6" MODE="0666"
KERNEL=="IBMtape*[0-9]", ATTR{serial_num}=="115EB8A079", SYMLINK="lin_tape/by-id/drive7" MODE="0666"
KERNEL=="IBMtape*[0-9]", ATTR{serial_num}=="115EB8A0A1", SYMLINK="lin_tape/by-id/drive8" MODE="0666"
KERNEL=="IBMtape*[0-9]", ATTR{serial_num}=="115EB8A097", SYMLINK="lin_tape/by-id/drive9" MODE="0666"
KERNEL=="IBMtape*[0-9]", ATTR{serial_num}=="115EB8A0AB", SYMLINK="lin_tape/by-id/drive10" MODE="0666"

The udev rules created a changer0, which (currently) uses /dev/IBMchanger9:
# ls -al /dev/lin_tape/by-id/
total 0
drwxr-xr-x 2 root root 260 Mar 26 14:34 .
drwxr-xr-x 3 root root 60 Mar 26 14:34 ..
lrwxrwxrwx 1 root root 17 Mar 26 14:34 changer0 -> ../../IBMchanger9
lrwxrwxrwx 1 root root 14 Mar 26 14:34 drive1 -> ../../IBMtape6
lrwxrwxrwx 1 root root 14 Mar 26 14:34 drive10 -> ../../IBMtape5
lrwxrwxrwx 1 root root 14 Mar 26 14:34 drive2 -> ../../IBMtape8
lrwxrwxrwx 1 root root 14 Mar 26 14:34 drive3 -> ../../IBMtape0
lrwxrwxrwx 1 root root 14 Mar 26 14:34 drive4 -> ../../IBMtape1
lrwxrwxrwx 1 root root 14 Mar 26 14:34 drive5 -> ../../IBMtape9
lrwxrwxrwx 1 root root 14 Mar 26 14:34 drive6 -> ../../IBMtape7
lrwxrwxrwx 1 root root 14 Mar 26 14:34 drive7 -> ../../IBMtape3
lrwxrwxrwx 1 root root 14 Mar 26 14:34 drive8 -> ../../IBMtape4
lrwxrwxrwx 1 root root 14 Mar 26 14:34 drive9 -> ../../IBMtape2
There are 10 IBMchanger devices in /dev:
# ls -al /dev/IBMchanger*
crw-rw-rw- 1 root root 235, 2048 Mar 26 14:34 /dev/IBMchanger0
crw-rw-rw- 1 root root 235, 2049 Mar 26 14:34 /dev/IBMchanger1
crw-rw-rw- 1 root root 235, 2050 Mar 26 14:34 /dev/IBMchanger2
crw-rw-rw- 1 root root 235, 2051 Mar 26 14:34 /dev/IBMchanger3
crw-rw-rw- 1 root root 235, 2052 Mar 26 14:34 /dev/IBMchanger4
crw-rw-rw- 1 root root 235, 2053 Mar 26 14:34 /dev/IBMchanger5
crw-rw-rw- 1 root root 235, 2054 Mar 26 14:34 /dev/IBMchanger6
crw-rw-rw- 1 root root 235, 2055 Mar 26 14:34 /dev/IBMchanger7
crw-rw-rw- 1 root root 235, 2056 Mar 26 14:34 /dev/IBMchanger8
crw-rw-rw- 1 root root 235, 2057 Mar 26 14:34 /dev/IBMchanger9

So, do you think the currently used rules will make changer0 automatically use a different changer when /dev/IBMchanger9 dies?
Thanks again for your help!
 
Hi,

I think you have the right setup.

Have you tested it? You can (when the drive related to changer0) is empty, just disable it from the sanswitch and see if the library is still able to perform mounts/dismounts.

Did you install the lin_taped as well? Something must modify the symlinks to use a new changer when the running one gets into trouble

Rgds,
 
Hi @Trident,

Yes, I have both lin_tape and lin_taped installed.
A portdisable is indeed a good trick to test this. I will plan that, thanks for the tip and thanks for your help so far!
 
Back
Top