一般ceph.conf在不修改配置文件的情况下,好的参数都使用的默认配置,此时创建rgw用户时也会报错: rgw_init_ioctxERROR:librados::Rados::pool_create returned (34) Numerical result out of range (this can be due to a poolorplacement group misconfiguration, e.g. pg_num < pgp_numormon_max_pg_per_os...
queued_for_pg The op has been put into the queueforprocessing by its PG. reached_pg The PG has started doing the op. 噢,这个过程就是op在等待被执行。原来op本身很慢,是在队列等待 那么问题来了,队列为啥会等待呢 osd磁盘队列等待一般思路是3个,一个是磁盘有坏道,这导致某些op处理非常慢,引发后续o...
Events from the OSD as it prepares operations queued_for_pg: the op has been put into the queue for processing by its PG reached_pg: the PG has started doing the op waiting for *: the op is waiting for some other work to complete before it can proceed (a new OSDMap; for its obje...
PGRef&pg;ThreadPool::TPHandle&handle;RunVis(OSD *osd, PGRef &pg, ThreadPool::TPHandle &handle) : osd(osd), pg(pg), handle(handle) {} void operator()(OpRequestRef &op); void operator()(PGSnapTrim &op); void operator()(PGScrub &op); }; public: // cppcheck-suppress noExplicit...
PG中的主OSD将对象写入到硬盘 主OSD将数据同步到备份OSD,并等待备份OSD返回确认 主OSD将写入完成返回给客户端。 说明: Pool:存储池、分区,存储池的大小取决于底层的存储空间。 PG(placement group):一个pool内部可以有多个PG存在,Pool和PG都是抽象的逻辑概念,一个pool中有多少个PG可以通过公式计算。
Ceph中还有一个pool的概念,类似于namespace,不同的pool可以定义不同的副本数、pg数、放置策略等。每个image都必须指定pool。image的命名规范为pool_name/image_name@snapshot,比如openstack/test-volume@test-snap,表示在openstackpool中test-volumeimage的快照test-snap。因此以下两个命令效果是等同的:...
原因: osd很坑的一点是,读以及omap-get是在osd-tp线程,所以如果读慢了,会造成请求积压,这点从上面osd的history dump耗时可以进一步证明,上面osd的queued_for_pg到reached_pg这个阶段耗时比较多。 优化 观察该朋友线上环境,元数据池子每个副本域只有一个osd。其实这种部署方式是比较通用的,因为文件系统元数据池子里面...
qa: pg 2.1c is stuck peering for 67s, current state peering, last acting [11,1,5]' qa: The following counters failed to be set on mds daemons: {'mds.exported', 'mds.imported'} qa/cephfs: unmount hangs after test_single_path_authorize_on_nonalphanumeric_fsname mds: scrubbing stuck...
pg 的设置:通过ceph pg set_full_ratio和ceph pg set_nearfull_ratio命令设置的full ratio和nearfull ratio值会丢失。 MDS Maps:MDS maps 会丢失。 磁盘空间不足导致 MON DOWN 当monitor 进程检测到本地可用磁盘空间不足时,会停止 monitor 服务。Monitor 的日志中应该会有类似如下信息的输出: ...
int rados_pg_command(rados_t cluster, const char *pgstr, const char **cmd, size_t cmdlen, const char *inbuf, size_t inbuflen, char **outbuf, size_t *outbuflen, char **outs, size_t *outslen) int rados_monitor_log(rados_t cluster, const char *level, rados_log_callback_t...