设备命名规则

前言

存储设备的设备命名因操作系统而异,有时也因同一操作系统的不同版本而异。本页试图介绍作者编写的各种存储相关软件包的设备命名约定。其中一些包是特定于Linux的,而另一些包最初是为Linux编写的,然后移植到各种其他操作系统。
整个设备命名理念是遵循每个操作系统的设备命名约定,而不是试图遵循“一刀切”的命名约定。下面是支持的每个操作系统的部分。由于实用程序网页和手册页上的大多数示例都是针对Linux的,因此熟悉Linux存储设备命名约定可能有助于其他端口的用户。

1. Linux设备命名

普通的磁盘块设备有/dev/sda、/dev/sdb、/dev/sdc等名称。Linux中的SCSI磁盘一直有这样的名称,但在最近的Linux内核(例如lk 2.6系列)中,几乎所有磁盘都这样命名变得越来越常见。磁盘中的分区由设备名称后面的数字指定,从1开始(例如/dev/sda1)。
磁带驱动器名为/dev/st<num>或/dev/nst<num>,其中<num>从零开始。此外,该列表中的一个字母:“lma”可以附加在名称后面。CD、DVD和BD读卡器(和写入器)命名为/dev/sr,其中从零开始。使用较少的SCSI设备类型名称,dmesg和lsscsi命令可能有助于查找是否有连接到一个正在运行的系统。
还有一个SCSI设备驱动程序,它提供对SCSI设备的备用通用访问。它使用/dev/sg<num>形式的名称,其中<num>从零开始。lsscsi-g命令可能有助于查找这些以及哪个通用名称对应于设备类型名称(例如/dev/sg2可能对应于/dev/sda)。在lk2.6系列中,引入了一个块SCSI通用驱动程序,其名称的形式为/dev/bsg/<h:c:t:l>,其中h、c、t和l是数字。再次查看lsscsi命令,以查找该SCSI元组(即<h:c:t:l>)和备用设备名称之间的对应关系。
在Linux内核2.6系列之前,这些实用程序只能使用通用设备名称(例如/dev/sg1)。在Linux内核2.6系列的几乎所有情况下,这些实用程序都可以使用任何设备名称。

2. Windows设备命名

在Windows中,存储和相关设备可以有多个设备名称。卷名可能是最常见的(例如D:)。还有一个“类”设备名称,如PhysicalDrive、CDROM和TAPE 是一个从0开始的整数,随着设备的发现(有时还会重新发现)而按升序分配。
某些存储设备具有SCSI较低级别的设备名称,该名称以SCSI(伪)适配器名称开头,格式为SCSI<n>:。为此添加了以“总线”编号、“目标”标识符和“lun”(逻辑单元编号)形式的子寻址。“总线”编号也称为“PathId”。这些组件被组装成一个设备名称,其形式为:SCSI<n>:<bus>、<target>、<lun>。尾部的“,<lun>”可以省略,在这种情况下,假定lun为零。这个较低级别的设备名称通常不能直接使用,因为如果类驱动程序“声明”了该设备,Windows会阻止尝试使用它。有些SCSI设备类型(例如Automation/Drive接口类型)没有类驱动程序。至少有两种传输(Windows术语中的“总线类型”):USB和IEEE 1394没有这种形式的“scsi”设备名称。
根据DOS文件系统惯例,各种设备名称可以用大写、小写或混合大小写表示。由于PhysicalDrive编写起来很乏味,因此所有实用程序都允许使用PD的缩写形式。
单个设备(例如磁盘)可以有许多设备名称。例如:PD0也可以是C:、D:和SCSI0:0,1,0。这两个卷名反映磁盘上有两个分区。Windows无法识别的磁盘分区通常不会指定卷名。然而,Vista确实显示了一个磁盘的卷名,该磁盘没有可识别的分区,并且当选择时会邀请用户对其进行格式化(这可能对其他操作系统相当不友好)。
这些实用程序假定给定的设备名称在Win32设备命名空间中。为了明确起见,可以在本节中提到的设备名称前面加上“\.\”。注意反斜杠是类Unix shell和C编程语言中的转义符。在Msys(来自MinGW)这样的shell中,每个反斜杠可能需要键入两次。
sg3_utils包中的sg_scan实用程序以适合其他实用程序使用的形式列出Windows设备名称。请注意,不支持Windows 2000之前的Windows操作系统。

3. FreeBSD设备命名

SCSI磁盘的块名格式为/dev/da<num>,其中<num>是从零开始的整数。SCSI磁带驱动器的“da”替换为“sa”,SCSI cd/DVD BD驱动器的“cd”。每个SCSI设备都有一个相应的直通设备名称,格式为/dev/pass<num>,其中<num>是一个从零开始的整数。camcontrol devlist命令可能有助于找出哪些SCSI设备名称可用,以及类和传递名称之间的对应关系。

4. Solaris设备命名

/dev/目录下的SCSI设备名称的形式类似:c5t4d3s2,其中“c”后面的数字是控制器(HBA)编号,“t”后面的编号是目标编号(来自SCSI并行接口天数),“d”后面的号码是LUN。“s”后面是与分区相关的片号,按照惯例“s2”是整个磁盘。
OpenSolaris还有一个c5t4d3p2形式,其中“p”后面的数字是除“p0”之外的分区号,“p0是整个磁盘。因此,整个磁盘可以被称为c5t4d3、c5t4d3s2或c5t4d3p0。有关详细信息,请参阅本页。
这些设备名称在/dev/dsk和/dev/rdsk目录中重复。前者是块设备名称,后者用于sg3_utils所需的“原始”(或char设备)访问。因此,在OpenSolaris中,“sg_inq/dev/rdsk/c5t4d3p0”形式的东西应该可以工作。如果不起作用,则添加“-vvv”选项以获取更多调试信息。

5. 示例

支持的操作系统的存储设备名称的一些示例:

device classLinuxWindowsFreeBSDSolaris
hard disk/dev/sdaPD0、PhysicalDisk0/dev/da0/dev/rdsk/c5t4d3
hard disk partition/dev/sda1C:/dev/da0s1a/dev/rdsk/c5t4d3p0
CD/DVD/BD drive/dev/sr0、/dev/scd0CDROM0/dev/cd1/dev/rdsk/c5t4d2
tape drive/dev/st0mTAPE1/dev/sa2/dev/rmt/c5t4d1
pass-through/dev/sg0、/dev/bsg/1:0:0:0SCSI0:0,1,0/dev/pass0/dev/scsi/c5t4d3

一些操作系统允许使用直通接口将SCSI命令直接发送到类设备名称。在Linux中,lk 2.6系列就是这样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值