我正在尝试了解耗损均衡对 SSD 碎片的影响。更具体地说,当 SSD 控制器由于耗损均衡而决定为文件分配不连续的块时,该文件将产生碎片。
现在,这种碎片会反映在寻址的 PBA 部分还是 LBA 部分? 例如,假设文件 A 占用逻辑块地址 (LBA) 10、11、12(对应于 PBA 300、301、302)。该文件已更新,需要额外的块。现在由于磨损均衡,假设下一个可用的连续块(PBA 303)具有较高的编程/擦除计数,并且控制器选择映射到 LBA 600 的 BPA 块 500。 控制器现在是否会更新 LBA 13 以指向 BPA 500?(因此从操作系统的角度来看没有碎片)?或者文件是否将具有 LBA 10、11、12 和 600,因此导致 LBA 碎片化?(并且主机操作系统将文件视为碎片)
如果文件在 PBA 方面是碎片化的,但映射是以 LBA 始终连续的方式完成的,那么对于主机操作系统而言,该文件将始终是连续的。
但是,我不断读到,例如,在文件恢复的情况下,从 SSD 恢复文件的问题之一是它们碎片严重。如果是这样,那么这一定意味着碎片反映在 LBA 本身中。
如果有人能从 BPA 和 LBA 的角度进一步解释碎片化是如何发生的,我将不胜感激。谢谢。
答案1
据我所知,磨损均衡对操作系统是完全透明的。操作系统将请求块 10、11、12 和 13,SSD 将为其提供 LBA 10、11、12 和 13。(请参阅下面 ultrasawblade 的评论)
SSD 通常碎片严重,因为对它们进行碎片整理几乎没有好处。请求 PBA 10、11、12 和 13 实际上可能慢点比请求 PBA 10、11、12 和 600 更慢,因为如果后 3 个都在同一个芯片上,并且必须按顺序获取,那么 PBA 600 可以与 PBA 10、11 和 12 并行获取。磨损均衡实际上可能故意地将这些块映射到不同的芯片并产生碎片。
随着文件的创建/删除,LBA 会自然地产生碎片。
最终结果是 LBA 碎片化,然后进行 LBA -> PBA 映射也是对 PBA 进行碎片化,以确保磁盘磨损均匀。由于 LBA 碎片化,文件恢复很困难。
因此,LBA 和 PBA 都是独立碎片化的,但原因不同。如果操作系统保持文件系统完全碎片化,那么它实际上将被碎片化(就 LBA 而言,无论磨损均衡和 PBA 碎片如何)并且易于恢复文件。如果知道文件系统位于 SSD 上,大多数操作系统都不会保持文件系统碎片化,因为这会导致驱动器额外磨损,而性能几乎没有任何好处。