I am currently using Open Suse to test large arrays of SCSI and SAS hard drives. The issue I am having is that every time we power a drive off and on again, the target ID field of the SCSI address iterates by one. When we are powering 250 drives on and off hundreds of times, we quickly run up against the limit for the Target ID # field and the drives no longer get a new devfs node like /dev/sdxx.

You can check the current drives that are connected with :

$lsscsi

which outputs something like :

[0:0:0:0] disk ATA WDPARTNUMBER1 /dev/sda
[6:0:20813:0] disk SNDSK PARTNUMBER2 /dev/sdb

Here we look at the numbers in the brackets on the left side :

[6:0:20813:0]

Which breaks down to

  • SCSI adapter number [host] = 6
  • channel number [bus] = 0
  • id number [target] = 20813 <-- This is the important field
  • lun [lun] = 0



As you can see, the id number has been iterated many times over the time the system has been booted. What I want to do is limit, reset or fix this id number so that it does not iterate up through 65536 and then stop issuing new device nodes in /dev/ . I hope to do this without having to reboot the system entirely.

What would be the best strategy to do this in Open Suse? We are using this kernel version : Linux WFD-FA-ser01 2.6.34-12-desktop #1 SMP PREEMPT 2010-06-29 02:39:08 +0200 i686 i686 i386 GNU/Linux


Thanks for your help!