Ceph分布式存储系统优化分析 (ceph分布式存储实战pdf)

教程大全 2025-07-17 12:32:16 浏览

Ceph分布式存储系统优化分析

作者:张晓 张思蒙 石佳 董聪 李战怀 2021-07-04 07:07:06本文介绍了Ceph分布式存储系统的发展历史和特点,并从内部优化机制、面向硬件设备和应用场景这3个方面梳理了现有的性能优化方法。

前篇文章“Ceph分布式存储系统架构研究综述”重点分析了Ceph分布式存储系统架构,今天接着Ceph话题,继续分享Ceph常见的系统和性能优化技术。

Ceph支持多种存储访问接口,现有的多种性能测试工具都可用于Ceph的性能测试,如测试块接口性能的fio,iometer等;测试CephFS接口的filebench,fio等;测试对象接口的cosbench等。Ceph有专用的基准测试集CBT,其包含radosbench,librbdfio,kvmrbdfio和rbdfio。radosbench基准测试使用ceph common软件包附带的rados二进制文件,通过对象接口来访问Ceph集群。剩下的3个工具都是测试块存储性能的。

对Ceph系统进行持续的性能监控可以了解集群运行状况,及早发现性能瓶颈。Ceph提供了命令行接口输出性能相关的统计数据。OSD以PG为单位收集性能数据并定期发给Monitor节点。Monitor节点汇总性能数据并同步至其他Monitor节点。我们也提出了一种针对Ceph存储系统层进行分层性能监测和采集的框架,以及一种通过Ceph电文来分析系统性能和瓶颈的方法。

Ceph存储系统的特点和挑战

本节总结了Ceph分布式存储系统的特点和面临的挑战。

(1)Ceph存储系统的优点

(2)Ceph面临的挑战

Ceph是一个通用的分布式文件系统,适用于不同的场景。内部机制的优化对所有的场景都会产生性能的提升,但是优化的难度和复杂度也最高。

存储引擎的优化

在分布式存储系统中,数据被分散在大量的存储 服务器 上,大部分分布式存储系统都直接使用本地文件系统来存储数据,如HDFS、,Lustre等。高性能、高可靠的分布式存储系统离不开高效、一致、稳定、可靠的本地文件系统。Ceph存储引擎的优化,参考“Ceph分布式存储系统架构研究综述”。

网络通信的优化

在分布式存储系统中,节点间需要通过网络通信来交换状态和数据。Ceph有3种类型的通信模式,分别是Simple,Async和XIO。Simple线程模式对每个网络连接都创建了两个线程,分别用于接收和发送。Ceph集群中OSD、Monitor节点及客户端之间都需要建立连接。随着集群规模的增长,创建的连接数和线程数会呈指数级增长,需要消耗更多的CPU和内存资源。在内存有限的情况下,Simple模式将导致大量线程的频繁切换以致内存耗尽。Async模式将连接和线程分开,通过线程池管理来维护线程的使用,用户可设置线程池中线程的数量。这是目前被广泛采用的方式,自2017年发布Kraken版本后,这已经成为默认的通信模式。XIO模式使用了开源的网络通信库accelio来实现,现今仍处于实验阶段。目前针对网络通信优化的研究都是基于Async通信模式实现的。

Async模式使用线程池,可兼顾资源和性能的平衡,但早期其设计是基于循环的简单调度方案,未考虑传输数据大小和线程负载。这种早期设计会导致工作线程负载不平衡,在高负荷情况下产生一些性能问题。Han等提出了一种用于Ceph文件系统的动态消息感知通信的调度程序,以解决工作线程调度不平衡的问题,从而提高性能。他提出的调度算法根据传入消息的类型来平衡工作线程的工作量,同时避免了工作线程之间不必要的连接转换。

一方面,该算法将低优先级消息(例如来自心跳连接的消息)分配给特定线程,以免干扰其他高优先级消息。另一方面,高优先级消息被平均分配给每个工作线程,以平衡线程之间的工作负载。同时其使用遗传算法(GA)来使不必要的连接转换最小化。测试结果表明,在相同的客户端工作负载下,该方法比原始Asyncmessenger的性能高出12.5%,在客户端的随机工作负载下,其性能比原始Asyncmessenger高出24%。

