物理设备的命名规则

  在Linux 系统中一切都是文件,硬件设备也不例外。既然是文件,就必须有文件名称。系统内核中的udev 设备管理器会自动把硬件名称规范起来,目的是让用户通过设备文件的名字可以猜出设备大致的属性以及分区信息等;这对于陌生的设备来说特别方便。另外,udev设备管理器的服务会一直以守护进程的形式运行并侦听内核发出的信号来管理/dev 目录下的设备文件。Linux 系统中常见的硬件设备的文件名称如下表所示:

硬件设备 文件名称
IDE 设备 /dev/hd[a-d]
SCSI/SATA/U 盘 /dev/sd[a-p]
软驱 /dev/fd[0-1]
打印机 /dev/lp[0-15]
光驱 /dev/cdrom
鼠标 /dev/mouse
磁带机 /dev/st0 或/dev/ht0

  由于现在的IDE 设备已经很少见了,所以一般的硬盘设备都会是以/dev/sd开头的。而一台主机上可以有多块硬盘,因此系统采用a~p 来代表16 块不同的硬盘(默认从a 开始分配),而且硬盘的分区编号也很有讲究:

  主分区或扩展分区的编号从1 开始,到4 结束;
  逻辑分区从编号5 开始。

设备名称分区名称

  设备名称:
  /dev 目录sda 设备之所以是a,并不是由插槽决定的,而是由系统内核的识别顺序来决定的,而恰巧很多主板的插槽顺序就是系统内核的识别顺序,因此才会被命名为/dev/sda。大家以后在使用iSCSI 网络存储设备时就会发现,明明主板上第二个插槽是空着的,但系统却能识别到/dev/sdb 这个设备就是这个道理。

  分区名称:
  首先,分区的编号并不代表着分区的个数,比如sda3 表示这是设备上的第三个分区,这个是错误的。因为分区的数字编码不一定是强制顺延下来的,也有可能是手工指定的。因此sda3 只能表示是编号为3 的分区,而不能判断sda 设备上已经存在了3 个分区。

  在填了这两个之后,再来分析一下/dev/sda5 这个设备文件名称包含哪些信息,如下图所示:

物理设备的命名规则

  首先,/dev/目录中保存的应当是硬件设备文件;其次,sd 表示是存储设备;然后,a 表示系统中同类接口中第一个被识别到的设备,最后,5 表示这个设备是一个逻辑分区。一言以蔽之,/dev/sda5表示的就是这是系统中第一块被识别到的硬件设备中分区编号为5的逻辑分区的设备文件。接下来简单科普一下硬盘相关的知识。

  正是因为计算机有了硬盘设备,我们才可以在玩游戏的过程中或游戏通关之后随时存档,而不用每次重头开始。硬盘设备是由大量的扇区组成的,每个扇区的容量为512 字节。其中第一个扇区最重要,它里面保存着主引导记录分区表信息。就第一个扇区来讲,主引导记录需要占用446 字节,分区表为64 字节,结束符占用2 字节;其中分区表中每记录一个分区信息就需要16 字节,这样一来最多只有4 个分区信息可以写到第一个扇区中,这4 个分区就是4 个主分区。第一个扇区中的数据信息如下图所示:

物理设备的命名规则

  现在,问题来了——第一个扇区最多只能创建出4 个分区?于是为了解决分区个数不够的问题,可以将第一个扇区的分区表中16 字节(原本要写入主分区信息)的空间(称之为扩展分区)拿出来指向另外一个分区。也就是说,扩展分区其实并不是一个真正的分区,而更像是一个占用16 字节分区表空间的指针——一个指向另外一个分区的指针。这样一来,用户一般会选择使用3 个主分区1 个扩展分区的方法,然后在扩展分区中创建出数个逻辑分区,从而来满足多分区(大于4 个)的需求。主分区、扩展分区、逻辑分区可以像下图那样来规划:

物理设备的命名规则

所谓扩展分区,严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。