开源分布式存储软件Ceph中Cache实现方法和装置与流程

文档序号:15615328发布日期:2018-10-09 21:13阅读:174来源:国知局
本申请涉及存储技术,特别涉及开源分布式存储软件(ceph)中高速缓存存储器(cache)实现方法和装置。
背景技术
::ceph,作为分布式文件系统,其能够在维护可移植操作系统接口(posix:portableoperatingsysteminterfaceofunix)兼容性的同时,也增加复制和容错功能。ceph,作为linux的文件系统备选之一,已经集成在主线linux内核中,后续可用于解决海量存储的需求。目前,ceph应用的存储架构(简称ceph存储架构)中,并不存在cache。技术实现要素:本申请提供了开源分布式存储软件(ceph)中cache实现方法和装置,以在ceph存储架构中实现cache。本申请提供的技术方案包括:一种开源分布式存储软件ceph中高速缓存存储器cache实现方法,该方法应用于存储数据节点osd,在本osd被激活时,该方法包括:获取本osd中已生成的cache分区的cache模式;若依据所述cache模式确定在所述cache分区中创建cache,则在所述cache分区中创建cache,并依据本osd中已生成的数据data分区所写入的数据信息的文件类型将所述数据信息写入所述cache;将所述cache中写入的数据信息挂载至本osd对应的osdid目录,依据所述osdid目录启动osd进程。一种开源分布式存储软件ceph中高速缓存存储器cache实现装置,该装置应用于存储数据节点osd,包括:获取单元,用于获取所述osd中已生成的cache分区的cache模式;确定单元,依据所述cache模式确定是否在所述cache分区中创建cache;cache单元,用于在所述确定单元依据所述cache模式确定在所述cache分区中创建cache时,在所述cache分区中创建cache,并依据本osd中已生成的数据data分区所写入的数据信息的文件类型将所述数据信息写入所述cache;处理单元,用于将所述cache中写入的数据信息挂载至本osd对应的osdid目录,依据所述osdid目录启动osd进程。由以上技术方案可以看出,本申请中,通过依据cache模式在所述cache分区中创建cache,能够在osd实现cache;进一步地,本申请中,基于cache中读写流程的优异特性,则本申请通过在osd实现cache,能够提高读写效率;更进一步地,本申请中,无论cache模式是否支持脏数据,都可在osd实现cache,而非人为实现,可以提高部署效率,也可简化维护。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。图1为osd的prepare阶段流程图;图2为osd的业务逻辑结构图;图3为osd的activate阶段流程图;图4为本申请提供的ceph中cache实现的示范性实施例流程图;图5为本申请提供的在cache分区中创建cache的示范性实施例流程图;图6为本申请提供的osd的业务逻辑结构图;图7为本申请提供的osd的prepare阶段流程图;图8为本申请提供的装置结构示意图。具体实施方式在描述本申请提供的方法之前,先对现有ceph存储架构中osd的业务逻辑进行描述:ceph存储架构中osd的业务逻辑主要分两个阶段:部署(prepare)阶段、启动(activate)阶段。在prepare阶段,如图1所示,主要包括以下操作:步骤101,获取日志(journal)分区大小。在应用中,会针对osd配置一个文件(称为osd配置文件)。osd配置文件存储在指定目录下。作为一个实施例,这里的指定目录可为ceph目录的子目录比如ceph.cof目录下。在一个例子中,osd配置文件会记录journal分区大小。这里osd配置文件记录的journal分区大小是依据业务需求配置的,比如可为10g、20g、30g等,本申请并不具体限定。基于此,步骤101中,获取journal分区大小可为:从osd配置文件中读取journal分区大小。步骤102,依据获取的journal分区大小在osd生成journal分区。步骤103,为journal分区设置对应的journal通用唯一识别码(uuid:universallyuniqueidentifier),并生成journal分区的链接。在一个例子中,journaluuid可按照预设的用于计算uuid的算法确定。不同osd中journal分区对应的journaluuid不同。在一个例子中,journal分区的链接主要是便于快捷访问journal分区。本申请应用于linux系统,linux系统中的链接有点类似于windows的快捷方式。linux系统中的链接有两种:一种是硬链接;另一种是符号链接(又称软链接)。作为一个实施例,本步骤103生成的journal分区的链接可为软链接。步骤104,在osd生成数据(data)分区。作为一个实施例,本步骤104可包括:将osd中除journal分区之外的区域作为data分区。图2具体示出了osd中的journal分区、data分区。步骤105,为data分区设置对应的datauuid,并生成data分区的链接。在一个例子中,datauuid可按照预设的用于计算uuid的算法确定。不同osd中data分区对应的datauuid不同。在一个例子中,data分区的链接主要是便于快捷访问data分区。作为一个实施例,本步骤105生成的data分区的链接与journal分区的链接类似,也可为软链接。步骤106,格式化data分区,在data分区写入osd相关数据信息。在一个例子中,osd相关数据信息可包括:osd中journal分区对应的journaluuid、osd对应的osduuid、osd所在的集群对应的集群uuid等。当将数据信息写入data分区后,可将数据信息的文件类型记录至osd配置文件。上简要描述了prepare阶段的流程。需要说明的是,在prepare阶段,除了上述步骤101至步骤106之外,还会包括其他很多步骤,这里只是以步骤101至步骤106为例描述,并不表示涵盖整个prepare阶段。在activate阶段,如图3所示,可包括以下步骤:步骤301,获取data分区所写入的数据信息的文件类型。如上描述,当将数据信息写入data分区后,可将数据信息的文件类型记录至osd配置文件。基于此,本步骤301中,获取data分区所写入的数据信息的文件类型可包括:从osd配置文件中读取data分区所写入的数据信息的文件类型。这里的文件类型可包括:日志型文件系统(xfs)。步骤302,依据获取的文件类型将data分区所写入的数据信息挂载至已创建的data分区临时目录。步骤303,检查data分区临时目录挂载的数据信息是否包括osd通过认证的信息,若否,执行步骤304,若是,执行步骤305。步骤304,申请本osd对应的osd标识(id)和密钥(key),在所述key通过认证设备认证时,则执行步骤305。在一个例子中,这里,osd是向ceph存储架构中设有的监控器(monitor)申请对应的osdid和key,当monitor接收到申请时,负责为osd分配对应的key和osdid。作为一个实施例,当osd申请本osd对应的osdid和key后,osd就基于申请的osdid和key向认证设备发起认证,当osd申请的key通过认证设备的认证时,则可将osd通过认证的信息记录至data分区,之后执行步骤304。在一个例子中,这里的认证设备也可为上述的monitor。步骤305,取消data分区临时目录与data分区所写入的数据信息之间的挂载关系,将data分区所写入的数据信息挂载至本osd对应的osdid目录。这里,之所以取消挂载关系,目的是为了防止无效的数据信息干扰目录的管理。步骤306,依据osdid目录启动osd进程。至此,osd进程才开始启动。以上简要描述了activate阶段的流程。需要说明的是,在activate阶段,除了上述步骤301至步骤306之外,还会包括其他很多步骤,这里只是以步骤301至步骤306为例描述,并不表示涵盖整个activate阶段。从图2所示流程描述的osd的prepare阶段和图3所示流程描述的osd的activate阶段可以看出,osd并未部署cache,这也意味着ceph存储架构中未实现cache。而如果在ceph存储架构中实现cache,常常需要手动在osd部署cache比较复杂,而且不太容易维护。为了在ceph存储架构中自动部署实现cache,本申请提供了如图4所示的流程:参见图4,图4为本申请提供的ceph中cache实现的示范性实施例流程图。该方法应用于osd,在osd被激活时,如图4所示,该方法包括以下步骤:步骤401,获取本osd中已生成的cache分区的cache模式。这里,本osd中已生成的cache分区下文描述,这里暂不描述。步骤402,若依据所述cache模式确定在cache分区中创建cache,则在所述cache分区中创建cache,并依据本osd中已生成的数据data分区所写入的数据信息的文件类型将所述数据信息写入cache。在一个例子中,步骤402中依据cache模式确定在cache分区中创建cache可包括:判断所述cache模式是否为用于指示支持脏数据的第一指定cache模式,如果是,确定在所述cache分区中创建cache。这里的第一指定cache模式可支持加载、创建功能,作为一个实施例,第一指定cache模式可为cache机制中的回写(write-back)模式。基于cache模式为第一指定cache模式比如write-back模式,则步骤402中,在cache分区中创建cache可包括:通过加载cache分区创建cache。在另一个例子中,步骤402中依据cache模式确定在cache分区中创建cache可包括:判断所述cache模式是否为用于指示不支持脏数据的第二指定cache模式;若是,确定在所述cache分区中创建cache。这里的第二指定cache模式不支持加载功能,作为一个实施例,第二指定cache模式可为cache机制中的直写(write-through)模式、或者为数据绕过固态硬盘(ssd)直接写到普通硬盘(write-around)模式等。基于cache模式为第二指定cache模式比如write-through模式或write-around模式等,步骤402中,在cache分区中创建cache可包括图5所示流程:如图5所示,该流程可包括:步骤501,依据所述data分区所写入的数据信息的文件类型将所述数据信息挂载至已创建的data分区临时目录。如上描述,当将数据信息写入data分区后,可将数据信息的文件类型记录至osd配置文件。基于此,本步骤501中,获取data分区所写入的数据信息的文件类型可包括:从osd配置文件中读取data分区所写入的数据信息的文件类型。这里的文件类型可包括:日志型文件系统(xfs)。步骤502,检查所述data分区临时目录挂载的数据信息是否包括本osd通过认证的信息;若是,执行步骤503,若否,执行步骤504。步骤503,在cache分区中创建cache。步骤504,申请本osd对应的osdid和key,在所述key通过认证设备认证时,在cache分区中创建cache。这里,osd是向ceph存储架构中设有的监控器(monitor)申请对应的osdid和key,当monitor接收到申请时,负责为osd分配对应的key和osdid。作为一个实施例,当osd申请本osd对应的osdid和key后,osd就基于申请的osdid和key向认证设备发起认证,当osd申请的key通过认证设备的认证时,则可将osd通过认证的信息记录至data分区。在一个例子中,这里的认证设备也可为上述的monitor。至此,通过图5所示流程实现在cache分区中创建cache。基于图5所示流程,则步骤402中,依据本osd中已生成的data分区所写入的数据信息的文件类型将所述数据信息写入所述cache包括:取消data分区临时目录与data分区所写入的数据信息之间的挂载关系,依据本osd中已生成的数据data分区所写入的数据信息的文件类型将所述数据信息写入所述cache。需要说明的是,在执行本步骤402时,osd中也有可能并没有生成cache分区,或者osd中cache分区的模式为默认值比如空或者指定值,此时可按照上述图3所示流程执行,这里不再赘述,步骤403,将cache中写入的数据信息挂载至本osd对应的osdid目录,依据所述osdid目录启动osd进程。在一个例子中,在将cache中写入的数据信息挂载至osdid目录之前,可取消data分区临时目录与cache中写入的数据信息之间的挂载关系,以使cache中数据信息不再挂载至data分区临时目录,防止无效的数据信息干扰目录的管理。至此,完成图4所示流程。通过图4所示流程能够在osd实现cache。基于cache中读写流程的优异特性,则本申请通过在osd实现cache,能够提高读写效率;进一步地,本申请中,无论cache模式是否支持脏数据,都可在osd实现cache,而非人为实现,可以提高部署效率,也可简化维护。在一个例子中,图4所示流程是基于以下osd的prepare阶段实现。这里,osd的prepare阶段相比图3所示prepare阶段的改进主要包括:在osd中增加了cache分区的实现。相比于现有osd的业务逻辑结构,本申请提供的osd的业务逻辑结构中增加了cache分区。图6示出了本申请提供的osd的业务逻辑结构。基于上面描述的改进,下面通过图7所示流程描述本申请提供的osd的prepare阶段:如图7所示,主要包括以下操作:步骤701,获取journal分区大小、cache分区大小。在应用中,会针对osd配置一个osd配置文件。osd配置文件存储在指定目录下。作为一个实施例,这里的指定目录可为ceph目录的子目录比如ceph.cof目录下。在一个例子中,osd配置文件会记录journal分区大小、cache分区大小。基于此,步骤701中,获取journal分区大小、cache分区大小可包括:从osd配置文件中读取journal分区大小、cache分区大小。步骤702,依据获取的journal分区大小在osd生成journal分区,依据获取的cache分区大小在osd生成cache分区。步骤703,为journal分区设置journaluuid,并生成journal分区的链接,为cache分区设置cacheuuid和cache模式,并生成cache分区的链接。在一个例子中,可将为cache分区设置的cacheuuid、cache模式记录在osd配置文件中。步骤704,在osd生成data分区。作为一个实施例,本步骤704可包括:将osd中除journal分区、cache分区之外的区域作为data分区。至此,一个osd至少包括journal分区、cache分区、data分区,具体如图6所示。步骤705,为data分区设置对应的datauuid,并生成data分区的链接。步骤706,格式化data分区,在data分区写入osd相关数据信息。在一个例子中,osd相关数据信息可包括:osd中journal分区对应的journaluuid、osd对应的osduuid、osd所在的集群对应的集群uuid、cacheuuid、cache模式等。当将数据信息写入data分区后,可将数据信息的文件类型记录至osd配置文件。上简要描述了本申请提供的osd的prepare阶段的流程。需要说明的是,在prepare阶段,除了上述步骤701至步骤706之外,还会包括其他很多步骤,这里只是以步骤701至步骤706为例描述,并不表示涵盖整个prepare阶段。需要说明的是,本申请中,osd中生成的cache分区并非固定不变,其可根据业务需求发生更改。当osd中已生成的cache分区发生更改时,可进一步执行以下步骤:将data分区写入的、且挂载在所述osdid目录的数据信息中的第一cacheuuid修改为更改后的cache分区对应的第二cacheuuid;所述第一cacheuuid与更改前的cache分区对应;返回图4所示流程。以上对本申请提供的方法进行了描述。下面对本申请提供的装置进行描述:参见图8,图8为本申请提供的装置示范性实施例结构图。该装置应用于osd,包括:获取单元,用于获取所述osd中已生成的cache分区的cache模式;确定单元,依据所述cache模式确定是否在所述cache分区中创建cache;cache单元,用于在所述确定单元依据所述cache模式确定在所述cache分区中创建cache时,在所述cache分区中创建cache,并依据本osd中已生成的数据data分区所写入的数据信息的文件类型将所述数据信息写入所述cache;处理单元,用于将所述cache中写入的数据信息挂载至本osd对应的osdid目录,依据所述osdid目录启动osd进程。在一个例子中,所述cache单元依据cache模式确定在所述cache分区中创建cache包括:判断所述cache模式是否为用于指示支持脏数据的第一指定cache模式;如果是,确定在所述cache分区中创建cache;基于此,所述cache单元在cache分区中创建cache包括:通过加载所述cache分区创建cache。在另一个例子中,所述cache单元依据所述cache模式确定在所述cache分区中创建cache包括:判断所述cache模式是否为用于指示不支持脏数据的第二指定cache模式;若是,确定在所述cache分区中创建cache;基于此,所述在cache分区中创建cache包括:依据所述data分区所写入的数据信息的文件类型将所述数据信息挂载至已创建的data分区临时目录;检查所述data分区临时目录挂载的数据信息是否包括本osd通过认证的信息;若是,在cache分区中创建cache;若否,申请本osd对应的osd标识id和密钥key,在所述key通过认证设备认证时,在cache分区中创建cache。作为一个实施例,所述处理单元进一步在所述osd中已生成的cache分区发生更改时,将所述data分区写入的、且挂载在所述osdid目录的数据信息中的第一cacheuuid修改为更改后的cache分区对应的第二cacheuuid;所述第一cacheuuid与更改前的cache分区对应,并触发所述获取单元执行的操作。至此,完成图8所示装置的结构描述。以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1