web-dev-qa-db-fra.com

Existe-t-il un moyen plus rapide d’analyser les ports SCSI différent de 'sbin / rescan-scsi-bus'?

Je développe actuellement un programme qui va chercher et valider les informations à l'intérieur de 5 disques SSD en même temps. Mon problème est que la commande que j'utilise pour analyser les lecteurs (/sbin/rescan-scsi-bus) prend trop de temps et bloque parfois mon programme ou tout l'ordinateur. Donc, ce que je recherche, c’est un moyen d’analyser les disques SSD même si je dois modifier certaines variables d’environnement. J'utilise une carte de test pour effectuer cette analyse et j'ai essayé d'autres commandes telles que:

echo 1 > /sys/block/sdX **with** echo "- - -" | tee /sys/class/scsi_Host/host?/scan
/sbin/rescan-scsi-bus --luns=0 --ids=0 --channels=0
/sbin/rescan-scsi-bus       # with other parameters

Et une commande bash pour supprimer tous les disques, à l'exception de celui sur lequel le système d'exploitation est monté.

1
xedge

Je suis venu avec une solution à mon problème.

Même si c’était une ancienne commande du noyau, elle m’a aidé à résoudre les temps d’attente et à faire en sorte que tous les disques SSD soient analysés avant la validation.

echo 'scsi add-single-device X 0 0 0' > /proc/scsi/scsi

et

echo 'scsi remove-single-device X 0 0 0' > /proc/scsi/scsi

où X est le numéro de l'hôte que je veux monter/démonter, dans ce cas particulier, par exemple pour le port 'ATA1', l'hôte est 0, ainsi:

echo 'scsi add-single-device 0 0 0 0' > /proc/scsi/scsi

et

echo 'scsi remove-single-device 0 0 0 0' > /proc/scsi/scsi
0
xedge