Reescanear los discos de sistema en Linux RedHat

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

Me ocurre muchas veces que solicito una nueva LUN al equipo de storage para montar un servicio nuevo o ampliar un filesystem ya existente, pero simplemente recibo una notificación indicando que ya me han dado el disco SCSI, sin más detalles. Obviamente, la LUN se añade en caliente tanto en servidores físicos como en virtuales de VMWare, por ejemplo.

Cuando tenemos sistemas con muchos discos y de los mismos tamaños, esto puede ser un problema porque no sabes cuál es el nuevo disco y para averiguarlo tienes que ir mirando uno a uno cuál está en uso.

Para solucionar esta problemática, me hice un script para RedHat 6 y 7 que saca un listado de discos, lo guarda en un fichero, reescanea discos, vuelve a sacar otro listado y compara ambos. De esta manera, podemos buscar el disco que ha cambiado entre el primer listado y el segundo.

Script para buscar nuevos dispositivos SCSI en RedHat

La ejecución del script de escaneo de discos en RedHat (pobado en RHEL6 y 7) es la siguiente:

# /planific/bin/admsys/rescandisks.sh
Scanning disks...
Scan finished
Number of disks before scan: 97
Number of disks after scan: 103
New disks detected:
97a98,103
Disk /dev/sdct: 161.1 GB, 161061273600 bytes
Disk /dev/sdcu: 161.1 GB, 161061273600 bytes
Disk /dev/sdcv: 161.1 GB, 161061273600 bytes
Disk /dev/sdcw: 161.1 GB, 161061273600 bytes
Disk /dev/sdcx: 161.1 GB, 161061273600 bytes
Disk /dev/sdcy: 161.1 GB, 161061273600 bytes
[root]#

El código fuente del script en bash ejecutado anteriormente es:

#!/bin/sh
PATH=/bin:/sbin:/usr/sbin:/usr/bin

# Number of disks before the scan
NUMBEROFDISKSPREV=fdisk -l |grep dev |grep -v mapper |grep Disk |wc -l
echo "Scanning disks..."
fdisk -l |grep dev |grep -v mapper |grep Disk > /tmp/rescandisks_prev.txt

# Scan disks
for HOSTX in $(ls -l /sys/class/scsi_host |awk '{print $9}' |grep -v ^$)
do
   echo "- - -" > /sys/class/scsi_host/$HOSTX/scan
done

for DEVICEX in $(ls -l /sys/class/scsi_device |awk '{print $9}' |grep -v ^$)
do

   echo 1 > /sys/class/scsi_device/$DEVICEX/device/rescan

done

fdisk -l |grep dev |grep -v mapper |grep Disk > /tmp/rescandisks_after.txt
echo "Scan finished"

# Number of disks after the scan
NUMBEROFDISKSAFTER=fdisk -l |grep dev |grep -v mapper |grep Disk |wc -l

echo "Number of disks before scan: $NUMBEROFDISKSPREV"
echo "Number of disks after scan: $NUMBEROFDISKSAFTER"

# If number of disks before the scan are different after scan, show the differences
if [ $NUMBEROFDISKSPREV != $NUMBEROFDISKSAFTER ]
then

   echo "New disks detected: "
   diff /tmp/rescandisks_prev.txt /tmp/rescandisks_after.txt

fi

rm /tmp/rescandisks_prev.txt /tmp/rescandisks_after.txt


¿Te ha gustado? Compártelo

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email
About Author

Contenido Relacionado

Artículos Recientes

Deja un comentario