关键词:
日志结构文件系统
文件碎片
空闲空间碎片
垃圾回收
能耗
摘要:
基于NAND闪存(NAND Flash)的存储卡和固态硬盘因为其大容量、轻便、抗震等优异特性,在移动设备和数据中心被广泛使用。面向闪存特性设计的闪存友好型文件系统(Flash Friendly File System,F2FS)是一种典型的日志结构文件系统(Logstructured File System,LFS),它采用日志结构追加写机制和闪存芯片组织结构友好的数据布局,提升了随机写性能,获得了工业界和学术界的广泛关注和应用。文件系统因碎片问题导致性能下降,而F2FS所采用的异地更新机制同时加重了文件分配空间和空闲空间的碎片化程度,其高并发应用模式也会产生大量随机同步小写请求,进一步加剧碎片化,导致I/O请求响应变慢、设备运行卡顿、用户体验不佳。为解决上述碎片化导致的性能下降问题,本文从文件空间分配方法、多文件数据组织布局方法和无效空间回收机制三个方面开展了日志结构文件系统性能优化研究。随着文件创建、更新和删除,文件碎片会快速积累,日志结构文件系统的异地更新机制加剧碎片化,移动应用产生的大量随机同步小写请求会加速文件系统老化。针对该问题,提出一种基于追溯文件的自适应预留空间策略(Adaptive Reserved Space based on Traceback,ARST)。ARST分析典型应用的行为特征,选择与碎片产生强相关的文件特征用于构造数据集,采用低成本、高准确率的机器学习算法在大量文件中精准选择会严重碎片化的文件,为这些文件预留空间,有效减少文件碎片的产生。为了最大化空间预留的效果,ARST还选择与时间无关的碎片写特征,挖掘历史信息少的潜在碎片文件作为预留文件。为了更高效地使用存储空间,ARST根据文件写特征决定合适的预留空间大小,并根据文件系统空间使用率决定是否保留文件预留空间。实验结果表明,相比于F2FS现有就地更新策略,ARST显著减少了文件碎片,文件顺序读带宽提升高达56.55%,应用执行时间减少了33.78%~94.28%。F2FS将所有用户产生的常规文件数据组织为温数据类,共用一个日志(log)完成写操作,造成写特征差异明显的用户数据混合存储,其数据失效速率的差异化导致空闲空间碎片化程度增加。针对该问题,提出一种基于数据热度的多日志延迟写策略(Multi-log delayed writing based on Hotness,M2H)。不同于传统基于语义信息和数据分析的静态分类,M2H使用K均值聚类算法,基于文件块更新距离感知数据热度变化,动态地准确区分数据热度,将数据分别写入相应热度的日志,使热度相近的数据汇聚在同一块区域,改善多文件间的数据组织布局,并通过延迟写策略提升多日志区写操作效率。为了准确描述数据热度,M2H基于负载读写特征选择文件块更新距离、最近使用距离和读次数定义热度,文件块更新距离较小、最近使用距离较小和读次数较多的数据热度高。另外,M2H基于段清理次数为基准的敏感性分析决定K值,提升K均值聚类效果。实验结果表明,与传统F2FS相比,M2H有效减少了空闲空间碎片,段清理次数减少了50.61%~94.36%,有效块迁移数量减少了64.31%~99.98%。当文件系统连续空闲空间耗尽时,系统中存在大量的空闲空间碎片,需要触发垃圾回收(Garbage Collection,GC)获得空闲段,或使用线程日志写入方式,覆盖写空闲空间碎片,直接造成新写入文件的碎片化,这两种方式都会导致文件系统读写性能下降。通过构造初始、重载和末端碎片化三种不同空闲空间碎片数量的状态,分析了空闲空间碎片对能耗的影响、垃圾回收的能耗及无效空间回收效率。发现空闲空间碎片增加了系统任务I/O次数,导致能耗明显增加,使用GC整理空闲空间碎片时,后台GC能耗较大,且减少空闲空间碎片的效果有限。针对该问题,提出空闲空间碎片感知的GC策略(free space Fragmentation Aware GC,FAGC)。FAGC基于数据分析重新评估了空闲空间碎片大小的阈值,使用空闲空间碎片系数快速衡量空闲空间碎片化程度,选择空闲空间碎片化严重的段作为清理对象,增大每次GC的收益,提高GC整理空闲空间碎片的效率,有效降低能耗。实验结果表明,与F2FS最新的ATGC策略相比,在空间使用率较高和空闲空间碎片数量较多时,FAGC减少I/O密集性负载的GC次数高达74.51%,减少有效块迁移数量高达73.92%,降低能耗高达100.64焦,具有更高的无效空间回收能效。