大家好!
上周我们在ACE Lab 免费网络研讨会上讨论了如何借助PC-3000 Flash在NAND Flash数据恢复中迈出第一步。作为后续,我们为您准备了这篇关于Flash案例恢复关键流程的文章。对于想要学习如何以最高效、最智能的方式处理NAND Flash的数据恢复初学者来说,这个话题会特别有趣。对于已有经验的数据恢复专家,本文可以作为处理Flash案例时主要数据校正方法的一个便捷检查清单。

首先,我们将讨论ECC校正和无效扇区的重读。
第一部分:理论。ECC。
在读取NAND存储芯片期间,可能会出现一些比特错误。比特错误的数量取决于以下因素:
►NAND存储芯片的类型(SLC, MLC, TLC, QLC)
►触点的清洁度(脏的芯片通常读取效果较差)
►温度影响(芯片拆焊时的高温可能会损坏存储单元)
►NAND存储单元的磨损程度(如果NAND设备上的信息被重写了数百次,微小存储单元-电容的质量就会下降,读取时会伴随大量错误)
►芯片质量低劣(如今,制造商为了削减成本,例如使用更小的技术工艺来压缩存储单元尺寸,导致新的闪存驱动器出现错误)
如果你想从闪存驱动器中获得最高的恢复率,首先,你需要尽可能多地修复ECC错误。否则,所有数据都将损坏、无法使用或部分受损:

错误校正的基本方法是ECC算法——最简单的数据修复方式。通常,控制器会在每个页面中加入额外的信息,称为备用区域(SA)。它包含一些标记(例如,用于镜像构建的标记)、不同的标志以及错误校正码(ECC)。ECC是基于用户最初写入的信息生成的特殊扩展数据。这些扩展数据有助于查找扇区/区域中的比特错误,并通过特殊的数学公式进行修复。通常,ECC码有特定的长度——即用于错误校正的字节数。ECC字节数越多,允许你在每个扇区/区域中修复更多的错误。
来自旧SLC NAND芯片的通用MBR扇区,页面大小为2112字节,扇区大小为528字节:

黄色 – 我们的数据区(DA)(512字节)
蓝色 – 我们在逻辑镜像中的块顺序标记(6字节),用于镜像构建的块号
绿色 – 错误校正码(ECC)(10字节):

PC-3000软件试图在以下扇区中找到所有比特错误:

然后它应用ECC码进行错误修复:

让我们进入实践部分。
我们有一个美光芯片,容量4GB,芯片ID:0x2C44444B
我们强烈建议您仅在转换图上自动检测ECC(不要在芯片上检测)。在芯片上校正ECC时可能会出现不同的错误。不要浪费时间在芯片上校正ECC(屏幕左侧芯片节点下的部分)。



然而,检测ECC并不总是那么容易。
在某些情况下,在检测和校正ECC之前,您应该检查您的转储是否存在坏字节或应用XOR(主要针对ITE, SSS, AU控制器),然后才能在图上检测ECC。如果我们谈论旧的SLC和MLC NAND案例,在您进行页面转换之前,ECC校正将无法进行。
第二部分:重读。
从下面的例子中您可以看到,在这种情况下ECC校正进行得不太顺利。校正质量取决于许多因素——这就是为什么当ECC校正结束时,您应该始终使用ECC信息构建映射,以检查还有多少扇区未被校正。



从截图中我们可以看到,在4GB容量中,有3.93GB的无效扇区。这意味着整个转储都充满了错误。每个文件都将损坏。要获得良好的比特错误原始恢复结果,错误率应低于5%,并且链的数量应少于100-500条。如果您没有注意链的数量,您可能会面临这样的情况:尽管只有几MB的错误,但您的文件却已损坏。
这时就该重读发挥作用了。
我们需要开始使用额外的数据校正方法——读取——来修复ECC校正后剩余的比特错误。
要启动读取过程,我们需要采取以下步骤:

选择‘执行’比‘在后台运行(Shift)’更好,以便能够看到当前正在修复多少错误。

通常,我们建议使用所有默认设置。读取尝试次数意味着重读的遍数。最好默认将此数字保持为1。‘如果成功’参数描述了在读取成功修复至少某些区域的情况下,额外的重读遍数。

正如我们所见,得到结果并没有花太长时间。一些区域被校正了,但有些区域即使通过重读也未能校正:

