解读分区表的秘密
硬盘GPT分区表的知识讲解

硬盘GPT分区表的知识讲解GPT分区表是一种使用全局唯一标识符(GUID)的分区结构,用于定义磁盘的分区方案。
GPT分区表与MBR分区表不同,其使用的是一种更先进的分区方案,因此具有更高的性能和可靠性。
GPT分区表的特点1.更大的分区支持:GPT分区表支持最多128个分区,而MBR分区表仅支持4个。
2.更好的数据备份:GPT分区表将分区表的备份存储在磁盘的末尾,从而更好地保护数据。
3.更安全的引导:GPT分区表使用UEFI(统一可扩展固件接口)引导,提供更安全和更可靠的引导选项。
4.支持更大的磁盘容量:GPT分区表支持最大容量为9.4ZB(1ZB=1024EB),而MBR分区表最大容量为2TB。
GPT分区表的结构GPT分区表的结构与MBR分区表不同。
GPT分区表将磁盘分为若干个LBA(逻辑块寻址)区域,其中每个LBA区域都有一个唯一的GUID标识符。
每个分区都由一个GUID分区类型和一个GUID唯一标识符来定义。
此外,GPT分区表还包括一个主引导记录(MBR)和一个备用引导记录(EBR),用于磁盘引导。
GPT分区表的使用使用GPT分区表需要满足以下条件:1.操作系统支持:大多数现代操作系统都支持GPT分区表。
这包括Windows7及以上版本,MacOSX,Linux等操作系统。
2.计算机硬件支持:计算机的BIOS必须支持UEFI引导,以便能够使用GPT分区表。
如果计算机的BIOS不支持UEFI引导,则只能使用MBR分区表。
GPT分区表是一种先进的磁盘分区结构,具有更好的数据备份能力和更高的性能。
虽然GPT分区表支持更大的容量,但仍需满足操作系统和计算机硬件的支持要求。
在选择使用GPT分区表时,必须确保系统能够支持GPT分区表,并且硬件设备能够支持UEFI引导。
如果您需要支持大容量硬盘或多操作系统配置,那么GPT 分区表将是一个更好的选择。
以上是硬盘GPT分区表的知识讲解,希望可以帮助到大家更深入了解。
解读硬盘分区表-xiaosilent‘sBlog-BlogJava

解读硬盘分区表-xiaosilent‘sBlog-BlogJava最近接触到一个0 磁道损坏的硬盘,做数据恢复,有机会学习了一下分区表的结构。
在这里简要的做点笔记。
MBR ( Main Boot Record )位于硬盘第一个物理扇区(绝对扇区)柱面 0 ,磁头 0 ,扇区 1 (简化成( 0 , 0 , 1 ))处。
由于DOS 是由柱面 0 ,磁头 1 ,扇区 1 开始,故 MBR 不属于 DOS 扇区,DOS 不能直接访问。
MBR 中包含硬盘的主引导程序和硬盘分区表。
分区表有4 个分区记录区,这也就是我们为什么只能在硬盘里最多拥有4 个主分区的原因了。
记录区就是记录有关分区信息的一张表。
它从主引导记录( MBR )偏移地址 01BEH 处连续存放,每个分区记录区占 16 个字节。
下面用我的硬盘的分区表来详细解释一下分区表各区段的具体含义。
1be ~ 1cd ( 016 字节)第一个分区入口(参数解释见下)1ce ~ 1dd ( 016 字节)第二个分区入口(同第一个分区)1de ~ 1ed ( 016 字节)第三个分区入口(同第一个分区)1ee ~ 1fd ( 016 字节)第四个分区人口(同第一个分区)1fe ~ 1ff ( 002 字节)引导记录标志位(固定值: 55 aa )要说明的是:这里讲的“分区”,确切说是:主分区。
扩展分区也当成主分区,扩展分区内部的分区信息不在 MBR 里面。
要注意的是,在这里出现的数字均是 16 进制数。
下面就分区记录这 16 个字节再详细解释一下,以我的第一个分区为例:80 分区状态( 80H 表示为激活分区, 00H 表示为非激活分区)01 分区的开始磁头01 00 分区的开始柱面和扇区(这个地方有点玄机,等会再详细解释)07 分区的类型( 0c 表示为 FAT32 , 07 为 NTFS , 0f 代表扩展)fe 分区的结束磁头bf fc 分区的结束柱面和扇区(表示同开始磁头,等会详解)3f 00 00 00 从 MBR 到第一个分区扇区的扇区个数(分区前的扇区数)7e 86 bb 00 分区的总扇区数也就是说我的第一个分区是一个从( 0,1,1 )位置开始的可引导的NTFS 格式的分区。
硬盘分区表详解