优化Asyncmessenger还可以通过将多个工作线程分配给单个连接来处理来自该连接的流量。但是,由于多个线程争用访问连接中的共享资源,这种映射结构会引起与锁定维护有关的另一种开销。

Ceph的Luminous版本将Async网络通信模型作为默认的通信方式。虽然Async实现了IO的多路复用,使用共享的线程池来实现异步发送和接收任务,但是如何平衡Async工作线程的负载也是一个值得关注的问题。下表总结了几种常见的算法的优化方案。

RDMA是一种低延迟、高性能的网络传输协议,已被广泛应用于高性能计算环境中。为了在Ceph中利用RDMA以实现高速的数据传输,开发社区提出了两种方案。

第一种方案是降低Ceph对网络层状态的要求,减少Messenger需要实现的逻辑。现在的XioMessenger规定的语义和策略过于复杂,使用新的网络协议实现的难度大;减少Messenger的逻辑则需要增加上层的逻辑。

第二种方案是基于目前的AsyncMessenger的框架,扩展出支持RDMA的网络后端而无需关心上层的会话逻辑。国内的XSKY公司和Mellanox公司合作提出了基于AsyncMessenger的网络通信引擎。这种修改使用RDMA的双边通信机制,性能提升有限。并且在当前版本的代码实现中,RDMA只可用于客户端与服务器之间、服务器与服务器之间的通信,不能在两个网络中同时被应用,这也限制了该方案的应用。

数据放置方法的优化

经典Ceph存储系统在副本模式下选择存储节点时,仅以节点存储容量为唯一选择条件,并没有考虑到网络和节点的负载状况,这影响了系统在网络性能差和节点高负载的情况下的读写性能。为解决这些问题,文献设计了基于软件定义网络技术的Ceph存储系统模型和存储节点选择策略,首先利用软件定义网络技术实时获取网络和负载状况,以简化网络配置和减小测量开销,然后通过建立并求解出综合考虑了多种因素的多属性决策数学模型来确定存储节点的位置。

在实际环境中对设计的存储节点选择方法进行读写操作的测试,结果表明,与现有的CRUSH算法相比,提出的存储节点选择方法可以在保持与原有Ceph系统相同的写操作性能的同时,针对4KB对象的100%读操作的响应时间比原有的Ceph集群的缩短了10ms左右,针对4096KB对象的100%读操作响应时间相对缩短了120ms左右。这种方法需要获取网络的实时性能以用于数据放置策略的调整,引入了网络负载采集的开销,在大规模集群场景下应用受限。并且由于该方法会频繁更新CRUSH算法的参数,其读取性能会有所下降。

配置参数性能调优

Ceph存储系统的可配置参数有1500多个,参数的调整对系统性能有较大的影响。默认配置针对不同的硬件和应用通常不是最优配置。通过锁优化和系统参数调优技术使系统的吞吐率提升了1.6倍,但其并未讨论修改了哪些配置参数。虽有文献详细介绍了在全闪存环境下需要调整哪些参数(包括内核、文件系统、磁盘缓存、RADOS和RBD等),但是没有给出调整前后的性能对比。

Intel开发并开源了一个性能优化工具CeTune,该工具可用于Ceph集群的部署、测试、分析和调优。该工具是一个交互性的调优工具,尚不能自动寻找最优配置。分布式存储系统的性能调优仍是一个具有挑战性的问题。参数组合导致问题解空间大,且参数之间会互相影响。在数据库领域已有一些利用机器学习和决策树的方法进行自动调优的成功案例,而在分布式存储系统领域,相关研究仍处于起步阶段。

面向特定硬件环境的优化

随着3DXpoint和非易失内存等技术的发展与成熟,最快的存储介质性能已接近内存性能。使用新型存储器件的系统中软件已成为瓶颈。如图所示,HDD,SATASSD,NVMe NANDSSD,3 DXPointStorage,3DXPoint Memory系统中的软件造成的延迟分别是0,10%,20%,40%和90%。通过重构软件的体系结构来充分发挥高速存储介质的性能是目前的一个研究热点。

1、固态存储

