The Full Path to Full-Path Indexing——论文泛读

FAST 2018 Paper 分布式元数据论文阅读笔记整理

问题

通用文件系统没有充分利用底层硬件的带宽。例如,ext4可以以接近磁盘带宽的速度写入大文件,但通常会以小于磁盘带宽3%的速度创建小文件。类似地,ext4可以以接近磁盘带宽的速度读取大文件,但扫描包含许多小文件的目录的性能会随着时间的推移而老化。这个问题的核心是如何在磁盘上组织或索引数据。现代文件系统最常见的设计模式是,在目录中文件的名称与其在磁盘上的物理位置之间使用一种间接的形式,如索引节点。索引简化了一些元数据操作的实现,如重命名或创建文件,但在最坏的情况下,文件系统的内容最终可能会分散在磁盘上。

全路径索引可以提高对使用传统分层目录组织的数据进行操作的工作负载的I/O效率,因为按深度优先搜索顺序存储数据和元数据,即按文件和目录的完整路径名按字典顺序存储。因此任何目录子树(例如ls-R或grep-R)的扫描都应该以接近磁盘带宽的速度运行。但挑战在于随着文件系统的变化而保持完整的路径顺序,尤其是重命名的成本过高。

现有方法局限性

BetrFS[22,23](v0.1)使用了全路径索引,通过写优化字典来快速更新和扫描数据和元数据。使用两个Bε树[7,10]作为持久键值存储,其中键是文件的完整路径名,值分别是文件内容和元数据。Bε树组织磁盘上的数据,使得逻辑上连续的密钥范围可以通过大的顺序I/O访问。Bε树将小的更新聚合为大的、顺序的I/O,确保高效的写入。实现了较好的递归grep、文件创建、文件的小型随机写入,但重命名目录的性能很糟糕[22,23]。

BetrFS 0.2放弃了全路径索引,并引入了分区[54,55],实现相对路径索引的模式,每个文件或目录都是相对于目录树中的本地邻域进行索引的。大型文件和目录重命名与基于间接的文件系统相当,顺序扫描比基于索引节点的文件系统快2倍,但比BetrFS 0.1慢1.5倍。然而,相对路径索引存在分散成本,例如,在TokuBench基准测试的三分之二过程中,BetrFS 0.2显示小文件创建的累积吞吐量突然急剧下降,这可归因于维护区域的成本。间接性会导致文件系统操作映射到更多的键/值操作,并且经常引入先读后写。

本文方法

本文提出了一种Bε树变体,称为提升的Bε树,可以有效地重命名一系列按字典顺序排列的密钥,释放全路径索引的好处。

引入了一种新的键值原语,称为范围重命名。给定两个字符串p1和p2,在所有以p1为前缀的键中,将前缀p1替换为前缀p2。范围重命名是对连续键范围的原子修改,并且值不变。主要技术创新是在Bε-树中有效地实现了范围重命名,将开销从与子树大小成比例降低到与子树高度成比例。

在BetrFS 0.4中实现了这一机制,执行递归grep的速度比BetrFS 0.3快1.5倍,执行随机写入的速度快1.2倍,重命名与基于间接的文件系统相似。在各种工作负载中,BetrFS 0.4的性能优于BetrFS 0.3、ext4、XFS和ZFS。

总结

针对使用全路径索引文件系统,现有方法受限于重命名成本过高。本文提出提升的Bε树,可以有效地重命名一系列按字典顺序排列的密钥。核心在于引入了新的键值原语,称为范围重命名。给定两个字符串p1和p2,在所有以p1为前缀的键中,将前缀p1替换为前缀p2。范围重命名是对连续键范围的原子修改,并且值不变。在Bε-树中有效地实现了范围重命名,并将开销从与子树大小成比例降低到与子树高度成比例。

  • 24
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妙BOOK言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值