Anteriormente expliqué cómo forzar un rescan de disco en Linux para detectar un cambio de tamaño (por ejemplo, si hemos expandido un disco y el kernel no ve su nueva capacidad). En esta oportunidad voy a demostrar cómo rescanear un bus SCSI para detectar un nuevo disco (en lugar de expandir un disco existente, se ha agregado uno nuevo).



Supongamos que hemos agregado un nuevo disco a una máquina virtual Linux y no ha sido detectado automáticamente. Este artículo demuestra cómo detectar un nuevo disco SCSI en Linux sin necesidad de reiniciar el sistema.

Luego de agregar el nuevo disco, se observa que sólo se encuentra presente el dispositivo /dev/sda:

root@debian:/usr/local# ll /dev/sd*
brw-rw---T 1 root disk 8, 0 jun 26 09:06 /dev/sda
brw-rw---T 1 root disk 8, 1 jun 26 09:06 /dev/sda1
brw-rw---T 1 root disk 8, 2 jun 26 09:06 /dev/sda2
brw-rw---T 1 root disk 8, 3 jun 26 09:06 /dev/sda3

Si se ha conectado un nuevo disco y este no ha sido detectado automáticamente por el kernel, simplemente se debe efectuar un rescan del bus SCSI. Esto hace que el nuevo dispositivo sea descubierto por el kernel e inmediatamente se encuentre disponible para su uso. Es posible comunicarse con el kernel Linux para indicarle que realice un rescan del bus SCSI mediante el pseudo fylesystem sysfs.

Para comenzar, es necesario conocer el número de controlador (host adapter). Simplemente buscar el driver mpt entre todos los controladores SCSI disponibles:

root@debian:/usr/local# grep mpt /sys/class/scsi_host/host?/proc_name
/sys/class/scsi_host/host0/proc_name:mptspi

Típicamente es el host0. Ahora sólo resta indicarle al controlador que se desea realizar un rescan del bus. El archivo scan dentro de cada directorio de controlador permite indicarle al kernel que se desea realizar un escaneo de dispositivo, pasando un número de canal, ID de controlador y LUN. Aunque es posible utilizar wildcars (guiones) para escanear todos los canales, controladores y LUNs:

root@debian:/usr/local# echo "- - -" > /sys/class/scsi_host/host0/scan

Inmediatamente se encuentra disponible el nuevo disco, el cual corresponde con el dispositivo /dev/sdb:

root@debian:/usr/local# ll /dev/sd*
brw-rw---T 1 root disk 8,  0 jun 26 09:06 /dev/sda
brw-rw---T 1 root disk 8,  1 jun 26 09:06 /dev/sda1
brw-rw---T 1 root disk 8,  2 jun 26 09:06 /dev/sda2
brw-rw---T 1 root disk 8,  3 jun 26 09:06 /dev/sda3
brw-rw---T 1 root disk 8, 16 ago  6 08:01 /dev/sdb


Tal vez pueda interesarte


Compartí este artículo