`
hz_chenwenbiao
  • 浏览: 994915 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

磁盘分区与文件系统(转)

阅读更多

一个磁盘是分成一个个扇区来存放信息,整个磁盘的第一个扇区是作为引导扇区(为方便下描述,这里给个名字:0号引导扇),称为”主引导纪录“,它存放引导指令和分区表。应该是除第一个扇区外的磁盘空间再划分为可使用的磁盘分区,即主分区和扩展分区,由0号引导扇,的空间有限,只能用64个字节记录磁盘分区(应该是分区的起止位置),所以最多只有四个分区,所以可以全是主分区(即可以用来装系统的分区),也可以有一个扩展分区(最多也只有一个,且它不能用来装系统),扩展分区是主分区分剩后的空间可为整个扩展分区空间,在扩展分区里再进行逻辑分区划分,这些逻辑分区是由链表串起来的,所以逻辑分区可以任分(还是受磁盘空间限制的)。每一个主分区上都有引导你操作系统的程序,所以在一个主分区上可以装N个操作系统,它们会记录到这个主分区的第一块磁盘空间去。BOIS加载0号引导扇,找出各主分区所在的位置,然后去加载主分区上登记的操作系统,这样就可以提示用户选择一个系统,然后CPU再跳转到系统所在地去加载它,并转交执行权给操作系统。


详细转:


 

 对于磁盘分区(又称为卷)与文件系统的定义,虽然多数人未必知道,但大致指的是什么也还是很清楚的,本文也并不想去讨论二者到底是什么,只是谈一谈它们之间的关系。

      在《硬盘是如何工作的》一文中我曾对硬盘做过一个简单的介绍,从中可以看出,无论你的系统磁盘有多少个分区,硬盘都始终只有一个,那么,磁盘分区从何而来?我们常说的主分区,扩展分区,逻辑分区之间到底有什么区别?分区与文件系统又有什么关系呢?

      我们知道,每一个计算机都只有一块硬盘(不像内存,可以同时使用多个内存条),而硬盘被分为许多个扇区,这些扇区之间按照0---MAX数值标号(按照从外到内的顺序),而分区则是在进行分区操作时指定从某个扇区到某个扇区之间为一个分区(由指定的分区大小决定),而文件系统就存在于分区之中(这就是为什么可用磁盘空间总是小于分出的空间了),而且,每个分区都有着各自独立的文件系统,于是,你可以将某些文件系统设为FAT-32,另一些则可设为NTFS(但文件系统受到操作系统的识别能力限制,如Linux系统下的ext格式Windows系统就无法识别)。

      而文件系统的重要性就在于,磁盘上的所有文件都是在文件系统内进行操作的,这就意味着,一旦磁盘上某些扇区没有被分配到某个分区,这一部分扇区将不可用,磁盘的可用容量就减小了。

      但凡事都有个例外:磁盘的0号扇区是不能属于任何分区的,因为0号扇区有着特殊的用途,一般,我们称0号扇区为“主引导纪录(即MBR)”,它是用于引导计算机启动的,在这个扇区的尾部还保存这分区表。分区表纪录了磁盘上每个分区的起始和终止地址。

      我们在安装系统时会发现,无论你怎样分区,都有且仅有一个分区被标明为活动分区(有时是系统分区,Windows 7下则可能是100MB的隐藏分区)。活动分区是否正常可以决定系统是否能正常启动,因为每次开机,BIOS读入内存后都会执行MBR中的指令,MBR要做的第一件事就是找到活动分区,然后读取它的第一个块(即引导块),引导块中的程序将装载该分区中的操作系统,从而实现系统的启动。

      不过,值得注意的是,在每一个分区中都是有一个引导块的,虽然某些分区中不一定有操作系统,但引导块还是被保留了下来,这就为我们的多系统提供了基础(当读入活动分区的引导块后,如果用户选择了其他分区中的系统,则会跳转到其他分区的引导块,从而启动指定的系统)。

      那么,活动分区、主分区、扩展分区和逻辑分区之间又有着怎样的联系与区别呢?

     事实上,早期的磁盘是没有主分区,扩展分区、逻辑分区这些概念的,所有的分区都相当于现在的主分区,当然了,任何一个达到装载系统大小的分区都可有资格作为活动分区(取决于系统到底装在哪个分区)。但矛盾还是存在的:在《硬盘是如何工作的》一文中我提过,每个扇区的经典大小是512字节,0号扇区当然也不例外了,但0号扇区需要存放引导指令和分区表。所以能够分配给分区表的大小就只有64字节了,但其中每个分区的参数都需要占到16字节,这就意味着每个磁盘只能分出4个分区(多分的话无法识别)。

      基于此矛盾,磁盘分区模式被更改,即主分区+扩展分区模式,主分区和扩展分区的区别在于:主分区是直接分出来的,它不能再继续分出其他分区,而扩展分区则是除主分区外的所有可用空间,它还可以被继续分出若干逻辑分区,而逻辑分区像主分区一样,不可再分。规定磁盘最多有一个扩展分区(可以没有)。这意味着我们可以拥有1---4个主分区。这样做的优势就在于,你可以仅分出一个主分区,另外的则全部是扩展分区,在扩展分区中尼可以分出任意多个逻辑分区。如此,对于我们用户而言,我们可以分出足够多的分区,但对计算机而言,它仍然认为我们仅分出了两个分区(一个主分区+一个扩展分区)。可见,扩展分区只是一个抽象概念,它不能直接使用,必须分出逻辑分区才能正常使用。

      现在,又可以解释一下我们在安装系统时遇到的一个问题了,我们以Windows 7为例,在安装Windows 7过程中对磁盘分区时,我们会发现100MB分区被视为主分区(也是活动分区),而由于我们在分区时都默认分成主分区,所以对于其他的空间,我们只能再分出三个分区来,现在应该明白这是为什么了吧。比较明智的做法是:安装系统时仅分出两个分区,装完后再将非系统分区继续细分(此时要求这个非系统分区为扩展分区,当然了,即使不是,我们仍然可用借助一些磁盘分区工具(支持Windows7的顶级磁盘分区工具----Acronis Disk Director Suite V10.0(基于2160架构)汉化注册版)将其转换为扩展分区,再分出若干逻辑分区)。

      分区问题应该讲得很清楚了,下面再来看看各个分区中都有些什么内容。

      前面已经讲过,每个分区中都有一个引导块,除此之外,还有超级块,空闲空间管理,i节点,根目录和文件和目录。

      超级块中含有分区中所有的关键参数,包括:确定文件系统类型用的魔数,文件系统中数据块的数量等。可想而知,系统每次启动或者该文件系统首次被使用时超级块都必须被读入内存的,否则该分区将无法正常使用。

     闲空间管理则含有该分区上所有还未被使用的空间的相关信息,一般以位图或链表的形式表示(用何种方式表示关系到文件操作简便与否及其响应速度,这里就不多讲了)。

      i节点i节点是一个数据结构数组,用于存储文件的各种信息(每个文件都有一个i节点),含有指向文件中数据所在块的指针(即决定了文件是否能够被正确读写),其优点在于进行文件操作时响应速度快,内存占用少。缺点在于有时无法容纳一个大文件的所有数据(i节点中数组所能表示的指针数量是有限的)。因此,并不是每一种文件系统都采用了i节点方案。

      至于根目录和文件及目录大家都懂是什么意思,就不用我多说了。

      讲到这里就顺便提一下微软的FAT-16、FAT-32和NTFS文件系统。

      FAT-16是MS-DOS的文件系统,使用16位磁盘地址,所以仅支持最大2GB的磁盘分区(这里应该是磁盘的地址是由两部分结合在一起的,如块内地址和块地址组成,那么块内地址和块地址大概占16位,这里可能是有一位拿来做标识位去了,所以组合成2GB,纯属个人理解,不对,请多多指教)。FAT-32则使用32位磁盘地址,最大支持2TB的磁盘分区。NTFS是专门为Windows NT开发的文件系统(windows NT技术首次比较完善的使用是在windows 95上)。使用64位磁盘地址,使用理论上最大支持2的64次方的磁盘分区。至于它们之间的具体区别,就不介绍了。

      讲了这么多,不知道大家理解了没有,相信只要稍加琢磨,是很容易理解的。

 

更多阅读:

逻辑分区

磁盘分区

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics