如何理解SSD的写放大?

作者:知乎用户
链接:https://www.zhihu.com/question/31024021/answer/110423556
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

提出这样问题人一般都知道闪存基本构成是由:页page(4K)→块block(通常64个page组成一个block,有的是128个)→面plane(多个blcok组成)→die(plane就是一个die)→闪存片(多个die组成)→SSD(多颗闪存片组成)

↑↑↑↑一个块block是由128个页page组成,一个页page是大小是4KB

↑↑↑↑一个面Plane由1024个块block组成

其实WA写入放大很好理解,而造成写入的元凶是GC垃圾回收,说之前先说下操作系统当删除一个数据时,他不会立马删除,而是把这个要删除的数据上标记一个“删”的标签,实际上没有真正删除,就是因为如此硬盘上数据纯在可恢复的原因,而机械硬盘与固态硬盘工作原理不同,当机械硬盘要写入新数据时可以直接覆盖那些已经被标记“删”标签的数据,而固态硬盘不行,只能先擦除旧的数据才能写入新数据,而NAND闪存工作原理是以4K页(page)为一个单元写入的,但擦除只能以块block(64个page)为单位,如果一个块block上有32个page有效数据和32个被标记“删”标签的无效数据,那要在这个块block上重新写入数据,那必须要擦除整个块block,那还有一半有效数据怎么办了?那只有把那32page的有效数据就要搬到另一个有空位置的块block中,这个这就是GC垃圾回收技术,那把那有效的数据搬到另一个块block中,原本就已经写入过一次了再加上这次搬迁不就又多了一次写入吗,这就是所谓的写入放大,讲了这么多我还要讲个trim技术,trim只是一种命令,只负责通知固态硬盘哪些是无效的数据,因为我们刚才讲过操作系统删除数据时,只是把这个要删除的数据上打上“删”的标签,并没有真正的删除,这只是操作层面上的,但作为底层的固态硬盘鬼知道哪数据是有效那些事是无效的,如果没有trim指令的话当固态硬盘要擦除一个块block时,GC垃圾回收就会把有效数据连同被打上“删的”无效数据一起搬到别的块block上,这样写入量变的更大,增加硬盘负担,就会影响硬盘速度和硬盘寿命,因为SSD不像机械硬盘,SSD有寿命限制就是所谓的全盘的写入擦除次数(全盘进行一次写入擦除就是1P/E),这样来看TRIM命令是和GC垃圾回收是互补的,TRIM命令给SSD的可删除数据越多,GC操作需要转移的数据就越少,写入量也会减少,写入放大就会减少。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值