我希望有人能回答我的问题因为我现在很困难。
我已经有一个 Python 程序,用于验证 SSD 固件信息与数据库信息。因此,如果一切正常,该程序会将信息插入到包含所有已验证 SSD 的另一个数据库中。
但这不是这里的问题。
我用来使该程序直观地工作的方法是从命令中获取字符串,使图像与驱动器的物理位置相匹配,这样操作员就可以知道哪个驱动器是好的还是坏的。
说,命令:
readlink /sys/block/sd?
它给了我这个输出:
../devices/pci0000:00/0000:00:1f.2/ata6/host5/target5:0:0/5:0:0:0/block/sda
我从输出中参考了 ATA 端口的位置。在本例中,它将是:ata6
此方法是硬编码的,因此如果电缆设置混乱,它将无法正确显示图像。
现在,我有一个用于我的目的的 SSD 测试板,它是一个具有 8 个 SATA 端口的 PCB,可以为驱动器供电,以便计算机可以读取它们。
最初,即使现在,设置也限制为每个验证 5 个驱动器,第 6 个端口是为 OS SSD 保留的。
我现在要做的是让提到的窗格与 8 个 USB-SATA 桥接器一起工作,以便可以在所有 PC 上使用,但之前的命令对我不再有帮助。
我运行它并得到以下输出:
../devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3.1/2-1.3.1:1.0/host94/target94:0:0/94:0:0:0/block/sdb
../devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3.3/2-1.3.3:1.0/host100/target100:0:0/100:0:0:0/block/sdc
我不能将usb2
其作为参考,因为它对于所有人来说都是相同的,并且主机(m)中的 m 是一个数字,每次插入或拔出 SSD 时它都会增加。
我想问的是:
- 我如何卸载和安装 USB-SATA 桥接器,以便它们可以将主机号重置为 0 或 1?
- 有没有更好的方法来动态地获得物理位置与虚拟位置的匹配,比如 sd(n) 与 host(m) 匹配?
- 我必须在终端中运行哪些命令才能获得更精确的物理逻辑匹配方法?
编辑:作为参考,当我第一次连接 SATA-USB 桥接器时,它们会以安装状态启动(即使没有连接 SSD),因此前面的命令给我以下输出:
../devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3.1/2-1.3.1:1.0/host103/target103:0:0/103:0:0:0/block/sdb
../devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3.2/2-1.3.2:1.0/host104/target104:0:0/104:0:0:0/block/sdc
../devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3.3/2-1.3.3:1.0/host105/target105:0:0/105:0:0:0/block/sdd
../devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3.4/2-1.3.4:1.0/host106/target106:0:0/106:0:0:0/block/sde
../devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4.1/2-1.4.1:1.0/host107/target107:0:0/107:0:0:0/block/sdf
../devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4.2/2-1.4.2:1.0/host108/target108:0:0/108:0:0:0/block/sdg
../devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4.3/2-1.4.3:1.0/host109/target109:0:0/109:0:0:0/block/sdh
../devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4.4/2-1.4.4:1.0/host110/target110:0:0/110:0:0:0/block/sdi
它们实际上看起来像是有序的,但如果我拔下并再次插入它们,有时会得到错误的顺序。