据我所知,Windows 7 之前没有 TRIM/UNMAP 支持(SSD 驱动器使用了特殊工具),但从 2005 年左右开始使用闪存驱动器,并得到 Windows XP 的完全支持。
作为 USB 大容量存储设备,它们在 USB 上使用 SCSI 协议(我现在说得对吗?)。SCSI 中有 UNMAP,但它在 Windows XP 中也不受支持。
因此,USB 闪存驱动器知道某些块可能被删除的唯一机会是来自操作系统的写入请求。
这意味着使用一段时间后,整个驱动器就会变脏,并且速度总是很慢。没有办法告诉它删除任何块。你只能把它扔掉,然后买一个新的 USB 闪存驱动器。
但我确信事实并非如此。我错过了什么?
答案1
简短的一般回答是:得益于大量隐藏的 NAND 单元。
闪存驱动器的控制器通过应用垃圾收集器机制来维持写入性能:碎片化的空闲逻辑扇区被收集并映射到空闲的物理 NAND 块。垃圾收集器完全不受操作系统控制,这是一个完全在驱动器内部的后台进程(驱动器只需通电即可)。
如果驱动器上没有更多的可用空间,那么垃圾收集显然无法再工作(请注意,只有当驱动器在某个时刻完全填满时才会发生这种情况)。
为了解决这个问题,大多数驱动器上都隐藏着一定数量的 NAND 单元:即使驱动器“逻辑上已满”(从操作系统的角度来看),它也并非“物理上已满”,并且控制器仍然有一定的空间来应用垃圾收集。 https://www.seagate.com/fr/fr/tech-insights/ssd-over-provisioning-benefits-master-ti/
现在,隐藏单元的容量取决于驱动器类别:高端驱动器的容量较大,而入门级驱动器的容量较小。我还认为可以安全地假设廉价的 USB 密钥没有任何隐藏单元。
同样,并非所有驱动器都具有巧妙的垃圾收集机制,有些驱动器可能具有粗糙的垃圾收集机制,而有些驱动器(再次是廉价的 USB 密钥)可能没有任何垃圾收集器。
即使没有 TRIM,上面所写的所有内容也适用。
答案2
闪存驱动器技术种类繁多,因此很难给出一个非常笼统的答案。以下是一些建议,请记住,大多数闪存驱动器都是廉价制造的,其硬件会随着时间的推移而退化。
ATA 安全擦除 对于某些驱动器来说,TRIM 是一种替代方案。在文章中 让 USB 闪存再次快速写入 作者使用它将 64GB SanDisk Extreme USB 闪存盘的写入性能从 81.7 MB/S 提升到了 149.7 MB/S。
磁盘上的薄弱扇区可以通过格式化来改善(“慢” - 而不是快)
NTFS 格式可能比 FAT32 和 exFAT 更高效。例如,请参阅文章 FAT32 与 exFAT 与 NTFS USB3 性能比较。
在设备管理器中,将 USB 设置为“更好的性能”而不是“快速删除”将使 Windows 能够更好地缓存数据,但需要始终记住在写入后弹出驱动器。
更新设备和/或 USB 控制器的驱动程序。
频繁使用的 USB 端口可能会随着时间的推移而性能下降,因此请尝试另一个端口,并在机箱的前端口和后端口之间切换。
答案3
一些 USB3.x 驱动器支撑饰条。我不完全确定 Windows 是否可以使用它——Linux 可以。显然如果他们使用 UASP(USB 连接 SCSI)协议,trim 可能在 Windows 8+ 中运行。
至于 Q 的核心(如何在没有修剪的情况下做到这一点):我知道一些 USB2 控制器有特殊的技巧,因为它们了解 FAT32。因此,他们知道如何在文件系统上模拟修剪(通过观察 FAT),但不知道如何在 NTFS 或某些 Linux 文件系统上模拟修剪。当写入超出容量后,使用 FAT32 以外的其他文件系统时,此类驱动器的性能会受到严重影响。典型的修复方法曾是在 FAT32 中至少偶尔重新格式化一次;这基本上相当于完全修剪。
唉,我手边没有参考资料来证明某些控制器能够理解 FAT32,但据我所知,我看到了一家中国芯片制造商(可能是 Yeestor)的演示。