【Ceph浅析笔记】Ceph是什么.md

Ceph是什么

什么是Ceph?首先我们应该明确,Ceph是一种分布式存储系统,所谓分布式,指的是Ceph可以部署在多台服务器上,通过多台服务器并行处理来对外提供高性能的读写块。

同时Ceph除了能提供块存储,还可以提供文件存储、对象存储。

Ceph的优势

实际上Ceph不是一个才出现的开源项目,而是走过了 7年的路程,那么Ceph有什么样的优势呢?

  • Ceph的优势在于它的设计思想:无需查表,算算就好。也就是说它可以充分利用服务器的计算能力,消除了对单一中心节点的依赖,可以实现真正的无中心结构

    这样Ceph的可靠性和可扩展性都很强,而且客户端访问延迟也比较少。

  • Ceph在OpenStack开源社区中备受重视。

    OpenStack是现在最为流行的开源云操作系统,目前Ceph已经成为OpenStack中呼声最高的开源存储方案之一。

Ceph的产生和发展

一般来说开源项目的来源主要有两个,一个是从学校里面的一些课题,一个是企业里面的大牛对产品进行开源。Ceph就是典型的学院派,它起源于Sage Weil博士期间的课题,使用C++开发。

2011年Sage创建了Inktank公司以主导Ceph的开发和社区维护。

Ceph的设计思想

Ceph的应用场景

要理解Ceph的设计思想,我们首先应该研究这个东西的应用场景,因为它的应用场景关系到它为什么这么设计。

Ceph最初的目标场景是大规模、分布式存储系统,Ceph起源于04年,那个时候CPU还是单核,硬盘容量只有几十GB,所以当时的想法是至少能承载PB级别的数据。

而Ceph与传统的存储不太一样的地方在于,它的眼光是动态的

  • 首先是存储规模是会变的。也就是可以根据业务的规模扩展存储的容量。
  • 存储的设备会变。我们使用的不是高可靠性的小机,而是可能发生故障的x86服务器,所以极有可能某个节点发生故障,那么需要在软件层面进行保障。
  • 存储数据也会变。也就是,需要考虑到存储的数据可能被增删读写,而不是一层不变的。

这就是Ceph的目标场景,它希望能应对存储容量会变,同时可以对数据进行快速的增删读写的场景,而且底层的硬件主要使用廉价的X86服务器,使用上层软件来保证可靠性。

针对这种场景,Ceph应具有

  • 高可靠性:

    首先存储在里面的数据不会丢失,同时数据在写入的时候,需要保证原子性。

  • 另外因为数据会经常迁移,而且故障了以后会有恢复的过程,我们希望Ceph能自动完成这些工作,而不需要人为参与。
  • 高扩展性,就是希望节点数增加了,数据的访问带宽也线性增加,不能是节点增加了很多,性能增加不明显

Ceph的设计思路

那么Ceph要怎么样实现高可靠、高扩展,还要同时保证自动化呢?

之前已经概括过,Ceph的主要思路是

  • 充分发生节点的计算能力

    也就是用来代替,这就有对象存储的思想了。

  • 去中心化。

    我们知道分布式架构一般可以分为有中心的非对称架构和无中心对称架构两种。

    非对称架构有Master和Slave之分,Master一般存放了数据块与实际节点的映射关系,所以客户端会先向Master查找数据块存放的位置, 然后再访问Slave。

    这样的好处是简单,缺点是Master节点会出现单点故障,而且也会成为性能瓶颈。

    而对称节点中每个节点的地位相同,都保存了全局的映射关系,所以它们会花大量的功夫来进行映射关系的同步,不利于扩展。Ceph则使用了更创新的方法来解决这个问题。下面我们来看看它使用了什么方法?

对于一个分布式系统,它最关键的要解决两个问题:

  • “写的问题”,也就是把数据写到什么地方。

    写的方法合不合理,要看最终的数据分布是否均匀,这又会进一步影响到节点的访问速度等

  • “读的问题”,应该从哪里去读。

    因为读的概率远大于写,所以能否高效准确的找到之前存放的数据在哪里,也是存储的系统应该考虑的非常重要的问题。

之前我们说过对于对称结构的分布式系统,它会引入专门的节点, 在里面存放数据块与节点映射关系,客户端需要先从这个节点上获取实际的位置再进行后续的操作。

而Ceph的创新在于,不再使用查表的寻址方式,而是使用计算的方式。也就是一个客户端只需要使用少量的本地元数据,就可以计算出存储位置。这就是Ceph最关键的地方。

原文地址:https://www.cnblogs.com/dy2903/p/8504583.html

时间: 2024-07-31 09:48:07

【Ceph浅析笔记】Ceph是什么.md的相关文章

【Ceph浅析笔记】Ceph的工作原理

本章主要对Ceph的工作原理进行介绍. 寻址过程 如果Client来了一个请求,不管个请求是读还是写都需要先寻址,才能找到数据应该放哪里或者说需要从哪里去. 之前我们说过Ceph的寻址方式是基于计算的,这样就避免的查表,也避免了使用一个单独的元数据服务器. 概述 对于Client传来的一个File,为了方便处理,我们可以将其分割为若干大小相同的小块Object. 然后可以将这些Object映射到OSD上,如果使用一种固定的映射算法,则一个Object每次都会固定的映射到一组OSD上,那么如果这个

