SSD的trim指令

之前写过一篇文章: http://www.litrin.net/2016/03/01/%E8%AF%BB%E5%86%99ssd%E7%9A%84%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9/

今天被一个同事提了几个challenge,觉得好像还有东西没有讲完,于是针对这几个challenge,逐一回答。

原文中:

当SSD磁盘中 所有的page都被占用
的时候,SSD就会自动触发垃圾回收机制。


challenge:对于磁盘簇的分配都是由文件系统管理的,SSD作为一个存储设备而言,根本不知道哪个page是可以被删除的。

对于文件的改写来说SSD自然知道哪个簇是失效的,但对于删除操作来说传统的物理磁盘,一个文件被删除只是清除了文件系统索引区的一个索引而已,在数据簇的内容不会做任何操作,仍旧停留在磁盘上等待下一次被新的数据覆盖掉。而对于SSD来说,最初只有收到系统指令去写一个已存在数据的簇(page)的时候,SSD才明白这个簇事实上早已经被删除了。只有这个时候,SSD才会触发GC。

challenge:写入的单位是page,而擦除的最小单位是block,两者的关系是什么?

一个block一般是128~256个page。

challenge:将SSD当作裸设备,用dd命令写满之后,ssd还会认为“每个pege”都是有效的,系统如何gc?

SSD主控都会提供一个buff用作这种极端情况。对于os或者说fs这边簇和page的关系并不是固定的,SSD还会维护一个两者之间的关联关系。

challenge:OS是怎么优化GC的?

Win7/Linux2.6.33/Mac lion之后,对于文件的删除操作,除了对于FS端文件系统索引的修改之外,系统还会主动发送一个trim命令到SSD硬盘,通知SSD这个文件”已经被删除”,SSD将文件所在的page标记为stale,可以通过gc回收此page。是否立即启动gc则可以通过SSD的主控试情况决定。

开源小站稿源:开源小站 (源链) | 关于 | 阅读提示

本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 后端存储 » SSD的trim指令

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册