【问题标题】:Recover Data from Deleted RBD Volume?从已删除的 RBD 卷中恢复数据?
【发布时间】:2021-07-08 07:27:16
【问题描述】:

有什么方法可以从 Ceph 中已删除的 RBD 卷中恢复数据?谢谢

$ ceph osd map pool-name csi-vol-65c11863-32e1-11eb-a202-cab20b4e04f6
osdmap e2248 pool 'pool-name' (8) object 'csi-vol-65c11863-32e1-11eb-a202-cab20b4e04f6' -> pg 8.e5d09b91 (8.11) -> up ([5,4], p5) acting ([5,4], p5)

【问题讨论】:

  • 我对 kubernetes 工作流程不是很熟悉,但是有一个 rbd trash,也许那个卷还在垃圾箱里? rbd -p <pool> trash ls

标签: ceph data-recovery


【解决方案1】:

AFAIK,答案是否定的。但是,我引用source 的以下解释可能对您有所帮助:

考虑 Ceph 存储数据的方式...每个 RBD 都被条带化成块 (默认为 4MB 大小的 RADOS 对象);块是分布的 在具有配置的复制次数的 OSD 中(可能两个 您的情况,因为您使用 2 个 OSD 主机)。 RBD 使用精简配置,因此 块在第一次写访问时分配。 如果一个 RBD 被删除,它的所有块都将在相应的 OSD。如果要恢复已删除的 RBD,则需要恢复所有 个别块。这是否可能取决于您的文件系统 以及前一个块的空间是否已经分配给其他块 RADOS 对象。 RADOS 对象名称由 RBD 名称和 块的偏移位置,因此如果存在取消删除机制 OSD 的文件系统,您必须能够通过它们的 文件名,否则您最终可能会混合各种内容 删除了 RBD。由于精简配置,可能会有一些块 丢失(例如,以前从未分配过)。

不过,还是有希望的。 Ceph 书 Mastering Ceph 给出了一些hints 来恢复数据,如下所示:

有一些工具可以搜索 OSD 数据结构,找到与 RBD 相关的对象文件,然后将这些对象组装回磁盘映像,类似于原始 RBD 映像。

您可能需要在 Ceph 源代码中找到合适的工具。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-29
    • 2023-04-09
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 2021-02-26
    相关资源
    最近更新 更多