Ceph分布式存储

目录

数据存储的三大类型

什么是Ceph?

Ceph简介

Ceph优势

Ceph架构

Ceph核心组件

实体组件

虚拟组件

OSD存储引擎

Ceph数据的存储过程

Ceph版本发行生命周期


数据存储的三大类型

块存储

  • 存储设备和客户端主机是一对一的关系,块存储设备只能保障一个主机挂载使用,数据以块为单位进行存储的。
  • 典型代表:硬盘

文件存储

  • 一对多的关系,能被多个主机同时挂载使用,数据以文件的形式存储的,其中文件的元数据和实际数据是分开存储的,并且有目录的层级关系。
  • 典型代表:NFS、CIFS

对象存储

  • 一对多的关系,能被多个主机或应用服务同时通过API接口访问使用,数据以文件的形式存储,一个文件即是一个对象(object),文件元数据和实际数据是存在一起的。文件是扁平化方式存储的,且没有目录的层级关系。
  • 典型代表:MinIO、OSS(阿里云)、S3(AWS亚马逊云)、OBS(华为云)

什么是Ceph?

Ceph简介

  • 是用C++开发的一款开源的分布式存储系统
  • 存储机制:把数据分片成对象,分散存储到多个节点中
  • 特点:具有高可扩展性、高性能、高可靠性,还集块存储、文件存储、对象存储功能于一身

Ceph优势

高扩展性

  • 去中心化,支持使用普通X86服务器,支持上千个存储节点的规模,支持TB到EB级的扩展。

高性能

  • 摒弃了传统的集中式存储元数据寻址的方案,采用 CRUSH 算法,数据分布均衡,并行度高。

高可靠性

  • 没有单点故障,多数据副本,自动管理,自动修复。

功能强大

  • Ceph是个大一统的存储系统,集块存储接口(RBD)、文件存储接口(CephFS)、对象存储接口(RadosGW)于一身,因而适用于不同的应用场景。

Ceph架构

从下往上,可以将Ceph系统分为四个层次

RADOS对象存储系统(统一存储池)

  • 提供存储能力的。ceph中的一切都是以对象形式存储的,RADOS就是负责存储这些对象的,并保证数据的一致性和可靠性。

LibRADOS对象访问接口

  • 提供访问存储接口给客户端使用。支持用户使用c、C++、java、python等编程语言二次开发自定义的访问接口。

Ceph默认提供三个接口

  • RBD块存储接口、RGW对象存储接口、CephFS文件存储接口。

客户端(物理机/虚拟机/容器/应用APP)

  • 通过接口在Ceph进行数据读写的终端。

Ceph核心组件

  • Ceph是一个对象式存储系统,它把每一个待管理的数据流(如文件等数据)切分为一到多个固定大小(默认4兆)的对象数据(Object),并以其为原子单元(原子是构成元素的最小单元)完成数据的读写。

实体组件

OSD(守护进程 ceph-osd)

  • 负责存储数据和管理数据,一般一个磁盘对于一个OSD;还负责响应客户端的读写请求 。
  • 通常至少需要3个OSD来实现冗余和高可用性。

Monitor(守护进程 ceph-mon)

  • 负责保存OSD的元数据,维持Ceph集群状态的各种映射视图Map(用于监控全局状态的),还负责管理客户端的认证和授权。

Manager(守护进程 ceph-mgr)

  • 负责跟踪Ceph集群性能状态和监控指标,暴露接口给监控系统获取监控指标数据。

MDS(守护进程 ceph-mds)

  • 负责保存CephFS文件存储系统的元数据,管理目录接口,仅在使用cephFS文件存储接口功能的时候需要安装

虚拟组件

PG(归置组)

  • 可理解成保存OSD位置的索引,一个PG可以包含多个数据对象(object),一个数据对象只能属于一个PG。
  • 它在数据寻址时类似于数据库中的索引:Ceph 先将每个对象数据通过HASH算法固定映射到一个 PG 中,然后将 PG 通过 CRUSH 算法映射到 OSD。

Pool(资源池/存储池)

  • 可理解成存放PG的namespace命名空间,一个Pool可包含多个PG,同一个Pool里的PG不能同名,不同Pool里的PG可以同名。
  • 存储对象的逻辑分区,它起到 namespace 的作用。每个 Pool 包含一定数量(可配置)的 PG。Pool 可以做故障隔离域,根据不同的用户场景统一进行隔离。

OSD存储引擎

  • 默认使用BlueStore,将数据对象直接存储在块设备上,相较于FileStore(存储在文件系统上的)具有更好的数据读写性能和可靠性

Ceph数据的存储过程

  1. 文件会默认以4M大小进行分片成一个或多个数据对象(object)
  2. 每个数据对象都有一个oid(由文件ID(ino)和分片编号(non)组成),通过对oid使用hash算法得到一个16进制的数值,再除以Pool里的PG总数取余,获取到数据对象的pgid
  3. 通过对pgid使用crush算法获取到PG所映射的OSD的ID,如果是多副本,则会有多个OSD的ID(PG和OSD的映射关系是在创建Pool的时候就确定好了的)
  4. 将数据对象存储到PG所映射的OSD里

