一种分布式高效云盘的实现方法、系统及云平台与流程

文档序号:11548726阅读:250来源:国知局
本发明涉及云存储
技术领域
:,尤其涉及一种分布式高效云盘的实现方法、系统及其一种云平台。
背景技术
::在云计算初期,用户通常选择先将非关键业务(例如,单一的图片、文本、备份业务、归档业务)上传至云盘,云盘包含存储业务或者数据的物理存储介质或者通过虚拟化技术所形成的虚拟存储介质中。非关键业务对云盘存储性能要求不高,因此传统的云盘的弊端并为凸显。随着云技术的普及以及用户对云计算的日益认可,用户逐步将关键业务(例如,web站点、中小型数据库、erp系统或者大中型关系型数据库)迁移到云端。这类业务通常对云端的存储性能有较高的存储性能要求。为适应各种业务对存储性能要求的多样性,各大云平台厂商相继推出了针对非关键业务的容量型云盘,以及针对关键业务的性能型云盘。各厂商在云盘的实现技术上虽有差异,但容量型云盘通常采用机械硬盘(hdd)作为存储介质,性能型云盘则采用固态硬盘(solidstatedrives,ssd)作为存储介质。上述两种类型的云盘所存在的问题是:容量型云盘性能太低,性能型云盘价格太贵而且容量相对较小。为解决上述问题,业内提出了一种性能介于容量型云盘和性能型云盘之间的云盘,称之为高效云盘,通常有两种做法:一种解决办法是在上述的性能型云盘上添加qos限速,降低单盘的性能,通过规模效应来降低用户成本,但这种方案无法提供像容量型云盘一样的大容量;另一种解决办法是将固态介质(ssd)作为机械硬盘(hdd)的后端缓存添加至存储系统中并进行共享该后端缓存,这样既能基于机械硬盘(hdd)提供大容量,又能通过固态硬盘(ssd)加速实现更高的存储性能。但上述第二种解决方法仍然存在以下两个技术瑕疵:1)存储装置通过网络与前端业务系统连接,导致io路径太长,无法最大化体现固态硬盘(ssd)在读操作与写操作时的高性能;2)固态硬盘(ssd)作为缓存由存储系统共享,容易导致性能抖动的问题,因此为了实现性能提升,往往需要配置较大的固态硬盘(ssd)以提高缓存容量,而这导致存储系统及其基于该存储系统的云盘的构建成本的显著增加。有鉴于此,有必要对现有技术中的高效云盘的实现方法及高效云盘予以改进,以解决上述问题。技术实现要素:本发明的目的在于揭示一种分布式高效云盘的实现方法,以及基于该实现方法的一种分布式高效云盘系统,以及基于该分布式高效云盘的一种云平台,用以满足关键业务对高存储性能的要求,同时降低高效云盘的构建成本,缩短io访问路径,避免共享的后端缓存出现抖动。为实现上述第一个发明目的,本发明首先提供了一种分布式高效云盘的实现方法,其特征在于,包括:在各节点中创建由至少一个第一非易失性存储介质所组建的ceph存储集群作为容量层,在各节点中创建至少一个虚拟机,并使用分布式配置共享软件创建分布式配置集群作为配置仓库,根据各节点中第二非易失性存储介质的配置情况,规划出映射关系,并注册到配置仓库中,在各节点中安装定制化客户端,池化所有节点中的第二非易失性存储介质作为分布式缓存层,并将分布式缓存层与配置仓库共同作为高效云盘的缓存层。作为本发明的进一步改进,所述各节点中第二非易失性存储介质以跨节点映射的方式规划出第二非易失性存储介质与分布式缓存层之间的映射关系。作为本发明的进一步改进,各节点中的第二非易失性存储介质以容量对称的形式,将节点中的第二非易失性存储介质池化为与节点数量匹配的至少一个逻辑非易失性存储介质。作为本发明的进一步改进,所述第一非易失性存储介质由机械硬盘、raid之一构成,所述第二非易失性存储介质由快闪存储器、相变存储器、强介电体存储器、磁记录式随时写入读出存储器、双向统一存储器、电阻ram之一构成。作为本发明的进一步改进,所述快闪存储器由nand闪存、nor闪存之一构成。作为本发明的进一步改进,所述分布式配置共享软件包括zookeeper、etcd或者consul。作为本发明的进一步改进,所述节点的数量为n;其中,所述n取大于或者等于2的正整数。作为本发明的进一步改进,各节点中配置有两个或者两个以上规格相同的第二非易失性存储介质。作为本发明的进一步改进,所述定制化客户端在接收自上层发送的io请求时,首先将io请求所对应的数据写入分布式缓存层中属于本地的第二非易失性存储介质,然后以同步或者异步方式将io请求所对应的数据复制到映射关系中的其他节点中的第二非易失性存储介质中。作为本发明的进一步改进,所述定制化客户端包括:访问接口、块存储模块及对象存储模块,其中,所述访问接口被配置为rbd接口、iscsitarget接口、fctarget接口或者iser接口中的至少一种接口;所述块存储模块包括元数据管理模块、读写缓存模块、qos模块、io模式智能识别模块及设备管理模块;所述块存储模块配置回写策略,并根据回写策略周期性地将缓存数据写入ceph存储集群。作为本发明的进一步改进,所述回写策略具体为:为块设备分配相当于块设备大小的1/100~1/20的磁盘空间作为缓存空间,并根据设定的最大脏数据量、临界脏数据量及数据超时时间,确定是否执行回写操作。作为本发明的进一步改进,所述临界脏数据量的设定值为缓存空间的10%,最大脏数据量的设定值不小于临界脏数据量的设定值,数据超时时间的设定值为1~60秒。通过本发明,实现了对数据的本地化访问,从而有效地缩短了io访问路径,有效地避免了较大的网络访问时所带来的延迟,显著的提高了该分布式高效云盘的数据写入与访问性能,非常适合关键业务的在各种云平台的部署及健康运行;此外,由于各节点中第二非易失性存储介质以跨节点映射的方式规划出第二非易失性存储介质与分布式缓存层之间的映射关系,因此当部分磁盘或者部分节点失效或者损坏时也能保证数据不发生丢失,提高了该分布式高效硬盘的高可用性与高可靠性;同时,通过位于后端的cehp存储集群为整个云盘提供了巨大的存储容量,并提供良好存储性能的同时也有效地的降低了整个云盘的构建成本,具有良好的经济性。同时,本发明还公开了一种分布式高效云盘系统,包括:容量层,其由至少一个第一非易失性存储介质所组建的ceph存储集群,配置仓库,其为由分布式配置共享软件所创建分布式配置集群,定制化客户端,用于池化所有节点中的第二非易失性存储介质,以作为分布式缓存层,以及所述分布式缓存层与配置仓库共同作为高效云盘的缓存层;其中,所述各节点中第二非易失性存储介质以跨节点映射的方式规划出第二非易失性存储介质与分布式缓存层之间的映射关系。与此同时,本发明还公开了一种云平台,包括至少一个上述所述的分布式高效云盘系统。本发明所示一种分布式高效云盘系统以及基于该分布式高效云盘系统的一种云平台,实现了对关键业务的良好支持,降低了云盘的构建成本,缩短了io访问路径,避免了共享的后端缓存出现抖动,实现了该分布式高效云盘系统基于包含该分布式高效云盘系统的一种云平台的可靠性与稳定性,并降低了部署与运行成本。附图说明图1为在多个节点中创建ceph存储集群的实例图;图2为选用etcd作为分布式配置共享软件对多个节点中所开启的虚拟机创建分布式配置集群作为配置仓库的实例图;图3为一种分布式高效云盘系统采用本发明的实现方法的实例图;图4为定制化客户端在一种具体实施方式中的实例图;图5为定制化客户端的访问接口配置有四种类型的接口的实例图;图6为块存储模块与lio集成的架构图;图7为iometa双向链表的示意图;图8为读写缓存模块对每个块设备管理本地缓存时所采用的缓存文件。具体实施方式下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。在详细描述本发明各实施例之前,对本说明书中出现的各个术语作出简要定义与阐述。术语“vm”,virtualmachine,虚拟机。术语“抖动”,为分组延迟(latency)的变化程度,术语“qos”,qualityofservice,即服务质量。对于网络业务,服务质量包括传输的带宽、传送的时延、数据的丢包率等。在网络中可以通过保证传输的带宽、降低传送的时延、降低数据的丢包率以及时延抖动等措施来提高服务质量。术语“接口”,为云平台中各个组件(物理状态或者虚拟状态)进行数据广播或者单播时的端口。术语“ceph存储集群”,为一个符合posix(portableoperatingsystemfor)、开源的分布式存储系统。术语“池化”,pooling,为面向服务、面向需求的系统资源分配方法来整合、改善和优化服务器的计算资源,以求达到提高整体服务质量的目的的一种资源整合手段。术语“io请求”,包括但不限于用户(或者客户端)向主机发送或者逆向发送的写操作请求、读操作请求、删除操作请求、迁移操作请求、备份操作请求等。实施例一:一种分布式高效云盘的实现方法,包括以下步骤。为简化对本发明具体技术路线及原理性的解释,参图1所示,在本说明书各实施例中示出三个节点(即node-1、node-2、node-3),以对本发明作示范性说明。这三个节点既可以为计算节点,并具体可配置为磁盘或者一种独立的物理服务器或者计算机装置;当然,这三个节点可以为控制节点,并具体可配置为一种独立的物理服务器或者能够提供supportingservice、baseservice及optionservice的计算机可读介质。计算节点的数量为n;其中,所述n取大于或者等于2的正整数,在本实施方式中,n取3。同时,在各计算节点中配置有两个或者两个以上规格相同的第二非易失性存储介质(即ssd_1~ssd_1m、ssd_2~ssd_2n、ssd_3~ssd_3i)。该node-1、node-2及node-3为三个基于openstack所构建的计算节点,每个计算节点中配置一个或者多个sata磁盘或者其他类型的第一非易失性存储介质,以作为ceph存储集群10。该第一非易失性存储介质可为机械硬盘(hdd)或者由机械硬盘所组成的磁盘阵列或者混合磁盘(hhd)。磁盘阵列的规格包括但不限于raid0~raid7。计算节点node-1、node-2及node-3中可创建或者不创建vm,vm的数量可为1个也可为n个,并不具体限定vm的开启数量。该计算节点node-1、node-2及node-3也可位于qemu或者vmware等虚拟工程实例中,且可被配置为控制节点。在本实施方式中,该第一非易失性存储介质由机械硬盘或者raid构成,该第一非易失性存储介质可由快闪存储器、相变存储器、强介电体存储器、磁记录式随时写入读出存储器、双向统一存储器、电阻ram之一构成。进一步的,该快闪存储器由nand闪存、nor闪存之一构成。具体的,在本实施方式中,位于云盘系统后端的ceph存储集群10中的第一非易失性存储介质选用规格为sata的机械硬盘(hdd),而位于图3中所示出的具有高io访问及读写性能的第二非易失性存储介质选用ssd(贴装nand闪存的固态硬盘)。计算节点node-1配置有hypervisor11、计算节点node-2配置有hypervisor21,计算节点node-3配置hypervisor31,并彼此分别挂载sata1~sata3三个机械硬盘,并将其作为位于云盘系统后端的低速存储设备。计算节点node-1、计算节点node-2及计算节点node-3通过千兆以太网卡和/或万兆以太网卡,并通过网线、光线或者专线网络连接至交换机50。交换机50既可以物理交换机也可为虚拟交换机。如图1至图3所示,在本实施方式中,三个计算节点与交换机50之间通过千兆以太网卡(未示出)或者万兆以太网卡(未示出)进行互联,并优选万兆以太网卡进行互联。更优选的,为了兼顾性能与成本,可将多张千兆以太网卡或者万兆以太网卡做bond(绑定),并实现两个或多个网卡使用相同ip以进行报文数据的广播。此外,上述网卡同时支持rdma(remotedirectmemoryaccess)。rdma通过网络或者数据链路把数据直接传入某台计算机的一块存储区域,只需占用很少的cpu计算资源及内存资源。普通网卡集成了支持硬件校验和的功能,并对软件进行了改进,从而减少了发送报文数据的拷贝量。参图1所示,在各计算节点中创建由至少一个第一非易失性存储介质(例如sata)所组建的ceph存储集群10作为容量层(cephcluster)。ceph存储集群10中所包含的第一非易失性存储介质均为价格便宜但容量大的低速存储设备,并基于本说明书所指的分布式高效云盘系统的计算拓扑架构而言,该ceph存储集群10位于该分布式高效云盘系统的后端,以提供海量数据支撑。参图2所示,接下来使用分布式配置共享软件创建分布式配置集群作为配置仓库。根据各计算节点中第二非易失性存储介质(即ssd_1~ssd_1m、ssd_2~ssd_2n、ssd_3~ssd_3i)的配置情况,规划出映射关系,并注册到配置仓库中。该分布式配置共享软件包括zookeeper、etcd或者consul,在本说明书中,该分布式共享软件具体为etcd,并作示范性阐释。在本实施方式中,将vm作为配置仓库etcd的节点。根据计算节点的物理拓扑及高速存储设备(ssd)配置情况,将缓存映射关系注册到配置仓库etcd中。etcd记录格式如下:{no.}:{cache_path}{[host_name:dev_uuid]…[host_name:dev_uuid]};其中,{no.}:{cache_path}:表示一条映射记录,{no.}:表示从1开始的记录编号,{cache_path}:表示自定义的缓存路径。{[host_name:dev_uuid]…[host_name:dev_uuid]}:表示组成映射记录的主机名及设备uuid列表,其中,第一条[host_name:dev_uuid]为主记录,后面的为备记录。uuid是一个base64格式的字串,在linux系统上可以通过blkid命令得到。所述缓存映射关系,为保证高可用,应基于如下原理构建:●各缓存副本应映射到不同的计算节点上;●各缓存副本应映射到同一机架/机柜不同raw的计算节点上;●各缓存副本应映射到不同机架/机柜的计算节点上。为了保证个节点的高可靠性与高可用性,在本实施例中,每个计算节点中至少配置有两块具有同一型号、同一厂商、同一数据传输速率及其他具有相同参数的ssd,并将其中一块ssd作为主ssd,另一块或者多块ssd单独或者整体作为备ssd。主ssd及备ssd的容量及其他规格的选择需要根据各个计算节点的虚拟化比例来确定,以确保满足sla(service-levelagreement,服务等级协议)性能要求。在本实施方式中,三个计算节点位于不同的机架或者物理端。更优选的,为了节约机房、机架空间及电力资源,配置仓库也可以部署在虚拟化环境中。具体的,如图3所示,计算节点node-1的高速设备集41中包括m个ssd,计算节点node-2的高速设备集42中包括n个ssd,技术节点node-3的高速设备集43中包含i个ssd,其中,m、n、i均为大于或者等于2的正整数,并优选为在多个计算节点中形成均衡设置。定制化客户端30在接收自上层发送的io请求时,首先将io请求所对应的数据写入分布式缓存层20中属于本地的第二非易失性存储介质中(本地的主ssd),然后以同步或者异步方式将io请求所对应的数据复制到映射关系中的其他计算节点中作为高速存储设备集的第二非易失性存储介质中(即与本地的主ssd具有映射关系并位于其他计算节点中的备ssd中)。其本质上与本发明中,通过池化所有计算节点中的第二非易失性存储介质而形成该分布式缓存层20存在密切关系。ceph存储集群10至少包括三个计算节点或者三个控制节点或者由计算节点与控制节点所组成的混合节点。具体的,ceph存储集群10融合部署在计算节点node-1、计算节点node-2及计算节点node-3上,并基于如下原则划分各个计算节点中所属的硬件资源。原则(1):网络带宽决定机械硬盘(hdd)个数;原则(2):机械硬盘(hdd)个数决定cpucore个数;原则(3):机械硬盘(hdd)容量大小决定内存大小。在各计算节点中安装定制化客户端30,池化所有计算节点中的第二非易失性存储介质作为分布式缓存层20,并将分布式缓存层20与配置仓库共同作为该分布式高效云盘系统的缓存层。hypervisor(虚拟机监视器)对后端存储装置(包括ssd及sata)并不感知,hypervisor只是通过接口访问后端的存储装置。各计算节点中第二非易失性存储介质以跨节点映射的方式规划出第二非易失性存储介质(即参图3中的高速设备集41、高速设备集42及高速设备集43)与分布式缓存层20之间的映射关系。具体的,高速设备集41中的主ssd与其他计算节点中的一个或者多个备ssd共同映射形成分布式缓存层20中的ssd_a、ssd_b或者ssd_c。上述各个计算节点(node-1~node-3)中的第二非易失性存储介质(即ssd_1~ssd_1m、ssd_2~ssd_2n及ssd_3~ssd_3i)以容量对称的形式,将计算节点中的第二非易失性存储介质池化为与节点数量匹配的至少一个逻辑非易失性存储介质,从而形成如图3所分布式缓存层20中所通过池化所形成的ssd_a、ssd_b及ssd_c,且三个计算节点中的物理层中的ssd均通过跨节点映射的方式池化形成上述ssd_a、ssd_b及ssd_c。因此,通过上述技术方案,既实现了将ssd作为一种高速存储设备与主机(host)或者用户(user)进行高速数据传输或者对数据报文的广播与或者单播,又能够在部分ssd或者计算节点失效或者崩溃的情况时,保证数据访问、读操作、写操作、迁移操作等io请求的高稳定性及高可用性,又能减少ssd的部署数量,从而有效地降低了该分布式高效云盘系统的组建成本与用户使用成本,具有良好的用户体验。在本实施方式中,该定制化客户端30包括:访问接口301、块存储模块302及对象存储模块303。其中,该访问接口301被配置为rbd接口311、iscsitarget接口321、fctarget接口331或者iser接口341中的至少一种接口。优选的,该访问接口301同时配置上述四种接口。块存储模块302,用于将文件io转换为块io,以根据数据分片(chunk)的大小实现块io的切分与合并,并完成块io的本地缓存、缓存数据回写、复制、缓存gc及设备管理。结合图6所示,rbd接口311是ceph存储原生支持的访问接口,iscsitarget接口321、fctarget接口331或者iser接口341则是通过块存储模块302与开源target软件(例如:tgt、lio)进行集成,以向外提供标准的块设备接入方式。在本实施例中,范例性示出了块存储模块302与lio集成,以在如图3所示出的分布式缓存层20与ceph存储集群10之间提供访问途径的范例。如图6所示,在linuxkernel中配置有iscsitarget接口321及lio。lio是一款开源的iscsitarget软件,对外提供标准的块接口。早期的lio以内核模块的形式存在于linux系统的kernel中,并支持block、file等多种后端,以支持各种新兴存储后端。lio添加了一个用户态守护进程“tcmu-runner”及一个内核态模块tcm-user。该用户守护进程与内核态的tcm-user交互,完成scsi元语翻译。tcmu-runner具有良好的扩展性,用户(user)只要编写用户态的插件就能实现iscsitagert功能,当前已支持qcow2,vmdk,vdi,rbd*,glfs*等。本实施方式中,为实现该分布式高效云盘系统中iscsitarget接口321,以满足tcmu-runner规范的插件将块存储模块302集成到tcmu-runner中,并实现了大部分scsi元语翻译功能。在本实施方式中,该块存储模块302包括元数据管理模块312、读写缓存模块322、qos模块332、io模式智能识别模块342及设备管理模块352。其中,块存储模块302配置回写策略,并根据回写策略周期性地将缓存数据写入ceph存储集群10。以下对该定制化客户端30中的各个模块及其原理作简要阐述。具体的,该回写策略具体为:为块设备分配相当于块设备大小的1/100~1/20的磁盘空间作为缓存空间,并根据设定的最大脏数据量、临界脏数据量及数据超时时间,确定是否执行回写操作。临界脏数据量的设定值为缓存空间的10%,最大脏数据量的设定值不小于临界脏数据量的设定值,数据超时时间的设定值为1~60秒。在本实施方式中,回写策略的设定在该分布式高效云盘系统内部实现还与块设备大小有关。具体而言,默认基于块设备大小的1/20为块设备分配5g~200g的缓存空间,并默认定义了下面三个指标来控制回写操作。指标一:max_dirty(最大脏数据量)达到80%的缓存空间大小时,缓存中允许的脏数据最大值,用来控制回写。指标二:target_drity(临界脏数据量)达到50%的缓存空间大小时,开始执行回写的脏数据阀值大小。指标三:dirty_age=1~60(单位:秒)数据超时时间,脏数据的在缓存空间中所允许的最大驻留时间。通过设置dirty_age,以有效地防止脏数据达到回写要求而长时间驻留缓存中。dirty_age的默认设置为1秒。从用户对数据访问的空间局部性及数据局部性设置上述三个指标,从而提高了该分布式高效云盘系统对数据的吞吐速度,防止出现数据内存溢出。qos模块332,用于提供丰富的qos能力。既能支持基于容量的、也支持自定义的tps、ops及burstio。块存储模块302收到的io请求首先会经过qos模块332。如果io请求超过了qos模块332所设置的qos限制,qos模块332会阻塞该请求直到满足qos要求。qos模块332是块存储模块302中的一个子模块,其主要用于实现tps、ops及burstio的服务质量控制。io智能识别模块(iosmart)342,用于根据收到的io请求(包括写操作请求、读操作请求、删除操作请求、迁移操作请求等io请求),智能地分析io请求模式(例如顺序或者随机),为元数据模块(mcache)312的io请求作合并和/或切分操作提供决策支持。同时,其通过计算io请求平均大小,为块存储模块302的数据分片(chunk)的大小提供参考依据。设备管理模块(devmgr)352,该设备管理模块352与配置服务器保持心跳连接,根据配置的缓存映射信息自动完成缓存设备的注册。同时,周期性的检测缓存映射设备状态,并更新配置仓库中的缓存映射状态,提供故障预警功能。对象存储模块303从块存储模块302接收块io请求,并转化为对象io后发送至位于该分布式高效云盘系统后端作为容量层的ceph存储集群10,同时负责数据链路的重连,以及对该ceph存储集群10状态作更新操作。为便于管理,定制化客户端30以可配置大小的对象(objmeta)为单位逻辑切分每个块设备,每个对象由一个以0开始的id进行标识,切片大小默认设置为4mb。另外,为便于io管理,以可配置大小的数据分片(chunk)为单位切分io请求,每个数据分片(chunk)由对象id及对象内偏移补偿值(offset)共同标识,数据分片的默认大小为8kb。块存储模块302接收到应用io后,首先会将上层的文件io转换为块io,每个块io对应一个objmeta结构,然后以数据分片(chunk)为单位切分所述块io,每个数据分片对应一个iometa。接着,块存储模块302将objmeta及iometa缓存到元数据模块(mcache)312管理的map中,并同时将objmeta、iometa及io数据存储到读写缓存模块(pcache)322管理的缓存文件中。基于可配置的回写策略,块存储模块302周期性的将缓存数据写到后端的ceph存储集群10中。元数据模块(mcache)312是一个基于lru算法的元数据缓存,内部包含两个map,其中一个map形如<id,objmeta>,另一个map按请求偏移补偿值(offset)升序排列形如<offset,iometa>。读写缓存模块(pcache)322用来实现io的本地持久缓存,以文件的方式来管理每个块设备的本地缓存,所述缓存文件格式如图8所示。具体的,缓存文件由三部分组成:第一部分headarea:缓存文件头,包含一个用于描述整个缓存文件布局的filehead结构及分别指示objmetaarea及dataarea使用情况的bitmap。bitmap是一个0/1数组,0表示对应的位置空闲,1表示对应的位置被占用。objmetaarea的bitmap大小,由块设备大小(image_size)及对象大小(obj_order)确定,公式如下:bitmap1=(image_size>>obj_order)>>3。所述dataarea的bitmap大小,由缓存大小(cache_size)及数据分片大小(chunk_order)确定,公式如下:bitmap2=(cache_size>>chunk_order)>>3。假设,图8中位置x(即bitmap中的某个bit)被使用,则对应的objmeta或者iometa对象在缓存文件中的位置可以分别通过如下公式得到:objmeta=roundup_4k(sizeof(headarea)+(x*sizeof(objmeta));iometa=roundup_4k(sizeof(headarea)+sizeof(objmetaarea))+(x*sizeof(iometa))。其中:roundup_4k用于将任意的缓存文件偏移向上,并按4k对齐。第二部分objmetaarea:其为一个预分配大小、连续的objmeta区域,在块存储模块(librbd)中,块设备按照配置的大小(obj_order)逻辑切分,每个分片称为一个对象,每个对象用一个objmeta结构表示,objmeta中包含一个指向iometa链表的指针。具体的,该objmetaarea区域大小可以通过如下公式得到:sizeof(objmeta)*(sizeof(bitmap1)<<3)。第三部分dataarea:其为基于lru算法(leastrecentlyused,最近最少使用)的io缓存区,其大小为配置的缓存大小(cache_size)。每个io包含一个iometa结构及一个可配置大小(chunk_order)的数据分片(chunk),同一个对象(objmeta)的各iometa基于偏移升序组成一个双向链表(参图7所示)。数据分片(chunk)的大小可以通过如下公式执行左移运算得到:(1<<chunk_order)。需要说明的是,在本实施方式中,所述chunk_order通常基于业务进行自适应配置。具体而言,数据库访问通常是小io,chunk_order的规格(或称之为“大小”)设定为8kb,流媒体通常是大io,,chunk_order的规格(或称之为“大小”)设定为4mb。实施例二:本实施例公开了一种分布式高效云盘系统,其基于实施例一所示出的一种分布式高效云盘的实现方法。该分布式高效云盘系统,包括:容量层,其由至少一个第一非易失性存储介质(即图1至图3中所示出的多个sata)所组建的ceph存储集群10。该ceph存储集群10作为低速存储设备,为整个分布式高效云盘系统提供后端海量存储。配置仓库,其为由分布式配置共享软件所创建分布式配置集群,定制化客户端30,用于池化所有节点中的第二非易失性存储介质(即图3中所示出的ssd_1~ssd_1m、ssd_2~ssd_2n及ssd_3~ssd_3i),以作为分布式缓存层20,以及所述分布式缓存层20与配置仓库共同作为高效云盘的缓存层;其中,所述各节点中第二非易失性存储介质(即图3中所示出的ssd_1~ssd_1m、ssd_2~ssd_2n及ssd_3~ssd_3i)以跨节点映射的方式规划出第二非易失性存储介质与分布式缓存层20之间的映射关系。本实施例中的节点被配置为计算节点,当然也可被配置为控制节点。本实施例与实施例一相同的部分请参实施例一所示,在此不再赘述。与实施例一相比,在本实施例中,各个节点中作为高速存储设备的ssd也可被配置为nvdimm。nvdimm一种集成了dram与非易失性内存芯片(优选为在pcb上焊接的封装有flash芯片的闪存颗粒)的内存条规格,能够在完全断电的时候依然保存完整内存数据,具有更好的可靠性与高速访问属性。本实施例所揭示的一种分布式高效云盘系统,既可以实现传统的容量型云盘对海量数据的支持,也能够具有性能型云盘的高速性能,可对关键业务与非关键业务提供良好的数据支持。实施例三:本实施例公开了一种云平台,该云平台包括至少一个如上述实施例二所述的分布式高效云盘系统。在本申请所公开的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1