固态存储设备相比磁盘设备,在性能、功耗和机架密度上具有显著的优势。SATA接口限制了固态存储设备的最大吞吐率。Intel提出的利用PCIE总线来访问固态存储的NVMe接口方法提供了通用的高速存取方案。使用NVMe的固态存储设备在吞吐量和延迟性能上比传统的磁盘高出1-2个数量级,因此在总的IO处理时间中,软件造成的延迟占据更大的比例。现有的存储系统为低速硬件设计了合并写、异步写等机制,但是这些机制并不适用于高速存储设备。随着存储设备性能的进一步提升,存储系统软件栈的性能和效率对存储系统的影响越来越大。存储系统因受制于低效冗余的软件栈而不能充分发挥硬件性能。

SPDK是Intel提出的使用NVMeSSD作为后端存储的应用软件加速库。该软件库的核心是实现用户态、异步、无锁、轮询方式的NVMe驱动。虽然SPDK等新型驱动可以将NVMeSSD的性能最高提高6倍,但是在Ceph中直接使用SPDK却没有明显的性能提升。其主要原因在于在BlueStore的处理中有很多线程协作,线程间的互斥和切换开销较大。

在Ceph中,OSD使用异步IO等待IO完成,多线程可以充分利用NVMeSSD多通道的特点来提升性能。由于一个OSD无法充分利用NVMeSSD的带宽,研究人员发现将NVMeSSD进行分区,然后在其上运行多个OSD可显著提高性能。图给出了一个NVMeSSD分别使用1个OSD、2个OSD和4个OSD时的性能,可以看到在1个SSD上运行4个OSD时的随机读,其IOPS增长很快但延迟增长缓慢。

但是将SSD分区并同时支持多个OSD也有一些缺点,如降低了可靠性、小块随机写延迟增大、需要更多内存和CPU资源等。另一项对于随机写的测试结果如图所示,在1个SSD上运行2个OSD时的IOPS与运行4个OSD时的IOPS相近,且需要的CPU资源更少。使用多个OSD的提升效果与SSD的性能和CPU的性能相关,且需要占用较多的CPU和内存资源,对可用性也有影响,因此不适用于大规模生产环境。

除了NVMe以外,现在还有一些使用SATASSD来代替HDD的策略,但直接替换存储介质的性能提升有限。Ceph针对HDD设计了很多异步和调整写顺序的机制,但这些机制反而降低了SSD的性能。当使用Ceph集群和全闪存SSD进行4K随机写入/读取的性能测试时,随机写入性能也只能达到16KIOPS。当线程数增加到32个及以上时,IOPS几乎保持不变,且延迟急剧增加。随机读取时,当线程数少于32时,IOPS较低,且延迟较高。

2、非易失内存

存储是数据密集型系统中最慢的组件。尽管基于NVMe的固态驱动器提供了更快、更持久的存储,IO性能已大大提高,但其仍然比系统中的其他组件慢。随着NVDIMM产品的出现,可字节寻址的非易失性存储器将提供与内存相近的IO性能。

Intel将Client端的NVM作为缓存,提出了3个优化方案,大大提升了块存储接口的访问性能。

方案一提出由于Ceph快照中的父对象是只读的,Client端将其缓存在本地SSD中以提高读取性能。但该方案仅缓存特定的不变对象,不具有通用性。

方案二利用Client端的NVM实现了一个写回缓存,写入NVM的数据并将其不定期刷新至OSD中。该方案性能提升的效果明显,能将99.99%的写入延迟缩短到1/10以下。但是因为在客户端发生故障时,保存在NVM中的数据没有写入Ceph后端的OSD,所以会造成数据不一致。

为了解决这个问题,方案三通过RDMA技术为Client节点和OSD节点的NVM空间建立镜像,以避免因Client故障导致的数据丢失。复制写日志机制将数据同时持久化至Client和OSD的NVM中,当Client不发生故障时,OSD仅提供镜像空间,无需额外的CPU等资源。基于客户端的缓存性能提升明显,但为每个客户端配置NVM和RDMA的成本较高,且该方案并未充分利用OSD端的NVM特性。

3、混合存储

