关于本站
管理团队
  
胡杨林-福建IT·互动主题区  [登录] [注册] [发表新文章]  

作者: NoNoToday 收藏:0 回复:0 点击:3264 发表时间: 2007.06.09 08:51:59

硬盘数据恢复入门教程[二]----数据存储原理篇[转载]


  既然要进行数据的恢复,当然数据的存储原理我们不能不提,在这之中,我们还要介绍一下数据的删除和硬盘的格式化相关问题……
  
  文件的读取
  
  操作系统从目录区中读取文件信息(包括文件名、后缀名、文件大小、修改日期和文件在数据区保存的第一个簇的簇号),我们这里假设第一个簇号是0023。操作系统从0023簇读取相应的数据,然后再找到FAT的0023单元,如果内容是文件结束标志(FF),则表示文件结束,否则内容保存数据的下一个簇的簇号,这样重复下去直到遇到文件结束标志。
  
  文件的写入
  
  当我们要保存文件时,操作系统首先在DIR区中找到空区写入文件名、大小和创建时间等相应信息,然后在Data区找到闲置空间将文件保存,并将Data区的第一个簇写入DIR区,其余的动作和上边的读取动作差不多。
  
  文件的删除
  
  Win9x的文件删除工作却是很简单的,简单到只在目录区做了一点小改动——将目录区的文件的第一个字符改成了E5就表示将改文件删除了。
  
  附录:Fdisk和Format的一点小说明
  
  和文件的删除类似,利用Fdisk删除再建立分区和利用Format格式化逻辑磁盘(假设你格式化的时候并没有使用/U这个无条件格式化参数)都没有将数据从DATA区直接删除,前者只是改变了分区表,后者只是修改了FAT表,因此被误删除的分区和误格式化的硬盘完全有可能恢复……
  系统启动流程
  
  各种不同的操作系统启动流程不尽相同,我们这里以Win9x/DOS的启动流程为例。
  
  第一阶段:
  
  系统加电自检POST过程。POST是Power On Self Test的缩写,也就是加电自检的意思,微机执行内存FFFF0H处的程序(这里是一段固化的ROM程序),对系统的硬件(包括内存)进行检查。
  
  第二阶段:
  
  读取分区记录和引导记录。当微机检查到硬件正常并与CMOS设置相符后,按照CMOS设置从相应设备启动(我们这里假设从硬盘启动),读取硬盘的分区记录(DPT)和主引导记录(MBR)。
  
  第三阶段:
  
  读取DOS引导记录。微机正确读取分区记录和主引导记录后,如果主引导记录和分区表校验正确,则执行主引导记录并进一步读取DOS引导记录(位于每一个主分区的第一个扇区),然后执行该DOS引导记录。
  
  第四阶段:
  
  装载系统隐含文件。将DOS系统的隐含文件IO.SYS入内存,加载基本的文件系统FAT,这时候一般会出现Starting Windows 9x...的标志,IO.SYS将MS.SYS读入内存,并处理System.dat和User.dat文件,加载磁盘压缩程序。
  
  第五阶段:
  
  实DOS模式配置。系统隐含文件装载完成,微机将执行系统隐含文件,并执行系统配置文件(Config.sys),加载Config.sys中定义的各种驱动程序。
  
  第六阶段:
  
  调入命令解释程序(Command.com)。系统装载命令管理程序,以便对系统的各种操作命令进行协调管理(我们所使用的Dir、Copy等内部命令就是由Command.com提供的)。
  
  第七阶段:
  
  执行批处理文件(Autoexec.bat)。微机将一步一步地执行批处理文件中的各条命令。
  
  第八阶段:
  
  加载Win.com。Win.com负责将Windows下的各种驱动程序和启动执行文件加以执行,至此启动完毕。
  主分区表数据及分析
  
  在英文字典中,对主引导区的定义如下:
  
  Master Boot Record:The Master Boot Record is located at the physical beginning of a hard disk, editable using the Disk Editor. It consists of a master bootstrap loader code (446 bytes) and four subsequent, identically structured partition records. Finally, the hexadecimal signature 55AA completes a valid Master Boot Record.
  
  硬盘的主引导记录在硬盘的0磁头0柱面1扇区。
  
  主引导记录由三部分组成:
  
  
  1.主引导程序;
  
  2.四个分区表;
  
  3.主引导记录有效标志字。
  
  说明:
  
  分区表自偏移1BEH处开始,分区表共64个字节,表中可填入四个分区信息,每十六个字节为一个分区说明项。
  必须注意:扇区号的高二位占用柱面号所在字节的最高二位,即柱面号为10位,扇区号6位。
  
  重要公式:02H为X,03H为Y。柱面=(X>>6)*16^2+Y;
  
  举个例子:一块硬盘有九个可用分区,二个不可用分区;两个Primary NTFS分区,第二个为active;七个Extened 分区,第五个为NTFS其他为FAT32.主分区表数据:位置cylinder0, head 0,sector1
  
  主分区表分析:
  
  Master bootstrap loader code0000H -00D9H 33 C0 8E D0 BC 00 7C FB 50 。。。主引导记录代码,表示主分区表
  
  01BEH -01CDH 分区1结构信息
  
  multi(0)disk(0)rdisk(0)partition(0)知该分区Boot Sector位于:起始磁头为0头,起始柱面为70D,起始扇区为1扇区。01
  
  CEH -01DDH 分区2结构信息
  
  multi(0)disk(0)rdisk(0)partition(1)
  活动分区指示符为80H,表示该分区为可自举分区。系统标志为07表示OS/2 HPFS, Windows NT NTFS, Advanced Unix系统。知该分区Boot Sector位于:起始磁头为0头,起始柱面为304D,起始扇区为1扇区。
  
  01DEH -01EDH 分区3结构信息
  
  Extended partition系统标志字节为0F,说明是扩展分区Extended partition (using INT 13 extensions)。从扩展分区说明项知下一个分区表位于:起始磁头为0头,起始柱面为435D,起始扇区为1扇区。
  
  01EEH -01FDH 分区4结构信息
  
  分区说明项数据均为00H没有定义。01FEH -01FFH 55 AAH 主引导记录有效标志
  扩展分区数据及分析
  
  扩展分区表分析
  
  01BEH -01CDH 分区1结构信息
  
  multi(0)disk(0)rdisk(0)partition(3)知该分区位于:起始磁头为1头,起始柱面为435D,起始扇区为1扇区(分区表占用磁头0)。系统标志字0BH表示 Windows 95+ FAT32
  
  01BEH -01CDH 分区1结构信息
  
  系统标志字节为05H,说明是扩展DOS分区。于是知下一个分区表位于:起始磁头为0头,起始柱面为777D,起始扇区为1扇区。
  Partition Table Entry #3 数据均为00H没有定义。
  Partition Table Entry #4 数据均为00H没有定义
  其他扩展分区同理。
  
  深入逻辑分区
  
  逻辑分区结构
  
  现在深入每一个逻辑分区,逻辑分区结构如下:
  
  FAT12/16
  
  Logical sector =0 Logical sector=1
  (Floppy disk=1~9) Logical sector=1+sectors_per_FAT
  (Floppydisk=10~18) Logical sector=1+sectors_per_FAT*2
  (Floppy disk=19~32) Logical sector=1+sectors_per_FAT*2+sectors_of_rootdirectories
  (Floppy disk=33~)
  DOS Boot Sector FAT1 FAT2 ROOT Directory Data area(where files and subdirectories are stored)
  
  FAT32
  
  Usually 32 sectors Logical sector =0032h Logical sector =0032h+ 2*sectors_per_FAT
  DOS Boot Recore 3 Sectors Reserved sectors Copy of record Reserve sectors FAT1 FAT2 Data area(where files and all bdirectories are stored)
  
  在逻辑分区当中用逻辑的cluster和sector。
  换算关系为:
  cluster=logical_sector/sectors_per_cluster;
  这里sectors_per_cluster是在BIOS Parameter Block里得到的。
  Sector=( logical_sector mod sectors_per_track)+1;
  Head=( logical_sector / sectors_per_track)mod total_heads;
  Cylinder= logical_sector(sectors_per_track* total_heads);
  logical_sector=( cluster-2)*sectors_per_cluster+sector_of_file_area_offset;
  logical_sector=(sector-1)+head*sector_per_track+sector*sector_per_track*heads;
  
  每个扇区长度=512字节
  总簇数=逻辑盘容量/簇容量
  总簇数=FAT表长度(字节)/每个表项长度(字节)-2FAT表长度=逻辑盘容量/簇容量*每个表项长度
  
  Dos引导记录块位于逻辑0 sector中包含三部分:
  
  1. 磁盘IO参数表BPB
  2. 磁盘基数表
  3. 引导区代码


转载    收   藏  

回复


回复主题: 回复在论坛 回复到信箱
回复内容:
附加签名:
上传贴图:
图片要求:长宽建议不超过:650×650。大小:300K 以内,文件后缀名必须为:.gif 或.jpg 或.png
      
版主推荐:
文坛新文:
作者其它文章:

Copyright 2002-2008 版权所有
胡杨林© All rights reserved.
服务支持拓商网