Ceph s3 bucket space 没有释放

Ceph s3 bucket space not freeing up

我一直在用 s3 测试 Ceph

我的测试环境是一个 3 节点,每个节点有一个 10GB 的数据磁盘,所以 30GB 它设置为复制 3 次。所以我有“15290 MB”space可用。

我让 S3 存储桶正常工作并一直在上传文件,然后填满了存储空间,尝试删除上述文件,但磁盘仍然显示为已满

cluster 4ab8d087-1802-4c10-8c8c-23339cbeded8
 health HEALTH_ERR
        3 full osd(s)
        full flag(s) set
 monmap e1: 3 mons at {ceph-1=xxx.xxx.xxx.3:6789/0,ceph-2=xxx.xxx.xxx.4:6789/0,ceph-3=xxx.xxx.xxx.5:6789/0}
        election epoch 30, quorum 0,1,2 ceph-1,ceph-2,ceph-3
 osdmap e119: 3 osds: 3 up, 3 in
        flags full,sortbitwise,require_jewel_osds
  pgmap v2224: 164 pgs, 13 pools, 4860 MB data, 1483 objects
        14715 MB used, 575 MB / 15290 MB avail
             164 active+clean

我不确定如何取回磁盘 space?

谁能告诉我做错了什么或错过了什么

我从 c​​eph 开始,遇到了同样的问题。

  1. 尝试 运行启用垃圾收集器

列出将要删除的内容

radosgw-admin gc list --include-all

然后运行它

radosgw-admin gc process
  1. 如果它不起作用(就像我的大部分数据一样)

找到包含您的数据的存储桶:

ceph df

通常您的 S3 数据进入默认池 default.rgw.buckets.data

从每个对象中清除它 /!\ 你将丢失所有数据 /!\

rados purge default.rgw.buckets.data --yes-i-really-really-mean-it   

我不知道为什么 ceph 暂时不自己清除这些数据(仍在学习中...)。

感谢 Julien 提供此信息

你对第 1 步和第 2 步的理解是正确的

当你 运行

radosgw-admin gc list --include-all

你看到这样的例子

[ { "tag": "17925483-8ff6-4aaf-9db2-1eafeccd0454.94098.295\u0000", "time": "2017-10-27 13:51:58.0.493358s", "objs": [ { "pool": "default.rgw.buckets.data", "oid": "17925483-8ff6-4aaf-9db2-1eafeccd0454.24248.3__multipart_certs/boot2docker.iso.2~UQ4MH7uZgQyEd3nDZ9hFJr8TkvldwTp.1", "key": "", "instance": "" }, { "pool": "default.rgw.buckets.data", "oid": "17925483-8ff6-4aaf-9db2-1eafeccd0454.24248.3__shadow_certs/boot2docker.iso.2~UQ4MH7uZgQyEd3nDZ9hFJr8TkvldwTp.1_1", "key": "", "instance": "" }, ....

如果你注意到时间

2017-10-27 13:51:58.0.493358s

当运行宁

radosgw-admin gc process

它只会 clear/remove 比时间字段更早的部分

例如,我可以 运行 "radosgw-admin gc process" 一遍又一遍,但直到“2017-10-27 13:51:58.0.493358s”之后文件才会被删除

不过你也是对的

rados purge default.rgw.buckets.data --yes-i-really-really-mean-it

同样有效