一、什么是ceph以及ceph的应用
什么是ceph以及ceph的应用
一、Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统。
二、ceph的系统架构
1.Clients:客户端(数据用户)
2.cmds:Metadata server cluster,元数据服务器(缓存和同步分布式元数据)
3.cosd:Object storage cluster,对象存储集群(将数据和元数据作为对象存储,执行其他关键职能)
4.cmon:Cluster monitors,集群监视器(执行监视功能)
三、ceph的核心组件:Ceph OSD,Ceph Monitor,Ceph MDS
1.ceph osd :主要功能包括存储数据,处理数据的复制、恢复、回补、平衡数据分布,并将一些相关数据提供给 Ceph Monitor
2.ceph Monitor:ceph的监控器,主要功能是维护整个集群健康状态,提供一致性的决策,包含了Monitor map、OSD map、PG(Placement Group)map和CRUSH map
3.ceph mds:全称是Ceph Metadata Server,主要保存的是Ceph文件系统(File System)的元数据(metadata);
4.ceph mgr:负责跟踪运行时指标和Ceph集群的当前状态,包括存储利用率,当前性能指标和系统负载,Ceph Manager 守护进程还托管基于python的插件来管理和公开Ceph集群信息,包括基于Web的Ceph Manager Dashboard和 REST API。高可用性通常至少需要两个管理器.
四、Ceph组件及概念介绍
1、Object:ceph最底层的存储最小单位是Object–对象,每个Object包含元数据和原始数据
2、PG:一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据。
3、CRUSH:CRUSH是Ceph底层使用的数据分布算法,让数据分配到预期的地方
4、RBD:RBD全称RADOS block device,是Ceph对外提供的块设备服务
5、RGW:RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容。
6、CephFS 文件存储: CephFS全称Ceph File System,是Ceph对外提供的分布式文件存储服务
Ceph基础知识和基础架构认识
Ceph是一套开源的,分布式存储系统。具有可靠性高,性能优良,可伸缩,支持就删码和副本模式,管理简单等特点。
Ceph的核心组件包括:Ceph Monitor、Ceph MDS,Ceph OSD,Ceph Manager。
(2)Ceph MDS:全称是Ceph MetaData Server,主要保存的文件系统服务的元数据,但对象存储和块存储设备是不需要使用该服务的。
目前使用两种存储引擎:filestore bluestore
bluestore简介:不在使用文件系统,直接管理物理hdd或ssd
(1)RADOSGW是一套基于当前流行的RESTFUL协议的网关,并且兼容S3和Swift。
(2)RBD通过Linux内核客户端和QEMU/KVM驱动来提供一个分布式的块设备。
(3)CEPH FS通过Linux内核客户端和FUSE来提供一个兼容POSIX的文件系统。
object与pg的关系:由于object的数量很多,所以Ceph引入了pg的概念用于管理object,每个object最后都会通过hash计算映射到某个pg中,一个pg可以包含多个object。
总结以上,下图表明了存储数据,object、pg、pool、osd、存储磁盘的关系
Ceph****常用操作
1****集群操作
ceph 0.9X版本以前
启动进程
service ceph start mon #启动节点所有mon
service ceph start mon.$id #启动指定mon进程
例:service ceph start mon.ceph1
service ceph start osd #停止节点所有osd进程
service ceph start osd.$id #启动指定osd进程
例:service ceph start osd.1
停止进程
service ceph stop mon
service ceph stop osd
查看进程状态
service ceph status mon service ceph status osd
ceph 10.X版本以后
启动进程
systemctl start ceph-mon.targetsystemctl start ceph-mon@$id
例:systemctl start ceph-mon@ceph1
systemctl start ceph-osd.targetsystemctl start ceph-osd@id
例:systemctl start ceph-osd@2
停止进程:stop
查看进程状态:status
2****查看集群状态
ceph -s #查看集群状台
ceph health detail #当集群报警时,根据此命令可查看详细的报警信息
3****查看集群使用量
ceph df #显示集群的使用率
ceph osd df #使用
4****查看map信息
ceph mon dump #查看mon map
ceph osd dump #查看osd map
ceph pg dump #查看pg map
ceph osd crush dump #查看crush map
5****查看osd的逻辑结构
ceph osd tree
6****组件状态
mon状态
ceph health detail #查看mon健康状态
ceph quorum_status #查看mon选举状态
(1)probing 探测
mon每次启动,会保持一段时间的这个状态,并通过monmap查找其余的mon监视器,当mon为单个时,mon会快速通过这种状态,若为多个则会在选举完成此状态通过此状态。若只是用两个mon,那么mon将无期限的保持这种状态。
(2)electing 选举
mon处于选举状态,一般很快完成,若长时间出现此类情况,主要由时钟偏差导致或者通信故障导致
(3)synchronizing 同步
表示此mon正在与其他mon进行数据同步,monitor数据越小此状态保持时间越短
(4)leader 或peon
mon间时钟不同步,导致出现此种状态
osd状态
ceph osd tree #查看
in out up down
(1) in,表示osd在使用的集群中,up为工作态,down为停止状态
(2) out,标识osd不在使用的集群中,up为工作台,down为停止状态
pg状态
ceph pg dump # 查看
ceph pg dump_stuck [unclean|inactive|stale|undersized|degraded] #查看不同状态的pg
(1)createing 创建
当创建pg时,可查看到此状态
(2)peering 对等
可理解为pg放入osd的过程。当增加减少osd或者调整osd的权重时,会导致pg映射改变,pg调整在osd的位置,对等(放入)到新的osd。
(3)active 活动
正常的pg,显示状态
(4)clean 清洁
pg对等主osd和副本osd成功,并且pg映射的osd中存储的对象没有异常
(5)degraded 降级
对象写入主osd后pg进入降级状态,在写入副本osd后,解除异常
或者以3副本为例,当pg映射的3个osd中,其中一个出现异常,会导致pg进入降级状态
(6)reoverying 同步
osd异常或者修改权重后pg保存osd映射信息需要更新,此时属于同步状态
(7)backfilling 回填
当增加减少osd或调整osd的权重时,pg移动到新osd的过程,称为回填
(8)remapped重新映射
pg映射的主osd更改,pg迁移到新的osd,此时老osd会一直保持服务,直到pg数据迁移完成。
(9)stale陈旧
osd不能像mon报告pg信息,mon则将此osd中的pg标记为stale,标识pg信息陈旧
7****常用pool操作
查看池
ceph osd pool ls
创建池
ceph osd pool create {pool-name} {pg-num} [{pgp-num}] [replicated] [crush-ruleset-name] [expected-num-objects]
例:ceph osd pool create volumes 128 128 replicated replicated_ruleset
删除池
ceph osd pool delete {pool-name} [{pool-name} --yes-i-really-really-mean-it] #参数mon_allow_pool_delete=true
池配额
ceph osd set-quota {pool-name} [max_object {obj-count}] [max_bytes {bytes}]
#取消配额需要将,valume的值为0即可
重命名池
ceph osd pool rename {current-poo-name} {new-pool-name}
池快照
ceph osd pool mksnap {pool-name} {snap-name} #添加快照
ceph osd pool rmsnap {pool-name} {snap-name} #删除快照
rados -p {pool-name} lssnap #查看快照
rados rollback -p {pool-name} {snap-name} #回复快照
池参数
ceph osd pool get {pool-name} {key} #获取
ceph osd pool set {pool-name} {key} {value} #设置
8****常用rbd操作
查看池中rbd
rbd -p {pool-name} ls
创建rbd
rbd create {pool-name}/{rbd-name} --size {size} --image-format 2
查看rbd信息
rbd info {pool-name}/{rbd-name}
rbd剪切操作
rbd mv 池名/块名 新池/新块名
rbd复制操作
rbd cp 池名/块名 新池/新块名
rbd导出
rbd export {pool-name}/{rbd-name} 导出位置
rbd导入
rbd import 文件 {pool-name}/{rbd-name} --image-format 2
rbd快照
rbd snap create {pool-name}/{rbd-name}@{rbd-snapname} #创建
rbd snap ls {pool-name}/{rbd-name} #查看
rbd snap rollback {pool-name}/{rbd-name}@{rbd-snapname}#回滚
rbd snap rm {pool-name}/{rbd-name}@{rbd-snapname} #删除
rbd snap purge {pool-name}/{rbd-name} #清理所有
rbd克隆
rbd snap protect {pool-name}/{rbd-name}@{rbd-snapname} #保护
rbd clone {pool-name}/{rbd-name}@{rbd-snapname} {pool-name}/{rbd-clone-name}
rbd flatten {pool-name}/{rbd-clone-name} #取消合并信息
rbd snap unprotect {pool-name}/{rbd-name}@{rbd-snapname} #取消保护
rbd实际使用大小统计
rbd diff {pool-name}/{rbd-name} | awk '{SUM+=$2}END{print SUM/1024/1024 "MB"}'
9 crush****操作
(1)创建
ceph osd crush add-bucket $HOSTNAME host
(2)删除
ceph osd crush rm $HOSTNAME
(4)查看
ceph osd crush rule ls
(5)osd加入crush规则
ceph osd crush add osd.$id weight host=$HOSTNAME
host加入到root下
ceph osd crush move $HOSTNAME root=$ROOTNAME
调整权重
ceph osd crush reweight osd.$id {weight}
ceph osd crush set $osd_id $set_weight root={rootname} host={hostname}
crushmap相关操作
ceph osd getcrushmap -o {compiled-crushmap-filename} #导出crushmap
crushtool -d {compiled-crushmap-filename} -o {decompiled-crushmap-filename} #反编译为可阅读文件
crushtool -c {decompiled-crush-map-filename} -o {compiled-crush-map-filename} #编译为2进制文件
ceph osd setcrushmap -i {compiled-crushmap-filename} #导入crushmap
10pg****计算和修复
1)计算pool应该设置多少pg
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JLneN211-1616384745166)(file:///C:/Users/V-LIUY~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg)]
#官网推荐,每个osd中的pg理想值时100,若pg数过大会导致,节点负载过高
2) ceph pg scrub {pg-id} #清洗
3) Scrub errors问题修复:
Ceph health detail 确认有异常的pgid
ceph pg repair {pg-id} #修复问题pg
11****添加mon
(1)修改配置文件
sed -i "/mon initial members =/ s/$/,$HOSTNAME/g" /etc/ceph/ceph.conf #添加mon所在的hostname
sed -i "/mon host =/ s/$/,$IP/g" /etc/ceph/ceph.conf #添加mon使用的ip,使用192.192.*.*
echo -e "" >> /etc/ceph/ceph.conf
echo -e "[mon.$HOSTNAME]" >> /etc/ceph/ceph.conf
echo -e "host = $HOSTNAME" >> /etc/ceph/ceph.conf
echo -e "mon addr = $IPPORT" >> /etc/ceph/ceph.conf
echo -e "" >> /etc/ceph/ceph.conf
(2)创建临时文件夹
mkdir /tmp_mondir/
(3)导出mon的key文件
ceph auth get mon. -o /tmp_mondir/key-filename
(4)导出mon的monmap
ceph mon getmap -o /tmp_mondir/map-filename
(5)创建mon的运行目录
mkdir -p /var/lib/ceph/mon/ceph-$HOSTNAME
(6)激活新建mon
ceph-mon -i $HOSTNAME --mkfs --monmap /tmp_mondir/map-filename --keyring /tmp_mondir/key-filename
(8)删除临时文件放置目录
rm -rf /tmp_mondir/
(7)启动mon
service ceph start mon
12****添加osd
参见创建osd
13****减少mon
(1)清除mon.id
ceph mon remove $id #这里指的id例:mon.ceph12 id为ceph12
(2)停止mon进程
service ceph stop mon.$id
(3)清除配置文件ceph.conf中的配置文件。
14****减少osd
减少osd会造成集群数据同步,若同步速率过高,会导致客户端连接缓慢,需要优先调节同步速度
(1)调整同步速度
ceph tell osd.* injectargs "--osd_recovery_max_active 3" #调整同步速度
ceph tell osd.* injectargs "--osd_max_backfills 1" #调整回填速度
(2)设置不同步不会填
ceph osd set nobackfill
ceph osd set norecover
(3)去除crush规则
ceph osd crush remove osd.$i hostname
(4)取消不同步,不会填
ceph osd unset nobackfillceph osd unset norecover
(5)将osd剔除集群
ceph osd out $i
(6)停止osd进程
serivce ceph stop $i
(7)删除osd认证秘钥
ceph auth del osd.$i
(8)删除osdID
ceph osd rm $i
(9)进入ceph.conf清除osd的相关配置,同步配置文件
15mgr****相关操作
(1)查看mgr模块
ceph mgr module ls
(2)开启模块
ceph mgr module enable <module>
(3)关闭模块
ceph mgr module disable <module>
(4)查看模块地址
ceph mgr services
16mon****时钟异常
mon异常报警如下:
解决方式
(1)检查ntp服务,保障ntp服务正常
(2)若ntp无异常,连接ntp服务器,查看状态
ntpq -p
(3)同步ntp时间
Ntpdate ntp.server
- 时间写入硬件
date && hwclock -w
17mon****更换IP地址
(1)清除老的mon
ceph mon remove $oldid
(2)加入新的mon
rm /var/lib/ceph/mon/*mkdir -p /var/lib/ceph/mon/ceph-$newid #创建运行ceph auth get mon. -o /tmp/keyringceph-mon -i $newid --mkfs --monmap monmap --keyring keyringchown -R ceph:ceph /var/lib/ceph/mon/ceph-$newidservice ceph start mon.$newid #0.94版本systemctl start ceph-mon@$newid #12新版本
(3)更新配置文件
mon initial members = ipaddr #配置文件修改mon host = $hostname #配置文件修改[mon.$ID] #配置文件末尾添加host = $hostname #配置文件末尾添加mon addr = $ipaddr:6789 #配置文件末尾添加
官网方式
ceph-mon -i $oldid --extract-monmap /tmp/monmapcp /var/lib/ceph/mon/ceph-$oldid/keyriny /tmp/monmapmonmaptool --add $newid ipaddr /tmp/monmapmonmaptool /tmp/monmap --rm $oldidceph-mon -i $newid --mkfs --monmap monmap --keyring keyring
**18 pools have many more objects per pg than average**
原因:
object/pg*3>参数”mon pg warn max object skew”设定值 #默认10负值禁用
查看报警池
object数=34825
pg数=1024
34825/1024=34 34/3(poolsize)=11.333 >10 #报警
解决方式:
ceph tell osd.* config set mon_pg_warn_max_object_skew -1ceph tell mon.* config set mon_pg_warn_max_object_skew -1
19****集群使用阈值调整
ceph osd set-backfillfull-ratio #回填过程中若osd使用量超过设定值,将发出警告并停止对应osd的回填操作
ceph osd set-nearfull-ratio #当集群使用率到达此设定值,发出警告,集群容量使用率接近满
ceph osd set-full-ratio #当集群使用率到达此设定值,集群将停止工作。
-mon -i $oldid --extract-monmap /tmp/monmap
cp /var/lib/ceph/mon/ceph-$oldid/keyriny /tmp/monmap
monmaptool --add $newid ipaddr /tmp/monmap
monmaptool /tmp/monmap --rm $oldid
ceph-mon -i $newid --mkfs --monmap monmap --keyring keyring
18 pools have many more objects per pg than average
原因:object/pg*3>参数”mon pg warn max object skew”设定值 #默认10负值禁用查看报警池object数=34825pg数=102434825/1024=34 34/3(poolsize)=11.333 >10 #报警解决方式:
ceph tell osd.* config set mon_pg_warn_max_object_skew -1
ceph tell mon.* config set mon_pg_warn_max_object_skew -1
**19****集群使用阈值调整**ceph osd set-backfillfull-ratio <ratio> #回填过程中若osd使用量超过设定值,将发出警告并停止对应osd的回填操作ceph osd set-nearfull-ratio <ratio> #当集群使用率到达此设定值,发出警告,集群容量使用率接近满ceph osd set-full-ratio <ratio> #当集群使用率到达此设定值,集群将停止工作。
一、什么是ceph以及ceph的应用相关推荐
- 【Ceph】Ceph常用命令|Ceph配置参数和命令解析|ceph管理
目录 常用命令 查看状态 启动/停止 分类命令 ceph mon ceph mds ceph osd ceph pg ceph osd pool rados ceph-deploy 块设备|rbd的一 ...
- 【ceph】ceph 网络问题和工具
yum install -y net-tools netstat -anp|grep ganesha.nfsd ceph daemon /var/run/ceph/ceph-client.admin. ...
- 【ceph】Ceph之PG状态详解--研读笔记
原文:分布式存储Ceph之PG状态详解 - 简书 Ceph中一些PG相关的状态说明和基本概念说明.故障模拟_pansaky的博客-CSDN博客 1. PG介绍 继上次分享的<Ceph介绍及原理架 ...
- 【Ceph】Ceph介绍、原理、架构
目录 理解Ceph的三种存储接口:块设备.文件系统.对象存储 干货|非常详细的 Ceph 介绍.原理.架构 1. Ceph架构简介及使用场景介绍 1.1 Ceph简介 1.2 Ceph特点 1.3 C ...
- ceph文件服务器,Ceph分布式存储实战(6)——Ceph存储配置(CephFS的挂载)
一.什么是POSIX标准 有一种情况是,在windows上写的代码,放到Linux上去运行居然报错,为什么? 比如在代码中需要创建一个进程,linux下是fork函数,windows下是creatpr ...
- ceph存储 ceph集群监视器设置
监视器配置参考 了解如何配置Ceph的监视器是建立一个可靠的Ceph的存储集群的重要组成部分.所有Ceph的存储集群中至少有一个监视器.监视器配置通常是一致的,但你可以添加,删除或替换集群中的一个监视 ...
- ceph存储 ceph整体学习记录(未整理较乱)
转载:https://www.iyunv.com/thread-126458-1-4.html ceph源码下载: http://ceph.com/download/ 主要文档下载连接: http:/ ...
- 【ceph】ceph分布式存储MDS(各种状态、源码)
目录 1. mds存储 2. mds冷备/热备 3. mds主备切换策略 4. 节点失效机制 5. 恢复过程 6. resolve阶段的事件 7. 重建分布式缓存和锁状态 Ceph MDS State ...
- 【ceph】CEPH 单活MDS主从切换流程|REPLAY
代码基于ceph nautilus版本 MDS关键概念 想要理解MDS切换过程,首先需要理清一些基本概念. MDSMAP 包含整个ceph集群的所有mds的状态信息:fs个数.fs名称.各mds状态. ...
最新文章
- Google Maps Android API v2官网例子使用说明
- Windows原生运行Linux的技术细节
- 使用python的Flask实现一个RESTful API服务器端
- c 串转string_string::c_str()、string::c_data()及string与char *的正确转换
- postgresql pgsql登录及创建用户
- 将windows下编辑好的文件(GBK)转换成Linux下的格式(UTF8)
- go语言mysql删除记录_MySQL数据库删除操作-Go语言中文社区
- zk4元年拆解_科比5 Protro开箱测评 zk5元年拆解赏析
- 正则表达式表示的IP
- linux 添加接口永久,在Linux中,配置虚拟网络接口
- 野心勃勃的NoSQL新贵 MongoDB应用实战(5)
- zip压缩工具与tar打包并压缩工具
- 如何从零开发一个复杂深度学习模型
- 记element + xlsx 导出表格数据重复的坑
- Spring源码学习一,下载Spring源码并配置gradle环境
- 超链接的其他用法,复合选择器
- 什么是服务器虚拟化,虚拟化的优势!
- 人工智能轨道交通行业周刊-第43期(2023.4.24-5.7)
- QNX铁路安全软件--QNX在铁路系统领域应用
- 2016届阿里实习生java研发岗一面二面三面四面经验分享