暂未分类
未读前言在某些场景下Ceph集群会出现stale的情况,也就是ceph集群PG的僵死状态,这个状态实际上是无法处理新的请求了,新的请求过来只会block,那么我们如何去恢复环境
实践过程首先模拟stale环境,这个比较好模拟
设置副本2,然后同时关闭两个OSD(不同故障域上),然后删除这两个OSD
集群这个时候就会出现stale的情况了,因为两份数据都丢了,在一些环境下,数据本身就是临时的或者不是那么重要的,比如存储日志,这样的环境下,只需要快速的恢复环境即可,而不担心数据的丢失
处理过程首先用ceph pg dump|grep stale 找出所有的stale的pg
然后用 ceph force_create_pg pg_id
如果做到这里,可以看到之前的stale的状态的PG,现在已经是creating状态的了,这个时候一个关键的步骤需要做下
就是重启整个集群的OSD,在重启完成了以后,集群的状态就会恢复正常了,也能够正常的写入新的数据了,对于老的数据,做下清理即可
变更记录
Why
Who
When
创建
武汉-运维-磨渣
2016-11-14
暂未分类
未读一、前言本章很简单,就是预估集群恢复的时间,这个地方是简单的通过计算来预估需要恢复的实际,动态的显示
二、代码12345678910111213141516171819202122232425262728293031323334353637#!/usr/bin/env python# -*- coding: UTF-8 -*-import osimport sysimport commandsimport jsondef main(): gettime()def conversecs(sec): d = sec/86400 h = sec%86400/3600 m = sec%3600/60 s = sec%60 return "remain time:%s day %s hour %s min %s sec" %(d,h,m,s)def gettime(): try: recover_time = commands.getoutput('timeout 10 ceph -s -f json 2& ...
这是一篇分享文,作者因为最近想深入研究下ceph的cache pool,作者写的文章非常的好,这里先直接翻译这篇文章,然后再加入我自己的相关数据
blog原文作者想启动blog写下自己的Openstack和Ceph的相关经验,第一个话题就选择了 Ceph cache tiering , 作者的使用场景为短时间的虚拟机,用来跑测试的,这种场景他们准备用Nvme做一个缓冲池来加速的虚拟机
cache 相关的一些参数
123456target_max_bytestarget_max_objectscache_target_dirty_ratiocache_target_full_ratiocache_min_flush_agecache_min_evict_age
Jewel版本还新加入了一个参数
1cache_target_dirty_high_ratio
作者的想法是先把数据写入到缓冲池当中,等后面某个时刻再写入到真实的存储池的当中
Flushing vs. EvictingFlushing是将缓冲池中的数据刷到真实的存储池当中去,但是并不去删除缓冲池里面缓存的数据,只有clean的数据 ...
ceph Vol 45 Issue 11.unfound objects blocking cluster, need help!
Hi,
I have a production cluster on which 1 OSD on a failing disk was slowing the whole cluster down. I removed the OSD (osd.87) like usual in such case but this time it resulted in 17 unfound objects. I no longer have the files from osd.87. I was able to call “ceph pg PGID mark_unfound_lost delete” on 10 of those objects.
On the remaining objects 7 the command blocks. When I try to do “ceph pg PGID query” on this PG it also b ...
前言部署集群的时候权重是默认生成的,这个是根据磁盘大小分配的,我们有的时候需要去修改一下这个默认权重
修改如果统一的初始值,那么直接添加参数即可
1osd_crush_initial_weight
如果想自己添加算法,那么就根据下面的去做就可以了
centos+jewel修改:/usr/lib/ceph/ceph-osd-prestart.sh
1defaultweight=`df -P -k $data/ | tail -1 | awk '{ d= $2/107374182 ; r = sprintf("%.4f", d); print r }'`
修改这个地方的值就可以了
1defaultweight=`echo 2`
centos+hammer修改 /etc/init.d/ceph
1defaultweight="$(df -P -k $osd_data/. | tail -1 | awk '{ print sprint ...
ceph Vol 45 Issue 2CephFS: No space left on device
After upgrading to 10.2.3 we frequently see messages like
‘rm: cannot remove ‘…’: No space left on device
The folders we are trying to delete contain approx. 50K files 193 KB each.
The cluster state and storage available are both OK:
cluster 98d72518-6619-4b5c-b148-9a781ef13bcb health HEALTH_WARN mds0: Client XXX.XXX.XXX.XXX failing to respond to cache pressure mds0: Client XXX.XXX.XXX.XXX failing to respond ...
前言zabbix里面有个功能是自动发现,比如文件系统和网卡的获取的时候,因为预先无法知道这个网卡的名称,所以就有了这个自动发现的功能,这里我是因为要用到存储池的自动发现,所以需要对数据进行生成
实现我们看下原生的接口的数据类型:
12[root@lab8106 ~]# zabbix_get -s 127.0.0.1 -k "net.if.discovery"{"data":[{"{#IFNAME}":"enp3s0"},{"{#IFNAME}":"virbr0-nic"},{"{#IFNAME}":"docker0"},{"{#IFNAME}":"enp4s0"},{"{#IFNAME ...
前言本章介绍如何去自定义一个zabbix自动发现的整个流程
过程首先需要在模板当中创建一个自动发现的规则,这个地方只需要一个名称和一个键值,例如
名称:Ceph Cluster Pool Discovery
键值:ceph.pools
过滤器中间要添加你需要的用到的值宏我的数据是:
12[root@lab8106 ~]# zabbix_get -s 127.0.0.1 -k ceph.pools{"data":[{"{#POOLNAME}":"rbd"},{"{#POOLNAME}":"metedata"},{"{#POOLNAME}":"data"}]}
这里我的宏就是
1{#POOLNAME}
然后要创建一个监控项原型:也是一个名称和一个键值:
12- 名称:test on $1- ...
前言docker是一个管理工具,在操作系统之上提供了一个新的独立轻环境,好处是本地提供了一个基础镜像,然后基于镜像再运行环境,也可以把环境重新打包为镜像,管理起来类似于git,感觉非常的方便,并且能够做到一处提交,处处可以取到相同的环境,大大的减少了因为环境偏差造成的系统不稳定
目前有不少生成环境已经把ceph和docker结合在一起运行了,这个有的是确实能够理解docker的好处,也能够有技术力量去进行维护,这个地方相当于两套系统了,并且关于技术的传递也增加了难度,特别是一套系统是docker+ceph的环境,并且又出现相关人员离职的情况,新来的人如果不是技术很熟,之前的技术文档没有记录很全的话,再去运维这一套系统还是比较有难度的
本篇目的是记录一下docker与ceph的结合的方式,关于ceph和docker的分与合,只有做到能剥离的系统,才不会因为技术原因受限
实践配置docker的基础环境拉取基础镜像这个是拉取的灵雀云的docker仓库的centos
1docker pull index.alauda.cn/library/centos
启动docker进程,并且设置自启动
1 ...
暂未分类
未读前言首先来一段英文关于PG和PGP区别的解释:
PG = Placement GroupPGP = Placement Group for Placement purpose
pg_num = number of placement groups mapped to an OSDWhen pg_num is increased for any pool, every PG of this pool splits into half, but they all remain mapped to their parent OSD.Until this time, Ceph does not start rebalancing. Now, when you increase the pgp_num value for the same pool, PGs start to migrate from the parent to some other OSD, and cluster rebalancing starts. This is how PGP p ...