分布式元数据论文阅读笔记整理(持续更新)

元数据优化论文阅读

The Composite-file File System: Decoupling the One-to-one Mapping of Files and Metadata for Better Performance

FAST 2016 Paper 阅读笔记

针对文件系统中元数据和文件一对一映射的问题,本文设计了一个复合文件文件系统(CFFS),允许文件到元数据的多对一映射。将经常一起访问的小文件组成复合文件,并与小文件之间共享的单个复合inode相关联。将小文件的索引节点的原始信息进行重复数据消除,并存储为复合文件的扩展属性。

选择文件组合成复合文件有三种决策策略:基于目录的合并,将目录中的所有文件(不包括子目录)形成一个复合文件;基于嵌入引用合并,提取文件内容中的文件引用,组成复合文件;基于频率合并,通过频率挖掘分析文件引用,将经常一起访问的文件形成复合文件。

HBA: Distributed Metadata Management for Large Cluster-Based Storage Systems

TPDS 2008 Paper 阅读笔记

针对多元数据服务器时,元数据性能优化。本文提出层次布隆过滤器阵列(HBA),使用全路径进行BF哈希。(1)在每个元数据服务器上维护两个Bloom过滤器。第一层具有较高的精度,使用LRU利用时间局部性,缓存部分热点文件元数据。第二层具有较低的精度,表示整个元数据的分布,以精度换取显著减少的内存开销。(2)将这两个Bloom过滤器复制到所有元数据服务器,以支持每个元数据服务器上都可以实现全局文件查找。Bloom过滤器在本地更新,修改超过阈值后更新其远程副本。

Dynamic Metadata Management for Petabyte-scale File Systems

SC 2004 Paper 阅读笔记

对分布式文件系统元数据的动态子树划分进行介绍,介绍其各种优点。(1)核心是分层划分,每个MDS只负责部分子树。(2)通过MDS间定期心跳,识别繁忙和非繁忙节点,全面考虑内存、CPU和网络利用率,利用两阶段提交进行负载均衡。(3)为了便于流量控制,MDS通过计数器记录元数据流行度,返回给客户端的响应包括请求元数据和分发信息,即客户端将来应该联系哪些MDS节点,并缓存在客户端上。(4)利用目录局部性,执行读目录或目录查找时,同时缓存目录下全部内容,优化后续查找。(5)利用有界日志存储元数据更新,精目录内容和嵌入的索引节点存储在一起,以更好地匹配预期的文件系统使用模式。

Lunule: An Agile and Judicious Metadata Load Balancer for CephFS

SC 2021 Paper 阅读笔记

对Ceph的元数据负载均衡机制进行优化,原始方法由于对未来负载预测的不准确和无效迁移导致性能低。作者通过变异系数计算不平衡因子模型,减小噪声影响,准确确定何时触发重新平衡;通过紧急参数,容忍良性的不平衡情况;感知工作负载时间局部性(最近时间间隔内元数据访问的重复性)和空间局部性(目标子树元数据访问的均匀分布,并考虑兄弟子树间的访问相关性),以选择子树迁移候选项。

GUFI: Fast, Secure File System Metadata Search for Both Privileged and Unprivileged Users

SC 2022 Paper 论文笔记

针对元数据查询的优化,通过构建外部元数据索引来加速元数据查询的性能。作者提出以下优化点:将各个底层文件系统的所有元数据汇总,构建统一的基于嵌入式数据库的新索引;在索引中添加多个表便于快速的数据库查询;在索引中增加目录汇总机制,减少数据库数量;将权限信息放入数据库中,实现并发索引查询。

局限性:实现只测试了查询效果好,但没有测试构建索引的时间开销和空间开销,整体来看是空间换时间的思路

An End-to-End Learning-Based Metadata Management Approach for Distributed File Systems

TC 2022 Paper 论文笔记

针对元数据管理方法,传统方法难以同时实现局部性和负载均衡。作者提出使用深度神经网络学习自适应的局部性保持哈希(LPH)映射方案。提出几个创新点:作者将路径映射成坐标,通过 DeepWalk 获取路径序列,在通过 SkipGram 获取特征表示,同时将访问频率加入元数据特征;使用全连接网络训练 LPH 映射,通过设计损失函数使命名空间中相近节点映射后依旧相近;只采样部分数据,保证不同距离的节点对数量近似;通过虚拟节点优化一致性哈希,采用多项式时间的多子集和问题近似算法,计算 V 个虚拟节点和 M 个元数据服务器间的分配;通过监控和贪心策略进行动态负载均衡。

结果优于子树划分和哈希方法。

局限性:模型训练过程中的2个超参数都基于数据集,不同超参数结果差别巨大,在不同数据集下难以直接使用;

DeltaFS: A Scalable No-Ground-Truth Filesystem For Massively-Parallel Computing

SC 2021 Paper 论文笔记

针对 HPC 应用的全局元数据管理开销过高,提出无全局同步的元数据设计方法。作者提出几个优化点:使用客户端日志记录和快照的方法,避免全局同步;每个作业根据需要使用部分命名空间,减少同步范围;将元数据服务端运行到作业计算节点,便于灵活扩展;通过用户启动的并行压缩,将 SSTable 合并,加快后续读取性能。

开源代码:github传送门

局限性:实验有点少。本文方法可能增加了用户使用的复杂度,使用多个快照存在版本冲突时需要用户指定优先级,需要用户自己操作并行合并来增加后续读取的性能。

Pacon: Improving Scalability and Efficiency of Metadata Service through Partial Consistency

IPDPS 2020 Paper 论文笔记

针对高性能计算的场景,这个场景中应用的元数据操作只访问整个命名空间的固定部分。因此作者设计了部分一致性模型,属于 DFS 和应用之间的中间件,根据应用对的元数据划分,对每个应用内部保证一致性,使用全路径 KV 加快查找,充分利用缓存和异步更新底层 DFS 实现高吞吐和可扩展性。同时设计批量权限管理进一步减少开销。

局限性:使用全路径 KV 加快查找,但会显著增加重命名的开销,可能考虑到高性能计算中重命名很少。利用检查点进行故障恢复,但不能保证完美的恢复,没记录成检查点的部分还会丢失。设计针对应用不会共享目录的场景,在除了高性能计算之外的场景应该不适用,或是性能没这么好。

Enhancing Metadata Transfer Efficiency: Unlocking the Potential of DAOS in the ADIOS context

SC-W 2023 Paper 论文笔记

利用DAOS数组和DAOS KV,优化ADIOS任务的元数据的写入和读取时间。提出通过并行可以加快速度,进一步通过存储空间对齐减少元数据写入的争用。

局限性:整体看下来很简单,因为是短文实验也不太充分。具体争用的原因也没有分析,可能是锁?这里应该有不少优化空间。

CFS: Scaling Metadata Service for Distributed File System via Pruned Scope of Critical Sections

EuroSys 2023 Paper

目标是性能更高的可扩展元数据服务。提出多个优化点:

  • 将元数据划分为两层,命名空间(索引节点和属性记录,按照目录划分)和文件属性(按照哈希划分),分别由分布式数据库(TaFDB)和KV存储(RocksDB)管理

  • 定义单分片原语减少组件间交互,以确定的顺序执行放松事务的原子性,放松中间状态要求最终正确,减少锁开销

  • 对重命名单独优化,细分为同一目录下或不同目录下,对大部分同一目录下采用无锁优化

  • 利用单独GC进程解决放松产生的孤儿节点

  • 客户端元数据解析,直接和CFS不同组件交互。

结果上优于现有分布式元数据,吞吐量高,延迟低,可扩展性好,可以忍受高争用和大目录。在百度AI云上部署了3年,支持各种应用。

SingularFS: A Billion-Scale Distributed File System Using a Single Metadata Server

ATC 2023 Paper

目标使用单个元数据服务支持十亿级别文件系统。现有方法存在3个挑战:崩溃一致性的开销非常大;锁争用限制了共享目录中元数据操作的吞吐量;NUMA体系结构的利用不足。

本文利用RDMA和PM设计元数据服务,提出三个优化点:

  • 无日志元数据操作,以消除大多数元数据操作额外的崩溃一致性开销

  • 分层并发控制,使用每个inode的读写锁同步inode操作,减少锁开销

  • 混合inode分区,将时间戳与目录索引节点分离,减少NUMA之间的访问和NUMA内部的锁争用。

结果上优于本地PM文件系统和分布式文件系统,高吞吐、低延迟、可扩展、支持十亿级别目录。

InfiniFS: An Efficient Metadata Service for Large-Scale Distributed Filesystems

FAST 2022 Paper

目标优化大规模分布式文件系统元数据。现有方法存在3个挑战:由于目录树难以同时实现元数据局部性和负载均衡;路径解析延迟高;客户端元数据缓存一致性开销大。

本文提出3个优化点:

  • 将目录元数据解耦为访问元数据和内容元数据,并根据局部性分别分在不同组,将不同组通过一致性哈希实现负载均衡

  • 使用KV存储数据,通过哈希计算目录ID,设计目录ID的创建方法,实现可一次性预测的全目录ID,实现并行目录解析

  • 设计乐观的元数据缓存,通过单独rename协调器在服务端之间广播路径修改信息,客户端访问时惰性无效缓存的元数据,降低缓存的一致性开销。

结果上优于现有分布式文件系统,高吞吐、低延迟、可扩展、支持大目录,共享目录下性能不好,后续有人设计了减少锁开销的方法优化贡献目录的访问。

HopsFS: Scaling Hierarchical File System Metadata Using NewSQL Databases

FAST 2017 Paper

利用数据库优化分布式元数据服务,将文件系统操作封装成分布式事务,在利用数据库技术优化事务。优化点:

  • 元数据划分,inode根据父目录ID划分,文件元数据根据文件ID划分

  • 利用inode缓存减少目录查询开销,并行查找inode

  • 利用锁和按固定顺序获取锁,实现序列化,同时避免死锁

  • 大目录上受限于数据库事务无法直接实现,使用大锁,同时固定子树执行顺序。

开源代码:gitbub传送门

LocoFS: A Loosely-Coupled Metadata Service for Distributed File Systems

SC 2017 Paper

目标优化基于KV存储的分布式元数据服务。由于目录树的原因,目录查找定位时间长, 在KV中存在(反)序列化开销,无法充分发挥KV存储性能。提出4个优化点:

  • 提出松耦合的结构,将目录元数据和文件元数据分别存储于DMS和FMS

  • 提出扁平化目录树,将树结构拆解,拆成单个的目录索引节点和文件索引节点,充分发挥KV性能,分别在DMS和FMS中根据所在目录拼接(方便范围查找?),进一步基于租约机制缓存目录索引节点,加快查找速度

  • 将文件元数据解耦成两份,尽量减少每次修改元数据的大小,同时用UUID替换索引元数据,进而去除索引节点

  • 优化重命名,减少元数据搬迁,利用B+树加速。

𝜆FS: A Scalable and Elastic Distributed File System Metadata Service using Serverless

arXiv Paper

