Linux就该这么学——物理设备的命名规则
引言
首先我们知道在Linux系统中一切都是文件,硬件设备也不例外.既然是文件,就必须有文件名称,在Linux系统内核中的udev设备管理器会自动把硬件名称规范起来,目的是让用户通过设备文件的名字可以猜出设备大致的属性以及分区信息等;这对于陌生的设备来说特别的方便.另外,udev设备管理器的服务会一直以守护进程的形式运行并侦听内核发出的信号来管理/dev目录下的设备文件
常见的硬件设备及其文件名称
硬件设备 |
文件名称 |
IDE设备 |
/dev/hd[a-d] |
SCSI设备 |
/dev/sd[a-d] |
软驱 |
/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 开始。
学习LINUX系统中硬件设备的几个误区
误区1:设备名称理解错误
比如:/dev/sda表示主板上第一个插槽上的存储设备
真相: /dev目录中sda设备之所以是a,并不是由插槽决定的,而是由系统内核的识别顺序来决定的,而恰巧很多主板的插槽顺序就是系统内核的识别顺序,因此才会被命名为/dev/sda。大家以后在使用 iSCSI 网络存储设备时就会发现,明明主板上第二个插槽是空着的,但系统却能识别到/dev/sdb这个设备就是这个道理。
误区2:对分区名称的理解错误
例子 : 分区的编号代表分区的个数
真相 : 因为分区的数字编码不一定是强制顺延下来的,也有可能是手工指定的。因此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个)的需求。当然,就目前来讲大家只要明白为什么主分区不能 超过4个就足够了。如下图硬盘分区的规划
注: 所谓扩展分区,严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。
小结一下
在本小节中我知道了,硬件的名称的管理,一般是由Linux系统中的udev设备管理器通过守护进程的形式运行并侦听内核发出的信号来管理/dev目录下的所有设备文件;而且还了解了常见的硬件设备及其文件名称,也明白了,对Linux系统设备名称的理解,不是按照插槽的顺序排下的,而是根据Linux系统内核识别的顺序进行排序的;二是对Linux系统中的硬件设备分区名称的理解,不是根据分区的编号代表分区的个数,是因为分区的数字编码不一定是强制顺延下来的,也有可能指定的.最后,也给我科普了关于计算机硬件分区的知识.
小试牛刀一下
例子:尝试解读/dev/sdb8的意思
/dev:表示存放硬件设备文件的目录
sd : 表示是SCSI设备(即存储设备)
b : 同类接口中第二个被识别到的设备
8 : 编号为8的逻辑分区
简而言之 : 这是系统中第二块被识别到的硬件设备中分区编号为8的逻辑分区的设备文件