当前位置: 华文问答 > 数码

被删掉的电脑垃圾哪里去了?

2019-11-25数码

这是一个关乎计算机数据存储模式和文件系统的问题,要了解这一点首先要了解计算机是如何存储数据的.

首先目前的存储设备大多仍然以SSD和HDD为主,也就是所谓的固态硬盘和机械硬盘

图片来源于百度

前者上面那个一片一片的是Nand Flash芯片,而后者以磁盘作为其存储介质,磁盘的存储结构大致如下

图片来自https://blog.csdn.net/u013125075/article/details/86576640

不管是Nand Flash还是磁盘,对于计算机读写来说,其数据都是以二进制数据的形式进行编码的,也就是你们之前看到的一个一个填满0和1的小格子,这也就是说,不管你有没有使用存储介质来存储数据,它们最初都是由数据的,以Nand Flash为例,几款常用的Nand Flash初始状态时其网格内填写的都是1,而非0,这与他数据的写方式有关,如果需要对Nand Flash写入数据,需要将它的原始数据先全部写为1(加电),然后再对是0的单元格进行放电变为0

Nand Flash写之前

因此,当你使用WinHex工具打开你的U盘或者是SSD后,你可能会看到一连串的0xff(对应着二进制的全1),当然,上面的编码方式并不是绝对的,也有很多Flash芯片其初始编码为0的.但这些都没多大关系,存储介质的作用就是能够存储数据的状态就行了.

你可能已经注意到了,8个小格子每个格子代表了一个bit,8个bit组成了一个字节,1024字节组成1kb,1024kb为1M,1024M为1GB

一款128GB的SSD或者是HDD的bit如此之多,以至于我们要给每个bit都编码一个地址成本上来说是划不来的,因此我们采用的分而治之的思路,在早期HDD较为流行的时候,以HDD的物理性质对齐进行进一步的划分

1.首先,磁盘有数个盘片,每个盘片有2个面,每个面有一个磁头

2.在每一个盘片中,以扇形对他们进行分割,每个扇形区域又叫扇区

3.不同盘片相同半径构成的圆柱面叫柱面

因此,如果要计算你的磁盘容量,应该是

磁盘容量(字节)=磁头数*磁道数*扇区数*每扇区字节数

而对磁盘的最小操作单元大多是以扇区为单位进行操作的,这也就是说, 假如你想修改某一个bit,你需要将这个bit所在的整个扇区重新读写一遍.

这个编码方式的传统一直流传至今,乃至于现在SSD已经大规模普及,已经没有磁头.磁道的概念了,但是操作构成SSD的Nand Flash芯片时仍然大多是以扇区(Sector)或块(block)为最小写单位,以Page为最小读单位,当然这个单位到了操作系统上会进一步划分,因此你如果只是修改了一个字节,很可能到物理层面将会大动干戈将一片区域都重写一遍.

你可能会问,这个和我删文件有啥关系,别急,之前说了那么多我只是想先阐述一个道理,对SSD,HDD的存储介质的读写操作成本可能是很大的,如果数据规划不当,对存储介质的使用寿命和使用体验都会造成很大的影响

说到文件,那就和计算机的文件系统相关了,顾名思义, 文件系统就是将存储介质中的数据按照既定的规律进行规划管理,这样在用户的层面上看来,计算机的存储形式就不是一个一个bit的方式而能够以文件的形式进行管理.

上面这个概念很像国家,省份,市,(区)县,村,街道,几号某某某的区分方式,一个区的管理大多以乡镇而不会到某个村,这种分而治之的思想在计算机中仍然适用,

为了解计算机文件系统,我们需要先熟悉几个概念,其中我们以经典的FAT32文件系统为例

1.MBR(Main Boot Record)区

MBR也叫作主引导记录,尽管现在有很多其它的引导方式,但MBR区仍然是目前大多数计算机的主要引导方式,它位于位于硬盘的0磁道0柱面1扇区,或者说是第一扇区,它主要是一段引导代码和一个分区表,用于描述磁盘的分区信息.

因此,如果你的MBR区炸了,可能会导致你整个文件系统崩溃

为此,有很多的勒索病毒都乐忠于将MBR区的数据进行加密或迁移,并且使用恶意代码替换到引导代码中,例如,下面这个回答中的恶意程序就有很多的MBR勒索病毒

中了这种病毒,重装系统可能会导致你文件数据丢失,你可能需要重新分区,并使得文件恢复异常困难,不用担心,大多数编写这种病毒的都是彩笔,你可以在前几个扇区中找到被偷走的MBR区或者使用其备份来恢复. 如果你不知道如何处理且数据重要,一定要交给专业人士(比如你的做操作系统或底层开发的码农朋友)处理不要自己折腾.

2.DBR区

分区引导扇区也称DBR(DOS BOOT RECORD),DBR是由硬盘的MBR装载的程序段。DBR装入内存后,即开始执行该引导程序段,其主要功能是完成操作系统的自举并将控制权交给操作系统。每个分区都有引导扇区,但只有被设为活动分区才会被MBR装的DBR入内存运行(这段摘自百度百科),简单来说,它用来描述这个比如你的C盘D盘,E盘...使用在磁盘中起始扇区,结束扇区和使用的文件系统结构,包括一些根目录信息,分配单元大小之类的参数

3.FAT区

当然,本文只是以FAT32文件系统为例,所以这里是FAT区,不同的文件系统有不同的编码方式,到这一步,我们的计算机磁盘才真正有了文件的概念,为此,我们先对这几个区的做一个小结

硬盘数据结构(https://blog.csdn.net/li_wen01/article/details/79929730)

FAT区包括一个文件分配表和一个目录表,为了简化篇幅,我们重点关注下目录表,因为目录项中包含着描述文件信息的结构

FAT目录表

从结构中的首簇号(多个扇区组成一个簇,有时一个扇区表示一个簇是等价概念)我们可以知道,这个结构记录着这个文件的数据位于磁盘中的哪个位置,

也就是说,在磁盘中它类似于这种索引关系

因此,我们可以这么说,每一个目录项代表一个文件或者文件夹(没错,文件夹和文件实际上描述的结构都一样,只不过文件夹索引过去后又有一个目录项),这里尤其注意下目录项三,你可以看到,这个文件在磁盘存储中其存储空间并不是连续的,实际上每一个文件存储上是一个链式的结构,在早期的磁盘空间中,这种离散的存储可能导致磁盘的IO负担(读取变慢)

最后,我们迎来了这个问题的最终答案,如果需要删除一个文件/文件夹怎么办,其实,处理办法比你想的还要简单,比如我们要删除目录项2,我们只需要在目录项2上打个tag,它就不会在你的文件浏览器中显示了

你可以看到,删除的文件,它的数据和目录项与之的链接关系,仍然没有断开,这也就是为什么我们删除文件后(即使清空回收站),仍然能够使用工具将这个文件恢复的原因,因为本质上删除文件并不是一个"抹去"的过程,而是一个"加上"的过程.没有什么玄乎的东西,至于为什么这样做,显然如果回到磁盘中去抹数据

1.慢

2.抹除数据本质上仍然是一个重新写的过程,不利于存储介质的寿命.

当然,显然你也已经注意到了

快速格式化也仅仅只是将引导区的数据结构重置了一下,实际上磁盘中存储的数据仍然还在并可恢复,只有低级格式化才会将分区下的每一个扇区抹掉信息.

因此,如果你是像爱摄影的陈老师一样喜欢在电脑上放些小玩意,销毁数据时请使用低级格式化或者一把火把硬盘给烧了:P