我一直在用s3 测试Ceph
我的测试ENV是一个3节点,每个数据盘10GB,所以是30GB其设定为复制3次。所以我有"15290 MB"的可用空间。
我让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
我不知道如何取回磁盘空间?
有人能就我做错了什么或错过了提出建议吗
我从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管理员gc列表-包括所有
您可以看到类似的示例
[{"tag":"17925483-8ff6-4aaf-9db2-1eafeccd0454.94098.295\u0000","时间":"2017-10-27 13:51:58.0.493358s","对象":[{"pool":"default.gw.buckets.data","oid":"17925483-8ff6-4aaf-9db2-1eafeccd0454.24248.3__multipart_certs/boot2docker.iso.2~UQ4MH7uZgQyEd3nDZ9hFJr8TkvldwTp.1","键":","实例":"},{"pool":"default.gw.buckets.data","oid":"17925483-8ff6-4aaf-9db2-1eafeccd0454.24248.3__shadow_certs/boot2docker.iso.2~UQ4MH7uZgQyEd3nDZ9hFJr8TkvldwTp.1_1","键":","实例":"}。。。。
如果您注意到时间
2017-10-27 13:51:58.493358s
运行时
radosgw管理gc进程
它只会清除/删除比指定时间旧的零件
例如,我可以一遍又一遍地运行"radosgw-admin-gc进程",但文件直到"2017-10-27 13:51:58.0.493358s"之后才会被删除
但你也是正确的
rados清除默认值.rgw.buckets.data--是-所有-所有-
同样适用于
您可以使用列出GC(垃圾收集)要处理的所有桶
radosgw-admin gc list --include-all
然后您可以检查GC是否将在指定时间后运行。您可以手动运行:
radosgw-admin gc process --include-all
它将启动垃圾收集过程--包括所有";将处理所有条目,包括未过期的条目。
然后您可以使用检查清理进度
watch -c "ceph -s"
或者简单地用";ceph-s";所有应该删除的bucket都不见了。有关GC设置的文档,您可以在此处找到:
https://docs.ceph.com/en/quincy/radosgw/config-ref/#garbage-收集设置