基于FaaS实现弹性、高性能的元数据服务。提出各种优化点:

  • 利用混合HTTP-TCP RPC机制实现客户端和元数据服务器的通信,实现更高吞吐和低延迟

  • 使用内存缓存层缓存元数据加快查找速度

  • 使用灵活自动伸缩机制

  • 实现简单的强一致性协议(每次更新都要使所有缓存无效,开销高),用子树一致性协议,锁开销高。

开源代码:gitbub传送门

The State of the Art of Metadata Managements in Large-Scale Distributed File Systems — Scalability, Performance and Availability

TPDS 2022 Paper

关于元数据服务的综述,从三方面分析元数据的优化空间:

  • 高可扩展

    • 静态空间划分方法:静态子树划分方法,哈希函数映射方法,子树哈希方法

    • 动态空间划分方法:动态子树方法,目录项子集方法,动态哈希方法

  • 高性能

    • 缓存和复制

    • 元数据检索:索引树,布隆过滤器,预取,键值数据库

    • 增值元数据

  • 高可用性

    • 基于拷贝

    • 基于日志

元数据论文泛读

CFFS: A Persistent Memory File System for Contiguous File Allocation With Fine-Grained Metadata

IEEE Access 2022 Paper 泛读笔记

针对PM上的文件系统,现有方法缺乏细粒度元数据管理,需要日志进行持久化;mmap导致的页错误开销高。本文提出CFFS(连续文件分配与细粒度元数据文件系统),包括两个技术:(1)高效的页面分配算法,使用基于贪婪的伙伴系统和非最近使用(NMRU)的隐式预分配,以减少文件碎片并增加碎片对齐。将PM分为多个组,通过列表Buddy Structure管理,根据分配时的提示决定是否预分配。(2)利用PM的字节可寻址设计细粒度元数据。采用持久双链表进行目录操作,使用具有内存屏障的方法(x86中的sfence)来确保操作序列,无需使用日志机制。

Fast and Low Overhead Metadata Operations for NVM-Based File System Using Slotted Paging

TCAD 2022 Paper 泛读笔记

针对持久内存文件系统(PMFS)的优化,现有方法dentry没有使用结构管理,每次线性查找开销高,日志记录开销高。本文提出FLOMO,快速、低开销的元数据操作机制。包含3个技术:(1)采用了slotted-paging结构来重组dentry,以有效地执行插入和删除。(2)用文件名的哈希值作为key,在DRAM中为每个目录构建一个红黑树,以加快查找。(3)提出选择性日志记录,在slotted-paging中记录与dentry相关的更改,减轻了冗余的日志记录开销。

An Adaptive Metadata Management Scheme Based on Deep Reinforcement Learning for Large-Scale Distributed File Systems

TON 2023 Paper 泛读笔记

针对分布式元数据管理方法,本文提出基于深度强化学习的细粒度元数据管理方案AdaM。包括三个技术:(1)根据当前状态(访问模式、名称空间树、MDS节点分布),训练actor-critic网络,在服务器之间自动迁移热元数据节点。(2)自适应元数据缓存策略,动态结合服务器端和客户端管理缓存,以提高查询效率,降低网络开销。(3)分布式处理协议,称为基于MST的2PC,以保证分布式元数据事务的一致性。

A Low-Latency Metadata Service for Geo-Distributed File Systems

Journal of Systems Architecture 2022 Paper 泛读笔记

针对部署在不同地理位置的分布式文件系统,现有方法没有针对地理距离造成的延迟进行优化。本文提出低延迟元数据服务LoLaMS,旨在减少服务调用延迟。核心思想是利用用户访问的局部性,对用户操作行为的分析,对访问延迟超过阈值的元数据进行动态子树划分和迁移,在附近的元数据服务器中处理更多的元数据服务调用,满足预期的延迟。

CLMS: Configurable and Lightweight Metadata Service for Parallel File Systems on NVMe SSDs

APPT 2023 Paper 泛读笔记

针对基于NVMe SSD的并行文件系统(PFS)元数据,现有PFS基于本地文件系统构建MDS,但并行访问时受限于本地文件系统的锁争用,性能低。本文提出CLMS,包括两个创新点:(1)同时使用基于目录和基于哈希的元数据分发策略,在MDS间分发负载【但实际上没结合起来,是两个单独的策略,意义不大】(2)使用用户空间元数据服务设计,降低了I/O路径中的内存复制和序列化处理开销。

MetaWBC: POSIX-Compliant Metadata Write-Back Caching for Distributed File System

SC 2022 Paper 泛读笔记

针对并行的分布式文件系统,现有方法采用写回的数据缓存以提高性能,采用直写的元数据缓存以简化一致性。本文提出元数据写回缓存(MetaWBC)机制,一种客户端驱动的文件系统架构,允许应用程序在本地处理其元数据和数据操作。包括3个技术:(1)提出了内存文件系统(MemFS)作为元数据缓存。内存充足时,所有的数据和元数据都缓存在虚拟内存中。由内核守护进程线程定期检查并回收MemFS中的缓存数据。也可以设置MemFS使用内存的上限,当内存紧张或内存使用接近上限时,数据可以直接写入主后端文件系统。(2)通过周期性刷新脏数据保证持久化。元数据在MemFS更新,直到需要刷新时才发送RPC。通过合并更新、元数据批处理,减少RPC调用 。在写回期间对刷新进行排序,确保自顶向下的顺序,实现强一致性。(3)使用EX DLM锁实现缓存和后端文件系统之间的一致性,实现客户端对整个目录子树的独占访问。

FileScale: Fast and Elastic Metadata Management for Distributed File Systems

SoCC 2023 Paper 泛读笔记

针对文件系统元数据,如何保证可扩展性的同时保证性能。本文提出FileScale,基于HDFS的文件系统,用三层分布式体系结构取代了HDFS中的元数据管理,三层体系结构包括:路由层、分布式缓存层、分布式数据库系统(DDBMS)层,大多数请求都可以通过与DDBMS的异步、批处理交互来处理,并允许独立地弹性缩放体系结构中的每一层。

ICCG: low-cost and efficient consistency with adaptive synchronization for metadata replication

FCS 2025 Paper 泛读笔记

针对由于元数据复制导致的I/O性能瓶颈,如何减少一致性和复制开销。本文提出ICCG,包括两个技术:(1)ICGDT,增量一致性保证的目录树同步。通过冲突状态树,判断元数据操作冲突的可能性,并由此决定使用最终一致性到强一致性的不同要求,从而降低一致性开销。(2)CCGRI,因果一致性保证副本索引同步。采用延迟复制,将数据同步更新转换为数据索引同步更新,直到副本数据被访问或广域链路空闲才真正同步数据。采用逻辑时间戳来建立I/O请求之间的因果依赖关系,并通过多版本段树解决没有依赖关系的请求所产生的冲突。

Exploiting Flat Namespace to Improve File System Metadata Performance on Ultra-Fast, Byte-Addressable NVMs

TOS 2024 Paper 泛读笔记

针对NVM上文件系统元数据的优化,现有方法基于树形命名空间,导致昂贵的路径遍历开销;元数据在物理空间分散,无法充分利用NVM的高性能。本文提出FlatFS+,具有扁平的命名空间架构,同时提供了兼容的分层命名空间视图。包括三个优化点:(1)缩短路径遍历:全路径遍历模型。将路径名查找与其他复杂的系统操作分离,同时保留了传统路径遍历的语义。(2)优化范围操作:通过范围优化的Br树来管理平面命名空间中可变大小的路径名索引键,Br树提供了有效的节点查找和数据结构级别的范围操作。(3)降低持久化成本:扫描和写入优化的压缩(SWoC)索引密钥设计。改进可变大小的路径名密钥存储位置,提高目录读取期间的NVM顺序带宽,并减少索引密钥中小型随机写入。

BatchFS: Scaling the File System Control Plane with Client-Funded Metadata Servers

PDSW 2014 Paper 泛读笔记

针对用于大规模HPC的并行文件系统,现有方法受到目录上的锁争用、事务序列化、RPC开销、负载失衡等降低应用程序性能。本文提出客户端驱动的文件系统元数据架构BatchFS,针对非交互或批处理工作负载进行了优化。包括3个优化点:(1)放松的一致性模型,对于批处理工作负载可以在几乎没有外部协调的情况下协同执行任务,不需要实现强一致性。(2)惰性命名空间同步,每个作业都对文件系统快照进行操作,并自行管理其命名空间,最终同步到主快照中,减少了同步数量。(3)乐观元数据验证,确保全局命名空间语义的安全,为元数据操作建立总顺序。

Dr. Hadoop: an infinite scalable metadata management for Hadoop—How the baby elephant becomes immortal

FITEE 2016 Paper 泛读笔记

对Hadoop中元数据管理的优化,优化负载均衡和故障容忍。提出动态循环元数据拆分(DCMS):(1)使用位置保持哈希在多个NameNode间分发元数据,保持元数据的局部性。(2)NameNode集群大小变化时,使用一致性哈希实现元数据的统一分布,保持负载平衡。(3)使用元数据复制以实现可靠性,在单点故障时依旧提供性能下降的服务。

Optimizing Every Operation in a Write-optimized File System

FAST 2016 Paper 泛读笔记

对利用写优化结构(LSM-trees,Bε tree)的文件系统进行优化,提出BetrFS 0.2,包括3个优化点。(1)使用延迟绑定日志以磁盘带宽执行大型顺序写入,同时保持完整数据日志的恢复语义。只将数据写入空闲空间一次,同时平衡数据的崩溃一致性和I/O调度灵活性。(2)引入了称为分区的目录树划分技术,平衡递归目录遍历和重命名。在每个分区内有序,以接近磁盘带宽的速度遍历目录;重命名不迁移数据,只修改元数据索引,与基于inode的系统相当的速度重命名。(3)提供范围删除操作,加速取消链接、顺序写入、重命名、分区。使用范围删除来优化写优化结构,同时避免读取和合并过时的数据。

The Full Path to Full-Path Indexing

FAST 2018 Paper 泛读笔记

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

Finding a needle in Haystack: Facebook’s photo storage

OSDI 2010 Paper 泛读笔记

针对Facebook海量照片存储,访问模式为数据只写一次,经常读取,从不修改,很少删除。因此设计了Haystack,对象存储系统。(1)大幅减少在磁盘上查找照片所需的每张照片的元数据(20字节),将所有元数据保存在主存储器中,每次读取最多需要一个磁盘操作来实现高吞吐量和低延迟。(2)查询图片时,目录服务器生成http:/<Logical Volume, Photo>格式的URL,依次请求各个组件获取数据。

SoMeta: Scalable Object-centric Metadata Management for High Performance Computing

CLUSTER 2017 Paper 泛读笔记

针对HPC场景中元数据管理问题,现有方法难以支持动态扩展和变化的元数据信息(数据存储信息,数据源,初步分析结果等),现有方法不能支持高效的高级元数据操作如添加和搜索标签。本文提出SoMeta:(1)动态分区的平面命名空间,使用包含多个标签的平面命名空间存储元数据。利用两级哈希分散数据,第一季将数据分布到服务器上,第二级用于查找。(2)可扩展和用户可定义的元数据的标记方法,支持动态标签创建、更新和删除操作。(3)支持灵活的元数据搜索,可以使用语义标签搜索和检索元数据对象。(4)利用检查点实现容错。

