ceph-rgw之indexless

背景:

很多人对ceph,rgw的性能问题不太满意,主要是index pool(默认是存在一个shard里面,当一个shard越来越大时,一种极端情况是把相关的osd占满)的瓶颈,当然网上也有人提到了产生一些问题,主要问题如下:

对index pool进行scrub或deep-scrub的时候,如果shard对应的Object过大,会极大消耗底层存储设备性能,造成io请求超时。

底层deep-scrub的时候耗时过长,会出现request blocked,导致大量http请求超时而出现50x错误,从而影响到整个RGW服务的可用性。

当坏盘或者osd故障需要恢复数据的时候,恢复一个大体积的shard文件将耗尽存储节点性能,甚至可能因为OSD响应超时而导致整个集群出现雪崩。

改进方式:

考虑一个场景

如果你向ceph 上传对象时,同时也在本地或别的地方记录了元数据信息,你就可以避免使用index pool,同时也分担了ceph存储的压力。

使用indexless将会是一个不错的选择。

网址:http://www.ksingh.co.in/blog/2017/01/30/ceph-indexless-bucket-part-2/

这个网址写的已经很全了。我就不费太多口舌。

验证是否设置好indexless,可以通过radosgw-admin 去查

例如:radosgw-admin bucket stats --bucket=bucket3

有一个index_type,normal是具有索引的对象存储,别的indexless的。

另外一种是采取分片+快池的方式详情请查看https://cloud.tencent.com/developer/article/1032858

注意事项:

1.设置完indexless 不会对之前的buket的类型有影响

2.通过indexless 设置的bucket 如果里面有数据,不会给你警告,会给你直接删除bucket,object会处于游离态

3.普通 bucket 可以通过上述命令查看数量,但是indexless 看不了,usage信息不存在。

4.删除bucket不会删除里面的对象 ,但是删除方式现在只能管理员操作rgw pool来删除,需要结合一定pool 文件命名格式去删,查看rgw object bucket 存储位置以及在pool里面对象名称命名方式 (后续文档介绍),当然通过你得知道下bucket_id。

5.设置生命周期,未到时间点人为删除bucket ,删除bucket ,内部游离的object 不会随生命周期而操作。

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容