硬盘分区表详解人们在使用电脑时,有时由于异常操作,有时由于病毒侵袭,会导致某个分区消失或硬盘无法启动。
究其原因,就是硬盘分区表受损。
硬盘分区表可以说是支持硬盘正常工作的骨架.操作系统正是通过它把硬盘划分为若干个分区,然后再在每个分区里面创建文件系统,写入数据文件.本文主要讲述的是分区表的位置,结构以及各个分区表是如何链接起来的.当掌握了这些知识后,即使分区表受到破坏,一样也可以根据残存的数据手工修复分区表,从而修复分区。
一.分区表的位置及识别标志分区表一般位于硬盘某柱面的0磁头1扇区.而第1个分区表(也即主分区表)总是位于(0柱面,1磁头,1扇区),剩余的分区表位置可以由主分区表依次推导出来.分区表有64个字节,占据其所在扇区的[441-509]字节.要判定是不是分区表,就看其后紧邻的两个字节(也即[510-511])是不是"55AA",若是,则为分区表.二.分区表的结构分区表由4项组成,每项16个字节.共4×16 = 64个字节.每项描述一个分区的基本信息.每个字节的含义如下:分区表项含义1、(1,2,3)字节磁头号由(1)字节8位表示,其范围为(0 -- 28 - 1),也即(0 磁头-- 254磁头)。
扇区号由(2)字节低6位表示,其范围为(0 -- 26 - 1),由于扇区号从1开始,所以其范围是(1扇区-- 63扇区)。
柱面号由(2)字节高2位+ (3)字节,共10位表示,其范围为(0 --2 10 - 1),也即(0 柱面-- 1023柱面)。
当柱面号超过1023时,这10位依然表示成1023,需要注意。
(5,6,7)字节含义同上。
2、(8, 9, 10, 11)字节如果是主分区表,则这4 个字节表示该分区起始逻辑扇区号与逻辑0扇区(0柱面,0磁头,1扇区)之差。
如果非主分区表,则这4 个字节要么表示该分区起始逻辑扇区号与扩展分区起始逻辑扇区号之差,要么为63。
mysql分区表原理

mysql分区表原理
MySQL分区表是一种将数据库表按照逻辑或物理方式切分成多个分区,每个分区可以单独管理和操作的技术。
其原理可以简单分为以下几个步骤:
1. 分区定义:首先,需要定义分区表的分区规则。
分区规则可以根据数据的某个列或表达式进行划分,常见的分区规则有基于范围、基于列表、基于哈希、基于键值等。
2. 创建分区表:在分区规则定义好后,可以使用CREATE TABLE语句创建分区表。
在创建表时,需要使用PARTITION BY子句指定分区规则,并使用PARTITIONS子句指定分区个数及具体每个分区的名称和定义。
3. 数据插入:当分区表创建好后,可以通过INSERT INTO语句将数据插入到分区表中。
MySQL会根据分区规则自动将数据插入到相应的分区中。
4. 数据查询:在进行数据查询时,MySQL会根据查询条件的范围来确定需要查询哪个分区。
通过分区表的查询优化器,可以加快查询速度,只对需要查询的分区进行扫描。
5. 管理和维护:分区表可以进行分区添加、分区删除、分区合并、分区重建等操作,以便对数据进行更好的管理和维护。
这些操作可以减少对整个表进行操作的时间和资源消耗。
通过分区表,可以更好地管理和查询大量的数据,并提高系统
的性能和可扩展性。
但是需要注意的是,分区表的性能也受到硬件、分区规则设计等因素的影响,需要根据具体情况进行评估和调优。
分区表原理