Metadata Traces and Workload Models for Evaluating Big Storage Systems

International Conference on Utility and Cloud Computing 2012 Paper 泛读笔记

对现有的元数据跟踪分析,发现现有跟踪缺乏命名空闲信息,导致大量跟踪期间未访问的信息缺失。本文提出Mimesis,一个合成的工作负载生成器,包括命名空间生成模块和工作负载生成模块。实现较好的工作负载生成结果,RMSE<6%。

Distributed Directory Service in the Farsite File System

OSDI 2006 Paper 泛读笔记

本文介绍了Farsite的分布式目录服务的设计。、(1)引入了树形结构的文件标识符,支持以任意粒度动态划分元数据。不使用文件路径进行划分,使用不变的文件标识符,通过前缀匹配决定所在服务器。(2)通过递归路径租赁可伸缩地保持名称空间的一致性。(3)通过多机器间两阶段协议管理重命名的一致性操作。(4)通过文件字段租赁和分离租赁的新机制来缓解元数据热点。

Adaptive and Scalable Metadata Management to Support A Trillion Files

SC 2009 Paper 泛读笔记

针对大目录和海量文件的分布式文件系统元数据性能。提出:(1)基于可扩展哈希使用两级目录分区来管理大目录,根据文件名计算哈希,将哈希的不同部分作为分区信息和分块信息,根据分区和分块信息划分到不同服务器上。(2)使用分区、分块作为元数据修改的单元,同时处理同一目录中的文件创建或删除等更新操作。(3)根据元数据的类型将元数据缓存划分为具有不同替换优先级的多层,分层管理缓存,增加缓存效率。(4)使用基于一致哈希的动态负载平衡机制。

局限性:整体基于哈希划分文件,文件重命名后可能导致大量的数据迁移。基于哈希也难以实现较好的局部性。

A Novel Distributed File System Using Blockchain Metadata

Wireless Personal Communications 2023 Paper 泛读笔记

使用区块链的思想构建分布式文件系统元数据。避免使用昂贵的单个名称节点,使用多个廉价硬件,通过分布式共识确保元数据不被修改,通过单个辅助副本和奇偶校验进行故障恢复。

Low-Latency and Scalable Full-path Indexing Metadata Service for Distributed File Systems

ICCD 2023 Paper 泛读笔记

针对分布式文件系统元数据的优化,实现更低的延迟,主要解决权限验证和超大目录的问题。本文提出Duplex,基于全路径索引的DFS元数据服务。(1)采用双访问路径方式,具有低延迟的快速路径和高吞吐量的慢速路径。快速路径,使用专用权限服务器(PMS),缓存来自MDS的所有目录权限,使延迟敏感应用程序的请求能够快速完成权限检查。慢速路径,利用并行路径解析来实现可扩展的吞吐量。(2)基于树的权限合并算法,以提高PMS的空间效率,防止PMS成为系统容量瓶颈。(3)通过双一致性哈希(DCH)在MDS集群之间分配目录子集,即使对于深度文件和超大目录,也能提供低而稳定的访问延迟。

ShardFS vs. IndexFS: Replication vs. Caching Strategies for Distributed Metadata Management in Cloud Storage Systems

SoCC 2015 Paper 泛读笔记

对不同类型的元数据工作负载应该采用不同的优化方法。如果目录查找状态修改是操作的固定部分,那么客户端缓存效果更优。如果目录查找状态修改与作业的数量成正比,那么服务器复制效果更优。

CalvinFS: Consistent WAN Replication and Scalable Metadata Management for Distributed File Systems

FAST 2015 Paper 泛读笔记

针对文件系统跨数据中心的可扩展性,现有方法无法实现跨地理距离的文件系统语义和工具。本文提出将元数据水平分区,并复制到跨地理区域的无共享服务器集群中,将文件系统操作转化成分布式事务,利用数据库系统进行事务调度和复制管理;通过数据库支持标准文件系统语义,优化单文件的并发写入。缺点是多文件操作需要分布式事务支持,导致延迟变高。

PetaKV: Building Efficient Key-Value Store for File System Metadata on Persistent Memory

TPDS 2023 Paper 泛读笔记

针对PM文件系统的元数据KV存储优化。作者提出用双哈希索引:第一个包含文件或目录的哈希表(称为文件表),以支持快速元数据检索;第二个将多个Peta日志合并(称为目录表),这些日志将文件元数据并置在同一目录中,以实现高效的目录扫描。提出优化peta日志的结构,以平衡PM模块之间的写入请求,从而获得更高的PM的吞吐量。

FUSEE: A Fully Memory-Disaggregated Key-Value Store

FAST 2023 Paper 泛读笔记

针对分离式内存系统中,KV存储的元数据可扩展性差的问题。作者提出将元数据分离到每个内存节点上,在内存节点上复制元数据信息。提出三个优化点:通过客户端为中心的复制协议SNAPSHOT,在不序列化的同时解决写冲突,在多个副本上更新最后判断顺序解决冲突;采用两级内存管理方案,将内存管理分为重任务和轻任务,分别由客户端和内存节点管理;采用嵌入式操作日志进行故障恢复,减少日志开销。

MapperX: Adaptive Metadata Maintenance for Fast Crash Recovery of DM-Cache Based Hybrid Storage Devices

ATC 2021 Paper 泛读笔记

针对HDD-SSD分层存储系统的DM-cache,怎么实现更快的崩溃恢复。作者用只需少量同步开销的自适应位树(ABT),以分层方式同步维护脏位的元数据,在崩溃恢复时只恢复部分数据。

局限性:整体思路比较简单,就是用少量同步数据记录脏数据,减少崩溃恢复的数据数量。

A GPU-Accelerated In-Memory Metadata Management Scheme for Large-Scale Parallel File Systems

JCST 2021 Paper 泛读笔记

针对高性能计算场景下元数据可扩展性不足,作者分析原因在于元数据操作性能低和并发性不足,进而导致扩展时的一致性和网络开销。作者提出通过GPU提升单个元数据服务器的性能:通过CPU进行与客户端的通信,将相关计算任务卸载到GPU;重新设计命名空间的内存数据结构,充分发挥GPU性能。

An Efficient Ring-Based Metadata Management Policy for Large-Scale Distributed File Systems

TPDS 2019 Paper 泛读笔记

针对元数据管理方法,传统方法难以同时实现局部性和负载均衡。作者提出用保持局部性哈希(LPH)函数对命名空间树进行分配,实现局部性;基于历史的分配策略,动态调整负载,实现负载均衡;两层缓存机制,优化元数据查询;2PC-MQ机制,保证不同MDS间事务一致性。

DROP: Facilitating Distributed Metadata Management in EB-scale Storage Systems

MSST 2013 Paper 泛读笔记

目标是同时优化元数据局部性和元数据服务器间的负载均衡,通过LPH保持局部性,通过一致性哈希中虚拟节点的思想和动态负载均衡在元数据服务器间调度。

后续也有论文提出了AngleCut,DeepHash的方法,应该都是借鉴了这个的思路,针对相同问题做进一步的优化

IndexFS: Scaling File System Metadata Performance with Stateless Caching and Bulk Insertion

SC 2014 Paper 泛读笔记

对大量元数据访问和小文件访问的优化。利用扩展索引技术与扩展元数据表示的组合,以增强元数据服务的可扩展性和性能;采用基于表的架构,按目录划分命名空间保证局部性;采用LSM tree优化存储元数据和小文件;用于缓解热点的无状态一致性元数据缓存;用于密集型工作负载的批量命名空间插入。

构建在文件系统之上的中间件,通过重新构建一些便于查找的表来优化元数据和小文件访问的并行性

File System Semantics Requirements of HPC Applications

HPDC 2021 Paper 泛读笔记

很多HPC应用不需要保证顺序一致性,实现顺序一致性会影响缓存、产生额外流量、在高度共享下产生拥塞。作者通过对HPC应用的I/O操作进行分析,基于较弱语义下的访问重叠和访问冲突测试,来分析应用的一致性需求;并提出了PFS一致性模型的分类,根据应用分析结果对应到不同的一致性模型中。

属于HPC应用优化的前置工作,分析后可以对不同应用使用不同一致性模型优化性能。

AdaM: An Adaptive Fine-Grained Scheme for Distributed Metadata Management

ICPP 2019 Paper 泛读笔记

为了同时解决元数据局部性和元数据服务器的负载均衡。作者认为之前的方法:基于历史数据,会滞后于访问模式的变化;迁移粒度太粗,导致冗余的迁移成本。提出基于深度强化学习(DRL)的细粒度迁移策略,根据DRL预测未来状态进行迁移,而且只迁移热节点,减少迁移开销。

High Performance Metadata Integrity Protection in the WAFL Copy-on-Write File System

FAST 2017 Paper 泛读笔记

针对WAFL写时复制的文件系统,如何以低开销保证元数据的完整性,同时区分是由于内存乱写还是辑错误引起的损坏。作者通过引入元数据块的校验和,避免元数据块受乱写的影响;通过基于摘要的事务审计系统,以极低的性能开销防止逻辑错误;对两种问题分开处理,因此可以识别完整性问题的原因;通过低开销的页面保护技术定位问题的根本原因。

An SIMD-Accelerated Metadata Management Scheme for Persistent Memory File Systems

CCGrid 2022 Paper 泛读笔记

发现在PM中的文件系统元数据计算开销大,因此考虑使用SIMD加速PM文件系统的元数据计算,并使用基于线性哈希(LH)[15]的目录和SIMD感知数据结构和算法,来加速元数据操作。发现使用DRAM缓存数据开销大,设计在PM上直接操作,消除PM和DRAM之间的数据交互开销。

MetaKV: A Key-Value Store for Metadata Management of Distributed Burst Buffers

IPDPS 2017 Paper 泛读笔记

针对HPC场景中共享文件元数据的突发负载,在N-1场景下元数据写入和读取性能低。作者将元数据划分为索引元数据和文件属性元数据,分别针对读写场景优化。通过压缩存储的方法减少重构索引布局;通过有监督的读取聚类优化读取性能;通过基于日志环的覆盖网络优化通信。

FlatFS: Flatten Hierarchical File System Namespace on Non-volatile Memories

ATC 2022 Paper 泛读笔记

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

文件系统

Ethane: An Asymmetric File System for Disaggregated Persistent Memory

ATC 2024 Paper 泛读笔记

针对基于PM的分布式文件系统,现有方法存在3个问题:昂贵的跨节点交互、薄弱的单节点能力、昂贵的横向扩展性能。本文提出Ethane,基于分离式持久内存(DPM)的文件系统。包括3个技术:(1)采用非对称文件系统架构,拆分为控制平面FS(运行在CN,维护部分缓存视图)和数据平面FS(运行在MN,维护全局视图,提供共享空间)。(2)控制平面FS负责持久性、并发性和一致性,利用共享日志实现。将每个操作的oplog写入PM实现持久性;将文件系统操作转换为日志排序,处理并发性;在每个操作前回放共享日式实现一致性。(3)数据平面FS负责存储管理和处理数据请求,设计了统一的存储范式,将各种文件系统数据结构转换为键值元组,并实现并行元数据和数据路径的机制。

