rgw配置删除快速回收对象

前言

做rgw测试的时候,经常会有删除文件的操作,而用默认的参数的时候,rgw是通过gc回收机制来处理删除对象的,这个对于生产环境是有好处的,把删除对业务系统的压力分摊到不同的时间点,但是测试的时候,可能需要反复的写入删除,而这种情况下,可能希望能够迅速的回收对象,那么就需要修改几个参数了

参数

主要调整下面的几个参数

1
2
3
rgw_gc_obj_min_wait = 30
rgw_gc_processor_max_time = 180
rgw_gc_processor_period = 2

删除的步骤如下

1
2
3
4
1、删除以后进入gc队列
2、等待rgw_gc_obj_min_wait时间后开始处理
3、执行rgw_gc_processor_max_time时间的gc操作
4、等待rgw_gc_processor_period时间进入下一次gc操作

调整以后,删除就能够很快的回收了

查询删除以后执行gc的时间

1
2
3
[root@lab201 ~]# radosgw-admin gc list --include-all|grep time;date
"time": "2020-09-08 17:26:20.0.873326s",
Tue Sep 8 17:25:52 CST 2020

可以看到上面执行删除操作后,通过命令查询下一次gc的时间与当前的时间差就是30s左右

##上面的gc相关的参数是哪里控制的
做了一个实验,通过给不同的rgw网关配置不同的gc参数,然后通过不同的网关去删除数据,可以看到,这个删除是由网关决定的,下面的是默认的参数做了删除操作以后查看删除的时间,可以看到是两个小时以后才开始删除,也就是rgw_gc_obj_min_wait = 7200

1
2
3
[root@lab201 ~]# radosgw-admin gc list --include-all|grep time;date
"time": "2020-09-08 19:31:01.0.24764s",
Tue Sep 8 17:31:10 CST 2020

那么这里实际上是可以给不同的网关配置不同的参数的,如果想要立刻回收空间的时候,可以配置回收快的参数,然后通过这个网关的端口去删除

控制删除线程的参数

1
rgw_gc_max_concurrent_io = 10

大量删除的时候可以考虑增大这个参数

变更记录

Why Who When
创建 武汉-运维-磨渣 2020-09-08