标签:简介 写入 gc Block SSD page block
背景
- 闪存基本构成:页page(4K)→块block(通常64个page组成一个block,有的是128个)→面plane(多个blcok组成)→die(plane就是一个die)→闪存片(多个die组成)→SSD(多颗闪存片组成);(可能不同型号具体数字不同)。
- SSD上已经被写入过的Page页在重新被写入之前,必须要将page页所在的block块擦除,而不是直接覆盖写。这个是由Nand Flash的工作原理决定的。因此产生了Gc的概念;
gc触发的位置
- FTL层
gc分类:
- 限制垃圾回收:不占用主控资源,会增加一定额外的写放大。
- 被动垃圾回收:被动垃圾回收是在数据读写同事做垃圾回收,会占用大量主控资源,对请求的响应时间造成一定影响。
gc粒度
- 闪存最小读写单位是page,但是最小擦除单位是block;
gc过程
- 一个block中包含多个page;SSD工作一段时间之后,block就都是有过写入的了,如果要擦除某个block,必须先将其中的有效page复制到其他地方,再擦除旧的block;
我们通过下图来看看SSD上数据写入的过程
图1:
- 两个空的(erased)的Block X和Block Y, 每个Block有12个Pages;
- 首先在Block X中写入4个Pages(A, B, C, D);
图2:
- 接着再向Block X中写入新的4个pages(E, F, G, H)
- 然后写入PageA-D的更新数据(A', B', C', D'), 这是PageA-D变为失效数据(invalid);
- 如果在覆盖写操作比较多的情况下,会产生较多的无效页,类似于磁盘碎片,此时需要SSD的GC机制来回收这部分空间了。
图3:
- 为了向PageA-D的位置写入数据,需要将E, F, G, H, A', B', C', D' 8个pages先搬到Block Y中, 之后再把Block X erase掉,这个过程就为GC。
SSD的写放大(Write Amplification)
SSD的GC机制会带来写放大(Write Amplification)的问题,即内部真正写入的数据量大于用户请求写入的数据量,会带来下面两个问题:
- SSD的寿命减少。NAND-Flash中每个原件都有擦写次数限制,超过一定擦写次数后,就只能读取不能写入了。因此,需要损耗均衡控制(Wear-Leveling)算法,使得原件的擦写次数比较平均,进而延长SSD的寿命。
- 因为gc需要有擦除操作,复制有效page,因此会影响响应时间;
预留空间 (Over-Provisioning)
由SSD gc引出的一个概念Over-Provisioning
计算方式如下:
Over-Provisioning相当于在用户可用的容量之外,额外增加的空间;
因为SSD上不仅要存放用户数据,还需要存放Mapping Data、FTL管理数据,并且要处理GC/WL(Wear-Leveling)磨损均衡的数据搬迁,以及处理坏块管理等。额外增加的Over-Provisioning主要承担这些操作的存储工作;这部分容量用户不可以直接操作,对操作系统也不可见;
参考资料
https://www.seagate.com/tech-insights/ssd-over-provisioning-benefits-master-ti/
SSD Over-provisioning (OP) - Kingston Technology
标签:简介,写入,gc,Block,SSD,page,block 来源: https://blog.csdn.net/Gloria_y/article/details/120969414
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。