SSD 之FTL转换层
来源:互联网 发布:数据挖掘的过程 编辑:程序博客网 时间:2024/05/17 22:38
闪存的读写单位为页,而页的大小一般为4KB或8KB,但我们的操作系统读写数据是按HDD的扇区尺寸进行的(512Byte(字节)),更麻烦的是闪存擦除以块作单位,而且未擦除就无法写入,这导致操作系统现在使用的文件系统根本无法管理SSD,需要更换更先进、复杂的文件去解决这个问题,但这样就会加重操作系统的负担。
而为了不加重操作系统的负担,SSD采用软件的方式把闪存的操作虚拟成磁盘的独立扇区操作,这就是FTL。因FTL存在于文件系统和物理介质(闪存)之间,操作系统只需跟原来一样操作LBA即可,而LBA到PBA的所有转换工作,就全交由FTL负责。(请看下图)
FTL算法,其实就是一种LBA到PBA的映射。当文件系统发送指令要写入或者更新一个特定的逻辑页时,FTL实际上是把数据写入到一个不同的空闲物理页并更新映射表(LBA和PBA的关联数据),并把这个页上包含的“旧数据”标记为“无效”(更新后的数据已经写入新的PBA,旧地址的数据自然就失效了)。正是因为FTL的存在,操作系统才能把SSD当成HDD那样操作,因此FTL转换的性能也就直接影响SSD的性能表现。
我们现在看下图,假设在page0上写入数据(物理地址n),接下来写入数据到page1(物理地址n+1)。接着page0数据被更新,但是更新后的数据并不是覆盖上去,FTL会把它写入到地址(n+2)上,然后标记(地址n)为“无效”。经过多次这样的操作后,这个块上就会装满了许多“有效”及“无效”的数据。如果要再次写入到这个块,就需要先擦除整个块的数据,当然就需要先把所有“有效”的数据复制到另外的空白块上再进行擦除。这样的操作就是GC(即垃圾回收,相关知识在后面会独立介绍)。
转载地址:http://www.liangchanba.com/article-816-1.html
阅读全文
0 0
- SSD 之FTL转换层
- SSD 之FTL转换层
- FTL和NFTL---FLASH转换层
- FTL (Flash translation layer) 闪存转换层
- ssd中的FTL
- SSD深度技术解析---FTL层算法对性能的影响
- FTL(Flash translation layer)闪存转换层
- FTL(Flash translation layer)闪存转换层
- FTL(Flash translation layer)闪存转换层
- 为SSD编程(3):页、块和闪存转换层
- SSD 之Trim指令
- linux 文件系统之SSD
- SSD 之Trim指令
- MXNet SSD之multibox_target
- FTL文件转换成PDF文件工具类
- SSD基础之Trim命令
- SSD 之WA写入放大
- SSD 之OP预留空间
- Spring Cloud Stream(消息驱动)
- PAT甲级真题及训练集(14)--1058. A+B in Hogwarts (20)
- Java中五种线程池的介绍
- 使用JavaScript和MQTT开发物联网应用
- 日志记录
- SSD 之FTL转换层
- java在命令行中编译代码出现 错误: 编码GBK的不可映射字符
- [Log4j] 配置Log4j
- Spring Cloud Swagger(接口管理)
- linux基础操作命令
- 大数据系统与大规模数据分析 之 作业二
- 【Python初学笔记】set()字符串后为什么消除重复元素?
- java基础内容每日笔记_day01
- SpringMVC框架前端传递List限制大小256问题