整理自《鸟哥的Linux私房菜》,整理者:华科小涛http://www.cnblogs.com/hust-ghtao/
我们都知道一块磁盘是可以被分成多个分区(partition)的,以Windows观点来看,你可能会有一块磁盘并且将它分区成C,D,E盘。那个C,D,E就是分区。但是Linux的设备都是以文件形式存在,那么分区的文件名又是什么?如何进行磁盘分区,磁盘分区有哪些限制?
1. 磁盘的连接方式与设备文件名的关系
个人计算机常见的磁盘接口有两种,分别是IDE接口和SATA接口,目前主流的已经是SATA接口了。我们称可连接到IDE接口的设备成为IDE设备,不管是磁盘还是光盘。
以IDE接口来说,主机会提供两个IDE接口,每个接口连接两个设备,所以最多可以连接到4个设备。每个接口的IDE设备又有Master和Slave之分。4个设备的文件名如表所示。
再以SATA接口来说,由于SATA/USB/SCSIA等磁盘接口都是使用SCSI模块来驱动的,因此这些接口的磁盘设备文件名都是使用SCSI模块来驱动的,因此这些接口的磁盘设备文件名都是/dev/sd[a-p]的格式。但是与IDE接口不同的是,SATA/USB接口的磁盘设备文件名根本就没有一定的顺序,顺序是由Linux内核检测到磁盘的顺序决定的。
2. 磁盘的组成
磁盘的组成主要有:
- #圆形的盘片(主要记录数据的部分);
- #机械手臂与机械手臂上的磁头(可读写盘片上的数据);
- #主轴马达,可以转动盘片,让机械手臂的磁头在盘片上读写数据。
而盘片的组成:
- $扇区为最小的物理存储单位,每个扇区512B;
- $将扇区组成一个园,那就是柱面,柱面是分区的最小单位;
- $第一个扇区最重要,有硬盘主引导记录MBR和分区表,其中MBR446B,分区表64B。
各种接口的磁盘在Linux中的文件名分别是:
- /dev/sd[a-p][1-15]:表示SCSI,SATA,USB,Flash等接口的磁盘文件名。
- /dev/hd[a-d][1-63]:为IDE接口的磁盘文件名。
3.磁盘分区表
那磁盘是怎么分区的呢,总不能拿锯子来割吧!柱面是文件系统的最小单位,也是分区的最小单位,我们就利用参考柱面号码的方式来进行分区。其实分区的本质就是:在分区表设置每个区的起始柱面和结束柱面号码。
在分区表所在的64B容量中,总共分为4组记录区,每个记录区记录了对应分区的起始柱面和结束柱面的号码。若将硬盘以长条形式来看,然后将柱面以柱形图来看,那么64B的记录区段如图所示:
假设上面的硬盘设备文件名为/dev/hda时,那么这4个分区在Linux系统中的设备文件名如下所示,文件名后面会再接一个数字,这个数字与分区的位置有关。
-
P1:/dev/hda1
-
P2:/dev/hda2
-
P3:/dev/hda3
-
p4:/dev/hda4
由于分区表只有64B,最多只能容纳4个分区,这4个分区被称为主分区或扩展分区。
总结一下:
-
其实所谓的分区,只是针对那64B的分区表进行设置而已。
-
硬盘的默认分区表仅能写入4组分区信息。
-
这4组分区信息我们称为主或扩展分区。
-
分区的最小单位是柱面。
-
当系统要写入磁盘时,一定要参考磁盘分区表,才能针对某个分区进行数据的处理。
上面我们介绍了分区的基本知识,让我们回头想下,为什么要分区?
-
数据的安全性。不同分区使不同类型的数据隔离,既保证数据安全也便于管理。
-
系统的性能。由于分区将数据集中在某个柱面的区段,由于数据集中了将有助于数据读取的速度与性能。