每天5分钟复习OpenStack(十)Ceph 架构

news2024/11/16 23:44:24

1、Ceph是什么?

“Ceph is a unified, distributed storage system designed for excellent performance, reliability and scalability.”这句话说出了Ceph的特性,它是可靠的可扩展的统一的分布式的存储系统。Ceph可以同时提供对象存储RADOSGW(Reliable、Autonomic、Distributed、Object Storage Gateway)、块存储RBD(Rados Block Device)、文件系统存储Ceph FS(Ceph Filesystem)3种功能。

  • 可靠性,因为它使用数据冗余和容错机制来保护数据的完整性和可靠性。它将数据分散存储在多个存储节点上,通过数据复制和数据恢复技术来避免数据丢失。即使一个存储节点发生故障,数据仍然可以通过其他节点进行访问和恢复。(ceph 是支持多种冗余级别的最小称为盘级别冗余)

  • 可扩展性,因为它使用了分布式存储架构。它可以通过增加存储节点,来扩展存储容量和性能。每个节点都可以平行处理和存储数据,因此可以线性地增加整个系统的存储容量和吞吐量。这种可扩展性使得Ceph非常适合处理大规模数据存储和处理需求。

  • 统一性:因为它提供了多种存储功能,包括对象存储块存储文件系统存储。这些不同类型的存储可以在同一个Ceph集群中同时存在,并且可以根据不同的应用需求进行灵活部署和管理。这种统一性简化了存储架构和管理,并且提供了更好的灵活性和应用兼容性。

  • 分布式:因为它将数据分散存储在多个节点上,并且通过网络连接实现节点之间的通信和数据传输。每个节点都可以独立处理和存储数据,没有单点故障,并且可以进行横向扩展。分布式架构提供了高可用性、高性能和灵活性,并且使得Ceph能够适应各种应用场景和规模

2、三种存储类型

  • 文件存储: 文件存储是一种以文件为单位进行数据存储的方式。在文件存储中,数据以文件的形式存储在文件系统中,可以通过文件名或路径来进行访问和管理。文件存储适用于存储相对较小的文件,并提供了对文件的完整控制和管理,例如读取、写入、修改和删除文件。常见的文件存储如NFS。其最常见的用途就是可以多用户同时挂载后,同时进行读写操作。

为什么我们需要文件存储,有块存储不就够了吗?

在回答这个问题之前,让我们先讨论一下数据库。在数据库等系统中,无论是主从还是多主架构,都面临着数据不一致的问题。主从架构下,备库的数据会延迟于主库,而多主从架构下,如果数据是分布式存放的,则请求只能发送到相应的节点,如果是非分布式存放的,则会有多份数据,导致集群的整体利用率不高。

试想一下,如果我们能将数据只存放一份,其在本质上就解决了在不同节点上数据不一致的问题,我们可以采用类似NFS的架构,将一个目录映射到多个数据库节点上,而多个数据库实例实际上请求的都是同一份数据原文件。此时利用的就是文件存储能支持多用户同时挂载和读写。

块存储是否就不支持多用户同时读写了?

块存储也支持多用户同时读写,但是需要通过适当的权限控制和管理来确保数据的一致性和安全性,也就是说需要自行解决数据一致性问题。

  • 块存储块存储是一种以块(通常是固定大小的数据块)为单位进行数据存储的方式。在块存储中,数据以块的形式存储在独立的存储设备上,每个块都有唯一的标识符。块存储将数据划分为相对较小且固定大小的块,这些块可以根据需要进行读取、写入和修改。块存储适用于需要随机读写访问的应用,如数据库、虚拟机和操作系统。块存储可以理解为一个磁盘或分区,在linux 系统中此类设备被映射为一个 块类型的文件。如下图中的类型为b(block)

ll /dev/sda
brw-rw---- 1 root disk 8, 0 Nov 13 17:53 /dev/sda

