open ftl



SSD 是否需要使用特别的文件系统? - 知乎用户的回答 - 知乎
https://www.zhihu.com/question/19800391/answer/144144633

https://www.zhihu.com/question/19800391


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

简要地回答:不需要
原因:SSD内部存在一个FTL(Flash Translation Layer),这个FTL向上提供block接口(这的block是指块设备的block),向下操作SSD内的存储单元(Package)(这些操作包括但不限于:地址翻译、损耗均衡、GC等等 ),所以在操作系统看来,SSD与HDD实际上看起来是一样的,当然了,在kernel需要有一定的模块作支撑.作为入门可以看一下[1].

-----------------------
扯一下其他的,长期以来,FTL作为SSD内部固件中的软件,我们外面看不到的,不同厂商的FTL干的事也不尽相同。OS看到的SSD就是个黑盒子.
最近,有种趋势就是把FTL放出来,也就是把FTL拿到外面,我们再也不用把SSD当作一个黑盒,可以手动地操作,具体的哪个package、哪个die、哪个block(这的block是指SSD的Erase单位)、哪个page. 这些机制可以称为OpenChannelSSD,能支持OpenChannelSSD的SSD厂商有Fusion I/O ,CNEX OCSSD SDK等. 反正他们是把FTL提升到OS层,这样人们可以根据自己的需要定制FTL.目前开源的有CNEX的Lightnvm,可以看一下[2]。
感兴趣的话甚至可以去玩一下Qemu,qemu-nvme提供了OCSSD的模拟.我目前也在做相关工作.
如果有了解LevelDB等实现LSM-tree的DB,LSM实际上就是一个FTL.

再稍微介绍一下OCSSD:这玩意儿在kernel上提供支持的就是lightnvm,可以看这的最近实现的一个feature:pblk target。这个target做的事就是把OCSSD Device做成一个块设备,然后你可以在这个块设备上进一步格式化成你喜欢的File System.

[1] Coding for SSDs - Part 1: Introduction and Table of Contents
[2] Open-Channel Solid State Drives


猜你喜欢

转载自blog.csdn.net/u013083918/article/details/78470008
今日推荐