TiDedup: A New Distributed Deduplication Architecture for Ceph——论文泛读

ATC 2023 Paper 分布式元数据论文汇总

问题

Ceph 是一个广泛部署的分布式存储系统,Ceph 中的集群级去重设计,由于一些缺点难以在生产环境中使用:(1)去重唯一数据会导致过多的元数据消耗;(2)串行层次化机制对前台 I/O 产生有害影响,并且仅提供固定大小的块算法;(3)现有的引用计数机制需要对整个对象进行低效的完整扫描,并且与 Ceph 的快照不兼容。

挑战

  • 重复数据删除架构中的所有组件,在设计时都应考虑到可扩展性。

  • 架构应考虑各种数据类型,如文件、块和对象,以寻找数据减少的机会。

  • 架构必须与存储系统中的现有服务(如快照操作)兼容。

现有方法局限性

  • 无论目标对象中有多少个唯一内容都会盲目执行去重。对唯一对象进行去重只会增加计算和存储开销。由于对象中唯一内容的数量高度依赖工作负载,这种方法可能会削弱去重效率,尤其是在 Ceph 中,因为它是一个用于各种数据集的通用存储系统。

  • 依赖于有限的层次化架构,该架构依赖于粗粒度处理和固定大小块划分(FSC),并用单个后台线程的对象存储守护进程(OSD)负责去重所需的所有任务。由于需要使用锁进行耗时的对象枚举,并且由于外部代理的按需去重受到限制,该架构会导致性能下降。此外,FSC 并不总是在实际工作负载中找到重复块的最有效方式 [28, 47]。

  • 在其引用管理方法上存在缺陷。它与 Ceph 的快照功能不协同工作,因为它在对象快照上缺乏块引用管理。此外,引用计数方法在识别去重块上的引用不匹配时需要很长时间,因为它需要在存储池中进行完整的对象搜索以计算引用。

本文方法

本文介绍了 TiDedup,针对 Ceph 的新型集群级去重架构。提出三种新颖的方案:

  • 选择性的集群级爬取。实现了一个爬取进程,会逐步搜索和识别冗余的块,选择性地触发去重,从而减少开销。

  • 基于事件驱动的层次化机制,与内容定义的块划分(CDC)。消除了对象存储守护进程(OSD)的后台工作,并设计成在事件发生时执行反应,以处理多个请求。引入了新的层次化API(set_chunk、tier_flush、tier_evict和tier_promote),以及使用CDC的控制和数据路径。

  • 对象ID(OID)共享引用方案。提出了使用OID的高效引用管理方法。通过在相邻的快照之间共享OID引用信息,不仅使去重对象与快照兼容,还在创建快照时将OSD间的消息最小化。通过使用OID作为反向指针,Scrub(用于识别和修复不一致性的作业,例如引用不匹配)能够在不执行完整对象搜索的情况下检查引用是否有效。

我们已经充分验证了 TiDedup,并将其集成到了 Ceph 的主线中,以便在各种实验和生产环境中进行评估和部署。我们的评估结果显示,TiDedup 在真实工作负载上实现了高达 34% 的数据减少,与现有的去重设计相比,它在去重期间提高了 50% 的前台 I/O 吞吐量,并显著减少了超过 50% 的引用修正扫描时间。

实验

实验环境:10台机器,每台机器都配备了双向AMD EPYC 7543,每个NUMA节点32个内核(80个线程),512 GB的DRAM。所有节点都与100 GbE网络相连。六个节点用作存储节点,四个节点是用于客户端。每台机器有六个BM1733 QLC SSD(4 TB),并在单个SSD上运行OSD守护程序。

数据集:内部云数据集、Factory数据集、YCSB

实验对比:空间节省、吞吐量、延迟、不同chunk大小影响、故障恢复、Srcub时间、快照创建和删除时间

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/362812.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

麒麟V10 mate-indicator进程占用内存过高问题

