为什么连接到同一个 HBA 端口的物理磁盘可能有不同的路径?

Why physical disk connected to the same HBA port may have different paths?

我是 Linux 的新手 你能帮帮我吗?

我在 /dev/sda 上连接了磁盘,在 /dev/sdb 上连接了另一个磁盘 当我在 /dev/sda 上弹出磁盘并加载和扫描(通过 echo "- - -" > /sys/class/scsi_host/host6/scan)时,它的路径再次变为 /dev/sdc 但具有相同的磁盘序列号

为什么连接到同一个 HBA 端口的物理磁盘可能有不同的路径,例如 /dev/sda 或 Ubuntu 上的 /dev/sdc,即使 /dev/sda 未被使用?

您会发现有一小段时间设备路径未被重用。很可能,如果您再次弹出驱动器,加载它并重新扫描 scsi 总线,驱动器将变为 /dev/sda。但是,请相信我,即使此顺序似乎保持不变,它也可能会在您最意想不到的时候发生变化。

您会看到此站点和互联网论坛上一遍又一遍地重复:永远不要依赖 Linux 的设备路径分配。

相反,当您必须引用特定设备时,请使用 udev/dev/disk/by-id 或有时 /dev/disk/by-path 中生成的路径。在 /dev/disk/by-id 中,您会发现来自驱动器识别信息(供应商、型号和 WWN)的符号链接从引导到引导都保持不变,并且不依赖于它们插入的 HBA 端口:

lrwxrwxrwx. 1 root root  9 Sep  8 07:45 ata-Samsung_SSD_850_PRO_512GB_S250NXAGB14452L -> ../../sdb
lrwxrwxrwx. 1 root root  9 Sep  8 07:45 ata-Samsung_SSD_850_PRO_512GB_S250NXAGB14461T -> ../../sdd
lrwxrwxrwx. 1 root root  9 Sep  8 07:45 ata-Samsung_SSD_850_PRO_512GB_S250NXAGB14444R -> ../../sde

如果您需要 HBA 端口表示,通常可以从 /dev/disk/by-path 中的条目对其进行解码,因为此处的 SCSI host:bus:target:lun 地址显示在路径中:

lrwxrwxrwx. 1 root root   9 Sep  8 07:45 pci-0000:00:1f.2-ata-1.0 -> ../../sda
lrwxrwxrwx. 1 root root   9 Sep  8 07:45 pci-0000:05:00.0-scsi-0:0:8:0 -> ../../sdb
lrwxrwxrwx. 1 root root   9 Sep  8 07:45 pci-0000:05:00.0-scsi-0:0:12:0 -> ../../sdd
lrwxrwxrwx. 1 root root   9 Sep  8 07:45 pci-0000:05:00.0-scsi-0:0:15:0 -> ../../sde
lrwxrwxrwx. 1 root root   9 Sep  8 07:45 pci-0000:05:00.0-scsi-0:0:10:0 -> ../../sdc