2

我正在使用 Ceph,通过 radosgw 上传许多文件。之后,我想删除文件。我正在尝试在 Python 中做到这一点,如下所示:

bucket = conn.get_bucket(BUCKET)
for key in bucket.list():
    bucket.delete_key(key)

之后,我bucket.list()用来列出存储桶中的文件,这表示存储桶现在是空的,正如我所期望的那样。

但是,当我ceph df在 mon 上运行时,它显示 OSD 仍然具有很高的利用率(例如%RAW USED 90.91)。如果我继续写(认为状态数据还没有赶上状态),Ceph 基本上会锁定(100% 利用率)。

这是怎么回事?

注意:我确实有这些突出ceph status

   health HEALTH_WARN
            3 near full osd(s)
            too many PGs per OSD (2168 > max 300)
            pool default.rgw.buckets.data has many more objects per pg than average (too few pgs?)

根据我在网上收集的信息,这不会导致我的特定问题。但我是 Ceph 的新手,可能是错的。

我有一个 mon 和 3 个 OSD。这只是为了测试。

4

1 回答 1

1

您可以通过rados -p $pool list检查对象是否真的被删除,我知道对于cephfs,当您删除文件时,当mds在本地内存中将其标记为已删除时,它将返回ok,然后通过发送删除消息进行真正的删除到相关的osd。也许radosgw使用相同的设计来加速删除

于 2017-01-04T08:34:29.890 回答