第三部分:读取重试。
在这种情况下,我们需要使用另一个功能——读取重试。这是一个特殊的NAND芯片命令,允许NAND存储芯片自行改变电压。NAND核心开始使用不同的电压电平来修复数据。这是一种特殊的自我修复系统,存在于所有QLC/TLC芯片以及一些现代MLC芯片中。目前,PC-3000 Flash支持针对大量QLC/TLC/MLC存储芯片的多种读取重试模式。随着每周PC-3000 Flash资源的更新,我们的工程师会为它们添加新的算法。

如果此读取重试命令复选框处于激活状态,您将能够获得令人印象深刻的重读结果:

下面您将找到另一个用于真正棘手案例的有用功能。
第四部分:节省时间的复合操作。
您可以通过使用复合操作功能来节省一点时间。如果您选择它,PC-3000软件会自动构建无效扇区映射并向您询问重读选项。但是,您将无法选择链的数量、它们的顺序等等。因此,尽管它会通过一些自动操作节省您的时间,但最终您可能会发现需要的链未被校正。



请记住,如果您遇到超过1个芯片的案例,您需要确保在完成重读转储后,将第一个芯片重新插入PC-3000 Flash读取器中。有时,在完成重读转储后,您可能会忘记将第一个芯片再次插入PC-3000 Flash读取器。因此,当ECC校正结束时,您可能会尝试重读第一个芯片(转换图上的第0部分),而读取器中却是第二个芯片。最终,您将得到两个本应不同但却相似的部分。因此,在开始重读过程之前,请注意读取器中的芯片。

第五部分:电压控制。
电压控制仅在最具挑战性的案例中有所帮助,即在进行ECC校正和重读程序后,比特错误的数量仍然非常高的情况。基本上,电压控制是一种读取重试操作,但是手动模式。我们不是让芯片自行设置电压,而是使用软件控制来设置自己的电压,用于读取NAND芯片中的每个页面。
每个芯片都知道它当前工作的温度。根据温度的变化,芯片的电压也会改变。这里您可以看到一个包含温度和电压近似值的表格。有时,由于芯片的内部问题,此表中的值可能会偏移,并且由于电压错误,您将无法重读扇区。

请注意,此选项仅在以下设备中可用:
► PC-3000 Flash Reader 3.0 + 电源适配器(上一代)
► PC-3000 Flash Reader 4.0(最新一代,电源适配器已集成)

如何设置电压控制?
当所有可能的错误修复准备工作都已完成,但错误数量仍在几百MB左右时,我们应该尝试使用电压控制。通常,如果NAND存储芯片支持读取重试,我们不应该使用不同的电压——读取重试总能提供最佳结果!
但有时,您的芯片可能不支持读取重试方法。这就是为什么您需要尝试检测电压范围并启动校正程序。
在您修复了ECC、进行了重读并构建了坏扇区映射之后,您需要进入重读菜单并选择下一个功能:

请记住,如果您点击‘更多’,然后点击‘读取重试方法检查’,您将能够检查读取重试的成功率并选择最佳方案。在大多数情况下,它会自动选择最佳变体,但有时您需要手动操作。



现在读取重试选项已经出现
第六部分:温度控制。
有时,即使在电压控制下进行重读后,您也无法获得良好的重读结果。在这种情况下你能做什么?
还有一种方法可以通过“调节”温度来获得更好的重读结果。对于某些存储芯片,非常低的温度(-15°С…-20°С)可能有助于增强芯片内部的电传输,从而提供最佳可能的结果。

图片由 CapitalDataRecovery 提供
在某些情况下,您可以尝试加热芯片。如果将其加热到+80°C…140°C,您也会获得良好的重读结果。

但您必须小心——高温会熔化塑料外壳并损坏读取器。
有关如何降低损坏芯片、读取器等风险的更多信息,请访问此链接。
让我们总结一下要点:
-
仅在准备图上检测和校正ECC
-
有时您需要使用附加功能来检测和校正ECC(坏字节、XOR或页面转换)
-
要获得良好的恢复结果,比特错误的数量应少于5%,并且未校正链的数量不应大于200-300条
-
如果您有很多比特错误,请使用重读
-
如果您的芯片支持读取重试方法,请使用它而不是其他选项
-
当NAND芯片不支持读取重试时,电压控制会很有用
-
如果您的芯片不支持读取重试,请尝试使用更多 – 读取重试模式检查(此方法仅适用于现代QLC/MLC/TLC芯片)
-
在一些AU、SSS、Phison和SM案例中,您可以使用重读映射生成器工具来节省时间。
-
在即使电压控制也无法帮助的情况下,您可以尝试“调节”温度。
祝您的Flash数据恢复案例顺利,如有任何问题,请随时联系我们的技术支持部门!