在Ceph集群中可以使用SSD作为保存日志或缓存来提高访问性能。Ceph支持使用高速存储设备作为缓存来加速IO性能。目前有两种不同的缓存实现方式:1)在OSD内部使用缓存;2)将高性能节点组成缓存层。

根据第一种方案,在使用FileStore时,文件系统可以识别并使用异构来存储介质,并将其中的SSD作为缓存,其架构如图7(a)所示。这种方案可以依赖已有的缓存工具(如dm-cache,bcache,FalshCache)来实现该功能,也可以使用现有的多种缓存控制方法。其中,dm-cache作为linux内核的一部分,采用devicemapper机制以允许用户建立混合卷;bcache是linux内核块层缓存,使用SSD作为HDD硬盘的缓存,从而起到加速作用;FlashCache可智能缓存最近读取过的用户数据或元数据,从而加快数据访问。

第二种方案的实现方式是将独立的设备或节点组成缓存池,在慢速节点保存冷数据,在高性能节点保存热数据。在这种方案中,高速节点被组织成为缓存层,该缓存层也是一个RADOS池,不仅具有持久化的能力,还具有独立的CRUSH策略。该层以下是基于HDD的RADOS池,其可以采用三副本的ReplicatePG作为后端,也可以采用Erasurecoded作为后端。

未来展望

针对前面提到的不同的性能优化方法,本节从Ceph内部机制优化、基于新型硬件和面向不同负载优化这3个方面对性能优化问题的未来研究方向进行了展望。

1、Ceph内部机制的优化

Ceph发展至今,其规模和复杂性不断增大。数据分发、元数据管理和对象一致性保证等方面的逻辑复杂,目前的多线程和加锁机制效率较低。采用新的内存分配机制和高效KV数据来管理子系统可能对性能有所提升。目前内置的性能采集机制不完善,采集内容和方法、性能数据分析这两方面都有改进的空间。

2、基于新型特定硬件的优化

随着新型存储介质的发展,NVM和3D XpointSSD等介质的访问性能比传统HDD提升了2-4个数量级。存储系统优化需通过结合硬件特征来重构存储系统的体系结构,删除冗余抽象和功能,并重新分配软硬件的功能。存储软件中针对传统硬件的优化方法可能会降低性能,如异步写、随机写合并等。SSD的文件转换层的垃圾回收、空间映射与管理功能也可移至软件实现。多种不同性能的介质也将长期共存于存储系统中,根据数据冷热和介质特性自适应实现高性价比的数据分布也是一个研究方向。Ceph虽然已支持RDMA协议,但是双边操作方式性能的提升有限,设计新的通信机制、采用单边操作可进一步提高性能。

3、面向应用场景的自适应优化

Ceph应用场景众多,不同应用的访问特征和数据分布差异较大。在不同的负载情况下,基于人工制定的存储优化方案不能满足要求。根据不同应用负载的自适应优化技术也是一个挑战,其研究内容包括利用访问标签来实现不同应用的性能服务质量保证以及性能隔离、利用机器学习技术自动寻找最优配置,以及动态的数据预取和迁移。

结束语

本文介绍了Ceph分布式存储系统的发展历史和特点,并从内部优化机制、面向硬件设备和应用场景这3个方面梳理了现有的性能优化方法。作为一个开源的统一存储系统,Ceph提供了高性能、高可扩展性和高可用的块、文件和对象存取功能。Ceph的特点使之被广泛应用于云计算、高性能计算和大数据处理领域。目前,Ceph的性能优化研究工作虽然有一定的进展,但仍有很多问题尚未完全解决。


大数据云计算好不好学习?

大数据专业还是很好学习的,当前,国家大数据战略实施已经到了落地的关键时期,大数据技术产业创新发展、大数据与实体经济深度融合、以及大数据安全管理与法律规制等方面都进入了攻坚阶段大数据领域的人才需求主要围绕大数据的产业链展开,涉及到数据的采集、整理、存储、安全、分析、呈现和应用,岗位多集中在大数据平台研发、大数据应用开发、大数据分析和大数据运维等几个岗位。当前整个IT行业对于大数据人才的需求量还是比较大的

ceph分布式存储实战pdf

SQL server 2000 和 2005有什么区别?

