FAST 2016 Paper 分布式元数据论文阅读笔记整理
问题
使用写优化字典(WOD)(LSM-trees [24],Bε tree [6])的文件系统可以比传统文件系统快几个数量级地执行随机写入、元数据更新、递归目录遍历。
然而,现有基于WOD的文件系统需要牺牲其他操作(如文件删除、文件或目录重命名、顺序写入)性能的情况下获得这些性能提升。例如,TokuFS[7]和BetrFS[12]的文件删除、重命名和顺序文件写入速度较慢。KVFS[30]和TableFS[25]中的目录遍历较慢。TableFS将大文件存储在底层的ext4文件系统中,因此不会为随机文件写入提供任何性能增益。
本文方法
通过三种技术,即延迟绑定日志、分区和范围删除,表明在写优化中不需要权衡。可以保留写性能,同时在其他操作上与传统的文件系统相匹配。
-
使用延迟绑定日志以磁盘带宽执行大型顺序写入,同时保持完整数据日志的恢复语义。BetrFS 0.1提供完整的数据日志记录,但所有数据至少写入两次,因此大型写入的系统吞吐量减半。本文采用了无覆盖文件系统使用的方法,如zfs[4]和btrfs[26],只将数据写入空闲空间一次。将此技术应用于Bε树的挑战是平衡数据的崩溃一致性与足够的I/O调度灵活性,以避免在Bε树消息刷新中重新引入大型重复写入。
-
引入了称为分区的可调目录树划分技术,平衡了快速递归目录遍历和快速文件、目录重命名。快速递归遍历需要将相关项目放在磁盘上的同一位置,但为了维护此位置,重命名必须物理移动数据。快速重命名可以通过更新元数据指针来实现,但这可能会将目录的内容分散在磁盘上。分区带来了这两种设计的大部分好处,在每个分区内有序,以接近磁盘带宽的速度遍历目录;不迁移数据,只修改元数据索引,与基于inode的系统相当的速度重命名。
-
提供新的范围删除WOD操作,加速取消链接、顺序写入、重命名、分区。使用范围删除来告诉WOD何时不再需要大量数据,可以实现进一步的优化,例如避免读取和合并过时的数据。
实现在了BetrFS 0.2中,执行目录扫描的速度快2.2倍,小型随机写入的速度快两个数量级,在重命名、删除和顺序I/O方面与传统文件系统的性能相匹配。在许多应用程序(如rsync、git-diff和tar)上也优于传统文件系统,与BetrFS 0.1相比,git-clone性能提高了35%,性能与其他文件系统相当。
总结
对利用写优化结构(LSM-trees,Bε tree)的文件系统进行优化,提出BetrFS 0.2,包括3个优化点。(1)使用延迟绑定日志以磁盘带宽执行大型顺序写入,同时保持完整数据日志的恢复语义。只将数据写入空闲空间一次,同时平衡数据的崩溃一致性和I/O调度灵活性。(2)引入了称为分区的目录树划分技术,平衡递归目录遍历和重命名。在每个分区内有序,以接近磁盘带宽的速度遍历目录;重命名不迁移数据,只修改元数据索引,与基于inode的系统相当的速度重命名。(3)提供范围删除操作,加速取消链接、顺序写入、重命名、分区。使用范围删除来优化写优化结构,同时避免读取和合并过时的数据。