3.1. SCSI 地址

Linux 为 SCSI 设备采用了四级分层寻址方案

“Lun” 是逻辑单元号(Logical Unit Number)的常用 SCSI 缩写。括号中的术语是设备伪文件系统 (devfs) 使用的命名约定。“总线” 在以下描述中优先于 “通道” 使用。

SCSI 适配器编号通常是对计算机内部 IO 总线(例如 PCI、PCMCIA、ISA 等)上的适配器卡的任意编号。这些适配器有时被称为 HBA(主机总线适配器)。SCSI 适配器编号由内核按升序颁发,从 0 开始。

每个 HBA 可以控制一个或多个 SCSI 总线。各种类型的 SCSI 总线在 附录 A 中列出。

每个 SCSI 总线可以连接多个 SCSI 设备。在 SCSI 术语中,HBA 被称为“发起者(initiator)”,并占用一个 SCSI ID 号(通常为 7)。发起者 [1] 与目标设备(通常称为 SCSI 设备,例如磁盘)通信。在 SCSI 并行总线上,ID 的数量与宽度有关。8 位总线(有时称为“窄”)可以有 8 个 SCSI ID,其中 1 个被 HBA 占用,剩下 7 个用于 SCSI 设备。宽 SCSI 总线是 16 位宽,最多可以连接 15 个 SCSI 设备(目标设备)。SCSI 3 草案标准允许在 SCSI 总线上存在大量的 ID。

每个 SCSI 设备可以包含多个逻辑单元号(LUN)。这些通常用于支持多种介质的复杂磁带和 CD-ROM 设备。

因此,Linux 的 SCSI 寻址方式是一个四级层次结构

<scsi(_adapter_number), channel, id, lun>
使用 devfs 的命名约定,这变为
<host, bus, target, lun>

注释

[1]

SCSI 标准允许单个总线上存在多个发起者。这在 Linux 中没有得到很好的支持,尽管有一些补丁正在改进这种情况。