 |
FC HBA Driver for Linux Kernel 2.4.x
|
This software license applies only to QLogic customers.
QLogic Corporation.
All rights reserved.
|
1. Package Contents
The following table describes the contents provided in the FC HBA
Driver for Linux package.
Filename |
Description |
drvrinstall |
Linux installation script. |
libinstall |
Script file to install/setup HBA API library. |
libremove |
Linux script to remove libqlsdm.so from /usr/lib or/and # # /usr/lib64 . |
qla2x00src-vx.yy.zz.tgz |
Compressed package that contains the
driver and all support documents.
NOTE: x.yy.zz represents the driver package version number. |
qlapi-vx.yybuildbb-rel.tgz |
Compressed package that contains the
HBA API software and all support documents.
NOTE: x.yy represents the version and bb represents the build number. |
readme.qla2x00 |
Text version of this package readme file. |
2. OS Support
The FC HBA Driver for Linux is compatible with the following OS
platforms.
Operating Systems |
OS Name |
OS Type |
Hardware Platform |
Red Hat RHEL AS 3.0 |
32-bit/64-bit |
Intel x86, Intel EM64T,
AMD64, Intel IA64, and PPC64 platforms |
Novell SLES 8 |
32-bit/64-bit |
Intel x86, Intel AMD64,Intel
IA64, and PPC64 platforms |
NOTE: For specific OS service packs (SP) and updates, refer to the descriptions where this software version is posted on the QLogic website (http://support.qlogic.com/support/drivers_software.asp).
3. Supported Features
The FC HBA Driver for Linux supports the following:
- FCAL - direct attach loop
- Point-to-point
- Fabric support
- Initiator mode only
- Fault recovery on down loops
- Persistent binding
- Extended LUN support up to 255 LUNs
- FC tape support
- Non-Failover and Failover capability
4. Using the Driver
This section provides procedures for saving the driver to a diskette,
installing the driver, and using the SNIA API library package.
4.1 Saving the Driver to Diskette
To save the driver distribution to a diskette:
- Download the driver distribution file:
qla2x00-vx.yy.zz-dist.tgz or the driver source file
qla2x00src-vx.yy.zz.tgz from QLogic's website
- If prompted "
What would you like to do with this file? " choose
Save this file to disk.
- Insert a blank diskette and download to the diskette directly.
4.2 Installing the Driver
The source tgz package provides the content needed to build qla2200.o or qla2300.o for either UP or SMP systems:
- Build a single processor (UP) driver version (see section 4.2.1).
- Build a Symetric Multiprocess (SMP) driver version (see section 4.2.2).
After building the driver version, do one of the following:
- Manually load the driver using
insmod or modprobe (see
section 4.2.3).
- Create a ramdisk image to automatically load the driver (see
section 4.2.4).
4.2.1 Building a Single Processor (UP) Driver Version
For Red Hat RHEL Distributions, enter the commands shown in the
following steps:
- Using the diskette created in section 4.1, copy the distribution
file (
qla2x00-vx.yy.zz-dist.tgz ) or the driver source file
(qla2x00src-vx.yy.zz.tgz ) to /qla2x00 . Enter the following commands
from the "/ " (root) directory:
# mkdir qla2x00
# cd qla2x00
# mount /mnt/floppy
# cp /mnt/floppy/*.tgz . (the period at the end is required)
# tar -xvzf *.tgz
(Execute the following additional steps if you have copied the
distribution file
qla2x00-vx.yy.zz-dist.tgz )
# cd qlogic
# ./drvrinstall (this extracts the driver source files to the
current directory)
- Build the Driver
qla2200.o and qla2300.o from the source code:
# make all
For Novell SLES Distributions, enter the commands shown in the
following steps:
- Install the kernel-source from the SLES distribution CD-ROM:
# yast -i kernel-source
or
# yast2 -i kernel-source
- Create a soft link (
/usr/src/linux ) to the kernel source
(/usr/src/<linux-version> ):
# ln -sf /usr/src/<linux-version> /usr/src/linux
- To ensure kernel version synchronization between the driver and
running kernel (for kernel version below 2.4.21):
# cd /usr/src/linux
# make mrproper (completely clean the kernel tree)
# cp /boot/vmlinuz.config .config (copy the new config)
# make oldconfig (update configuration using .config)
# make dep (rebuild the dependencies)
# make modules (build the modules)
NOTE: The steps above do not apply to SLES kernel 2.4.21 and above
since it is distributed with pre-build kernel-headers.
- Using the diskette you created in section 4.1, to the root (/)
directory and copy the distribution file
(
qla2x00-vx.yy.zz-dist.tgz ) or the driver source file
(qla2x00src-vx.yy.zz.tgz ) to /qla2x00 :
# mkdir qla2x00
# cd qla2x00
# mount /mnt/floppy
# cp /mnt/floppy/*.tgz . (the period at the end is required)
# tar -xvzf *.tgz
(Run the following additional commands if you copied the
qla2x00-vx.yy.zz-dist.tgz distribution file)
# cd qlogic
# ./drvrinstall (this extracts the driver source files to the
current directory)
- Build the Driver
qla2200.o and qla2300.o from the source code:
For Kernel Version below 2.4.21:
# make all OSVER=linux
For Kernel Version 2.4.21 and above:
# make all OSVER=linux-include/<configuration-name>
For example, for kernel version 2.4.21-107-itanium2 , itanium2 is
the configuration-name and /usr/src/linux-include is a soft link
to /usr/src/linux-2.4.21-107-include .
NOTE: To load the driver manually, see section 4.2.3. To create a
ramdisk image to load the driver during system boot time, see section 4.2.4.
4.2.2 Building a Symmetric Multiprocessor (SMP) Driver Version
For Red Hat Distribution, enter the commands shown in the following
steps:
- Using the diskette you created in section 4.1, go to the root
(
/ ) directory and copy the distribution file
(qla2x00-vx.yy.zz-dist.tgz ) or the driver source file
(qla2x00src-vx.yy.zz.tgz ) to /qla2x00 :
# mkdir qla2x00
# cd qla2x00
# mount /mnt/floppy
# cp /mnt/floppy/*.tgz .
# tar -xvzf *.tgz
(Run the following additional commands if you copied the qla2x00-vx.yy.zz-dist.tgz distribution file.)
# cd qlogic
# ./drvrinstall (this extracts the driver source files to the
current directory)
- Build the driver
qla2200.o or qla2300.o from the source code:
# make all SMP=1
For Novell SLES Distributions, enter the commands shown in the
following steps:
- Install the kernel-source from the SLES distribution CD-ROM:
# yast -i kernel-source or
# yast2 -i kernel-source
- Create a soft link (
/usr/src/linux ) to the kernel source
(/usr/src/<linux-version> ):
# ln -sf /usr/src/<linux-version> /usr/src/linux
- To ensure kernel version synchronization between the driver
and running the kernel (for kernel version below 2.4.21):
# cd /usr/src/linux
# make mrproper (completely clean the kernel tree)
# cp /boot/vmlinuz.config .config (copy the new .config )
# make oldconfig (update configuration using .config )
# make dep (rebuild the dependencies)
# make modules (build the modules)
NOTE: The steps above do not apply to SLES kernel 2.4.21 and above
since it is distributed with pre‑build kernel‑headers.
- Using the diskette you created in section 4.1, go to the root (
/ )
directory and copy the distribution file
(qla2x00-vx.yy.zz-dist.tgz ) or the driver source file
(qla2x00src-vx.yy.zz.tgz ) to /qla2x00 :
# mkdir qla2x00
# cd qla2x00
# mount /mnt/floppy
# cp /mnt/floppy/*.tgz .
# tar -xvzf *.tgz
(Run the following additional commands if you copied the qla2x00-vx.yy.zz-dist.tgz distribution file.)
# cd qlogic
# ./drvrinstall (this extracts the driver source files to the
current directory)
- Build the driver
qla2200.o or qla2300.o from the source code:
For Kernel Version below 2.4.21:
# make all SMP=1 OSVER=linux
For Kernel Version 2.4.21 and above:
# make all SMP=1 OSVER=linux-include/<configuration-name>
For example, for kernel version 2.4.21-107-itanium2 , itanium2 is
the configuration-name and /usr/src/linux-include is a soft link
to /usr/src/linux-2.4.21-107-include .
NOTE: To load the driver manually, see section 4.2.3. To create a
ramdisk image to load the driver during system boot time, see section 4.2.4.
4.2.3 Load the Driver Manually using insmod or modprobe
The driver module qla2300.o supports both 2Gb and 4Gb FC HBAs. For
example, if a QLA234x HBA and a QLA246x HBA are installed in the same
server, run the following command to initialize both HBAs:
# modprobe -v qla2300
Before loading the driver manually, build the driver binary from the
driver source TGZ as described in sections 4.2.1 and 4.2.2.
To load the driver directly from the local build directory:
# insmod qla2200.o
or
# insmod qla2300.o
To load the driver using modprobe:
- Build the driver
qla2200.o or qla2300.o from the source code:
For Red Hat Distribution:
# make all install (build and copy driver to the right
location)
For SLES Distribution:
# make all OSVER=linux install (build and copy driver to the
right location)
- Load the driver:
# modprobe -v qla2200
or
# modprobe -v qla2300
4.2.4 Create a ramdisk Image to Load the Driver
To create a ramdisk image:
- Build the driver binary files (see 4.2.1 and 4.2.2).
- Install the driver:
For Red Hat Distribution:
# make all install
For SLES Distribution:
# make all OSVER=linux install
- Add the following line to
/etc/modules.conf :
For Red Hat Distribution:
alias scsi_hostadapter0 qla2200_conf
alias scsi_hostadapter1 qla2200
or
alias scsi_hostadapter0 qla2300_conf
alias scsi_hostadapter1 qla2300
NOTE: Add one entry for each HBA in the system. For example, if
both QLA2200 and QLA2300 HBAs are installed add the following:
alias scsi_hostadapter0 qla2200_conf
alias scsi_hostadapter1 qla2200
alias scsi_hostadapter2 qla2300_conf
alias scsi_hostadapter3 qla2300
For SLES Distribution, modify the /etc/sysconfig/kernel file to
specify which modules are added during ramdisk creation.
NOTE: Make sure the configuration module is listed before the actual driver
module. For example:
INITRD_MODULES="aic7xxx qla2300_conf qla2300 qla2200_conf qla2200"
- Enter the appropriate command.
For Red Hat Distribution:
# mkinitrd -f <ramdisk image file name> <kernel version>
NOTE: This command overwrites the original ramdisk image file if
executed within the /boot directory. Specify a unique ramdisk image
name to preserve the original ramdisk image.
- On IA-32, copy the newly built
<ramdisk image file name> file to
/boot .
- On IA-64, copy the newly built
<ramdisk image file name> file to
/boot/efi/efi/RedHat .
For SLES Distribution:
# /sbin/mk_initrd
By default, the system creates the ramdisk images as:
/boot/initrd
/boot/initrd.SLES
NOTE: This command overwrites the original ramdisk image file. To
preserve the original ramdisk image specify a unique ramdisk image
name:
# /sbin/mk_initrd -k <kernel name> -i <ramdisk image file name>
- Configure the boot loader with the new ramdisk image for GRUB:
For Red Hat Distribution:
- Add "
initrd /<ramdisk file name> " in /etc/grub.conf file under
one of the kernel entries to use the ramdisk image. For
example:
kernel /vmlinuz-2.4.18-14 ro root=LABEL=/
initrd /initrd-2.4.18-14.img
- Reboot the system.
For SLES Distribution:
- Add "
initrd (hd0,1)/boot/<ramdisk file name> " in
/boot/grub/menu.lst file under one of the kernel entries to
use the ramdisk image. For example:
kernel (hd0,1)/boot/vmlinuz root=/dev/hda2 max_scsi_luns=128
initrd (hd0,1)/boot/initrd
- Reboot the system.
4.3 Using the SNIA API Library Package
The SNIA API library package (qlapi-<api_version>-rel.tgz ) is included
in the driver combo package (qla2x00-vx.yy.zz-dist.tgz ) or
(qla2x00-vx.yy.zz-fo-dist.tgz ).
Using the diskette you created in section 4.1, go to the root (/ )
directory and copy the distribution file (qla2x00-vx.yy.zz-dist.tgz )
to /qla2x00 :
# mkdir qla2x00
# cd qla2x00
# mount /mnt/floppy
# cp /mnt/floppy/*.tgz . (the period at the end is required)
# tar -xvzf *.tgz
# cd qlogic
- To install the SNIA API Library, enter the following command in the
current directory to install/setup API library:
# ./libinstall (this installs/sets up HBA API library)
- To uninstall the SNIA API Library, enter the following command in
the current directory to remove API library:
# ./libremove (script file to remove HBA API library)
4.4 Enabling IP Support
This section describes how to load the IP driver and configure the
network interface to allow TCP/IP applications to communicate with
IP-enabled FC HBAs. For details, see:
4.4.1 Loading the IP Driver
Before loading the driver manually, build the driver binary from the
driver source files as described in section 4.2.2. Enter the insmod or
modprobe commands to load the IP driver:
- To load the driver directly from the local build directory:
# insmod qla2300.o
# insmod qla2xip.o
- To load the driver using
modprobe :
- Install the driver module (
*.o ) files to the appropriate kernel
module directory:
# make install
- Load the driver for qla23xx HBAs:
# modprobe -v qla2300
# modprobe -v qla2xip
- To unload the driver using
modprobe :
# modprobe -r qla2xip
# modprobe -r qla2300
The qla2xip driver creates a network-interface binding to each
IP-capable recognized HBA. After loading the IP driver, you can view
the binding entries in the messages file. For example:
qla2xip: QLogic IP via Fibre Channel Network Driver
qla2xip: Driver Version 1.0b2, Entry point: e08e5060
qla2xip: Mapping interface fc0 to adapter 210100e08b20a15b
qla2xip: Mapping interface fc1 to adapter 210200e08b40a25b
4.4.2 Configuring Interfaces
To allow TCP/IP applications running on the host to communicate with
other IP-capable FC HBAs, you must configure the network interfaces:
- Compile the following basic host information to allow the IP
driver to pass TCP/IP data over FC HBAs in your host:
Interface name: |
fc0 |
(From above) |
IP Address: |
192.168.1.x* |
(A non-routable address) |
Netmask: |
255.255.255.0 |
(Standard class C mask) |
Interface name: |
fc1 |
(From above) |
IP Address: |
192.168.2.x* |
(A non-routable address) |
Netmask: |
255.255.255.0 |
(Standard class C mask) |
*x in the IP address is a unique number between (1 and 254) |
- Use the
ifconfig program to configure an interface with the
compiled host information:
# ifconfig fc0 192.168.1.x up
- Configure other interfaces (if multiple IP-capable HBAs are
present in the host):
# ifconfig fc1 192.168.1.x up
- Verify the configured interfaces:
# ifconfig
The screen displays details on the newly configured interfaces, as
shown in the following example:
fc0 Link encap:Ethernet HWaddr 00:E0:8B:20:A1:5B
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MTU:4096 Metric:1
RX packets:1214577458 errors:0 dropped:0 overruns:0 frame:0
TX packets:1214213174 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:32
RX bytes:3081095492 (2938.3 Mb) TX bytes:2751945609 (2624.4 Mb)
fc1 Link encap:Ethernet HWaddr 00:E0:8B:40:A2:5B
inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MTU:4096 Metric:1
RX packets:1204464697 errors:0 dropped:0 overruns:0 frame:0
TX packets:1194873236 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:32
RX bytes:1454694706 (1387.3 Mb) TX bytes:991094469 (945.1 Mb)
This completes configuration.
- Verify that basic networking is possible between two hosts
connected via two HBAs using a simple
ping command:
# ping 192.168.1.2
For more details on Linux networking, refer to the Linux Networking
"HOWTOs" available at http://www.tldp.org.
5. Driver Parameters
This section describes the following driver parameters:
5.1 System Parameters
You can configure support for multiple LUNs in one of three ways.
Currently, the system can scan up to 255 LUNs that for each device
(2.4.9-21 or above).
NOTE: If you have multiple HBAs, set max_scsi_luns to the largest
number of LUNs supported by any one of these HBAs.
If the SCSI Mid-Layer is compiled in the kernel, you can configure
the boot loader to scan for multiple LUNs each time the system
boots.
On IA-32, for GRUB, follow the steps for your OS platform.
For Red Hat Distribution:
- Append the
max_scsi_luns parameters to each of the kernel
images listed in the /etc/grub.conf file.
For example:
kernel /vmlinux-2.4.7-10 ro root=/dev/hda2 max_scsi_luns=255
- Reboot the system.
For SLES Distribution:
- Append the
max_scsi_luns parameters to each of the kernel
images listed in the /boot/grub/menu.lst file. For example:
kernel (hd0,1)/boot/vmlinuz root=/dev/hda2 max_scsi_luns=25
- Reboot the system.
On IA-64, follow the steps for your OS platform.
For Red Hat Distribution:
- Add the following line to each of the kernel images listed in
the
/boot/efi/efi/Red Hat/elilo.conf . For example:
append="max_scsi_luns=128"
- Reboot the system.
For SLES Distribution:
- Add the following line to each of the kernel images listed in
the
/boot/efi/SLES/elilo.conf . For example:
append="max_scsi_luns=128"
- Reboot the system.
If the SCSI Mid-Layer is compiled as a module:
- Add the following line to the
/etc/modules.conf file to scan
for multiple LUNs at each boot:
options scsi_mod max_scsi_luns=255
- Rebuild the ramdisk image, as described in section 4.2.3.
5.2 NVRAM Parameters
The driver reads the NVRAM parameters during initialization. Any
changes made for the particular NVRAM feature in the Fast!Util take
effect after reloading the driver or changing the parameters using
the utilities in SANsurfer FC HBA Manager or SANsurfer FC CLI.
5.3 Driver Command Line Parameters
The driver gets its parameters from the command line or from modprobe option directive found in the modules.conf file. The parameters use
the following format:
<keyword>=value format (for example, ql2xfailover=1 )
where <keyword> is one of the option parameters described in the
following paragraphs.
Usage: modprobe -v qla2300 <keyword>=value
Examples:
# modprobe -v qla2300.o ql2xfailover=1
# modprobe -v qla2300.o qlport_down_retry=60
Command Line Parameter Descriptions
Parameter |
Description |
Default |
ql2xfailover |
This parameter defines whether failover mode is
enabled or disabled. 0 to disable; 1 to enable. |
0 |
ql2xmaxqdepth |
This parameter defines the maximum queue depth
reported to SCSI Mid-Level per device. The Queue depth specifies
the number of outstanding requests per LUN. |
32 |
ql2xmaxsgs |
This parameter defines the maximum number of scatter
gather entries reported to SCSI Mid-Level per request for the HBA. |
32 |
ql2xmaxsectors |
This parameter defines the maximum number of
sectors reported to SCSI Mid-Level per request for the HBA. |
512 |
ql2xlogintimeout |
This parameter defines the Login timeout value
in seconds during the initial login. |
20 seconds |
qlport_down_retry |
This parameter defines how long to wait for a
port that returns a PORT-DOWN status before returning I/O back to
the OS. |
0
(use value specified in NVRAM) |
ql2xretrycount |
This parameter defines the maximum number of SCSI
Mid-Level retries allowed per command. |
20
(standard mode value)
30 (failover mode value) |
max_srbs |
This parameter defines the maximum number of
simultaneous commands accepted from the SCSI Mid-Level per HBA. |
4096 |
displayConfig |
This parameter defines whether to display the
current configuration.
1 - display the configuration
0 - don't
display the configuration. |
1 |
Binding method |
This parameter defines what target persistent
binding method to use:
0 - bind by Portname 1 - bind by PortID. |
0 (portname binding)
|
extended_error_logging |
This parameter defines whether to enable
(1) or Disable (0) writing the debug information to
/var/log/messages. |
0 (disable) |
MaxPathsPerDevice |
This parameter defines maximum number of paths
to a device. |
8 (compile time only) |
MaxRetriesPerPath |
This parameter defines how many retries to
perform on the current path before failing over to the next path
in the path list. |
3 |
MaxRetriesPerIo |
This parameter defines total retries to do before
failing the command and returning to the OS with selection timeout
(DID_NO_CONNECT). |
(MaxRetriesPerPath * MaxPathsPerDevice ) + 1 |
QlFailoverNotifyType |
This parameter defines type of failover
notification mechanism to use when a failover or failback occurs.
Certain storage systems require special CDBs issued to do failover
or failback. |
0 (none) |
ConfigRequired |
This parameter defines how to bind the devices.
0 - Present all the devices discovered to the OS.
1 - Present only the configured devices (i.e. the device defined in
/etc/qla2300_conf) to the OS. |
0 |
FailbackTime |
This parameter defines the delay in seconds before
performing a failback to ensure all paths are available. |
5 seconds |
RecoveryTime |
This parameter defines the recovery time in seconds
required before sending commands to the restored path. |
10 seconds |
ql2xprocessnotready |
This parameter defines how the driver should
handle a "NOT READY" indicator.
1 - Handled by the driver
0 - Disable the handling within the driver |
1 |
ql2xautorestore |
This parameter enables or disables the logic that
restores the previous failed preferred path and/or controller for
a given LUN. This option toggles the default state. Combine one or
more of the following model numbers into an inclusion mask:
0x80 - MSA A/A (auto-restore disabled)
0x20 - HSV111, HSV101, HSV200, HSV210 (auto-restore disabled)
0x10 - DSXXX (auto-restore disabled)
0x04 - HSV110, HSV100 (auto-restore disabled)
0x02 - MSA1000 (auto-restore disabled)
0x01 - XP (auto-restore enabled) |
0 |
ql2xlbType |
This parameter defines the load Balance Method for the
driver to use either static or dynamic:
0 (None) - Expose LUNs on the first active path and make them the
preferred path or the first active optimize path and make them the
preferred path (storages: MSA A/A and EVA A/A).
1 (Static load balancing) - Distribute and expose the LUNs across
the active optimize ports or active un-optimize ports and HBAs.
2 (Least outstanding I/O) - Send command to the path with the lowest
I/O count.
3 (Least Service time) - Send request to the path with the shortest
execution time. |
0 |
ql2xexcludemodel |
This parameter excludes device models from being
a failover capable target. Combine one or more of the following
model numbers into an exclusion mask:
0x80 - MSA A/A
0x20 - HSV111, HSV101, HSV200, HSV210
0x10 - DSXXX,
0x04 - HSV110, HSV100
0x02 - MSA1000,
0x01 - XP |
0 |
ql2xtgtemul |
Enable/Disable target level grouping emulation. This
option is necessary for the GUI to work correctly if the driver is
set for LUN level grouping of paths by lunid. The following
storages uses this method of combining paths:
HSV210, DSXXX, HSV110, MSA1000, XP.
1 - Enable target level grouping emulation
0 - Disable target level grouping emulation |
1 (Enable) |
To view all available parameters, enter one of the following commands:
# modinfo -p qla2300
# modinfo -p qla2200
6. Additional Notes
This section provides the following additional information:
6.1 Proc Filesystem Support
The /proc filesystem for the QLA2200, QLA23xx, and QLA246x driver are
located in the /proc/scsi/qla2200/ and /proc/scsi/qla2300/ directories. These directories contain a file for each FC HBA in the
system. Each file presents information about the HBA and transfers
statistics for each discovered LUN.
6.2 Failover Support
This section describes how to provide failover support. For details, see the following topics:
6.2.1 How to Enable the Failover Support In The Driver
To implement failover support in the QLA2xxx driver, enable the macro
MPIO_SUPPORT in qla_settings.h file. For example:
# define MPIO_SUPPORT 1
As an alternative, specify the option on the command line:
# modprobe -v qla2300 ql2xfailover=1
NOTE: The failover distribution package (qla2x00-vx.yy.zz-fo-dist.tgz )
as this macro enabled by default.
6.2.2 Using SANsurfer FC HBA Manager with QLA2xxx Driver for the
First Time
To work with SANsurfer:
- Build the driver with
MPIO_SUPPORT set to 1 in qla_settings.h .
- Add the following parameter in
modules.conf file:
options qla2200 ql2xfailover=1
or
options qla2300 ql2xfailover=1
- Add as a command line parameter:
# modprobe -v qla2300 ql2xfailover=1
6.2.3 Modifying the Configuration using SANsurfer FC HBA Manager (GUI)
The Linux SCSI mid-layer requires communicating with the target via
LUN 0; therefore, the driver cannot mask LUN 0 when defined through
the application. For the new LUN masking configuration to take effect,
you must reload the driver.
To modify the configuration using the SANsurfer FC HBA Manager:
- Load the driver:
modprobe <driver>
- Load the
qlremote agent.
- Start the GUI and connect it to the destination system.
- Make LUN masking changes.
- Disconnect the host from GUI and stop qlremote agent.
- Unload the driver:
modprobe -r <driver>
- Reload the driver:
modprobe <driver>
- Load
qlremote agent again.
- Start the GUI and connect it to the destination system.
You should now see the updated LUN masking configuration.
NOTE: When using modprobe to load the driver, the length of the option
line specified in /etc/modules.conf file has a limit of 2K characters.
Any longer option line causes a string overflow error from modprobe .
6.3 Persistent Binding
The persistent binding information consists of some HBA configuration
entries along with some target entries, which are specified in two
formats: verbose and shorten. The shorten format allows a bigger
configuration to fix in the limited space on the command line. As
an alternate to using the command line, you can use the configuration
file.
You can specify persistent binding in two ways: manually or using
SANsurfer FC HBA Manager or SANsurfer FC HBA CLI. We recommend using
SANsurfer tools for ease of use.
The following procedure shows how to manually add persistent binding
commands.
The driver displays the current configuration when the displayConfig command line option is specified. The persistent binding configuration
is found in var/log/messages file. It prints the configuration
information in the format required by the driver. The best way to
extract configuration messages is to use grep and direct the output
to a file. You need to remove the Linux timestamp at the beginning
each message and combine them together on single line.
For example:
# modprobe -v qla2300 displayConfig=1
# grep "scsi-qla" /var/log/messages > /tmp/info.cfg
The format of the persistent binding commands is as follows:
scsi-qla<#>-adapter-port=<HBA port name value>;
or
<#>-w=<HBA port name value>; ** shorten format **
The designated by qla<#> , where the <#> is the HBA instance number.
The parameter specifies the FC port name to be used for the HBA where <HBA port name value> is the FC port name value in hexadecimal
format. If this entry is not specified in the configuration file, the default
value is the HBA's port name as saved in the NVRAM. For example:
scsi-qla00-adapter-port=210000e08b01158d\;
where host HBA instance 0 has a port name of 210000e08b01158d
scsi-qla<#1>-tgt-<#2>-di-<#3>-node=<device FC name>;
or
<#1>-<#2>-<#3>-n=<device FC name>; ** shorten format **
This parameter associates the specified <device FC name> with the
SCSI target ID value specified by <#2> and a device ID value specified
by <#3> where <device FC name> type is the FC node name of the
device, <#2> is the SCSI target ID to be assigned to the device,
and <#3> is the device unique ID.
where
<#1> specifies the HBA instance number
<#2> specifies the SCSI ID of target
<#3> specifies the path/device ID
scsi-qla<#1>-tgt-<#2>-di-<#3>-port=<device FC name>;
or
<#1>-<#2>-<#3>-p=<device FC name>; ** shorten format **
This parameter associates the specified <device FC name> with the
SCSI target ID value specified by <#2> and a device ID value specified
by <#3> where <device FC name> type is the FC port
where
<#1> specifies the instance number
<#2> specifies the SCSI ID of Target
<#3> specifies the path/device ID (always 0 for non-failover) name of the device, <#2> is the SCSI target ID to be assigned to
the device, and <#3> is the device unique ID.
scsi-qla<#1>-tgt-<#2>-di-<#3>-disabled=<256 bit mask>;
or
<#1>-<#2>-<#3> -d=<256 bit mask> ; ** shorten format **
This parameter associates the specified <256 bit mask> with the
SCSI target ID value specified by <#2> and a device ID value specified
by <#3> .
where
<#1> specifies the HBA instance number
<#2> specifies the SCSI ID of Target
<#3> specifies the path/device ID
<256 bit mask>
msb lsb
000000000000000000000000000000000000000000000000000000000000000F
The mask above makes the first four LUNs, 3, 2, 1, and 0 of a
given Target disabled on that target/path.
This mask specification is heavily type checked to be a sequence of
64 hex digits.
6.4 Configuration Data
Configuration/persistent data loads in the driver automatically when
installing and loading the driver. Normally this information passes to
the driver using the command line, but due to the constraints inherent
in using the command line, you may prefer using an alternate method:
QLA_OPTS. For details, see the following topics:
6.4.1 QLA_OPTS
QLA_OPTS reads the configuration data from qla2x00.conf and updates the
binary module qla2x00_conf.o . The driver automatically tries to load
the binary module qla2x00_conf.o at driver initialization time. Once
loaded, the module passes the configuration information directly to
the driver. The configuration data and module are stored in /etc/ with the filename based on the ISP board type:
Configuration File |
Module Name |
/etc/qla2200.conf |
qla2200_conf.o |
/etc/qla2300.conf |
qla2300_conf.o |
NOTE: Approximately 300K of configuration space has been pre-allocated
within the qla2200_conf/qla2300_conf module for configuration/persistent
data.
6.4.2 Compatibility with SANsurfer FC HBA Manager
QLA_OPTS works seamlessly with updated SANsurfer FC HBA Manager
applications. Originally, when the application saved a configuration,
it saved the corresponding data to the options section of the modules.conf file in a form similar to the following:
ql2xopts=scsi-qla0-HBA-port=210000e08b000000\;scsi-qla0-tgt-1-di-
0-node=20000020371682e7\;scsi-qla0-tgt-1-di-0-port=21000020371682e7\;
scsi-qla0-tgt-1-di-0-pid=0000e2\;scsi-qla0-tgt-1-di-0-control=00\;
The application now saves the data to the appropriate qla2[2|3]00.conf file in /etc and then brands it to the binary file of the
corresponding configuration module (qla2200_conf.o or qla2300_conf.o ):
/lib/modules/<CURRENT_KERNEL_VERSION>/kernel/drivers/scsi
where CURRENT_KERNEL_VERSION is the result of the command uname -r .
This operation occurs automatically and requires no user intervention.
However, if you loaded the driver from an initrd image, as before
with the modules.conf interface, you would need to rebuild the initrd
image after updating a configuration.
6.4.3 Updating the Configuration Manually
Manually updating the /etc/qla2x00.conf file is strongly discouraged.
Because it can cause the binary module and the configuration file to
get out of sync. If necessary, you can change the persistent/configuration manually.
To change a value manually:
- Change the
/etc/qla2x00.conf file.
- Run
make install from the driver's build directory to update the
configuration module.
6.5 Forcing Device Rescan
Beginning with driver version v6.06.00b12, the driver provides a way
to force the driver to re-scan the devices to allow you to add a new
device. This triggers the driver to initiate LUN discovery process.
When scanning, first scan the driver (qla2300/qla2200 driver etc),
then the Linux scsi mid layer (such as an OS scan). For example,
enter the commands:
# echo "scsi-qlascan" > /proc/scsi/<driver-name>/<HBA-ID>
(qlogic driver re-scans)
where
<driver-name> is qla2100 , qla2200 , or qla2300
<HBA-ID> is the instance number of the HBA
After doing this, you can force the SCSI mid layer to perform its
own scan and build the device table entry for the new device:
# echo "scsi add-single-device 0 1 2 3" >/proc/scsi/scsi
(scsi mid layer re-scans)
where 0 1 2 3 is replaced by your Host Channel ID LUN.
6.6 Booting from SAN
To boot from SAN, create a driver disk (DD Kit) image, which
enables you to install the Red Hat/SLES 8 OS and QLogic driver
(qla2300) on the Fibre Channel boot disk connected to the HBA
(QLA23XX/QLA63XX).
To build the driver disk image for
RH3 IA-32, follow these steps:
- Download
7.x_linux_driver_ddkit_for_Red Hat_SLES_dist.tgz from the QLogic website:
http://www.qlogic.com/
- Untar the tgz file:
# tar -xvzf *.tgz
- Enter:
# dd if=qla2x00-vx.yy.zz-x86-dd-RHEL3-U5.img of=/dev/fd0 bs=1440k
(requires a 1.44MB floppy)
6.7 Forcing a LIP
The following NVRAM parameters must be set in order to perform
the LIP reset:
- Enable Lip Reset
- Enable Target Reset (if the attached targets should be also be reset)
If both the above parameters are disabled, a Full Login LIP is executed.
Execute the following command to initiate the LIP reset process:
# echo "scsi-qlalip " > /proc/scsi/qla2300/<host_no>
6.8 Getting Firmware Dump
The extras directory in the driver source contains a utility used to retrieve the firmware dump on a specific host.
To know if firmware dump has happened in the driver, search for "Firmware dump"
in /var/log/messages .
For example:
# grep "Firmware dump" /var/log/messages
localhost kernel: scsi(0): Firmware dump saved to temp buffer (0/e0306000).
^_ 0 is the host_no
To retrieve this firmware dump, enter the following command:
# cd extras
# ./qla_gdmp 0
Info: Firmware dumped to file fw_dump_0_20061128_152019.bin
Info: Firmware dump on 0 -- dumped 324586 bytes...
The utility saves the dump file in the current directory with a .bin extension.
NOTE: The dump can be retrieved only once.
The dump is in binary format, to convert the binary format into text format, enter the following command:
./qla_dmp < <FW dump bin file name>
For example:
# ./qla_dmp < fw_dump_0_20061128_152019.bin
7. Contacting Support
Please feel free to contact your QLogic approved reseller or QLogic
Technical Support at any phase of integration for assistance. QLogic
Technical Support can be reached by the following methods:
Web: http://support.qlogic.com
North America Contact Information
Email: support@qlogic.com
Phone: (952) 932-4040
Support contact information for other regions of the world is available
at the QLogic website:
http://support.qlogic.com
Go to Top
 |
© Copyright 2007. All rights reserved worldwide. QLogic, the QLogic logo, and the Powered by QLogic logo are registered trademarks of QLogic Corporation. All other brand and product names are trademarks or registered trademarks of their respective owners.
|
|