分区表原理
分区表(DivisionTable)是数据库中最小的一种表,它保
存了数据库中所有的行的地址,它的数据量很小,但具有很强的内存和磁盘访问能力,一般用于事务处理。
当对多个行进行事务时,由于数据库中的数据是以列表形式存在的,这样查询时就需要一个表来保存这些数据,而分区表则可以很好地解决这个问题。
其优点是:
1.对每个行都有一张表来保存它。
2.当对多个行进行事务时,不需要把整个表保存到磁盘上,
而是只需把分区表中的一部分保存到磁盘上就可以了。
3.当查询某一行时,可以只从分区表中读取该行所存储的数
据就可以了,这样可以加快查询速度。
4.当一个事务执行结束后,再把分区表中的另一部分存到磁
盘上。
5.当在某一时间段内事务较多时,对多个行进行事务时就会
把分区表中所有的行都写到磁盘上。
分区表应用:
在大型数据库系统中一般都采用了分区表。
分区表是一种重要的数据结构,它用来描述数据域和数据域内的数据分布。
—— 1 —1 —。
深入理解硬盘分区表

深入理解硬盘分区表相信听说过硬盘MBR、硬盘分区表、DBR的朋友一定都不少。
可是,你清楚它们分别起什么作用吗?它们的具体位置又在哪里呢?硬盘上的MBR只有一份吗?什么是硬盘逻辑锁?如何制造和破解它呢??别急,让我们一步步来搞清楚吧!==必备基础知识:==以下先介绍一下有关扇区编号的基本知识:介绍一下有关硬盘扇区编号规则的3个易混淆的术语“物理扇区编号”、“绝对扇区编号”和“逻辑扇区编号”。
我们都知道硬盘扇区的定位有两种方法:1、直接按柱面、磁头、扇区3者的组合来定位(按这种编号方式得到的扇区编号称为物理扇区编号);2、按扇区编号来定位(又分“绝对扇区编号“和“逻辑扇区编号“两种)。
这两种定位方法的换算关系如以下图:(设图中所示硬盘每道扇区数均为63)如下图,由于目前大多数硬盘采用的是一种“垂直分区结构“,故左图一磁头数为2、盘片数为1的硬盘,图中0磁头所对扇区的表示方法就有2种,即:0柱面0磁头1扇区=绝对0扇区,而1磁头所对扇区的表示方法也有2种,即:1柱面0磁头1扇区=绝对63扇区。
如果是如右图所示磁头数为4、盘片数为2的硬盘,那么则顺着垂直于盘片的箭头线方向进行如图的绝对扇区的编号。
以上,我们说了物理扇区、绝对扇区的编号方式,而逻辑扇区编号由于是操作系统采用的扇区编号方式,而操作系统只能读取分区部的数据容,故逻辑扇区是从各分区的第一个扇区开始编号,如我们下文对mbr 的说明可以知道:mbr这个扇区所在硬盘磁道是不属于分区围的,紧接着它后面的才是分区的容,因此一般来说绝对63扇区= c:分区逻辑1扇区。
以下让我们总结一下3种编号方式的不同:编号方式表示方法采用该种方式编号的对象起始编号物理扇区编号 0柱面0磁头1扇区 BIOS置中断服务程序 0柱面0磁头1扇区绝对扇区编号绝对X扇区人们为方便所采用的方法绝对0扇区逻辑扇区编号逻辑X扇区操作系统逻辑1扇区需要说明的是:本文假设所使用的硬盘每道扇区数都为63。
Mysql分区表原理及使用详解

