将大型快照图像复制到远程存储 Linux

将大型快照图像复制到远程存储 Linux

我需要复制在 Proxmox(KVM)服务器上运行的虚拟机的快照,并将快照复制到异地存储。

大多数快照只有几 GB,但有些相当大,高达 200 GB。我更喜欢一次性压缩和复制快照,例如:

xz -c dumpfile | scp offsite

问题是由于转储文件的大小以及需要同时运行的其他作业可能需要 12 个小时或更长时间,在此期间可能会发生很多事情而中断数据流。

如果传输中断,我可以使用 rsync 恢复传输,但随后必须在发送之前压缩整个文件,这需要在分配给快照的 250g 基础上再分配 150g。由于服务器上的存储空间非常宝贵(仅限 SSD),我宁愿不分配额外的磁盘空间

也许将压缩输出以 pkzip 方式拆分成更小的部分,并在它们准备好时将它们传输到队列中,这可能是一个解决方案?Tar 似乎有一个多卷 (-m) 选项,也许可以使用。问题是压缩过程需要停止,直到传输完最后一个压缩部分。

我在这里寻找的是想法,而不是具体的解决方案。我觉得我错过了一些明显的选择。如果可能的话,我更愿意使用标准 Linux 软件。

答案1

我本来想建议块文件系统一个融合文件系统,允许任何用户挂载一个文件并将其拆分为文件目录,每个文件都是一个具有给定大小。然后,您可以将这些文件 rsync 到远程并在那里将它们连接起来。

然而,我注意到,Florian Zumbiehl 也写道区块同步,它结合了 ChunkFS 和 rsync 的功能(不使用 fuse)。它旨在允许对大型文件(例如加密文件系统)进行增量备份,其中只有大文件的一小部分发生变化。它有效地将文件拆分成块并备份每个块,对自上次备份以来未更改的块使用硬链接。您可以使用 ssh 指定目标。即使进行单个备份,它也应该很有用。

答案2

这是 RTFM 的经典案例,抱歉。仔细阅读 TFM 后发现,vzdump 提供了一个 --compress 选项,可以即时压缩转储,因此我进一步减少了所需的空间。然后,我继续将压缩的转储 rsync 到备份服务器,并从虚拟机管理程序中删除转储。

最终的剧本变成了

vzdump $VZID --mode snapshot --compress lzo --mailnotification failure --mailto [email protected] \
    && rsync -e ssh vzdump-qemu-${VZID}-* backup:/backup \
    && rm -f vzdump-qemu-${VZID}-* \
            || mail [email protected] -s "transfer of $VZID failed" < vzdump-qemu-${VZID}-*.log

~

相关内容