FlatFS: Flatten Hierarchical File System Namespace on Non-volatile Memories——论文泛读

ATC 2022 Paper 元数据论文阅读汇总

问题

传统文件系统通过将其构造为目录树来提供分层的命名空间。基于树形命名空间结构导致文件路径遍历低效且命名空间树遍历昂贵,未充分利用非易失性内存系统提供的超低访问延迟和良好的顺序性能。

挑战

文件路径遍历速度较慢且不具有可扩展性。解析路径组件涉及昂贵的目录项搜索以及其他耦合的系统操作,如安全模块执行 [10, 23, 24, 40]。假设文件路径包含n个组件,则解析最后一个组件需要定位前n-1个组件,总路径遍历任务与文件路径中组件的数量成线性关系。由于硬件I/O占主导地位,路径遍历效率对于慢存储设备的系统调用有轻微的性能影响。相反,对于提供超低访问延迟的NVM [17, 42, 46],这种高关键路径延迟是不可接受的。路径遍历慢如图1b,在有缓存时(hot),解析文件路径会占用系统调用14.17%-67.19%的执行时间,文件操作平均占用31.49%的执行时间。当无缓存时(cold),目录项查找占执行时间的69.26%。可扩展性差如图1c,测试无缓存的延迟,随着路径长度增加延迟线性增长,绝大多数时间用于路径解析。

在分层命名空间结构中,递归遍历命名空间树的成本较高。不同目录的条目在存储设备上物理上分散,这导致数据访问局部性差,并在树遍历期间进行间接内存寻址。命名空间树遍历在常见的系统用法中广泛存在,如find、rm -r和ls -R。此外,像英特尔Optane内存这样的商业NVM提供大于5GB/s的内存带宽,并偏好顺序内存访问行为 [17, 46]。但分层命名空间结构未能利用这一重要的系统特性。如图1d,遍历分层目录树占用了总执行时间的近80%。

FlatFS: Flatten Hierarchical File System Namespace on Non-volatile Memories——论文泛读_第1张图片

现有方法据局限性

Tsai等人[40]提出了在VFS层中使用全路径缓存来减少路径遍历延迟。Solaris也整合了类似的路径到虚拟节点的缓存[23]。然而,缓存在很大程度上依赖于文件访问的局部性。

ByVFS [41]绕过了VFS目录树,直接从文件系统操作目录项。由于NVM设备提供的读/写性能不平衡,目录项的写入性能不理想。

文件系统级的优化是利用高效的数据结构(例如基数树 [44]、哈希表 [15, 16]、B+树 [5, 34, 37]、跳表 [13])或键值存储(例如LevelDB [2, 32]和TokuDB [6, 18])来管理和索引持久目录条目。尽管这些数据结构提供了良好的索引性能,但数据局部性问题尚未得到很好解决。

所有现有的内核文件系统都是在VFS框架的基础上开发的[14,18,26,31,44,48]。因此,在这些文件系统中,路径名查找性能受到了VFS路径遍历效率的限制。

本文方法

本文提出了FlatFS,这是一个具有扁平命名空间架构的NVM文件系统,同时提供兼容的分层命名空间视图。文件元数据直接按其唯一的分层路径进行索引。分层路径组织起来,没有任何进一步的结构。

扁平的命名空间结构为NVM的文件系统设计带来了两个性能优势。首先,文件路径遍历快速且可扩展,因为它只需要对扁平命名空间进行单一路径名查找,不受路径长度的影响。它有效地缩短了元数据系统调用的路径遍历。其次,数据局部性得到改善,因为命名空间中连续的目录条目也按顺序存储在存储设备上。这加速了文件系统命名空间的遍历,并有益于目录范围操作。

FlatFS包含的创新技术:

  • 提出了协调路径遍历,以协调全局统一的VFS命名空间中的两种不同路径遍历模型。FlatFS通过将路径名查找与其他复杂的系统操作分离,实现了快速、可扩展的路径遍历,同时保留了传统路径遍历模型的系统语义。协调路径遍历提供了一种灵活且向后兼容的解决方案,用于将独特的路径遍历模型集成到全局命名空间中,而不是重建现有的路径遍历模块。

  • 设计了一种面向NVM的范围优化的Br树,用于管理可变大小的索引键。Br树在对数时间内提供了高效的数据结构级范围操作(例如,范围插入)。它有效弥补了扁平命名空间的目录移动缺点,并促进了设计其他快速目录范围操作。

  • 利用NVM的字节寻址特性,提出了一种面向写入优化的压缩(WoC)索引键设计,以提高可变大小键存储的效率,并减少在NVM系统上键管理中昂贵的小内存写入和数据持久性开销。

  • FlatFS实现了扁平命名空间的低成本元数据崩溃一致性。WoC键设计有效降低了索引键插入和删除的数据一致性的性能成本。对于涉及复杂树结构操作的目录范围操作,通过从Br树结构基元中得出的见解简化了命名空间树的崩溃安全设计。

FlatFS: Flatten Hierarchical File System Namespace on Non-volatile Memories——论文泛读_第2张图片

评估结果表明,与其他文件系统相比,FlatFS在元数据密集型基准测试和实际应用中实现了显著的性能改进。

开源代码:GitHub - miaogecm/FlatFS

实验环境

两个Intel Xeon Gold 5220R处理器,每个处理器有24个物理内核,运行频率为2.2 GHz。每个物理核心都有一个专用的32 KB一级缓存和一个1 MB二级缓存。位于同一套接字上的所有内核还共享一个35.75 MB的末级缓存。超线程已禁用。每个处理器都有两个集成的内存控制器。该机器具有192 GB(12×16 GB)DRAM、1.5 TB(12×128GB)Intel Optane DC持久内存和512 GB固态驱动程序。

数据集:文件服务器和来自Filebench的varmail[38],从FxMark[25]中选择MWCM和MWUM基准测试,Git,Psearchy,Hive

对比实验:路径遍历效率,路径组件数量可扩展性,参数敏感性,目录范围查询,吞吐量,多核可扩展性,消融实验

总结

针对树形命名空间结构导致文件路径遍历低效且命名空间树遍历昂贵的问题,作者提出优化基于NVM的文件系统,利用协调路径遍历优化文件路径遍历速度;利用Br树管理索引键优化目录范围操作;利用面向写入优化的压缩(WoC)索引键减少随机小写和持久化开销;利用以上结构简化崩溃一致性设计。

你可能感兴趣的:(论文阅读,论文阅读)