Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ceph分布式存储学习指南

ceph分布式存储学习指南

作者头像
用户5760343
发布于 2022-05-14 06:57:19
发布于 2022-05-14 06:57:19
7000
举报
文章被收录于专栏:sktjsktj

ceph是模块化和可扩展的,并且有容错设计。先进的分布式存储系统。 ceph凭借其高可扩展性、高可靠性、高性能的特点,逐渐成为openstack\cloudstack、opennebula等主流开源云平台后端存储的首选。可靠性、自平衡、自恢复、一致性 软件定义存储。 可以大幅降低企业存储基础设施的成本。 分布式、可大规模扩展,经济 虚拟平台KVM、VMWARE也支持ceph ceph存储介绍 ceph部署实战 ceph架构和组件 ceph内部构建 ceph部署 ceph存储配置 ceph操作及管理 监控ceph集群 ceph与openstack集成 ceph性能调优和基准测试 1、ceph是什么 ceph是一个开源项目,它提供软件定义的、统一的存储解决方案。ceph可大规模扩展、高性能并且无单点故障的分布式存储系统。容量可扩展至EB级别。1EB=1024PB

image.png

image.png

ceph以章鱼作为自己的吉祥物,表达了ceph跟章鱼一样的并行行为。 inktank公司为ceph提供专业服务和技术支持。 版本历史

image.png

image.png

image.png

块存储

image.png

cephFS

image.png

image.png

对象存储

image.png

image.png

ceph与其他工具的对比

ceph-deploy工具部署

ceph架构:ceph存储集群由几个不同的软件守护进程组成,每个守护进程负责ceph的一个独特功能并将值添加到相应的组件中。

image.png

RADOS:可靠、自动、分布式对象存储(Reliable Autonomic Distributed Object Store),是ceph存储集群的基础。ceph中的一切都以对象的形式存储,而RADOS就负责存储这些对象,而不考虑它们的数据类型。RADOS确保数据一致性和可靠性。对于数据一致性,它执行数据复制、故障检测和恢复,还包括数据在集群节点间的迁移和再平衡。

image.png

MON监控健康状态:OSD,MON,PG,CRUSH。

image.png

librados提供接口

image.png

RBD块设备:支持快照和写时复制

image.png

RGW对象网关:支持S3和SWIFT

image.png

cephFS,MDS

image.png

自我管理,自我修复,自我计算

image.png

查看存储池:rados lspools

查看存储池的对象(metadata池的名字):rados -p metadata ls

查看集群空间:rados df

OSD:::

image.png

文件系统

image.png

image.png

日志大小常见的是10GB,一个SSD做日志最多分给4到5个OSD

每个磁盘推荐1-2GB内存

查看单节点上的OSD:service ceph status osd

检查OSD的ID:ceph osd ls

检查OSD map和状态:ceph osd stat

ceph osd tree 树形图

ceph monitor:集群map包括monitor\osd\pg\crush\mds map

检查mon map:ceph mon dump

检查osd map:ceph osd dump

检查pg map:ceph pg dump

crush map: ceph osd crush dump

ceph mds dump

image.png

image.png

image.png

image.png

检查mon状态:service ceph status mon

ceph mon stat

ceph mon_status

ceph mon dump

librados:

一个本地的C语言库,可以直接和RADOS通信。

RBD驱动被集成到LINUX内核中

image.png

image.png

ceph与open'stack紧密集成:写时复制快照、克隆和可恢复的只读快照

image.png

cgw:是一个代理,可以将HTTP请求转换成RADOS,也可以把RADOS请求转换成HTTP,从而提供RESTful对象存储。radosgw

image.png

image.png

MDS

image.png

部署MDS:ceph-deploy mds create ceph-node2 CEPH FS

image.png

image.png

ceph构架及其核心组件、底层实现

对象:

一个对象用一个全局唯一的标识符标识,元数据和数据

image.png