Mysql分区表原理及使⽤详解1.什么是表分区:表分区,是指根据⼀定规则,将数据库中的⼀张表分解成多个更⼩的,容易管理的部分。
从逻辑上看,只有⼀张表,但是底层却是由多个物理分区组成。
2.表分区与分表的区别:分表:指的是通过⼀定规则,将⼀张表分解成多张不同的表。
⽐如将⽤户订单记录根据时间分成多个表,分表与分区的区别在于:分区从逻辑上来讲只有⼀张表,⽽分表则是将⼀张表分解成多张表。
3.表分区有很多好处:1)分区表的数据可以分布在不同的物理设备上,从⽽⾼效的利⽤多个硬件设备2)和单个磁盘或者⽂件系统相⽐,可以存储更多数据3)优化查询,在where语句中包含分区条件时,可以只扫描⼀个或多个分区表来提⾼查询效率;涉及sum和count语句时,也可以在多个分区上并⾏处理,最后汇总结果4)分区表更容易维护,例如:想批量删除⼤量数据可以清楚整个分区5)可以使⽤分区表来避免某些特殊的瓶颈,例如InnoDb的单个索引的互斥访问,ext3⽂件系统的竞争等4.分区表的限制因素:1)⼀个表最多只能有1024个分区2)Mysql5.1中,分区表达式必须是整数,或者返回整数的表达式,在Mysql5.5中提供了⾮整数表达式分区的⽀持3)如果分区字段中有主键或者唯⼀索引的列,那么多有主键列和唯⼀索引列都必须包含进来,即:分区字段要么不包含主键或者索引列,要么包含全部主键和索引列4)分区表中⽆法使⽤外键约束5)Mysql的分区适⽤于⼀个表的所有数据和索引,不能只对表数据分区⽽不对索引分区,也不能只对索引分区⽽不对表分区,也不能只对表的⼀部分数据分区5.如何判断当前Mysql是否⽀持分区?命令⾏输⼊:show variables like '%partition%'运⾏结果:have_partitioning | Yes (表⽰⽀持分区)6.Mysql⽀持的分区类型有哪些?1)range分区:按照数据的区间范围分区2)list分区:按照list中的值分区,与range的区别是,range分区的区间范围值是连续的3)hash分区:⼜分为常规Hash分区和线性Hash分区4)key分区:说明在Mysql5.1版本中,range,list,hash分区要求分区键必须是int类型,或者通过表达式返回INT类型,但key分区的时候,可以使⽤其他类型的列(blob,text类型除外)作为分区键。
解读分区表的秘密