ceph学习笔记之二RADOS

Ceph学习笔记之二RADOS 一.RADOS架构 在RADOS架构中主要包含2个部分组件: 1.MON(Monitor) 由少量的Monitor节点构成的强耦合,小规模集群:负责管理Cluster Map. 2.OSD(Object Storage Device) 由数量可变的 大规模磁盘设备组成的集群,负责存储所有Object数据. 二.Monitor详解 在前面已经简单对其MON进行描述,在这个地方我们再次对MON进行详细解读.正如其名Monitor是负责监视整个集群运行状态的,这些信息都

使用docker 模式 用ceph/daemon部署 ceph

获取ceph image docker pull  ceph/daemon 准备硬盘 mkfs.xfs /dev/vdb1 mkdir -p /opt/ceph/osd/vdb mount -o defaults,noatime,nodiratime,noexec,nodev,nobarrier  /dev/vdb1 /opt/ceph/osd/vdb 部署mon docker run -d     --name mon0     -e MON_NAME=mon0     -e MON_IP=1

ceph存储之ceph客户端

CEPH客户端: 大多数Ceph用户不会直接往Ceph存储集群里存储对象,他们通常会选择Ceph块设备.Ceph文件系统.Ceph对象存储之中的一个或多个: 块设备: 要实践本手册,你必须先完成存储集群入门 ,并确保 Ceph 存储集群处于 active + clean 状态,这样才能使用 Ceph 块设备. 1.在ceph-client安装ceph,在管理节点上,通过ceph-deploy把Ceph安装到ceph-client节点: ceph-deploy  install ceph-clie

二十八. Ceph概述 部署Ceph集群 Ceph块存储

client:192.168.4.10 node1 :192.168.4.11 ndoe2 :192.168.4.12 node3 :192.168.4.13 1.实验环境 准备四台KVM虚拟机,其三台作为存储集群节点,一台安装为客户端,实现如下功能: 创建1台客户端虚拟机 创建3台存储集群虚拟机 配置主机名.IP地址.YUM源 修改所有主机的主机名 配置无密码SSH连接 配置NTP时间同步 创建虚拟机磁盘 1.1 五台机器(包括真机)配置yum源 1.1.1 全部搭建ftp服务 1.1.2 配

ceph学习笔记之七 数据平衡

数据平衡 当在集群中新增一个OSD设备时,整个集群将会发生数据迁移使数据重新分布达到均衡.在Ceph集群中数据迁移的的基本单位是PG.其实在迁移过程中是将PG中的所有对象作为一个整体来进行迁移. 数据迁移触发流程: 1.当新加入一个OSD时,会改变系统的CRUSH Map,从而引起对象映射过程中的变化: 2.PG到OSD的映射关系发生了变化,从而引发数据的迁移. 当ceph集群中出现组件故障时(通常是指OSD,当然也有可能是网络),ceph会将OSD标记为Down,如果在300秒内MON没有收到

ceph学习笔记之九 层级化的Cluster Map

集群映射由Device和桶(Buckets)组成,设备和桶都有ID描述和权重.Bucket可以包含任意设备或者其他的bucket,使他们形成内部节点的存储层次结构,设备总是在叶子节点.存储设备的权重由管理员设置以控制设备负责存储的相对数据量.尽管大型系统的设备含不同的容量大小和性能特点,随机数据分布算法可以根据设备的利用率和负载来分布数据.这样设备的平均负载与存储的数据量成正比.这导致一维位置指标.权重.应来源于设备的能力.桶的权重是它所包含的元素的权重的总和.Device(OSD)的权重值越高

ceph学习笔记之五 Pool与映射过程

Pool Pool是一个抽象的存储池,它规定了数据冗余的类型以及对应的副本分布策略.目前实现了两种Pool类型: Replicated类型和Erasure Code类型.一个Pool由多个PG构成. 对象映射过程 对象映射过程指的是查找对象在集群中分布的位置信息,其过程分为两步: A.对象到PG的映射.这个过程是静态HASH映射(加入PG Split后实际变成了动态HASH映射方式),通过Object_id计算出HASH值, 用该Pool的PG的总数量PG_Num对HASH值取模,就可以获得该对

ceph学习笔记之四PG

PG PG(Placement Group)单从名字上可理解为一个放置策略组,它是对象的集合,集合里的所有对象具有相同的放置策略:对象的副本都分布在相同的OSD列表上.一个对象只能属于一个PG,一个PG对应于放置在其上的OSD列表.一个OSD上可以分布多个PG.   PG是一组对象的逻辑集合,也可将PG看成一个逻辑容器,容器里面包含多个对象. 图中PG1.PG2同处于一个Pool,所以是副本类型,并且是两副本. PG1.PG2里包含许多对象,PG1上的所有对象,主从副本分布在OSD1和OSD2上