【问题标题】:clone a kvm vm with system call fork使用系统调用 fork 克隆一个 kvm vm
【发布时间】:2012-09-10 08:27:15
【问题描述】:

一个 KVM 虚拟机呈现为一个 qemu-kvm 进程。 在某些情况下,如果我们想克隆虚拟机,为什么不使用 fork? 如我所见,至少有两个优点:

  1. sub VM 将与 copy-on-write 共享内存,减少内存消耗。
  2. 使用写时复制功能即时克隆虚拟机

当然,还有一些问题要解决,喜欢

  1. 设计磁盘写入时复制以共享主 VM 映像文件。
  2. 重定向子虚拟机 IO。

【问题讨论】:

    标签: linux-kernel kvm


    【解决方案1】:

    如果您在没有内核级虚拟化的情况下运行虚拟机(换句话说,您使用的是 QEMU 仿真),那么这可能只是工作,除了您提到的重复 I/O 的所有问题。您可以通过在“-snapshot”模式下运行 VM 来解决磁盘问题。同样,如果您的虚拟机是无头的(没有视频仿真),那也没关系。唯一剩下的问题是重复的网络。

    如果您希望这可以与真正的 KVM 虚拟机一起使用,那么我认为您会很不幸。

    即使您能做到,我也不确定您是否会获得您想象的优势。如果您独立启动两个虚拟机(或任何其他应用程序),那么它们将已经为它们打开的任何文件共享内存(显然它们只能真正共享只读文件)。这包括只读磁盘安装、KVM/QEMU 可执行文件和库本身,以及他们需要的任何其他内容。您在您的方案中获得的唯一额外共享是数据表,然后只有在您的分叉之前使用的那些,并且这种共享将相对较短,因为对该数据的任何更新都会导致写入时复制。 (实际上,这可能是 QEMU 中一个外国架构的胜利,其中有大量缓存的 JIT 生成的可执行代码,但我认为这不是您所指的。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      相关资源
      最近更新 更多