闪存删除数据的过程,与硬盘不一样!

相比于传统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。

SSD
你刚买回来时,是这样的,空盘的理想状态。

SSD
打开TXT

SSD
编辑 TXT,输入1234

SSD
保存文件,这个文件的大小正好是4Byte

SSD
写入到SSD就是占用了block A的4个page

SSD

SSD
改变一下文件内容:56781234

SSD
文件大小变成8Byte

SSD
保存时,SSD不能直接覆盖原有文件,需要重新占用8个page文件

SSD
1个Block占满了

  这种状态下,代表着Block已满,通俗一点就“脏”了。要恢复性能就需要删除整个block区块,此时需要把有用的数据拷贝到另一个空白blokc中然后再清除Block A。

SSD
写入到空白的Block B中

SSD

  实际过程中数据显然不是只有这么简单,略微复杂一点的情况就如上图所示,1234.txt文档占用了8个page,xyz.dll也是占用8个page,分别在两个block区块中。word.doc文件也是占用了两个block,其中占满一个,另一个占用了8个page。

SSD

  此时如果用户删除了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性能影响都非常之大。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值