论文部分内容阅读
闪存友好型文件系统(F2FS)是Linux诸多文件系统中专门为改善闪存存储设备性能而设计的新型文件系统。在进行系统设计时,F2FS文件系统将闪存存储设备的特点作为关键的决定因素,从而取得了显著的I/O性能提升。现有的研究指出,在SATA SSD与PCIe SSD两种主流的闪存存储设备上,与传统的EXT4文件系统相比,F2FS文件系统分别取得了2.5倍(SATA SSD)和1.8倍(PCIe SSD)的I/O性能提升[1]。因此,F2FS文件系统得到了越来越广泛的关注与应用。然而,随着研究工作逐渐深入,我们发现F2FS文件系统在顺序读性能、后台段清理机制以及检查点创建机制三个方面存在缺陷。本文针对这三个问题,展开了深入的问题分析并对性能优化技术进行了探索,主要完成了以下三方面的工作:首先,我们通过分析指出了数据碎片化现象是导致F2FS文件系统顺序读性能下降的主要原因。针对这个问题,我们提出了一种多级阈值同步写技术。该技术通过读取无效数据块的数量,判断系统的碎片化程度,动态的进行同步写操作写入模式的选择。由于一部分数据采用了就地更新模式进行写入,本方案有效的缓解了系统中的数据碎片化程度,改善了系统的顺序读性能。实验数据显示,与系统原有的添加写技术相比,我们的方案取得了31.8%的性能提升,此外,与系统中的单级阈值同步写技术相比,我们的方案对随机写性能产生的影响降低了26.7%。其次,我们分析并证明了挂起机制与系统空闲状态探测机制之间的冲突是导致F2FS文件系统后台段清理机制触发频率过低的主要原因。在此基础上,我们设计并实现了一种高频探测后台段清理机制。当系统空闲时间较短时,该技术通过提高系统空闲状态探测频率,保证了后台段清理机制能够触发,提高了系统空间回收的效率。此外,我们的方案通过判断系统剩余空闲空间大小,实现了对后台段清理操作触发间隔的动态调整,减少了后台段清理机制造成的数据迁移量,降低了本方案对于闪存存储设备使用寿命的影响。最后,针对F2FS文件系统检查点创建频率过高的问题,我们进行了深入的分析与验证,指出了该问题是由于SQLite数据库引起过多的目录文件同步写操作造成的。我们结合系统原有的前向恢复技术,提出了一种快速同步写技术。该技术避免了一部分目录文件同步写过程中的检查点创建,有效的降低了F2FS文件系统检查点创建的频率。此外,通过对目录文件进行前向恢复,本方案保证了系统的数据一致性恢复性能。实验数据显示,我们的方案最高能取得45.3%的性能提升。