它如何知道哪些块是垃圾块,哪些块属于没有文件系统支持的文件?
我认为这是一个没有人真正回答过的重要问题。如果不了解正在使用的文件系统或获取附加信息(例如从 TRIM),驱动器就无法知道哪些块是有效的,哪些块是有效的。
我们对垃圾收集的传统理解是合并部分包含无效数据的块以释放可以快速写入的整个块*(无需读取现有的有效数据并用新数据写回)。如果不知道哪些块是有效的,哪些块是无效的,这个过程就不会发生。
AnandTech对此进行了一些推测:
它要么通过查看驱动器上的数据并将其组织成碎片较少的状态,要么通过查看驱动器上的文件系统并尝试根据发现的内容进行修剪。Indilinx 和三星都试图实现这种空闲垃圾收集,而且它们似乎以不同的方式实现。虽然最终结果是相同的,但它们如何到达那里决定了此功能的有用性。
在第一种情况下,这不是简单地修剪驱动器的内容,驱动器不知道要修剪什么;它仍然必须跟踪所有数据。相反,驱动器正在重新组织其数据以最大限度地提高性能。
第二种情况需要一个兼容的文件系统(三星驱动器据称是 NTFS),然后数据实际上被 TRIM 处理,就像使用 TRIM 指令一样。
我们已经讨论了第二种情况,它可能不适用于 HFS+。第一种情况对我来说更令人费解,我无法找到任何关于它如何工作的好信息,或者它在 HFS+ 上的效果如何。
| 归档时间: |
|
| 查看次数: |
2471 次 |
| 最近记录: |