SSD 随时间推移而变慢

SSD 随时间推移而变慢

我在 1TB SanDisk SDSSDH3-1T00-G25 磁盘上安装了 Windows,已经使用了大约两年。我注意到速度变慢了,但没怎么在意(这不是我经常使用的电脑),然后一周前我注意到夜间完整备份花费的时间非常长。

据 WINSAT 称,该磁盘真的它在随机访问时很慢,但更彻底的测试表明,它在非常长的连续读取时也非常慢。

这是一个硬件问题,但我无法诊断,SanDisk Dashboard 显示 SSD 完好无损,剩余 99% 的使用寿命。1TB 大小是因为我升级了 256GB 磁盘并以优惠价格购买了 SSD,但我从未将其填充超过 300GB,因此这不是“SSD 几乎已满”的效果。板载固件是最新的(没有可用的更新)。Windows TRIM 状态为“已启用”(fsutil behavior query DisableDeleteNotify从提升的提示符运行返回“0”,这是应该的)。

我怎么知道这是硬件问题-- 因为,为了彻底解决问题并可靠地检查它,我买了另一个 SSD(三星 870 EVO),并使用外部底座克隆了旧的 SSD,无需连接电脑即可运行。1TB 克隆通常需要 10 到 15 分钟。这花了十四个小时

在外部 USB3 外壳中,旧磁盘以 2-5 MB/s 的吞吐量顺利运行且没有错误 - 我想我曾经拥有一些速度这么慢的旧 IDE 磁盘,但那是很久以前的事了,我不确定:-)。

有人遇到过这个吗?但真正的问题是:有没有办法恢复 - 或者至少增加 - SSD 速度?如果可能的话,我有点想利用 1TB 外置磁盘上剩余的 99% 的使用寿命。如果它要么是驱动器性能下降,要么是即将发生故障的迹象,或者如果我不能确定是否有可靠的存储,那么我当然会把它扔掉。

我计划在空闲时间进行的测试:

  • 运行 SMART 测试。我的错,在克隆磁盘之前我没有想到要这样做。
  • 使用 1 米 USB 电缆运行外部设备,从冰箱里。我知道非常高的温度可能会擦除SSD,但简单的夏季热浪又如何呢?如果他们能减慢设备的速度呢?我在 6 月初开始注意到速度减慢,所以或许...?
  • 重新读取和重新写入整个表面。也许我遇到了“难以可靠读取”的扇区问题。我将使用ddLinux 刷新设备。

答案1

旧数据的读取速度会更慢

(这不是我经常使用的电脑),然后一周前我注意到夜间完整备份花费了很长时间

一般来说,“热”数据(频繁变化并因此被重写的数据)的读取速度将比“冷”数据(写入驱动器并长时间保持不变的数据)更快。

SSD 需要付出更多努力来读取较冷的数据。NAND 单元中的电荷会随着时间的推移而下降,下降越多,驱动器就越需要依靠错误校正甚至所谓的 RR 寄存器来读取数据。

后者意味着 SSD 将尝试不同的阈值来决定单元内的数据代表零还是一。

当我们使用专门的数据恢复软件处理单个 NAND 芯片时,看看改变这些值如何显著提高读取成功率:

https://youtu.be/pSIJKt_uBfc

请注意,视频中的软件尝试模拟 SSD 控制器(和其他闪存控制器)在正常操作期间从 NAND 恢复数据的操作。

这对 SSD 用户来说没有多大实际价值,但可以演示 SSD 动态“恢复”数据的过程。所有这些错误恢复过程都需要时间,并且会使 SSD 看起来很慢。

启用 TRIM 并不意味着 Windows 将 TRIM

Windows TRIM 状态为“已启用”(从提升的提示符运行 fsutil 行为查询 DisableDeleteNotify 返回“0”,这是应该的)。

即使如此,Windows 也只会 TRIM NTFS 驱动器。因此,如果您出于某种奇怪原因决定使用 exFAT,Windows 将不会发送 TRIM 命令。

我还注意到某些文件系统错误会导致 Windows 不发送 TRIM 命令。

这些只是为了说明的例子,即使您怀疑 Windows 会因为配置而发送 TRIM 命令,但并不意味着它总是会这样做。

此外,我们还需要了解 TRIM 的作用和不作用,以及它主要如何影响写入速度。TRIM 本身不执行任何操作,它只是一个命令,允许操作系统或实用程序通知 SSD 可以自由擦除的 LBA 地址。

因此,SSD 现在可以将它们放在一边,供“垃圾收集器”使用,然后垃圾收集器会重新排列它们,以便拥有可以擦除的擦除块。此时,擦除块内的页面即可再次使用。

这些过程需要时间,因此甚至如果我们处理的 SSD 有 50% 的可用空间,如果我们不断地重写 50% 的已占用空间,那么垃圾收集器仍然有可能无法跟上,我们必须等待 SSD 释放我们要写入的数据的页面。

SMART 数据可能有用

运行 SMART 测试。我的错,在克隆磁盘之前我没有想到要这样做。

我觉得对于这种类型的问题,你不应该告诉我们 SMART 是可以的,而应该发布实际的截图或 txt 报告。

温度的影响

使用 1 米长的 USB 电缆从冰箱内部运行外部设备。我知道非常高的温度会擦除 SSD,但简单的夏季热浪又如何呢?如果它们可以减慢设备速度怎么办?我在 6 月初开始注意到速度减慢,所以也许……?

热量不会抹去 SSD 上的数据,但确实可能会引发“电荷泄漏”,即单个单元中的电荷水平下降的现象。但很多因素都会影响单元内的电荷水平,甚至读取和写入相邻单元也会“注入”电荷。在“冷”时写入,在“热”时读取也可能会造成不良影响。

回到我之前提到的特殊 RR 寄存器:

我的同事在 SSD 和 NAND 数据恢复方面比我更精通,他们观察到温度对读取质量的影响,甚至影响到是否需要使用 RR 的程度。换句话说,通过冷却或加热 NAND 芯片,RR 的需要就消失了,并且据推测,通过冷却或加热 NAND,温度更接近编程或写入 NAND 时的温度。

与冷冻相比,保持稳定的环境温度可能是最好的方法。

读/写表面扫描

重新读取和重新写入整个表面。也许我遇到了“难以可靠读取”的扇区问题。我将使用 Linux 中的 dd 来刷新设备。

要检测读取问题,无需浪费整个 p/e 周期,您只需驱动器。使用 dd 的读/写扫描不只是写入一次,它将引发大量的“写入放大”事件。

此外,一旦您写入每个 LBA 扇区,整个 LBA 空间将在 FTL 中“映射”,只留下过度配置的空间供垃圾收集器擦除陈旧的页面。

这就像 100% 利用文件系统一样,我们知道这在 SSD 上不是一个好主意。它应该能够处理它,但在我看来这远非理想。

如果你擦除整个驱动器,或者使用 dd 对其进行读写,至少要确保在重新使用驱动器时修剪整个空间,例如使用https://github.com/tenox7/disktrim

结束语

将“原始状态”的 SSD 与 2 年前的 SSD 进行比较,假设规格相当,则全新的 SSD 总是更胜一筹。

如果规格不同,那么比较是不公平的。更现代的 SSD 或装备更好的 SSD(更高效的 ARM CPU、更好的固件、更多的伪 SLC NAND 等等)可能会让较旧的 SSD 在特定情况下执行其功能时看起来“有问题”。

备份 SSD、TRIM 整个“表面”,然后从备份中恢复数据应该可以很大程度上恢复预期速度,尽管这永远无法抵消“磨损”。

相关内容