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?
谁能告诉我做错了什么或错过了什么
我从 ceph 开始,遇到了同样的问题。
- 尝试 运行启用垃圾收集器
列出将要删除的内容
radosgw-admin gc list --include-all
然后运行它
radosgw-admin gc process
- 如果它不起作用(就像我的大部分数据一样)
找到包含您的数据的存储桶:
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
同样有效
我一直在用 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?
谁能告诉我做错了什么或错过了什么
我从 ceph 开始,遇到了同样的问题。
- 尝试 运行启用垃圾收集器
列出将要删除的内容
radosgw-admin gc list --include-all
然后运行它
radosgw-admin gc process
- 如果它不起作用(就像我的大部分数据一样)
找到包含您的数据的存储桶:
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
同样有效