SA-YAFFS:支持交换系统的YAFFS闪存文件系统的设计与实现

SA-YAFFS:支持交换系统的YAFFS闪存文件系统的设计与实现

论文摘要

闪存自其诞生,便以其功耗低、体积小、抗震性强而受到广泛关注。如今,随着闪存进入G容量时代,闪存必然会被使用在计算复杂性更高、任务更繁复的系统中。而在这些操作系统中,几乎无一例外地都使用了交换系统,以牺牲一定性能的代价来扩展内存空间容量,增加系统的并行执行度和吞吐量。当闪存被应用在了这些系统中,由于闪存在I/O接口和寻址方式与传统磁盘的巨大差别,使得交换系统无法直接在闪存上建立交换区域。工程上惯用NFTL/FTL层来屏蔽闪存设备与磁盘设备的不兼容性。NFTL/FTL层是一种设备转换层。借助该层,操作系统便可以把闪存当作磁盘块设备一样来使用,并在其上建立FAT、NTFS、EXT2、EXT3等之类的磁盘文件系统。甚至于在NFTL/FTL层的帮助下,交换系统也得以简介地建立在闪存上。然而,NFTL/FTL层除了因为在设备转换过程中损失性能外,严重的“伪有效chunk”问题还会导致大幅增加交换系统的读写开销,于是有人提出了闪存专用交换系统FASS,解决了上述NFTL/FTL的两个缺陷。FASS大幅度降低了交换系统对交换区域的读写开销。然而FASS延续了传统交换系统静态分配交换区域的惯性思维,将交换系统的读写磨损限制在了闪存固定的某个区域,就有可能会造成闪存局部过度磨损,本质上并不适用于闪存场合。基于上述的思考,本课题认为闪存交换系统必须动态分配交换区域的存储空间。因此,本课题将交换系统的支持性融入闪存文件系统YAFFS中,提出了支持交换系统的闪存文件系统SA-YAFFS(Swap-Aware YAFFS)。在SA-YAFFS文件系统中,文件系统和交换系统各自都具有可用的闪存空间逻辑配额,但实际的物理存储空间只有发生写操作时,才动态地由统一的闪存分配器分配出去。考虑到文件系统数据和交换系统数据的具有不同的有效周期,SA-YAFFS将闪存block按功能分为文件系统block和交换系统block,这一方面有利于提高闪存垃圾回收器的效率,另一方面可以节省内存开销。考虑到交换系统block中的内存页的内核对象与文件系统block中的数据内核对象不兼容,SA-YAFFS为交换系统设计了专门的垃圾回收器。另外,SA-YAFFS采用异步方式读写交换区域,以提高系统吞吐率。实验表明,相对于NFTL/FTL层,SA-YAFFS由于避免了“伪有效chunk”的现象,可以大幅度降低交换系统对于闪存交换区域的读写次数。同时,由于采用动态分配交换区域,SA-YAFFS文件系统可以调动分区中所有空闲block共同承担交换系统导致的闪存磨损。相对于FASS,SA-YAFFS在交换系统逻辑配额一定的前提下,可以将交换系统对于闪存的磨损分摊在更多的物理block上。当“文件系统逻辑配额的剩余空闲空间+交换系统逻辑配额”增加到n倍,交换系统对于其使用过的每个block的磨损次数降低为原来的1/n。

论文目录

  • 摘要
  • ABSTRACT
  • 1. 绪论
  • 1.1 引言
  • 1.2 研究目标
  • 1.3 研究内容
  • 1.4 章节安排
  • 1.5 本章小结
  • 2. 研究背景
  • 2.1 闪存存储设备
  • 2.2 SLC NAND Flash 和MLC NAND Flash
  • 2.3 内存管理
  • 2.4 交换系统
  • 2.5 本章小结
  • 3. 相关研究
  • 3.1 闪存文件系统
  • 3.1.1.JFFS 闪存文件系统
  • 3.1.2.YAFFS 闪存文件系统
  • 3.1.3.YAFFS 数据结构
  • 3.1.4.YAFFS 的spare 空间格式
  • 3.1.5.YAFFS 的checkpoint 机制
  • 3.1.6.YAFFS Tnode 树
  • 3.1.7.YAFFS 垃圾回收器
  • 3.2 闪存交换系统的研究
  • 3.2.1.LINUX 交换系统原理
  • 3.2.2. 闪存交换系统的早期研究
  • 3.2.3.FTL/NFTL 层与闪存交换系统
  • 3.2.4.FASS 交换系统
  • 3.2.5. 闪存交换系统垃圾回收器的研究
  • 3.3 本章小结
  • 4. SA-YAFFS:支持交换系统的YAFFS 文件系统
  • 4.1 SA-YAFFS 设计目标
  • 4.2 SA-YAFFS 设计原理
  • 4.2.1.磨损均衡的两难境地
  • 4.2.2.SA-YAFFS 的block 分类
  • 4.3 SA-YAFFS 设计
  • 4.3.1.SA-YAFFS 整体架构设计
  • 4.3.2.闪存空间分配器(NA)
  • 4.3.3.动态映射表(AM)
  • 4.3.4.交换系统I/O 内核守护线程(nswapd)
  • 4.3.5.交换系统垃圾回收器(SA-GC)
  • 4.3.6.挂载/卸载交换区域
  • 4.4 本章小结
  • 5 实验和性能测试
  • 5.1 实验目的
  • 5.2 实验平台搭建
  • 5.2.1 SA-YAFFS 实现平台的搭建
  • 5.2.2 NFTL/FTL 层平台的搭建
  • 5.3 SA-YAFFS 与NFTL/FTL 层的读写chunk 次数比较
  • 5.3.1 写chunk 累计总量的比较
  • 5.3.2 读chunk 累计总量比较
  • 5.3.3 实验结果的原因分析
  • 5.4 SA-YAFFS 与FASS 对闪存block 磨损比较实验
  • 5.4.1 量化定义
  • 5.4.2 各个量之间的关系
  • 5.4.3 FASS 的block 使用次数期望值下界
  • 5.4.4 FASS block 使用次数期望值下界与SA-YAFFS block 使用次数期望值的比较
  • 5.4.5 SA-YAFFS 的block 使用次数期望值的递降规律
  • 5.5 本章小结
  • 6 总结与展望
  • 参考文献
  • 致谢
  • 攻读学位期间发表的学术论文目录
  • 相关论文文献

    标签:;  ;  ;  

    SA-YAFFS:支持交换系统的YAFFS闪存文件系统的设计与实现
    下载Doc文档

    猜你喜欢