从已删除的RBD卷恢复数据



是否有任何方法可以从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)

AFAIK,答案是否定的。然而,我引用了以下来源的解释,这可能对您有所帮助:

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

然而,仍有一些希望。名为《掌握Ceph》的Ceph书给出了一些恢复数据的提示,如下所示:

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

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

最新更新