如果我在复制 qcow2 文件时运行虚拟机会发生什么/我可以通过在运行时复制虚拟机文件进行备份吗?

如果我在复制 qcow2 文件时运行虚拟机会发生什么/我可以通过在运行时复制虚拟机文件进行备份吗?

我试图了解虚拟机的写入是如何发生的。看起来在复制它进行备份时运行它并没有被阻止。该副本是否包含任何修改的文件(例如启动日志)?或者它只是像 Windows 上那样从“卷影副本”进行复制?

可以问相反的问题,例如,如果我在虚拟机打开时开始复制,会发生什么。我猜机制是相似的。如果在复制过程中进行更改,是否会更改复制的文件?我目前的猜测是,只有在尚未复制的文件发生更改时才会发生。我已经测试了以这种方式复制的虚拟机,它没有明显的损坏,但我可以想象,如果一个文件被更改,而该文件依赖于已复制的另一个文件进行不同的操作,那么它可能会破坏东西。

因此,必然的问题是,是否有诸如此类的文件在虚拟机运行期间发生更改但未被主动使用?我可能会认为运行 apt Upgrade 是一个坏主意,但我想知道当虚拟机只是打开并空闲运行时,我是否可以在几乎没有风险的情况下进行备份。

我正在使用 virt-manager,但我猜答案更多地取决于图像文件类型 qcow2 还是 raw,而不是 VM 主机软件。我还想知道在这方面 qcow2 相对于 raw 图像是否有优势或劣势。

答案1

您将得到不一致的文件系统状态,但有一个使用 QCOW2 磁盘映像的解决方案。qemu-ga如果您想在第一步中修剪磁盘(通常是预先安装的),请在来宾操作系统中运行 QEMU Guest Agent ( ) 服务。

  1. 您可以从修剪来宾磁盘开始(可选)。

    virsh domfstrim $vmname
    
  2. 备份期间为磁盘写入创建临时快照。

    virsh snapshot-create-as $vmname --no-metadata $snapname --disk-only --quiesce --atomic
    

    您可能也想使用--diskspec。看man virsh

  3. 复制原始 QCOW2 磁盘映像进行备份(写入将写入临时磁盘映像 $snapname)。

  4. 备份完成后提交临时磁盘映像。

    virsh blockcommit $vmname vda --wait --active --pivot --delete
    

    或者,如果--delete仍未实现并且临时磁盘映像仍然存在。

    virsh blockcommit $vmname vda --wait --active --pivot
    rm /var/lib/libvirt/images/<diskimage>.$snapname
    

    根据存储类型替换vda为。sda

相关内容