初买来一块硬盘,我们是没有办法使用的,你需要将它分区、格式化,然后再安装上操作系统才可以使用。一个完整硬盘的数据应该包括五部分:MBR,DBR,FAT,DIR区和DATA区。其中只有主引导扇区是唯一的,其它的随你的分区数的增加而增加。

主引导扇区

主引导扇区位于整个硬盘的0磁道0柱面1扇区,包括硬盘主引导记录MBR(Main Boot Record)和分区表DPT(Disk Partition Table)。其中主引导记录的作用就是检查分区表是否正确以及确定哪个分区为引导分区,并在程序结束时把该分区的启动程序(也就是操作系统引导扇区)调入内存加以执行。至于分区表,很多人都知道,以80H或00H为开始标志,以55AAH为结束标志,共64字节,位于本扇区的最末端。值得一提的是,MBR是由分区程序(例如DOS 的Fdisk.exe)产生的,不同的操作系统可能这个扇区是不尽相同。如果你有这个意向也可以自己去编写一个,只要它能完成前述的任务即可,这也是为什么能实现多系统启动的原因(说句题外话:正因为这个主引导记录容易编写,所以才出现了很多的引导区病毒)。

操作系统引导扇区

OBR(OS Boot Record)即操作系统引导扇区,通常位于硬盘的0磁道1柱面1扇区(这是对于DOS来说的,对于那些以多重引导方式启动的系统则位于相应的主分区/扩展分区的第一个扇区),是操作系统可直接访问的第一个扇区,它也包括一个引导程序和一个被称为BPB(BIOS Parameter Block)的本分区参数记录表。其实每个逻辑分区都有一个OBR,其参数视分区的大小、操作系统的类别而有所不同。引导程序的主要任务是判断本分区根目录前两个文件是否为操作系统的引导文件(例如MSDOS或者起源于MSDOS的Win9x/Me的IO.SYS和MSDOS.SYS)。如是,就把第一个文件读入内存,并把控制权交予该文件。BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数、分配单元(Allocetion Unit,以前也称之为簇)的大小等重要参数。OBR由高级格式化程序产生(例如DOS 的Format.com)。

文件分配表

FAT(File Allocetion Table)即文件分配表,是DOS/Win9x系统的文件寻址系统,为了数据安全起见,FAT一般做两个,第二FAT为第一FAT的备份, FAT区紧接在OBR之后,其大小由本分区的大小及文件分配单元的大小决定。关于FAT的格式历来有很多选择,Microsoft 的DOS及Windows采用我们所熟悉的FAT12、FAT16和FAT32格式,但除此以外并非没有其它格式的FAT,像Windows NT、OS/2、UNIX/Linux、Novell等都有自己的文件管理方式。

目录区

DIR是Directory即根目录区的简写,DIR紧接在第二FAT表之后,只有FAT还不能定位文件在磁盘中的位置,FAT还必须和DIR配合才能准确定位文件的位置。DIR记录着每个文件(目录)的起始单元(这是最重要的)、文件的属性等。定位文件位置时,操作系统根据DIR中的起始单元,结合FAT表就可以知道文件在磁盘的具体位置及大小了。在DIR区之后,才是真正意义上的数据存储区,即DATA区。

数据区

DATA虽然占据了硬盘的绝大部分空间,但没有了前面的各部分,它对于我们来说,也只能是一些枯燥的二进制代码,没有任何意义。在这里有一点要说明的是,我们通常所说的格式化程序(指高级格式化,例如DOS下的Format程序),并没有把DATA区的数据清除,只是重写了FAT表而已,至于分区硬盘,也只是修改了MBR和OBR,绝大部分的DATA区的数据并没有被改变,这也是许多硬盘数据能够得以修复的原因。但即便如此,如MBR/OBR/FAT/DIR之一被破坏的话,也足够咱们那些所谓的DIY老鸟们忙乎半天了……需要提醒大家的是,如果你经常整理磁盘,那么你的数据区的数据可能是连续的,这样即使MBR/FAT/DIR全部坏了,我们也可以使用磁盘编辑软件(比如DOS下的DiskEdit),只要找到一个文件的起始保存位置,那么这个文件就有可能被恢复(当然了,这需要一个前提,那就是你没有覆盖这个文件……)。

