没有合适的资源?快使用搜索试试~ 我知道了~
首页ceph集群运维操作.pdf
ceph集群运维操作.pdf
需积分: 48 251 浏览量
更新于2023-05-21
评论
收藏 1.86MB PDF 举报
学习ceph分布式存储通过官方文档资料以及自己的操作整理的问题解决手册,包括:恢复和再平衡/编辑 CRUSH map/定制集群布局/使用s3 browser工具操作ceph对象存储 桶/快–慢存储方案 /主-备存储方案/测试集群的读写带宽/OSD操作/缓冲池的建立与管理 还算比较详细,写来不易。
资源详情
资源评论
资源推荐

ceph集群的优化操作
恢复和再平衡
全局Ceph节点宕机处理
当遇到极端的情况下,例如整个集群设备突然断电;造成集群全局宕机,可以按照节点所示流程进行
Ceph 集群上电恢复操作。
手动上电执行步骤
1. 如为 Ceph 集群上电,monitor server 应最先上电;集群上电确认使用 Ceph 的前端作业服务已
停止。
2. 使用 IPMI 或于设备前手动进行上电
3. 确认NTP 服务及系统时间已同步,命令如下:
4. 登入上电之 ceph server 确认 ceph service 已正常运行,
命令如下:
5. 登入集群 monitor server 查看状态,OSD 全都 UP 集群仍为 noout flag(s) set
6. 登入 monitor server 解除 shopping w/out rebalancing,
命令如下:
恢复后检查步骤
1. 由于ceph 集群中的数据可能比较大所以恢复时间可能较长;当上电成功后ceph集群要通过
自己的恢复程序将 PG 中的数据逐步恢复出来。
2. 使用命令 ceph -s 查看此时的集群状态和各个节点是否都已加入到集群中
3. ceph osd tree OSD状态皆为UP
恢复后使用指令及其说明
1. ceph -s : 确认 ceph cluster status
2. ceph -w : 查看集群运作输出
#ps -ef | grep ntp
#data
#ntpq -p
#ps -ef | grep ceph
#ceph -s
#ceph osd tree
#ceph osd unset noout
#ceph -w

3. ceph osd tree : 查看ceph cluster上osd排列及状态
4. start ceph-all : 启动 所有 ceph service
5. start ceph-osd-all : 启动 所有 osd service
6. start ceph-mon-all : 启动 所有 mon service
7. start ceph-osd id={id} : 启动指定 osd id service
8. start ceph-mon id={hostname} : 启动指定 ceph monitor
host
9. ceph osd set noout : ceph stopping w/out rebalancing
10. ceph osd unset noout : 解除ceph stopping w/out
rebalancing
单个Ceph节点宕机处理
1. 登录 ceph monitor 节点,查询 ceph 状态:
ceph health detail
2. 模拟单个节点故障;将某个节点的 OSD 设备从 crushmap 中移除,该步骤会触发数据
reblance,
编辑 CRUSH map
1)提取已有的CRUSH map。使用 -o 参数,Ceph将输出一个经过编译的CRUSH map到指定的文件
2)反编译CRUSH map。使用 -d 参数指定需要反编译的CRUSH map ,通过 -o 指定反编译的输出文
件:
3)使用任何编辑器编辑CRUSH map:
例:
4 ) 重新编译这个新的 CRUSH map:
5 )将新 的 CRUSH map 应用到 Ceph 集群巾:
6)可在编译出的CRUSH map中依据osd设备大小设置权重
具体CRUSH map 中的设定可参考https://blog.csdn.net/heivy/article/details/50592244
定制集群布局
CRUSH层级结构
#ceph osd getcrushmap -o crushmap.txt
#crushtool -d crushmap.txt -o crushmap-decomplie
#vim crushmap-decomplie
#crushtool -c crushmap-decompile -o crushmap-compiled
#ceph osd setcrushmap -i crushmap-compiled
osd 的权重默认:1.00相关于1TB,0.50相关与500GB,3.00相关于3TB;
数据传输速率较慢的可略低于此相关率,速率较快的可略高于此相关率。