给客户新划的5台虚拟机,操作系统是麒麟V10,用户反映什么软件都没装系统内存占用就达到80%。 百度了一下是麒麟的bug,内存泄漏。官方分析报告。 解决方法:下载相应rpm包并安装即可解决。 1.确定麒麟版本 cat /etc/*release Ter…

Docker 入门第一篇 安装Docker Desktop并结合Springboot在Idea中应用

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 往期专栏回顾 专栏描述…

使用宝塔面板访问MySQL数据库

文章目录 前言一、安装访问工具二、查看数据库总结 前言 前面我们已经部署了前后端项目,但是却不能得到数据库的信息,看有谁再使用你的项目。例如员工、用户等等。本次博客进行讲解如何在宝塔面板里面访问MySQL数据库。 一、安装访问工具 1、打开软件商…

服务攻防-开发组件安全Solr搜索Shiro身份Log4j日志本地CVE环境复现

知识点: 1、J2EE-组件安全-Solr-全文搜索 2、J2EE-组件安全-Shiro-身份验证 3、J2EE-组件安全-Log4J-日志记录 章节点: 1、目标判断-端口扫描&组合判断&信息来源 2、安全问题-配置不当&CVE漏洞&弱口令爆破 3、复现对象-数据库&中间…

电化学储能数据分析:年复合增长率将保持在55%-70%

储能由商业化初期向规模化发展转变奠定基础。储能应用场景极为广泛,一部分已经进入商业化。分布式和微网中的储能应用,大体与集中式可再生能源类似。但它灵活适用,可以广泛应用在工商、民用、海岛和偏远无电人口上,随着分布式发电…

【Wiley】“很多大咖在此期刊发表,效率很高,有希望冲1区“!IF开分7+,录用率达70%

发表说 截图来源:LetPub 添加胡编辑V:18942916818,尊享Free查重一篇名额科研实用工具包以及SCI发表优惠券~ 01 期刊概况 Advanced Intelligent Systems 【出版社】Wiley 【EISSN】2640-4567 【期刊详情】IF:7.0-8.0&#xff0…

C#中使用OpenCvSharp4库读取本地图像并显示

C#中使用OpenCvSharp4库读取本地图像并显示 OpenCvSharp4是基于.NET 的 OpenCV 包装器,OpenCV源代码是采用C和C写的,目前对于C和Python开发者相对来说比较友好,对于Python开发者而言官方提供了opencv-python使用。 首选我们使用Visual Studi…

【大厂AI课学习笔记】1.3 人工智能产业发展(3)

1.3.1 供给侧 技术层面:从实验室走向大规模的商用。 数据层面:数据正式成为重要的生产要素。 市场:供需互促的正向市场环境建立。 资本:走出炒作泡沫,聚焦价值领域。 平台:大厂普遍开放生态。 MORE&am…

洛谷P8599 [蓝桥杯 2013 省 B] 带分数

[蓝桥杯 2013 省 B] 带分数 题目描述 100 100 100 可以表示为带分数的形式: 100 3 69258 714 100 3 \frac{69258}{714} 100371469258​。 还可以表示为: 100 82 3546 197 100 82 \frac{3546}{197} 100821973546​。 注意特征:带分…

cesium-相机的使用

直接上代码 <template><div id"cesiumContainer" style"height: 100vh;"></div><div id"toolbar" style"position: fixed;top:20px;left:220px;"><el-breadcrumb><el-breadcrumb-item>场景设置实…

Maven的Docker镜像二次打包,再次推送至Harbor中

之所以如此操作&#xff0c;主要原因是&#xff0c;官版的镜像中默认的setting.xml已内置好&#xff0c;不容易修改&#xff0c; 重新二次打包&#xff0c;可以指定我们自己的setting.xml配置&#xff0c;配置自己的私服地址以及解决默认Maven仓库国内下载速度慢的问题 一、创…

安全防御第五次作业

拓扑图及要求如下&#xff1a; 实验注意点&#xff1a; 先配置双机热备&#xff0c;再来配置安全策略和NAT两台双机热备的防火墙的接口号必须一致双机热备时&#xff0c;请确保vrrp配置的虚拟IP与下面的ip在同一网段如果其中一台防火墙有过配置&#xff0c;最好清空或重启&…

SerDes PoC 电感网络工作原理详解

如下图所示,PoC的工作原理可以描述如下: 1. 直流状态时,电感处于短路状态,电容处于开路状态,因此,接收端的电源能够通过电感注入到信号传输系统中,并在另一端通过电感为本地电路供电,而不会透过电容影响到两端的高速收发器; 2. 交流状态时,即高频信号注入时,电容器是…

Vue3的Props

Vue 3中的props是用于接收父组件传递的数据的属性。在Vue 3中&#xff0c;props的声明发生了一些改变&#xff1a; 使用props选项来声明props。之前的版本中使用props属性来声明&#xff0c;但在Vue 3中改为使用props选项。通过TypeScript或Flow来静态类型检查props。Vue 3允许…

Java EE 5 SDK架构

Java EE 5 SDK架构 大型组织每天都要处理大量数据和多用户的相关事务。为管理该组织如此大型而又复杂的系统,开发了企业应用程序。企业应用程序是在服务器上托管的应用程序,通过计算机网络同时向大量用户提供服务。这种应用程序可采用各种技术开发,如Java EE 5。Java EE 5平…

Spark SQL的高级用法

一. 快速生成多行的序列 需求:请生成一列数据, 内容为 1 , 2 , 3 , 4 ,5 -- 快速生成多行的序列 -- 方式一 select explode(split("1,2,3,4,5",",")); --方式二 /*序列函数sequence(start,stop,step):生成指定返回的列表数据[start,stop]必须传入,step步…

用githubDesktop部署静态页面到github

准备项目 现在桌面新建文件夹 在githubDesktop选择新建存储库&#xff0c;本地路径选择新建的文件夹路径 选择发布到存储库&#xff0c;将本地文件夹的内容和github进行连接 将项目文件复制粘贴到新建的文件夹里面 在githubDesktop填写摘要和描述&#xff0c;选择上传 …

一文教你如何本地搭建Qchan图床网站实现公网远程访问

文章目录 前言1. Qchan网站搭建1.1 Qchan下载和安装1.2 Qchan网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar云端设置2.2 Cpolar本地设置 3. 公网访问测试总结 前言 图床作为云存储的一项重要应用场景&#xff0c;在大量开发人员的努力下&#xff0c;已经开发出大…

【Java 数据结构】对象的比较

Java中对象的比较 1. PriorityQueue中插入对象2. 元素的比较2.1 基本类型的比较2.2 对象比较的问题 3. 对象的比较3.1 覆写基类的equals3.2 基于Comparble接口类的比较3.3 基于比较器比较3.4 三种方式对比 4. 集合框架中PriorityQueue的比较方式5. 使用PriorityQueue创建大小堆…

Vue学习笔记(二)快速入门

Vue学习笔记&#xff08;二&#xff09;快速入门 vue小试牛刀 hello-vue3.html <body><div id"app"><h1>{{msg}}</h1></div><script type"module">import {createApp} from https://unpkg.com/vue3/dist/vue.esm-b…