为什么SSD会变慢: SSD越用越慢,我们使用的机械硬盘却不会这样,这是什么原因呢?
这与SSD工作的原理及特点有关,SSD与HDD区别之一在于,机械硬盘的数据存储是以磁介质形式存储的。当我们需要往HDD里面存入数据的时候,磁头就会对盘片上的磁介质进行磁化操作。无论硬盘里面有没有数据操作都是一样的对原有磁介质进行重新磁化,所以从技术的实现上来讲,机械硬盘不存在越用越慢的情况。 相比于传统HDD,SSD最大的不同在于使用的NAND闪存无法进行覆盖操作。在已经被写入数据的位置,要重复写入的话,SSD就必须先对该位置进行擦除的操作,而且擦除操作的最小单位(block)比写入操作单位(page)的要大。 SSD闪存基本组成: SSD基本组成page(页面)、block(区块)、plane(平面)、die(核心)、NAND(闪存芯片)组成的,page是最基本的组成,大小一般是4KB,每个Block通常包含64个page(容量256KB),或128个page(容量512KB),多个Block组成plane,而plane就是闪存中一颗核心Die,一颗闪存芯片就由多颗Die封装而成。 国外的媒体就有做一个SSD写入数据的描述。在这里,搬过来,跟大家分享一下! 为了简化说明,假设每个block只有12个page,每个page大小1Byte。 你刚买回来时,是这样的,空盘的理想状态。
打开TXT
编辑 TXT,输入1234
保存文件,这个文件的大小正好是4Byte
写入到SSD就是占用了block A的4个page
改变一下文件内容:56781234
文件大小变成8Byte
保存时,SSD不能直接覆盖原有文件,需要重新占用8个page文件
1个Block占满了
这种状态下,代表着Block已满,通俗一点就“脏”了。要恢复性能就需要删除整个block区块,此时需要把有用的数据拷贝到另一个空白blokc中然后再清除Block A。 写入到空白的Block B中
实际过程中数据显然不是只有这么简单,略微复杂一点的情况就如上图所示,1234.txt文档占用了8个page,xyz.dll也是占用8个page,分别在两个block区块中。word.doc文件也是占用了两个block,其中占满一个,另一个占用了8个page。
此时如果用户删除了xyz.dll文件,那么数据就要重新洗牌。Block B中的1234.txt重新拷贝到block A中,doc文件中的4B也要写入block A中,还有多余的4个page要再占用block D的4个page空间,而block E中的数据是满的,不需要移动,此时的排列就如上图所示,腾出来的block B和block C也就可以清除数据以恢复性能了。 真实的应用环境情况会更复杂,SSD需要不断地在各个block之间进行写入-转移-清空操作,SSD用久了需要擦除的区块就会越多,性能自然也会变慢。当然,SSD工作原理要复杂得多,涉及到很多层面,比如GC垃圾回收、磨损平衡、写入放大等,对SSD性能影响都非常之大。
|