首先给大家看一下硬盘的最直接外观,如下图所示,这个想必大家也都见过了。它的结构为:盘片、机械手臂、磁头、主轴马达。
数据就写在盘片上,盘片的结构如下图:
它的内部结构,为扇区、柱面。其中在磁盘的第一个扇区是一个特殊的扇区,在其中记录两项重要信息:主引导分区(MBR),即可以安装引导加载程序的地址。分区表,整个磁盘的分区状态信息。简单来看如下图所示;
其中的数字表示表示柱面。图中P1~P4为主分区或扩展分区,我们假想整块磁盘的空间就是一个会场,那么MBR就是一个标志告诉我们会场大门在哪里,帮助我们进入会场,分区表就是会场的整体是怎么划分的。为了便于管理会场我们规定会场区域分为主分区、扩展分区和逻辑分区三种分区。扩展分区就是为了便于在有需要时可以扩展出分区来供我们使用,规定整个会场最多只有一个扩展分区,主分区和扩展分区最多4个,通过扩展分区扩展出来的分区就是逻辑分区了。当然扩展分区扩展出来的分区也需要有个表来记录整个扩展分区会场分布情况,就如同下图了。
我们windows磁盘一般分为c、d、e、f盘,其实还可以使任何一个除a、b外的其他字母,可是要注意也可以把某个盘(例如f盘)放到某个盘(例如c盘)的一个目录(c:/f盘)下边去,以后访问c:/f盘就是访问的f盘。要不然等盘符不够用了怎么办。在Linux中就把所有的分区都放到了/这个分区里了。
对于分区了解了那么下边就来了解一下Linux的文件系统吧,先放下一张图给大家一个直观感受。
其中的启动扇区(Boot Sector)它里面放的是引导转载的程序,系统运行需要从这里来引导进入。为了便于管理这么大的空间就将其分成了若干组,就如同我们学校会分学院一样。每个组中有:1、Data Block,这里面就分成了很多的小块,许多的文件就在这些小块中放着,我们称这些小块为block,2、inode table,这里面放的是信息是在指明那些文件放在了那些block中。3、inode
对应表,这里面的信息是在指明,inode table中还有那些空间没有被利用。4、块对应表,和inode对应表相似,只不过它是针对Data Block的。5、文件系统描述,用来指明该组在磁盘中的空间地址。6、超级块,它是针对inode table和Data Block的,指明空间利用的数量上的信息。如此一来就清楚了文件的存储方式了,文件在磁盘中是如何存储的,但是由于inode空间只有128bytes,那么指明文件的大小就很是有限,我们要存储一个大文件是如何实现的呢?!下边熟悉一下inode table的结构,如下图所示。
想必大家一看到图就明白了的差不多了,联系C语言中的指针来看大家就更加明白了,其实就是多级指针的关系;直接块直接指向文件;间接块指向了下一级指针,再指向文件;依次类推这样便成倍数的提高存放文件的大小了。
至此带大家从磁盘结构到文件系统进行了一番认识,希望大家可以从中有所收获,至少可以了解关于分区的关系,这是我们系统结构的一个基本知识,也希望大神们多多指教!!原文地址:http://blog.csdn.net/rcj183419/article/details/44994141