Linux 如何确定磁盘的 SCSI 地址?

Chr*_*ars 8 linux drivers kernel scsi vmware-esx

你好,

我在 VMware ESX 4 下使用 RHEL 5.5 来宾 VM。当我在 VM 硬件设置中配置虚拟磁盘时,每个磁盘都有一个格式为“N:M”的 SCSI 地址。例如,“1:3”表示 SCSI 主机号 1 和 SCSI 目标 ID 3。

当我从 VM 的 BIOS 或 Windows 操作系统查看磁盘信息时,检测到的 SCSI 地址信息与虚拟硬件设置相匹配。但是在 Linux 下,SCSI 地址组件不匹配,至少不完全或一致。

我已经尝试了三种支持的虚拟 SCSI 和 SAS 驱动程序,它们似乎都“坏了”,但方式不同。下面是虚拟硬件地址的列表,以及在 Linux 下检测到的每个驱动程序的地址:

Driver    vHW Addr  Linux Addr
--------  --------  ----------
LSI SAS   0:0       0:0
LSI SAS   0:3       0:1
LSI SAS   0:6       0:2
LSI SCSI  1:1       2:1
LSI SCSI  1:4       2:4
LSI SCSI  1:7       2:7
pvSCSI    2:2       1:2
pvSCSI    2:5       1:5
pvSCSI    2:8       1:8
Run Code Online (Sandbox Code Playgroud)

我的主要问题是为什么在 Linux 下会发生这种情况?下一个问题是:我如何修复它或自己修复它?

如果我要猜测,我会说这是内核如何分发 SCSI 主机编号以及 Linux SCSI 驱动程序(包含在 VMware 工具中)如何检测 SCSI 目标编号的问题。也许驱动程序的加载顺序也与问题有关。我猜这不会涉及 udev,但我可能是错的。

任何想法将不胜感激。谢谢!

附注。我的环境是 VMware,但我不需要专门针对这些驱动程序的答案。我想这可能是 Linux 下任何 SCSI 驱动程序的问题。

Mik*_*eyB 4

Linux 实际上是一致且正确的,只是不一定按照您期望的方式。

LSI SAS:SAS 地址是 WWN,并根据它们出现的顺序分配类似 SCSI 的 ID。(这是一个简化,但可以。为什么会有间隙?)

LSI SCSI 和 pvSCSI:SCSI 主机编号仅与内核加载主机适配器驱动程序的顺序相关,与 VMWare 分配的编号无关。如果您喜欢以其他顺序查看它们,请切换驱动程序加载顺序。最有可能的是,在 /etc/modprobe.conf 中切换它们的编号并重新启动。