而对块设备如果用mkfs.xfs 或 mkfs.ext4 等命令执行文件系统初始化后就是一个文件系统设备。

  • 对象存储 对象存储以对象形式存储数据,每个对象都有唯一的标识符。对象通常包含数据本身以及与其相关的元数据。云存储服务如Amazon S3和OpenStack Swift就是典型的对象存储系统。当你上传照片到云相册或者将文件存储到云端时,这些数据都会以对象的形式存储。每个对象都有一个唯一的标识符,比如URL或者API密钥。

ceph自身是一个对象存储,其能提供对象存储我们能理解,为什么其还能提供块存储和文件存储了?

通用的 RADOS 存储结构和可靠的分布式存储技术。通过统一接口可以更好地处理各种数据类型,以及整合其他存储服务的优势,从而提供块存储和对象存储和文件存储三种存储功能。

3 、 Ceph的逻辑分层

Ceph 官方给的逻辑架构如下图

可以总结为两部分,一个集群一个客户端。 集群就是底层的RADOS集群。客户端就是在RADOS集群之上,利用librados 编程接口的进一步抽象。其本质都是RADOS集群的客户端。

3.1、客户端

如果说RADOS集群是一个具备自我修复等特性,提供了一个可靠、自动、智能的分布式存储,那用户怎么使用他了?因此RADOS提供了供librados库,允许应用程序直接访问,支持C/C++、Java和Python等语言。那是否有一个librados库就可以被用户直接访问到了,理论上只需要调用其库就可以使用DADOS集群。但是又有多少人有能力直接用编程能力去访问RADOS集群了。

因此在librados库基础上做了进一步的封装,针对主流的块存储使用提供了 RBD,针对文件存储使用提供Ceph FS ,基于当前流行的RESTful协议的网关,并且兼容S3和Swift,提供了radosgw 。因为无论是librados、rdb radosgw Ceph fs 都是RADOS的客户端。

3.2 、RADOS集群

一个最小化的RADOS集群只有三个组件 MON 和MGR 和 OSD ,其系统架构如下

看到这可能有小伙伴会说 不对把,不是应该还有mds吗?先说mds,其主要功能就给文件存储提供元数据索引的,如果我们Ceph集群不需要文件存储,就不需要mds组件了。

3.3 RADOS集群组件

  • mon: Ceph Monitor是负责监视整个群集的运行状况的,这些信息都是由维护集群成员的守护程序来提供的,如各个节点之间的状态、集群配置信息。Ceph monitor map包括OSD Map、PG Map、MDS Map和CRUSH等,这些Map被统称为集群Map。这五张map可以说代表了mon的大部分功能。

  • MGR:Ceph ManagerMGR 承载了许多辅助功能,如监控、报告和资源分配。现在,Ceph Manager Daemon 更多地实现了监视、管理及一些自动化任务,包括维护集群元数据、系统故障检测等。它可以实现跨多个 Ceph 组件的自动容灾和调度,提高整个系统的稳定性和可靠性。

  • OSD: OSD是Ceph的对象存储守护进程。它负责存储数据,处理数据复制、恢复、重新平衡,并通过检查其他守护进程是否有故障来向Ceph Monitor提供一些监控信息。每个存储服务器(存储节点)运行一个或多个OSD守护进程,通常每个磁盘存储设备对应一个OSD守护进程

总结: 一个集群需要被访问,总需是先需要一个认证功能,认证之后将用户的请求调度到后端真正的服务,这个过程就是mon的功能,因为其是分布式的存储,其靠Paxos算法来保证数据一致性。为了集群的稳定,mon维护了集群的map。 mgr则更多是提供监控和辅助功能来减轻mon的负担,osd则是数据真正的存放位置。

在上文中我们说过Ceph集群是无中心节点的分布式存储,那其是怎么做到了?