Application and user-specific data prefetching and parallel read algorithms for distributed file systems

CLUSTER 2024 Paper 泛读笔记

针对分布式文件系统的读性能,如何实现更高效的缓存和预取。本文提出特定于应用程序和特定于用户的数据预取算法 AUSDPC,根据访问文件块的频率和时间排名的组合,预取数据并将其存储在分布式文件系统的多级缓存中。包括两个技术:(1)将缓存分为两个分区,用户缓存和应用程序缓存,以根据考虑用户和应用程序级访问计算的流行度值存储预取的数据。(2)引入了并行读取算法,可以从分布式文件系统中的多个缓存中同时读取数据。

Tarazu: An Adaptive End-to-end I/O Load-balancing Framework for Large-scale Parallel File Systems

TOC 2024 Paper 泛读笔记

针对大型分布式并行文件系统的I/O负载不均衡问题,面临工作负载多样性、不同文件条带模式等问题。本文提出Tarazu,使客户端透明地、自适应地写入一组I/O服务器,实现不同I/O大小下平衡的数据放置。核心思路是:分析应用I/O请求模式,预测I/O创建行为;统计OSS的信息,与预测的I/O行为结合找到I/O放置策略;拦截应用I/O创建请求,按照放置策略进行分配。包括两个技术:(1)从客户端和服务器收集有关应用程序存储要求以及存储服务器负载的实时信息,以平衡的方式将I/O请求映射到OST和OSS。(2)将预测模型移动到客户端,并将预测的文件请求转发到MDS,以可扩展的方式实现最佳文件放置。

Facilitating the Efficiency of Secure File Data and Metadata Deletion on SMR-based Ext4 File System

ASPDAC 2021 Paper 泛读笔记
针对SMR场景的ext4的安全删除(多次重写已删除数据的无效存储)性能,现有方法将元数据、数据分类,导致安全删除时读合并写(RMW)过多。本文提出安全删除和SMR感知空间分配(SSSA)策略,以促进安全删除文件及其元数据,包括3个技术:(1)元数据重定向机制。将元数据和数据连续存储,以在安全删除期间减少读合并写(RMW)操作。(2)弹性保护屏障方案。在不同文件的相邻块之间插入空白轨道进行分段,缓解了写放大。(3)反碎片空间分配器。将多个小文件打包到同一个段,以降低保护屏障的开销,同时缓解段中的内部碎片。

High Performance Design for HDFS with Byte-Addressability of NVM and RDMA

ICS 2016 Paper 泛读笔记

针对利用NVM优化HDFS,本文提出NVFS(NVM和RDMA感知HDFS),以利用NVM的字节寻址能力进行基于RDMA的通信。包括四个技术:(1)从NVM分配内存用于RDMA通信,减少了计算和I/O的内存争用。(2)重新设计HDFS存储体系结构,以利用NVM的内存语义进行I/O操作。(3)在底层文件系统中仅针对作业输出和预写日志(WAL)使用NVM来加速Spark和HBase。(4)使用NVFS作为突发缓冲层的增强功能,用于在并行文件系统(如Lustre)上运行Spark作业。

NOVA: A Log-structured File System for Hybrid Volatile/Non-volatile Main Memories

FAST 2016 Paper 泛读笔记

针对混合易失性/非易失性主存储器的环境,如何设计高性能、保证一致性的文件系统。本文提出NOVA,扩展了日志结构文件系统的思想。包括3个技术:(1)为每个inode维护单独的日志,以提高并发性。利用NVMM随机访问,将日志存储为链表,不需要在内存中连续,使用对日志尾部指针的原子更新来提供原子日志附加。对于跨多个inode的操作,NOVA使用轻量级日志记录。(2)将文件数据存储在日志之外,提高恢复速度,同时降低垃圾回收成本,在页面过时时立即回收,并允许NOVA即使在文件系统几乎满了的情况下也能保持良好的性能。(3)日志提供元数据、数据和mmap原子性,将复杂的元数据结构保留在DRAM中以加速查找操作。

DAOS: A Scale-Out High Performance Storage Stack for Storage Class Memory

Supercomputing Frontiers 2020 Paper 泛读笔记
针对大规模分布式非易失性内存(NVM)下的存储系统,本文提出DAOS,采用PMDK、SPDK、RDMA、用户态线程等技术,使数据从发起到存储的整个过程都处于用户态。核心是3个组件:(1)用持久内存和PMDK,存储元数据、KV索引、对延迟敏感的小型I/O,使用load和store等内存指令直接访问。(2)用NVMe SSD和SPDK,支持大I/O和对延迟不敏感的小I/O,使用零拷贝、异步提交I/O等技术。(3)用Libfabric定义用户空间API,客户端的消息和数据传输使用基于回调的异步API,服务线程采用轮询处理网络事件,不使用中断,避免上下文切换对性能的影响。

Oasis: Controlling Data Migration in Expansion of Object-based Storage Systems

TOS 2023 Paper 泛读笔记
对Ceph中CRUSH算法的优化,如何实现扩展时避免过多数据迁移。本文提出MapX,使用额外的时间维度映射(从对象创建时间到集群扩展时间)来控制集群扩展后的数据迁移。将每个扩展都视为CRUSH映射的一个新层,由CRUSH根下的一个虚拟节点表示。MapX通过操纵PG的时间戳来控制从对象到层的映射,使现有对象驻留在其原始层,新对象映射到新层中。

NVMM-Oriented Hierarchical Persistent Client Caching for Lustre

TOS 2021 Paper 泛读笔记

针对Lustre客户端缓存策略的优化,本文提出NVMM-LPCC,将基于NVMM的客户端文件系统与Lustre LPCC缓存方案相结合。缓存在文件粒度上工作,实现两种缓存模式:读写模式(RW-NVMM-LPCC)和只读模式(RO-NVMM-LPCC)。NVMM-LPCC利用Lustre的分层存储管理(HSM)和分布式锁机制,实现客户端缓存和服务器端存储层之间的数据迁移,提供全局统一命名空间并确保数据一致性。在Lustre的Llite层设计了缓存文件信息的结构,使NVMM-LPCC能够轻松集成各种高性能的本地文件系统来管理本地缓存的数据。

Copy-on-Abundant-Write for Nimble File System Clones

TOC 2021 Paper 阅读笔记

针对BetrFS中目录克隆的优化,传统的CoW受复制粒度影响,复制粒度较大则对CoW单元的第一次写入延迟高;复制粒度较小则局部性差,顺序读取开销高。本文提出大量写入时复制的策略(CAW)。(1)将BetrFS的Bε树数据结构转换为有向无环图(Bε-DAG),使不同的遍历路径能够重用相同的物理数据,将单次的小写通过缓冲区汇集,一次性写入,从而降低写放大。支持:节点引用计数(克隆后添加新引用指向克隆路径),过滤主键(克隆后删除缓冲区中克隆路径无法访问的路径),前缀转换(不修改数据,修改查找时的路径)。(2)引入了GOTO消息,将逻辑副本快速持久化到消息缓冲区中,降低对克隆区域第一次写入的延迟。

TPFS: A High-Performance Tiered File System for Persistent Memories and Disks

TOS 2023 Paper 泛读笔记

针对跨DRAM、PM、SSD的分层文件系统,如何在多种异构设备中迁移数据实现更高性能。本文提出了TPFS,跨PM和磁盘的分层文件系统。包括两个优化点:(1)利用三个预测器,分析文件I/O序列,预测:同步性、写入大小和读取频率。根据预测将I/O请求引导到最合适的层:同步更新的I/O传入PM层;小随机写入传入PM层;异步更新和大型顺序写入传入磁盘;经常读取的文件迁移到磁盘,并缓存在DRAM中。(2)在线评测应用程序的访问流,预测文件数据块的温度,识别冷写和热读的数据块,将相邻数据块合并迁移到磁盘。

RADOS: A Scalable, Reliable Storage Service for Petabyte-scale Storage Clusters

SC 2007 Paper

对Ceph中的RADOS算法进行介绍, 通过控制数据读写流程、日志记录方法、故障处理、数据恢复等,实现系统整体可扩展,避免受到元数据服务器、控制器等限制集群规模。

PVFS: A Parallel File System for Linux Clusters

ALS 2000 Paper 泛读笔记

对PVFS的介绍,构建在Linux集群上的并行文件系统。应用程序进程通过客户端库与PVFS交互。PVFS在本地文件系统之上构建,通过管理器守护进程,处理元数据操作。管理器守护进程将数据条带化,映射到I/O守护进程,即本地客户端-服务器系统,运行在集群中的独立节点,并连接有磁盘。

Hierarchical File Systems are Dead

HotOS 2009 Paper 泛读笔记

本文提出一种新的文件系统体系结构 hFAD,便于普通用户使用的文件系统,用标记的、基于搜索的名称空间取代了分层名称空间。(1)对象命名时使用多个标记+值命名,便于用户通过不同标记进行搜索。(2)对象访问时额外支持插入和部分删除,允许用户直接对字节操作,在对象中间插入或删除数据。(3)存储部分使用索引存储,根据标签构建多个索引。

The Quantcast File System

VLDB 2013 Paper 泛读笔记

设计了QFS文件系统,与HDFS兼容。设计了几个优化点:采用RS编码存储数据,不使用三副本,节省50%存储空间;使用B+树存储元数据,将目录条目节点紧跟在目录属性节点之后以优化目录查询,块信息节点紧跟在文件属性节点之后,以优化打开和读取文件。

开源代码:https://github.com/quantcast/qfs

Pangu – The High Performance Distributed File System by Alibaba Cloud

Website 阅读笔记

对阿里云盘古2.0的基本介绍,整体分为三层:软硬件集成层,与硬件交互,独立完成新硬件、新媒体的快速导入;存储引擎进行数据持久化;核心基础层,负责元数据管理、数据的放置、一致性、可靠性、多副本协议、EC等功能。核心架构和HDFS相似。

More Than Capacity: Performance-oriented Evolution of Pangu in Alibaba

FAST 2023 Paper 泛读笔记

对阿里云盘古2.0的介绍,包括两个阶段:(1)通过文件系统重构和用户空间存储操作系统(USSOS),充分利用SSD和RDMA。设计了统一的、仅追加的持久层,引入了自包含块布局,以减少文件写操作的I/O延迟。USSOS使用运行到完成线程模型,利用高效CPU和内存资源分配的用户空间调度机制。(2)从面向容量发展为面向性能。升级基础设施,开发了每台服务器96 TB SSD,将网络带宽从25 Gbps升级到100 Gbps。引入了一系列关键设计,通过降低网络流量放大率和动态调整流量的优先级来优化网络带宽;通过远程直接缓存访问(RDCA)来解决内存瓶颈;通过消除数据(去)序列化的数据税,引入CPU等待指令同步超线程,来解决CPU瓶颈。

File Systems Unfit as Distributed Storage Backends: Lessons from 10 Years of Ceph Evolution