硬盘分区方式

我们平时说到的分区概念,不外乎三种:主分区、扩展分区和逻辑分区。主分区是一个比较单纯的分区,通常位于硬盘的最前面一块区域中,构成逻辑C磁盘。在主分区中,不允许再建立其它逻辑磁盘。

扩展分区的概念则比较复杂,也是造成分区和逻辑磁盘混淆的主要原因。由于硬盘仅仅为分区表保留了64个字节的存储空间,而每个分区的参数占据16个字节,故主引导扇区中总计可以存储4个分区的数据。操作系统只允许存储4个分区的数据,如果说逻辑磁盘就是分区,则系统最多只允许4个逻辑磁盘。对于具体的应用,4个逻辑磁盘往往不能满足实际需求。为了建立更多的逻辑磁盘供操作系统使用,系统引入了扩展分区的概念。

所谓扩展分区,严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。这样在主引导扇区中除了主分区外,仅需要存储一个被称为扩展分区的分区数据,通过这个扩展分区的数据可以找到下一个分区(实际上也就是下一个逻辑磁盘)的起始位置,以此起始位置类推可以找到所有的分区。无论系统中建立多少个逻辑磁盘,在主引导扇区中通过一个扩展分区的参数就可以逐个找到每一个逻辑磁盘。

需要特别注意的是,由于主分区之后的各个分区是通过一种单向链表的结构来实现链接的,因此,若单向链表发生问题,将导致逻辑磁盘的丢失。既然要进行数据的恢复,当然数据的存储原理我们不能不提,在这之中,我们还要介绍一下数据的删除和硬盘的格式化相关问题……

文件的读取

操作系统从目录区中读取文件信息(包括文件名、后缀名、文件大小、修改日期和文件在数据区保存的第一个簇的簇号),我们这里假设第一个簇号是0023。

操作系统从0023簇读取相应的数据,然后再找到FAT的0023单元,如果内容是文件结束标志(FF),则表示文件结束,否则内容保存数据的下一个簇的簇号,这样重复下去直到遇到文件结束标志。

文件的写入

当我们要保存文件时,操作系统首先在DIR区中找到空区写入文件名、大小和创建时间等相应信息,然后在Data区找到闲置空间将文件保存,并将Data区的第一个簇写入DIR区,其余的动作和上边的读取动作差不多。

文件的删除

Win9x的文件删除工作却是很简单的,简单到只在目录区做了一点小改动——将目录区的文件的第一个字符改成了E5就表示将改文件删除了。

转载于:https://blog.51cto.com/ahead51/334285

