这篇文章主要讲解了“如何缓解index shard过大造成的影响”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何缓解index shard过大造成的影响”吧!
下面这些都是属于应急操作,属于快速止血止痛,部分操作属高危,一定要谨慎使用。
下面的几个参数只是用例,具体根据各位线上情况进行调整,但是不宜过大。
osd_op_thread_timeout = 90 #default is 15 osd_op_thread_suicide_timeout = 300 #default is 150 filestore_op_thread_timeout = 180 #default is 60 filestore_op_thread_suicide_timeout = 300 #default is 180 osd_scrub_thread_suicide_timeout = 300 #如果出现scrub导致的op超时可以适当增加这个
在可以停OSD的情况下,可以对OSD进行compact操作,推荐在ceph 0.94.6以上版本,低于这个版本有bug。
1. 开启noout操作 ceph osd set noout 2. 停OSD服务 systemctl stop ceph-osd@<osd-id> 或者 /etc/init.d/ceph stop osd.<osd-id> 3. 检查osd进程 ps -ef| grep "id <osd_id>" 4. 在ceph.conf中对应的[osd.id]加上下面配置 leveldb_compact_on_mount = true 5. 启动osd服务 systemctl start ceph-osd@<osd-id> 或 /etc/init.d/ceph start osd.<osd-id> 6. 确认进程运行中 ps -ef| grep "id <osd-id>" 7. 使用ceph -s命令观察结果,最好同时使用tailf命令去观察对应的OSD日志. 等所有pg处于active+clean之后再继续下面的操作 8. 确认compact完成以后的omap大小: du -sh /var/lib/ceph/osd/ceph-$id/current/omap 9. 删除osd中临时添加的leveldb_compact_on_mount配置 10. 取消noout操作(视情况而定,建议线上还是保留noout): ceph osd unset noout
对bucket做reshard操作,可以实现调整bucket的shard数量,实现index数据的重新分布。
仅支持ceph 0.94.10以上版本,需要停bucket读写,有数据丢失风险,慎重使用,出了问题本人概不负责。
注意下面的操作一定要确保对应的bucket相关的操作都已经全部停止,之后使用下面命令备份bucket的index radosgw-admin bi list --bucket=<bucket_name> > <bucket_name>.list.backup 通过下面的命令恢复数据 radosgw-admin bi put --bucket=<bucket_name> < <bucket_name>.list.backup 查看bucket的index id root@demo:/home/user# radosgw-admin bucket stats --bucket=bucket-maillist { "bucket": "bucket-maillist", "pool": "default.rgw.buckets.data", "index_pool": "default.rgw.buckets.index", "id": "0a6967a5-2c76-427a-99c6-8a788ca25034.54133.1", #注意这个id "marker": "0a6967a5-2c76-427a-99c6-8a788ca25034.54133.1", "owner": "user", "ver": "0#1,1#1", "master_ver": "0#0,1#0", "mtime": "2017-08-23 13:42:59.007081", "max_marker": "0#,1#", "usage": {}, "bucket_quota": { "enabled": false, "max_size_kb": -1, "max_objects": -1 } } Reshard对应bucket的index操作如下: 使用命令将"bucket-maillist"的shard调整为4,注意命令会输出osd和new两个bucket的instance id root@demo:/home/user# radosgw-admin bucket reshard --bucket="bucket-maillist" --num-shards=4 *** NOTICE: operation will not remove old bucket index objects *** *** these will need to be removed manually *** old bucket instance id: 0a6967a5-2c76-427a-99c6-8a788ca25034.54133.1 new bucket instance id: 0a6967a5-2c76-427a-99c6-8a788ca25034.54147.1 total entries: 3 之后使用下面的命令删除旧的instance id root@demo:/home/user# radosgw-admin bi purge --bucket="bucket-maillist" --bucket-id=0a6967a5-2c76-427a-99c6-8a788ca25034.54133.1 查看最终结果 root@demo:/home/user# radosgw-admin bucket stats --bucket=bucket-maillist { "bucket": "bucket-maillist", "pool": "default.rgw.buckets.data", "index_pool": "default.rgw.buckets.index", "id": "0a6967a5-2c76-427a-99c6-8a788ca25034.54147.1", #id已经变更 "marker": "0a6967a5-2c76-427a-99c6-8a788ca25034.54133.1", "owner": "user", "ver": "0#2,1#1,2#1,3#2", "master_ver": "0#0,1#0,2#0,3#0", "mtime": "2017-08-23 14:02:19.961205", "max_marker": "0#,1#,2#,3#", "usage": { "rgw.main": { "size_kb": 50, "size_kb_actual": 60, "num_objects": 3 } }, "bucket_quota": { "enabled": false, "max_size_kb": -1, "max_objects": -1 } }
Jewel以上版本可用
使用下面的命令开启pool的noscrub和deep-scrub # ceph osd pool set <pool-name> noscrub 1 # ceph osd pool set <pool-name> nodeep-scrub 1 使用下面命令确认配置 # ceph osd dump | grep <pool-name> pool 11 'pool-name' replicated size 3 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 8 pgp_num 8 last_change 800 flags hashpspool,noscrub,nodeep-scrub stripe_width 0 取消pool的noscrub和deep-scrub设置 # ceph osd pool set <pool-name> noscrub 0 # ceph osd pool set <pool-name> nodeep-scrub 0
感谢各位的阅读,以上就是“如何缓解index shard过大造成的影响”的内容了,经过本文的学习后,相信大家对如何缓解index shard过大造成的影响这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。