发布信息

一种CEPH集群的数据存储方法及相应的集群与流程

作者:admin      2022-08-31 14:38:16     588



计算;推算;计数设备的制造及其应用技术一种ceph集群的数据存储方法及相应的集群技术领域1.本发明涉及分布式块存储ceph领域,具体涉及一种ceph集群的数据存储方法及相应的集群。背景技术:2.如果业务场景需求高吞吐、低延时的话选择全nvme介质的ceph(分布式存储系统)集群;如果业务场景需求低成本的话选择全hdd介质的ceph集群;针对那些对性能和成本都有要求的业务场景,ceph社区提供了cache tier方案,此方案中两个pool,其中前端cache pool使nvme作为缓存,后端data pool使用hdd作为数据层,缓存单元为object。3.在实现本发明过程中,申请人发现现有技术中至少存在如下问题:4.当前全hdd介质集群成本低,但性能差,全nvme介质集群性能好,但成本高,社区实现的cache tier方案中,cache pool使用nvme介质,data pool使用hdd介质,缓存单元基于object,此数据默认为4m(实际可调整,一般4m),读或者写缓存未命中时,需要从后端data pool读取4m的object对象,对于小写(读写大小为小于或等于4k)的随机读写,此方案将极大增加读写的延时(需要从后端读入object对象,然后写入cache pool中),且以4m的对象进行缓存,cache pool空间很快被耗尽,进而触发ceph的evit和flush机制,此过程会抢占未命中时的cache pool从data pool读取数据的带宽,进而导致读写性能很差。技术实现要素:5.本发明实施例提供一种ceph集群的数据存储方法及相应的集群,读写基于容量较小的blob单元,提升cache pool的缓存使用率,降低缓存未命中对业务io读写的影响,实现低成本的同时,满足业务对性能的要求。6.为达上述目的,一方面,本发明实施例提供一种ceph集群的数据存储方法,所述ceph集群包括缓存池cache pool存储层和数据池data pool存储层,所述cache pool存储层使用固态硬盘nvme介质存储数据;所述data pool存储层使用机械硬盘hdd介质存储数据;所述方法包括:7.当需要向ceph集群写数据时生成写blob请求,将写blob请求对应的数据生成blob单元随机写入cache pool存储层;其中,所述blob单元的容量小于预设容量值、且blob单元可被随机读写;8.针对cache pool存储层的每个blob单元,将满足预设要求的数据所在blob单元迁移到data pool存储层;9.当需要从ceph集群读数据时生成读blob请求,从cache pool存储层对应的blob单元中读取所述读blob请求对应的数据,若所述读blob请求对应的数据无法从cache pool存储层的blob单元读取,则从data pool存储层读取。10.另一方面,本发明实施例提供一种ceph集群,包括:11.cache pool存储层,所述cache pool存储层使用nvme介质存储数据;pool存储层;具体包括:27.s1021:将写blob请求对应的数据写入blob单元,对所述blob单元进行数据压缩,将数据压缩之后的blob单元存储在cache pool存储层;将所述blob单元相应的元数据存储在cache pool存储层的rocksdb存储单元中,所述元数据是所述blob单元中的数据的描述信息。28.优选地,还包括:29.s104:针对同一用户发起的至少两个写blob请求,在所述至少两个写blob请求执行完成后,扫描所述用户的所有blob单元,将具有数据交集的blob单元进行数据合并生成合并blob单元,且每个合并blob单元的容量不超过其所述预设容量值;根据合并blob单元更新rocksdb存储单元中相应的元数据。30.优选地,步骤102,具体包括:31.s1021:通过第一后端线程定时扫描cache pool存储层中的每个blob单元,若blob单元内的数据连续未被访问的时间满足预设冷数据时间阈值,将所述连续未被访问的blob单元标记为冷数据;32.s1022:当cache pool存储层的存储使用率达到预设使用率阈值时,通过第二后端线程将cache pool存储层中标记为冷数据的blob单元迁移到data pool存储层,并更新rocksdb存储单元中被迁移的blob单元对应的元数据。33.优选地,步骤103,具体包括:34.s1031:根据所述读blob请求查询所述rocksdb存储单元内的元数据,确定所述读blob请求对应的数据缓存在cache pool存储层还是存储在data pool存储层;35.s1032:如果所述读blob请求对应的数据全部缓存在cache pool存储层,则直接从cache pool存储层对应的blob单元中读取数据并返回;36.s1033:如果所述读blob请求对应的数据全部未缓存在cache pool存储层,则从data pool存储层对应的blob单元中读取数据并返回;将相应的blob单元自data pool存储层迁移到cache pool存储层,并更新rocksdb存储单元内相应的元数据;37.s1034:如果所述读blob请求对应的数据部分未缓存在cache pool存储层,则从data pool存储层获取并迁移未缓存在cache pool存储层的部分数据对应的第一blob单元,在cache pool存储层将从data pool存储层迁移的第一blob单元与缓存在cache pool存储层的部分数据对应的第二blob单元进行数据合并生成新blob单元,从新blob单元中读取数据并返回;将新blob单元写入到cache pool存储层,根据新blob单元更新rocksdb存储单元中相应的元数据。38.如图2所示,结合本发明的实施例,提供一种ceph集群,包括:39.cache pool存储层21,所述cache pool存储层使用nvme介质存储数据;40.写入单元22,用于当需要向ceph集群写数据时生成写blob请求,将写blob请求对应的数据生成blob单元随机写入cache pool存储层;其中,所述blob单元的容量小于预设容量值、且blob单元可被随机读写;41.data pool存储层23,所述data pool存储层使用hdd介质存储数据;42.迁移单元24,用于针对cache pool存储层的每个blob单元,将满足预设要求的数据所在blob单元迁移到data pool存储层;43.读取单元25,用于当需要从ceph集群读数据时生成读blob请求,从cache pool存储层对应的blob单元中读取所述读blob请求对应的数据,若所述读blob请求对应的数据无法从cache pool存储层的blob单元读取,则从data pool存储层读取。44.优选地,所述写入单元22包括写入子单元221和压缩子单元222;所述cache pool存储层21还包括rocksdb存储单元211,其中:45.所述写入子单元221,用于将写blob请求对应的数据写入blob单元;46.所述压缩子单元222,用于在将写blob请求对应的数据写入blob单元之后,对所述blob单元进行数据压缩,将数据压缩之后的blob单元存储在cache pool存储层;47.所述rocksdb存储单元211,用于存储所述blob单元相应的元数据,所述元数据是blob单元中数据的描述信息。48.优选地,还包括合并单元26,其中:49.所述合并单元26,用于针对同一用户发起的至少两个写blob请求,在所述至少两个写blob请求执行完成后,扫描所述用户的所有blob单元,将具有数据交集的blob单元进行数据合并生成合并blob单元,且每个合并blob单元的容量不超过其预设容量值;50.所述rocksdb存储单元211,用于根据合并blob单元更新rocksdb存储单元中相应的元数据。51.优选地,所述迁移单元24包括冷数据标记子单元241、冷数据迁移子单元242,其中:52.所述冷数据标记子单元241,用于通过第一后端线程定时扫描cache pool存储层中的每个blob单元,若blob单元内的数据连续未被访问的时间满足预设冷数据时间阈值,将所述连续未被访问的blob单元标记为冷数据;53.所述冷数据迁移子单元242,用于当cache pool存储层的存储使用率达到预设使用率阈值时,通过第二后端线程将cache pool存储层中标记为冷数据的blob单元迁移到data pool存储层,54.所述rocksdb存储单元211,用于更新rocksdb存储单元中被迁移的blob单元相应的元数据。55.优选地,所述读取单元25包括基本信息获取子单元251、第一读取子单元252、第二读取子单元253、第三读取子单元254,其中:56.基本信息获取子单元251,用于根据所述读blob请求查询所述rocksdb存储单元内的元数据,确定所述读blob请求对应的数据缓存在cache pool存储层还是存储在data pool存储层;57.第一读取子单元252,用于如果所述读blob请求对应的数据缓存在cache pool存储层,则直接从cache pool存储层对应的blob单元中读取数据并返回;58.第二读取子单元253,用于如果读blob请求对应的数据全部未缓存在cache pool存储层,则从data pool存储层对应的blob单元中读取数据并返回;将相应的blob单元自data pool存储层迁移到cache pool存储层,并更新rocksdb存储单元内相应的元数据;59.第三读取子单元254,用于如果读blob请求对应的数据部分未缓存在cache pool存储层,则从data pool存储层获取并迁移未缓存在cache pool存储层的部分数据对应的第一blob单元,在cache pool存储层将从data pool存储层迁移的第一blob单元与缓存在cache pool存储层的部分数据对应的第二blob单元进行数据合并生成新blob单元,从新blob单元中读取数据并返回;将新blob单元写入到cache pool存储层;60.所述rocksdb存储单元211,用于根据第三读取子单元所生成的新blob单元更新rocksdb存储单元中相应的元数据。61.本发明实施例所取得有益效果如下:62.1、缓存效率提升促进缓存命中率提升。基于blob单元(比ceph object更小的单元)进行,且前端cache pool存储经过lz4算法压缩的blob对象,更能有效利用cache pool的空间,进而相同的cache pool空间能够缓存更多的有些数据,提升缓存命中率。63.2、优化小请求性能;写请求先写在cache pool层,存在交集的blob会在cache pool层进行更新和合并,然后再异步写入到data pool层,实现小io合并成大io,充分利用nvme在小io随机读写优秀的性能,大io在hdd上顺序读写较好的性能。64.3、引入自动迁移线程,低优先级地定时从cache pool中迁移冷数据到data pool,回收cache pool空间。避免现有技术的问题“当前cache tier方案中,基于缓存使用率阈值来将cache pool中数据迁移到data pool中,当此缓存使用率超过比率阈值时,执行数据的写入data pool操作,此操作如优先级低,则会导致cache pool写满导致整个缓存写满(写满则极为明显地降低业务读写性能)的风险,如优先级高,则会抢占业务读写未命中时从data pool读数据的带宽流量,进而极大降低业务读写未命中时的性能”。65.下面结合具体的应用实例对本发明实施例上述技术方案进行详细说明,实施过程中没有介绍到的技术细节,可以参考前文的相关描述。66.本发明为一种基于冷热分层实现的ceph(ceph)混合存储系统及方法,基于分层的方式,用于云存储平台的生命周期管理,在降低成本的过程中,通过提升cache pool(存储引擎)的缓存使用率,降低缓存未命中对业务io读写的影响,实现低成本的同时,满足业务对性能的要求。67.本技术方案中以ceph为基础服务,分为cache pool和data pool两层,实现冷热分层存储,其中cache pool存储热数据,使用nvme介质,data pool(数据池)存储冷数据,使用hdd介质,通过nvme介质与hdd介质共同使用实现混合存储。cache pool层因为使用nvme介质,此介质在小io随机读写(小写随机读写)上有很好的性能表现,hdd pool层使用hdd介质,此介质在大io顺序读写(大写顺序读写)上有较好的性能表现。68.本发明的冷热分层系统结构图如图3所示,冷热分层实现的混合存储系统架,读写请求流程如下说明,其中ceph在对象存储引擎bluestore层压缩与读写基于blob(blob是ceph的专有名词),blob指代一个比object更小的读写单元,大小在4k~1024k,充分利用ceph自身的此特性,优化cache tier(cache tier是ceph在其抽象的objectstore层面实现的冷热分层)中的缓存存储单元,将缓存存储单元从object更新为blob,blob(binary large object)表示二进制类型的大对象,blob是object内部的读写单元,cache pool通过blob实现了缓存,最终在hdd还是以object进行存储。69.1、写请求流程:当需要向ceph集群写数据时生成写blob请求,将写blob请求对应的数据生成blob单元随机写入cache pool存储层;其中,所述blob单元的容量小于预设容量值、且blob单元可被随机读写;具体如下:70.写blob请求(正常的io读写请求)将所有的io先写入到cache pool中的blob单元,写入blob就代表数据存储在缓存单元里,然后经过lz4算法压缩实现blob的压缩,此算法压缩速度快;压缩之后blob直接存储在cache pool层。在本发明的数据分布式存储系统中,只压缩写blob请求所对应的数据,并将相关元数据不压缩直接存放在rocksdb(开源kv存储引擎)中,元数据是关于写blob请求所对应的数据的一些描述信息。71.在前端用户多次执行随机写过程中,将每一次写当做是对一个blob操作,多次写就涉及多个blob,会存储多个压缩后的blob,写请求完成后代码扫描所有blob,只要数据存在交集则执行合并操作合并成一个blob,并更新rocksdb中的元数据。当blob请求对应的数据大于blob的预设容量,则将数据分别写在多个blob里面。72.同时ceph后端线程(ceph_osd进程里面的线程)定时扫描cache pool中的blob数据(元数据不需要写入到后端hdd pool),根据配置的冷数据时间阈值标记长时间未访问数据blob单元为冷数据,当cache pool的磁盘空间使用率达到配置的使用率阈值时,将cache pool中的冷数据以其所在的blob形式迁移到后端data pool层,更新rocksdb中被迁移到data pool的冷数据相应元数据(具体是指冷数据的位置信息),在冷数据被迁移到data pool层后达到释放cache pool层的nvme存储空间。73.小io(输入输出)随机读写在nvme实现,大io顺序读写在hdd实现,这样就可以实现较高的性能与较低的成本。其中,小io的“小写”是读写请求数据的大小在1k、4k、8k之类小于等于预设存储大小(或者预设存储容量阈值,所述预设存储容量阈值通常指一个blob容量)的io请求,随机读写是指:cache pool层直接接受客户端的读写请求,客户端的读写是不可预测的,包括:有顺序读写、也包括随机读写。74.大io的“大写”是客户端读写请求在64k、128k甚至更大的io请求,即大于预设存储大小的io请求。当后台进程会将冷数据(包括单独的blob、合并后的blob)写入到hdd cache的过程中,能够实现随机小写转换成顺序大写。因为cache pool内存在合并后的blob,那么合并后的blob大于预设存储容量阈值,且后台进程是定期执行的,所以是顺序读写,而不是像客户端的那样随机读写。同样,自hdd cache读取冷数据时,也是顺序读写。75.2、读请求:当需要从ceph集群读数据时生成读blob请求,从cache pool存储层对应的blob单元中读取所述读blob请求对应的数据,若所述读blob请求对应的数据无法从cache pool存储层的blob单元读取,则从data pool存储层读取。具体如下:76.读blob请求先请求rocksdb,如读blob请求对应的所有数据缓存在cache pool层,则直接从cache pool层读取数据,并返回给客户端。77.如果读blob请求对应的数据全部未缓存在cache pool存储层,则从data pool存储层对应的blob单元中读取数据并返回;将相应的blob单元自data pool存储层迁移到cache pool存储层,并更新rocksdb存储单元内相应的元数据。78.如果存在部分数据未缓存在cache pool层,则从datapool层读取未缓存的那部分数据,合并cache pool层中已有的blob的数据与data pool层读取未缓存的那部分数据生成新blob数据保存在cache pool层,同时更新rocksdb内新blob数据相应的元数据内的信息,最后将新blob数据返回给客户端。79.此混合存储系统及方法中,针对cache pool存储层的每个blob单元,将满足预设要求的数据所在blob单元迁移到data pool存储层,涉及到cache pool迁移数据到data pool的相关配置:80.1、cache pool触发迁移使用率阈值:当cache pool使用率达到此配置的阈值时,后台守护线程将冷数据的blob迁移到后端data pool中。81.2、冷数据时间阈值:当blob未读写的时间超过此配置的阈值时,此blob将被标记为冷数据。82.3、ceph后端线程执行间隔:此参数控制线程执行标记冷数据操作,并且当cache pool使用率达到阈值时,执行将blob迁移到后端data pool操作。83.综上,本发明创新地在cache pool层优化存储单元为blob,且引入lz4压缩,提升了cache pool的利用率。小io在cache pool层实现读写,并实现io合并功能,有效利用nvme优秀的小io读写性能,hdd设备较好的大io读写性能。后端自动将冷数据从cache pool迁移到data pool,避免业务高峰期未命中缓存(未命中缓存=数据未存储在cache pool中)时抢占hdd带宽,提升了整体的读写性能。84.本发明实施例所取得有益效果如下:85.1、缓存效率提升促进缓存命中率提升。基于blob单元(比ceph object更小的单元)进行,且前端cache pool存储经过lz4算法压缩的blob对象,更能有效利用cache pool的空间,进而相同的cache pool空间能够缓存更多的有些数据,提升缓存命中率。86.2、优化小请求性能;写请求先写在cache pool层,存在交集的blob会在cache pool层进行更新和合并,然后再异步写入到data pool层,实现小io合并成大io,充分利用nvme在小io随机读写优秀的性能,大io在hdd上顺序读写较好的性能。87.3、引入自动迁移线程,低优先级地定时从cache pool中迁移冷数据到data pool,回收cache pool空间。当前cache tier方案中,基于缓存使用率阈值和脏数据比率阈值(脏数据是指无用的数据)来将cache pool中数据迁移到data pool中,当此缓存使用率或脏数据比率超过阈值时,执行数据的写入data pool操作,此操作如优先级低,则会导致cache pool写满导致整个缓存写满(写满则极为明显地降低业务读写性能)的风险,如优先级高,则会抢占业务读写未命中时从data pool读数据的带宽流量,进而极大降低业务读写未命中时的性能。88.应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。89.在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本公开。不应该将这种公开方法解释为反映了这样的意图,即,所要求保护的主题的实施方案需要比清楚地在每个权利要求中所陈述的特征更多的特征。相反,如所附的权利要求书所反映的那样,本发明处于比所公开的单个实施方案的全部特征少的状态。因此,所附的权利要求书特此清楚地被并入详细描述中,其中每项权利要求独自作为本发明单独的优选实施方案。90.为使本领域内的任何技术人员能够实现或者使用本发明,上面对所公开实施例进行了描述。对于本领域技术人员来说;这些实施例的各种修改方式都是显而易见的,并且本文定义的一般原理也可以在不脱离本公开的精神和保护范围的基础上适用于其它实施例。因此,本公开并不限于本文给出的实施例,而是与本技术公开的原理和新颖性特征的最广范围相一致。91.上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所有可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所有这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括,”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书的说明书中的任何一个术语“或者”是要表示“非排它性的或者”。92.本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrative logical block),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrative components),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。93.本发明实施例中所描述的各种说明性的逻辑块,或单元都可以通过通用处理器,数字信号处理器,专用集成电路(asic),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。94.本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动磁盘、cd-rom或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于asic中,asic可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。95.在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于ram、rom、eeprom、cd-rom或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(dsl)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、dvd、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。96.以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部