ceph集群架构阐述
ceph集群架构阐述
首先,ceph集群也是分为客户端和服务端的,是一种高效的分布式存储系统,我们将其拆分为这两个部分来进行分析。
我大致的将服务端分为API类型、逻辑层、OSD层三个层面进行分析;将客户端按三种API类型挂载、接入、管理方式进行说明;
ceph集群的服务端
API类型
- ceph集群对外是支持多种API接口类型的
- 有支持各种编程语言的librados,其中为了方便管理官方将其分为了rgw对象存储和rbd块设备存储
- 还支持高可用的分布式文件系统cephFS
逻辑层
主要决定了数据的存储方式,真正的数据是存储在了对象存储设备OSD上
主要有以下几个概念:
- 存储池(pool):可以有多个存储池,每个存储池都是相互独立的,用于数据的管理与存储。主要有副本池和纠删码池两种类型
- 归置组(PG):存储池中可以有多个PG,PG是用来管理对象的工具
- 对象(object):PG中包含多个对象,是集群中管理数据的最小单位,每个对象都是独立的个体,默认存储大小为4M
对象存储(OSD)层
逻辑层和OSD之间的关系
一个存储池内的PG(每个PG内容是不一样的,因此实现分布式存储),会通过CRUSH算法,决定一个PG到OSD的映射关系,确保相同的PG不会存储在同一个OSD上,从而实现每个PG都是高可用的。而这种映射关系,是通过ceph集群中mon组件来进行维护的。
- 其中:
- 映射关系是可以自定义规则写入指定的OSD的
- 在ceph集群中,一个存储池的默认副本数量为3,所以每个PG会默认存3分在不同的OSD上,因此也建议最少使用3节点集群。
组件说明
ceph集群中一个存储池的PG数量是支持扩容和缩容的,其本质上就是磁盘间的、OSD间的数据迁移,因此肯定是要有专门的组件来维护PG数量的变动
-
**mgr:**每一个OSD都会有一个专门的进程来监控OSD中内所有PG的对象的状态变化,而mgr组件会收集这些信息,使mgr起到监控的作用。
-
**mon:**两个不同的OSD之间的通信,以及外部用户访问都是需要认证的,而mon组件就提供了这个认证功能;另外如上一大节所述,mon组件还用来维护了集群状态的映射。
当我们要使用cephFS文件系统时,就必须要安装mds这个组件
- **mds:**主要负责管理文件系统的元数据
当我们要使用对象存储的时候,就必须要安装rgw这个组件
- **rgw:**主要提供对象存储服务,并通过https或http协议与客户端进行交互。它提供了s3和swift兼容的端口,可以使ceph与各种云平台和应用集成。
ceph集群的客户端
RBD设备
挂载
- 客户端需要安装ceph-common通用包环境,来管理从服务端拷贝过来的集群认证文件(秘钥环文件和配置文件);
- 同时通用包提供了访问ceph集群的所需工具和库,并且支持了认证机制;
- 挂载时要先进行映射,再对设备进行格式化,最后进行挂载。
调整容量大小
- 服务端使用resize调整大小之后,客户端需要进行热更新
- resize2fs用来更新2fs文件系统
- xfs_growfs用来更新xfs文件系统
cephFS
- 基于ceph内核模块挂载
- 管理节点创建用户并导出秘钥环文件或key文件到客户端指定用户
- 客户端可以基于key或者秘钥环文件进行挂载
- 基于用户空间fuse方式挂载
- 客户端需要下载ceph-fuse程序包,并从服务端拷贝认证文件
- 创建挂载目录,使用ceph-fuse进行挂载
RGW对象存储
- 通过s3进行管理
- 通过swift进行管理
相关文章:
ceph集群架构阐述
ceph集群架构阐述 首先,ceph集群也是分为客户端和服务端的,是一种高效的分布式存储系统,我们将其拆分为这两个部分来进行分析。 我大致的将服务端分为API类型、逻辑层、OSD层三个层面进行分析;将客户端按三种API类型挂载、…...
《Java八股文の文艺复兴》第十篇:量子永生架构——对象池的混沌边缘
目录 卷首语:蝴蝶振翅引发的量子海啸 第一章:混沌初开——对象池的量子涅槃(深度扩展) 第二章:混沌计算——对象复活的降维打击(技术深化) 第三章:量子试炼场——亿万级对象池全…...
(linux操作系统)程序地址空间
程序地址空间是什么? 讲这个问题之前,我们先来看一段熟悉的代码,以前学习C语言或者C语言时,就听说过程序内存分布,堆区,栈区,静态区,常量区,共享区,代码段&am…...
专业抑郁测试工具:让心理健康评估更简单
专业抑郁测试工具:让心理健康评估更简单 在这个快节奏的社会中,心理健康问题越来越受到人们的关注。为了帮助大家更好地了解自己的心理状态,我们开发了一款专业的在线抑郁测试工具。这个工具基于科学的心理量表设计,为用户提供准…...
C语言中单向链表:创建节点与插入新节点
一. 简介 单链表是一种常见且基础的数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针。 本文简单学习一下C语言中如何实现单项链表。 二. C语言实现单向链表 单向链表:单向链表是一种线性数据结构,由一…...
jsoncpp的使用
json提供的几个类: Value类:将json支持的数据类型进行包装,最终得到一个Value类型 FastWriter类:将Value对象中的数据序列化为字符串,序列化后可以得到json格式的字符串 Reader类:反序列化,将…...
【最新版】啦啦外卖v64系统独立版源码+全部小程序APP端+安装教程
一.系统介绍 啦啦外卖跑腿平台独立版,使用的都知道该系统功能非常强大,应该说是目前外卖平台功能最全的一套系统。主要是功能非常多,拿来即用,包括客户端小程序、配送端小程序、商户端小程序,还有对应四个端的APP源码…...
13-产品经理-产品多分支平台管理
禅道16.0版本开始,优化和增强了产品的分支/平台功能,主要特点如下: 多分支/平台功能兼容各种大小型项目,项目/迭代可以关联对应产品的某个分支/平台。分支/平台支持灵活管理,可以把分支/平台理解为时间层面的概念&…...
AI在医疗领域的应用
人工智能对医疗领域的革命性影响 一、智能诊断系统的突破 病理识别准确率提升乳腺癌检测准确率达94.6%(2023《Nature Medicine》)皮肤癌诊断灵敏度超过专业医师12%多模态诊断整合融合CT/MRI影像+基因组数据+电子病历急性肾损伤预测提前48小时(DeepMind)二、药物研发范式革…...
LabVIEW 在故障诊断中的算法
在故障诊断领域,LabVIEW 凭借其强大的图形化编程能力、丰富多样的工具包以及卓越的功能性能,成为工程师们进行故障诊断系统开发的得力助手。通过运用各种算法,能够对采集到的信号进行全面、深入的分析处理,从而准确地诊断出系统中…...
(自用)WebSocket创建流程
在Spring Boot项目中新建WebSocket服务,可以按照以下详细步骤进行操作: 1.创建Spring Boot项目 可以通过Spring Initializr(<>)快速创建一个新的Spring Boot项目,添加Spring Web和Spring Boot DevTools依赖&…...
C++多线程编码二
1.lock和try_lock lock是一个函数模板,可以支持多个锁对象同时锁定同一个,如果其中一个锁对象没有锁住,lock函数会把已经锁定的对象解锁并进入阻塞,直到多个锁锁定一个对象。 try_lock也是一个函数模板,尝试对多个锁…...
【最新版】金媒婚恋系统v10.5最新稳定开源+原生前端小程序 PC端+安装教程
一.系统简介 1. 红娘服务 红娘服务模块是该系统的一大特色。专业红娘会通过分析用户的个人资料和偏好, 为用户提供精准的配对建议和个性化服务。用户可以预约红娘服务,通过红娘的介入,提升配对成功率。 2. 相亲活动 相亲活动模块用于组织和管…...
[spring] spring AOP - 面向切面编程の学习
[spring] spring AOP - 面向切面编程の学习 几年前开始还在被 spring 的八股文时,AOP 就是一个比较热也比较大的点,为了面试确实背过不少,不过 AOP 实现本身做的不多,一方面也是因为 AOP 一旦配置好了基本上就不需要改什么&#…...
JavaScript 中的 Reflect 详解
Reflect 是 ES6引入的一个内置对象,它提供了一系列静态方法来操作对象,这些方法与 Proxy 处理器方法一一对应。Reflect 的设计目的是为了更优雅地操作对象,并统一某些操作的行为。 1. Reflect 的基本特点 1. 不是构造函数:不能使…...
【操作系统】linux常用命令
UP作为一个Linux系统练习两年半的个人练习生,今天分门别类地给大家整理一下常用的Linux命令,祝大家在Linux练习之路一帆风顺。 文件和目录操作 文件查看与编辑 文件查找 文件权限与所有权 进程管理 系统信息与监控 网络管理与诊断...
002 vue组件化编程
文章目录 一般方式全局组件局部组件 组件(Component)是Vue.js最强大的功能之一 组件也是一个Vue实例,也包括:data、methods、生命周期函数等 组件渲染需要html模板,所以增加了template属性,值就是HTML模板 …...
常见的 JavaScript 框架和库
在现代前端开发中,JavaScript框架和库成为了构建高效、可维护应用程序的关键工具。本文将介绍四个常见的JavaScript框架和库:React、Vue.js、Angular 和 Node.js,并探讨它们的特点、使用场景及适用场合。 1. React — 构建用户界面的JavaScri…...
005_循环结构
循环结构 循环结构的作用和应用场景for循环while循环for和while的使用规范do - while 死循环循环嵌套break、continueRandom生成随机数 循环结构的作用和应用场景 减少代码的重复编写、灵活的控制程序的执行 for循环 for (1初始化语句; 2循环条件; 3迭代语句){4循环体语句(重…...
1110+款专业网站应用程序UI界面设计矢量图标figma格式素材 Icon System | 1,100+ Icons Easily Customize
1110款专业网站应用程序UI界面设计矢量图标figma格式素材 Icon System | 1,100 Icons Easily Customize 产品特点 — 24 x 24 px 网格大小 — 2px 线条描边 — 所有形状都是基于矢量的 — 平滑和圆角 — 易于更改颜色 类别 🚨 警报和反馈 ⬆️ 箭头 &…...
leetcode 368. 最大整除子集 中等
给你一个由 无重复 正整数组成的集合 nums ,请你找出并返回其中最大的整除子集 answer ,子集中每一元素对 (answer[i], answer[j]) 都应当满足: answer[i] % answer[j] 0 ,或answer[j] % answer[i] 0 如果存在多个有效解子集&…...
项目总结之常问的一些问题
1.项目功能介绍,重难点 重难点: mock工具使用(涉及到的三方接口过多,由于网络等原因无法调通,所以测试的时候,采用mock工具来模拟返回接口真正调用后响应数据) 2.项目负责哪部分?…...
51单片机实现精确定时
一、51单片机代码 #include <reg52.h>sbit LED P3^3;extern bit b10Ms; extern bit b100Ms; extern bit b1S; extern bit b10S;void Timer0_Init() {TMOD | 0x01; // 设置定时器0为模式1TH0 (65536 - 1000) / 256; // 高8位赋初值TL0 (65536 - 1000) % 256; // 低8位…...
记一次不太顺利的Docker重装
#记录工作 一、前言 默认情况下,Windows系统上Docker Desktop 安装在 :C:\Program Files\Docker\Docker; 目前正常下载能下载到最新版本是到v4.39.0,实际已经能找到v4.40.0版本来进行修复安装; 建议尽量不要改变Doc…...
【计网】TCP 协议详解 与 常见面试题
三次握手、四次挥手的常见面试题 不用死记,只需要清楚三次握手,四次挥手的流程,回答的时候心里要记住,假设网络是不可靠的 问题(1):为什么关闭连接时需要四次挥手,而建立连接却只要三次握手? 关…...
Docker介绍
Docker介绍 Docker 本身并不是容器,而是一个使用容器的工具。容器是 Linux 内核提供的技术,Docker 只是将这种技术的使用简便化了。Docker 的主要目标是 “Build,Ship and Run Any APP,Anywhere”(“一次封装,到处运行”…...
大模型推理--Qwen2.5-Omni在A100上的初体验
过去的一周Qwen2.5-Omni产生了很高的热度,吸引了很多人的目光。它的多模态确实很吸引人,放出来的demo体验还算尚可(语音对话的延迟还是太大),所以就在A100 PCIe上实地部署了一下,初步对其速度进行了测试&am…...
二分查找例题
本篇基于b站灵茶山艾府。 34. 在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 你…...
新增一种线性回归的增量学习框架,已更新31个模型!Matlab回归预测大合集又更新啦!
目录 效果图基本介绍程序设计参考资料 效果图 基本介绍 一种线性回归的增量学习框架,程序研究的主要内容是线性回归模型的增量学习实现及其在房价预测中的应用,旨在通过分块处理数据逐步更新模型,以适应动态数据环境并减少计算资源消耗。 详…...
P1025 [NOIP 2001 提高组] 数的划分(DFS)
题目描述 将整数 n 分成 k 份,且每份不能为空,任意两个方案不相同(不考虑顺序)。 例如:n7,k3,下面三种分法被认为是相同的。 1,1,5; 1,5,1; 5,1,1. 问有多少种不同的分法。 输入格式 n,k …...
SQL Server存储过程和触发器的使用
存储过程 (1)创建存储过程,使用Employees表中的员工人数来初始化一个局部变量,并调用这个存储过程。 1. Create PROCEDURE test number1 int output --输出参数,可以从程序中返回信息 2. As 3. begin 4. D…...
Elastic 的 OpenTelemetry 分发版(EDOT)现已正式发布:开源、可用于生产环境的 OTel
作者:来自 Elastic Miguel Luna 及 Bahubali Shetti Elastic 自豪地宣布正式发布 Elastic OpenTelemetry 分发版(Elastic Distributions of OpenTelemetry - EDOT),其中包含 Elastic 自定义版本的 OpenTelemetry Collector 以及多…...
springMVC-Json交互处理
什么是JSON JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,目前使用特别广泛。 采用完全独立于编程语言的文本格式来存储和表示数据。 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也…...
MySQL中的索引
explain关键字, MySQL索引特性 索引的概念 MySQL 索引是一种用于提高数据库查询效率的数据结构 数据库表中存储的数据都是以记录为单位的,如果在查询数据时直接一条条遍历表中的数据记录,那么查询的时间复杂度将会是 O ( N )。索引的价值在…...
AI小白:JavaPython开发环境双轨制搭建指南
文章目录 1 Python深度学习环境配置1.1 Anaconda生态体系建设1.2 JupyterLab高效工作流魔法命令与可视化调试扩展插件配置指南 2 Java深度学习方案:DL4J实战2.1 企业级部署架构设计2.2 集成传统Java系统Spring Boot微服务封装模型性能优化技巧 1 Python深度学习环境…...
《比特城的机密邮件:加密、签名与防篡改的守护之战》
点击下面图片带您领略全新的嵌入式学习路线 🔥爆款热榜 88万阅读 1.6万收藏 第一章:风暴前的密令 比特城的议会大厅内,首席长老艾德文握着一卷足有半人高的羊皮纸,眉头紧锁。纸上是即将颁布的《新纪元法典》——这份文件不仅内…...
Redis之布隆过滤器
面试场景切入 针对于电话号码问题的痛点 布隆过滤器是什么? 由一个初值都为0的bit数组和多个哈希函数构成,用来快速判断集合中是否存在某个元素。 设计思想 本质就是判断具体数据是否存在于一个大的集合中。布隆过滤器是一种类似Set的数据结构&#…...
这是一份简单优雅的Prompt Engineering教程
Prompt Engineering(提示工程)是通过精心设计输入文本(prompt)来引导大型语言模型(LLM)生成更准确、相关且符合预期的输出的技术。其核心在于通过调整提问的措辞、结构、上下文和附加信息,优化模…...
Java基础 4.6
1.成员方法练习 //编写类A:判断一个数是奇数还是偶数,返回boolean //根据行、列、字符打印对应行数和列数的字符,比如:行4 列4 字符# 则打印相应的效果 public class MethodExercise01 {public static void main(String[] args) …...
DApp实战篇:前端技术栈一览
前言 在前面一系列内容中,我们由浅入深地了解了DApp的组成,从本小节开始我将带领大家如何完成一个完整的DApp。 本小节则先从前端开始。 前端技术栈 在前端开发者速入:DApp中的前端要干些什么?文中我说过,即便是在…...
C++中如何比较两个字符串的大小--compare()函数实现
一、现在有一个问题描述:有两个字符串,要按照字典顺序比较它们的大小(注意所有的小写字母都大于所有的大写字母 )。 二、代码 #include <bits/stdc.h> using namespace std;int main() {string str1 "apple";…...
c++中的auto关键字
在 C 中,auto 是一个类型推断关键字(C11 引入),允许编译器根据变量的初始化表达式自动推导其类型。它极大地简化了代码编写,尤其在涉及复杂类型或模板的场景中。以下是 auto 的详细说明: 1. 基本用法 1.1 …...
zk源码—1.数据节点与Watcher机制及权限二
大纲 1.ZooKeeper的数据模型、节点类型与应用 (1)数据模型之树形结构 (2)节点类型与特性(持久 临时 顺序 ) (3)节点的状态结构(各种zxid 各种version) (4)节点的版本(version cversion aversion) (5)使用ZooKeeper实现锁(悲观锁 乐观锁) 2.发布订阅模式࿱…...
交换机和集线器的区别
集线器(Hub)—— 大喇叭广播站 工作原理: 集线器像村里的“大喇叭”,收到任何消息都会广播给所有人。 比如A对B说“你好”,全村人(C、D、E)都能听到,但只有B会回…...
微服务系统记录
记录下曾经工作涉及到微服务的相关知识。 1. 架构设计与服务划分 关键内容 领域驱动设计(DDD): 利用领域模型和限界上下文(Bounded Context)拆分业务,明确服务边界。通过事件风暴(Event Storm…...
同花顺客户端公司财报抓取分析
目标客户端下载地址:https://ft.51ifind.com/index.php?c=index&a=download PC版本 主要难点在登陆,获取token中的 jgbsessid (每次重新登录这个字段都会立即失效,且有效期应该是15天的) 抓取jgbsessid 主要通过安装mitmproxy 使用 mitmdump + 下边的脚本实现监听接口…...
二叉树与红黑树核心知识点及面试重点
二叉树与红黑树核心知识点及面试重点 一、二叉树 (Binary Tree) 1. 基础概念 定义:每个节点最多有两个子节点(左子节点和右子节点) 术语: 根节点:最顶层的节点 叶子节点:没有子节点的节点 深度…...
Rocket-JWT鉴权
目录 一、概述 二、相关依赖 三、环境准备 3.1 创建项目 3.2 读取私钥信息 3.3 token数据负载 3.4 生成token 四、Web鉴权 4.1 验证载体 4.2 接收请求 五、总结 Welcome to Code Blocks blog 本篇文章主要介绍了 [Rocket-JWT鉴权] ❤博主广交技术好友,喜…...
2025 年网络安全终极指南
我们生活在一个科技已成为日常生活不可分割的一部分的时代。对数字世界的依赖性日益增强的也带来了更大的网络风险。 网络安全并不是IT专家的专属特权,而是所有用户的共同责任。通过简单的行动,我们可以保护我们的数据、隐私和财务,降低成为…...
横扫SQL面试——PV、UV问题
📊 横扫SQL面试:UV/PV问题 🌟 什么是UV/PV? 在数据领域,UV(Unique Visitor,独立访客) 和 PV(Page View,页面访问量) 是最基础也最重要的指标&…...