我目前正在开发一个程序,可以同时获取和验证 5 个 SSD 内部的信息。我的问题是,我用来扫描驱动器的命令 ( /sbin/rescan-scsi-bus
) 耗时太长,有时会冻结我的程序或整个计算机。所以我正在寻找一种即使需要更改一些环境变量等也能扫描 SSD 的方法。我正在使用测试板来执行此扫描,并且我尝试了其他命令,例如:
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
并且使用 bash 命令删除除安装了操作系统的磁盘之外的所有磁盘。
答案1
我找到了解决我的问题的方法。
即使它是一个旧的内核命令,它也帮助我解决等待时间并确保在验证之前扫描所有 SSD。
echo 'scsi add-single-device X 0 0 0' > /proc/scsi/scsi
和
echo 'scsi remove-single-device X 0 0 0' > /proc/scsi/scsi
其中 X 是我想要挂载/卸载的主机编号,在这种特定情况下,例如对于“ATA1”端口主机为 0,因此它将是:
echo 'scsi add-single-device 0 0 0 0' > /proc/scsi/scsi
和
echo 'scsi remove-single-device 0 0 0 0' > /proc/scsi/scsi