librbd export-diff等效函数

我正在尝试使用librbd复制rbd export-diff的功能。我有以下python代码:

offsets = []
extents = []

def iter_cb(offset,length,exists):
    if exists:
        offsets.append(offset)
        extents.append(length)

image.diff_iterate(0,image.size(),None,iter_cb)

with open(os.path.join(BACKUP_DIR,'test.img'),'wb') as f:
    for offset,extent in zip(offsets,extents):
        f.write(image.read(offset,extent))
    f.close()

我可以写入文件,但是该文件比rbd export-diff生成的文件大。但是,extents的总和的长度为144629760,与rbd diff rbd/test | awk '{ SUM += $2 } END { print SUM }'所示的长度相同。

那为什么当我将所有差异保存到文件中时,它比export-diff大吗?

仅通过将export写入文件,我就可以足够容易地复制image.read(0,image.size()),但这包括所有零,并且是图像的真实大小。此外,如果我将运行此功能后显示的差异写入相同大小的新图像,它将正确读取。

如何在rbd export-diff中模拟librbd

vfshangjitiku 回答:librbd export-diff等效函数

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2720100.html

大家都在问