我想检测磁盘是否连接到正确的 SATA 端口。虽然 lsscsi 为我提供了一些有关所用主机的有用信息,但我想知道 SCSI 主机号是否始终保持不变:
[0:0:0:0] disk ATA 2.5" SATA SSD 3M P130 /dev/sda
[1:0:0:0] disk ATA 2.5" SATA SSD 3M P130 /dev/sdb
[4:0:0:0] disk ATA SATADOM D150SV-L 1209 /dev/sdc
一个小测试表明,重新启动系统或移除其中一个磁盘都不会影响其他主机号。此外,我在以下位置发现了以下内容:http://www.tldp.org/HOWTO/SCSI-2.4-HOWTO/scsiaddr.html:
SCSI 适配器编号通常是计算机内部 IO 总线(例如 PCI、PCMCIA、ISA 等)上的适配卡的任意编号。[...] SCSI 适配器编号由内核以从 0 开始的升序发出。
两者结合起来让我假设 SCSI 主机号在系统上应该始终保持不变,因为总线始终以相同的方式枚举?这是正确的吗?
更新:似乎连接 ATA 直通(ATP)设备可以更改所有设备的主机号。
答案1
我永远不会依赖 HCTL 数字保持稳定。主机可能会因添加新主机或检测新设备而发生变化,这将暴露出在此之前未使用的新主机。内核的时间可能略有不同,这会导致以不同的顺序检测不同的主机,并且每次重新插入时,被移除和重新插入的设备可能会获得不同的目标数字。
这些值仅作为临时标识有意义,但不能用于持久引用。