3.2. 设备名称

设备名称可以被认为是通往内核驱动程序的网关,该驱动程序控制设备,而不是设备本身。因此,可能存在多个设备名称,其中一些可能提供略微不同的特性,但都映射到同一个实际设备。

各种 SCSI 设备的设备名称位于/dev目录中。传统上,在 Linux 中,SCSI 设备是通过它们的主设备号和次设备号而不是它们的 SCSI 总线地址(例如 SCSI 目标 ID 和 LUN)来识别的。设备伪文件系统 (devfs) 摒弃了主设备号和次设备号方案,对于 SCSI 子系统,它使用基于 SCSI 总线地址的设备名称 [稍后在 第 3.3 节 中讨论,并参阅参考文献:W5]。或者,有一个名为 scsidev 的实用程序,它在 Linux SCSI 子系统的范围内解决了这个问题,因此不像 devfs 那样具有系统范围的影响。Scsidev 将在稍后的 第 3.4 节 和参考文献:W6 中讨论。

为 SCSI 磁盘保留了八个块主设备号:8、65、66、67、68、69、70 和 71。每个主设备号可以容纳 256 个次设备号,对于 SCSI 磁盘,它们细分如下

[b,8,0]    /dev/sda
[b,8,1]    /dev/sda1
....
[b,8,15]   /dev/sda15
[b,8,16]   /dev/sdb
[b,8,17]   /dev/sdb1
....
[b,8,255]  /dev/sdp15

没有尾随数字的磁盘设备名称指的是整个磁盘(例如/dev/sda),而带有尾随数字的磁盘设备名称指的是该磁盘中 15 个允许的分区之一 [1]

剩余的 7 个 SCSI 磁盘块主设备号遵循类似的模式

[b,65,0]   /dev/sdq
[b,65,1]   /dev/sdq1
....
[b,65,159] /dev/sdz15
[b,65,160] /dev/sdaa
[b,65,161] /dev/sdaa1
....
[b,65,255] /dev/sdaf15
[b,66,0]   /dev/sdag
[b,66,1]   /dev/sdag1
....
[b,66,255] /dev/sdav15
....
[b,71,255] /dev/sddx15

因此,可能有 128 个磁盘(即/dev/sda/dev/sddx),每个磁盘最多有 15 个分区。相比之下,IDE 子系统允许 20 个磁盘(10 个控制器,每个控制器有 1 个主盘和 1 个从盘),每个磁盘最多可以有 63 个分区。

SCSI CD-ROM 设备分配的块主设备号为 11。传统上sr一直是设备名称,但是scd可能更易于识别,并且受到最近几个发行版的青睐。允许 256 个 SCSI CD-ROM 设备

[b,11,0]   /dev/scd0          [or /dev/sr0]
[b,11,255] /dev/scd255        [or /dev/sr255]

SCSI 磁带设备分配的字符主设备号为 9。最多支持 32 个磁带设备,每个设备都可以在四种模式(0、1、2 和 3)之一中访问,带或不带倒带。设备的分配方式如下

[c,9,0]    /dev/st0     [tape 0, mode 0, rewind]
[c,9,1]    /dev/st1     [tape 1, mode 0, rewind]
....
[c,9,31]   /dev/st31    [tape 31, mode 0, rewind]
[c,9,32]   /dev/st0l    [tape 0, mode 1, rewind]
....
[c,9,63]   /dev/st31l   [tape 31, mode 1, rewind]
[c,9,64]   /dev/st0m    [tape 0, mode 2, rewind]
....
[c,9,96]   /dev/st0a    [tape 0, mode 3, rewind]
....
[c,9,127]  /dev/st31a   [tape 31, mode 3, rewind]
[c,9,128]  /dev/nst0    [tape 0, mode 0, no rewind]
....
[c,9,160]  /dev/nst0l   [tape 0, mode 1, no rewind]
....
[c,9,192]  /dev/nst0m   [tape 0, mode 2, no rewind]
....
[c,9,224]  /dev/nst0a   [tape 0, mode 3, no rewind]
....
[c,9,255]  /dev/nst31a  [tape 31, mode 3, no rewind]

SCSI 通用 (sg) 设备分配的字符主设备号为 21。可能有 256 个 SCSI 通用 (sg) 设备

[c,21,0]   /dev/sg0
[c,21,1]   /dev/sg1
....
[c,21,255] /dev/sg255

请注意,SCSI 通用设备名称使用尾随字母(例如/dev/sgc)已被弃用。

每个 SCSI 磁盘(但不是每个分区)、每个 SCSI CD-ROM 和每个 SCSI 磁带都映射到一个 sg 设备。不属于这三类别的 SCSI 设备(例如扫描仪)也显示为 sg 设备。

伪设备 [请参阅 第 10.1 节] 可能会导致通常不被视为 SCSI 的设备显示为 SCSI 设备名称。例如,ATAPI CD-ROM 可能会被 ide-scsi 伪驱动程序拾取并映射到/dev/scd0 .

linux/Documentation/devices.txt文件是内核源代码中提供的文件,是 Linux 设备名称及其相应的主设备号和次设备号分配的权威参考。

注释

[1]

如果 15 个分区太有限,则可以考虑逻辑卷管理器 (LVM)。请参阅/usr/src/linux/Documentation/LVM-HOWTO。LVM 还允许逻辑分区跨越多个块设备。