闪存文件系统垃圾回收总结

本文详细介绍了闪存文件系统的垃圾回收(GC)原理,包括垃圾回收过程、面临的问题及策略对比。分析了JFFS2、YAFFS和F2FS三种文件系统的GC机制,探讨了如何在延迟、磨损均衡和资源占用间取得平衡。
摘要由CSDN通过智能技术生成

目录

闪存文件系统的背景知识

闪存

闪存的特性

闪存文件系统面临的挑战

闪存文件系统的垃圾回收(GC)

垃圾回收的过程

垃圾回收需要考虑的问题

垃圾回收的策略对比

垃圾回收选择算法

现有闪存文件系统的垃圾回收机制

JFFS2文件系统GC机制的特征

JFFS2文件系统GC的过程

YAFFS文件系统GC机制的特征

YAFFS文件系统GC的过程

F2FS文件系统GC机制的特征

F2FS文件系统GC的过程

三种闪存文件系统GC对比


闪存文件系统的背景知识

闪存

闪存是一种非易失性存储器,即断电数据不会丢失。闪存编程只能从1写到0.因此,在Flash编程之前,必须先擦除相应的块。 擦除过程是将块中的所有位写入1的过程,块中的所有字节都变为0xFF。 因此,可以说编程是将相应位写入0的过程,而擦除是写入1的过程,两者的执行完全相反。

闪存的特性

块的擦除:必须先确保擦除闪存块,然后才能写入数据。 擦除块所花费的时间可能很长,因此在器件空闲时擦除未使用的块是不错的选择。

随机访问:由于搜索成本高,通用文件系统经过优化以尽可能避免磁盘搜索, 但是闪存设备不会存在这样的问题,可以随机访问。

磨损均衡:当重复P/E单个块时,闪存器件往往会磨损; 闪存文件系统旨在均匀地分散写入,来实现均衡的磨损。

闪存文件系统面临的挑战

由于闪存在执行已有数据页更新之前必须进行擦除操作,但是擦除操作比较费时,为了使得更新操作更高效,一般的闪存文件系统都是进行异地更新(out-of-place update)。具体过程就是当要对某个页面进行更新时,读取原数据后修改数据,然后重新找个空闲页面进行写入,之后修改索引即可,这样就避免了擦除操作。更新完成后,包含新版本数据(也称有效数据)地页面称为有效页面,而包含旧版本数据(也称为无效数据)的页面称为无效页面或脏页。

但是这样的异地更新操作会给闪存文件系统带来一些问题和挑战。

  1. 垃圾回收(GC):由于是异地更新,旧数据所在的页面已经无效,但是里面仍然存放着数据,占用着闪存的空间,这些空间需要经过擦除操作才能再次使用。而垃圾回收就是为了回收这些无效数据占用的空间,释放空闲空间被再次使用;
  2. 写放大问题:垃圾回收是以块为单位,和读写的单位页面不一致,因此在进行垃圾回收的过程中需要扫描闪存块,将其中的有效页面找空闲空间重新写一次,这样在查找执行垃圾回收操作的脏块时,应该尽量找有效页面较少的块,以此降低写放大问题;
  3. 磨损均衡(WL):由于闪存的擦除次数是有限的,因此在使用过程中需要尽量均衡的使用每一个闪存快,使整个闪存的磨损尽量均衡,以此来延长闪存的使用寿命和时间,所以垃圾回收时查找回收脏块也需要考虑磨损均衡的问题

闪存文件系统的垃圾回收(GC)

垃圾回收的过程

闪存文件系统的异地更新和垃圾回收过程示例。               

  1. 位于block1中的两个页面应该被更新,它们对应于逻辑页面i和j,通过操作1和2将逻辑页i和j中已修改数据写入block4中的空闲页;
  2. 通过修改文件对应的索引指针,用新的页面替换旧页面,使包含旧数据的原始页面无效;
  3. 当触发垃圾回收操作,并且选中的正好是block1时,首选需要扫描block1,将其有效页面通过操作3和4写入block4中的空闲页,然后对整个block1执行擦除操作;
  4. 执行完垃圾回收后block1中的无效数据被删除,无效页面被回收,空间得到释放。第五步和第六步重复以上的垃圾回收过程。

垃圾回收需要考虑的问题

  • 垃圾回收的时延:当垃圾回收执行数据迁移时,它将占用大量CPU时间,从而导致其他操作的延迟;
  • 闪存的磨损均衡:擦除操作将影响闪存的寿命ÿ
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值