Trim

Trim

参考资料《深入浅出SSD》

1.概述

1)是一个指令,即Data Set Management(SATA)or Deallocate(NVME),用于告诉NAND闪存,SSD要擦除哪些数据。

2)当相关页面的数据可以被覆盖时,操作系统会给SSD发送一个trim指令,SSD控制器等到操作系统执行删除或再次写入时,

   将执行安全擦除操作。

3)因为在写入过程中不用花时间去擦除原有的数据,所以写入速度会快很多。

 

2.作用

增强SSD的性能,延长SSD的寿命

 

3.SSD处理Trim命令的流程

前提条件:逻辑页0~7的映射,分别写在物理地址PBA a~h

说明

1)一般FTL有3个表,

  FTL映射表记录每个LBA对应的物理页位置;

  Valid Page Bit Map(VPBM)记录每个物理块上哪个页有有效数据;

  Valid Page Count(VPC)记录每个物理块上的有效页个数

2)通常GC会根据VPC进行排序来回收最少有效页的闪存块

3)VPBM为了在GC时只读有效数据(有的FTL省略这个表)

4)FTL的映射往往是非常分散的,连续的逻辑页对应地址会在很多不同的闪存块上

 

流程

1)主机向SSD发送Trim命令,删除0~7的逻辑页上的数据,让SSD可以把这些数据当做垃圾来处理

2)SSD清除L2P table到空地址

3)清除Valid Page Bit map上对应的bit

4)重复2,3,4直到完成每一个LBA

5)根据新的VPC重新 计算GC的优先级

6)回收最少VPC的block

7)擦除全是垃圾的block

 

4.案例:用户删除文件

1)操作系统把文件划分为若干个逻辑块,然后写入SSD的闪存空间

2)当用户删除文件A时,实际上它只是切断了用户与 操作系统的联系,即用户访问不到这些地址空间

3)但是在SSD内部,逻辑页与物理页的映射关系依然存在,即文件数据依然是有效的,如下图

4)在没有Trim前,SSD无法知道这些被删除的数据是否无效,必须等到系统要求在相同的地方(用户空间,逻辑空间)写入数据时才知道数据是无效的,进而放心删除

5)由于SSD不知道这些数据是无效的,在做垃圾回收时,仍把它们当做有效的数据进行数据搬移,这不仅影响性能还影响SSD的寿命(写放大增大)

6)当用户需要删除一个文件时,操作系统发trim命令给SSD,告诉SSD该文件对应的数据无效了;

   这样SSD在做垃圾回收时,回把这些删除的数据抛弃掉,而不是去做无谓的数据迁移

 

 

 

5.注意

Trim命令不会触发GC

posted @ 2020-04-07 23:01  可口可乐嗨  阅读(1219)  评论(0编辑  收藏  举报
levels of contents