大家好!
在本文中,我们将讨论大约14年前SSD时代初期出现的TRIM命令,它已成为所有现有固态硬盘的原生功能。

那么,它是什么,又是如何工作的呢?
TRIM – 是一个与操作系统协同工作的内部硬件SSD命令。默认情况下,TRIM已完全集成在所有操作系统中,从Windows Vista SP1、Windows 7和MacOS X 10.6开始(大约从2009-2010年起)。
我们知道NAND内存芯片可以极快地写入和读取信息。但重写会变得极其缓慢,因为NAND内存必须:
-
找到写入新数据的位置;
-
擦除旧数据(用零填充NAND单元);
-
执行写入操作。
为了防止这种缓慢的处理过程,SSD工程师决定添加TRIM命令(垃圾回收器),它在后台擦除所有标记为已删除的数据。这有助于在未来用户决定在已被TRIM和清理过的位置写入新数据时节省时间。SSD如何知道哪些数据应该被TRIM呢?操作系统会告诉驱动器哪些数据被标记为"已删除",SSD只需擦除属于已删除区域的块。

TRIM活动示意图

DE中TRIMed文件夹大小为零
有时SSD可以做更简单的事情 – 在快速格式化的情况下,SSD直接擦除转换器 – 这是将物理扇区映射到逻辑扇区的主微程序。结果,当尝试从中读取任何数据时,SSD只返回零(新的逻辑转换器对旧的物理数据一无所知,因此它"读取"的只是零)。
当您误通过数码相机格式化mSD、SD和CF卡时,数码相机也会做同样的事情。在原始恢复中,您找不到任何东西,因为转换器已被擦除,而新版本的转换器也不关心任何旧数据。
在这种情况下,我们使用PC-3000 Flash和我们的方法来读取mSD/SD的NAND内存并重建镜像。然后就有可能看到原始数据,有时甚至可以构建具有完整或部分文件夹结构的镜像。
但对于SSD,芯片取下来方法行不通,因为所有现代SSD都包含全硬件加密或带有数据压缩的自适应XOR,因此在解密之前,我们无法在NAND内部看到任何数据。
还记得过去客户带给您一个格式化过的硬盘并要求恢复数据的美好时光吗?只需在DE中点击几下按钮,您就能获得完整的文件夹结构和几十GB的原始数据。
不幸的是,这些日子已经一去不复返了,因为即使是基于叠瓦式磁记录(SMR)技术的经典硬盘驱动器也使用TRIM!结果,快速格式化后,转换器被擦除,您将只得到零而不是真实数据。
但让我们回到SSD。格式化后的SMR恢复将是未来博客文章的另一主题。
那么,假设客户误格式化了其SSD,现在他想恢复数据。这可能吗?这取决于以下因素:驱动器容量、写入驱动器的数据量等。通常,驱动器在后台完全擦除数据需要10分钟到24小时。
现代SSD控制器具有多核结构,使它们能够同时执行多项任务。例如 – 当您尝试扫描驱动器并使用Data Extractor在原始恢复中至少找到一些东西时,另一个CPU核心将继续后台进程,所有数据将继续被擦除。
您应该记住的主要事情 – 即使驱动器只是连接到电源,它也在TRIM数据!如果您将基于SATA的SSD从SATA电缆上断开 – 这无济于事,因为CPU将在后台继续擦除。

默认驱动器初始化和处理
防止TRIM的唯一方法 – 禁用CPU对NAND芯片的访问!我们如何做到这一点?唯一的方法是使驱动器进入安全模式 – 这将帮助我们禁用对NAND芯片的任何访问,并使驱动器仅在CPU-RAM模式下运行。这样,我们可以向RAM写入内容或从RAM芯片读取信息,但无法影响NAND芯片。

HP EX900 M.2 NVMe驱动器上的安全模式短接示例

任何SSD上的安全模式示意图
现在,我们需要一个加载程序 – 一个由ACELab制作的特制且优化的小型固件。它就像一个与目标控制器兼容的微型固件,其中ACELab完全关闭了所有后台活动并解锁了一些先前被锁定的附加功能。如果我们有兼容的工具,我们可以尝试将加载程序加载到驱动器RAM中,并访问当前SSD的技术模式。然后 – 尝试使用其旧副本重建转换器,并将其上传到驱动器RAM中。之后,我们可以使用之前制作的自定义加载程序尝试在Data Extractor中访问数据。在这种情况下,驱动器将在单通道模式下工作 – 速度较慢,但没有任何后台活动。