一切的一切都是靠计算,简单的说就是真正的数据存储在那个osd上,其是靠计算出来,而非查询元数据节点查询出来的。这个计算的过程就是CRUSH算法。关于CRUSH算法我们将在后面章节来讨论,这里我们了解Ceph集群的结构,下一章我们将手动部署一套最小化的Ceph集群来体验下Ceph存储的使用。

文章转载自:ALEX_li88

原文链接:https://www.cnblogs.com/alex0815/p/17850402.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1242832.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

牙科诊所小程序开发案例

一、背景: 针对传统口腔医疗领域中口腔诊所推广难,纸质信息保存难等问题,设计并开发了基于微信小程序实现口腔服务助手平台。为了给人们提供便捷,快速的预约方式,提高社会人群对口腔健康的关注力度。通过微信小程序互联网技术&…

Android Studio xml文件id爆红但是项目可以运行

这种原因是你的R文件太大了(超过了Android Studio的上限25.6M了) 解决办法如下: Help -> Edit Custom Properties -> create custom properties?(yes) ->添加 idea.max.intellisense.filesize5000 最后需要重启Android Studio

Dubbo引入Zookeeper等注册中心简介以及DubboAdmin简要介绍,为后续详解Dubbo各种注册中心做铺垫!

文章目录 一:Dubbo注册中心引言 1:什么是Dubbo的注册中心? 2:注册中心关系图解 3:引入注册中心服务执行流程 4:Dubbo注册中心好处 5:注册中心核心作用 二:注册中心实现方案 …

易涝积水点监测,内涝积水监测仪安装

城市内涝对人们来讲会有很多影响,比如出行需要绕远路或者家中涌入污水导致淤泥堆积,这还有可能让屋内的家具受到破坏,既影响正常生活也造成了经济损失。在街道上还可能对交通、通讯、电力等基础设施造成严重威胁。因此政府如果能实时监测路面…

2023亚太杯数学建模思路 - 案例:粒子群算法

文章目录 1 什么是粒子群算法?2 举个例子3 还是一个例子算法流程算法实现建模资料 # 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 什么是粒子群算法? 粒子群算法(Pa…

视频监控平台EasyCVR+智能分析网关+物联网,联合打造智能环卫监控系统

一、背景介绍 城市作为人们生活的载体,有着有无数楼宇和四通八达的街道,这些建筑的整洁与卫生的背后,是无数环卫工作人员的努力。环卫工人通过清理垃圾、打扫街道、清洗公共设施等工作,保持城市的整洁和卫生,防止垃圾…

高效聚合 | AIRIOT智慧虚拟电厂管理解决方案

传统的电力供应模式主要依靠大型发电厂和电网进行能源传输和分配,但这种模式会导致能源浪费、环境污染等问题,往往存在如下的运维问题和管理痛点: 资源整合能力差:传统电力供应模式无法集成和整合分散的电力资源,包括…

解决Activiti5.22流程图部署在Windows上正常,但在linux上部署后出现中文变方块的问题

总结/朱季谦 楼主最近在做公司的工作流平台,发现一个很无语的事情,Activiti5.22的流程图在Windows环境上部署,是可以正常查看的,但发布到公司的Linux服务器上后,在上面进行流程图在线部署时,发现中文都变成…

万宾科技智能井盖传感器使用方式,具有什么效果?

有问题的井盖可能导致人们在行走或驾驶时不经意地踩中或碰到,从而导致摔倒、扭伤或交通事故等安全事故。有问题的井盖可能会破坏井盖和下方污水管道之间的密封性,导致污水泄漏。这不仅会对环境造成污染,还可能对公共卫生和健康构成威胁。 将智…

如何弱化市场大环境带来的影响?私域电商和裂变营销引来新趋势!

弱化市场大环境带来的影响需要从多个方面入手,包括深入了解市场和行业、建立品牌优势、多元化经营、优化供应链管理、加强客户关系管理、灵活应对市场变化等。同时需要注意不同领域和行业的市场变化和政策调整,及时调整经营策略和业务结构,保…

