Howto: Linux see new fiber channel attached disk LUNs without rebooting

last updated in Categories

Q. How do I force fdisk to see new fiber channel attached disk LUNs without rebooting my Linux server or system?

A. Hot swapping or hot plugging is the ability to remove and replace components of a machine, usually a computer, while it is operating. Once the appropriate software is installed on the computer, a user can plug and unplug the component without rebooting.

You can add new SCSI device to a Linux system through SCSI hotplug mechanism.

Type the following command as root user:

$ echo "scsi add-single-device 1 2 3 4">/proc/scsi/scsi

Where,

  • 1 – HBA number
  • 2 – channel id on the HBA
  • 3 – SCSI ID of the new device
  • 4 – LUN of the new device

You need to replace 1,2,3,4 with actual values or parameters as per above list.

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.

4 comment

  1. A cautionary note. I found that using the posted command to bring a Quantum SDLT scsi tape drive on line if it went off line for some reason, would cause it to negotiate at a lower than maximum trasfer speed. I don’t know if this happens with other devices or why it happens. The way I got around it was to reload the driver (asumming a klm).

    av

  2. * 1 – HBA number
    * 2 – channel id on the HBA
    * 3 – SCSI ID of the new device
    * 4 – LUN of the new device

    how we will get these information from system. pls give more clarity on this part.

  3. You can try the script I wrote below:

    #!/usr/bin/perl

    #####################################################################
    #
    # Quick Perl Script to scan for Fiber LUNs without restarting Linux
    #
    #####################################################################

    opendir(NS, “/sys/class/scsi_host”);
    @ns=readdir(NS);
    closedir(NS);
    shift @ns;
    shift @ns;
    foreach $ns(@ns) {
    open(DAT,”>/sys/class/scsi_host/$ns/scan”) || die(“Cannot Open File”);
    print DAT “- – -“;
    close(DAT);
    }

    exit;

    Have a question? Post it on our forum!