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

Posted

技术标签:

【中文标题】为啥连接到同一个 HBA 端口的物理磁盘可能有不同的路径?【英文标题】:Why physical disk connected to the same HBA port may have different paths?为什么连接到同一个 HBA 端口的物理磁盘可能有不同的路径? 【发布时间】:2021-11-06 10:04:14 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

您会发现有一段短暂的时间没有重复使用设备路径。很可能,如果您再次弹出驱动器、加载它并重新扫描 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

【讨论】:

以上是关于为啥连接到同一个 HBA 端口的物理磁盘可能有不同的路径?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 Heroku Discord 机器人无法连接到端口后崩溃? [复制]

连接到 Redshift 集群时出错 - Npgsql.PostgresException: 28000: no pg_hba.conf entry for host

荣耀v9连接到电脑后无法读取手机盘?为啥?

如何找到 /dev/console 连接到的物理设备?

致命:主机“::1”没有 pg_hba.conf 条目试图通过 ssh 隧道连接到 postgresql 服务器

Confluence 6 PostgreSQL 问题解决