CRUSH 是完全了解所有基础设施并支持用户自定义配置的,它维护你所有基础设施组
件的一个嵌套层次结构 。 CRUSH 设备列表通常包括磁盘、节点、机架 ( rack) 、行 ( row) 、开关 、 电
源电路、房间 、 数据中心等 。 这些组件称为故障域或 CRUSH bucketo CRUSH map包含一系列可用
bucket ,这些 bucket 表明了设备的具体物理位置 。 它还包拆一系列的规则告诉 CRUSH 如何为不同
的 Ceph 池复制数据 。 从下图可以看到 CRUSH 是 如何看待你的基础设施的 。
根据基础设施, CRUSH 跨故障域来传播数据及其副本,因而即使一些组件出锚,数据
也是安全的 。 这就是 CRUSH 如何排除掉存储基础设施(它由商用软件组成)的单点故障问 题,同时保证
高可用性 。 CRUSH 均匀地在整个集群磁盘上写数据,这样提高了性能和可靠性,并强制集群中的所有
磁盘参与其中 。 它确保集群所有磁盘都同等地利用,而不考虑它们的能力 。 为此, CRUSH 为每个
OSO 分配权重 。 OSO 的权重越高,表示它的物理存储容量越大,这样 CRUSH 将会写入更多数据到这
个 OSD 上 。 因此,较低权重的 OSO 与较高权重的 OSO 都同等地被填充数据 。
定制集群布局
定制一个集群布局是建立一个健壮且可靠的 Ceph 存储集群巾最重要的一个步骤 这与
将集群硬件放置在一个故障区域 中 并从 Cepb 软件的角度进行高可用布局一样重要 。 默认的Cepb 部
署是不知道非交互式组件的,如机架、行和数据中心 。 在初始化部署之后,我们需要按要求来定制布
局 。 举个例子 .如果你执行 ceph osd tree 命令.你会注意到在 root 下只有主机和 OSD ,这就是默认设
置 。 下面让我们尝试将这些主机分配到机架 :
1)执行 ceph osd tree 来获取当前的集群布局

2)在Ceph集群布局中添加几个新的机架:
3)移动主机到指定的机架下:
4)现在,移动每一个机架到默认根下:
5)检查新的布局,你会发现所有的主机都已经移动到指定的机架下。使用这种方法,可以定制CRUSH
布局来补充物理布局:
PG
#ceph osd crush add-bucket rack01 rack
#ceph osd crush add-bucket rack02 rack
#ceph osd crush add-bucket rack03 rack
#ceph osd crush move ceph-node1 rack=rack01
#ceph osd crush move ceph-node2 rack=rack02
#ceph osd crush move ceph-node3 rack=rack03
#ceph osd crush move rack03 root=default
#ceph osd crush move rack02 root=default
#ceph osd crush move rack01 root=default

当 Ceph 集群接收到数据存储的请求时,它被分散到各个 PG 中 。 然而, CRUSH 首先
将数据分解成一组对象,然后根据对象名称、复制级别和系统中总的 PG 数目等信息执行散列操作,再
将结果生成 PG ID o PG 是一组对象的逻辑集合,通过复制它到不同的 OSD 上来提供存储系统的可靠性
。 根据 Ceph 池的复制级别,每个 PG 的数据会被复制并分发到 Ceph集群的多个 OSD 上 。 可以将
PG 看成一个逻辑容器,这个容器包含多个对象,同时这个逻辑容器被映射到多个 OSD 上 。 PG 是保障
Ceph 存储系统的可伸缩性和性能必不可少的部分 。
没有 PG ,在成千上万个 OSD 上管理和跟踪数以百万计的对象的复制和传播是相当困
难的 。 没有 PG 的情况下管理这些对象所消耗的计算资源也是噩梦 。 与独立的管理每一个对象不同的
是,我们的系统只管理包含大量对象的 PG 。 这使得 Ceph 成为一个更易于管理和更易上手的系统 。
每个 PG 需要一定的系统资源(如 CPU 和内存),因为每个 PG 需要管理 多个对象 。 因此应该精心计算
集群中 PG 的数量 。 一般来说,增加集群 PG 的数 量能够降低每个 OSD 上的负载,但是应该以规范的
方式进行增加 。 建议每个 OSD 上放置 50 - 100 个PG 。 这是为了避免 PG 占用 OSD 节点太多的资源
。 随着存储数据的增加,同样需要根据集群规模来调整 PG 数 。 当在集群中添加或者删除一个设备的
时候,大部分的 PG 保持不变;CRUSH 管理 PG 在整个集群内部的分布 。
PG的映射关系
PG ==CRUSH map==》 Object ==CRUSH map==》 OSD
计算PG数
对于一个在生产环境中的 ceph分布式存储 集群中,提前根据需求和配置规划好 PG 是非常重要的,随
着使用时间的积累和 ceph 集群的不断扩展我们跟需要 ceph集群的性能能够不断的跟进
计算 Ceph 集群的PG 数的公式如下:
PG 总数 = (OSD 总数 * 100)/ 最大副本数
结果必须舍入到最接近2的N次幂的值。比如如果ceph 集群有160个OSD 且副本数是3,这样根据公
式计算得到的PG 总数是 5333.3,因此舍入到这个值到最近的 2 的N次幂的结果就是8192个PG,再根
据你所创建的存储池规划,所有的 pool 的PG数加起来是不能超过集群中 PG 的总量的。
我们还应该计算 Ceph集群中每一个POOL (池)的PG 总数。计算公式如下:
剩余24页未读,继续阅读
















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0