SOSP 2019 Paper 泛读笔记

分布式文件系统通常使用本地文件系统作为存储后端,但受到本地文件系统的三个限制:事务机制不高效;元数据性能不足;支持新存储硬件速度慢。因此Ceph提出BlueStore,用于直接在原始存储设备上运行的新后端。包括4个工作:(1)将低级文件系统元数据(如扩展位图)存储在RocksDB中,从而避免了更改磁盘格式。(2)设计用户空间文件系统BlueFS,使RocksDB能够在原始存储设备上更快地运行。(3)通过接口设计来优化克隆操作,并最小化由此产生的扩展引用计数的开销。(4)空间分配器,其具有每TB磁盘空间固定的35MB存储器使用率。

Colossus under the hood: a peek into Google’s scalable storage system

Web page 泛读笔记

对 Google 存储服务的基本介绍, 其中包括三个主要组件:Colossus,集群级文件系统;Spanner,全球一致、可扩展的关系数据库;Borg,可扩展的作业调度程序。Colossus 包含5个部分:Client library,应用程序或服务与 Colossus 交互的方式,使用各种编码来针对不同的工作负载微调性能和成本权衡;Colossus Control Plane,可扩展的元数据服务,由许多 Curator 组成;Metadata database,将文件系统元数据存储在高性能 NoSQL 数据库 BigTable 中;D File Servers,减少了网络上数据的跳数,数据直接在客户端和 D 文件服务器(网络附加磁盘)之间流动;Custodians,后台存储管理器,维护数据的持久性和可用性、效率、磁盘空间平衡、 RAID 重建等任务。

Facebook’s Tectonic Filesystem: Efficiency from Exascale

FAST 2021 Paper 阅读笔记

对Facebook存储系统进行介绍,之前采用多个子系统独自构建存储栈,不同子系统资源需求不同,导致资源没有充分利用。提出Tectonic,用单个系统实现各种用例,避免资源浪费,实现IOPS和存储空间的均衡,满足EB级别,租户间隔离,共享资源等的需求。包括4个部分:Chunk Store,由存储节点组成;Metadata Store,由 KV 存储和文件系统元数据层组成;Client Library,负责编排;Background services,维护集群一致性和容错。详细介绍了各种组件的实现方法。

Octopus+: An RDMA-Enabled Distributed Persistent Memory File System

TOS 2021 Paper 泛读笔记

针对使用NVM和RDMA的分布式文件系统,现有方法将文件系统和硬件隔离,难以充分发挥性能。本文提出Octopus+,通过紧耦合非易失性存储器和RDMA特性来重新设计文件系统的内部机制。(1)数据操作,直接访问共享的持久内存池,以减少内存复制开销。并主动提取和推送客户端中的所有数据,以重新平衡服务器和网络的负载。(2)元数据操作,引入了自识别的远程过程调用,可在文件系统和网络之间立即发出通知。结合RDMA写入和原子原语,实现高效的分布式事务机制,以实现一致性。(3)启用复制功能,基于操作日志复制小型元数据,采用客户端主动复制文件数据,以提供更好的可用性。

Scalable Performance of the Panasas Parallel File System

FAST 2008 Paper 泛读笔记

本文介绍了Panasas并行文件系统的设计。存储节点运行OSDFS对象存储,管理器节点运行文件系统元数据管理器、群集管理器和Panasas文件系统客户端。可扩展性来自于每个存储节点的平衡特性,包括磁盘、CPU、内存和网络带宽资源。良好的性能来自于利用非易失性内存来隐藏延迟和保护缓存,以及在块、文件和系统级别跨存储群集中的存储节点和管理器节点分发文件服务器元数据的能力。通过按文件RAID保护在对象上剥离文件,可以为具有多个客户端的环境提供可扩展的性能,并降低故障操作系统的重建率。

Small-File Access in Parallel File Systems

ISPA 2009 Paper 泛读笔记

针对用于HPC应用的并行虚拟文件系统(PVFS),许多应用程序的自然I/O模式会生成许多小文件,但现有并行文件系统不能很好地支持小I/O访问。本文提出5个技术:(1)文件预处理:创建文件前提前生成数据对象,减少通信的消息数量。(2)文件填充:对小文件进行填充,显著减少了创建的数据对象的数量,同时stat操作不再需要额外获取小文件的文件大小,减少了数据收集的通信。(3)元数据提交合并:采用操作队列进行控制,根据队列大小衡量负载密集程度,低于阈值直接刷新,高于阈值则合并刷新。(4)两种I/O模式:大I/O接收器必须在发送数据之前做出确认,以确保有足够空间;小I/O发送方立即将数据发送到接收方,从而减少延迟。(5)readdirplus扩展,通过readdirplus调用将目录读取请求与对目录中对象统计请求合并。

An introduction to BeeGFS-2018 v2.0

Paper 泛读笔记

对BeeGFS的基本介绍,包括四个基本服务:管理服务:所有其他服务的注册表和监视程序;存储服务:存储分布式用户文件内容;元数据服务:存储访问权限和条带信息;客户端服务:安装文件系统以访问存储的数据。提出伙伴镜像的概念, 进行服务器间相互复制,实际就是同步的多副本。

PolarFS: An Ultra-low Latency and Failure Resilient Distributed File System for Shared Storage Cloud Database

VLDB 2018 Paper 泛读笔记

针对POLARDB和新硬件的使用的需求,本文提出PolarFS,可提供极高的性能和高可靠性的分布式文件系统。(1)在用户空间中利用了轻量级的网络堆栈和I/O堆栈,避免陷入内核和处理内核锁。同时实现类似POSIX接口,将整个I/O路径保留在用户空间中。(2)将数据平面的I/O模型也设计为无锁,避免关键数据路径上的上下文切换,消除不必要的内存副本,同时利用DMA在主内存和RDMA NIC/NVMe磁盘之间传输数据。(3)开发了新的共识协议ParallelRaft,在不牺牲存储语义一致性的情况下,利用数据库的无序I/O放宽了Raft的严格顺序写入,提高了PolarFS的并行写入性能。(4)共享存储架构,主节点和RO节点在PolarFS中的同一数据库目录下共享重做日志文件和数据文件。

Orion: A Distributed File System for Non-Volatile Main Memory and RDMA-Capable Networks

FAST 2019 Paper 泛读笔记

针对RDMA和NVMM下的分布式文件系统,现有方法对RDMA利用不足、软件开销高。本文提出Orion,基于NVMM和RDMA的分布式文件系统。(1)使用RDMA减少软件开销:将网络和存储功能合并到内核驻留层中,直接通过RDMA访问NVMM上的数据结构,用于处理数据、元数据和网络访问,无需目标端软件开销。(2)局部性:使用数据缓存优化重复访问,在客户端缓存文件系统数据结构,客户端可以在本地应用文件操作,只将更改通过网络发送到元数据服务器。(3)一致性:使用日志结构设计以低成本维护文件系统的一致性。允许并行读取,在集群中序列化文件系统数据结构的更新。依靠原子更新的inode日志来保证元数据和数据的一致性,并使用客户端仲裁的协调方案来解决冲突。

Scale and Concurrency of GIGA+: File System Directories with Millions of Files

FAST 2011 Paper 泛读笔记

针对文件系统中大目录的可扩展性,如何支持单个目录的迅速扩展。本文提出GIGA+,采用哈希的分区方法,消除系统范围的序列化和同步,为突发索引(特别是创建)提供更高的并发性。(1)每台服务器只对迁移进行本地独立决策,以实现负载平衡。通过在服务器节点集群上分布目录,并禁用客户端中的目录条目缓存,以及允许每个节点在没有通知或同步的情况下迁移目录的部分以进行负载平衡。(2)客户端只缓存目录索引,此缓存索引可能指向过时的服务器,这些服务器不再管理哈希目录项(文件名)空间中的特定范围。此时由目标服务器更正,传输服务器已知的所有分区的拆分历史,积极改进过时的客户端索引。

LineFS: Efficient SmartNIC Offload of a Distributed File System with Pipeline Parallelism

SOSP 2021 Paper 泛读笔记

针对DFS的CPU开销高,提出将一些DFS操作卸载到SmartNIC。本文提出了LineFS,将DFS操作分解为执行阶段,将执行阶段卸载到SmartNIC上的并行数据路径执行管道。(1)卸载处理密集型DFS任务,如复制、数据发布和一致性管理。(2)利用SmartNIC处理能力,通过执行特定于文件和操作的压缩来降低网络开销。(3)提供快速故障检测器和基于SmartNIC的恢复机制,将SmartNIC作为一个独立的故障域,减少了文件系统随时间的故障。(4)利用并行化、批处理和异步操作的来隐藏执行和数据访问延迟。引入了并行数据路径执行管道,将DFS操作分解为在并行管道中操作的不同执行阶段,管道保持操作有序以保持一致性。为了避免管道执行停滞,采用跨PCIe预取数据,并将主机数据结构组织成可以批量传输和并行处理的管道块。

CFS: A Distributed File System for Large Scale Container Platforms

SIGMOD 2019 Paper 泛读笔记

介绍为京东电子商务服务的分布式文件系统CFS。包括4个技术:(1)在不同的文件访问模式下高效地存储大小文件,利用Linux punch hole接口异步释放被删除的小文件占用的磁盘空间,简化了处理小文件删除的工程工作。(2)采用了两种基于不同写入场景的强一致复制协议(即附加和覆盖)来提高复制性能。(3)基于利用率的元数据放置。每次扩展都根据内存和磁盘利用率,创建一个新的元分区存储后续的元数据,因此扩展过程中没有再平衡。(4)放松POSIX语义和同一文件的inode和dentry之间的原子性,从而更好地满足应用程序的需求并提高系统性能。

CRDTs for truly concurrent file systems

HotStorage 2021 Paper 泛读笔记

针对弱一致性下设计真正并发的共享地理复制文件系统的挑战。提出了ElmerFS,基于CRDT的文件系统。确保文件系统副本在存在冲突操作的情况下最终收敛到一个通用的、正确的状态。冲突解决方案旨在避免产生意外结果,使用户能够通过传统的文件系统操作来补充或逆转冲突解决的结果。

Azure Data Lake Store: A Hyperscale Distributed File Service for Big Data Analytics

SIGMOD 2017 Paper 泛读笔记

对Azure上的ADLS进行介绍,用于复杂场景的工业界分布式文件系统。对内部文件结构、系统组件、作业流程进行介绍。比较新颖的是增加了部分文件服务,只维护文件的部分块,实现对文件更灵活的访问,同时便于使用多个不同的存储层,增加并行性。将元数据分离成多层,文件层、部分文件层、块层,分别用不用组件管理,避免相互影响且便于单独扩展,同时支持文件重命名时无需移动数据。

Cassandra - A Decentralized Structured Storage System

SIGOPS 2010 Paper 泛读笔记

对Facebook中分布式存储系统Cassandra进行介绍,介绍各种实现的大概思路,包括:数据划分、复制、成员身份和故障检测、集群缩放、本地持久化、数据请求流程。

Optimizing File Systems on Heterogeneous Memory by Integrating DRAM Cache with Virtual Memory Management

