【问题标题】:Deleting files in Ceph does not free up space在 Ceph 中删除文件不会释放空间
【发布时间】:2016-10-15 22:14:12
【问题描述】:

我正在使用 Ceph,通过 radosgw 上传许多文件。之后,我想删除文件。我正在尝试在 Python 中执行此操作,如下所示:

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

之后,我使用bucket.list() 列出存储桶中的文件,这表明存储桶现在是空的,正如我所愿。

但是,当我在 mon 上运行 ceph df 时,它显示 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。这只是为了测试。

【问题讨论】:

  • 文件是否仍被进程打开?
  • @hek2mgl - 该过程将文件的 1000 个副本上传到 Ceph,然后如上所述删除它们。那么这个过程就存在了。您要问的文件是关于我要上传到 Ceph 的文件吗?它没有被使用。
  • @hek2mgl - 我添加了一些更可能相关的信息
  • 刚刚发现 CephFS 也有同样的问题。在 CephFS 中删除文件也不会释放空间。我正在尝试找出原因,以及重新挂载所有 CephFS 分区是否会有所帮助。
  • 糟糕,我发现我已启用快照。禁用快照会立即释放额外空间。

标签: ceph


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 2019-01-15
    • 2019-11-15
    • 1970-01-01
    • 2015-04-28
    相关资源
    最近更新 更多