Don’t Maintain Twice, It’s Alright: Merged Metadata Management in Deduplication File System...——论文泛读
针对重复数据删除文件系统(DedupFS),现有架构需要维护文件系统的逻辑到物理(L2P)映射表和用于重复数据删除的指纹到物理(FP2P)映射表,导致额外的元数据开销。本文提出GOGETAFS,核心思想是将FP2P和L2P合并,包括3个技术:(1)LFP映射,将FP2P和L2P合并,减少元数据I/O操作,减少一致性开销。(2)全局LFP表,存储于内存中,根据FP快速查找物理地址和引用计数。并根据内
问题
重复数据删除是通过消除重复项来降低存储成本的经典技术。通常会构建一个独立的重复数据删除系统,该系统位于文件系统之上[15,20,24–26,32,40,43,55,56],维护数据块的指纹(FP),并识别传入数据流的潜在重复项。对于重复的块(例如4 KiB),系统可以简单地记录/更新相应的元数据,以将其访问重定向到现有副本。
重复数据删除文件系统(DedupFS)将重复数据删除逻辑嵌入到文件系统中[22,34,45,50,53,60],通过重用文件索引进行数据重定向,从而简化实现。但由于昂贵的加密(crypto)FP(20字节[60])计算(例如SHA-1),传统的DeupFS会遭受高达65%的计算开销[45],随着存储设备的发展,如持久存储[59]和超低延迟SSD[31],使得能够使用快速的非加密(non-crypto)FP(4-8个字节[12,19,45])(例如xxHash)和内容比较,从而将计算开销降低到15%-18%[45,50]。
但是,DedupFS还存在另一个主要的性能损失:存储内维护重复数据删除元数据,在I/O路径上产生了18%-38%的开销。根本原因是,在存储中维护特定于数据消除的指纹到物理(FP2P)映射表,产生额外的崩溃一致性开销。DedupFS强制在文件系统逻辑到物理(L2P)条目之前写入FP2P条目,用于修复重复数据消除和文件系统元数据之间的不一致,但由于顺序[15-17],会导致两次元数据I/O,造成相当大的损失。

本文工作
本文认为,重复数据删除的FP2P可以与文件系统L2P合并,形成逻辑指纹物理(LFP)映射。从而在单个I/O中同时保存重复数据删除元数据和文件系统元数据。既可以重用文件系统的崩溃一致性机制,同时消除了重复数据删除和文件系统映射间的不一致。
本文提出GOGETAFS,来实现高效的LFP,同时在文件系统中实现了兼容、有效和内存高效的重复数据删除。

-
数据管理。虽然文件系统以扩展方式管理数据[9,58],但重复数据删除是逐块管理数据的。因此,GOGETAFS将块扩展的FP存储到存储表中,存储表使用文件系统崩溃一致性机制进行持久化,而无需额外排序。
-
元数据管理。文件系统按逻辑块号组织元数据以实现快速索引,但重复数据删除无法利用这一点来搜索FP。因此,GOGETAFS将LFP条目转换为FP2P条目,并使用FP作为key将其组织到内存表中。此表可以通过LFP条目进行重建,因此无需担心崩溃一致性。
-
探索了与条目放置、内存分配和数据结构相关的各种设计,以提高各种场景下的内存效率。
开源代码:GogetaFS · GitHub
通过合成和实际工作负载进行了全面评估。结果表明,GOGETAFS在I/O吞吐量方面比最先进的DedupFS高5.6%–35.0%,并显著降低了重复数据删除元数据开销。
总结
针对重复数据删除文件系统(DedupFS),现有架构需要维护文件系统的逻辑到物理(L2P)映射表和用于重复数据删除的指纹到物理(FP2P)映射表,导致额外的元数据开销。本文提出GOGETAFS,核心思想是将FP2P和L2P合并,包括3个技术:(1)LFP映射,将FP2P和L2P合并,减少元数据I/O操作,减少一致性开销。(2)全局LFP表,存储于内存中,根据FP快速查找物理地址和引用计数。并根据内存大小设计不同存储策略。(3)溢出指纹表,用于解决文件系统块和去重块大小不匹配问题,存储连续块的指纹信息,提高局部性。
更多推荐


所有评论(0)