【随笔】固态硬盘数据删除无法恢复(开启TRIM),注意数据备份

您所在的位置:网站首页 删除备份后有什么影响 【随笔】固态硬盘数据删除无法恢复(开启TRIM),注意数据备份

【随笔】固态硬盘数据删除无法恢复(开启TRIM),注意数据备份

2024-07-08 03:23| 来源: 网络整理| 查看: 265

文章目录 一、序二、机械硬盘和固态硬盘的物理结构与工作原理2.1 机械硬盘2.11 基本结构2.12 工作原理 2.2 固态硬盘2.21 基本结构2.22 工作原理 三、机械硬盘和固态硬盘的垃圾回收机制3.1 机械硬盘GC3.2 固态硬盘GC3.3 TRIM指令开启和关闭 四、做好数据备份

一、序

周末电脑突然关机,开机进入UEFI,发现启动项全部丢失(我有2快固态硬盘,分别安装了win11和Ubuntu22.04)。

原因猜测:固态可能有所损坏;平时有一些非正常关机(独显直连的情况下有时候不手动息屏,自动息屏后无法唤醒屏幕,一直黑屏,只能重启);其它。

由于Ubuntu安装简单,没有什么资料,于是我重新安装了Ubuntu(我有一个ventory启动盘,里面放了几个镜像,装系统很方便),想通过Ubuntu修复Windows引导,用了一些软件(比如什么testdisk),发现win11那块固态的分区丢失了,整个硬盘表现为没有分区的状态(这种原因相比应该是固态损坏导致分区表丢失了)。

在Ubuntu上用testdisk对这块硬盘进行修复,可以检测到丢失分区,但是只能恢复EFI分区,这肯定是无法正常启动Windows的。

于是我又使用Windows PE进行修复(我去无忧下载了几个PE的ISO,直接放在ventory里面启动的),使用DiskGenius恢复了硬盘的分区。

再次启动Windows,又报错0e,01,0f等错误。修复了半天,没搞好,遂使用华硕UEFI里面的云端还原功能来还原系统。

结果,它还原的时候把我电脑所有的硬盘都格式化了,还没提示😤😤,还是第一次遇到(通常只会格式化安装系统的硬盘)。

接着就是想着恢复数据了,以前使用的是机械硬盘,使用DiskGenius就可以恢复数据,这次发现不行。又使用了Disk Drill,Recuva等等(国产软件不用想)。

均无果,拿winhex软件看了一下硬盘,发现硬盘数据全变0,无法恢复。

winhex:是一款功能强大的磁盘编辑和数据恢复工具。可以用来磁盘编辑和数据恢复、磁盘和文件分析、数据处理和编辑、安全和取证。实用用途举例:你要出售一块机械硬盘,它是比较容易恢复删除、格式化之前的数据的,你可以使用winhex进行多次清理。

现在民间最好数据恢复工具应该是PC3000吧(价格好几万,不是很了解,国内好像有chao板的),由俄罗斯的 ACE Laboratory 公司开发。它包括专业硬件和专用软件,可以直接和硬盘的控制器通信。

在这里插入图片描述

但是问了淘宝商家,固态硬盘格式化后也无法借此恢复(能的话,我的数据也不值恢复的费用)。

所以本文就做知识记录与分享吧。

二、机械硬盘和固态硬盘的物理结构与工作原理 2.1 机械硬盘 2.11 基本结构

HDD 是一种使用旋转磁盘(盘片)的存储设备,它利用磁性材料在盘片表面上创建磁场,以存储和读取数据。

其主要部件包括:

盘片(Platter):通常是由铝合金、陶瓷或玻璃制成的圆形盘片,数据存储在其表面上。磁头(Read/Write Head):位于磁盘上方或下方的读写头部件,负责在盘片上读取和写入数据。马达:用于旋转盘片的电动马达,使盘片以高速旋转。传动臂(Actuator Arm):带有磁头的传动臂,负责在盘片上移动,定位到正确的磁道读取或写入数据。

在这里插入图片描述

体积大、读写慢、数据不易丢失(硬件损坏也能较大程度恢复数据)。

2.12 工作原理

磁场表示数据:

磁性材料被分成许多微小的区域,每个区域称为一个位(Bit)。当磁头写入数据时,它会改变盘片表面上每个位的磁性状态,即改变磁场的方向。 如果磁场朝向上,表示二进制 1;如果磁场朝向下,表示二进制 0。

数据读取:

当计算机需要读取数据时,控制器发送指令给磁头。传动臂定位磁头到正确的磁道,并旋转盘片找到数据所在的扇区。磁头测量磁场变化,将数据转换为电信号,传输给计算机进行处理。