加载程序上传后的技术模式示意图
现在让我们总结一下信息:
-
TRIM工作速度非常快。如果有数据被删除或驱动器被格式化,您只有几分钟时间,之后数据将永远消失;
-
不要将驱动器连接到电源!任何为了进一步研究而连接驱动器(通过SATA、M.2、USB等)的行为都会触发SSD CPU中的TRIM功能!
-
目标驱动器必须被PC-3000 SSD支持。如果不受支持,我们无法禁用TRIM或防止数据擦除;
为了演示其工作原理,让我们向您展示一个真实案例。我们这里有一个基于SM2259XT控制器和两个由英特尔/美光制造的NAND芯片的杂牌(SmartBuy NOVA)驱动器。


我们检查此驱动器上的内容,它充满了用户数据。一些视频、图片、文档 – 随机客户日常使用的所有内容。

现在,让我们尝试在Windows上使用快速格式化按钮格式化此驱动器;


如您所见,数据消失了。

在通用工具和Data Extractor中,我们将只看到零,因为DE使用本机驱动器转换器 – 并且这是在快速驱动器格式化后制作的新转换器。

通用工具中LBA 1 232 134处显示为零而非数据

驱动器格式化后的空分区

原始恢复中没有任何旧数据 – 只有分区格式化后的新NTFS记录
我们现在时间不多了,因为我们扫描驱动器的时间越长,后台被擦除的块就越多。我们需要赶紧将驱动器置于安全模式 – 这个技巧将帮助我们禁用CPU对NAND芯片的访问。

现在,让我们保持驱动器处于短接状态,因为对于Silicon Motion和Phison控制器,我们需要在驱动器初始化期间多次重新上电。SSD必须始终处于安全模式。
让我们启动兼容的SM2259XT工具(例如 – Silicon Power)并上传加载程序以激活驱动器额外功能。



有时我们需要手动选择兼容的加载程序


当驱动器完成初始化后,就可以启动转换器构建过程。驱动器将扫描服务区,获取一些包含关于重定位、删除、坏扇区和好扇区信息的重要SA模块,并以自动模式制作一个新的转换器。

转换器构建完成。转到Data Extractor,并使用PC-3000工具作为源创建一个新任务。


当一切准备就绪后,在对驱动器进行镜像之前,让我们先检查一下在驱动器格式化后填充为零的LBA 1 232 134。现在,它包含数据!

转换器构建后,LBA 1 232 134包含数据,而不是零!
当然,我们必须使用原始恢复来查看文件。如果我们找到了一些 – 让我们停止该过程并开始完整的驱动器镜像。如果驱动器出现一些问题,我们仍然拥有完整的内容副本。

现在,在原始恢复中,仅扫描了1,000,000 LBA后,我们就看到了大量数据!

逐扇区复制到另一个驱动器以供进一步分析
复制完成后,让我们回到原始恢复并尝试找到一些有用的东西。如您所见,原始恢复中充满了数据!不幸的是,有时文件夹结构可能会消失,因为快速格式化会覆盖包含主引导记录和BOOT扇区信息的零块。没有这些信息,文件系统将不存在。

仅扫描了10%的原始恢复后的结果 – 大量文件仍在SSD上
但是Data Extractor是一个非常强大的工具,即使在驱动器格式化的情况下,经过磁盘分析后,也有可能找到分区的旧副本并恢复它们。当然,这比完整的文件系统要差,但比仅仅只有原始恢复要好得多。
所以,朋友们,就是这样!关于如何使用PC-3000 SSD来防止TRIM的大量信息。让我们再次总结最关键的信息:
-
自2010年起,TRIM默认在每个操作系统和每个SSD中启用;
-
数据被TRIM的时间从1分钟到24小时不等(取决于驱动器容量和已删除数据量);
-
即使是快速格式化也会导致转换器擦除。所有数据在Data Extractor中将显示为零;
-
防止TRIM的唯一方法 – 将驱动器与电源断开或使其永久处于安全模式;
-
在删除或SSD格式化后仍然可以恢复数据,但驱动器必须被PC-3000 SSD支持!
如果您对数据恢复案例有任何疑问,欢迎向技术支持部门提出。