27
鲲鹏 BoostKit 分布式存储使能套件 技术白皮书 文档版本 06 发布日期 2021-03-23 华为技术有限公司

技术白皮书 - HUAWEI CLOUD...1 方案概述 随着IOT、大数据、移动互联等应用的暴涨,产生的数据也越来越多,整个存储市场总 量也逐年增长,根据IDC的预计到2020年整个存储的市场会超过600亿美金,到2021年

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

  • 鲲鹏 BoostKit 分布式存储使能套件

    技术白皮书

    文档版本 06

    发布日期 2021-03-23

    华为技术有限公司

  • 版权所有 © 华为技术有限公司 2021。 保留一切权利。

    非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。 商标声明

    和其他华为商标均为华为技术有限公司的商标。本文档提及的其他所有商标或注册商标,由各自的所有人拥有。 注意

    您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或默示的声明或保证。

    由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 i

  • 目 录

    1 方案概述......................................................................................................................................1

    2 方案架构......................................................................................................................................2

    3 分布式存储集群架构.................................................................................................................. 33.1 Ceph 存储集群...........................................................................................................................................................................33.1.1 数据的存储.............................................................................................................................................................................. 33.1.2 超大规模集群支持................................................................................................................................................................. 43.2 动态集群管理............................................................................................................................................................................. 53.2.1 对象映射到 OSD.................................................................................................................................................................... 53.2.2 数据重均衡.............................................................................................................................................................................. 63.2.3 数据一致性.............................................................................................................................................................................. 6

    4 方案优势......................................................................................................................................8

    5 方案组网......................................................................................................................................9

    6 方案特性....................................................................................................................................106.1 块存储服务............................................................................................................................................................................... 106.2 文件存储服务...........................................................................................................................................................................106.3 对象存储服务...........................................................................................................................................................................116.4 公共特性................................................................................................................................................................................... 116.4.1 Bcache................................................................................................................................................................................... 116.4.2 Journal................................................................................................................................................................................... 136.4.3 多副本.................................................................................................................................................................................... 136.4.4 Erasure code........................................................................................................................................................................ 14

    7 特性清单....................................................................................................................................16

    8 典型配置....................................................................................................................................18

    9 软件兼容性................................................................................................................................21

    10 使用流程................................................................................................................................. 22

    11 参考资料................................................................................................................................. 23

    A 修订记录................................................................................................................................... 24

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 目 录

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 ii

  • 1 方案概述随着IoT、大数据、移动互联等应用的暴涨,产生的数据也越来越多,整个存储市场总量也逐年增长,根据IDC的预计到2027年,分布式存储会占到整个市场的70%。

    随着分布式存储越来越普及,现在一些对性能要求比较高的应用也开始使用分布式存储了,例如金融系统的数据库。要实现高性能的存储系统,一般都需要配置SSD作为主要存储介质,要将SSD的性能完全发挥出来,对CPU的处理能力要求就越来越高。TaiShan服务器是基于华为自研的鲲鹏系列处理器,华为鲲鹏920处理器提供了最高64核2.6GHz的计算能力,这个能力已经超越了当前业界所有的主流平台。有了华为鲲鹏系列处理器的鲲鹏分布式存储系统,相对于传统硬件平台的分布式存储系统,性能优势非常明显。

    鲲鹏BoostKit分布式存储使能套件(简称鲲鹏BoostKit分布式存储),以鲲鹏硬件平台为底座,依托鲲鹏硬件的自研处理器、网卡、SSD、管理芯片、AI芯片的全方位整体优势,结合开源Ceph分布式存储软件,为客户提供块存储、文件存储、对象存储服务。

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 1 方案概述

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 1

  • 2 方案架构鲲鹏BoostKit分布式存储总体架构主要由硬件平台、操作系统、中间件、分布式存储软件构成,其中分布式存储软件当前只支持开源Ceph。

    鲲鹏BoostKit分布式存储总体架构如图2-1所示。

    图 2-1 鲲鹏 BoostKit 分布式存储架构

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 2 方案架构

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 2

  • 3 分布式存储集群架构3.1 Ceph存储集群

    3.2 动态集群管理

    3.1 Ceph 存储集群Ceph提供了一个可无限伸缩的存储集群,它基于RADOS(A Scalable, ReliableStorage Service for Petabyte-scale Storage Clusters) 。

    Ceph存储集群包含两种类型的守护进程:

    ● Ceph监视器Ceph监视器维护着集群运行图的主副本。一个监视器集群确保了当某个监视器失效时的高可用性。存储集群客户端向Ceph监视器索取集群运行图的最新副本。

    ● Ceph OSD守护进程Ceph OSD守护进程检查自身状态、以及其它OSD的状态,并报告给监视器。

    3.1.1 数据的存储存储集群的客户端和各个Ceph OSD守护进程使用CRUSH算法高效地计算数据位置,而不是依赖于一个中心化的查询表。它的高级功能包括:基于librados的原生存储接口和多种基于librados的服务接口。

    Ceph存储集群从Ceph客户端接收数据(不管是来自Ceph块设备、 Ceph对象存储、Ceph文件系统,还是基于librados的自定义实现)并存储为对象。每个对象是文件系统中的一个文件,它们存储在对象存储设备上。由Ceph OSD守护进程处理存储设备上的读/写操作。

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 3 分布式存储集群架构

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 3

  • Ceph OSD在扁平的命名空间内把所有数据存储为对象(也就是没有目录层次)。对象包含一个标识符、二进制数据、和由名字/值对组成的元数据,元数据语义完全取决于Ceph客户端。

    3.1.2 超大规模集群支持在很多集群架构中,集群成员的主要目的就是让集中式接口知道它能访问哪些节点,然后此中央接口通过一个两级调度为客户端提供服务,在PB到EB级系统中这个调度系统必将成为最大的瓶颈。

    Ceph消除了此瓶颈:其OSD守护进程和客户端都能感知集群,例如Ceph客户端、各OSD守护进程都知道集群内其他的OSD守护进程,这样OSD就能直接和其它OSD守护进程和监视器通讯。另外,Ceph客户端也能直接和OSD守护进程交互。

    Ceph客户端、监视器和OSD守护进程可以相互直接交互,这意味着OSD可以利用本地节点的CPU和内存执行那些有可能拖垮中央服务器的任务。这种设计均衡了计算资源,带来几个好处:

    1. OSD直接服务于客户端:由于任何网络设备都有最大并发连接上限,规模巨大时中央化的系统其物理局限性就暴露了。Ceph允许客户端直接和OSD节点联系,这在消除单故障点的同时,提升了性能和系统总容量。Ceph客户端可按需维护和某OSD的会话,而不是一中央服务器。

    2. OSD成员和状态:Ceph OSD加入集群后会持续报告自己的状态。在底层,OSD状态为up或down,反映它是否在运行、能否提供服务。如果一OSD状态为down且in,表明OSD守护进程可能故障了;如果一OSD守护进程没在运行(例如崩溃了),它就不能亲自向监视器报告自己是down的。Ceph监视器能周期性地pingOSD守护进程,以确保它们在运行,然而它也授权OSD进程去确认邻居OSD是否down了,并更新集群运行图、报告给监视器。这种机制意味着监视器还是轻量级进程。详情见监控OSD和心跳。

    3. 数据清洗:作为维护数据一致性和清洁度的一部分,OSD能清洗归置组内的对象。也就是说,Ceph OSD能比较对象元数据与存储在其他OSD上的副本元数据,以捕捉OSD缺陷或文件系统错误(每天)。OSD也能做深度清洗(每周),即按位比较对象中的数据,以找出轻度清洗时未发现的硬盘坏扇区。关于清洗详细配置见数据清洗。

    4. 复制:和Ceph客户端一样,OSD也用CRUSH算法,但用于计算副本存到哪里(也用于重均衡)。一个典型的写情形是,一客户端用CRUSH算法算出对象应存到哪里,并把对象映射到存储池和归置组,然后查找CRUSH图来确定此归置组的主OSD。

    客户端把对象写入目标归置组的主OSD,然后这个主OSD再用它的CRUSH图副本找出用于放对象副本的第二、第三个OSD,并把数据复制到适当的归置组所对应的第二、第三OSD(要多少副本就有多少OSD),最终,确认数据成功存储后反馈给客户端。

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 3 分布式存储集群架构

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 4

    http://docs.ceph.org.cn/rados/operations/monitoring-osd-pg/#monitoring-osdshttp://docs.ceph.org.cn/rados/configuration/mon-osd-interactionhttp://docs.ceph.org.cn/architecture/#id42

  • 有了做副本的能力,OSD守护进程就可以减轻客户端的复制压力,同时保证了数据的高可靠性和安全性。

    3.2 动态集群管理Ceph的关键设计是自治、自修复、智能的OSD守护进程。下面介绍一下Ceph如何动态实现数据映射、重均衡、数据一致性。

    Ceph存储系统支持“池”概念,它是存储对象的逻辑分区。

    Ceph客户端从监视器获取一张集群运行图,并把对象写入存储池。存储池的size或副本数、CRUSH规则集和归置组数量决定着Ceph如何放置数据。

    3.2.1 对象映射到 OSD每个存储池都有很多归置组,CRUSH动态的把它们映射到OSD 。Ceph客户端要存对象时,CRUSH将把各对象映射到某个归置组。

    把对象映射到归置组在OSD和客户端间创建了一个间接层。由于Ceph集群必须能增大或缩小、并动态地重均衡。如果让客户端“知道”哪个OSD有哪个对象,就会导致客户端和OSD紧耦合;相反,CRUSH算法把对象映射到归置组、然后再把各归置组映射到一或多个OSD,这一间接层可以让Ceph在OSD守护进程和底层设备上线时动态地重均衡。下图描述了CRUSH如何将对象映射到归置组、再把归置组映射到OSD。

    有了集群运行图副本和CRUSH算法,客户端就能精确地计算出到哪个OSD读、写某特定对象。

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 3 分布式存储集群架构

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 5

  • Ceph客户端绑定到某监视器时,会索取最新的集群运行图副本,有了此图,客户端就能知道集群内的所有监视器、OSD和元数据服务器。然而它对对象的位置一无所知。

    对象位置是计算出来的。

    客户端只需输入对象名称和存储池,此事简单:Ceph把数据存在某存储池(如liverpool )中。当客户端想要存命名对象(如john、paul、george、ringo等等)时,它用对象名、一个哈希值、 存储池中的归置组数、存储池名计算归置组。Ceph按下列步骤计算PG ID。

    1. 客户端输入存储池名称和对象名称(如pool="liverpool"和object-id="john")。2. CRUSH拿到对象名称并哈希它。3. CRUSH用PG数(如58)对哈希值取模,这就是归置组ID。4. CRUSH根据存储池名称取得存储池ID(如liverpool = 4 )。5. CRUSH把存储池ID加到PG ID(如 4.58 )之前。

    计算对象位置远快于查询定位, CRUSH算法允许客户端计算对象应该存到哪里,并允许客户端连接主OSD来存储或检索对象。

    3.2.2 数据重均衡当Ceph存储集群新增一个OSD守护进程时,集群运行图就要用新增的OSD更新。回想计算PG ID,这个动作会更改集群运行图,因此也改变了对象位置,因为计算时的输入条件变了。下图描述了重均衡过程(此图仅作简单示例,因为在大型集群里变动幅度小的多),是其中的一些而不是所有PG都从已有OSD(OSD 1和2)迁移到新OSD(OSD 3)。即使在重均衡中,CRUSH都是稳定的,很多归置组仍维持最初的配置,且各OSD都腾出了些空间,所以重均衡完成后新OSD上不会出现负载突增。

    3.2.3 数据一致性作为维护数据一致和清洁的一部分,OSD也能清洗归置组内的对象,也就是说,OSD会比较归置组内位于不同OSD的各对象副本的元数据。清洗(通常每天执行)是为捕获OSD缺陷和文件系统错误。OSD也能执行深度清洗:按位比较对象内的数据,深度清洗(通常每周执行)是为捕捉那些在轻度清洗过程中未能发现的磁盘上的坏扇区。

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 3 分布式存储集群架构

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 6

  • Ceph集群中为了保证数据一致性,可以选择2种方案:多副本和Erasure Code。

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 3 分布式存储集群架构

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 7

  • 4 方案优势鲲鹏BoostKit分布式存储基于鲲鹏硬件平台,端到端打通硬件、操作系统、中间件、分布式存储软件的全堆栈。主要价值如下:

    高性能

    鲲鹏BoostKit分布式存储依靠多核高性能处理器,集成硬件压缩加速引擎:

    ● TaiShan 200服务器(2*华为鲲鹏920 5250处理器)对比业界主流高端双路服务器:业务性能提升20%。

    ● TaiShan 200服务器(2*华为鲲鹏920 3210处理器)在数据压缩应用场景中,对比业界主流双路服务器:性能提升20%。

    ● TaiShan 200服务器(2*华为鲲鹏920 5220处理器)对比业界主流中端双路服务器:业务性能持平。

    ● TaiShan 100服务器(2*华为鲲鹏916 5130处理器)业务性能对比业界主流低端服务器:性能持平。

    开放生态

    鲲鹏BoostKit分布式存储拥有成熟的生态:

    ● 支持开源Ceph分布式存储系统。● 支持Ubuntu、CentOS、openEuler等操作系统。

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 4 方案优势

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 8

  • 5 方案组网图 5-1 鲲鹏 BoostKit 分布式存储组网示意图

    上图中所示bond网口是在单个网口带宽不能满足客户业务时使用,将两个25GE网口组成一个50GE网口。

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 5 方案组网

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 9

  • 6 方案特性6.1 块存储服务

    6.2 文件存储服务

    6.3 对象存储服务

    6.4 公共特性

    6.1 块存储服务Ceph块存储又称为RADOS块设备,Ceph为块设备引入了一个新的RBD协议,即(Ceph Block Device)。RBD为客户端提供了可靠、分布式、高性能的块存储。RBD块呈带状分布在多个Ceph对象之上,而这些对象本身又分布在整个Ceph存储集群中,因此能够保证数据的可靠性以及性能。RBD已经被Linux内核支持,换句话说,RBD驱动程序在过去的几年里已经很好地跟Linux内核集成。几乎所有的Linux操作系统发行版都支持RBD。除了可靠性和性能之外,RBD也支持其他的企业级特性,例如完整和增量式快照,精简的配置,写时复制(copy-on-write)式克隆,以及其他特性。RBD还支持全内存式缓存,这可以大大提高它的性能。

    Ceph RBD镜像可以作为磁盘映射到物理裸机、虚拟机或者其他主机使用。业界领先的开源hypervisor,例如KVM和Xen完全支持RBD,并利用它为自个的客户虚拟机提供RBD特性。

    Ceph块设备完全支持云平台,例如OpenStack等。在OpenStack中,可以通过cinder(块)和glance(image)组件来使用Ceph块设备。这样做可以利用Ceph块存储的copy-on-write特性在很短的时间内创建上千个VM。

    6.2 文件存储服务分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。CephFS使用Ceph集群提供与POSIX兼容的文件系统,允许Linux直接将Ceph存储mount到本地。它可以像NFS或者SAMBA那样,提供共享文件夹,客户端通过挂载目录的方式使用Ceph提供的存储。

    使用CephFS时,需要配置MDS节点。MDS节点类似于元数据的代理缓存服务器,它为Ceph文件系统提供元数据计算、缓存与同步。

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 6 方案特性

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 10

  • 6.3 对象存储服务对象存储不是传统的文件和块形式存储数据的方法,而是一种以对象也就是通常意义的键值形式进行存储。在多台服务器中内置大容量硬盘,并安装上对象存储管理软件Ceph,对外通过接口提供读写访问功能。每个对象需要存储数据、元数据和一个唯一的标识符。对象存储不仅具备块存储的读写高速,还具备文件存储的共享等特性,适合于更新变动较少的场景,如图片存储、视频存储。但是对象存储不能像文件系统的磁盘那样被操作系统直接访问,只能通过API在应用层面被访问。建立在Ceph RADOS层之上的Ceph对象网关(也称为RGW接口)提供了与OpenStack Swift和Amazon S3兼容的接口对象存储接口,包括GET、PUT、DEL和其他扩展。

    RADOS是Ceph存储集群的基础。在Ceph中,所有数据都以对象的形式存储,并且无论什么数据类型,RADOS对象存储都将负责保存这些对象。RADOS层可以确保数据始终保持一致。RADOS要有它自己的用户管理。RADOS网关提供RESTful接口让用户的应用程序将数据存储到Ceph集群中。RADOS网关接口兼容Swift和S3。

    RADOSGW(RGW)使用librgw和librados来实现允许应用程序与Ceph对象存储建立连接,它将API请求转化为librados请求,并且提供S3和Swift兼容的RESTful API接口。

    RGW的内部逻辑处理过程中,HTTP前端接收请求数据并保存在相应的数据结构中。REST API通用处理层从HTTP语义中解析出S3或Swift数据并进行一系列检查。检查通过后,根据不同API操作请求执行不同的处理流程。如需从RADOS集群中获取数据或者往RADOS集群中写入数据,则通过RGW与RADOS接口适配层调用librados接口将请求发送到RADOS集群中获取或写入相应数据。

    要访问Ceph的对象存储系统,其实也可以绕开RADOS网关层,这样更灵活并且速度更快。librados软件库允许用户的应用程序通过C、C++、Java、Python和PHP直接访问Ceph对象存储。Ceph对象存储具备多站点(multisite)的能力,也就是说它能为灾难恢复提供解决方案。通过RADOS或者联合网关可以配置多站点的对象存储。

    从存储角度来看,Ceph对象存储设备执行从对象到块的映射(在客户端的文件系统层中常常执行的任务)。这个动作允许本地实体以最佳方式决定怎样存储一个对象。Ceph的早期版本在一个名为EBOFS的本地存储器上实现一个自定义低级文件系统。这个系统实现一个到底层存储的非标准接口,这个底层存储已针对对象语义和其他特性(例如对磁盘提交的异步通知)调优。目前,B-tree文件系统(BTRFS)可以被用于存储节点,它已经实现了部分必要功能(例如嵌入式完整性)。

    6.4 公共特性

    6.4.1 Bcache

    Bcache 简介

    Bcache是Linux内核块设备层cache,支持将一个或多个速度较快的磁盘设备(如SSD)作为读写速度相对较慢的磁盘设备的cache。Bcache从Linux-3.10开始正式并入内核主线。

    Bcache具有以下特征:

    1. 一个缓存设备可以作为多个设备的缓存,并且可以在设备运行时动态添加和删除缓存。

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 6 方案特性

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 11

  • 2. 可以从非正常状态关机中恢复,只有当缓存写入到后端设备才会确认写完成。3. 正确处理写阻塞和刷缓存。4. 支持writethrough、writeback和writearound等写缓存模式。5. 检测并避开顺序IO(可配置阈值,或关闭该选项)。6. 当检测到SSD延迟超过配置边界值,减少到SSD流量(当一个SSD作为多个磁盘缓

    存时使用)。

    7. 缓存不命中时预读(默认关闭)。8. 高性能的writeback实现:脏数据通过排序后再刷到磁盘中。如果设置了

    writeback_percent值,后台的writeback进程利用PD控制器根据脏数据比例平滑地处理脏数据。

    9. 使用高效率的B+树,硬件设备足够快速的情况下,bcache随机读可以达到1MIOPS。

    10. 可在生产中稳定的使用。

    Bcache 的缓存策略

    Bcache支持三种缓存策略:writeback(回写策略)、writethrough(写通策略)、writearound(旁路策略)。默认使用writethrough,缓存策略可动态修改。

    ● writeback:此策略模式下,则所有的数据将先写入缓存盘,然后等待系统将数据回写到后端数据盘中,此策略默认关闭。

    ● writethrough:此策略模式下,数据同时写入缓存盘和后端数据盘,适用于读多写少的场景,此策略默认打开。

    ● writearound:选择此策略,数据将直接写入后端磁盘。

    常用优化方法

    1. 设置writeback提高写性能。echo writeback > /sys/block/bcache0/bcache/cache_mode

    2. 允许缓存顺序I/O或者顺序I/O阈值。3. 支持缓存顺序IO。

    echo 0 > /sys/block/bcache0/bcache/sequential_cutoff4. 调整顺序IO阈值。

    echo 4M > /sys/block/bcache0/bcache/sequential_cutoff上述设置,当顺序IO缓存量超过该阈值后,相应的IO将直接写到后端数据盘上。

    5. 关闭拥塞控制项。echo 0 > /sys/fs/bcache//congested_read_threshold_usecho 0 > /sys/fs/bcache//congested_write_threshold_uscongested_read_threshold_us 默认为2000us;congested_write_threshold_us默认为20000us;

    更多信息详见bcache主页及手册:

    https://bcache.evilpiepirate.org/

    https://evilpiepirate.org/git/linux-bcache.git/tree/Documentation/bcache.txt

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 6 方案特性

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 12

    https://bcache.evilpiepirate.org/https://evilpiepirate.org/git/linux-bcache.git/tree/Documentation/bcache.txt

  • 6.4.2 JournalCeph的OSD使用日志有两个原因:速度和一致性。

    ● 速度:日志使得OSD可以快速地提交小块数据的写入,Ceph把小片、随机IO依次写入日志,这样,后端文件系统就有可能归并写入动作,并最终提升并发承载力。因此,使用OSD日志能展现出优秀的突发写性能,实际上数据还没有写入OSD,因为文件系统把它们捕捉到了日志。

    ● 一致性:Ceph的OSD守护进程需要一个能保证原子操作的文件系统接口。OSD把一个操作的描述写入日志,然后把操作应用到文件系统,这需要原子更新一个对象(例如归置组元数据)。每隔一段时间,OSD停止写入、把日志同步到文件系统,这样允许OSD修整日志里的操作并重用空间。若失败,OSD从上个同步点开始重放日志。

    6.4.3 多副本Ceph分布式存储采用数据多副本备份机制来保证数据的可靠性,默认保存为3个副本(可修改)。Ceph采用CRUSH算法,在大规模集群下,实现数据的快速、准确存放,同时能够在硬件故障或扩展硬件设备时,做到尽可能小的数据迁移,其原理如下:

    1. 当用户要将数据存储到Ceph集群时,数据先被分割成多个object(每个object一个object id,大小可设置,默认是4MB),object是Ceph存储的最小存储单元。

    2. 由于object的数量很多,为了有效减少了object到OSD的索引表、降低元数据的复杂度,使得写入和读取更加灵活,引入了pg(Placement Group):PG用来管理object,每个object通过Hash,映射到某个pg中,一个pg可以包含多个object。

    3. Pg再通过CRUSH计算,映射到osd中。如果是三副本的,则每个pg都会映射到三个osd,保证了数据的冗余。

    图 6-1 CRUSH 算法资源划分示意图

    CRUSH算法并不是绝对不变的,会受其他因素影响,影响因素主要有:

    1. 当前系统状态(Cluster Map)当系统中的OSD状态、数量发生变化,会引起Cluster Map发生变化,这边变化就会影响PG与OSD的映射关系。

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 6 方案特性

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 13

  • 2. 存储策略配置(存储策略主要与数据安全相关)通过策略可以指定同一个PG的3个OSD分别位于数据中心的不同服务器甚至不同机柜上,从而更加完善存储的可靠性。

    如图6-2所示,对于节点Server1的磁盘Disk1上的数据块P1,它的数据备份为节点Server2的磁盘Disk2上P1',P1和P1'构成了同一个数据块的两个副本。例如,当P1所在的硬盘故障时,P1'可以继续提供存储服务。

    图 6-2 Ceph 分布式存储多副本示意图

    6.4.4 Erasure code纠删码(Erasure Coding,EC)是一种编码容错技术,最早是在通信行业解决部分数据在传输中的损耗问题。其基本原理就是把传输的信号分段,加入一定的校验再让各段间发生相互关联,即使在传输过程中丢失部分信号,接收端仍然能通过算法将完整的信息计算出来。在数据存储中,纠删码将数据分割成片段,把冗余数据块扩展和编码,并将其存储在不同的位置,例如磁盘、存储节点或者其他地理位置。

    从纠删码基本的形态看,它是k个数据块+m个校验块的结构,其中k和m值可以按照一定的规则设定,可以用公式:n=k+m来表示。变量k代表原始数据或符号的值。变量m代表故障后添加的提供保护的额外或冗余符号的值。变量n代表纠删码过程后创建的符号的总值。当小于或等于m个存储块(数据块或校验块)损坏的情况下,整体数据块可以通过计算剩余存储块上的数据得到,整体数据不会丢失。

    下面以k=3,m=2为例,介绍一下如何以纠删码的形式将一个名称为NYAN的对象存放在Ceph中,假定该对象的内容为ABCDEFGHI。客户端在将NYAN上传到Ceph以后,会在主OSD中调用相应的纠删码算法对数据进行编码计算:将原来的ABCDEFGHI拆分成三个分片,之后再计算出另外两个校验条带分片(内容为YXY QGC)。按照crushmap所指定的规则,将这5个分片随机分布在5个不同的OSD上面,完成对这个对象的存储操作,如图6-3所示。

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 6 方案特性

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 14

  • 图 6-3 以纠删码的形式将一个名称为 NYAN 的对象存放在 Ceph 示例

    下面再看一下如何使用纠删码读取数据,同样还是以NYAN为例。客户端在发起读取NYAN请求以后,这个对象所在PG的主OSD会向其他关联的OSD发起读取请求,比如主OSD是图中的OSD1,当请求发送到了其他4个OSD,此时刚好OSD4出现故障无法回应请求,导致最终只能获取到OSD1(GHI)、OSD3(YXY)和OSD5(ABC)的条带分片,OSD2虽然也收到请求并发送数据,但OSD2是最慢被接收的,此时OSD1作为主OSD会对OSD1、OSD3和OSD5的数据分片做纠删码解码操作,OSD2上面的分片内容会被忽略,之后重新组合出新的NYAN内容(ABCDEFGHI),最终将该结果返回给客户端。

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 6 方案特性

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 15

  • 7 特性清单特性 子特性 特性描述 约束

    Zlib数据压缩

    OSD数据压缩

    块存储服务业务下,数据在OSD引擎中进行压缩/解压。压缩解压的过程使用鲲鹏920处理器zlib硬件压缩引擎进行加速。

    数据压缩硬件引擎不支持zlib的deflate模式,需要修改为带zlib头的数据压缩模式。

    文件存储服务业务下,数据在OSD引擎中进行压缩/解压。压缩解压的过程使用鲲鹏920处理器zlib硬件压缩引擎进行加速。

    数据压缩硬件引擎不支持zlib的deflate模式,需要修改为带zlib头的数据压缩模式。

    RGW数据压缩

    对象存储服务业务下,数据在OSD引擎中进行压缩/解压。压缩解压的过程使用鲲鹏920处理器zlib硬件压缩引擎进行加速。

    数据压缩硬件引擎不支持zlib的deflate模式,需要修改为带zlib头的数据压缩模式。

    混合部署 x86服务器与TaiShan服务器混合部署

    块/对象/文件存储服务业务下,x86服务器与TaiShan服务器共存储池混合部署。

    使用相同的Ceph软件版本和相同的OS软件版本。

    块/对象/文件存储服务业务下,在x86服务器集群中,使用TaiShan服务器进行扩容。

    使用相同的Ceph软件版本和相同的OS软件版本。

    Bcache Bcache 块/对象/文件存储服务业务下,使用NVMe SSD作为HDD的缓存,提升系统性能。

    OS pagesize需要从64K修改为4K。

    MD5 MD5硬件加速

    对象存储服务业务下,使用鲲鹏920处理器MD5加速引擎,计算MD5校验,提升对象存储服务写带宽性能。

    当前支持通过OpenSSL 1.0.2k版本接口进行使用。

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 7 特性清单

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 16

    https://support.huaweicloud.com/tngg-kunpengsdss/kunpengcephblock_05_0009.htmlhttps://support.huaweicloud.com/tngg-kunpengsdss/kunpengcephblock_05_0009.htmlhttps://support.huaweicloud.com/capexg-kunpengsdss/kunpengsdss_07_0001.htmlhttps://support.huaweicloud.com/usermanual-kunpengsdss/kunpengsdss_06_0001.htmlhttps://support.huaweicloud.com/tngg-kunpengsdss/kunpengcephobject_05_0018.html

  • 特性 子特性 特性描述 约束

    IO直通 IO直通特性 在均衡型配置场景,及7:3读写混合场景下,使用IO直通特性可提升存储性能。

    当配置Bcache时,IO直通对性能提升无效。

    Ubuntu商业版本Ceph认证

    TaiShan 200服务器(型号2280)基于Ubuntu商业版本Ceph认证

    完成TaiShan 200服务器(型号2280)基于Ubuntu商业版本Ceph认证。

    -

    TaiShan 200服务器(型号5280)基于Ubuntu商业版本Ceph认证

    完成TaiShan 200服务器(型号5280)基于Ubuntu商业版本Ceph认证。

    -

    存算分离 大数据存算分离

    大数据+Ceph实现存储计算分离,性能持平的前提下可降低存储成本,存储分离下Spark性能与三副本持平。

    适用Hadoop 3.1.1和Ceph 14.2。其他Hadoop 2.X/3.X及Ceph 14.X版本技术上支持,请根据需求适配。

    KPS Zip压缩 块存储服务数据压缩

    KPS Zip压缩方案相对于开源LZ4压缩方案压缩率高25%,每TB有效容量成本低25%。

    对图片、视频等不可压缩的数据源无效。

    均衡型配置下,KPS Zip压缩方案相对于开源LZ4压缩方案带宽性能高10%。

    对象存储服务数据压缩

    KPS Zip压缩方案相对于开源LZ4压缩方案压缩率高25%,每TB有效容量成本低25%。

    均衡型配置下,KPS Zip压缩方案相对于开源LZ4压缩方案带宽性能高10%。

    智能预取 块存储服务读场景性能加速

    根据业务Workload特征,提前将数据预读到Cache中,提高读Cache命中率,进而提高读场景IOPS性能。顺序读场景,512K以下IO,IOPS性能提升20%。

    ● 使用4.14内核版本的Bcache。

    ● 使用块存储服务。

    ● 业务workload为顺序读场景。

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 7 特性清单

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 17

    https://support.huaweicloud.com/usermanual-kunpengsdss/kunpengsdss_06_0004.htmlhttps://support.huaweicloud.com/dpmg-other-kunpengbds/kunpengbds_04_0031.htmlhttps://support.huaweicloud.com/fg-kunpengsdss/kunpengsdss_20_0001.htmlhttps://support.huaweicloud.com/usermanual-kunpengsdss/kunpengsdss_06_0005.html

  • 8 典型配置全闪存典型配置:

    项目 硬件型号

    服务器 TaiShan 200服务器(型号 2280)

    CPU 2*华为鲲鹏920 5250处理器

    内存 16*16GB DDR4-2933MHz

    网络 板载网卡2*GE,Hi1822网卡4*25GE

    RAID卡 LSI 3508

    OS盘 2*480GB SATA SSD

    数据盘 12*3.2TB NVMe SSD

    均衡型典型配置一:

    项目 硬件型号

    服务器 TaiShan 200服务器(型号 2280)

    CPU 2*华为鲲鹏920 3210处理器

    内存 12*16GB DDR4-2933MHz

    网络 板载网卡2*GE,Hi1822网卡4*25GE

    RAID卡 LSI 3508

    OS盘 2*480GB SATA SSD

    加速SSD 1*3.2TB NVMe SSD

    数据盘 12*8TB HDD

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 8 典型配置

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 18

  • 均衡型典型配置二:

    项目 硬件型号

    服务器 TaiShan 200服务器(型号 5280)

    CPU 2*华为鲲鹏920 5230处理器

    内存 12*16GB DDR4-2933MHz

    网络 板载网卡2*GE,Hi1822网卡4*25GE

    RAID卡 LSI 3508

    OS盘 2*480GB SATA SSD

    加速SSD 2*3.2TB NVMe SSD

    数据盘 36*8TB HDD

    均衡型典型配置三:

    项目 硬件型号

    服务器 TaiShan 200服务器(型号 5290)

    CPU 2*华为鲲鹏920 5230处理器

    内存 16*6GB DDR4-2933MHz

    网络 板载网卡2*GE,2*Hi1822网卡4*25GE

    RAID卡 LSI 3508

    OS盘 2*480GB SATA SSD

    加速SSD 2*3.2TB NVMe SSD

    数据盘 72*8TB HDD

    冷存储典型配置一:

    项目 硬件型号

    服务器 TaiShan 200服务器(型号 5280)

    CPU 2*华为鲲鹏920 5230处理器

    内存 8*16GB DDR4-2933MHz

    网络 板载网卡2*GE,Hi1822网卡4*25GE

    RAID卡 LSI 3508

    OS盘 2*480GB SATA SSD

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 8 典型配置

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 19

  • 项目 硬件型号

    数据盘 36*8TB HDD

    冷存储典型配置二:

    项目 硬件型号

    服务器 TaiShan 200服务器(型号 5290)

    CPU 2*华为鲲鹏920 5230处理器

    内存 12*16GB DDR4-2933MHz

    网络 板载网卡2*GE,2*Hi1822网卡4*25GE

    RAID卡 LSI 3508

    OS盘 2*480GB SATA SSD

    数据盘 72*8TB HDD

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 8 典型配置

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 20

  • 9 软件兼容性鲲鹏BoostKit分布式存储已兼容的软件清单请通过兼容性查询工具进行查询。

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 9 软件兼容性

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 21

    http://ic-openlabs.huawei.com/openlab/#/unioncompaty

  • 10 使用流程使用流程如图10-1所示。

    图 10-1 使用流程

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 10 使用流程

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 22

  • 11 参考资料“3 分布式存储集群架构”章节部分内容引用了Ceph官方网站中的部分文档。

    Ceph官网文档页面:https://ceph.readthedocs.io/en/latest/

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 11 参考资料

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 23

    https://ceph.readthedocs.io/en/latest/

  • A 修订记录发布日期 修改说明

    2021-03-23 第六次正式发布。鲲鹏分布式存储解决方案更名为鲲鹏BoostKit分布式存储使能套件,简称鲲鹏BoostKit分布式存储。

    2021-01-19 第五次正式发布。修改“7 特性清单”中KPS Zip特性相关数据。

    2021-01-07 第四次正式发布。“7 特性清单”中新增特性:KPS Zip压缩和智能预取。

    2020-10-24 第三次正式发布。● “7 特性清单”中新增特性:IO直通、Ubuntu商业版本

    Ceph认证和存算分离。● “8 典型配置”中修改网络参数。

    2020-06-29 第二次正式发布。“7 特性清单”中新增特“MD5”。

    2020-06-10 第一次正式发布。

    鲲鹏 BoostKit 分布式存储使能套件技术白皮书 A 修订记录

    文档版本 06 (2021-03-23) 版权所有 © 华为技术有限公司 24

    目 录1 方案概述2 方案架构3 分布式存储集群架构3.1 Ceph存储集群3.1.1 数据的存储3.1.2 超大规模集群支持

    3.2 动态集群管理3.2.1 对象映射到OSD3.2.2 数据重均衡3.2.3 数据一致性

    4 方案优势5 方案组网6 方案特性6.1 块存储服务6.2 文件存储服务6.3 对象存储服务6.4 公共特性6.4.1 Bcache6.4.2 Journal6.4.3 多副本6.4.4 Erasure code

    7 特性清单8 典型配置9 软件兼容性10 使用流程11 参考资料A 修订记录