|
|
当前硬盘技术以超乎想象的速度在飞速发展,1TB以上容量的硬盘已经上市,用不了多久我们就可以看到4TB的硬盘上市了,由于目前的分区定义仅用了四个字节来表示分区的扇区容量和保留扇区容量,四个字节最大可以表示2TB大小的分区,也就是说按现在的分区定义,最大可以支持到4TB的硬盘,再往后硬盘分区该如何定义呢?这是摆在我们面前的一个迫在眉睫的问题,不知国际上是否已经解决了这个问题,但至少到目前为止,我还未了解到这方面的具体消息。
昨天闲来无事,突发奇想,想出了一个在原来定义的分区结构上扩展的方法,可以解决当前分区技术面临的瓶颈,该方法不需要增加原来定义的16字节分区表项的空间,与原分区结构可以向前兼容,要改动的地方也不多,自认为是一个比较容易实现的方法,可以将目前的分区容量扩大16065倍,即由4TB扩大到64260TB,若硬盘的发展也遵循摩尔定律,这样做就可以再延续20年左右,要知道PC从1988年至今也就是20年左右的光景,相比之下,这个延续时间还是很可观的。那么这个设想到底如何呢?请继续看我下面的讲解。
为了叙述的方便,也为了让大家理解,首先在此介绍一下分区表项的结构。我们知道,在主引导扇区和扩展分区链表的扇区上,从扇区1BEh偏移处开始,到1FDh偏移处结束,定义了四个分区表项,每个表项由16个字节组成,共40h(64)个字节,主引导扇的四个表项,都可以用来进行分区使用,而扩展分区的四个表项,在进行扩展分区设置时,最多只使用到前两个表项,扩展分区表项的结构和定义与主引导扇表项的定义是一致的。
分区表项的定义:
偏移 定义
0 活动分区标志(80=活动分区,0=非活动,不允许出现两个以上表项同时具有活动标志的情况)
1 分区起始磁头号
2-3 分区起始扇区号和柱面号组合
4 分区属性ID号(06h-FAT16、07h-NTFS、0Bh- <8G的FAT32、0Ch- >8G的FAT32、05h- <8G的扩展分区、0Fh- >8G的扩展分区......)
5 分区终止磁头号
6-7 分区终止扇区号和柱面号组合
8-11 分区保留扇区数
12-15 分区使用扇区数
扇区和柱面组合的定义:
偏移2-3和6-7处的2个字节,都是用来表示扇区和柱面组合的,其定义如下:用低字节的低6位(0-5位)表示扇区号,由于扇区是从1开始编号的,6位最大可表示3Fh=63个扇区。用低字节的高两位(6-7位),组合在高字节0-7位的前面,即8-9位的位置上,与高字节组合成10位二进制数来表示柱面号,最大柱面号是3FFh=1023,柱面是从0开始编号的,因此0-1023可以表示1024个柱面。
较早以前,硬盘的磁头数定义不超过16个,即磁头号只使用低4位表示,因此,磁盘容量被限制在63X1024X16/2/1024=504MB以内。随着硬盘容量的增大,人们又修改了定义,允许使用全部8位表示磁头号,磁头是从0开始编号的,0-255可以表示256个磁头,此时的磁盘容量最大达到63X1024X256/2/1024=8064MB,虽然支持的硬盘容量加大了,但这也使CHS(柱面/磁头/扇区)表示法走到了尽头。后来为了适应更大容量的硬盘,国际上又定义了LBA分区表示法,此表示法向前兼容以往的CHS表示法,这种LBA分区表示法在1、5偏移处填写硬盘的最大磁头号,在2-3、6-7偏移处填写FFFFh,以此来表示该分区表项遵循LBA分区寻址方式,分区寻址依据8-11和12-15记录的扇区数来计算并寻找分区,由于四个字节可以表示FFFFFFFFh=4294967295/2/1024/1024=2048GB的容量值,这样就可以在2TB内自由分区,分区达到2TB后,还可以在这2TB分区后再分一个最大为2TB的分区,从而使LBA表示法最大可以支持到4TB容量的硬盘,只是后面的2TB分区比较大,该分区可以小于2TB,但不可以拆分。
前面我们讲到了硬盘分区定义发展的三个阶段,那么在硬盘达到4TB以上又该如何分区呢?能否仍然兼容原有的16字节分区表项呢?我认为是有可能做到的,其方法如下所述:
1、增大容量
首先我们可以将8-11和12-15的扇区数表示法,改为柱面数表示法,这样就可以使表示的容量增大63X255=16065倍,也就是说这种表示法可以支持32130TB可自由分区容量和64260TB最大分区容量。
2、识别方法
对柱面表示法的识别,可以用将2-3和6-7处的扇区号和柱面号清零来表达,1、5处的磁头号置为最大磁头号,当系统遇到有磁头号参数,而扇区号和柱面号组合为零的分区表项时,即可认为此表项为按柱面寻址的表项。
3、扩展分区引导扇与柱面对齐
由于扩展分区引导扇不在柱面最前端,一般是相差3Fh=63个扇区,因此要使用到保留扇区数这个表示空间,为了解决这个问题,我们可以将扩展分区引导扇与扩展分区链表扇区结构合并,使它们同时存在于分区柱面的最前端,从而省去了保留扇区数的表示空间,将其用于表示保留柱面数,这样也解决了分区表向前兼容的问题。
有人可能会问,把扩展分区引导扇与扩展分区链表扇区结构合并,会不会造成不兼容,对此我特地在自己的主机上做了实验,结果居然成功了,我的实验是这样进行的:首先我想到的是,扩展分区引导扇由于不需要具有引导系统启动的能力,因此它的引导程序是没用的,我们可以把扩展分区引导扇的BPB表和扩展分区链表结构合并,即可实现我们的目的,我将扩展分区链表的分区保留扇区数清零,然后进行格式化,格式化最后报错,但零保留扇区的分区结构却已经建立,我再手工将扩展分区链表的分区表项参数填入到新的扩展分区引导扇1BEh处保存,重启系统后,该分区居然可以使用,这就证明这种改造方法是可行的,只要在新的操作系统里更改格式化程序即可实现。
至此,我的设想就介绍完了,欢迎有兴趣的网友参与讨论,我的E-MAIL:lvyanan@hotmail.com
Lvyanan 2008年11月30日22:20
[ 本帖最后由 lvyanan 于 2008-12-4 09:34 编辑 ] |
|