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é.
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