16. February 2021

SCSI-BUS rescan

By msh

SCSI – BUS auf neue device scannen. In keinem der unten angeführten Schritte ist ein reboot des Systems erforderlich!

#!/bin/bash

SCSI_HOSTS=$(  ls -l /sys/class/scsi_host/host* | grep -o host[0-9] | uniq )
for SCSI_HOST in ${SCSI_HOSTS}; do

        echo "- - -" > /sys/class/scsi_host/${SCSI_HOST}/scan

done

nun sehen wir ein dmesg ein neues Device.
Jetzt muss der Bus diese Devices ermittelt werden sofen die aktuelle größe zwischenzeitlich verändert wurde.
In unserem Fall ist dies /sys/class/scsi_device/0:0:1:0

SCSI Device neue Größe ermitteln

ll /sys/class/scsi_device/ 
total 0
lrwxrwxrwx 1 root root 0 Jan 20 09:29 0:0:0:0 -> ../../devices/pci0000:00/0000:00:10.0/host0/target0:0:0/0:0:0:0/scsi_device/0:0:0:0
lrwxrwxrwx 1 root root 0 Jan 20 09:29 0:0:1:0 -> ../../devices/pci0000:00/0000:00:10.0/host0/target0:0:1/0:0:1:0/scsi_device/0:0:1:0
lrwxrwxrwx 1 root root 0 Jan 20 09:29 0:0:2:0 -> ../../devices/pci0000:00/0000:00:10.0/host0/target0:0:2/0:0:2:0/scsi_device/0:0:2:0
lrwxrwxrwx 1 root root 0 Jan 20 09:29 0:0:3:0 -> ../../devices/pci0000:00/0000:00:10.0/host0/target0:0:3/0:0:3:0/scsi_device/0:0:3:0
lrwxrwxrwx 1 root root 0 Jan 20 09:29 0:0:4:0 -> ../../devices/pci0000:00/0000:00:10.0/host0/target0:0:4/0:0:4:0/scsi_device/0:0:4:0
lrwxrwxrwx 1 root root 0 Jan 20 09:29 0:0:5:0 -> ../../devices/pci0000:00/0000:00:10.0/host0/target0:0:5/0:0:5:0/scsi_device/0:0:5:0
lrwxrwxrwx 1 root root 0 Jan 20 09:29 0:0:6:0 -> ../../devices/pci0000:00/0000:00:10.0/host0/target0:0:6/0:0:6:0/scsi_device/0:0:6:0
lrwxrwxrwx 1 root root 0 Jan 20 09:29 2:0:0:0 -> ../../devices/pci0000:00/0000:00:07.1/ata3/host2/target2:0:0/2:0:0:0/scsi_device/2::0:0

echo 1 > /sys/class/scsi_device/0\:0\:1\:0/device/rescan

et voila

Disk /dev/sdb: 644.2 GB, 644245094400 bytes
255 heads, 63 sectors/track, 78325 cylinders, total 1258291200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table

 

Und alles in einem Script

#!/bin/bash
SCSI_DEVICES=$( ls /sys/class/scsi_device/ )
SCSI_HOSTS=$( ls -l /sys/class/scsi_host/host* | grep -o host[0-9] | uniq )

############################
## RESCANNING HOST DEVICES
############################
for SCSI_HOST in ${SCSI_HOSTS}; do
    echo "RESCANNING HOST :: ${SCSI_HOST}"
    echo "- - -" > /sys/class/scsi_host/${SCSI_HOST}/scan
done

############################
## RESCANNING SCSI DEVICES
############################
for SCSI_DEVICE in ${SCSI_DEVICES}
do
    echo "RESCANNING SCSI-DEVICE :: ${SCSI_DEVICE}"
    echo 1 > /sys/class/scsi_device/"${SCSI_DEVICE}"/device/rescan
done