数据恢复knowledge相关推荐

  1. Redis 笔记(14)— 持久化及数据恢复(数据持久方式 RDB 和 AOF、数据恢复、混合持久化)

    1. 持久化 所谓持久化是指将数据从内存中以某种形式同步到硬盘中,在 Redis 重启后能够根据硬盘中的记录恢复数据.Redis 持久化有两种方式,分别为 RDB(redis data base) [ ...

  2. Redis 高级特性(3)—— 持久化及数据恢复

    1. 持久化概念 所谓持久化是指将数据从内存中以某种形式同步到硬盘中,在 redis 重启后能够根据硬盘中的记录恢复数据.Redis 持久化有两种方式,分别为 RDB [快照]方式 和 AOF [日志 ...

  3. 知识蒸馏(Knowledge Distillation)详细深入透彻理解重点

    知识蒸馏是一种模型压缩方法,是一种基于"教师-学生网络思想"的训练方法,由于其简单,有效,在工业界被广泛应用.这一技术的理论来自于2015年Hinton发表的一篇神作: 论文链接 ...

  4. Distilling the Knowledge in a Neural Network 论文笔记蒸馏

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/bryant_meng/article/ ...

  5. iphone照片永久删除怎么恢复_怎么恢复删除的照片?专业数据恢复软件轻松搞定...

    怎么恢复删除的照片?照片相信对大家来说也都并不陌生,不管是旅游还是聚会,很多人往往也都会随手一拍,并将这些照片作为留恋.所以现在的生活中,用于拍照的设备也都越来越多,同时很多人对于所拍照片的清晰度也有 ...

  6. 4块硬盘做raid几_HP-P4500存储RAID硬盘离线数据恢复案例

    在这里北亚小编分享一篇关于HP-P4500存储RAID硬盘离线数据恢复案例,经客户描述:一台HP-P4500的存储系统,底层是12块1TB的硬盘组的RAID.其中每6个1TB的盘一组,第一组的前面一部 ...

  7. 分享十款免费数据恢复软件

    绝大多数的数据恢复软件都可以帮助你恢复被删除的文件.免费数据恢复软件可帮助你"取消删除"或者恢复电脑中的文件.那些你已经删除而且最近从回收站清空的文件仍然存在硬盘上(或介质卡或US ...

  8. raid5数据恢复成功案例

    [故障是怎么发生的] 服务器型号:Dell POWEREDGE服务器 Raid级别:12*500G 硬盘组成raid5 系统平台:Linux平台 文件系统:ext3文件系统<br/> 故障 ...

  9. mysql数据库数据恢复_Mysql数据库delete删除后数据恢复报告

    数据库环境部署与故障原因: 本次恢复的数据库安装在客户本地服务器上,服务器操作系统为windows2008 r2 .在当前环境内安装有mysql5.6单实例,引擎类型为innodb,表内数据存储所使用 ...

最新文章

  1. 数据结构--搜索BFS
  2. java 简单万年历_JAVA实现的简单万年历代码
  3. 云端卫士DDoS防护解决方案助力互联网金融安全
  4. Django简介Django 各个环境下的安装
  5. 操作多个表_2_组合相关的行
  6. 总说手机没有“好壁纸”,Python一次性抓取500张“美女”图片,够不够用!
  7. 网线制作(一根网线劈开给2台同时上网使用)
  8. 用python做生物信息数据分析_基于Python的自动获取生物信息数据的软件设计
  9. 千万不要这样写代码!9种常见的OOM场景演示
  10. 史上最完整Java中将File转化为MultipartFile的方法(附阿里云腾讯云对象存储API对照)
  11. 10电脑睡眠后自动关机怎么回事 win_Win8.1睡眠后自动关机如何解决 Win8.1电脑睡眠时间久了自动关机怎么办...
  12. 2018年python工作好找吗-2018年排名前20的数据科学Python库
  13. lucky的时光助理-2017.02
  14. 《算法图解》第四章课后作业
  15. gitlab 注册runner
  16. edge 打开PDF文件显示无法加载插件
  17. Dremel的学习与理解
  18. NX二次开发 UFUN创建倒角特征 UF_MODL_create_chamfer
  19. Echarts——旭日图
  20. 如何自学 Android 编程-----整理stormzhang的知乎问答

热门文章

  1. redmine plugin
  2. c#_HashSet
  3. 实时获取ccd图像_薄膜瑕疵在线检测系统0.1mm检测精度_实时在线检测
  4. python中字符串的布尔值_Python基础之字符串,布尔值,整数,列表,元组,字典,集合...
  5. 小程序promise封装post请求_微信小程序promise封装get/post请求
  6. android activity启动流程_1307页!一线大厂Android面试全套真题解析!
  7. matlab如何截取图像的中间部分_利用matlab提取并分割RGB图像中的某一个已知像素值的图像...
  8. linux磁盘管理原理,Linux操作系统中磁盘存储区管理的原理与技巧
  9. python 插值_三次样条插值在Python中的实现
  10. python创建数组放入矩阵_python创建数组并存入数据库