设备名称可以被认为是通往内核驱动程序的网关,该驱动程序控制设备,而不是设备本身。因此,可能存在多个设备名称,其中一些可能提供略微不同的特性,但都映射到同一个实际设备。
各种 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 还允许逻辑分区跨越多个块设备。 |