How to scan new FC LUNS and SCSI disks in Redhat Linux without rebooting the server? Most of the Linux beginners have to wonder how to do this and this article will be for them. It may look very simple as we perform this in daily operation to scan LUNS but the system has much work to do in the background when you execute storage scanning commands. Redhat says this type of scan can be distributive since it can cause delays while I/O operation timeout and remove devices unexpectedly from OS.
Scanning FC-LUN’s in Redhat Linux
1.First, find out how many disks are visible in “fdisk -l” .
# fdisk -l 2>/dev/null | egrep '^Disk' | egrep -v 'dm-' | wc -l
2.Find out how many host bus adapter configured in the Linux box.you can use “systool -fc_host -v” to verify available FC in the system.
# ls /sys/class/fc_host host0 host1
In this case,you need to scan host0 & host1 HBA.
3.If the system virtual memory is too low ,then do not proceed further.If you have enough free virtual memory,then you can proceed with below command to scan new LUNS.
# echo "1" > /sys/class/fc_host/host0/issue_lip # echo "- - -" > /sys/class/scsi_host/host0/scan # echo "1" > /sys/class/fc_host/host1/issue_lip # echo "- - -" > /sys/class/scsi_host/host1/scan
Note: You need to monitor the “issue_lip” in /var/log/messages to determine when the scan will complete.This operation is an asynchronous operation.
You can also use rescan-scsi-bus.sh script to detect new LUNS.
# yum install sg3_utils # ./rescan-scsi-bus.sh
4. Verify if the new LUN is visible or not by counting the available disks.
# fdisk -l 2>/dev/null | egrep '^Disk' | egrep -v 'dm-' | wc -l
If any new LUNS added , then you can see more count is more then before scanning the LUNS.
Scanning SCSI DISKS in Redhat Linux
1. Finding the existing disk from fdisk.
[root@mylinz1 ~]# fdisk -l |egrep '^Disk' |egrep -v 'dm-' Disk /dev/sda: 21.5 GB, 21474836480 bytes
2. Find out how many SCSI controller configured.
[root@mylinz1 ~]# ls /sys/class/scsi_host/host host0 host1 host2
In this case, you need to scan host0,host1 & host2.
3. Scan the SCSI disks using below command.
[root@mylinz1 ~]# echo "- - -" > /sys/class/scsi_host/host0/scan [root@mylinz1 ~]# echo "- - -" > /sys/class/scsi_host/host1/scan [root@mylinz1 ~]# echo "- - -" > /sys/class/scsi_host/host2/scan
4. Verify if the new disks are visible or not.
[root@mylinz1 ~]# fdisk -l |egrep '^Disk' |egrep -v 'dm-' Disk /dev/sda: 21.5 GB, 21474836480 bytes Disk /dev/sdb: 1073 MB, 1073741824 bytes Disk /dev/sdc: 1073 MB, 1073741824 bytes
From Redhat Linux 5.4 onwards, Red hat introduced “/usr/bin/rescan-scsi-bus.sh” script to scan all the SCSI bus and update the SCSI layer to reflect new devices.
But most of the time, the script will not be able to scan new disks and you need to go with echo command.
Pro Tip: Load/access your all-time favorite Windows applications remotely from anywhere using your Linux system with virtual PCs by CloudDesktopOnline. For other more such innovative cloud products visit www.Apps4Rent.com.
Do not forget to check out Redhat Enterprise Linux 7 Tutorial .
Here is the step by step guide to scan FC LUNS on Solaris.
Thank you for reading this article.
saikumar says
would any please explain what exact mean that “- – – ” in echo “- – – ” > /sys/class/fc_host/hotsx/scan …
krish says
CTL controller target lun
Jagadeesan says
Hi,
I have doubts regarding LUN configuration on unix, if the LUN having data , how to mount file system without lost data ?
Can any one guide me solutions.
Thanks
Jagadeesan
Ajay says
grt… many many thnks
Naresh says
what has to at “- – -” of command
echo “- – -” > /sys/class/scsi_host/host0/scan
or it is the same command we have to execute as it is with host name replacement?
please let me know, I am new to Linux.
Ramakrishna Talluri says
Hi Naresh,
host# is the available HBA representation you can find the HBA in below location.
ls /sys/class/fc_host
if the server has 3 HBA then they will be host0 host1 host2
then you can scan them using below command as mentioned above
[root@mylinz1 ~]# echo “- – -” > /sys/class/scsi_host/host0/scan
[root@mylinz1 ~]# echo “- – -” > /sys/class/scsi_host/host1/scan
[root@mylinz1 ~]# echo “- – -” > /sys/class/scsi_host/host2/scan
Laxma Reddy says
Hi ,
Very good explanation , thank you very much….
Keep it up..
Thanks.
Naveen says
Good article . Thank you
mohit says
good one !~~!……!……..!
Zlatan says
Thanks ! this helped me a lot!
Adeel Mehmood says
Great Article and Keep it up .thx