如果我错了请纠正我,但是块位图(用于跟踪磁盘驱动器上的空闲块)不是因文件系统不同而不同吗(位置和结构方面)?那么 OCZ 如何在不考虑所使用的文件系统的情况下拥有通用的垃圾收集算法?
答案1
SSD 的块数超出了标称容量。这些块用于损耗均衡过程以及块完全磨损后的故障替换。因此,SSD 的控制器必须跟踪它看到的哪些块当前作为哪些逻辑块呈现给系统。
在没有 TRIM 的情况下,当对脏块(就 SSD 而言,其中已经有数据的块)进行写入时,会发生以下两种情况之一:
- 控制器将旧块读入本地内存。
- 控制器修改所需的位。
- 控制器将整个区块重写为旧区块
然而,由于磨损均衡,这种情况更有可能发生:
- 控制器将旧块读入本地内存。
- 控制器修改所需的位。
- 控制器写入整个区块到保留部分的新块
- 控制器更新新的逻辑块:物理块对的逻辑映射。
- 控制器将旧块标记为储备的一部分。
这里的关键是 SSD 控制器本身也保存着一个块位图。与文件系统位图不同,它将逻辑块与物理块进行匹配,并且每次写入时都会发生变化。
答案2
通过过度配置。OCZ 添加的闪存比驱动器所需的闪存多 7%。这 7% 用于执行磨损均衡和更换故障块,但也可以在空闲时间擦除,从而避免否则会发生的擦除-写入循环。