解读分区表的秘密很多网友希望能对数据恢复作进一步了解。
其中大家反映较多的就是希望能看懂分区表的格式,今天我们就来介绍一下分区表参数,帮助大家掌握分区表。
介绍分区表之前,大家要先准备一些硬盘存储的基础知识,有这么几点:一进制转换分区表中会用到二进制,16进制和10进制,大家要熟悉它们之间的转换,例如16进制的3F等于10进制的63等于二进制的111111。
好在现在有计算器可以用,心算没把握就用计算器好了,所以进制转换相对不算难。
二常用存储单位1K=1024字节=210 字节1M=1024K=220 字节1G=1024M=230 字节1个扇区=512字节介绍这些是因为分区表中表示分区大小是用扇区表示,也就是说分区表中只会说这个分区有多少个扇区,而不会说有多少G,多少M,因此我们要习惯进行存储单位转换。
例如分区表中描述分区大小是72 A1 A9 03,首先你要明白这四个字节是高低位颠倒的,高位在后,低位在前,真正的分区大小是03 A9 A1 72。
然后我们把16进制转为10进制,这样就知道了这个分区大小是61448562扇区,换算为字节就是61448562×512=31461663744。
然后除以2的30次方,就可以知道分区的大小是31461663744/ 230 =29.3 G。
三扇区定位硬盘中有数以亿计的扇区,如何才能准确定位到每一个扇区呢?一般用C/H/S和LBA两种方法。
这两种定位方法都很重要,我们来好好看看。
C/H/S指的是利用柱面/磁头/扇区这三个参数来定位扇区,有的资料说C/H/S指的是磁道,磁头和扇区,这就不准确了。
磁道是硬盘盘体上的同心圆,每个磁道上排列了63个扇区,盘体最外圈为0磁道,从外圈向内圈编号逐步加大。
由于一块硬盘有多块盘体,因此硬盘可以看作是一个圆柱体。
这时就看出用磁道定位不妥的地方了,磁道显然是只适合在二维空间定位,不适合在三维空间中表示准确的坐标。
柱面就没有这个问题了,柱面是所有盘体上磁道的集合,例如0柱面指的是所有盘体上的0磁道所组成的一个圆柱体。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
解读分区表的秘密前几天写了一篇介绍恢复误Ghost硬盘的博文,反响出乎意料,很多博友对数据恢复表现出了浓厚的兴趣,希望能对数据恢复作进一步了解。
其中大家反映较多的就是希望能看懂分区表的格式,乍一看,由16进制数组成的分区表让人望而生畏,如同天书一般。
其实,只要理解了分区表参数的含义,天书也就不难读懂了。
今天我们就来介绍一下分区表参数,帮助大家掌握分区表。
介绍分区表之前,大家要先准备一些硬盘存储的基础知识,有这么几点:一进制转换分区表中会用到二进制,16进制和10进制,大家要熟悉它们之间的转换,例如16进制的3F等于10进制的63等于二进制的111111。
好在现在有计算器可以用,心算没把握就用计算器好了,所以进制转换相对不算难。
(图1)二常用存储单位1K=1024字节=210 字节1M=1024K=220 字节1G=1024M=230 字节1个扇区=512字节介绍这些是因为分区表中表示分区大小是用扇区表示,也就是说分区表中只会说这个分区有多少个扇区,而不会说有多少G,多少M,因此我们要习惯进行存储单位转换。
例如分区表中描述分区大小是72 A1 A9 03,首先你要明白这四个字节是高低位颠倒的,高位在后,低位在前,真正的分区大小是03 A9 A1 72。
然后我们把16进制转为10进制,这样就知道了这个分区大小是61448562扇区,换算为字节就是61448562×512=31461663744。
然后除以2的30次方,就可以知道分区的大小是31461663744/ 230 =29.3 G。
三扇区定位硬盘中有数以亿计的扇区,如何才能准确定位到每一个扇区呢?一般用C/H/S和LBA两种方法。
这两种定位方法都很重要,我们来好好看看。
C/H/S指的是利用柱面/磁头/扇区这三个参数来定位扇区,有的资料说C/H/S指的是磁道,磁头和扇区,这就不准确了。
磁道是硬盘盘体上的同心圆,每个磁道上排列了63个扇区,盘体最外圈为0磁道,从外圈向内圈编号逐步加大。
由于一块硬盘有多块盘体,因此硬盘可以看作是一个圆柱体。
这时就看出用磁道定位不妥的地方了,磁道显然是只适合在二维空间定位,不适合在三维空间中表示准确的坐标。
柱面就没有这个问题了,柱面是所有盘体上磁道的集合,例如0柱面指的是所有盘体上的0磁道所组成的一个圆柱体。
这下您肯定明白了,原来磁道是二维的圆,柱面是三维的圆柱。
一个柱面包含了若干磁道,如何来准确表示柱面中的具体磁道呢?这时就可以使用磁头参数了。
每个磁头负责读取柱面中的处于不同高度的磁道,我们只要给出具体的磁头数值,就知道对应柱面中的哪个磁道了。
这样我们根据柱面和磁头两个参数就可以准确地定位到盘体中的某个磁道,一个磁道上有63个扇区,我们只要再知道扇区的编号,就可以完成在三维空间中定位扇区的任务了,C/H/S三个参数就是这样定位扇区的。
柱面编号从0开始,每个柱面有255个磁头,编号从0到254,每磁道有63个扇区,编号从1到63。
有朋友问:难道硬盘中真的有255个磁头吗?当然不是,硬盘中的磁头很少会超过4个,真正硬盘的每个磁道也不是都有65个扇区。
每柱面255磁头每磁道63扇区这种模型只是为了研究问题方便而人为规定出来的,就象我们规定每小时有60分钟而每分钟有60秒那样。
虽然柱面中的磁头数量和实际不符,但由于硬盘中有一个地址翻译器,可以将标准模型中的CHS参数转换为硬盘实际的CHS参数,因此我们用C/H/S定位扇区是没有问题的,这就象可以从阴历的日期转换为阳历的日期。
柱面是研究分区非常重要的一个参数,分区以柱面为粒度。
这话怎么理解?操作系统分区时要考虑柱面因素,分区总是结束在柱面的最后一个扇区,也就是说分区总是结束在某个柱面的254磁头63扇区。
这就解释了为什么你要求的分区大小和实际分区大小总是有些小小的误差,例如你要分一个区是200M,操作系统在分区时考虑的是这个分区到到哪个柱面结束离你的要求误差最小。
这种以柱面为粒度的分区方式肯定会有误差,误差不会超过半个柱面,一个柱面的大小是255磁头×63扇区×512字节=7.8MLBA定位扇区的方式就简单多了,LBA方法是把硬盘当作一个扇区集合,LBA给硬盘中的每个扇区都赋予一个唯一的编号,只要你说出扇区编号就可以定位出扇区位置。
LBA只用了一个参数,而C/H/S用了三个参数,两种方式可以相互转换。
就象我们习惯用年月日来表示历史上的某一天,但其实也可以直接说今天是公元某某天。
硬盘上的第一个扇区用C/H/S 表示是0/0/1,0柱面0磁头1扇区,用LBA表示就是0号扇区。
C/H/S和LBA之间有转换公式,但我很少会手工计算,我一般都利用Winhex帮忙,例如我想知道950/254/63对应的LBA是多少,我就在Winhex中选择转到扇区,如下图所示,输入C/H/S参数。
(图2)Winhex转到指定扇区后会同时显示显示C/H/S和LBA参数,如下图所示,Winhex告诉我们950/254/63对应的LBA参数是15277814。
从LBA转换C/H/S也可用同样方法。
(图3)好了,掌握了这些基础知识,我们就可以来分析分区表了。
分区表在硬盘的第一个扇区,0柱面0磁头1扇区,这个扇区也被称为MBR,主引导记录。
MBR有512个字节,分为三部分内容,第一部分是个引导程序,446字节;第二部分是分区表,64字节;第三部分是结束标志,内容是55AA,2字节。
如下图所示就是MBR的内容,绿色部分为分区表。
(图4)分区表有64个字节,可以表示4项分区,每项分区为16个字节。
我们只要把16个字节的内容搞清楚了,分区表就不再神秘了。
上图所使用的计算机硬盘分了四个区,如下图所示,是大家常用的分区方法,一个主分区,一个扩展分区,扩展分区内分了三个逻辑分区。
(图5)这四个分区在分区表中如何表现呢?我们从图中可以看出分区表中只有两项内容,分别是80 01 01 00 07 FE FF FB 3F 00 00 00 BD 08 FA 00,00 00 C1 FC 0F FE FF FF FC 08 FA 00 2C CD 05 01。
这意味着MBR的分区表中只定义了两个分区,我们一个一个来分析,先分析第一个分区表项,80 01 01 00 07 FE FF FB 3F 00 00 00 BD 08 FA 00,我们先解释一下这16个字节的含义。
第一个字节的内容是分区的引导标志,80表示是引导分区,00表示不是引导分区。
第二,三,4字节表示分区的起始磁头,扇区,柱面,本例中三个参数分别是01 01 00,这代表第一个分区从0柱面1磁头1扇区开始。
第五个字节表示分区类型,07表示NTFS分区,常用的类型有0F(扩展分区),0B(FAT32),06(FAT16)。
第六,七,八字节分别表示分区的结束磁头,扇区,柱面。
注意,这里有些玄机,分区的起始扇区和结束扇区看起来用了一个完整字节,其实不是。
由于C/H/S中扇区编号从1到63,因此用一个字节表示有些浪费,一个字节由八个二进制数组成,扇区编号只用了低六位,高2位给柱面用了。
因此,表示柱面其实用了10个二进制数,其中高2位是从扇区参数中借来的。
结合本例看看,六,七,八参数分别是FE FF FB,分析一下,FE表示分区的结束磁头是254,FF拆为二进制是11111111,低六位是111111,用来表示分区的结束扇区,也就是说结束扇区是63。
FF拆开后高2位11给了柱面用,也就是说分区的结束柱面不是FB,而是3FB,3FB等于十进制的1019。
这下子我们明白了,第一个分区开始在0/1/1,结束在1019/254/63。
看到这里有些朋友不禁有些疑问,分区表只用了八个字节就已经表示了起始和结束位置,为什么还需要后八个字节呢?其实后八个字节是用LBA方法来表示分区的起始位置和结束位置,这可不是多此一举,主要是因为CHS对大容量硬盘已经力不从心了。
从刚才的参数分析我们可以看出来,CHS表示柱面的参数最多也就是10个二进制数,10个二进制数只能表示1024个柱面,1024柱面才多大?1024×7.8M=8G。
看看,C/H/S无法定位8G以后的硬盘空间,这也是当初设计分区表时目光短浅,如果能用两个字节表示柱面,那现在就完全没问题了。
由于C/H/S对现在的海量硬盘根本无用武之地,因此表示分区大小的重任就只能落在LBA的肩上了。
继续分析分区表项的第九,十,十一,十二字节,这四个字节代表分区之前的扇区数,意思是从分区的起始到硬盘的第一个扇区之前有多少扇区,其实是很隐晦地告诉我们分区从哪里起始。
本例中这四个字节的内容是3F 00 00 00,首先我们要高低位互换,四个字节的内容是00 00 00 3F,转为10进制是63,这意味着第一个分区之前的扇区数是63,也意味着第一个分区从63扇区开始。
为什么?有人这么问,既然第一个分区之前有63个扇区,那第一个分区应该从64扇区开始才对呀?主要是因为LBA表示扇区是从0开始编号而不是从1开始,分区之前有63个扇区意味着分区之前的扇区是从0到62,那分区起始自然应该从6 3开始。
分区表的十三,十四,十五,十六字节代表分区的大小,这四个字节表示分区的扇区数。
本例这四个参数为BD 08 FA 00,高低位互换一下,分区的扇区数为00 FA 08 BD,换算为10进制为16386237。
知道了分区起始在63,大小为16386237,结束位置也就知道了63+ 16386237-1=16386299。
用winhex转到16386299看看,如下图所示,16386299正是1019柱面254磁头63扇区。
(图6)对分区表的第一个项内容总结一下,这16个参数告诉我们,第一个分区从0/1/1开始,到1019/254/63结束,可以引导系统,分区类型为NTFS,分区起始的扇区数是63,分区大小是16386237扇区。
以前有同学提过问题,分区为什么不从第二个扇区开始?主要是因为MBR太重要,操作系统不希望对此扇区进行太多访问,因此干脆把MBR所在的整个磁道都划到分区之外了,这就是为什么第一个分区从0柱面1磁头1扇区开始。
分析了分区表的第一项,接下来来分析第二项00 00 C1 FC 0F FE FF FF FC 08 F A 00 2C CD 05 01。
第二项前八个字节中我们只要看第一个字节和第五个字节,知道第二个分区是扩展分区,不能引导,这就够了。
其余6个字节用C/H/S表示分区的起始和结束就不用再看了,因为8G以后C/H/S已经失去作用了,第二个扩展分区结束的位置远远超过8 G,C/H/S肯定无法表示了,主要看看后八个字节的LBA参数就可以了。
扩展分区之前的扇区数是FC 08 FA 00,高低位互换后是00 FA 08 FC,也就是扩展分区之前的扇区数是1 6386300,扩展分区的起始是16386300扇区。