学习计算机科学与技术专业,喜欢计算机,喜欢linux,喜欢编程
分类: linux
2013-06-14 15:05:30
1、硬盘的结构
硬盘主要由磁头、磁道、扇区和柱面组成。通过磁头、磁道、扇区和柱面我们能计算出这个磁盘的容量大小。
我们现在用字母 c 表示磁盘的容量,n 表示存储信息的柱面,k 表示柱面上的磁道数,s 表示每一磁道上的扇区数,b 表示每个扇区可存储的字节数。(目前磁盘中每一个扇区的字节数 b = 512 )
c = n × k × s × b
2、扩展分区和逻辑分区
首先,我们来说一下主分区和逻辑分区。主分区又可以成为是系统分区,因为它是用来安装操作系统的,一般情况下。windows系统安装在主分区下,linux可以安装在主分区或者扩展分区中。下图是扩展分区和逻辑分区的关系图:
这个图的蓝色线条是扩展分区,红色线条是逻辑分区。
当然了,从图中我们可以看出扩展分区包含逻辑分区,许多逻辑分区组成扩展分区。(在windows中的 d、e、f盘 就是逻辑分区)
这里我们可以看出每个逻辑分区都包含mbr(mbr在下面会讲到)和实际分区(图中的逻辑分区1)通过mbr我们可以找到当前的逻辑分区1的位置和下一个逻辑分区的mbr(后面的以此类推)。就相当于链表,也有链表的优点——可以一直扩展下去
理论上逻辑分区的数量没有限制,也就是说我可以分无限多个逻辑分区。
3、简单介绍mbr
有一点得申明的是——mbr是硬盘的分区体系。类似的分区体系还有gpt体系......
mbr 的内容是在安装系统的时候修改的。因为我的分区表的建立是要根据操作系统的分区状况来进行初始化的(例如该操作系统是装在主分区还是扩展分区中等等)。
在mbr分区体系下
扩展分区 主分区 <= 4 && 扩展分区 <= 1
(问什么呢?后面再解释 )
mbr分区体系将硬盘分为主分区和扩展分区。原因是只有主分区和扩展分区的内容才会被写入mbr中。其实扩展分区也可以看做是一个特殊的主分区。我个人认为它的出现为多分区多系统的实现提供了一种可能,我可以将我的linux或者其他系统安装在扩展分区中的逻辑分区上。
在linux下我写了一个c程序来读取mbr里的内容,由于篇幅的限制,那个c代码在我的下一篇博客中(分区体系与文件系统——分区体系(中)) 。
这个截图是那个程序打印mbr的一部分。
首先,我们先了解一下mbr的结构:
mbr在磁盘中的第0柱面、0磁道、1扇区的512个字节中(其实mbr占用了磁盘的前63个扇区,她只用第一个扇区记录mbr,剩余的62个扇区空着,应该是为了以后的扩展用的)
其中主引导记录占446个字节,分区表共占64个字节,剩下的2个字节是固定字符55aa(是分区表的结束标志)。
现在我主要介绍一下那个 64 字节的分区表。
我们必须用16个字节来表示分区的内容。
第 1 个字节是引导标志 (80表示活动分区,00表示非活动分区 )。
第 2、3、4字节表示本分区起始磁头号、扇区号、柱面号。
第 5 字节表示分区类型符(0f表示扩展分区,07表示ntfs分区,83表示linux分区 )。
第 6、7、8字节表示本分区结束磁头号、扇区号、柱面号。
第 9、10、11、12字节表示本分区之前已用扇区数 。
第 13、14、15、16字节表示本分区的总扇区数。
主分区 扩展分区 <= 4 的原因就是 64 / 16 = 4(分区表只有 4 项 )回答了上面的问题
对了,我在这里提一下gpt体系,它的分区表只受操作系统限制,我的操作系统支持多少个主分区它就能分多少个主分区。(windows操作系统目前支持最多 128 个主分区,所以如果有人分超过 4 个主分区的话,那他的分区体系应该不是mbr,可能是gpt体系 )
mbr用第 13、14、15、16 这 4 个字节表示本分区的总扇区数,所以 mbr 体系最多能表示 2 的 32 次方个扇区,每个扇区是 512 个字节,即 2^32 × 512 = 2tb。mbr 体系能表示磁盘的最大容量是 2tb,如果超出了这个范围分区的结束位置就无法表示了。——这应该是 mbr 分区体系的局限性了。