简单说一下MSDOS分区的几个要点

       原创文章,转载请注明出处,谢谢!       
       作者:清林,博客名:飞空静渡

 

现在的分区就主要分为MSDOS分区和GPT分区,个人决定GPT分区最容易也最好用,说的好用是在写分区软件时,GPT分区比较舒服 :)

 

说一下MSDOS分区吧,今天又修改了下分区代码,久了会忘记,老是从代码里召回分区的要点,今天记一下吧!

 

MSDOS分区就是分成这几个:主分区,扩展分区,逻辑分区,而逻辑分区所在的扇区,数据恢复那本书说是虚拟MBR,那我也这么说吧。

 

首先用fdisk看下一个硬盘的分区情况:

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *        2048      206847      102400    7  HPFS/NTFS
/dev/sdc2          206848    88542144    44167648+   7  HPFS/NTFS
/dev/sdc3        88543232   103131135     7293952    7  HPFS/NTFS
/dev/sdc4       103131136   234438655    65653760    5  Extended
/dev/sdc5       103133184   151257087    24061952    7  HPFS/NTFS
/dev/sdc6       151259136   193478655    21109760    7  HPFS/NTFS
/dev/sdc7       193480704   234438655    20478976    7  HPFS/NTFS

 

三主,一扩展,三逻辑,比较典型的了

分区表的结构我就不多说了,其中比较主要的两个变量是分区的偏移位置和大小,而偏移位置又根据分区的类型而不一样,下面说一下分区的偏移位置的设置问题。

 

大致可以分成3种。

第一种:主分区和扩展分区,其在分区表里的偏移位置变量的值是其分区在硬盘中真实的偏移位置。

第二中:逻辑分区,其偏移位置是虚拟MBR到分区的偏移距离。

第三种:虚拟MBR中的扩展分区,其偏移变量值是主分区表中的扩展分区的偏移位置(即第一个虚拟MBR)到其指向的下一个虚拟MBR的偏移值,即虚拟MBR中的扩展分区的偏移位置都是相对于主MBR中的扩展分区的位置值。

 

下面看一下我在写入分区表时,个分区的偏移情况,可以对比一下,红色是主分区,蓝色是扩展分区,绿色是逻辑分区

start sect: 2048, end sect: 206847, pri
start sect: 206848, end sect: 88542144, pri
start sect: 88543232, end sect: 103131135, pri

start sect: 103131136, end sect: 234438655, ext
start sect: 103133184, end sect: 151257087, log
start sect: 151259136, end sect: 193478655, log
start sect: 193480704, end sect: 234438655, log

===============================
 part(0) start= 2048
 part(1) start= 206848
 part(2) start= 88543232

 part(3) start= 103131136      -->主MBR中的扩展分区
 

part(4) start= 2048  2048 + 103131136 = 103133184 这个值就是这个分区的在硬盘中的实际偏移位置,如上面所示
 part(4) ext start= 48127937 -->虚拟MBR中的扩展分区 48127937+103131136 = 151259073
(下一个

                                                                    虚拟MBR 置)+63=151259136 (下一个分区位置,如上面数据所示)

 

part(5) start= 63 -->这个63是相对于 48127937这个值的
 part(5) ext start= 90349505 -->虚拟MBR中的扩展分区
 

part(6) start= 63
 part(6) ext start= 0
-->最后一个虚拟MBR中的扩展分区位置为0,声明结束

 

 

 

你可能感兴趣的:(数据恢复)