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

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.mzph.cn/news/163666.shtml

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

相关文章

基于 Flink SQL 和 Paimon 构建流式湖仓新方案

本文整理自阿里云智能开源表存储负责人,Founder of Paimon,Flink PMC 成员李劲松在云栖大会开源大数据专场的分享。本篇内容主要分为四部分: 数据分析架构演进介绍 Apache PaimonFlink Paimon 流式湖仓流式湖仓Demo演示 数据分析架构演进 …

虾皮数据参谋:知虾助力商家实现数据化运营的利器

在如今竞争激烈的电商市场中,商家需要准确的数据分析来指导他们的业务决策。Shopee电商平台的数据分析工具——虾皮数据参谋(知虾),为商家提供了丰富的数据分析服务,包括商品市场、销量、价格分布、物流监控、差评监控…

ArkTS声明式开发范式

装饰器 用来装饰类、结构体、方法以及变量,赋予其特殊的含义,如上述示例中 Entry 、 Component 、 State 都是装饰器。 Component 表示这是个自定义组件; Entry 则表示这是个入口组件; State 表示组件中的状态变量,…

最新版灵沐V3.3微信资源类小程序源码支持流量主

源码简介 最新版灵沐V3.3微信资源类小程序源码支持流量主,一套不错的流量主变现资源下载小程序,它支持在微信、QQ和抖音平台上运行。这次更新主要集中在全局UI设计的升级,并依然注重资源下载和激励视频变现的功能。另外,还新增了…

VR模拟仿真技术为司法科普建设注入更多的智慧和力量

虚拟现实(VR)技术已经逐渐渗透到各个领域,包括司法领域,在法学院教学中,VR虚拟现实和web3d开发技术的兴起,让司法教育也突破传统教授式、演练式的教学模式,通过VR特有的沉浸式展示特点,实现了真实法庭效果的…

【Sorted Set】Redis常用数据类型: ZSet [使用手册]

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 目录 ⑤Redis Zset 操作命令汇总1. zadd 添加或…

【考研数据结构代码题7】求一元多项式之和

题目:编写一个算法,求一元多项式之和 考纲:一元多项式的表示与相加 题型:代码填空或算法设计 难度:★★★ 参考代码 typedef struct node{float coef;//系数int exp;//次数struct node *next; }polynode; polynode *…

5 分钟,开发自己的 AI 文档助手!手把手教程

大家好,我是鱼皮。 几个月前,我自己开发过一个 AI 文档总结助手应用。给大家简单演示一下,首先我上传了一个文档,定义 1 1 等于 3: 然后把文档喂给 AI 文档总结助手,再向它提问,然后 AI 就回答…

登陆页面模板

简单好看的登陆页面 vue项目代码 可忽略js部分 先来个效果图 <template><div class"login"><div class"content"><p >账户密码登录</p><div class"unit"><label class"label">用户名</…

Hadoop学习总结(MapReduce的数据去重)

现在假设有两个数据文件 file1.txtfile2.txt2018-3-1 a 2018-3-2 b 2018-3-3 c 2018-3-4 d 2018-3-5 a 2018-3-6 b 2018-3-7 c 2018-3-3 c2018-3-1 b 2018-3-2 a 2018-3-3 b 2018-3-4 d 2018-3-5 a 2018-3-6 c 2018-3-7 d 2018-3-3 c 上述文件 file1.txt 本身包含重复数据&…

汇编-PROTO声明过程

64位汇编 64 模式中&#xff0c;PROTO 伪指令指定程序的外部过程&#xff0c;示例如下&#xff1a; ExitProcess PROTO ;指定外部过程&#xff0c;不需要参数.code main PROCmov ebx, 0FFFFFFFFh mov ecx,0 ;结束程序call ExitProcess ;调用外部过程main ENDP END 32位…

手把手云开发小程序-(四)-uniclould增删改查业务开发

一&#xff0c;导入uView 在开发小程序的时候&#xff0c;我习惯使用uView这个ui库。主要是直接用当然比自己写省时间。 它的官网&#xff1a;uView - 多平台快速开发的UI框架 - uni-app UI框架 (gitee.io) 导入&#xff1a; npm install uview-ui2.0.31然后按照官网进行配…

UltraCompare 23 for Mac文件对比工具

UltraCompare是一款功能强大的文件比较和合并工具&#xff0c; 以下是它的特色介绍&#xff1a; 多种文件格式支持&#xff1a;UltraCompare支持比较和合并多种文件格式&#xff0c;包括文本文件、二进制文件、office文档、PDF文件等。 文件差异高亮显示&#xff1a;UltraComp…

内测分发平台的合作生态和生态效应如何

大家好&#xff0c;我是咕噜-凯撒&#xff0c;随着移动互联网和智能设备的快速发展&#xff0c;越来越多的开发者和企业开始关注产品的质量和体验。而内测分发平台则成为了一种重要的工具&#xff0c;能够帮助他们更好地测试、优化和推广产品。在此过程中&#xff0c;内测分发平…

特殊企业信息轻松查询:特殊企业基本信息查询API的实用性探讨

引言 在当今数字化时代&#xff0c;企业管理和决策往往取决于有效获取和分析关键信息。对于特殊企业&#xff0c;如香港公司、社会组织、律所、事业单位、基金会和新机构&#xff0c;获取准确、及时的基本信息至关重要。在这个背景下&#xff0c;特殊企业基本信息查询API正逐渐…

〔004〕虚幻 UE5 像素流部署

✨ 目录 ▷ 启用像素流插件▷ 打包项目▷ 下载环境包▷ 手动下载▷ 安装信令服务器环境▷ 启动信令服务器▷ 设置启动参数▷ 启动程序▷ 网页运行▷ 开启触控界面▷ 启用像素流插件 打开虚幻启动程序,选择 编辑 后点击 插件在插件列表中搜索 pixel streaming 关键字,勾选后重…

springcloud宿舍管理系统源码

开发技术&#xff1a; jdk1.8&#xff0c;mysql5.7&#xff0c;idea&#xff0c;vscode springcloud springboot mybatis vue elementui 功能介绍&#xff1a; 用户端&#xff1a; 登录注册 首页展示轮播&#xff0c;公告&#xff0c;报修&#xff0c;晚归登记&#xff0…

提升抖音小店服务分:优化策略与实操指南

抖音小店服务分是抖音平台为评估和提升小店服务质量而设立的一项指标。它通过对小店在订单管理、售后服务、物流管理等多个方面的表现进行评估和计算&#xff0c;为小店提供一个可衡量的服务质量指标。提高抖音小店服务分数对于增加用户信任度、提升销售额和增加曝光度都非常重…

第十七章 Java链接数据库

目录 1.登录MySQL 2.创建库和表 3.使用Java命令查询数据库操作 4.右击——点击“Build Path”——选择第四个——找到包的位置——导入成功 一、创建java项目 1.注册驱动 2.获取链接 3.获取statment对象 4.执行sql语句返回结果集 5.遍历结果集 6.关闭连接释放资源 封装…

Linux:设置Ubuntu的root用户密码

执行以下命令&#xff1a; 给root用户设置密码 sudo passwd 输入两次密码 切换root su root 退出root用户 exit