Python基础【三】--数据类型-Number【2023.11.23】

1.数值类型 Number数据类型只要包括三个分别是:整型(int)、浮点型(float)、复数(complex) 整型:包括正整数、负整数。如:1024、-1024。整型有四种进制表示,分…

【速看】如何提高微信权重?影响微信权重的加分、扣分行为

微信具有一套权重判定系统,类似于搜索引擎的PR值,可以看做是一个“积分系统”。好的操作会增加积分,负面操作会减少积分。 当积分低于特定标准(即底线)时,将会被严重惩罚或封号。这样,微信确保了…

四肽-3——增加皮肤光滑度、紧致度,让肌肤看起来更年轻

Caprooyl四肽-3,也称为KGHK Caproic acid,是一种基于TGF-(转化生长因子β)的仿生脂肽结构,在细胞外基质成分的自然产生中发挥重要作用。肽序列是Lys-Gly-His-Lys。它可以减少细纹和皱纹的出现,提高皮肤弹性…

【python基础】python可变序列与不可变序列

文章目录 前言一、序列类型定义二、对序列类型的切片操作三、使用 与 * 对序进行操作四、增量赋值 和 * 前言 本文主要讲可变序列与不可变序列一些简单的应用。 一、序列类型定义 按序列能否被修改分为:可变序列与不可变序列。 可变序列:可以进行增、…

HT6809 3W 低 EMI 防削顶 D 类音频功率放大器的特点

HT6809是一款内部集成32阶数字音量控制以及防削顶失真功能且具有超低EMI的立体声免输出滤波器 D类音频功率放大器。 ◼ HT6809特点: ・防削顶失真功能(Anti-Clipping Function, ACF) ・超优异的全带宽EMI抑Z性能 ・免LC滤波器数字调制,直接驱动扬声器 ・32阶数…

uni-app开发小程序,利用scroll-view实现自动滚动至对应数据

uniapp scroll-view 官网 vue文件内容&#xff1a;dom: <scroll-view scroll-y :scroll-into-view"seqToView"><view class"pop-scroll"><viewv-for"(item,index) in seqList":id"seq- item":key"index"cl…

深入剖析预约上门服务系统源码:构建高效服务的代码之旅

在本文中&#xff0c;我们将深入研究预约上门服务系统的源码&#xff0c;透过代码的层层剖析&#xff0c;揭示系统背后的技术奥秘。我们将关注系统的核心功能&#xff0c;并通过代码示例演示其实现过程&#xff0c;为读者提供一个深度技术解读的体验。 1. 技术栈选择&#xf…

如何截留快手行业意向用户:10个合规方法大揭秘

先来看实操成果&#xff0c;↑↑需要的同学可看我名字↖↖↖↖↖&#xff0c;或评论888无偿分享 一、引言 随着互联网的发展&#xff0c;快手已成为一个巨大的流量池&#xff0c;吸引了无数用户。其中&#xff0c;不乏许多行业的意向用户。如何截留这些意向用户&#xff0c;成…

华为openGauss高斯数据库安装--docker方式

一、华为openGauss高斯数据库介绍 openGauss是一款华为开源的关系型数据库管理系统&#xff0c;它具有多核高性能、全链路安全性、智能运维等企业级特性。 openGauss内核早期源自开源数据库PostgreSQL&#xff0c;融合了华为在数据库领域多年的内核经验&#xff0c;在架构、事…

电脑找不到xinput1_3.dll怎么修复,快速处理dll问题的5个方法分享

在使用电脑的过程中&#xff0c;我们常常会遇到一些常见的问题&#xff0c;其中之一就是“电脑缺少xinput1_3.dll”。这个问题可能会影响到我们对电脑的使用体验&#xff0c;甚至导致某些软件无法正常运行。在我遇到这个问题并解决之后&#xff0c;我深刻地体会到了解决问题的重…