各硬件设备在Linux中的文件名、磁盘分区

在Linux系统中,每个设备都被当做一个文件来对待,几乎所有的硬件设备文件都在/dev这个目录内。

1、以下列举几个典型设备的文件名:

设备 设备在Linux内的文件名
IDE硬盘 /dev/hd[a-d]
SCSI/STAT/USB硬盘 /dev/sd[a-p]
U盘 dev/sd[a-p] (与STAT相同)
软驱 dev/fd[0-1]
打印机 25针: /dev/lp[0-2] USB: /dev/usb/lp[0-15]
鼠标 PS2: /dev/psaux USB: /dev/usb/mouse[0-15]
当前CD ROM/DVD ROM /dev/cdrom
当前鼠标 /dev/mouse

需要特别留意的是(IDE、SCSI、USB都一样),每个磁盘驱动器的磁盘分区(partition)不同时,其磁盘文件名还会改变。

2、磁盘分区

2.1常见磁盘接口及命名

常见磁盘接口有两种:IDE接口和SATA接口,目前主流是SATA接口。以IDE接口来说,一个IDE扁平线缆可以连接2个IDE设备(分别为Master主设备和从设备Slave),一台主机都会提供2个IDE接口(IDE1、IDE2),所以一台主机最多可以连接4个IDE设备。一台主机的IDE接口命名如下:

IDE接口 Master(主设备) Slave(从设备)
IDE1 /dev/hda /dev/hdb
IDE2 /dev/hdc /dev/hdd

2.2磁盘组成

磁盘主要由盘片、机械手臂、磁头与主轴马达组成:
磁盘面:磁盘是由一叠磁盘面组成;
磁头(Heads):每个磁头对应一个磁盘面,负责该磁盘面上的数据的读写;
磁道(Track):每个盘面会围绕圆心划分出多个同心圆圈,每个圆圈叫做一个磁道;
柱面(Cylinders):所有盘片上的同一位置的磁道组成的立体叫做一个柱面;
扇区(Sector):以磁道为单位管理磁盘仍然太大,所以计算机前辈们又把每个磁道划分出了多个扇区,每个扇区为512bytes
磁盘组成 图1

2.3主引导分区和分区表

每个盘片可分成N个扇区,但是第一块扇区特别重要,它主要记录了两个主要信息,分别是:
主引导分区(Master Boot Record, MBR):可以安装引导加载程序的地方,有446bytes;
分区表(partition table): 记录整块磁盘分区的状态,有64bytes;
主引导分区(MBR)很重要,因为当系统开机的时候会主动去读取这个区域内容,这样系统才会知道你的程序放在哪里,且该如何开机;
分区表的64bytes中,总共分为4组记录区(最多容纳4个分区),每组记录去都记录了该区段的起始和结束的柱面号码,这4个分区被分为主(Primary)或扩展分区(Extended)。
1、其实所谓的“分区”只是针对那64个字节的分区表进行设置;
2、硬盘默认的分区表只能写入4组分区;
3、这4组分区我们成为主(primary)或者(Extended)分区,4个分区的文件名为/dev/hda1 、/dev/hda2、/dev/hda3、/dev/hda4;
4、分区的最小单位为“柱面”;

2.4逻辑分区

虽然从上面看出一块硬盘貌似只能分4个区,但实际上我们再Windows或者Linux下可以分出更多区,这是为什么?因为我们可以利用扩展分区来继续分区,扩展分区的目的就是使用额外的扇区来记录分区信息,扩展分区不能被拿来格式化,因为扩展分区被破坏,所有的逻辑分区将会被删除
例如:一块硬盘有400个柱面,我们把其中1-100分为第一个分区P1,也是主分区,101-400分到P2,也就是扩展分区,扩展分区可以随意有我们来继续分区,这样分出来的分区被称为逻辑分区,比如我们可以将101-160分为L1,161-220分为L2,221-280分为L3,281-340分为L4,341-400分为L5,那么我们有6个分区,这6个分区名称为:
P1: /dev/hda1
P2: /dev/hda2
L1: /dev/hda5
L2: /dev/hda6
L3: /dev/hda7
L4: /dev/hda8
L5: /dev/hda9
注意:没有hda3和hda4是因为hda[1-4]留给磁盘默认的四个分区了,这里我们值分出了2个分区P1和P2,所以1、hda3和hda4被空出来,因此逻辑分区名称是直接从hda5开始。
2、主分区和扩展分区最多可以有4个(硬盘限制);
3、扩展分区最多只能有1个(操作系统限制);
4、逻辑分区是有扩展分区继续切割出来的分区;
5、能够被格式化后作为数据访问的分区为主分区与逻辑分区,扩展分区无法被格式化;
6、逻辑分区的数量依据操作系统而不同,在Linux中IDE硬盘最多有59个逻辑分区(5-63号),SATA硬盘则有11个逻辑分区(5-15);

你可能感兴趣的:(Linux编程基础)