FAST 2024 Paper 阅读笔记

针对DRAM-PM异构存储文件系统的优化,现有基于缓存和基于直接访问(DAX)设计的文件系统性能不理想,原因在于应用程序缓冲区和DRAM缓存之间的数据传输使用内存复制开销高,现有方法需要同步(清除脏数据)和跨DRAM缓存和PM迁移数据(将数据移入/移出缓存)导致性能低。本文提出在异构内存之上的缓存管理层,FLAC,将DRAM缓存与虚拟内存管理相结合。主要包含两个关键技术:(1)零拷贝缓存。虚拟页面可以根据其状态(即缓存或逐出)动态映射到DRAM或PM上的物理页面,以零拷贝的方式优化应用程序和缓存之间的数据传输。其核心思想是通过强制写时复制(COW)在源地址和目标地址之间映射页面。并通过滑动窗口缓冲区解决解决页面未对齐,通过批错误/分离来解决COW页面错误的副作用。(2)并行优化缓存管理。利用零拷贝缓存带来的多版本,通过两阶段刷新,允许脏数据同步阶段无锁,并提出了异步缓存未命中处理,以分摊在后台将数据加载到缓存的开销。

Physical vs. Logical Indexing with IDEA: Inverted Deduplication-Aware Index

FAST 2023 Paper 泛读笔记

针对用于信息检索的存储文本数据的文件系统,其中有大量重复数据,如何实现支持重复数据删除和术语索引的文件系统。现有方法:索引效率低;索引大小与逻辑数据大小成比例,消耗过多的存储和内存,查找速度慢;索引创建期间的逻辑顺序访问将被转换为对物理块的随机和冗余访问。本文提出支持重复数据删除的术语索引设计,IDEA。核心思想是将术语映射到包含它们的唯一块,并将每个块映射到包含它的文件。(1)用术语到块映射取代术语到文件映射,其大小与系统中物理存储的唯一内容成比例。用额外的块到文件映射记录了从块到所包含的文件的引用。这种映射明显小于术语到块映射,可以减少空间占用。使用空白感知内容定义的分块算法,创建与空白字符对齐的分块边界,确保了术语不会在相邻的块之间分割。(2)通过顺序处理物理数据而不是逻辑数据来创建索引。术语查找从查询术语到块映射开始,生成的块集用于块到文件映射中的查找,从而生成一组匹配的文件。

Metis: File System Model Checking via Versatile Input and State Exploration

FAST 2024 Paper 泛读笔记

针对文件系统测试工具,现有工具不会集成文件系统输入和状态的覆盖范围,只能针对部分文件系统或部分系统调用进行测试。本文提出Metis,一个模型检查框架,旨在以输入和状态探索的形式进行通用、彻底、可配置的文件系统测试。核心思想是同时运行两个文件系统:一个测试文件系统,一个参考文件系统。向两个系统发布操作(带有参数的系统调用),同时通过图搜索(深度优先搜索)监视和探索状态空间(文件数据、目录结构和基本元数据)。

Combining Buffered I/O and Direct I/O in Distributed File Systems

FAST 2024 Paper 泛读笔记

针对文件系统中直接I/O和缓存I/O的选择,作者分析二者在不同条件下各有优劣,于是提出根据系统状态自适应选择I/O方式。根据对I/O大小、文件锁争用、内存压力的分析,明确了各种环境下哪种I/O方式性能更高,对应切换到性能更高的I/O方式。将自适应I/O方法应用于Lustre中,同时提出优化:自适应服务器端回写缓存、将未对齐I/O对齐、延迟分配、I/O请求批处理。

RFUSE: Modernizing Userspace Filesystem Framework through Scalable Kernel-Userspace Communication

FAST 2023 Paper 泛读笔记

针对FUSE文件系统的性能开销,作者分析原因在于用户空间和内核的上下文切换、单个队列的锁争用。本文提出RFUSE,包括三个创新点:(1)可扩展的内核-用户空间通信。采用每个核心、NUMA感知的环形信道,确保在不同信道上传输的请求不受锁争用的影响,提升并行性。(2)高效的请求传输。将环形通道映射为内核和用户空间之间的共享内存,并使用混合轮询来有效地传输请求和回复。减少了上下文切换和请求复制开销。(3)与现有的基于FUSE的文件系统完全兼容。

The Design and Implementation of a Capacity-Variant Storage System

FAST 2024 Paper 泛读笔记

针对SSD上的文件系统,随着SSD老化如何保证文件系统性能稳定。本文提出了基于SSD的容量可变存储系统(CVSS),允许存储容量随着时间的推移而适度减少,在SSD的整个使用寿命内保持高性能。包括三个关键组件:(1)CV-SSD,避免使用老化和性能较差的块,来保持其性能和可靠性,同时减少写放大。(2)CV-FS,用于弹性逻辑分区的日志结构文件系统。基于存储设备的老化状态动态调整逻辑分区大小,以在线、细粒度的方式减少容量,并仔细管理用户数据以避免数据丢失。(3)CV管理器,基于存储系统的状态来编排系统组件的用户级程序。为主机提供必要的接口以应对容量差异,自适应地协调CV-FS和底层CV-SSD。

ScaleXFS: Getting scalability of XFS back on the ring

FAST 2022 Paper 泛读笔记

对XFS在多核场景下的可扩展性进行分析,发现两个限制原因:内存内日志记录和磁盘上日志记录之间的争用;多个并发内存内日志之间的争用。为了提升XFS多核可扩展性,提出ScaleXFS,包括三个关键技术:双重提交项列表,解决内存中日志记录和磁盘上日志记录之间的争用,内存中的日志记录和磁盘上的日志记录在不同提交项目列表上工作,从而避免争用;每核内存日志记录,解决内存中日志记录操作之间的争用,避免在多核系统中多个应用程序同时执行内存日志记录时的争用;跨步空间计数,解决了关于更新全局日志状态的争用,减少访问列表全局状态的争用。

Fisc: A Large-scale Cloud-native-oriented File System

FAST 2023 Paper 泛读笔记

针对云原生环境下的文件系统,现有方法客户端较重、资源利用率低,现有集中式网关无法满足性能、可用性、负载均衡的需求。本文提出Fisc,面向大规模、云原生的分布式文件系统。包括三个关键设计:轻量级文件系统客户端,将不涉及用户的功能从客户端移出,外部化到计算服务器的数据处理单元(DPU)和云服务提供商(CSP)的后端存储节点中以聚合它们的资源;存储感知型分布式网关(SaDGW),提供了具有高性能网络堆栈的直接通道,连接计算服务器和存储服务器。利用高速通道上的文件系统语义构建了一种存储感知型路由机制,以文件为粒度将客户端的文件请求从租户的前端虚拟域路由到CSP的后端物理域。设计存储感知型故障处理和局部性感知的读优化,采用了基于文件的细粒度调度机制来平衡存储节点上代理的负载;软硬件协同设计,利用DPU实现客户端的部分功能和SaDGW的核心功能,在DPU中采用virtio-Fisc设备来卸载网络堆栈和存储协议,并提供从用户的虚拟域容器到CSP物理域的文件系统的安全高效的通道,利用DPU中的快速路径来加速I/O处理。

FusionFS: Fusing I/O Operations using CISCOps in Firmware File Systems

FAST 2022 Paper 泛读笔记

提出近存储的直接访问固件的文件系统:引入了一种新的抽象CISCOps,将多个I/O和数据处理操作合并为一个融合操作,并将它们卸载以进行近存储处理,从而降低了主要的I/O开销,如系统调用、数据移动、通信和其他软件开销;为了增强CISCOps,引入了MicroTx,进行I/O和数据处理操作的细粒度崩溃一致性和快速(自动)恢复机制;提出了一种新的完全公平调度器(CFS),用于跨租户的近存储计算和内存资源,从而保持近存储计算资源的高效和公平使用。

HadaFS: A File System Bridging the Local and Shared Burst Buffer for Exascale Supercomputers

FAST 2023 Paper 泛读笔记

提出具有突发缓冲区(BB)文件系统HadaFS,将本地BB和共享BB的优势相结合。提出了新的本地化分类体系结构(LTA),以解决超大规模扩展和数据共享的问题。LTA将所有服务器构建为一个共享存储池,灵活控制客户端和服务器之间的并发规模,以确保方便的数据共享。提出了一个运行时用户级接口,以确保I/O请求可以在最近的服务器上处理,帮助客户端以接近本地BB的方式使用BB;提出了具有三种元数据同步策略的全路径索引方法,使用KV方法替代目录树,以解决传统文件系统元数据管理复杂以及与应用程序I/O行为不匹配的问题;集成了Hadash数据管理工具,该工具支持BB中的高效数据查询,并加速BB和传统HPC存储之间的数据迁移。

ctFS: Replacing File Indexing with Hardware Memory Translation through Contiguous File Allocation for Persistent Memory

FAST 2022 Paper 泛读笔记

针对PM文件系统中,文件偏移转换为设备地址的性能。现有方法使用基于树的索引结构,但文件索引开销过高。本文提出ctFS,将每个文件分配在连续的虚拟内存中,使用持久页面表(PPT)管理文件虚拟地址到物理地址的映射,文件索引由硬件MMU高效执行。文件大小修改时,通过原子交换或pswap将文件的物理页面重新映射到新分区,只需将数据写入新空间,然后用旧数据对其进行pswap。

exF2FS: Transaction Support in Log-Structured Filesystem

FAST 2022 Paper 泛读笔记

针对支持事务的文件系统,如何实现事务跨越多个文件、事务处理大量更新、事务不受到垃圾回收的影响。本文提出exF2FS:通过面向成员的事务,允许事务跨越多个文件,应用程序可以明确指定与事务相关联的文件;通过启用窃取,开发了延迟失效(禁止回收页面的旧磁盘位置进行垃圾收集,直到事务提交为止)和重新定位记录(维护撤消和重做信息以中止和提交被逐出的页面),允许应用程序使用少量内存执行事务,并将大量更新封装到单个事务中;通过影子垃圾回收,允许日志结构文件系统在不影响正在进行的事务的原子性的情况下执行垃圾回收。

Chipmunk: Investigating Crash-Consistency in Persistent-Memory File Systems

EuroSys 2023 Paper 泛读笔记

本文针对PM文件系统的崩溃一致性进行检测。提出了Chipmunk,用于测试实现POSIX接口的PM文件系统是否存在崩溃一致性错误的新框架。Chipmunk在工作负载中模拟在某些应该被持久的数据上发生崩溃。然后,它在得到的崩溃状态上挂载文件系统并检查其是否正确恢复。通过将各种PM文件系统提供的崩溃一致性保证编码到Chipmunk的一致性检查器中,使其能够检测到影响崩溃一致性的低级PM编程错误和高级逻辑错误。

CJFS: Concurrent Journaling for Better Scalability

FAST 2023 Paper 泛读笔记

