This section describes LUN detection procedures for the Linux host
system.
If you have a Linux driver that does not automatically configure any LUNs
other than LUN 0, you can manually configure the other LUNs, depending on
the parameters and settings used for the SCSI mid-layer driver.
Figure 1 shows an example of the /proc/scsi/scsi file for a Linux
host that only configures the first LUN, LUN 0, on each host adapter port.
Figure 1. Example of a /proc/scsi/scsi file
from a Linux host that only configures LUN 0# cat proc/scsi/scsi
...
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: IBM-PSG Model: DPSS-318350M F Rev: S9HA
Type: Direct-Access ANSI SCSI revision: 03
Host: scsi0 Channel: 00 Id: 15 Lun: 00
Vendor: IBM Model: TP4.6 V41b3 Rev: 4.1b
Type: Processor ANSI SCSI revision: 02
Host: scsi2 Channel: 00 Id: 00 Lun: 00
Vendor: IBM Model: 2105800 Rev: .294
Type: Direct-Access ANSI SCSI revision: 03
Host: scsi3 Channel: 00 Id: 00 Lun: 00
Vendor: IBM Model: 2105800 Rev: .294
Type: Direct-Access ANSI SCSI revision: 03
Host: scsi3 Channel: 00 Id: 01 Lun: 00
Vendor: IBM Model: 2105800 Rev: .294
Type: Direct-Access ANSI SCSI revision: 03
There are two ways to workaround the issue of only having LUN 0 configured:
- Create a script to manually add devices into /proc/scsi/scsi
- Detect LUNs automatically at system boot by modifying the initial ram-disk
(initrd)
Create a script to echo the /proc filesystem
Use the scsi add-single-device command to consecutively
configure all of the LUNs that are assigned to your host system. Write a script
that repeats the scsi add-single-device command
for each LUN on each ID for each host adapter. The script must scan all host
adapter ports and identify all of the LUNs that are assigned to each port.
After you run the script, you can view all of the assigned LUNs in the
/proc/scsi/scsi file.
Figure 2 shows
an excerpt of an example /proc/scsi/scsi file for a Linux host after a script
has configured every LUN.
Figure 2. Example of a /proc/scsi/scsi file
for a Linux host with configured LUNs# cat proc/scsi/scsi
...
Host: scsi3 Channel: 00 Id: 00 Lun: 00
Vendor: IBM Model: 2105800 Rev: .294
Type: Direct-Access ANSI SCSI revision: 03
Host: scsi3 Channel: 00 Id: 01 Lun: 00
Vendor: IBM Model: 2105800 Rev: .294
Type: Direct-Access ANSI SCSI revision: 03
Host: scsi3 Channel: 00 Id: 00 Lun: 01
Vendor: IBM Model: 2105800 Rev: .294
Type: Direct-Access ANSI SCSI revision: 03
Host: scsi3 Channel: 00 Id: 00 Lun: 02
Vendor: IBM Model: 2105800 Rev: .294
Type: Direct-Access ANSI SCSI revision: 03
Host: scsi3 Channel: 00 Id: 00 Lun: 03
Vendor: IBM Model: 2105800 Rev: .294
Type: Direct-Access ANSI SCSI revision: 03
Host: scsi3 Channel: 00 Id: 00 Lun: 04
Vendor: IBM Model: 2105800 Rev: .294
Type: Direct-Access ANSI SCSI revision: 03
...
Detect LUNs automatically at system boot
The second method of configuring LUNs for a Linux system with only LUN
0 configured involves setting the parameter for the SCSI mid-layer driver
that controls how many LUNs are scanned during a SCSI bus scan. The following
procedure works for both 2.4 and 2.6 kernels, but it assumes the SCSI mid-layer
driver is compiled as a scsi_mod module that is loaded automatically at system
boot time. For Linux 2.4 kernels, to set the maximum number of disk devices
under Linux to properly detect all volumes, you need to set the max_scsi_luns
option for the SCSI mid-layer driver. For example, if max_scsi_luns is set
to 1 this limits SCSI bus scans to only LUN 0. This value should be set to
the respective maximum number of disks the kernel can support, for example,
128 or 256. In Linux 2.6 kernels, the same procedure applies, except that
the parameter has been renamed from max_scsi_luns to max_luns.
- Edit the /etc/modules.conf file.
- Add the following line:
- options scsi_mod max_scsi_luns=<n> (where <n> is the total
number of luns to probe.
- Save the file.
- Run the mkinitrd command to rebuild the ram-disk
associated with the current kernel. You can use the following figures examples
of what mkinitrd command to run for your operating
system. <kernel> refers to the ‘uname –r’ output which displays the currently
running kernel level, for example:. 2.4.21-292-smp.
For SUSE distributions,
use the following command:
Figure 3. Example mkinitrd command
for SUSEcd /boot
mkinitrd –k vmlinuz-<kernel> -i initrd-<kernel>
For Red Hat distributions, use the following command:
Figure 4. Example mkinitrd command for Red Hatcd /boot
mkinitrd –v initrd-<kernel>.img <kernel>
- Reboot the host.
- Verify that the boot files are correctly configured for the newly
created initrd image in the /boot/grub/menu.lst file.