SC 2022 Paper 论文笔记
针对元数据查询的优化,通过构建外部元数据索引来加速元数据查询的性能。作者提出以下优化点:将各个底层文件系统的所有元数据汇总,构建统一的基于嵌入式数据库的新索引;在索引中添加多个表便于快速的数据库查询;在索引中增加目录汇总机制,减少数据库数量;将权限信息放入数据库中,实现并发索引查询。
局限性:实现只测试了查询效果好,但没有测试构建索引的时间开销和空间开销,整体来看是空间换时间的思路
TC 2022 Paper 论文笔记
针对元数据管理方法,传统方法难以同时实现局部性和负载均衡。作者提出使用深度神经网络学习自适应的局部性保持哈希(LPH)映射方案。提出几个创新点:作者将路径映射成坐标,通过 DeepWalk 获取路径序列,在通过 SkipGram 获取特征表示,同时将访问频率加入元数据特征;使用全连接网络训练 LPH 映射,通过设计损失函数使命名空间中相近节点映射后依旧相近;只采样部分数据,保证不同距离的节点对数量近似;通过虚拟节点优化一致性哈希,采用多项式时间的多子集和问题近似算法,计算 V 个虚拟节点和 M 个元数据服务器间的分配;通过监控和贪心策略进行动态负载均衡。
结果优于子树划分和哈希方法。
局限性:模型训练过程中的2个超参数都基于数据集,不同超参数结果差别巨大,在不同数据集下难以直接使用;
SC 2021 Paper 论文笔记
针对 HPC 应用的全局元数据管理开销过高,提出无全局同步的元数据设计方法。作者提出几个优化点:使用客户端日志记录和快照的方法,避免全局同步;每个作业根据需要使用部分命名空间,减少同步范围;将元数据服务端运行到作业计算节点,便于灵活扩展;通过用户启动的并行压缩,将 SSTable 合并,加快后续读取性能。
开源代码:github传送门
局限性:实验有点少。本文方法可能增加了用户使用的复杂度,使用多个快照存在版本冲突时需要用户指定优先级,需要用户自己操作并行合并来增加后续读取的性能。
IPDPS 2020 Paper 论文笔记
针对高性能计算的场景,这个场景中应用的元数据操作只访问整个命名空间的固定部分。因此作者设计了部分一致性模型,属于 DFS 和应用之间的中间件,根据应用对的元数据划分,对每个应用内部保证一致性,使用全路径 KV 加快查找,充分利用缓存和异步更新底层 DFS 实现高吞吐和可扩展性。同时设计批量权限管理进一步减少开销。
局限性:使用全路径 KV 加快查找,但会显著增加重命名的开销,可能考虑到高性能计算中重命名很少。利用检查点进行故障恢复,但不能保证完美的恢复,没记录成检查点的部分还会丢失。设计针对应用不会共享目录的场景,在除了高性能计算之外的场景应该不适用,或是性能没这么好。
SC-W 2023 Paper 论文笔记
利用DAOS数组和DAOS KV,优化ADIOS任务的元数据的写入和读取时间。提出通过并行可以加快速度,进一步通过存储空间对齐减少元数据写入的争用。
局限性:整体看下来很简单,因为是短文实验也不太充分。具体争用的原因也没有分析,可能是锁?这里应该有不少优化空间。
EuroSys 2023 Paper
目标是性能更高的可扩展元数据服务。提出多个优化点:
将元数据划分为两层,命名空间(索引节点和属性记录,按照目录划分)和文件属性(按照哈希划分),分别由分布式数据库(TaFDB)和KV存储(RocksDB)管理
定义单分片原语减少组件间交互,以确定的顺序执行放松事务的原子性,放松中间状态要求最终正确,减少锁开销
对重命名单独优化,细分为同一目录下或不同目录下,对大部分同一目录下采用无锁优化
利用单独GC进程解决放松产生的孤儿节点
客户端元数据解析,直接和CFS不同组件交互。
结果上优于现有分布式元数据,吞吐量高,延迟低,可扩展性好,可以忍受高争用和大目录。在百度AI云上部署了3年,支持各种应用。
ATC 2023 Paper
目标使用单个元数据服务支持十亿级别文件系统。现有方法存在3个挑战:崩溃一致性的开销非常大;锁争用限制了共享目录中元数据操作的吞吐量;NUMA体系结构的利用不足。
本文利用RDMA和PM设计元数据服务,提出三个优化点:
无日志元数据操作,以消除大多数元数据操作额外的崩溃一致性开销
分层并发控制,使用每个inode的读写锁同步inode操作,减少锁开销
混合inode分区,将时间戳与目录索引节点分离,减少NUMA之间的访问和NUMA内部的锁争用。
结果上优于本地PM文件系统和分布式文件系统,高吞吐、低延迟、可扩展、支持十亿级别目录。
FAST 2022 Paper
目标优化大规模分布式文件系统元数据。现有方法存在3个挑战:由于目录树难以同时实现元数据局部性和负载均衡;路径解析延迟高;客户端元数据缓存一致性开销大。
本文提出3个优化点:
将目录元数据解耦为访问元数据和内容元数据,并根据局部性分别分在不同组,将不同组通过一致性哈希实现负载均衡
使用KV存储数据,通过哈希计算目录ID,设计目录ID的创建方法,实现可一次性预测的全目录ID,实现并行目录解析
设计乐观的元数据缓存,通过单独rename协调器在服务端之间广播路径修改信息,客户端访问时惰性无效缓存的元数据,降低缓存的一致性开销。
结果上优于现有分布式文件系统,高吞吐、低延迟、可扩展、支持大目录,共享目录下性能不好,后续有人设计了减少锁开销的方法优化贡献目录的访问。
FAST 2017 Paper
利用数据库优化分布式元数据服务,将文件系统操作封装成分布式事务,在利用数据库技术优化事务。优化点:
元数据划分,inode根据父目录ID划分,文件元数据根据文件ID划分
利用inode缓存减少目录查询开销,并行查找inode
利用锁和按固定顺序获取锁,实现序列化,同时避免死锁
大目录上受限于数据库事务无法直接实现,使用大锁,同时固定子树执行顺序。
开源代码:gitbub传送门
SC 2017 Paper
目标优化基于KV存储的分布式元数据服务。由于目录树的原因,目录查找定位时间长, 在KV中存在(反)序列化开销,无法充分发挥KV存储性能。提出4个优化点:
提出松耦合的结构,将目录元数据和文件元数据分别存储于DMS和FMS
提出扁平化目录树,将树结构拆解,拆成单个的目录索引节点和文件索引节点,充分发挥KV性能,分别在DMS和FMS中根据所在目录拼接(方便范围查找?),进一步基于租约机制缓存目录索引节点,加快查找速度
将文件元数据解耦成两份,尽量减少每次修改元数据的大小,同时用UUID替换索引元数据,进而去除索引节点
优化重命名,减少元数据搬迁,利用B+树加速。
arXiv Paper
基于FaaS实现弹性、高性能的元数据服务。提出各种优化点:
利用混合HTTP-TCP RPC机制实现客户端和元数据服务器的通信,实现更高吞吐和低延迟
使用内存缓存层缓存元数据加快查找速度
使用灵活自动伸缩机制
实现简单的强一致性协议(每次更新都要使所有缓存无效,开销高),用子树一致性协议,锁开销高。
开源代码:gitbub传送门
TPDS 2022 Paper
关于元数据服务的综述,从三方面分析元数据的优化空间:
高可扩展
静态空间划分方法:静态子树划分方法,哈希函数映射方法,子树哈希方法
动态空间划分方法:动态子树方法,目录项子集方法,动态哈希方法
高性能
缓存和复制
元数据检索:索引树,布隆过滤器,预取,键值数据库
增值元数据
高可用性
基于拷贝
基于日志
SoCC 2015 Paper 泛读笔记
对不同类型的元数据工作负载应该采用不同的优化方法。如果目录查找状态修改是操作的固定部分,那么客户端缓存效果更优。如果目录查找状态修改与作业的数量成正比,那么服务器复制效果更优。
FAST 2015 Paper 泛读笔记
针对文件系统跨数据中心的可扩展性,现有方法无法实现跨地理距离的文件系统语义和工具。本文提出将元数据水平分区,并复制到跨地理区域的无共享服务器集群中,将文件系统操作转化成分布式事务,利用数据库系统进行事务调度和复制管理;通过数据库支持标准文件系统语义,优化单文件的并发写入。缺点是多文件操作需要分布式事务支持,导致延迟变高。
TPDS 2023 Paper 泛读笔记
针对PM文件系统的元数据KV存储优化。作者提出用双哈希索引:第一个包含文件或目录的哈希表(称为文件表),以支持快速元数据检索;第二个将多个Peta日志合并(称为目录表),这些日志将文件元数据并置在同一目录中,以实现高效的目录扫描。提出优化peta日志的结构,以平衡PM模块之间的写入请求,从而获得更高的PM的吞吐量。
FAST 2023 Paper 泛读笔记
针对分离式内存系统中,KV存储的元数据可扩展性差的问题。作者提出将元数据分离到每个内存节点上,在内存节点上复制元数据信息。提出三个优化点:通过客户端为中心的复制协议SNAPSHOT,在不序列化的同时解决写冲突,在多个副本上更新最后判断顺序解决冲突;采用两级内存管理方案,将内存管理分为重任务和轻任务,分别由客户端和内存节点管理;采用嵌入式操作日志进行故障恢复,减少日志开销。
ATC 2021 Paper 泛读笔记
针对HDD-SSD分层存储系统的DM-cache,怎么实现更快的崩溃恢复。作者用只需少量同步开销的自适应位树(ABT),以分层方式同步维护脏位的元数据,在崩溃恢复时只恢复部分数据。
局限性:整体思路比较简单,就是用少量同步数据记录脏数据,减少崩溃恢复的数据数量。
JCST 2021 Paper 泛读笔记
针对高性能计算场景下元数据可扩展性不足,作者分析原因在于元数据操作性能低和并发性不足,进而导致扩展时的一致性和网络开销。作者提出通过GPU提升单个元数据服务器的性能:通过CPU进行与客户端的通信,将相关计算任务卸载到GPU;重新设计命名空间的内存数据结构,充分发挥GPU性能。
TPDS 2019 Paper 泛读笔记
针对元数据管理方法,传统方法难以同时实现局部性和负载均衡。作者提出用保持局部性哈希(LPH)函数对命名空间树进行分配,实现局部性;基于历史的分配策略,动态调整负载,实现负载均衡;两层缓存机制,优化元数据查询;2PC-MQ机制,保证不同MDS间事务一致性。
MSST 2013 Paper 泛读笔记
目标是同时优化元数据局部性和元数据服务器间的负载均衡,通过LPH保持局部性,通过一致性哈希中虚拟节点的思想和动态负载均衡在元数据服务器间调度。
后续也有论文提出了AngleCut,DeepHash的方法,应该都是借鉴了这个的思路,针对相同问题做进一步的优化
SC 2014 Paper 泛读笔记
对大量元数据访问和小文件访问的优化。利用扩展索引技术与扩展元数据表示的组合,以增强元数据服务的可扩展性和性能;采用基于表的架构,按目录划分命名空间保证局部性;采用LSM tree优化存储元数据和小文件;用于缓解热点的无状态一致性元数据缓存;用于密集型工作负载的批量命名空间插入。
构建在文件系统之上的中间件,通过重新构建一些便于查找的表来优化元数据和小文件访问的并行性
HPDC 2021 Paper 泛读笔记
很多HPC应用不需要保证顺序一致性,实现顺序一致性会影响缓存、产生额外流量、在高度共享下产生拥塞。作者通过对HPC应用的I/O操作进行分析,基于较弱语义下的访问重叠和访问冲突测试,来分析应用的一致性需求;并提出了PFS一致性模型的分类,根据应用分析结果对应到不同的一致性模型中。
属于HPC应用优化的前置工作,分析后可以对不同应用使用不同一致性模型优化性能。
ICPP 2019 Paper 泛读笔记
为了同时解决元数据局部性和元数据服务器的负载均衡。作者认为之前的方法:基于历史数据,会滞后于访问模式的变化;迁移粒度太粗,导致冗余的迁移成本。提出基于深度强化学习(DRL)的细粒度迁移策略,根据DRL预测未来状态进行迁移,而且只迁移热节点,减少迁移开销。
FAST 2017 Paper 泛读笔记
针对WAFL写时复制的文件系统,如何以低开销保证元数据的完整性,同时区分是由于内存乱写还是辑错误引起的损坏。作者通过引入元数据块的校验和,避免元数据块受乱写的影响;通过基于摘要的事务审计系统,以极低的性能开销防止逻辑错误;对两种问题分开处理,因此可以识别完整性问题的原因;通过低开销的页面保护技术定位问题的根本原因。
CCGrid 2022 Paper 泛读笔记
发现在PM中的文件系统元数据计算开销大,因此考虑使用SIMD加速PM文件系统的元数据计算,并使用基于线性哈希(LH)[15]的目录和SIMD感知数据结构和算法,来加速元数据操作。发现使用DRAM缓存数据开销大,设计在PM上直接操作,消除PM和DRAM之间的数据交互开销。
IPDPS 2017 Paper 泛读笔记
针对HPC场景中共享文件元数据的突发负载,在N-1场景下元数据写入和读取性能低。作者将元数据划分为索引元数据和文件属性元数据,分别针对读写场景优化。通过压缩存储的方法减少重构索引布局;通过有监督的读取聚类优化读取性能;通过基于日志环的覆盖网络优化通信。
ATC 2022 Paper 泛读笔记
针对树形命名空间结构导致文件路径遍历低效且命名空间树遍历昂贵的问题,作者提出优化基于NVM的文件系统,利用协调路径遍历优化文件路径遍历速度;利用Br树管理索引键优化目录范围操作;利用面向写入优化的压缩(WoC)索引键减少随机小写和持久化开销;利用以上结构简化崩溃一致性设计。
SC 2015 Paper 泛读笔记
针对元数据的局部性和负载均衡问题,作者提出进行负载均衡时会导致性能下降,在调度前需要先考虑调度带来的影响。作者提出Mantle,将迁移策略和文件系统解耦。
SC 2021 Paper 泛读笔记
对Ceph的元数据负载均衡机制进行优化,原始方法由于对未来负载预测的不准确和无效迁移导致性能低。作者通过变异系数计算不平衡因子模型,减小噪声影响,准确确定何时触发重新平衡;通过紧急参数,容忍良性的不平衡情况;感知工作负载时间局部性(最近时间间隔内元数据访问的重复性)和空间局部性(目标子树元数据访问的均匀分布,并考虑兄弟子树间的访问相关性),以选择子树迁移候选项。
EuroSys 2023 Paper 泛读笔记
本文针对PM文件系统的崩溃一致性进行检测。提出了Chipmunk,用于测试实现POSIX接口的PM文件系统是否存在崩溃一致性错误的新框架。Chipmunk在工作负载中模拟在某些应该被持久的数据上发生崩溃。然后,它在得到的崩溃状态上挂载文件系统并检查其是否正确恢复。通过将各种PM文件系统提供的崩溃一致性保证编码到Chipmunk的一致性检查器中,使其能够检测到影响崩溃一致性的低级PM编程错误和高级逻辑错误。
FAST 2023 Paper 泛读笔记
对EXT4文件系统的日志进行优化,日志主要存在两个问题:严格的串行;日志提交使用原始页缓存条目,随后任何对正在进行的页缓存条目的访问都将被阻塞。本文提出CJFS,有四个优化点:双线程设计,将日志提交操作分为两个独立的任务,每个操作分配单独的线程,使用双线程日志,在前一个日志提交仍在进行时提交事务;多版本影子分页,在日志提交中使用更新的页面缓存项的副本,因此事务不存在事务冲突;机会合并,通过减轻日志提交中事务的锁开销,增加运行中事务的合并度;复合刷新,将并发事务中的多个连续刷新合并为一个刷新,显著减少了单个fsync()调用的延迟。
FAST 2023 Paper 泛读笔记
针对文件系统的配置参数,避免错误配置导致的系统故障。作者对两个主要文件系统(即Ext4和XFS)中的78个配置相关问题进行了实证研究。通过分析错误和相关的源代码,识别了一种普遍存在的模式,称为多级配置依赖,包括相对简单的配置约束(例如,值范围[13]),不同应用程序的参数间依赖。并构建了一个可扩展的工具,称为CONFD,通过元数据辅助的污点分析,自动提取依赖关系,并创建了六个插件来解决不同的配置相关问题。
ATC 2023 Paper 泛读笔记
优化利用PM的文件系统,传统方法需要对原始文件系统进行大量修改以支持PM使用,作者提出利用PM和DRAM构建缓存机制,不修改现有文件系统的同时利用PM的优势:高I/O性能、高I/O并发性、即时数据持久性和强一致性。提出在VFS下引入持久缓存,使用PM快速同步持久/缓充文件系统元数据/数据更新,随后异步应用于底层文件系统;利用DRAM和PM构建页面缓存,将数据写入PM的同时更新DRAM,读操作时利用DRAM缓存加速查找。
ATC 2023 Paper 泛读笔记
对Ceph的重复数据删除进行优化。提出:选择性的集群级爬取,会逐步搜索和识别冗余的块,选择性地触发去重;基于事件驱动的层次化机制,与内容定义的块划分(CDC),消除了对象存储守护进程(OSD)的后台工作,并设计成在事件发生时执行反应,以处理多个请求;对象ID(OID)共享引用方案,在相邻的快照之间共享OID引用信息,使去重对象与快照兼容,在创建快照时将OSD间的消息最小化。通过使用OID作为反向指针,检查引用是否有效时避免全局搜索。
EuroSys 2022 Paper 泛读笔记
目标是设计在各种不同工作负载下,使文件系统在SSD上始终性能良好。作者对BetrFS进行了详细的分析,将BetrFS从HDD迁移到SSD会面临6个问题:顺序写入和过多的文件数据拷贝;小写和双重日志;顺序读取和预读;文件创建和存在性检查;递归删除和范围消息;小写入和缓冲区大小调整。
根据分析作者在4个方面进行优化:整合层次结构,提出了一种简化的底层存储结构,用于SSD上的内核中的写优化键值存储;键空间范围作为第一类基元,提出了一些针对于键空间中连续的键值对集合的范围操作的优化;协同内存管理,描述了对写优化键值存储所需的大型缓冲区进行协同内存管理的策略;VFS和键值存储集成,描述了在VFS页面缓存和写优化键值存储之间共享版本化数据(写时复制)的策略。
ATC 2022 Paper 泛读笔记
针对日志结构文件系统垃圾回收的优化,现有方法使用的逻辑地址有限,当逻辑地址用完时需要进行垃圾回收。作者设计了IPLFS,将文件系统分区大小与物理存储大小分开,并将逻辑分区的大小设置得足够大,使日志结构的文件系统免于回收无效的文件系统块;为了维护逻辑文件系统分区的映射信息,我们开发了Interval mapping,利用三层映射树,只为活跃使用的文件系统区域维护LBA到PBA的映射。
我的理解汇中垃圾回收应该是物理存储不足时进行的,从而释放标记为无效的物理空间,并进行紧凑的重新布局。本文设计的思路是逻辑空间不足导致的垃圾回收,不是很理解这个设计前提。
TOS 2022 Paper
对分布式文件系统的综述,划分为4部分介绍:
指针:
各种指针类型:本地指针、显示直接指针、显示间接指针、计算指针、覆盖网络
指针粒度:子树、桶、文件、子文件
多指针
路径到索引节点的转换:
单节点
复制命名空间
复制前缀表
远程链接
类似共享磁盘的文件系统
计算
覆盖网络
分布式数据库
索引节点到数据的转换:
数据和元数据并置
指针
计算
数据粒度:子树、桶、文件、子文件
冗余和协调
持久性:复制、纠删码、副本放置策略
一致性:一致性协议(复制状态机、拜占庭协议(如Paxos)、两阶段提交、三阶段提交)、持久日志、分布式锁、乐观并发控制、乐观解决冲突
客户端协调:单个主机、m个副本的法定人数、任何副本+稍后解决冲突、任何节点+稍后写到副本、任何节点+无归属数据
租约
POSIX语义
OSDI 2006 Paper
讲了分布式文件系统ceph的架构,客户端、元数据集群、对象存储集群。
将数据和元数据解耦,去除了分配表,通过CRUSH计算数据存储位置
动态分布式元数据管理,将目录树动态划分,自适应的将元数据分配到不同节点,实现局部性和负载均衡
使用可靠的自主分布式对象存储,负责数据迁移、复制、故障检测、恢复,利用CRUSH实现数据分发。
开源代码:github传送门
MSST 2010 Paper
讲了分布式文件系统HDFS的原理,客户端、NameNode(元数据)、DataNode,包括命名空间结构、数据节点结构、通信机制、检查点机制、检查点节点、备份节点、系统快照。文件读写管理、副本布局、复制管理、数据节点间平衡管理、数据节点中块检查、数据节点退役。
就是一个基础的分布式文件系统需要包含的各种结构,和需要实现的各种功能。
SOSP 2003 Paper
对生产级文件系统进行描述,需要根据工作负载考虑设计的方方面面。包括:接口设计、单个master、chunk大小、元数据、一致性模块、数据流、文件原子增加、快照、命名空间管理、锁、副本放置、负载均衡、垃圾回收、过期副本检测、故障恢复、chunk复制、master复制、数据完整性、检测工具。
调度前需要先考虑调度带来的影响,将迁移策略和文件系统解耦[Mantle SC 2015]
子树划分
哈希映射
子树哈希
命名空间(细分为索引节点和属性记录,按照目录划分,分布式数据库(TaFDB) 管理)和文件属性(按照哈希划分,靠近数据, KV存储(RocksDB)管理) [CFS EuroSys 2023]
将目录元数据解耦为访问元数据(名称、 ID和权限)和内容元数据(条目列表和时间戳),并根据局部性分组,将不同组通过一致性哈希实现负载均衡[InfiniFS FAST 2022]
用保持局部性哈希(LPH)对命名空间树进行分配;基于历史分配策略动态调整负载[DROP MSST 2013;AngleCut TPDS 2019]
利用变异系数计算不平衡因子,利用紧急参数容忍良性的不平衡;利用负载时间局部性(最近时间间隔内元数据访问的重复性)和空间局部性(目标子树元数据访问的分布,考虑兄弟子树间的访问相关性),以选择子树迁移候选项[Lunule SC 2021]
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]
客户端元数据解析,直接和不同组件交互[CFS EuroSys 2023]
将元数据服务端运行到作业计算节点,便于灵活扩展;用户启动并行压缩,将 SSTable 合并,加快后续读取性能[DeltaFS SC 2021]
常规元数据操作(单节点操作和双节点操作)无日志,固定顺序执行,崩溃恢复时检查时间戳和数据是否有效[SingularFS ATC 2023]
针对HDD-SSD分层存储系统的DM-cache,用少量同步开销的自适应位树(ABT),以分层方式同步维护脏位的元数据,减少崩溃后恢复的数据量[MapperX ATC 2021]
采用嵌入式操作日志进行故障恢复,减少日志开销[FUSEE FAST 2023]
优化路径解析
使用KV存储数据,通过哈希计算目录ID,设计目录ID的创建方法,实现可一次性预测的全目录ID,实现并行目录解析[InfiniFS FAST 2022]
使用全路径KV[Pacon IPDPS 2020]
协调逐级路径解析和全局路径解析[FlatFS ATC 2022]
用数据库优化,将文件系统操作封装成数据库事务
元数据缓存
乐观的元数据缓存,通过单独rename协调器在服务端之间广播路径修改信息,客户端访问时惰性无效缓存的元数据,降低缓存的一致性开销(优于租约机制) [InfiniFS FAST 2022]
用租约机制缓存[LocoFS SC 2017]
客户端缓存+服务器端缓存[AngleCut TPDS 2019]
如果目录查找状态修改是操作的固定部分,客户端缓存更优。如果目录查找状态修改与作业数量成正比,服务器复制更优[ShardFS vs. IndexFS SoCC 2015]
用KV存储优化
扁平化目录树,将树结构拆解,拆成单个的目录索引节点和文件索引节点,充分发挥KV性能[LocoFS SC 2017]
构建双哈希索引,第一个包含文件或目录的哈希表(称为文件表),以支持快速元数据检索;第二个将多个Peta日志合并(称为目录表),将同目录文件元数据聚合,以实现高效的目录扫描。[PetaKV TPDS 2023]
索引树
Br树
布隆过滤器,预取
用KV存储优化
将元数据和小文件共同管理减少随机读;通过请求合并减少随机写开销[TABLEFS ATC 2013]
用LSM tree优化存储元数据和小文件[IndexFS SC 2014]
通过客户端为中心的复制协议SNAPSHOT,在不序列化的同时解决写冲突,在多个元数据副本上更新最后判断顺序解决冲突[FUSEE FAST 2023]
前提:元数据操作只访问整个命名空间的固定部分
部分一致性模型,根据应用对元数据划分,对每个应用内部保证一致性;批量权限管理[Pacon IPDPS 2020]
使用客户端日志记录和快照的方法,避免全局同步;每个作业根据需要使用部分命名空间[DeltaFS SC 2021]
针对N-1场景负载,优化MHDIM。设计有序索引布局减少压缩;通过有读取聚类,利用空间局部性优化读取性能;通过基于日志环的覆盖网络优化多对一和一对多通信[MetaKV IPDPS 2017]
用GPU提升单个元数据服务器的性能:通过CPU进行与客户端的通信,将相关计算任务卸载到GPU;重新设计命名空间的内存数据结构,充分发挥GPU性能[GPU-Accelerated JCST 2021]
用SIMD加速PM文件系统元数据计算:使用基于线性哈希(LH)的目录和SIMD感知数据结构和算法;在PM上直接计算,减少PM和DRAM间的数据交互开销[SIMD-Accelerated CCGrid 2022]
LiveMap,RadiusAuth http://iotta.snia.org/traces/block-io/158