对EXT4文件系统的日志进行优化,日志主要存在两个问题:严格的串行;日志提交使用原始页缓存条目,随后任何对正在进行的页缓存条目的访问都将被阻塞。本文提出CJFS,有四个优化点:双线程设计,将日志提交操作分为两个独立的任务,每个操作分配单独的线程,使用双线程日志,在前一个日志提交仍在进行时提交事务;多版本影子分页,在日志提交中使用更新的页面缓存项的副本,因此事务不存在事务冲突;机会合并,通过减轻日志提交中事务的锁开销,增加运行中事务的合并度;复合刷新,将并发事务中的多个连续刷新合并为一个刷新,显著减少了单个fsync()调用的延迟。

ConfD: Analyzing Configuration Dependencies of File Systems for Fun and Profit

FAST 2023 Paper 泛读笔记

针对文件系统的配置参数,避免错误配置导致的系统故障。作者对两个主要文件系统(即Ext4和XFS)中的78个配置相关问题进行了实证研究。通过分析错误和相关的源代码,识别了一种普遍存在的模式,称为多级配置依赖,包括相对简单的配置约束(例如,值范围[13]),不同应用程序的参数间依赖。并构建了一个可扩展的工具,称为CONFD,通过元数据辅助的污点分析,自动提取依赖关系,并创建了六个插件来解决不同的配置相关问题。

p2Cache: Exploring Tiered Memory for In-Kernel File Systems Caching

ATC 2023 Paper 泛读笔记

优化利用PM的文件系统,传统方法需要对原始文件系统进行大量修改以支持PM使用,作者提出利用PM和DRAM构建缓存机制,不修改现有文件系统的同时利用PM的优势:高I/O性能、高I/O并发性、即时数据持久性和强一致性。提出在VFS下引入持久缓存,使用PM快速同步持久/缓充文件系统元数据/数据更新,随后异步应用于底层文件系统;利用DRAM和PM构建页面缓存,将数据写入PM的同时更新DRAM,读操作时利用DRAM缓存加速查找。

TiDedup: A New Distributed Deduplication Architecture for Ceph

ATC 2023 Paper 泛读笔记

对Ceph的重复数据删除进行优化。提出:选择性的集群级爬取,会逐步搜索和识别冗余的块,选择性地触发去重;基于事件驱动的层次化机制,与内容定义的块划分(CDC),消除了对象存储守护进程(OSD)的后台工作,并设计成在事件发生时执行反应,以处理多个请求;对象ID(OID)共享引用方案,在相邻的快照之间共享OID引用信息,使去重对象与快照兼容,在创建快照时将OSD间的消息最小化。通过使用OID作为反向指针,检查引用是否有效时避免全局搜索。

BetrFS: A Compleat File System for Commodity SSDs

EuroSys 2022 Paper 泛读笔记

目标是设计在各种不同工作负载下,使文件系统在SSD上始终性能良好。作者对BetrFS进行了详细的分析,将BetrFS从HDD迁移到SSD会面临6个问题:顺序写入和过多的文件数据拷贝;小写和双重日志;顺序读取和预读;文件创建和存在性检查;递归删除和范围消息;小写入和缓冲区大小调整。

根据分析作者在4个方面进行优化:整合层次结构,提出了一种简化的底层存储结构,用于SSD上的内核中的写优化键值存储;键空间范围作为第一类基元,提出了一些针对于键空间中连续的键值对集合的范围操作的优化;协同内存管理,描述了对写优化键值存储所需的大型缓冲区进行协同内存管理的策略;VFS和键值存储集成,描述了在VFS页面缓存和写优化键值存储之间共享版本化数据(写时复制)的策略。

IPLFS: Log-Structured File System without Garbage Collection

ATC 2022 Paper 泛读笔记

针对日志结构文件系统垃圾回收的优化,现有方法使用的逻辑地址有限,当逻辑地址用完时需要进行垃圾回收。作者设计了IPLFS,将文件系统分区大小与物理存储大小分开,并将逻辑分区的大小设置得足够大,使日志结构的文件系统免于回收无效的文件系统块;为了维护逻辑文件系统分区的映射信息,我们开发了Interval mapping,利用三层映射树,只为活跃使用的文件系统区域维护LBA到PBA的映射。

我的理解汇中垃圾回收应该是物理存储不足时进行的,从而释放标记为无效的物理空间,并进行紧凑的重新布局。本文设计的思路是逻辑空间不足导致的垃圾回收,不是很理解这个设计前提。

Survey of Distributed File System Design Choices

TOS 2022 Paper

对分布式文件系统的综述,划分为4部分介绍:

  • 指针:

    • 各种指针类型:本地指针、显示直接指针、显示间接指针、计算指针、覆盖网络

    • 指针粒度:子树、桶、文件、子文件

    • 多指针

  • 路径到索引节点的转换:

    • 单节点

    • 复制命名空间

    • 复制前缀表

    • 远程链接

    • 类似共享磁盘的文件系统

    • 计算

    • 覆盖网络

    • 分布式数据库

  • 索引节点到数据的转换:

    • 数据和元数据并置

    • 指针

    • 计算

    • 数据粒度:子树、桶、文件、子文件

  • 冗余和协调

    • 持久性:复制、纠删码、副本放置策略

    • 一致性:一致性协议(复制状态机、拜占庭协议(如Paxos)、两阶段提交、三阶段提交)、持久日志、分布式锁、乐观并发控制、乐观解决冲突

    • 客户端协调:单个主机、m个副本的法定人数、任何副本+稍后解决冲突、任何节点+稍后写到副本、任何节点+无归属数据

    • 租约

    • POSIX语义

Ceph: A Scalable, High-Performance Distributed File System

OSDI 2006 Paper

讲了分布式文件系统ceph的架构,客户端、元数据集群、对象存储集群。

  • 将数据和元数据解耦,去除了分配表,通过CRUSH计算数据存储位置

  • 动态分布式元数据管理,将目录树动态划分,自适应的将元数据分配到不同节点,实现局部性和负载均衡

  • 使用可靠的自主分布式对象存储,负责数据迁移、复制、故障检测、恢复,利用CRUSH实现数据分发。

开源代码:github传送门

The Hadoop Distributed File System

MSST 2010 Paper

讲了分布式文件系统HDFS的原理,客户端、NameNode(元数据)、DataNode,包括命名空间结构、数据节点结构、通信机制、检查点机制、检查点节点、备份节点、系统快照。文件读写管理、副本布局、复制管理、数据节点间平衡管理、数据节点中块检查、数据节点退役。

就是一个基础的分布式文件系统需要包含的各种结构,和需要实现的各种功能。

The Google File System

SOSP 2003 Paper

对生产级文件系统进行描述,需要根据工作负载考虑设计的方方面面。包括:接口设计、单个master、chunk大小、元数据、一致性模块、数据流、文件原子增加、快照、命名空间管理、锁、副本放置、负载均衡、垃圾回收、过期副本检测、故障恢复、chunk复制、master复制、数据完整性、检测工具。

系统分析

Quantification and analysis of performance fluctuation in distributed file system

CLUSTER 2024 Paper 泛读笔记

针对分布式文件系统的性能波动问题,受硬件、数据布局、网络、配置等影响,在运行不同应用时性能波动明显。本文针对ceph的性能波动进行测试,对配置进行调整,优化ceph性能。从以下方面进行分析:(1)依次分析应用层、网络层、软件层和物理层,以提高分布式文件系统性能测试的准确性。(2)分析工作负载和观察窗口。使用800秒的观察窗口和文件服务器工作负载在测试结果的可靠性和测试成本之间取得了平衡。(3)评估不同硬件对Ceph性能的影响。基于SSD的Ceph的性能和性能波动分别比基于HDD的Ceph高3.7倍和2.8倍。(4)使用不同的本地文件系统和本地存储引擎对Ceph的性能进行分析。用EXT4替换XFS将性能波动降低了0.02。Bluestore的性能和性能波动分别是Filestore的1.4倍和3.4倍。

Principled Schedulability Analysis for Distributed Storage Systems Using Thread Architecture Models

TOS 2023 Paper 泛读笔记

针对现有的大型存储系统,对其进行调度和分析难以实现。本文提出线程体系结构模型(TAM),描述系统中不同线程的行为和交互,分析资源消耗模式和组件之间的依赖关系,从而为系统提供可调度性,实现各种调度策略。包括三个部分:(1)线程体系结构可调度性条件(TASC):完整性、局部可执行性和依赖性。TASC确保调度器被放置在系统中的正确位置,并赋予必要的信息和控制,以实现不同的期望调度策略。(2)分析了四个可扩展存储系统的可调度性,确定了阻碍系统满足可调度性条件的五个常见问题:缺乏本地调度控制点、资源使用未知、线程之间隐藏的竞争、不受控制的线程阻塞、请求之间的排序约束。(3)提出两种技术来解决这些问题:直接方法,显式地改变现有的线程体系结构以消除特定的调度问题;间接方法,保持TAM不变,使用信息来减轻调度问题造成的影响。

An In-depth Comparative Analysis of Cloud Block Storage Workloads: Findings and Implications

TOS 2023 Paper 泛读笔记
针对阿里云、腾讯云、微软云的I/O负载进行分析,通过分析负载强度、空间模式和时间模式,得到22个结论。并提出一些设计思路:(1)负载平衡,应该意识到工作负载的多样性、单个卷的突发性以及随时间的流量分布。(2)缓存策略,识别工作负载中的主要读和主要写的块,这些块可以吸收大量的I/O流量。如果目标是通过缓存吸收写入,可以缓存已写入的块,而不是已读取的块。(3)存储集群管理,将闪存转换层(FTL)保持在系统级别,以灵活地协调向闪存发出的I/O。对于写入,如果写入的块在不同的节点上复制,可以选择只更新一个副本并使其他副本无效,以节省更新开销,因为写入的数据可能会被再次重写。

A Study of Failure Recovery and Logging of High-Performance Parallel File Systems

TOS 2022 Paper 泛读笔记

针对并行文件系统的可靠性的研究,主要针对故障恢复和日志记录机制。(1)本文提出PFault,故障注入工具,对PFS透明,易于部署。构建了基于iSCSI的PFault原型,涵盖了三个具有代表性的故障模型(即整个设备故障、全局不一致性和网络分区)。为了解决将iSCSI添加到PFS软件堆栈中的潜在问题,开发了非iSCSI版本,用于验证iSCSI对所研究的目标PFS行为的潜在影响。(2)将PFault用于Lustre和BeeGFS,发现Lustre的恢复组件LFSCK在扫描损坏的Lustre时可能会挂起或触发内核恐慌。在LFSCK恢复之后,应用于Lustre的后续工作负载仍可能挂起或I/O错误。在BeeGFS的回收组件BeeGFS-FSCK中也有类似的问题。(3)日志记录方面,Lustre在集群中不同类型的存储节点上报告七种类型的标准Linux错误消息,而BeeGFS只能在有限的节点上记录两种标准消息,BeeGFS会生成自定义的错误消息,其中一些相当于标准的Linux错误。根据日志来源、内容、故障类型和位置分析PFS日志,发现了多个日志消息不准确或具有误导性的情况。(4)根据以上研究提出了Lustre补丁,修复LFSCK的问题。

Measurement and Analysis of Large-Scale Network File System Workloads

