Chapter 3. Names and Addresses

Table of Contents

SCSI Addressing
Device Names
Device Names in devfs
Device Names in scsidev

This section covers the various naming schemes that exist in Linux and the SCSI worlds and how they interact.

SCSI Addressing

Linux has a four level hierarchical addressing scheme for SCSI devices:

  • SCSI adapter number [host]

  • channel number [bus]

  • id number [target]

  • lun [lun]

"Lun" is the common SCSI abbreviation of Logical Unit Number. The terms in brackets are the name conventions used by device pseudo file system (devfs). "Bus" is used in preference to "channel" in the description below.

The SCSI adapter number is typically an arbitrary numbering of the adapter cards on the internal IO buses (e.g. PCI, PCMCIA, ISA etc) of the computer. Such adapters are sometimes termed as HBAs (host bus adapters). SCSI adapter numbers are issued by the kernel in ascending order starting with 0.

Each HBA may control one or more SCSI buses. The various types of SCSI buses are listed in Appendix A.

Each SCSI bus can have multiple SCSI devices connected to it. In SCSI parlance the HBA is called the "initiator" and takes up one SCSI id number (typically 7). The initiator [1] talks to targets which are commonly known as SCSI devices (e.g. disks). On SCSI parallel buses the number of ids is related to the width. 8 bit buses (sometimes called "narrow") can have 8 SCSI ids of which 1 is taken by the HBA leaving 7 for SCSI devices. Wide SCSI buses are 16 bits wide and can have a maximum of 15 SCSI devices (targets) attached. The SCSI 3 draft standard allows a large number of ids to be present on a SCSI bus.

Each SCSI device can contain multiple Logical Unit Numbers (LUNs). These are typically used by sophisticated tape and cdrom units that support multiple media.

So Linux's flavour of SCSI addressing is a four level hierarchy:

<scsi(_adapter_number), channel, id, lun>

Using the naming conventions of devfs this becomes:

<host, bus, target, lun>



[1] SCSI standards allow for multiple initiators to be present on a single bus. This is not well supported in Linux although there are patches around that improve this situation.