ceph的池是一个用来存储对象的逻辑分区,它提供了一个有组织的存储形式。

默认存储池: rbd,如果配置了MDS,则还会创建data/metadata

列出所有池:rados lspools

列出池中的对象名称:rados -p metadata ls

CRUSH算法:Controlled Replication Under Scalable Hashing

image.png

客户端使用自己的资源来执行CRUSH查找。

一次读写操作

image.png

image.png

image.png

image.png

恢复和再平衡:

image.png

image.png

修改crush map: 提取:ceph osd getcrushmap -o crushmap.txt 反编译:crushtool -d crushmap.txt -o crushmap-decompile 打开/修改: vi crushmap-decompile 重新编译: crushtool -c crushmap-decompile -o crushmap-compiled 应用:ceph osd setcrushmap -i crushmap-compiled

ceph osd tree :查看层级结构 bucket:表示放设备的容器,可以包含多个设备或子类型的bucket device:设备,最基本的存储设备,也就是OSD,通常一个OSD对应一个磁盘存储设备 bucket类型:osd,host,chassis,rack,row,pdu,pod,room,datacenter,regin,root 11各等级 osd,主机,底盘,机架,一排机架,?,?,机房,数据中心,区域,根 修改bucket结构,例子:

image.png

PG:一组对象的逻辑集合

image.png

image.png

建议每个OSD上放置50-100各PG

PG总数计算公式 PG 总数= (OSD 总数x 100) /最大副本数 结果必须舍入到最接近2 的N 次幕的值。比如:如果C巳ph 集群有160 个OSD 且副本数是3 ,这样根据公式计算得到的PG 总数是5333.3 ,因此舍入这个值到最接近的2 的N 次幕的结果就是8192 个PG 。 我们还应该计算Ceph 集群中每一个池中的PG 总数。计算公式如下: PG 总数= ((OSD 总数x 100) /最大副本数) /池数 同样使用前面的例子: OSD 总数是160 ,副本数是3 ,池总数是3 。根据上面这个公式, 计算得到每个池的PG 总数应该是1777 . 7 ,最后舍入到2 的N 次幕得到结果为每个池2 048个PG 。

PGP 是为实现定位而设置的PG ,它的值应该与PG 的总数(即pg_num) 保持一致。 查看数量:ceph osd pool get data pg_num ceph osd pool get data pgp_num 检查池的副本数:ceph osd dump|grep -i size

规划PG数量

image.png

image.png

PG的peering、up集合和acting集合

image.png

image.png

一个池,一个CRUSH规则集

image.png

创建池: ceph osd pool create web-services 128 128 查看池列表:ceph osd lspools / rados lspools / ceph osd dump|grep -i pool 修改副本数:ceph osd pool set web-services size 3 重命名池:ceph osd pool rename web-services frontend-services 池的快照操作

image.png

删除池也会删除快照 ceph osd poo1 de1ete frontend-services frontend-services --yes-i-rea11y-rea11y-mean-it

PG数据管理

image.png

image.png

image.png

image.png

image.png

ceph monitor:单核2GB内存,硬盘可以大点存储日志,1G/S的网卡 OSD:1块物理硬盘1各OSD,1GHZCPU和2GB内存,硬盘?,独立日志盘,一个SSD做2-4各OSD日志盘

MDS需要4核或更高,更高RAM

纠删码:整个机制需要的耗OSD 节点更多的计算能力。此外,在恢复时, 解码数据块也需要大量的计算。 纠删码的概念:n=k+m

image.png

image.png

配置纠删码

image.png

image.png

image.png

image.png

image.png

image.png

ceph缓存层

image.png

image.png

部署缓存层

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

基准测试

image.png

image.png

image.png

image.png