数据写入:

计算机将要写入的数据转换为磁场变化。磁头定位到目标位置,将数据的磁场模式写入盘片表面。

旋转速度:

机械硬盘的性能受到旋转速度的影响。通常以每分钟转数(RPM)来衡量,常见的速度为 5400 RPM、7200 RPM,甚至更高。 2.2 固态硬盘 2.21 基本结构

固态硬盘是一种使用闪存存储数据的硬盘,其主要部件包括:

存储芯片(NAND Flash Chips):由多个存储单元组成的芯片,用于存储数据。控制器(Controller):管理芯片、数据传输和读写操作的主要部件。DRAM 缓存:用于临时存储数据和加速访问的缓存器件。

在这里插入图片描述

NAND 闪存的基本组成:

晶体管:NAND 闪存中的存储单元是由晶体管构成的,每个存储单元包含一个或多个晶体管。控制门(Control Gate):晶体管中有一个控制门,用于控制存储单元是否写入电荷。浮动栅(Floating Gate):控制门和晶体管之间有一个浮动栅,用于存储电荷。当存储单元需要写入数据时,电荷会被注入到浮动栅中。 -在这里插入图片描述

SSD体积小,速度快,数据不易恢复。

2.22 工作原理

SSD和HDD原理不同,简单来说一个是利用磁场一个是利用电场。

写入数据:

当需要写入数据时,控制器会向特定的存储单元发送写入信号。存储单元中的控制门会打开,允许电荷通过,并存储到浮动栅中。通过在浮动栅中存储电荷的数量和状态来表示数据的位,通常是高电荷表示1,低电荷或无电荷表示0。

擦除数据:

SSD 中的存储单元不能直接覆盖写入数据,因此在需要擦除数据时,需要将存储单元中的浮动栅的电荷状态清除为初始状态。擦除操作会将浮动栅中的电荷全部释放,将存储单元恢复为无电荷状态。

读取数据:

当需要读取数据时,控制器会向特定的存储单元发送读取信号。存储单元中的电荷状态会影响到控制门的电流流动,通过检测电流的大小来判断存储单元中的电荷状态。这样就实现了读取操作,读取数据的过程不会改变存储单元中的电荷状态。 三、机械硬盘和固态硬盘的垃圾回收机制

机械硬盘(HDD)和固态硬盘(SSD)在垃圾回收(GC)(Garbage Collection)机制上有显著的区别,因为它们的存储技术不同。

3.1 机械硬盘GC

机械硬盘(HDD)没有明确的垃圾回收机制。

机械硬盘通常不涉及垃圾回收的概念,因为数据的存储是基于磁场的,而不是像固态硬盘那样基于电场。覆盖写入: 当文件被删除时,操作系统只是将其标记为可用空间,而不会立即擦除原始数据。新的数据可能会覆盖已删除的数据,使其不再可访问,但实际的数据擦除不会立即发生。 数据恢复: 由于机械硬盘不涉及垃圾回收,删除的文件仍然可能在磁盘上存在,只是不再被操作系统所识别。数据恢复工具可以通过扫描磁盘表面来找回已删除的数据,即使被覆盖也有可能部分或完全恢复。 3.2 固态硬盘GC

擦除操作的限制:

固态硬盘中的 NAND 闪存存储单元需要在写入新数据之前进行擦除操作。由于 NAND 闪存的特性,无法直接在单个存储单元上执行擦除操作(将存储单元中的浮动栅的电荷全部释放,将其恢复为初始状态,即无电荷或低电荷状态。),而是需要对整个块(Block)进行擦除,这可能涉及多个存储单元。擦除会减少SSD寿命,尤其是全盘格式化。

垃圾回收策略:

固态硬盘通常具有内置的垃圾回收策略,以确保可用空间的最大化和数据写入性能的最优化。当文件被删除时,固态硬盘可能不会立即擦除相应的存储单元,而是将其标记为垃圾数据。垃圾回收器定期执行擦除操作,将标记为垃圾的存储单元擦除为可用状态,以便存储新的数据。

写入放大问题:

垃圾回收操作可能导致写入放大(Write Amplification)问题,即实际写入到 NAND 闪存中的数据量可能大于应用程序实际写入的数据量。写入放大效应的原因:SSD写入前需要确保该存储单元是无电荷状态,但擦除要以Block为单位,写于少量数据却可能擦除较大区域;NAND flash的性能维护问题。写入放大可能会影响固态硬盘的性能和寿命。

TRIM命令:

操作系统可以通过发送 TRIM 命令来通知固态硬盘已删除的数据块,以加速垃圾回收过程。TRIM 命令告诉固态硬盘哪些存储单元不再被使用,并在空闲时间进行擦除 (立即擦除的说法时不准确的)。没有 TRIM 支持时,固态硬盘可能需要在写入新数据才先擦除旧数据,这会降低写入速度。

比较2和4,可知:固态硬盘开启TRIM指令后,删除的数据会在较短时间内被擦除,不开启TRIM时短时间内则有机会恢复删除的数据(没有写新数据)。擦除操作会在短时间内进行,但并不是马上进行,这还与操作系统、GC算法、SSD控制器设计等有关。但无论如何,都比不开启TRIM指令时的写数据时擦除快。

3.3 TRIM指令开启和关闭

win7及其之后的系统支持TRIM指令。

Windows查看状态:

fsutil behavior query DisableDeleteNotify

在这里插入图片描述

开启和关闭用管理员身份运行命令。

开启TRIM:

fsutil behavior set DisableDeleteNotify 0

关闭TRIM(不建议):

fsutil behavior set DisableDeleteNotify 1

TRIM指令开启和关闭状态下文件恢复测试:

拿一个Samsung的256G固态来做测试。

原来的文件: 在这里插入图片描述

先关闭TRIM指令,并格式化硬盘。

在这里插入图片描述 在这里插入图片描述

使用winhex可以看到底层数据并没有被删除(注意winhex应该使用管理员身份运行,选项-常规设置里面第一个):

在这里插入图片描述 这表明,不开启TRIM指令时,SSD不会马上进行GC,数据是可以恢复的。

现在使用winhex或者其他任何数据恢复软件都可以恢复的。

比如: 在这里插入图片描述

浪费时间,我就不恢复了,注意恢复的文件应该保存到其他硬盘,避免恢复的文件覆盖未恢复的文件。

现在开启TRIM指令,随便复制个文件到硬盘,再格式化。 在这里插入图片描述

数据完全擦除。

注意,开启TRIM指令,也有可能在短时间内成功恢复数据。因为它是在“合适的时间”擦除,可能几秒,也可能是几分钟后。

开启TRIM时,SSD的文件删除、快速格式化、慢格式化,都会在较短时间内擦除相应的存储单元。

四、做好数据备份

我通常会将编程项目push到GitHub,编辑文档也会开启云端同步。所以这次SSD被意外格式化,损失不大,不过可惜了好多好看的视频😊.

可以单独拿一个机械硬盘做备份,定期做好备份,备份可能遇到一些情况,比如主机要备份的文件时常增减,需要移动硬盘与之同步(或者进行历史多版本备份),可以借助一些软件来实现这种同步,比如:

FreeFileSync:这是一个开源免费的文件夹和文件同步工具,具有直观的用户界面和强大的功能。它支持双向同步、增量备份、过滤器等功能,可以满足各种同步需求。

SyncToy:这是由微软开发的免费文件同步工具(不过官网下架了,可以去第三方下载),适用于Windows系统。它可以帮助用户在不同位置的文件夹之间同步文件,并提供了多种同步模式,包括复制、更新、合并等。

rsync:对于Linux和macOS用户,rsync是一个非常强大的命令行工具,可以实现本地和远程文件夹之间的同步。它支持增量同步、压缩传输等功能。虽然是命令行工具,但具有丰富的选项和灵活性。在终端中输入 man rsync 可以查看其详细用法和选项。

GoodSync:这是一个跨平台的同步工具,支持Windows、macOS、Linux以及移动设备等多种平台。它提供了实时同步、备份、文件版本控制等功能,同时具有直观的界面和强大的配置选项。

重要存储使用RAID:

RAID 0:数据被分割成多个块,并且在多个硬盘上同时写入,以提高性能。RAID 0没有冗余,因此不提供数据容错能力。RAID 1:数据在两个硬盘上完全镜像备份,提供冗余以增强数据的可靠性。RAID 1的容量等于单个硬盘的容量。RAID 5:数据被划分成多个块,并且每个块及其校验信息被分布式地存储在所有硬盘上,以提高性能和容错能力。RAID 5至少需要三块硬盘,并且可以容忍一块硬盘的故障。RAID 6:类似于RAID 5,但提供更高的容错能力。RAID 6至少需要四块硬盘,并且可以容忍两块硬盘的故障。RAID 10:也称为RAID 1+0,是RAID 1和RAID 0的组合。数据被分割并复制到多个硬盘上,以提高性能和容错能力。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3