1、在文件系统中规定:磁头数(Heads) 表示总共有几个磁头,也就是有几面,最大为 255 (用 8 个二进制位存储);柱面数(Cylinders) 表示每一面上有几条磁道,最大为 1024(用 10 个二进制位存储);扇区数(Sectors) 表示每一条磁道上有几个扇区,最大为 63 (用 6个二进制位存储)。每个扇区一般是 512个字节,理论上讲这不是必须的,但好象没有取别的值的。所以CHS 方式最大寻址范围为:255 * 1024 * 63 * 512 / 1000 / 1000 / 1000 = GB。在 CHS 寻址方式中,磁头,柱面,扇区的取值范围分别为0到 Heads - 1, 0
2、到 Cylinders - 1,1到Sectors (注意是从1开始)。当需要读取某一扇区的数据时,先确定柱面号,再确定磁道(磁头)号,逐级缩小范围,最后确定扇区号,这样就完成了寻址过程。只要确定CHS参数,就指定相应的磁头到相应的磁道和扇区去读写数据。需要说明的是所谓的CHS参数与真实的柱面号、磁头号、扇区号并不是一一对应的,一般的磁头也就有几个,不可能到255之多。物理上的柱面号、磁头号、扇区号与文件系统中的CHS 参数存在一定的转换关系,这由的固件去完成,我们不必关心,在这里,我们只关注文件系统中的CHS 参数。随着技术的不断发展,其容量也不断增大,现在的早就超过了8G的容量,在文件系统
3、中采用CHS寻址方式已经满足不了需要了,那么在现代的文件系统中又是如何寻址的呢?现在的文件系统基本都采用线性寻址的方式,即把上所有可用扇区(假定数目为N)从0到N - 1按序编号,读写数据时按扇区号寻址,这就是LBA寻址方式(logic block address),扇区编号也就是该扇区的LBA地址。尽管LBA已经成为文件系统的主流寻址方式(小于的分区仍需用CHS 方式寻址,在大于的分区,CHS 参数就没有什么意义了,此时须用LBA 方式寻址),但在Windows 系统中整个的逻辑结构仍然是以传统上的CHS 方式组织起来的,文件系统是由整数柱面组成。现代件系统的柱面数已经突破了1024的限制,
4、最大磁头数和扇区数仍为255和63。相对于LBA来说,CHS模式较为直观,所以磁盘编辑器通常采用CHS模式来作为磁盘逻辑结构划分方式。二、MBR(Master Boot Record)、DPT(Disk Partition Table)、主分区(Primary Partition)、扩展分区(Extended Partition)和逻辑分区(Logical Partition)的第一个扇区被称为主引导扇区,习惯上称为MBR,CHS参数为0,0,1,LBA参数为0,它包含了引导程序和分区表(DPT),作用十分重要,如果MBR扇区受损,那么系统就无法访问这个磁盘了。引导程序概述MBR扇区的512字
5、节数据中,前446字节(0 to 0x1BD)存放引导程序代码。从启动时,系统从中首先读取MBR引导代码,其流程大致如下:(1) 将程序代码由0:7C00H移动到0:0600H(注,BIOS把MBR放在0:7C00H处)(2) 搜索可引导分区,即80H标志成功:goto 3失败:跳入ROM BASIC无效分区表:goto 5(3) 读引导扇区goto 4(4) 验证引导扇区最后是否为0xAA55Hgoto 6(5) 打印错误进入无穷循环(6) 跳到0:7C00H进行下一步启动工作然后MBR引导程序就把系统控制权交给引导程序。如果MBR损坏无法访问,可在DOS下输入:Fdisk /cmbr X(
6、X = 1,第一块;X = 2,第二块),重写主引导记录。分区表(DPT)MBR扇区的最后66字节除去末尾的标志0xAA55H(所有引导扇区的标志。由于磁盘编辑器中的显示内容是从低址到高址排列的,所以AA55显示为55AA)外,剩余的64字节被称为分区表。分区表包含四个项目,每项16字节,代表四个分区的参数。分区表项的各字节含义如下:偏移 意义0 自举标志(80为活动分区,00为非活动分区)1 起始磁头号H2 起始扇区号S3 起始柱面号CYL(CYL的高2位存放在S字节的高2位)4 分区格式标志(05:DOS Extended;06:BIGDOS FAT16;07:NTFS;0B:FAT32;
7、0C: FAT32(对INT 13H指令使用LBA);0E: FAT16(对INT 13H指令使用LBA);0F: Extended(对INT 13H指令使用LBA);82:LINUX Swap;83:LINUX;85:LINUX Extended)5 终止磁头号H6 终止扇区号S7 终止柱面号CYL8-11 本分区之前已用扇区数(当分区表属于扩展分区中的记录时,该值为相对扩展分区首地址的位置)12-15 本分区扇区总数3.主分区(Primary Partition)、扩展分区(Extended Partition)DPT中可定义的分区包括主分区和扩展分区。所谓主分区,是指DPT中包含的能够被
8、系统使用的磁盘分区,它是可以设置为活动的,即可以引导,一个只能有一个活动分区;而扩展分区并不能被系统使用,它的作用是突破DPT只能定义4个分区的限制。其做法是:让DPT在定义主分区后,将多余容量定义为扩展分区,指定该分区的起始位置,根据起始位置指向的某一扇区,称作虚拟MBR,在其中定义下一个分区表。如果只有一个分区,就定义该分区,然后结束;如果不止一个分区,就定义一个基本分区和一个扩展分区,扩展分区再指向下一个分区表,在下一个分区表中继续定义分区,直至结束。这样就形成一个分区链,可以描述所有的分区。任何分区表中只能有一个扩展分区,扩展分区不能引导。位于扩展分区中的可被系统使用的磁盘分区称为逻辑
9、分区,逻辑分区不能设置为活动。由于定义了扩展分区和逻辑分区的概念,windows使用的磁盘盘符可以一直到Z,见下图。三、分区结构实例分析使用磁盘编辑器可以直接访问数据,一般磁盘编辑器都是以十六进制显示数据。这里推荐使用数据恢复领域内被广泛使用的软件WinHex,这个软件能在windows下直接读写磁盘扇区。打开WinHex,点击“工具”菜单,选择“磁盘编辑器”“物理媒介”“HD0.”,这样整个的数据就以十六进制的方式显示于编辑框之内。下面就对本人的分区情况进行分析。扇区图示如图所示,MBR扇区的01bd区段是MBR引导代码,1be1dd一共有32字节代表两个分区表项,末尾0xAA55H是引导扇
10、区的标志。第一分区各项参数为:80,01,01,00,0C,FE,FF,FF,3F,00,00,00,F8,93,32,02。第一项80,代表该分区是活动的(可以引导);起始位置是0柱面、1磁头、1扇区;0C代表该分区是FAT32格式;FE、FF、FF三项代表终止柱面磁头扇区的序号,由于该分区大于8G,所以它的CHS参数已经没有意义;3F,00,00,00是该分区首扇区的LBA地址,为0x3FH,等于63;F8,93,32,02代表该分区的扇区数(由于排列是从低址到高址,扇区数应该是0x23293F8H,为个扇区)。第二分区各项参数为:00,00,C1,FF,0F,FE,FF,FF,37,94
11、,32,02,49,E8,C9,04。第一项00,代表该分区是非活动的;起始CHS参数柱面号无效,磁头号0,扇区号1;0F代表该分区是扩展分区;37,94,32,02是该分区首扇区的LBA地址,为0x2329437H,等于;49,E8,C9,04代表该分区的扇区数,为0x4C9E849H,一共个扇区。2.扩展分区首扇区(虚拟MBR)图示(1)第一扩展分区首扇区(虚拟MBR)图示如前文所述,由于DPT只能记录4个分区的信息,windows通过扩展分区来记录多于4个分区的信息。DPT中的扩展分区称为第一扩展分区,它的首扇区称作虚拟MBR。从示例图上可以看到扩展分区的首扇区之内没有MBR引导代码,只
12、有分区表,一共有两项记录,表示一个逻辑分区和一个扩展分区。第一分区各项参数:00,01,C1,FF,0B,FE,FF,FF,3F,00,00,00,37,16,71,02。起始CHS参数柱面号无效,磁头号1,扇区号1;0B代表该分区是FAT32文件系统;3F,00,00,00是该分区首扇区的LBA地址(相对第一扩展分区首扇区),为63;37,16,71,02代表该分区的扇区数,一共个扇区。第二分区各项参数:00,00,C1,FF,05,FE,FF,FF,76,16,71,02,D3,D1,58,02。05代表该分区是扩展分区;76,16,71,02是该分区首扇区的LBA地址(相对第一扩展分区首
13、扇区);D3,D1,58,02代表该分区的扇区数,一共个扇区。(2)第二扩展分区首扇区(虚拟MBR)图示如图所示,该扩展分区只包含一个逻辑分区,它的分区表各项参数如下:00,01,C1,FF,07,FE,FF,FF,3F,00,00,00,94,D1,58,02起始CHS参数柱面号无效,磁头号是1,扇区号是1;07代表该分区是NTFS文件系统;3F,00,00,00是该分区首扇区的LBA地址(相对第二扩展分区首扇区),为63;94,D1,58,02代表该分区的扇区数,一共个扇区。综上所述,该的分区结构已经搞清楚了,它的主分区表中包括一个主分区(活动的)和第一扩展分区;第一扩展分区中包含一个逻辑分区和第二扩展分区;第二扩展分区包含一个逻辑分区,如图所示。3.主分区
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1