数据库管理10个最重要的特点特点 描述数据库镜像通过新数据库镜像方法,将记录档案传送性能进行延伸。 您将可以使用数据库镜像,通过将自动失效转移建立到一个待用服务器上,增强您SQL服务器系统的可用性。 在线恢复使用SQL2005版服务器,数据库管理人员将可以在SQL服务器运行的情况下,执行恢复操作。 在线恢复改进了SQL服务器的可用性,因为只有正在被恢复的数据是无法使用的,而数据库的其他部分依然在线、可供使用。 在线检索操作在线检索选项可以在指数数据定义语言(DDL)执行期间,允许对基底表格、或集簇索引数据和任何有关的检索,进行同步修正。 例如,当一个集簇索引正在重建的时候,您可以对基底数据继续进行更新、并且对数据进行查询。 快速恢复新的、速度更快的恢复选项可以改进SQL服务器数据库的可用性。 管理人员将能够在事务日志向前滚动之后,重新连接到正在恢复的数据库。 安全性能的提高SQL Server 2005包括了一些在安全性能上的改进,例如数据库加密、设置安全默认值、增强密码政策、缜密的许可控制、以及一个增强型的安全模式。 新的SQL Server Management StudioSQL Server 2005引入了SQL Server Management Studio,这是一个新型的统一的管理工具组。 这个工具组将包括一些新的功能,以开发、配置SQL Server数据库,发现并修理其中的故障,同时这个工具组还对从前的功能进行了一些改进。 专门的管理员连接SQL Server 2005将引进一个专门的管理员连接,即使在一个服务器被锁住,或者因为其他原因不能使用的时候,管理员可以通过这个连接,接通这个正在运行的服务器。 这一功能将能让管理员,通过操作诊断功能、或Transact—SQL指令,找到并解决发现的问题。 快照隔离我们将在数据库层面上提供一个新的快照隔离(SI)标准。 通过快照隔离,使用者将能够使用与传统一致的视野观看数据库,存取最后执行的一行数据。 这一功能将为服务器提供更大的可升级性。 数据分割数据分割 将加强本地表检索分割,这使得大型表和索引可以得到高效的管理。 增强复制功能对于分布式数据库而言,SQL Server 2005提供了全面的方案修改(DDL)复制、下一代监控性能、从甲骨文(Oracle)到SQL Server的内置复制功能、对多个超文本传输协议(http)进行合并复制,以及就合并复制的可升级性和运行,进行了重大的改良。 另外,新的对等交易式复制性能,通过使用复制,改进了其对数据向外扩展的支持。 有关开发的10个最重要的特点特点 描述 框架主机使用SQL Server 2005,开发人员通过使用相似的语言,例如微软的Visual C# 和微软的Visual Basic,将能够创立数据库对象。 开发人员还将能够建立两个新的对象——用户定义的类和集合。 XML 技术在使用本地网络和互联网的情况下,在不同应用软件之间散步数据的时候,可扩展标记语言(XML)是一个重要的标准。 SQL Server 2005将会自身支持存储和查询可扩展标记语言文件。 2.0 版本从对SQL类的新的支持,到多活动结果集(MARS),SQL Server 2005中的将推动数据集的存取和操纵,实现更大的可升级性和灵活性。 增强的安全性SQL Server 2005中的新安全模式将用户和对象分开,提供fine-grain access存取、并允许对数据存取进行更大的控制。 另外,所有系统表格将作为视图得到实施,对数据库系统对象进行了更大程度的控制。 Transact-SQL 的增强性能SQL Server 2005为开发可升级的数据库应用软件,提供了新的语言功能。 这些增强的性能包括处理错误、递归查询功能、关系运算符PIVOT, APPLY, ROW_NUMBER和其他数据列排行功能,等等。 SQL 服务中介SQL服务中介将为大型、营业范围内的应用软件,提供一个分布式的、异步应用框架。 通告服务通告服务使得业务可以建立丰富的通知应用软件,向任何设备,提供个人化的和及时的信息,例如股市警报、新闻订阅、包裹递送警报、航空公司票价等。 在SQL Server 2005中,通告服务和其他技术更加紧密地融合在了一起,这些技术包括分析服务、SQL Server Management Studio。 Web服务使用SQL Server 2005,开发人员将能够在数据库层开发Web服务,将SQL Server当作一个超文本传输协议(HTTP)侦听器,并且为网络服务中心应用软件提供一个新型的数据存取功能。 报表服务利用SQL Server 2005, 报表服务可以提供报表控制,可以通过Visual Studio 2005发行。 全文搜索功能的增强SQL SERVER 2005将支持丰富的全文应用软件。 服务器的编目功能将得到增强,对编目的对象提供更大的灵活性。 查询性能和可升级性将大幅得到改进,同时新的管理工具将为有关全文功能的运行,提供更深入的了解。 有关商业智能特征的10个最重要的特点特点 描述分析服务SQL SERVER 2005的分析服务迈入了实时分析的领域。 从对可升级性性能的增强、到与微软Office软件的深度融合,SQL SERVER 2005将帮助您,将商业智能扩展到您业务的每一个层次。 数据传输服务(DTS)DTS数据传输服务是一套绘图工具和可编程的对象,您可以用这些工具和对象,对从截然不同来源而来的数据进行摘录、传输和加载(ETL),同时将其转送到单独或多个目的地。 SQL SERVER 2005将引进一个完整的、数据传输服务的、重新设计方案,这一方案为用户提供了一个全面的摘录、传输和加载平台。 数据挖掘我们将引进四个新的数据挖掘运算法,改进的工具和精灵,它们会使数据挖掘,对于任何规模的企业来说,都变得简单起来。 报表服务在SQL SERVER 2005中,报表服务将为在线分析处理(OLAP)环境提供自我服务、创建最终用户特别报告、增强查询方面的开发水平,并为丰富和便于维护企业汇报环境,就允许升级方面,提供增进的性能。 集群支持通过支持容错技术移转丛集、增强对多重执行个体的支持、以及支持备份和恢复分析服务对象和数据,分析服务改进了其可用性。 主要运行指标主要运行指标(KPIs)为企业提供了新的功能,使其可以定义图表化的、和可定制化的商业衡量标准,以帮助公司制定和跟踪主要的业务基准。 可伸缩性和性能并行分割处理,创建远程关系在线分析处理(ROLAP)或混合在线分析处理(HOLAP)分割,分布式分割单元,持续计算,和预制缓存等特性,极大地提升了SQL Server 2005中分析服务的可伸缩性和性能。 单击单元当在一个数据仓库中创建一个单元时,单元向导将包括一个可以单击单元检测和建议的操作。 预制缓存预制缓存将MOLAP等级查询运行与实时数据分析合并到一起,排除了维护在线分析处理存储的需要。 显而易见,预制缓存将数据的一个更新备份进行同步操作,并对其进行维护,而这些数据是专门为高速查询而组织的、它们将最终用户从超载的相关数据库分离了出来。 与Microsoft Office System集成在报表服务中,由报表服务器提供的报表能够在Microsoft SharePoint门户服务器和Microsoft Office System应用软件的环境中运行,Office System应用软件其中包括Microsoft Word和Microsoft Excel。 您可以使用SharePoint功能,订阅报表、建立新版本的报表,以及分发报表。 您还能够在Word或Excel软件中打开报表,观看超文本连接标示语言(html)版本的报表。

pmml语言的特点是什么

PMML全称预言模型标记语言(Predictive Model Markup Language),利用XML描述和存储数据挖掘模型,是一个已经被W3C所接受的标准。 MML是一种基于XML的语言,用来定义预言模型。 它为各个公司定义预言模型和在不同的应用程序之间共享模型提供了一种快速并且简单的方式。 通过使用标准的XML解析器对PMML进行解析,应用程序能够决定模型输入和输出的数据类型,模型详细的格式,并且按照标准的数据挖掘术语来解释模型的结果。 PMML提供了一个灵活机制来定义预言模型的模式,同时支持涉及多个预言模型的模型选择和模型平衡(model averaging)。 对于那些需要全部学习(ensemble learning)、部分学习(partitioned learning)和分布式学习(distributed learning)的应用程序,这种语言被证明是非常有用的。 另外,它使得在不同的应用程序和系统之间移动预言模型变得容易、方便。 特别地,PMML非常适合部分学习、元学习、分布式学习、以及相关领域。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