Ceph版本发行生命周期

  • Ceph从Nautilus版本(14.2.0)开始,每年都会有一个新的稳定版发行,预计是每年的3月份发布,每年的新版本都会起一个新的名称(例如,“Mimic”)和一个主版本号(例如,13代表Mimic,因为“M”是字母表的第13个字母)。
  • 版本号的格式为 x.y.z,x 表示发布周期(例如,13 代表 Mimic,17 代表 Quincy),y 表示发布版本类型,即                                                                                                                          x.0.z :y等于 0,表示开发版本                                                                                              x.1.z :y等于 1,表示发布候选版本(用于测试集群)                                                            x.2.z :y等于 2,表示稳定/错误修复版本(针对用户)
### 回答1: 在CentOS 7中安装glibc2.29时遇到"make: *** 没有指明目标并且找不到 makefile。 停止"错误的问题,可能是由于缺少相应的依赖库或配置不正确导致的。您可以尝试以下解决方案: 1. 更新系统:使用以下命令更新系统中的所有软件包,以确保您的系统处于最新状态: ``` sudo yum update ``` 2. 检查依赖库:确认是否已安装glibc的相关依赖库,可以使用以下命令检查: ``` rpm -qa | grep glibc-devel ``` 如果没有任何输出或输出为空,则需要安装相关依赖库: ``` sudo yum install glibc-devel ``` 3. 设置LD_LIBRARY_PATH环境变量:确保LD_LIBRARY_PATH环境变量已正确设置,该变量指定了共享库的搜索路径。可以使用以下命令检查: ``` echo $LD_LIBRARY_PATH ``` 如果没有任何输出或输出为空,则需要设置LD_LIBRARY_PATH环境变量。打开/etc/profile文件并添加以下行: ``` export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib ``` 保存文件并执行以下命令以使更改生效: ``` source /etc/profile ``` 4. 清除并重新编译:如果上述解决方法都无效,您可以尝试先清除之前编译的文件并重新编译: ``` make clean make ``` 如果仍然出现相同的错误,请确保您已按照正确的步骤和依赖项安装了glibc2.29,并根据错误提示进一步调查并解决问题。 ### 回答2: 解决CentOS 7安装glibc 2.29报错"make: *** 没有指明目标并且找不到 makefile。 停止。"的问题,可以尝试以下步骤: 1. 首先确认是否已经安装了必要的开发工具和软件包,比如gcc、make、cmake等。可以使用以下命令进行安装: sudo yum install gcc make cmake 2. 接下来,下载并解压glibc 2.29的源代码。可以从glibc官方网站或者其他可信的源获取。解压后进入源代码目录。 3. 在源代码目录中,使用以下命令生成Makefile文件: mkdir build cd build ../configure 这些命令将在build文件夹下生成Makefile文件。 4. 接着,执行以下命令进行编译和安装: make sudo make install 这些命令将编译源代码并安装到系统中。 如果以上步骤执行过程中仍然遇到"make: *** 没有指明目标并且找不到 makefile。 停止。"的错误消息,可以考虑以下方法进行解决: 1. 检查是否有编译依赖项缺失,并安装相关依赖项。可以使用以下命令查找缺失的依赖项: sudo yum provides */make sudo yum provides */gcc 根据结果安装相应的依赖项。 2. 检查是否在正确的目录中执行了命令。确保在源代码的根目录或者生成的build文件夹中执行命令。 3. 检查源代码是否正确,是否完整。重新下载源代码并解压,再次尝试编译和安装。 以上是解决CentOS 7安装glibc 2.29报错"make: *** 没有指明目标并且找不到 makefile。 停止。"的一般步骤和方法,根据具体情况可能会有所不同。建议参考官方文档或相关社区的讨论来获取更详细和具体的解决方案。 ### 回答3: 在CentOS 7中安装glibc2.29时出现"make: *** 没有指明目标并且找不到 makefile。 停止。"这个错误,可能是由于缺少必要的依赖或者编译选项配置错误造成的。 解决这个问题的方法如下: 1. 确保系统已经安装了必要的编译工具,包括gcc、make等。可以使用以下命令安装: ``` sudo yum install gcc make ``` 2. 检查系统是否已经安装了必要的依赖库,包括glibc-devel、glibc-static等。可以使用以下命令进行检查和安装: ``` sudo yum install glibc-devel glibc-static ``` 3. 如果以上步骤都已经完成,那可能是在配置编译选项时出现了错误。可以尝试使用以下命令重新配置并编译安装: ``` ./configure make sudo make install ``` 如果还是无法解决问题,可以尝试在配置时添加一些选项,例如: ``` ./configure --prefix=/usr/local/glibc2.29 ``` 然后重新编译安装。 4. 如果以上方法还是无法解决问题,可以考虑升级或者重新安装CentOS 7操作系统。也可以尝试使用其他方式安装glibc2.29,例如使用源码安装、使用包管理器安装等。 总之,在解决安装glibc2.29报错"make: *** 没有指明目标并且找不到 makefile。 停止。"时,需要确保系统已经安装了必要的依赖和编译工具,并正确配置编译选项。如果问题依然存在,可以考虑其他解决办法或者尝试使用其他方式安装glibc2.29。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值