image.png

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C语言位操作 | 按位运算符
C语言中可以单独操控变量中的位,例如:通常向硬件设备发送一两个字节来操控这些设备,每个位(bit)都有特定的含义,另外,与文件相关的操作信息经常被存储,通过特定的位表明特定的项。许多的压缩和加密操作都是直接除理单独的位。
CtrlX
2022/10/27
1.5K0
揭秘 JavaScript 位运算符:7个实用的用法
整数精度(不带小数点或指数表示法)最多为 15 位。小数精度的最大位数为 17 位,但浮点运算并不总是 100% 准确。
前端达人
2024/06/26
8960
揭秘 JavaScript 位运算符:7个实用的用法
位运算符和位操作符
a<<1表示将a的二进制位向左移动一位, a的二进制位是00000000 00000000 00000000 00000111,将他左移一位后,左边丢掉,右边补0。这就叫算数左移。
秦jh
2024/01/19
1920
位运算符和位操作符
【 JavaSE 】 数据类型和运算符
示例:                                                                                                                            
用户9645905
2022/11/30
5390
【 JavaSE 】 数据类型和运算符
【c语言】运算符汇总(万字解析)
为了促进大家深入理解C语言并提升学习效率,本博客作者将对C语言中常用运算符的功能及其使用方法进行全面梳理,同时整合归纳这些运算符的优先级、结合性以及表达式求值规则。
ephemerals__
2024/10/30
1.4K0
【c语言】运算符汇总(万字解析)
深入理解JavaScript位运算符
说起位运算符,各位一定是知道和二进制有关。但是我觉得,还是有大部分朋友对于位运算符还是比较陌生的,因为在实际的需求开发中这玩意几乎都没怎么用过,所以也就没有去过多的了解这东西。
吴佳
2022/09/26
3330
Java编程(位运算符)
二进制运算符   由于计算机内部的数据都以二进制的形式存在,所以在Java语言中提供了直接操作二进制的运算符,这就是下面要讲解的位运算符和移位运算符。   使用二进制的运算符,可以直接在二进制的基础上对数字进行操作,执行的效率比一般的数学运算符高的多,该类运算符大量适用于网络编程、硬件编程等领域。   二进制运算符在数学上的意义比较有限。   在Java代码中,直接书写和输出的数值默认是十进制,Java代码中无法直接书写二进制数值,但是可以书写八进制和十六进制数字,八进制以数字0开头,例如016,十六进制以
cloudskyme
2018/03/20
1.4K0
C语言入门系列之12.位运算
位运算是指按二进制位进行的运算,这是因为在系统软件中,常要处理二进制位的问题。 例如,将一个存储单元中的各二进制位左移或右移一位,两个数按位相加等。
cutercorley
2020/07/23
1.2K0
C语言入门系列之12.位运算
c语言位运算符的用法_c语言中位运算符及其含义
1;位运算; 程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。(均以二进制的补码形式) 整数;及只能是带符号或者无符号的char,short,int,long类型;
全栈程序员站长
2022/11/10
1.3K0
c语言位运算符的用法_c语言中位运算符及其含义
【C语言】位与移位操作符详解
8进制的数字每⼀位是 0~7 的,0~7的数字,各⾃写成2进制,最多有 3个2进制位 就⾜够了,比如7的二进制是111,所以在2进制转8进制数的时候,从2进制序列中右边低位开始向左每3个2进制位会换算一个8进制位,剩余不够3个2进制位的直接换算。
大耳朵土土垚
2024/03/13
3730
【C语言】位与移位操作符详解
【修正】深入理解C#位运算:掌握位运算符的妙用
C#位运算是一种强大的工具,可以在处理二进制数据和位操作时发挥重要作用。通过使用位运算符,我们可以对整数进行位级别的操作,如位与、位或、位异或和位取反等。位运算可以用于优化性能、压缩数据、实现位掩码和位标志等。了解和掌握C#位运算的基本原理和常见应用场景,将使我们能够更高效地处理二进制数据,并在某些情况下提高代码的性能和可读性。通过深入理解C#位运算,我们可以在编程中发挥更大的创造力和灵活性。
沙漠尽头的狼
2023/11/13
5780
【修正】深入理解C#位运算:掌握位运算符的妙用
c语言中位运算符_位运算符的用法
C语言的运算符是一个很有意思的东西,运用起来可以解决很多麻烦的事,但是想要灵活应用也有一定的难度,总结一下c语言运算符的用法和一些常用技巧.
全栈程序员站长
2022/11/09
1K0
7. Groovy 运算符-位运算符学习
本篇是Groovy学习第7篇内容。上一篇学习了算术运算,关系运算和逻辑运算。今天接着上一篇,继续学习Groovy中的运算符相关知识。
zinyan.com
2022/12/07
5910
【Java探索之旅】运算符解密 位运算,移位运算
java 中数据存储的最小单位是字节,而数据操作的最小单位是比特位. 字节是最小的存储单位,每个字节是由8个二进制比特位组成的,多个字节组合在一起可以表示各种不同的数据。
屿小夏
2024/03/18
2120
【Java探索之旅】运算符解密 位运算,移位运算
深入理解位运算符及其在JavaScript中的应用
Immerse
2024/03/13
2780
深入理解位运算符及其在JavaScript中的应用
c语言中的移位运算符能用于浮点型吗_c语言移位运算符与运算用法
移位运算符在程序设计中,是位操作运算符的一种。移位运算符可以在二进制的基础上对数字进行平移。 c语言中提供了两种移位运算符: 左移运算符:<< 右移运算符:>>
全栈程序员站长
2022/11/01
1.6K0
c语言中的移位运算符能用于浮点型吗_c语言移位运算符与运算用法
C语言位运算符详解「建议收藏」
C语言既具有高级语言的特点,又具有低级语言的特性,如支持位运算就是其具体体现。这是因为,C语言最初是为取代汇编语言设计系统软件而设计的,因此C语言必须支持位运算等汇编操作。位运算就是对字节或字内的二进制数位进行测试、抽取、设置或移位等操作。其操作对象不能是float、double、long double等其他数据类型,只能是char和int类型。 C语言提供如下表格的六种位运算符,其中,只有按位取反运算符为单目运算符,其他运算符都是双目运算符。
全栈程序员站长
2022/11/10
3.8K0
C语言位运算符详解「建议收藏」
[GO语言基础] 四.算术运算、逻辑运算、赋值运算、位运算及编程练习
作为网络安全初学者,会遇到采用Go语言开发的恶意样本。因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识;另一方面是分享与读者,希望大家一起进步。前文介绍了Golang的变量、数据类型和标识符知识,并通过12道编程练习进行提升。这篇文章将介绍运算,包括算术运算、逻辑运算、赋值运算、位运算及编程练习。 这系列文章入门部分将参考“尚硅谷”韩顺平老师的视频和书籍《GO高级编程》,详见参考文献,并结合作者多年的编程经验进行学习和丰富,且看且珍惜吧!后续会结合网络安全进行GO语言实战深入,加油~
Eastmount
2021/03/01
8570
[GO语言基础] 四.算术运算、逻辑运算、赋值运算、位运算及编程练习
【C语言】操作符(最全整理,附位操作符经典练习题)
2、负整数:反码为原码符号位不变,其他位按位取反,补码为反码+1 例如:-6
小舒不服输
2024/01/30
2630
【C语言】操作符(最全整理,附位操作符经典练习题)
java位运算符
Java中的位运算符是用于对二进制数进行操作的运算符。在计算机内部,所有的数据都是以二进制形式存储和处理的,因此使用位运算符可以高效地进行位操作,包括位移、位与、位或、位非、位异或等操作。本文将介绍Java中的位运算符,包括其语法、操作和示例。
堕落飞鸟
2023/04/03
7220
推荐阅读
相关推荐
C语言位操作 | 按位运算符
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档