ATC 2008 Paper 泛读笔记

研究了2007年,部署在公司和工程环境中的企业级文件服务器的两个大规模CIFS网络文件系统工作负载。分析(1)文件访问模式和寿命的变化,(2)文件I/O和文件共享的特性,(3)文件类型和客户端访问模式之间的关系。得到一些观察结果【已经是很老的结果了,顶多了解一下怎么分析负载,结果不能拿来用】:

  • 本文使用的两个工作负载更重写。

  • 读写访问模式更加频繁。

  • 字节在更长的顺序运行中传输。

  • 字节在更大的文件中传输。

  • 文件寿命长一个数量级。

  • 大多数文件关闭后不会重新打开。

  • 如果文件被重新打开,它在时间上与上一次关闭有关。

  • 一小部分客户端占文件活动的很大一部分。

  • 文件很少被多个客户端访问。

  • 文件共享很少是并发的,而且大多是只读的。

  • 大多数文件类型没有单一的访问模式。

An In-Depth Analysis of Cloud Block Storage Workloads in Large-Scale Production

IISWC 2020 Paper 泛读笔记

对阿里云块存储的I/O进行分析,提出了一些发现:(1)部分卷中有较高的突发性,但总体上突发性较低。(2)卷间突发更为多样。(3)存在较高的短期突发性。(3)大部分卷在整个跟踪期内都是活跃的。(4)写入是决定阿里云活跃度的主要因素。(5)随机I/O在阿里云很常见。(6)读写集中在小部分工作集中,写比读更集中。(7)读写分别聚集在主要读和主要写的块中。(8)更新覆盖率较高,且更新覆盖范围因卷而异。(9)写后读(RAW)较大,但写后写(WAW)较小,WAW请求的数量大于RAW请求。(10)读后读(RAR)和读后写(WAR)都较大,WAR比RAR时间更大,而RAR和WAR请求数量相当。(11)写入块具有不同的更新间隔。

根据发现提出3个设计思路:(1)负载均衡:需要数据工作负载的多样性和卷的突发性。(2)缓存效率:建议缓存写为主的块。(3)存储集群管理:建议通过日志结构设计优化小和随机I/O,建议将闪存转换层(FTL)保持在系统级别协调向闪存发出的I/O。

Mantle: A Programmable Metadata Load Balancer for the Ceph File System

SC 2015 Paper 泛读笔记

针对元数据的局部性和负载均衡问题,作者提出进行负载均衡时会导致性能下降,在调度前需要先考虑调度带来的影响。作者提出Mantle,将迁移策略和文件系统解耦。

A Five-Year Study of File-System Metadata

ACM Transactions on Storage 2007 Paper

对微软的Windows PC文件系统使用情况进行收集,统计了文件大小、文件年龄、文件类型频率、目录大小、命名空间结构、文件系统填充、存储容量和消耗、文件修改程度的变化。

各种现有优化方法

优化局部性和负载均衡

  • 调度前需要先考虑调度带来的影响,将迁移策略和文件系统解耦[Mantle SC 2015]

  • 子树划分

  • 哈希映射

    • 用虚拟节点优化一致性哈希[DROP MSST 2013;DeepHash TC 2022]
  • 子树哈希

    • 命名空间(细分为索引节点和属性记录,按照目录划分,分布式数据库(TaFDB) 管理)和文件属性(按照哈希划分,靠近数据, KV存储(RocksDB)管理) [CFS EuroSys 2023]

    • 将目录元数据解耦为访问元数据(名称、 ID和权限)和内容元数据(条目列表和时间戳),并根据局部性分组,将不同组通过一致性哈希实现负载均衡[InfiniFS FAST 2022]

    • 用保持局部性哈希(LPH)对命名空间树进行分配;基于历史分配策略动态调整负载[DROP MSST 2013;AngleCut TPDS 2019]

    • 利用变异系数计算不平衡因子,利用紧急参数容忍良性的不平衡;利用负载时间局部性(最近时间间隔内元数据访问的重复性)和空间局部性(目标子树元数据访问的分布,考虑兄弟子树间的访问相关性),以选择子树迁移候选项[Lunule SC 2021]

    • 双一致性哈希(DCH)在MDS集群之间分配目录子集[Duplex ICCD 2023]

  • ML方法

    • 使用DML学习局部性保持哈希(LPH)映射方案;将路径和访问频率映射成向量,设计损失函数使相近节点映射后还相近,少量数据采样[DeepHash TC 2022]

    • 使用深度强化学习(DRL),根据DRL预测未来状态进行迁移,只迁移热节点[AdaM ICPP 2019]

减少锁开销

  • 放松强一致性保证最终一致性:定义单分片原语减少组件间交互,以确定的顺序执行放松事务的原子性,减少锁开销[CFS EuroSys2023]

  • 分层并发控制, 将inode上的操作分为:更新器、写入器和读取器。更新器间用CAS执行;更新器和读取器间用乐观并发控制,先更新后检查;写入器与其他用每个inode的锁[SingularFS ATC 2023]

重命名优化

  • 将重命名细分为同一目录的文件或其他,对绝大部分同一目录下文重命名采用无锁优化[CFS EuroSys 2023]

  • 使用唯一的UUID索引,减少元数据搬迁,利用B+树加速[LocoFS SC 2017]

  • 针对全路径索引的文件系统,优化Bε树,实现连续键范围的原子修改[lifted Bε -tree FAST 2018]

利用客户端

  • 客户端元数据解析,直接和不同组件交互[CFS EuroSys 2023]

  • 将元数据服务端运行到作业计算节点,便于灵活扩展;用户启动并行压缩,将 SSTable 合并,加快后续读取性能[DeltaFS SC 2021]

崩溃一致性优化

  • 常规元数据操作(单节点操作和双节点操作)无日志,固定顺序执行,崩溃恢复时检查时间戳和数据是否有效[SingularFS ATC 2023]

  • 针对HDD-SSD分层存储系统的DM-cache,用少量同步开销的自适应位树(ABT),以分层方式同步维护脏位的元数据,减少崩溃后恢复的数据量[MapperX ATC 2021]

  • 采用嵌入式操作日志进行故障恢复,减少日志开销[FUSEE FAST 2023]

NUMA感知优化

  • 减少NUMA之间的访问:将时间戳与目录索引节点分离,将其与目录的子索引节点分组到同一个NUMA节点。 减少NUMA内部的锁争用:对NUMA内数据结构用哈希进行分区,减少B+树引起的锁争用。[SingularFS ATC 2023]

元数据查询优化

  • 优化路径解析

    • 使用KV存储数据,通过哈希计算目录ID,设计目录ID的创建方法,实现可一次性预测的全目录ID,实现并行目录解析[InfiniFS FAST 2022]

    • 使用全路径KV[Pacon IPDPS 2020]

    • 协调逐级路径解析和全局路径解析[FlatFS ATC 2022]

  • 用数据库优化,将文件系统操作封装成数据库事务

    • 将元数据划分, inode根据父目录ID划分,文件元数据根据文件ID划分,使相近数据存储在少量数据库分片上[HopsFS FAST 2017]
  • 元数据缓存

    • 乐观的元数据缓存,通过单独rename协调器在服务端之间广播路径修改信息,客户端访问时惰性无效缓存的元数据,降低缓存的一致性开销(优于租约机制) [InfiniFS FAST 2022]

    • 用租约机制缓存[LocoFS SC 2017]

    • 客户端缓存+服务器端缓存[AngleCut TPDS 2019]

    • 如果目录查找状态修改是操作的固定部分,客户端缓存更优。如果目录查找状态修改与作业数量成正比,服务器复制更优[ShardFS vs. IndexFS SoCC 2015]

  • 用KV存储优化

    • 扁平化目录树,将树结构拆解,拆成单个的目录索引节点和文件索引节点,充分发挥KV性能[LocoFS SC 2017]

    • 构建双哈希索引,第一个包含文件或目录的哈希表(称为文件表),以支持快速元数据检索;第二个将多个Peta日志合并(称为目录表),将同目录文件元数据聚合,以实现高效的目录扫描。[PetaKV TPDS 2023]

  • 索引树

    • 利用扩展索引技术与扩展元数据表示的组合;采用基于表的架构,按目录划分命名空间[IndexFS SC 2014]
  • Br树

    • 用Br树管理索引键优化目录范围操作[FlatFS ATC 2022]
  • inode合并

    • 实现文件到元数据的多对一映射,将经常一起访问的小文件组成复合文件,并与小文件共享的复合inode[CFFS FAST 2016]
  • 布隆过滤器,预取

元数据修改优化

  • 用KV存储优化

    • 将文件元数据解耦成访问元数据和内容元数据,减少每次修改元数据的大小。避免不同长度的元数据,去除(反)序列化开销[LocoFS SC 2017]
  • 将元数据和小文件共同管理减少随机读;通过请求合并减少随机写开销[TABLEFS ATC 2013]

  • 用LSM tree优化存储元数据和小文件[IndexFS SC 2014]

  • 通过客户端为中心的复制协议SNAPSHOT,在不序列化的同时解决写冲突,在多个元数据副本上更新最后判断顺序解决冲突[FUSEE FAST 2023]

高性能计算场景优化

  • 前提:元数据操作只访问整个命名空间的固定部分

  • 部分一致性模型,根据应用对元数据划分,对每个应用内部保证一致性;批量权限管理[Pacon IPDPS 2020]

  • 使用客户端日志记录和快照的方法,避免全局同步;每个作业根据需要使用部分命名空间[DeltaFS SC 2021]

  • 针对N-1场景负载,优化MHDIM。设计有序索引布局减少压缩;通过有读取聚类,利用空间局部性优化读取性能;通过基于日志环的覆盖网络优化多对一和一对多通信[MetaKV IPDPS 2017]

弹性优化

  • 使用FaaS实现弹性,进一步利用混合HTTP-TCP RPC机制实现客户端和元数据服务器的通信[𝜆FS ASPLOS 2024]

元数据服务器性能优化

  • 用GPU提升单个元数据服务器的性能:通过CPU进行与客户端的通信,将相关计算任务卸载到GPU;重新设计命名空间的内存数据结构,充分发挥GPU性能[GPU-Accelerated JCST 2021]

  • 用SIMD加速PM文件系统元数据计算:使用基于线性哈希(LH)的目录和SIMD感知数据结构和算法;在PM上直接计算,减少PM和DRAM间的数据交互开销[SIMD-Accelerated CCGrid 2022]

优化可扩展性

  • 提供跨数据中心的可扩展性,将元数据水平分区,并复制到跨地理区域的无共享服务器集群中,利用数据库的分布式事务进行文件系统操作[CalvinFS FAST 2015]

权限检查优化

  • 使用专用权限服务器,缓存来自MDS的所有目录权限,加快权限检查[Duplex ICCD 2023]

数据集

LiveMap,RadiusAuth http://iotta.snia.org/traces/block-io/158

mdtest、FXMARK、

YCSB、OLTP、filebench https://sourceforge.net/projects/filebench/

paper paper paper

  • 24
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

妙BOOK言

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

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

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

打赏作者

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

抵扣说明:

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

余额充值